diff --git a/core/.gitignore b/core/.gitignore
deleted file mode 100644
index 74b6a4c..0000000
--- a/core/.gitignore
+++ /dev/null
@@ -1,19 +0,0 @@
-# SimpleTest breaks with the following files, so avoid adding them.
-vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services1-1.php
-vendor/symfony/class-loader/Symfony/Component/ClassLoader/Tests/Fixtures/php5.4/traits.php
-vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services11.php
-
-# The resources for the Validator component are not required.
-vendor/symfony/validator/Symfony/Component/Validator/Resources
-
-# Symfony Validator depends on Symfony Translation but only requires the
-# TranslatorInterface. Thus, we add only the required interface from Symfony
-# Translation by ignoring everything except the interface.
-vendor/symfony/translation/Symfony/Component/Translation/*
-!vendor/symfony/translation/Symfony/Component/Translation/TranslatorInterface.php
-
-# PHPUnit provides some binary dependencies that are already available.
-vendor/phpunit/phpunit/build/dependencies
-
-# The PHAR file below contains CRLF characters that cause a problem with PIFR.
-vendor/symfony/dependency-injection/Tests/Fixtures/includes/ProjectWithXsdExtensionInPhar.phar
diff --git a/vendor/.htaccess b/vendor/.htaccess
deleted file mode 100644
index 90748bb..0000000
--- a/vendor/.htaccess
+++ /dev/null
@@ -1,23 +0,0 @@
-# Deny all requests from Apache 2.4+.
-<IfModule mod_authz_core.c>
-  Require all denied
-</IfModule>
-
-# Deny all requests from Apache 2.0-2.2.
-<IfModule !mod_authz_core.c>
-  Deny from all
-</IfModule>
-# Turn off all options we don't need.
-Options -Indexes -ExecCGI -Includes -MultiViews
-
-# Set the catch-all handler to prevent scripts from being executed.
-SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
-<Files *>
-  # Override the handler again if we're run later in the evaluation list.
-  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
-</Files>
-
-# If we know how to do it safely, disable the PHP engine entirely.
-<IfModule mod_php5.c>
-  php_flag engine off
-</IfModule>
diff --git a/vendor/autoload.php b/vendor/autoload.php
deleted file mode 100644
index 5111b1b..0000000
--- a/vendor/autoload.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-// autoload.php @generated by Composer
-
-require_once __DIR__ . '/composer' . '/autoload_real.php';
-
-return ComposerAutoloaderInitDrupal8::getLoader();
diff --git a/vendor/behat/mink-browserkit-driver/.gitignore b/vendor/behat/mink-browserkit-driver/.gitignore
deleted file mode 100644
index 3ccd9ee..0000000
--- a/vendor/behat/mink-browserkit-driver/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor
-composer.lock
-/phpunit.xml
diff --git a/vendor/behat/mink-browserkit-driver/.travis.yml b/vendor/behat/mink-browserkit-driver/.travis.yml
deleted file mode 100644
index 9c08e64..0000000
--- a/vendor/behat/mink-browserkit-driver/.travis.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-language: php
-
-sudo: false
-
-php: [5.3, 5.4, 5.5, 5.6, hhvm]
-
-matrix:
-  include:
-    - php: 5.5
-      env: SYMFONY_VERSION='2.3.*'
-    - php: 5.5
-      env: SYMFONY_VERSION='2.5.*@dev'
-
-cache:
-  directories:
-    - $HOME/.composer/cache/files
-
-before_install:
-  - sh -c 'if [ "$SYMFONY_VERSION" != "" ]; then composer require -n --no-update symfony/symfony=$SYMFONY_VERSION; fi;'
-
-install:
-  - composer install -n
-
-script: phpunit -v --coverage-clover=coverage.clover
-
-after_script:
-  - wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover coverage.clover
diff --git a/vendor/behat/mink-browserkit-driver/CHANGELOG.md b/vendor/behat/mink-browserkit-driver/CHANGELOG.md
deleted file mode 100644
index 1b8e790..0000000
--- a/vendor/behat/mink-browserkit-driver/CHANGELOG.md
+++ /dev/null
@@ -1,54 +0,0 @@
-1.3.0 / 2015-09-21
-==================
-
-BC break:
-
-* Dropped support for Symfony 2.2 and older
-* Bumped required PHP version to 5.3.6
-
-New features:
-
-* Updated the driver to use findElementsXpaths for Mink 1.7 and forward compatibility with Mink 2
-
-Bug fixes:
-
-* Improved the exception message when clicking on an invalid element
-* Use `saveHTML` to get correct HTML code back
-
-Misc:
-
-* Updated the repository structure to PSR-4
-
-1.2.0 / 2014-09-26
-==================
-
-BC break:
-
-* Changed the behavior of `getValue` for checkboxes according to the BC break in Mink 1.6
-
-New features:
-
-* Implemented `getOuterHtml`
-* Added the support of manipulating forms without submit buttons
-* Added support of any request headers instead of supporting only a few hardcoded ones
-* Added support of any BrowserKit client using `filterResponse` when using BrowserKit 2.3+
-* Added the support of reset buttons
-* Implemented `submitForm`
-* Implemented `isSelected`
-
-Bug fixes:
-
-* Fixed the support of options without value attribute in `isSelected` and `getValue`
-* Added the support of radio buttons in `isChecked`
-* Fixed the submission of empty textarea fields
-* Refactored the handling of request headers to ensure they are reset when resetting the driver
-* Fixed the handling of buttons to submit only for submit buttons rather than all buttons
-* Fixed the code to throw exceptions rather than triggering a fatal error for invalid usages of the driver
-* Fixed the removal of cookies
-* Fixed the submission of form fields with same name and without id
-* Fixed `getAttribute` to return `null` for missing attributes rather than an empty string
-
-Testing:
-
-* Updated the testsuite to use the new Mink 1.6 driver testsuite
-* Added testing on HHVM
diff --git a/vendor/behat/mink-browserkit-driver/LICENSE b/vendor/behat/mink-browserkit-driver/LICENSE
deleted file mode 100644
index 3365ae6..0000000
--- a/vendor/behat/mink-browserkit-driver/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2012-2013 Konstantin Kudryashov <ever.zet@gmail.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.
diff --git a/vendor/behat/mink-browserkit-driver/README.md b/vendor/behat/mink-browserkit-driver/README.md
deleted file mode 100644
index 1903a5f..0000000
--- a/vendor/behat/mink-browserkit-driver/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-Mink BrowserKit Driver
-======================
-
-[![Latest Stable Version](https://poser.pugx.org/behat/mink-browserkit-driver/v/stable.png)](https://packagist.org/packages/behat/mink-browserkit-driver)
-[![Latest Unstable Version](https://poser.pugx.org/behat/mink-browserkit-driver/v/unstable.svg)](https://packagist.org/packages/behat/mink-browserkit-driver)
-[![Total Downloads](https://poser.pugx.org/behat/mink-browserkit-driver/downloads.png)](https://packagist.org/packages/behat/mink-browserkit-driver)
-[![Build Status](https://travis-ci.org/minkphp/MinkBrowserKitDriver.svg?branch=master)](https://travis-ci.org/minkphp/MinkBrowserKitDriver)
-[![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/minkphp/MinkBrowserKitDriver/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/minkphp/MinkBrowserKitDriver/)
-[![Code Coverage](https://scrutinizer-ci.com/g/minkphp/MinkBrowserKitDriver/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/minkphp/MinkBrowserKitDriver/)
-[![License](https://poser.pugx.org/behat/mink-browserkit-driver/license.svg)](https://packagist.org/packages/behat/mink-browserkit-driver)
-
-Usage Example
--------------
-
-``` php
-<?php
-
-use Behat\Mink\Mink,
-    Behat\Mink\Session,
-    Behat\Mink\Driver\BrowserKitDriver;
-
-use Symfony\Component\HttpKernel\Client;
-
-$app  = require_once(__DIR__.'/app.php'); // Silex app
-
-$mink = new Mink(array(
-    'silex' => new Session(new BrowserKitDriver(new Client($app))),
-));
-
-$mink->getSession('silex')->getPage()->findLink('Chat')->click();
-```
-
-Installation
-------------
-
-``` json
-{
-    "require": {
-        "behat/mink":                   "~1.5",
-        "behat/mink-browserkit-driver": "~1.1"
-    }
-}
-```
-
-``` bash
-$> curl -sS https://getcomposer.org/installer | php
-$> php composer.phar install
-```
-
-Maintainers
------------
-
-* Christophe Coevoet [stof](https://github.com/stof)
-* Other [awesome developers](https://github.com/minkphp/MinkBrowserKitDriver/graphs/contributors)
diff --git a/vendor/behat/mink-browserkit-driver/composer.json b/vendor/behat/mink-browserkit-driver/composer.json
deleted file mode 100644
index 7d12bbc..0000000
--- a/vendor/behat/mink-browserkit-driver/composer.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-    "name":         "behat/mink-browserkit-driver",
-    "description":  "Symfony2 BrowserKit driver for Mink framework",
-    "keywords":     ["Symfony2", "Mink", "testing", "browser"],
-    "homepage":     "http://mink.behat.org/",
-    "type":         "mink-driver",
-    "license":      "MIT",
-
-    "authors": [
-        {
-            "name":      "Konstantin Kudryashov",
-            "email":     "ever.zet@gmail.com",
-            "homepage":  "http://everzet.com"
-        }
-    ],
-
-    "require": {
-        "php":                  ">=5.3.6",
-        "behat/mink":           "~1.7@dev",
-        "symfony/browser-kit":  "~2.3",
-        "symfony/dom-crawler":  "~2.3"
-    },
-
-    "require-dev": {
-        "symfony/phpunit-bridge": "~2.7",
-        "silex/silex": "~1.2"
-    },
-
-    "autoload": {
-        "psr-4": {
-            "Behat\\Mink\\Driver\\": "src/"
-        }
-    },
-
-    "autoload-dev": {
-        "psr-4": {
-            "Behat\\Mink\\Tests\\Driver\\": "tests"
-        }
-    },
-
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.3.x-dev"
-        }
-    }
-}
diff --git a/vendor/behat/mink-browserkit-driver/phpunit.xml.dist b/vendor/behat/mink-browserkit-driver/phpunit.xml.dist
deleted file mode 100644
index d91581c..0000000
--- a/vendor/behat/mink-browserkit-driver/phpunit.xml.dist
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit colors="true" bootstrap="vendor/behat/mink/driver-testsuite/bootstrap.php">
-    <php>
-        <var name="driver_config_factory" value="Behat\Mink\Tests\Driver\BrowserKitConfig::getInstance" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Driver test suite">
-            <directory>tests</directory>
-            <directory>vendor/behat/mink/driver-testsuite/tests/Basic</directory>
-            <directory>vendor/behat/mink/driver-testsuite/tests/Form</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./src</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/behat/mink-browserkit-driver/src/BrowserKitDriver.php b/vendor/behat/mink-browserkit-driver/src/BrowserKitDriver.php
deleted file mode 100644
index 70682e7..0000000
--- a/vendor/behat/mink-browserkit-driver/src/BrowserKitDriver.php
+++ /dev/null
@@ -1,855 +0,0 @@
-<?php
-
-/*
- * This file is part of the Behat\Mink.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Driver;
-
-use Behat\Mink\Exception\DriverException;
-use Behat\Mink\Exception\UnsupportedDriverActionException;
-use Symfony\Component\BrowserKit\Client;
-use Symfony\Component\BrowserKit\Cookie;
-use Symfony\Component\BrowserKit\Response;
-use Symfony\Component\DomCrawler\Crawler;
-use Symfony\Component\DomCrawler\Field\ChoiceFormField;
-use Symfony\Component\DomCrawler\Field\FileFormField;
-use Symfony\Component\DomCrawler\Field\FormField;
-use Symfony\Component\DomCrawler\Field\InputFormField;
-use Symfony\Component\DomCrawler\Field\TextareaFormField;
-use Symfony\Component\DomCrawler\Form;
-use Symfony\Component\HttpKernel\Client as HttpKernelClient;
-
-/**
- * Symfony2 BrowserKit driver.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class BrowserKitDriver extends CoreDriver
-{
-    private $client;
-
-    /**
-     * @var Form[]
-     */
-    private $forms = array();
-    private $serverParameters = array();
-    private $started = false;
-    private $removeScriptFromUrl = false;
-    private $removeHostFromUrl = false;
-
-    /**
-     * Initializes BrowserKit driver.
-     *
-     * @param Client      $client  BrowserKit client instance
-     * @param string|null $baseUrl Base URL for HttpKernel clients
-     */
-    public function __construct(Client $client, $baseUrl = null)
-    {
-        $this->client = $client;
-        $this->client->followRedirects(true);
-
-        if ($baseUrl !== null && $client instanceof HttpKernelClient) {
-            $client->setServerParameter('SCRIPT_FILENAME', parse_url($baseUrl, PHP_URL_PATH));
-        }
-    }
-
-    /**
-     * Returns BrowserKit HTTP client instance.
-     *
-     * @return Client
-     */
-    public function getClient()
-    {
-        return $this->client;
-    }
-
-    /**
-     * Tells driver to remove hostname from URL.
-     *
-     * @param Boolean $remove
-     *
-     * @deprecated Deprecated as of 1.2, to be removed in 2.0. Pass the base url in the constructor instead.
-     */
-    public function setRemoveHostFromUrl($remove = true)
-    {
-        trigger_error(
-            'setRemoveHostFromUrl() is deprecated as of 1.2 and will be removed in 2.0. Pass the base url in the constructor instead.',
-            E_USER_DEPRECATED
-        );
-        $this->removeHostFromUrl = (bool) $remove;
-    }
-
-    /**
-     * Tells driver to remove script name from URL.
-     *
-     * @param Boolean $remove
-     *
-     * @deprecated Deprecated as of 1.2, to be removed in 2.0. Pass the base url in the constructor instead.
-     */
-    public function setRemoveScriptFromUrl($remove = true)
-    {
-        trigger_error(
-            'setRemoveScriptFromUrl() is deprecated as of 1.2 and will be removed in 2.0. Pass the base url in the constructor instead.',
-            E_USER_DEPRECATED
-        );
-        $this->removeScriptFromUrl = (bool) $remove;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        $this->started = true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isStarted()
-    {
-        return $this->started;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function stop()
-    {
-        $this->reset();
-        $this->started = false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reset()
-    {
-        // Restarting the client resets the cookies and the history
-        $this->client->restart();
-        $this->forms = array();
-        $this->serverParameters = array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function visit($url)
-    {
-        $this->client->request('GET', $this->prepareUrl($url), array(), array(), $this->serverParameters);
-        $this->forms = array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCurrentUrl()
-    {
-        $request = $this->client->getInternalRequest();
-
-        if ($request === null) {
-            throw new DriverException('Unable to access the request before visiting a page');
-        }
-
-        return $request->getUri();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reload()
-    {
-        $this->client->reload();
-        $this->forms = array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function forward()
-    {
-        $this->client->forward();
-        $this->forms = array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function back()
-    {
-        $this->client->back();
-        $this->forms = array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setBasicAuth($user, $password)
-    {
-        if (false === $user) {
-            unset($this->serverParameters['PHP_AUTH_USER'], $this->serverParameters['PHP_AUTH_PW']);
-
-            return;
-        }
-
-        $this->serverParameters['PHP_AUTH_USER'] = $user;
-        $this->serverParameters['PHP_AUTH_PW'] = $password;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setRequestHeader($name, $value)
-    {
-        $contentHeaders = array('CONTENT_LENGTH' => true, 'CONTENT_MD5' => true, 'CONTENT_TYPE' => true);
-        $name = str_replace('-', '_', strtoupper($name));
-
-        // CONTENT_* are not prefixed with HTTP_ in PHP when building $_SERVER
-        if (!isset($contentHeaders[$name])) {
-            $name = 'HTTP_' . $name;
-        }
-
-        $this->serverParameters[$name] = $value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getResponseHeaders()
-    {
-        return $this->getResponse()->getHeaders();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setCookie($name, $value = null)
-    {
-        if (null === $value) {
-            $this->deleteCookie($name);
-
-            return;
-        }
-
-        $jar = $this->client->getCookieJar();
-        $jar->set(new Cookie($name, $value));
-    }
-
-    /**
-     * Deletes a cookie by name.
-     *
-     * @param string $name Cookie name.
-     */
-    private function deleteCookie($name)
-    {
-        $path = $this->getCookiePath();
-        $jar = $this->client->getCookieJar();
-
-        do {
-            if (null !== $jar->get($name, $path)) {
-                $jar->expire($name, $path);
-            }
-
-            $path = preg_replace('/.$/', '', $path);
-        } while ($path);
-    }
-
-    /**
-     * Returns current cookie path.
-     *
-     * @return string
-     */
-    private function getCookiePath()
-    {
-        $path = dirname(parse_url($this->getCurrentUrl(), PHP_URL_PATH));
-
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            $path = str_replace('\\', '/', $path);
-        }
-
-        return $path;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCookie($name)
-    {
-        // Note that the following doesn't work well because
-        // Symfony\Component\BrowserKit\CookieJar stores cookies by name,
-        // path, AND domain and if you don't fill them all in correctly then
-        // you won't get the value that you're expecting.
-        //
-        // $jar = $this->client->getCookieJar();
-        //
-        // if (null !== $cookie = $jar->get($name)) {
-        //     return $cookie->getValue();
-        // }
-
-        $allValues = $this->client->getCookieJar()->allValues($this->getCurrentUrl());
-
-        if (isset($allValues[$name])) {
-            return $allValues[$name];
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStatusCode()
-    {
-        return $this->getResponse()->getStatus();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        return $this->getResponse()->getContent();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function findElementXpaths($xpath)
-    {
-        $nodes = $this->getCrawler()->filterXPath($xpath);
-
-        $elements = array();
-        foreach ($nodes as $i => $node) {
-            $elements[] = sprintf('(%s)[%d]', $xpath, $i + 1);
-        }
-
-        return $elements;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTagName($xpath)
-    {
-        return $this->getCrawlerNode($this->getFilteredCrawler($xpath))->nodeName;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getText($xpath)
-    {
-        $text = $this->getFilteredCrawler($xpath)->text();
-        $text = str_replace("\n", ' ', $text);
-        $text = preg_replace('/ {2,}/', ' ', $text);
-
-        return trim($text);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getHtml($xpath)
-    {
-        // cut the tag itself (making innerHTML out of outerHTML)
-        return preg_replace('/^\<[^\>]+\>|\<[^\>]+\>$/', '', $this->getOuterHtml($xpath));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getOuterHtml($xpath)
-    {
-        $node = $this->getCrawlerNode($this->getFilteredCrawler($xpath));
-
-        return $node->ownerDocument->saveHTML($node);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getAttribute($xpath, $name)
-    {
-        $node = $this->getFilteredCrawler($xpath);
-
-        if ($this->getCrawlerNode($node)->hasAttribute($name)) {
-            return $node->attr($name);
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getValue($xpath)
-    {
-        if (in_array($this->getAttribute($xpath, 'type'), array('submit', 'image', 'button'), true)) {
-            return $this->getAttribute($xpath, 'value');
-        }
-
-        $node = $this->getCrawlerNode($this->getFilteredCrawler($xpath));
-
-        if ('option' === $node->tagName) {
-            return $this->getOptionValue($node);
-        }
-
-        try {
-            $field = $this->getFormField($xpath);
-        } catch (\InvalidArgumentException $e) {
-            return $this->getAttribute($xpath, 'value');
-        }
-
-        return $field->getValue();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setValue($xpath, $value)
-    {
-        $this->getFormField($xpath)->setValue($value);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function check($xpath)
-    {
-        $this->getCheckboxField($xpath)->tick();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function uncheck($xpath)
-    {
-        $this->getCheckboxField($xpath)->untick();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function selectOption($xpath, $value, $multiple = false)
-    {
-        $field = $this->getFormField($xpath);
-
-        if (!$field instanceof ChoiceFormField) {
-            throw new DriverException(sprintf('Impossible to select an option on the element with XPath "%s" as it is not a select or radio input', $xpath));
-        }
-
-        if ($multiple) {
-            $oldValue   = (array) $field->getValue();
-            $oldValue[] = $value;
-            $value      = $oldValue;
-        }
-
-        $field->select($value);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isSelected($xpath)
-    {
-        $optionValue = $this->getOptionValue($this->getCrawlerNode($this->getFilteredCrawler($xpath)));
-        $selectField = $this->getFormField('(' . $xpath . ')/ancestor-or-self::*[local-name()="select"]');
-        $selectValue = $selectField->getValue();
-
-        return is_array($selectValue) ? in_array($optionValue, $selectValue, true) : $optionValue === $selectValue;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function click($xpath)
-    {
-        $crawler = $this->getFilteredCrawler($xpath);
-        $node = $this->getCrawlerNode($crawler);
-        $tagName = $node->nodeName;
-
-        if ('a' === $tagName) {
-            $this->client->click($crawler->link());
-            $this->forms = array();
-        } elseif ($this->canSubmitForm($node)) {
-            $this->submit($crawler->form());
-        } elseif ($this->canResetForm($node)) {
-            $this->resetForm($node);
-        } else {
-            $message = sprintf('%%s supports clicking on links and submit or reset buttons only. But "%s" provided', $tagName);
-
-            throw new UnsupportedDriverActionException($message, $this);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isChecked($xpath)
-    {
-        $field = $this->getFormField($xpath);
-
-        if (!$field instanceof ChoiceFormField || 'select' === $field->getType()) {
-            throw new DriverException(sprintf('Impossible to get the checked state of the element with XPath "%s" as it is not a checkbox or radio input', $xpath));
-        }
-
-        if ('checkbox' === $field->getType()) {
-            return $field->hasValue();
-        }
-
-        $radio = $this->getCrawlerNode($this->getFilteredCrawler($xpath));
-
-        return $radio->getAttribute('value') === $field->getValue();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function attachFile($xpath, $path)
-    {
-        $field = $this->getFormField($xpath);
-
-        if (!$field instanceof FileFormField) {
-            throw new DriverException(sprintf('Impossible to attach a file on the element with XPath "%s" as it is not a file input', $xpath));
-        }
-
-        $field->upload($path);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function submitForm($xpath)
-    {
-        $crawler = $this->getFilteredCrawler($xpath);
-
-        $this->submit($crawler->form());
-    }
-
-    /**
-     * @return Response
-     *
-     * @throws DriverException If there is not response yet
-     */
-    protected function getResponse()
-    {
-        $response = $this->client->getInternalResponse();
-
-        if (null === $response) {
-            throw new DriverException('Unable to access the response before visiting a page');
-        }
-
-        return $response;
-    }
-
-    /**
-     * Prepares URL for visiting.
-     * Removes "*.php/" from urls and then passes it to BrowserKitDriver::visit().
-     *
-     * @param string $url
-     *
-     * @return string
-     */
-    protected function prepareUrl($url)
-    {
-        $replacement = ($this->removeHostFromUrl ? '' : '$1') . ($this->removeScriptFromUrl ? '' : '$2');
-
-        return preg_replace('#(https?\://[^/]+)(/[^/\.]+\.php)?#', $replacement, $url);
-    }
-
-    /**
-     * Returns form field from XPath query.
-     *
-     * @param string $xpath
-     *
-     * @return FormField
-     *
-     * @throws DriverException
-     */
-    protected function getFormField($xpath)
-    {
-        $fieldNode = $this->getCrawlerNode($this->getFilteredCrawler($xpath));
-        $fieldName = str_replace('[]', '', $fieldNode->getAttribute('name'));
-
-        $formNode = $this->getFormNode($fieldNode);
-        $formId = $this->getFormNodeId($formNode);
-
-        if (!isset($this->forms[$formId])) {
-            $this->forms[$formId] = new Form($formNode, $this->getCurrentUrl());
-        }
-
-        if (is_array($this->forms[$formId][$fieldName])) {
-            return $this->forms[$formId][$fieldName][$this->getFieldPosition($fieldNode)];
-        }
-
-        return $this->forms[$formId][$fieldName];
-    }
-
-    /**
-     * Returns the checkbox field from xpath query, ensuring it is valid.
-     *
-     * @param string $xpath
-     *
-     * @return ChoiceFormField
-     *
-     * @throws DriverException when the field is not a checkbox
-     */
-    private function getCheckboxField($xpath)
-    {
-        $field = $this->getFormField($xpath);
-
-        if (!$field instanceof ChoiceFormField) {
-            throw new DriverException(sprintf('Impossible to check the element with XPath "%s" as it is not a checkbox', $xpath));
-        }
-
-        return $field;
-    }
-
-    /**
-     * @param \DOMElement $element
-     *
-     * @return \DOMElement
-     *
-     * @throws DriverException if the form node cannot be found
-     */
-    private function getFormNode(\DOMElement $element)
-    {
-        if ($element->hasAttribute('form')) {
-            $formId = $element->getAttribute('form');
-            $formNode = $element->ownerDocument->getElementById($formId);
-
-            if (null === $formNode || 'form' !== $formNode->nodeName) {
-                throw new DriverException(sprintf('The selected node has an invalid form attribute (%s).', $formId));
-            }
-
-            return $formNode;
-        }
-
-        $formNode = $element;
-
-        do {
-            // use the ancestor form element
-            if (null === $formNode = $formNode->parentNode) {
-                throw new DriverException('The selected node does not have a form ancestor.');
-            }
-        } while ('form' !== $formNode->nodeName);
-
-        return $formNode;
-    }
-
-    /**
-     * Gets the position of the field node among elements with the same name
-     *
-     * BrowserKit uses the field name as index to find the field in its Form object.
-     * When multiple fields have the same name (checkboxes for instance), it will return
-     * an array of elements in the order they appear in the DOM.
-     *
-     * @param \DOMElement $fieldNode
-     *
-     * @return integer
-     */
-    private function getFieldPosition(\DOMElement $fieldNode)
-    {
-        $elements = $this->getCrawler()->filterXPath('//*[@name=\''.$fieldNode->getAttribute('name').'\']');
-
-        if (count($elements) > 1) {
-            // more than one element contains this name !
-            // so we need to find the position of $fieldNode
-            foreach ($elements as $key => $element) {
-                /** @var \DOMElement $element */
-                if ($element->getNodePath() === $fieldNode->getNodePath()) {
-                    return $key;
-                }
-            }
-        }
-
-        return 0;
-    }
-
-    private function submit(Form $form)
-    {
-        $formId = $this->getFormNodeId($form->getFormNode());
-
-        if (isset($this->forms[$formId])) {
-            $this->mergeForms($form, $this->forms[$formId]);
-        }
-
-        // remove empty file fields from request
-        foreach ($form->getFiles() as $name => $field) {
-            if (empty($field['name']) && empty($field['tmp_name'])) {
-                $form->remove($name);
-            }
-        }
-
-        foreach ($form->all() as $field) {
-            // Add a fix for https://github.com/symfony/symfony/pull/10733 to support Symfony versions which are not fixed
-            if ($field instanceof TextareaFormField && null === $field->getValue()) {
-                $field->setValue('');
-            }
-        }
-
-        $this->client->submit($form);
-
-        $this->forms = array();
-    }
-
-    private function resetForm(\DOMElement $fieldNode)
-    {
-        $formNode = $this->getFormNode($fieldNode);
-        $formId = $this->getFormNodeId($formNode);
-        unset($this->forms[$formId]);
-    }
-
-    /**
-     * Determines if a node can submit a form.
-     *
-     * @param \DOMElement $node Node.
-     *
-     * @return boolean
-     */
-    private function canSubmitForm(\DOMElement $node)
-    {
-        $type = $node->hasAttribute('type') ? $node->getAttribute('type') : null;
-
-        if ('input' === $node->nodeName && in_array($type, array('submit', 'image'), true)) {
-            return true;
-        }
-
-        return 'button' === $node->nodeName && (null === $type || 'submit' === $type);
-    }
-
-    /**
-     * Determines if a node can reset a form.
-     *
-     * @param \DOMElement $node Node.
-     *
-     * @return boolean
-     */
-    private function canResetForm(\DOMElement $node)
-    {
-        $type = $node->hasAttribute('type') ? $node->getAttribute('type') : null;
-
-        return in_array($node->nodeName, array('input', 'button'), true) && 'reset' === $type;
-    }
-
-    /**
-     * Returns form node unique identifier.
-     *
-     * @param \DOMElement $form
-     *
-     * @return string
-     */
-    private function getFormNodeId(\DOMElement $form)
-    {
-        return md5($form->getLineNo() . $form->getNodePath() . $form->nodeValue);
-    }
-
-    /**
-     * Gets the value of an option element
-     *
-     * @param \DOMElement $option
-     *
-     * @return string
-     *
-     * @see \Symfony\Component\DomCrawler\Field\ChoiceFormField::buildOptionValue
-     */
-    private function getOptionValue(\DOMElement $option)
-    {
-        if ($option->hasAttribute('value')) {
-            return $option->getAttribute('value');
-        }
-
-        if (!empty($option->nodeValue)) {
-            return $option->nodeValue;
-        }
-
-        return '1'; // DomCrawler uses 1 by default if there is no text in the option
-    }
-
-    /**
-     * Merges second form values into first one.
-     *
-     * @param Form $to   merging target
-     * @param Form $from merging source
-     */
-    private function mergeForms(Form $to, Form $from)
-    {
-        foreach ($from->all() as $name => $field) {
-            $fieldReflection = new \ReflectionObject($field);
-            $nodeReflection  = $fieldReflection->getProperty('node');
-            $valueReflection = $fieldReflection->getProperty('value');
-
-            $nodeReflection->setAccessible(true);
-            $valueReflection->setAccessible(true);
-
-            $isIgnoredField = $field instanceof InputFormField &&
-                in_array($nodeReflection->getValue($field)->getAttribute('type'), array('submit', 'button', 'image'), true);
-
-            if (!$isIgnoredField) {
-                $valueReflection->setValue($to[$name], $valueReflection->getValue($field));
-            }
-        }
-    }
-
-    /**
-     * Returns DOMElement from crawler instance.
-     *
-     * @param Crawler $crawler
-     *
-     * @return \DOMElement
-     *
-     * @throws DriverException when the node does not exist
-     */
-    private function getCrawlerNode(Crawler $crawler)
-    {
-        $crawler->rewind();
-        $node = $crawler->current();
-
-        if (null !== $node) {
-            return $node;
-        }
-
-        throw new DriverException('The element does not exist');
-    }
-
-    /**
-     * Returns a crawler filtered for the given XPath, requiring at least 1 result.
-     *
-     * @param string $xpath
-     *
-     * @return Crawler
-     *
-     * @throws DriverException when no matching elements are found
-     */
-    private function getFilteredCrawler($xpath)
-    {
-        if (!count($crawler = $this->getCrawler()->filterXPath($xpath))) {
-            throw new DriverException(sprintf('There is no element matching XPath "%s"', $xpath));
-        }
-
-        return $crawler;
-    }
-
-    /**
-     * Returns crawler instance (got from client).
-     *
-     * @return Crawler
-     *
-     * @throws DriverException
-     */
-    private function getCrawler()
-    {
-        $crawler = $this->client->getCrawler();
-
-        if (null === $crawler) {
-            throw new DriverException('Unable to access the response content before visiting a page');
-        }
-
-        return $crawler;
-    }
-}
diff --git a/vendor/behat/mink-goutte-driver/.gitignore b/vendor/behat/mink-goutte-driver/.gitignore
deleted file mode 100644
index 1d034f4..0000000
--- a/vendor/behat/mink-goutte-driver/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-vendor
-composer.phar
-composer.lock
-phpunit.xml
diff --git a/vendor/behat/mink-goutte-driver/.travis.yml b/vendor/behat/mink-goutte-driver/.travis.yml
deleted file mode 100644
index 5b86531..0000000
--- a/vendor/behat/mink-goutte-driver/.travis.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-language: php
-
-sudo: false
-
-cache:
-  directories:
-    - $HOME/.composer/cache/files
-
-php: [5.3, 5.4, 5.5, 5.6, hhvm]
-
-before_install:
-  # Force using Goutte 2 on HHVM for now because Guzzle 6 is broken there
-  - if [ "hhvm" = "$TRAVIS_PHP_VERSION" ]; then composer require fabpot/goutte '~2' --no-update; fi
-
-install:
-  - composer install
-
-before_script:
-  - export WEB_FIXTURES_HOST=http://localhost:8000
-
-  # Start a webserver for web fixtures. Force using PHP 5.6 to be able to run it on PHP 5.3 and HHVM jobs too
-  - ~/.phpenv/versions/5.6/bin/php -S localhost:8000 -t vendor/behat/mink/driver-testsuite/web-fixtures > /dev/null 2>&1 &
-
-script: phpunit -v --coverage-clover=coverage.clover
-
-after_script:
-  - wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover coverage.clover
diff --git a/vendor/behat/mink-goutte-driver/CHANGELOG.md b/vendor/behat/mink-goutte-driver/CHANGELOG.md
deleted file mode 100644
index 581eb5e..0000000
--- a/vendor/behat/mink-goutte-driver/CHANGELOG.md
+++ /dev/null
@@ -1,31 +0,0 @@
-1.2.0 / 2015-09-21
-==================
-
-New features:
-
-* Added support for Goutte 3.1+
-
-Misc:
-
-* Updated the repository structure to PSR-4
-
-1.1.0 / 2014-10-09
-==================
-
-The driver now relies on BrowserKitDriver 1.2.x, so all changes of this driver are relevant.
-The changes below only describe the changes related to GoutteDriver specifically.
-
-New features:
-
-* Added the possibility to use a normal Goutte client instead of requiring to use an extended one
-* Added the support of Goutte 2.0 as well
-
-Bug fixes:
-
-* Fixed the support of disabling basic auth
-* Fixed the resetting of the driver to reset the basic auth
-
-Testing:
-
-* Updated the testsuite to use the new Mink 1.6 driver testsuite
-* Added testing on HHVM
diff --git a/vendor/behat/mink-goutte-driver/LICENSE b/vendor/behat/mink-goutte-driver/LICENSE
deleted file mode 100644
index 3365ae6..0000000
--- a/vendor/behat/mink-goutte-driver/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2012-2013 Konstantin Kudryashov <ever.zet@gmail.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.
diff --git a/vendor/behat/mink-goutte-driver/README.md b/vendor/behat/mink-goutte-driver/README.md
deleted file mode 100644
index cba60a0..0000000
--- a/vendor/behat/mink-goutte-driver/README.md
+++ /dev/null
@@ -1,60 +0,0 @@
-Mink Goutte Driver
-==================
-
-[![Latest Stable Version](https://poser.pugx.org/behat/mink-goutte-driver/v/stable.svg)](https://packagist.org/packages/behat/mink-goutte-driver)
-[![Latest Unstable Version](https://poser.pugx.org/behat/mink-goutte-driver/v/unstable.svg)](https://packagist.org/packages/behat/mink-goutte-driver)
-[![Total Downloads](https://poser.pugx.org/behat/mink-goutte-driver/downloads.svg)](https://packagist.org/packages/behat/mink-goutte-driver)
-[![Build Status](https://travis-ci.org/minkphp/MinkGoutteDriver.svg?branch=master)](https://travis-ci.org/minkphp/MinkGoutteDriver)
-[![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/minkphp/MinkGoutteDriver/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/minkphp/MinkGoutteDriver/)
-[![Code Coverage](https://scrutinizer-ci.com/g/minkphp/MinkGoutteDriver/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/minkphp/MinkGoutteDriver/)
-[![License](https://poser.pugx.org/behat/mink-goutte-driver/license.svg)](https://packagist.org/packages/behat/mink-goutte-driver)
-
-Usage Example
--------------
-
-``` php
-<?php
-
-require "vendor/autoload.php";
-
-use Behat\Mink\Mink,
-    Behat\Mink\Session,
-    Behat\Mink\Driver\GoutteDriver,
-    Behat\Mink\Driver\Goutte\Client as GoutteClient;
-
-$mink = new Mink(array(
-    'goutte' => new Session(new GoutteDriver(new GoutteClient())),
-));
-
-$session = $mink->getSession('goutte');
-$session->visit("http://php.net/");
-$session->getPage()->clickLink('Downloads');
-echo $session->getCurrentUrl() . PHP_EOL;
-```
-
-Installation
-------------
-
-Add a file composer.json with content:
-
-``` json
-{
-    "require": {
-        "behat/mink":               "~1.5",
-        "behat/mink-goutte-driver": "~1.0"
-    }
-}
-```
-
-(or merge the above into your project's existing composer.json file)
-
-``` bash
-$> curl -sS https://getcomposer.org/installer | php
-$> php composer.phar install
-```
-
-Maintainers
------------
-
-* Christophe Coevoet [stof](https://github.com/stof)
-* Other [awesome developers](https://github.com/minkphp/MinkGoutteDriver/graphs/contributors)
diff --git a/vendor/behat/mink-goutte-driver/composer.json b/vendor/behat/mink-goutte-driver/composer.json
deleted file mode 100644
index 80d6ecf..0000000
--- a/vendor/behat/mink-goutte-driver/composer.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-    "name":         "behat/mink-goutte-driver",
-    "description":  "Goutte driver for Mink framework",
-    "keywords":     ["goutte", "headless", "testing", "browser"],
-    "homepage":     "http://mink.behat.org/",
-    "type":         "mink-driver",
-    "license":      "MIT",
-
-    "authors": [
-        {
-            "name":      "Konstantin Kudryashov",
-            "email":     "ever.zet@gmail.com",
-            "homepage":  "http://everzet.com"
-        }
-    ],
-
-    "require": {
-        "php":                           ">=5.3.1",
-        "behat/mink":                    "~1.6@dev",
-        "behat/mink-browserkit-driver":  "~1.2@dev",
-        "fabpot/goutte":                 "~1.0.4|~2.0|~3.1"
-    },
-
-    "require-dev": {
-        "symfony/phpunit-bridge": "~2.7"
-    },
-
-    "autoload": {
-        "psr-4": {
-            "Behat\\Mink\\Driver\\": "src/"
-        }
-    },
-
-    "autoload-dev": {
-        "psr-4": {
-            "Behat\\Mink\\Tests\\Driver\\": "tests"
-        }
-    },
-
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.2.x-dev"
-        }
-    }
-}
diff --git a/vendor/behat/mink-goutte-driver/phpunit.xml.dist b/vendor/behat/mink-goutte-driver/phpunit.xml.dist
deleted file mode 100644
index cbe57c4..0000000
--- a/vendor/behat/mink-goutte-driver/phpunit.xml.dist
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit colors="true" bootstrap="vendor/behat/mink/driver-testsuite/bootstrap.php">
-    <testsuites>
-        <testsuite name="Driver test suite">
-            <directory>tests</directory>
-            <directory>vendor/behat/mink/driver-testsuite/tests/Basic</directory>
-            <directory>vendor/behat/mink/driver-testsuite/tests/Form</directory>
-        </testsuite>
-    </testsuites>
-
-    <php>
-        <var name="driver_config_factory" value="Behat\Mink\Tests\Driver\GoutteConfig::getInstance" />
-
-        <!--server name="WEB_FIXTURES_HOST" value="http://test.mink.dev" /-->
-    </php>
-
-    <filter>
-        <whitelist>
-            <directory>./src</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/behat/mink-goutte-driver/src/Goutte/Client.php b/vendor/behat/mink-goutte-driver/src/Goutte/Client.php
deleted file mode 100644
index 9d64be7..0000000
--- a/vendor/behat/mink-goutte-driver/src/Goutte/Client.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Behat\Mink.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Driver\Goutte;
-
-use Goutte\Client as BaseClient;
-use Symfony\Component\BrowserKit\Response;
-
-/**
- * Client overrides to support Mink functionality.
- */
-class Client extends BaseClient
-{
-    /**
-     * Reads response meta tags to guess content-type charset.
-     *
-     * @param Response $response
-     *
-     * @return Response
-     */
-    protected function filterResponse($response)
-    {
-        $contentType = $response->getHeader('Content-Type');
-
-        if (!$contentType || false === strpos($contentType, 'charset=')) {
-            if (preg_match('/\<meta[^\>]+charset *= *["\']?([a-zA-Z\-0-9]+)/i', $response->getContent(), $matches)) {
-                $headers = $response->getHeaders();
-                $headers['Content-Type'] = $contentType.';charset='.$matches[1];
-
-                $response = new Response($response->getContent(), $response->getStatus(), $headers);
-            }
-        }
-
-        return parent::filterResponse($response);
-    }
-}
diff --git a/vendor/behat/mink-goutte-driver/src/GoutteDriver.php b/vendor/behat/mink-goutte-driver/src/GoutteDriver.php
deleted file mode 100644
index a42d5a2..0000000
--- a/vendor/behat/mink-goutte-driver/src/GoutteDriver.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-/*
- * This file is part of the Behat\Mink.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Driver;
-
-use Behat\Mink\Driver\Goutte\Client as ExtendedClient;
-use Goutte\Client;
-
-/**
- * Goutte driver.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class GoutteDriver extends BrowserKitDriver
-{
-    /**
-     * Initializes Goutte driver.
-     *
-     * @param Client $client Goutte client instance
-     */
-    public function __construct(Client $client = null)
-    {
-        parent::__construct($client ?: new ExtendedClient());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setBasicAuth($user, $password)
-    {
-        if (false === $user) {
-            $this->getClient()->resetAuth();
-
-            return;
-        }
-
-        $this->getClient()->setAuth($user, $password);
-    }
-
-    /**
-     * Gets the Goutte client.
-     *
-     * The method is overwritten only to provide the appropriate return type hint.
-     *
-     * @return Client
-     */
-    public function getClient()
-    {
-        return parent::getClient();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reset()
-    {
-        parent::reset();
-        $this->getClient()->resetAuth();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function prepareUrl($url)
-    {
-        return $url;
-    }
-}
diff --git a/vendor/behat/mink/.gitignore b/vendor/behat/mink/.gitignore
deleted file mode 100644
index 66de342..0000000
--- a/vendor/behat/mink/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-*.tgz
-*.phar
-phpunit.xml
-composer.lock
-vendor
diff --git a/vendor/behat/mink/.travis.yml b/vendor/behat/mink/.travis.yml
deleted file mode 100644
index 677ee0e..0000000
--- a/vendor/behat/mink/.travis.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-language: php
-
-sudo: false
-
-php: [5.3, 5.4, 5.5, 5.6, 7.0, hhvm]
-
-matrix:
-  fast_finish: true
-  include:
-    - php: 5.3
-      env: COMPOSER_FLAGS='--prefer-lowest --prefer-stable' SYMFONY_DEPRECATIONS_HELPER=weak
-  allow_failures:
-    - php: 7.0
-
-cache:
-  directories:
-    - $HOME/.composer/cache/files
-
-before_install:
-  - composer self-update
-
-install:
-  - composer update $COMPOSER_FLAGS
-
-script: phpunit -v --coverage-clover=coverage.clover
-
-after_script:
-  - if [[ "7.0" != "$TRAVIS_PHP_VERSION" && "$TRAVIS_PHP_VERSION" != "hhvm" ]]; then wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi
diff --git a/vendor/behat/mink/CHANGES.md b/vendor/behat/mink/CHANGES.md
deleted file mode 100644
index 4ef4ecb..0000000
--- a/vendor/behat/mink/CHANGES.md
+++ /dev/null
@@ -1,297 +0,0 @@
-1.7.0 / 2015-09-20
-==================
-
-New features:
-
-* Added `Session::getResponseHeader` to access a response header easily
-* Added support for header assertions
-* Added a forward compatibility layer for drivers to allow them to prepare
-  for Mink 2.0 (they won't require any change if they use it). They should
-  now overwrite `CoreDriver::findElementXpaths` instead of implementing `find`
-  and `setSession` themselves.
-* Added escaping of the locator in the NamedSelector rather than expecting
-  the caller to perform the escaping. Passing an escaped locator is still
-  supported but deprecated.
-* Remove the dependency on the Session in expectation exceptions. Passing
-  the session in the exception constructor is now deprecated. The driver
-  should be passed instead.
-
-Bug fixes:
-
-* Fixed the URL assertions when comparing paths ending in ``.php``
-* Silenced deprecation warnings (following the Symfony convention) to make
-  them less invasive. Use the `symfony/phpunit-bridge` to get them reported
-  when using Mink in your PHPUnit tests.
-* Fixed `NodeElement::hasClass` in case the class attribute contains newlines
-
-Testsuite:
-
-* Made the testsuite compatible with PHPUnit strict timing mode (only the library testsuite, not the driver one)
-* Added testing against PHP 7
-* Added testing against lowest version of dependencies to ensure we got the lower bounds right
-
-Driver testsuite:
-
-* Added an extra test to ensure the right behavior when getting the HTML with empty elements
-* Added a few more safeguards to ensure test failures rather than fatal errors for misbehaving drivers
-* Added a test ensuring that drivers follow recommended practices
-
-Misc:
-
-* Added a few missing deprecation warnings for deprecated APIs or classes.
-
-1.6.1 / 2015-02-04
-==================
-
-Bug fixes:
-
-* Added a check for empty path in `WebAssert::cleanUrl()`
-
-Driver testsuite:
-
-* Added an extra test to ensure the right behavior for traversal
-
-Misc:
-
-* Changed the description in the composer.json
-* Switched the repository structure to use PSR-4
-* Updated URLs for the move to the new Github organization
-
-1.6.0 / 2014-09-26
-==================
-
-  * [BC break] Changed the named selector to prefer exact matches over partial matches
-  * [BC break] Changed `NodeElement::getValue` for checkboxes to return the value rather than the checked state (use `isChecked` for that)
-  * Fixed the XPath prefixing when searching inside an existing element
-  * Refactored the driver testsuite entirely and expand it to cover drivers entirely (covering many more cases for consistency)
-  * Changed `NodeElement::setValue` to support any fields rather than only input elements
-  * Removed the wrapping of any driver-level exception in a MinkException on invalid usage as it was making the code too complex
-  * Fixed the matching of the input type in the named selector to be case insensitive according to the HTML spec
-  * Introduced `Behat\Mink\Selector\Xpath\Escaper` to allow reusing the XPath escaping
-  * Deprecated `Element::getSession`. Code needing the session should get it from outside rather than the element
-  * Changed ElementNotFoundException to extend from ExpectationException
-  * Added `Element::getOuterHtml` to get the HTML code of the element including itself
-  * Fixed the name selectors to match on the `placeholder` only for textual inputs
-  * Enforced consistent behavior for drivers on 4xx and 5xx response to return the response rather than throwing an exception
-  * Added `Element::waitFor` to allow retrying some code until it succeeds or the timeout is reached
-  * Added `Element::isValid` to check whether an element still exists in the page
-  * Made `Session::executeScript` compatible across drivers by ensuring they all support the same syntaxes for the JS expression
-  * Made `Session::evaluateScript` compatible across drivers by ensuring they all support the same syntaxes for the JS expression
-  * Removed `hasClass` from `DocumentElement` (instead of triggering a fatal error)
-  * Added testing on HHVM to ensure consistency
-  * Fixed `NodeElement::getTagName` to ensure that the tag name is lowercase for all drivers
-  * Fixed `Element::hasAttribute` to ensure it supports attributes with an empty value
-  * Fixed the `field` selector to avoid matching inputs with the type `submit` or `reset`
-  * Changed the button XPath selection to accept `reset` buttons as well
-  * Changed `Session::wait` to return the condition value rather than nothing
-  * Added `Session::getWindowName` and `Session::getWindowNames` to get the name of the current and of all windows
-  * Added `Session::maximizeWindow` to maximize the window
-  * Added `NodeElement::isSelected` to check whether an `<option>` is selected
-  * Added `NodeElement::submitForm` to allow submitting a form without using a button
-  * Added assertions about the value of an attribute
-  * Added the anchor in the assertion on the URL in `WebAssert`
-
-1.5.0 / 2013-04-14
-==================
-
-  * Add `CoreDriver` to simplify future drivers improvements
-  * Add `Mink::isSessionStarted()` method
-  * Fix multibite string `preg_replace` bugs
-  * Fix handling of whitespaces in `WebAssert::pageText...()` methods
-
-1.4.3 / 2013-03-02
-==================
-
-  * Bump dependencies constraints
-
-1.4.2 / 2013-02-13
-==================
-
-  * Fix wrong test case to ensure that core drivers work as expected
-
-1.4.1 / 2013-02-10
-==================
-
-  * Update dependencies
-  * Add ElementException to element actions
-  * Rel attribute support for named selectors
-  * Add hasClass() helper to traversable elements
-  * Add getScreenshot() method to session
-  * Name attr support in named selector for button
-  * Fix for bunch of bugs
-
-1.4.0 / 2012-05-40
-==================
-
-  * New `Session::selectWindow()` and `Session::selectIFrame()` methods
-  * New built-in `WebAssert` class
-  * Fixed DocBlocks (autocompletion in any IDE now should just work)
-  * Moved Behat-related code into `Behat\MinkExtension`
-  * Removed PHPUnit test case class
-  * Updated composer dependencies to not require custom repository anymore
-  * All drivers moved into separate packages
-
-1.3.3 / 2012-03-23
-==================
-
-  * Prevent exceptions in `__toString()`
-  * Added couple of useful step definitions for Behat
-  * Fixed issues #168, #211, #212, #208
-  * Lot of small bug fixes and improvements
-  * Fixed dependencies and composer installation routine
-
-1.3.2 / 2011-12-21
-==================
-
-  * Fixed webdriver registration in MinkContext
-
-1.3.1 / 2011-12-21
-==================
-
-  * Fixed Composer package
-
-1.3.0 / 2011-12-21
-==================
-
-  * Brand new Selenium2Driver (webdriver session)
-  * Multiselect bugfixes
-  * ZombieDriver back in the business
-  * Composer now manages dependencies
-  * Some MinkContext steps got fixes
-  * Lots of bug fixes and cleanup
-
-1.2.0 / 2011-11-04
-==================
-
-  * Brand new SeleniumDriver (thanks @alexandresalome)
-  * Multiselect support (multiple options selection), including new Behat steps
-  * Ability to select option by it's text (in addition to value)
-  * ZombieDriver updates
-  * Use SuiteHooks to populate parameters (no need to call parent __construct anymore)
-  * Updated Goutte and all vendors
-  * Lot of bugfixes and new tests
-
-1.1.1 / 2011-08-12
-==================
-
-  * Fixed Zombie.js server termination on Linux
-  * Fixed base_url usage for external URLs
-
-1.1.0 / 2011-08-08
-==================
-
-  * Added Zombie.js driver (thanks @b00giZm)
-  * Added pt translation (thanks Daniel Gomes)
-  * Refactored MinkContext and MinkTestCase
-
-1.0.3 / 2011-08-02
-==================
-
-  * File uploads for empty fields fixed (GoutteDriver)
-  * Lazy sessions restart
-  * `show_tmp_dir` option in MinkContext
-  * Updated to stable Symfony2 components
-  * SahiClient connection limit bumped to 60 seconds
-  * Dutch language support
-
-1.0.2 / 2011-07-22
-==================
-
-  * ElementHtmlException fixed (thanks @Stof)
-
-1.0.1 / 2011-07-21
-==================
-
-  * Fixed buggy assertions in MinkContext
-
-1.0.0 / 2011-07-20
-==================
-
-  * Added missing tests for almost everything
-  * Hude speedup for SahiDriver
-  * Support for Behat 2.0 contexts
-  * Bundled PHPUnit TestCase
-  * Deep element traversing
-  * Correct behavior of getText() method
-  * New getHtml() method
-  * Basic HTTP auth support
-  * Soft and hard session resetting
-  * Cookies management
-  * Browser history interactions (reload(), back(), forward())
-  * Weaverryan'd exception messages
-  * Huge amount of bugfixes and small additions
-
-0.3.2 / 2011-06-20
-==================
-
-  * Fixed file uploads in Goutte driver
-  * Fixed setting of long texts into fields
-  * Added getPlainText() (returns text without tags and whitespaces) method to the element's API
-  * Start_url is now optional parameter
-  * Default session (if needed) name now need to be always specified by hands with setDefaultSessionName()
-  * default_driver => default_session
-  * Updated Symfony Components
-
-0.3.1 / 2011-05-17
-==================
-
-  * Small SahiClient update (it generates SID now if no provided)
-  * setActiveSessionName => setDefaultSessionName method rename
-
-0.3.0 / 2011-05-17
-==================
-
-  * Rewritten from scratch Mink drivers handler. Now it's sessions handler. And Mink now
-    sessions-centric tool. See examples in readme. Much cleaner API now.
-
-0.2.4 / 2011-05-12
-==================
-
-  * Fixed wrong url locator function
-  * Fixed wrong regex in `should see` step
-  * Fixed delimiters use in `should see` step
-  * Added url-match step for checking urls against regex
-
-0.2.3 / 2011-05-01
-==================
-
-  * Updated SahiClient with new version, which is faster and cleaner with it's exceptions
-
-0.2.2 / 2011-05-01
-==================
-
-  * Ability to use already started browser as SahiDriver aim
-  * Added japanese translation for bundled steps (thanks @hidenorigoto)
-  * 10 seconds limit for browser connection in SahiDriver
-
-0.2.1 / 2011-04-21
-==================
-
-  * Fixed some bundled step definitions
-
-0.2.0 / 2011-04-21
-==================
-
-  * Additional step definitions
-  * Support for extended drivers configuration through behat.yml environment parameters
-  * Lots of new named selectors
-  * Bug fixes
-  * Small improvements
-
-0.1.2 / 2011-04-08
-==================
-
-  * Fixed Sahi url escaping
-
-0.1.1 / 2011-04-06
-==================
-
-  * Fixed should/should_not steps
-  * Added spanish translation
-  * Fixed forms to use <base> element
-  * Fixed small UnsupportedByDriverException issue
-
-0.1.0 / 2011-04-04
-==================
-
-  * Initial release
diff --git a/vendor/behat/mink/CONTRIBUTING.md b/vendor/behat/mink/CONTRIBUTING.md
deleted file mode 100644
index 5db4d85..0000000
--- a/vendor/behat/mink/CONTRIBUTING.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Contributing
-Mink is an open source, community-driven project. If you'd like to contribute, feel free to do this, but remember to follow these few simple rules:
-
-## Submitting an issues
-- __Driver-related__ issues must be reported in the corresponding driver repository
-- A reproducible example is required for every bug report, otherwise it will most probably be __closed without warning__
-- If you are going to make a big, substantial change, let's discuss it first
-
-## Working with Pull Requests
-1. Create your feature addition or a bug fix branch based on `master` branch in your repository's fork.
-2. Make necessary changes, but __don't mix__ code reformatting with code changes on topic.
-3. Add tests for those changes (please look into `tests/` folder for some examples). This is important so we don't break it in a future version unintentionally.
-4. Commit your code, but do not mess with `CHANGES.md`.
-5. Squash your commits by topic to preserve a clean and readable log.
-6. Create Pull Request.
-
-# Running tests
-Make sure that you don't break anything with your changes by running:
-
-```bash
-$> phpunit
-```
diff --git a/vendor/behat/mink/LICENSE b/vendor/behat/mink/LICENSE
deleted file mode 100644
index 854754b..0000000
--- a/vendor/behat/mink/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2011-2015 Konstantin Kudryashov <ever.zet@gmail.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.
diff --git a/vendor/behat/mink/README.md b/vendor/behat/mink/README.md
deleted file mode 100644
index 2299506..0000000
--- a/vendor/behat/mink/README.md
+++ /dev/null
@@ -1,74 +0,0 @@
-Mink
-====
-[![Latest Stable Version](https://poser.pugx.org/behat/mink/v/stable.svg)](https://packagist.org/packages/behat/mink)
-[![Latest Unstable Version](https://poser.pugx.org/behat/mink/v/unstable.svg)](https://packagist.org/packages/behat/mink)
-[![Total Downloads](https://poser.pugx.org/behat/mink/downloads.svg)](https://packagist.org/packages/behat/mink)
-[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/minkphp/Mink/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/minkphp/Mink/?branch=master)
-[![Code Coverage](https://scrutinizer-ci.com/g/minkphp/Mink/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/minkphp/Mink/)
-[![Build Status](https://travis-ci.org/minkphp/Mink.svg?branch=master)](https://travis-ci.org/minkphp/Mink)
-[![SensioLabsInsight](https://insight.sensiolabs.com/projects/5bb8fab0-978f-428a-ae23-44ee4e129fbc/mini.png)](https://insight.sensiolabs.com/projects/5bb8fab0-978f-428a-ae23-44ee4e129fbc)
-[![License](https://poser.pugx.org/behat/mink/license.svg)](https://packagist.org/packages/behat/mink)
-
-
-Useful Links
-------------
-
-- The main website with documentation is at [http://mink.behat.org](http://mink.behat.org)
-- Official Google Group is at [http://groups.google.com/group/behat](http://groups.google.com/group/behat)
-- IRC channel on [#freenode](http://freenode.net/) is `#behat`
-- [Note on Patches/Pull Requests](CONTRIBUTING.md)
-
-Usage Example
--------------
-
-``` php
-<?php
-
-use Behat\Mink\Mink,
-    Behat\Mink\Session,
-    Behat\Mink\Driver\GoutteDriver,
-    Behat\Mink\Driver\Goutte\Client as GoutteClient;
-
-$startUrl = 'http://example.com';
-
-// init Mink and register sessions
-$mink = new Mink(array(
-    'goutte1' => new Session(new GoutteDriver(new GoutteClient())),
-    'goutte2' => new Session(new GoutteDriver(new GoutteClient())),
-    'custom'  => new Session(new MyCustomDriver($startUrl))
-));
-
-// set the default session name
-$mink->setDefaultSessionName('goutte2');
-
-// visit a page
-$mink->getSession()->visit($startUrl);
-
-// call to getSession() without argument will always return a default session if has one (goutte2 here)
-$mink->getSession()->getPage()->findLink('Downloads')->click();
-echo $mink->getSession()->getPage()->getContent();
-
-// call to getSession() with argument will return session by its name
-$mink->getSession('custom')->getPage()->findLink('Downloads')->click();
-echo $mink->getSession('custom')->getPage()->getContent();
-
-// this all is done to make possible mixing sessions
-$mink->getSession('goutte1')->getPage()->findLink('Chat')->click();
-$mink->getSession('goutte2')->getPage()->findLink('Chat')->click();
-```
-
-Install Dependencies
---------------------
-
-``` bash
-$> curl -sS https://getcomposer.org/installer | php
-$> php composer.phar install
-```
-
-Contributors
-------------
-
-* Konstantin Kudryashov [everzet](https://github.com/everzet) [lead developer]
-* Christophe Coevoet [stof](https://github.com/stof) [lead developer]
-* Alexander Obuhovich [aik099](https://github.com/aik099) [lead developer]
-* Other [awesome developers](https://github.com/minkphp/Mink/graphs/contributors)
diff --git a/vendor/behat/mink/composer.json b/vendor/behat/mink/composer.json
deleted file mode 100644
index 0193f43..0000000
--- a/vendor/behat/mink/composer.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-    "name":         "behat/mink",
-    "description":  "Browser controller/emulator abstraction for PHP",
-    "keywords":     ["web", "testing", "browser"],
-    "homepage":     "http://mink.behat.org/",
-    "type":         "library",
-    "license":      "MIT",
-
-    "authors": [
-        {
-            "name":      "Konstantin Kudryashov",
-            "email":     "ever.zet@gmail.com",
-            "homepage":  "http://everzet.com"
-        }
-    ],
-
-    "require": {
-        "php":                   ">=5.3.1",
-        "symfony/css-selector":  "~2.1"
-    },
-
-    "require-dev": {
-        "symfony/phpunit-bridge": "~2.7"
-    },
-
-    "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)"
-    },
-
-    "autoload": {
-        "psr-4": {
-            "Behat\\Mink\\": "src/"
-        }
-    },
-
-    "autoload-dev": {
-        "psr-4": {
-            "Behat\\Mink\\Tests\\": "tests"
-        }
-    },
-
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.7.x-dev"
-        }
-    }
-}
diff --git a/vendor/behat/mink/phpdoc.ini.dist b/vendor/behat/mink/phpdoc.ini.dist
deleted file mode 100644
index 3fef75d..0000000
--- a/vendor/behat/mink/phpdoc.ini.dist
+++ /dev/null
@@ -1,125 +0,0 @@
-; Default configuration file for PHPDoctor
-
-; This config file will cause PHPDoctor to generate API documentation of
-; itself.
-
-
-; PHPDoctor settings
-; -----------------------------------------------------------------------------
-
-; Names of files to parse. This can be a single filename, or a comma separated
-; list of filenames. Wildcards are allowed.
-
-files = "*.php"
-
-; Names of files or directories to ignore. This can be a single filename, or a
-; comma separated list of filenames. Wildcards are NOT allowed.
-
-ignore = "CVS, .svn, .git, _compiled"
-
-; The directory to look for files in, if not used the PHPDoctor will look in
-; the current directory (the directory it is run from).
-
-source_path = "./src"
-
-; If you do not want PHPDoctor to look in each sub directory for files
-; uncomment this line.
-
-;subdirs = off
-
-; Set how loud PHPDoctor is as it runs. Quiet mode suppresses all output other
-; than warnings and errors. Verbose mode outputs additional messages during
-; execution.
-
-;quiet = on
-;verbose = on
-
-; Select the doclet to use for generating output.
-
-doclet = standard
-;doclet = debug
-
-; The directory to find the doclet in. Doclets are expected to be in a
-; directory named after themselves at the location given.
-
-;doclet_path = ./doclets
-
-; The directory to find taglets in. Taglets allow you to make PHPDoctor handle
-; new tags and to alter the behavour of existing tags and their output.
-
-;taglet_path = ./taglets
-
-; If the code you are parsing does not use package tags or not all elements
-; have package tags, use this setting to place unbound elements into a
-; particular package.
-
-default_package = "Behat\Mink"
-
-; Specifies the name of a HTML file containing text for the overview
-; documentation to be placed on the overview page. The path is relative to
-; "source_path" unless an absolute path is given.
-
-overview = readme.html
-
-; Package comments will be looked for in a file named package.html in the same
-; directory as the first source file parsed in that package or in the directory
-; given below. If package comments are placed in the directory given below then
-; they should be named "<packageName>.html".
-
-package_comment_dir = ./
-
-; Parse out global variables and/or global constants?
-
-;globals = off
-;constants = off
-
-; Generate documentation for all class members
-
-;private = on
-
-; Generate documentation for public and protected class members
-
-;protected = on
-
-; Generate documentation for only public class members
-
-public = on
-
-; Use the PEAR compatible handling of the docblock first sentence
-
-;pear_compat = on
-
-; Standard doclet settings
-; -----------------------------------------------------------------------------
-
-; The directory to place generated documentation in. If the given path is
-; relative to it will be relative to "source_path".
-
-d = "api"
-
-; Specifies the title to be placed in the HTML <title> tag.
-
-windowtitle = "Behat\Mink"
-
-; Specifies the title to be placed near the top of the overview summary file.
-
-doctitle = "Behat\Mink: browser emulators abstraction library for PHP"
-
-; Specifies the header text to be placed at the top of each output file. The
-; header will be placed to the right of the upper navigation bar. 
-
-header = "Behat\Mink"
-
-; Specifies the footer text to be placed at the bottom of each output file. The
-; footer will be placed to the right of the lower navigation bar.
-
-footer = "Behat\Mink"
-
-; Specifies the text to be placed at the bottom of each output file. The text
-; will be placed at the bottom of the page, below the lower navigation bar.
-
-;bottom = "This document was generated by <a href="http://phpdoctor.sourceforge.net/">PHPDoctor: The PHP Documentation Creator</a>"
-
-; Create a class tree?
-
-tree = on
diff --git a/vendor/behat/mink/phpunit.xml.dist b/vendor/behat/mink/phpunit.xml.dist
deleted file mode 100644
index 6695433..0000000
--- a/vendor/behat/mink/phpunit.xml.dist
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit colors="true" bootstrap="vendor/autoload.php">
-    <testsuites>
-        <testsuite name="Behat Mink test suite">
-            <directory>tests</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./src</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/behat/mink/src/Driver/CoreDriver.php b/vendor/behat/mink/src/Driver/CoreDriver.php
deleted file mode 100644
index 9b4c04e..0000000
--- a/vendor/behat/mink/src/Driver/CoreDriver.php
+++ /dev/null
@@ -1,475 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Driver;
-
-use Behat\Mink\Element\NodeElement;
-use Behat\Mink\Exception\UnsupportedDriverActionException;
-use Behat\Mink\Session;
-
-/**
- * Core driver.
- * All other drivers should extend this class for future compatibility.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-abstract class CoreDriver implements DriverInterface
-{
-    /**
-     * @var Session
-     */
-    private $session;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setSession(Session $session)
-    {
-        $this->session = $session;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        throw new UnsupportedDriverActionException('Starting the driver is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isStarted()
-    {
-        throw new UnsupportedDriverActionException('Checking the driver state is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function stop()
-    {
-        throw new UnsupportedDriverActionException('Stopping the driver is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reset()
-    {
-        throw new UnsupportedDriverActionException('Resetting the driver is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function visit($url)
-    {
-        throw new UnsupportedDriverActionException('Visiting an url is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCurrentUrl()
-    {
-        throw new UnsupportedDriverActionException('Getting the current url is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        throw new UnsupportedDriverActionException('Getting the page content is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function find($xpath)
-    {
-        $elements = array();
-
-        foreach ($this->findElementXpaths($xpath) as $xpath) {
-            $elements[] = new NodeElement($xpath, $this->session);
-        }
-
-        return $elements;
-    }
-
-    /**
-     * Finds elements with specified XPath query.
-     *
-     * @see find()
-     *
-     * @param string $xpath
-     *
-     * @return string[] The XPath of the matched elements
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     */
-    protected function findElementXpaths($xpath)
-    {
-        throw new UnsupportedDriverActionException('Finding elements is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTagName($xpath)
-    {
-        throw new UnsupportedDriverActionException('Getting the tag name is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getText($xpath)
-    {
-        throw new UnsupportedDriverActionException('Getting the element text is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getHtml($xpath)
-    {
-        throw new UnsupportedDriverActionException('Getting the element inner HTML is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getOuterHtml($xpath)
-    {
-        throw new UnsupportedDriverActionException('Getting the element outer HTML is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getAttribute($xpath, $name)
-    {
-        throw new UnsupportedDriverActionException('Getting the element attribute is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getValue($xpath)
-    {
-        throw new UnsupportedDriverActionException('Getting the field value is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setValue($xpath, $value)
-    {
-        throw new UnsupportedDriverActionException('Setting the field value is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function check($xpath)
-    {
-        throw new UnsupportedDriverActionException('Checking a checkbox is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function uncheck($xpath)
-    {
-        throw new UnsupportedDriverActionException('Unchecking a checkbox is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isChecked($xpath)
-    {
-        throw new UnsupportedDriverActionException('Getting the state of a checkbox is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function selectOption($xpath, $value, $multiple = false)
-    {
-        throw new UnsupportedDriverActionException('Selecting an option is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function click($xpath)
-    {
-        throw new UnsupportedDriverActionException('Clicking on an element is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function attachFile($xpath, $path)
-    {
-        throw new UnsupportedDriverActionException('Attaching a file in an input is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function reload()
-    {
-        throw new UnsupportedDriverActionException('Page reloading is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function forward()
-    {
-        throw new UnsupportedDriverActionException('Forward action is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function back()
-    {
-        throw new UnsupportedDriverActionException('Backward action is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setBasicAuth($user, $password)
-    {
-        throw new UnsupportedDriverActionException('Basic auth setup is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function switchToWindow($name = null)
-    {
-        throw new UnsupportedDriverActionException('Windows management is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function switchToIFrame($name = null)
-    {
-        throw new UnsupportedDriverActionException('iFrames management is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setRequestHeader($name, $value)
-    {
-        throw new UnsupportedDriverActionException('Request headers manipulation is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getResponseHeaders()
-    {
-        throw new UnsupportedDriverActionException('Response headers are not available from %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setCookie($name, $value = null)
-    {
-        throw new UnsupportedDriverActionException('Cookies manipulation is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCookie($name)
-    {
-        throw new UnsupportedDriverActionException('Cookies are not available from %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStatusCode()
-    {
-        throw new UnsupportedDriverActionException('Status code is not available from %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getScreenshot()
-    {
-        throw new UnsupportedDriverActionException('Screenshots are not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getWindowNames()
-    {
-        throw new UnsupportedDriverActionException('Listing all window names is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getWindowName()
-    {
-        throw new UnsupportedDriverActionException('Listing this window name is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function doubleClick($xpath)
-    {
-        throw new UnsupportedDriverActionException('Double-clicking is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function rightClick($xpath)
-    {
-        throw new UnsupportedDriverActionException('Right-clicking is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isVisible($xpath)
-    {
-        throw new UnsupportedDriverActionException('Element visibility check is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isSelected($xpath)
-    {
-        throw new UnsupportedDriverActionException('Element selection check is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function mouseOver($xpath)
-    {
-        throw new UnsupportedDriverActionException('Mouse manipulations are not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function focus($xpath)
-    {
-        throw new UnsupportedDriverActionException('Mouse manipulations are not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function blur($xpath)
-    {
-        throw new UnsupportedDriverActionException('Mouse manipulations are not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function keyPress($xpath, $char, $modifier = null)
-    {
-        throw new UnsupportedDriverActionException('Keyboard manipulations are not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function keyDown($xpath, $char, $modifier = null)
-    {
-        throw new UnsupportedDriverActionException('Keyboard manipulations are not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function keyUp($xpath, $char, $modifier = null)
-    {
-        throw new UnsupportedDriverActionException('Keyboard manipulations are not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dragTo($sourceXpath, $destinationXpath)
-    {
-        throw new UnsupportedDriverActionException('Mouse manipulations are not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function executeScript($script)
-    {
-        throw new UnsupportedDriverActionException('JS is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function evaluateScript($script)
-    {
-        throw new UnsupportedDriverActionException('JS is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function wait($timeout, $condition)
-    {
-        throw new UnsupportedDriverActionException('JS is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resizeWindow($width, $height, $name = null)
-    {
-        throw new UnsupportedDriverActionException('Window resizing is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function maximizeWindow($name = null)
-    {
-        throw new UnsupportedDriverActionException('Window maximize is not supported by %s', $this);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function submitForm($xpath)
-    {
-        throw new UnsupportedDriverActionException('Form submission is not supported by %s', $this);
-    }
-}
diff --git a/vendor/behat/mink/src/Driver/DriverInterface.php b/vendor/behat/mink/src/Driver/DriverInterface.php
deleted file mode 100644
index 0880960..0000000
--- a/vendor/behat/mink/src/Driver/DriverInterface.php
+++ /dev/null
@@ -1,637 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Driver;
-
-use Behat\Mink\Element\NodeElement;
-use Behat\Mink\Exception\DriverException;
-use Behat\Mink\Exception\UnsupportedDriverActionException;
-use Behat\Mink\Session;
-
-/**
- * Driver interface.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface DriverInterface
-{
-    /**
-     * Sets driver's current session.
-     *
-     * @param Session $session
-     */
-    public function setSession(Session $session);
-
-    /**
-     * Starts driver.
-     *
-     * Once started, the driver should be ready to visit a page.
-     *
-     * Calling any action before visiting a page is an undefined behavior.
-     * The only supported method calls on a fresh driver are
-     * - visit()
-     * - setRequestHeader()
-     * - setBasicAuth()
-     * - reset()
-     * - stop()
-     *
-     * Calling start on a started driver is an undefined behavior. Driver
-     * implementations are free to handle it silently or to fail with an
-     * exception.
-     *
-     * @throws DriverException When the driver cannot be started
-     */
-    public function start();
-
-    /**
-     * Checks whether driver is started.
-     *
-     * @return Boolean
-     */
-    public function isStarted();
-
-    /**
-     * Stops driver.
-     *
-     * Once stopped, the driver should be started again before using it again.
-     *
-     * Calling any action on a stopped driver is an undefined behavior.
-     * The only supported method call after stopping a driver is starting it again.
-     *
-     * Calling stop on a stopped driver is an undefined behavior. Driver
-     * implementations are free to handle it silently or to fail with an
-     * exception.
-     *
-     * @throws DriverException When the driver cannot be closed
-     */
-    public function stop();
-
-    /**
-     * Resets driver state.
-     *
-     * This should reset cookies, request headers and basic authentication.
-     * When possible, the history should be reset as well, but this is not enforced
-     * as some implementations may not be able to reset it without restarting the
-     * driver entirely. Consumers requiring a clean history should restart the driver
-     * to enforce it.
-     *
-     * Once reset, the driver should be ready to visit a page.
-     * Calling any action before visiting a page is an undefined behavior.
-     * The only supported method calls on a fresh driver are
-     * - visit()
-     * - setRequestHeader()
-     * - setBasicAuth()
-     * - reset()
-     * - stop()
-     *
-     * Calling reset on a stopped driver is an undefined behavior.
-     */
-    public function reset();
-
-    /**
-     * Visit specified URL.
-     *
-     * @param string $url url of the page
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function visit($url);
-
-    /**
-     * Returns current URL address.
-     *
-     * @return string
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getCurrentUrl();
-
-    /**
-     * Reloads current page.
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function reload();
-
-    /**
-     * Moves browser forward 1 page.
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function forward();
-
-    /**
-     * Moves browser backward 1 page.
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function back();
-
-    /**
-     * Sets HTTP Basic authentication parameters.
-     *
-     * @param string|Boolean $user     user name or false to disable authentication
-     * @param string         $password password
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function setBasicAuth($user, $password);
-
-    /**
-     * Switches to specific browser window.
-     *
-     * @param string $name window name (null for switching back to main window)
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function switchToWindow($name = null);
-
-    /**
-     * Switches to specific iFrame.
-     *
-     * @param string $name iframe name (null for switching back)
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function switchToIFrame($name = null);
-
-    /**
-     * Sets specific request header on client.
-     *
-     * @param string $name
-     * @param string $value
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function setRequestHeader($name, $value);
-
-    /**
-     * Returns last response headers.
-     *
-     * @return array
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getResponseHeaders();
-
-    /**
-     * Sets cookie.
-     *
-     * @param string $name
-     * @param string $value
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function setCookie($name, $value = null);
-
-    /**
-     * Returns cookie by name.
-     *
-     * @param string $name
-     *
-     * @return string|null
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getCookie($name);
-
-    /**
-     * Returns last response status code.
-     *
-     * @return int
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getStatusCode();
-
-    /**
-     * Returns last response content.
-     *
-     * @return string
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getContent();
-
-    /**
-     * Capture a screenshot of the current window.
-     *
-     * @return string screenshot of MIME type image/* depending
-     *                on driver (e.g., image/png, image/jpeg)
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getScreenshot();
-
-    /**
-     * Return the names of all open windows.
-     *
-     * @return array array of all open windows
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getWindowNames();
-
-    /**
-     * Return the name of the currently active window.
-     *
-     * @return string the name of the current window
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getWindowName();
-
-    /**
-     * Finds elements with specified XPath query.
-     *
-     * @param string $xpath
-     *
-     * @return NodeElement[]
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function find($xpath);
-
-    /**
-     * Returns element's tag name by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @return string
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getTagName($xpath);
-
-    /**
-     * Returns element's text by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @return string
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getText($xpath);
-
-    /**
-     * Returns element's inner html by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @return string
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getHtml($xpath);
-
-    /**
-     * Returns element's outer html by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @return string
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getOuterHtml($xpath);
-
-    /**
-     * Returns element's attribute by it's XPath query.
-     *
-     * @param string $xpath
-     * @param string $name
-     *
-     * @return string|null
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function getAttribute($xpath, $name);
-
-    /**
-     * Returns element's value by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @return string|bool|array
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     *
-     * @see \Behat\Mink\Element\NodeElement::getValue
-     */
-    public function getValue($xpath);
-
-    /**
-     * Sets element's value by it's XPath query.
-     *
-     * @param string            $xpath
-     * @param string|bool|array $value
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     *
-     * @see \Behat\Mink\Element\NodeElement::setValue
-     */
-    public function setValue($xpath, $value);
-
-    /**
-     * Checks checkbox by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     *
-     * @see \Behat\Mink\Element\NodeElement::check
-     */
-    public function check($xpath);
-
-    /**
-     * Unchecks checkbox by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     *
-     * @see \Behat\Mink\Element\NodeElement::uncheck
-     */
-    public function uncheck($xpath);
-
-    /**
-     * Checks whether checkbox or radio button located by it's XPath query is checked.
-     *
-     * @param string $xpath
-     *
-     * @return Boolean
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     *
-     * @see \Behat\Mink\Element\NodeElement::isChecked
-     */
-    public function isChecked($xpath);
-
-    /**
-     * Selects option from select field or value in radio group located by it's XPath query.
-     *
-     * @param string  $xpath
-     * @param string  $value
-     * @param Boolean $multiple
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     *
-     * @see \Behat\Mink\Element\NodeElement::selectOption
-     */
-    public function selectOption($xpath, $value, $multiple = false);
-
-    /**
-     * Checks whether select option, located by it's XPath query, is selected.
-     *
-     * @param string $xpath
-     *
-     * @return Boolean
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     *
-     * @see \Behat\Mink\Element\NodeElement::isSelected
-     */
-    public function isSelected($xpath);
-
-    /**
-     * Clicks button or link located by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function click($xpath);
-
-    /**
-     * Double-clicks button or link located by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function doubleClick($xpath);
-
-    /**
-     * Right-clicks button or link located by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function rightClick($xpath);
-
-    /**
-     * Attaches file path to file field located by it's XPath query.
-     *
-     * @param string $xpath
-     * @param string $path
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     *
-     * @see \Behat\Mink\Element\NodeElement::attachFile
-     */
-    public function attachFile($xpath, $path);
-
-    /**
-     * Checks whether element visible located by it's XPath query.
-     *
-     * @param string $xpath
-     *
-     * @return Boolean
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function isVisible($xpath);
-
-    /**
-     * Simulates a mouse over on the element.
-     *
-     * @param string $xpath
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function mouseOver($xpath);
-
-    /**
-     * Brings focus to element.
-     *
-     * @param string $xpath
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function focus($xpath);
-
-    /**
-     * Removes focus from element.
-     *
-     * @param string $xpath
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function blur($xpath);
-
-    /**
-     * Presses specific keyboard key.
-     *
-     * @param string     $xpath
-     * @param string|int $char     could be either char ('b') or char-code (98)
-     * @param string     $modifier keyboard modifier (could be 'ctrl', 'alt', 'shift' or 'meta')
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function keyPress($xpath, $char, $modifier = null);
-
-    /**
-     * Pressed down specific keyboard key.
-     *
-     * @param string     $xpath
-     * @param string|int $char     could be either char ('b') or char-code (98)
-     * @param string     $modifier keyboard modifier (could be 'ctrl', 'alt', 'shift' or 'meta')
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function keyDown($xpath, $char, $modifier = null);
-
-    /**
-     * Pressed up specific keyboard key.
-     *
-     * @param string     $xpath
-     * @param string|int $char     could be either char ('b') or char-code (98)
-     * @param string     $modifier keyboard modifier (could be 'ctrl', 'alt', 'shift' or 'meta')
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function keyUp($xpath, $char, $modifier = null);
-
-    /**
-     * Drag one element onto another.
-     *
-     * @param string $sourceXpath
-     * @param string $destinationXpath
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function dragTo($sourceXpath, $destinationXpath);
-
-    /**
-     * Executes JS script.
-     *
-     * @param string $script
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function executeScript($script);
-
-    /**
-     * Evaluates JS script.
-     *
-     * The "return" keyword is optional in the script passed as argument. Driver implementations
-     * must accept the expression both with and without the keyword.
-     *
-     * @param string $script
-     *
-     * @return mixed
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function evaluateScript($script);
-
-    /**
-     * Waits some time or until JS condition turns true.
-     *
-     * @param int    $timeout   timeout in milliseconds
-     * @param string $condition JS condition
-     *
-     * @return bool
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function wait($timeout, $condition);
-
-    /**
-     * Set the dimensions of the window.
-     *
-     * @param int    $width  set the window width, measured in pixels
-     * @param int    $height set the window height, measured in pixels
-     * @param string $name   window name (null for the main window)
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function resizeWindow($width, $height, $name = null);
-
-    /**
-     * Maximizes the window if it is not maximized already.
-     *
-     * @param string $name window name (null for the main window)
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     */
-    public function maximizeWindow($name = null);
-
-    /**
-     * Submits the form.
-     *
-     * @param string $xpath Xpath.
-     *
-     * @throws UnsupportedDriverActionException When operation not supported by the driver
-     * @throws DriverException                  When the operation cannot be done
-     *
-     * @see \Behat\Mink\Element\NodeElement::submitForm
-     */
-    public function submitForm($xpath);
-}
diff --git a/vendor/behat/mink/src/Element/DocumentElement.php b/vendor/behat/mink/src/Element/DocumentElement.php
deleted file mode 100644
index c2daf66..0000000
--- a/vendor/behat/mink/src/Element/DocumentElement.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Element;
-
-/**
- * Document element.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class DocumentElement extends TraversableElement
-{
-    /**
-     * Returns XPath for handled element.
-     *
-     * @return string
-     */
-    public function getXpath()
-    {
-        return '//html';
-    }
-
-    /**
-     * Returns document content.
-     *
-     * @return string
-     */
-    public function getContent()
-    {
-        return trim($this->getDriver()->getContent());
-    }
-
-    /**
-     * Check whether document has specified content.
-     *
-     * @param string $content
-     *
-     * @return Boolean
-     */
-    public function hasContent($content)
-    {
-        return $this->has('named', array('content', $content));
-    }
-}
diff --git a/vendor/behat/mink/src/Element/Element.php b/vendor/behat/mink/src/Element/Element.php
deleted file mode 100644
index a2b6c0e..0000000
--- a/vendor/behat/mink/src/Element/Element.php
+++ /dev/null
@@ -1,214 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Element;
-
-use Behat\Mink\Driver\DriverInterface;
-use Behat\Mink\Exception\ElementNotFoundException;
-use Behat\Mink\Selector\SelectorsHandler;
-use Behat\Mink\Selector\Xpath\Manipulator;
-use Behat\Mink\Session;
-
-/**
- * Base element.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-abstract class Element implements ElementInterface
-{
-    /**
-     * @var Session
-     */
-    private $session;
-
-    /**
-     * Driver.
-     *
-     * @var DriverInterface
-     */
-    private $driver;
-
-    /**
-     * @var SelectorsHandler
-     */
-    private $selectorsHandler;
-
-    /**
-     * @var Manipulator
-     */
-    private $xpathManipulator;
-
-    /**
-     * Initialize element.
-     *
-     * @param Session $session
-     */
-    public function __construct(Session $session)
-    {
-        $this->xpathManipulator = new Manipulator();
-        $this->session = $session;
-
-        $this->driver = $session->getDriver();
-        $this->selectorsHandler = $session->getSelectorsHandler();
-    }
-
-    /**
-     * Returns element session.
-     *
-     * @return Session
-     *
-     * @deprecated Accessing the session from the element is deprecated as of 1.6 and will be impossible in 2.0.
-     */
-    public function getSession()
-    {
-        @trigger_error(sprintf('The method %s is deprecated as of 1.6 and will be removed in 2.0', __METHOD__), E_USER_DEPRECATED);
-
-        return $this->session;
-    }
-
-    /**
-     * Returns element's driver.
-     *
-     * @return DriverInterface
-     */
-    protected function getDriver()
-    {
-        return $this->driver;
-    }
-
-    /**
-     * Returns selectors handler.
-     *
-     * @return SelectorsHandler
-     *
-     * @deprecated Accessing the selectors handler in the element is deprecated as of 1.7 and will be impossible in 2.0.
-     */
-    protected function getSelectorsHandler()
-    {
-        @trigger_error(sprintf('The method %s is deprecated as of 1.7 and will be removed in 2.0', __METHOD__), E_USER_DEPRECATED);
-
-        return $this->selectorsHandler;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($selector, $locator)
-    {
-        return null !== $this->find($selector, $locator);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isValid()
-    {
-        return 1 === count($this->getDriver()->find($this->getXpath()));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function waitFor($timeout, $callback)
-    {
-        if (!is_callable($callback)) {
-            throw new \InvalidArgumentException('Given callback is not a valid callable');
-        }
-
-        $start = microtime(true);
-        $end = $start + $timeout;
-
-        do {
-            $result = call_user_func($callback, $this);
-
-            if ($result) {
-                break;
-            }
-
-            usleep(100000);
-        } while (microtime(true) < $end);
-
-        return $result;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function find($selector, $locator)
-    {
-        $items = $this->findAll($selector, $locator);
-
-        return count($items) ? current($items) : null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function findAll($selector, $locator)
-    {
-        if ('named' === $selector) {
-            $items = $this->findAll('named_exact', $locator);
-            if (empty($items)) {
-                $items = $this->findAll('named_partial', $locator);
-            }
-
-            return $items;
-        }
-
-        $xpath = $this->selectorsHandler->selectorToXpath($selector, $locator);
-        $xpath = $this->xpathManipulator->prepend($xpath, $this->getXpath());
-
-        return $this->getDriver()->find($xpath);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getText()
-    {
-        return $this->getDriver()->getText($this->getXpath());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getHtml()
-    {
-        return $this->getDriver()->getHtml($this->getXpath());
-    }
-
-    /**
-     * Returns element outer html.
-     *
-     * @return string
-     */
-    public function getOuterHtml()
-    {
-        return $this->getDriver()->getOuterHtml($this->getXpath());
-    }
-
-    /**
-     * Builds an ElementNotFoundException.
-     *
-     * @param string      $type
-     * @param string|null $selector
-     * @param string|null $locator
-     *
-     * @return ElementNotFoundException
-     *
-     * @deprecated as of 1.7, to be removed in 2.0
-     */
-    protected function elementNotFound($type, $selector = null, $locator = null)
-    {
-        @trigger_error(sprintf('The method %s is deprecated as of 1.7 and will be removed in 2.0', __METHOD__), E_USER_DEPRECATED);
-
-        return new ElementNotFoundException($this->driver, $type, $selector, $locator);
-    }
-}
diff --git a/vendor/behat/mink/src/Element/ElementInterface.php b/vendor/behat/mink/src/Element/ElementInterface.php
deleted file mode 100644
index 1d9cc4f..0000000
--- a/vendor/behat/mink/src/Element/ElementInterface.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Element;
-
-use Behat\Mink\Session;
-
-/**
- * Element interface.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface ElementInterface
-{
-    /**
-     * Returns XPath for handled element.
-     *
-     * @return string
-     */
-    public function getXpath();
-
-    /**
-     * Returns element's session.
-     *
-     * @return Session
-     *
-     * @deprecated Accessing the session from the element is deprecated as of 1.6 and will be impossible in 2.0.
-     */
-    public function getSession();
-
-    /**
-     * Checks whether element with specified selector exists inside the current element.
-     *
-     * @param string       $selector selector engine name
-     * @param string|array $locator  selector locator
-     *
-     * @return Boolean
-     *
-     * @see ElementInterface::findAll for the supported selectors
-     */
-    public function has($selector, $locator);
-
-    /**
-     * Checks if an element still exists in the DOM.
-     *
-     * @return bool
-     */
-    public function isValid();
-
-    /**
-     * Waits for an element(-s) to appear and returns it.
-     *
-     * @param int|float $timeout  Maximal allowed waiting time in seconds.
-     * @param callable  $callback Callback, which result is both used as waiting condition and returned.
-     *                            Will receive reference to `this element` as first argument.
-     *
-     * @return mixed
-     *
-     * @throws \InvalidArgumentException When invalid callback given.
-     */
-    public function waitFor($timeout, $callback);
-
-    /**
-     * Finds first element with specified selector inside the current element.
-     *
-     * @param string       $selector selector engine name
-     * @param string|array $locator  selector locator
-     *
-     * @return NodeElement|null
-     *
-     * @see ElementInterface::findAll for the supported selectors
-     */
-    public function find($selector, $locator);
-
-    /**
-     * Finds all elements with specified selector inside the current element.
-     *
-     * Valid selector engines are named, xpath, css, named_partial and named_exact.
-     *
-     * 'named' is a pseudo selector engine which prefers an exact match but
-     * will return a partial match if no exact match is found.
-     * 'xpath' is a pseudo selector engine supported by SelectorsHandler.
-     *
-     * More selector engines can be registered in the SelectorsHandler.
-     *
-     * @param string       $selector selector engine name
-     * @param string|array $locator  selector locator
-     *
-     * @return NodeElement[]
-     *
-     * @see NamedSelector for the locators supported by the named selectors
-     */
-    public function findAll($selector, $locator);
-
-    /**
-     * Returns element text (inside tag).
-     *
-     * @return string
-     */
-    public function getText();
-
-    /**
-     * Returns element inner html.
-     *
-     * @return string
-     */
-    public function getHtml();
-}
diff --git a/vendor/behat/mink/src/Element/NodeElement.php b/vendor/behat/mink/src/Element/NodeElement.php
deleted file mode 100644
index bbb8573..0000000
--- a/vendor/behat/mink/src/Element/NodeElement.php
+++ /dev/null
@@ -1,350 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Element;
-
-use Behat\Mink\Session;
-use Behat\Mink\Exception\ElementNotFoundException;
-
-/**
- * Page element node.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class NodeElement extends TraversableElement
-{
-    private $xpath;
-
-    /**
-     * Initializes node element.
-     *
-     * @param string  $xpath   element xpath
-     * @param Session $session session instance
-     */
-    public function __construct($xpath, Session $session)
-    {
-        $this->xpath = $xpath;
-
-        parent::__construct($session);
-    }
-
-    /**
-     * Returns XPath for handled element.
-     *
-     * @return string
-     */
-    public function getXpath()
-    {
-        return $this->xpath;
-    }
-
-    /**
-     * Returns parent element to the current one.
-     *
-     * @return NodeElement
-     */
-    public function getParent()
-    {
-        return $this->find('xpath', '..');
-    }
-
-    /**
-     * Returns current node tag name.
-     *
-     * The value is always returned in lowercase to allow an easy comparison.
-     *
-     * @return string
-     */
-    public function getTagName()
-    {
-        return strtolower($this->getDriver()->getTagName($this->getXpath()));
-    }
-
-    /**
-     * Returns the value of the form field or option element.
-     *
-     * For checkbox fields, the value is a boolean indicating whether the checkbox is checked.
-     * For radio buttons, the value is the value of the selected button in the radio group
-     *      or null if no button is selected.
-     * For single select boxes, the value is the value of the selected option.
-     * For multiple select boxes, the value is an array of selected option values.
-     * for file inputs, the return value is undefined given that browsers don't allow accessing
-     *      the value of file inputs for security reasons. Some drivers may allow accessing the
-     *      path of the file set in the field, but this is not required if it cannot be implemented.
-     * For textarea elements and all textual fields, the value is the content of the field.
-     * Form option elements, the value is the value of the option (the value attribute or the text
-     *      content if the attribute is not set).
-     *
-     * Calling this method on other elements than form fields or option elements is not allowed.
-     *
-     * @return string|bool|array
-     */
-    public function getValue()
-    {
-        return $this->getDriver()->getValue($this->getXpath());
-    }
-
-    /**
-     * Sets the value of the form field.
-     *
-     * Calling this method on other elements than form fields is not allowed.
-     *
-     * @param string|bool|array $value
-     *
-     * @see NodeElement::getValue for the format of the value for each type of field
-     */
-    public function setValue($value)
-    {
-        $this->getDriver()->setValue($this->getXpath(), $value);
-    }
-
-    /**
-     * Checks whether element has attribute with specified name.
-     *
-     * @param string $name
-     *
-     * @return Boolean
-     */
-    public function hasAttribute($name)
-    {
-        return null !== $this->getDriver()->getAttribute($this->getXpath(), $name);
-    }
-
-    /**
-     * Returns specified attribute value.
-     *
-     * @param string $name
-     *
-     * @return string|null
-     */
-    public function getAttribute($name)
-    {
-        return $this->getDriver()->getAttribute($this->getXpath(), $name);
-    }
-
-    /**
-     * Checks whether an element has a named CSS class.
-     *
-     * @param string $className Name of the class
-     *
-     * @return bool
-     */
-    public function hasClass($className)
-    {
-        if ($this->hasAttribute('class')) {
-            return in_array($className, preg_split('/\s+/', $this->getAttribute('class')));
-        }
-
-        return false;
-    }
-
-    /**
-     * Clicks current node.
-     */
-    public function click()
-    {
-        $this->getDriver()->click($this->getXpath());
-    }
-
-    /**
-     * Presses current button.
-     */
-    public function press()
-    {
-        $this->click();
-    }
-
-    /**
-     * Double-clicks current node.
-     */
-    public function doubleClick()
-    {
-        $this->getDriver()->doubleClick($this->getXpath());
-    }
-
-    /**
-     * Right-clicks current node.
-     */
-    public function rightClick()
-    {
-        $this->getDriver()->rightClick($this->getXpath());
-    }
-
-    /**
-     * Checks current node if it's a checkbox field.
-     */
-    public function check()
-    {
-        $this->getDriver()->check($this->getXpath());
-    }
-
-    /**
-     * Unchecks current node if it's a checkbox field.
-     */
-    public function uncheck()
-    {
-        $this->getDriver()->uncheck($this->getXpath());
-    }
-
-    /**
-     * Checks whether current node is checked if it's a checkbox or radio field.
-     *
-     * Calling this method on any other elements is not allowed.
-     *
-     * @return Boolean
-     */
-    public function isChecked()
-    {
-        return (Boolean) $this->getDriver()->isChecked($this->getXpath());
-    }
-
-    /**
-     * Selects specified option for select field or specified radio button in the group.
-     *
-     * If the current node is a select box, this selects the option found by its value or
-     * its text.
-     * If the current node is a radio button, this selects the radio button with the given
-     * value in the radio button group of the current node.
-     *
-     * Calling this method on any other elements is not allowed.
-     *
-     * @param string  $option
-     * @param Boolean $multiple whether the option should be added to the selection for multiple selects
-     *
-     * @throws ElementNotFoundException when the option is not found in the select box
-     */
-    public function selectOption($option, $multiple = false)
-    {
-        if ('select' !== $this->getTagName()) {
-            $this->getDriver()->selectOption($this->getXpath(), $option, $multiple);
-
-            return;
-        }
-
-        $opt = $this->find('named', array('option', $option));
-
-        if (null === $opt) {
-            throw new ElementNotFoundException($this->getDriver(), 'select option', 'value|text', $option);
-        }
-
-        $this->getDriver()->selectOption($this->getXpath(), $opt->getValue(), $multiple);
-    }
-
-    /**
-     * Checks whether current node is selected if it's a option field.
-     *
-     * Calling this method on any other elements is not allowed.
-     *
-     * @return Boolean
-     */
-    public function isSelected()
-    {
-        return (Boolean) $this->getDriver()->isSelected($this->getXpath());
-    }
-
-    /**
-     * Attach file to current node if it's a file input.
-     *
-     * Calling this method on any other elements than file input is not allowed.
-     *
-     * @param string $path path to file (local)
-     */
-    public function attachFile($path)
-    {
-        $this->getDriver()->attachFile($this->getXpath(), $path);
-    }
-
-    /**
-     * Checks whether current node is visible on page.
-     *
-     * @return Boolean
-     */
-    public function isVisible()
-    {
-        return (Boolean) $this->getDriver()->isVisible($this->getXpath());
-    }
-
-    /**
-     * Simulates a mouse over on the element.
-     */
-    public function mouseOver()
-    {
-        $this->getDriver()->mouseOver($this->getXpath());
-    }
-
-    /**
-     * Drags current node onto other node.
-     *
-     * @param ElementInterface $destination other node
-     */
-    public function dragTo(ElementInterface $destination)
-    {
-        $this->getDriver()->dragTo($this->getXpath(), $destination->getXpath());
-    }
-
-    /**
-     * Brings focus to element.
-     */
-    public function focus()
-    {
-        $this->getDriver()->focus($this->getXpath());
-    }
-
-    /**
-     * Removes focus from element.
-     */
-    public function blur()
-    {
-        $this->getDriver()->blur($this->getXpath());
-    }
-
-    /**
-     * Presses specific keyboard key.
-     *
-     * @param string|int $char     could be either char ('b') or char-code (98)
-     * @param string     $modifier keyboard modifier (could be 'ctrl', 'alt', 'shift' or 'meta')
-     */
-    public function keyPress($char, $modifier = null)
-    {
-        $this->getDriver()->keyPress($this->getXpath(), $char, $modifier);
-    }
-
-    /**
-     * Pressed down specific keyboard key.
-     *
-     * @param string|int $char     could be either char ('b') or char-code (98)
-     * @param string     $modifier keyboard modifier (could be 'ctrl', 'alt', 'shift' or 'meta')
-     */
-    public function keyDown($char, $modifier = null)
-    {
-        $this->getDriver()->keyDown($this->getXpath(), $char, $modifier);
-    }
-
-    /**
-     * Pressed up specific keyboard key.
-     *
-     * @param string|int $char     could be either char ('b') or char-code (98)
-     * @param string     $modifier keyboard modifier (could be 'ctrl', 'alt', 'shift' or 'meta')
-     */
-    public function keyUp($char, $modifier = null)
-    {
-        $this->getDriver()->keyUp($this->getXpath(), $char, $modifier);
-    }
-
-    /**
-     * Submits the form.
-     *
-     * Calling this method on anything else than form elements is not allowed.
-     */
-    public function submit()
-    {
-        $this->getDriver()->submitForm($this->getXpath());
-    }
-}
diff --git a/vendor/behat/mink/src/Element/TraversableElement.php b/vendor/behat/mink/src/Element/TraversableElement.php
deleted file mode 100644
index a5e05b9..0000000
--- a/vendor/behat/mink/src/Element/TraversableElement.php
+++ /dev/null
@@ -1,297 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Element;
-
-use Behat\Mink\Exception\ElementNotFoundException;
-
-/**
- * Traversable element.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-abstract class TraversableElement extends Element
-{
-    /**
-     * Finds element by its id.
-     *
-     * @param string $id element id
-     *
-     * @return NodeElement|null
-     */
-    public function findById($id)
-    {
-        return $this->find('named', array('id', $id));
-    }
-
-    /**
-     * Checks whether element has a link with specified locator.
-     *
-     * @param string $locator link id, title, text or image alt
-     *
-     * @return Boolean
-     */
-    public function hasLink($locator)
-    {
-        return null !== $this->findLink($locator);
-    }
-
-    /**
-     * Finds link with specified locator.
-     *
-     * @param string $locator link id, title, text or image alt
-     *
-     * @return NodeElement|null
-     */
-    public function findLink($locator)
-    {
-        return $this->find('named', array('link', $locator));
-    }
-
-    /**
-     * Clicks link with specified locator.
-     *
-     * @param string $locator link id, title, text or image alt
-     *
-     * @throws ElementNotFoundException
-     */
-    public function clickLink($locator)
-    {
-        $link = $this->findLink($locator);
-
-        if (null === $link) {
-            throw new ElementNotFoundException($this->getDriver(), 'link', 'id|title|alt|text', $locator);
-        }
-
-        $link->click();
-    }
-
-    /**
-     * Checks whether element has a button (input[type=submit|image|button|reset], button) with specified locator.
-     *
-     * @param string $locator button id, value or alt
-     *
-     * @return Boolean
-     */
-    public function hasButton($locator)
-    {
-        return null !== $this->findButton($locator);
-    }
-
-    /**
-     * Finds button (input[type=submit|image|button|reset], button) with specified locator.
-     *
-     * @param string $locator button id, value or alt
-     *
-     * @return NodeElement|null
-     */
-    public function findButton($locator)
-    {
-        return $this->find('named', array('button', $locator));
-    }
-
-    /**
-     * Presses button (input[type=submit|image|button|reset], button) with specified locator.
-     *
-     * @param string $locator button id, value or alt
-     *
-     * @throws ElementNotFoundException
-     */
-    public function pressButton($locator)
-    {
-        $button = $this->findButton($locator);
-
-        if (null === $button) {
-            throw new ElementNotFoundException($this->getDriver(), 'button', 'id|name|title|alt|value', $locator);
-        }
-
-        $button->press();
-    }
-
-    /**
-     * Checks whether element has a field (input, textarea, select) with specified locator.
-     *
-     * @param string $locator input id, name or label
-     *
-     * @return Boolean
-     */
-    public function hasField($locator)
-    {
-        return null !== $this->findField($locator);
-    }
-
-    /**
-     * Finds field (input, textarea, select) with specified locator.
-     *
-     * @param string $locator input id, name or label
-     *
-     * @return NodeElement|null
-     */
-    public function findField($locator)
-    {
-        return $this->find('named', array('field', $locator));
-    }
-
-    /**
-     * Fills in field (input, textarea, select) with specified locator.
-     *
-     * @param string $locator input id, name or label
-     * @param string $value   value
-     *
-     * @throws ElementNotFoundException
-     *
-     * @see NodeElement::setValue
-     */
-    public function fillField($locator, $value)
-    {
-        $field = $this->findField($locator);
-
-        if (null === $field) {
-            throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value|placeholder', $locator);
-        }
-
-        $field->setValue($value);
-    }
-
-    /**
-     * Checks whether element has a checkbox with specified locator, which is checked.
-     *
-     * @param string $locator input id, name or label
-     *
-     * @return Boolean
-     *
-     * @see NodeElement::isChecked
-     */
-    public function hasCheckedField($locator)
-    {
-        $field = $this->findField($locator);
-
-        return null !== $field && $field->isChecked();
-    }
-
-    /**
-     * Checks whether element has a checkbox with specified locator, which is unchecked.
-     *
-     * @param string $locator input id, name or label
-     *
-     * @return Boolean
-     *
-     * @see NodeElement::isChecked
-     */
-    public function hasUncheckedField($locator)
-    {
-        $field = $this->findField($locator);
-
-        return null !== $field && !$field->isChecked();
-    }
-
-    /**
-     * Checks checkbox with specified locator.
-     *
-     * @param string $locator input id, name or label
-     *
-     * @throws ElementNotFoundException
-     */
-    public function checkField($locator)
-    {
-        $field = $this->findField($locator);
-
-        if (null === $field) {
-            throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value', $locator);
-        }
-
-        $field->check();
-    }
-
-    /**
-     * Unchecks checkbox with specified locator.
-     *
-     * @param string $locator input id, name or label
-     *
-     * @throws ElementNotFoundException
-     */
-    public function uncheckField($locator)
-    {
-        $field = $this->findField($locator);
-
-        if (null === $field) {
-            throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value', $locator);
-        }
-
-        $field->uncheck();
-    }
-
-    /**
-     * Checks whether element has a select field with specified locator.
-     *
-     * @param string $locator select id, name or label
-     *
-     * @return Boolean
-     */
-    public function hasSelect($locator)
-    {
-        return $this->has('named', array('select', $locator));
-    }
-
-    /**
-     * Selects option from select field with specified locator.
-     *
-     * @param string  $locator  input id, name or label
-     * @param string  $value    option value
-     * @param Boolean $multiple select multiple options
-     *
-     * @throws ElementNotFoundException
-     *
-     * @see NodeElement::selectOption
-     */
-    public function selectFieldOption($locator, $value, $multiple = false)
-    {
-        $field = $this->findField($locator);
-
-        if (null === $field) {
-            throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value', $locator);
-        }
-
-        $field->selectOption($value, $multiple);
-    }
-
-    /**
-     * Checks whether element has a table with specified locator.
-     *
-     * @param string $locator table id or caption
-     *
-     * @return Boolean
-     */
-    public function hasTable($locator)
-    {
-        return $this->has('named', array('table', $locator));
-    }
-
-    /**
-     * Attach file to file field with specified locator.
-     *
-     * @param string $locator input id, name or label
-     * @param string $path    path to file
-     *
-     * @throws ElementNotFoundException
-     *
-     * @see NodeElement::attachFile
-     */
-    public function attachFileToField($locator, $path)
-    {
-        $field = $this->findField($locator);
-
-        if (null === $field) {
-            throw new ElementNotFoundException($this->getDriver(), 'form field', 'id|name|label|value', $locator);
-        }
-
-        $field->attachFile($path);
-    }
-}
diff --git a/vendor/behat/mink/src/Exception/DriverException.php b/vendor/behat/mink/src/Exception/DriverException.php
deleted file mode 100644
index 840f8bd..0000000
--- a/vendor/behat/mink/src/Exception/DriverException.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Exception;
-
-/**
- * Exception thrown by drivers when they fail to perform an action.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class DriverException extends Exception
-{
-    /**
-     * Initializes exception.
-     *
-     * @param string          $message
-     * @param int             $code
-     * @param \Exception|null $previous
-     */
-    public function __construct($message, $code = 0, \Exception $previous = null)
-    {
-        parent::__construct($message, $code, $previous);
-    }
-}
diff --git a/vendor/behat/mink/src/Exception/ElementException.php b/vendor/behat/mink/src/Exception/ElementException.php
deleted file mode 100644
index 16ebdc9..0000000
--- a/vendor/behat/mink/src/Exception/ElementException.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Exception;
-
-@trigger_error('The class '.__NAMESPACE__.'\ElementException is deprecated as of Mink 1.6 and will be removed in 2.0', E_USER_DEPRECATED);
-
-use Behat\Mink\Element\Element;
-
-/**
- * A standard way for elements to re-throw exceptions.
- *
- * @deprecated This exception class is not used anymore in Mink 1.6 and will be removed in 2.0
- *
- * @author Chris Worfolk <xmeltrut@gmail.com>
- */
-class ElementException extends Exception
-{
-    private $element;
-
-    /**
-     * Initialises exception.
-     *
-     * @param Element    $element   optional message
-     * @param \Exception $exception exception
-     */
-    public function __construct(Element $element, \Exception $exception)
-    {
-        $this->element = $element;
-
-        parent::__construct(sprintf("Exception thrown by %s\n%s", $element->getXpath(), $exception->getMessage()));
-    }
-
-    /**
-     * Override default toString so we don't send a full backtrace in verbose mode.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return $this->getMessage();
-    }
-
-    /**
-     * Get the element that caused the exception.
-     *
-     * @return Element
-     */
-    public function getElement()
-    {
-        return $this->element;
-    }
-}
diff --git a/vendor/behat/mink/src/Exception/ElementHtmlException.php b/vendor/behat/mink/src/Exception/ElementHtmlException.php
deleted file mode 100644
index fb2fed6..0000000
--- a/vendor/behat/mink/src/Exception/ElementHtmlException.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Exception;
-
-use Behat\Mink\Driver\DriverInterface;
-use Behat\Mink\Element\Element;
-use Behat\Mink\Session;
-
-/**
- * Exception thrown when an expectation on the HTML of an element fails.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ElementHtmlException extends ExpectationException
-{
-    /**
-     * Element instance.
-     *
-     * @var Element
-     */
-    protected $element;
-
-    /**
-     * Initializes exception.
-     *
-     * @param string                  $message   optional message
-     * @param DriverInterface|Session $driver    driver instance
-     * @param Element                 $element   element
-     * @param \Exception              $exception expectation exception
-     */
-    public function __construct($message, $driver, Element $element, \Exception $exception = null)
-    {
-        $this->element = $element;
-
-        parent::__construct($message, $driver, $exception);
-    }
-
-    protected function getContext()
-    {
-        return $this->element->getOuterHtml();
-    }
-}
diff --git a/vendor/behat/mink/src/Exception/ElementNotFoundException.php b/vendor/behat/mink/src/Exception/ElementNotFoundException.php
deleted file mode 100644
index 6716ab3..0000000
--- a/vendor/behat/mink/src/Exception/ElementNotFoundException.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Exception;
-
-use Behat\Mink\Driver\DriverInterface;
-use Behat\Mink\Session;
-
-/**
- * Exception thrown when an expected element is not found.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ElementNotFoundException extends ExpectationException
-{
-    /**
-     * Initializes exception.
-     *
-     * @param DriverInterface|Session $driver   driver instance
-     * @param string                  $type     element type
-     * @param string                  $selector element selector type
-     * @param string                  $locator  element locator
-     */
-    public function __construct($driver, $type = null, $selector = null, $locator = null)
-    {
-        $message = '';
-
-        if (null !== $type) {
-            $message .= ucfirst($type);
-        } else {
-            $message .= 'Tag';
-        }
-
-        if (null !== $locator) {
-            if (null === $selector || in_array($selector, array('css', 'xpath'))) {
-                $selector = 'matching '.($selector ?: 'locator');
-            } else {
-                $selector = 'with '.$selector;
-            }
-            $message .= ' '.$selector.' "'.$locator.'"';
-        }
-
-        $message .= ' not found.';
-
-        parent::__construct($message, $driver);
-    }
-}
diff --git a/vendor/behat/mink/src/Exception/ElementTextException.php b/vendor/behat/mink/src/Exception/ElementTextException.php
deleted file mode 100644
index 5efff0f..0000000
--- a/vendor/behat/mink/src/Exception/ElementTextException.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Exception;
-
-/**
- * Exception thrown when an expectation on the text of an element fails.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ElementTextException extends ElementHtmlException
-{
-    protected function getContext()
-    {
-        return $this->element->getText();
-    }
-}
diff --git a/vendor/behat/mink/src/Exception/Exception.php b/vendor/behat/mink/src/Exception/Exception.php
deleted file mode 100644
index 4662a5b..0000000
--- a/vendor/behat/mink/src/Exception/Exception.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Exception;
-
-/**
- * Mink base exception class.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-abstract class Exception extends \Exception
-{
-}
diff --git a/vendor/behat/mink/src/Exception/ExpectationException.php b/vendor/behat/mink/src/Exception/ExpectationException.php
deleted file mode 100644
index 35f7150..0000000
--- a/vendor/behat/mink/src/Exception/ExpectationException.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Exception;
-
-use Behat\Mink\Driver\DriverInterface;
-use Behat\Mink\Session;
-
-/**
- * Exception thrown for failed expectations.
- *
- * Some specialized child classes are available to customize the error rendering.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ExpectationException extends Exception
-{
-    private $session;
-    private $driver;
-
-    /**
-     * Initializes exception.
-     *
-     * @param string                  $message   optional message
-     * @param DriverInterface|Session $driver    driver instance (or session for BC)
-     * @param \Exception|null         $exception expectation exception
-     */
-    public function __construct($message, $driver, \Exception $exception = null)
-    {
-        if ($driver instanceof Session) {
-            @trigger_error('Passing a Session object to the ExpectationException constructor is deprecated as of Mink 1.7. Pass the driver instead.', E_USER_DEPRECATED);
-
-            $this->session = $driver;
-            $this->driver = $driver->getDriver();
-        } elseif (!$driver instanceof DriverInterface) {
-            // Trigger an exception as we cannot typehint a disjunction
-            throw new \InvalidArgumentException('The ExpectationException constructor expects a DriverInterface or a Session.');
-        } else {
-            $this->driver = $driver;
-        }
-
-        if (!$message && null !== $exception) {
-            $message = $exception->getMessage();
-        }
-
-        parent::__construct($message, 0, $exception);
-    }
-
-    /**
-     * Returns exception message with additional context info.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        try {
-            $pageText = $this->pipeString($this->trimString($this->getContext())."\n");
-            $string = sprintf("%s\n\n%s%s", $this->getMessage(), $this->getResponseInfo(), $pageText);
-        } catch (\Exception $e) {
-            return $this->getMessage();
-        }
-
-        return $string;
-    }
-
-    /**
-     * Gets the context rendered for this exception.
-     *
-     * @return string
-     */
-    protected function getContext()
-    {
-        return $this->trimBody($this->driver->getContent());
-    }
-
-    /**
-     * Returns driver.
-     *
-     * @return DriverInterface
-     */
-    protected function getDriver()
-    {
-        return $this->driver;
-    }
-
-    /**
-     * Returns exception session.
-     *
-     * @return Session
-     *
-     * @deprecated since 1.7, to be removed in 2.0. Use getDriver and the driver API instead.
-     */
-    protected function getSession()
-    {
-        if (null === $this->session) {
-            throw new \LogicException(sprintf('The deprecated method %s cannot be used when passing a driver in the constructor', __METHOD__));
-        }
-
-        @trigger_error(sprintf('The method %s is deprecated as of Mink 1.7 and will be removed in 2.0. Use getDriver and the driver API instead.'));
-
-        return $this->session;
-    }
-
-    /**
-     * Prepends every line in a string with pipe (|).
-     *
-     * @param string $string
-     *
-     * @return string
-     */
-    protected function pipeString($string)
-    {
-        return '|  '.strtr($string, array("\n" => "\n|  "));
-    }
-
-    /**
-     * Removes response header/footer, letting only <body /> content.
-     *
-     * @param string $string response content
-     *
-     * @return string
-     */
-    protected function trimBody($string)
-    {
-        $string = preg_replace(array('/^.*<body>/s', '/<\/body>.*$/s'), array('<body>', '</body>'), $string);
-
-        return $string;
-    }
-
-    /**
-     * Trims string to specified number of chars.
-     *
-     * @param string $string response content
-     * @param int    $count  trim count
-     *
-     * @return string
-     */
-    protected function trimString($string, $count = 1000)
-    {
-        $string = trim($string);
-
-        if ($count < mb_strlen($string)) {
-            return mb_substr($string, 0, $count - 3).'...';
-        }
-
-        return $string;
-    }
-
-    /**
-     * Returns response information string.
-     *
-     * @return string
-     */
-    protected function getResponseInfo()
-    {
-        $driver = basename(str_replace('\\', '/', get_class($this->driver)));
-
-        $info = '+--[ ';
-        try {
-            $info .= 'HTTP/1.1 '.$this->driver->getStatusCode().' | ';
-        } catch (UnsupportedDriverActionException $e) {
-            // Ignore the status code when not supported
-        }
-        $info .= $this->driver->getCurrentUrl().' | '.$driver." ]\n|\n";
-
-        return $info;
-    }
-}
diff --git a/vendor/behat/mink/src/Exception/ResponseTextException.php b/vendor/behat/mink/src/Exception/ResponseTextException.php
deleted file mode 100644
index 515c569..0000000
--- a/vendor/behat/mink/src/Exception/ResponseTextException.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Exception;
-
-/**
- * Exception thrown when an expectation on the response text fails.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ResponseTextException extends ExpectationException
-{
-    protected function getContext()
-    {
-        return $this->getDriver()->getText('//html');
-    }
-}
diff --git a/vendor/behat/mink/src/Exception/UnsupportedDriverActionException.php b/vendor/behat/mink/src/Exception/UnsupportedDriverActionException.php
deleted file mode 100644
index d02969b..0000000
--- a/vendor/behat/mink/src/Exception/UnsupportedDriverActionException.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Exception;
-
-use Behat\Mink\Driver\DriverInterface;
-
-/**
- * Exception thrown by drivers when they don't support the requested action.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class UnsupportedDriverActionException extends DriverException
-{
-    /**
-     * Initializes exception.
-     *
-     * @param string          $template what is unsupported?
-     * @param DriverInterface $driver   driver instance
-     * @param \Exception      $previous previous exception
-     */
-    public function __construct($template, DriverInterface $driver, \Exception $previous = null)
-    {
-        $message = sprintf($template, get_class($driver));
-
-        parent::__construct($message, 0, $previous);
-    }
-}
diff --git a/vendor/behat/mink/src/Mink.php b/vendor/behat/mink/src/Mink.php
deleted file mode 100644
index 333bfbd..0000000
--- a/vendor/behat/mink/src/Mink.php
+++ /dev/null
@@ -1,216 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink;
-
-/**
- * Mink sessions manager.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class Mink
-{
-    private $defaultSessionName;
-
-    /**
-     * Sessions.
-     *
-     * @var Session[]
-     */
-    private $sessions = array();
-
-    /**
-     * Initializes manager.
-     *
-     * @param Session[] $sessions
-     */
-    public function __construct(array $sessions = array())
-    {
-        foreach ($sessions as $name => $session) {
-            $this->registerSession($name, $session);
-        }
-    }
-
-    /**
-     * Stops all started sessions.
-     */
-    public function __destruct()
-    {
-        $this->stopSessions();
-    }
-
-    /**
-     * Registers new session.
-     *
-     * @param string  $name
-     * @param Session $session
-     */
-    public function registerSession($name, Session $session)
-    {
-        $name = strtolower($name);
-
-        $this->sessions[$name] = $session;
-    }
-
-    /**
-     * Checks whether session with specified name is registered.
-     *
-     * @param string $name
-     *
-     * @return Boolean
-     */
-    public function hasSession($name)
-    {
-        return isset($this->sessions[strtolower($name)]);
-    }
-
-    /**
-     * Sets default session name to use.
-     *
-     * @param string $name name of the registered session
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setDefaultSessionName($name)
-    {
-        $name = strtolower($name);
-
-        if (!isset($this->sessions[$name])) {
-            throw new \InvalidArgumentException(sprintf('Session "%s" is not registered.', $name));
-        }
-
-        $this->defaultSessionName = $name;
-    }
-
-    /**
-     * Returns default session name or null if none.
-     *
-     * @return null|string
-     */
-    public function getDefaultSessionName()
-    {
-        return $this->defaultSessionName;
-    }
-
-    /**
-     * Returns registered session by it's name or active one and automatically starts it if required.
-     *
-     * @param string $name session name
-     *
-     * @return Session
-     *
-     * @throws \InvalidArgumentException If the named session is not registered
-     */
-    public function getSession($name = null)
-    {
-        $session = $this->locateSession($name);
-
-        // start session if needed
-        if (!$session->isStarted()) {
-            $session->start();
-        }
-
-        return $session;
-    }
-
-    /**
-     * Checks whether a named session (or the default session) has already been started.
-     *
-     * @param string $name session name - if null then the default session will be checked
-     *
-     * @return bool whether the session has been started
-     *
-     * @throws \InvalidArgumentException If the named session is not registered
-     */
-    public function isSessionStarted($name = null)
-    {
-        $session = $this->locateSession($name);
-
-        return $session->isStarted();
-    }
-
-    /**
-     * Returns session asserter.
-     *
-     * @param Session|string $session session object or name
-     *
-     * @return WebAssert
-     */
-    public function assertSession($session = null)
-    {
-        if (!($session instanceof Session)) {
-            $session = $this->getSession($session);
-        }
-
-        return new WebAssert($session);
-    }
-
-    /**
-     * Resets all started sessions.
-     */
-    public function resetSessions()
-    {
-        foreach ($this->sessions as $session) {
-            if ($session->isStarted()) {
-                $session->reset();
-            }
-        }
-    }
-
-    /**
-     * Restarts all started sessions.
-     */
-    public function restartSessions()
-    {
-        foreach ($this->sessions as $session) {
-            if ($session->isStarted()) {
-                $session->restart();
-            }
-        }
-    }
-
-    /**
-     * Stops all started sessions.
-     */
-    public function stopSessions()
-    {
-        foreach ($this->sessions as $session) {
-            if ($session->isStarted()) {
-                $session->stop();
-            }
-        }
-    }
-
-    /**
-     * Returns the named or default session without starting it.
-     *
-     * @param string $name session name
-     *
-     * @return Session
-     *
-     * @throws \InvalidArgumentException If the named session is not registered
-     */
-    protected function locateSession($name = null)
-    {
-        $name = strtolower($name) ?: $this->defaultSessionName;
-
-        if (null === $name) {
-            throw new \InvalidArgumentException('Specify session name to get');
-        }
-
-        if (!isset($this->sessions[$name])) {
-            throw new \InvalidArgumentException(sprintf('Session "%s" is not registered.', $name));
-        }
-
-        $session = $this->sessions[$name];
-
-        return $session;
-    }
-}
diff --git a/vendor/behat/mink/src/Selector/CssSelector.php b/vendor/behat/mink/src/Selector/CssSelector.php
deleted file mode 100644
index 3636586..0000000
--- a/vendor/behat/mink/src/Selector/CssSelector.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Selector;
-
-use Symfony\Component\CssSelector\CssSelector as CSS;
-
-/**
- * CSS selector engine. Transforms CSS to XPath.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class CssSelector implements SelectorInterface
-{
-    /**
-     * Translates CSS into XPath.
-     *
-     * @param string|array $locator current selector locator
-     *
-     * @return string
-     */
-    public function translateToXPath($locator)
-    {
-        if (!is_string($locator)) {
-            throw new \InvalidArgumentException('The CssSelector expects to get a string as locator');
-        }
-
-        return CSS::toXPath($locator);
-    }
-}
diff --git a/vendor/behat/mink/src/Selector/ExactNamedSelector.php b/vendor/behat/mink/src/Selector/ExactNamedSelector.php
deleted file mode 100644
index 03315a9..0000000
--- a/vendor/behat/mink/src/Selector/ExactNamedSelector.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Selector;
-
-/**
- * Exact match selector engine. Like the Named selector engine but ignores partial matches.
- */
-class ExactNamedSelector extends NamedSelector
-{
-    public function __construct()
-    {
-        $this->registerReplacement('%tagTextMatch%', 'normalize-space(string(.)) = %locator%');
-        $this->registerReplacement('%valueMatch%', './@value = %locator%');
-        $this->registerReplacement('%titleMatch%', './@title = %locator%');
-        $this->registerReplacement('%altMatch%', './@alt = %locator%');
-        $this->registerReplacement('%relMatch%', './@rel = %locator%');
-        $this->registerReplacement('%labelAttributeMatch%', './@label = %locator%');
-
-        parent::__construct();
-    }
-}
diff --git a/vendor/behat/mink/src/Selector/NamedSelector.php b/vendor/behat/mink/src/Selector/NamedSelector.php
deleted file mode 100644
index d1936cc..0000000
--- a/vendor/behat/mink/src/Selector/NamedSelector.php
+++ /dev/null
@@ -1,263 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Selector;
-
-use Behat\Mink\Selector\Xpath\Escaper;
-
-/**
- * Named selectors engine. Uses registered XPath selectors to create new expressions.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class NamedSelector implements SelectorInterface
-{
-    private $replacements = array(
-        // simple replacements
-        '%lowercaseType%' => "translate(./@type, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')",
-        '%lowercaseRole%' => "translate(./@role, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')",
-        '%tagTextMatch%' => 'contains(normalize-space(string(.)), %locator%)',
-        '%labelTextMatch%' => './@id = //label[%tagTextMatch%]/@for',
-        '%idMatch%' => './@id = %locator%',
-        '%valueMatch%' => 'contains(./@value, %locator%)',
-        '%idOrValueMatch%' => '(%idMatch% or %valueMatch%)',
-        '%idOrNameMatch%' => '(%idMatch% or ./@name = %locator%)',
-        '%placeholderMatch%' => './@placeholder = %locator%',
-        '%titleMatch%' => 'contains(./@title, %locator%)',
-        '%altMatch%' => 'contains(./@alt, %locator%)',
-        '%relMatch%' => 'contains(./@rel, %locator%)',
-        '%labelAttributeMatch%' => 'contains(./@label, %locator%)',
-
-        // complex replacements
-        '%inputTypeWithoutPlaceholderFilter%' => "%lowercaseType% = 'radio' or %lowercaseType% = 'checkbox' or %lowercaseType% = 'file'",
-        '%fieldFilterWithPlaceholder%' => 'self::input[not(%inputTypeWithoutPlaceholderFilter%)] | self::textarea',
-        '%fieldMatchWithPlaceholder%' => '(%idOrNameMatch% or %labelTextMatch% or %placeholderMatch%)',
-        '%fieldMatchWithoutPlaceholder%' => '(%idOrNameMatch% or %labelTextMatch%)',
-        '%fieldFilterWithoutPlaceholder%' => 'self::input[%inputTypeWithoutPlaceholderFilter%] | self::select',
-        '%buttonTypeFilter%' => "%lowercaseType% = 'submit' or %lowercaseType% = 'image' or %lowercaseType% = 'button' or %lowercaseType% = 'reset'",
-        '%notFieldTypeFilter%' => "not(%buttonTypeFilter% or %lowercaseType% = 'hidden')",
-        '%buttonMatch%' => '%idOrNameMatch% or %valueMatch% or %titleMatch%',
-        '%linkMatch%' => '(%idMatch% or %tagTextMatch% or %titleMatch% or %relMatch%)',
-        '%imgAltMatch%' => './/img[%altMatch%]',
-    );
-
-    private $selectors = array(
-        'fieldset' => <<<XPATH
-.//fieldset
-[(%idMatch% or .//legend[%tagTextMatch%])]
-XPATH
-
-        ,'field' => <<<XPATH
-.//*
-[%fieldFilterWithPlaceholder%][%notFieldTypeFilter%][%fieldMatchWithPlaceholder%]
-|
-.//label[%tagTextMatch%]//.//*[%fieldFilterWithPlaceholder%][%notFieldTypeFilter%]
-|
-.//*
-[%fieldFilterWithoutPlaceholder%][%notFieldTypeFilter%][%fieldMatchWithoutPlaceholder%]
-|
-.//label[%tagTextMatch%]//.//*[%fieldFilterWithoutPlaceholder%][%notFieldTypeFilter%]
-XPATH
-
-        ,'link' => <<<XPATH
-.//a
-[./@href][(%linkMatch% or %imgAltMatch%)]
-|
-.//*
-[%lowercaseRole% = 'link'][(%idOrValueMatch% or %titleMatch% or %tagTextMatch%)]
-XPATH
-
-        ,'button' => <<<XPATH
-.//input
-[%buttonTypeFilter%][(%buttonMatch%)]
-|
-.//input
-[%lowercaseType% = 'image'][%altMatch%]
-|
-.//button
-[(%buttonMatch% or %tagTextMatch%)]
-|
-.//*
-[%lowercaseRole% = 'button'][(%buttonMatch% or %tagTextMatch%)]
-XPATH
-
-        ,'link_or_button' => <<<XPATH
-.//a
-[./@href][(%linkMatch% or %imgAltMatch%)]
-|
-.//input
-[%buttonTypeFilter%][(%idOrValueMatch% or %titleMatch%)]
-|
-.//input
-[%lowercaseType% = 'image'][%altMatch%]
-|
-.//button
-[(%idOrValueMatch% or %titleMatch% or %tagTextMatch%)]
-|
-.//*
-[(%lowercaseRole% = 'button' or %lowercaseRole% = 'link')][(%idOrValueMatch% or %titleMatch% or %tagTextMatch%)]
-XPATH
-
-        ,'content' => <<<XPATH
-./descendant-or-self::*
-[%tagTextMatch%]
-XPATH
-
-        ,'select' => <<<XPATH
-.//select
-[%fieldMatchWithoutPlaceholder%]
-|
-.//label[%tagTextMatch%]//.//select
-XPATH
-
-        ,'checkbox' => <<<XPATH
-.//input
-[%lowercaseType% = 'checkbox'][%fieldMatchWithoutPlaceholder%]
-|
-.//label[%tagTextMatch%]//.//input[%lowercaseType% = 'checkbox']
-XPATH
-
-        ,'radio' => <<<XPATH
-.//input
-[%lowercaseType% = 'radio'][%fieldMatchWithoutPlaceholder%]
-|
-.//label[%tagTextMatch%]//.//input[%lowercaseType% = 'radio']
-XPATH
-
-        ,'file' => <<<XPATH
-.//input
-[%lowercaseType% = 'file'][%fieldMatchWithoutPlaceholder%]
-|
-.//label[%tagTextMatch%]//.//input[%lowercaseType% = 'file']
-XPATH
-
-        ,'optgroup' => <<<XPATH
-.//optgroup
-[%labelAttributeMatch%]
-XPATH
-
-        ,'option' => <<<XPATH
-.//option
-[(./@value = %locator% or %tagTextMatch%)]
-XPATH
-
-        ,'table' => <<<XPATH
-.//table
-[(%idMatch% or .//caption[%tagTextMatch%])]
-XPATH
-        ,'id' => <<<XPATH
-.//*[%idMatch%]
-XPATH
-    ,'id_or_name' => <<<XPATH
-.//*[%idOrNameMatch%]
-XPATH
-    );
-    private $xpathEscaper;
-
-    /**
-     * Creates selector instance.
-     */
-    public function __construct()
-    {
-        $this->xpathEscaper = new Escaper();
-
-        foreach ($this->replacements as $from => $to) {
-            $this->replacements[$from] = strtr($to, $this->replacements);
-        }
-
-        foreach ($this->selectors as $alias => $selector) {
-            $this->selectors[$alias] = strtr($selector, $this->replacements);
-        }
-    }
-
-    /**
-     * Registers new XPath selector with specified name.
-     *
-     * @param string $name  name for selector
-     * @param string $xpath xpath expression
-     */
-    public function registerNamedXpath($name, $xpath)
-    {
-        $this->selectors[$name] = $xpath;
-    }
-
-    /**
-     * Translates provided locator into XPath.
-     *
-     * @param string|array $locator selector name or array of (selector_name, locator)
-     *
-     * @return string
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function translateToXPath($locator)
-    {
-        if (2 < count($locator)) {
-            throw new \InvalidArgumentException('NamedSelector expects array(name, locator) as argument');
-        }
-
-        if (2 == count($locator)) {
-            $selector = $locator[0];
-            $locator = $locator[1];
-        } else {
-            $selector = (string) $locator;
-            $locator = null;
-        }
-
-        if (!isset($this->selectors[$selector])) {
-            throw new \InvalidArgumentException(sprintf(
-                'Unknown named selector provided: "%s". Expected one of (%s)',
-                $selector,
-                implode(', ', array_keys($this->selectors))
-            ));
-        }
-
-        $xpath = $this->selectors[$selector];
-
-        if (null !== $locator) {
-            $xpath = strtr($xpath, array('%locator%' => $this->escapeLocator($locator)));
-        }
-
-        return $xpath;
-    }
-
-    /**
-     * Registers a replacement in the list of replacements.
-     *
-     * This method must be called in the constructor before calling the parent constructor.
-     *
-     * @param string $from
-     * @param string $to
-     */
-    protected function registerReplacement($from, $to)
-    {
-        $this->replacements[$from] = $to;
-    }
-
-    private function escapeLocator($locator)
-    {
-        // If the locator looks like an escaped one, don't escape it again for BC reasons.
-        if (
-            preg_match('/^\'[^\']*+\'$/', $locator)
-            || (false !== strpos($locator, '\'') && preg_match('/^"[^"]*+"$/', $locator))
-            || ((8 < $length = strlen($locator)) && 'concat(' === substr($locator, 0, 7) && ')' === $locator[$length - 1])
-        ) {
-            @trigger_error(
-                'Passing an escaped locator to the named selector is deprecated as of 1.7 and will be removed in 2.0.'
-                .' Pass the raw value instead.',
-                E_USER_DEPRECATED
-            );
-
-            return $locator;
-        }
-
-        return $this->xpathEscaper->escapeLiteral($locator);
-    }
-}
diff --git a/vendor/behat/mink/src/Selector/PartialNamedSelector.php b/vendor/behat/mink/src/Selector/PartialNamedSelector.php
deleted file mode 100644
index b864a22..0000000
--- a/vendor/behat/mink/src/Selector/PartialNamedSelector.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Selector;
-
-/**
- * Named selectors engine. Uses registered XPath selectors to create new expressions.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class PartialNamedSelector extends NamedSelector
-{
-    public function __construct()
-    {
-        $this->registerReplacement('%tagTextMatch%', 'contains(normalize-space(string(.)), %locator%)');
-        $this->registerReplacement('%valueMatch%', 'contains(./@value, %locator%)');
-        $this->registerReplacement('%titleMatch%', 'contains(./@title, %locator%)');
-        $this->registerReplacement('%altMatch%', 'contains(./@alt, %locator%)');
-        $this->registerReplacement('%relMatch%', 'contains(./@rel, %locator%)');
-        $this->registerReplacement('%labelAttributeMatch%', 'contains(./@label, %locator%)');
-
-        parent::__construct();
-    }
-}
diff --git a/vendor/behat/mink/src/Selector/SelectorInterface.php b/vendor/behat/mink/src/Selector/SelectorInterface.php
deleted file mode 100644
index e4f5f17..0000000
--- a/vendor/behat/mink/src/Selector/SelectorInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Selector;
-
-/**
- * Mink selector engine interface.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface SelectorInterface
-{
-    /**
-     * Translates provided locator into XPath.
-     *
-     * @param string|array $locator current selector locator
-     *
-     * @return string
-     */
-    public function translateToXPath($locator);
-}
diff --git a/vendor/behat/mink/src/Selector/SelectorsHandler.php b/vendor/behat/mink/src/Selector/SelectorsHandler.php
deleted file mode 100644
index 09b947c..0000000
--- a/vendor/behat/mink/src/Selector/SelectorsHandler.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Selector;
-
-use Behat\Mink\Selector\Xpath\Escaper;
-
-/**
- * Selectors handler.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class SelectorsHandler
-{
-    private $selectors;
-    private $escaper;
-
-    /**
-     * Initializes selectors handler.
-     *
-     * @param SelectorInterface[] $selectors default selectors to register
-     */
-    public function __construct(array $selectors = array())
-    {
-        $this->escaper = new Escaper();
-
-        $this->registerSelector('named_partial', new PartialNamedSelector());
-        $this->registerSelector('named_exact', new ExactNamedSelector());
-        $this->registerSelector('css', new CssSelector());
-
-        foreach ($selectors as $name => $selector) {
-            $this->registerSelector($name, $selector);
-        }
-    }
-
-    /**
-     * Registers new selector engine with specified name.
-     *
-     * @param string            $name     selector engine name
-     * @param SelectorInterface $selector selector engine instance
-     */
-    public function registerSelector($name, SelectorInterface $selector)
-    {
-        $this->selectors[$name] = $selector;
-    }
-
-    /**
-     * Checks whether selector with specified name is registered on handler.
-     *
-     * @param string $name selector engine name
-     *
-     * @return Boolean
-     */
-    public function isSelectorRegistered($name)
-    {
-        return isset($this->selectors[$name]);
-    }
-
-    /**
-     * Returns selector engine with specified name.
-     *
-     * @param string $name selector engine name
-     *
-     * @return SelectorInterface
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function getSelector($name)
-    {
-        if ('named' === $name) {
-            @trigger_error(
-                'Using the "named" selector directly from the handler is deprecated as of 1.6 and will be removed in 2.0.'
-                .' Use the "named_partial" or use the "named" selector through the Element API instead.',
-                E_USER_DEPRECATED
-            );
-            $name = 'named_partial';
-        }
-
-        if (!$this->isSelectorRegistered($name)) {
-            throw new \InvalidArgumentException("Selector \"$name\" is not registered.");
-        }
-
-        return $this->selectors[$name];
-    }
-
-    /**
-     * Translates selector with specified name to XPath.
-     *
-     * @param string       $selector selector engine name (registered)
-     * @param string|array $locator  selector locator (an array or a string depending of the selector being used)
-     *
-     * @return string
-     */
-    public function selectorToXpath($selector, $locator)
-    {
-        if ('xpath' === $selector) {
-            if (!is_string($locator)) {
-                throw new \InvalidArgumentException('The xpath selector expects to get a string as locator');
-            }
-
-            return $locator;
-        }
-
-        return $this->getSelector($selector)->translateToXPath($locator);
-    }
-
-    /**
-     * Translates string to XPath literal.
-     *
-     * @deprecated since Mink 1.7. Use \Behat\Mink\Selector\Xpath\Escaper::escapeLiteral when building Xpath
-     *             or pass the unescaped value when using the named selector.
-     *
-     * @param string $s
-     *
-     * @return string
-     */
-    public function xpathLiteral($s)
-    {
-        @trigger_error(
-            'The '.__METHOD__.' method is deprecated as of 1.7 and will be removed in 2.0.'
-            .' Use \Behat\Mink\Selector\Xpath\Escaper::escapeLiteral instead when building Xpath'
-            .' or pass the unescaped value when using the named selector.',
-            E_USER_DEPRECATED
-        );
-
-        return $this->escaper->escapeLiteral($s);
-    }
-}
diff --git a/vendor/behat/mink/src/Selector/Xpath/Escaper.php b/vendor/behat/mink/src/Selector/Xpath/Escaper.php
deleted file mode 100644
index c3aa7a3..0000000
--- a/vendor/behat/mink/src/Selector/Xpath/Escaper.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Selector\Xpath;
-
-/**
- * XPath escaper.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class Escaper
-{
-    /**
-     * Escapes the string as a XPath literal.
-     *
-     * @param string $s
-     *
-     * @return string
-     */
-    public function escapeLiteral($s)
-    {
-        if (false === strpos($s, "'")) {
-            return sprintf("'%s'", $s);
-        }
-
-        if (false === strpos($s, '"')) {
-            return sprintf('"%s"', $s);
-        }
-
-        $string = $s;
-        $parts = array();
-        while (true) {
-            if (false !== $pos = strpos($string, "'")) {
-                $parts[] = sprintf("'%s'", substr($string, 0, $pos));
-                $parts[] = "\"'\"";
-                $string = substr($string, $pos + 1);
-            } else {
-                $parts[] = "'$string'";
-                break;
-            }
-        }
-
-        return sprintf('concat(%s)', implode($parts, ','));
-    }
-}
diff --git a/vendor/behat/mink/src/Selector/Xpath/Manipulator.php b/vendor/behat/mink/src/Selector/Xpath/Manipulator.php
deleted file mode 100644
index 116650a..0000000
--- a/vendor/behat/mink/src/Selector/Xpath/Manipulator.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink\Selector\Xpath;
-
-/**
- * XPath manipulation utility.
- *
- * @author Graham Bates
- * @author Christophe Coevoet <stof@notk.org>
- */
-class Manipulator
-{
-    /**
-     * Regex to find union operators not inside brackets.
-     */
-    const UNION_PATTERN = '/\|(?![^\[]*\])/';
-
-    /**
-     * Prepends the XPath prefix to the given XPath.
-     *
-     * The returned XPath will match elements matching the XPath inside an element
-     * matching the prefix.
-     *
-     * @param string $xpath
-     * @param string $prefix
-     *
-     * @return string
-     */
-    public function prepend($xpath, $prefix)
-    {
-        $expressions = array();
-
-        // If the xpath prefix contains a union we need to wrap it in parentheses.
-        if (preg_match(self::UNION_PATTERN, $prefix)) {
-            $prefix = '('.$prefix.')';
-        }
-
-        // Split any unions into individual expressions.
-        foreach (preg_split(self::UNION_PATTERN, $xpath) as $expression) {
-            $expression = trim($expression);
-            $parenthesis = '';
-
-            // If the union is inside some braces, we need to preserve the opening braces and apply
-            // the prefix only inside it.
-            if (preg_match('/^[\(\s*]+/', $expression, $matches)) {
-                $parenthesis = $matches[0];
-                $expression = substr($expression, strlen($parenthesis));
-            }
-
-            // add prefix before element selector
-            if (0 === strpos($expression, '/')) {
-                $expression = $prefix.$expression;
-            } else {
-                $expression = $prefix.'/'.$expression;
-            }
-            $expressions[] = $parenthesis.$expression;
-        }
-
-        return implode(' | ', $expressions);
-    }
-}
diff --git a/vendor/behat/mink/src/Session.php b/vendor/behat/mink/src/Session.php
deleted file mode 100644
index c8815f9..0000000
--- a/vendor/behat/mink/src/Session.php
+++ /dev/null
@@ -1,373 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink;
-
-use Behat\Mink\Driver\DriverInterface;
-use Behat\Mink\Selector\SelectorsHandler;
-use Behat\Mink\Element\DocumentElement;
-
-/**
- * Mink session.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class Session
-{
-    private $driver;
-    private $page;
-    private $selectorsHandler;
-
-    /**
-     * Initializes session.
-     *
-     * @param DriverInterface  $driver
-     * @param SelectorsHandler $selectorsHandler
-     */
-    public function __construct(DriverInterface $driver, SelectorsHandler $selectorsHandler = null)
-    {
-        $driver->setSession($this);
-
-        if (null === $selectorsHandler) {
-            $selectorsHandler = new SelectorsHandler();
-        }
-
-        $this->driver = $driver;
-        $this->selectorsHandler = $selectorsHandler;
-        $this->page = new DocumentElement($this);
-    }
-
-    /**
-     * Checks whether session (driver) was started.
-     *
-     * @return Boolean
-     */
-    public function isStarted()
-    {
-        return $this->driver->isStarted();
-    }
-
-    /**
-     * Starts session driver.
-     *
-     * Calling any action before visiting a page is an undefined behavior.
-     * The only supported method calls on a fresh driver are
-     * - visit()
-     * - setRequestHeader()
-     * - setBasicAuth()
-     * - reset()
-     * - stop()
-     */
-    public function start()
-    {
-        $this->driver->start();
-    }
-
-    /**
-     * Stops session driver.
-     */
-    public function stop()
-    {
-        $this->driver->stop();
-    }
-
-    /**
-     * Restart session driver.
-     */
-    public function restart()
-    {
-        $this->driver->stop();
-        $this->driver->start();
-    }
-
-    /**
-     * Reset session driver state.
-     *
-     * Calling any action before visiting a page is an undefined behavior.
-     * The only supported method calls on a fresh driver are
-     * - visit()
-     * - setRequestHeader()
-     * - setBasicAuth()
-     * - reset()
-     * - stop()
-     */
-    public function reset()
-    {
-        $this->driver->reset();
-    }
-
-    /**
-     * Returns session driver.
-     *
-     * @return DriverInterface
-     */
-    public function getDriver()
-    {
-        return $this->driver;
-    }
-
-    /**
-     * Returns page element.
-     *
-     * @return DocumentElement
-     */
-    public function getPage()
-    {
-        return $this->page;
-    }
-
-    /**
-     * Returns selectors handler.
-     *
-     * @return SelectorsHandler
-     */
-    public function getSelectorsHandler()
-    {
-        return $this->selectorsHandler;
-    }
-
-    /**
-     * Visit specified URL.
-     *
-     * @param string $url url of the page
-     */
-    public function visit($url)
-    {
-        $this->driver->visit($url);
-    }
-
-    /**
-     * Sets HTTP Basic authentication parameters.
-     *
-     * @param string|Boolean $user     user name or false to disable authentication
-     * @param string         $password password
-     */
-    public function setBasicAuth($user, $password = '')
-    {
-        $this->driver->setBasicAuth($user, $password);
-    }
-
-    /**
-     * Sets specific request header.
-     *
-     * @param string $name
-     * @param string $value
-     */
-    public function setRequestHeader($name, $value)
-    {
-        $this->driver->setRequestHeader($name, $value);
-    }
-
-    /**
-     * Returns all response headers.
-     *
-     * @return array
-     */
-    public function getResponseHeaders()
-    {
-        return $this->driver->getResponseHeaders();
-    }
-
-    /**
-     * Returns specific response header.
-     *
-     * @param string $name
-     *
-     * @return string|null
-     */
-    public function getResponseHeader($name)
-    {
-        $headers = $this->driver->getResponseHeaders();
-
-        $name = strtolower($name);
-        $headers = array_change_key_case($headers, CASE_LOWER);
-
-        if (!isset($headers[$name])) {
-            return null;
-        }
-
-        return is_array($headers[$name]) ? $headers[$name][0] : $headers[$name];
-    }
-
-    /**
-     * Sets cookie.
-     *
-     * @param string $name
-     * @param string $value
-     */
-    public function setCookie($name, $value = null)
-    {
-        $this->driver->setCookie($name, $value);
-    }
-
-    /**
-     * Returns cookie by name.
-     *
-     * @param string $name
-     *
-     * @return string|null
-     */
-    public function getCookie($name)
-    {
-        return $this->driver->getCookie($name);
-    }
-
-    /**
-     * Returns response status code.
-     *
-     * @return int
-     */
-    public function getStatusCode()
-    {
-        return $this->driver->getStatusCode();
-    }
-
-    /**
-     * Returns current URL address.
-     *
-     * @return string
-     */
-    public function getCurrentUrl()
-    {
-        return $this->driver->getCurrentUrl();
-    }
-
-    /**
-     * Capture a screenshot of the current window.
-     *
-     * @return string screenshot of MIME type image/* depending
-     *                on driver (e.g., image/png, image/jpeg)
-     */
-    public function getScreenshot()
-    {
-        return $this->driver->getScreenshot();
-    }
-
-    /**
-     * Return the names of all open windows.
-     *
-     * @return array Array of all open window's names.
-     */
-    public function getWindowNames()
-    {
-        return $this->driver->getWindowNames();
-    }
-
-    /**
-     * Return the name of the currently active window.
-     *
-     * @return string The name of the current window.
-     */
-    public function getWindowName()
-    {
-        return $this->driver->getWindowName();
-    }
-
-    /**
-     * Reloads current session page.
-     */
-    public function reload()
-    {
-        $this->driver->reload();
-    }
-
-    /**
-     * Moves backward 1 page in history.
-     */
-    public function back()
-    {
-        $this->driver->back();
-    }
-
-    /**
-     * Moves forward 1 page in history.
-     */
-    public function forward()
-    {
-        $this->driver->forward();
-    }
-
-    /**
-     * Switches to specific browser window.
-     *
-     * @param string $name window name (null for switching back to main window)
-     */
-    public function switchToWindow($name = null)
-    {
-        $this->driver->switchToWindow($name);
-    }
-
-    /**
-     * Switches to specific iFrame.
-     *
-     * @param string $name iframe name (null for switching back)
-     */
-    public function switchToIFrame($name = null)
-    {
-        $this->driver->switchToIFrame($name);
-    }
-
-    /**
-     * Execute JS in browser.
-     *
-     * @param string $script javascript
-     */
-    public function executeScript($script)
-    {
-        $this->driver->executeScript($script);
-    }
-
-    /**
-     * Execute JS in browser and return it's response.
-     *
-     * @param string $script javascript
-     *
-     * @return string
-     */
-    public function evaluateScript($script)
-    {
-        return $this->driver->evaluateScript($script);
-    }
-
-    /**
-     * Waits some time or until JS condition turns true.
-     *
-     * @param int    $time      time in milliseconds
-     * @param string $condition JS condition
-     *
-     * @return bool
-     */
-    public function wait($time, $condition = 'false')
-    {
-        return $this->driver->wait($time, $condition);
-    }
-
-    /**
-     * Set the dimensions of the window.
-     *
-     * @param int    $width  set the window width, measured in pixels
-     * @param int    $height set the window height, measured in pixels
-     * @param string $name   window name (null for the main window)
-     */
-    public function resizeWindow($width, $height, $name = null)
-    {
-        $this->driver->resizeWindow($width, $height, $name);
-    }
-
-    /**
-     * Maximize the window if it is not maximized already.
-     *
-     * @param string $name window name (null for the main window)
-     */
-    public function maximizeWindow($name = null)
-    {
-        $this->driver->maximizeWindow($name);
-    }
-}
diff --git a/vendor/behat/mink/src/WebAssert.php b/vendor/behat/mink/src/WebAssert.php
deleted file mode 100644
index 0f0e6fa..0000000
--- a/vendor/behat/mink/src/WebAssert.php
+++ /dev/null
@@ -1,849 +0,0 @@
-<?php
-
-/*
- * This file is part of the Mink package.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Mink;
-
-use Behat\Mink\Element\Element;
-use Behat\Mink\Element\ElementInterface;
-use Behat\Mink\Element\NodeElement;
-use Behat\Mink\Element\TraversableElement;
-use Behat\Mink\Exception\ElementNotFoundException;
-use Behat\Mink\Exception\ExpectationException;
-use Behat\Mink\Exception\ResponseTextException;
-use Behat\Mink\Exception\ElementHtmlException;
-use Behat\Mink\Exception\ElementTextException;
-
-/**
- * Mink web assertions tool.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class WebAssert
-{
-    protected $session;
-
-    /**
-     * Initializes assertion engine.
-     *
-     * @param Session $session
-     */
-    public function __construct(Session $session)
-    {
-        $this->session = $session;
-    }
-
-    /**
-     * Checks that current session address is equals to provided one.
-     *
-     * @param string $page
-     *
-     * @throws ExpectationException
-     */
-    public function addressEquals($page)
-    {
-        $expected = $this->cleanUrl($page);
-        $actual = $this->getCurrentUrlPath();
-
-        $this->assert($actual === $expected, sprintf('Current page is "%s", but "%s" expected.', $actual, $expected));
-    }
-
-    /**
-     * Checks that current session address is not equals to provided one.
-     *
-     * @param string $page
-     *
-     * @throws ExpectationException
-     */
-    public function addressNotEquals($page)
-    {
-        $expected = $this->cleanUrl($page);
-        $actual = $this->getCurrentUrlPath();
-
-        $this->assert($actual !== $expected, sprintf('Current page is "%s", but should not be.', $actual));
-    }
-
-    /**
-     * Checks that current session address matches regex.
-     *
-     * @param string $regex
-     *
-     * @throws ExpectationException
-     */
-    public function addressMatches($regex)
-    {
-        $actual = $this->getCurrentUrlPath();
-        $message = sprintf('Current page "%s" does not match the regex "%s".', $actual, $regex);
-
-        $this->assert((bool) preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that specified cookie exists and its value equals to a given one.
-     *
-     * @param string $name  cookie name
-     * @param string $value cookie value
-     *
-     * @throws ExpectationException
-     */
-    public function cookieEquals($name, $value)
-    {
-        $this->cookieExists($name);
-
-        $actualValue = $this->session->getCookie($name);
-        $message = sprintf('Cookie "%s" value is "%s", but should be "%s".', $name, $actualValue, $value);
-
-        $this->assert($actualValue == $value, $message);
-    }
-
-    /**
-     * Checks that specified cookie exists.
-     *
-     * @param string $name cookie name
-     *
-     * @throws ExpectationException
-     */
-    public function cookieExists($name)
-    {
-        $message = sprintf('Cookie "%s" is not set, but should be.', $name);
-        $this->assert($this->session->getCookie($name) !== null, $message);
-    }
-
-    /**
-     * Checks that current response code equals to provided one.
-     *
-     * @param int $code
-     *
-     * @throws ExpectationException
-     */
-    public function statusCodeEquals($code)
-    {
-        $actual = $this->session->getStatusCode();
-        $message = sprintf('Current response status code is %d, but %d expected.', $actual, $code);
-
-        $this->assert(intval($code) === intval($actual), $message);
-    }
-
-    /**
-     * Checks that current response code not equals to provided one.
-     *
-     * @param int $code
-     *
-     * @throws ExpectationException
-     */
-    public function statusCodeNotEquals($code)
-    {
-        $actual = $this->session->getStatusCode();
-        $message = sprintf('Current response status code is %d, but should not be.', $actual);
-
-        $this->assert(intval($code) !== intval($actual), $message);
-    }
-
-    /**
-     * Checks that current response header equals value.
-     *
-     * @param string $name
-     * @param string $value
-     *
-     * @throws ExpectationException
-     */
-    public function responseHeaderEquals($name, $value)
-    {
-        $actual = $this->session->getResponseHeader($name);
-        $message = sprintf('Current response header "%s" is "%s", but "%s" expected.', $name, $actual, $value);
-
-        $this->assert($value === $actual, $message);
-    }
-
-    /**
-     * Checks that current response header does not equal value.
-     *
-     * @param string $name
-     * @param string $value
-     *
-     * @throws ExpectationException
-     */
-    public function responseHeaderNotEquals($name, $value)
-    {
-        $actual = $this->session->getResponseHeader($name);
-        $message = sprintf('Current response header "%s" is "%s", but should not be.', $name, $actual, $value);
-
-        $this->assert($value !== $actual, $message);
-    }
-
-    /**
-     * Checks that current response header contains value.
-     *
-     * @param string $name
-     * @param string $value
-     *
-     * @throws ExpectationException
-     */
-    public function responseHeaderContains($name, $value)
-    {
-        $actual = $this->session->getResponseHeader($name);
-        $message = sprintf('The text "%s" was not found anywhere in the "%s" response header.', $value, $name);
-
-        $this->assert(false !== stripos($actual, $value), $message);
-    }
-
-    /**
-     * Checks that current response header does not contain value.
-     *
-     * @param string $name
-     * @param string $value
-     *
-     * @throws ExpectationException
-     */
-    public function responseHeaderNotContains($name, $value)
-    {
-        $actual = $this->session->getResponseHeader($name);
-        $message = sprintf('The text "%s" was found in the "%s" response header, but it should not.', $value, $name);
-
-        $this->assert(false === stripos($actual, $value), $message);
-    }
-
-    /**
-     * Checks that current response header matches regex.
-     *
-     * @param string $name
-     * @param string $regex
-     *
-     * @throws ExpectationException
-     */
-    public function responseHeaderMatches($name, $regex)
-    {
-        $actual = $this->session->getResponseHeader($name);
-        $message = sprintf('The pattern "%s" was not found anywhere in the "%s" response header.', $regex, $name);
-
-        $this->assert((bool) preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that current response header does not match regex.
-     *
-     * @param string $name
-     * @param string $regex
-     *
-     * @throws ExpectationException
-     */
-    public function responseHeaderNotMatches($name, $regex)
-    {
-        $actual = $this->session->getResponseHeader($name);
-        $message = sprintf(
-            'The pattern "%s" was found in the text of the "%s" response header, but it should not.',
-            $regex,
-            $name
-        );
-
-        $this->assert(!preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that current page contains text.
-     *
-     * @param string $text
-     *
-     * @throws ResponseTextException
-     */
-    public function pageTextContains($text)
-    {
-        $actual = $this->session->getPage()->getText();
-        $actual = preg_replace('/\s+/u', ' ', $actual);
-        $regex = '/'.preg_quote($text, '/').'/ui';
-        $message = sprintf('The text "%s" was not found anywhere in the text of the current page.', $text);
-
-        $this->assertResponseText((bool) preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that current page does not contains text.
-     *
-     * @param string $text
-     *
-     * @throws ResponseTextException
-     */
-    public function pageTextNotContains($text)
-    {
-        $actual = $this->session->getPage()->getText();
-        $actual = preg_replace('/\s+/u', ' ', $actual);
-        $regex = '/'.preg_quote($text, '/').'/ui';
-        $message = sprintf('The text "%s" appears in the text of this page, but it should not.', $text);
-
-        $this->assertResponseText(!preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that current page text matches regex.
-     *
-     * @param string $regex
-     *
-     * @throws ResponseTextException
-     */
-    public function pageTextMatches($regex)
-    {
-        $actual = $this->session->getPage()->getText();
-        $message = sprintf('The pattern %s was not found anywhere in the text of the current page.', $regex);
-
-        $this->assertResponseText((bool) preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that current page text does not matches regex.
-     *
-     * @param string $regex
-     *
-     * @throws ResponseTextException
-     */
-    public function pageTextNotMatches($regex)
-    {
-        $actual = $this->session->getPage()->getText();
-        $message = sprintf('The pattern %s was found in the text of the current page, but it should not.', $regex);
-
-        $this->assertResponseText(!preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that page HTML (response content) contains text.
-     *
-     * @param string $text
-     *
-     * @throws ExpectationException
-     */
-    public function responseContains($text)
-    {
-        $actual = $this->session->getPage()->getContent();
-        $regex = '/'.preg_quote($text, '/').'/ui';
-        $message = sprintf('The string "%s" was not found anywhere in the HTML response of the current page.', $text);
-
-        $this->assert((bool) preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that page HTML (response content) does not contains text.
-     *
-     * @param string $text
-     *
-     * @throws ExpectationException
-     */
-    public function responseNotContains($text)
-    {
-        $actual = $this->session->getPage()->getContent();
-        $regex = '/'.preg_quote($text, '/').'/ui';
-        $message = sprintf('The string "%s" appears in the HTML response of this page, but it should not.', $text);
-
-        $this->assert(!preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that page HTML (response content) matches regex.
-     *
-     * @param string $regex
-     *
-     * @throws ExpectationException
-     */
-    public function responseMatches($regex)
-    {
-        $actual = $this->session->getPage()->getContent();
-        $message = sprintf('The pattern %s was not found anywhere in the HTML response of the page.', $regex);
-
-        $this->assert((bool) preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that page HTML (response content) does not matches regex.
-     *
-     * @param $regex
-     *
-     * @throws ExpectationException
-     */
-    public function responseNotMatches($regex)
-    {
-        $actual = $this->session->getPage()->getContent();
-        $message = sprintf('The pattern %s was found in the HTML response of the page, but it should not.', $regex);
-
-        $this->assert(!preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that there is specified number of specific elements on the page.
-     *
-     * @param string           $selectorType element selector type (css, xpath)
-     * @param string|array     $selector     element selector
-     * @param int              $count        expected count
-     * @param ElementInterface $container    document to check against
-     *
-     * @throws ExpectationException
-     */
-    public function elementsCount($selectorType, $selector, $count, ElementInterface $container = null)
-    {
-        $container = $container ?: $this->session->getPage();
-        $nodes = $container->findAll($selectorType, $selector);
-
-        $message = sprintf(
-            '%d %s found on the page, but should be %d.',
-            count($nodes),
-            $this->getMatchingElementRepresentation($selectorType, $selector, count($nodes) !== 1),
-            $count
-        );
-
-        $this->assert(intval($count) === count($nodes), $message);
-    }
-
-    /**
-     * Checks that specific element exists on the current page.
-     *
-     * @param string           $selectorType element selector type (css, xpath)
-     * @param string|array     $selector     element selector
-     * @param ElementInterface $container    document to check against
-     *
-     * @return NodeElement
-     *
-     * @throws ElementNotFoundException
-     */
-    public function elementExists($selectorType, $selector, ElementInterface $container = null)
-    {
-        $container = $container ?: $this->session->getPage();
-        $node = $container->find($selectorType, $selector);
-
-        if (null === $node) {
-            if (is_array($selector)) {
-                $selector = implode(' ', $selector);
-            }
-
-            throw new ElementNotFoundException($this->session->getDriver(), 'element', $selectorType, $selector);
-        }
-
-        return $node;
-    }
-
-    /**
-     * Checks that specific element does not exists on the current page.
-     *
-     * @param string           $selectorType element selector type (css, xpath)
-     * @param string|array     $selector     element selector
-     * @param ElementInterface $container    document to check against
-     *
-     * @throws ExpectationException
-     */
-    public function elementNotExists($selectorType, $selector, ElementInterface $container = null)
-    {
-        $container = $container ?: $this->session->getPage();
-        $node = $container->find($selectorType, $selector);
-
-        $message = sprintf(
-            'An %s appears on this page, but it should not.',
-            $this->getMatchingElementRepresentation($selectorType, $selector)
-        );
-
-        $this->assert(null === $node, $message);
-    }
-
-    /**
-     * Checks that specific element contains text.
-     *
-     * @param string       $selectorType element selector type (css, xpath)
-     * @param string|array $selector     element selector
-     * @param string       $text         expected text
-     *
-     * @throws ElementTextException
-     */
-    public function elementTextContains($selectorType, $selector, $text)
-    {
-        $element = $this->elementExists($selectorType, $selector);
-        $actual = $element->getText();
-        $regex = '/'.preg_quote($text, '/').'/ui';
-
-        $message = sprintf(
-            'The text "%s" was not found in the text of the %s.',
-            $text,
-            $this->getMatchingElementRepresentation($selectorType, $selector)
-        );
-
-        $this->assertElementText((bool) preg_match($regex, $actual), $message, $element);
-    }
-
-    /**
-     * Checks that specific element does not contains text.
-     *
-     * @param string       $selectorType element selector type (css, xpath)
-     * @param string|array $selector     element selector
-     * @param string       $text         expected text
-     *
-     * @throws ElementTextException
-     */
-    public function elementTextNotContains($selectorType, $selector, $text)
-    {
-        $element = $this->elementExists($selectorType, $selector);
-        $actual = $element->getText();
-        $regex = '/'.preg_quote($text, '/').'/ui';
-
-        $message = sprintf(
-            'The text "%s" appears in the text of the %s, but it should not.',
-            $text,
-            $this->getMatchingElementRepresentation($selectorType, $selector)
-        );
-
-        $this->assertElementText(!preg_match($regex, $actual), $message, $element);
-    }
-
-    /**
-     * Checks that specific element contains HTML.
-     *
-     * @param string       $selectorType element selector type (css, xpath)
-     * @param string|array $selector     element selector
-     * @param string       $html         expected text
-     *
-     * @throws ElementHtmlException
-     */
-    public function elementContains($selectorType, $selector, $html)
-    {
-        $element = $this->elementExists($selectorType, $selector);
-        $actual = $element->getHtml();
-        $regex = '/'.preg_quote($html, '/').'/ui';
-
-        $message = sprintf(
-            'The string "%s" was not found in the HTML of the %s.',
-            $html,
-            $this->getMatchingElementRepresentation($selectorType, $selector)
-        );
-
-        $this->assertElement((bool) preg_match($regex, $actual), $message, $element);
-    }
-
-    /**
-     * Checks that specific element does not contains HTML.
-     *
-     * @param string       $selectorType element selector type (css, xpath)
-     * @param string|array $selector     element selector
-     * @param string       $html         expected text
-     *
-     * @throws ElementHtmlException
-     */
-    public function elementNotContains($selectorType, $selector, $html)
-    {
-        $element = $this->elementExists($selectorType, $selector);
-        $actual = $element->getHtml();
-        $regex = '/'.preg_quote($html, '/').'/ui';
-
-        $message = sprintf(
-            'The string "%s" appears in the HTML of the %s, but it should not.',
-            $html,
-            $this->getMatchingElementRepresentation($selectorType, $selector)
-        );
-
-        $this->assertElement(!preg_match($regex, $actual), $message, $element);
-    }
-
-    /**
-     * Checks that an attribute exists in an element.
-     *
-     * @param string       $selectorType
-     * @param string|array $selector
-     * @param string       $attribute
-     *
-     * @return NodeElement
-     *
-     * @throws ElementHtmlException
-     */
-    public function elementAttributeExists($selectorType, $selector, $attribute)
-    {
-        $element = $this->elementExists($selectorType, $selector);
-
-        $message = sprintf(
-            'The attribute "%s" was not found in the %s.',
-            $attribute,
-            $this->getMatchingElementRepresentation($selectorType, $selector)
-        );
-
-        $this->assertElement($element->hasAttribute($attribute), $message, $element);
-
-        return $element;
-    }
-
-    /**
-     * Checks that an attribute of a specific elements contains text.
-     *
-     * @param string       $selectorType
-     * @param string|array $selector
-     * @param string       $attribute
-     * @param string       $text
-     *
-     * @throws ElementHtmlException
-     */
-    public function elementAttributeContains($selectorType, $selector, $attribute, $text)
-    {
-        $element = $this->elementAttributeExists($selectorType, $selector, $attribute);
-        $actual = $element->getAttribute($attribute);
-        $regex = '/'.preg_quote($text, '/').'/ui';
-
-        $message = sprintf(
-            'The text "%s" was not found in the attribute "%s" of the %s.',
-            $text,
-            $attribute,
-            $this->getMatchingElementRepresentation($selectorType, $selector)
-        );
-
-        $this->assertElement((bool) preg_match($regex, $actual), $message, $element);
-    }
-
-    /**
-     * Checks that an attribute of a specific elements does not contain text.
-     *
-     * @param string       $selectorType
-     * @param string|array $selector
-     * @param string       $attribute
-     * @param string       $text
-     *
-     * @throws ElementHtmlException
-     */
-    public function elementAttributeNotContains($selectorType, $selector, $attribute, $text)
-    {
-        $element = $this->elementAttributeExists($selectorType, $selector, $attribute);
-        $actual = $element->getAttribute($attribute);
-        $regex = '/'.preg_quote($text, '/').'/ui';
-
-        $message = sprintf(
-            'The text "%s" was found in the attribute "%s" of the %s.',
-            $text,
-            $attribute,
-            $this->getMatchingElementRepresentation($selectorType, $selector)
-        );
-
-        $this->assertElement(!preg_match($regex, $actual), $message, $element);
-    }
-
-    /**
-     * Checks that specific field exists on the current page.
-     *
-     * @param string             $field     field id|name|label|value
-     * @param TraversableElement $container document to check against
-     *
-     * @return NodeElement
-     *
-     * @throws ElementNotFoundException
-     */
-    public function fieldExists($field, TraversableElement $container = null)
-    {
-        $container = $container ?: $this->session->getPage();
-        $node = $container->findField($field);
-
-        if (null === $node) {
-            throw new ElementNotFoundException($this->session->getDriver(), 'form field', 'id|name|label|value', $field);
-        }
-
-        return $node;
-    }
-
-    /**
-     * Checks that specific field does not exists on the current page.
-     *
-     * @param string             $field     field id|name|label|value
-     * @param TraversableElement $container document to check against
-     *
-     * @throws ExpectationException
-     */
-    public function fieldNotExists($field, TraversableElement $container = null)
-    {
-        $container = $container ?: $this->session->getPage();
-        $node = $container->findField($field);
-
-        $this->assert(null === $node, sprintf('A field "%s" appears on this page, but it should not.', $field));
-    }
-
-    /**
-     * Checks that specific field have provided value.
-     *
-     * @param string             $field     field id|name|label|value
-     * @param string             $value     field value
-     * @param TraversableElement $container document to check against
-     *
-     * @throws ExpectationException
-     */
-    public function fieldValueEquals($field, $value, TraversableElement $container = null)
-    {
-        $node = $this->fieldExists($field, $container);
-        $actual = $node->getValue();
-        $regex = '/^'.preg_quote($value, '/').'$/ui';
-
-        $message = sprintf('The field "%s" value is "%s", but "%s" expected.', $field, $actual, $value);
-
-        $this->assert((bool) preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that specific field have provided value.
-     *
-     * @param string             $field     field id|name|label|value
-     * @param string             $value     field value
-     * @param TraversableElement $container document to check against
-     *
-     * @throws ExpectationException
-     */
-    public function fieldValueNotEquals($field, $value, TraversableElement $container = null)
-    {
-        $node = $this->fieldExists($field, $container);
-        $actual = $node->getValue();
-        $regex = '/^'.preg_quote($value, '/').'$/ui';
-
-        $message = sprintf('The field "%s" value is "%s", but it should not be.', $field, $actual);
-
-        $this->assert(!preg_match($regex, $actual), $message);
-    }
-
-    /**
-     * Checks that specific checkbox is checked.
-     *
-     * @param string             $field     field id|name|label|value
-     * @param TraversableElement $container document to check against
-     *
-     * @throws ExpectationException
-     */
-    public function checkboxChecked($field, TraversableElement $container = null)
-    {
-        $node = $this->fieldExists($field, $container);
-
-        $this->assert($node->isChecked(), sprintf('Checkbox "%s" is not checked, but it should be.', $field));
-    }
-
-    /**
-     * Checks that specific checkbox is unchecked.
-     *
-     * @param string             $field     field id|name|label|value
-     * @param TraversableElement $container document to check against
-     *
-     * @throws ExpectationException
-     */
-    public function checkboxNotChecked($field, TraversableElement $container = null)
-    {
-        $node = $this->fieldExists($field, $container);
-
-        $this->assert(!$node->isChecked(), sprintf('Checkbox "%s" is checked, but it should not be.', $field));
-    }
-
-    /**
-     * Gets current url of the page.
-     *
-     * @return string
-     */
-    protected function getCurrentUrlPath()
-    {
-        return $this->cleanUrl($this->session->getCurrentUrl());
-    }
-
-    /**
-     * Trims scriptname from the URL.
-     *
-     * @param string $url
-     *
-     * @return string
-     */
-    protected function cleanUrl($url)
-    {
-        $parts = parse_url($url);
-        $fragment = empty($parts['fragment']) ? '' : '#'.$parts['fragment'];
-        $path = empty($parts['path']) ? '/' : $parts['path'];
-
-        return preg_replace('/^\/[^\.\/]+\.php\//', '/', $path).$fragment;
-    }
-
-    /**
-     * Asserts a condition.
-     *
-     * @param bool   $condition
-     * @param string $message   Failure message
-     *
-     * @throws ExpectationException when the condition is not fulfilled
-     */
-    private function assert($condition, $message)
-    {
-        if ($condition) {
-            return;
-        }
-
-        throw new ExpectationException($message, $this->session->getDriver());
-    }
-
-    /**
-     * Asserts a condition involving the response text.
-     *
-     * @param bool   $condition
-     * @param string $message   Failure message
-     *
-     * @throws ResponseTextException when the condition is not fulfilled
-     */
-    private function assertResponseText($condition, $message)
-    {
-        if ($condition) {
-            return;
-        }
-
-        throw new ResponseTextException($message, $this->session->getDriver());
-    }
-
-    /**
-     * Asserts a condition on an element.
-     *
-     * @param bool    $condition
-     * @param string  $message   Failure message
-     * @param Element $element
-     *
-     * @throws ElementHtmlException when the condition is not fulfilled
-     */
-    private function assertElement($condition, $message, Element $element)
-    {
-        if ($condition) {
-            return;
-        }
-
-        throw new ElementHtmlException($message, $this->session->getDriver(), $element);
-    }
-
-    /**
-     * Asserts a condition involving the text of an element.
-     *
-     * @param bool    $condition
-     * @param string  $message   Failure message
-     * @param Element $element
-     *
-     * @throws ElementTextException when the condition is not fulfilled
-     */
-    private function assertElementText($condition, $message, Element $element)
-    {
-        if ($condition) {
-            return;
-        }
-
-        throw new ElementTextException($message, $this->session->getDriver(), $element);
-    }
-
-    /**
-     * @param string       $selectorType
-     * @param string|array $selector
-     * @param bool         $plural
-     *
-     * @return string
-     */
-    private function getMatchingElementRepresentation($selectorType, $selector, $plural = false)
-    {
-        $pluralization = $plural ? 's' : '';
-
-        if (in_array($selectorType, array('named', 'named_exact', 'named_partial'))
-            && is_array($selector) && 2 === count($selector)
-        ) {
-            return sprintf('%s%s matching locator "%s"', $selector[0], $pluralization, $selector[1]);
-        }
-
-        if (is_array($selector)) {
-            $selector = implode(' ', $selector);
-        }
-
-        return sprintf('element%s matching %s "%s"', $pluralization, $selectorType, $selector);
-    }
-}
diff --git a/vendor/bin/phpunit b/vendor/bin/phpunit
deleted file mode 120000
index 2c48930..0000000
--- a/vendor/bin/phpunit
+++ /dev/null
@@ -1 +0,0 @@
-../phpunit/phpunit/phpunit
\ No newline at end of file
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
deleted file mode 100644
index 990cfdc..0000000
--- a/vendor/composer/ClassLoader.php
+++ /dev/null
@@ -1,413 +0,0 @@
-<?php
-
-/*
- * This file is part of Composer.
- *
- * (c) Nils Adermann <naderman@naderman.de>
- *     Jordi Boggiano <j.boggiano@seld.be>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Composer\Autoload;
-
-/**
- * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
- *
- *     $loader = new \Composer\Autoload\ClassLoader();
- *
- *     // register classes with namespaces
- *     $loader->add('Symfony\Component', __DIR__.'/component');
- *     $loader->add('Symfony',           __DIR__.'/framework');
- *
- *     // activate the autoloader
- *     $loader->register();
- *
- *     // to enable searching the include path (eg. for PEAR packages)
- *     $loader->setUseIncludePath(true);
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * This class is loosely based on the Symfony UniversalClassLoader.
- *
- * @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
-{
-    // PSR-4
-    private $prefixLengthsPsr4 = array();
-    private $prefixDirsPsr4 = array();
-    private $fallbackDirsPsr4 = array();
-
-    // PSR-0
-    private $prefixesPsr0 = array();
-    private $fallbackDirsPsr0 = array();
-
-    private $useIncludePath = false;
-    private $classMap = array();
-
-    private $classMapAuthoritative = false;
-
-    public function getPrefixes()
-    {
-        if (!empty($this->prefixesPsr0)) {
-            return call_user_func_array('array_merge', $this->prefixesPsr0);
-        }
-
-        return array();
-    }
-
-    public function getPrefixesPsr4()
-    {
-        return $this->prefixDirsPsr4;
-    }
-
-    public function getFallbackDirs()
-    {
-        return $this->fallbackDirsPsr0;
-    }
-
-    public function getFallbackDirsPsr4()
-    {
-        return $this->fallbackDirsPsr4;
-    }
-
-    public function getClassMap()
-    {
-        return $this->classMap;
-    }
-
-    /**
-     * @param array $classMap Class to filename map
-     */
-    public function addClassMap(array $classMap)
-    {
-        if ($this->classMap) {
-            $this->classMap = array_merge($this->classMap, $classMap);
-        } else {
-            $this->classMap = $classMap;
-        }
-    }
-
-    /**
-     * Registers a set of PSR-0 directories for a given prefix, either
-     * appending or prepending to the ones previously set for this prefix.
-     *
-     * @param string       $prefix  The prefix
-     * @param array|string $paths   The PSR-0 root directories
-     * @param bool         $prepend Whether to prepend the directories
-     */
-    public function add($prefix, $paths, $prepend = false)
-    {
-        if (!$prefix) {
-            if ($prepend) {
-                $this->fallbackDirsPsr0 = array_merge(
-                    (array) $paths,
-                    $this->fallbackDirsPsr0
-                );
-            } else {
-                $this->fallbackDirsPsr0 = array_merge(
-                    $this->fallbackDirsPsr0,
-                    (array) $paths
-                );
-            }
-
-            return;
-        }
-
-        $first = $prefix[0];
-        if (!isset($this->prefixesPsr0[$first][$prefix])) {
-            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
-
-            return;
-        }
-        if ($prepend) {
-            $this->prefixesPsr0[$first][$prefix] = array_merge(
-                (array) $paths,
-                $this->prefixesPsr0[$first][$prefix]
-            );
-        } else {
-            $this->prefixesPsr0[$first][$prefix] = array_merge(
-                $this->prefixesPsr0[$first][$prefix],
-                (array) $paths
-            );
-        }
-    }
-
-    /**
-     * Registers a set of PSR-4 directories for a given namespace, either
-     * appending or prepending to the ones previously set for this namespace.
-     *
-     * @param string       $prefix  The prefix/namespace, with trailing '\\'
-     * @param array|string $paths   The PSR-0 base directories
-     * @param bool         $prepend Whether to prepend the directories
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function addPsr4($prefix, $paths, $prepend = false)
-    {
-        if (!$prefix) {
-            // Register directories for the root namespace.
-            if ($prepend) {
-                $this->fallbackDirsPsr4 = array_merge(
-                    (array) $paths,
-                    $this->fallbackDirsPsr4
-                );
-            } else {
-                $this->fallbackDirsPsr4 = array_merge(
-                    $this->fallbackDirsPsr4,
-                    (array) $paths
-                );
-            }
-        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
-            // Register directories for a new namespace.
-            $length = strlen($prefix);
-            if ('\\' !== $prefix[$length - 1]) {
-                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
-            }
-            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
-            $this->prefixDirsPsr4[$prefix] = (array) $paths;
-        } elseif ($prepend) {
-            // Prepend directories for an already registered namespace.
-            $this->prefixDirsPsr4[$prefix] = array_merge(
-                (array) $paths,
-                $this->prefixDirsPsr4[$prefix]
-            );
-        } else {
-            // Append directories for an already registered namespace.
-            $this->prefixDirsPsr4[$prefix] = array_merge(
-                $this->prefixDirsPsr4[$prefix],
-                (array) $paths
-            );
-        }
-    }
-
-    /**
-     * Registers a set of PSR-0 directories for a given prefix,
-     * replacing any others previously set for this prefix.
-     *
-     * @param string       $prefix The prefix
-     * @param array|string $paths  The PSR-0 base directories
-     */
-    public function set($prefix, $paths)
-    {
-        if (!$prefix) {
-            $this->fallbackDirsPsr0 = (array) $paths;
-        } else {
-            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
-        }
-    }
-
-    /**
-     * Registers a set of PSR-4 directories for a given namespace,
-     * replacing any others previously set for this namespace.
-     *
-     * @param string       $prefix The prefix/namespace, with trailing '\\'
-     * @param array|string $paths  The PSR-4 base directories
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setPsr4($prefix, $paths)
-    {
-        if (!$prefix) {
-            $this->fallbackDirsPsr4 = (array) $paths;
-        } else {
-            $length = strlen($prefix);
-            if ('\\' !== $prefix[$length - 1]) {
-                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
-            }
-            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
-            $this->prefixDirsPsr4[$prefix] = (array) $paths;
-        }
-    }
-
-    /**
-     * Turns on searching the include path for class files.
-     *
-     * @param bool $useIncludePath
-     */
-    public function setUseIncludePath($useIncludePath)
-    {
-        $this->useIncludePath = $useIncludePath;
-    }
-
-    /**
-     * Can be used to check if the autoloader uses the include path to check
-     * for classes.
-     *
-     * @return bool
-     */
-    public function getUseIncludePath()
-    {
-        return $this->useIncludePath;
-    }
-
-    /**
-     * Turns off searching the prefix and fallback directories for classes
-     * that have not been registered with the class map.
-     *
-     * @param bool $classMapAuthoritative
-     */
-    public function setClassMapAuthoritative($classMapAuthoritative)
-    {
-        $this->classMapAuthoritative = $classMapAuthoritative;
-    }
-
-    /**
-     * Should class lookup fail if not found in the current class map?
-     *
-     * @return bool
-     */
-    public function isClassMapAuthoritative()
-    {
-        return $this->classMapAuthoritative;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param bool $prepend Whether to prepend the autoloader or not
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Unregisters this instance as an autoloader.
-     */
-    public function unregister()
-    {
-        spl_autoload_unregister(array($this, 'loadClass'));
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param  string    $class The name of the class
-     * @return bool|null True if loaded, null otherwise
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            includeFile($file);
-
-            return true;
-        }
-    }
-
-    /**
-     * Finds the path to the file where the class is defined.
-     *
-     * @param string $class The name of the class
-     *
-     * @return string|false The path if found, false otherwise
-     */
-    public function findFile($class)
-    {
-        // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
-        if ('\\' == $class[0]) {
-            $class = substr($class, 1);
-        }
-
-        // class map lookup
-        if (isset($this->classMap[$class])) {
-            return $this->classMap[$class];
-        }
-        if ($this->classMapAuthoritative) {
-            return false;
-        }
-
-        $file = $this->findFileWithExtension($class, '.php');
-
-        // Search for Hack files if we are running on HHVM
-        if ($file === null && defined('HHVM_VERSION')) {
-            $file = $this->findFileWithExtension($class, '.hh');
-        }
-
-        if ($file === null) {
-            // Remember that this class does not exist.
-            return $this->classMap[$class] = false;
-        }
-
-        return $file;
-    }
-
-    private function findFileWithExtension($class, $ext)
-    {
-        // PSR-4 lookup
-        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
-
-        $first = $class[0];
-        if (isset($this->prefixLengthsPsr4[$first])) {
-            foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
-                if (0 === strpos($class, $prefix)) {
-                    foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
-                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
-                            return $file;
-                        }
-                    }
-                }
-            }
-        }
-
-        // PSR-4 fallback dirs
-        foreach ($this->fallbackDirsPsr4 as $dir) {
-            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
-                return $file;
-            }
-        }
-
-        // PSR-0 lookup
-        if (false !== $pos = strrpos($class, '\\')) {
-            // namespaced class name
-            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
-                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
-        } else {
-            // PEAR-like class name
-            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
-        }
-
-        if (isset($this->prefixesPsr0[$first])) {
-            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
-                if (0 === strpos($class, $prefix)) {
-                    foreach ($dirs as $dir) {
-                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
-                            return $file;
-                        }
-                    }
-                }
-            }
-        }
-
-        // PSR-0 fallback dirs
-        foreach ($this->fallbackDirsPsr0 as $dir) {
-            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
-                return $file;
-            }
-        }
-
-        // PSR-0 include paths.
-        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
-            return $file;
-        }
-    }
-}
-
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- */
-function includeFile($file)
-{
-    include $file;
-}
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
deleted file mode 100644
index c8d57af..0000000
--- a/vendor/composer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-
-Copyright (c) 2015 Nils Adermann, Jordi Boggiano
-
-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/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
deleted file mode 100644
index fac9eab..0000000
--- a/vendor/composer/autoload_classmap.php
+++ /dev/null
@@ -1,458 +0,0 @@
-<?php
-
-// autoload_classmap.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    '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',
-    'Drupal\\Core\\DrupalKernel' => $baseDir . '/core/lib/Drupal/Core/DrupalKernel.php',
-    'Drupal\\Core\\DrupalKernelInterface' => $baseDir . '/core/lib/Drupal/Core/DrupalKernelInterface.php',
-    'Drupal\\Core\\Site\\Settings' => $baseDir . '/core/lib/Drupal/Core/Site/Settings.php',
-    'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
-    'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
-    'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
-    'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
-    'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
-    'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
-    'PHPUnit_Extensions_PhptTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
-    'PHPUnit_Extensions_RepeatedTest' => $vendorDir . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
-    'PHPUnit_Extensions_TestDecorator' => $vendorDir . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
-    'PHPUnit_Extensions_TicketListener' => $vendorDir . '/phpunit/phpunit/src/Extensions/TicketListener.php',
-    'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
-    'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
-    'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
-    'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
-    'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php',
-    'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php',
-    'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
-    'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
-    'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
-    'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
-    'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
-    'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
-    'PHPUnit_Framework_Constraint_Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
-    'PHPUnit_Framework_Constraint_Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
-    'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
-    'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
-    'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
-    'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
-    'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
-    'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
-    'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
-    'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
-    'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
-    'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
-    'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
-    'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
-    'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
-    'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
-    'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
-    'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
-    'PHPUnit_Framework_Constraint_JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
-    'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
-    'PHPUnit_Framework_Constraint_LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
-    'PHPUnit_Framework_Constraint_Not' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
-    'PHPUnit_Framework_Constraint_ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
-    'PHPUnit_Framework_Constraint_Or' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
-    'PHPUnit_Framework_Constraint_PCREMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
-    'PHPUnit_Framework_Constraint_SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
-    'PHPUnit_Framework_Constraint_StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
-    'PHPUnit_Framework_Constraint_StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
-    'PHPUnit_Framework_Constraint_StringMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
-    'PHPUnit_Framework_Constraint_StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
-    'PHPUnit_Framework_Constraint_TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
-    'PHPUnit_Framework_Constraint_TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
-    'PHPUnit_Framework_Constraint_Xor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
-    'PHPUnit_Framework_Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error.php',
-    'PHPUnit_Framework_Error_Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
-    'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
-    'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
-    'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
-    'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
-    'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
-    'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
-    'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
-    'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
-    'PHPUnit_Framework_InvalidCoversTargetError' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php',
-    'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
-    'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
-    'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
-    'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
-    'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
-    'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
-    'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
-    'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
-    'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
-    'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
-    'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
-    'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
-    'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
-    'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
-    'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
-    'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
-    'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
-    'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
-    'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
-    'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
-    'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
-    'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
-    'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
-    'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
-    'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
-    'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
-    'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
-    'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
-    'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
-    'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
-    'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
-    'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
-    'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
-    'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
-    'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
-    'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
-    'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
-    'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
-    'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
-    'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
-    'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
-    'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
-    'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
-    'PHPUnit_Framework_OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
-    'PHPUnit_Framework_RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
-    'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
-    'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
-    'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
-    'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
-    'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
-    'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
-    'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
-    'PHPUnit_Framework_Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
-    'PHPUnit_Framework_TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
-    'PHPUnit_Framework_TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
-    'PHPUnit_Framework_TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
-    'PHPUnit_Framework_TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
-    'PHPUnit_Framework_TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
-    'PHPUnit_Framework_TestSuite_DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
-    'PHPUnit_Framework_UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
-    'PHPUnit_Framework_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
-    'PHPUnit_Runner_BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
-    'PHPUnit_Runner_Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
-    'PHPUnit_Runner_Filter_Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
-    'PHPUnit_Runner_Filter_GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group.php',
-    'PHPUnit_Runner_Filter_Group_Exclude' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
-    'PHPUnit_Runner_Filter_Group_Include' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
-    'PHPUnit_Runner_Filter_Test' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Test.php',
-    'PHPUnit_Runner_StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
-    'PHPUnit_Runner_TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
-    'PHPUnit_Runner_Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
-    'PHPUnit_TextUI_Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
-    'PHPUnit_TextUI_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
-    'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
-    'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
-    'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
-    'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
-    'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
-    'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
-    'PHPUnit_Util_Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
-    'PHPUnit_Util_Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
-    'PHPUnit_Util_GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
-    'PHPUnit_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
-    'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php',
-    'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
-    'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php',
-    'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php',
-    'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php',
-    'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php',
-    'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
-    'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php',
-    'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php',
-    'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
-    'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
-    'PHPUnit_Util_TestDox_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
-    'PHPUnit_Util_TestDox_ResultPrinter_HTML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
-    'PHPUnit_Util_TestDox_ResultPrinter_Text' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
-    'PHPUnit_Util_TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
-    'PHPUnit_Util_Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
-    'PHPUnit_Util_XML' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php',
-    'PHP_CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
-    'PHP_CodeCoverage_Driver' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver.php',
-    'PHP_CodeCoverage_Driver_HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php',
-    'PHP_CodeCoverage_Driver_PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php',
-    'PHP_CodeCoverage_Driver_Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php',
-    'PHP_CodeCoverage_Exception' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception.php',
-    'PHP_CodeCoverage_Exception_UnintentionallyCoveredCode' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php',
-    'PHP_CodeCoverage_Filter' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Filter.php',
-    'PHP_CodeCoverage_Report_Clover' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php',
-    'PHP_CodeCoverage_Report_Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php',
-    'PHP_CodeCoverage_Report_Factory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php',
-    'PHP_CodeCoverage_Report_HTML' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php',
-    'PHP_CodeCoverage_Report_HTML_Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php',
-    'PHP_CodeCoverage_Report_HTML_Renderer_Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php',
-    'PHP_CodeCoverage_Report_HTML_Renderer_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php',
-    'PHP_CodeCoverage_Report_HTML_Renderer_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php',
-    'PHP_CodeCoverage_Report_Node' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php',
-    'PHP_CodeCoverage_Report_Node_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php',
-    'PHP_CodeCoverage_Report_Node_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php',
-    'PHP_CodeCoverage_Report_Node_Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php',
-    'PHP_CodeCoverage_Report_PHP' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php',
-    'PHP_CodeCoverage_Report_Text' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php',
-    'PHP_CodeCoverage_Report_XML' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php',
-    'PHP_CodeCoverage_Report_XML_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php',
-    'PHP_CodeCoverage_Report_XML_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php',
-    'PHP_CodeCoverage_Report_XML_File_Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php',
-    'PHP_CodeCoverage_Report_XML_File_Method' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php',
-    'PHP_CodeCoverage_Report_XML_File_Report' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php',
-    'PHP_CodeCoverage_Report_XML_File_Unit' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php',
-    'PHP_CodeCoverage_Report_XML_Node' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php',
-    'PHP_CodeCoverage_Report_XML_Project' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php',
-    'PHP_CodeCoverage_Report_XML_Tests' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php',
-    'PHP_CodeCoverage_Report_XML_Totals' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php',
-    'PHP_CodeCoverage_Util' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util.php',
-    'PHP_CodeCoverage_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php',
-    'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
-    'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php',
-    'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
-    'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
-    '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',
-    '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',
-    'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php',
-    'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php',
-    'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php',
-    'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php',
-    'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php',
-    'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php',
-    'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php',
-    'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php',
-    'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php',
-    'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php',
-    'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php',
-    'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php',
-    'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
-    'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
-    'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
-    'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => $vendorDir . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
-    'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
-    'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
-    'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
-    'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
-    'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
-    '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\\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',
-    'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
-    'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
-    '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',
-    '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',
-    'Symfony\\Component\\HttpFoundation\\Request' => $vendorDir . '/symfony/http-foundation/Request.php',
-    'Symfony\\Component\\HttpFoundation\\ServerBag' => $vendorDir . '/symfony/http-foundation/ServerBag.php',
-    'Symfony\\Component\\HttpKernel\\HttpKernel' => $vendorDir . '/symfony/http-kernel/HttpKernel.php',
-    'Symfony\\Component\\HttpKernel\\HttpKernelInterface' => $vendorDir . '/symfony/http-kernel/HttpKernelInterface.php',
-    'Symfony\\Component\\HttpKernel\\TerminableInterface' => $vendorDir . '/symfony/http-kernel/TerminableInterface.php',
-    'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
-);
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
deleted file mode 100644
index 9a2fb75..0000000
--- a/vendor/composer/autoload_files.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-// autoload_files.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
-    'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
-    '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
-    '5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php',
-    '454414594637b9dd94a19af83f56f1a2' => $baseDir . '/core/lib/Drupal.php',
-);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
deleted file mode 100644
index bb43043..0000000
--- a/vendor/composer/autoload_namespaces.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-// autoload_namespaces.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    'phpDocumentor' => array($vendorDir . '/phpdocumentor/reflection-docblock/src'),
-    'org\\bovigo\\vfs\\' => array($vendorDir . '/mikey179/vfsStream/src/main/php'),
-    'Twig_' => array($vendorDir . '/twig/twig/lib'),
-    'Stack' => array($vendorDir . '/stack/builder/src'),
-    'Psr\\Log\\' => array($vendorDir . '/psr/log'),
-    'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'),
-    'Egulias\\' => array($vendorDir . '/egulias/email-validator/src'),
-    'EasyRdf_' => array($vendorDir . '/easyrdf/easyrdf/lib'),
-    '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
deleted file mode 100644
index 030a0de..0000000
--- a/vendor/composer/autoload_psr4.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-// autoload_psr4.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    'Zumba\\Mink\\Driver\\' => array($vendorDir . '/jcalderonzumba/mink-phantomjs-driver/src'),
-    'Zumba\\GastonJS\\' => array($vendorDir . '/jcalderonzumba/gastonjs/src'),
-    'Zend\\Stdlib\\' => array($vendorDir . '/zendframework/zend-stdlib/src'),
-    'Zend\\Hydrator\\' => array($vendorDir . '/zendframework/zend-hydrator/src'),
-    'Zend\\Feed\\' => array($vendorDir . '/zendframework/zend-feed/src'),
-    '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\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
-    'Symfony\\Component\\Validator\\' => array($vendorDir . '/symfony/validator'),
-    'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'),
-    'Symfony\\Component\\Serializer\\' => array($vendorDir . '/symfony/serializer'),
-    'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'),
-    'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'),
-    'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'),
-    'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'),
-    'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'),
-    'Symfony\\Component\\DomCrawler\\' => array($vendorDir . '/symfony/dom-crawler'),
-    'Symfony\\Component\\DependencyInjection\\' => array($vendorDir . '/symfony/dependency-injection'),
-    'Symfony\\Component\\Debug\\' => array($vendorDir . '/symfony/debug'),
-    'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'),
-    'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
-    'Symfony\\Component\\ClassLoader\\' => array($vendorDir . '/symfony/class-loader'),
-    'Symfony\\Component\\BrowserKit\\' => array($vendorDir . '/symfony/browser-kit'),
-    'Symfony\\Cmf\\Component\\Routing\\' => array($vendorDir . '/symfony-cmf/routing'),
-    'Symfony\\Bridge\\PsrHttpMessage\\' => array($vendorDir . '/symfony/psr-http-message-bridge'),
-    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
-    'Masterminds\\' => array($vendorDir . '/masterminds/html5/src'),
-    'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
-    'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
-    'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
-    'Goutte\\' => array($vendorDir . '/fabpot/goutte/Goutte'),
-    'Drupal\\Driver\\' => array($baseDir . '/drivers/lib/Drupal/Driver'),
-    'Drupal\\Core\\Composer\\' => array($baseDir . '/core/lib/Drupal/Core/Composer'),
-    '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'),
-    '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
deleted file mode 100644
index 4303fce..0000000
--- a/vendor/composer/autoload_real.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-// autoload_real.php @generated by Composer
-
-class ComposerAutoloaderInitDrupal8
-{
-    private static $loader;
-
-    public static function loadClassLoader($class)
-    {
-        if ('Composer\Autoload\ClassLoader' === $class) {
-            require __DIR__ . '/ClassLoader.php';
-        }
-    }
-
-    public static function getLoader()
-    {
-        if (null !== self::$loader) {
-            return self::$loader;
-        }
-
-        spl_autoload_register(array('ComposerAutoloaderInitDrupal8', 'loadClassLoader'), true, true);
-        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        spl_autoload_unregister(array('ComposerAutoloaderInitDrupal8', 'loadClassLoader'));
-
-        $map = require __DIR__ . '/autoload_namespaces.php';
-        foreach ($map as $namespace => $path) {
-            $loader->set($namespace, $path);
-        }
-
-        $map = require __DIR__ . '/autoload_psr4.php';
-        foreach ($map as $namespace => $path) {
-            $loader->setPsr4($namespace, $path);
-        }
-
-        $classMap = require __DIR__ . '/autoload_classmap.php';
-        if ($classMap) {
-            $loader->addClassMap($classMap);
-        }
-
-        $loader->register(true);
-
-        $includeFiles = require __DIR__ . '/autoload_files.php';
-        foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequireDrupal8($fileIdentifier, $file);
-        }
-
-        return $loader;
-    }
-}
-
-function composerRequireDrupal8($fileIdentifier, $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
deleted file mode 100644
index ac6e43f..0000000
--- a/vendor/composer/installed.json
+++ /dev/null
@@ -1,3911 +0,0 @@
-[
-    {
-        "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",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/doctrine/lexer.git",
-            "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
-            "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.2"
-        },
-        "time": "2014-09-09 13:34:57",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Doctrine\\Common\\Lexer\\": "lib/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Roman Borschel",
-                "email": "roman@code-factory.org"
-            },
-            {
-                "name": "Guilherme Blanco",
-                "email": "guilhermeblanco@gmail.com"
-            },
-            {
-                "name": "Johannes Schmitt",
-                "email": "schmittjoh@gmail.com"
-            }
-        ],
-        "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
-        "homepage": "http://www.doctrine-project.org",
-        "keywords": [
-            "lexer",
-            "parser"
-        ]
-    },
-    {
-        "name": "doctrine/inflector",
-        "version": "v1.0.1",
-        "version_normalized": "1.0.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/doctrine/inflector.git",
-            "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/inflector/zipball/0bcb2e79d8571787f18b7eb036ed3d004908e604",
-            "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.2"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "4.*"
-        },
-        "time": "2014-12-20 21:24:13",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Doctrine\\Common\\Inflector\\": "lib/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "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"
-            }
-        ],
-        "description": "Common String Manipulations with regard to casing and singular/plural rules.",
-        "homepage": "http://www.doctrine-project.org",
-        "keywords": [
-            "inflection",
-            "pluralize",
-            "singularize",
-            "string"
-        ]
-    },
-    {
-        "name": "doctrine/collections",
-        "version": "v1.3.0",
-        "version_normalized": "1.3.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/doctrine/collections.git",
-            "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
-            "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.2"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.0"
-        },
-        "time": "2015-04-14 22:21:58",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.2.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Doctrine\\Common\\Collections\\": "lib/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "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"
-            }
-        ],
-        "description": "Collections Abstraction library",
-        "homepage": "http://www.doctrine-project.org",
-        "keywords": [
-            "array",
-            "collections",
-            "iterator"
-        ]
-    },
-    {
-        "name": "doctrine/cache",
-        "version": "v1.4.2",
-        "version_normalized": "1.4.2.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/doctrine/cache.git",
-            "reference": "8c434000f420ade76a07c64cbe08ca47e5c101ca"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/cache/zipball/8c434000f420ade76a07c64cbe08ca47e5c101ca",
-            "reference": "8c434000f420ade76a07c64cbe08ca47e5c101ca",
-            "shasum": ""
-        },
-        "require": {
-            "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"
-        },
-        "time": "2015-08-31 12:36:41",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.5.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Doctrine\\Common\\Cache\\": "lib/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "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"
-            }
-        ],
-        "description": "Caching library offering an object-oriented API for many cache backends",
-        "homepage": "http://www.doctrine-project.org",
-        "keywords": [
-            "cache",
-            "caching"
-        ]
-    },
-    {
-        "name": "doctrine/annotations",
-        "version": "v1.2.7",
-        "version_normalized": "1.2.7.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/doctrine/annotations.git",
-            "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
-            "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
-            "shasum": ""
-        },
-        "require": {
-            "doctrine/lexer": "1.*",
-            "php": ">=5.3.2"
-        },
-        "require-dev": {
-            "doctrine/cache": "1.*",
-            "phpunit/phpunit": "4.*"
-        },
-        "time": "2015-08-31 12:32:49",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.3.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Doctrine\\Common\\Annotations\\": "lib/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "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"
-            }
-        ],
-        "description": "Docblock Annotations Parser",
-        "homepage": "http://www.doctrine-project.org",
-        "keywords": [
-            "annotations",
-            "docblock",
-            "parser"
-        ]
-    },
-    {
-        "name": "doctrine/common",
-        "version": "v2.5.1",
-        "version_normalized": "2.5.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/doctrine/common.git",
-            "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9"
-        },
-        "dist": {
-            "type": "zip",
-            "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"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~3.7"
-        },
-        "time": "2015-08-31 13:00:22",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.6.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Doctrine\\Common\\": "lib/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "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"
-            }
-        ],
-        "description": "Common Library for Doctrine projects",
-        "homepage": "http://www.doctrine-project.org",
-        "keywords": [
-            "annotations",
-            "collections",
-            "eventmanager",
-            "persistence",
-            "spl"
-        ]
-    },
-    {
-        "name": "easyrdf/easyrdf",
-        "version": "0.9.1",
-        "version_normalized": "0.9.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/njh/easyrdf.git",
-            "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/njh/easyrdf/zipball/acd09dfe0555fbcfa254291e433c45fdd4652566",
-            "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566",
-            "shasum": ""
-        },
-        "require": {
-            "ext-mbstring": "*",
-            "ext-pcre": "*",
-            "php": ">=5.2.8"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~3.5",
-            "sami/sami": "~1.4",
-            "squizlabs/php_codesniffer": "~1.4.3"
-        },
-        "suggest": {
-            "ml/json-ld": "~1.0"
-        },
-        "time": "2015-02-27 09:45:49",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "EasyRdf_": "lib/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Nicholas Humfrey",
-                "email": "njh@aelius.com",
-                "homepage": "http://www.aelius.com/njh/",
-                "role": "Developer"
-            },
-            {
-                "name": "Alexey Zakhlestin",
-                "email": "indeyets@gmail.com",
-                "role": "Developer"
-            }
-        ],
-        "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.",
-        "homepage": "http://www.easyrdf.org/",
-        "keywords": [
-            "Linked Data",
-            "RDF",
-            "Semantic Web",
-            "Turtle",
-            "rdfa",
-            "sparql"
-        ]
-    },
-    {
-        "name": "egulias/email-validator",
-        "version": "1.2.9",
-        "version_normalized": "1.2.9.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/egulias/EmailValidator.git",
-            "reference": "af864423f50ea59f96c87bb1eae147a70bcf67a1"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/af864423f50ea59f96c87bb1eae147a70bcf67a1",
-            "reference": "af864423f50ea59f96c87bb1eae147a70bcf67a1",
-            "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",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Egulias\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Eduardo Gulias Davis"
-            }
-        ],
-        "description": "A library for validating emails",
-        "homepage": "https://github.com/egulias/EmailValidator",
-        "keywords": [
-            "email",
-            "emailvalidation",
-            "emailvalidator",
-            "validation",
-            "validator"
-        ]
-    },
-    {
-        "name": "guzzlehttp/promises",
-        "version": "1.0.2",
-        "version_normalized": "1.0.2.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/guzzle/promises.git",
-            "reference": "97fe7210def29451ec74923b27e552238defd75a"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/promises/zipball/97fe7210def29451ec74923b27e552238defd75a",
-            "reference": "97fe7210def29451ec74923b27e552238defd75a",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.5.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.0"
-        },
-        "time": "2015-08-15 19:37:21",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "GuzzleHttp\\Promise\\": "src/"
-            },
-            "files": [
-                "src/functions_include.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
-            }
-        ],
-        "description": "Guzzle promises library",
-        "keywords": [
-            "promise"
-        ]
-    },
-    {
-        "name": "psr/http-message",
-        "version": "1.0",
-        "version_normalized": "1.0.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/php-fig/http-message.git",
-            "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
-            "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0"
-        },
-        "time": "2015-05-04 20:22:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Psr\\Http\\Message\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "PHP-FIG",
-                "homepage": "http://www.php-fig.org/"
-            }
-        ],
-        "description": "Common interface for HTTP messages",
-        "keywords": [
-            "http",
-            "http-message",
-            "psr",
-            "psr-7",
-            "request",
-            "response"
-        ]
-    },
-    {
-        "name": "guzzlehttp/psr7",
-        "version": "1.2.0",
-        "version_normalized": "1.2.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/guzzle/psr7.git",
-            "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/psr7/zipball/4ef919b0cf3b1989523138b60163bbcb7ba1ff7e",
-            "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.4.0",
-            "psr/http-message": "~1.0"
-        },
-        "provide": {
-            "psr/http-message-implementation": "1.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.0"
-        },
-        "time": "2015-08-15 19:32:36",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "GuzzleHttp\\Psr7\\": "src/"
-            },
-            "files": [
-                "src/functions_include.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
-            }
-        ],
-        "description": "PSR-7 message implementation",
-        "keywords": [
-            "http",
-            "message",
-            "stream",
-            "uri"
-        ]
-    },
-    {
-        "name": "masterminds/html5",
-        "version": "2.1.2",
-        "version_normalized": "2.1.2.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/Masterminds/html5-php.git",
-            "reference": "8f782e0f01a6e33a319bdc8f6de9cfd6569979a4"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/8f782e0f01a6e33a319bdc8f6de9cfd6569979a4",
-            "reference": "8f782e0f01a6e33a319bdc8f6de9cfd6569979a4",
-            "shasum": ""
-        },
-        "require": {
-            "ext-libxml": "*",
-            "php": ">=5.3.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "4.*",
-            "sami/sami": "~2.0",
-            "satooshi/php-coveralls": "0.6.*"
-        },
-        "time": "2015-06-07 08:43:18",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.1-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Masterminds\\": "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"
-            }
-        ],
-        "description": "An HTML5 parser and serializer.",
-        "homepage": "http://masterminds.github.io/html5-php",
-        "keywords": [
-            "HTML5",
-            "dom",
-            "html",
-            "parser",
-            "querypath",
-            "serializer",
-            "xml"
-        ]
-    },
-    {
-        "name": "psr/log",
-        "version": "1.0.0",
-        "version_normalized": "1.0.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/php-fig/log.git",
-            "reference": "1.0.0"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
-            "reference": "1.0.0",
-            "shasum": ""
-        },
-        "time": "2012-12-21 11:40:51",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Psr\\Log\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "PHP-FIG",
-                "homepage": "http://www.php-fig.org/"
-            }
-        ],
-        "description": "Common interface for logging libraries",
-        "keywords": [
-            "log",
-            "psr",
-            "psr-3"
-        ]
-    },
-    {
-        "name": "stack/builder",
-        "version": "v1.0.3",
-        "version_normalized": "1.0.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/stackphp/builder.git",
-            "reference": "c1f8a4693b55c563405024f708a76ef576c3b276"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/stackphp/builder/zipball/c1f8a4693b55c563405024f708a76ef576c3b276",
-            "reference": "c1f8a4693b55c563405024f708a76ef576c3b276",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0",
-            "symfony/http-foundation": "~2.1",
-            "symfony/http-kernel": "~2.1"
-        },
-        "require-dev": {
-            "silex/silex": "~1.0"
-        },
-        "time": "2014-11-23 20:37:11",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Stack": "src"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Igor Wiedler",
-                "email": "igor@wiedler.ch"
-            }
-        ],
-        "description": "Builder for stack middlewares based on HttpKernelInterface.",
-        "keywords": [
-            "stack"
-        ]
-    },
-    {
-        "name": "symfony-cmf/routing",
-        "version": "1.3.0",
-        "version_normalized": "1.3.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony-cmf/Routing.git",
-            "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/8e87981d72c6930a27585dcd3119f3199f6cb2a6",
-            "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3",
-            "psr/log": "~1.0",
-            "symfony/http-kernel": "~2.2",
-            "symfony/routing": "~2.2"
-        },
-        "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.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Cmf\\Component\\Routing\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Symfony CMF Community",
-                "homepage": "https://github.com/symfony-cmf/Routing/contributors"
-            }
-        ],
-        "description": "Extends the Symfony2 routing component for dynamic routes and chaining several routers",
-        "homepage": "http://cmf.symfony.com",
-        "keywords": [
-            "database",
-            "routing"
-        ]
-    },
-    {
-        "name": "symfony/psr-http-message-bridge",
-        "version": "v0.2",
-        "version_normalized": "0.2.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/psr-http-message-bridge.git",
-            "reference": "dc7e308e1dc2898a46776e2221a643cb08315453"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/dc7e308e1dc2898a46776e2221a643cb08315453",
-            "reference": "dc7e308e1dc2898a46776e2221a643cb08315453",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3",
-            "psr/http-message": "~1.0",
-            "symfony/http-foundation": "~2.3|~3.0"
-        },
-        "require-dev": {
-            "symfony/phpunit-bridge": "~2.7|~3.0"
-        },
-        "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": {
-                "Symfony\\Bridge\\PsrHttpMessage\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Symfony Community",
-                "homepage": "http://symfony.com/contributors"
-            },
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            }
-        ],
-        "description": "PSR HTTP message bridge",
-        "homepage": "http://symfony.com",
-        "keywords": [
-            "http",
-            "http-message",
-            "psr-7"
-        ]
-    },
-    {
-        "name": "zendframework/zend-diactoros",
-        "version": "1.1.3",
-        "version_normalized": "1.1.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/zendframework/zend-diactoros.git",
-            "reference": "e2f5c12916c74da384058d0dfbc7fbc0b03d1181"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/e2f5c12916c74da384058d0dfbc7fbc0b03d1181",
-            "reference": "e2f5c12916c74da384058d0dfbc7fbc0b03d1181",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.4",
-            "psr/http-message": "~1.0"
-        },
-        "provide": {
-            "psr/http-message-implementation": "~1.0.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.6",
-            "squizlabs/php_codesniffer": "^2.3.1"
-        },
-        "time": "2015-08-10 20:04:20",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0-dev",
-                "dev-develop": "1.1-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Zend\\Diactoros\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-2-Clause"
-        ],
-        "description": "PSR HTTP Message implementations",
-        "homepage": "https://github.com/zendframework/zend-diactoros",
-        "keywords": [
-            "http",
-            "psr",
-            "psr-7"
-        ]
-    },
-    {
-        "name": "zendframework/zend-stdlib",
-        "version": "2.7.3",
-        "version_normalized": "2.7.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/zendframework/zend-stdlib.git",
-            "reference": "8ac0c77ff567fcf49b58689ee3bfa7595be102bc"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/8ac0c77ff567fcf49b58689ee3bfa7595be102bc",
-            "reference": "8ac0c77ff567fcf49b58689ee3bfa7595be102bc",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.5",
-            "zendframework/zend-hydrator": "~1.0"
-        },
-        "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"
-        },
-        "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"
-        },
-        "time": "2015-09-25 04:06:33",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev",
-                "dev-develop": "2.8-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Zend\\Stdlib\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "homepage": "https://github.com/zendframework/zend-stdlib",
-        "keywords": [
-            "stdlib",
-            "zf2"
-        ]
-    },
-    {
-        "name": "zendframework/zend-hydrator",
-        "version": "1.0.0",
-        "version_normalized": "1.0.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/zendframework/zend-hydrator.git",
-            "reference": "f3ed8b833355140350bbed98d8a7b8b66875903f"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/f3ed8b833355140350bbed98d8a7b8b66875903f",
-            "reference": "f3ed8b833355140350bbed98d8a7b8b66875903f",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.5",
-            "zendframework/zend-stdlib": "^2.5.1"
-        },
-        "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"
-        },
-        "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": "1.0-dev",
-                "dev-develop": "1.1-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Zend\\Hydrator\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "homepage": "https://github.com/zendframework/zend-hydrator",
-        "keywords": [
-            "hydrator",
-            "zf2"
-        ]
-    },
-    {
-        "name": "zendframework/zend-escaper",
-        "version": "2.5.1",
-        "version_normalized": "2.5.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/zendframework/zend-escaper.git",
-            "reference": "a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73",
-            "reference": "a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73",
-            "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",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.5-dev",
-                "dev-develop": "2.6-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Zend\\Escaper\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "homepage": "https://github.com/zendframework/zend-escaper",
-        "keywords": [
-            "escaper",
-            "zf2"
-        ]
-    },
-    {
-        "name": "zendframework/zend-feed",
-        "version": "2.5.2",
-        "version_normalized": "2.5.2.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/zendframework/zend-feed.git",
-            "reference": "0661345b82b51428619e05d3aadd3de65b57fa54"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/zend-feed/zipball/0661345b82b51428619e05d3aadd3de65b57fa54",
-            "reference": "0661345b82b51428619e05d3aadd3de65b57fa54",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.5",
-            "zendframework/zend-escaper": "~2.5",
-            "zendframework/zend-stdlib": "~2.5"
-        },
-        "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"
-        },
-        "time": "2015-08-04 21:39:18",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.5-dev",
-                "dev-develop": "2.6-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Zend\\Feed\\": "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"
-        ]
-    },
-    {
-        "name": "guzzlehttp/guzzle",
-        "version": "6.1.0",
-        "version_normalized": "6.1.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/guzzle/guzzle.git",
-            "reference": "66fd14b4d0b8f2389eaf37c5458608c7cb793a81"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/guzzle/zipball/66fd14b4d0b8f2389eaf37c5458608c7cb793a81",
-            "reference": "66fd14b4d0b8f2389eaf37c5458608c7cb793a81",
-            "shasum": ""
-        },
-        "require": {
-            "guzzlehttp/promises": "~1.0",
-            "guzzlehttp/psr7": "~1.1",
-            "php": ">=5.5.0"
-        },
-        "require-dev": {
-            "ext-curl": "*",
-            "phpunit/phpunit": "~4.0",
-            "psr/log": "~1.0"
-        },
-        "time": "2015-09-08 17:36:26",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "6.1-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "files": [
-                "src/functions_include.php"
-            ],
-            "psr-4": {
-                "GuzzleHttp\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
-            }
-        ],
-        "description": "Guzzle is a PHP HTTP client library",
-        "homepage": "http://guzzlephp.org/",
-        "keywords": [
-            "client",
-            "curl",
-            "framework",
-            "http",
-            "http client",
-            "rest",
-            "web service"
-        ]
-    },
-    {
-        "name": "fabpot/goutte",
-        "version": "v3.1.1",
-        "version_normalized": "3.1.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/FriendsOfPHP/Goutte.git",
-            "reference": "751a3dc5c4d86ec3e97c9f27133ef9694d9243cc"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/751a3dc5c4d86ec3e97c9f27133ef9694d9243cc",
-            "reference": "751a3dc5c4d86ec3e97c9f27133ef9694d9243cc",
-            "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"
-        },
-        "time": "2015-08-29 16:16:56",
-        "type": "application",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "3.1-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Goutte\\": "Goutte"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            }
-        ],
-        "description": "A simple PHP Web Scraper",
-        "homepage": "https://github.com/FriendsOfPHP/Goutte",
-        "keywords": [
-            "scraper"
-        ]
-    },
-    {
-        "name": "behat/mink",
-        "version": "v1.7.0",
-        "version_normalized": "1.7.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/minkphp/Mink.git",
-            "reference": "6c129030ec2cc029905cf969a56ca8f087b2dfdf"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/minkphp/Mink/zipball/6c129030ec2cc029905cf969a56ca8f087b2dfdf",
-            "reference": "6c129030ec2cc029905cf969a56ca8f087b2dfdf",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.1",
-            "symfony/css-selector": "~2.1"
-        },
-        "require-dev": {
-            "symfony/phpunit-bridge": "~2.7"
-        },
-        "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.7.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Behat\\Mink\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Konstantin Kudryashov",
-                "email": "ever.zet@gmail.com",
-                "homepage": "http://everzet.com"
-            }
-        ],
-        "description": "Browser controller/emulator abstraction for PHP",
-        "homepage": "http://mink.behat.org/",
-        "keywords": [
-            "browser",
-            "testing",
-            "web"
-        ]
-    },
-    {
-        "name": "behat/mink-browserkit-driver",
-        "version": "v1.3.0",
-        "version_normalized": "1.3.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/minkphp/MinkBrowserKitDriver.git",
-            "reference": "da47df1593dac132f04d24e7277ef40d33d9f201"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/da47df1593dac132f04d24e7277ef40d33d9f201",
-            "reference": "da47df1593dac132f04d24e7277ef40d33d9f201",
-            "shasum": ""
-        },
-        "require": {
-            "behat/mink": "~1.7@dev",
-            "php": ">=5.3.6",
-            "symfony/browser-kit": "~2.3",
-            "symfony/dom-crawler": "~2.3"
-        },
-        "require-dev": {
-            "silex/silex": "~1.2",
-            "symfony/phpunit-bridge": "~2.7"
-        },
-        "time": "2015-09-21 20:56:13",
-        "type": "mink-driver",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.3.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Behat\\Mink\\Driver\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Konstantin Kudryashov",
-                "email": "ever.zet@gmail.com",
-                "homepage": "http://everzet.com"
-            }
-        ],
-        "description": "Symfony2 BrowserKit driver for Mink framework",
-        "homepage": "http://mink.behat.org/",
-        "keywords": [
-            "Mink",
-            "Symfony2",
-            "browser",
-            "testing"
-        ]
-    },
-    {
-        "name": "behat/mink-goutte-driver",
-        "version": "v1.2.0",
-        "version_normalized": "1.2.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/minkphp/MinkGoutteDriver.git",
-            "reference": "c8e254f127d6f2242b994afd4339fb62d471df3f"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/c8e254f127d6f2242b994afd4339fb62d471df3f",
-            "reference": "c8e254f127d6f2242b994afd4339fb62d471df3f",
-            "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"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Behat\\Mink\\Driver\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Konstantin Kudryashov",
-                "email": "ever.zet@gmail.com",
-                "homepage": "http://everzet.com"
-            }
-        ],
-        "description": "Goutte driver for Mink framework",
-        "homepage": "http://mink.behat.org/",
-        "keywords": [
-            "browser",
-            "goutte",
-            "headless",
-            "testing"
-        ]
-    },
-    {
-        "name": "mikey179/vfsStream",
-        "version": "v1.6.0",
-        "version_normalized": "1.6.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/mikey179/vfsStream.git",
-            "reference": "73bcb605b741a7d5044b47592338c633788b0eb7"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/73bcb605b741a7d5044b47592338c633788b0eb7",
-            "reference": "73bcb605b741a7d5044b47592338c633788b0eb7",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.5"
-        },
-        "time": "2015-10-06 16:59:57",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.6.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "org\\bovigo\\vfs\\": "src/main/php"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "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": "phpdocumentor/reflection-docblock",
-        "version": "2.0.4",
-        "version_normalized": "2.0.4.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-            "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
-            "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.0"
-        },
-        "suggest": {
-            "dflydev/markdown": "~1.0",
-            "erusev/parsedown": "~1.0"
-        },
-        "time": "2015-02-03 12:10:50",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "phpDocumentor": [
-                    "src/"
-                ]
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Mike van Riel",
-                "email": "mike.vanriel@naenius.com"
-            }
-        ]
-    },
-    {
-        "name": "phpunit/php-token-stream",
-        "version": "1.4.8",
-        "version_normalized": "1.4.8.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-            "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
-            "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
-            "shasum": ""
-        },
-        "require": {
-            "ext-tokenizer": "*",
-            "php": ">=5.3.3"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.2"
-        },
-        "time": "2015-09-15 10:49:45",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.4-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
-            }
-        ],
-        "description": "Wrapper around PHP's tokenizer extension.",
-        "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
-        "keywords": [
-            "tokenizer"
-        ]
-    },
-    {
-        "name": "sebastian/version",
-        "version": "1.0.6",
-        "version_normalized": "1.0.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/version.git",
-            "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
-            "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
-            "shasum": ""
-        },
-        "time": "2015-06-21 13:59:46",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
-            }
-        ],
-        "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-        "homepage": "https://github.com/sebastianbergmann/version"
-    },
-    {
-        "name": "sebastian/global-state",
-        "version": "1.0.0",
-        "version_normalized": "1.0.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/global-state.git",
-            "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
-            "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.2"
-        },
-        "suggest": {
-            "ext-uopz": "*"
-        },
-        "time": "2014-10-06 09:23:50",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
-            }
-        ],
-        "description": "Snapshotting of global state",
-        "homepage": "http://www.github.com/sebastianbergmann/global-state",
-        "keywords": [
-            "global state"
-        ]
-    },
-    {
-        "name": "sebastian/recursion-context",
-        "version": "1.0.1",
-        "version_normalized": "1.0.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/recursion-context.git",
-            "reference": "994d4a811bafe801fb06dccbee797863ba2792ba"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
-            "reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.4"
-        },
-        "time": "2015-06-21 08:04:50",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.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": "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": "sebastian/exporter",
-        "version": "1.2.1",
-        "version_normalized": "1.2.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/exporter.git",
-            "reference": "7ae5513327cb536431847bcc0c10edba2701064e"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
-            "reference": "7ae5513327cb536431847bcc0c10edba2701064e",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3",
-            "sebastian/recursion-context": "~1.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.4"
-        },
-        "time": "2015-06-21 07:55:53",
-        "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"
-            },
-            {
-                "name": "Adam Harvey",
-                "email": "aharvey@php.net"
-            }
-        ],
-        "description": "Provides the functionality to export PHP variables for visualization",
-        "homepage": "http://www.github.com/sebastianbergmann/exporter",
-        "keywords": [
-            "export",
-            "exporter"
-        ]
-    },
-    {
-        "name": "sebastian/environment",
-        "version": "1.3.2",
-        "version_normalized": "1.3.2.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/environment.git",
-            "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44",
-            "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.4"
-        },
-        "time": "2015-08-03 06:14:51",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.3.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
-            }
-        ],
-        "description": "Provides functionality to handle HHVM/PHP environments",
-        "homepage": "http://www.github.com/sebastianbergmann/environment",
-        "keywords": [
-            "Xdebug",
-            "environment",
-            "hhvm"
-        ]
-    },
-    {
-        "name": "sebastian/diff",
-        "version": "1.3.0",
-        "version_normalized": "1.3.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/diff.git",
-            "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
-            "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.2"
-        },
-        "time": "2015-02-22 15:13:53",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Kore Nordmann",
-                "email": "mail@kore-nordmann.de"
-            },
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
-            }
-        ],
-        "description": "Diff implementation",
-        "homepage": "http://www.github.com/sebastianbergmann/diff",
-        "keywords": [
-            "diff"
-        ]
-    },
-    {
-        "name": "sebastian/comparator",
-        "version": "1.2.0",
-        "version_normalized": "1.2.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/comparator.git",
-            "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
-            "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3",
-            "sebastian/diff": "~1.2",
-            "sebastian/exporter": "~1.2"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.4"
-        },
-        "time": "2015-07-26 15:48:44",
-        "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"
-        },
-        "time": "2015-06-21 13:50:34",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
-            }
-        ],
-        "description": "Simple template engine.",
-        "homepage": "https://github.com/sebastianbergmann/php-text-template/",
-        "keywords": [
-            "template"
-        ]
-    },
-    {
-        "name": "doctrine/instantiator",
-        "version": "1.0.5",
-        "version_normalized": "1.0.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/doctrine/instantiator.git",
-            "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-            "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3,<8.0-DEV"
-        },
-        "require-dev": {
-            "athletic/athletic": "~0.1.8",
-            "ext-pdo": "*",
-            "ext-phar": "*",
-            "phpunit/phpunit": "~4.0",
-            "squizlabs/php_codesniffer": "~2.0"
-        },
-        "time": "2015-06-14 21:17:01",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Marco Pivetta",
-                "email": "ocramius@gmail.com",
-                "homepage": "http://ocramius.github.com/"
-            }
-        ],
-        "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-        "homepage": "https://github.com/doctrine/instantiator",
-        "keywords": [
-            "constructor",
-            "instantiate"
-        ]
-    },
-    {
-        "name": "phpunit/phpunit-mock-objects",
-        "version": "2.3.8",
-        "version_normalized": "2.3.8.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-            "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
-            "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
-            "shasum": ""
-        },
-        "require": {
-            "doctrine/instantiator": "^1.0.2",
-            "php": ">=5.3.3",
-            "phpunit/php-text-template": "~1.2",
-            "sebastian/exporter": "~1.2"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.4"
-        },
-        "suggest": {
-            "ext-soap": "*"
-        },
-        "time": "2015-10-02 06:51:40",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.3.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
-            }
-        ],
-        "description": "Mock Object library for PHPUnit",
-        "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
-        "keywords": [
-            "mock",
-            "xunit"
-        ]
-    },
-    {
-        "name": "phpunit/php-timer",
-        "version": "1.0.7",
-        "version_normalized": "1.0.7.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-timer.git",
-            "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
-            "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "time": "2015-06-21 08:01:12",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
-            }
-        ],
-        "description": "Utility class for timing",
-        "homepage": "https://github.com/sebastianbergmann/php-timer/",
-        "keywords": [
-            "timer"
-        ]
-    },
-    {
-        "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.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
-            }
-        ],
-        "description": "FilterIterator implementation that filters files based on a list of suffixes.",
-        "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
-        "keywords": [
-            "filesystem",
-            "iterator"
-        ]
-    },
-    {
-        "name": "phpunit/php-code-coverage",
-        "version": "2.2.4",
-        "version_normalized": "2.2.4.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-            "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
-            "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3",
-            "phpunit/php-file-iterator": "~1.3",
-            "phpunit/php-text-template": "~1.2",
-            "phpunit/php-token-stream": "~1.3",
-            "sebastian/environment": "^1.3.2",
-            "sebastian/version": "~1.0"
-        },
-        "require-dev": {
-            "ext-xdebug": ">=2.1.4",
-            "phpunit/phpunit": "~4"
-        },
-        "suggest": {
-            "ext-dom": "*",
-            "ext-xdebug": ">=2.2.1",
-            "ext-xmlwriter": "*"
-        },
-        "time": "2015-10-06 15:47:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.2.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
-            }
-        ],
-        "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
-        "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
-        "keywords": [
-            "coverage",
-            "testing",
-            "xunit"
-        ]
-    },
-    {
-        "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": "phpunit/phpunit",
-        "version": "4.8.11",
-        "version_normalized": "4.8.11.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/phpunit.git",
-            "reference": "bdd199472410fd7e32751f9c814c7e06f2c21bd5"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bdd199472410fd7e32751f9c814c7e06f2c21bd5",
-            "reference": "bdd199472410fd7e32751f9c814c7e06f2c21bd5",
-            "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"
-        },
-        "suggest": {
-            "phpunit/php-invoker": "~1.1"
-        },
-        "time": "2015-10-07 10:39:46",
-        "bin": [
-            "phpunit"
-        ],
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.8.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
-            }
-        ],
-        "description": "The PHP Unit Testing framework.",
-        "homepage": "https://phpunit.de/",
-        "keywords": [
-            "phpunit",
-            "testing",
-            "xunit"
-        ]
-    },
-    {
-        "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": "symfony/class-loader",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/class-loader.git",
-            "reference": "320f8d2a9cdbcbeb24be602c124aae9d998474a4"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/class-loader/zipball/320f8d2a9cdbcbeb24be602c124aae9d998474a4",
-            "reference": "320f8d2a9cdbcbeb24be602c124aae9d998474a4",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9"
-        },
-        "require-dev": {
-            "symfony/finder": "~2.0,>=2.0.5"
-        },
-        "time": "2015-10-23 14:47:27",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\ClassLoader\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony ClassLoader Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/console",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/console.git",
-            "reference": "5efd632294c8320ea52492db22292ff853a43766"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/console/zipball/5efd632294c8320ea52492db22292ff853a43766",
-            "reference": "5efd632294c8320ea52492db22292ff853a43766",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9"
-        },
-        "require-dev": {
-            "psr/log": "~1.0",
-            "symfony/event-dispatcher": "~2.1",
-            "symfony/process": "~2.1"
-        },
-        "suggest": {
-            "psr/log": "For using the console logger",
-            "symfony/event-dispatcher": "",
-            "symfony/process": ""
-        },
-        "time": "2015-10-20 14:38:46",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Console\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Console Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/dependency-injection",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/dependency-injection.git",
-            "reference": "af284e795ec8a08c80d1fc47518fd23004b89847"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/af284e795ec8a08c80d1fc47518fd23004b89847",
-            "reference": "af284e795ec8a08c80d1fc47518fd23004b89847",
-            "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",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\DependencyInjection\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony DependencyInjection Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/debug",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/debug.git",
-            "reference": "fb9e6887db716939f41af0ba8ef38a1582eb501b"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/debug/zipball/fb9e6887db716939f41af0ba8ef38a1582eb501b",
-            "reference": "fb9e6887db716939f41af0ba8ef38a1582eb501b",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9",
-            "psr/log": "~1.0"
-        },
-        "conflict": {
-            "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
-        },
-        "require-dev": {
-            "symfony/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",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Debug\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Debug Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/http-foundation",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/http-foundation.git",
-            "reference": "7598eea151ae3d4134df1f9957364b17809eea75"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7598eea151ae3d4134df1f9957364b17809eea75",
-            "reference": "7598eea151ae3d4134df1f9957364b17809eea75",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9"
-        },
-        "require-dev": {
-            "symfony/expression-language": "~2.4"
-        },
-        "time": "2015-10-23 14:47:27",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\HttpFoundation\\": ""
-            },
-            "classmap": [
-                "Resources/stubs"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony HttpFoundation Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/event-dispatcher",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/event-dispatcher.git",
-            "reference": "87a5db5ea887763fa3a31a5471b512ff1596d9b8"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/87a5db5ea887763fa3a31a5471b512ff1596d9b8",
-            "reference": "87a5db5ea887763fa3a31a5471b512ff1596d9b8",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9"
-        },
-        "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"
-        },
-        "suggest": {
-            "symfony/dependency-injection": "",
-            "symfony/http-kernel": ""
-        },
-        "time": "2015-10-11 09:39:48",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\EventDispatcher\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony EventDispatcher Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/http-kernel",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/http-kernel.git",
-            "reference": "4260f2273a446a6715063dc9ca89fd0c475c2f77"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4260f2273a446a6715063dc9ca89fd0c475c2f77",
-            "reference": "4260f2273a446a6715063dc9ca89fd0c475c2f77",
-            "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"
-        },
-        "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"
-        },
-        "suggest": {
-            "symfony/browser-kit": "",
-            "symfony/class-loader": "",
-            "symfony/config": "",
-            "symfony/console": "",
-            "symfony/dependency-injection": "",
-            "symfony/finder": "",
-            "symfony/var-dumper": ""
-        },
-        "time": "2015-10-27 19:07:21",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\HttpKernel\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony HttpKernel Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/routing",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/routing.git",
-            "reference": "f353e1f588679c3ec987624e6c617646bd01ba38"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/routing/zipball/f353e1f588679c3ec987624e6c617646bd01ba38",
-            "reference": "f353e1f588679c3ec987624e6c617646bd01ba38",
-            "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"
-        },
-        "time": "2015-10-27 15:38:06",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Routing\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Routing Component",
-        "homepage": "https://symfony.com",
-        "keywords": [
-            "router",
-            "routing",
-            "uri",
-            "url"
-        ]
-    },
-    {
-        "name": "symfony/serializer",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/serializer.git",
-            "reference": "14056684acad23b8815eb336bccc0b4ac76bd823"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/serializer/zipball/14056684acad23b8815eb336bccc0b4ac76bd823",
-            "reference": "14056684acad23b8815eb336bccc0b4ac76bd823",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9"
-        },
-        "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"
-        },
-        "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."
-        },
-        "time": "2015-10-11 09:39:48",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Serializer\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Serializer Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/translation",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/translation.git",
-            "reference": "6ccd9289ec1c71d01a49d83480de3b5293ce30c8"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/translation/zipball/6ccd9289ec1c71d01a49d83480de3b5293ce30c8",
-            "reference": "6ccd9289ec1c71d01a49d83480de3b5293ce30c8",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9"
-        },
-        "conflict": {
-            "symfony/config": "<2.7"
-        },
-        "require-dev": {
-            "psr/log": "~1.0",
-            "symfony/config": "~2.7",
-            "symfony/intl": "~2.4",
-            "symfony/yaml": "~2.2"
-        },
-        "suggest": {
-            "psr/log": "To use logging capability in translator",
-            "symfony/config": "",
-            "symfony/yaml": ""
-        },
-        "time": "2015-10-27 15:38:06",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Translation\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Translation Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/validator",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/validator.git",
-            "reference": "df9021e689aa3d08367881e7f8917219fabe5e64"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/validator/zipball/df9021e689aa3d08367881e7f8917219fabe5e64",
-            "reference": "df9021e689aa3d08367881e7f8917219fabe5e64",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9",
-            "symfony/translation": "~2.4"
-        },
-        "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": ""
-        },
-        "time": "2015-10-18 20:23:18",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Validator\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Validator Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/process",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/process.git",
-            "reference": "4a959dd4e19c2c5d7512689413921e0a74386ec7"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/process/zipball/4a959dd4e19c2c5d7512689413921e0a74386ec7",
-            "reference": "4a959dd4e19c2c5d7512689413921e0a74386ec7",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9"
-        },
-        "time": "2015-10-23 14:47:27",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Process\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Process Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/yaml",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/yaml.git",
-            "reference": "eca9019c88fbe250164affd107bc8057771f3f4d"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/yaml/zipball/eca9019c88fbe250164affd107bc8057771f3f4d",
-            "reference": "eca9019c88fbe250164affd107bc8057771f3f4d",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9"
-        },
-        "time": "2015-10-11 09:39:48",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Yaml\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Yaml Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/css-selector",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/css-selector.git",
-            "reference": "e1b865b26be4a56d22a8dee398375044a80c865b"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/css-selector/zipball/e1b865b26be4a56d22a8dee398375044a80c865b",
-            "reference": "e1b865b26be4a56d22a8dee398375044a80c865b",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9"
-        },
-        "time": "2015-10-11 09:39:48",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\CssSelector\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Jean-François Simon",
-                "email": "jeanfrancois.simon@sensiolabs.com"
-            },
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony CssSelector Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/dom-crawler",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/dom-crawler.git",
-            "reference": "5fef7d8b80d8f9992df99d8ee283f420484c9612"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/5fef7d8b80d8f9992df99d8ee283f420484c9612",
-            "reference": "5fef7d8b80d8f9992df99d8ee283f420484c9612",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9"
-        },
-        "require-dev": {
-            "symfony/css-selector": "~2.3"
-        },
-        "suggest": {
-            "symfony/css-selector": ""
-        },
-        "time": "2015-10-11 09:39:48",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\DomCrawler\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony DomCrawler Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/browser-kit",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/browser-kit.git",
-            "reference": "07d664a052572ccc28eb2ab7dbbe82155b1ad367"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/browser-kit/zipball/07d664a052572ccc28eb2ab7dbbe82155b1ad367",
-            "reference": "07d664a052572ccc28eb2ab7dbbe82155b1ad367",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.9",
-            "symfony/dom-crawler": "~2.0,>=2.0.5"
-        },
-        "require-dev": {
-            "symfony/css-selector": "~2.0,>=2.0.5",
-            "symfony/process": "~2.3.34|~2.7,>=2.7.6"
-        },
-        "suggest": {
-            "symfony/process": ""
-        },
-        "time": "2015-10-23 14:47:27",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.7-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\BrowserKit\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony BrowserKit Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "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": "jcalderonzumba/mink-phantomjs-driver",
-        "version": "v0.3.1",
-        "version_normalized": "0.3.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/jcalderonzumba/MinkPhantomJSDriver.git",
-            "reference": "782892dbea4af7d04024374672b3790b6c008def"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/jcalderonzumba/MinkPhantomJSDriver/zipball/782892dbea4af7d04024374672b3790b6c008def",
-            "reference": "782892dbea4af7d04024374672b3790b6c008def",
-            "shasum": ""
-        },
-        "require": {
-            "behat/mink": "~1.6",
-            "jcalderonzumba/gastonjs": "~1.0",
-            "php": ">=5.4",
-            "twig/twig": "~1.20|~2.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"
-        },
-        "time": "2015-12-04 13:55:02",
-        "type": "mink-driver",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "0.4.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "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": "paragonie/random_compat",
-        "version": "1.1.1",
-        "version_normalized": "1.1.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/paragonie/random_compat.git",
-            "reference": "a208865a5aeffc2dbbef2a5b3409887272d93f32"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/paragonie/random_compat/zipball/a208865a5aeffc2dbbef2a5b3409887272d93f32",
-            "reference": "a208865a5aeffc2dbbef2a5b3409887272d93f32",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.2.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "4.*|5.*"
-        },
-        "suggest": {
-            "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
-        },
-        "time": "2015-12-01 02:52:15",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "files": [
-                "lib/random.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Paragon Initiative Enterprises",
-                "email": "security@paragonie.com",
-                "homepage": "https://paragonie.com"
-            }
-        ],
-        "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
-        "keywords": [
-            "csprng",
-            "pseudorandom",
-            "random"
-        ]
-    }
-]
diff --git a/vendor/composer/installers/.editorconfig b/vendor/composer/installers/.editorconfig
deleted file mode 100644
index 153cf3e..0000000
--- a/vendor/composer/installers/.editorconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-; top-most EditorConfig file
-root = true
-
-; Unix-style newlines
-[*]
-end_of_line = LF
-
-[*.php]
-indent_style = space
-indent_size = 4
diff --git a/vendor/composer/installers/.gitignore b/vendor/composer/installers/.gitignore
deleted file mode 100644
index ff7f293..0000000
--- a/vendor/composer/installers/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-.idea/
diff --git a/vendor/composer/installers/.travis.yml b/vendor/composer/installers/.travis.yml
deleted file mode 100644
index 81ca8e1..0000000
--- a/vendor/composer/installers/.travis.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-language: php
-
-php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-before_script:
-  - curl -s http://getcomposer.org/installer | php -- --quiet
-  - php composer.phar install --dev
-
-script: phpunit
diff --git a/vendor/composer/installers/LICENSE b/vendor/composer/installers/LICENSE
deleted file mode 100644
index 85f97fc..0000000
--- a/vendor/composer/installers/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2012 Kyle Robinson Young
-
-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/composer/installers/README.md b/vendor/composer/installers/README.md
deleted file mode 100644
index b331771..0000000
--- a/vendor/composer/installers/README.md
+++ /dev/null
@@ -1,191 +0,0 @@
-# A Multi-Framework [Composer](http://getcomposer.org) Library Installer
-
-[![Build Status](http://img.shields.io/travis/composer/installers.svg)](http://travis-ci.org/composer/installers)
-
-This is for PHP package authors to require in their `composer.json`. It will
-install their package to the correct location based on the specified package
-type.
-
-The goal of `installers` is to be a simple package type to install path map.
-Users can also customize the install path per package and package authors can
-modify the package name upon installing.
-
-`installers` isn't intended on replacing all custom installers. If your
-package requires special installation handling then by all means, create a
-custom installer to handle it.
-
-**Natively Supported Frameworks**:
-
-The following frameworks natively work with Composer and will be
-installed to the default `vendor` directory. `composer/installers`
-is not needed to install packages with these frameworks:
-
-* Aura
-* Symfony2
-* Yii
-* Yii2
-
-**Current Supported Package Types**:
-
-> Stable types are marked as **bold**, this means that installation paths
-> for those type will not be changed. Any adjustment for those types would
-> require creation of brand new type that will cover required changes.
-
-| Framework    | Types
-| ---------    | -----
-| Aimeos       | `aimeos-extension`
-| Asgard       | `asgard-module`<br>`asgard-theme`
-| AGL          | `agl-module`
-| AnnotateCms  | `annotatecms-module`<br>`annotatecms-component`<br>`annotatecms-service`
-| Bitrix       | `bitrix-module`<br>`bitrix-component`<br>`bitrix-theme`
-| CakePHP 2+   | **`cakephp-plugin`**
-| Chef         | `chef-cookbook`<br>`chef-role`
-| CCFramework  | `ccframework-ship`<br>`ccframework-theme`
-| CodeIgniter  | `codeigniter-library`<br>`codeigniter-third-party`<br>`codeigniter-module`
-| concrete5    | `concrete5-block`<br>`concrete5-package`<br>`concrete5-theme`<br>`concrete5-update`
-| Craft        | `craft-plugin`
-| Croogo       | `croogo-plugin`<br>`croogo-theme`
-| DokuWiki     | `dokuwiki-plugin`<br>`dokuwiki-template`
-| Dolibarr     | `dolibarr-module`
-| Drupal       | <b>`drupal-module`<br>`drupal-theme`</b><br>`drupal-library`<br>`drupal-profile`<br>`drupal-drush`
-| Elgg         | `elgg-plugin`
-| FuelPHP v1.x | `fuel-module`<br>`fuel-package`<br/>`fuel-theme`
-| FuelPHP v2.x | `fuelphp-component`
-| Grav         | `grav-plugin`<br>`grav-theme`
-| Hurad        | `hurad-plugin`<br>`hurad-theme`
-| Joomla       | `joomla-component`<br>`joomla-module`<br>`joomla-template`<br>`joomla-plugin`<br>`joomla-library`
-| Kirby        | **`kirby-plugin`**
-| Kohana       | **`kohana-module`**
-| Laravel      | `laravel-library`
-| Lithium      | **`lithium-library`<br>`lithium-source`**
-| Magento      | `magento-library`<br>`magento-skin`<br>`magento-theme`
-| Mako         | `mako-package`
-| MODX Evo     | `modxevo-snippet`<br>`modxevo-plugin`<br>`modxevo-module`<br>`modxevo-template`<br>`modxevo-lib`
-| MediaWiki    | `mediawiki-extension`
-| October      | **`october-module`<br>`october-plugin`<br>`october-theme`**
-| OXID         | `oxid-module`<br>`oxid-theme`<br>`oxid-out`
-| MODULEWork   | `modulework-module`
-| Moodle       | `moodle-*` (Please [check source](https://raw.githubusercontent.com/composer/installers/master/src/Composer/Installers/MoodleInstaller.php) for all supported types)
-| Piwik        | `piwik-plugin`
-| phpBB        | `phpbb-extension`<br>`phpbb-style`<br>`phpbb-language`
-| Pimcore      | `pimcore-plugin`
-| PPI          | **`ppi-module`**
-| Puppet       | `puppet-module`
-| REDAXO       | `redaxo-addon`
-| Roundcube    | `roundcube-plugin`
-| shopware     | `shopware-backend-plugin`<br/>`shopware-core-plugin`<br/>`shopware-frontend-plugin`<br/>`shopware-theme`
-| SilverStripe | `silverstripe-module`<br>`silverstripe-theme`
-| SMF          | `smf-module`<br>`smf-theme`
-| symfony1     | **`symfony1-plugin`**
-| Tusk         | `tusk-task`<br>`tusk-command`<br>`tusk-asset`
-| TYPO3 Flow   | `typo3-flow-package`<br>`typo3-flow-framework`<br>`typo3-flow-plugin`<br>`typo3-flow-site`<br>`typo3-flow-boilerplate`<br>`typo3-flow-build`
-| TYPO3 CMS    | `typo3-cms-extension`
-| Wolf CMS     | `wolfcms-plugin`
-| WordPress    | <b>`wordpress-plugin`<br>`wordpress-theme`</b><br>`wordpress-muplugin`
-| Zend         | `zend-library`<br>`zend-extra`<br>`zend-module`
-| Zikula       | `zikula-module`<br>`zikula-theme`
-| Prestashop   | `prestashop-module`<br>`prestashop-theme`
-
-## Example `composer.json` File
-
-This is an example for a CakePHP plugin. The only important parts to set in your
-composer.json file are `"type": "cakephp-plugin"` which describes what your
-package is and `"require": { "composer/installers": "~1.0" }` which tells composer
-to load the custom installers.
-
-```json
-{
-    "name": "you/ftp",
-    "type": "cakephp-plugin",
-    "require": {
-        "composer/installers": "~1.0"
-    }
-}
-```
-
-This would install your package to the `Plugin/Ftp/` folder of a CakePHP app
-when a user runs `php composer.phar install`.
-
-So submit your packages to [packagist.org](http://packagist.org)!
-
-## Custom Install Paths
-
-If you are consuming a package that uses the `composer/installers` you can
-override the install path with the following extra in your `composer.json`:
-
-```json
-{
-    "extra": {
-        "installer-paths": {
-            "your/custom/path/{$name}/": ["shama/ftp", "vendor/package"]
-        }
-    }
-}
-```
-
-A package type can have a custom installation path with a `type:` prefix.
-
-``` json
-{
-    "extra": {
-        "installer-paths": {
-            "your/custom/path/{$name}/": ["type:wordpress-plugin"]
-        }
-    }
-}
-```
-
-This would use your custom path for each of the listed packages. The available
-variables to use in your paths are: `{$name}`, `{$vendor}`, `{$type}`.
-
-## Custom Install Names
-
-If you're a package author and need your package to be named differently when
-installed consider using the `installer-name` extra.
-
-For example you have a package named `shama/cakephp-ftp` with the type
-`cakephp-plugin`. Installing with `composer/installers` would install to the
-path `Plugin/CakephpFtp`. Due to the strict naming conventions, you as a
-package author actually need the package to be named and installed to
-`Plugin/Ftp`. Using the following config within your **package** `composer.json`
-will allow this:
-
-```json
-{
-    "name": "shama/cakephp-ftp",
-    "type": "cakephp-plugin",
-    "extra": {
-        "installer-name": "Ftp"
-    }
-}
-```
-
-Please note the name entered into `installer-name` will be the final and will
-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).
-* 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).
-
-To ensure a consistent code base, you should make sure the code follows the
-[Coding Standards](http://symfony.com/doc/2.0/contributing/code/standards.html)
-which we borrowed from Symfony.
-
-If you would like to help, please take a look at the list of
-[issues](https://github.com/composer/installers/issues).
-
-### Should we allow dynamic package types or paths? No.
-What are they? The ability for a package author to determine where a package
-will be installed either through setting the path directly in their
-`composer.json` or through a dynamic package type: `"type":
-"framework-install-here"`.
-
-It has been proposed many times. Even implemented once early on and then
-removed. `installers` won't do this because it would allow a single package
-author to wipe out entire folders without the user's consent. That user would
-then come here to yell at us.
diff --git a/vendor/composer/installers/composer.json b/vendor/composer/installers/composer.json
deleted file mode 100644
index 6ee931e..0000000
--- a/vendor/composer/installers/composer.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
-    "name": "composer/installers",
-    "type": "composer-installer",
-    "license": "MIT",
-    "description": "A multi-framework Composer library installer",
-    "keywords": [
-        "installer",
-        "Aimeos",
-        "AGL",
-        "AnnotateCms",
-        "Bitrix",
-        "CakePHP",
-        "Chef",
-        "CodeIgniter",
-        "concrete5",
-        "Craft",
-        "Croogo",
-        "DokuWiki",
-        "Dolibarr",
-        "Drupal",
-        "Elgg",
-        "FuelPHP",
-        "Grav",
-        "Hurad",
-        "Joomla",
-        "Kohana",
-        "Laravel",
-        "Lithium",
-        "Magento",
-        "Mako",
-        "MODX Evo",
-        "MediaWiki",
-        "OXID",
-        "MODULEWork",
-        "Moodle",
-        "Piwik",
-        "phpBB",
-        "PPI",
-        "Puppet",
-        "Roundcube",
-        "shopware",
-        "SilverStripe",
-        "SMF",
-        "symfony",
-        "Thelia",
-        "TYPO3",
-        "WolfCMS",
-        "WordPress",
-        "Zend",
-        "Zikula"
-    ],
-    "homepage": "http://composer.github.com/installers/",
-    "authors": [
-        {
-            "name": "Kyle Robinson Young",
-            "email": "kyle@dontkry.com",
-            "homepage": "https://github.com/shama"
-        }
-    ],
-    "autoload": {
-        "psr-0": { "Composer\\Installers\\": "src/" }
-    },
-    "extra": {
-        "class": "Composer\\Installers\\Installer",
-        "branch-alias": {
-            "dev-master": "1.0-dev"
-        }
-    },
-    "replace": {
-        "shama/baton": "*",
-        "roundcube/plugin-installer": "*"
-    },
-    "require-dev": {
-        "composer/composer": "1.0.*@dev",
-        "phpunit/phpunit": "4.1.*"
-    }
-}
diff --git a/vendor/composer/installers/phpunit.xml.dist b/vendor/composer/installers/phpunit.xml.dist
deleted file mode 100644
index cc5cc99..0000000
--- a/vendor/composer/installers/phpunit.xml.dist
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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/bootstrap.php"
->
-    <testsuites>
-        <testsuite name="Installers Test Suite">
-            <directory>tests/Composer/Installers</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>src/Composer/Installers</directory>
-        </whitelist>
-    </filter>
-</phpunit>
\ No newline at end of file
diff --git a/vendor/composer/installers/src/Composer/Installers/AglInstaller.php b/vendor/composer/installers/src/Composer/Installers/AglInstaller.php
deleted file mode 100644
index 01b8a41..0000000
--- a/vendor/composer/installers/src/Composer/Installers/AglInstaller.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class AglInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module' => 'More/{$name}/',
-    );
-
-    /**
-     * Format package name to CamelCase
-     */
-    public function inflectPackageVars($vars)
-    {
-        $vars['name'] = preg_replace_callback('/(?:^|_|-)(.?)/', function ($matches) {
-            return strtoupper($matches[1]);
-        }, $vars['name']);
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php b/vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php
deleted file mode 100644
index 79a0e95..0000000
--- a/vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class AimeosInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'extension'   => 'ext/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php b/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php
deleted file mode 100644
index 89d7ad9..0000000
--- a/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class AnnotateCmsInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module'    => 'addons/modules/{$name}/',
-        'component' => 'addons/components/{$name}/',
-        'service'   => 'addons/services/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php b/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php
deleted file mode 100644
index 995ee2b..0000000
--- a/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class AsgardInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module' => 'Modules/{$name}/',
-        'theme' => 'Themes/{$name}/'
-    );
-
-    /**
-     * Format package name.
-     *
-     * For package type asgard-module, cut off a trailing '-plugin' if present.
-     *
-     * For package type asgard-theme, cut off a trailing '-theme' if present.
-     *
-     */
-    public function inflectPackageVars($vars)
-    {
-        if ($vars['type'] === 'asgard-module') {
-            return $this->inflectPluginVars($vars);
-        }
-
-        if ($vars['type'] === 'asgard-theme') {
-            return $this->inflectThemeVars($vars);
-        }
-
-        return $vars;
-    }
-
-    protected function inflectPluginVars($vars)
-    {
-        $vars['name'] = ucfirst(preg_replace('/-module/', '', $vars['name']));
-
-        return $vars;
-    }
-
-    protected function inflectThemeVars($vars)
-    {
-        $vars['name'] = ucfirst(preg_replace('/-theme$/', '', $vars['name']));
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php b/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php
deleted file mode 100644
index cc27d3e..0000000
--- a/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-use Composer\Composer;
-use Composer\Package\PackageInterface;
-
-abstract class BaseInstaller
-{
-    protected $locations = array();
-    protected $composer;
-    protected $package;
-
-    /**
-     * Initializes base installer.
-     *
-     * @param PackageInterface $package
-     * @param Composer         $composer
-     */
-    public function __construct(PackageInterface $package = null, Composer $composer = null)
-    {
-        $this->composer = $composer;
-        $this->package = $package;
-    }
-
-    /**
-     * Return the install path based on package type.
-     *
-     * @param  PackageInterface $package
-     * @param  string           $frameworkType
-     * @return string
-     */
-    public function getInstallPath(PackageInterface $package, $frameworkType = '')
-    {
-        $type = $this->package->getType();
-
-        $prettyName = $this->package->getPrettyName();
-        if (strpos($prettyName, '/') !== false) {
-            list($vendor, $name) = explode('/', $prettyName);
-        } else {
-            $vendor = '';
-            $name = $prettyName;
-        }
-
-        $availableVars = $this->inflectPackageVars(compact('name', 'vendor', 'type'));
-
-        $extra = $package->getExtra();
-        if (!empty($extra['installer-name'])) {
-            $availableVars['name'] = $extra['installer-name'];
-        }
-
-        if ($this->composer->getPackage()) {
-            $extra = $this->composer->getPackage()->getExtra();
-            if (!empty($extra['installer-paths'])) {
-                $customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $type);
-                if ($customPath !== false) {
-                    return $this->templatePath($customPath, $availableVars);
-                }
-            }
-        }
-
-        $packageType = substr($type, strlen($frameworkType) + 1);
-        $locations = $this->getLocations();
-        if (!isset($locations[$packageType])) {
-            throw new \InvalidArgumentException(sprintf('Package type "%s" is not supported', $type));
-        }
-
-        return $this->templatePath($locations[$packageType], $availableVars);
-    }
-
-    /**
-     * For an installer to override to modify the vars per installer.
-     *
-     * @param  array $vars
-     * @return array
-     */
-    public function inflectPackageVars($vars)
-    {
-        return $vars;
-    }
-
-    /**
-     * Gets the installer's locations
-     *
-     * @return array
-     */
-    public function getLocations()
-    {
-        return $this->locations;
-    }
-
-    /**
-     * Replace vars in a path
-     *
-     * @param  string $path
-     * @param  array  $vars
-     * @return string
-     */
-    protected function templatePath($path, array $vars = array())
-    {
-        if (strpos($path, '{') !== false) {
-            extract($vars);
-            preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches);
-            if (!empty($matches[1])) {
-                foreach ($matches[1] as $var) {
-                    $path = str_replace('{$' . $var . '}', $$var, $path);
-                }
-            }
-        }
-
-        return $path;
-    }
-
-    /**
-     * Search through a passed paths array for a custom install path.
-     *
-     * @param  array  $paths
-     * @param  string $name
-     * @param  string $type
-     * @return string
-     */
-    protected function mapCustomInstallPaths(array $paths, $name, $type)
-    {
-        foreach ($paths as $path => $names) {
-            if (in_array($name, $names) || in_array('type:' . $type, $names)) {
-                return $path;
-            }
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php b/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php
deleted file mode 100644
index 48a8367..0000000
--- a/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class BitrixInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module'    => 'local/modules/{$name}/',
-        'component' => 'local/components/{$name}/',
-        'theme'     => 'local/templates/{$name}/'
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php b/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php
deleted file mode 100644
index cbeb60b..0000000
--- a/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-use Composer\DependencyResolver\Pool;
-use Composer\Package\PackageInterface;
-use Composer\Package\LinkConstraint\MultiConstraint;
-use Composer\Package\LinkConstraint\VersionConstraint;
-
-class CakePHPInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin' => 'Plugin/{$name}/',
-    );
-
-    /**
-     * Format package name to CamelCase
-     */
-    public function inflectPackageVars($vars)
-    {
-        if ($this->matchesCakeVersion('>=', '3.0.0')) {
-            return $vars;
-        }
-
-        $nameParts = explode('/', $vars['name']);
-        foreach ($nameParts as &$value) {
-            $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
-            $value = str_replace(array('-', '_'), ' ', $value);
-            $value = str_replace(' ', '', ucwords($value));
-        }
-        $vars['name'] = implode('/', $nameParts);
-
-        return $vars;
-    }
-
-    /**
-     * Change the default plugin location when cakephp >= 3.0
-     */
-    public function getLocations()
-    {
-        if ($this->matchesCakeVersion('>=', '3.0.0')) {
-            $this->locations['plugin'] =  $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/';
-        }
-        return $this->locations;
-    }
-
-    /**
-     * Check if CakePHP version matches against a version
-     *
-     * @param string $matcher
-     * @param string $version
-     * @return bool
-     */
-    protected function matchesCakeVersion($matcher, $version)
-    {
-        $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'),
-            ));
-            $pool = new Pool('dev');
-            $pool->addRepository($repos);
-            $packages = $pool->whatProvides('cakephp/cakephp');
-            foreach ($packages as $package) {
-                $installed = new VersionConstraint('=', $package->getVersion());
-                if ($cake3->matches($installed)) {
-                    return true;
-                    break;
-                }
-            }
-        }
-        return false;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php b/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php
deleted file mode 100644
index ab2f9aa..0000000
--- a/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class ChefInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'cookbook'  => 'Chef/{$vendor}/{$name}/',
-        'role'      => 'Chef/roles/{$name}/',
-    );
-}
-
diff --git a/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php b/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php
deleted file mode 100644
index c887815..0000000
--- a/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class ClanCatsFrameworkInstaller extends BaseInstaller
-{
-	protected $locations = array(
-		'ship'      => 'CCF/orbit/{$name}/',
-		'theme'     => 'CCF/app/themes/{$name}/',
-	);
-}
\ No newline at end of file
diff --git a/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php b/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php
deleted file mode 100644
index 3b4a4ec..0000000
--- a/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class CodeIgniterInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'library'     => 'application/libraries/{$name}/',
-        'third-party' => 'application/third_party/{$name}/',
-        'module'      => 'application/modules/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php b/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php
deleted file mode 100644
index 4d398a4..0000000
--- a/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class Concrete5Installer extends BaseInstaller
-{
-    protected $locations = array(
-        'block'      => 'blocks/{$name}/',
-        'package'    => 'packages/{$name}/',
-        'theme'      => 'themes/{$name}/',
-        'update'     => 'updates/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php b/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php
deleted file mode 100644
index dc3be8d..0000000
--- a/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class CraftInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin' => 'craft/plugins/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php b/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php
deleted file mode 100644
index d94219d..0000000
--- a/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class CroogoInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin' => 'Plugin/{$name}/',
-        'theme' => 'View/Themed/{$name}/',
-    );
-
-    /**
-     * Format package name to CamelCase
-     */
-    public function inflectPackageVars($vars)
-    {
-        $vars['name'] = strtolower(str_replace(array('-', '_'), ' ', $vars['name']));
-        $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php b/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php
deleted file mode 100644
index cfd638d..0000000
--- a/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class DokuWikiInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin' => 'lib/plugins/{$name}/',
-        'template' => 'lib/tpl/{$name}/',
-    );
-
-    /**
-     * Format package name.
-     *
-     * For package type dokuwiki-plugin, cut off a trailing '-plugin', 
-     * or leading dokuwiki_ if present.
-     * 
-     * For package type dokuwiki-template, cut off a trailing '-template' if present.
-     *
-     */
-    public function inflectPackageVars($vars)
-    {
-
-        if ($vars['type'] === 'dokuwiki-plugin') {
-            return $this->inflectPluginVars($vars);
-        }
-
-        if ($vars['type'] === 'dokuwiki-template') {
-            return $this->inflectTemplateVars($vars);
-        }
-
-        return $vars;
-    }
-
-    protected function inflectPluginVars($vars)
-    {
-        $vars['name'] = preg_replace('/-plugin$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']);
-
-        return $vars;
-    }
-
-    protected function inflectTemplateVars($vars)
-    {
-        $vars['name'] = preg_replace('/-template$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']);
-
-        return $vars;
-    }
-
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php b/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php
deleted file mode 100644
index 21f7e8e..0000000
--- a/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-/**
- * Class DolibarrInstaller
- *
- * @package Composer\Installers
- * @author  Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
- */
-class DolibarrInstaller extends BaseInstaller
-{
-    //TODO: Add support for scripts and themes
-    protected $locations = array(
-        'module' => 'htdocs/custom/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php b/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php
deleted file mode 100644
index 1794131..0000000
--- a/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class DrupalInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'core'      => 'core/',
-        'module'    => 'modules/{$name}/',
-        'theme'     => 'themes/{$name}/',
-        'library'   => 'libraries/{$name}/',
-        'profile'   => 'profiles/{$name}/',
-        'drush'     => 'drush/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php b/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php
deleted file mode 100644
index c0bb609..0000000
--- a/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class ElggInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin' => 'mod/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php b/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php
deleted file mode 100644
index 6eba2e3..0000000
--- a/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class FuelInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module'  => 'fuel/app/modules/{$name}/',
-        'package' => 'fuel/packages/{$name}/',
-        'theme'   => 'fuel/app/themes/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php b/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php
deleted file mode 100644
index 29d980b..0000000
--- a/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class FuelphpInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'component'  => 'components/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/GravInstaller.php b/vendor/composer/installers/src/Composer/Installers/GravInstaller.php
deleted file mode 100644
index dbe63e0..0000000
--- a/vendor/composer/installers/src/Composer/Installers/GravInstaller.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class GravInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin' => 'user/plugins/{$name}/',
-        'theme'  => 'user/themes/{$name}/',
-    );
-
-    /**
-     * Format package name
-     *
-     * @param array $vars
-     *
-     * @return array
-     */
-    public function inflectPackageVars($vars)
-    {
-        $restrictedWords = implode('|', array_keys($this->locations));
-
-        $vars['name'] = strtolower($vars['name']);
-        $vars['name'] = preg_replace('/^(?:grav-)?(?:(?:'.$restrictedWords.')-)?(.*?)(?:-(?:'.$restrictedWords.'))?$/ui',
-            '$1',
-            $vars['name']
-        );
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php b/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php
deleted file mode 100644
index 8fe017f..0000000
--- a/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class HuradInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin' => 'plugins/{$name}/',
-        'theme' => 'plugins/{$name}/',
-    );
-
-    /**
-     * Format package name to CamelCase
-     */
-    public function inflectPackageVars($vars)
-    {
-        $nameParts = explode('/', $vars['name']);
-        foreach ($nameParts as &$value) {
-            $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
-            $value = str_replace(array('-', '_'), ' ', $value);
-            $value = str_replace(' ', '', ucwords($value));
-        }
-        $vars['name'] = implode('/', $nameParts);
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/Installer.php b/vendor/composer/installers/src/Composer/Installers/Installer.php
deleted file mode 100644
index 63ba64c..0000000
--- a/vendor/composer/installers/src/Composer/Installers/Installer.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-use Composer\Installer\LibraryInstaller;
-use Composer\Package\PackageInterface;
-use Composer\Repository\InstalledRepositoryInterface;
-
-class Installer extends LibraryInstaller
-{
-    /**
-     * Package types to installer class map
-     *
-     * @var array
-     */
-    private $supportedTypes = array(
-        'aimeos'       => 'AimeosInstaller',
-        'asgard'       => 'AsgardInstaller',
-        'agl'          => 'AglInstaller',
-        'annotatecms'  => 'AnnotateCmsInstaller',
-        'bitrix'       => 'BitrixInstaller',
-        'cakephp'      => 'CakePHPInstaller',
-        'chef'         => 'ChefInstaller',
-        'ccframework'  => 'ClanCatsFrameworkInstaller',
-        'codeigniter'  => 'CodeIgniterInstaller',
-        'concrete5'    => 'Concrete5Installer',
-        'craft'        => 'CraftInstaller',
-        'croogo'       => 'CroogoInstaller',
-        'dokuwiki'     => 'DokuWikiInstaller',
-        'dolibarr'     => 'DolibarrInstaller',
-        'drupal'       => 'DrupalInstaller',
-        'elgg'         => 'ElggInstaller',
-        'fuel'         => 'FuelInstaller',
-        'fuelphp'      => 'FuelphpInstaller',
-        'grav'         => 'GravInstaller',
-        'hurad'        => 'HuradInstaller',
-        'joomla'       => 'JoomlaInstaller',
-        'kirby'        => 'KirbyInstaller',
-        'kohana'       => 'KohanaInstaller',
-        'laravel'      => 'LaravelInstaller',
-        'lithium'      => 'LithiumInstaller',
-        'magento'      => 'MagentoInstaller',
-        'mako'         => 'MakoInstaller',
-        'mediawiki'    => 'MediaWikiInstaller',
-        'microweber'    => 'MicroweberInstaller',
-        'modulework'   => 'MODULEWorkInstaller',
-        'modxevo'      => 'MODXEvoInstaller',
-        'moodle'       => 'MoodleInstaller',
-        'october'      => 'OctoberInstaller',
-        'oxid'         => 'OxidInstaller',
-        'phpbb'        => 'PhpBBInstaller',
-        'pimcore'      => 'PimcoreInstaller',
-        'piwik'        => 'PiwikInstaller',
-        'ppi'          => 'PPIInstaller',
-        'puppet'       => 'PuppetInstaller',
-        'redaxo'       => 'RedaxoInstaller',
-        'roundcube'    => 'RoundcubeInstaller',
-        'shopware'     => 'ShopwareInstaller',
-        'silverstripe' => 'SilverStripeInstaller',
-        'smf'          => 'SMFInstaller',
-        'symfony1'     => 'Symfony1Installer',
-        'thelia'       => 'TheliaInstaller',
-        'tusk'         => 'TuskInstaller',
-        'typo3-cms'    => 'TYPO3CmsInstaller',
-        'typo3-flow'   => 'TYPO3FlowInstaller',
-        'whmcs'        => 'WHMCSInstaller',
-        'wolfcms'      => 'WolfCMSInstaller',
-        'wordpress'    => 'WordPressInstaller',
-        'zend'         => 'ZendInstaller',
-        'zikula'       => 'ZikulaInstaller',
-        'prestashop'   => 'PrestashopInstaller',
-    );
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getInstallPath(PackageInterface $package)
-    {
-        $type = $package->getType();
-        $frameworkType = $this->findFrameworkType($type);
-
-        if ($frameworkType === false) {
-            throw new \InvalidArgumentException(
-                'Sorry the package type of this package is not yet supported.'
-            );
-        }
-
-        $class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
-        $installer = new $class($package, $this->composer);
-
-        return $installer->getInstallPath($package, $frameworkType);
-    }
-
-    public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package)
-    {
-        if (!$repo->hasPackage($package)) {
-            throw new \InvalidArgumentException('Package is not installed: '.$package);
-        }
-
-        $repo->removePackage($package);
-
-        $installPath = $this->getInstallPath($package);
-        $this->io->write(sprintf('Deleting %s - %s', $installPath, $this->filesystem->removeDirectory($installPath) ? '<comment>deleted</comment>' : '<error>not deleted</error>'));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function supports($packageType)
-    {
-        $frameworkType = $this->findFrameworkType($packageType);
-
-        if ($frameworkType === false) {
-            return false;
-        }
-
-        $locationPattern = $this->getLocationPattern($frameworkType);
-
-        return preg_match('#' . $frameworkType . '-' . $locationPattern . '#', $packageType, $matches) === 1;
-    }
-
-    /**
-     * Finds a supported framework type if it exists and returns it
-     *
-     * @param  string $type
-     * @return string
-     */
-    protected function findFrameworkType($type)
-    {
-        $frameworkType = false;
-
-        krsort($this->supportedTypes);
-
-        foreach ($this->supportedTypes as $key => $val) {
-            if ($key === substr($type, 0, strlen($key))) {
-                $frameworkType = substr($type, 0, strlen($key));
-                break;
-            }
-        }
-
-        return $frameworkType;
-    }
-
-    /**
-     * Get the second part of the regular expression to check for support of a
-     * package type
-     *
-     * @param  string $frameworkType
-     * @return string
-     */
-    protected function getLocationPattern($frameworkType)
-    {
-        $pattern = false;
-        if (!empty($this->supportedTypes[$frameworkType])) {
-            $frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
-            /** @var BaseInstaller $framework */
-            $framework = new $frameworkClass(null, $this->composer);
-            $locations = array_keys($framework->getLocations());
-            $pattern = $locations ? '(' . implode('|', $locations) . ')' : false;
-        }
-
-        return $pattern ? : '(\w+)';
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php b/vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php
deleted file mode 100644
index 9ee7759..0000000
--- a/vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class JoomlaInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'component'    => 'components/{$name}/',
-        'module'       => 'modules/{$name}/',
-        'template'     => 'templates/{$name}/',
-        'plugin'       => 'plugins/{$name}/',
-        'library'      => 'libraries/{$name}/',
-    );
-
-    // TODO: Add inflector for mod_ and com_ names
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php b/vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php
deleted file mode 100644
index ae7ba8a..0000000
--- a/vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class KirbyInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin'    => 'site/plugins/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php b/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php
deleted file mode 100644
index dcd6d26..0000000
--- a/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class KohanaInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module' => 'modules/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php b/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php
deleted file mode 100644
index be4d53a..0000000
--- a/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class LaravelInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'library' => 'libraries/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php b/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php
deleted file mode 100644
index 47bbd4c..0000000
--- a/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class LithiumInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'library' => 'libraries/{$name}/',
-        'source'  => 'libraries/_source/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php b/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php
deleted file mode 100644
index 9c2e9fb..0000000
--- a/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class MODULEWorkInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module'    => 'modules/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php b/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php
deleted file mode 100644
index 5a66460..0000000
--- a/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-/**
- * An installer to handle MODX Evolution specifics when installing packages.
- */
-class MODXEvoInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'snippet'       => 'assets/snippets/{$name}/',
-        'plugin'        => 'assets/plugins/{$name}/',
-        'module'        => 'assets/modules/{$name}/',
-        'template'      => 'assets/templates/{$name}/',
-        'lib'           => 'assets/lib/{$name}/'
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php b/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php
deleted file mode 100644
index cf18e94..0000000
--- a/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class MagentoInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'theme'   => 'app/design/frontend/{$name}/',
-        'skin'    => 'skin/frontend/default/{$name}/',
-        'library' => 'lib/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php b/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php
deleted file mode 100644
index ca3cfac..0000000
--- a/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class MakoInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'package' => 'app/packages/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php b/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php
deleted file mode 100644
index 01008c6..0000000
--- a/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class MediaWikiInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'extension' => 'extensions/{$name}/',
-        'skin' => 'skins/{$name}/',
-    );
-
-    /**
-     * Format package name.
-     *
-     * For package type mediawiki-extension, cut off a trailing '-extension' if present and transform
-     * to CamelCase keeping existing uppercase chars.
-     *
-     * For package type mediawiki-skin, cut off a trailing '-skin' if present.
-     *
-     */
-    public function inflectPackageVars($vars)
-    {
-
-        if ($vars['type'] === 'mediawiki-extension') {
-            return $this->inflectExtensionVars($vars);
-        }
-
-        if ($vars['type'] === 'mediawiki-skin') {
-            return $this->inflectSkinVars($vars);
-        }
-
-        return $vars;
-    }
-
-    protected function inflectExtensionVars($vars)
-    {
-        $vars['name'] = preg_replace('/-extension$/', '', $vars['name']);
-        $vars['name'] = str_replace('-', ' ', $vars['name']);
-        $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
-
-        return $vars;
-    }
-
-    protected function inflectSkinVars($vars)
-    {
-        $vars['name'] = preg_replace('/-skin$/', '', $vars['name']);
-
-        return $vars;
-    }
-
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php b/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php
deleted file mode 100644
index 4bbbec8..0000000
--- a/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class MicroweberInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module'      => 'userfiles/modules/{$name}/',
-        'module-skin' => 'userfiles/modules/{$name}/templates/',
-        'template'    => 'userfiles/templates/{$name}/',
-        'element'     => 'userfiles/elements/{$name}/',
-        'vendor'      => 'vendor/{$name}/',
-        'components'  => 'components/{$name}/'
-    );
-
-    /**
-     * Format package name.
-     *
-     * For package type microweber-module, cut off a trailing '-module' if present
-     *
-     * For package type microweber-template, cut off a trailing '-template' if present.
-     *
-     */
-    public function inflectPackageVars($vars)
-    {
-        if ($vars['type'] === 'microweber-template') {
-            return $this->inflectTemplateVars($vars);
-        }
-        if ($vars['type'] === 'microweber-templates') {
-            return $this->inflectTemplatesVars($vars);
-        }
-        if ($vars['type'] === 'microweber-core') {
-            return $this->inflectCoreVars($vars);
-        }
-        if ($vars['type'] === 'microweber-adapter') {
-            return $this->inflectCoreVars($vars);
-        }
-        if ($vars['type'] === 'microweber-module') {
-            return $this->inflectModuleVars($vars);
-        }
-        if ($vars['type'] === 'microweber-modules') {
-            return $this->inflectModulesVars($vars);
-        }
-        if ($vars['type'] === 'microweber-skin') {
-            return $this->inflectSkinVars($vars);
-        }
-        if ($vars['type'] === 'microweber-element' or $vars['type'] === 'microweber-elements') {
-            return $this->inflectElementVars($vars);
-        }
-
-        return $vars;
-    }
-
-    protected function inflectTemplateVars($vars)
-    {
-        $vars['name'] = preg_replace('/-template$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/template-$/', '', $vars['name']);
-
-        return $vars;
-    }
-
-    protected function inflectTemplatesVars($vars)
-    {
-        $vars['name'] = preg_replace('/-templates$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/templates-$/', '', $vars['name']);
-
-        return $vars;
-    }
-
-    protected function inflectCoreVars($vars)
-    {
-        $vars['name'] = preg_replace('/-providers$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/-provider$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/-adapter$/', '', $vars['name']);
-
-        return $vars;
-    }
-
-    protected function inflectModuleVars($vars)
-    {
-        $vars['name'] = preg_replace('/-module$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/module-$/', '', $vars['name']);
-
-        return $vars;
-    }
-
-    protected function inflectModulesVars($vars)
-    {
-        $vars['name'] = preg_replace('/-modules$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/modules-$/', '', $vars['name']);
-
-        return $vars;
-    }
-
-    protected function inflectSkinVars($vars)
-    {
-        $vars['name'] = preg_replace('/-skin$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/skin-$/', '', $vars['name']);
-
-        return $vars;
-    }
-
-    protected function inflectElementVars($vars)
-    {
-        $vars['name'] = preg_replace('/-elements$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/elements-$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/-element$/', '', $vars['name']);
-        $vars['name'] = preg_replace('/element-$/', '', $vars['name']);
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php b/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php
deleted file mode 100644
index 04be73c..0000000
--- a/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class MoodleInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'mod'                => 'mod/{$name}/',
-        'admin_report'       => 'admin/report/{$name}/',
-        'tool'               => 'admin/tool/{$name}/',
-        'assignment'         => 'mod/assignment/type/{$name}/',
-        'assignsubmission'   => 'mod/assign/submission/{$name}/',
-        'assignfeedback'     => 'mod/assign/feedback/{$name}/',
-        'auth'               => 'auth/{$name}/',
-        'availability'       => 'availability/condition/{$name}/',
-        'block'              => 'blocks/{$name}/',
-        'calendartype'       => 'calendar/type/{$name}/',
-        'format'             => 'course/format/{$name}/',
-        'coursereport'       => 'course/report/{$name}/',
-        'datafield'          => 'mod/data/field/{$name}/',
-        'datapreset'         => 'mod/data/preset/{$name}/',
-        'editor'             => 'lib/editor/{$name}/',
-        'enrol'              => 'enrol/{$name}/',
-        'filter'             => 'filter/{$name}/',
-        'gradeexport'        => 'grade/export/{$name}/',
-        'gradeimport'        => 'grade/import/{$name}/',
-        'gradereport'        => 'grade/report/{$name}/',
-        'gradingform'        => 'grade/grading/form/{$name}/',
-        'local'              => 'local/{$name}/',
-        'message'            => 'message/output/{$name}/',
-        'plagiarism'         => 'plagiarism/{$name}/',
-        'portfolio'          => 'portfolio/{$name}/',
-        'qbehaviour'         => 'question/behaviour/{$name}/',
-        'qformat'            => 'question/format/{$name}/',
-        'qtype'              => 'question/type/{$name}/',
-        'quizaccess'         => 'mod/quiz/accessrule/{$name}/',
-        'quiz'               => 'mod/quiz/report/{$name}/',
-        'report'             => 'report/{$name}/',
-        'repository'         => 'repository/{$name}/',
-        'scormreport'        => 'mod/scorm/report/{$name}/',
-        'theme'              => 'theme/{$name}/',
-        'profilefield'       => 'user/profile/field/{$name}/',
-        'webservice'         => 'webservice/{$name}/',
-        'workshopallocation' => 'mod/workshop/allocation/{$name}/',
-        'workshopeval'       => 'mod/workshop/eval/{$name}/',
-        'workshopform'       => 'mod/workshop/form/{$name}/'
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php b/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php
deleted file mode 100644
index 6bf53fd..0000000
--- a/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class OctoberInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module'    => 'modules/{$name}/',
-        'plugin'    => 'plugins/{$vendor}/{$name}/',
-        'theme'     => 'themes/{$name}/'
-    );
-
-    /**
-     * Format package name.
-     *
-     * For package type october-plugin, cut off a trailing '-plugin' if present.
-     *
-     * For package type october-theme, cut off a trailing '-theme' if present.
-     *
-     */
-    public function inflectPackageVars($vars)
-    {
-        if ($vars['type'] === 'october-plugin') {
-            return $this->inflectPluginVars($vars);
-        }
-
-        if ($vars['type'] === 'october-theme') {
-            return $this->inflectThemeVars($vars);
-        }
-
-        return $vars;
-    }
-
-    protected function inflectPluginVars($vars)
-    {
-        $vars['name'] = preg_replace('/-plugin$/', '', $vars['name']);
-
-        return $vars;
-    }
-
-    protected function inflectThemeVars($vars)
-    {
-        $vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
-
-        return $vars;
-    }
-}
\ No newline at end of file
diff --git a/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php b/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php
deleted file mode 100644
index 22fb56a..0000000
--- a/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class OxidInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module'    => 'modules/{$name}/',
-        'theme'  => 'application/views/{$name}/',
-        'out'    => 'out/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php b/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php
deleted file mode 100644
index 170136f..0000000
--- a/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class PPIInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module' => 'modules/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php b/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php
deleted file mode 100644
index deb2b77..0000000
--- a/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class PhpBBInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'extension' => 'ext/{$vendor}/{$name}/',
-        'language'  => 'language/{$name}/',
-        'style'     => 'styles/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php b/vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php
deleted file mode 100644
index 4781fa6..0000000
--- a/vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class PimcoreInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin' => 'plugins/{$name}/',
-    );
-
-    /**
-     * Format package name to CamelCase
-     */
-    public function inflectPackageVars($vars)
-    {
-        $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
-        $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
-        $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php b/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php
deleted file mode 100644
index c17f457..0000000
--- a/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-/**
- * Class PiwikInstaller
- *
- * @package Composer\Installers
- */
-class PiwikInstaller extends BaseInstaller
-{
-    /**
-     * @var array
-     */
-    protected $locations = array(
-        'plugin' => 'plugins/{$name}/',
-    );
-
-    /**
-     * Format package name to CamelCase
-     * @param array $vars
-     *
-     * @return array
-     */
-    public function inflectPackageVars($vars)
-    {
-        $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
-        $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
-        $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php b/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php
deleted file mode 100644
index 4c8421e..0000000
--- a/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class PrestashopInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module' => 'modules/{$name}/',
-        'theme'  => 'themes/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php b/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php
deleted file mode 100644
index 77cc3dd..0000000
--- a/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Composer\Installers;
-
-class PuppetInstaller extends BaseInstaller
-{
-
-    protected $locations = array(
-        'module' => 'modules/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php b/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php
deleted file mode 100644
index 0954457..0000000
--- a/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class RedaxoInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'addon'          => 'redaxo/include/addons/{$name}/',
-        'bestyle-plugin' => 'redaxo/include/addons/be_style/plugins/{$name}/'
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php b/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php
deleted file mode 100644
index d8d795b..0000000
--- a/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class RoundcubeInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin' => 'plugins/{$name}/',
-    );
-
-    /**
-     * Lowercase name and changes the name to a underscores
-     *
-     * @param  array $vars
-     * @return array
-     */
-    public function inflectPackageVars($vars)
-    {
-        $vars['name'] = strtolower(str_replace('-', '_', $vars['name']));
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php b/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php
deleted file mode 100644
index 1acd3b1..0000000
--- a/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class SMFInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module' => 'Sources/{$name}/',
-        'theme' => 'Themes/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php b/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php
deleted file mode 100644
index 673f1fc..0000000
--- a/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-/**
- * Plugin/theme installer for shopware
- * @author Benjamin Boit
- */
-class ShopwareInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'backend-plugin'    => 'engine/Shopware/Plugins/Local/Backend/{$name}/',
-        'core-plugin'       => 'engine/Shopware/Plugins/Local/Core/{$name}/',
-        'frontend-plugin'   => 'engine/Shopware/Plugins/Local/Frontend/{$name}/',
-        'theme'             => 'templates/{$name}/'
-    );
-
-    /**
-     * Transforms the names
-     * @param  array $vars
-     * @return array
-     */
-    public function inflectPackageVars($vars)
-    {
-        if ($vars['type'] === 'shopware-theme') {
-            return $this->correctThemeName($vars);
-        } else {
-            return $this->correctPluginName($vars);
-        }
-    }
-
-    /**
-     * Changes the name to a camelcased combination of vendor and name
-     * @param  array $vars
-     * @return array
-     */
-    private function correctPluginName($vars)
-    {
-        $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) {
-            return strtoupper($matches[0][1]);
-        }, $vars['name']);
-
-        $vars['name'] = ucfirst($vars['vendor']) . ucfirst($camelCasedName);
-
-        return $vars;
-    }
-
-    /**
-     * Changes the name to a underscore separated name
-     * @param  array $vars
-     * @return array
-     */
-    private function correctThemeName($vars)
-    {
-        $vars['name'] = str_replace('-', '_', $vars['name']);
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php b/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php
deleted file mode 100644
index 17ca543..0000000
--- a/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-use Composer\Package\PackageInterface;
-
-class SilverStripeInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module' => '{$name}/',
-        'theme'  => 'themes/{$name}/',
-    );
-
-    /**
-     * Return the install path based on package type.
-     *
-     * Relies on built-in BaseInstaller behaviour with one exception: silverstripe/framework
-     * must be installed to 'sapphire' and not 'framework' if the version is <3.0.0
-     *
-     * @param  PackageInterface $package
-     * @param  string           $frameworkType
-     * @return string
-     */
-    public function getInstallPath(PackageInterface $package, $frameworkType = '')
-    {
-        if (
-            $package->getName() == 'silverstripe/framework'
-            && preg_match('/^\d+\.\d+\.\d+/', $package->getVersion())
-            && version_compare($package->getVersion(), '2.999.999') < 0
-        ) {
-            return $this->templatePath($this->locations['module'], array('name' => 'sapphire'));
-        } else {
-            return parent::getInstallPath($package, $frameworkType);
-        }
-
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php b/vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php
deleted file mode 100644
index 1675c4f..0000000
--- a/vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-/**
- * Plugin installer for symfony 1.x
- *
- * @author Jérôme Tamarelle <jerome@tamarelle.net>
- */
-class Symfony1Installer extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin'    => 'plugins/{$name}/',
-    );
-
-    /**
-     * Format package name to CamelCase
-     */
-    public function inflectPackageVars($vars)
-    {
-        $vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) {
-            return strtoupper($matches[0][1]);
-        }, $vars['name']);
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php b/vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php
deleted file mode 100644
index 8220b40..0000000
--- a/vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-/**
- * Extension installer for TYPO3 CMS
- *
- * @author Sascha Egerer <sascha.egerer@dkd.de>
- */
-class TYPO3CmsInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'extension'   => 'typo3conf/ext/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php b/vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php
deleted file mode 100644
index 42572f4..0000000
--- a/vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-/**
- * An installer to handle TYPO3 Flow specifics when installing packages.
- */
-class TYPO3FlowInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'package'       => 'Packages/Application/{$name}/',
-        'framework'     => 'Packages/Framework/{$name}/',
-        'plugin'        => 'Packages/Plugins/{$name}/',
-        'site'          => 'Packages/Sites/{$name}/',
-        'boilerplate'   => 'Packages/Boilerplates/{$name}/',
-        'build'         => 'Build/{$name}/',
-    );
-
-    /**
-     * Modify the package name to be a TYPO3 Flow style key.
-     *
-     * @param  array $vars
-     * @return array
-     */
-    public function inflectPackageVars($vars)
-    {
-        $autoload = $this->package->getAutoload();
-        if (isset($autoload['psr-0']) && is_array($autoload['psr-0'])) {
-            $namespace = key($autoload['psr-0']);
-            $vars['name'] = str_replace('\\', '.', $namespace);
-        }
-        if (isset($autoload['psr-4']) && is_array($autoload['psr-4'])) {
-            $namespace = key($autoload['psr-4']);
-            $vars['name'] = rtrim(str_replace('\\', '.', $namespace), '.');
-        }
-
-        return $vars;
-    }
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php b/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php
deleted file mode 100644
index 158af52..0000000
--- a/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class TheliaInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module'                => 'local/modules/{$name}/',
-        'frontoffice-template'  => 'templates/frontOffice/{$name}/',
-        'backoffice-template'   => 'templates/backOffice/{$name}/',
-        'email-template'        => 'templates/email/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php b/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php
deleted file mode 100644
index 7c0113b..0000000
--- a/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-    namespace Composer\Installers;
-    /**
-     * Composer installer for 3rd party Tusk utilities
-     * @author Drew Ewing <drew@phenocode.com>
-     */
-    class TuskInstaller extends BaseInstaller
-    {
-        protected $locations = array(
-            'task'    => '.tusk/tasks/{$name}/',
-            'command' => '.tusk/commands/{$name}/',
-            'asset'   => 'assets/tusk/{$name}/',
-        );
-    }
diff --git a/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php b/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php
deleted file mode 100644
index 2cbb4a4..0000000
--- a/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Composer\Installers;
-
-class WHMCSInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'gateway' => 'modules/gateways/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php b/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php
deleted file mode 100644
index cb38788..0000000
--- a/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class WolfCMSInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin' => 'wolf/plugins/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php b/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php
deleted file mode 100644
index b03219c..0000000
--- a/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class WordPressInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'plugin'    => 'wp-content/plugins/{$name}/',
-        'theme'     => 'wp-content/themes/{$name}/',
-        'muplugin'  => 'wp-content/mu-plugins/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php b/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php
deleted file mode 100644
index bde9bc8..0000000
--- a/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class ZendInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'library' => 'library/{$name}/',
-        'extra'   => 'extras/library/{$name}/',
-        'module'  => 'module/{$name}/',
-    );
-}
diff --git a/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php b/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php
deleted file mode 100644
index 56cdf5d..0000000
--- a/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-namespace Composer\Installers;
-
-class ZikulaInstaller extends BaseInstaller
-{
-    protected $locations = array(
-        'module' => 'modules/{$vendor}-{$name}/',
-        'theme'  => 'themes/{$vendor}-{$name}/'
-    );
-}
diff --git a/vendor/composer/installers/src/bootstrap.php b/vendor/composer/installers/src/bootstrap.php
deleted file mode 100644
index 0de276e..0000000
--- a/vendor/composer/installers/src/bootstrap.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-function includeIfExists($file)
-{
-    if (file_exists($file)) {
-        return include $file;
-    }
-}
-if ((!$loader = includeIfExists(__DIR__ . '/../vendor/autoload.php')) && (!$loader = includeIfExists(__DIR__ . '/../../../autoload.php'))) {
-    die('You must set up the project dependencies, run the following commands:'.PHP_EOL.
-        'curl -s http://getcomposer.org/installer | php'.PHP_EOL.
-        'php composer.phar install'.PHP_EOL);
-}
-return $loader;
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/AsgardInstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/AsgardInstallerTest.php
deleted file mode 100644
index 71480ec..0000000
--- a/vendor/composer/installers/tests/Composer/Installers/Test/AsgardInstallerTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-namespace Composer\Installers\Test;
-
-use Composer\Installers\AsgardInstaller;
-use Composer\Package\Package;
-use Composer\Composer;
-
-class AsgardInstallerTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var OctoberInstaller
-     */
-    private $installer;
-
-    public function setUp()
-    {
-        $this->installer = new AsgardInstaller(
-            new Package('NyanCat', '4.2', '4.2'),
-            new Composer()
-        );
-    }
-
-    /**
-     * @dataProvider packageNameInflectionProvider
-     */
-    public function testInflectPackageVars($type, $name, $expected)
-    {
-        $this->assertEquals(
-            $this->installer->inflectPackageVars(array('name' => $name, 'type' => $type)),
-            array('name' => $expected, 'type' => $type)
-        );
-    }
-
-    public function packageNameInflectionProvider()
-    {
-        return array(
-            array(
-                'asgard-module',
-                'asgard-module',
-                'Asgard'
-            ),
-            array(
-                'asgard-module',
-                'blog',
-                'Blog'
-            ),
-            // tests that exactly one '-theme' is cut off
-            array(
-                'asgard-theme',
-                'some-theme-theme',
-                'Some-theme',
-            ),
-            // tests that names without '-theme' suffix stay valid
-            array(
-                'asgard-theme',
-                'someothertheme',
-                'Someothertheme',
-            ),
-        );
-    }
-}
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php
deleted file mode 100644
index 976bd9b..0000000
--- a/vendor/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-namespace Composer\Installers\Test;
-
-use Composer\Installers\CakePHPInstaller;
-use Composer\Repository\RepositoryManager;
-use Composer\Repository\InstalledArrayRepository;
-use Composer\Package\Package;
-use Composer\Package\RootPackage;
-use Composer\Package\Link;
-use Composer\Package\Version\VersionParser;
-use Composer\Composer;
-use Composer\Config;
-
-class CakePHPInstallerTest extends TestCase
-{
-    private $composer;
-    private $io;
-
-    /**
-     * setUp
-     *
-     * @return void
-     */
-    public function setUp()
-    {
-        $this->package = new Package('CamelCased', '1.0', '1.0');
-        $this->io = $this->getMock('Composer\IO\PackageInterface');
-        $this->composer = new Composer();
-        $this->composer->setConfig(new Config(false));
-    }
-
-    /**
-     * testInflectPackageVars
-     *
-     * @return void
-     */
-    public function testInflectPackageVars()
-    {
-        $installer = new CakePHPInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'CamelCased'));
-        $this->assertEquals($result, array('name' => 'CamelCased'));
-
-        $installer = new CakePHPInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'with-dash'));
-        $this->assertEquals($result, array('name' => 'WithDash'));
-
-        $installer = new CakePHPInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'with_underscore'));
-        $this->assertEquals($result, array('name' => 'WithUnderscore'));
-
-        $installer = new CakePHPInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'cake/acl'));
-        $this->assertEquals($result, array('name' => 'Cake/Acl'));
-
-        $installer = new CakePHPInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'cake/debug-kit'));
-        $this->assertEquals($result, array('name' => 'Cake/DebugKit'));
-    }
-
-    /**
-     * Test getLocations returning appropriate values based on CakePHP version
-     *
-     */
-    public function testGetLocations() {
-        $package = new RootPackage('CamelCased', '1.0', '1.0');
-        $composer = $this->composer;
-        $rm = new RepositoryManager(
-            $this->getMock('Composer\IO\IOInterface'),
-            $this->getMock('Composer\Config')
-        );
-        $composer->setRepositoryManager($rm);
-        $installer = new CakePHPInstaller($package, $composer);
-
-        // 2.0 < cakephp < 3.0
-        $this->setCakephpVersion($rm, '2.0.0');
-        $result = $installer->getLocations();
-        $this->assertContains('Plugin/', $result['plugin']);
-
-        $this->setCakephpVersion($rm, '2.5.9');
-        $result = $installer->getLocations();
-        $this->assertContains('Plugin/', $result['plugin']);
-
-        $this->setCakephpVersion($rm, '~2.5');
-        $result = $installer->getLocations();
-        $this->assertContains('Plugin/', $result['plugin']);
-
-        // special handling for 2.x versions when 3.x is still in development
-        $this->setCakephpVersion($rm, 'dev-master');
-        $result = $installer->getLocations();
-        $this->assertContains('Plugin/', $result['plugin']);
-
-        $this->setCakephpVersion($rm, '>=2.5');
-        $result = $installer->getLocations();
-        $this->assertContains('Plugin/', $result['plugin']);
-
-        // cakephp >= 3.0
-        $this->setCakephpVersion($rm, '3.0.*-dev');
-        $result = $installer->getLocations();
-        $this->assertContains('vendor/{$vendor}/{$name}/', $result['plugin']);
-
-        $this->setCakephpVersion($rm, '~8.8');
-        $result = $installer->getLocations();
-        $this->assertEquals('vendor/{$vendor}/{$name}/', $result['plugin']);
-    }
-
-    protected function setCakephpVersion($rm, $version) {
-        $parser = new VersionParser();
-        list(, $version) = explode(' ', $parser->parseConstraints($version));
-        $installed = new InstalledArrayRepository();
-        $package = new Package('cakephp/cakephp', $version, $version);
-        $installed->addPackage($package);
-        $rm->setLocalRepository($installed);
-    }
-
-}
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/DokuWikiInstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/DokuWikiInstallerTest.php
deleted file mode 100644
index 9e385e6..0000000
--- a/vendor/composer/installers/tests/Composer/Installers/Test/DokuWikiInstallerTest.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-namespace Composer\Installers\Test;
-
-use Composer\Installers\DokuWikiInstaller;
-use Composer\Package\Package;
-use Composer\Composer;
-
-class DokuWikiInstallerTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var DokuWikiInstaller
-     */
-    private $installer;
-
-    public function setUp()
-    {
-        $this->installer = new DokuWikiInstaller(
-            new Package('NyanCat', '4.2', '4.2'),
-            new Composer()
-        );
-    }
-
-    /**
-     * @dataProvider packageNameInflectionProvider
-     */
-    public function testInflectPackageVars($type, $name, $expected)
-    {
-        $this->assertEquals(
-            $this->installer->inflectPackageVars(array('name' => $name, 'type'=>$type)),
-            array('name' => $expected, 'type'=>$type)
-        );
-    }
-
-    public function packageNameInflectionProvider()
-    {
-        return array(
-            array(
-                'dokuwiki-plugin',
-                'dokuwiki-test-plugin',
-                'test',
-            ),
-            array(
-                'dokuwiki-plugin',
-                'test-plugin',
-                'test',
-            ),
-            array(
-                'dokuwiki-plugin',
-                'dokuwiki_test',
-                'test',
-            ),
-            array(
-                'dokuwiki-plugin',
-                'test',
-                'test',
-            ),
-            array(
-                'dokuwiki-plugin',
-                'test-template',
-                'test-template',
-            ),
-            array(
-                'dokuwiki-template',
-                'dokuwiki-test-template',
-                'test',
-            ),
-            array(
-                'dokuwiki-template',
-                'test-template',
-                'test',
-            ),
-            array(
-                'dokuwiki-template',
-                'dokuwiki_test',
-                'test',
-            ),
-            array(
-                'dokuwiki-template',
-                'test',
-                'test',
-            ),
-            array(
-                'dokuwiki-template',
-                'test-plugin',
-                'test-plugin',
-            ),
-        );
-    }
-}
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/GravInstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/GravInstallerTest.php
deleted file mode 100644
index b757799..0000000
--- a/vendor/composer/installers/tests/Composer/Installers/Test/GravInstallerTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-namespace Composer\Installers\Test;
-
-use Composer\Composer;
-use Composer\Installers\GravInstaller;
-
-class GravInstallerTest extends TestCase
-{
-    /* @var \Composer\Composer */
-    protected $composer;
-
-    public function setUp()
-    {
-        $this->composer = new Composer();
-    }
-
-    public function testInflectPackageVars()
-    {
-        $package     = $this->getPackage('vendor/name', '0.0.0');
-        $installer   = new GravInstaller($package, $this->composer);
-        $packageVars = $this->getPackageVars($package);
-
-        $result = $installer->inflectPackageVars(array_merge($packageVars, array('name' => 'test')));
-        $this->assertEquals('test', $result['name']);
-
-        foreach ($installer->getLocations() as $name => $location) {
-            $result = $installer->inflectPackageVars(array_merge($packageVars, array('name' => "$name-test")));
-            $this->assertEquals('test', $result['name']);
-            $result = $installer->inflectPackageVars(array_merge($packageVars, array('name' => "test-$name")));
-            $this->assertEquals('test', $result['name']);
-            $result = $installer->inflectPackageVars(array_merge($packageVars, array('name' => "$name-test-test")));
-            $this->assertEquals('test-test', $result['name']);
-            $result = $installer->inflectPackageVars(array_merge($packageVars, array('name' => "test-test-$name")));
-            $this->assertEquals('test-test', $result['name']);
-            $result = $installer->inflectPackageVars(array_merge($packageVars, array('name' => "grav-$name-test")));
-            $this->assertEquals('test', $result['name']);
-            $result = $installer->inflectPackageVars(array_merge($packageVars, array('name' => "grav-test-$name")));
-            $this->assertEquals('test', $result['name']);
-            $result = $installer->inflectPackageVars(array_merge($packageVars, array('name' => "grav-$name-test-test")));
-            $this->assertEquals('test-test', $result['name']);
-            $result = $installer->inflectPackageVars(array_merge($packageVars, array('name' => "grav-test-test-$name")));
-            $this->assertEquals('test-test', $result['name']);
-        }
-    }
-
-    /**
-     * @param $package  \Composer\Package\PackageInterface
-     */
-    public function getPackageVars($package)
-    {
-        $type = $package->getType();
-
-        $prettyName = $package->getPrettyName();
-        if (strpos($prettyName, '/') !== false) {
-            list($vendor, $name) = explode('/', $prettyName);
-        } else {
-            $vendor = '';
-            $name   = $prettyName;
-        }
-
-        return compact('name', 'vendor', 'type');
-    }
-}
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/InstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/InstallerTest.php
deleted file mode 100644
index a516daf..0000000
--- a/vendor/composer/installers/tests/Composer/Installers/Test/InstallerTest.php
+++ /dev/null
@@ -1,422 +0,0 @@
-<?php
-namespace Composer\Installers\Test;
-
-use Composer\Installers\Installer;
-use Composer\Util\Filesystem;
-use Composer\Package\Package;
-use Composer\Package\RootPackage;
-use Composer\Composer;
-use Composer\Config;
-
-class InstallerTest extends TestCase
-{
-    private $composer;
-    private $config;
-    private $vendorDir;
-    private $binDir;
-    private $dm;
-    private $repository;
-    private $io;
-    private $fs;
-
-    /**
-     * setUp
-     *
-     * @return void
-     */
-    public function setUp()
-    {
-        $this->fs = new Filesystem;
-
-        $this->composer = new Composer();
-        $this->config = new Config();
-        $this->composer->setConfig($this->config);
-
-        $this->vendorDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'baton-test-vendor';
-        $this->ensureDirectoryExistsAndClear($this->vendorDir);
-
-        $this->binDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'baton-test-bin';
-        $this->ensureDirectoryExistsAndClear($this->binDir);
-
-        $this->config->merge(array(
-            'config' => array(
-                'vendor-dir' => $this->vendorDir,
-                'bin-dir' => $this->binDir,
-            ),
-        ));
-
-        $this->dm = $this->getMockBuilder('Composer\Downloader\DownloadManager')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->composer->setDownloadManager($this->dm);
-
-        $this->repository = $this->getMock('Composer\Repository\InstalledRepositoryInterface');
-        $this->io = $this->getMock('Composer\IO\IOInterface');
-    }
-
-    /**
-     * tearDown
-     *
-     * @return void
-     */
-    public function tearDown()
-    {
-        $this->fs->removeDirectory($this->vendorDir);
-        $this->fs->removeDirectory($this->binDir);
-    }
-
-    /**
-     * testSupports
-     *
-     * @return void
-     *
-     * @dataProvider dataForTestSupport
-     */
-    public function testSupports($type, $expected)
-    {
-        $installer = new Installer($this->io, $this->composer);
-        $this->assertSame($expected, $installer->supports($type), sprintf('Failed to show support for %s', $type));
-    }
-
-    /**
-     * dataForTestSupport
-     */
-    public function dataForTestSupport()
-    {
-        return array(
-            array('agl-module', true),
-            array('aimeos-extension', true),
-            array('annotatecms-module', true),
-            array('annotatecms-component', true),
-            array('annotatecms-service', true),
-            array('bitrix-module', true),
-            array('bitrix-component', true),
-            array('bitrix-theme', true),
-            array('cakephp', false),
-            array('cakephp-', false),
-            array('cakephp-app', false),
-            array('cakephp-plugin', true),
-            array('chef-cookbook', true),
-            array('chef-role', true),
-            array('codeigniter-app', false),
-            array('codeigniter-library', true),
-            array('codeigniter-third-party', true),
-            array('codeigniter-module', true),
-            array('concrete5-block', true),
-            array('concrete5-package', true),
-            array('concrete5-theme', true),
-            array('concrete5-update', true),
-            array('craft-plugin', true),
-            array('croogo-plugin', true),
-            array('croogo-theme', true),
-            array('dokuwiki-plugin', true),
-            array('dokuwiki-template', true),
-            array('drupal-module', true),
-            array('dolibarr-module', true),
-            array('elgg-plugin', true),
-            array('fuel-module', true),
-            array('fuel-package', true),
-            array('fuel-theme', true),
-            array('fuelphp-component', true),
-            array('hurad-plugin', true),
-            array('hurad-theme', true),
-            array('joomla-library', true),
-            array('kirby-plugin', true),
-            array('kohana-module', true),
-            array('laravel-library', true),
-            array('lithium-library', true),
-            array('magento-library', true),
-            array('mako-package', true),
-            array('modxevo-snippet', true),
-            array('modxevo-plugin', true),
-            array('modxevo-module', true),
-            array('modxevo-template', true),
-            array('modxevo-lib', true),
-            array('mediawiki-extension', true),
-            array('mediawiki-skin', true),
-            array('microweber-module', true),
-            array('modulework-module', true),
-            array('moodle-mod', true),
-            array('october-module', true),
-            array('october-plugin', true),
-            array('piwik-plugin', true),
-            array('phpbb-extension', true),
-            array('pimcore-plugin', true),
-            array('ppi-module', true),
-            array('prestashop-module', true),
-            array('prestashop-theme', true),
-            array('puppet-module', true),
-            array('redaxo-addon', true),
-            array('redaxo-bestyle-plugin', true),
-            array('roundcube-plugin', true),
-            array('shopware-backend-plugin', true),
-            array('shopware-core-plugin', true),
-            array('shopware-frontend-plugin', true),
-            array('shopware-theme', true),
-            array('silverstripe-module', true),
-            array('silverstripe-theme', true),
-            array('smf-module', true),
-            array('smf-theme', true),
-            array('symfony1-plugin', true),
-            array('thelia-module', true),
-            array('thelia-frontoffice-template', true),
-            array('thelia-backoffice-template', true),
-            array('thelia-email-template', true),
-            array('tusk-task', true),
-            array('tusk-asset', true),
-            array('typo3-flow-plugin', true),
-            array('typo3-cms-extension', true),
-            array('whmcs-gateway', true),
-            array('wolfcms-plugin', true),
-            array('wordpress-plugin', true),
-            array('wordpress-core', false),
-            array('zend-library', true),
-            array('zikula-module', true),
-            array('zikula-theme', true),
-        );
-    }
-
-    /**
-     * testInstallPath
-     *
-     * @dataProvider dataForTestInstallPath
-     */
-    public function testInstallPath($type, $path, $name, $version = '1.0.0')
-    {
-        $installer = new Installer($this->io, $this->composer);
-        $package = new Package($name, $version, $version);
-
-        $package->setType($type);
-        $result = $installer->getInstallPath($package);
-        $this->assertEquals($path, $result);
-    }
-
-    /**
-     * dataFormTestInstallPath
-     */
-    public function dataForTestInstallPath()
-    {
-        return array(
-            array('agl-module', 'More/MyTestPackage/', 'agl/my_test-package'),
-            array('aimeos-extension', 'ext/ai-test/', 'author/ai-test'),
-            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('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'),
-            array('codeigniter-library', 'application/libraries/my_package/', 'shama/my_package'),
-            array('codeigniter-module', 'application/modules/my_package/', 'shama/my_package'),
-            array('concrete5-block', 'blocks/concrete5_block/', 'remo/concrete5_block'),
-            array('concrete5-package', 'packages/concrete5_package/', 'remo/concrete5_package'),
-            array('concrete5-theme', 'themes/concrete5_theme/', 'remo/concrete5_theme'),
-            array('concrete5-update', 'updates/concrete5/', 'concrete5/concrete5'),
-            array('craft-plugin', 'craft/plugins/my_plugin/', 'mdcpepper/my_plugin'),
-            array('croogo-plugin', 'Plugin/Sitemaps/', 'fahad19/sitemaps'),
-            array('croogo-theme', 'View/Themed/Readable/', 'rchavik/readable'),
-            array('dokuwiki-plugin', 'lib/plugins/someplugin/', 'author/someplugin'),
-            array('dokuwiki-template', 'lib/tpl/sometemplate/', 'author/sometemplate'),
-            array('dolibarr-module', 'htdocs/custom/my_module/', 'shama/my_module'),
-            array('drupal-module', 'modules/my_module/', 'shama/my_module'),
-            array('drupal-theme', 'themes/my_module/', 'shama/my_module'),
-            array('drupal-profile', 'profiles/my_module/', 'shama/my_module'),
-            array('drupal-drush', 'drush/my_module/', 'shama/my_module'),
-            array('elgg-plugin', 'mod/sample_plugin/', 'test/sample_plugin'),
-            array('fuel-module', 'fuel/app/modules/module/', 'fuel/module'),
-            array('fuel-package', 'fuel/packages/orm/', 'fuel/orm'),
-            array('fuel-theme', 'fuel/app/themes/theme/', 'fuel/theme'),
-            array('fuelphp-component', 'components/demo/', 'fuelphp/demo'),
-            array('hurad-plugin', 'plugins/Akismet/', 'atkrad/akismet'),
-            array('hurad-theme', 'plugins/Hurad2013/', 'atkrad/Hurad2013'),
-            array('joomla-plugin', 'plugins/my_plugin/', 'shama/my_plugin'),
-            array('kirby-plugin', 'site/plugins/my_plugin/', 'shama/my_plugin'),
-            array('kohana-module', 'modules/my_package/', 'shama/my_package'),
-            array('laravel-library', 'libraries/my_package/', 'shama/my_package'),
-            array('lithium-library', 'libraries/li3_test/', 'user/li3_test'),
-            array('magento-library', 'lib/foo/', 'test/foo'),
-            array('modxevo-snippet', 'assets/snippets/my_snippet/', 'shama/my_snippet'),
-            array('modxevo-plugin', 'assets/plugins/my_plugin/', 'shama/my_plugin'),
-            array('modxevo-module', 'assets/modules/my_module/', 'shama/my_module'),
-            array('modxevo-template', 'assets/templates/my_template/', 'shama/my_template'),
-            array('modxevo-lib', 'assets/lib/my_lib/', 'shama/my_lib'),
-            array('mako-package', 'app/packages/my_package/', 'shama/my_package'),
-            array('mediawiki-extension', 'extensions/APC/', 'author/APC'),
-            array('mediawiki-extension', 'extensions/APC/', 'author/APC-extension'),
-            array('mediawiki-extension', 'extensions/UploadWizard/', 'author/upload-wizard'),
-            array('mediawiki-extension', 'extensions/SyntaxHighlight_GeSHi/', 'author/syntax-highlight_GeSHi'),
-            array('mediawiki-skin', 'skins/someskin/', 'author/someskin-skin'),
-            array('mediawiki-skin', 'skins/someskin/', 'author/someskin'),
-            array('microweber-module', 'userfiles/modules/my-thing/', 'author/my-thing-module'),
-            array('modulework-module', 'modules/my_package/', 'shama/my_package'),
-            array('moodle-mod', 'mod/my_package/', 'shama/my_package'),
-            array('october-module', 'modules/my_plugin/', 'shama/my_plugin'),
-            array('october-plugin', 'plugins/shama/my_plugin/', 'shama/my_plugin'),
-            array('october-theme', 'themes/my_theme/', 'shama/my_theme'),
-            array('piwik-plugin', 'plugins/VisitSummary/', 'shama/visit-summary'),
-            array('prestashop-module', 'modules/a-module/', 'vendor/a-module'),
-            array('prestashop-theme', 'themes/a-theme/', 'vendor/a-theme'),
-            array('phpbb-extension', 'ext/test/foo/', 'test/foo'),
-            array('phpbb-style', 'styles/foo/', 'test/foo'),
-            array('phpbb-language', 'language/foo/', 'test/foo'),
-            array('pimcore-plugin', 'plugins/MyPlugin/', 'ubikz/my_plugin'),
-            array('ppi-module', 'modules/foo/', 'test/foo'),
-            array('puppet-module', 'modules/puppet-name/', 'puppet/puppet-name'),
-            array('redaxo-addon', 'redaxo/include/addons/my_plugin/', 'shama/my_plugin'),
-            array('redaxo-bestyle-plugin', 'redaxo/include/addons/be_style/plugins/my_plugin/', 'shama/my_plugin'),
-            array('roundcube-plugin', 'plugins/base/', 'test/base'),
-            array('roundcube-plugin', 'plugins/replace_dash/', 'test/replace-dash'),
-            array('shopware-backend-plugin', 'engine/Shopware/Plugins/Local/Backend/ShamaMyBackendPlugin/', 'shama/my-backend-plugin'),
-            array('shopware-core-plugin', 'engine/Shopware/Plugins/Local/Core/ShamaMyCorePlugin/', 'shama/my-core-plugin'),
-            array('shopware-frontend-plugin', 'engine/Shopware/Plugins/Local/Frontend/ShamaMyFrontendPlugin/', 'shama/my-frontend-plugin'),
-            array('shopware-theme', 'templates/my_theme/', 'shama/my-theme'),
-            array('silverstripe-module', 'my_module/', 'shama/my_module'),
-            array('silverstripe-module', 'sapphire/', 'silverstripe/framework', '2.4.0'),
-            array('silverstripe-module', 'framework/', 'silverstripe/framework', '3.0.0'),
-            array('silverstripe-module', 'framework/', 'silverstripe/framework', '3.0.0-rc1'),
-            array('silverstripe-module', 'framework/', 'silverstripe/framework', 'my/branch'),
-            array('silverstripe-theme', 'themes/my_theme/', 'shama/my_theme'),
-            array('smf-module', 'Sources/my_module/', 'shama/my_module'),
-            array('smf-theme', 'Themes/my_theme/', 'shama/my_theme'),
-            array('symfony1-plugin', 'plugins/sfShamaPlugin/', 'shama/sfShamaPlugin'),
-            array('symfony1-plugin', 'plugins/sfShamaPlugin/', 'shama/sf-shama-plugin'),
-            array('thelia-module', 'local/modules/my_module/', 'shama/my_module'),
-            array('thelia-frontoffice-template', 'templates/frontOffice/my_template_fo/', 'shama/my_template_fo'),
-            array('thelia-backoffice-template', 'templates/backOffice/my_template_bo/', 'shama/my_template_bo'),
-            array('thelia-email-template', 'templates/email/my_template_email/', 'shama/my_template_email'),
-            array('tusk-task', '.tusk/tasks/my_task/', 'shama/my_task'),
-            array('typo3-flow-package', 'Packages/Application/my_package/', 'shama/my_package'),
-            array('typo3-flow-build', 'Build/my_package/', 'shama/my_package'),
-            array('typo3-cms-extension', 'typo3conf/ext/my_extension/', 'shama/my_extension'),
-            array('whmcs-gateway', 'modules/gateways/gateway_name/', 'vendor/gateway_name'),
-            array('wolfcms-plugin', 'wolf/plugins/my_plugin/', 'shama/my_plugin'),
-            array('wordpress-plugin', 'wp-content/plugins/my_plugin/', 'shama/my_plugin'),
-            array('wordpress-muplugin', 'wp-content/mu-plugins/my_plugin/', 'shama/my_plugin'),
-            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'),
-        );
-    }
-
-    /**
-     * testGetCakePHPInstallPathException
-     *
-     * @return void
-     *
-     * @expectedException \InvalidArgumentException
-     */
-    public function testGetCakePHPInstallPathException()
-    {
-        $installer = new Installer($this->io, $this->composer);
-        $package = new Package('shama/ftp', '1.0.0', '1.0.0');
-
-        $package->setType('cakephp-whoops');
-        $result = $installer->getInstallPath($package);
-    }
-
-    /**
-     * testCustomInstallPath
-     */
-    public function testCustomInstallPath()
-    {
-        $installer = new Installer($this->io, $this->composer);
-        $package = new Package('shama/ftp', '1.0.0', '1.0.0');
-        $package->setType('cakephp-plugin');
-        $consumerPackage = new RootPackage('foo/bar', '1.0.0', '1.0.0');
-        $this->composer->setPackage($consumerPackage);
-        $consumerPackage->setExtra(array(
-            'installer-paths' => array(
-                'my/custom/path/{$name}/' => array(
-                    'shama/ftp',
-                    'foo/bar',
-                ),
-            ),
-        ));
-        $result = $installer->getInstallPath($package);
-        $this->assertEquals('my/custom/path/Ftp/', $result);
-    }
-
-    /**
-     * testCustomInstallerName
-     */
-    public function testCustomInstallerName()
-    {
-        $installer = new Installer($this->io, $this->composer);
-        $package = new Package('shama/cakephp-ftp-plugin', '1.0.0', '1.0.0');
-        $package->setType('cakephp-plugin');
-        $package->setExtra(array(
-            'installer-name' => 'FTP',
-        ));
-        $result = $installer->getInstallPath($package);
-        $this->assertEquals('Plugin/FTP/', $result);
-    }
-
-    /**
-     * testCustomTypePath
-     */
-    public function testCustomTypePath()
-    {
-        $installer = new Installer($this->io, $this->composer);
-        $package = new Package('slbmeh/my_plugin', '1.0.0', '1.0.0');
-        $package->setType('wordpress-plugin');
-        $consumerPackage = new RootPackage('foo/bar', '1.0.0', '1.0.0');
-        $this->composer->setPackage($consumerPackage);
-        $consumerPackage->setExtra(array(
-            'installer-paths' => array(
-                'my/custom/path/{$name}/' => array(
-                    'type:wordpress-plugin'
-                ),
-            ),
-        ));
-        $result = $installer->getInstallPath($package);
-        $this->assertEquals('my/custom/path/my_plugin/', $result);
-    }
-
-    /**
-     * testNoVendorName
-     */
-    public function testNoVendorName()
-    {
-        $installer = new Installer($this->io, $this->composer);
-        $package = new Package('sfPhpunitPlugin', '1.0.0', '1.0.0');
-
-        $package->setType('symfony1-plugin');
-        $result = $installer->getInstallPath($package);
-        $this->assertEquals('plugins/sfPhpunitPlugin/', $result);
-    }
-
-    /**
-     * testTypo3Inflection
-     */
-    public function testTypo3Inflection()
-    {
-        $installer = new Installer($this->io, $this->composer);
-        $package = new Package('typo3/fluid', '1.0.0', '1.0.0');
-
-        $package->setAutoload(array(
-            'psr-0' => array(
-                'TYPO3\\Fluid' => 'Classes',
-            ),
-        ));
-
-        $package->setType('typo3-flow-package');
-        $result = $installer->getInstallPath($package);
-        $this->assertEquals('Packages/Application/TYPO3.Fluid/', $result);
-    }
-
-    public function testUninstallAndDeletePackageFromLocalRepo()
-    {
-        $package = new Package('foo', '1.0.0', '1.0.0');
-
-        $installer = $this->getMock('Composer\Installers\Installer', array('getInstallPath'), array($this->io, $this->composer));
-        $installer->expects($this->once())->method('getInstallPath')->with($package)->will($this->returnValue(sys_get_temp_dir().'/foo'));
-
-        $repo = $this->getMock('Composer\Repository\InstalledRepositoryInterface');
-        $repo->expects($this->once())->method('hasPackage')->with($package)->will($this->returnValue(true));
-        $repo->expects($this->once())->method('removePackage')->with($package);
-
-        $installer->uninstall($repo, $package);
-    }
-}
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/MediaWikiInstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/MediaWikiInstallerTest.php
deleted file mode 100644
index 3675e18..0000000
--- a/vendor/composer/installers/tests/Composer/Installers/Test/MediaWikiInstallerTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-namespace Composer\Installers\Test;
-
-use Composer\Installers\MediaWikiInstaller;
-use Composer\Package\Package;
-use Composer\Composer;
-
-class MediaWikiInstallerTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var MediaWikiInstaller
-     */
-    private $installer;
-
-    public function setUp()
-    {
-        $this->installer = new MediaWikiInstaller(
-            new Package('NyanCat', '4.2', '4.2'),
-            new Composer()
-        );
-    }
-
-    /**
-     * @dataProvider packageNameInflectionProvider
-     */
-    public function testInflectPackageVars($type, $name, $expected)
-    {
-        $this->assertEquals(
-            $this->installer->inflectPackageVars(array('name' => $name, 'type'=>$type)),
-            array('name' => $expected, 'type'=>$type)
-        );
-    }
-
-    public function packageNameInflectionProvider()
-    {
-        return array(
-            array(
-                'mediawiki-extension',
-                'sub-page-list',
-                'SubPageList',
-            ),
-            array(
-                'mediawiki-extension',
-                'sub-page-list-extension',
-                'SubPageList',
-            ),
-            array(
-                'mediawiki-extension',
-                'semantic-mediawiki',
-                'SemanticMediawiki',
-            ),
-            // tests that exactly one '-skin' is cut off, and that skins do not get ucwords treatment like extensions
-            array(
-                'mediawiki-skin',
-                'some-skin-skin',
-                'some-skin',
-            ),
-            // tests that names without '-skin' suffix stay valid
-            array(
-                'mediawiki-skin',
-                'someotherskin',
-                'someotherskin',
-            ),
-        );
-    }
-}
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/OctoberInstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/OctoberInstallerTest.php
deleted file mode 100644
index fd427cd..0000000
--- a/vendor/composer/installers/tests/Composer/Installers/Test/OctoberInstallerTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-namespace Composer\Installers\Test;
-
-use Composer\Installers\OctoberInstaller;
-use Composer\Package\Package;
-use Composer\Composer;
-
-class OctoberInstallerTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var OctoberInstaller
-     */
-    private $installer;
-
-    public function setUp()
-    {
-        $this->installer = new OctoberInstaller(
-            new Package('NyanCat', '4.2', '4.2'),
-            new Composer()
-        );
-    }
-
-    /**
-     * @dataProvider packageNameInflectionProvider
-     */
-    public function testInflectPackageVars($type, $name, $expected)
-    {
-        $this->assertEquals(
-            $this->installer->inflectPackageVars(array('name' => $name, 'type' => $type)),
-            array('name' => $expected, 'type' => $type)
-        );
-    }
-
-    public function packageNameInflectionProvider()
-    {
-        return array(
-            array(
-                'october-plugin',
-                'subpagelist',
-                'subpagelist',
-            ),
-            array(
-                'october-plugin',
-                'subpagelist-plugin',
-                'subpagelist',
-            ),
-            array(
-                'october-plugin',
-                'semanticoctober',
-                'semanticoctober',
-            ),
-            // tests that exactly one '-theme' is cut off
-            array(
-                'october-theme',
-                'some-theme-theme',
-                'some-theme',
-            ),
-            // tests that names without '-theme' suffix stay valid
-            array(
-                'october-theme',
-                'someothertheme',
-                'someothertheme',
-            ),
-        );
-    }
-}
\ No newline at end of file
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/PimcoreInstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/PimcoreInstallerTest.php
deleted file mode 100644
index ea79374..0000000
--- a/vendor/composer/installers/tests/Composer/Installers/Test/PimcoreInstallerTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-namespace Composer\Installers\Test;
-
-use Composer\Installers\PimcoreInstaller;
-use Composer\Package\Package;
-use Composer\Composer;
-
-class PimcoreInstallerTest extends TestCase
-{
-    private $composer;
-    private $io;
-
-    /**
-     * setUp
-     *
-     * @return void
-     */
-    public function setUp()
-    {
-        $this->package = new Package('CamelCased', '1.0', '1.0');
-        $this->io = $this->getMock('Composer\IO\PackageInterface');
-        $this->composer = new Composer();
-    }
-
-    /**
-     * testInflectPackageVars
-     *
-     * @return void
-     */
-    public function testInflectPackageVars()
-    {
-        $installer = new PimcoreInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'CamelCased'));
-        $this->assertEquals($result, array('name' => 'CamelCased'));
-
-        $installer = new PimcoreInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'with-dash'));
-        $this->assertEquals($result, array('name' => 'WithDash'));
-
-        $installer = new PimcoreInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'with_underscore'));
-        $this->assertEquals($result, array('name' => 'WithUnderscore'));
-    }
-}
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/PiwikInstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/PiwikInstallerTest.php
deleted file mode 100644
index 8d9ff3f..0000000
--- a/vendor/composer/installers/tests/Composer/Installers/Test/PiwikInstallerTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-namespace Composer\Installers\Test;
-
-use Composer\Composer;
-use Composer\Installers\PiwikInstaller;
-use Composer\Package\Package;
-use Composer\Package\PackageInterface;
-
-/**
- * Class PiwikInstallerTest
- *
- * @package Composer\Installers\Test
- */
-class PiwikInstallerTest extends TestCase
-{
-    /**
-     * @varComposer
-     */
-    private $composer;
-
-    /**
-     * @var PackageInterface
-     */
-    private $io;
-
-    /**
-     * @var Package
-     */
-    private $package;
-
-    /**
-     * setUp
-     *
-     * @return void
-     */
-    public function setUp()
-    {
-        $this->package = new Package('VisitSummary', '1.0', '1.0');
-        $this->io = $this->getMock('Composer\IO\PackageInterface');
-        $this->composer = new Composer();
-    }
-
-    /**
-     * testInflectPackageVars
-     *
-     * @return void
-     */
-    public function testInflectPackageVars()
-    {
-        $installer = new PiwikInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'VisitSummary'));
-        $this->assertEquals($result, array('name' => 'VisitSummary'));
-
-        $installer = new PiwikInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'visit-summary'));
-        $this->assertEquals($result, array('name' => 'VisitSummary'));
-
-        $installer = new PiwikInstaller($this->package, $this->composer);
-        $result = $installer->inflectPackageVars(array('name' => 'visit_summary'));
-        $this->assertEquals($result, array('name' => 'VisitSummary'));
-    }
-
-}
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/TestCase.php b/vendor/composer/installers/tests/Composer/Installers/Test/TestCase.php
deleted file mode 100644
index 6418a03..0000000
--- a/vendor/composer/installers/tests/Composer/Installers/Test/TestCase.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of Composer.
- *
- * (c) Nils Adermann <naderman@naderman.de>
- *     Jordi Boggiano <j.boggiano@seld.be>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Composer\Installers\Test;
-
-use Composer\Package\Version\VersionParser;
-use Composer\Package\Package;
-use Composer\Package\AliasPackage;
-use Composer\Package\LinkConstraint\VersionConstraint;
-use Composer\Util\Filesystem;
-
-abstract class TestCase extends \PHPUnit_Framework_TestCase
-{
-    private static $parser;
-
-    protected static function getVersionParser()
-    {
-        if (!self::$parser) {
-            self::$parser = new VersionParser();
-        }
-
-        return self::$parser;
-    }
-
-    protected function getVersionConstraint($operator, $version)
-    {
-        return new VersionConstraint(
-            $operator,
-            self::getVersionParser()->normalize($version)
-        );
-    }
-
-    protected function getPackage($name, $version)
-    {
-        $normVersion = self::getVersionParser()->normalize($version);
-
-        return new Package($name, $normVersion, $version);
-    }
-
-    protected function getAliasPackage($package, $version)
-    {
-        $normVersion = self::getVersionParser()->normalize($version);
-
-        return new AliasPackage($package, $normVersion, $version);
-    }
-
-    protected function ensureDirectoryExistsAndClear($directory)
-    {
-        $fs = new Filesystem();
-        if (is_dir($directory)) {
-            $fs->removeDirectory($directory);
-        }
-        mkdir($directory, 0777, true);
-    }
-}
diff --git a/vendor/composer/installers/tests/bootstrap.php b/vendor/composer/installers/tests/bootstrap.php
deleted file mode 100644
index 30c8fdc..0000000
--- a/vendor/composer/installers/tests/bootstrap.php
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php
-
-$loader = require __DIR__ . '/../src/bootstrap.php';
-$loader->add('Composer\Installers\Test', __DIR__);
diff --git a/vendor/composer/semver/CHANGELOG.md b/vendor/composer/semver/CHANGELOG.md
deleted file mode 100644
index 8352cb7..0000000
--- a/vendor/composer/semver/CHANGELOG.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file.
-This project adheres to [Semantic Versioning](http://semver.org/).
-
-### [1.0.0] 2015-09-21
-
-  * Break: `VersionConstraint` renamed to `Constraint`.
-  * Break: `SpecificConstraint` renamed to `AbstractConstraint`.
-  * Break: `LinkConstraintInterface` renamed to `ConstraintInterface`.
-  * Break: `VersionParser::parseNameVersionPairs` was removed.
-  * Changed: `VersionParser::parseConstraints` allows (but ignores) build metadata now.
-  * 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`.
-
-### [0.1.0] 2015-07-23
-
-  * Added: `Composer\Semver\Comparator`, various methods to compare versions.
-  * Added: various documents such as README.md, LICENSE, etc.
-  * Added: configuration files for Git, Travis, php-cs-fixer, phpunit.
-  * Break: the following namespaces were renamed:
-    - Namespace: `Composer\Package\Version` -> `Composer\Semver`
-    - Namespace: `Composer\Package\LinkConstraint` -> `Composer\Semver\Constraint`
-    - Namespace: `Composer\Test\Package\Version` -> `Composer\Test\Semver`
-    - Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint`
-  * Changed: code style using php-cs-fixer.
diff --git a/vendor/composer/semver/LICENSE b/vendor/composer/semver/LICENSE
deleted file mode 100644
index 4669758..0000000
--- a/vendor/composer/semver/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2015 Composer
-
-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/composer/semver/README.md b/vendor/composer/semver/README.md
deleted file mode 100644
index c8b6979..0000000
--- a/vendor/composer/semver/README.md
+++ /dev/null
@@ -1,70 +0,0 @@
-composer/semver
-===============
-
-Semver library that offers utilities, version constraint parsing and validation.
-
-Originally written as part of [composer/composer](https://github.com/composer/composer),
-now extracted and made available as a stand-alone library.
-
-[![Build Status](https://travis-ci.org/composer/semver.svg?branch=master)](https://travis-ci.org/composer/semver)
-
-
-Installation
-------------
-
-Install the latest version with:
-
-```bash
-$ composer require composer/semver
-```
-
-
-Requirements
-------------
-
-* PHP 5.3.2 is required but using the latest version of PHP is highly recommended.
-
-
-Version Comparison
-------------------
-
-For details on how versions are compared, refer to the [Versions](https://getcomposer.org/doc/articles/versions.md)
-article in the documentation section of the [getcomposer.org](https://getcomposer.org) website.
-
-
-Basic usage
------------
-
-### Comparator
-
-The `Composer\Semver\Comparator` class provides the following methods for comparing versions:
-
-* greaterThan($v1, $v2)
-* greaterThanOrEqualTo($v1, $v2)
-* lessThan($v1, $v2)
-* lessThanOrEqualTo($v1, $v2)
-* equalTo($v1, $v2)
-* notEqualTo($v1, $v2)
-
-Each function takes two version strings as arguments. For example:
-
-```php
-use Composer\Semver\Comparator;
-
-Comparator::greaterThan('1.25.0', '1.24.0'); // 1.25.0 > 1.24.0
-```
-
-### Semver
-
-The `Composer\Semver\Semver` class providers the following methods:
-
-* satisfies($version, $constraints)
-* satisfiedBy($constraint, array $versions)
-* sort($versions)
-* rsort($versions)
-
-
-License
--------
-
-composer/semver is licensed under the MIT License, see the LICENSE file for details.
diff --git a/vendor/composer/semver/composer.json b/vendor/composer/semver/composer.json
deleted file mode 100644
index b996186..0000000
--- a/vendor/composer/semver/composer.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-    "name": "composer/semver",
-    "description": "Semver library that offers utilities, version constraint parsing and validation.",
-    "type": "library",
-    "license": "MIT",
-    "keywords": [
-        "semver",
-        "semantic",
-        "versioning",
-        "validation"
-    ],
-    "authors": [
-        {
-            "name": "Nils Adermann",
-            "email": "naderman@naderman.de",
-            "homepage": "http://www.naderman.de"
-        },
-        {
-            "name": "Jordi Boggiano",
-            "email": "j.boggiano@seld.be",
-            "homepage": "http://seld.be"
-        },
-        {
-            "name": "Rob Bast",
-            "email": "rob.bast@gmail.com"
-        }
-    ],
-    "support": {
-        "irc": "irc://irc.freenode.org/composer",
-        "issues": "https://github.com/composer/semver/issues"
-    },
-    "require": {
-        "php": ">=5.3.2"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.5",
-        "phpunit/phpunit-mock-objects": "~2.3"
-    },
-    "autoload": {
-        "psr-4": {
-            "Composer\\Semver\\": "src"
-        }
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "Composer\\Semver\\Test\\": "tests"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "0.1-dev"
-        }
-    },
-    "scripts": {
-        "test": "phpunit"
-    }
-}
diff --git a/vendor/composer/semver/src/Comparator.php b/vendor/composer/semver/src/Comparator.php
deleted file mode 100644
index a9d758f..0000000
--- a/vendor/composer/semver/src/Comparator.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-/*
- * This file is part of composer/semver.
- *
- * (c) Composer <https://github.com/composer>
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver;
-
-use Composer\Semver\Constraint\Constraint;
-
-class Comparator
-{
-    /**
-     * Evaluates the expression: $version1 > $version2.
-     *
-     * @param string $version1
-     * @param string $version2
-     *
-     * @return bool
-     */
-    public static function greaterThan($version1, $version2)
-    {
-        return self::compare($version1, '>', $version2);
-    }
-
-    /**
-     * Evaluates the expression: $version1 >= $version2.
-     *
-     * @param string $version1
-     * @param string $version2
-     *
-     * @return bool
-     */
-    public static function greaterThanOrEqualTo($version1, $version2)
-    {
-        return self::compare($version1, '>=', $version2);
-    }
-
-    /**
-     * Evaluates the expression: $version1 < $version2.
-     *
-     * @param string $version1
-     * @param string $version2
-     *
-     * @return bool
-     */
-    public static function lessThan($version1, $version2)
-    {
-        return self::compare($version1, '<', $version2);
-    }
-
-    /**
-     * Evaluates the expression: $version1 <= $version2.
-     *
-     * @param string $version1
-     * @param string $version2
-     *
-     * @return bool
-     */
-    public static function lessThanOrEqualTo($version1, $version2)
-    {
-        return self::compare($version1, '<=', $version2);
-    }
-
-    /**
-     * Evaluates the expression: $version1 == $version2.
-     *
-     * @param string $version1
-     * @param string $version2
-     *
-     * @return bool
-     */
-    public static function equalTo($version1, $version2)
-    {
-        return self::compare($version1, '==', $version2);
-    }
-
-    /**
-     * Evaluates the expression: $version1 != $version2.
-     *
-     * @param string $version1
-     * @param string $version2
-     *
-     * @return bool
-     */
-    public static function notEqualTo($version1, $version2)
-    {
-        return self::compare($version1, '!=', $version2);
-    }
-
-    /**
-     * Evaluates the expression: $version1 $operator $version2.
-     *
-     * @param string $version1
-     * @param string $operator
-     * @param string $version2
-     *
-     * @return bool
-     */
-    public static function compare($version1, $operator, $version2)
-    {
-        $constraint = new Constraint($operator, $version2);
-
-        return $constraint->matches(new Constraint('==', $version1));
-    }
-}
diff --git a/vendor/composer/semver/src/Constraint/AbstractConstraint.php b/vendor/composer/semver/src/Constraint/AbstractConstraint.php
deleted file mode 100644
index ccd834f..0000000
--- a/vendor/composer/semver/src/Constraint/AbstractConstraint.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of composer/semver.
- *
- * (c) Composer <https://github.com/composer>
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-/**
- * Base constraint class.
- */
-abstract class AbstractConstraint implements ConstraintInterface
-{
-    /** @var string */
-    protected $prettyString;
-
-    /**
-     * @param ConstraintInterface $provider
-     *
-     * @return bool
-     */
-    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;
-    }
-
-    /**
-     * @param string $prettyString
-     */
-    public function setPrettyString($prettyString)
-    {
-        $this->prettyString = $prettyString;
-    }
-
-    /**
-     * @return string
-     */
-    public function getPrettyString()
-    {
-        if ($this->prettyString) {
-            return $this->prettyString;
-        }
-
-        return $this->__toString();
-    }
-
-    // implementations must implement a method of this format:
-    // not declared abstract here because type hinting violates parameter coherence (TODO right word?)
-    // public function matchSpecific(<SpecificConstraintType> $provider);
-}
diff --git a/vendor/composer/semver/src/Constraint/Constraint.php b/vendor/composer/semver/src/Constraint/Constraint.php
deleted file mode 100644
index 8bc68db..0000000
--- a/vendor/composer/semver/src/Constraint/Constraint.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-
-/*
- * This file is part of composer/semver.
- *
- * (c) Composer <https://github.com/composer>
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-/**
- * Defines a constraint.
- */
-class Constraint extends AbstractConstraint
-{
-    /* operator integer values */
-    const OP_EQ = 0;
-    const OP_LT = 1;
-    const OP_LE = 2;
-    const OP_GT = 3;
-    const OP_GE = 4;
-    const OP_NE = 5;
-
-    /**
-     * Operator to integer translation table.
-     *
-     * @var array
-     */
-    private static $transOpStr = array(
-        '=' => self::OP_EQ,
-        '==' => self::OP_EQ,
-        '<' => self::OP_LT,
-        '<=' => self::OP_LE,
-        '>' => self::OP_GT,
-        '>=' => self::OP_GE,
-        '<>' => self::OP_NE,
-        '!=' => self::OP_NE,
-    );
-
-    /**
-     * Integer to operator translation table.
-     *
-     * @var array
-     */
-    private static $transOpInt = array(
-        self::OP_EQ => '==',
-        self::OP_LT => '<',
-        self::OP_LE => '<=',
-        self::OP_GT => '>',
-        self::OP_GE => '>=',
-        self::OP_NE => '!=',
-    );
-
-    /** @var string */
-    private $operator;
-
-    /** @var string */
-    private $version;
-
-    /**
-     * Get all supported comparison operators.
-     *
-     * @return array
-     */
-    public static function getSupportedOperators()
-    {
-        return array_keys(self::$transOpStr);
-    }
-
-    /**
-     * Sets operator and version to compare with.
-     *
-     * @param string $operator
-     * @param string $version
-     *
-     * @throws \InvalidArgumentException if invalid operator is given.
-     */
-    public function __construct($operator, $version)
-    {
-        if (!isset(self::$transOpStr[$operator])) {
-            throw new \InvalidArgumentException(sprintf(
-                'Invalid operator "%s" given, expected one of: %s',
-                $operator,
-                implode(', ', self::getSupportedOperators())
-            ));
-        }
-
-        $this->operator = self::$transOpStr[$operator];
-        $this->version = $version;
-    }
-
-    /**
-     * @param string $a
-     * @param string $b
-     * @param string $operator
-     * @param bool $compareBranches
-     *
-     * @throws \InvalidArgumentException if invalid operator is given.
-     *
-     * @return bool
-     */
-    public function versionCompare($a, $b, $operator, $compareBranches = false)
-    {
-        if (!isset(self::$transOpStr[$operator])) {
-            throw new \InvalidArgumentException(sprintf(
-                'Invalid operator "%s" given, expected one of: %s',
-                $operator,
-                implode(', ', self::getSupportedOperators())
-            ));
-        }
-
-        $aIsBranch = 'dev-' === substr($a, 0, 4);
-        $bIsBranch = 'dev-' === substr($b, 0, 4);
-
-        if ($aIsBranch && $bIsBranch) {
-            return $operator === '==' && $a === $b;
-        }
-
-        // when branches are not comparable, we make sure dev branches never match anything
-        if (!$compareBranches && ($aIsBranch || $bIsBranch)) {
-            return false;
-        }
-
-        return version_compare($a, $b, $operator);
-    }
-
-    /**
-     * @param Constraint $provider
-     * @param bool $compareBranches
-     *
-     * @return bool
-     */
-    public function matchSpecific(Constraint $provider, $compareBranches = false)
-    {
-        $noEqualOp = str_replace('=', '', self::$transOpInt[$this->operator]);
-        $providerNoEqualOp = str_replace('=', '', self::$transOpInt[$provider->operator]);
-
-        $isEqualOp = self::OP_EQ === $this->operator;
-        $isNonEqualOp = self::OP_NE === $this->operator;
-        $isProviderEqualOp = self::OP_EQ === $provider->operator;
-        $isProviderNonEqualOp = self::OP_NE === $provider->operator;
-
-        // '!=' operator is match when other operator is not '==' operator or version is not match
-        // these kinds of comparisons always have a solution
-        if ($isNonEqualOp || $isProviderNonEqualOp) {
-            return !$isEqualOp && !$isProviderEqualOp
-                || $this->versionCompare($provider->version, $this->version, '!=', $compareBranches);
-        }
-
-        // an example for the condition is <= 2.0 & < 1.0
-        // these kinds of comparisons always have a solution
-        if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) {
-            return true;
-        }
-
-        if ($this->versionCompare($provider->version, $this->version, self::$transOpInt[$this->operator], $compareBranches)) {
-            // special case, e.g. require >= 1.0 and provide < 1.0
-            // 1.0 >= 1.0 but 1.0 is outside of the provided interval
-            if ($provider->version === $this->version
-                && self::$transOpInt[$provider->operator] === $providerNoEqualOp
-                && self::$transOpInt[$this->operator] !== $noEqualOp) {
-                return false;
-            }
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        return self::$transOpInt[$this->operator] . ' ' . $this->version;
-    }
-}
diff --git a/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/vendor/composer/semver/src/Constraint/ConstraintInterface.php
deleted file mode 100644
index 78c099c..0000000
--- a/vendor/composer/semver/src/Constraint/ConstraintInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of composer/semver.
- *
- * (c) Composer <https://github.com/composer>
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-interface ConstraintInterface
-{
-    /**
-     * @param ConstraintInterface $provider
-     *
-     * @return bool
-     */
-    public function matches(ConstraintInterface $provider);
-
-    /**
-     * @param string $prettyString
-     */
-    public function setPrettyString($prettyString);
-
-    /**
-     * @return string
-     */
-    public function getPrettyString();
-
-    /**
-     * @return string
-     */
-    public function __toString();
-}
diff --git a/vendor/composer/semver/src/Constraint/EmptyConstraint.php b/vendor/composer/semver/src/Constraint/EmptyConstraint.php
deleted file mode 100644
index faba56b..0000000
--- a/vendor/composer/semver/src/Constraint/EmptyConstraint.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of composer/semver.
- *
- * (c) Composer <https://github.com/composer>
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-/**
- * Defines the absence of a constraint.
- */
-class EmptyConstraint implements ConstraintInterface
-{
-    /** @var string */
-    protected $prettyString;
-
-    /**
-     * @param ConstraintInterface $provider
-     *
-     * @return bool
-     */
-    public function matches(ConstraintInterface $provider)
-    {
-        return true;
-    }
-
-    /**
-     * @param $prettyString
-     */
-    public function setPrettyString($prettyString)
-    {
-        $this->prettyString = $prettyString;
-    }
-
-    /**
-     * @return string
-     */
-    public function getPrettyString()
-    {
-        if ($this->prettyString) {
-            return $this->prettyString;
-        }
-
-        return $this->__toString();
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        return '[]';
-    }
-}
diff --git a/vendor/composer/semver/src/Constraint/MultiConstraint.php b/vendor/composer/semver/src/Constraint/MultiConstraint.php
deleted file mode 100644
index 0d769b7..0000000
--- a/vendor/composer/semver/src/Constraint/MultiConstraint.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-/*
- * This file is part of composer/semver.
- *
- * (c) Composer <https://github.com/composer>
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver\Constraint;
-
-/**
- * Defines a conjunctive or disjunctive set of constraints.
- */
-class MultiConstraint implements ConstraintInterface
-{
-    /** @var ConstraintInterface[] */
-    protected $constraints;
-
-    /** @var string */
-    protected $prettyString;
-
-    /** @var bool */
-    protected $conjunctive;
-
-    /**
-     * @param ConstraintInterface[] $constraints A set of constraints
-     * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive
-     */
-    public function __construct(array $constraints, $conjunctive = true)
-    {
-        $this->constraints = $constraints;
-        $this->conjunctive = $conjunctive;
-    }
-
-    /**
-     * @param ConstraintInterface $provider
-     *
-     * @return bool
-     */
-    public function matches(ConstraintInterface $provider)
-    {
-        if (false === $this->conjunctive) {
-            foreach ($this->constraints as $constraint) {
-                if ($constraint->matches($provider)) {
-                    return true;
-                }
-            }
-
-            return false;
-        }
-
-        foreach ($this->constraints as $constraint) {
-            if (!$constraint->matches($provider)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * @param string $prettyString
-     */
-    public function setPrettyString($prettyString)
-    {
-        $this->prettyString = $prettyString;
-    }
-
-    /**
-     * @return string
-     */
-    public function getPrettyString()
-    {
-        if ($this->prettyString) {
-            return $this->prettyString;
-        }
-
-        return $this->__toString();
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        $constraints = array();
-        foreach ($this->constraints as $constraint) {
-            $constraints[] = (string) $constraint;
-        }
-
-        return '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']';
-    }
-}
diff --git a/vendor/composer/semver/src/Semver.php b/vendor/composer/semver/src/Semver.php
deleted file mode 100644
index 0225bb5..0000000
--- a/vendor/composer/semver/src/Semver.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-
-/*
- * This file is part of composer/semver.
- *
- * (c) Composer <https://github.com/composer>
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver;
-
-use Composer\Semver\Constraint\Constraint;
-
-class Semver
-{
-    const SORT_ASC = 1;
-    const SORT_DESC = -1;
-
-    /** @var VersionParser */
-    private static $versionParser;
-
-    /**
-     * Determine if given version satisfies given constraints.
-     *
-     * @param string $version
-     * @param string $constraints
-     *
-     * @return bool
-     */
-    public static function satisfies($version, $constraints)
-    {
-        if (null === self::$versionParser) {
-            self::$versionParser = new VersionParser();
-        }
-
-        $versionParser = self::$versionParser;
-        $provider = new Constraint('==', $versionParser->normalize($version));
-        $constraints = $versionParser->parseConstraints($constraints);
-
-        return $constraints->matches($provider);
-    }
-
-    /**
-     * Return all versions that satisfy given constraints.
-     *
-     * @param array $versions
-     * @param string $constraints
-     *
-     * @return array
-     */
-    public static function satisfiedBy(array $versions, $constraints)
-    {
-        $versions = array_filter($versions, function ($version) use ($constraints) {
-            return Semver::satisfies($version, $constraints);
-        });
-
-        return array_values($versions);
-    }
-
-    /**
-     * Sort given array of versions.
-     *
-     * @param array $versions
-     *
-     * @return array
-     */
-    public static function sort(array $versions)
-    {
-        return self::usort($versions, self::SORT_ASC);
-    }
-
-    /**
-     * Sort given array of versions in reverse.
-     *
-     * @param array $versions
-     *
-     * @return array
-     */
-    public static function rsort(array $versions)
-    {
-        return self::usort($versions, self::SORT_DESC);
-    }
-
-    /**
-     * @param array $versions
-     * @param int $direction
-     *
-     * @return array
-     */
-    private static function usort(array $versions, $direction)
-    {
-        if (null === self::$versionParser) {
-            self::$versionParser = new VersionParser();
-        }
-
-        $versionParser = self::$versionParser;
-        $normalized = array();
-
-        // Normalize outside of usort() scope for minor performance increase.
-        // Creates an array of arrays: [[normalized, key], ...]
-        foreach ($versions as $key => $version) {
-            $normalized[] = array($versionParser->normalize($version), $key);
-        }
-
-        usort($normalized, function (array $left, array $right) use ($direction) {
-            if ($left[0] === $right[0]) {
-                return 0;
-            }
-
-            if (Comparator::lessThan($left[0], $right[0])) {
-                return -$direction;
-            }
-
-            return $direction;
-        });
-
-        // Recreate input array, using the original indexes which are now in sorted order.
-        $sorted = array();
-        foreach ($normalized as $item) {
-            $sorted[] = $versions[$item[1]];
-        }
-
-        return $sorted;
-    }
-}
diff --git a/vendor/composer/semver/src/VersionParser.php b/vendor/composer/semver/src/VersionParser.php
deleted file mode 100644
index 269aee9..0000000
--- a/vendor/composer/semver/src/VersionParser.php
+++ /dev/null
@@ -1,520 +0,0 @@
-<?php
-
-/*
- * This file is part of composer/semver.
- *
- * (c) Composer <https://github.com/composer>
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\Semver;
-
-use Composer\Semver\Constraint\ConstraintInterface;
-use Composer\Semver\Constraint\EmptyConstraint;
-use Composer\Semver\Constraint\MultiConstraint;
-use Composer\Semver\Constraint\Constraint;
-
-/**
- * Version parser.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class VersionParser
-{
-    /** @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',
-    );
-
-    /**
-     * Returns the stability of a version.
-     *
-     * @param string $version
-     *
-     * @return string
-     */
-    public static function parseStability($version)
-    {
-        $version = preg_replace('{#.+$}i', '', $version);
-
-        if ('dev-' === substr($version, 0, 4) || '-dev' === substr($version, -4)) {
-            return 'dev';
-        }
-
-        preg_match('{' . self::$modifierRegex . '$}i', strtolower($version), $match);
-        if (!empty($match[3])) {
-            return 'dev';
-        }
-
-        if (!empty($match[1])) {
-            if ('beta' === $match[1] || 'b' === $match[1]) {
-                return 'beta';
-            }
-            if ('alpha' === $match[1] || 'a' === $match[1]) {
-                return 'alpha';
-            }
-            if ('rc' === $match[1]) {
-                return 'RC';
-            }
-        }
-
-        return 'stable';
-    }
-
-    /**
-     * @param string $stability
-     *
-     * @return string
-     */
-    public static function normalizeStability($stability)
-    {
-        $stability = strtolower($stability);
-
-        return $stability === 'rc' ? 'RC' : $stability;
-    }
-
-    /**
-     * Normalizes a version string to be able to perform comparisons on it.
-     *
-     * @param string $version
-     * @param string $fullVersion optional complete version string to give more context
-     *
-     * @throws \UnexpectedValueException
-     *
-     * @return string
-     */
-    public function normalize($version, $fullVersion = null)
-    {
-        $version = trim($version);
-        if (null === $fullVersion) {
-            $fullVersion = $version;
-        }
-
-        // strip off aliasing
-        if (preg_match('{^([^,\s]+) +as +([^,\s]+)$}', $version, $match)) {
-            $version = $match[1];
-        }
-
-        // strip off build metadata
-        if (preg_match('{^([^,\s+]+)\+[^\s]+$}', $version, $match)) {
-            $version = $match[1];
-        }
-
-        // match master-like branches
-        if (preg_match('{^(?:dev-)?(?:master|trunk|default)$}i', $version)) {
-            return '9999999-dev';
-        }
-
-        if ('dev-' === strtolower(substr($version, 0, 4))) {
-            return 'dev-' . substr($version, 4);
-        }
-
-        // match classical versioning
-        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')
-                . (!empty($matches[4]) ? $matches[4] : '.0');
-            $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]);
-            $index = 2;
-        }
-
-        // add version modifiers if a version was matched
-        if (isset($index)) {
-            if (!empty($matches[$index])) {
-                if ('stable' === $matches[$index]) {
-                    return $version;
-                }
-                $version .= '-' . $this->expandStability($matches[$index]) . (!empty($matches[$index + 1]) ? $matches[$index + 1] : '');
-            }
-
-            if (!empty($matches[$index + 2])) {
-                $version .= '-dev';
-            }
-
-            return $version;
-        }
-
-        // match dev branches
-        if (preg_match('{(.*?)[.-]?dev$}i', $version, $match)) {
-            try {
-                return $this->normalizeBranch($match[1]);
-            } catch (\Exception $e) {
-            }
-        }
-
-        $extraMessage = '';
-        if (preg_match('{ +as +' . preg_quote($version) . '$}', $fullVersion)) {
-            $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version';
-        } elseif (preg_match('{^' . preg_quote($version) . ' +as +}', $fullVersion)) {
-            $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-';
-        }
-
-        throw new \UnexpectedValueException('Invalid version string "' . $version . '"' . $extraMessage);
-    }
-
-    /**
-     * Extract numeric prefix from alias, if it is in numeric format, suitable for version comparison.
-     *
-     * @param string $branch Branch name (e.g. 2.1.x-dev)
-     *
-     * @return string|false Numeric prefix if present (e.g. 2.1.) or false
-     */
-    public function parseNumericAliasPrefix($branch)
-    {
-        if (preg_match('{^(?P<version>(\d+\\.)*\d+)(?:\.x)?-dev$}i', $branch, $matches)) {
-            return $matches['version'] . '.';
-        }
-
-        return false;
-    }
-
-    /**
-     * Normalizes a branch name to be able to perform comparisons on it.
-     *
-     * @param string $name
-     *
-     * @return string
-     */
-    public function normalizeBranch($name)
-    {
-        $name = trim($name);
-
-        if (in_array($name, array('master', 'trunk', 'default'))) {
-            return $this->normalize($name);
-        }
-
-        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';
-            }
-
-            return str_replace('x', '9999999', $version) . '-dev';
-        }
-
-        return 'dev-' . $name;
-    }
-
-    /**
-     * Parses as constraint string into LinkConstraint objects.
-     *
-     * @param string $constraints
-     *
-     * @return ConstraintInterface
-     */
-    public function parseConstraints($constraints)
-    {
-        $prettyConstraint = $constraints;
-
-        if (preg_match('{^([^,\s]*?)@(' . implode('|', self::$stabilities) . ')$}i', $constraints, $match)) {
-            $constraints = empty($match[1]) ? '*' : $match[1];
-        }
-
-        if (preg_match('{^(dev-[^,\s@]+?|[^,\s@]+?\.x-dev)#.+$}i', $constraints, $match)) {
-            $constraints = $match[1];
-        }
-
-        $orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints));
-        $orGroups = array();
-        foreach ($orConstraints as $constraints) {
-            $andConstraints = preg_split('{(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)}', $constraints);
-            if (count($andConstraints) > 1) {
-                $constraintObjects = array();
-                foreach ($andConstraints as $constraint) {
-                    foreach ($this->parseConstraint($constraint) as $parsedConstraint) {
-                        $constraintObjects[] = $parsedConstraint;
-                    }
-                }
-            } else {
-                $constraintObjects = $this->parseConstraint($andConstraints[0]);
-            }
-
-            if (1 === count($constraintObjects)) {
-                $constraint = $constraintObjects[0];
-            } else {
-                $constraint = new MultiConstraint($constraintObjects);
-            }
-
-            $orGroups[] = $constraint;
-        }
-
-        if (1 === count($orGroups)) {
-            $constraint = $orGroups[0];
-        } else {
-            $constraint = new MultiConstraint($orGroups, false);
-        }
-
-        $constraint->setPrettyString($prettyConstraint);
-
-        return $constraint;
-    }
-
-    /**
-     * @param string $constraint
-     *
-     * @throws \UnexpectedValueException
-     *
-     * @return array
-     */
-    private function parseConstraint($constraint)
-    {
-        if (preg_match('{^([^,\s]+?)@(' . implode('|', self::$stabilities) . ')$}i', $constraint, $match)) {
-            $constraint = $match[1];
-            if ($match[2] !== 'stable') {
-                $stabilityModifier = $match[2];
-            }
-        }
-
-        if (preg_match('{^[xX*](\.[xX*])*$}i', $constraint)) {
-            return array(new EmptyConstraint());
-        }
-
-        $versionRegex = 'v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?' . self::$modifierRegex . '(?:\+[^\s]+)?';
-
-        // Tilde Range
-        //
-        // Like wildcard constraints, unsuffixed tilde constraints say that they must be greater than the previous
-        // version, to ensure that unstable instances of the current version are allowed. However, if a stability
-        // suffix is added to the constraint, then a >= match on the current version is used instead.
-        if (preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) {
-            if (substr($constraint, 0, 2) === '~>') {
-                throw new \UnexpectedValueException(
-                    'Could not parse version constraint ' . $constraint . ': ' .
-                    'Invalid operator "~>", you probably meant to use the "~" operator'
-                );
-            }
-
-            // Work out which position in the version we are operating at
-            if (isset($matches[4]) && '' !== $matches[4]) {
-                $position = 4;
-            } elseif (isset($matches[3]) && '' !== $matches[3]) {
-                $position = 3;
-            } elseif (isset($matches[2]) && '' !== $matches[2]) {
-                $position = 2;
-            } else {
-                $position = 1;
-            }
-
-            // Calculate the stability suffix
-            $stabilitySuffix = '';
-            if (!empty($matches[5])) {
-                $stabilitySuffix .= '-' . $this->expandStability($matches[5]) . (!empty($matches[6]) ? $matches[6] : '');
-            }
-
-            if (!empty($matches[7])) {
-                $stabilitySuffix .= '-dev';
-            }
-
-            if (!$stabilitySuffix) {
-                $stabilitySuffix = '-dev';
-            }
-
-            $lowVersion = $this->manipulateVersionString($matches, $position, 0) . $stabilitySuffix;
-            $lowerBound = new Constraint('>=', $lowVersion);
-
-            // For upper bound, we increment the position of one more significance,
-            // but highPosition = 0 would be illegal
-            $highPosition = max(1, $position - 1);
-            $highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev';
-            $upperBound = new Constraint('<', $highVersion);
-
-            return array(
-                $lowerBound,
-                $upperBound,
-            );
-        }
-
-        // Caret Range
-        //
-        // Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple.
-        // In other words, this allows patch and minor updates for versions 1.0.0 and above, patch updates for
-        // versions 0.X >=0.1.0, and no updates for versions 0.0.X
-        if (preg_match('{^\^' . $versionRegex . '($)}i', $constraint, $matches)) {
-            // Work out which position in the version we are operating at
-            if ('0' !== $matches[1] || '' === $matches[2]) {
-                $position = 1;
-            } elseif ('0' !== $matches[2] || '' === $matches[3]) {
-                $position = 2;
-            } else {
-                $position = 3;
-            }
-
-            // Calculate the stability suffix
-            $stabilitySuffix = '';
-            if (empty($matches[5]) && empty($matches[7])) {
-                $stabilitySuffix .= '-dev';
-            }
-
-            $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1));
-            $lowerBound = new Constraint('>=', $lowVersion);
-
-            // For upper bound, we increment the position of one more significance,
-            // but highPosition = 0 would be illegal
-            $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev';
-            $upperBound = new Constraint('<', $highVersion);
-
-            return array(
-                $lowerBound,
-                $upperBound,
-            );
-        }
-
-        // X Range
-        //
-        // 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 (isset($matches[3]) && '' !== $matches[3]) {
-                $position = 3;
-            } elseif (isset($matches[2]) && '' !== $matches[2]) {
-                $position = 2;
-            } else {
-                $position = 1;
-            }
-
-            $lowVersion = $this->manipulateVersionString($matches, $position) . '-dev';
-            $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev';
-
-            if ($lowVersion === '0.0.0.0-dev') {
-                return array(new Constraint('<', $highVersion));
-            }
-
-            return array(
-                new Constraint('>=', $lowVersion),
-                new Constraint('<', $highVersion),
-            );
-        }
-
-        // Hyphen Range
-        //
-        // Specifies an inclusive set. If a partial version is provided as the first version in the inclusive range,
-        // then the missing pieces are replaced with zeroes. If a partial version is provided as the second version in
-        // the inclusive range, then all versions that start with the supplied parts of the tuple are accepted, but
-        // nothing that would be greater than the provided tuple parts.
-        if (preg_match('{^(?P<from>' . $versionRegex . ') +- +(?P<to>' . $versionRegex . ')($)}i', $constraint, $matches)) {
-            // Calculate the stability suffix
-            $lowStabilitySuffix = '';
-            if (empty($matches[6]) && empty($matches[8])) {
-                $lowStabilitySuffix = '-dev';
-            }
-
-            $lowVersion = $this->normalize($matches['from']);
-            $lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix);
-
-            $empty = function ($x) {
-                return ($x === 0 || $x === '0') ? false : empty($x);
-            };
-
-            if ((!$empty($matches[11]) && !$empty($matches[12])) || !empty($matches[14]) || !empty($matches[16])) {
-                $highVersion = $this->normalize($matches['to']);
-                $upperBound = new Constraint('<=', $highVersion);
-            } else {
-                $highMatch = array('', $matches[10], $matches[11], $matches[12], $matches[13]);
-                $highVersion = $this->manipulateVersionString($highMatch, $empty($matches[11]) ? 1 : 2, 1) . '-dev';
-                $upperBound = new Constraint('<', $highVersion);
-            }
-
-            return array(
-                $lowerBound,
-                $upperBound,
-            );
-        }
-
-        // Basic Comparators
-        if (preg_match('{^(<>|!=|>=?|<=?|==?)?\s*(.*)}', $constraint, $matches)) {
-            try {
-                $version = $this->normalize($matches[2]);
-
-                if (!empty($stabilityModifier) && $this->parseStability($version) === 'stable') {
-                    $version .= '-' . $stabilityModifier;
-                } elseif ('<' === $matches[1] || '>=' === $matches[1]) {
-                    if (!preg_match('/-' . self::$modifierRegex . '$/', strtolower($matches[2]))) {
-                        if (substr($matches[2], 0, 4) !== 'dev-') {
-                            $version .= '-dev';
-                        }
-                    }
-                }
-
-                return array(new Constraint($matches[1] ?: '=', $version));
-            } catch (\Exception $e) {
-            }
-        }
-
-        $message = 'Could not parse version constraint ' . $constraint;
-        if (isset($e)) {
-            $message .= ': ' . $e->getMessage();
-        }
-
-        throw new \UnexpectedValueException($message);
-    }
-
-    /**
-     * Increment, decrement, or simply pad a version number.
-     *
-     * Support function for {@link parseConstraint()}
-     *
-     * @param array $matches Array with version parts in array indexes 1,2,3,4
-     * @param int $position 1,2,3,4 - which segment of the version to increment/decrement
-     * @param int $increment
-     * @param string $pad The string to pad version parts after $position
-     *
-     * @return string The new version
-     */
-    private function manipulateVersionString($matches, $position, $increment = 0, $pad = '0')
-    {
-        for ($i = 4; $i > 0; --$i) {
-            if ($i > $position) {
-                $matches[$i] = $pad;
-            } elseif ($i === $position && $increment) {
-                $matches[$i] += $increment;
-                // If $matches[$i] was 0, carry the decrement
-                if ($matches[$i] < 0) {
-                    $matches[$i] = $pad;
-                    --$position;
-
-                    // Return null on a carry overflow
-                    if ($i === 1) {
-                        return;
-                    }
-                }
-            }
-        }
-
-        return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4];
-    }
-
-    /**
-     * Expand shorthand stability string to long version.
-     *
-     * @param string $stability
-     *
-     * @return string
-     */
-    private function expandStability($stability)
-    {
-        $stability = strtolower($stability);
-
-        switch ($stability) {
-            case 'a':
-                return 'alpha';
-            case 'b':
-                return 'beta';
-            case 'p':
-            case 'pl':
-                return 'patch';
-            case 'rc':
-                return 'RC';
-            default:
-                return $stability;
-        }
-    }
-}
diff --git a/vendor/doctrine/annotations/LICENSE b/vendor/doctrine/annotations/LICENSE
deleted file mode 100644
index 5e781fc..0000000
--- a/vendor/doctrine/annotations/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006-2013 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
-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/doctrine/annotations/README.md b/vendor/doctrine/annotations/README.md
deleted file mode 100644
index ebb30e0..0000000
--- a/vendor/doctrine/annotations/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Doctrine Annotations
-
-[![Build Status](https://travis-ci.org/doctrine/annotations.png?branch=master)](https://travis-ci.org/doctrine/annotations)
-
-Docblock Annotations Parser library (extracted from [Doctrine Common](https://github.com/doctrine/common)).
-
-## Changelog
-
-### v1.2.0
-
- * HHVM support
- * Allowing dangling comma in annotations
- * Excluded annotations are no longer autoloaded
- * Importing namespaces also in traits
- * Added support for `::class` 5.5-style constant, works also in 5.3 and 5.4
-
-### v1.1
-
- * Add Exception when ZendOptimizer+ or Opcache is configured to drop comments
diff --git a/vendor/doctrine/annotations/composer.json b/vendor/doctrine/annotations/composer.json
deleted file mode 100644
index 1c65f6c..0000000
--- a/vendor/doctrine/annotations/composer.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-    "name": "doctrine/annotations",
-    "type": "library",
-    "description": "Docblock Annotations Parser",
-    "keywords": ["annotations", "docblock", "parser"],
-    "homepage": "http://www.doctrine-project.org",
-    "license": "MIT",
-    "authors": [
-        {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
-        {"name": "Roman Borschel", "email": "roman@code-factory.org"},
-        {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
-        {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
-        {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
-    ],
-    "require": {
-        "php": ">=5.3.2",
-        "doctrine/lexer": "1.*"
-    },
-    "require-dev": {
-        "doctrine/cache": "1.*",
-        "phpunit/phpunit": "4.*"
-    },
-    "autoload": {
-        "psr-0": { "Doctrine\\Common\\Annotations\\": "lib/" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.3.x-dev"
-        }
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php
deleted file mode 100644
index a79a0f8..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-/**
- * Annotations class.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-class Annotation
-{
-    /**
-     * Value property. Common among all derived classes.
-     *
-     * @var string
-     */
-    public $value;
-
-    /**
-     * Constructor.
-     *
-     * @param array $data Key-value for properties to be defined in this class.
-     */
-    public final function __construct(array $data)
-    {
-        foreach ($data as $key => $value) {
-            $this->$key = $value;
-        }
-    }
-
-    /**
-     * Error handler for unknown property accessor in Annotation class.
-     *
-     * @param string $name Unknown property name.
-     *
-     * @throws \BadMethodCallException
-     */
-    public function __get($name)
-    {
-        throw new \BadMethodCallException(
-            sprintf("Unknown property '%s' on annotation '%s'.", $name, get_class($this))
-        );
-    }
-
-    /**
-     * Error handler for unknown property mutator in Annotation class.
-     *
-     * @param string $name  Unknown property name.
-     * @param mixed  $value Property value.
-     *
-     * @throws \BadMethodCallException
-     */
-    public function __set($name, $value)
-    {
-        throw new \BadMethodCallException(
-            sprintf("Unknown property '%s' on annotation '%s'.", $name, get_class($this))
-        );
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php
deleted file mode 100644
index dbef6df..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-/**
- * Annotation that can be used to signal to the parser
- * to check the attribute type during the parsing process.
- *
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- *
- * @Annotation
- */
-final class Attribute
-{
-    /**
-     * @var string
-     */
-    public $name;
-
-    /**
-     * @var string
-     */
-    public $type;
-
-    /**
-     * @var boolean
-     */
-    public $required = false;
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php
deleted file mode 100644
index 53134e3..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-/**
- * Annotation that can be used to signal to the parser
- * to check the types of all declared attributes during the parsing process.
- *
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- *
- * @Annotation
- */
-final class Attributes
-{
-    /**
-     * @var array<Doctrine\Common\Annotations\Annotation\Attribute>
-     */
-    public $value;
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php
deleted file mode 100644
index e122a75..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-/**
- * Annotation that can be used to signal to the parser
- * to check the available values during the parsing process.
- *
- * @since  2.4
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- *
- * @Annotation
- * @Attributes({
- *    @Attribute("value",   required = true,  type = "array"),
- *    @Attribute("literal", required = false, type = "array")
- * })
- */
-final class Enum
-{
-    /**
-     * @var array
-     */
-    public $value;
-
-    /**
-     * Literal target declaration.
-     *
-     * @var array
-     */
-    public $literal;
-
-    /**
-     * Annotation constructor.
-     *
-     * @param array $values
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function __construct(array $values)
-    {
-        if ( ! isset($values['literal'])) {
-            $values['literal'] = array();
-        }
-
-        foreach ($values['value'] as $var) {
-            if( ! is_scalar($var)) {
-                throw new \InvalidArgumentException(sprintf(
-                    '@Enum supports only scalar values "%s" given.',
-                    is_object($var) ? get_class($var) : gettype($var)
-                ));
-            }
-        }
-
-        foreach ($values['literal'] as $key => $var) {
-            if( ! in_array($key, $values['value'])) {
-                throw new \InvalidArgumentException(sprintf(
-                    'Undefined enumerator value "%s" for literal "%s".',
-                    $key , $var
-                ));
-            }
-        }
-
-        $this->value    = $values['value'];
-        $this->literal  = $values['literal'];
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php
deleted file mode 100644
index 175226a..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-/**
- * Annotation that can be used to signal to the parser to ignore specific
- * annotations during the parsing process.
- *
- * @Annotation
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-final class IgnoreAnnotation
-{
-    /**
-     * @var array
-     */
-    public $names;
-
-    /**
-     * Constructor.
-     *
-     * @param array $values
-     *
-     * @throws \RuntimeException
-     */
-    public function __construct(array $values)
-    {
-        if (is_string($values['value'])) {
-            $values['value'] = array($values['value']);
-        }
-        if (!is_array($values['value'])) {
-            throw new \RuntimeException(sprintf('@IgnoreAnnotation expects either a string name, or an array of strings, but got %s.', json_encode($values['value'])));
-        }
-
-        $this->names = $values['value'];
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php
deleted file mode 100644
index d67f9606..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-/**
- * Annotation that can be used to signal to the parser
- * to check if that attribute is required during the parsing process.
- *
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- *
- * @Annotation
- */
-final class Required
-{
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php
deleted file mode 100644
index f6c5445..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations\Annotation;
-
-/**
- * Annotation that can be used to signal to the parser
- * to check the annotation target during the parsing process.
- *
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- *
- * @Annotation
- */
-final class Target
-{
-    const TARGET_CLASS              = 1;
-    const TARGET_METHOD             = 2;
-    const TARGET_PROPERTY           = 4;
-    const TARGET_ANNOTATION         = 8;
-    const TARGET_ALL                = 15;
-
-    /**
-     * @var array
-     */
-    private static $map = array(
-        'ALL'        => self::TARGET_ALL,
-        'CLASS'      => self::TARGET_CLASS,
-        'METHOD'     => self::TARGET_METHOD,
-        'PROPERTY'   => self::TARGET_PROPERTY,
-        'ANNOTATION' => self::TARGET_ANNOTATION,
-    );
-
-    /**
-     * @var array
-     */
-    public $value;
-
-    /**
-     * Targets as bitmask.
-     *
-     * @var integer
-     */
-    public $targets;
-
-    /**
-     * Literal target declaration.
-     *
-     * @var integer
-     */
-    public $literal;
-
-    /**
-     * Annotation constructor.
-     *
-     * @param array $values
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function __construct(array $values)
-    {
-        if (!isset($values['value'])){
-            $values['value'] = null;
-        }
-        if (is_string($values['value'])){
-            $values['value'] = array($values['value']);
-        }
-        if (!is_array($values['value'])){
-            throw new \InvalidArgumentException(
-                sprintf('@Target expects either a string value, or an array of strings, "%s" given.',
-                    is_object($values['value']) ? get_class($values['value']) : gettype($values['value'])
-                )
-            );
-        }
-
-        $bitmask = 0;
-        foreach ($values['value'] as $literal) {
-            if(!isset(self::$map[$literal])){
-                throw new \InvalidArgumentException(
-                    sprintf('Invalid Target "%s". Available targets: [%s]',
-                            $literal,  implode(', ', array_keys(self::$map)))
-                );
-            }
-            $bitmask |= self::$map[$literal];
-        }
-
-        $this->targets  = $bitmask;
-        $this->value    = $values['value'];
-        $this->literal  = implode(', ', $this->value);
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php
deleted file mode 100644
index d06fe66..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php
+++ /dev/null
@@ -1,197 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-/**
- * Description of AnnotationException
- *
- * @since  2.0
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-class AnnotationException extends \Exception
-{
-    /**
-     * Creates a new AnnotationException describing a Syntax error.
-     *
-     * @param string $message Exception message
-     *
-     * @return AnnotationException
-     */
-    public static function syntaxError($message)
-    {
-        return new self('[Syntax Error] ' . $message);
-    }
-
-    /**
-     * Creates a new AnnotationException describing a Semantical error.
-     *
-     * @param string $message Exception message
-     *
-     * @return AnnotationException
-     */
-    public static function semanticalError($message)
-    {
-        return new self('[Semantical Error] ' . $message);
-    }
-
-    /**
-     * Creates a new AnnotationException describing an error which occurred during
-     * the creation of the annotation.
-     *
-     * @since 2.2
-     *
-     * @param string $message
-     *
-     * @return AnnotationException
-     */
-    public static function creationError($message)
-    {
-        return new self('[Creation Error] ' . $message);
-    }
-
-    /**
-     * Creates a new AnnotationException describing a type error.
-     *
-     * @since 1.1
-     *
-     * @param string $message
-     *
-     * @return AnnotationException
-     */
-    public static function typeError($message)
-    {
-        return new self('[Type Error] ' . $message);
-    }
-
-    /**
-     * Creates a new AnnotationException describing a constant semantical error.
-     *
-     * @since 2.3
-     *
-     * @param string $identifier
-     * @param string $context
-     *
-     * @return AnnotationException
-     */
-    public static function semanticalErrorConstants($identifier, $context = null)
-    {
-        return self::semanticalError(sprintf(
-            "Couldn't find constant %s%s.",
-            $identifier,
-            $context ? ', ' . $context : ''
-        ));
-    }
-
-    /**
-     * Creates a new AnnotationException describing an type error of an attribute.
-     *
-     * @since 2.2
-     *
-     * @param string $attributeName
-     * @param string $annotationName
-     * @param string $context
-     * @param string $expected
-     * @param mixed  $actual
-     *
-     * @return AnnotationException
-     */
-    public static function attributeTypeError($attributeName, $annotationName, $context, $expected, $actual)
-    {
-        return self::typeError(sprintf(
-            'Attribute "%s" of @%s declared on %s expects %s, but got %s.',
-            $attributeName,
-            $annotationName,
-            $context,
-            $expected,
-            is_object($actual) ? 'an instance of ' . get_class($actual) : gettype($actual)
-        ));
-    }
-
-    /**
-     * Creates a new AnnotationException describing an required error of an attribute.
-     *
-     * @since 2.2
-     *
-     * @param string $attributeName
-     * @param string $annotationName
-     * @param string $context
-     * @param string $expected
-     *
-     * @return AnnotationException
-     */
-    public static function requiredError($attributeName, $annotationName, $context, $expected)
-    {
-        return self::typeError(sprintf(
-            'Attribute "%s" of @%s declared on %s expects %s. This value should not be null.',
-            $attributeName,
-            $annotationName,
-            $context,
-            $expected
-        ));
-    }
-
-    /**
-     * Creates a new AnnotationException describing a invalid enummerator.
-     *
-     * @since 2.4
-     *
-     * @param string $attributeName
-     * @param string $annotationName
-     * @param string $context
-     * @param array  $available
-     * @param mixed  $given
-     *
-     * @return AnnotationException
-     */
-    public static function enumeratorError($attributeName, $annotationName, $context, $available, $given)
-    {
-        return new self(sprintf(
-            '[Enum Error] Attribute "%s" of @%s declared on %s accept only [%s], but got %s.',
-            $attributeName, 
-            $annotationName,
-            $context,
-            implode(', ', $available),
-            is_object($given) ? get_class($given) : $given
-        ));
-    }
-
-    /**
-     * @return AnnotationException
-     */
-    public static function optimizerPlusSaveComments()
-    {
-        return new self(
-            "You have to enable opcache.save_comments=1 or zend_optimizerplus.save_comments=1."
-        );
-    }
-
-    /**
-     * @return AnnotationException
-     */
-    public static function optimizerPlusLoadComments()
-    {
-        return new self(
-            "You have to enable opcache.load_comments=1 or zend_optimizerplus.load_comments=1."
-        );
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php
deleted file mode 100644
index 4ebd1fb..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php
+++ /dev/null
@@ -1,394 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-use Doctrine\Common\Annotations\Annotation\IgnoreAnnotation;
-use Doctrine\Common\Annotations\Annotation\Target;
-use ReflectionClass;
-use ReflectionMethod;
-use ReflectionProperty;
-
-/**
- * A reader for docblock annotations.
- *
- * @author  Benjamin Eberlei <kontakt@beberlei.de>
- * @author  Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author  Jonathan Wage <jonwage@gmail.com>
- * @author  Roman Borschel <roman@code-factory.org>
- * @author  Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class AnnotationReader implements Reader
-{
-    /**
-     * Global map for imports.
-     *
-     * @var array
-     */
-    private static $globalImports = array(
-        'ignoreannotation' => 'Doctrine\Common\Annotations\Annotation\IgnoreAnnotation',
-    );
-
-    /**
-     * A list with annotations that are not causing exceptions when not resolved to an annotation class.
-     *
-     * The names are case sensitive.
-     *
-     * @var array
-     */
-    private static $globalIgnoredNames = array(
-        // Annotation tags
-        'Annotation' => true, 'Attribute' => true, 'Attributes' => true,
-        /* Can we enable this? 'Enum' => true, */
-        'Required' => true,
-        'Target' => true,
-        // Widely used tags (but not existent in phpdoc)
-        'fix' => true , 'fixme' => true,
-        'override' => true,
-        // PHPDocumentor 1 tags
-        'abstract'=> true, 'access'=> true,
-        'code' => true,
-        'deprec'=> true,
-        'endcode' => true, 'exception'=> true,
-        'final'=> true,
-        'ingroup' => true, 'inheritdoc'=> true, 'inheritDoc'=> true,
-        'magic' => true,
-        'name'=> true,
-        'toc' => true, 'tutorial'=> true,
-        'private' => true,
-        'static'=> true, 'staticvar'=> true, 'staticVar'=> true,
-        'throw' => true,
-        // PHPDocumentor 2 tags.
-        'api' => true, 'author'=> true,
-        'category'=> true, 'copyright'=> true,
-        'deprecated'=> true,
-        'example'=> true,
-        'filesource'=> true,
-        'global'=> true,
-        'ignore'=> true, /* Can we enable this? 'index' => true, */ 'internal'=> true,
-        'license'=> true, 'link'=> true,
-        'method' => true,
-        'package'=> true, 'param'=> true, 'property' => true, 'property-read' => true, 'property-write' => true,
-        'return'=> true,
-        'see'=> true, 'since'=> true, 'source' => true, 'subpackage'=> true,
-        'throws'=> true, 'todo'=> true, 'TODO'=> true,
-        'usedby'=> true, 'uses' => true,
-        'var'=> true, 'version'=> true,
-        // PHPUnit tags
-        'codeCoverageIgnore' => true, 'codeCoverageIgnoreStart' => true, 'codeCoverageIgnoreEnd' => true,
-        // PHPCheckStyle
-        'SuppressWarnings' => true,
-        // PHPStorm
-        'noinspection' => true,
-        // PEAR
-        'package_version' => true,
-        // PlantUML
-        'startuml' => true, 'enduml' => true,
-    );
-
-    /**
-     * Add a new annotation to the globally ignored annotation names with regard to exception handling.
-     *
-     * @param string $name
-     */
-    static public function addGlobalIgnoredName($name)
-    {
-        self::$globalIgnoredNames[$name] = true;
-    }
-
-    /**
-     * Annotations parser.
-     *
-     * @var \Doctrine\Common\Annotations\DocParser
-     */
-    private $parser;
-
-    /**
-     * Annotations parser used to collect parsing metadata.
-     *
-     * @var \Doctrine\Common\Annotations\DocParser
-     */
-    private $preParser;
-
-    /**
-     * PHP parser used to collect imports.
-     *
-     * @var \Doctrine\Common\Annotations\PhpParser
-     */
-    private $phpParser;
-
-    /**
-     * In-memory cache mechanism to store imported annotations per class.
-     *
-     * @var array
-     */
-    private $imports = array();
-
-    /**
-     * In-memory cache mechanism to store ignored annotations per class.
-     *
-     * @var array
-     */
-    private $ignoredAnnotationNames = array();
-
-    /**
-     * Constructor.
-     *
-     * Initializes a new AnnotationReader.
-     */
-    public function __construct()
-    {
-        if (extension_loaded('Zend Optimizer+') && (ini_get('zend_optimizerplus.save_comments') === "0" || ini_get('opcache.save_comments') === "0")) {
-            throw AnnotationException::optimizerPlusSaveComments();
-        }
-
-        if (extension_loaded('Zend OPcache') && ini_get('opcache.save_comments') == 0) {
-            throw AnnotationException::optimizerPlusSaveComments();
-        }
-
-        if (PHP_VERSION_ID < 70000) {
-            if (extension_loaded('Zend Optimizer+') && (ini_get('zend_optimizerplus.load_comments') === "0" || ini_get('opcache.load_comments') === "0")) {
-                throw AnnotationException::optimizerPlusLoadComments();
-            }
-
-            if (extension_loaded('Zend OPcache') && ini_get('opcache.load_comments') == 0) {
-                throw AnnotationException::optimizerPlusLoadComments();
-            }
-        }
-
-        AnnotationRegistry::registerFile(__DIR__ . '/Annotation/IgnoreAnnotation.php');
-
-        $this->parser    = new DocParser;
-        $this->preParser = new DocParser;
-
-        $this->preParser->setImports(self::$globalImports);
-        $this->preParser->setIgnoreNotImportedAnnotations(true);
-
-        $this->phpParser = new PhpParser;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotations(ReflectionClass $class)
-    {
-        $this->parser->setTarget(Target::TARGET_CLASS);
-        $this->parser->setImports($this->getClassImports($class));
-        $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
-
-        return $this->parser->parse($class->getDocComment(), 'class ' . $class->getName());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotation(ReflectionClass $class, $annotationName)
-    {
-        $annotations = $this->getClassAnnotations($class);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof $annotationName) {
-                return $annotation;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotations(ReflectionProperty $property)
-    {
-        $class   = $property->getDeclaringClass();
-        $context = 'property ' . $class->getName() . "::\$" . $property->getName();
-
-        $this->parser->setTarget(Target::TARGET_PROPERTY);
-        $this->parser->setImports($this->getPropertyImports($property));
-        $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
-
-        return $this->parser->parse($property->getDocComment(), $context);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotation(ReflectionProperty $property, $annotationName)
-    {
-        $annotations = $this->getPropertyAnnotations($property);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof $annotationName) {
-                return $annotation;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotations(ReflectionMethod $method)
-    {
-        $class   = $method->getDeclaringClass();
-        $context = 'method ' . $class->getName() . '::' . $method->getName() . '()';
-
-        $this->parser->setTarget(Target::TARGET_METHOD);
-        $this->parser->setImports($this->getMethodImports($method));
-        $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
-
-        return $this->parser->parse($method->getDocComment(), $context);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotation(ReflectionMethod $method, $annotationName)
-    {
-        $annotations = $this->getMethodAnnotations($method);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof $annotationName) {
-                return $annotation;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Returns the ignored annotations for the given class.
-     *
-     * @param \ReflectionClass $class
-     *
-     * @return array
-     */
-    private function getIgnoredAnnotationNames(ReflectionClass $class)
-    {
-        if (isset($this->ignoredAnnotationNames[$name = $class->getName()])) {
-            return $this->ignoredAnnotationNames[$name];
-        }
-
-        $this->collectParsingMetadata($class);
-
-        return $this->ignoredAnnotationNames[$name];
-    }
-
-    /**
-     * Retrieves imports.
-     *
-     * @param \ReflectionClass $class
-     *
-     * @return array
-     */
-    private function getClassImports(ReflectionClass $class)
-    {
-        if (isset($this->imports[$name = $class->getName()])) {
-            return $this->imports[$name];
-        }
-
-        $this->collectParsingMetadata($class);
-
-        return $this->imports[$name];
-    }
-
-    /**
-     * Retrieves imports for methods.
-     *
-     * @param \ReflectionMethod $method
-     *
-     * @return array
-     */
-    private function getMethodImports(ReflectionMethod $method)
-    {
-        $class = $method->getDeclaringClass();
-        $classImports = $this->getClassImports($class);
-        if (!method_exists($class, 'getTraits')) {
-            return $classImports;
-        }
-
-        $traitImports = array();
-
-        foreach ($class->getTraits() as $trait) {
-            if ($trait->hasMethod($method->getName())
-                && $trait->getFileName() === $method->getFileName()
-            ) {
-                $traitImports = array_merge($traitImports, $this->phpParser->parseClass($trait));
-            }
-        }
-
-        return array_merge($classImports, $traitImports);
-    }
-
-    /**
-     * Retrieves imports for properties.
-     *
-     * @param \ReflectionProperty $property
-     *
-     * @return array
-     */
-    private function getPropertyImports(ReflectionProperty $property)
-    {
-        $class = $property->getDeclaringClass();
-        $classImports = $this->getClassImports($class);
-        if (!method_exists($class, 'getTraits')) {
-            return $classImports;
-        }
-
-        $traitImports = array();
-
-        foreach ($class->getTraits() as $trait) {
-            if ($trait->hasProperty($property->getName())) {
-                $traitImports = array_merge($traitImports, $this->phpParser->parseClass($trait));
-            }
-        }
-
-        return array_merge($classImports, $traitImports);
-    }
-
-    /**
-     * Collects parsing metadata for a given class.
-     *
-     * @param \ReflectionClass $class
-     */
-    private function collectParsingMetadata(ReflectionClass $class)
-    {
-        $ignoredAnnotationNames = self::$globalIgnoredNames;
-        $annotations            = $this->preParser->parse($class->getDocComment(), 'class ' . $class->name);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof IgnoreAnnotation) {
-                foreach ($annotation->names AS $annot) {
-                    $ignoredAnnotationNames[$annot] = true;
-                }
-            }
-        }
-
-        $name = $class->getName();
-
-        $this->imports[$name] = array_merge(
-            self::$globalImports,
-            $this->phpParser->parseClass($class),
-            array('__NAMESPACE__' => $class->getNamespaceName())
-        );
-
-        $this->ignoredAnnotationNames[$name] = $ignoredAnnotationNames;
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php
deleted file mode 100644
index 13ceb63..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-/**
- * AnnotationRegistry.
- */
-final class AnnotationRegistry
-{
-    /**
-     * A map of namespaces to use for autoloading purposes based on a PSR-0 convention.
-     *
-     * Contains the namespace as key and an array of directories as value. If the value is NULL
-     * the include path is used for checking for the corresponding file.
-     *
-     * This autoloading mechanism does not utilize the PHP autoloading but implements autoloading on its own.
-     *
-     * @var array
-     */
-    static private $autoloadNamespaces = array();
-
-    /**
-     * A map of autoloader callables.
-     *
-     * @var array
-     */
-    static private $loaders = array();
-
-    /**
-     * @return void
-     */
-    static public function reset()
-    {
-        self::$autoloadNamespaces = array();
-        self::$loaders = array();
-    }
-
-    /**
-     * Registers file.
-     *
-     * @param string $file
-     *
-     * @return void
-     */
-    static public function registerFile($file)
-    {
-        require_once $file;
-    }
-
-    /**
-     * Adds a namespace with one or many directories to look for files or null for the include path.
-     *
-     * Loading of this namespaces will be done with a PSR-0 namespace loading algorithm.
-     *
-     * @param string            $namespace
-     * @param string|array|null $dirs
-     *
-     * @return void
-     */
-    static public function registerAutoloadNamespace($namespace, $dirs = null)
-    {
-        self::$autoloadNamespaces[$namespace] = $dirs;
-    }
-
-    /**
-     * Registers multiple namespaces.
-     *
-     * Loading of this namespaces will be done with a PSR-0 namespace loading algorithm.
-     *
-     * @param array $namespaces
-     *
-     * @return void
-     */
-    static public function registerAutoloadNamespaces(array $namespaces)
-    {
-        self::$autoloadNamespaces = array_merge(self::$autoloadNamespaces, $namespaces);
-    }
-
-    /**
-     * Registers an autoloading callable for annotations, much like spl_autoload_register().
-     *
-     * NOTE: These class loaders HAVE to be silent when a class was not found!
-     * IMPORTANT: Loaders have to return true if they loaded a class that could contain the searched annotation class.
-     *
-     * @param callable $callable
-     *
-     * @return void
-     *
-     * @throws \InvalidArgumentException
-     */
-    static public function registerLoader($callable)
-    {
-        if (!is_callable($callable)) {
-            throw new \InvalidArgumentException("A callable is expected in AnnotationRegistry::registerLoader().");
-        }
-        self::$loaders[] = $callable;
-    }
-
-    /**
-     * Autoloads an annotation class silently.
-     *
-     * @param string $class
-     *
-     * @return boolean
-     */
-    static public function loadAnnotationClass($class)
-    {
-        foreach (self::$autoloadNamespaces AS $namespace => $dirs) {
-            if (strpos($class, $namespace) === 0) {
-                $file = str_replace("\\", DIRECTORY_SEPARATOR, $class) . ".php";
-                if ($dirs === null) {
-                    if ($path = stream_resolve_include_path($file)) {
-                        require $path;
-                        return true;
-                    }
-                } else {
-                    foreach((array)$dirs AS $dir) {
-                        if (is_file($dir . DIRECTORY_SEPARATOR . $file)) {
-                            require $dir . DIRECTORY_SEPARATOR . $file;
-                            return true;
-                        }
-                    }
-                }
-            }
-        }
-
-        foreach (self::$loaders AS $loader) {
-            if (call_user_func($loader, $class) === true) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php
deleted file mode 100644
index e6dc593..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php
+++ /dev/null
@@ -1,235 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-use Doctrine\Common\Cache\Cache;
-
-/**
- * A cache aware annotation reader.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-final class CachedReader implements Reader
-{
-    /**
-     * @var string
-     */
-    private static $CACHE_SALT = '@[Annot]';
-
-    /**
-     * @var Reader
-     */
-    private $delegate;
-
-    /**
-     * @var Cache
-     */
-    private $cache;
-
-    /**
-     * @var boolean
-     */
-    private $debug;
-
-    /**
-     * @var array
-     */
-    private $loadedAnnotations = array();
-
-    /**
-     * Constructor.
-     *
-     * @param Reader $reader
-     * @param Cache  $cache
-     * @param bool   $debug
-     */
-    public function __construct(Reader $reader, Cache $cache, $debug = false)
-    {
-        $this->delegate = $reader;
-        $this->cache = $cache;
-        $this->debug = (boolean) $debug;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotations(\ReflectionClass $class)
-    {
-        $cacheKey = $class->getName();
-
-        if (isset($this->loadedAnnotations[$cacheKey])) {
-            return $this->loadedAnnotations[$cacheKey];
-        }
-
-        if (false === ($annots = $this->fetchFromCache($cacheKey, $class))) {
-            $annots = $this->delegate->getClassAnnotations($class);
-            $this->saveToCache($cacheKey, $annots);
-        }
-
-        return $this->loadedAnnotations[$cacheKey] = $annots;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotation(\ReflectionClass $class, $annotationName)
-    {
-        foreach ($this->getClassAnnotations($class) as $annot) {
-            if ($annot instanceof $annotationName) {
-                return $annot;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotations(\ReflectionProperty $property)
-    {
-        $class = $property->getDeclaringClass();
-        $cacheKey = $class->getName().'$'.$property->getName();
-
-        if (isset($this->loadedAnnotations[$cacheKey])) {
-            return $this->loadedAnnotations[$cacheKey];
-        }
-
-        if (false === ($annots = $this->fetchFromCache($cacheKey, $class))) {
-            $annots = $this->delegate->getPropertyAnnotations($property);
-            $this->saveToCache($cacheKey, $annots);
-        }
-
-        return $this->loadedAnnotations[$cacheKey] = $annots;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName)
-    {
-        foreach ($this->getPropertyAnnotations($property) as $annot) {
-            if ($annot instanceof $annotationName) {
-                return $annot;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotations(\ReflectionMethod $method)
-    {
-        $class = $method->getDeclaringClass();
-        $cacheKey = $class->getName().'#'.$method->getName();
-
-        if (isset($this->loadedAnnotations[$cacheKey])) {
-            return $this->loadedAnnotations[$cacheKey];
-        }
-
-        if (false === ($annots = $this->fetchFromCache($cacheKey, $class))) {
-            $annots = $this->delegate->getMethodAnnotations($method);
-            $this->saveToCache($cacheKey, $annots);
-        }
-
-        return $this->loadedAnnotations[$cacheKey] = $annots;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotation(\ReflectionMethod $method, $annotationName)
-    {
-        foreach ($this->getMethodAnnotations($method) as $annot) {
-            if ($annot instanceof $annotationName) {
-                return $annot;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Clears loaded annotations.
-     *
-     * @return void
-     */
-    public function clearLoadedAnnotations()
-    {
-        $this->loadedAnnotations = array();
-    }
-
-    /**
-     * Fetches a value from the cache.
-     *
-     * @param string           $rawCacheKey The cache key.
-     * @param \ReflectionClass $class       The related class.
-     *
-     * @return mixed The cached value or false when the value is not in cache.
-     */
-    private function fetchFromCache($rawCacheKey, \ReflectionClass $class)
-    {
-        $cacheKey = $rawCacheKey . self::$CACHE_SALT;
-        if (($data = $this->cache->fetch($cacheKey)) !== false) {
-            if (!$this->debug || $this->isCacheFresh($cacheKey, $class)) {
-                return $data;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Saves a value to the cache.
-     *
-     * @param string $rawCacheKey The cache key.
-     * @param mixed  $value       The value.
-     *
-     * @return void
-     */
-    private function saveToCache($rawCacheKey, $value)
-    {
-        $cacheKey = $rawCacheKey . self::$CACHE_SALT;
-        $this->cache->save($cacheKey, $value);
-        if ($this->debug) {
-            $this->cache->save('[C]'.$cacheKey, time());
-        }
-    }
-
-    /**
-     * Checks if the cache is fresh.
-     *
-     * @param string           $cacheKey
-     * @param \ReflectionClass $class
-     *
-     * @return boolean
-     */
-    private function isCacheFresh($cacheKey, \ReflectionClass $class)
-    {
-        if (false === $filename = $class->getFilename()) {
-            return true;
-        }
-
-        return $this->cache->fetch('[C]'.$cacheKey) >= filemtime($filename);
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php
deleted file mode 100644
index d864540..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-use Doctrine\Common\Lexer\AbstractLexer;
-
-/**
- * Simple lexer for docblock annotations.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-final class DocLexer extends AbstractLexer
-{
-    const T_NONE                = 1;
-    const T_INTEGER             = 2;
-    const T_STRING              = 3;
-    const T_FLOAT               = 4;
-
-    // All tokens that are also identifiers should be >= 100
-    const T_IDENTIFIER          = 100;
-    const T_AT                  = 101;
-    const T_CLOSE_CURLY_BRACES  = 102;
-    const T_CLOSE_PARENTHESIS   = 103;
-    const T_COMMA               = 104;
-    const T_EQUALS              = 105;
-    const T_FALSE               = 106;
-    const T_NAMESPACE_SEPARATOR = 107;
-    const T_OPEN_CURLY_BRACES   = 108;
-    const T_OPEN_PARENTHESIS    = 109;
-    const T_TRUE                = 110;
-    const T_NULL                = 111;
-    const T_COLON               = 112;
-
-    /**
-     * @var array
-     */
-    protected $noCase = array(
-        '@'  => self::T_AT,
-        ','  => self::T_COMMA,
-        '('  => self::T_OPEN_PARENTHESIS,
-        ')'  => self::T_CLOSE_PARENTHESIS,
-        '{'  => self::T_OPEN_CURLY_BRACES,
-        '}'  => self::T_CLOSE_CURLY_BRACES,
-        '='  => self::T_EQUALS,
-        ':'  => self::T_COLON,
-        '\\' => self::T_NAMESPACE_SEPARATOR
-    );
-
-    /**
-     * @var array
-     */
-    protected $withCase = array(
-        'true'  => self::T_TRUE,
-        'false' => self::T_FALSE,
-        'null'  => self::T_NULL
-    );
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getCatchablePatterns()
-    {
-        return array(
-            '[a-z_\\\][a-z0-9_\:\\\]*[a-z_][a-z0-9_]*',
-            '(?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?',
-            '"(?:""|[^"])*+"',
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getNonCatchablePatterns()
-    {
-        return array('\s+', '\*+', '(.)');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getType(&$value)
-    {
-        $type = self::T_NONE;
-
-        if ($value[0] === '"') {
-            $value = str_replace('""', '"', substr($value, 1, strlen($value) - 2));
-
-            return self::T_STRING;
-        }
-
-        if (isset($this->noCase[$value])) {
-            return $this->noCase[$value];
-        }
-
-        if ($value[0] === '_' || $value[0] === '\\' || ctype_alpha($value[0])) {
-            return self::T_IDENTIFIER;
-        }
-
-        $lowerValue = strtolower($value);
-
-        if (isset($this->withCase[$lowerValue])) {
-            return $this->withCase[$lowerValue];
-        }
-
-        // Checking numeric value
-        if (is_numeric($value)) {
-            return (strpos($value, '.') !== false || stripos($value, 'e') !== false)
-                ? self::T_FLOAT : self::T_INTEGER;
-        }
-
-        return $type;
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php
deleted file mode 100644
index db66846..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php
+++ /dev/null
@@ -1,1138 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-use Doctrine\Common\Annotations\Annotation\Attribute;
-use ReflectionClass;
-use Doctrine\Common\Annotations\Annotation\Enum;
-use Doctrine\Common\Annotations\Annotation\Target;
-use Doctrine\Common\Annotations\Annotation\Attributes;
-
-/**
- * A parser for docblock annotations.
- *
- * It is strongly discouraged to change the default annotation parsing process.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- */
-final class DocParser
-{
-    /**
-     * An array of all valid tokens for a class name.
-     *
-     * @var array
-     */
-    private static $classIdentifiers = array(
-        DocLexer::T_IDENTIFIER,
-        DocLexer::T_TRUE,
-        DocLexer::T_FALSE,
-        DocLexer::T_NULL
-    );
-
-    /**
-     * The lexer.
-     *
-     * @var \Doctrine\Common\Annotations\DocLexer
-     */
-    private $lexer;
-
-    /**
-     * Current target context.
-     *
-     * @var string
-     */
-    private $target;
-
-    /**
-     * Doc parser used to collect annotation target.
-     *
-     * @var \Doctrine\Common\Annotations\DocParser
-     */
-    private static $metadataParser;
-
-    /**
-     * Flag to control if the current annotation is nested or not.
-     *
-     * @var boolean
-     */
-    private $isNestedAnnotation = false;
-
-    /**
-     * Hashmap containing all use-statements that are to be used when parsing
-     * the given doc block.
-     *
-     * @var array
-     */
-    private $imports = array();
-
-    /**
-     * This hashmap is used internally to cache results of class_exists()
-     * look-ups.
-     *
-     * @var array
-     */
-    private $classExists = array();
-
-    /**
-     * Whether annotations that have not been imported should be ignored.
-     *
-     * @var boolean
-     */
-    private $ignoreNotImportedAnnotations = false;
-
-    /**
-     * An array of default namespaces if operating in simple mode.
-     *
-     * @var array
-     */
-    private $namespaces = array();
-
-    /**
-     * A list with annotations that are not causing exceptions when not resolved to an annotation class.
-     *
-     * The names must be the raw names as used in the class, not the fully qualified
-     * class names.
-     *
-     * @var array
-     */
-    private $ignoredAnnotationNames = array();
-
-    /**
-     * @var string
-     */
-    private $context = '';
-
-    /**
-     * Hash-map for caching annotation metadata.
-     *
-     * @var array
-     */
-    private static $annotationMetadata = array(
-        'Doctrine\Common\Annotations\Annotation\Target' => array(
-            'is_annotation'    => true,
-            'has_constructor'  => true,
-            'properties'       => array(),
-            'targets_literal'  => 'ANNOTATION_CLASS',
-            'targets'          => Target::TARGET_CLASS,
-            'default_property' => 'value',
-            'attribute_types'  => array(
-                'value'  => array(
-                    'required'  => false,
-                    'type'      =>'array',
-                    'array_type'=>'string',
-                    'value'     =>'array<string>'
-                )
-             ),
-        ),
-        'Doctrine\Common\Annotations\Annotation\Attribute' => array(
-            'is_annotation'    => true,
-            'has_constructor'  => false,
-            'targets_literal'  => 'ANNOTATION_ANNOTATION',
-            'targets'          => Target::TARGET_ANNOTATION,
-            'default_property' => 'name',
-            'properties'       => array(
-                'name'      => 'name',
-                'type'      => 'type',
-                'required'  => 'required'
-            ),
-            'attribute_types'  => array(
-                'value'  => array(
-                    'required'  => true,
-                    'type'      =>'string',
-                    'value'     =>'string'
-                ),
-                'type'  => array(
-                    'required'  =>true,
-                    'type'      =>'string',
-                    'value'     =>'string'
-                ),
-                'required'  => array(
-                    'required'  =>false,
-                    'type'      =>'boolean',
-                    'value'     =>'boolean'
-                )
-             ),
-        ),
-        'Doctrine\Common\Annotations\Annotation\Attributes' => array(
-            'is_annotation'    => true,
-            'has_constructor'  => false,
-            'targets_literal'  => 'ANNOTATION_CLASS',
-            'targets'          => Target::TARGET_CLASS,
-            'default_property' => 'value',
-            'properties'       => array(
-                'value' => 'value'
-            ),
-            'attribute_types'  => array(
-                'value' => array(
-                    'type'      =>'array',
-                    'required'  =>true,
-                    'array_type'=>'Doctrine\Common\Annotations\Annotation\Attribute',
-                    'value'     =>'array<Doctrine\Common\Annotations\Annotation\Attribute>'
-                )
-             ),
-        ),
-        'Doctrine\Common\Annotations\Annotation\Enum' => array(
-            'is_annotation'    => true,
-            'has_constructor'  => true,
-            'targets_literal'  => 'ANNOTATION_PROPERTY',
-            'targets'          => Target::TARGET_PROPERTY,
-            'default_property' => 'value',
-            'properties'       => array(
-                'value' => 'value'
-            ),
-            'attribute_types'  => array(
-                'value' => array(
-                    'type'      => 'array',
-                    'required'  => true,
-                ),
-                'literal' => array(
-                    'type'      => 'array',
-                    'required'  => false,
-                ),
-             ),
-        ),
-    );
-
-    /**
-     * Hash-map for handle types declaration.
-     *
-     * @var array
-     */
-    private static $typeMap = array(
-        'float'     => 'double',
-        'bool'      => 'boolean',
-        // allow uppercase Boolean in honor of George Boole
-        'Boolean'   => 'boolean',
-        'int'       => 'integer',
-    );
-
-    /**
-     * Constructs a new DocParser.
-     */
-    public function __construct()
-    {
-        $this->lexer = new DocLexer;
-    }
-
-    /**
-     * Sets the annotation names that are ignored during the parsing process.
-     *
-     * The names are supposed to be the raw names as used in the class, not the
-     * fully qualified class names.
-     *
-     * @param array $names
-     *
-     * @return void
-     */
-    public function setIgnoredAnnotationNames(array $names)
-    {
-        $this->ignoredAnnotationNames = $names;
-    }
-
-    /**
-     * Sets ignore on not-imported annotations.
-     *
-     * @param boolean $bool
-     *
-     * @return void
-     */
-    public function setIgnoreNotImportedAnnotations($bool)
-    {
-        $this->ignoreNotImportedAnnotations = (boolean) $bool;
-    }
-
-    /**
-     * Sets the default namespaces.
-     *
-     * @param array $namespace
-     *
-     * @return void
-     *
-     * @throws \RuntimeException
-     */
-    public function addNamespace($namespace)
-    {
-        if ($this->imports) {
-            throw new \RuntimeException('You must either use addNamespace(), or setImports(), but not both.');
-        }
-
-        $this->namespaces[] = $namespace;
-    }
-
-    /**
-     * Sets the imports.
-     *
-     * @param array $imports
-     *
-     * @return void
-     *
-     * @throws \RuntimeException
-     */
-    public function setImports(array $imports)
-    {
-        if ($this->namespaces) {
-            throw new \RuntimeException('You must either use addNamespace(), or setImports(), but not both.');
-        }
-
-        $this->imports = $imports;
-    }
-
-    /**
-     * Sets current target context as bitmask.
-     *
-     * @param integer $target
-     *
-     * @return void
-     */
-    public function setTarget($target)
-    {
-        $this->target = $target;
-    }
-
-    /**
-     * Parses the given docblock string for annotations.
-     *
-     * @param string $input   The docblock string to parse.
-     * @param string $context The parsing context.
-     *
-     * @return array Array of annotations. If no annotations are found, an empty array is returned.
-     */
-    public function parse($input, $context = '')
-    {
-        $pos = $this->findInitialTokenPosition($input);
-        if ($pos === null) {
-            return array();
-        }
-
-        $this->context = $context;
-
-        $this->lexer->setInput(trim(substr($input, $pos), '* /'));
-        $this->lexer->moveNext();
-
-        return $this->Annotations();
-    }
-
-    /**
-     * Finds the first valid annotation
-     *
-     * @param string $input The docblock string to parse
-     *
-     * @return int|null
-     */
-    private function findInitialTokenPosition($input)
-    {
-        $pos = 0;
-
-        // search for first valid annotation
-        while (($pos = strpos($input, '@', $pos)) !== false) {
-            // if the @ is preceded by a space or * it is valid
-            if ($pos === 0 || $input[$pos - 1] === ' ' || $input[$pos - 1] === '*') {
-                return $pos;
-            }
-
-            $pos++;
-        }
-
-        return null;
-    }
-
-    /**
-     * Attempts to match the given token with the current lookahead token.
-     * If they match, updates the lookahead token; otherwise raises a syntax error.
-     *
-     * @param integer $token Type of token.
-     *
-     * @return boolean True if tokens match; false otherwise.
-     */
-    private function match($token)
-    {
-        if ( ! $this->lexer->isNextToken($token) ) {
-            $this->syntaxError($this->lexer->getLiteral($token));
-        }
-
-        return $this->lexer->moveNext();
-    }
-
-    /**
-     * Attempts to match the current lookahead token with any of the given tokens.
-     *
-     * If any of them matches, this method updates the lookahead token; otherwise
-     * a syntax error is raised.
-     *
-     * @param array $tokens
-     *
-     * @return boolean
-     */
-    private function matchAny(array $tokens)
-    {
-        if ( ! $this->lexer->isNextTokenAny($tokens)) {
-            $this->syntaxError(implode(' or ', array_map(array($this->lexer, 'getLiteral'), $tokens)));
-        }
-
-        return $this->lexer->moveNext();
-    }
-
-    /**
-     * Generates a new syntax error.
-     *
-     * @param string     $expected Expected string.
-     * @param array|null $token    Optional token.
-     *
-     * @return void
-     *
-     * @throws AnnotationException
-     */
-    private function syntaxError($expected, $token = null)
-    {
-        if ($token === null) {
-            $token = $this->lexer->lookahead;
-        }
-
-        $message  = sprintf('Expected %s, got ', $expected);
-        $message .= ($this->lexer->lookahead === null)
-            ? 'end of string'
-            : sprintf("'%s' at position %s", $token['value'], $token['position']);
-
-        if (strlen($this->context)) {
-            $message .= ' in ' . $this->context;
-        }
-
-        $message .= '.';
-
-        throw AnnotationException::syntaxError($message);
-    }
-
-    /**
-     * Attempts to check if a class exists or not. This never goes through the PHP autoloading mechanism
-     * but uses the {@link AnnotationRegistry} to load classes.
-     *
-     * @param string $fqcn
-     *
-     * @return boolean
-     */
-    private function classExists($fqcn)
-    {
-        if (isset($this->classExists[$fqcn])) {
-            return $this->classExists[$fqcn];
-        }
-
-        // first check if the class already exists, maybe loaded through another AnnotationReader
-        if (class_exists($fqcn, false)) {
-            return $this->classExists[$fqcn] = true;
-        }
-
-        // final check, does this class exist?
-        return $this->classExists[$fqcn] = AnnotationRegistry::loadAnnotationClass($fqcn);
-    }
-
-    /**
-     * Collects parsing metadata for a given annotation class
-     *
-     * @param string $name The annotation name
-     *
-     * @return void
-     */
-    private function collectAnnotationMetadata($name)
-    {
-        if (self::$metadataParser === null) {
-            self::$metadataParser = new self();
-
-            self::$metadataParser->setIgnoreNotImportedAnnotations(true);
-            self::$metadataParser->setIgnoredAnnotationNames($this->ignoredAnnotationNames);
-            self::$metadataParser->setImports(array(
-                'enum'          => 'Doctrine\Common\Annotations\Annotation\Enum',
-                'target'        => 'Doctrine\Common\Annotations\Annotation\Target',
-                'attribute'     => 'Doctrine\Common\Annotations\Annotation\Attribute',
-                'attributes'    => 'Doctrine\Common\Annotations\Annotation\Attributes'
-            ));
-
-            AnnotationRegistry::registerFile(__DIR__ . '/Annotation/Enum.php');
-            AnnotationRegistry::registerFile(__DIR__ . '/Annotation/Target.php');
-            AnnotationRegistry::registerFile(__DIR__ . '/Annotation/Attribute.php');
-            AnnotationRegistry::registerFile(__DIR__ . '/Annotation/Attributes.php');
-        }
-
-        $class      = new \ReflectionClass($name);
-        $docComment = $class->getDocComment();
-
-        // Sets default values for annotation metadata
-        $metadata = array(
-            'default_property' => null,
-            'has_constructor'  => (null !== $constructor = $class->getConstructor()) && $constructor->getNumberOfParameters() > 0,
-            'properties'       => array(),
-            'property_types'   => array(),
-            'attribute_types'  => array(),
-            'targets_literal'  => null,
-            'targets'          => Target::TARGET_ALL,
-            'is_annotation'    => false !== strpos($docComment, '@Annotation'),
-        );
-
-        // verify that the class is really meant to be an annotation
-        if ($metadata['is_annotation']) {
-            self::$metadataParser->setTarget(Target::TARGET_CLASS);
-
-            foreach (self::$metadataParser->parse($docComment, 'class @' . $name) as $annotation) {
-                if ($annotation instanceof Target) {
-                    $metadata['targets']         = $annotation->targets;
-                    $metadata['targets_literal'] = $annotation->literal;
-
-                    continue;
-                }
-
-                if ($annotation instanceof Attributes) {
-                    foreach ($annotation->value as $attribute) {
-                        $this->collectAttributeTypeMetadata($metadata, $attribute);
-                    }
-                }
-            }
-
-            // if not has a constructor will inject values into public properties
-            if (false === $metadata['has_constructor']) {
-                // collect all public properties
-                foreach ($class->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
-                    $metadata['properties'][$property->name] = $property->name;
-
-                    if (false === ($propertyComment = $property->getDocComment())) {
-                        continue;
-                    }
-
-                    $attribute = new Attribute();
-
-                    $attribute->required = (false !== strpos($propertyComment, '@Required'));
-                    $attribute->name     = $property->name;
-                    $attribute->type     = (false !== strpos($propertyComment, '@var') && preg_match('/@var\s+([^\s]+)/',$propertyComment, $matches))
-                        ? $matches[1]
-                        : 'mixed';
-
-                    $this->collectAttributeTypeMetadata($metadata, $attribute);
-
-                    // checks if the property has @Enum
-                    if (false !== strpos($propertyComment, '@Enum')) {
-                        $context = 'property ' . $class->name . "::\$" . $property->name;
-
-                        self::$metadataParser->setTarget(Target::TARGET_PROPERTY);
-
-                        foreach (self::$metadataParser->parse($propertyComment, $context) as $annotation) {
-                            if ( ! $annotation instanceof Enum) {
-                                continue;
-                            }
-
-                            $metadata['enum'][$property->name]['value']   = $annotation->value;
-                            $metadata['enum'][$property->name]['literal'] = ( ! empty($annotation->literal))
-                                ? $annotation->literal
-                                : $annotation->value;
-                        }
-                    }
-                }
-
-                // choose the first property as default property
-                $metadata['default_property'] = reset($metadata['properties']);
-            }
-        }
-
-        self::$annotationMetadata[$name] = $metadata;
-    }
-
-    /**
-     * Collects parsing metadata for a given attribute.
-     *
-     * @param array     $metadata
-     * @param Attribute $attribute
-     *
-     * @return void
-     */
-    private function collectAttributeTypeMetadata(&$metadata, Attribute $attribute)
-    {
-        // handle internal type declaration
-        $type = isset(self::$typeMap[$attribute->type])
-            ? self::$typeMap[$attribute->type]
-            : $attribute->type;
-
-        // handle the case if the property type is mixed
-        if ('mixed' === $type) {
-            return;
-        }
-
-        // Evaluate type
-        switch (true) {
-            // Checks if the property has array<type>
-            case (false !== $pos = strpos($type, '<')):
-                $arrayType  = substr($type, $pos + 1, -1);
-                $type       = 'array';
-
-                if (isset(self::$typeMap[$arrayType])) {
-                    $arrayType = self::$typeMap[$arrayType];
-                }
-
-                $metadata['attribute_types'][$attribute->name]['array_type'] = $arrayType;
-                break;
-
-            // Checks if the property has type[]
-            case (false !== $pos = strrpos($type, '[')):
-                $arrayType  = substr($type, 0, $pos);
-                $type       = 'array';
-
-                if (isset(self::$typeMap[$arrayType])) {
-                    $arrayType = self::$typeMap[$arrayType];
-                }
-
-                $metadata['attribute_types'][$attribute->name]['array_type'] = $arrayType;
-                break;
-        }
-
-        $metadata['attribute_types'][$attribute->name]['type']     = $type;
-        $metadata['attribute_types'][$attribute->name]['value']    = $attribute->type;
-        $metadata['attribute_types'][$attribute->name]['required'] = $attribute->required;
-    }
-
-    /**
-     * Annotations ::= Annotation {[ "*" ]* [Annotation]}*
-     *
-     * @return array
-     */
-    private function Annotations()
-    {
-        $annotations = array();
-
-        while (null !== $this->lexer->lookahead) {
-            if (DocLexer::T_AT !== $this->lexer->lookahead['type']) {
-                $this->lexer->moveNext();
-                continue;
-            }
-
-            // make sure the @ is preceded by non-catchable pattern
-            if (null !== $this->lexer->token && $this->lexer->lookahead['position'] === $this->lexer->token['position'] + strlen($this->lexer->token['value'])) {
-                $this->lexer->moveNext();
-                continue;
-            }
-
-            // make sure the @ is followed by either a namespace separator, or
-            // an identifier token
-            if ((null === $peek = $this->lexer->glimpse())
-                || (DocLexer::T_NAMESPACE_SEPARATOR !== $peek['type'] && !in_array($peek['type'], self::$classIdentifiers, true))
-                || $peek['position'] !== $this->lexer->lookahead['position'] + 1) {
-                $this->lexer->moveNext();
-                continue;
-            }
-
-            $this->isNestedAnnotation = false;
-            if (false !== $annot = $this->Annotation()) {
-                $annotations[] = $annot;
-            }
-        }
-
-        return $annotations;
-    }
-
-    /**
-     * Annotation     ::= "@" AnnotationName MethodCall
-     * AnnotationName ::= QualifiedName | SimpleName
-     * QualifiedName  ::= NameSpacePart "\" {NameSpacePart "\"}* SimpleName
-     * NameSpacePart  ::= identifier | null | false | true
-     * SimpleName     ::= identifier | null | false | true
-     *
-     * @return mixed False if it is not a valid annotation.
-     *
-     * @throws AnnotationException
-     */
-    private function Annotation()
-    {
-        $this->match(DocLexer::T_AT);
-
-        // check if we have an annotation
-        $name = $this->Identifier();
-
-        // only process names which are not fully qualified, yet
-        // fully qualified names must start with a \
-        $originalName = $name;
-
-        if ('\\' !== $name[0]) {
-            $alias = (false === $pos = strpos($name, '\\'))? $name : substr($name, 0, $pos);
-            $found = false;
-
-            if ($this->namespaces) {
-                foreach ($this->namespaces as $namespace) {
-                    if ($this->classExists($namespace.'\\'.$name)) {
-                        $name = $namespace.'\\'.$name;
-                        $found = true;
-                        break;
-                    }
-                }
-            } elseif (isset($this->imports[$loweredAlias = strtolower($alias)])) {
-                $found = true;
-                $name  = (false !== $pos)
-                    ? $this->imports[$loweredAlias] . substr($name, $pos)
-                    : $this->imports[$loweredAlias];
-            } elseif ( ! isset($this->ignoredAnnotationNames[$name])
-                && isset($this->imports['__NAMESPACE__'])
-                && $this->classExists($this->imports['__NAMESPACE__'] . '\\' . $name)
-            ) {
-                $name  = $this->imports['__NAMESPACE__'].'\\'.$name;
-                $found = true;
-            } elseif (! isset($this->ignoredAnnotationNames[$name]) && $this->classExists($name)) {
-                $found = true;
-            }
-
-            if ( ! $found) {
-                if ($this->ignoreNotImportedAnnotations || isset($this->ignoredAnnotationNames[$name])) {
-                    return false;
-                }
-
-                throw AnnotationException::semanticalError(sprintf('The annotation "@%s" in %s was never imported. Did you maybe forget to add a "use" statement for this annotation?', $name, $this->context));
-            }
-        }
-
-        if ( ! $this->classExists($name)) {
-            throw AnnotationException::semanticalError(sprintf('The annotation "@%s" in %s does not exist, or could not be auto-loaded.', $name, $this->context));
-        }
-
-        // at this point, $name contains the fully qualified class name of the
-        // annotation, and it is also guaranteed that this class exists, and
-        // that it is loaded
-
-
-        // collects the metadata annotation only if there is not yet
-        if ( ! isset(self::$annotationMetadata[$name])) {
-            $this->collectAnnotationMetadata($name);
-        }
-
-        // verify that the class is really meant to be an annotation and not just any ordinary class
-        if (self::$annotationMetadata[$name]['is_annotation'] === false) {
-            if (isset($this->ignoredAnnotationNames[$originalName])) {
-                return false;
-            }
-
-            throw AnnotationException::semanticalError(sprintf('The class "%s" is not annotated with @Annotation. Are you sure this class can be used as annotation? If so, then you need to add @Annotation to the _class_ doc comment of "%s". If it is indeed no annotation, then you need to add @IgnoreAnnotation("%s") to the _class_ doc comment of %s.', $name, $name, $originalName, $this->context));
-        }
-
-        //if target is nested annotation
-        $target = $this->isNestedAnnotation ? Target::TARGET_ANNOTATION : $this->target;
-
-        // Next will be nested
-        $this->isNestedAnnotation = true;
-
-        //if annotation does not support current target
-        if (0 === (self::$annotationMetadata[$name]['targets'] & $target) && $target) {
-            throw AnnotationException::semanticalError(
-                sprintf('Annotation @%s is not allowed to be declared on %s. You may only use this annotation on these code elements: %s.',
-                     $originalName, $this->context, self::$annotationMetadata[$name]['targets_literal'])
-            );
-        }
-
-        $values = $this->MethodCall();
-
-        if (isset(self::$annotationMetadata[$name]['enum'])) {
-            // checks all declared attributes
-            foreach (self::$annotationMetadata[$name]['enum'] as $property => $enum) {
-                // checks if the attribute is a valid enumerator
-                if (isset($values[$property]) && ! in_array($values[$property], $enum['value'])) {
-                    throw AnnotationException::enumeratorError($property, $name, $this->context, $enum['literal'], $values[$property]);
-                }
-            }
-        }
-
-        // checks all declared attributes
-        foreach (self::$annotationMetadata[$name]['attribute_types'] as $property => $type) {
-            if ($property === self::$annotationMetadata[$name]['default_property']
-                && !isset($values[$property]) && isset($values['value'])) {
-                $property = 'value';
-            }
-
-            // handle a not given attribute or null value
-            if (!isset($values[$property])) {
-                if ($type['required']) {
-                    throw AnnotationException::requiredError($property, $originalName, $this->context, 'a(n) '.$type['value']);
-                }
-
-                continue;
-            }
-
-            if ($type['type'] === 'array') {
-                // handle the case of a single value
-                if ( ! is_array($values[$property])) {
-                    $values[$property] = array($values[$property]);
-                }
-
-                // checks if the attribute has array type declaration, such as "array<string>"
-                if (isset($type['array_type'])) {
-                    foreach ($values[$property] as $item) {
-                        if (gettype($item) !== $type['array_type'] && !$item instanceof $type['array_type']) {
-                            throw AnnotationException::attributeTypeError($property, $originalName, $this->context, 'either a(n) '.$type['array_type'].', or an array of '.$type['array_type'].'s', $item);
-                        }
-                    }
-                }
-            } elseif (gettype($values[$property]) !== $type['type'] && !$values[$property] instanceof $type['type']) {
-                throw AnnotationException::attributeTypeError($property, $originalName, $this->context, 'a(n) '.$type['value'], $values[$property]);
-            }
-        }
-
-        // check if the annotation expects values via the constructor,
-        // or directly injected into public properties
-        if (self::$annotationMetadata[$name]['has_constructor'] === true) {
-            return new $name($values);
-        }
-
-        $instance = new $name();
-
-        foreach ($values as $property => $value) {
-            if (!isset(self::$annotationMetadata[$name]['properties'][$property])) {
-                if ('value' !== $property) {
-                    throw AnnotationException::creationError(sprintf('The annotation @%s declared on %s does not have a property named "%s". Available properties: %s', $originalName, $this->context, $property, implode(', ', self::$annotationMetadata[$name]['properties'])));
-                }
-
-                // handle the case if the property has no annotations
-                if ( ! $property = self::$annotationMetadata[$name]['default_property']) {
-                    throw AnnotationException::creationError(sprintf('The annotation @%s declared on %s does not accept any values, but got %s.', $originalName, $this->context, json_encode($values)));
-                }
-            }
-
-            $instance->{$property} = $value;
-        }
-
-        return $instance;
-    }
-
-    /**
-     * MethodCall ::= ["(" [Values] ")"]
-     *
-     * @return array
-     */
-    private function MethodCall()
-    {
-        $values = array();
-
-        if ( ! $this->lexer->isNextToken(DocLexer::T_OPEN_PARENTHESIS)) {
-            return $values;
-        }
-
-        $this->match(DocLexer::T_OPEN_PARENTHESIS);
-
-        if ( ! $this->lexer->isNextToken(DocLexer::T_CLOSE_PARENTHESIS)) {
-            $values = $this->Values();
-        }
-
-        $this->match(DocLexer::T_CLOSE_PARENTHESIS);
-
-        return $values;
-    }
-
-    /**
-     * Values ::= Array | Value {"," Value}* [","]
-     *
-     * @return array
-     */
-    private function Values()
-    {
-        $values = array($this->Value());
-
-        while ($this->lexer->isNextToken(DocLexer::T_COMMA)) {
-            $this->match(DocLexer::T_COMMA);
-
-            if ($this->lexer->isNextToken(DocLexer::T_CLOSE_PARENTHESIS)) {
-                break;
-            }
-
-            $token = $this->lexer->lookahead;
-            $value = $this->Value();
-
-            if ( ! is_object($value) && ! is_array($value)) {
-                $this->syntaxError('Value', $token);
-            }
-
-            $values[] = $value;
-        }
-
-        foreach ($values as $k => $value) {
-            if (is_object($value) && $value instanceof \stdClass) {
-                $values[$value->name] = $value->value;
-            } else if ( ! isset($values['value'])){
-                $values['value'] = $value;
-            } else {
-                if ( ! is_array($values['value'])) {
-                    $values['value'] = array($values['value']);
-                }
-
-                $values['value'][] = $value;
-            }
-
-            unset($values[$k]);
-        }
-
-        return $values;
-    }
-
-    /**
-     * Constant ::= integer | string | float | boolean
-     *
-     * @return mixed
-     *
-     * @throws AnnotationException
-     */
-    private function Constant()
-    {
-        $identifier = $this->Identifier();
-
-        if ( ! defined($identifier) && false !== strpos($identifier, '::') && '\\' !== $identifier[0]) {
-            list($className, $const) = explode('::', $identifier);
-
-            $alias = (false === $pos = strpos($className, '\\')) ? $className : substr($className, 0, $pos);
-            $found = false;
-
-            switch (true) {
-                case !empty ($this->namespaces):
-                    foreach ($this->namespaces as $ns) {
-                        if (class_exists($ns.'\\'.$className) || interface_exists($ns.'\\'.$className)) {
-                             $className = $ns.'\\'.$className;
-                             $found = true;
-                             break;
-                        }
-                    }
-                    break;
-
-                case isset($this->imports[$loweredAlias = strtolower($alias)]):
-                    $found     = true;
-                    $className = (false !== $pos)
-                        ? $this->imports[$loweredAlias] . substr($className, $pos)
-                        : $this->imports[$loweredAlias];
-                    break;
-
-                default:
-                    if(isset($this->imports['__NAMESPACE__'])) {
-                        $ns = $this->imports['__NAMESPACE__'];
-
-                        if (class_exists($ns.'\\'.$className) || interface_exists($ns.'\\'.$className)) {
-                            $className = $ns.'\\'.$className;
-                            $found = true;
-                        }
-                    }
-                    break;
-            }
-
-            if ($found) {
-                 $identifier = $className . '::' . $const;
-            }
-        }
-
-        // checks if identifier ends with ::class, \strlen('::class') === 7
-        $classPos = stripos($identifier, '::class');
-        if ($classPos === strlen($identifier) - 7) {
-            return substr($identifier, 0, $classPos);
-        }
-
-        if (!defined($identifier)) {
-            throw AnnotationException::semanticalErrorConstants($identifier, $this->context);
-        }
-
-        return constant($identifier);
-    }
-
-    /**
-     * Identifier ::= string
-     *
-     * @return string
-     */
-    private function Identifier()
-    {
-        // check if we have an annotation
-        if ( ! $this->lexer->isNextTokenAny(self::$classIdentifiers)) {
-            $this->syntaxError('namespace separator or identifier');
-        }
-
-        $this->lexer->moveNext();
-
-        $className = $this->lexer->token['value'];
-
-        while ($this->lexer->lookahead['position'] === ($this->lexer->token['position'] + strlen($this->lexer->token['value']))
-                && $this->lexer->isNextToken(DocLexer::T_NAMESPACE_SEPARATOR)) {
-
-            $this->match(DocLexer::T_NAMESPACE_SEPARATOR);
-            $this->matchAny(self::$classIdentifiers);
-
-            $className .= '\\' . $this->lexer->token['value'];
-        }
-
-        return $className;
-    }
-
-    /**
-     * Value ::= PlainValue | FieldAssignment
-     *
-     * @return mixed
-     */
-    private function Value()
-    {
-        $peek = $this->lexer->glimpse();
-
-        if (DocLexer::T_EQUALS === $peek['type']) {
-            return $this->FieldAssignment();
-        }
-
-        return $this->PlainValue();
-    }
-
-    /**
-     * PlainValue ::= integer | string | float | boolean | Array | Annotation
-     *
-     * @return mixed
-     */
-    private function PlainValue()
-    {
-        if ($this->lexer->isNextToken(DocLexer::T_OPEN_CURLY_BRACES)) {
-            return $this->Arrayx();
-        }
-
-        if ($this->lexer->isNextToken(DocLexer::T_AT)) {
-            return $this->Annotation();
-        }
-
-        if ($this->lexer->isNextToken(DocLexer::T_IDENTIFIER)) {
-            return $this->Constant();
-        }
-
-        switch ($this->lexer->lookahead['type']) {
-            case DocLexer::T_STRING:
-                $this->match(DocLexer::T_STRING);
-                return $this->lexer->token['value'];
-
-            case DocLexer::T_INTEGER:
-                $this->match(DocLexer::T_INTEGER);
-                return (int)$this->lexer->token['value'];
-
-            case DocLexer::T_FLOAT:
-                $this->match(DocLexer::T_FLOAT);
-                return (float)$this->lexer->token['value'];
-
-            case DocLexer::T_TRUE:
-                $this->match(DocLexer::T_TRUE);
-                return true;
-
-            case DocLexer::T_FALSE:
-                $this->match(DocLexer::T_FALSE);
-                return false;
-
-            case DocLexer::T_NULL:
-                $this->match(DocLexer::T_NULL);
-                return null;
-
-            default:
-                $this->syntaxError('PlainValue');
-        }
-    }
-
-    /**
-     * FieldAssignment ::= FieldName "=" PlainValue
-     * FieldName ::= identifier
-     *
-     * @return array
-     */
-    private function FieldAssignment()
-    {
-        $this->match(DocLexer::T_IDENTIFIER);
-        $fieldName = $this->lexer->token['value'];
-
-        $this->match(DocLexer::T_EQUALS);
-
-        $item = new \stdClass();
-        $item->name  = $fieldName;
-        $item->value = $this->PlainValue();
-
-        return $item;
-    }
-
-    /**
-     * Array ::= "{" ArrayEntry {"," ArrayEntry}* [","] "}"
-     *
-     * @return array
-     */
-    private function Arrayx()
-    {
-        $array = $values = array();
-
-        $this->match(DocLexer::T_OPEN_CURLY_BRACES);
-
-        // If the array is empty, stop parsing and return.
-        if ($this->lexer->isNextToken(DocLexer::T_CLOSE_CURLY_BRACES)) {
-            $this->match(DocLexer::T_CLOSE_CURLY_BRACES);
-
-            return $array;
-        }
-
-        $values[] = $this->ArrayEntry();
-
-        while ($this->lexer->isNextToken(DocLexer::T_COMMA)) {
-            $this->match(DocLexer::T_COMMA);
-
-            // optional trailing comma
-            if ($this->lexer->isNextToken(DocLexer::T_CLOSE_CURLY_BRACES)) {
-                break;
-            }
-
-            $values[] = $this->ArrayEntry();
-        }
-
-        $this->match(DocLexer::T_CLOSE_CURLY_BRACES);
-
-        foreach ($values as $value) {
-            list ($key, $val) = $value;
-
-            if ($key !== null) {
-                $array[$key] = $val;
-            } else {
-                $array[] = $val;
-            }
-        }
-
-        return $array;
-    }
-
-    /**
-     * ArrayEntry ::= Value | KeyValuePair
-     * KeyValuePair ::= Key ("=" | ":") PlainValue | Constant
-     * Key ::= string | integer | Constant
-     *
-     * @return array
-     */
-    private function ArrayEntry()
-    {
-        $peek = $this->lexer->glimpse();
-
-        if (DocLexer::T_EQUALS === $peek['type']
-                || DocLexer::T_COLON === $peek['type']) {
-
-            if ($this->lexer->isNextToken(DocLexer::T_IDENTIFIER)) {
-                $key = $this->Constant();
-            } else {
-                $this->matchAny(array(DocLexer::T_INTEGER, DocLexer::T_STRING));
-                $key = $this->lexer->token['value'];
-            }
-
-            $this->matchAny(array(DocLexer::T_EQUALS, DocLexer::T_COLON));
-
-            return array($key, $this->PlainValue());
-        }
-
-        return array(null, $this->Value());
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php
deleted file mode 100644
index 24add1b..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php
+++ /dev/null
@@ -1,288 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-/**
- * File cache reader for annotations.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- *
- * @deprecated the FileCacheReader is deprecated and will be removed
- *             in version 2.0.0 of doctrine/annotations. Please use the
- *             {@see \Doctrine\Common\Annotations\CachedReader} instead.
- */
-class FileCacheReader implements Reader
-{
-    /**
-     * @var Reader
-     */
-    private $reader;
-
-    /**
-     * @var string
-     */
-    private $dir;
-
-    /**
-     * @var bool
-     */
-    private $debug;
-
-    /**
-     * @var array
-     */
-    private $loadedAnnotations = array();
-
-    /**
-     * @var array
-     */
-    private $classNameHashes = array();
-
-    /**
-     * @var int
-     */
-    private $umask;
-
-    /**
-     * Constructor.
-     *
-     * @param Reader  $reader
-     * @param string  $cacheDir
-     * @param boolean $debug
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function __construct(Reader $reader, $cacheDir, $debug = false, $umask = 0002)
-    {
-        if ( ! is_int($umask)) {
-            throw new \InvalidArgumentException(sprintf(
-                'The parameter umask must be an integer, was: %s',
-                gettype($umask)
-            ));
-        }
-
-        $this->reader = $reader;
-        $this->umask = $umask;
-
-        if (!is_dir($cacheDir) && !@mkdir($cacheDir, 0777 & (~$this->umask), true)) {
-            throw new \InvalidArgumentException(sprintf('The directory "%s" does not exist and could not be created.', $cacheDir));
-        }
-
-        $this->dir   = rtrim($cacheDir, '\\/');
-        $this->debug = $debug;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotations(\ReflectionClass $class)
-    {
-        if ( ! isset($this->classNameHashes[$class->name])) {
-            $this->classNameHashes[$class->name] = sha1($class->name);
-        }
-        $key = $this->classNameHashes[$class->name];
-
-        if (isset($this->loadedAnnotations[$key])) {
-            return $this->loadedAnnotations[$key];
-        }
-
-        $path = $this->dir.'/'.strtr($key, '\\', '-').'.cache.php';
-        if (!is_file($path)) {
-            $annot = $this->reader->getClassAnnotations($class);
-            $this->saveCacheFile($path, $annot);
-            return $this->loadedAnnotations[$key] = $annot;
-        }
-
-        if ($this->debug
-            && (false !== $filename = $class->getFilename())
-            && filemtime($path) < filemtime($filename)) {
-            @unlink($path);
-
-            $annot = $this->reader->getClassAnnotations($class);
-            $this->saveCacheFile($path, $annot);
-            return $this->loadedAnnotations[$key] = $annot;
-        }
-
-        return $this->loadedAnnotations[$key] = include $path;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotations(\ReflectionProperty $property)
-    {
-        $class = $property->getDeclaringClass();
-        if ( ! isset($this->classNameHashes[$class->name])) {
-            $this->classNameHashes[$class->name] = sha1($class->name);
-        }
-        $key = $this->classNameHashes[$class->name].'$'.$property->getName();
-
-        if (isset($this->loadedAnnotations[$key])) {
-            return $this->loadedAnnotations[$key];
-        }
-
-        $path = $this->dir.'/'.strtr($key, '\\', '-').'.cache.php';
-        if (!is_file($path)) {
-            $annot = $this->reader->getPropertyAnnotations($property);
-            $this->saveCacheFile($path, $annot);
-            return $this->loadedAnnotations[$key] = $annot;
-        }
-
-        if ($this->debug
-            && (false !== $filename = $class->getFilename())
-            && filemtime($path) < filemtime($filename)) {
-            @unlink($path);
-
-            $annot = $this->reader->getPropertyAnnotations($property);
-            $this->saveCacheFile($path, $annot);
-            return $this->loadedAnnotations[$key] = $annot;
-        }
-
-        return $this->loadedAnnotations[$key] = include $path;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotations(\ReflectionMethod $method)
-    {
-        $class = $method->getDeclaringClass();
-        if ( ! isset($this->classNameHashes[$class->name])) {
-            $this->classNameHashes[$class->name] = sha1($class->name);
-        }
-        $key = $this->classNameHashes[$class->name].'#'.$method->getName();
-
-        if (isset($this->loadedAnnotations[$key])) {
-            return $this->loadedAnnotations[$key];
-        }
-
-        $path = $this->dir.'/'.strtr($key, '\\', '-').'.cache.php';
-        if (!is_file($path)) {
-            $annot = $this->reader->getMethodAnnotations($method);
-            $this->saveCacheFile($path, $annot);
-            return $this->loadedAnnotations[$key] = $annot;
-        }
-
-        if ($this->debug
-            && (false !== $filename = $class->getFilename())
-            && filemtime($path) < filemtime($filename)) {
-            @unlink($path);
-
-            $annot = $this->reader->getMethodAnnotations($method);
-            $this->saveCacheFile($path, $annot);
-            return $this->loadedAnnotations[$key] = $annot;
-        }
-
-        return $this->loadedAnnotations[$key] = include $path;
-    }
-
-    /**
-     * Saves the cache file.
-     *
-     * @param string $path
-     * @param mixed  $data
-     *
-     * @return void
-     */
-    private function saveCacheFile($path, $data)
-    {
-        if (!is_writable($this->dir)) {
-            throw new \InvalidArgumentException(sprintf('The directory "%s" is not writable. Both, the webserver and the console user need access. You can manage access rights for multiple users with "chmod +a". If your system does not support this, check out the acl package.', $this->dir));
-        }
-
-        $tempfile = tempnam($this->dir, uniqid('', true));
-
-        if (false === $tempfile) {
-            throw new \RuntimeException(sprintf('Unable to create tempfile in directory: %s', $this->dir));
-        }
-
-        $written = file_put_contents($tempfile, '<?php return unserialize('.var_export(serialize($data), true).');');
-
-        if (false === $written) {
-            throw new \RuntimeException(sprintf('Unable to write cached file to: %s', $tempfile));
-        }
-
-        @chmod($tempfile, 0666 & (~$this->umask));
-
-        if (false === rename($tempfile, $path)) {
-            @unlink($tempfile);
-            throw new \RuntimeException(sprintf('Unable to rename %s to %s', $tempfile, $path));
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotation(\ReflectionClass $class, $annotationName)
-    {
-        $annotations = $this->getClassAnnotations($class);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof $annotationName) {
-                return $annotation;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotation(\ReflectionMethod $method, $annotationName)
-    {
-        $annotations = $this->getMethodAnnotations($method);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof $annotationName) {
-                return $annotation;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName)
-    {
-        $annotations = $this->getPropertyAnnotations($property);
-
-        foreach ($annotations as $annotation) {
-            if ($annotation instanceof $annotationName) {
-                return $annotation;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Clears loaded annotations.
-     *
-     * @return void
-     */
-    public function clearLoadedAnnotations()
-    {
-        $this->loadedAnnotations = array();
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php
deleted file mode 100644
index bf7fbdc..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-/**
- * Allows the reader to be used in-place of Doctrine's reader.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class IndexedReader implements Reader
-{
-    /**
-     * @var Reader
-     */
-    private $delegate;
-
-    /**
-     * Constructor.
-     *
-     * @param Reader $reader
-     */
-    public function __construct(Reader $reader)
-    {
-        $this->delegate = $reader;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotations(\ReflectionClass $class)
-    {
-        $annotations = array();
-        foreach ($this->delegate->getClassAnnotations($class) as $annot) {
-            $annotations[get_class($annot)] = $annot;
-        }
-
-        return $annotations;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotation(\ReflectionClass $class, $annotation)
-    {
-        return $this->delegate->getClassAnnotation($class, $annotation);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotations(\ReflectionMethod $method)
-    {
-        $annotations = array();
-        foreach ($this->delegate->getMethodAnnotations($method) as $annot) {
-            $annotations[get_class($annot)] = $annot;
-        }
-
-        return $annotations;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotation(\ReflectionMethod $method, $annotation)
-    {
-        return $this->delegate->getMethodAnnotation($method, $annotation);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotations(\ReflectionProperty $property)
-    {
-        $annotations = array();
-        foreach ($this->delegate->getPropertyAnnotations($property) as $annot) {
-            $annotations[get_class($annot)] = $annot;
-        }
-
-        return $annotations;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotation(\ReflectionProperty $property, $annotation)
-    {
-        return $this->delegate->getPropertyAnnotation($property, $annotation);
-    }
-
-    /**
-     * Proxies all methods to the delegate.
-     *
-     * @param string $method
-     * @param array  $args
-     *
-     * @return mixed
-     */
-    public function __call($method, $args)
-    {
-        return call_user_func_array(array($this->delegate, $method), $args);
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php
deleted file mode 100644
index 21ee7cc..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-use SplFileObject;
-
-/**
- * Parses a file for namespaces/use/class declarations.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Christian Kaps <christian.kaps@mohiva.com>
- */
-final class PhpParser
-{
-    /**
-     * Parses a class.
-     *
-     * @param \ReflectionClass $class A <code>ReflectionClass</code> object.
-     *
-     * @return array A list with use statements in the form (Alias => FQN).
-     */
-    public function parseClass(\ReflectionClass $class)
-    {
-        if (method_exists($class, 'getUseStatements')) {
-            return $class->getUseStatements();
-        }
-
-        if (false === $filename = $class->getFilename()) {
-            return array();
-        }
-
-        $content = $this->getFileContent($filename, $class->getStartLine());
-
-        if (null === $content) {
-            return array();
-        }
-
-        $namespace = preg_quote($class->getNamespaceName());
-        $content = preg_replace('/^.*?(\bnamespace\s+' . $namespace . '\s*[;{].*)$/s', '\\1', $content);
-        $tokenizer = new TokenParser('<?php ' . $content);
-
-        $statements = $tokenizer->parseUseStatements($class->getNamespaceName());
-
-        return $statements;
-    }
-
-    /**
-     * Gets the content of the file right up to the given line number.
-     *
-     * @param string  $filename   The name of the file to load.
-     * @param integer $lineNumber The number of lines to read from file.
-     *
-     * @return string The content of the file.
-     */
-    private function getFileContent($filename, $lineNumber)
-    {
-        if ( ! is_file($filename)) {
-            return null;
-        }
-
-        $content = '';
-        $lineCnt = 0;
-        $file = new SplFileObject($filename);
-        while (!$file->eof()) {
-            if ($lineCnt++ == $lineNumber) {
-                break;
-            }
-
-            $content .= $file->fgets();
-        }
-
-        return $content;
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php
deleted file mode 100644
index 4774f87..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-/**
- * Interface for annotation readers.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-interface Reader
-{
-    /**
-     * Gets the annotations applied to a class.
-     *
-     * @param \ReflectionClass $class The ReflectionClass of the class from which
-     *                                the class annotations should be read.
-     *
-     * @return array An array of Annotations.
-     */
-    function getClassAnnotations(\ReflectionClass $class);
-
-    /**
-     * Gets a class annotation.
-     *
-     * @param \ReflectionClass $class          The ReflectionClass of the class from which
-     *                                         the class annotations should be read.
-     * @param string           $annotationName The name of the annotation.
-     *
-     * @return object|null The Annotation or NULL, if the requested annotation does not exist.
-     */
-    function getClassAnnotation(\ReflectionClass $class, $annotationName);
-
-    /**
-     * Gets the annotations applied to a method.
-     *
-     * @param \ReflectionMethod $method The ReflectionMethod of the method from which
-     *                                  the annotations should be read.
-     *
-     * @return array An array of Annotations.
-     */
-    function getMethodAnnotations(\ReflectionMethod $method);
-
-    /**
-     * Gets a method annotation.
-     *
-     * @param \ReflectionMethod $method         The ReflectionMethod to read the annotations from.
-     * @param string            $annotationName The name of the annotation.
-     *
-     * @return object|null The Annotation or NULL, if the requested annotation does not exist.
-     */
-    function getMethodAnnotation(\ReflectionMethod $method, $annotationName);
-
-    /**
-     * Gets the annotations applied to a property.
-     *
-     * @param \ReflectionProperty $property The ReflectionProperty of the property
-     *                                      from which the annotations should be read.
-     *
-     * @return array An array of Annotations.
-     */
-    function getPropertyAnnotations(\ReflectionProperty $property);
-
-    /**
-     * Gets a property annotation.
-     *
-     * @param \ReflectionProperty $property       The ReflectionProperty to read the annotations from.
-     * @param string              $annotationName The name of the annotation.
-     *
-     * @return object|null The Annotation or NULL, if the requested annotation does not exist.
-     */
-    function getPropertyAnnotation(\ReflectionProperty $property, $annotationName);
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php
deleted file mode 100644
index d4757ee..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-/**
- * Simple Annotation Reader.
- *
- * This annotation reader is intended to be used in projects where you have
- * full-control over all annotations that are available.
- *
- * @since  2.2
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- */
-class SimpleAnnotationReader implements Reader
-{
-    /**
-     * @var DocParser
-     */
-    private $parser;
-
-    /**
-     * Constructor.
-     *
-     * Initializes a new SimpleAnnotationReader.
-     */
-    public function __construct()
-    {
-        $this->parser = new DocParser();
-        $this->parser->setIgnoreNotImportedAnnotations(true);
-    }
-
-    /**
-     * Adds a namespace in which we will look for annotations.
-     *
-     * @param string $namespace
-     *
-     * @return void
-     */
-    public function addNamespace($namespace)
-    {
-        $this->parser->addNamespace($namespace);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotations(\ReflectionClass $class)
-    {
-        return $this->parser->parse($class->getDocComment(), 'class '.$class->getName());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotations(\ReflectionMethod $method)
-    {
-        return $this->parser->parse($method->getDocComment(), 'method '.$method->getDeclaringClass()->name.'::'.$method->getName().'()');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotations(\ReflectionProperty $property)
-    {
-        return $this->parser->parse($property->getDocComment(), 'property '.$property->getDeclaringClass()->name.'::$'.$property->getName());
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassAnnotation(\ReflectionClass $class, $annotationName)
-    {
-        foreach ($this->getClassAnnotations($class) as $annot) {
-            if ($annot instanceof $annotationName) {
-                return $annot;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethodAnnotation(\ReflectionMethod $method, $annotationName)
-    {
-        foreach ($this->getMethodAnnotations($method) as $annot) {
-            if ($annot instanceof $annotationName) {
-                return $annot;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName)
-    {
-        foreach ($this->getPropertyAnnotations($property) as $annot) {
-            if ($annot instanceof $annotationName) {
-                return $annot;
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php
deleted file mode 100644
index 9bdccce..0000000
--- a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Annotations;
-
-/**
- * Parses a file for namespaces/use/class declarations.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Christian Kaps <christian.kaps@mohiva.com>
- */
-class TokenParser
-{
-    /**
-     * The token list.
-     *
-     * @var array
-     */
-    private $tokens;
-
-    /**
-     * The number of tokens.
-     *
-     * @var int
-     */
-    private $numTokens;
-
-    /**
-     * The current array pointer.
-     *
-     * @var int
-     */
-    private $pointer = 0;
-
-    /**
-     * @param string $contents
-     */
-    public function __construct($contents)
-    {
-        $this->tokens = token_get_all($contents);
-
-        // The PHP parser sets internal compiler globals for certain things. Annoyingly, the last docblock comment it
-        // saw gets stored in doc_comment. When it comes to compile the next thing to be include()d this stored
-        // doc_comment becomes owned by the first thing the compiler sees in the file that it considers might have a
-        // docblock. If the first thing in the file is a class without a doc block this would cause calls to
-        // getDocBlock() on said class to return our long lost doc_comment. Argh.
-        // To workaround, cause the parser to parse an empty docblock. Sure getDocBlock() will return this, but at least
-        // it's harmless to us.
-        token_get_all("<?php\n/**\n *\n */");
-
-        $this->numTokens = count($this->tokens);
-    }
-
-    /**
-     * Gets the next non whitespace and non comment token.
-     *
-     * @param boolean $docCommentIsComment If TRUE then a doc comment is considered a comment and skipped.
-     *                                     If FALSE then only whitespace and normal comments are skipped.
-     *
-     * @return array|null The token if exists, null otherwise.
-     */
-    public function next($docCommentIsComment = TRUE)
-    {
-        for ($i = $this->pointer; $i < $this->numTokens; $i++) {
-            $this->pointer++;
-            if ($this->tokens[$i][0] === T_WHITESPACE ||
-                $this->tokens[$i][0] === T_COMMENT ||
-                ($docCommentIsComment && $this->tokens[$i][0] === T_DOC_COMMENT)) {
-
-                continue;
-            }
-
-            return $this->tokens[$i];
-        }
-
-        return null;
-    }
-
-    /**
-     * Parses a single use statement.
-     *
-     * @return array A list with all found class names for a use statement.
-     */
-    public function parseUseStatement()
-    {
-        $class = '';
-        $alias = '';
-        $statements = array();
-        $explicitAlias = false;
-        while (($token = $this->next())) {
-            $isNameToken = $token[0] === T_STRING || $token[0] === T_NS_SEPARATOR;
-            if (!$explicitAlias && $isNameToken) {
-                $class .= $token[1];
-                $alias = $token[1];
-            } else if ($explicitAlias && $isNameToken) {
-                $alias .= $token[1];
-            } else if ($token[0] === T_AS) {
-                $explicitAlias = true;
-                $alias = '';
-            } else if ($token === ',') {
-                $statements[strtolower($alias)] = $class;
-                $class = '';
-                $alias = '';
-                $explicitAlias = false;
-            } else if ($token === ';') {
-                $statements[strtolower($alias)] = $class;
-                break;
-            } else {
-                break;
-            }
-        }
-
-        return $statements;
-    }
-
-    /**
-     * Gets all use statements.
-     *
-     * @param string $namespaceName The namespace name of the reflected class.
-     *
-     * @return array A list with all found use statements.
-     */
-    public function parseUseStatements($namespaceName)
-    {
-        $statements = array();
-        while (($token = $this->next())) {
-            if ($token[0] === T_USE) {
-                $statements = array_merge($statements, $this->parseUseStatement());
-                continue;
-            }
-            if ($token[0] !== T_NAMESPACE || $this->parseNamespace() != $namespaceName) {
-                continue;
-            }
-
-            // Get fresh array for new namespace. This is to prevent the parser to collect the use statements
-            // for a previous namespace with the same name. This is the case if a namespace is defined twice
-            // or if a namespace with the same name is commented out.
-            $statements = array();
-        }
-
-        return $statements;
-    }
-
-    /**
-     * Gets the namespace.
-     *
-     * @return string The found namespace.
-     */
-    public function parseNamespace()
-    {
-        $name = '';
-        while (($token = $this->next()) && ($token[0] === T_STRING || $token[0] === T_NS_SEPARATOR)) {
-            $name .= $token[1];
-        }
-
-        return $name;
-    }
-
-    /**
-     * Gets the class name.
-     *
-     * @return string The found class name.
-     */
-    public function parseClass()
-    {
-        // Namespaces and class names are tokenized the same: T_STRINGs
-        // separated by T_NS_SEPARATOR so we can use one function to provide
-        // both.
-        return $this->parseNamespace();
-    }
-}
diff --git a/vendor/doctrine/cache/.coveralls.yml b/vendor/doctrine/cache/.coveralls.yml
deleted file mode 100644
index 0c08233..0000000
--- a/vendor/doctrine/cache/.coveralls.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-# for php-coveralls
-service_name: travis-ci
-src_dir: lib
-coverage_clover: build/logs/clover.xml
diff --git a/vendor/doctrine/cache/.gitignore b/vendor/doctrine/cache/.gitignore
deleted file mode 100644
index ca23023..0000000
--- a/vendor/doctrine/cache/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-vendor/
-build/
-phpunit.xml
-composer.lock
\ No newline at end of file
diff --git a/vendor/doctrine/cache/.travis.yml b/vendor/doctrine/cache/.travis.yml
deleted file mode 100644
index 2952a48..0000000
--- a/vendor/doctrine/cache/.travis.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-language: php
-
-php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-services:
-    - riak
-    - mongodb
-    - memcached
-    - 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"
-
-install:
-    - composer --prefer-source --dev install
-
-script:
-    - ./vendor/bin/phpunit -c ./tests/travis/phpunit.travis.xml -v
-
-after_script:
-    - php vendor/bin/coveralls -v
-
-matrix:
-  allow_failures:
-    - php: hhvm
diff --git a/vendor/doctrine/cache/LICENSE b/vendor/doctrine/cache/LICENSE
deleted file mode 100644
index 4a91f0b..0000000
--- a/vendor/doctrine/cache/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006-2012 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
-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/doctrine/cache/README.md b/vendor/doctrine/cache/README.md
deleted file mode 100644
index 94f80a3..0000000
--- a/vendor/doctrine/cache/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Doctrine Cache
-
-Master: [![Build Status](https://secure.travis-ci.org/doctrine/cache.png?branch=master)](http://travis-ci.org/doctrine/cache) [![Coverage Status](https://coveralls.io/repos/doctrine/cache/badge.png?branch=master)](https://coveralls.io/r/doctrine/cache?branch=master)
-
-[![Latest Stable Version](https://poser.pugx.org/doctrine/cache/v/stable.png)](https://packagist.org/packages/doctrine/cache) [![Total Downloads](https://poser.pugx.org/doctrine/cache/downloads.png)](https://packagist.org/packages/doctrine/cache)
-
-Cache component extracted from the Doctrine Common project.
-
-## Changelog
-
-### v1.2
-
-* Added support for MongoDB as Cache Provider
-* Fix namespace version reset
diff --git a/vendor/doctrine/cache/UPGRADE.md b/vendor/doctrine/cache/UPGRADE.md
deleted file mode 100644
index e1f8a50..0000000
--- a/vendor/doctrine/cache/UPGRADE.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Upgrade to 1.4
-
-## Minor BC Break: `Doctrine\Common\Cache\FileCache#$extension` is now `private`.
-
-If you need to override the value of `Doctrine\Common\Cache\FileCache#$extension`, then use the
-second parameter of `Doctrine\Common\Cache\FileCache#__construct()` instead of overriding
-the property in your own implementation.
-
-## Minor BC Break: file based caches paths changed
-
-`Doctrine\Common\Cache\FileCache`, `Doctrine\Common\Cache\PhpFileCache` and
-`Doctrine\Common\Cache\FilesystemCache` are using a different cache paths structure.
-
-If you rely on warmed up caches for deployments, consider that caches generated
-with `doctrine/cache` `<1.4` are not compatible with the new directory structure,
-and will be ignored.
diff --git a/vendor/doctrine/cache/build.properties b/vendor/doctrine/cache/build.properties
deleted file mode 100644
index 2d98c36..0000000
--- a/vendor/doctrine/cache/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Version class and file
-project.version_class = Doctrine\\Common\\Cache\\Version
-project.version_file = lib/Doctrine/Common/Cache/Version.php
diff --git a/vendor/doctrine/cache/build.xml b/vendor/doctrine/cache/build.xml
deleted file mode 100644
index a7c52e3..0000000
--- a/vendor/doctrine/cache/build.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0"?>
-<project name="DoctrineCommonCache" default="build" basedir=".">
-    <property file="build.properties" />
-
-    <target name="php">
-        <exec executable="which" outputproperty="php_executable">
-            <arg value="php" />
-        </exec>
-    </target>
-
-    <target name="prepare">
-        <mkdir dir="build" />
-    </target>
-
-    <target name="build" depends="check-git-checkout-clean,prepare,php,composer">
-        <exec executable="${php_executable}">
-            <arg value="build/composer.phar" />
-            <arg value="archive" />
-            <arg value="--dir=build" />
-        </exec>
-    </target>
-
-    <target name="composer" depends="php,composer-check,composer-download">
-        <exec executable="${php_executable}">
-            <arg value="build/composer.phar" />
-            <arg value="install" />
-        </exec>
-    </target>
-
-    <target name="composer-check" depends="prepare">
-        <available file="build/composer.phar" property="composer.present"/>
-    </target>
-
-    <target name="composer-download" unless="composer.present">
-        <exec executable="wget">
-            <arg value="-Obuild/composer.phar" />
-            <arg value="http://getcomposer.org/composer.phar" />
-        </exec>
-    </target>
-
-    <target name="make-release" depends="check-git-checkout-clean,prepare,php">
-        <replace file="${project.version_file}" token="-DEV" value="" failOnNoReplacements="true" />
-        <exec executable="git" failonerror="true" outputproperty="current_git_branch">
-            <arg value="rev-parse" />
-            <arg value="--abbrev-ref" />
-            <arg value="HEAD" />
-        </exec>
-        <exec executable="${php_executable}" outputproperty="doctrine.current_version" failonerror="true">
-            <arg value="-r" />
-            <arg value="require_once '${project.version_file}';echo ${project.version_class}::VERSION;" />
-        </exec>
-        <exec executable="${php_executable}" outputproperty="doctrine.next_version" failonerror="true">
-            <arg value="-r" />
-            <arg value="$parts = explode('.', str_ireplace(array('-DEV', '-ALPHA', '-BETA'), '', '${doctrine.current_version}'));
-                if (count($parts) != 3) {
-                    throw new \InvalidArgumentException('Version is assumed in format x.y.z, ${doctrine.current_version} given');
-                }
-                if ('${current_git_branch}' === 'master') {
-                    $parts[1]++;
-                } else {
-                    $parts[2]++;
-                }
-                echo implode('.', $parts);
-            " />
-        </exec>
-
-        <git-commit file="${project.version_file}" message="Release ${doctrine.current_version}" />
-        <git-tag version="${doctrine.current_version}" />
-        <replace file="${project.version_file}" token="${doctrine.current_version}" value="${doctrine.next_version}-DEV" />
-        <git-commit file="${project.version_file}" message="Bump version to ${doctrine.next_version}" />
-    </target>
-
-    <target name="check-git-checkout-clean">
-        <exec executable="git" failonerror="true">
-            <arg value="diff-index" />
-            <arg value="--quiet" />
-            <arg value="HEAD" />
-        </exec>
-    </target>
-
-    <macrodef name="git-commit">
-        <attribute name="file" default="NOT SET"/>
-        <attribute name="message" default="NOT SET"/>
-
-        <sequential>
-            <exec executable="git">
-                <arg value="add" />
-                <arg value="@{file}" />
-            </exec>
-            <exec executable="git">
-                <arg value="commit" />
-                <arg value="-m" />
-                <arg value="@{message}" />
-            </exec>
-        </sequential>
-    </macrodef>
-
-    <macrodef name="git-tag">
-        <attribute name="version" default="NOT SET" />
-
-        <sequential>
-            <exec executable="git">
-                <arg value="tag" />
-                <arg value="-m" />
-                <arg value="v@{version}" />
-                <arg value="v@{version}" />
-            </exec>
-        </sequential>
-    </macrodef>
-</project>
diff --git a/vendor/doctrine/cache/composer.json b/vendor/doctrine/cache/composer.json
deleted file mode 100644
index f3caa7a..0000000
--- a/vendor/doctrine/cache/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-    "name": "doctrine/cache",
-    "type": "library",
-    "description": "Caching library offering an object-oriented API for many cache backends",
-    "keywords": ["cache", "caching"],
-    "homepage": "http://www.doctrine-project.org",
-    "license": "MIT",
-    "authors": [
-        {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
-        {"name": "Roman Borschel", "email": "roman@code-factory.org"},
-        {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
-        {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
-        {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
-    ],
-    "require": {
-        "php": ">=5.3.2"
-    },
-    "require-dev": {
-        "phpunit/phpunit":         ">=3.7",
-        "satooshi/php-coveralls":  "~0.6",
-        "predis/predis":           "~1.0"
-    },
-    "conflict": {
-        "doctrine/common": ">2.2,<2.4"
-    },
-    "autoload": {
-        "psr-0": { "Doctrine\\Common\\Cache\\": "lib/" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.5.x-dev"
-        }
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php
deleted file mode 100644
index abd5e71..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * APC cache provider.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author David Abdemoulaie <dave@hobodave.com>
- */
-class ApcCache extends CacheProvider
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        return apc_fetch($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        return apc_exists($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        return (bool) apc_store($id, $data, (int) $lifeTime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        return apc_delete($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        return apc_clear_cache() && apc_clear_cache('user');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetchMultiple(array $keys)
-    {
-        return apc_fetch($keys);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        $info = apc_cache_info('', true);
-        $sma  = apc_sma_info();
-
-        // @TODO - Temporary fix @see https://github.com/krakjoe/apcu/pull/42
-        if (PHP_VERSION_ID >= 50500) {
-            $info['num_hits']   = isset($info['num_hits'])   ? $info['num_hits']   : $info['nhits'];
-            $info['num_misses'] = isset($info['num_misses']) ? $info['num_misses'] : $info['nmisses'];
-            $info['start_time'] = isset($info['start_time']) ? $info['start_time'] : $info['stime'];
-        }
-
-        return array(
-            Cache::STATS_HITS             => $info['num_hits'],
-            Cache::STATS_MISSES           => $info['num_misses'],
-            Cache::STATS_UPTIME           => $info['start_time'],
-            Cache::STATS_MEMORY_USAGE     => $info['mem_size'],
-            Cache::STATS_MEMORY_AVAILABLE => $sma['avail_mem'],
-        );
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php
deleted file mode 100644
index 31a0729..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Array cache driver.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author David Abdemoulaie <dave@hobodave.com>
- */
-class ArrayCache extends CacheProvider
-{
-    /**
-     * @var array $data
-     */
-    private $data = array();
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        return $this->doContains($id) ? $this->data[$id] : false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        // isset() is required for performance optimizations, to avoid unnecessary function calls to array_key_exists.
-        return isset($this->data[$id]) || array_key_exists($id, $this->data);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        $this->data[$id] = $data;
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        unset($this->data[$id]);
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        $this->data = array();
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        return null;
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
deleted file mode 100644
index 205a123..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Interface for cache drivers.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-interface Cache
-{
-    const STATS_HITS             = 'hits';
-    const STATS_MISSES           = 'misses';
-    const STATS_UPTIME           = 'uptime';
-    const STATS_MEMORY_USAGE     = 'memory_usage';
-    const STATS_MEMORY_AVAILABLE = 'memory_available';
-    /**
-     * Only for backward compatibility (may be removed in next major release)
-     *
-     * @deprecated
-     */
-    const STATS_MEMORY_AVAILIABLE = 'memory_available';
-
-    /**
-     * Fetches an entry from the cache.
-     *
-     * @param string $id The id of the cache entry to fetch.
-     *
-     * @return mixed The cached data or FALSE, if no cache entry exists for the given id.
-     */
-    public function fetch($id);
-
-    /**
-     * Tests if an entry exists in the cache.
-     *
-     * @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.
-     */
-    public function contains($id);
-
-    /**
-     * Puts data into the cache.
-     *
-     * @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).
-     *
-     * @return boolean TRUE if the entry was successfully stored in the cache, FALSE otherwise.
-     */
-    public function save($id, $data, $lifeTime = 0);
-
-    /**
-     * Deletes a cache entry.
-     *
-     * @param string $id The cache id.
-     *
-     * @return boolean TRUE if the cache entry was successfully deleted, FALSE otherwise.
-     */
-    public function delete($id);
-
-    /**
-     * Retrieves cached information from the data store.
-     *
-     * The server's statistics array has the following values:
-     *
-     * - <b>hits</b>
-     * Number of keys that have been requested and found present.
-     *
-     * - <b>misses</b>
-     * Number of items that have been requested and not found.
-     *
-     * - <b>uptime</b>
-     * Time that the server is running.
-     *
-     * - <b>memory_usage</b>
-     * Memory used by this server to store items.
-     *
-     * - <b>memory_available</b>
-     * Memory allowed to use for storage.
-     *
-     * @since 2.2
-     *
-     * @return array|null An associative array with server's statistics if available, NULL otherwise.
-     */
-    public function getStats();
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
deleted file mode 100644
index a172a4c..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Base class for cache provider implementations.
- *
- * @since  2.2
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- */
-abstract class CacheProvider implements Cache, FlushableCache, ClearableCache, MultiGetCache
-{
-    const DOCTRINE_NAMESPACE_CACHEKEY = 'DoctrineNamespaceCacheKey[%s]';
-
-    /**
-     * The namespace to prefix all cache ids with.
-     *
-     * @var string
-     */
-    private $namespace = '';
-
-    /**
-     * The namespace version.
-     *
-     * @var integer|null
-     */
-    private $namespaceVersion;
-
-    /**
-     * Sets the namespace to prefix all cache ids with.
-     *
-     * @param string $namespace
-     *
-     * @return void
-     */
-    public function setNamespace($namespace)
-    {
-        $this->namespace        = (string) $namespace;
-        $this->namespaceVersion = null;
-    }
-
-    /**
-     * Retrieves the namespace that prefixes all cache ids.
-     *
-     * @return string
-     */
-    public function getNamespace()
-    {
-        return $this->namespace;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function fetch($id)
-    {
-        return $this->doFetch($this->getNamespacedId($id));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function fetchMultiple(array $keys)
-    {
-        // 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);
-        $foundItems     = array();
-
-        // 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])) {
-                $foundItems[$requestedKey] = $items[$namespacedKey];
-            }
-        }
-
-        return $foundItems;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function contains($id)
-    {
-        return $this->doContains($this->getNamespacedId($id));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function save($id, $data, $lifeTime = 0)
-    {
-        return $this->doSave($this->getNamespacedId($id), $data, $lifeTime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function delete($id)
-    {
-        return $this->doDelete($this->getNamespacedId($id));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStats()
-    {
-        return $this->doGetStats();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function flushAll()
-    {
-        return $this->doFlush();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function deleteAll()
-    {
-        $namespaceCacheKey = $this->getNamespaceCacheKey();
-        $namespaceVersion  = $this->getNamespaceVersion() + 1;
-
-        $this->namespaceVersion = $namespaceVersion;
-
-        return $this->doSave($namespaceCacheKey, $namespaceVersion);
-    }
-
-    /**
-     * Prefixes the passed id with the configured namespace value.
-     *
-     * @param string $id The id to namespace.
-     *
-     * @return string The namespaced id.
-     */
-    private function getNamespacedId($id)
-    {
-        $namespaceVersion  = $this->getNamespaceVersion();
-
-        return sprintf('%s[%s][%s]', $this->namespace, $id, $namespaceVersion);
-    }
-
-    /**
-     * Returns the namespace cache key.
-     *
-     * @return string
-     */
-    private function getNamespaceCacheKey()
-    {
-        return sprintf(self::DOCTRINE_NAMESPACE_CACHEKEY, $this->namespace);
-    }
-
-    /**
-     * Returns the namespace version.
-     *
-     * @return integer
-     */
-    private function getNamespaceVersion()
-    {
-        if (null !== $this->namespaceVersion) {
-            return $this->namespaceVersion;
-        }
-
-        $namespaceCacheKey = $this->getNamespaceCacheKey();
-        $namespaceVersion = $this->doFetch($namespaceCacheKey);
-
-        if (false === $namespaceVersion) {
-            $namespaceVersion = 1;
-
-            $this->doSave($namespaceCacheKey, $namespaceVersion);
-        }
-
-        $this->namespaceVersion = $namespaceVersion;
-
-        return $this->namespaceVersion;
-    }
-
-    /**
-     * Default implementation of doFetchMultiple. Each driver that supports multi-get should owerwrite it.
-     *
-     * @param array $keys Array of keys to retrieve from cache
-     * @return array Array of values retrieved for the given keys.
-     */
-    protected function doFetchMultiple(array $keys)
-    {
-        $returnValues = array();
-
-        foreach ($keys as $index => $key) {
-            if (false !== ($item = $this->doFetch($key))) {
-                $returnValues[$key] = $item;
-            }
-        }
-
-        return $returnValues;
-    }
-
-    /**
-     * Fetches an entry from the cache.
-     *
-     * @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.
-     */
-    abstract protected function doFetch($id);
-
-    /**
-     * Tests if an entry exists in the cache.
-     *
-     * @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.
-     */
-    abstract protected function doContains($id);
-
-    /**
-     * Puts data into the cache.
-     *
-     * @param string $id       The cache id.
-     * @param string $data     The cache entry/data.
-     * @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.
-     */
-    abstract protected function doSave($id, $data, $lifeTime = 0);
-
-    /**
-     * Deletes a cache entry.
-     *
-     * @param string $id The cache id.
-     *
-     * @return boolean 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.
-     */
-    abstract protected function doFlush();
-
-    /**
-     * Retrieves cached information from the data store.
-     *
-     * @since 2.2
-     *
-     * @return array|null An associative array with server's statistics if available, NULL otherwise.
-     */
-    abstract protected function doGetStats();
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php
deleted file mode 100644
index 96c9b54..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Cache provider that allows to easily chain multiple cache providers
- *
- * @author Michaël Gallego <mic.gallego@gmail.com>
- */
-class ChainCache extends CacheProvider
-{
-    /**
-     * @var CacheProvider[]
-     */
-    private $cacheProviders = array();
-
-    /**
-     * Constructor
-     *
-     * @param CacheProvider[] $cacheProviders
-     */
-    public function __construct($cacheProviders = array())
-    {
-        $this->cacheProviders = $cacheProviders;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function setNamespace($namespace)
-    {
-        parent::setNamespace($namespace);
-
-        foreach ($this->cacheProviders as $cacheProvider) {
-            $cacheProvider->setNamespace($namespace);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doFetch($id)
-    {
-        foreach ($this->cacheProviders as $key => $cacheProvider) {
-            if ($cacheProvider->doContains($id)) {
-                $value = $cacheProvider->doFetch($id);
-
-                // We populate all the previous cache layers (that are assumed to be faster)
-                for ($subKey = $key - 1 ; $subKey >= 0 ; $subKey--) {
-                    $this->cacheProviders[$subKey]->doSave($id, $value);
-                }
-
-                return $value;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doContains($id)
-    {
-        foreach ($this->cacheProviders as $cacheProvider) {
-            if ($cacheProvider->doContains($id)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        $stored = true;
-
-        foreach ($this->cacheProviders as $cacheProvider) {
-            $stored = $cacheProvider->doSave($id, $data, $lifeTime) && $stored;
-        }
-
-        return $stored;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doDelete($id)
-    {
-        $deleted = true;
-
-        foreach ($this->cacheProviders as $cacheProvider) {
-            $deleted = $cacheProvider->doDelete($id) && $deleted;
-        }
-
-        return $deleted;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doFlush()
-    {
-        $flushed = true;
-
-        foreach ($this->cacheProviders as $cacheProvider) {
-            $flushed = $cacheProvider->doFlush() && $flushed;
-        }
-
-        return $flushed;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doGetStats()
-    {
-        // We return all the stats from all adapters
-        $stats = array();
-
-        foreach ($this->cacheProviders as $cacheProvider) {
-            $stats[] = $cacheProvider->doGetStats();
-        }
-
-        return $stats;
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
deleted file mode 100644
index d7b4358..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Interface for cache that can be flushed.
- *
- * Intended to be used for partial clearing of a cache namespace. For a more
- * global "flushing", see {@see FlushableCache}.
- *
- * @link   www.doctrine-project.org
- * @since  1.4
- * @author Adirelle <adirelle@gmail.com>
- */
-interface ClearableCache
-{
-    /**
-     * Deletes all cache entries in the current cache namespace.
-     *
-     * @return boolean TRUE if the cache entries were successfully deleted, FALSE otherwise.
-     */
-    public function deleteAll();
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php
deleted file mode 100644
index c21691d..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-use \Couchbase;
-
-/**
- * Couchbase cache provider.
- *
- * @link   www.doctrine-project.org
- * @since  2.4
- * @author Michael Nitschinger <michael@nitschinger.at>
- */
-class CouchbaseCache extends CacheProvider
-{
-    /**
-     * @var Couchbase|null
-     */
-    private $couchbase;
-
-    /**
-     * Sets the Couchbase instance to use.
-     *
-     * @param Couchbase $couchbase
-     *
-     * @return void
-     */
-    public function setCouchbase(Couchbase $couchbase)
-    {
-        $this->couchbase = $couchbase;
-    }
-
-    /**
-     * Gets the Couchbase instance used by the cache.
-     *
-     * @return Couchbase|null
-     */
-    public function getCouchbase()
-    {
-        return $this->couchbase;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        return $this->couchbase->get($id) ?: false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        return (null !== $this->couchbase->get($id));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        if ($lifeTime > 30 * 24 * 3600) {
-            $lifeTime = time() + $lifeTime;
-        }
-        return $this->couchbase->set($id, $data, (int) $lifeTime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        return $this->couchbase->delete($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        return $this->couchbase->flush();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        $stats   = $this->couchbase->getStats();
-        $servers = $this->couchbase->getServers();
-        $server  = explode(":", $servers[0]);
-        $key     = $server[0] . ":" . "11210";
-        $stats   = $stats[$key];
-        return array(
-            Cache::STATS_HITS   => $stats['get_hits'],
-            Cache::STATS_MISSES => $stats['get_misses'],
-            Cache::STATS_UPTIME => $stats['uptime'],
-            Cache::STATS_MEMORY_USAGE     => $stats['bytes'],
-            Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'],
-        );
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php
deleted file mode 100644
index 9ad3ce2..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php
+++ /dev/null
@@ -1,237 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Base file cache driver.
- *
- * @since  2.3
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- */
-abstract class FileCache extends CacheProvider
-{
-    /**
-     * The cache directory.
-     *
-     * @var string
-     */
-    protected $directory;
-
-    /**
-     * The cache file extension.
-     *
-     * @var string
-     */
-    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;
-
-    /**
-     * Constructor.
-     *
-     * @param string $directory The cache directory.
-     * @param string $extension The cache file extension.
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function __construct($directory, $extension = '', $umask = 0002)
-    {
-        // YES, this needs to be *before* createPathIfNeeded()
-        if ( ! is_int($umask)) {
-            throw new \InvalidArgumentException(sprintf(
-                'The umask parameter is required to be integer, was: %s',
-                gettype($umask)
-            ));
-        }
-        $this->umask = $umask;
-
-        if ( ! $this->createPathIfNeeded($directory)) {
-            throw new \InvalidArgumentException(sprintf(
-                'The directory "%s" does not exist and could not be created.',
-                $directory
-            ));
-        }
-
-        if ( ! is_writable($directory)) {
-            throw new \InvalidArgumentException(sprintf(
-                'The directory "%s" is not writable.',
-                $directory
-            ));
-        }
-
-        // YES, this needs to be *after* createPathIfNeeded()
-        $this->directory = realpath($directory);
-        $this->extension = (string) $extension;
-    }
-
-    /**
-     * Gets the cache directory.
-     *
-     * @return string
-     */
-    public function getDirectory()
-    {
-        return $this->directory;
-    }
-
-    /**
-     * Gets the cache file extension.
-     *
-     * @return string|null
-     */
-    public function getExtension()
-    {
-        return $this->extension;
-    }
-
-    /**
-     * @param string $id
-     *
-     * @return string
-     */
-    protected function getFilename($id)
-    {
-        return $this->directory
-            . DIRECTORY_SEPARATOR
-            . implode(str_split(hash('sha256', $id), 2), DIRECTORY_SEPARATOR)
-            . DIRECTORY_SEPARATOR
-            . preg_replace($this->disallowedCharacterPatterns, $this->replacementCharacters, $id)
-            . $this->extension;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        return @unlink($this->getFilename($id));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        foreach ($this->getIterator() as $name => $file) {
-            @unlink($name);
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        $usage = 0;
-        foreach ($this->getIterator() as $file) {
-            $usage += $file->getSize();
-        }
-
-        $free = disk_free_space($this->directory);
-
-        return array(
-            Cache::STATS_HITS               => null,
-            Cache::STATS_MISSES             => null,
-            Cache::STATS_UPTIME             => null,
-            Cache::STATS_MEMORY_USAGE       => $usage,
-            Cache::STATS_MEMORY_AVAILABLE   => $free,
-        );
-    }
-
-    /**
-     * Create path if needed.
-     *
-     * @param string $path
-     * @return bool TRUE on success or if path already exists, FALSE if path cannot be created.
-     */
-    private function createPathIfNeeded($path)
-    {
-        if ( ! is_dir($path)) {
-            if (false === @mkdir($path, 0777 & (~$this->umask), true) && !is_dir($path)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Writes a string content to file in an atomic way.
-     *
-     * @param string $filename Path to the file where to write the data.
-     * @param string $content  The content to write
-     *
-     * @return bool TRUE on success, FALSE if path cannot be created, if path is not writable or an any other error.
-     */
-    protected function writeFile($filename, $content)
-    {
-        $filepath = pathinfo($filename, PATHINFO_DIRNAME);
-
-        if ( ! $this->createPathIfNeeded($filepath)) {
-            return false;
-        }
-
-        if ( ! is_writable($filepath)) {
-            return false;
-        }
-
-        $tmpFile = tempnam($filepath, 'swap');
-        @chmod($tmpFile, 0666 & (~$this->umask));
-
-        if (file_put_contents($tmpFile, $content) !== false) {
-            if (@rename($tmpFile, $filename)) {
-                return true;
-            }
-
-            @unlink($tmpFile);
-        }
-
-        return false;
-    }
-
-    /**
-     * @return \Iterator
-     */
-    private function getIterator()
-    {
-        return new \RegexIterator(
-            new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->directory)),
-            '/^.+' . preg_quote($this->extension, '/') . '$/i'
-        );
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php
deleted file mode 100644
index 29d5e07..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Filesystem cache driver.
- *
- * @since  2.3
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- */
-class FilesystemCache extends FileCache
-{
-    const EXTENSION = '.doctrinecache.data';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct($directory, $extension = self::EXTENSION, $umask = 0002)
-    {
-        parent::__construct($directory, $extension, $umask);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        $data     = '';
-        $lifetime = -1;
-        $filename = $this->getFilename($id);
-
-        if ( ! is_file($filename)) {
-            return false;
-        }
-
-        $resource = fopen($filename, "r");
-
-        if (false !== ($line = fgets($resource))) {
-            $lifetime = (integer) $line;
-        }
-
-        if ($lifetime !== 0 && $lifetime < time()) {
-            fclose($resource);
-
-            return false;
-        }
-
-        while (false !== ($line = fgets($resource))) {
-            $data .= $line;
-        }
-
-        fclose($resource);
-
-        return unserialize($data);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        $lifetime = -1;
-        $filename = $this->getFilename($id);
-
-        if ( ! is_file($filename)) {
-            return false;
-        }
-
-        $resource = fopen($filename, "r");
-
-        if (false !== ($line = fgets($resource))) {
-            $lifetime = (integer) $line;
-        }
-
-        fclose($resource);
-
-        return $lifetime === 0 || $lifetime > time();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        if ($lifeTime > 0) {
-            $lifeTime = time() + $lifeTime;
-        }
-
-        $data      = serialize($data);
-        $filename  = $this->getFilename($id);
-
-        return $this->writeFile($filename, $lifeTime . PHP_EOL . $data);
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php
deleted file mode 100644
index e4e606b..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Interface for cache that can be flushed.
- *
- * @link   www.doctrine-project.org
- * @since  1.4
- * @author Adirelle <adirelle@gmail.com>
- */
-interface FlushableCache
-{
-    /**
-     * Flushes all cache entries, globally.
-     *
-     * @return boolean 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
deleted file mode 100644
index c5098fd..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-use \Memcache;
-
-/**
- * Memcache cache provider.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author David Abdemoulaie <dave@hobodave.com>
- */
-class MemcacheCache extends CacheProvider
-{
-    /**
-     * @var Memcache|null
-     */
-    private $memcache;
-
-    /**
-     * Sets the memcache instance to use.
-     *
-     * @param Memcache $memcache
-     *
-     * @return void
-     */
-    public function setMemcache(Memcache $memcache)
-    {
-        $this->memcache = $memcache;
-    }
-
-    /**
-     * Gets the memcache instance used by the cache.
-     *
-     * @return Memcache|null
-     */
-    public function getMemcache()
-    {
-        return $this->memcache;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        return $this->memcache->get($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        $flags = null;
-        $this->memcache->get($id, $flags);
-        
-        //if memcache has changed the value of "flags", it means the value exists
-        return ($flags !== null);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        if ($lifeTime > 30 * 24 * 3600) {
-            $lifeTime = time() + $lifeTime;
-        }
-        return $this->memcache->set($id, $data, 0, (int) $lifeTime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        return $this->memcache->delete($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        return $this->memcache->flush();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        $stats = $this->memcache->getStats();
-        return array(
-            Cache::STATS_HITS   => $stats['get_hits'],
-            Cache::STATS_MISSES => $stats['get_misses'],
-            Cache::STATS_UPTIME => $stats['uptime'],
-            Cache::STATS_MEMORY_USAGE     => $stats['bytes'],
-            Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'],
-        );
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php
deleted file mode 100644
index 040c26c..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-use \Memcached;
-
-/**
- * Memcached cache provider.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author David Abdemoulaie <dave@hobodave.com>
- */
-class MemcachedCache extends CacheProvider
-{
-    /**
-     * @var Memcached|null
-     */
-    private $memcached;
-
-    /**
-     * Sets the memcache instance to use.
-     *
-     * @param Memcached $memcached
-     *
-     * @return void
-     */
-    public function setMemcached(Memcached $memcached)
-    {
-        $this->memcached = $memcached;
-    }
-
-    /**
-     * Gets the memcached instance used by the cache.
-     *
-     * @return Memcached|null
-     */
-    public function getMemcached()
-    {
-        return $this->memcached;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        return $this->memcached->get($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetchMultiple(array $keys)
-    {
-        return $this->memcached->getMulti($keys);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        return (false !== $this->memcached->get($id));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        if ($lifeTime > 30 * 24 * 3600) {
-            $lifeTime = time() + $lifeTime;
-        }
-        return $this->memcached->set($id, $data, (int) $lifeTime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        return $this->memcached->delete($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        return $this->memcached->flush();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        $stats   = $this->memcached->getStats();
-        $servers = $this->memcached->getServerList();
-        $key     = $servers[0]['host'] . ':' . $servers[0]['port'];
-        $stats   = $stats[$key];
-        return array(
-            Cache::STATS_HITS   => $stats['get_hits'],
-            Cache::STATS_MISSES => $stats['get_misses'],
-            Cache::STATS_UPTIME => $stats['uptime'],
-            Cache::STATS_MEMORY_USAGE     => $stats['bytes'],
-            Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'],
-        );
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
deleted file mode 100644
index 0c7ac0a..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
+++ /dev/null
@@ -1,191 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-use MongoBinData;
-use MongoCollection;
-use MongoDate;
-
-/**
- * MongoDB cache provider.
- *
- * @since  1.1
- * @author Jeremy Mikola <jmikola@gmail.com>
- */
-class MongoDBCache extends CacheProvider
-{
-    /**
-     * The data field will store the serialized PHP value.
-     */
-    const DATA_FIELD = 'd';
-
-    /**
-     * The expiration field will store a MongoDate value indicating when the
-     * 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.
-     * 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.
-     *
-     * The cache provider will also check dates on its own, in case expired
-     * entries are fetched before MongoDB's TTLMonitor pass can expire them.
-     *
-     * @see http://docs.mongodb.org/manual/tutorial/expire-data/
-     */
-    const EXPIRATION_FIELD = 'e';
-
-    /**
-     * @var MongoCollection
-     */
-    private $collection;
-
-    /**
-     * Constructor.
-     *
-     * This provider will default to the write concern and read preference
-     * options set on the MongoCollection instance (or inherited from MongoDB or
-     * MongoClient). Using an unacknowledged write concern (< 1) may make the
-     * return values of delete() and save() unreliable. Reading from secondaries
-     * may make contain() and fetch() unreliable.
-     *
-     * @see http://www.php.net/manual/en/mongo.readpreferences.php
-     * @see http://www.php.net/manual/en/mongo.writeconcerns.php
-     * @param MongoCollection $collection
-     */
-    public function __construct(MongoCollection $collection)
-    {
-        $this->collection = $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        $document = $this->collection->findOne(array('_id' => $id), array(self::DATA_FIELD, self::EXPIRATION_FIELD));
-
-        if ($document === null) {
-            return false;
-        }
-
-        if ($this->isExpired($document)) {
-            $this->doDelete($id);
-            return false;
-        }
-
-        return unserialize($document[self::DATA_FIELD]->bin);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        $document = $this->collection->findOne(array('_id' => $id), array(self::EXPIRATION_FIELD));
-
-        if ($document === null) {
-            return false;
-        }
-
-        if ($this->isExpired($document)) {
-            $this->doDelete($id);
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        $result = $this->collection->update(
-            array('_id' => $id),
-            array('$set' => array(
-                self::EXPIRATION_FIELD => ($lifeTime > 0 ? new MongoDate(time() + $lifeTime) : null),
-                self::DATA_FIELD => new MongoBinData(serialize($data), MongoBinData::BYTE_ARRAY),
-            )),
-            array('upsert' => true, 'multiple' => false)
-        );
-
-        return isset($result['ok']) ? $result['ok'] == 1 : true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        $result = $this->collection->remove(array('_id' => $id));
-
-        return isset($result['n']) ? $result['n'] == 1 : true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        // Use remove() in lieu of drop() to maintain any collection indexes
-        $result = $this->collection->remove();
-
-        return isset($result['ok']) ? $result['ok'] == 1 : true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        $serverStatus = $this->collection->db->command(array(
-            'serverStatus' => 1,
-            'locks' => 0,
-            'metrics' => 0,
-            'recordStats' => 0,
-            'repl' => 0,
-        ));
-
-        $collStats = $this->collection->db->command(array('collStats' => 1));
-
-        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_MEMORY_AVAILABLE  => null,
-        );
-    }
-
-    /**
-     * Check if the document is expired.
-     *
-     * @param array $document
-     * @return boolean
-     */
-    private function isExpired(array $document)
-    {
-        return isset($document[self::EXPIRATION_FIELD]) &&
-            $document[self::EXPIRATION_FIELD] instanceof MongoDate &&
-            $document[self::EXPIRATION_FIELD]->sec < time();
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php
deleted file mode 100644
index df7146d..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Interface for cache drivers that allows to get many items at once.
- *
- * @link   www.doctrine-project.org
- * @since  1.4
- * @author Asmir Mustafic <goetas@gmail.com>
- */
-interface MultiGetCache
-{
-    /**
-     * Returns an associative array of values for keys is found in cache.
-     *
-     * @param string[] $keys Array of keys to retrieve from cache
-     * @return mixed[] Array of retrieved values, indexed by the specified keys.
-     *                 Values that couldn't be retrieved are not contained in this array.
-     */
-    function fetchMultiple(array $keys);
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php
deleted file mode 100644
index 5e75196..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Php file cache driver.
- *
- * @since  2.3
- * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
- */
-class PhpFileCache extends FileCache
-{
-    const EXTENSION = '.doctrinecache.php';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct($directory, $extension = self::EXTENSION, $umask = 0002)
-    {
-        parent::__construct($directory, $extension, $umask);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        $value = $this->includeFileForId($id);
-
-        if (! $value) {
-            return false;
-        }
-
-        if ($value['lifetime'] !== 0 && $value['lifetime'] < time()) {
-            return false;
-        }
-
-        return $value['data'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        $value = $this->includeFileForId($id);
-
-        if (! $value) {
-            return false;
-        }
-
-        return $value['lifetime'] === 0 || $value['lifetime'] > time();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        if ($lifeTime > 0) {
-            $lifeTime = time() + $lifeTime;
-        }
-
-        if (is_object($data) && ! method_exists($data, '__set_state')) {
-            throw new \InvalidArgumentException(
-                "Invalid argument given, PhpFileCache only allows objects that implement __set_state() " .
-                "and fully support var_export(). You can use the FilesystemCache to save arbitrary object " .
-                "graphs using serialize()/deserialize()."
-            );
-        }
-
-        $filename  = $this->getFilename($id);
-
-        $value = array(
-            'lifetime'  => $lifeTime,
-            'data'      => $data
-        );
-
-        $value  = var_export($value, true);
-        $code   = sprintf('<?php return %s;', $value);
-
-        return $this->writeFile($filename, $code);
-    }
-
-    /**
-     * @param string $id
-     *
-     * @return array|false
-     */
-    private function includeFileForId($id)
-    {
-        $fileName = $this->getFilename($id);
-
-        // note: error suppression is still faster than `file_exists`, `is_file` and `is_readable`
-        $value = @include $fileName;
-
-        if (! isset($value['lifetime'])) {
-            return false;
-        }
-
-        return $value;
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php
deleted file mode 100644
index 823477e..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-namespace Doctrine\Common\Cache;
-
-use Predis\Client;
-
-/**
- * Predis cache provider.
- *
- * @author othillo <othillo@othillo.nl>
- */
-class PredisCache extends CacheProvider
-{
-    /**
-     * @var Client
-     */
-    private $client;
-
-    /**
-     * @param Client $client
-     *
-     * @return void
-     */
-    public function __construct(Client $client)
-    {
-        $this->client = $client;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        $result = $this->client->get($id);
-        if (null === $result) {
-            return false;
-        }
-
-        return unserialize($result);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    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)));
-    }
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        return $this->client->exists($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        $data = serialize($data);
-        if ($lifeTime > 0) {
-            $response = $this->client->setex($id, $lifeTime, $data);
-        } else {
-            $response = $this->client->set($id, $data);
-        }
-
-        return $response === true || $response == 'OK';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        return $this->client->del($id) > 0;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        $response = $this->client->flushdb();
-
-        return $response === true || $response == 'OK';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        $info = $this->client->info();
-
-        return array(
-            Cache::STATS_HITS              => $info['Stats']['keyspace_hits'],
-            Cache::STATS_MISSES            => $info['Stats']['keyspace_misses'],
-            Cache::STATS_UPTIME            => $info['Server']['uptime_in_seconds'],
-            Cache::STATS_MEMORY_USAGE      => $info['Memory']['used_memory'],
-            Cache::STATS_MEMORY_AVAILABLE  => false
-        );
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
deleted file mode 100644
index 50d7c91..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-use Redis;
-
-/**
- * Redis cache provider.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Osman Ungur <osmanungur@gmail.com>
- */
-class RedisCache extends CacheProvider
-{
-    /**
-     * @var Redis|null
-     */
-    private $redis;
-
-    /**
-     * Sets the redis instance to use.
-     *
-     * @param Redis $redis
-     *
-     * @return void
-     */
-    public function setRedis(Redis $redis)
-    {
-        $redis->setOption(Redis::OPT_SERIALIZER, $this->getSerializerValue());
-        $this->redis = $redis;
-    }
-
-    /**
-     * Gets the redis instance used by the cache.
-     *
-     * @return Redis|null
-     */
-    public function getRedis()
-    {
-        return $this->redis;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        return $this->redis->get($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetchMultiple(array $keys)
-    {
-        return array_filter(array_combine($keys, $this->redis->mget($keys)));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        return $this->redis->exists($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        if ($lifeTime > 0) {
-            return $this->redis->setex($id, $lifeTime, $data);
-        }
-
-        return $this->redis->set($id, $data);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        return $this->redis->delete($id) > 0;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        return $this->redis->flushDB();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        $info = $this->redis->info();
-        return array(
-            Cache::STATS_HITS   => $info['keyspace_hits'],
-            Cache::STATS_MISSES => $info['keyspace_misses'],
-            Cache::STATS_UPTIME => $info['uptime_in_seconds'],
-            Cache::STATS_MEMORY_USAGE      => $info['used_memory'],
-            Cache::STATS_MEMORY_AVAILABLE  => false
-        );
-    }
-
-    /**
-     * Returns the serializer constant to use. If Redis is compiled with
-     * igbinary support, that is used. Otherwise the default PHP serializer is
-     * used.
-     *
-     * @return integer One of the Redis::SERIALIZER_* constants
-     */
-    protected function getSerializerValue()
-    {
-        if (defined('HHVM_VERSION')) {
-            return Redis::SERIALIZER_PHP;
-        }
-        return defined('Redis::SERIALIZER_IGBINARY') ? Redis::SERIALIZER_IGBINARY : Redis::SERIALIZER_PHP;
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php
deleted file mode 100644
index 8bb6b4b..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php
+++ /dev/null
@@ -1,250 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-use Riak\Bucket;
-use Riak\Connection;
-use Riak\Input;
-use Riak\Exception;
-use Riak\Object;
-
-/**
- * Riak cache provider.
- *
- * @link   www.doctrine-project.org
- * @since  1.1
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- */
-class RiakCache extends CacheProvider
-{
-    const EXPIRES_HEADER = 'X-Riak-Meta-Expires';
-
-    /**
-     * @var \Riak\Bucket
-     */
-    private $bucket;
-
-    /**
-     * Sets the riak bucket instance to use.
-     *
-     * @param \Riak\Bucket $bucket
-     */
-    public function __construct(Bucket $bucket)
-    {
-        $this->bucket = $bucket;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        try {
-            $response = $this->bucket->get($id);
-
-            // No objects found
-            if ( ! $response->hasObject()) {
-                return false;
-            }
-
-            // Check for attempted siblings
-            $object = ($response->hasSiblings())
-                ? $this->resolveConflict($id, $response->getVClock(), $response->getObjectList())
-                : $response->getFirstObject();
-
-            // Check for expired object
-            if ($this->isExpired($object)) {
-                $this->bucket->delete($object);
-
-                return false;
-            }
-
-            return unserialize($object->getContent());
-        } catch (Exception\RiakException $e) {
-            // Covers:
-            // - Riak\ConnectionException
-            // - Riak\CommunicationException
-            // - Riak\UnexpectedResponseException
-            // - Riak\NotFoundException
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        try {
-            // We only need the HEAD, not the entire object
-            $input = new Input\GetInput();
-
-            $input->setReturnHead(true);
-
-            $response = $this->bucket->get($id, $input);
-
-            // No objects found
-            if ( ! $response->hasObject()) {
-                return false;
-            }
-
-            $object = $response->getFirstObject();
-
-            // Check for expired object
-            if ($this->isExpired($object)) {
-                $this->bucket->delete($object);
-
-                return false;
-            }
-
-            return true;
-        } catch (Exception\RiakException $e) {
-            // Do nothing
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        try {
-            $object = new Object($id);
-
-            $object->setContent(serialize($data));
-
-            if ($lifeTime > 0) {
-                $object->addMetadata(self::EXPIRES_HEADER, (string) (time() + $lifeTime));
-            }
-
-            $this->bucket->put($object);
-
-            return true;
-        } catch (Exception\RiakException $e) {
-            // Do nothing
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        try {
-            $this->bucket->delete($id);
-
-            return true;
-        } catch (Exception\BadArgumentsException $e) {
-            // Key did not exist on cluster already
-        } catch (Exception\RiakException $e) {
-            // Covers:
-            // - Riak\Exception\ConnectionException
-            // - Riak\Exception\CommunicationException
-            // - Riak\Exception\UnexpectedResponseException
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        try {
-            $keyList = $this->bucket->getKeyList();
-
-            foreach ($keyList as $key) {
-                $this->bucket->delete($key);
-            }
-
-            return true;
-        } catch (Exception\RiakException $e) {
-            // Do nothing
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        // Only exposed through HTTP stats API, not Protocol Buffers API
-        return null;
-    }
-
-    /**
-     * Check if a given Riak Object have expired.
-     *
-     * @param \Riak\Object $object
-     *
-     * @return boolean
-     */
-    private function isExpired(Object $object)
-    {
-        $metadataMap = $object->getMetadataMap();
-
-        return isset($metadataMap[self::EXPIRES_HEADER])
-            && $metadataMap[self::EXPIRES_HEADER] < time();
-    }
-
-    /**
-     * On-read conflict resolution. Applied approach here is last write wins.
-     * Specific needs may override this method to apply alternate conflict resolutions.
-     *
-     * {@internal Riak does not attempt to resolve a write conflict, and store
-     * it as sibling of conflicted one. By following this approach, it is up to
-     * the next read to resolve the conflict. When this happens, your fetched
-     * object will have a list of siblings (read as a list of objects).
-     * In our specific case, we do not care about the intermediate ones since
-     * they are all the same read from storage, and we do apply a last sibling
-     * (last write) wins logic.
-     * If by any means our resolution generates another conflict, it'll up to
-     * next read to properly solve it.}
-     *
-     * @param string $id
-     * @param string $vClock
-     * @param array  $objectList
-     *
-     * @return \Riak\Object
-     */
-    protected function resolveConflict($id, $vClock, array $objectList)
-    {
-        // Our approach here is last-write wins
-        $winner = $objectList[count($objectList)];
-
-        $putInput = new Input\PutInput();
-        $putInput->setVClock($vClock);
-
-        $mergedObject = new Object($id);
-        $mergedObject->setContent($winner->getContent());
-
-        $this->bucket->put($mergedObject, $putInput);
-
-        return $mergedObject;
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php
deleted file mode 100644
index b12978c..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php
+++ /dev/null
@@ -1,219 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-use SQLite3;
-use SQLite3Result;
-
-/**
- * SQLite3 cache provider.
- *
- * @since  1.4
- * @author Jake Bell <jake@theunraveler.com>
- */
-class SQLite3Cache extends CacheProvider
-{
-    /**
-     * The ID field will store the cache key.
-     */
-    const ID_FIELD = 'k';
-
-    /**
-     * The data field will store the serialized PHP value.
-     */
-    const DATA_FIELD = 'd';
-
-    /**
-     * The expiration field will store a date value indicating when the
-     * cache entry should expire.
-     */
-    const EXPIRATION_FIELD = 'e';
-
-    /**
-     * @var SQLite3
-     */
-    private $sqlite;
-
-    /**
-     * @var string
-     */
-    private $table;
-
-    /**
-     * Constructor.
-     *
-     * Calling the constructor will ensure that the database file and table 
-     * exist and will create both if they don't.
-     *
-     * @param SQLite3 $sqlite
-     * @param string $table
-     */
-    public function __construct(SQLite3 $sqlite, $table)
-    {
-        $this->sqlite = $sqlite;
-        $this->table  = (string) $table;
-
-        list($id, $data, $exp) = $this->getFields();
-
-        return $this->sqlite->exec(sprintf(
-            'CREATE TABLE IF NOT EXISTS %s(%s TEXT PRIMARY KEY NOT NULL, %s BLOB, %s INTEGER)',
-            $table,
-            $id,
-            $data,
-            $exp
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        if ($item = $this->findById($id)) {
-            return unserialize($item[self::DATA_FIELD]);
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        return (boolean) $this->findById($id, false);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        $statement = $this->sqlite->prepare(sprintf(
-            'INSERT OR REPLACE INTO %s (%s) VALUES (:id, :data, :expire)',
-            $this->table,
-            implode(',', $this->getFields())
-        ));
-
-        $statement->bindValue(':id', $id);
-        $statement->bindValue(':data', serialize($data), SQLITE3_BLOB);
-        $statement->bindValue(':expire', $lifeTime > 0 ? time() + $lifeTime : null);
-
-        return $statement->execute() instanceof SQLite3Result;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        list($idField) = $this->getFields();
-
-        $statement = $this->sqlite->prepare(sprintf(
-            'DELETE FROM %s WHERE %s = :id',
-            $this->table,
-            $idField
-        ));
-
-        $statement->bindValue(':id', $id);
-
-        return $statement->execute() instanceof SQLite3Result;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        return $this->sqlite->exec(sprintf('DELETE FROM %s', $this->table));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        // no-op.
-    }
-
-    /**
-     * Find a single row by ID.
-     *
-     * @param mixed $id
-     * @param boolean $includeData
-     *
-     * @return array|null
-     */
-    private function findById($id, $includeData = true)
-    {
-        list($idField) = $fields = $this->getFields();
-
-        if (!$includeData) {
-            $key = array_search(static::DATA_FIELD, $fields);
-            unset($fields[$key]);
-        }
-
-        $statement = $this->sqlite->prepare(sprintf(
-            'SELECT %s FROM %s WHERE %s = :id LIMIT 1',
-            implode(',', $fields),
-            $this->table,
-            $idField
-        ));
-
-        $statement->bindValue(':id', $id, SQLITE3_TEXT);
-
-        $item = $statement->execute()->fetchArray(SQLITE3_ASSOC);
-
-        if ($item === false) {
-            return null;
-        }
-
-        if ($this->isExpired($item)) {
-            $this->doDelete($id);
-
-            return null;
-        }
-
-        return $item;
-    }
-
-    /**
-     * Gets an array of the fields in our table.
-     *
-     * @return array
-     */
-    private function getFields()
-    {
-        return array(static::ID_FIELD, static::DATA_FIELD, static::EXPIRATION_FIELD);
-    }
-
-    /**
-     * Check if the item is expired.
-     *
-     * @param array $item
-     * @return boolean
-     */
-    private function isExpired(array $item)
-    {
-        return isset($item[static::EXPIRATION_FIELD]) &&
-            $item[self::EXPIRATION_FIELD] !== null &&
-            $item[self::EXPIRATION_FIELD] < time();
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php
deleted file mode 100644
index d742fa0..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-class Version
-{
-    const VERSION = '1.4.0-DEV';
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/VoidCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/VoidCache.php
deleted file mode 100644
index 65e8456..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/VoidCache.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Void cache driver. The cache could be of use in tests where you don`t need to cache anything.
- *
- * @link   www.doctrine-project.org
- * @since  1.5
- * @author Kotlyar Maksim <kotlyar.maksim@gmail.com>
- */
-class VoidCache extends CacheProvider
-{
-    /**
-     * {@inheritDoc}
-     */
-    protected function doFetch($id)
-    {
-        return false;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doContains($id)
-    {
-        return false;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doDelete($id)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doFlush()
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function doGetStats()
-    {
-        return;
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php
deleted file mode 100644
index ae32772..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * WinCache cache provider.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author David Abdemoulaie <dave@hobodave.com>
- */
-class WinCacheCache extends CacheProvider
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        return wincache_ucache_get($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        return wincache_ucache_exists($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        return (bool) wincache_ucache_set($id, $data, (int) $lifeTime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        return wincache_ucache_delete($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        return wincache_ucache_clear();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        $info    = wincache_ucache_info();
-        $meminfo = wincache_ucache_meminfo();
-
-        return array(
-            Cache::STATS_HITS             => $info['total_hit_count'],
-            Cache::STATS_MISSES           => $info['total_miss_count'],
-            Cache::STATS_UPTIME           => $info['total_cache_uptime'],
-            Cache::STATS_MEMORY_USAGE     => $meminfo['memory_total'],
-            Cache::STATS_MEMORY_AVAILABLE => $meminfo['memory_free'],
-        );
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php
deleted file mode 100644
index a2c4ca5..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Xcache cache driver.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author David Abdemoulaie <dave@hobodave.com>
- */
-class XcacheCache extends CacheProvider
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        return $this->doContains($id) ? unserialize(xcache_get($id)) : false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        return xcache_isset($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        return xcache_set($id, serialize($data), (int) $lifeTime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        return xcache_unset($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        $this->checkAuthorization();
-
-        xcache_clear_cache(XC_TYPE_VAR);
-
-        return true;
-    }
-
-    /**
-     * Checks that xcache.admin.enable_auth is Off.
-     *
-     * @return void
-     *
-     * @throws \BadMethodCallException When xcache.admin.enable_auth is On.
-     */
-    protected function checkAuthorization()
-    {
-        if (ini_get('xcache.admin.enable_auth')) {
-            throw new \BadMethodCallException(
-                'To use all features of \Doctrine\Common\Cache\XcacheCache, '
-                . 'you must set "xcache.admin.enable_auth" to "Off" in your php.ini.'
-            );
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        $this->checkAuthorization();
-
-        $info = xcache_info(XC_TYPE_VAR, 0);
-        return array(
-            Cache::STATS_HITS   => $info['hits'],
-            Cache::STATS_MISSES => $info['misses'],
-            Cache::STATS_UPTIME => null,
-            Cache::STATS_MEMORY_USAGE      => $info['size'],
-            Cache::STATS_MEMORY_AVAILABLE  => $info['avail'],
-        );
-    }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php
deleted file mode 100644
index 6e35ac8..0000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Cache;
-
-/**
- * Zend Data Cache cache driver.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Ralph Schindler <ralph.schindler@zend.com>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- */
-class ZendDataCache extends CacheProvider
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFetch($id)
-    {
-        return zend_shm_cache_fetch($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doContains($id)
-    {
-        return (false !== zend_shm_cache_fetch($id));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doSave($id, $data, $lifeTime = 0)
-    {
-        return zend_shm_cache_store($id, $data, $lifeTime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doDelete($id)
-    {
-        return zend_shm_cache_delete($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doFlush()
-    {
-        $namespace = $this->getNamespace();
-        if (empty($namespace)) {
-            return zend_shm_cache_clear();
-        }
-        return zend_shm_cache_clear($namespace);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doGetStats()
-    {
-        return null;
-    }
-}
diff --git a/vendor/doctrine/cache/phpunit.xml.dist b/vendor/doctrine/cache/phpunit.xml.dist
deleted file mode 100644
index 34d7f4c..0000000
--- a/vendor/doctrine/cache/phpunit.xml.dist
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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"
->
-    <testsuites>
-        <testsuite name="Doctrine Cache Test Suite">
-            <directory>./tests/Doctrine/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./lib/Doctrine/</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/doctrine/collections/.gitignore b/vendor/doctrine/collections/.gitignore
deleted file mode 100644
index 48b8bf9..0000000
--- a/vendor/doctrine/collections/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-vendor/
diff --git a/vendor/doctrine/collections/.travis.yml b/vendor/doctrine/collections/.travis.yml
deleted file mode 100644
index 60f4792..0000000
--- a/vendor/doctrine/collections/.travis.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-language: php
-
-php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-  - hhvm-nightly
-
-matrix:
-  fast_finish: true
-  allow_failures:
-    - php: 7.0
-
-before_script:
-    - composer --prefer-source install
-
-script:
-    - phpunit
diff --git a/vendor/doctrine/collections/LICENSE b/vendor/doctrine/collections/LICENSE
deleted file mode 100644
index 5e781fc..0000000
--- a/vendor/doctrine/collections/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006-2013 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
-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/doctrine/collections/README.md b/vendor/doctrine/collections/README.md
deleted file mode 100644
index 161cab6..0000000
--- a/vendor/doctrine/collections/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Doctrine Collections
-
-[![Build Status](https://travis-ci.org/doctrine/collections.svg?branch=master)](https://travis-ci.org/doctrine/collections)
-
-Collections Abstraction library
-
-## Changelog
-
-### v1.3.0
-
-* [Explicit casting of first and max results in criteria API](https://github.com/doctrine/collections/pull/26)
-* [Keep keys when using `ArrayCollection#matching()` with sorting](https://github.com/doctrine/collections/pull/49)
-* [Made `AbstractLazyCollection#$initialized` protected for extensibility](https://github.com/doctrine/collections/pull/52)
-
-### v1.2.0
-
-* Add a new ``AbstractLazyCollection``
-
-### v1.1.0
-
-* Deprecated ``Comparison::IS``, because it's only there for SQL semantics.
-  These are fixed in the ORM instead.
-* Add ``Comparison::CONTAINS`` to perform partial string matches:
-
-        $criteria->andWhere($criteria->expr()->contains('property', 'Foo'));
diff --git a/vendor/doctrine/collections/composer.json b/vendor/doctrine/collections/composer.json
deleted file mode 100644
index 155cac4..0000000
--- a/vendor/doctrine/collections/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "name": "doctrine/collections",
-    "type": "library",
-    "description": "Collections Abstraction library",
-    "keywords": ["collections", "array", "iterator"],
-    "homepage": "http://www.doctrine-project.org",
-    "license": "MIT",
-    "authors": [
-        {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
-        {"name": "Roman Borschel", "email": "roman@code-factory.org"},
-        {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
-        {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
-        {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
-    ],
-    "require": {
-        "php": ">=5.3.2"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.0"
-    },
-    "autoload": {
-        "psr-0": { "Doctrine\\Common\\Collections\\": "lib/" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.2.x-dev"
-        }
-    }
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/AbstractLazyCollection.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/AbstractLazyCollection.php
deleted file mode 100644
index b907f8b..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/AbstractLazyCollection.php
+++ /dev/null
@@ -1,343 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections;
-
-use Closure;
-
-/**
- * Lazy collection that is backed by a concrete collection
- *
- * @author Michaël Gallego <mic.gallego@gmail.com>
- * @since  1.2
- */
-abstract class AbstractLazyCollection implements Collection
-{
-    /**
-     * The backed collection to use
-     *
-     * @var Collection
-     */
-    protected $collection;
-
-    /**
-     * @var boolean
-     */
-    protected $initialized = false;
-
-    /**
-     * {@inheritDoc}
-     */
-    public function count()
-    {
-        $this->initialize();
-        return $this->collection->count();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function add($element)
-    {
-        $this->initialize();
-        return $this->collection->add($element);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function clear()
-    {
-        $this->initialize();
-        $this->collection->clear();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function contains($element)
-    {
-        $this->initialize();
-        return $this->collection->contains($element);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isEmpty()
-    {
-        $this->initialize();
-        return $this->collection->isEmpty();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function remove($key)
-    {
-        $this->initialize();
-        return $this->collection->remove($key);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function removeElement($element)
-    {
-        $this->initialize();
-        return $this->collection->removeElement($element);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function containsKey($key)
-    {
-        $this->initialize();
-        return $this->collection->containsKey($key);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function get($key)
-    {
-        $this->initialize();
-        return $this->collection->get($key);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getKeys()
-    {
-        $this->initialize();
-        return $this->collection->getKeys();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getValues()
-    {
-        $this->initialize();
-        return $this->collection->getValues();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function set($key, $value)
-    {
-        $this->initialize();
-        $this->collection->set($key, $value);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function toArray()
-    {
-        $this->initialize();
-        return $this->collection->toArray();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function first()
-    {
-        $this->initialize();
-        return $this->collection->first();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function last()
-    {
-        $this->initialize();
-        return $this->collection->last();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function key()
-    {
-        $this->initialize();
-        return $this->collection->key();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function current()
-    {
-        $this->initialize();
-        return $this->collection->current();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function next()
-    {
-        $this->initialize();
-        return $this->collection->next();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function exists(Closure $p)
-    {
-        $this->initialize();
-        return $this->collection->exists($p);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function filter(Closure $p)
-    {
-        $this->initialize();
-        return $this->collection->filter($p);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function forAll(Closure $p)
-    {
-        $this->initialize();
-        return $this->collection->forAll($p);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function map(Closure $func)
-    {
-        $this->initialize();
-        return $this->collection->map($func);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function partition(Closure $p)
-    {
-        $this->initialize();
-        return $this->collection->partition($p);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function indexOf($element)
-    {
-        $this->initialize();
-        return $this->collection->indexOf($element);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function slice($offset, $length = null)
-    {
-        $this->initialize();
-        return $this->collection->slice($offset, $length);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getIterator()
-    {
-        $this->initialize();
-        return $this->collection->getIterator();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function offsetExists($offset)
-    {
-        $this->initialize();
-        return $this->collection->offsetExists($offset);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function offsetGet($offset)
-    {
-        $this->initialize();
-        return $this->collection->offsetGet($offset);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function offsetSet($offset, $value)
-    {
-        $this->initialize();
-        $this->collection->offsetSet($offset, $value);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function offsetUnset($offset)
-    {
-        $this->initialize();
-        $this->collection->offsetUnset($offset);
-    }
-
-    /**
-     * Is the lazy collection already initialized?
-     *
-     * @return bool
-     */
-    public function isInitialized()
-    {
-        return $this->initialized;
-    }
-
-    /**
-     * Initialize the collection
-     *
-     * @return void
-     */
-    protected function initialize()
-    {
-        if ( ! $this->initialized) {
-            $this->doInitialize();
-            $this->initialized = true;
-        }
-    }
-
-    /**
-     * Do the initialization logic
-     *
-     * @return void
-     */
-    abstract protected function doInitialize();
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ArrayCollection.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ArrayCollection.php
deleted file mode 100644
index bce5751..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ArrayCollection.php
+++ /dev/null
@@ -1,387 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections;
-
-use ArrayIterator;
-use Closure;
-use Doctrine\Common\Collections\Expr\ClosureExpressionVisitor;
-
-/**
- * An ArrayCollection is a Collection implementation that wraps a regular PHP array.
- *
- * @since  2.0
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-class ArrayCollection implements Collection, Selectable
-{
-    /**
-     * An array containing the entries of this collection.
-     *
-     * @var array
-     */
-    private $elements;
-
-    /**
-     * Initializes a new ArrayCollection.
-     *
-     * @param array $elements
-     */
-    public function __construct(array $elements = array())
-    {
-        $this->elements = $elements;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function toArray()
-    {
-        return $this->elements;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function first()
-    {
-        return reset($this->elements);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function last()
-    {
-        return end($this->elements);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function key()
-    {
-        return key($this->elements);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function next()
-    {
-        return next($this->elements);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function current()
-    {
-        return current($this->elements);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function remove($key)
-    {
-        if ( ! isset($this->elements[$key]) && ! array_key_exists($key, $this->elements)) {
-            return null;
-        }
-
-        $removed = $this->elements[$key];
-        unset($this->elements[$key]);
-
-        return $removed;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function removeElement($element)
-    {
-        $key = array_search($element, $this->elements, true);
-
-        if ($key === false) {
-            return false;
-        }
-
-        unset($this->elements[$key]);
-
-        return true;
-    }
-
-    /**
-     * Required by interface ArrayAccess.
-     *
-     * {@inheritDoc}
-     */
-    public function offsetExists($offset)
-    {
-        return $this->containsKey($offset);
-    }
-
-    /**
-     * Required by interface ArrayAccess.
-     *
-     * {@inheritDoc}
-     */
-    public function offsetGet($offset)
-    {
-        return $this->get($offset);
-    }
-
-    /**
-     * Required by interface ArrayAccess.
-     *
-     * {@inheritDoc}
-     */
-    public function offsetSet($offset, $value)
-    {
-        if ( ! isset($offset)) {
-            return $this->add($value);
-        }
-
-        $this->set($offset, $value);
-    }
-
-    /**
-     * Required by interface ArrayAccess.
-     *
-     * {@inheritDoc}
-     */
-    public function offsetUnset($offset)
-    {
-        return $this->remove($offset);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function containsKey($key)
-    {
-        return isset($this->elements[$key]) || array_key_exists($key, $this->elements);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function contains($element)
-    {
-        return in_array($element, $this->elements, true);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function exists(Closure $p)
-    {
-        foreach ($this->elements as $key => $element) {
-            if ($p($key, $element)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function indexOf($element)
-    {
-        return array_search($element, $this->elements, true);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function get($key)
-    {
-        return isset($this->elements[$key]) ? $this->elements[$key] : null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getKeys()
-    {
-        return array_keys($this->elements);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getValues()
-    {
-        return array_values($this->elements);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function count()
-    {
-        return count($this->elements);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function set($key, $value)
-    {
-        $this->elements[$key] = $value;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function add($value)
-    {
-        $this->elements[] = $value;
-
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isEmpty()
-    {
-        return empty($this->elements);
-    }
-
-    /**
-     * Required by interface IteratorAggregate.
-     *
-     * {@inheritDoc}
-     */
-    public function getIterator()
-    {
-        return new ArrayIterator($this->elements);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function map(Closure $func)
-    {
-        return new static(array_map($func, $this->elements));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function filter(Closure $p)
-    {
-        return new static(array_filter($this->elements, $p));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function forAll(Closure $p)
-    {
-        foreach ($this->elements as $key => $element) {
-            if ( ! $p($key, $element)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function partition(Closure $p)
-    {
-        $matches = $noMatches = array();
-
-        foreach ($this->elements as $key => $element) {
-            if ($p($key, $element)) {
-                $matches[$key] = $element;
-            } else {
-                $noMatches[$key] = $element;
-            }
-        }
-
-        return array(new static($matches), new static($noMatches));
-    }
-
-    /**
-     * Returns a string representation of this object.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return __CLASS__ . '@' . spl_object_hash($this);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function clear()
-    {
-        $this->elements = array();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function slice($offset, $length = null)
-    {
-        return array_slice($this->elements, $offset, $length, true);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function matching(Criteria $criteria)
-    {
-        $expr     = $criteria->getWhereExpression();
-        $filtered = $this->elements;
-
-        if ($expr) {
-            $visitor  = new ClosureExpressionVisitor();
-            $filter   = $visitor->dispatch($expr);
-            $filtered = array_filter($filtered, $filter);
-        }
-
-        if ($orderings = $criteria->getOrderings()) {
-            foreach (array_reverse($orderings) as $field => $ordering) {
-                $next = ClosureExpressionVisitor::sortByField($field, $ordering == Criteria::DESC ? -1 : 1);
-            }
-
-            uasort($filtered, $next);
-        }
-
-        $offset = $criteria->getFirstResult();
-        $length = $criteria->getMaxResults();
-
-        if ($offset || $length) {
-            $filtered = array_slice($filtered, (int)$offset, $length);
-        }
-
-        return new static($filtered);
-    }
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Collection.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Collection.php
deleted file mode 100644
index 8792f7a..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Collection.php
+++ /dev/null
@@ -1,263 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections;
-
-use ArrayAccess;
-use Closure;
-use Countable;
-use IteratorAggregate;
-
-/**
- * The missing (SPL) Collection/Array/OrderedMap interface.
- *
- * A Collection resembles the nature of a regular PHP array. That is,
- * it is essentially an <b>ordered map</b> that can also be used
- * like a list.
- *
- * A Collection has an internal iterator just like a PHP array. In addition,
- * a Collection can be iterated with external iterators, which is preferable.
- * To use an external iterator simply use the foreach language construct to
- * iterate over the collection (which calls {@link getIterator()} internally) or
- * explicitly retrieve an iterator though {@link getIterator()} which can then be
- * used to iterate over the collection.
- * You can not rely on the internal iterator of the collection being at a certain
- * position unless you explicitly positioned it before. Prefer iteration with
- * external iterators.
- *
- * @since  2.0
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-interface Collection extends Countable, IteratorAggregate, ArrayAccess
-{
-    /**
-     * Adds an element at the end of the collection.
-     *
-     * @param mixed $element The element to add.
-     *
-     * @return boolean Always TRUE.
-     */
-    public function add($element);
-
-    /**
-     * Clears the collection, removing all elements.
-     *
-     * @return void
-     */
-    public function clear();
-
-    /**
-     * Checks whether an element is contained in the collection.
-     * This is an O(n) operation, where n is the size of the collection.
-     *
-     * @param mixed $element The element to search for.
-     *
-     * @return boolean TRUE if the collection contains the element, FALSE otherwise.
-     */
-    public function contains($element);
-
-    /**
-     * Checks whether the collection is empty (contains no elements).
-     *
-     * @return boolean TRUE if the collection is empty, FALSE otherwise.
-     */
-    public function isEmpty();
-
-    /**
-     * Removes the element at the specified index from the collection.
-     *
-     * @param string|integer $key The kex/index of the element to remove.
-     *
-     * @return mixed The removed element or NULL, if the collection did not contain the element.
-     */
-    public function remove($key);
-
-    /**
-     * Removes the specified element from the collection, if it is found.
-     *
-     * @param mixed $element The element to remove.
-     *
-     * @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
-     */
-    public function removeElement($element);
-
-    /**
-     * Checks whether the collection contains an element with the specified key/index.
-     *
-     * @param string|integer $key The key/index to check for.
-     *
-     * @return boolean TRUE if the collection contains an element with the specified key/index,
-     *                 FALSE otherwise.
-     */
-    public function containsKey($key);
-
-    /**
-     * Gets the element at the specified key/index.
-     *
-     * @param string|integer $key The key/index of the element to retrieve.
-     *
-     * @return mixed
-     */
-    public function get($key);
-
-    /**
-     * Gets all keys/indices of the collection.
-     *
-     * @return array The keys/indices of the collection, in the order of the corresponding
-     *               elements in the collection.
-     */
-    public function getKeys();
-
-    /**
-     * Gets all values of the collection.
-     *
-     * @return array The values of all elements in the collection, in the order they
-     *               appear in the collection.
-     */
-    public function getValues();
-
-    /**
-     * Sets an element in the collection at the specified key/index.
-     *
-     * @param string|integer $key   The key/index of the element to set.
-     * @param mixed          $value The element to set.
-     *
-     * @return void
-     */
-    public function set($key, $value);
-
-    /**
-     * Gets a native PHP array representation of the collection.
-     *
-     * @return array
-     */
-    public function toArray();
-
-    /**
-     * Sets the internal iterator to the first element in the collection and returns this element.
-     *
-     * @return mixed
-     */
-    public function first();
-
-    /**
-     * Sets the internal iterator to the last element in the collection and returns this element.
-     *
-     * @return mixed
-     */
-    public function last();
-
-    /**
-     * Gets the key/index of the element at the current iterator position.
-     *
-     * @return int|string
-     */
-    public function key();
-
-    /**
-     * Gets the element of the collection at the current iterator position.
-     *
-     * @return mixed
-     */
-    public function current();
-
-    /**
-     * Moves the internal iterator position to the next element and returns this element.
-     *
-     * @return mixed
-     */
-    public function next();
-
-    /**
-     * Tests for the existence of an element that satisfies the given predicate.
-     *
-     * @param Closure $p The predicate.
-     *
-     * @return boolean TRUE if the predicate is TRUE for at least one element, FALSE otherwise.
-     */
-    public function exists(Closure $p);
-
-    /**
-     * Returns all the elements of this collection that satisfy the predicate p.
-     * The order of the elements is preserved.
-     *
-     * @param Closure $p The predicate used for filtering.
-     *
-     * @return Collection A collection with the results of the filter operation.
-     */
-    public function filter(Closure $p);
-
-    /**
-     * Tests whether the given predicate p holds for all elements of this collection.
-     *
-     * @param Closure $p The predicate.
-     *
-     * @return boolean TRUE, if the predicate yields TRUE for all elements, FALSE otherwise.
-     */
-    public function forAll(Closure $p);
-
-    /**
-     * Applies the given function to each element in the collection and returns
-     * a new collection with the elements returned by the function.
-     *
-     * @param Closure $func
-     *
-     * @return Collection
-     */
-    public function map(Closure $func);
-
-    /**
-     * Partitions this collection in two collections according to a predicate.
-     * Keys are preserved in the resulting collections.
-     *
-     * @param Closure $p The predicate on which to partition.
-     *
-     * @return array An array with two elements. The first element contains the collection
-     *               of elements where the predicate returned TRUE, the second element
-     *               contains the collection of elements where the predicate returned FALSE.
-     */
-    public function partition(Closure $p);
-
-    /**
-     * Gets the index/key of a given element. The comparison of two elements is strict,
-     * that means not only the value but also the type must match.
-     * For objects this means reference equality.
-     *
-     * @param mixed $element The element to search for.
-     *
-     * @return int|string|bool The key/index of the element or FALSE if the element was not found.
-     */
-    public function indexOf($element);
-
-    /**
-     * Extracts a slice of $length elements starting at position $offset from the Collection.
-     *
-     * If $length is null it returns all elements from $offset to the end of the Collection.
-     * Keys have to be preserved by this method. Calling this method will only return the
-     * selected slice and NOT change the elements contained in the collection slice is called on.
-     *
-     * @param int      $offset The offset to start from.
-     * @param int|null $length The maximum number of elements to return, or null for no limit.
-     *
-     * @return array
-     */
-    public function slice($offset, $length = null);
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Criteria.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Criteria.php
deleted file mode 100644
index 3f9d43a..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Criteria.php
+++ /dev/null
@@ -1,259 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections;
-
-use Doctrine\Common\Collections\Expr\Expression;
-use Doctrine\Common\Collections\Expr\CompositeExpression;
-
-/**
- * Criteria for filtering Selectable collections.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @since 2.3
- */
-class Criteria
-{
-    /**
-     * @var string
-     */
-    const ASC  = 'ASC';
-
-    /**
-     * @var string
-     */
-    const DESC = 'DESC';
-
-    /**
-     * @var \Doctrine\Common\Collections\ExpressionBuilder|null
-     */
-    private static $expressionBuilder;
-
-    /**
-     * @var \Doctrine\Common\Collections\Expr\Expression|null
-     */
-    private $expression;
-
-    /**
-     * @var string[]
-     */
-    private $orderings = array();
-
-    /**
-     * @var int|null
-     */
-    private $firstResult;
-
-    /**
-     * @var int|null
-     */
-    private $maxResults;
-
-    /**
-     * Creates an instance of the class.
-     *
-     * @return Criteria
-     */
-    public static function create()
-    {
-        return new static();
-    }
-
-    /**
-     * Returns the expression builder.
-     *
-     * @return \Doctrine\Common\Collections\ExpressionBuilder
-     */
-    public static function expr()
-    {
-        if (self::$expressionBuilder === null) {
-            self::$expressionBuilder = new ExpressionBuilder();
-        }
-
-        return self::$expressionBuilder;
-    }
-
-    /**
-     * Construct a new Criteria.
-     *
-     * @param Expression    $expression
-     * @param string[]|null $orderings
-     * @param int|null      $firstResult
-     * @param int|null      $maxResults
-     */
-    public function __construct(Expression $expression = null, array $orderings = null, $firstResult = null, $maxResults = null)
-    {
-        $this->expression = $expression;
-
-        $this->setFirstResult($firstResult);
-        $this->setMaxResults($maxResults);
-
-        if (null !== $orderings) {
-            $this->orderBy($orderings);
-        }
-    }
-
-    /**
-     * Sets the where expression to evaluate when this Criteria is searched for.
-     *
-     * @param Expression $expression
-     *
-     * @return Criteria
-     */
-    public function where(Expression $expression)
-    {
-        $this->expression = $expression;
-
-        return $this;
-    }
-
-    /**
-     * Appends the where expression to evaluate when this Criteria is searched for
-     * using an AND with previous expression.
-     *
-     * @param Expression $expression
-     *
-     * @return Criteria
-     */
-    public function andWhere(Expression $expression)
-    {
-        if ($this->expression === null) {
-            return $this->where($expression);
-        }
-
-        $this->expression = new CompositeExpression(CompositeExpression::TYPE_AND, array(
-            $this->expression, $expression
-        ));
-
-        return $this;
-    }
-
-    /**
-     * Appends the where expression to evaluate when this Criteria is searched for
-     * using an OR with previous expression.
-     *
-     * @param Expression $expression
-     *
-     * @return Criteria
-     */
-    public function orWhere(Expression $expression)
-    {
-        if ($this->expression === null) {
-            return $this->where($expression);
-        }
-
-        $this->expression = new CompositeExpression(CompositeExpression::TYPE_OR, array(
-            $this->expression, $expression
-        ));
-
-        return $this;
-    }
-
-    /**
-     * Gets the expression attached to this Criteria.
-     *
-     * @return Expression|null
-     */
-    public function getWhereExpression()
-    {
-        return $this->expression;
-    }
-
-    /**
-     * Gets the current orderings of this Criteria.
-     *
-     * @return string[]
-     */
-    public function getOrderings()
-    {
-        return $this->orderings;
-    }
-
-    /**
-     * Sets the ordering of the result of this Criteria.
-     *
-     * Keys are field and values are the order, being either ASC or DESC.
-     *
-     * @see Criteria::ASC
-     * @see Criteria::DESC
-     *
-     * @param string[] $orderings
-     *
-     * @return Criteria
-     */
-    public function orderBy(array $orderings)
-    {
-        $this->orderings = array_map(
-            function ($ordering) {
-                return strtoupper($ordering) === Criteria::ASC ? Criteria::ASC : Criteria::DESC;
-            },
-            $orderings
-        );
-
-        return $this;
-    }
-
-    /**
-     * Gets the current first result option of this Criteria.
-     *
-     * @return int|null
-     */
-    public function getFirstResult()
-    {
-        return $this->firstResult;
-    }
-
-    /**
-     * Set the number of first result that this Criteria should return.
-     *
-     * @param int|null $firstResult The value to set.
-     *
-     * @return Criteria
-     */
-    public function setFirstResult($firstResult)
-    {
-        $this->firstResult = null === $firstResult ? null : (int) $firstResult;
-
-        return $this;
-    }
-
-    /**
-     * Gets maxResults.
-     *
-     * @return int|null
-     */
-    public function getMaxResults()
-    {
-        return $this->maxResults;
-    }
-
-    /**
-     * Sets maxResults.
-     *
-     * @param int|null $maxResults The value to set.
-     *
-     * @return Criteria
-     */
-    public function setMaxResults($maxResults)
-    {
-        $this->maxResults = null === $maxResults ? null : (int) $maxResults;
-
-        return $this;
-    }
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ClosureExpressionVisitor.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ClosureExpressionVisitor.php
deleted file mode 100644
index 994085f..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ClosureExpressionVisitor.php
+++ /dev/null
@@ -1,227 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections\Expr;
-
-/**
- * Walks an expression graph and turns it into a PHP closure.
- *
- * This closure can be used with {@Collection#filter()} and is used internally
- * by {@ArrayCollection#select()}.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @since  2.3
- */
-class ClosureExpressionVisitor extends ExpressionVisitor
-{
-    /**
-     * Accesses the field of a given object. This field has to be public
-     * directly or indirectly (through an accessor get*, is*, or a magic
-     * method, __get, __call).
-     *
-     * @param object $object
-     * @param string $field
-     *
-     * @return mixed
-     */
-    public static function getObjectFieldValue($object, $field)
-    {
-        if (is_array($object)) {
-            return $object[$field];
-        }
-
-        $accessors = array('get', 'is');
-
-        foreach ($accessors as $accessor) {
-            $accessor .= $field;
-
-            if ( ! method_exists($object, $accessor)) {
-                continue;
-            }
-
-            return $object->$accessor();
-        }
-
-        // __call should be triggered for get.
-        $accessor = $accessors[0] . $field;
-
-        if (method_exists($object, '__call')) {
-            return $object->$accessor();
-        }
-
-        if ($object instanceof \ArrayAccess) {
-            return $object[$field];
-        }
-
-        return $object->$field;
-    }
-
-    /**
-     * Helper for sorting arrays of objects based on multiple fields + orientations.
-     *
-     * @param string   $name
-     * @param int      $orientation
-     * @param \Closure $next
-     *
-     * @return \Closure
-     */
-    public static function sortByField($name, $orientation = 1, \Closure $next = null)
-    {
-        if ( ! $next) {
-            $next = function() {
-                return 0;
-            };
-        }
-
-        return function ($a, $b) use ($name, $next, $orientation) {
-            $aValue = ClosureExpressionVisitor::getObjectFieldValue($a, $name);
-            $bValue = ClosureExpressionVisitor::getObjectFieldValue($b, $name);
-
-            if ($aValue === $bValue) {
-                return $next($a, $b);
-            }
-
-            return (($aValue > $bValue) ? 1 : -1) * $orientation;
-        };
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function walkComparison(Comparison $comparison)
-    {
-        $field = $comparison->getField();
-        $value = $comparison->getValue()->getValue(); // shortcut for walkValue()
-
-        switch ($comparison->getOperator()) {
-            case Comparison::EQ:
-                return function ($object) use ($field, $value) {
-                    return ClosureExpressionVisitor::getObjectFieldValue($object, $field) === $value;
-                };
-
-            case Comparison::NEQ:
-                return function ($object) use ($field, $value) {
-                    return ClosureExpressionVisitor::getObjectFieldValue($object, $field) !== $value;
-                };
-
-            case Comparison::LT:
-                return function ($object) use ($field, $value) {
-                    return ClosureExpressionVisitor::getObjectFieldValue($object, $field) < $value;
-                };
-
-            case Comparison::LTE:
-                return function ($object) use ($field, $value) {
-                    return ClosureExpressionVisitor::getObjectFieldValue($object, $field) <= $value;
-                };
-
-            case Comparison::GT:
-                return function ($object) use ($field, $value) {
-                    return ClosureExpressionVisitor::getObjectFieldValue($object, $field) > $value;
-                };
-
-            case Comparison::GTE:
-                return function ($object) use ($field, $value) {
-                    return ClosureExpressionVisitor::getObjectFieldValue($object, $field) >= $value;
-                };
-
-            case Comparison::IN:
-                return function ($object) use ($field, $value) {
-                    return in_array(ClosureExpressionVisitor::getObjectFieldValue($object, $field), $value);
-                };
-
-            case Comparison::NIN:
-                return function ($object) use ($field, $value) {
-                    return ! in_array(ClosureExpressionVisitor::getObjectFieldValue($object, $field), $value);
-                };
-
-            case Comparison::CONTAINS:
-                return function ($object) use ($field, $value) {
-                    return false !== strpos(ClosureExpressionVisitor::getObjectFieldValue($object, $field), $value);
-                };
-
-            default:
-                throw new \RuntimeException("Unknown comparison operator: " . $comparison->getOperator());
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function walkValue(Value $value)
-    {
-        return $value->getValue();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function walkCompositeExpression(CompositeExpression $expr)
-    {
-        $expressionList = array();
-
-        foreach ($expr->getExpressionList() as $child) {
-            $expressionList[] = $this->dispatch($child);
-        }
-
-        switch($expr->getType()) {
-            case CompositeExpression::TYPE_AND:
-                return $this->andExpressions($expressionList);
-
-            case CompositeExpression::TYPE_OR:
-                return $this->orExpressions($expressionList);
-
-            default:
-                throw new \RuntimeException("Unknown composite " . $expr->getType());
-        }
-    }
-
-    /**
-     * @param array $expressions
-     *
-     * @return callable
-     */
-    private function andExpressions($expressions)
-    {
-        return function ($object) use ($expressions) {
-            foreach ($expressions as $expression) {
-                if ( ! $expression($object)) {
-                    return false;
-                }
-            }
-            return true;
-        };
-    }
-
-    /**
-     * @param array $expressions
-     *
-     * @return callable
-     */
-    private function orExpressions($expressions)
-    {
-        return function ($object) use ($expressions) {
-            foreach ($expressions as $expression) {
-                if ($expression($object)) {
-                    return true;
-                }
-            }
-            return false;
-        };
-    }
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Comparison.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Comparison.php
deleted file mode 100644
index d54ecf2..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Comparison.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections\Expr;
-
-/**
- * Comparison of a field with a value by the given operator.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @since  2.3
- */
-class Comparison implements Expression
-{
-    const EQ        = '=';
-    const NEQ       = '<>';
-    const LT        = '<';
-    const LTE       = '<=';
-    const GT        = '>';
-    const GTE       = '>=';
-    const IS        = '='; // no difference with EQ
-    const IN        = 'IN';
-    const NIN       = 'NIN';
-    const CONTAINS  = 'CONTAINS';
-
-    /**
-     * @var string
-     */
-    private $field;
-
-    /**
-     * @var string
-     */
-    private $op;
-
-    /**
-     * @var Value
-     */
-    private $value;
-
-    /**
-     * @param string $field
-     * @param string $operator
-     * @param mixed  $value
-     */
-    public function __construct($field, $operator, $value)
-    {
-        if ( ! ($value instanceof Value)) {
-            $value = new Value($value);
-        }
-
-        $this->field = $field;
-        $this->op = $operator;
-        $this->value = $value;
-    }
-
-    /**
-     * @return string
-     */
-    public function getField()
-    {
-        return $this->field;
-    }
-
-    /**
-     * @return Value
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * @return string
-     */
-    public function getOperator()
-    {
-        return $this->op;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function visit(ExpressionVisitor $visitor)
-    {
-        return $visitor->walkComparison($this);
-    }
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/CompositeExpression.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/CompositeExpression.php
deleted file mode 100644
index 3613c02..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/CompositeExpression.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections\Expr;
-
-/**
- * Expression of Expressions combined by AND or OR operation.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @since  2.3
- */
-class CompositeExpression implements Expression
-{
-    const TYPE_AND = 'AND';
-    const TYPE_OR = 'OR';
-
-    /**
-     * @var string
-     */
-    private $type;
-
-    /**
-     * @var Expression[]
-     */
-    private $expressions = array();
-
-    /**
-     * @param string $type
-     * @param array  $expressions
-     *
-     * @throws \RuntimeException
-     */
-    public function __construct($type, array $expressions)
-    {
-        $this->type = $type;
-
-        foreach ($expressions as $expr) {
-            if ($expr instanceof Value) {
-                throw new \RuntimeException("Values are not supported expressions as children of and/or expressions.");
-            }
-            if ( ! ($expr instanceof Expression)) {
-                throw new \RuntimeException("No expression given to CompositeExpression.");
-            }
-
-            $this->expressions[] = $expr;
-        }
-    }
-
-    /**
-     * Returns the list of expressions nested in this composite.
-     *
-     * @return Expression[]
-     */
-    public function getExpressionList()
-    {
-        return $this->expressions;
-    }
-
-    /**
-     * @return string
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function visit(ExpressionVisitor $visitor)
-    {
-        return $visitor->walkCompositeExpression($this);
-    }
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Expression.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Expression.php
deleted file mode 100644
index 68db767..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Expression.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections\Expr;
-
-/**
- * Expression for the {@link Selectable} interface.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-interface Expression
-{
-    /**
-     * @param ExpressionVisitor $visitor
-     *
-     * @return mixed
-     */
-    public function visit(ExpressionVisitor $visitor);
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ExpressionVisitor.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ExpressionVisitor.php
deleted file mode 100644
index 080afdc..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ExpressionVisitor.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections\Expr;
-
-/**
- * An Expression visitor walks a graph of expressions and turns them into a
- * query for the underlying implementation.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-abstract class ExpressionVisitor
-{
-    /**
-     * Converts a comparison expression into the target query language output.
-     *
-     * @param Comparison $comparison
-     *
-     * @return mixed
-     */
-    abstract public function walkComparison(Comparison $comparison);
-
-    /**
-     * Converts a value expression into the target query language part.
-     *
-     * @param Value $value
-     *
-     * @return mixed
-     */
-    abstract public function walkValue(Value $value);
-
-    /**
-     * Converts a composite expression into the target query language output.
-     *
-     * @param CompositeExpression $expr
-     *
-     * @return mixed
-     */
-    abstract public function walkCompositeExpression(CompositeExpression $expr);
-
-    /**
-     * Dispatches walking an expression to the appropriate handler.
-     *
-     * @param Expression $expr
-     *
-     * @return mixed
-     *
-     * @throws \RuntimeException
-     */
-    public function dispatch(Expression $expr)
-    {
-        switch (true) {
-            case ($expr instanceof Comparison):
-                return $this->walkComparison($expr);
-
-            case ($expr instanceof Value):
-                return $this->walkValue($expr);
-
-            case ($expr instanceof CompositeExpression):
-                return $this->walkCompositeExpression($expr);
-
-            default:
-                throw new \RuntimeException("Unknown Expression " . get_class($expr));
-        }
-    }
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Value.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Value.php
deleted file mode 100644
index 7f6e831..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Value.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections\Expr;
-
-class Value implements Expression
-{
-    /**
-     * @var mixed
-     */
-    private $value;
-
-    /**
-     * @param mixed $value
-     */
-    public function __construct($value)
-    {
-        $this->value = $value;
-    }
-
-    /**
-     * @return mixed
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function visit(ExpressionVisitor $visitor)
-    {
-        return $visitor->walkValue($this);
-    }
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ExpressionBuilder.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ExpressionBuilder.php
deleted file mode 100644
index 6539e3c..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ExpressionBuilder.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections;
-
-use Doctrine\Common\Collections\Expr\Comparison;
-use Doctrine\Common\Collections\Expr\CompositeExpression;
-use Doctrine\Common\Collections\Expr\Value;
-
-/**
- * Builder for Expressions in the {@link Selectable} interface.
- *
- * Important Notice for interoperable code: You have to use scalar
- * values only for comparisons, otherwise the behavior of the comparision
- * may be different between implementations (Array vs ORM vs ODM).
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @since  2.3
- */
-class ExpressionBuilder
-{
-    /**
-     * @param mixed $x
-     *
-     * @return CompositeExpression
-     */
-    public function andX($x = null)
-    {
-        return new CompositeExpression(CompositeExpression::TYPE_AND, func_get_args());
-    }
-
-    /**
-     * @param mixed $x
-     *
-     * @return CompositeExpression
-     */
-    public function orX($x = null)
-    {
-        return new CompositeExpression(CompositeExpression::TYPE_OR, func_get_args());
-    }
-
-    /**
-     * @param string $field
-     * @param mixed  $value
-     *
-     * @return Comparison
-     */
-    public function eq($field, $value)
-    {
-        return new Comparison($field, Comparison::EQ, new Value($value));
-    }
-
-    /**
-     * @param string $field
-     * @param mixed  $value
-     *
-     * @return Comparison
-     */
-    public function gt($field, $value)
-    {
-        return new Comparison($field, Comparison::GT, new Value($value));
-    }
-
-    /**
-     * @param string $field
-     * @param mixed  $value
-     *
-     * @return Comparison
-     */
-    public function lt($field, $value)
-    {
-        return new Comparison($field, Comparison::LT, new Value($value));
-    }
-
-    /**
-     * @param string $field
-     * @param mixed  $value
-     *
-     * @return Comparison
-     */
-    public function gte($field, $value)
-    {
-        return new Comparison($field, Comparison::GTE, new Value($value));
-    }
-
-    /**
-     * @param string $field
-     * @param mixed  $value
-     *
-     * @return Comparison
-     */
-    public function lte($field, $value)
-    {
-        return new Comparison($field, Comparison::LTE, new Value($value));
-    }
-
-    /**
-     * @param string $field
-     * @param mixed  $value
-     *
-     * @return Comparison
-     */
-    public function neq($field, $value)
-    {
-        return new Comparison($field, Comparison::NEQ, new Value($value));
-    }
-
-    /**
-     * @param string $field
-     *
-     * @return Comparison
-     */
-    public function isNull($field)
-    {
-        return new Comparison($field, Comparison::EQ, new Value(null));
-    }
-
-    /**
-     * @param string $field
-     * @param mixed  $values
-     *
-     * @return Comparison
-     */
-    public function in($field, array $values)
-    {
-        return new Comparison($field, Comparison::IN, new Value($values));
-    }
-
-    /**
-     * @param string $field
-     * @param mixed  $values
-     *
-     * @return Comparison
-     */
-    public function notIn($field, array $values)
-    {
-        return new Comparison($field, Comparison::NIN, new Value($values));
-    }
-
-    /**
-     * @param string $field
-     * @param mixed  $value
-     *
-     * @return Comparison
-     */
-    public function contains($field, $value)
-    {
-        return new Comparison($field, Comparison::CONTAINS, new Value($value));
-    }
-}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Selectable.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Selectable.php
deleted file mode 100644
index 57660ed..0000000
--- a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Selectable.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Collections;
-
-/**
- * Interface for collections that allow efficient filtering with an expression API.
- *
- * Goal of this interface is a backend independent method to fetch elements
- * from a collections. {@link Expression} is crafted in a way that you can
- * implement queries from both in-memory and database-backed collections.
- *
- * For database backed collections this allows very efficient access by
- * utilizing the query APIs, for example SQL in the ORM. Applications using
- * this API can implement efficient database access without having to ask the
- * EntityManager or Repositories.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @since  2.3
- */
-interface Selectable
-{
-    /**
-     * Selects all elements from a selectable that match the expression and
-     * returns a new collection containing these elements.
-     *
-     * @param Criteria $criteria
-     *
-     * @return Collection
-     */
-    public function matching(Criteria $criteria);
-}
diff --git a/vendor/doctrine/collections/phpunit.xml.dist b/vendor/doctrine/collections/phpunit.xml.dist
deleted file mode 100644
index 36968e9..0000000
--- a/vendor/doctrine/collections/phpunit.xml.dist
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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"
->
-    <testsuites>
-        <testsuite name="Doctrine Collections Test Suite">
-            <directory>./tests/Doctrine/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./lib/Doctrine/</directory>
-        </whitelist>
-    </filter>
-    
-    <groups>
-        <exclude>
-            <group>performance</group>
-        </exclude>
-    </groups>
-</phpunit>
diff --git a/vendor/doctrine/common/.gitignore b/vendor/doctrine/common/.gitignore
deleted file mode 100644
index b15c686..0000000
--- a/vendor/doctrine/common/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-build/
-logs/
-reports/
-dist/
-tests/Doctrine/Tests/Common/Proxy/generated/
-vendor/
-.idea
-composer.lock
-doctrine-common-*.tar
-doctrine-common-*.tar.gz
diff --git a/vendor/doctrine/common/.gitmodules b/vendor/doctrine/common/.gitmodules
deleted file mode 100644
index 51f0843..0000000
--- a/vendor/doctrine/common/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "lib/vendor/doctrine-build-common"]
-	path = lib/vendor/doctrine-build-common
-	url = git://github.com/doctrine/doctrine-build-common.git
diff --git a/vendor/doctrine/common/.travis.yml b/vendor/doctrine/common/.travis.yml
deleted file mode 100644
index 9c20a84..0000000
--- a/vendor/doctrine/common/.travis.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-language: php
-
-sudo: false
-
-cache:
-  directory:
-    - $HOME/.composer/cache
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-before_script:
-  - composer --prefer-source install
-
-script:
-  - ./vendor/bin/phpunit
-
-matrix:
-  allow_failures:
-    - php: 7.0
diff --git a/vendor/doctrine/common/LICENSE b/vendor/doctrine/common/LICENSE
deleted file mode 100644
index 4a91f0b..0000000
--- a/vendor/doctrine/common/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006-2012 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
-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/doctrine/common/README.md b/vendor/doctrine/common/README.md
deleted file mode 100644
index 30a080f..0000000
--- a/vendor/doctrine/common/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Doctrine Common
-
-[![Build Status](https://secure.travis-ci.org/doctrine/common.png)](http://travis-ci.org/doctrine/common)
-
-The Doctrine Common project is a library that provides extensions to core PHP functionality.
-
-## More resources:
-
-* [Website](http://www.doctrine-project.org)
-* [Documentation](http://docs.doctrine-project.org/projects/doctrine-common/en/latest/)
-* [Issue Tracker](http://www.doctrine-project.org/jira/browse/DCOM)
-* [Downloads](http://github.com/doctrine/common/downloads)
diff --git a/vendor/doctrine/common/UPGRADE_TO_2_1 b/vendor/doctrine/common/UPGRADE_TO_2_1
deleted file mode 100644
index 891a2e5..0000000
--- a/vendor/doctrine/common/UPGRADE_TO_2_1
+++ /dev/null
@@ -1,39 +0,0 @@
-This document details all the possible changes that you should investigate when updating
-your project from Doctrine Common 2.0.x to 2.1
-
-## AnnotationReader changes
-
-The annotation reader was heavily refactored between 2.0 and 2.1-RC1. In theory the operation of the new reader should be backwards compatible, but it has to be setup differently to work that way:
-
-    $reader = new \Doctrine\Common\Annotations\AnnotationReader();
-    $reader->setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\');
-    // new code necessary starting here
-    $reader->setIgnoreNotImportedAnnotations(true);
-    $reader->setEnableParsePhpImports(false);
-    $reader = new \Doctrine\Common\Annotations\CachedReader(
-        new \Doctrine\Common\Annotations\IndexedReader($reader), new ArrayCache()
-    );
-
-## Annotation Base class or @Annotation
-
-Beginning after 2.1-RC2 you have to either extend ``Doctrine\Common\Annotations\Annotation`` or add @Annotation to your annotations class-level docblock, otherwise the class will simply be ignored.
-
-## Removed methods on AnnotationReader
-
-* AnnotationReader::setAutoloadAnnotations()
-* AnnotationReader::getAutoloadAnnotations()
-* AnnotationReader::isAutoloadAnnotations()
-
-## AnnotationRegistry
-
-Autoloading through the PHP autoloader is removed from the 2.1 AnnotationReader. Instead you have to use the global AnnotationRegistry for loading purposes:
-
-    \Doctrine\Common\Annotations\AnnotationRegistry::registerFile($fileWithAnnotations);
-    \Doctrine\Common\Annotations\AnnotationRegistry::registerAutoloadNamespace($namespace, $dirs = null);
-    \Doctrine\Common\Annotations\AnnotationRegistry::registerAutoloadNamespaces($namespaces);
-    \Doctrine\Common\Annotations\AnnotationRegistry::registerLoader($callable);
-
-The $callable for registering a loader accepts a class as first and only parameter and must try to silently autoload it. On success true has to be returned.
-The registerAutoloadNamespace function registers a PSR-0 compatible silent autoloader for all classes with the given namespace in the given directories.
-If null is passed as directory the include path will be used.
-
diff --git a/vendor/doctrine/common/UPGRADE_TO_2_2 b/vendor/doctrine/common/UPGRADE_TO_2_2
deleted file mode 100644
index 1d93a13..0000000
--- a/vendor/doctrine/common/UPGRADE_TO_2_2
+++ /dev/null
@@ -1,61 +0,0 @@
-This document details all the possible changes that you should investigate when 
-updating your project from Doctrine Common 2.1 to 2.2:
-
-## Annotation Changes
-
-- AnnotationReader::setIgnoreNotImportedAnnotations has been removed, you need to 
-  add ignore annotation names which are supposed to be ignored via
-  AnnotationReader::addGlobalIgnoredName
-  
-- AnnotationReader::setAutoloadAnnotations was deprecated by the AnnotationRegistry
-  in 2.1 and has been removed in 2.2
-
-- AnnotationReader::setEnableParsePhpImports was added to ease transition to the new
-  annotation mechanism in 2.1 and is removed in 2.2
-
-- AnnotationReader::isParsePhpImportsEnabled is removed (see above)
-
-- AnnotationReader::setDefaultAnnotationNamespace was deprecated in favor of explicit
-  configuration in 2.1 and will be removed in 2.2 (for isolated projects where you
-  have full-control over _all_ available annotations, we offer a dedicated reader
-  class ``SimpleAnnotationReader``)
-
-- AnnotationReader::setAnnotationCreationFunction was deprecated in 2.1 and will be
-  removed in 2.2. We only offer two creation mechanisms which cannot be changed
-  anymore to allow the same reader instance to work with all annotations regardless
-  of which library they are coming from.
-  
-- AnnotationReader::setAnnotationNamespaceAlias was deprecated in 2.1 and will be
-  removed in 2.2 (see setDefaultAnnotationNamespace)
-
-- If you use a class as annotation which has not the @Annotation marker in it's 
-  class block, we will now throw an exception instead of silently ignoring it. You
-  can however still achieve the previous behavior using the @IgnoreAnnotation, or
-  AnnotationReader::addGlobalIgnoredName (the exception message will contain detailed
-  instructions when you run into this problem).
-
-## Cache Changes
-  
-- Renamed old AbstractCache to CacheProvider
-
-- Dropped the support to the following functions of all cache providers:
-
- - CacheProvider::deleteByWildcard
-
- - CacheProvider::deleteByRegEx
-
- - CacheProvider::deleteByPrefix
-
- - CacheProvider::deleteBySuffix
-
-- CacheProvider::deleteAll will not remove ALL entries, it will only mark them as invalid
-
-- CacheProvider::flushAll will remove ALL entries, namespaced or not
-
-- Added support to MemcachedCache
-
-- Added support to WincacheCache
-
-## ClassLoader Changes
-
-- ClassLoader::fileExistsInIncludePath() no longer exists. Use the native stream_resolve_include_path() PHP function
\ No newline at end of file
diff --git a/vendor/doctrine/common/build.properties b/vendor/doctrine/common/build.properties
deleted file mode 100644
index ef51d20..0000000
--- a/vendor/doctrine/common/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Version class and file
-project.version_class = Doctrine\\Common\\Version
-project.version_file = lib/Doctrine/Common/Version.php
diff --git a/vendor/doctrine/common/build.xml b/vendor/doctrine/common/build.xml
deleted file mode 100644
index 429b768..0000000
--- a/vendor/doctrine/common/build.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0"?>
-<project name="DoctrineCommon" default="build" basedir=".">
-    <property file="build.properties" />
-
-    <target name="php">
-        <exec executable="which" outputproperty="php_executable">
-            <arg value="php" />
-        </exec>
-    </target>
-
-    <target name="prepare">
-        <mkdir dir="build" />
-    </target>
-
-    <target name="build" depends="check-git-checkout-clean,prepare,php,composer">
-        <exec executable="${php_executable}">
-            <arg value="build/composer.phar" />
-            <arg value="archive" />
-            <arg value="--dir=build" />
-        </exec>
-    </target>
-
-    <target name="composer" depends="php,composer-check,composer-download">
-        <exec executable="${php_executable}">
-            <arg value="build/composer.phar" />
-            <arg value="install" />
-        </exec>
-    </target>
-
-    <target name="composer-check" depends="prepare">
-        <available file="build/composer.phar" property="composer.present"/>
-    </target>
-
-    <target name="composer-download" unless="composer.present">
-        <exec executable="wget">
-            <arg value="-Obuild/composer.phar" />
-            <arg value="http://getcomposer.org/composer.phar" />
-        </exec>
-    </target>
-
-    <target name="make-release" depends="check-git-checkout-clean,prepare,php">
-        <replace file="${project.version_file}" token="-DEV" value="" failOnNoReplacements="true" />
-        <exec executable="${php_executable}" outputproperty="doctrine.current_version" failonerror="true">
-            <arg value="-r" />
-            <arg value="require_once '${project.version_file}';echo ${project.version_class}::VERSION;" />
-        </exec>
-        <exec executable="${php_executable}" outputproperty="doctrine.next_version" failonerror="true">
-            <arg value="-r" />
-            <arg value="$parts = explode('.', str_ireplace(array('-DEV', '-ALPHA', '-BETA'), '', '${doctrine.current_version}'));
-                if (count($parts) != 3) {
-                    throw new \InvalidArgumentException('Version is assumed in format x.y.z, ${doctrine.current_version} given');
-                }
-                $parts[2]++;
-                echo implode('.', $parts);
-            " />
-        </exec>
-
-        <git-commit file="${project.version_file}" message="Release ${doctrine.current_version}" />
-        <git-tag version="${doctrine.current_version}" />
-        <replace file="${project.version_file}" token="${doctrine.current_version}" value="${doctrine.next_version}-DEV" />
-        <git-commit file="${project.version_file}" message="Bump version to ${doctrine.next_version}" />
-    </target>
-
-    <target name="check-git-checkout-clean">
-        <exec executable="git" failonerror="true">
-            <arg value="diff-index" />
-            <arg value="--quiet" />
-            <arg value="HEAD" />
-        </exec>
-    </target>
-
-    <macrodef name="git-commit">
-        <attribute name="file" default="NOT SET"/>
-        <attribute name="message" default="NOT SET"/>
-
-        <sequential>
-            <exec executable="git">
-                <arg value="add" />
-                <arg value="@{file}" />
-            </exec>
-            <exec executable="git">
-                <arg value="commit" />
-                <arg value="-m" />
-                <arg value="@{message}" />
-            </exec>
-        </sequential>
-    </macrodef>
-
-    <macrodef name="git-tag">
-        <attribute name="version" default="NOT SET" />
-
-        <sequential>
-            <exec executable="git">
-                <arg value="tag" />
-                <arg value="-m" />
-                <arg value="v@{version}" />
-                <arg value="v@{version}" />
-            </exec>
-        </sequential>
-    </macrodef>
-</project>
diff --git a/vendor/doctrine/common/composer.json b/vendor/doctrine/common/composer.json
deleted file mode 100644
index be42e7f..0000000
--- a/vendor/doctrine/common/composer.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "name": "doctrine/common",
-    "type": "library",
-    "description": "Common Library for Doctrine projects",
-    "keywords": ["collections", "spl", "eventmanager", "annotations", "persistence"],
-    "homepage": "http://www.doctrine-project.org",
-    "license": "MIT",
-    "authors": [
-        {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
-        {"name": "Roman Borschel", "email": "roman@code-factory.org"},
-        {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
-        {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
-        {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
-    ],
-    "require": {
-        "php": ">=5.3.2",
-        "doctrine/inflector": "1.*",
-        "doctrine/cache": "1.*",
-        "doctrine/collections": "1.*",
-        "doctrine/lexer": "1.*",
-        "doctrine/annotations": "1.*"
-    },
-    "minimum-stability": "dev",
-    "require-dev": {
-        "phpunit/phpunit": "~3.7"
-    },
-    "autoload": {
-        "psr-0": { "Doctrine\\Common\\": "lib/" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.6.x-dev"
-        }
-    },
-    "archive": {
-        "exclude": ["!vendor", "tests", "*phpunit.xml", ".travis.yml", "build.xml", "build.properties", "composer.phar"]
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php b/vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php
deleted file mode 100644
index d65b9a6..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php
+++ /dev/null
@@ -1,280 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common;
-
-/**
- * A <tt>ClassLoader</tt> is an autoloader for class files that can be
- * installed on the SPL autoload stack. It is a class loader that either loads only classes
- * of a specific namespace or all namespaces and it is suitable for working together
- * with other autoloaders in the SPL autoload stack.
- *
- * If no include path is configured through the constructor or {@link setIncludePath}, a ClassLoader
- * relies on the PHP <code>include_path</code>.
- *
- * @author Roman Borschel <roman@code-factory.org>
- * @since 2.0
- *
- * @deprecated the ClassLoader is deprecated and will be removed in version 3.0 of doctrine/common.
- */
-class ClassLoader
-{
-    /**
-     * PHP file extension.
-     *
-     * @var string
-     */
-    protected $fileExtension = '.php';
-
-    /**
-     * Current namespace.
-     *
-     * @var string|null
-     */
-    protected $namespace;
-
-    /**
-     * Current include path.
-     *
-     * @var string|null
-     */
-    protected $includePath;
-
-    /**
-     * PHP namespace separator.
-     *
-     * @var string
-     */
-    protected $namespaceSeparator = '\\';
-
-    /**
-     * Creates a new <tt>ClassLoader</tt> that loads classes of the
-     * specified namespace from the specified include path.
-     *
-     * If no include path is given, the ClassLoader relies on the PHP include_path.
-     * If neither a namespace nor an include path is given, the ClassLoader will
-     * be responsible for loading all classes, thereby relying on the PHP include_path.
-     *
-     * @param string|null $ns          The namespace of the classes to load.
-     * @param string|null $includePath The base include path to use.
-     */
-    public function __construct($ns = null, $includePath = null)
-    {
-        $this->namespace = $ns;
-        $this->includePath = $includePath;
-    }
-
-    /**
-     * Sets the namespace separator used by classes in the namespace of this ClassLoader.
-     *
-     * @param string $sep The separator to use.
-     *
-     * @return void
-     */
-    public function setNamespaceSeparator($sep)
-    {
-        $this->namespaceSeparator = $sep;
-    }
-
-    /**
-     * Gets the namespace separator used by classes in the namespace of this ClassLoader.
-     *
-     * @return string
-     */
-    public function getNamespaceSeparator()
-    {
-        return $this->namespaceSeparator;
-    }
-
-    /**
-     * Sets the base include path for all class files in the namespace of this ClassLoader.
-     *
-     * @param string|null $includePath
-     *
-     * @return void
-     */
-    public function setIncludePath($includePath)
-    {
-        $this->includePath = $includePath;
-    }
-
-    /**
-     * Gets the base include path for all class files in the namespace of this ClassLoader.
-     *
-     * @return string|null
-     */
-    public function getIncludePath()
-    {
-        return $this->includePath;
-    }
-
-    /**
-     * Sets the file extension of class files in the namespace of this ClassLoader.
-     *
-     * @param string $fileExtension
-     *
-     * @return void
-     */
-    public function setFileExtension($fileExtension)
-    {
-        $this->fileExtension = $fileExtension;
-    }
-
-    /**
-     * Gets the file extension of class files in the namespace of this ClassLoader.
-     *
-     * @return string
-     */
-    public function getFileExtension()
-    {
-        return $this->fileExtension;
-    }
-
-    /**
-     * Registers this ClassLoader on the SPL autoload stack.
-     *
-     * @return void
-     */
-    public function register()
-    {
-        spl_autoload_register(array($this, 'loadClass'));
-    }
-
-    /**
-     * Removes this ClassLoader from the SPL autoload stack.
-     *
-     * @return void
-     */
-    public function unregister()
-    {
-        spl_autoload_unregister(array($this, 'loadClass'));
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $className The name of the class to load.
-     *
-     * @return boolean TRUE if the class has been successfully loaded, FALSE otherwise.
-     */
-    public function loadClass($className)
-    {
-        if (self::typeExists($className)) {
-            return true;
-        }
-
-        if (! $this->canLoadClass($className)) {
-            return false;
-        }
-
-        require ($this->includePath !== null ? $this->includePath . DIRECTORY_SEPARATOR : '')
-               . str_replace($this->namespaceSeparator, DIRECTORY_SEPARATOR, $className)
-               . $this->fileExtension;
-
-        return self::typeExists($className);
-    }
-
-    /**
-     * Asks this ClassLoader whether it can potentially load the class (file) with
-     * the given name.
-     *
-     * @param string $className The fully-qualified name of the class.
-     *
-     * @return boolean TRUE if this ClassLoader can load the class, FALSE otherwise.
-     */
-    public function canLoadClass($className)
-    {
-        if ($this->namespace !== null && strpos($className, $this->namespace.$this->namespaceSeparator) !== 0) {
-            return false;
-        }
-
-        $file = str_replace($this->namespaceSeparator, DIRECTORY_SEPARATOR, $className) . $this->fileExtension;
-
-        if ($this->includePath !== null) {
-            return is_file($this->includePath . DIRECTORY_SEPARATOR . $file);
-        }
-
-        return (false !== stream_resolve_include_path($file));
-    }
-
-    /**
-     * Checks whether a class with a given name exists. A class "exists" if it is either
-     * already defined in the current request or if there is an autoloader on the SPL
-     * autoload stack that is a) responsible for the class in question and b) is able to
-     * load a class file in which the class definition resides.
-     *
-     * If the class is not already defined, each autoloader in the SPL autoload stack
-     * is asked whether it is able to tell if the class exists. If the autoloader is
-     * a <tt>ClassLoader</tt>, {@link canLoadClass} is used, otherwise the autoload
-     * function of the autoloader is invoked and expected to return a value that
-     * evaluates to TRUE if the class (file) exists. As soon as one autoloader reports
-     * that the class exists, TRUE is returned.
-     *
-     * Note that, depending on what kinds of autoloaders are installed on the SPL
-     * autoload stack, the class (file) might already be loaded as a result of checking
-     * for its existence. This is not the case with a <tt>ClassLoader</tt>, who separates
-     * these responsibilities.
-     *
-     * @param string $className The fully-qualified name of the class.
-     *
-     * @return boolean TRUE if the class exists as per the definition given above, FALSE otherwise.
-     */
-    public static function classExists($className)
-    {
-        return self::typeExists($className, true);
-    }
-
-    /**
-     * Gets the <tt>ClassLoader</tt> from the SPL autoload stack that is responsible
-     * for (and is able to load) the class with the given name.
-     *
-     * @param string $className The name of the class.
-     *
-     * @return ClassLoader The <tt>ClassLoader</tt> for the class or NULL if no such <tt>ClassLoader</tt> exists.
-     */
-    public static function getClassLoader($className)
-    {
-         foreach (spl_autoload_functions() as $loader) {
-            if (is_array($loader)
-                && ($classLoader = reset($loader))
-                && $classLoader instanceof ClassLoader
-                && $classLoader->canLoadClass($className)
-            ) {
-                return $classLoader;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Checks whether a given type exists
-     *
-     * @param string $type
-     * @param bool   $autoload
-     *
-     * @return bool
-     */
-    private static function typeExists($type, $autoload = false)
-    {
-        return class_exists($type, $autoload)
-            || interface_exists($type, $autoload)
-            || (function_exists('trait_exists') && trait_exists($type, $autoload));
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/CommonException.php b/vendor/doctrine/common/lib/Doctrine/Common/CommonException.php
deleted file mode 100644
index 2a1a08e..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/CommonException.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common;
-
-/**
- * Base exception class for package Doctrine\Common.
- *
- * @author heinrich
- */
-class CommonException extends \Exception
-{
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Comparable.php b/vendor/doctrine/common/lib/Doctrine/Common/Comparable.php
deleted file mode 100644
index 8cd02c9..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Comparable.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common;
-
-/**
- * Comparable interface that allows to compare two value objects to each other for similarity.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- */
-interface Comparable
-{
-    /**
-     * Compares the current object to the passed $other.
-     *
-     * Returns 0 if they are semantically equal, 1 if the other object
-     * is less than the current one, or -1 if its more than the current one.
-     *
-     * This method should not check for identity using ===, only for semantical equality for example
-     * when two different DateTime instances point to the exact same Date + TZ.
-     *
-     * @param mixed $other
-     *
-     * @return int
-     */
-    public function compareTo($other);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/EventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/EventArgs.php
deleted file mode 100644
index 75506e6..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/EventArgs.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common;
-
-/**
- * EventArgs is the base class for classes containing event data.
- *
- * This class contains no event data. It is used by events that do not pass state
- * information to an event handler when an event is raised. The single empty EventArgs
- * instance can be obtained through {@link getEmptyInstance}.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-class EventArgs
-{
-    /**
-     * Single instance of EventArgs.
-     *
-     * @var EventArgs
-     */
-    private static $_emptyEventArgsInstance;
-
-    /**
-     * Gets the single, empty and immutable EventArgs instance.
-     *
-     * This instance will be used when events are dispatched without any parameter,
-     * like this: EventManager::dispatchEvent('eventname');
-     *
-     * The benefit from this is that only one empty instance is instantiated and shared
-     * (otherwise there would be instances for every dispatched in the abovementioned form).
-     *
-     * @see EventManager::dispatchEvent
-     *
-     * @link http://msdn.microsoft.com/en-us/library/system.eventargs.aspx
-     *
-     * @return EventArgs
-     */
-    public static function getEmptyInstance()
-    {
-        if ( ! self::$_emptyEventArgsInstance) {
-            self::$_emptyEventArgsInstance = new EventArgs;
-        }
-
-        return self::$_emptyEventArgsInstance;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/EventManager.php b/vendor/doctrine/common/lib/Doctrine/Common/EventManager.php
deleted file mode 100644
index 69eb17e..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/EventManager.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common;
-
-/**
- * The EventManager is the central point of Doctrine's event listener system.
- * Listeners are registered on the manager and events are dispatched through the
- * manager.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-class EventManager
-{
-    /**
-     * Map of registered listeners.
-     * <event> => <listeners>
-     *
-     * @var array
-     */
-    private $_listeners = array();
-
-    /**
-     * Dispatches an event to all registered listeners.
-     *
-     * @param string    $eventName      The name of the event to dispatch. The name of the event is
-     *                                  the name of the method that is invoked on listeners.
-     * @param EventArgs|null $eventArgs The event arguments to pass to the event handlers/listeners.
-     *                                  If not supplied, the single empty EventArgs instance is used.
-     *
-     * @return boolean
-     */
-    public function dispatchEvent($eventName, EventArgs $eventArgs = null)
-    {
-        if (isset($this->_listeners[$eventName])) {
-            $eventArgs = $eventArgs === null ? EventArgs::getEmptyInstance() : $eventArgs;
-
-            foreach ($this->_listeners[$eventName] as $listener) {
-                $listener->$eventName($eventArgs);
-            }
-        }
-    }
-
-    /**
-     * Gets the listeners of a specific event or all listeners.
-     *
-     * @param string|null $event The name of the event.
-     *
-     * @return array The event listeners for the specified event, or all event listeners.
-     */
-    public function getListeners($event = null)
-    {
-        return $event ? $this->_listeners[$event] : $this->_listeners;
-    }
-
-    /**
-     * Checks whether an event has any registered listeners.
-     *
-     * @param string $event
-     *
-     * @return boolean TRUE if the specified event has any listeners, FALSE otherwise.
-     */
-    public function hasListeners($event)
-    {
-        return isset($this->_listeners[$event]) && $this->_listeners[$event];
-    }
-
-    /**
-     * Adds an event listener that listens on the specified events.
-     *
-     * @param string|array $events   The event(s) to listen on.
-     * @param object       $listener The listener object.
-     *
-     * @return void
-     */
-    public function addEventListener($events, $listener)
-    {
-        // Picks the hash code related to that listener
-        $hash = spl_object_hash($listener);
-
-        foreach ((array) $events as $event) {
-            // Overrides listener if a previous one was associated already
-            // Prevents duplicate listeners on same event (same instance only)
-            $this->_listeners[$event][$hash] = $listener;
-        }
-    }
-
-    /**
-     * Removes an event listener from the specified events.
-     *
-     * @param string|array $events
-     * @param object       $listener
-     *
-     * @return void
-     */
-    public function removeEventListener($events, $listener)
-    {
-        // Picks the hash code related to that listener
-        $hash = spl_object_hash($listener);
-
-        foreach ((array) $events as $event) {
-            // Check if actually have this listener associated
-            if (isset($this->_listeners[$event][$hash])) {
-                unset($this->_listeners[$event][$hash]);
-            }
-        }
-    }
-
-    /**
-     * Adds an EventSubscriber. The subscriber is asked for all the events it is
-     * interested in and added as a listener for these events.
-     *
-     * @param \Doctrine\Common\EventSubscriber $subscriber The subscriber.
-     *
-     * @return void
-     */
-    public function addEventSubscriber(EventSubscriber $subscriber)
-    {
-        $this->addEventListener($subscriber->getSubscribedEvents(), $subscriber);
-    }
-
-    /**
-     * Removes an EventSubscriber. The subscriber is asked for all the events it is
-     * interested in and removed as a listener for these events.
-     *
-     * @param \Doctrine\Common\EventSubscriber $subscriber The subscriber.
-     *
-     * @return void
-     */
-    public function removeEventSubscriber(EventSubscriber $subscriber)
-    {
-        $this->removeEventListener($subscriber->getSubscribedEvents(), $subscriber);
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/EventSubscriber.php b/vendor/doctrine/common/lib/Doctrine/Common/EventSubscriber.php
deleted file mode 100644
index 55d0f7d..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/EventSubscriber.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common;
-
-/**
- * An EventSubscriber knows himself what events he is interested in.
- * If an EventSubscriber is added to an EventManager, the manager invokes
- * {@link getSubscribedEvents} and registers the subscriber as a listener for all
- * returned events.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-interface EventSubscriber
-{
-    /**
-     * Returns an array of events this subscriber wants to listen to.
-     *
-     * @return array
-     */
-    public function getSubscribedEvents();
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Lexer.php b/vendor/doctrine/common/lib/Doctrine/Common/Lexer.php
deleted file mode 100644
index 0aa07f8..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Lexer.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common;
-
-use Doctrine\Common\Lexer\AbstractLexer;
-
-/**
- * Base class for writing simple lexers, i.e. for creating small DSLs.
- *
- * Lexer moved into its own Component Doctrine\Common\Lexer. This class
- * only stays for being BC.
- *
- * @since  2.0
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-abstract class Lexer extends AbstractLexer
-{
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/NotifyPropertyChanged.php b/vendor/doctrine/common/lib/Doctrine/Common/NotifyPropertyChanged.php
deleted file mode 100644
index e25e999..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/NotifyPropertyChanged.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common;
-
-/**
- * Contract for classes that provide the service of notifying listeners of
- * changes to their properties.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-interface NotifyPropertyChanged
-{
-    /**
-     * Adds a listener that wants to be notified about property changes.
-     *
-     * @param PropertyChangedListener $listener
-     *
-     * @return void
-     */
-    public function addPropertyChangedListener(PropertyChangedListener $listener);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php
deleted file mode 100644
index 33770f9..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php
+++ /dev/null
@@ -1,257 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence;
-
-/**
- * Abstract implementation of the ManagerRegistry contract.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Lukas Kahwe Smith <smith@pooteeweet.org>
- */
-abstract class AbstractManagerRegistry implements ManagerRegistry
-{
-    /**
-     * @var string
-     */
-    private $name;
-
-    /**
-     * @var array
-     */
-    private $connections;
-
-    /**
-     * @var array
-     */
-    private $managers;
-
-    /**
-     * @var string
-     */
-    private $defaultConnection;
-
-    /**
-     * @var string
-     */
-    private $defaultManager;
-
-    /**
-     * @var string
-     */
-    private $proxyInterfaceName;
-
-    /**
-     * Constructor.
-     *
-     * @param string $name
-     * @param array  $connections
-     * @param array  $managers
-     * @param string $defaultConnection
-     * @param string $defaultManager
-     * @param string $proxyInterfaceName
-     */
-    public function __construct($name, array $connections, array $managers, $defaultConnection, $defaultManager, $proxyInterfaceName)
-    {
-        $this->name = $name;
-        $this->connections = $connections;
-        $this->managers = $managers;
-        $this->defaultConnection = $defaultConnection;
-        $this->defaultManager = $defaultManager;
-        $this->proxyInterfaceName = $proxyInterfaceName;
-    }
-
-    /**
-     * Fetches/creates the given services.
-     *
-     * A service in this context is connection or a manager instance.
-     *
-     * @param string $name The name of the service.
-     *
-     * @return object The instance of the given service.
-     */
-    abstract protected function getService($name);
-
-    /**
-     * Resets the given services.
-     *
-     * A service in this context is connection or a manager instance.
-     *
-     * @param string $name The name of the service.
-     *
-     * @return void
-     */
-    abstract protected function resetService($name);
-
-    /**
-     * Gets the name of the registry.
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getConnection($name = null)
-    {
-        if (null === $name) {
-            $name = $this->defaultConnection;
-        }
-
-        if (!isset($this->connections[$name])) {
-            throw new \InvalidArgumentException(sprintf('Doctrine %s Connection named "%s" does not exist.', $this->name, $name));
-        }
-
-        return $this->getService($this->connections[$name]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getConnectionNames()
-    {
-        return $this->connections;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getConnections()
-    {
-        $connections = array();
-        foreach ($this->connections as $name => $id) {
-            $connections[$name] = $this->getService($id);
-        }
-
-        return $connections;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDefaultConnectionName()
-    {
-        return $this->defaultConnection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDefaultManagerName()
-    {
-        return $this->defaultManager;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function getManager($name = null)
-    {
-        if (null === $name) {
-            $name = $this->defaultManager;
-        }
-
-        if (!isset($this->managers[$name])) {
-            throw new \InvalidArgumentException(sprintf('Doctrine %s Manager named "%s" does not exist.', $this->name, $name));
-        }
-
-        return $this->getService($this->managers[$name]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getManagerForClass($class)
-    {
-        // Check for namespace alias
-        if (strpos($class, ':') !== false) {
-            list($namespaceAlias, $simpleClassName) = explode(':', $class, 2);
-            $class = $this->getAliasNamespace($namespaceAlias) . '\\' . $simpleClassName;
-        }
-
-        $proxyClass = new \ReflectionClass($class);
-        if ($proxyClass->implementsInterface($this->proxyInterfaceName)) {
-            $class = $proxyClass->getParentClass()->getName();
-        }
-
-        foreach ($this->managers as $id) {
-            $manager = $this->getService($id);
-
-            if (!$manager->getMetadataFactory()->isTransient($class)) {
-                return $manager;
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getManagerNames()
-    {
-        return $this->managers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getManagers()
-    {
-        $dms = array();
-        foreach ($this->managers as $name => $id) {
-            $dms[$name] = $this->getService($id);
-        }
-
-        return $dms;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRepository($persistentObjectName, $persistentManagerName = null)
-    {
-        return $this->getManager($persistentManagerName)->getRepository($persistentObjectName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function resetManager($name = null)
-    {
-        if (null === $name) {
-            $name = $this->defaultManager;
-        }
-
-        if (!isset($this->managers[$name])) {
-            throw new \InvalidArgumentException(sprintf('Doctrine %s Manager named "%s" does not exist.', $this->name, $name));
-        }
-
-        // force the creation of a new document manager
-        // if the current one is closed
-        $this->resetService($this->managers[$name]);
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ConnectionRegistry.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ConnectionRegistry.php
deleted file mode 100644
index 7c25e98..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ConnectionRegistry.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence;
-
-/**
- * Contract covering connection for a Doctrine persistence layer ManagerRegistry class to implement.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Lukas Kahwe Smith <smith@pooteeweet.org>
- */
-interface ConnectionRegistry
-{
-    /**
-     * Gets the default connection name.
-     *
-     * @return string The default connection name.
-     */
-    public function getDefaultConnectionName();
-
-    /**
-     * Gets the named connection.
-     *
-     * @param string $name The connection name (null for the default one).
-     *
-     * @return object
-     */
-    public function getConnection($name = null);
-
-    /**
-     * Gets an array of all registered connections.
-     *
-     * @return array An array of Connection instances.
-     */
-    public function getConnections();
-
-    /**
-     * Gets all connection names.
-     *
-     * @return array An array of connection names.
-     */
-    public function getConnectionNames();
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LifecycleEventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LifecycleEventArgs.php
deleted file mode 100644
index 52f41c0..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LifecycleEventArgs.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Event;
-
-use Doctrine\Common\EventArgs;
-use Doctrine\Common\Persistence\ObjectManager;
-
-/**
- * Lifecycle Events are triggered by the UnitOfWork during lifecycle transitions
- * of entities.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Roman Borschel <roman@code-factory.de>
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class LifecycleEventArgs extends EventArgs
-{
-    /**
-     * @var ObjectManager
-     */
-    private $objectManager;
-
-    /**
-     * @var object
-     */
-    private $object;
-
-    /**
-     * Constructor.
-     *
-     * @param object        $object
-     * @param ObjectManager $objectManager
-     */
-    public function __construct($object, ObjectManager $objectManager)
-    {
-        $this->object = $object;
-        $this->objectManager = $objectManager;
-    }
-
-    /**
-     * Retrieves the associated entity.
-     *
-     * @deprecated
-     *
-     * @return object
-     */
-    public function getEntity()
-    {
-        return $this->object;
-    }
-
-    /**
-     * Retrieves the associated object.
-     *
-     * @return object
-     */
-    public function getObject()
-    {
-        return $this->object;
-    }
-
-    /**
-     * Retrieves the associated ObjectManager.
-     *
-     * @return ObjectManager
-     */
-    public function getObjectManager()
-    {
-        return $this->objectManager;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LoadClassMetadataEventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LoadClassMetadataEventArgs.php
deleted file mode 100644
index 3d8abbe..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LoadClassMetadataEventArgs.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Event;
-
-use Doctrine\Common\EventArgs;
-use Doctrine\Common\Persistence\Mapping\ClassMetadata;
-use Doctrine\Common\Persistence\ObjectManager;
-
-/**
- * Class that holds event arguments for a loadMetadata event.
- *
- * @author Jonathan H. Wage <jonwage@gmail.com>
- * @since  2.2
- */
-class LoadClassMetadataEventArgs extends EventArgs
-{
-    /**
-     * @var ClassMetadata
-     */
-    private $classMetadata;
-
-    /**
-     * @var ObjectManager
-     */
-    private $objectManager;
-
-    /**
-     * Constructor.
-     *
-     * @param ClassMetadata $classMetadata
-     * @param ObjectManager $objectManager
-     */
-    public function __construct(ClassMetadata $classMetadata, ObjectManager $objectManager)
-    {
-        $this->classMetadata = $classMetadata;
-        $this->objectManager = $objectManager;
-    }
-
-    /**
-     * Retrieves the associated ClassMetadata.
-     *
-     * @return ClassMetadata
-     */
-    public function getClassMetadata()
-    {
-        return $this->classMetadata;
-    }
-
-    /**
-     * Retrieves the associated ObjectManager.
-     *
-     * @return ObjectManager
-     */
-    public function getObjectManager()
-    {
-        return $this->objectManager;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/ManagerEventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/ManagerEventArgs.php
deleted file mode 100644
index 5527d4d..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/ManagerEventArgs.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Event;
-
-use Doctrine\Common\EventArgs;
-use Doctrine\Common\Persistence\ObjectManager;
-
-/**
- * Provides event arguments for the preFlush event.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Roman Borschel <roman@code-factory.de>
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class ManagerEventArgs extends EventArgs
-{
-    /**
-     * @var ObjectManager
-     */
-    private $objectManager;
-
-    /**
-     * Constructor.
-     *
-     * @param ObjectManager $objectManager
-     */
-    public function __construct(ObjectManager $objectManager)
-    {
-        $this->objectManager = $objectManager;
-    }
-
-    /**
-     * Retrieves the associated ObjectManager.
-     *
-     * @return ObjectManager
-     */
-    public function getObjectManager()
-    {
-        return $this->objectManager;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/OnClearEventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/OnClearEventArgs.php
deleted file mode 100644
index b78bad9..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/OnClearEventArgs.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Event;
-
-use Doctrine\Common\EventArgs;
-use Doctrine\Common\Persistence\ObjectManager;
-
-/**
- * Provides event arguments for the onClear event.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Roman Borschel <roman@code-factory.de>
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class OnClearEventArgs extends EventArgs
-{
-    /**
-     * @var \Doctrine\Common\Persistence\ObjectManager
-     */
-    private $objectManager;
-
-    /**
-     * @var string|null
-     */
-    private $entityClass;
-
-    /**
-     * Constructor.
-     *
-     * @param ObjectManager $objectManager The object manager.
-     * @param string|null   $entityClass   The optional entity class.
-     */
-    public function __construct($objectManager, $entityClass = null)
-    {
-        $this->objectManager = $objectManager;
-        $this->entityClass = $entityClass;
-    }
-
-    /**
-     * Retrieves the associated ObjectManager.
-     *
-     * @return \Doctrine\Common\Persistence\ObjectManager
-     */
-    public function getObjectManager()
-    {
-        return $this->objectManager;
-    }
-
-    /**
-     * Returns the name of the entity class that is cleared, or null if all are cleared.
-     *
-     * @return string|null
-     */
-    public function getEntityClass()
-    {
-        return $this->entityClass;
-    }
-
-    /**
-     * Returns whether this event clears all entities.
-     *
-     * @return bool
-     */
-    public function clearsAllEntities()
-    {
-        return ($this->entityClass === null);
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/PreUpdateEventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/PreUpdateEventArgs.php
deleted file mode 100644
index facce64..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/PreUpdateEventArgs.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Event;
-
-use Doctrine\Common\Persistence\ObjectManager;
-
-/**
- * Class that holds event arguments for a preUpdate event.
- *
- * @author Guilherme Blanco <guilehrmeblanco@hotmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @since  2.2
- */
-class PreUpdateEventArgs extends LifecycleEventArgs
-{
-    /**
-     * @var array
-     */
-    private $entityChangeSet;
-
-    /**
-     * Constructor.
-     *
-     * @param object        $entity
-     * @param ObjectManager $objectManager
-     * @param array         $changeSet
-     */
-    public function __construct($entity, ObjectManager $objectManager, array &$changeSet)
-    {
-        parent::__construct($entity, $objectManager);
-
-        $this->entityChangeSet = &$changeSet;
-    }
-
-    /**
-     * Retrieves the entity changeset.
-     *
-     * @return array
-     */
-    public function getEntityChangeSet()
-    {
-        return $this->entityChangeSet;
-    }
-
-    /**
-     * Checks if field has a changeset.
-     *
-     * @param string $field
-     *
-     * @return boolean
-     */
-    public function hasChangedField($field)
-    {
-        return isset($this->entityChangeSet[$field]);
-    }
-
-    /**
-     * Gets the old value of the changeset of the changed field.
-     *
-     * @param string $field
-     *
-     * @return mixed
-     */
-    public function getOldValue($field)
-    {
-        $this->assertValidField($field);
-
-        return $this->entityChangeSet[$field][0];
-    }
-
-    /**
-     * Gets the new value of the changeset of the changed field.
-     *
-     * @param string $field
-     *
-     * @return mixed
-     */
-    public function getNewValue($field)
-    {
-        $this->assertValidField($field);
-
-        return $this->entityChangeSet[$field][1];
-    }
-
-    /**
-     * Sets the new value of this field.
-     *
-     * @param string $field
-     * @param mixed  $value
-     *
-     * @return void
-     */
-    public function setNewValue($field, $value)
-    {
-        $this->assertValidField($field);
-
-        $this->entityChangeSet[$field][1] = $value;
-    }
-
-    /**
-     * Asserts the field exists in changeset.
-     *
-     * @param string $field
-     *
-     * @return void
-     *
-     * @throws \InvalidArgumentException
-     */
-    private function assertValidField($field)
-    {
-        if ( ! isset($this->entityChangeSet[$field])) {
-            throw new \InvalidArgumentException(sprintf(
-                'Field "%s" is not a valid field of the entity "%s" in PreUpdateEventArgs.',
-                $field,
-                get_class($this->getEntity())
-            ));
-        }
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ManagerRegistry.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ManagerRegistry.php
deleted file mode 100644
index fce854b..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ManagerRegistry.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence;
-
-/**
- * Contract covering object managers for a Doctrine persistence layer ManagerRegistry class to implement.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Lukas Kahwe Smith <smith@pooteeweet.org>
- */
-interface ManagerRegistry extends ConnectionRegistry
-{
-    /**
-     * Gets the default object manager name.
-     *
-     * @return string The default object manager name.
-     */
-    public function getDefaultManagerName();
-
-    /**
-     * Gets a named object manager.
-     *
-     * @param string $name The object manager name (null for the default one).
-     *
-     * @return \Doctrine\Common\Persistence\ObjectManager
-     */
-    public function getManager($name = null);
-
-    /**
-     * Gets an array of all registered object managers.
-     *
-     * @return \Doctrine\Common\Persistence\ObjectManager[] An array of ObjectManager instances
-     */
-    public function getManagers();
-
-    /**
-     * Resets a named object manager.
-     *
-     * This method is useful when an object manager has been closed
-     * because of a rollbacked transaction AND when you think that
-     * it makes sense to get a new one to replace the closed one.
-     *
-     * Be warned that you will get a brand new object manager as
-     * the existing one is not useable anymore. This means that any
-     * other object with a dependency on this object manager will
-     * hold an obsolete reference. You can inject the registry instead
-     * to avoid this problem.
-     *
-     * @param string|null $name The object manager name (null for the default one).
-     *
-     * @return \Doctrine\Common\Persistence\ObjectManager
-     */
-    public function resetManager($name = null);
-
-    /**
-     * Resolves a registered namespace alias to the full namespace.
-     *
-     * This method looks for the alias in all registered object managers.
-     *
-     * @param string $alias The alias.
-     *
-     * @return string The full namespace.
-     */
-    public function getAliasNamespace($alias);
-
-    /**
-     * Gets all connection names.
-     *
-     * @return array An array of connection names.
-     */
-    public function getManagerNames();
-
-    /**
-     * Gets the ObjectRepository for an persistent object.
-     *
-     * @param string $persistentObject      The name of the persistent object.
-     * @param string $persistentManagerName The object manager name (null for the default one).
-     *
-     * @return \Doctrine\Common\Persistence\ObjectRepository
-     */
-    public function getRepository($persistentObject, $persistentManagerName = null);
-
-    /**
-     * Gets the object manager associated with a given class.
-     *
-     * @param string $class A persistent object class name.
-     *
-     * @return \Doctrine\Common\Persistence\ObjectManager|null
-     */
-    public function getManagerForClass($class);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php
deleted file mode 100644
index 404fea9..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php
+++ /dev/null
@@ -1,429 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping;
-
-use Doctrine\Common\Cache\Cache;
-use Doctrine\Common\Util\ClassUtils;
-use ReflectionException;
-
-/**
- * The ClassMetadataFactory is used to create ClassMetadata objects that contain all the
- * metadata mapping informations of a class which describes how a class should be mapped
- * to a relational database.
- *
- * This class was abstracted from the ORM ClassMetadataFactory.
- *
- * @since  2.2
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-abstract class AbstractClassMetadataFactory implements ClassMetadataFactory
-{
-    /**
-     * Salt used by specific Object Manager implementation.
-     *
-     * @var string
-     */
-    protected $cacheSalt = '$CLASSMETADATA';
-
-    /**
-     * @var \Doctrine\Common\Cache\Cache|null
-     */
-    private $cacheDriver;
-
-    /**
-     * @var ClassMetadata[]
-     */
-    private $loadedMetadata = array();
-
-    /**
-     * @var bool
-     */
-    protected $initialized = false;
-
-    /**
-     * @var ReflectionService|null
-     */
-    private $reflectionService = null;
-
-    /**
-     * Sets the cache driver used by the factory to cache ClassMetadata instances.
-     *
-     * @param \Doctrine\Common\Cache\Cache $cacheDriver
-     *
-     * @return void
-     */
-    public function setCacheDriver(Cache $cacheDriver = null)
-    {
-        $this->cacheDriver = $cacheDriver;
-    }
-
-    /**
-     * Gets the cache driver used by the factory to cache ClassMetadata instances.
-     *
-     * @return \Doctrine\Common\Cache\Cache|null
-     */
-    public function getCacheDriver()
-    {
-        return $this->cacheDriver;
-    }
-
-    /**
-     * Returns an array of all the loaded metadata currently in memory.
-     *
-     * @return ClassMetadata[]
-     */
-    public function getLoadedMetadata()
-    {
-        return $this->loadedMetadata;
-    }
-
-    /**
-     * Forces the factory to load the metadata of all classes known to the underlying
-     * mapping driver.
-     *
-     * @return array The ClassMetadata instances of all mapped classes.
-     */
-    public function getAllMetadata()
-    {
-        if ( ! $this->initialized) {
-            $this->initialize();
-        }
-
-        $driver = $this->getDriver();
-        $metadata = array();
-        foreach ($driver->getAllClassNames() as $className) {
-            $metadata[] = $this->getMetadataFor($className);
-        }
-
-        return $metadata;
-    }
-
-    /**
-     * Lazy initialization of this stuff, especially the metadata driver,
-     * since these are not needed at all when a metadata cache is active.
-     *
-     * @return void
-     */
-    abstract protected function initialize();
-
-    /**
-     * Gets the fully qualified class-name from the namespace alias.
-     *
-     * @param string $namespaceAlias
-     * @param string $simpleClassName
-     *
-     * @return string
-     */
-    abstract protected function getFqcnFromAlias($namespaceAlias, $simpleClassName);
-
-    /**
-     * Returns the mapping driver implementation.
-     *
-     * @return \Doctrine\Common\Persistence\Mapping\Driver\MappingDriver
-     */
-    abstract protected function getDriver();
-
-    /**
-     * Wakes up reflection after ClassMetadata gets unserialized from cache.
-     *
-     * @param ClassMetadata     $class
-     * @param ReflectionService $reflService
-     *
-     * @return void
-     */
-    abstract protected function wakeupReflection(ClassMetadata $class, ReflectionService $reflService);
-
-    /**
-     * Initializes Reflection after ClassMetadata was constructed.
-     *
-     * @param ClassMetadata     $class
-     * @param ReflectionService $reflService
-     *
-     * @return void
-     */
-    abstract protected function initializeReflection(ClassMetadata $class, ReflectionService $reflService);
-
-    /**
-     * Checks whether the class metadata is an entity.
-     *
-     * This method should return false for mapped superclasses or embedded classes.
-     *
-     * @param ClassMetadata $class
-     *
-     * @return boolean
-     */
-    abstract protected function isEntity(ClassMetadata $class);
-
-    /**
-     * Gets the class metadata descriptor for a class.
-     *
-     * @param string $className The name of the class.
-     *
-     * @return ClassMetadata
-     *
-     * @throws ReflectionException
-     * @throws MappingException
-     */
-    public function getMetadataFor($className)
-    {
-        if (isset($this->loadedMetadata[$className])) {
-            return $this->loadedMetadata[$className];
-        }
-
-        // Check for namespace alias
-        if (strpos($className, ':') !== false) {
-            list($namespaceAlias, $simpleClassName) = explode(':', $className, 2);
-
-            $realClassName = $this->getFqcnFromAlias($namespaceAlias, $simpleClassName);
-        } else {
-            $realClassName = ClassUtils::getRealClass($className);
-        }
-
-        if (isset($this->loadedMetadata[$realClassName])) {
-            // We do not have the alias name in the map, include it
-            return $this->loadedMetadata[$className] = $this->loadedMetadata[$realClassName];
-        }
-
-        $loadingException = null;
-
-        try {
-            if ($this->cacheDriver) {
-                if (($cached = $this->cacheDriver->fetch($realClassName . $this->cacheSalt)) !== false) {
-                    $this->loadedMetadata[$realClassName] = $cached;
-
-                    $this->wakeupReflection($cached, $this->getReflectionService());
-                } else {
-                    foreach ($this->loadMetadata($realClassName) as $loadedClassName) {
-                        $this->cacheDriver->save(
-                            $loadedClassName . $this->cacheSalt,
-                            $this->loadedMetadata[$loadedClassName],
-                            null
-                        );
-                    }
-                }
-            } else {
-                $this->loadMetadata($realClassName);
-            }
-        } catch (MappingException $loadingException) {
-            if (! $fallbackMetadataResponse = $this->onNotFoundMetadata($realClassName)) {
-                throw $loadingException;
-            }
-
-            $this->loadedMetadata[$realClassName] = $fallbackMetadataResponse;
-        }
-
-        if ($className !== $realClassName) {
-            // We do not have the alias name in the map, include it
-            $this->loadedMetadata[$className] = $this->loadedMetadata[$realClassName];
-        }
-
-        return $this->loadedMetadata[$className];
-    }
-
-    /**
-     * Checks whether the factory has the metadata for a class loaded already.
-     *
-     * @param string $className
-     *
-     * @return boolean TRUE if the metadata of the class in question is already loaded, FALSE otherwise.
-     */
-    public function hasMetadataFor($className)
-    {
-        return isset($this->loadedMetadata[$className]);
-    }
-
-    /**
-     * Sets the metadata descriptor for a specific class.
-     *
-     * NOTE: This is only useful in very special cases, like when generating proxy classes.
-     *
-     * @param string        $className
-     * @param ClassMetadata $class
-     *
-     * @return void
-     */
-    public function setMetadataFor($className, $class)
-    {
-        $this->loadedMetadata[$className] = $class;
-    }
-
-    /**
-     * Gets an array of parent classes for the given entity class.
-     *
-     * @param string $name
-     *
-     * @return array
-     */
-    protected function getParentClasses($name)
-    {
-        // Collect parent classes, ignoring transient (not-mapped) classes.
-        $parentClasses = array();
-        foreach (array_reverse($this->getReflectionService()->getParentClasses($name)) as $parentClass) {
-            if ( ! $this->getDriver()->isTransient($parentClass)) {
-                $parentClasses[] = $parentClass;
-            }
-        }
-        return $parentClasses;
-    }
-
-    /**
-     * Loads the metadata of the class in question and all it's ancestors whose metadata
-     * is still not loaded.
-     *
-     * Important: The class $name does not necesarily exist at this point here.
-     * Scenarios in a code-generation setup might have access to XML/YAML
-     * Mapping files without the actual PHP code existing here. That is why the
-     * {@see Doctrine\Common\Persistence\Mapping\ReflectionService} interface
-     * should be used for reflection.
-     *
-     * @param string $name The name of the class for which the metadata should get loaded.
-     *
-     * @return array
-     */
-    protected function loadMetadata($name)
-    {
-        if ( ! $this->initialized) {
-            $this->initialize();
-        }
-
-        $loaded = array();
-
-        $parentClasses = $this->getParentClasses($name);
-        $parentClasses[] = $name;
-
-        // Move down the hierarchy of parent classes, starting from the topmost class
-        $parent = null;
-        $rootEntityFound = false;
-        $visited = array();
-        $reflService = $this->getReflectionService();
-        foreach ($parentClasses as $className) {
-            if (isset($this->loadedMetadata[$className])) {
-                $parent = $this->loadedMetadata[$className];
-                if ($this->isEntity($parent)) {
-                    $rootEntityFound = true;
-                    array_unshift($visited, $className);
-                }
-                continue;
-            }
-
-            $class = $this->newClassMetadataInstance($className);
-            $this->initializeReflection($class, $reflService);
-
-            $this->doLoadMetadata($class, $parent, $rootEntityFound, $visited);
-
-            $this->loadedMetadata[$className] = $class;
-
-            $parent = $class;
-
-            if ($this->isEntity($class)) {
-                $rootEntityFound = true;
-                array_unshift($visited, $className);
-            }
-
-            $this->wakeupReflection($class, $reflService);
-
-            $loaded[] = $className;
-        }
-
-        return $loaded;
-    }
-
-    /**
-     * Provides a fallback hook for loading metadata when loading failed due to reflection/mapping exceptions
-     *
-     * Override this method to implement a fallback strategy for failed metadata loading
-     *
-     * @param string $className
-     *
-     * @return \Doctrine\Common\Persistence\Mapping\ClassMetadata|null
-     */
-    protected function onNotFoundMetadata($className)
-    {
-        return null;
-    }
-
-    /**
-     * Actually loads the metadata from the underlying metadata.
-     *
-     * @param ClassMetadata      $class
-     * @param ClassMetadata|null $parent
-     * @param bool               $rootEntityFound
-     * @param array              $nonSuperclassParents All parent class names
-     *                                                 that are not marked as mapped superclasses.
-     *
-     * @return void
-     */
-    abstract protected function doLoadMetadata($class, $parent, $rootEntityFound, array $nonSuperclassParents);
-
-    /**
-     * Creates a new ClassMetadata instance for the given class name.
-     *
-     * @param string $className
-     *
-     * @return ClassMetadata
-     */
-    abstract protected function newClassMetadataInstance($className);
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isTransient($class)
-    {
-        if ( ! $this->initialized) {
-            $this->initialize();
-        }
-
-        // Check for namespace alias
-        if (strpos($class, ':') !== false) {
-            list($namespaceAlias, $simpleClassName) = explode(':', $class, 2);
-            $class = $this->getFqcnFromAlias($namespaceAlias, $simpleClassName);
-        }
-
-        return $this->getDriver()->isTransient($class);
-    }
-
-    /**
-     * Sets the reflectionService.
-     *
-     * @param ReflectionService $reflectionService
-     *
-     * @return void
-     */
-    public function setReflectionService(ReflectionService $reflectionService)
-    {
-        $this->reflectionService = $reflectionService;
-    }
-
-    /**
-     * Gets the reflection service associated with this metadata factory.
-     *
-     * @return ReflectionService
-     */
-    public function getReflectionService()
-    {
-        if ($this->reflectionService === null) {
-            $this->reflectionService = new RuntimeReflectionService();
-        }
-        return $this->reflectionService;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadata.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadata.php
deleted file mode 100644
index b8445f1..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadata.php
+++ /dev/null
@@ -1,174 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping;
-
-/**
- * Contract for a Doctrine persistence layer ClassMetadata class to implement.
- *
- * @link   www.doctrine-project.org
- * @since  2.1
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Jonathan Wage <jonwage@gmail.com>
- */
-interface ClassMetadata
-{
-    /**
-     * Gets the fully-qualified class name of this persistent class.
-     *
-     * @return string
-     */
-    public function getName();
-
-    /**
-     * Gets the mapped identifier field name.
-     *
-     * The returned structure is an array of the identifier field names.
-     *
-     * @return array
-     */
-    public function getIdentifier();
-
-    /**
-     * Gets the ReflectionClass instance for this mapped class.
-     *
-     * @return \ReflectionClass
-     */
-    public function getReflectionClass();
-
-    /**
-     * Checks if the given field name is a mapped identifier for this class.
-     *
-     * @param string $fieldName
-     *
-     * @return boolean
-     */
-    public function isIdentifier($fieldName);
-
-    /**
-     * Checks if the given field is a mapped property for this class.
-     *
-     * @param string $fieldName
-     *
-     * @return boolean
-     */
-    public function hasField($fieldName);
-
-    /**
-     * Checks if the given field is a mapped association for this class.
-     *
-     * @param string $fieldName
-     *
-     * @return boolean
-     */
-    public function hasAssociation($fieldName);
-
-    /**
-     * Checks if the given field is a mapped single valued association for this class.
-     *
-     * @param string $fieldName
-     *
-     * @return boolean
-     */
-    public function isSingleValuedAssociation($fieldName);
-
-    /**
-     * Checks if the given field is a mapped collection valued association for this class.
-     *
-     * @param string $fieldName
-     *
-     * @return boolean
-     */
-    public function isCollectionValuedAssociation($fieldName);
-
-    /**
-     * A numerically indexed list of field names of this persistent class.
-     *
-     * This array includes identifier fields if present on this class.
-     *
-     * @return array
-     */
-    public function getFieldNames();
-
-    /**
-     * Returns an array of identifier field names numerically indexed.
-     *
-     * @return array
-     */
-    public function getIdentifierFieldNames();
-
-    /**
-     * Returns a numerically indexed list of association names of this persistent class.
-     *
-     * This array includes identifier associations if present on this class.
-     *
-     * @return array
-     */
-    public function getAssociationNames();
-
-    /**
-     * Returns a type name of this field.
-     *
-     * This type names can be implementation specific but should at least include the php types:
-     * integer, string, boolean, float/double, datetime.
-     *
-     * @param string $fieldName
-     *
-     * @return string
-     */
-    public function getTypeOfField($fieldName);
-
-    /**
-     * Returns the target class name of the given association.
-     *
-     * @param string $assocName
-     *
-     * @return string
-     */
-    public function getAssociationTargetClass($assocName);
-
-    /**
-     * Checks if the association is the inverse side of a bidirectional association.
-     *
-     * @param string $assocName
-     *
-     * @return boolean
-     */
-    public function isAssociationInverseSide($assocName);
-
-    /**
-     * Returns the target field of the owning side of the association.
-     *
-     * @param string $assocName
-     *
-     * @return string
-     */
-    public function getAssociationMappedByTargetField($assocName);
-
-    /**
-     * Returns the identifier of this object as an array with field name as key.
-     *
-     * Has to return an empty array if no identifier isset.
-     *
-     * @param object $object
-     *
-     * @return array
-     */
-    public function getIdentifierValues($object);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadataFactory.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadataFactory.php
deleted file mode 100644
index 3d82881..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadataFactory.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping;
-
-/**
- * Contract for a Doctrine persistence layer ClassMetadata class to implement.
- *
- * @link   www.doctrine-project.org
- * @since  2.1
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Jonathan Wage <jonwage@gmail.com>
- */
-interface ClassMetadataFactory
-{
-    /**
-     * Forces the factory to load the metadata of all classes known to the underlying
-     * mapping driver.
-     *
-     * @return array The ClassMetadata instances of all mapped classes.
-     */
-    public function getAllMetadata();
-
-    /**
-     * Gets the class metadata descriptor for a class.
-     *
-     * @param string $className The name of the class.
-     *
-     * @return ClassMetadata
-     */
-    public function getMetadataFor($className);
-
-    /**
-     * Checks whether the factory has the metadata for a class loaded already.
-     *
-     * @param string $className
-     *
-     * @return boolean TRUE if the metadata of the class in question is already loaded, FALSE otherwise.
-     */
-    public function hasMetadataFor($className);
-
-    /**
-     * Sets the metadata descriptor for a specific class.
-     *
-     * @param string $className
-     *
-     * @param ClassMetadata $class
-     */
-    public function setMetadataFor($className, $class);
-
-    /**
-     * Returns whether the class with the specified name should have its metadata loaded.
-     * This is only the case if it is either mapped directly or as a MappedSuperclass.
-     *
-     * @param string $className
-     *
-     * @return boolean
-     */
-    public function isTransient($className);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php
deleted file mode 100644
index 8bb574d..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php
+++ /dev/null
@@ -1,256 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping\Driver;
-
-use Doctrine\Common\Annotations\AnnotationReader;
-use Doctrine\Common\Persistence\Mapping\MappingException;
-
-/**
- * The AnnotationDriver reads the mapping metadata from docblock annotations.
- *
- * @since  2.2
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan H. Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-abstract class AnnotationDriver implements MappingDriver
-{
-    /**
-     * The AnnotationReader.
-     *
-     * @var AnnotationReader
-     */
-    protected $reader;
-
-    /**
-     * The paths where to look for mapping files.
-     *
-     * @var array
-     */
-    protected $paths = array();
-
-    /**
-     * The paths excluded from path where to look for mapping files.
-     *
-     * @var array
-     */
-    protected $excludePaths = array();
-
-    /**
-     * The file extension of mapping documents.
-     *
-     * @var string
-     */
-    protected $fileExtension = '.php';
-
-    /**
-     * Cache for AnnotationDriver#getAllClassNames().
-     *
-     * @var array|null
-     */
-    protected $classNames;
-
-    /**
-     * Name of the entity annotations as keys.
-     *
-     * @var array
-     */
-    protected $entityAnnotationClasses = array();
-
-    /**
-     * Initializes a new AnnotationDriver that uses the given AnnotationReader for reading
-     * docblock annotations.
-     *
-     * @param AnnotationReader  $reader The AnnotationReader to use, duck-typed.
-     * @param string|array|null $paths  One or multiple paths where mapping classes can be found.
-     */
-    public function __construct($reader, $paths = null)
-    {
-        $this->reader = $reader;
-        if ($paths) {
-            $this->addPaths((array) $paths);
-        }
-    }
-
-    /**
-     * Appends lookup paths to metadata driver.
-     *
-     * @param array $paths
-     *
-     * @return void
-     */
-    public function addPaths(array $paths)
-    {
-        $this->paths = array_unique(array_merge($this->paths, $paths));
-    }
-
-    /**
-     * Retrieves the defined metadata lookup paths.
-     *
-     * @return array
-     */
-    public function getPaths()
-    {
-        return $this->paths;
-    }
-
-    /**
-     * Append exclude lookup paths to metadata driver.
-     *
-     * @param array $paths
-     */
-    public function addExcludePaths(array $paths)
-    {
-        $this->excludePaths = array_unique(array_merge($this->excludePaths, $paths));
-    }
-
-    /**
-     * Retrieve the defined metadata lookup exclude paths.
-     *
-     * @return array
-     */
-    public function getExcludePaths()
-    {
-        return $this->excludePaths;
-    }
-
-    /**
-     * Retrieve the current annotation reader
-     *
-     * @return AnnotationReader
-     */
-    public function getReader()
-    {
-        return $this->reader;
-    }
-
-    /**
-     * Gets the file extension used to look for mapping files under.
-     *
-     * @return string
-     */
-    public function getFileExtension()
-    {
-        return $this->fileExtension;
-    }
-
-    /**
-     * Sets the file extension used to look for mapping files under.
-     *
-     * @param string $fileExtension The file extension to set.
-     *
-     * @return void
-     */
-    public function setFileExtension($fileExtension)
-    {
-        $this->fileExtension = $fileExtension;
-    }
-
-    /**
-     * Returns whether the class with the specified name is transient. Only non-transient
-     * classes, that is entities and mapped superclasses, should have their metadata loaded.
-     *
-     * A class is non-transient if it is annotated with an annotation
-     * from the {@see AnnotationDriver::entityAnnotationClasses}.
-     *
-     * @param string $className
-     *
-     * @return boolean
-     */
-    public function isTransient($className)
-    {
-        $classAnnotations = $this->reader->getClassAnnotations(new \ReflectionClass($className));
-
-        foreach ($classAnnotations as $annot) {
-            if (isset($this->entityAnnotationClasses[get_class($annot)])) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getAllClassNames()
-    {
-        if ($this->classNames !== null) {
-            return $this->classNames;
-        }
-
-        if (!$this->paths) {
-            throw MappingException::pathRequired();
-        }
-
-        $classes = array();
-        $includedFiles = array();
-
-        foreach ($this->paths as $path) {
-            if ( ! is_dir($path)) {
-                throw MappingException::fileMappingDriversRequireConfiguredDirectoryPath($path);
-            }
-
-            $iterator = new \RegexIterator(
-                new \RecursiveIteratorIterator(
-                    new \RecursiveDirectoryIterator($path, \FilesystemIterator::SKIP_DOTS),
-                    \RecursiveIteratorIterator::LEAVES_ONLY
-                ),
-                '/^.+' . preg_quote($this->fileExtension) . '$/i',
-                \RecursiveRegexIterator::GET_MATCH
-            );
-
-            foreach ($iterator as $file) {
-                $sourceFile = $file[0];
-
-                if ( ! preg_match('(^phar:)i', $sourceFile)) {
-                    $sourceFile = realpath($sourceFile);
-                }
-
-                foreach ($this->excludePaths as $excludePath) {
-                    $exclude = str_replace('\\', '/', realpath($excludePath));
-                    $current = str_replace('\\', '/', $sourceFile);
-
-                    if (strpos($current, $exclude) !== false) {
-                        continue 2;
-                    }
-                }
-
-                require_once $sourceFile;
-
-                $includedFiles[] = $sourceFile;
-            }
-        }
-
-        $declared = get_declared_classes();
-
-        foreach ($declared as $className) {
-            $rc = new \ReflectionClass($className);
-            $sourceFile = $rc->getFileName();
-            if (in_array($sourceFile, $includedFiles) && ! $this->isTransient($className)) {
-                $classes[] = $className;
-            }
-        }
-
-        $this->classNames = $classes;
-
-        return $classes;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/DefaultFileLocator.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/DefaultFileLocator.php
deleted file mode 100644
index 58a740b..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/DefaultFileLocator.php
+++ /dev/null
@@ -1,173 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping\Driver;
-
-use Doctrine\Common\Persistence\Mapping\MappingException;
-
-/**
- * Locates the file that contains the metadata information for a given class name.
- *
- * This behavior is independent of the actual content of the file. It just detects
- * the file which is responsible for the given class name.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class DefaultFileLocator implements FileLocator
-{
-    /**
-     * The paths where to look for mapping files.
-     *
-     * @var array
-     */
-    protected $paths = array();
-
-    /**
-     * The file extension of mapping documents.
-     *
-     * @var string|null
-     */
-    protected $fileExtension;
-
-    /**
-     * Initializes a new FileDriver that looks in the given path(s) for mapping
-     * documents and operates in the specified operating mode.
-     *
-     * @param string|array $paths         One or multiple paths where mapping documents can be found.
-     * @param string|null  $fileExtension The file extension of mapping documents, usually prefixed with a dot.
-     */
-    public function __construct($paths, $fileExtension = null)
-    {
-        $this->addPaths((array) $paths);
-        $this->fileExtension = $fileExtension;
-    }
-
-    /**
-     * Appends lookup paths to metadata driver.
-     *
-     * @param array $paths
-     *
-     * @return void
-     */
-    public function addPaths(array $paths)
-    {
-        $this->paths = array_unique(array_merge($this->paths, $paths));
-    }
-
-    /**
-     * Retrieves the defined metadata lookup paths.
-     *
-     * @return array
-     */
-    public function getPaths()
-    {
-        return $this->paths;
-    }
-
-    /**
-     * Gets the file extension used to look for mapping files under.
-     *
-     * @return string|null
-     */
-    public function getFileExtension()
-    {
-        return $this->fileExtension;
-    }
-
-    /**
-     * Sets the file extension used to look for mapping files under.
-     *
-     * @param string|null $fileExtension The file extension to set.
-     *
-     * @return void
-     */
-    public function setFileExtension($fileExtension)
-    {
-        $this->fileExtension = $fileExtension;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function findMappingFile($className)
-    {
-        $fileName = str_replace('\\', '.', $className) . $this->fileExtension;
-
-        // Check whether file exists
-        foreach ($this->paths as $path) {
-            if (is_file($path . DIRECTORY_SEPARATOR . $fileName)) {
-                return $path . DIRECTORY_SEPARATOR . $fileName;
-            }
-        }
-
-        throw MappingException::mappingFileNotFound($className, $fileName);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getAllClassNames($globalBasename)
-    {
-        $classes = array();
-
-        if ($this->paths) {
-            foreach ($this->paths as $path) {
-                if ( ! is_dir($path)) {
-                    throw MappingException::fileMappingDriversRequireConfiguredDirectoryPath($path);
-                }
-
-                $iterator = new \RecursiveIteratorIterator(
-                    new \RecursiveDirectoryIterator($path),
-                    \RecursiveIteratorIterator::LEAVES_ONLY
-                );
-
-                foreach ($iterator as $file) {
-                    $fileName = $file->getBasename($this->fileExtension);
-
-                    if ($fileName == $file->getBasename() || $fileName == $globalBasename) {
-                        continue;
-                    }
-
-                    // NOTE: All files found here means classes are not transient!
-                    $classes[] = str_replace('.', '\\', $fileName);
-                }
-            }
-        }
-
-        return $classes;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function fileExists($className)
-    {
-        $fileName = str_replace('\\', '.', $className) . $this->fileExtension;
-
-        // Check whether file exists
-        foreach ((array) $this->paths as $path) {
-            if (is_file($path . DIRECTORY_SEPARATOR . $fileName)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileDriver.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileDriver.php
deleted file mode 100644
index ccc64fa..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileDriver.php
+++ /dev/null
@@ -1,211 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping\Driver;
-
-use Doctrine\Common\Persistence\Mapping\MappingException;
-
-/**
- * Base driver for file-based metadata drivers.
- *
- * A file driver operates in a mode where it loads the mapping files of individual
- * classes on demand. This requires the user to adhere to the convention of 1 mapping
- * file per class and the file names of the mapping files must correspond to the full
- * class name, including namespace, with the namespace delimiters '\', replaced by dots '.'.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan H. Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-abstract class FileDriver implements MappingDriver
-{
-    /**
-     * @var FileLocator
-     */
-    protected $locator;
-
-    /**
-     * @var array|null
-     */
-    protected $classCache;
-
-    /**
-     * @var string|null
-     */
-    protected $globalBasename;
-
-    /**
-     * Initializes a new FileDriver that looks in the given path(s) for mapping
-     * documents and operates in the specified operating mode.
-     *
-     * @param string|array|FileLocator $locator       A FileLocator or one/multiple paths
-     *                                                where mapping documents can be found.
-     * @param string|null              $fileExtension
-     */
-    public function __construct($locator, $fileExtension = null)
-    {
-        if ($locator instanceof FileLocator) {
-            $this->locator = $locator;
-        } else {
-            $this->locator = new DefaultFileLocator((array)$locator, $fileExtension);
-        }
-    }
-
-    /**
-     * Sets the global basename.
-     *
-     * @param string $file
-     *
-     * @return void
-     */
-    public function setGlobalBasename($file)
-    {
-        $this->globalBasename = $file;
-    }
-
-    /**
-     * Retrieves the global basename.
-     *
-     * @return string|null
-     */
-    public function getGlobalBasename()
-    {
-        return $this->globalBasename;
-    }
-
-    /**
-     * Gets the element of schema meta data for the class from the mapping file.
-     * This will lazily load the mapping file if it is not loaded yet.
-     *
-     * @param string $className
-     *
-     * @return array The element of schema meta data.
-     *
-     * @throws MappingException
-     */
-    public function getElement($className)
-    {
-        if ($this->classCache === null) {
-            $this->initialize();
-        }
-
-        if (isset($this->classCache[$className])) {
-            return $this->classCache[$className];
-        }
-
-        $result = $this->loadMappingFile($this->locator->findMappingFile($className));
-        if (!isset($result[$className])) {
-            throw MappingException::invalidMappingFile($className, str_replace('\\', '.', $className) . $this->locator->getFileExtension());
-        }
-
-        return $result[$className];
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isTransient($className)
-    {
-        if ($this->classCache === null) {
-            $this->initialize();
-        }
-
-        if (isset($this->classCache[$className])) {
-            return false;
-        }
-
-        return !$this->locator->fileExists($className);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getAllClassNames()
-    {
-        if ($this->classCache === null) {
-            $this->initialize();
-        }
-
-        $classNames = (array)$this->locator->getAllClassNames($this->globalBasename);
-        if ($this->classCache) {
-            $classNames = array_merge(array_keys($this->classCache), $classNames);
-        }
-        return $classNames;
-    }
-
-    /**
-     * Loads a mapping file with the given name and returns a map
-     * from class/entity names to their corresponding file driver elements.
-     *
-     * @param string $file The mapping file to load.
-     *
-     * @return array
-     */
-    abstract protected function loadMappingFile($file);
-
-    /**
-     * Initializes the class cache from all the global files.
-     *
-     * Using this feature adds a substantial performance hit to file drivers as
-     * more metadata has to be loaded into memory than might actually be
-     * necessary. This may not be relevant to scenarios where caching of
-     * metadata is in place, however hits very hard in scenarios where no
-     * caching is used.
-     *
-     * @return void
-     */
-    protected function initialize()
-    {
-        $this->classCache = array();
-        if (null !== $this->globalBasename) {
-            foreach ($this->locator->getPaths() as $path) {
-                $file = $path.'/'.$this->globalBasename.$this->locator->getFileExtension();
-                if (is_file($file)) {
-                    $this->classCache = array_merge(
-                        $this->classCache,
-                        $this->loadMappingFile($file)
-                    );
-                }
-            }
-        }
-    }
-
-    /**
-     * Retrieves the locator used to discover mapping files by className.
-     *
-     * @return FileLocator
-     */
-    public function getLocator()
-    {
-        return $this->locator;
-    }
-
-    /**
-     * Sets the locator used to discover mapping files by className.
-     *
-     * @param FileLocator $locator
-     */
-    public function setLocator(FileLocator $locator)
-    {
-        $this->locator = $locator;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileLocator.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileLocator.php
deleted file mode 100644
index f622856..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileLocator.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping\Driver;
-
-/**
- * Locates the file that contains the metadata information for a given class name.
- *
- * This behavior is independent of the actual content of the file. It just detects
- * the file which is responsible for the given class name.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-interface FileLocator
-{
-    /**
-     * Locates mapping file for the given class name.
-     *
-     * @param string $className
-     *
-     * @return string
-     */
-    public function findMappingFile($className);
-
-    /**
-     * Gets all class names that are found with this file locator.
-     *
-     * @param string $globalBasename Passed to allow excluding the basename.
-     *
-     * @return array
-     */
-    public function getAllClassNames($globalBasename);
-
-    /**
-     * Checks if a file can be found for this class name.
-     *
-     * @param string $className
-     *
-     * @return bool
-     */
-    public function fileExists($className);
-
-    /**
-     * Gets all the paths that this file locator looks for mapping files.
-     *
-     * @return array
-     */
-    public function getPaths();
-
-    /**
-     * Gets the file extension that mapping files are suffixed with.
-     *
-     * @return string
-     */
-    public function getFileExtension();
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriver.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriver.php
deleted file mode 100644
index b5d7ec0..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriver.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping\Driver;
-
-use Doctrine\Common\Persistence\Mapping\ClassMetadata;
-
-/**
- * Contract for metadata drivers.
- *
- * @since  2.2
- * @author Jonathan H. Wage <jonwage@gmail.com>
- */
-interface MappingDriver
-{
-    /**
-     * Loads the metadata for the specified class into the provided container.
-     *
-     * @param string        $className
-     * @param ClassMetadata $metadata
-     *
-     * @return void
-     */
-    public function loadMetadataForClass($className, ClassMetadata $metadata);
-
-    /**
-     * Gets the names of all mapped classes known to this driver.
-     *
-     * @return array The names of all mapped classes known to this driver.
-     */
-    public function getAllClassNames();
-
-    /**
-     * Returns whether the class with the specified name should have its metadata loaded.
-     * This is only the case if it is either mapped as an Entity or a MappedSuperclass.
-     *
-     * @param string $className
-     *
-     * @return boolean
-     */
-    public function isTransient($className);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php
deleted file mode 100644
index 26a9f3e..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php
+++ /dev/null
@@ -1,165 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping\Driver;
-
-use Doctrine\Common\Persistence\Mapping\ClassMetadata;
-use Doctrine\Common\Persistence\Mapping\MappingException;
-
-/**
- * The DriverChain allows you to add multiple other mapping drivers for
- * certain namespaces.
- *
- * @since  2.2
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan H. Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-class MappingDriverChain implements MappingDriver
-{
-    /**
-     * The default driver.
-     *
-     * @var MappingDriver|null
-     */
-    private $defaultDriver = null;
-
-    /**
-     * @var array
-     */
-    private $drivers = array();
-
-    /**
-     * Gets the default driver.
-     *
-     * @return MappingDriver|null
-     */
-    public function getDefaultDriver()
-    {
-        return $this->defaultDriver;
-    }
-
-    /**
-     * Set the default driver.
-     *
-     * @param MappingDriver $driver
-     *
-     * @return void
-     */
-    public function setDefaultDriver(MappingDriver $driver)
-    {
-        $this->defaultDriver = $driver;
-    }
-
-    /**
-     * Adds a nested driver.
-     *
-     * @param MappingDriver $nestedDriver
-     * @param string        $namespace
-     *
-     * @return void
-     */
-    public function addDriver(MappingDriver $nestedDriver, $namespace)
-    {
-        $this->drivers[$namespace] = $nestedDriver;
-    }
-
-    /**
-     * Gets the array of nested drivers.
-     *
-     * @return array $drivers
-     */
-    public function getDrivers()
-    {
-        return $this->drivers;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function loadMetadataForClass($className, ClassMetadata $metadata)
-    {
-        /* @var $driver MappingDriver */
-        foreach ($this->drivers as $namespace => $driver) {
-            if (strpos($className, $namespace) === 0) {
-                $driver->loadMetadataForClass($className, $metadata);
-                return;
-            }
-        }
-
-        if (null !== $this->defaultDriver) {
-            $this->defaultDriver->loadMetadataForClass($className, $metadata);
-            return;
-        }
-
-        throw MappingException::classNotFoundInNamespaces($className, array_keys($this->drivers));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getAllClassNames()
-    {
-        $classNames = array();
-        $driverClasses = array();
-
-        /* @var $driver MappingDriver */
-        foreach ($this->drivers AS $namespace => $driver) {
-            $oid = spl_object_hash($driver);
-
-            if (!isset($driverClasses[$oid])) {
-                $driverClasses[$oid] = $driver->getAllClassNames();
-            }
-
-            foreach ($driverClasses[$oid] AS $className) {
-                if (strpos($className, $namespace) === 0) {
-                    $classNames[$className] = true;
-                }
-            }
-        }
-
-        if (null !== $this->defaultDriver) {
-            foreach ($this->defaultDriver->getAllClassNames() as $className) {
-                $classNames[$className] = true;
-            }
-        }
-
-        return array_keys($classNames);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isTransient($className)
-    {
-        /* @var $driver MappingDriver */
-        foreach ($this->drivers AS $namespace => $driver) {
-            if (strpos($className, $namespace) === 0) {
-                return $driver->isTransient($className);
-            }
-        }
-
-        if ($this->defaultDriver !== null) {
-            return $this->defaultDriver->isTransient($className);
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/PHPDriver.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/PHPDriver.php
deleted file mode 100644
index 6df54b0..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/PHPDriver.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping\Driver;
-
-use Doctrine\Common\Persistence\Mapping\ClassMetadata;
-
-/**
- * The PHPDriver includes php files which just populate ClassMetadataInfo
- * instances with plain PHP code.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan H. Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-class PHPDriver extends FileDriver
-{
-    /**
-     * @var ClassMetadata
-     */
-    protected $metadata;
-
-    /**
-     * {@inheritDoc}
-     */
-    public function __construct($locator, $fileExtension = null)
-    {
-        $fileExtension = ".php";
-        parent::__construct($locator, $fileExtension);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function loadMetadataForClass($className, ClassMetadata $metadata)
-    {
-        $this->metadata = $metadata;
-        $this->loadMappingFile($this->locator->findMappingFile($className));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function loadMappingFile($file)
-    {
-        $metadata = $this->metadata;
-        include $file;
-
-        return array($metadata->getName() => $metadata);
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/StaticPHPDriver.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/StaticPHPDriver.php
deleted file mode 100644
index df8f477..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/StaticPHPDriver.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping\Driver;
-
-use Doctrine\Common\Persistence\Mapping\ClassMetadata;
-use Doctrine\Common\Persistence\Mapping\MappingException;
-
-/**
- * The StaticPHPDriver calls a static loadMetadata() method on your entity
- * classes where you can manually populate the ClassMetadata instance.
- *
- * @link   www.doctrine-project.org
- * @since  2.2
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan H. Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-class StaticPHPDriver implements MappingDriver
-{
-    /**
-     * Paths of entity directories.
-     *
-     * @var array
-     */
-    private $paths = array();
-
-    /**
-     * Map of all class names.
-     *
-     * @var array
-     */
-    private $classNames;
-
-    /**
-     * Constructor.
-     *
-     * @param array|string $paths
-     */
-    public function __construct($paths)
-    {
-        $this->addPaths((array) $paths);
-    }
-
-    /**
-     * Adds paths.
-     *
-     * @param array $paths
-     *
-     * @return void
-     */
-    public function addPaths(array $paths)
-    {
-        $this->paths = array_unique(array_merge($this->paths, $paths));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadMetadataForClass($className, ClassMetadata $metadata)
-    {
-        $className::loadMetadata($metadata);
-    }
-
-    /**
-     * {@inheritDoc}
-     * @todo Same code exists in AnnotationDriver, should we re-use it somehow or not worry about it?
-     */
-    public function getAllClassNames()
-    {
-        if ($this->classNames !== null) {
-            return $this->classNames;
-        }
-
-        if (!$this->paths) {
-            throw MappingException::pathRequired();
-        }
-
-        $classes = array();
-        $includedFiles = array();
-
-        foreach ($this->paths as $path) {
-            if (!is_dir($path)) {
-                throw MappingException::fileMappingDriversRequireConfiguredDirectoryPath($path);
-            }
-
-            $iterator = new \RecursiveIteratorIterator(
-                new \RecursiveDirectoryIterator($path),
-                \RecursiveIteratorIterator::LEAVES_ONLY
-            );
-
-            foreach ($iterator as $file) {
-                if ($file->getBasename('.php') == $file->getBasename()) {
-                    continue;
-                }
-
-                $sourceFile = realpath($file->getPathName());
-                require_once $sourceFile;
-                $includedFiles[] = $sourceFile;
-            }
-        }
-
-        $declared = get_declared_classes();
-
-        foreach ($declared as $className) {
-            $rc = new \ReflectionClass($className);
-            $sourceFile = $rc->getFileName();
-            if (in_array($sourceFile, $includedFiles) && !$this->isTransient($className)) {
-                $classes[] = $className;
-            }
-        }
-
-        $this->classNames = $classes;
-
-        return $classes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isTransient($className)
-    {
-        return ! method_exists($className, 'loadMetadata');
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/SymfonyFileLocator.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/SymfonyFileLocator.php
deleted file mode 100644
index f334265..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/SymfonyFileLocator.php
+++ /dev/null
@@ -1,239 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping\Driver;
-
-use Doctrine\Common\Persistence\Mapping\MappingException;
-
-/**
- * The Symfony File Locator makes a simplifying assumptions compared
- * to the DefaultFileLocator. By assuming paths only contain entities of a certain
- * namespace the mapping files consists of the short classname only.
- *
- * @author  Fabien Potencier <fabien@symfony.com>
- * @author  Benjamin Eberlei <kontakt@beberlei.de>
- * @license MIT
- */
-class SymfonyFileLocator implements FileLocator
-{
-    /**
-     * The paths where to look for mapping files.
-     *
-     * @var array
-     */
-    protected $paths = array();
-
-    /**
-     * A map of mapping directory path to namespace prefix used to expand class shortnames.
-     *
-     * @var array
-     */
-    protected $prefixes = array();
-
-    /**
-     * File extension that is searched for.
-     *
-     * @var string|null
-     */
-    protected $fileExtension;
-
-    /**
-     * Represents PHP namespace delimiters when looking for files
-     *
-     * @var string
-     */
-    private $nsSeparator;
-
-    /**
-     * Constructor.
-     *
-     * @param array       $prefixes
-     * @param string|null $fileExtension
-     * @param string      $nsSeparator String which would be used when converting FQCN to filename and vice versa. Should not be empty
-     */
-    public function __construct(array $prefixes, $fileExtension = null, $nsSeparator = '.')
-    {
-        $this->addNamespacePrefixes($prefixes);
-        $this->fileExtension = $fileExtension;
-
-        if (empty($nsSeparator)) {
-            throw new \InvalidArgumentException('Namespace separator should not be empty');
-        }
-
-        $this->nsSeparator = (string) $nsSeparator;
-    }
-
-    /**
-     * Adds Namespace Prefixes.
-     *
-     * @param array $prefixes
-     *
-     * @return void
-     */
-    public function addNamespacePrefixes(array $prefixes)
-    {
-        $this->prefixes = array_merge($this->prefixes, $prefixes);
-        $this->paths = array_merge($this->paths, array_keys($prefixes));
-    }
-
-    /**
-     * Gets Namespace Prefixes.
-     *
-     * @return array
-     */
-    public function getNamespacePrefixes()
-    {
-        return $this->prefixes;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPaths()
-    {
-        return $this->paths;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getFileExtension()
-    {
-        return $this->fileExtension;
-    }
-
-    /**
-     * Sets the file extension used to look for mapping files under.
-     *
-     * @param string $fileExtension The file extension to set.
-     *
-     * @return void
-     */
-    public function setFileExtension($fileExtension)
-    {
-        $this->fileExtension = $fileExtension;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function fileExists($className)
-    {
-        $defaultFileName = str_replace('\\', $this->nsSeparator, $className).$this->fileExtension;
-        foreach ($this->paths as $path) {
-            if (!isset($this->prefixes[$path])) {
-                // global namespace class
-                if (is_file($path.DIRECTORY_SEPARATOR.$defaultFileName)) {
-                    return true;
-                }
-
-                continue;
-            }
-
-            $prefix = $this->prefixes[$path];
-
-            if (0 !== strpos($className, $prefix.'\\')) {
-                continue;
-            }
-
-            $filename = $path.'/'.strtr(substr($className, strlen($prefix)+1), '\\', $this->nsSeparator).$this->fileExtension;
-            return is_file($filename);
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getAllClassNames($globalBasename = null)
-    {
-        $classes = array();
-
-        if ($this->paths) {
-            foreach ((array) $this->paths as $path) {
-                if (!is_dir($path)) {
-                    throw MappingException::fileMappingDriversRequireConfiguredDirectoryPath($path);
-                }
-
-                $iterator = new \RecursiveIteratorIterator(
-                    new \RecursiveDirectoryIterator($path),
-                    \RecursiveIteratorIterator::LEAVES_ONLY
-                );
-
-                foreach ($iterator as $file) {
-                    $fileName = $file->getBasename($this->fileExtension);
-
-                    if ($fileName == $file->getBasename() || $fileName == $globalBasename) {
-                        continue;
-                    }
-
-                    // NOTE: All files found here means classes are not transient!
-                    if (isset($this->prefixes[$path])) {
-
-                        // Calculate namespace suffix for given prefix as a relative path from basepath to file path
-                        $nsSuffix = strtr(
-                            substr(realpath($file->getPath()), strlen(realpath($path))),
-                            $this->nsSeparator,
-                            '\\'
-                        );
-
-                        $classes[] = $this->prefixes[$path] . $nsSuffix . '\\' .str_replace($this->nsSeparator, '\\', $fileName);
-                    } else {
-                        $classes[] = str_replace($this->nsSeparator, '\\', $fileName);
-                    }
-                }
-            }
-        }
-
-        return $classes;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function findMappingFile($className)
-    {
-        $defaultFileName = str_replace('\\', $this->nsSeparator, $className).$this->fileExtension;
-        foreach ($this->paths as $path) {
-            if (!isset($this->prefixes[$path])) {
-                if (is_file($path.DIRECTORY_SEPARATOR.$defaultFileName)) {
-                    return $path.DIRECTORY_SEPARATOR.$defaultFileName;
-                }
-
-                continue;
-            }
-
-            $prefix = $this->prefixes[$path];
-
-            if (0 !== strpos($className, $prefix.'\\')) {
-                continue;
-            }
-
-            $filename = $path.'/'.strtr(substr($className, strlen($prefix)+1), '\\', $this->nsSeparator ).$this->fileExtension;
-            if (is_file($filename)) {
-                return $filename;
-            }
-
-            throw MappingException::mappingFileNotFound($className, $filename);
-        }
-
-        throw MappingException::mappingFileNotFound($className, substr($className, strrpos($className, '\\') + 1).$this->fileExtension);
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php
deleted file mode 100644
index 6e97485..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping;
-
-/**
- * A MappingException indicates that something is wrong with the mapping setup.
- *
- * @since 2.2
- */
-class MappingException extends \Exception
-{
-    /**
-     * @param string $className
-     * @param array  $namespaces
-     *
-     * @return self
-     */
-    public static function classNotFoundInNamespaces($className, $namespaces)
-    {
-        return new self("The class '" . $className . "' was not found in the ".
-            "chain configured namespaces " . implode(", ", $namespaces));
-    }
-
-    /**
-     * @return self
-     */
-    public static function pathRequired()
-    {
-        return new self("Specifying the paths to your entities is required ".
-            "in the AnnotationDriver to retrieve all class names.");
-    }
-
-    /**
-     * @param string|null $path
-     *
-     * @return self
-     */
-    public static function fileMappingDriversRequireConfiguredDirectoryPath($path = null)
-    {
-        if ( ! empty($path)) {
-            $path = '[' . $path . ']';
-        }
-
-        return new self(
-            'File mapping drivers must have a valid directory path, ' .
-            'however the given path ' . $path . ' seems to be incorrect!'
-        );
-    }
-
-    /**
-     * @param string $entityName
-     * @param string $fileName
-     *
-     * @return self
-     */
-    public static function mappingFileNotFound($entityName, $fileName)
-    {
-        return new self("No mapping file found named '$fileName' for class '$entityName'.");
-    }
-
-    /**
-     * @param string $entityName
-     * @param string $fileName
-     *
-     * @return self
-     */
-    public static function invalidMappingFile($entityName, $fileName)
-    {
-        return new self("Invalid mapping file '$fileName' for class '$entityName'.");
-    }
-
-    /**
-     * @param string $className
-     *
-     * @return self
-     */
-    public static function nonExistingClass($className)
-    {
-        return new self("Class '$className' does not exist");
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ReflectionService.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ReflectionService.php
deleted file mode 100644
index 0088ed5..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ReflectionService.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping;
-
-/**
- * Very simple reflection service abstraction.
- *
- * This is required inside metadata layers that may require either
- * static or runtime reflection.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-interface ReflectionService
-{
-    /**
-     * Returns an array of the parent classes (not interfaces) for the given class.
-     *
-     * @param string $class
-     *
-     * @throws \Doctrine\Common\Persistence\Mapping\MappingException
-     *
-     * @return array
-     */
-    public function getParentClasses($class);
-
-    /**
-     * Returns the shortname of a class.
-     *
-     * @param string $class
-     *
-     * @return string
-     */
-    public function getClassShortName($class);
-
-    /**
-     * @param string $class
-     *
-     * @return string
-     */
-    public function getClassNamespace($class);
-
-    /**
-     * Returns a reflection class instance or null.
-     *
-     * @param string $class
-     *
-     * @return \ReflectionClass|null
-     */
-    public function getClass($class);
-
-    /**
-     * Returns an accessible property (setAccessible(true)) or null.
-     *
-     * @param string $class
-     * @param string $property
-     *
-     * @return \ReflectionProperty|null
-     */
-    public function getAccessibleProperty($class, $property);
-
-    /**
-     * Checks if the class have a public method with the given name.
-     *
-     * @param mixed $class
-     * @param mixed $method
-     *
-     * @return bool
-     */
-    public function hasPublicMethod($class, $method);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php
deleted file mode 100644
index 4598d5a..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping;
-
-use Doctrine\Common\Reflection\RuntimePublicReflectionProperty;
-use ReflectionClass;
-use ReflectionException;
-use ReflectionMethod;
-use ReflectionProperty;
-
-/**
- * PHP Runtime Reflection Service.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class RuntimeReflectionService implements ReflectionService
-{
-    /**
-     * {@inheritDoc}
-     */
-    public function getParentClasses($class)
-    {
-        if ( ! class_exists($class)) {
-            throw MappingException::nonExistingClass($class);
-        }
-
-        return class_parents($class);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassShortName($class)
-    {
-        $reflectionClass = new ReflectionClass($class);
-
-        return $reflectionClass->getShortName();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassNamespace($class)
-    {
-        $reflectionClass = new ReflectionClass($class);
-
-        return $reflectionClass->getNamespaceName();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClass($class)
-    {
-        return new ReflectionClass($class);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getAccessibleProperty($class, $property)
-    {
-        $reflectionProperty = new ReflectionProperty($class, $property);
-
-        if ($reflectionProperty->isPublic()) {
-            $reflectionProperty = new RuntimePublicReflectionProperty($class, $property);
-        }
-
-        $reflectionProperty->setAccessible(true);
-
-        return $reflectionProperty;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function hasPublicMethod($class, $method)
-    {
-        try {
-            $reflectionMethod = new ReflectionMethod($class, $method);
-        } catch (ReflectionException $e) {
-            return false;
-        }
-
-        return $reflectionMethod->isPublic();
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/StaticReflectionService.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/StaticReflectionService.php
deleted file mode 100644
index e5bcb06..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/StaticReflectionService.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence\Mapping;
-
-/**
- * PHP Runtime Reflection Service.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class StaticReflectionService implements ReflectionService
-{
-    /**
-     * {@inheritDoc}
-     */
-    public function getParentClasses($class)
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassShortName($className)
-    {
-        if (strpos($className, '\\') !== false) {
-            $className = substr($className, strrpos($className, "\\")+1);
-        }
-        return $className;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClassNamespace($className)
-    {
-        $namespace = '';
-        if (strpos($className, '\\') !== false) {
-            $namespace = strrev(substr( strrev($className), strpos(strrev($className), '\\')+1 ));
-        }
-        return $namespace;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClass($class)
-    {
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getAccessibleProperty($class, $property)
-    {
-        return null;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function hasPublicMethod($class, $method)
-    {
-        return true;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManager.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManager.php
deleted file mode 100644
index 02208c9..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManager.php
+++ /dev/null
@@ -1,169 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence;
-
-/**
- * Contract for a Doctrine persistence layer ObjectManager class to implement.
- *
- * @link   www.doctrine-project.org
- * @since  2.1
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Jonathan Wage <jonwage@gmail.com>
- */
-interface ObjectManager
-{
-    /**
-     * Finds an object by its identifier.
-     *
-     * This is just a convenient shortcut for getRepository($className)->find($id).
-     *
-     * @param string $className The class name of the object to find.
-     * @param mixed  $id        The identity of the object to find.
-     *
-     * @return object The found object.
-     */
-    public function find($className, $id);
-
-    /**
-     * Tells the ObjectManager to make an instance managed and persistent.
-     *
-     * The object will be entered into the database as a result of the flush operation.
-     *
-     * NOTE: The persist operation always considers objects that are not yet known to
-     * this ObjectManager as NEW. Do not pass detached objects to the persist operation.
-     *
-     * @param object $object The instance to make managed and persistent.
-     *
-     * @return void
-     */
-    public function persist($object);
-
-    /**
-     * Removes an object instance.
-     *
-     * A removed object will be removed from the database as a result of the flush operation.
-     *
-     * @param object $object The object instance to remove.
-     *
-     * @return void
-     */
-    public function remove($object);
-
-    /**
-     * Merges the state of a detached object into the persistence context
-     * of this ObjectManager and returns the managed copy of the object.
-     * The object passed to merge will not become associated/managed with this ObjectManager.
-     *
-     * @param object $object
-     *
-     * @return object
-     */
-    public function merge($object);
-
-    /**
-     * Clears the ObjectManager. All objects that are currently managed
-     * by this ObjectManager become detached.
-     *
-     * @param string|null $objectName if given, only objects of this type will get detached.
-     *
-     * @return void
-     */
-    public function clear($objectName = null);
-
-    /**
-     * Detaches an object from the ObjectManager, causing a managed object to
-     * become detached. Unflushed changes made to the object if any
-     * (including removal of the object), will not be synchronized to the database.
-     * Objects which previously referenced the detached object will continue to
-     * reference it.
-     *
-     * @param object $object The object to detach.
-     *
-     * @return void
-     */
-    public function detach($object);
-
-    /**
-     * Refreshes the persistent state of an object from the database,
-     * overriding any local changes that have not yet been persisted.
-     *
-     * @param object $object The object to refresh.
-     *
-     * @return void
-     */
-    public function refresh($object);
-
-    /**
-     * Flushes all changes to objects that have been queued up to now to the database.
-     * This effectively synchronizes the in-memory state of managed objects with the
-     * database.
-     *
-     * @return void
-     */
-    public function flush();
-
-    /**
-     * Gets the repository for a class.
-     *
-     * @param string $className
-     *
-     * @return \Doctrine\Common\Persistence\ObjectRepository
-     */
-    public function getRepository($className);
-
-    /**
-     * Returns the ClassMetadata descriptor for a class.
-     *
-     * The class name must be the fully-qualified class name without a leading backslash
-     * (as it is returned by get_class($obj)).
-     *
-     * @param string $className
-     *
-     * @return \Doctrine\Common\Persistence\Mapping\ClassMetadata
-     */
-    public function getClassMetadata($className);
-
-    /**
-     * Gets the metadata factory used to gather the metadata of classes.
-     *
-     * @return \Doctrine\Common\Persistence\Mapping\ClassMetadataFactory
-     */
-    public function getMetadataFactory();
-
-    /**
-     * Helper method to initialize a lazy loading proxy or persistent collection.
-     *
-     * This method is a no-op for other objects.
-     *
-     * @param object $obj
-     *
-     * @return void
-     */
-    public function initializeObject($obj);
-
-    /**
-     * Checks if the object is part of the current UnitOfWork and therefore managed.
-     *
-     * @param object $object
-     *
-     * @return bool
-     */
-    public function contains($object);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerAware.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerAware.php
deleted file mode 100644
index 9bc248a..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerAware.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence;
-
-use Doctrine\Common\Persistence\Mapping\ClassMetadata;
-
-/**
- * Makes a Persistent Objects aware of its own object-manager.
- *
- * Using this interface the managing object manager and class metadata instances
- * are injected into the persistent object after construction. This allows
- * you to implement ActiveRecord functionality on top of the persistence-ignorance
- * that Doctrine propagates.
- *
- * Word of Warning: This is a very powerful hook to change how you can work with your domain models.
- * Using this hook will break the Single Responsibility Principle inside your Domain Objects
- * and increase the coupling of database and objects.
- *
- * Every ObjectManager has to implement this functionality itself.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-interface ObjectManagerAware
-{
-    /**
-     * Injects responsible ObjectManager and the ClassMetadata into this persistent object.
-     *
-     * @param ObjectManager $objectManager
-     * @param ClassMetadata $classMetadata
-     *
-     * @return void
-     */
-    public function injectObjectManager(ObjectManager $objectManager, ClassMetadata $classMetadata);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerDecorator.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerDecorator.php
deleted file mode 100644
index 8946475..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerDecorator.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence;
-
-/**
- * Base class to simplify ObjectManager decorators
- *
- * @license http://opensource.org/licenses/MIT MIT
- * @link    www.doctrine-project.org
- * @since   2.4
- * @author  Lars Strojny <lars@strojny.net>
- */
-abstract class ObjectManagerDecorator implements ObjectManager
-{
-    /**
-     * @var ObjectManager
-     */
-    protected $wrapped;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function find($className, $id)
-    {
-        return $this->wrapped->find($className, $id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function persist($object)
-    {
-        return $this->wrapped->persist($object);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($object)
-    {
-        return $this->wrapped->remove($object);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function merge($object)
-    {
-        return $this->wrapped->merge($object);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear($objectName = null)
-    {
-        return $this->wrapped->clear($objectName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function detach($object)
-    {
-        return $this->wrapped->detach($object);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function refresh($object)
-    {
-        return $this->wrapped->refresh($object);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function flush()
-    {
-        return $this->wrapped->flush();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRepository($className)
-    {
-        return $this->wrapped->getRepository($className);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getClassMetadata($className)
-    {
-        return $this->wrapped->getClassMetadata($className);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFactory()
-    {
-        return $this->wrapped->getMetadataFactory();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initializeObject($obj)
-    {
-        return $this->wrapped->initializeObject($obj);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function contains($object)
-    {
-        return $this->wrapped->contains($object);
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectRepository.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectRepository.php
deleted file mode 100644
index f607219..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectRepository.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence;
-
-/**
- * Contract for a Doctrine persistence layer ObjectRepository class to implement.
- *
- * @link   www.doctrine-project.org
- * @since  2.1
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Jonathan Wage <jonwage@gmail.com>
- */
-interface ObjectRepository
-{
-    /**
-     * Finds an object by its primary key / identifier.
-     *
-     * @param mixed $id The identifier.
-     *
-     * @return object The object.
-     */
-    public function find($id);
-
-    /**
-     * Finds all objects in the repository.
-     *
-     * @return array The objects.
-     */
-    public function findAll();
-
-    /**
-     * Finds objects by a set of criteria.
-     *
-     * Optionally sorting and limiting details can be passed. An implementation may throw
-     * an UnexpectedValueException if certain values of the sorting or limiting details are
-     * not supported.
-     *
-     * @param array      $criteria
-     * @param array|null $orderBy
-     * @param int|null   $limit
-     * @param int|null   $offset
-     *
-     * @return array The objects.
-     *
-     * @throws \UnexpectedValueException
-     */
-    public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null);
-
-    /**
-     * Finds a single object by a set of criteria.
-     *
-     * @param array $criteria The criteria.
-     *
-     * @return object The object.
-     */
-    public function findOneBy(array $criteria);
-
-    /**
-     * Returns the class name of the object managed by the repository.
-     *
-     * @return string
-     */
-    public function getClassName();
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/PersistentObject.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/PersistentObject.php
deleted file mode 100644
index a35b71a..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/PersistentObject.php
+++ /dev/null
@@ -1,254 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence;
-
-use Doctrine\Common\Collections\ArrayCollection;
-use Doctrine\Common\Collections\Collection;
-use Doctrine\Common\Persistence\Mapping\ClassMetadata;
-
-/**
- * PersistentObject base class that implements getter/setter methods for all mapped fields and associations
- * by overriding __call.
- *
- * This class is a forward compatible implementation of the PersistentObject trait.
- *
- * Limitations:
- *
- * 1. All persistent objects have to be associated with a single ObjectManager, multiple
- *    ObjectManagers are not supported. You can set the ObjectManager with `PersistentObject#setObjectManager()`.
- * 2. Setters and getters only work if a ClassMetadata instance was injected into the PersistentObject.
- *    This is either done on `postLoad` of an object or by accessing the global object manager.
- * 3. There are no hooks for setters/getters. Just implement the method yourself instead of relying on __call().
- * 4. Slower than handcoded implementations: An average of 7 method calls per access to a field and 11 for an association.
- * 5. Only the inverse side associations get autoset on the owning side as well. Setting objects on the owning side
- *    will not set the inverse side associations.
- *
- * @example
- *
- *  PersistentObject::setObjectManager($em);
- *
- *  class Foo extends PersistentObject
- *  {
- *      private $id;
- *  }
- *
- *  $foo = new Foo();
- *  $foo->getId(); // method exists through __call
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-abstract class PersistentObject implements ObjectManagerAware
-{
-    /**
-     * @var ObjectManager|null
-     */
-    private static $objectManager = null;
-
-    /**
-     * @var ClassMetadata|null
-     */
-    private $cm = null;
-
-    /**
-     * Sets the object manager responsible for all persistent object base classes.
-     *
-     * @param ObjectManager|null $objectManager
-     *
-     * @return void
-     */
-    static public function setObjectManager(ObjectManager $objectManager = null)
-    {
-        self::$objectManager = $objectManager;
-    }
-
-    /**
-     * @return ObjectManager|null
-     */
-    static public function getObjectManager()
-    {
-        return self::$objectManager;
-    }
-
-    /**
-     * Injects the Doctrine Object Manager.
-     *
-     * @param ObjectManager $objectManager
-     * @param ClassMetadata $classMetadata
-     *
-     * @return void
-     *
-     * @throws \RuntimeException
-     */
-    public function injectObjectManager(ObjectManager $objectManager, ClassMetadata $classMetadata)
-    {
-        if ($objectManager !== self::$objectManager) {
-            throw new \RuntimeException("Trying to use PersistentObject with different ObjectManager instances. " .
-                "Was PersistentObject::setObjectManager() called?");
-        }
-
-        $this->cm = $classMetadata;
-    }
-
-    /**
-     * Sets a persistent fields value.
-     *
-     * @param string $field
-     * @param array  $args
-     *
-     * @return void
-     *
-     * @throws \BadMethodCallException   When no persistent field exists by that name.
-     * @throws \InvalidArgumentException When the wrong target object type is passed to an association.
-     */
-    private function set($field, $args)
-    {
-        $this->initializeDoctrine();
-
-        if ($this->cm->hasField($field) && !$this->cm->isIdentifier($field)) {
-            $this->$field = $args[0];
-        } else if ($this->cm->hasAssociation($field) && $this->cm->isSingleValuedAssociation($field)) {
-            $targetClass = $this->cm->getAssociationTargetClass($field);
-            if (!($args[0] instanceof $targetClass) && $args[0] !== null) {
-                throw new \InvalidArgumentException("Expected persistent object of type '".$targetClass."'");
-            }
-            $this->$field = $args[0];
-            $this->completeOwningSide($field, $targetClass, $args[0]);
-        } else {
-            throw new \BadMethodCallException("no field with name '".$field."' exists on '".$this->cm->getName()."'");
-        }
-    }
-
-    /**
-     * Gets a persistent field value.
-     *
-     * @param string $field
-     *
-     * @return mixed
-     *
-     * @throws \BadMethodCallException When no persistent field exists by that name.
-     */
-    private function get($field)
-    {
-        $this->initializeDoctrine();
-
-        if ( $this->cm->hasField($field) || $this->cm->hasAssociation($field) ) {
-            return $this->$field;
-        } else {
-            throw new \BadMethodCallException("no field with name '".$field."' exists on '".$this->cm->getName()."'");
-        }
-    }
-
-    /**
-     * If this is an inverse side association, completes the owning side.
-     *
-     * @param string        $field
-     * @param ClassMetadata $targetClass
-     * @param object        $targetObject
-     *
-     * @return void
-     */
-    private function completeOwningSide($field, $targetClass, $targetObject)
-    {
-        // add this object on the owning side as well, for obvious infinite recursion
-        // reasons this is only done when called on the inverse side.
-        if ($this->cm->isAssociationInverseSide($field)) {
-            $mappedByField = $this->cm->getAssociationMappedByTargetField($field);
-            $targetMetadata = self::$objectManager->getClassMetadata($targetClass);
-
-            $setter = ($targetMetadata->isCollectionValuedAssociation($mappedByField) ? "add" : "set").$mappedByField;
-            $targetObject->$setter($this);
-        }
-    }
-
-    /**
-     * Adds an object to a collection.
-     *
-     * @param string $field
-     * @param array  $args
-     *
-     * @return void
-     *
-     * @throws \BadMethodCallException
-     * @throws \InvalidArgumentException
-     */
-    private function add($field, $args)
-    {
-        $this->initializeDoctrine();
-
-        if ($this->cm->hasAssociation($field) && $this->cm->isCollectionValuedAssociation($field)) {
-            $targetClass = $this->cm->getAssociationTargetClass($field);
-            if (!($args[0] instanceof $targetClass)) {
-                throw new \InvalidArgumentException("Expected persistent object of type '".$targetClass."'");
-            }
-            if (!($this->$field instanceof Collection)) {
-                $this->$field = new ArrayCollection($this->$field ?: array());
-            }
-            $this->$field->add($args[0]);
-            $this->completeOwningSide($field, $targetClass, $args[0]);
-        } else {
-            throw new \BadMethodCallException("There is no method add".$field."() on ".$this->cm->getName());
-        }
-    }
-
-    /**
-     * Initializes Doctrine Metadata for this class.
-     *
-     * @return void
-     *
-     * @throws \RuntimeException
-     */
-    private function initializeDoctrine()
-    {
-        if ($this->cm !== null) {
-            return;
-        }
-
-        if (!self::$objectManager) {
-            throw new \RuntimeException("No runtime object manager set. Call PersistentObject#setObjectManager().");
-        }
-
-        $this->cm = self::$objectManager->getClassMetadata(get_class($this));
-    }
-
-    /**
-     * Magic methods.
-     *
-     * @param string $method
-     * @param array  $args
-     *
-     * @return mixed
-     *
-     * @throws \BadMethodCallException
-     */
-    public function __call($method, $args)
-    {
-        $command = substr($method, 0, 3);
-        $field = lcfirst(substr($method, 3));
-        if ($command == "set") {
-            $this->set($field, $args);
-        } else if ($command == "get") {
-            return $this->get($field);
-        } else if ($command == "add") {
-            $this->add($field, $args);
-        } else {
-            throw new \BadMethodCallException("There is no method ".$method." on ".$this->cm->getName());
-        }
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Proxy.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Proxy.php
deleted file mode 100644
index 3369eb9..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Proxy.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Persistence;
-
-/**
- * Interface for proxy classes.
- *
- * @author Roman Borschel <roman@code-factory.org>
- * @since  2.2
- */
-interface Proxy
-{
-    /**
-     * Marker for Proxy class names.
-     *
-     * @var string
-     */
-    const MARKER = '__CG__';
-
-    /**
-     * Length of the proxy marker.
-     *
-     * @var integer
-     */
-    const MARKER_LENGTH = 6;
-
-    /**
-     * Initializes this proxy if its not yet initialized.
-     *
-     * Acts as a no-op if already initialized.
-     *
-     * @return void
-     */
-    public function __load();
-
-    /**
-     * Returns whether this proxy is initialized or not.
-     *
-     * @return bool
-     */
-    public function __isInitialized();
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/PropertyChangedListener.php b/vendor/doctrine/common/lib/Doctrine/Common/PropertyChangedListener.php
deleted file mode 100644
index 1a59cd4..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/PropertyChangedListener.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common;
-
-/**
- * Contract for classes that are potential listeners of a <tt>NotifyPropertyChanged</tt>
- * implementor.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-interface PropertyChangedListener
-{
-    /**
-     * Notifies the listener of a property change.
-     *
-     * @param object $sender       The object on which the property changed.
-     * @param string $propertyName The name of the property that changed.
-     * @param mixed  $oldValue     The old value of the property that changed.
-     * @param mixed  $newValue     The new value of the property that changed.
-     *
-     * @return void
-     */
-    function propertyChanged($sender, $propertyName, $oldValue, $newValue);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php
deleted file mode 100644
index bc54690..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php
+++ /dev/null
@@ -1,248 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Proxy;
-
-use Doctrine\Common\Persistence\Mapping\ClassMetadata;
-use Doctrine\Common\Persistence\Mapping\ClassMetadataFactory;
-use Doctrine\Common\Proxy\Exception\InvalidArgumentException;
-use Doctrine\Common\Proxy\Exception\OutOfBoundsException;
-use Doctrine\Common\Util\ClassUtils;
-
-/**
- * Abstract factory for proxy objects.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-abstract class AbstractProxyFactory
-{
-    /**
-     * Never autogenerate a proxy and rely that it was generated by some
-     * process before deployment.
-     *
-     * @var integer
-     */
-    const AUTOGENERATE_NEVER = 0;
-
-    /**
-     * Always generates a new proxy in every request.
-     *
-     * This is only sane during development.
-     *
-     * @var integer
-     */
-    const AUTOGENERATE_ALWAYS = 1;
-
-    /**
-     * Autogenerate the proxy class when the proxy file does not exist.
-     *
-     * This strategy causes a file exists call whenever any proxy is used the
-     * first time in a request.
-     *
-     * @var integer
-     */
-    const AUTOGENERATE_FILE_NOT_EXISTS = 2;
-
-    /**
-     * Generate the proxy classes using eval().
-     *
-     * This strategy is only sane for development, and even then it gives me
-     * the creeps a little.
-     *
-     * @var integer
-     */
-    const AUTOGENERATE_EVAL = 3;
-
-    /**
-     * @var \Doctrine\Common\Persistence\Mapping\ClassMetadataFactory
-     */
-    private $metadataFactory;
-
-    /**
-     * @var \Doctrine\Common\Proxy\ProxyGenerator the proxy generator responsible for creating the proxy classes/files.
-     */
-    private $proxyGenerator;
-
-    /**
-     * @var bool Whether to automatically (re)generate proxy classes.
-     */
-    private $autoGenerate;
-
-    /**
-     * @var \Doctrine\Common\Proxy\ProxyDefinition[]
-     */
-    private $definitions = array();
-
-    /**
-     * @param \Doctrine\Common\Proxy\ProxyGenerator                     $proxyGenerator
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadataFactory $metadataFactory
-     * @param bool|int                                                  $autoGenerate
-     */
-    public function __construct(ProxyGenerator $proxyGenerator, ClassMetadataFactory $metadataFactory, $autoGenerate)
-    {
-        $this->proxyGenerator  = $proxyGenerator;
-        $this->metadataFactory = $metadataFactory;
-        $this->autoGenerate    = (int)$autoGenerate;
-    }
-
-    /**
-     * Gets a reference proxy instance for the entity of the given type and identified by
-     * the given identifier.
-     *
-     * @param  string $className
-     * @param  array  $identifier
-     *
-     * @return \Doctrine\Common\Proxy\Proxy
-     *
-     * @throws \Doctrine\Common\Proxy\Exception\OutOfBoundsException
-     */
-    public function getProxy($className, array $identifier)
-    {
-        $definition = isset($this->definitions[$className])
-            ? $this->definitions[$className]
-            : $this->getProxyDefinition($className);
-        $fqcn       = $definition->proxyClassName;
-        $proxy      = new $fqcn($definition->initializer, $definition->cloner);
-
-        foreach ($definition->identifierFields as $idField) {
-            if (! isset($identifier[$idField])) {
-                throw OutOfBoundsException::missingPrimaryKeyValue($className, $idField);
-            }
-
-            $definition->reflectionFields[$idField]->setValue($proxy, $identifier[$idField]);
-        }
-
-        return $proxy;
-    }
-
-    /**
-     * Generates proxy classes for all given classes.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata[] $classes The classes (ClassMetadata instances)
-     *                                                                      for which to generate proxies.
-     * @param string $proxyDir The target directory of the proxy classes. If not specified, the
-     *                         directory configured on the Configuration of the EntityManager used
-     *                         by this factory is used.
-     * @return int Number of generated proxies.
-     */
-    public function generateProxyClasses(array $classes, $proxyDir = null)
-    {
-        $generated = 0;
-
-        foreach ($classes as $class) {
-            if ($this->skipClass($class)) {
-                continue;
-            }
-
-            $proxyFileName = $this->proxyGenerator->getProxyFileName($class->getName(), $proxyDir);
-
-            $this->proxyGenerator->generateProxyClass($class, $proxyFileName);
-
-            $generated += 1;
-        }
-
-        return $generated;
-    }
-
-    /**
-     * Reset initialization/cloning logic for an un-initialized proxy
-     *
-     * @param \Doctrine\Common\Proxy\Proxy $proxy
-     *
-     * @return \Doctrine\Common\Proxy\Proxy
-     *
-     * @throws \Doctrine\Common\Proxy\Exception\InvalidArgumentException
-     */
-    public function resetUninitializedProxy(Proxy $proxy)
-    {
-        if ($proxy->__isInitialized()) {
-            throw InvalidArgumentException::unitializedProxyExpected($proxy);
-        }
-
-        $className  = ClassUtils::getClass($proxy);
-        $definition = isset($this->definitions[$className])
-            ? $this->definitions[$className]
-            : $this->getProxyDefinition($className);
-
-        $proxy->__setInitializer($definition->initializer);
-        $proxy->__setCloner($definition->cloner);
-
-        return $proxy;
-    }
-
-    /**
-     * Get a proxy definition for the given class name.
-     *
-     * @param string $className
-     *
-     * @return ProxyDefinition
-     */
-    private function getProxyDefinition($className)
-    {
-        $classMetadata = $this->metadataFactory->getMetadataFor($className);
-        $className     = $classMetadata->getName(); // aliases and case sensitivity
-
-        $this->definitions[$className] = $this->createProxyDefinition($className);
-        $proxyClassName                = $this->definitions[$className]->proxyClassName;
-
-        if ( ! class_exists($proxyClassName, false)) {
-            $fileName  = $this->proxyGenerator->getProxyFileName($className);
-
-            switch ($this->autoGenerate) {
-                case self::AUTOGENERATE_NEVER:
-                    require $fileName;
-                    break;
-
-                case self::AUTOGENERATE_FILE_NOT_EXISTS:
-                    if ( ! file_exists($fileName)) {
-                        $this->proxyGenerator->generateProxyClass($classMetadata, $fileName);
-                    }
-                    require $fileName;
-                    break;
-
-                case self::AUTOGENERATE_ALWAYS:
-                    $this->proxyGenerator->generateProxyClass($classMetadata, $fileName);
-                    require $fileName;
-                    break;
-
-                case self::AUTOGENERATE_EVAL:
-                    $this->proxyGenerator->generateProxyClass($classMetadata, false);
-                    break;
-            }
-        }
-
-        return $this->definitions[$className];
-    }
-
-    /**
-     * Determine if this class should be skipped during proxy generation.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $metadata
-     *
-     * @return bool
-     */
-    abstract protected function skipClass(ClassMetadata $metadata);
-
-    /**
-     * @param string $className
-     *
-     * @return ProxyDefinition
-     */
-    abstract protected function createProxyDefinition($className);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Autoloader.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Autoloader.php
deleted file mode 100644
index 0aa930b..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Autoloader.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Proxy;
-
-use Doctrine\Common\Proxy\Exception\InvalidArgumentException;
-
-/**
- * Special Autoloader for Proxy classes, which are not PSR-0 compliant.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class Autoloader
-{
-    /**
-     * Resolves proxy class name to a filename based on the following pattern.
-     *
-     * 1. Remove Proxy namespace from class name.
-     * 2. Remove namespace separators from remaining class name.
-     * 3. Return PHP filename from proxy-dir with the result from 2.
-     *
-     * @param string $proxyDir
-     * @param string $proxyNamespace
-     * @param string $className
-     *
-     * @return string
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function resolveFile($proxyDir, $proxyNamespace, $className)
-    {
-        if (0 !== strpos($className, $proxyNamespace)) {
-            throw InvalidArgumentException::notProxyClass($className, $proxyNamespace);
-        }
-
-        $className = str_replace('\\', '', substr($className, strlen($proxyNamespace) + 1));
-
-        return $proxyDir . DIRECTORY_SEPARATOR . $className . '.php';
-    }
-
-    /**
-     * Registers and returns autoloader callback for the given proxy dir and namespace.
-     *
-     * @param string        $proxyDir
-     * @param string        $proxyNamespace
-     * @param callable|null $notFoundCallback Invoked when the proxy file is not found.
-     *
-     * @return \Closure
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function register($proxyDir, $proxyNamespace, $notFoundCallback = null)
-    {
-        $proxyNamespace = ltrim($proxyNamespace, '\\');
-
-        if ( ! (null === $notFoundCallback || is_callable($notFoundCallback))) {
-            throw InvalidArgumentException::invalidClassNotFoundCallback($notFoundCallback);
-        }
-
-        $autoloader = function ($className) use ($proxyDir, $proxyNamespace, $notFoundCallback) {
-            if (0 === strpos($className, $proxyNamespace)) {
-                $file = Autoloader::resolveFile($proxyDir, $proxyNamespace, $className);
-
-                if ($notFoundCallback && ! file_exists($file)) {
-                    call_user_func($notFoundCallback, $proxyDir, $proxyNamespace, $className);
-                }
-
-                require $file;
-            }
-        };
-
-        spl_autoload_register($autoloader);
-
-        return $autoloader;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/InvalidArgumentException.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/InvalidArgumentException.php
deleted file mode 100644
index dff54d9..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Proxy\Exception;
-
-use Doctrine\Common\Persistence\Proxy;
-use InvalidArgumentException as BaseInvalidArgumentException;
-
-/**
- * Proxy Invalid Argument Exception.
- *
- * @link   www.doctrine-project.org
- * @since  2.4
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-class InvalidArgumentException extends BaseInvalidArgumentException implements ProxyException
-{
-    /**
-     * @return self
-     */
-    public static function proxyDirectoryRequired()
-    {
-        return new self('You must configure a proxy directory. See docs for details');
-    }
-
-    /**
-     * @param string $className
-     * @param string $proxyNamespace
-     *
-     * @return self
-     */
-    public static function notProxyClass($className, $proxyNamespace)
-    {
-        return new self(sprintf('The class "%s" is not part of the proxy namespace "%s"', $className, $proxyNamespace));
-    }
-
-    /**
-     * @param string $name
-     *
-     * @return self
-     */
-    public static function invalidPlaceholder($name)
-    {
-        return new self(sprintf('Provided placeholder for "%s" must be either a string or a valid callable', $name));
-    }
-
-    /**
-     * @return self
-     */
-    public static function proxyNamespaceRequired()
-    {
-        return new self('You must configure a proxy namespace');
-    }
-
-    /**
-     * @param Proxy $proxy
-     *
-     * @return self
-     */
-    public static function unitializedProxyExpected(Proxy $proxy)
-    {
-        return new self(sprintf('Provided proxy of type "%s" must not be initialized.', get_class($proxy)));
-    }
-
-    /**
-     * @param mixed $callback
-     *
-     * @return self
-     */
-    public static function invalidClassNotFoundCallback($callback)
-    {
-        $type = is_object($callback) ? get_class($callback) : gettype($callback);
-
-        return new self(sprintf('Invalid \$notFoundCallback given: must be a callable, "%s" given', $type));
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/OutOfBoundsException.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/OutOfBoundsException.php
deleted file mode 100644
index 3c7415c..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/OutOfBoundsException.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Proxy\Exception;
-
-use OutOfBoundsException as BaseOutOfBoundsException;
-
-/**
- * Proxy Invalid Argument Exception.
- *
- * @link   www.doctrine-project.org
- * @author Fredrik Wendel <fredrik_w@users.sourceforge.net>
- */
-class OutOfBoundsException extends BaseOutOfBoundsException implements ProxyException
-{
-    /**
-     * @param string $className
-     * @param string $idField
-     *
-     * @return self
-     */
-    public static function missingPrimaryKeyValue($className, $idField)
-    {
-        return new self(sprintf("Missing value for primary key %s on %s", $idField, $className));
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/ProxyException.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/ProxyException.php
deleted file mode 100644
index 0d1ff14..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/ProxyException.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Proxy\Exception;
-
-/**
- * Base exception interface for proxy exceptions.
- *
- * @link   www.doctrine-project.org
- * @since  2.4
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-interface ProxyException
-{
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/UnexpectedValueException.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/UnexpectedValueException.php
deleted file mode 100644
index 154b917..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/UnexpectedValueException.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Proxy\Exception;
-
-use UnexpectedValueException as BaseUnexpectedValueException;
-
-/**
- * Proxy Unexpected Value Exception.
- *
- * @link   www.doctrine-project.org
- * @since  2.4
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-class UnexpectedValueException extends BaseUnexpectedValueException implements ProxyException
-{
-    /**
-     * @param string $proxyDirectory
-     *
-     * @return self
-     */
-    public static function proxyDirectoryNotWritable($proxyDirectory)
-    {
-        return new self(sprintf('Your proxy directory "%s" must be writable', $proxyDirectory));
-    }
-
-    /**
-     * @param string     $className
-     * @param string     $methodName
-     * @param string     $parameterName
-     * @param \Exception $previous
-     *
-     * @return self
-     */
-    public static function invalidParameterTypeHint($className, $methodName, $parameterName, \Exception $previous)
-    {
-        return new self(
-            sprintf(
-                'The type hint of parameter "%s" in method "%s" in class "%s" is invalid.',
-                $parameterName,
-                $methodName,
-                $className
-            ),
-            0,
-            $previous
-        );
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Proxy.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Proxy.php
deleted file mode 100644
index bd2b088..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Proxy.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Proxy;
-
-use Closure;
-use Doctrine\Common\Persistence\Proxy as BaseProxy;
-
-/**
- * Interface for proxy classes.
- *
- * @author Roman Borschel <roman@code-factory.org>
- * @author Marco Pivetta  <ocramius@gmail.com>
- * @since  2.4
- */
-interface Proxy extends BaseProxy
-{
-    /**
-     * Marks the proxy as initialized or not.
-     *
-     * @param boolean $initialized
-     *
-     * @return void
-     */
-    public function __setInitialized($initialized);
-
-    /**
-     * Sets the initializer callback to be used when initializing the proxy. That
-     * initializer should accept 3 parameters: $proxy, $method and $params. Those
-     * are respectively the proxy object that is being initialized, the method name
-     * that triggered initialization and the parameters passed to that method.
-     *
-     * @param Closure|null $initializer
-     *
-     * @return void
-     */
-    public function __setInitializer(Closure $initializer = null);
-
-    /**
-     * Retrieves the initializer callback used to initialize the proxy.
-     *
-     * @see __setInitializer
-     *
-     * @return Closure|null
-     */
-    public function __getInitializer();
-
-    /**
-     * Sets the callback to be used when cloning the proxy. That initializer should accept
-     * a single parameter, which is the cloned proxy instance itself.
-     *
-     * @param Closure|null $cloner
-     *
-     * @return void
-     */
-    public function __setCloner(Closure $cloner = null);
-
-    /**
-     * Retrieves the callback to be used when cloning the proxy.
-     *
-     * @see __setCloner
-     *
-     * @return Closure|null
-     */
-    public function __getCloner();
-
-    /**
-     * Retrieves the list of lazy loaded properties for a given proxy
-     *
-     * @return array Keys are the property names, and values are the default values
-     *               for those properties.
-     */
-    public function __getLazyProperties();
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyDefinition.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyDefinition.php
deleted file mode 100644
index 48b149a..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyDefinition.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Proxy;
-
-/**
- * Definition structure how to create a proxy.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class ProxyDefinition
-{
-    /**
-     * @var string
-     */
-    public $proxyClassName;
-
-    /**
-     * @var array
-     */
-    public $identifierFields;
-
-    /**
-     * @var \ReflectionProperty[]
-     */
-    public $reflectionFields;
-
-    /**
-     * @var callable
-     */
-    public $initializer;
-
-    /**
-     * @var callable
-     */
-    public $cloner;
-
-    /**
-     * @param string   $proxyClassName
-     * @param array    $identifierFields
-     * @param array    $reflectionFields
-     * @param callable $initializer
-     * @param callable $cloner
-     */
-    public function __construct($proxyClassName, array $identifierFields, array $reflectionFields, $initializer, $cloner)
-    {
-        $this->proxyClassName   = $proxyClassName;
-        $this->identifierFields = $identifierFields;
-        $this->reflectionFields = $reflectionFields;
-        $this->initializer      = $initializer;
-        $this->cloner           = $cloner;
-    }
-}
-
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyGenerator.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyGenerator.php
deleted file mode 100644
index c9d0e2c..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyGenerator.php
+++ /dev/null
@@ -1,1006 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Proxy;
-
-use Doctrine\Common\Persistence\Mapping\ClassMetadata;
-use Doctrine\Common\Proxy\Exception\InvalidArgumentException;
-use Doctrine\Common\Proxy\Exception\UnexpectedValueException;
-use Doctrine\Common\Util\ClassUtils;
-
-/**
- * This factory is used to generate proxy classes.
- * It builds proxies from given parameters, a template and class metadata.
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- * @since  2.4
- */
-class ProxyGenerator
-{
-    /**
-     * Used to match very simple id methods that don't need
-     * to be decorated since the identifier is known.
-     */
-    const PATTERN_MATCH_ID_METHOD = '((public\s+)?(function\s+%s\s*\(\)\s*)\s*{\s*return\s*\$this->%s;\s*})i';
-
-    /**
-     * The namespace that contains all proxy classes.
-     *
-     * @var string
-     */
-    private $proxyNamespace;
-
-    /**
-     * The directory that contains all proxy classes.
-     *
-     * @var string
-     */
-    private $proxyDirectory;
-
-    /**
-     * Map of callables used to fill in placeholders set in the template.
-     *
-     * @var string[]|callable[]
-     */
-    protected $placeholders = array(
-        'baseProxyInterface'   => 'Doctrine\Common\Proxy\Proxy',
-        'additionalProperties' => '',
-    );
-
-    /**
-     * Template used as a blueprint to generate proxies.
-     *
-     * @var string
-     */
-    protected $proxyClassTemplate = '<?php
-
-namespace <namespace>;
-
-/**
- * DO NOT EDIT THIS FILE - IT WAS CREATED BY DOCTRINE\'S PROXY GENERATOR
- */
-class <proxyShortClassName> extends \<className> implements \<baseProxyInterface>
-{
-    /**
-     * @var \Closure the callback responsible for loading properties in the proxy object. This callback is called with
-     *      three parameters, being respectively the proxy object to be initialized, the method that triggered the
-     *      initialization process and an array of ordered parameters that were passed to that method.
-     *
-     * @see \Doctrine\Common\Persistence\Proxy::__setInitializer
-     */
-    public $__initializer__;
-
-    /**
-     * @var \Closure the callback responsible of loading properties that need to be copied in the cloned object
-     *
-     * @see \Doctrine\Common\Persistence\Proxy::__setCloner
-     */
-    public $__cloner__;
-
-    /**
-     * @var boolean flag indicating if this object was already initialized
-     *
-     * @see \Doctrine\Common\Persistence\Proxy::__isInitialized
-     */
-    public $__isInitialized__ = false;
-
-    /**
-     * @var array properties to be lazy loaded, with keys being the property
-     *            names and values being their default values
-     *
-     * @see \Doctrine\Common\Persistence\Proxy::__getLazyProperties
-     */
-    public static $lazyPropertiesDefaults = array(<lazyPropertiesDefaults>);
-
-<additionalProperties>
-
-<constructorImpl>
-
-<magicGet>
-
-<magicSet>
-
-<magicIsset>
-
-<sleepImpl>
-
-<wakeupImpl>
-
-<cloneImpl>
-
-    /**
-     * Forces initialization of the proxy
-     */
-    public function __load()
-    {
-        $this->__initializer__ && $this->__initializer__->__invoke($this, \'__load\', array());
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal generated method: use only when explicitly handling proxy specific loading logic
-     */
-    public function __isInitialized()
-    {
-        return $this->__isInitialized__;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal generated method: use only when explicitly handling proxy specific loading logic
-     */
-    public function __setInitialized($initialized)
-    {
-        $this->__isInitialized__ = $initialized;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal generated method: use only when explicitly handling proxy specific loading logic
-     */
-    public function __setInitializer(\Closure $initializer = null)
-    {
-        $this->__initializer__ = $initializer;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal generated method: use only when explicitly handling proxy specific loading logic
-     */
-    public function __getInitializer()
-    {
-        return $this->__initializer__;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal generated method: use only when explicitly handling proxy specific loading logic
-     */
-    public function __setCloner(\Closure $cloner = null)
-    {
-        $this->__cloner__ = $cloner;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal generated method: use only when explicitly handling proxy specific cloning logic
-     */
-    public function __getCloner()
-    {
-        return $this->__cloner__;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @internal generated method: use only when explicitly handling proxy specific loading logic
-     * @static
-     */
-    public function __getLazyProperties()
-    {
-        return self::$lazyPropertiesDefaults;
-    }
-
-    <methods>
-}
-';
-
-    /**
-     * Initializes a new instance of the <tt>ProxyFactory</tt> class that is
-     * connected to the given <tt>EntityManager</tt>.
-     *
-     * @param string $proxyDirectory The directory to use for the proxy classes. It must exist.
-     * @param string $proxyNamespace The namespace to use for the proxy classes.
-     *
-     * @throws InvalidArgumentException
-     */
-    public function __construct($proxyDirectory, $proxyNamespace)
-    {
-        if ( ! $proxyDirectory) {
-            throw InvalidArgumentException::proxyDirectoryRequired();
-        }
-
-        if ( ! $proxyNamespace) {
-            throw InvalidArgumentException::proxyNamespaceRequired();
-        }
-
-        $this->proxyDirectory        = $proxyDirectory;
-        $this->proxyNamespace        = $proxyNamespace;
-    }
-
-    /**
-     * Sets a placeholder to be replaced in the template.
-     *
-     * @param string          $name
-     * @param string|callable $placeholder
-     *
-     * @throws InvalidArgumentException
-     */
-    public function setPlaceholder($name, $placeholder)
-    {
-        if ( ! is_string($placeholder) && ! is_callable($placeholder)) {
-            throw InvalidArgumentException::invalidPlaceholder($name);
-        }
-
-        $this->placeholders[$name] = $placeholder;
-    }
-
-    /**
-     * Sets the base template used to create proxy classes.
-     *
-     * @param string $proxyClassTemplate
-     */
-    public function setProxyClassTemplate($proxyClassTemplate)
-    {
-        $this->proxyClassTemplate = (string) $proxyClassTemplate;
-    }
-
-    /**
-     * Generates a proxy class file.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class    Metadata for the original class.
-     * @param string|bool                                        $fileName Filename (full path) for the generated class. If none is given, eval() is used.
-     *
-     * @throws UnexpectedValueException
-     */
-    public function generateProxyClass(ClassMetadata $class, $fileName = false)
-    {
-        preg_match_all('(<([a-zA-Z]+)>)', $this->proxyClassTemplate, $placeholderMatches);
-
-        $placeholderMatches = array_combine($placeholderMatches[0], $placeholderMatches[1]);
-        $placeholders       = array();
-
-        foreach ($placeholderMatches as $placeholder => $name) {
-            $placeholders[$placeholder] = isset($this->placeholders[$name])
-                ? $this->placeholders[$name]
-                : array($this, 'generate' . $name);
-        }
-
-        foreach ($placeholders as & $placeholder) {
-            if (is_callable($placeholder)) {
-                $placeholder = call_user_func($placeholder, $class);
-            }
-        }
-
-        $proxyCode = strtr($this->proxyClassTemplate, $placeholders);
-
-        if ( ! $fileName) {
-            $proxyClassName = $this->generateNamespace($class) . '\\' . $this->generateProxyShortClassName($class);
-
-            if ( ! class_exists($proxyClassName)) {
-                eval(substr($proxyCode, 5));
-            }
-
-            return;
-        }
-
-        $parentDirectory = dirname($fileName);
-
-        if ( ! is_dir($parentDirectory) && (false === @mkdir($parentDirectory, 0775, true))) {
-            throw UnexpectedValueException::proxyDirectoryNotWritable($this->proxyDirectory);
-        }
-
-        if ( ! is_writable($parentDirectory)) {
-            throw UnexpectedValueException::proxyDirectoryNotWritable($this->proxyDirectory);
-        }
-
-        $tmpFileName = $fileName . '.' . uniqid('', true);
-
-        file_put_contents($tmpFileName, $proxyCode);
-        chmod($tmpFileName, 0664);
-        rename($tmpFileName, $fileName);
-    }
-
-    /**
-     * Generates the proxy short class name to be used in the template.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateProxyShortClassName(ClassMetadata $class)
-    {
-        $proxyClassName = ClassUtils::generateProxyClassName($class->getName(), $this->proxyNamespace);
-        $parts          = explode('\\', strrev($proxyClassName), 2);
-
-        return strrev($parts[0]);
-    }
-
-    /**
-     * Generates the proxy namespace.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateNamespace(ClassMetadata $class)
-    {
-        $proxyClassName = ClassUtils::generateProxyClassName($class->getName(), $this->proxyNamespace);
-        $parts = explode('\\', strrev($proxyClassName), 2);
-
-        return strrev($parts[1]);
-    }
-
-    /**
-     * Generates the original class name.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateClassName(ClassMetadata $class)
-    {
-        return ltrim($class->getName(), '\\');
-    }
-
-    /**
-     * Generates the array representation of lazy loaded public properties and their default values.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateLazyPropertiesDefaults(ClassMetadata $class)
-    {
-        $lazyPublicProperties = $this->getLazyLoadedPublicProperties($class);
-        $values               = array();
-
-        foreach ($lazyPublicProperties as $key => $value) {
-            $values[] = var_export($key, true) . ' => ' . var_export($value, true);
-        }
-
-        return implode(', ', $values);
-    }
-
-    /**
-     * Generates the constructor code (un-setting public lazy loaded properties, setting identifier field values).
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateConstructorImpl(ClassMetadata $class)
-    {
-        $constructorImpl = <<<'EOT'
-    /**
-     * @param \Closure $initializer
-     * @param \Closure $cloner
-     */
-    public function __construct($initializer = null, $cloner = null)
-    {
-
-EOT;
-        $toUnset = array();
-
-        foreach ($this->getLazyLoadedPublicProperties($class) as $lazyPublicProperty => $unused) {
-            $toUnset[] = '$this->' . $lazyPublicProperty;
-        }
-
-        $constructorImpl .= (empty($toUnset) ? '' : '        unset(' . implode(', ', $toUnset) . ");\n")
-            . <<<'EOT'
-
-        $this->__initializer__ = $initializer;
-        $this->__cloner__      = $cloner;
-    }
-EOT;
-
-        return $constructorImpl;
-    }
-
-    /**
-     * Generates the magic getter invoked when lazy loaded public properties are requested.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateMagicGet(ClassMetadata $class)
-    {
-        $lazyPublicProperties = array_keys($this->getLazyLoadedPublicProperties($class));
-        $reflectionClass      = $class->getReflectionClass();
-        $hasParentGet         = false;
-        $returnReference      = '';
-        $inheritDoc           = '';
-
-        if ($reflectionClass->hasMethod('__get')) {
-            $hasParentGet = true;
-            $inheritDoc   = '{@inheritDoc}';
-
-            if ($reflectionClass->getMethod('__get')->returnsReference()) {
-                $returnReference = '& ';
-            }
-        }
-
-        if (empty($lazyPublicProperties) && ! $hasParentGet) {
-            return '';
-        }
-
-        $magicGet = <<<EOT
-    /**
-     * $inheritDoc
-     * @param string \$name
-     */
-    public function {$returnReference}__get(\$name)
-    {
-
-EOT;
-
-        if ( ! empty($lazyPublicProperties)) {
-            $magicGet .= <<<'EOT'
-        if (array_key_exists($name, $this->__getLazyProperties())) {
-            $this->__initializer__ && $this->__initializer__->__invoke($this, '__get', array($name));
-
-            return $this->$name;
-        }
-
-
-EOT;
-        }
-
-        if ($hasParentGet) {
-            $magicGet .= <<<'EOT'
-        $this->__initializer__ && $this->__initializer__->__invoke($this, '__get', array($name));
-
-        return parent::__get($name);
-
-EOT;
-        } else {
-            $magicGet .= <<<'EOT'
-        trigger_error(sprintf('Undefined property: %s::$%s', __CLASS__, $name), E_USER_NOTICE);
-
-EOT;
-        }
-
-        $magicGet .= "    }";
-
-        return $magicGet;
-    }
-
-    /**
-     * Generates the magic setter (currently unused).
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateMagicSet(ClassMetadata $class)
-    {
-        $lazyPublicProperties = $this->getLazyLoadedPublicProperties($class);
-        $hasParentSet         = $class->getReflectionClass()->hasMethod('__set');
-
-        if (empty($lazyPublicProperties) && ! $hasParentSet) {
-            return '';
-        }
-
-        $inheritDoc = $hasParentSet ? '{@inheritDoc}' : '';
-        $magicSet   = <<<EOT
-    /**
-     * $inheritDoc
-     * @param string \$name
-     * @param mixed  \$value
-     */
-    public function __set(\$name, \$value)
-    {
-
-EOT;
-
-        if ( ! empty($lazyPublicProperties)) {
-            $magicSet .= <<<'EOT'
-        if (array_key_exists($name, $this->__getLazyProperties())) {
-            $this->__initializer__ && $this->__initializer__->__invoke($this, '__set', array($name, $value));
-
-            $this->$name = $value;
-
-            return;
-        }
-
-
-EOT;
-        }
-
-        if ($hasParentSet) {
-            $magicSet .= <<<'EOT'
-        $this->__initializer__ && $this->__initializer__->__invoke($this, '__set', array($name, $value));
-
-        return parent::__set($name, $value);
-EOT;
-        } else {
-            $magicSet .= "        \$this->\$name = \$value;";
-        }
-
-        $magicSet .= "\n    }";
-
-        return $magicSet;
-    }
-
-    /**
-     * Generates the magic issetter invoked when lazy loaded public properties are checked against isset().
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateMagicIsset(ClassMetadata $class)
-    {
-        $lazyPublicProperties = array_keys($this->getLazyLoadedPublicProperties($class));
-        $hasParentIsset       = $class->getReflectionClass()->hasMethod('__isset');
-
-        if (empty($lazyPublicProperties) && ! $hasParentIsset) {
-            return '';
-        }
-
-        $inheritDoc = $hasParentIsset ? '{@inheritDoc}' : '';
-        $magicIsset = <<<EOT
-    /**
-     * $inheritDoc
-     * @param  string \$name
-     * @return boolean
-     */
-    public function __isset(\$name)
-    {
-
-EOT;
-
-        if ( ! empty($lazyPublicProperties)) {
-            $magicIsset .= <<<'EOT'
-        if (array_key_exists($name, $this->__getLazyProperties())) {
-            $this->__initializer__ && $this->__initializer__->__invoke($this, '__isset', array($name));
-
-            return isset($this->$name);
-        }
-
-
-EOT;
-        }
-
-        if ($hasParentIsset) {
-            $magicIsset .= <<<'EOT'
-        $this->__initializer__ && $this->__initializer__->__invoke($this, '__isset', array($name));
-
-        return parent::__isset($name);
-
-EOT;
-        } else {
-            $magicIsset .= "        return false;";
-        }
-
-        return $magicIsset . "\n    }";
-    }
-
-    /**
-     * Generates implementation for the `__sleep` method of proxies.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateSleepImpl(ClassMetadata $class)
-    {
-        $hasParentSleep = $class->getReflectionClass()->hasMethod('__sleep');
-        $inheritDoc     = $hasParentSleep ? '{@inheritDoc}' : '';
-        $sleepImpl      = <<<EOT
-    /**
-     * $inheritDoc
-     * @return array
-     */
-    public function __sleep()
-    {
-
-EOT;
-
-        if ($hasParentSleep) {
-            return $sleepImpl . <<<'EOT'
-        $properties = array_merge(array('__isInitialized__'), parent::__sleep());
-
-        if ($this->__isInitialized__) {
-            $properties = array_diff($properties, array_keys($this->__getLazyProperties()));
-        }
-
-        return $properties;
-    }
-EOT;
-        }
-
-        $allProperties = array('__isInitialized__');
-
-        /* @var $prop \ReflectionProperty */
-        foreach ($class->getReflectionClass()->getProperties() as $prop) {
-            if ($prop->isStatic()) {
-                continue;
-            }
-
-            $allProperties[] = $prop->isPrivate()
-                ? "\0" . $prop->getDeclaringClass()->getName() . "\0" . $prop->getName()
-                : $prop->getName();
-        }
-
-        $lazyPublicProperties = array_keys($this->getLazyLoadedPublicProperties($class));
-        $protectedProperties  = array_diff($allProperties, $lazyPublicProperties);
-
-        foreach ($allProperties as &$property) {
-            $property = var_export($property, true);
-        }
-
-        foreach ($protectedProperties as &$property) {
-            $property = var_export($property, true);
-        }
-
-        $allProperties       = implode(', ', $allProperties);
-        $protectedProperties = implode(', ', $protectedProperties);
-
-        return $sleepImpl . <<<EOT
-        if (\$this->__isInitialized__) {
-            return array($allProperties);
-        }
-
-        return array($protectedProperties);
-    }
-EOT;
-    }
-
-    /**
-     * Generates implementation for the `__wakeup` method of proxies.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateWakeupImpl(ClassMetadata $class)
-    {
-        $unsetPublicProperties = array();
-        $hasWakeup             = $class->getReflectionClass()->hasMethod('__wakeup');
-
-        foreach (array_keys($this->getLazyLoadedPublicProperties($class)) as $lazyPublicProperty) {
-            $unsetPublicProperties[] = '$this->' . $lazyPublicProperty;
-        }
-
-        $shortName  = $this->generateProxyShortClassName($class);
-        $inheritDoc = $hasWakeup ? '{@inheritDoc}' : '';
-        $wakeupImpl = <<<EOT
-    /**
-     * $inheritDoc
-     */
-    public function __wakeup()
-    {
-        if ( ! \$this->__isInitialized__) {
-            \$this->__initializer__ = function ($shortName \$proxy) {
-                \$proxy->__setInitializer(null);
-                \$proxy->__setCloner(null);
-
-                \$existingProperties = get_object_vars(\$proxy);
-
-                foreach (\$proxy->__getLazyProperties() as \$property => \$defaultValue) {
-                    if ( ! array_key_exists(\$property, \$existingProperties)) {
-                        \$proxy->\$property = \$defaultValue;
-                    }
-                }
-            };
-
-EOT;
-
-        if ( ! empty($unsetPublicProperties)) {
-            $wakeupImpl .= "\n            unset(" . implode(', ', $unsetPublicProperties) . ");";
-        }
-
-        $wakeupImpl .= "\n        }";
-
-        if ($hasWakeup) {
-            $wakeupImpl .= "\n        parent::__wakeup();";
-        }
-
-        $wakeupImpl .= "\n    }";
-
-        return $wakeupImpl;
-    }
-
-    /**
-     * Generates implementation for the `__clone` method of proxies.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateCloneImpl(ClassMetadata $class)
-    {
-        $hasParentClone  = $class->getReflectionClass()->hasMethod('__clone');
-        $inheritDoc      = $hasParentClone ? '{@inheritDoc}' : '';
-        $callParentClone = $hasParentClone ? "\n        parent::__clone();\n" : '';
-
-        return <<<EOT
-    /**
-     * $inheritDoc
-     */
-    public function __clone()
-    {
-        \$this->__cloner__ && \$this->__cloner__->__invoke(\$this, '__clone', array());
-$callParentClone    }
-EOT;
-    }
-
-    /**
-     * Generates decorated methods by picking those available in the parent class.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return string
-     */
-    private function generateMethods(ClassMetadata $class)
-    {
-        $methods           = '';
-        $methodNames       = array();
-        $reflectionMethods = $class->getReflectionClass()->getMethods(\ReflectionMethod::IS_PUBLIC);
-        $skippedMethods    = array(
-            '__sleep'   => true,
-            '__clone'   => true,
-            '__wakeup'  => true,
-            '__get'     => true,
-            '__set'     => true,
-            '__isset'   => true,
-        );
-
-        foreach ($reflectionMethods as $method) {
-            $name = $method->getName();
-
-            if (
-                $method->isConstructor() ||
-                isset($skippedMethods[strtolower($name)]) ||
-                isset($methodNames[$name]) ||
-                $method->isFinal() ||
-                $method->isStatic() ||
-                ( ! $method->isPublic())
-            ) {
-                continue;
-            }
-
-            $methodNames[$name] = true;
-            $methods .= "\n    /**\n"
-                . "     * {@inheritDoc}\n"
-                . "     */\n"
-                . '    public function ';
-
-            if ($method->returnsReference()) {
-                $methods .= '&';
-            }
-
-            $methods .= $name . '(' . $this->buildParametersString($class, $method, $method->getParameters()) . ')';
-            $methods .= "\n" . '    {' . "\n";
-
-            if ($this->isShortIdentifierGetter($method, $class)) {
-                $identifier = lcfirst(substr($name, 3));
-                $fieldType  = $class->getTypeOfField($identifier);
-                $cast       = in_array($fieldType, array('integer', 'smallint')) ? '(int) ' : '';
-
-                $methods .= '        if ($this->__isInitialized__ === false) {' . "\n";
-                $methods .= '            return ' . $cast . ' parent::' . $method->getName() . "();\n";
-                $methods .= '        }' . "\n\n";
-            }
-
-            $invokeParamsString = implode(', ', $this->getParameterNamesForInvoke($method->getParameters()));
-            $callParamsString = implode(', ', $this->getParameterNamesForParentCall($method->getParameters()));
-
-            $methods .= "\n        \$this->__initializer__ "
-                . "&& \$this->__initializer__->__invoke(\$this, " . var_export($name, true)
-                . ", array(" . $invokeParamsString . "));"
-                . "\n\n        return parent::" . $name . '(' . $callParamsString . ');'
-                . "\n" . '    }' . "\n";
-        }
-
-        return $methods;
-    }
-
-    /**
-     * Generates the Proxy file name.
-     *
-     * @param string $className
-     * @param string $baseDirectory Optional base directory for proxy file name generation.
-     *                              If not specified, the directory configured on the Configuration of the
-     *                              EntityManager will be used by this factory.
-     *
-     * @return string
-     */
-    public function getProxyFileName($className, $baseDirectory = null)
-    {
-        $baseDirectory = $baseDirectory ?: $this->proxyDirectory;
-
-        return rtrim($baseDirectory, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . Proxy::MARKER
-            . str_replace('\\', '', $className) . '.php';
-    }
-
-    /**
-     * Checks if the method is a short identifier getter.
-     *
-     * What does this mean? For proxy objects the identifier is already known,
-     * however accessing the getter for this identifier usually triggers the
-     * lazy loading, leading to a query that may not be necessary if only the
-     * ID is interesting for the userland code (for example in views that
-     * generate links to the entity, but do not display anything else).
-     *
-     * @param \ReflectionMethod                                  $method
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return boolean
-     */
-    private function isShortIdentifierGetter($method, ClassMetadata $class)
-    {
-        $identifier = lcfirst(substr($method->getName(), 3));
-        $startLine = $method->getStartLine();
-        $endLine = $method->getEndLine();
-        $cheapCheck = (
-            $method->getNumberOfParameters() == 0
-            && substr($method->getName(), 0, 3) == 'get'
-            && in_array($identifier, $class->getIdentifier(), true)
-            && $class->hasField($identifier)
-            && (($endLine - $startLine) <= 4)
-        );
-
-        if ($cheapCheck) {
-            $code = file($method->getDeclaringClass()->getFileName());
-            $code = trim(implode(' ', array_slice($code, $startLine - 1, $endLine - $startLine + 1)));
-
-            $pattern = sprintf(self::PATTERN_MATCH_ID_METHOD, $method->getName(), $identifier);
-
-            if (preg_match($pattern, $code)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Generates the list of public properties to be lazy loaded, with their default values.
-     *
-     * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
-     *
-     * @return mixed[]
-     */
-    private function getLazyLoadedPublicProperties(ClassMetadata $class)
-    {
-        $defaultProperties = $class->getReflectionClass()->getDefaultProperties();
-        $properties = array();
-
-        foreach ($class->getReflectionClass()->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
-            $name = $property->getName();
-
-            if (($class->hasField($name) || $class->hasAssociation($name)) && ! $class->isIdentifier($name)) {
-                $properties[$name] = $defaultProperties[$name];
-            }
-        }
-
-        return $properties;
-    }
-
-    /**
-     * @param ClassMetadata          $class
-     * @param \ReflectionMethod      $method
-     * @param \ReflectionParameter[] $parameters
-     *
-     * @return string
-     */
-    private function buildParametersString(ClassMetadata $class, \ReflectionMethod $method, array $parameters)
-    {
-        $parameterDefinitions = array();
-
-        /* @var $param \ReflectionParameter */
-        foreach ($parameters as $param) {
-            $parameterDefinition = '';
-
-            if ($parameterType = $this->getParameterType($class, $method, $param)) {
-                $parameterDefinition .= $parameterType . ' ';
-            }
-
-            if ($param->isPassedByReference()) {
-                $parameterDefinition .= '&';
-            }
-
-            if (method_exists($param, 'isVariadic')) {
-                if ($param->isVariadic()) {
-                    $parameterDefinition .= '...';
-                }
-            }
-
-            $parameters[]     = '$' . $param->getName();
-            $parameterDefinition .= '$' . $param->getName();
-
-            if ($param->isDefaultValueAvailable()) {
-                $parameterDefinition .= ' = ' . var_export($param->getDefaultValue(), true);
-            }
-
-            $parameterDefinitions[] = $parameterDefinition;
-        }
-
-        return implode(', ', $parameterDefinitions);
-    }
-
-    /**
-     * @param ClassMetadata $class
-     * @param \ReflectionMethod $method
-     * @param \ReflectionParameter $parameter
-     *
-     * @return string|null
-     */
-    private function getParameterType(ClassMetadata $class, \ReflectionMethod $method, \ReflectionParameter $parameter)
-    {
-
-        // We need to pick the type hint class too
-        if ($parameter->isArray()) {
-            return 'array';
-        }
-
-        if (method_exists($parameter, 'isCallable') && $parameter->isCallable()) {
-            return 'callable';
-        }
-
-        try {
-            $parameterClass = $parameter->getClass();
-
-            if ($parameterClass) {
-                return '\\' . $parameterClass->getName();
-            }
-        } catch (\ReflectionException $previous) {
-            throw UnexpectedValueException::invalidParameterTypeHint(
-                $class->getName(),
-                $method->getName(),
-                $parameter->getName(),
-                $previous
-            );
-        }
-
-        return null;
-    }
-
-    /**
-     * @param \ReflectionParameter[] $parameters
-     *
-     * @return string[]
-     */
-    private function getParameterNamesForInvoke(array $parameters)
-    {
-        return array_map(
-            function (\ReflectionParameter $parameter) {
-                return '$' . $parameter->getName();
-            },
-            $parameters
-        );
-    }
-
-    /**
-     * @param \ReflectionParameter[] $parameters
-     *
-     * @return string[]
-     */
-    private function getParameterNamesForParentCall(array $parameters)
-    {
-        return array_map(
-            function (\ReflectionParameter $parameter) {
-                $name = '';
-
-                if (method_exists($parameter, 'isVariadic')) {
-                    if ($parameter->isVariadic()) {
-                        $name .= '...';
-                    }
-                }
-
-                $name .= '$' . $parameter->getName();
-
-                return $name;
-            },
-            $parameters
-        );
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ClassFinderInterface.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ClassFinderInterface.php
deleted file mode 100644
index 639fd69..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ClassFinderInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Reflection;
-
-/**
- * Finds a class in a PSR-0 structure.
- *
- * @author Karoly Negyesi <karoly@negyesi.net>
- */
-interface ClassFinderInterface
-{
-    /**
-     * Finds a class.
-     *
-     * @param string $class The name of the class.
-     *
-     * @return string|null The name of the class or NULL if not found.
-     */
-    public function findFile($class);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/Psr0FindFile.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/Psr0FindFile.php
deleted file mode 100644
index 418bb0f..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/Psr0FindFile.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Reflection;
-
-/**
- * Finds a class in a PSR-0 structure.
- *
- * @author Karoly Negyesi <karoly@negyesi.net>
- */
-class Psr0FindFile implements ClassFinderInterface
-{
-    /**
-     * The PSR-0 prefixes.
-     *
-     * @var array
-     */
-    protected $prefixes;
-
-    /**
-     * @param array $prefixes An array of prefixes. Each key is a PHP namespace and each value is
-     *                        a list of directories.
-     */
-    public function __construct($prefixes)
-    {
-        $this->prefixes = $prefixes;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function findFile($class)
-    {
-        $lastNsPos = strrpos($class, '\\');
-        if ('\\' == $class[0]) {
-            $class = substr($class, 1);
-        }
-
-        if (false !== $lastNsPos) {
-            // namespaced class name
-            $classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $lastNsPos)) . DIRECTORY_SEPARATOR;
-            $className = substr($class, $lastNsPos + 1);
-        } else {
-            // PEAR-like class name
-            $classPath = null;
-            $className = $class;
-        }
-
-        $classPath .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
-
-        foreach ($this->prefixes as $prefix => $dirs) {
-            if (0 === strpos($class, $prefix)) {
-                foreach ($dirs as $dir) {
-                    if (is_file($dir . DIRECTORY_SEPARATOR . $classPath)) {
-                        return $dir . DIRECTORY_SEPARATOR . $classPath;
-                    }
-                }
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ReflectionProviderInterface.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ReflectionProviderInterface.php
deleted file mode 100644
index 3d970ee..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ReflectionProviderInterface.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Reflection;
-
-interface ReflectionProviderInterface
-{
-    /**
-     * Gets the ReflectionClass equivalent for this class.
-     *
-     * @return \ReflectionClass
-     */
-    public function getReflectionClass();
-
-    /**
-     * Gets the ReflectionMethod equivalent for this class.
-     *
-     * @param string $name
-     *
-     * @return \ReflectionMethod
-     */
-    public function getReflectionMethod($name);
-
-    /**
-     * Gets the ReflectionProperty equivalent for this class.
-     *
-     * @param string $name
-     *
-     * @return \ReflectionProperty
-     */
-    public function getReflectionProperty($name);
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/RuntimePublicReflectionProperty.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/RuntimePublicReflectionProperty.php
deleted file mode 100644
index 4e8ef53..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/RuntimePublicReflectionProperty.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Reflection;
-
-use Doctrine\Common\Proxy\Proxy;
-use ReflectionProperty;
-
-/**
- * PHP Runtime Reflection Public Property - special overrides for public properties.
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- * @since  2.4
- */
-class RuntimePublicReflectionProperty extends ReflectionProperty
-{
-    /**
-     * {@inheritDoc}
-     *
-     * Checks is the value actually exist before fetching it.
-     * This is to avoid calling `__get` on the provided $object if it
-     * is a {@see \Doctrine\Common\Proxy\Proxy}.
-     */
-    public function getValue($object = null)
-    {
-        $name = $this->getName();
-
-        if ($object instanceof Proxy && ! $object->__isInitialized()) {
-            $originalInitializer = $object->__getInitializer();
-            $object->__setInitializer(null);
-            $val = isset($object->$name) ? $object->$name : null;
-            $object->__setInitializer($originalInitializer);
-
-            return $val;
-        }
-
-        return isset($object->$name) ? parent::getValue($object) : null;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Avoids triggering lazy loading via `__set` if the provided object
-     * is a {@see \Doctrine\Common\Proxy\Proxy}.
-     * @link https://bugs.php.net/bug.php?id=63463
-     */
-    public function setValue($object, $value = null)
-    {
-        if ( ! ($object instanceof Proxy && ! $object->__isInitialized())) {
-            parent::setValue($object, $value);
-
-            return;
-        }
-
-        $originalInitializer = $object->__getInitializer();
-        $object->__setInitializer(null);
-        parent::setValue($object, $value);
-        $object->__setInitializer($originalInitializer);
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionClass.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionClass.php
deleted file mode 100644
index b65979a..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionClass.php
+++ /dev/null
@@ -1,433 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Reflection;
-
-use ReflectionClass;
-use ReflectionException;
-
-class StaticReflectionClass extends ReflectionClass
-{
-    /**
-     * The static reflection parser object.
-     *
-     * @var StaticReflectionParser
-     */
-    private $staticReflectionParser;
-
-    /**
-     * @param StaticReflectionParser $staticReflectionParser
-     */
-    public function __construct(StaticReflectionParser $staticReflectionParser)
-    {
-        $this->staticReflectionParser = $staticReflectionParser;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getName()
-    {
-        return $this->staticReflectionParser->getClassName();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getDocComment()
-    {
-        return $this->staticReflectionParser->getDocComment();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getNamespaceName()
-    {
-        return $this->staticReflectionParser->getNamespaceName();
-    }
-
-    /**
-     * @return array
-     */
-    public function getUseStatements()
-    {
-        return $this->staticReflectionParser->getUseStatements();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethod($name)
-    {
-        return $this->staticReflectionParser->getReflectionMethod($name);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getProperty($name)
-    {
-        return $this->staticReflectionParser->getReflectionProperty($name);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public static function export($argument, $return = false)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getConstant($name)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getConstants()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getConstructor()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getDefaultProperties()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getEndLine()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getExtension()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getExtensionName()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getFileName()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getInterfaceNames()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getInterfaces()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getMethods($filter = null)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getModifiers()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getParentClass()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getProperties($filter = null)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getShortName()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getStartLine()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getStaticProperties()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getStaticPropertyValue($name, $default = '')
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getTraitAliases()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getTraitNames()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getTraits()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function hasConstant($name)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function hasMethod($name)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function hasProperty($name)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function implementsInterface($interface)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function inNamespace()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isAbstract()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isCloneable()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isFinal()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isInstance($object)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isInstantiable()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isInterface()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isInternal()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isIterateable()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isSubclassOf($class)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isTrait()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isUserDefined()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function newInstance($args)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function newInstanceArgs(array $args = array())
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function newInstanceWithoutConstructor()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function setStaticPropertyValue($name, $value)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function __toString()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionMethod.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionMethod.php
deleted file mode 100644
index 8d5380b..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionMethod.php
+++ /dev/null
@@ -1,362 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Reflection;
-
-use ReflectionException;
-use ReflectionMethod;
-
-class StaticReflectionMethod extends ReflectionMethod
-{
-    /**
-     * The PSR-0 parser object.
-     *
-     * @var StaticReflectionParser
-     */
-    protected $staticReflectionParser;
-
-    /**
-     * The name of the method.
-     *
-     * @var string
-     */
-    protected $methodName;
-
-    /**
-     * @param StaticReflectionParser $staticReflectionParser
-     * @param string                 $methodName
-     */
-    public function __construct(StaticReflectionParser $staticReflectionParser, $methodName)
-    {
-        $this->staticReflectionParser = $staticReflectionParser;
-        $this->methodName = $methodName;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getName()
-    {
-        return $this->methodName;
-    }
-
-    /**
-     * @return StaticReflectionParser
-     */
-    protected function getStaticReflectionParser()
-    {
-        return $this->staticReflectionParser->getStaticReflectionParserForDeclaringClass('method', $this->methodName);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getDeclaringClass()
-    {
-        return $this->getStaticReflectionParser()->getReflectionClass();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getNamespaceName()
-    {
-        return $this->getStaticReflectionParser()->getNamespaceName();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getDocComment()
-    {
-        return $this->getStaticReflectionParser()->getDocComment('method', $this->methodName);
-    }
-
-    /**
-     * @return array
-     */
-    public function getUseStatements()
-    {
-        return $this->getStaticReflectionParser()->getUseStatements();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public static function export($class, $name, $return = false)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClosure($object)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getModifiers()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getPrototype()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function invoke($object, $parameter = null)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function invokeArgs($object, array $args)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isAbstract()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isConstructor()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isDestructor()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isFinal()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isPrivate()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isProtected()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isPublic()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isStatic()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function setAccessible($accessible)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function __toString()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getClosureThis()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getEndLine()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getExtension()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getExtensionName()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getFileName()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getNumberOfParameters()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getNumberOfRequiredParameters()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getParameters()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getShortName()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getStartLine()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getStaticVariables()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function inNamespace()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isClosure()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isDeprecated()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isInternal()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isUserDefined()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function returnsReference()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionParser.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionParser.php
deleted file mode 100644
index 922404d..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionParser.php
+++ /dev/null
@@ -1,307 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Reflection;
-
-use Doctrine\Common\Annotations\TokenParser;
-use ReflectionException;
-
-/**
- * Parses a file for namespaces/use/class declarations.
- *
- * @author Karoly Negyesi <karoly@negyesi.net>
- */
-class StaticReflectionParser implements ReflectionProviderInterface
-{
-    /**
-     * The fully qualified class name.
-     *
-     * @var string
-     */
-    protected $className;
-
-    /**
-     * The short class name.
-     *
-     * @var string
-     */
-    protected $shortClassName;
-
-    /**
-     * Whether the caller only wants class annotations.
-     *
-     * @var boolean.
-     */
-    protected $classAnnotationOptimize;
-
-    /**
-     * Whether the parser has run.
-     *
-     * @var boolean
-     */
-    protected $parsed = false;
-
-    /**
-     * The namespace of the class.
-     *
-     * @var string
-     */
-    protected $namespace = '';
-
-    /**
-     * The use statements of the class.
-     *
-     * @var array
-     */
-    protected $useStatements = array();
-
-    /**
-     * The docComment of the class.
-     *
-     * @var string
-     */
-    protected $docComment = array(
-        'class' => '',
-        'property' => array(),
-        'method' => array()
-    );
-
-    /**
-     * The name of the class this class extends, if any.
-     *
-     * @var string
-     */
-    protected $parentClassName = '';
-
-    /**
-     * The parent PSR-0 Parser.
-     *
-     * @var \Doctrine\Common\Reflection\StaticReflectionParser
-     */
-    protected $parentStaticReflectionParser;
-
-    /**
-     * Parses a class residing in a PSR-0 hierarchy.
-     *
-     * @param string               $className               The full, namespaced class name.
-     * @param ClassFinderInterface $finder                  A ClassFinder object which finds the class.
-     * @param boolean              $classAnnotationOptimize Only retrieve the class docComment.
-     *                                                      Presumes there is only one statement per line.
-     */
-    public function __construct($className, $finder, $classAnnotationOptimize = false)
-    {
-        $this->className = ltrim($className, '\\');
-        $lastNsPos = strrpos($this->className, '\\');
-
-        if ($lastNsPos !== false) {
-            $this->namespace = substr($this->className, 0, $lastNsPos);
-            $this->shortClassName = substr($this->className, $lastNsPos + 1);
-        } else {
-            $this->shortClassName = $this->className;
-        }
-
-        $this->finder = $finder;
-        $this->classAnnotationOptimize = $classAnnotationOptimize;
-    }
-
-    /**
-     * @return void
-     */
-    protected function parse()
-    {
-        if ($this->parsed || !$fileName = $this->finder->findFile($this->className)) {
-            return;
-        }
-        $this->parsed = true;
-        $contents = file_get_contents($fileName);
-        if ($this->classAnnotationOptimize) {
-            if (preg_match("/\A.*^\s*((abstract|final)\s+)?class\s+{$this->shortClassName}\s+/sm", $contents, $matches)) {
-                $contents = $matches[0];
-            }
-        }
-        $tokenParser = new TokenParser($contents);
-        $docComment = '';
-        while ($token = $tokenParser->next(false)) {
-            if (is_array($token)) {
-                switch ($token[0]) {
-                    case T_USE:
-                        $this->useStatements = array_merge($this->useStatements, $tokenParser->parseUseStatement());
-                        break;
-                    case T_DOC_COMMENT:
-                        $docComment = $token[1];
-                        break;
-                    case T_CLASS:
-                        $this->docComment['class'] = $docComment;
-                        $docComment = '';
-                        break;
-                    case T_VAR:
-                    case T_PRIVATE:
-                    case T_PROTECTED:
-                    case T_PUBLIC:
-                        $token = $tokenParser->next();
-                        if ($token[0] === T_VARIABLE) {
-                            $propertyName = substr($token[1], 1);
-                            $this->docComment['property'][$propertyName] = $docComment;
-                            continue 2;
-                        }
-                        if ($token[0] !== T_FUNCTION) {
-                            // For example, it can be T_FINAL.
-                            continue 2;
-                        }
-                        // No break.
-                    case T_FUNCTION:
-                        // The next string after function is the name, but
-                        // there can be & before the function name so find the
-                        // string.
-                        while (($token = $tokenParser->next()) && $token[0] !== T_STRING);
-                        $methodName = $token[1];
-                        $this->docComment['method'][$methodName] = $docComment;
-                        $docComment = '';
-                        break;
-                    case T_EXTENDS:
-                        $this->parentClassName = $tokenParser->parseClass();
-                        $nsPos = strpos($this->parentClassName, '\\');
-                        $fullySpecified = false;
-                        if ($nsPos === 0) {
-                            $fullySpecified = true;
-                        } else {
-                            if ($nsPos) {
-                                $prefix = strtolower(substr($this->parentClassName, 0, $nsPos));
-                                $postfix = substr($this->parentClassName, $nsPos);
-                            } else {
-                                $prefix = strtolower($this->parentClassName);
-                                $postfix = '';
-                            }
-                            foreach ($this->useStatements as $alias => $use) {
-                                if ($alias == $prefix) {
-                                    $this->parentClassName = '\\' . $use . $postfix;
-                                    $fullySpecified = true;
-                              }
-                            }
-                        }
-                        if (!$fullySpecified) {
-                            $this->parentClassName = '\\' . $this->namespace . '\\' . $this->parentClassName;
-                        }
-                        break;
-                }
-            }
-        }
-    }
-
-    /**
-     * @return StaticReflectionParser
-     */
-    protected function getParentStaticReflectionParser()
-    {
-        if (empty($this->parentStaticReflectionParser)) {
-            $this->parentStaticReflectionParser = new static($this->parentClassName, $this->finder);
-        }
-
-        return $this->parentStaticReflectionParser;
-    }
-
-    /**
-     * @return string
-     */
-    public function getClassName()
-    {
-        return $this->className;
-    }
-
-    /**
-     * @return string
-     */
-    public function getNamespaceName()
-    {
-        return $this->namespace;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getReflectionClass()
-    {
-        return new StaticReflectionClass($this);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getReflectionMethod($methodName)
-    {
-        return new StaticReflectionMethod($this, $methodName);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getReflectionProperty($propertyName)
-    {
-        return new StaticReflectionProperty($this, $propertyName);
-    }
-
-    /**
-     * Gets the use statements from this file.
-     *
-     * @return array
-     */
-    public function getUseStatements()
-    {
-        $this->parse();
-
-        return $this->useStatements;
-    }
-
-    /**
-     * Gets the doc comment.
-     *
-     * @param string $type The type: 'class', 'property' or 'method'.
-     * @param string $name The name of the property or method, not needed for 'class'.
-     *
-     * @return string The doc comment, empty string if none.
-     */
-    public function getDocComment($type = 'class', $name = '')
-    {
-        $this->parse();
-
-        return $name ? $this->docComment[$type][$name] : $this->docComment[$type];
-    }
-
-    /**
-     * Gets the PSR-0 parser for the declaring class.
-     *
-     * @param string $type The type: 'property' or 'method'.
-     * @param string $name The name of the property or method.
-     *
-     * @return StaticReflectionParser A static reflection parser for the declaring class.
-     *
-     * @throws ReflectionException
-     */
-    public function getStaticReflectionParserForDeclaringClass($type, $name)
-    {
-        $this->parse();
-        if (isset($this->docComment[$type][$name])) {
-            return $this;
-        }
-        if (!empty($this->parentClassName)) {
-            return $this->getParentStaticReflectionParser()->getStaticReflectionParserForDeclaringClass($type, $name);
-        }
-        throw new ReflectionException('Invalid ' . $type . ' "' . $name . '"');
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionProperty.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionProperty.php
deleted file mode 100644
index 79b40d4..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionProperty.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Reflection;
-
-use ReflectionException;
-use ReflectionProperty;
-
-class StaticReflectionProperty extends ReflectionProperty
-{
-    /**
-     * The PSR-0 parser object.
-     *
-     * @var StaticReflectionParser
-     */
-    protected $staticReflectionParser;
-
-    /**
-     * The name of the property.
-     *
-     * @var string|null
-     */
-    protected $propertyName;
-
-    /**
-     * @param StaticReflectionParser $staticReflectionParser
-     * @param string|null            $propertyName
-     */
-    public function __construct(StaticReflectionParser $staticReflectionParser, $propertyName)
-    {
-        $this->staticReflectionParser = $staticReflectionParser;
-        $this->propertyName = $propertyName;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getName()
-    {
-        return $this->propertyName;
-    }
-
-    /**
-     * @return StaticReflectionParser
-     */
-    protected function getStaticReflectionParser()
-    {
-        return $this->staticReflectionParser->getStaticReflectionParserForDeclaringClass('property', $this->propertyName);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getDeclaringClass()
-    {
-        return $this->getStaticReflectionParser()->getReflectionClass();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getDocComment()
-    {
-        return $this->getStaticReflectionParser()->getDocComment('property', $this->propertyName);
-    }
-
-    /**
-     * @return array
-     */
-    public function getUseStatements()
-    {
-        return $this->getStaticReflectionParser()->getUseStatements();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public static function export ($class, $name, $return = false)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getModifiers()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getValue($object = null)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isDefault()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isPrivate()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isProtected()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isPublic()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isStatic()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function setAccessible ($accessible)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function setValue ($object, $value = null)
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function __toString()
-    {
-        throw new ReflectionException('Method not implemented');
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Util/ClassUtils.php b/vendor/doctrine/common/lib/Doctrine/Common/Util/ClassUtils.php
deleted file mode 100644
index 49dc7bb..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Util/ClassUtils.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Util;
-
-use Doctrine\Common\Persistence\Proxy;
-
-/**
- * Class and reflection related functionality for objects that
- * might or not be proxy objects at the moment.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Johannes Schmitt <schmittjoh@gmail.com>
- */
-class ClassUtils
-{
-    /**
-     * Gets the real class name of a class name that could be a proxy.
-     *
-     * @param string $class
-     *
-     * @return string
-     */
-    public static function getRealClass($class)
-    {
-        if (false === $pos = strrpos($class, '\\'.Proxy::MARKER.'\\')) {
-            return $class;
-        }
-
-        return substr($class, $pos + Proxy::MARKER_LENGTH + 2);
-    }
-
-    /**
-     * Gets the real class name of an object (even if its a proxy).
-     *
-     * @param object $object
-     *
-     * @return string
-     */
-    public static function getClass($object)
-    {
-        return self::getRealClass(get_class($object));
-    }
-
-    /**
-     * Gets the real parent class name of a class or object.
-     *
-     * @param string $className
-     *
-     * @return string
-     */
-    public static function getParentClass($className)
-    {
-        return get_parent_class( self::getRealClass( $className ) );
-    }
-
-    /**
-     * Creates a new reflection class.
-     *
-     * @param string $class
-     *
-     * @return \ReflectionClass
-     */
-    public static function newReflectionClass($class)
-    {
-        return new \ReflectionClass( self::getRealClass( $class ) );
-    }
-
-    /**
-     * Creates a new reflection object.
-     *
-     * @param object $object
-     *
-     * @return \ReflectionObject
-     */
-    public static function newReflectionObject($object)
-    {
-        return self::newReflectionClass( self::getClass( $object ) );
-    }
-
-    /**
-     * Given a class name and a proxy namespace returns the proxy name.
-     *
-     * @param string $className
-     * @param string $proxyNamespace
-     *
-     * @return string
-     */
-    public static function generateProxyClassName($className, $proxyNamespace)
-    {
-        return rtrim($proxyNamespace, '\\') . '\\'.Proxy::MARKER.'\\' . ltrim($className, '\\');
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Util/Debug.php b/vendor/doctrine/common/lib/Doctrine/Common/Util/Debug.php
deleted file mode 100644
index 0959ce5..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Util/Debug.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Util;
-
-use Doctrine\Common\Persistence\Proxy;
-
-/**
- * Static class containing most used debug methods.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Giorgio Sironi <piccoloprincipeazzurro@gmail.com>
- */
-final class Debug
-{
-    /**
-     * Private constructor (prevents instantiation).
-     */
-    private function __construct()
-    {
-    }
-
-    /**
-     * Prints a dump of the public, protected and private properties of $var.
-     *
-     * @link http://xdebug.org/
-     *
-     * @param mixed   $var       The variable to dump.
-     * @param integer $maxDepth  The maximum nesting level for object properties.
-     * @param boolean $stripTags Whether output should strip HTML tags.
-     * @param boolean $echo      Send the dumped value to the output buffer
-     *
-     * @return string
-     */
-    public static function dump($var, $maxDepth = 2, $stripTags = true, $echo = true)
-    {
-        $html = ini_get('html_errors');
-
-        if ($html !== true) {
-            ini_set('html_errors', true);
-        }
-
-        if (extension_loaded('xdebug')) {
-            ini_set('xdebug.var_display_max_depth', $maxDepth);
-        }
-
-        $var = self::export($var, $maxDepth++);
-
-        ob_start();
-        var_dump($var);
-
-        $dump = ob_get_contents();
-
-        ob_end_clean();
-
-        $dumpText = ($stripTags ? strip_tags(html_entity_decode($dump)) : $dump);
-
-        ini_set('html_errors', $html);
-        
-        if ($echo) {
-            echo $dumpText;
-        }
-        
-        return $dumpText;
-    }
-
-    /**
-     * @param mixed $var
-     * @param int   $maxDepth
-     *
-     * @return mixed
-     */
-    public static function export($var, $maxDepth)
-    {
-        $return = null;
-        $isObj = is_object($var);
-
-        if ($isObj && in_array('Doctrine\Common\Collections\Collection', class_implements($var))) {
-            $var = $var->toArray();
-        }
-
-        if ($maxDepth) {
-            if (is_array($var)) {
-                $return = array();
-
-                foreach ($var as $k => $v) {
-                    $return[$k] = self::export($v, $maxDepth - 1);
-                }
-            } else if ($isObj) {
-                $return = new \stdclass();
-                if ($var instanceof \DateTime) {
-                    $return->__CLASS__ = "DateTime";
-                    $return->date = $var->format('c');
-                    $return->timezone = $var->getTimeZone()->getName();
-                } else {
-                    $reflClass = ClassUtils::newReflectionObject($var);
-                    $return->__CLASS__ = ClassUtils::getClass($var);
-
-                    if ($var instanceof Proxy) {
-                        $return->__IS_PROXY__ = true;
-                        $return->__PROXY_INITIALIZED__ = $var->__isInitialized();
-                    }
-
-                    if ($var instanceof \ArrayObject || $var instanceof \ArrayIterator) {
-                        $return->__STORAGE__ = self::export($var->getArrayCopy(), $maxDepth - 1);
-                    }
-
-                    foreach ($reflClass->getProperties() as $reflProperty) {
-                        $name  = $reflProperty->getName();
-
-                        $reflProperty->setAccessible(true);
-                        $return->$name = self::export($reflProperty->getValue($var), $maxDepth - 1);
-                    }
-                }
-            } else {
-                $return = $var;
-            }
-        } else {
-            $return = is_object($var) ? get_class($var)
-                : (is_array($var) ? 'Array(' . count($var) . ')' : $var);
-        }
-
-        return $return;
-    }
-
-    /**
-     * Returns a string representation of an object.
-     *
-     * @param object $obj
-     *
-     * @return string
-     */
-    public static function toString($obj)
-    {
-        return method_exists($obj, '__toString') ? (string) $obj : get_class($obj) . '@' . spl_object_hash($obj);
-    }
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Util/Inflector.php b/vendor/doctrine/common/lib/Doctrine/Common/Util/Inflector.php
deleted file mode 100644
index 082dc78..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Util/Inflector.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Util;
-
-use Doctrine\Common\Inflector\Inflector as BaseInflector;
-
-/**
- * Doctrine inflector has static methods for inflecting text.
- *
- * Kept for backwards compatibility reasons, was moved to its own component.
- */
-class Inflector extends BaseInflector
-{
-}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Version.php b/vendor/doctrine/common/lib/Doctrine/Common/Version.php
deleted file mode 100644
index 80c1fbf..0000000
--- a/vendor/doctrine/common/lib/Doctrine/Common/Version.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common;
-
-/**
- * Class to store and retrieve the version of Doctrine.
- *
- * @link   www.doctrine-project.org
- * @since  2.0
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-class Version
-{
-    /**
-     * Current Doctrine Version.
-     */
-    const VERSION = '2.6.0-DEV';
-
-    /**
-     * Compares a Doctrine version with the current one.
-     *
-     * @param string $version Doctrine version to compare.
-     *
-     * @return int -1 if older, 0 if it is the same, 1 if version passed as argument is newer.
-     */
-    public static function compare($version)
-    {
-        $currentVersion = str_replace(' ', '', strtolower(self::VERSION));
-        $version = str_replace(' ', '', $version);
-
-        return version_compare($version, $currentVersion);
-    }
-}
diff --git a/vendor/doctrine/common/phpunit.xml.dist b/vendor/doctrine/common/phpunit.xml.dist
deleted file mode 100644
index f6fcf84..0000000
--- a/vendor/doctrine/common/phpunit.xml.dist
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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"
->
-    <testsuites>
-        <testsuite name="Doctrine Common Test Suite">
-            <directory>./tests/Doctrine/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./lib/Doctrine/</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/doctrine/inflector/.gitignore b/vendor/doctrine/inflector/.gitignore
deleted file mode 100644
index f2cb7f8..0000000
--- a/vendor/doctrine/inflector/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-vendor/
-composer.lock
-composer.phar
-phpunit.xml
diff --git a/vendor/doctrine/inflector/.travis.yml b/vendor/doctrine/inflector/.travis.yml
deleted file mode 100644
index 6b1d8ff..0000000
--- a/vendor/doctrine/inflector/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: php
-
-php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-install:
-    - composer --prefer-source install
diff --git a/vendor/doctrine/inflector/LICENSE b/vendor/doctrine/inflector/LICENSE
deleted file mode 100644
index 5e781fc..0000000
--- a/vendor/doctrine/inflector/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006-2013 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
-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/doctrine/inflector/README.md b/vendor/doctrine/inflector/README.md
deleted file mode 100644
index acb55a0..0000000
--- a/vendor/doctrine/inflector/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Doctrine Inflector
-
-Doctrine Inflector is a small library that can perform string manipulations
-with regard to upper-/lowercase and singular/plural forms of words.
-
-[![Build Status](https://travis-ci.org/doctrine/inflector.svg?branch=master)](https://travis-ci.org/doctrine/inflector)
diff --git a/vendor/doctrine/inflector/composer.json b/vendor/doctrine/inflector/composer.json
deleted file mode 100644
index a29c68c..0000000
--- a/vendor/doctrine/inflector/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "name": "doctrine/inflector",
-    "type": "library",
-    "description": "Common String Manipulations with regard to casing and singular/plural rules.",
-    "keywords": ["string", "inflection", "singularize", "pluralize"],
-    "homepage": "http://www.doctrine-project.org",
-    "license": "MIT",
-    "authors": [
-        {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
-        {"name": "Roman Borschel", "email": "roman@code-factory.org"},
-        {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
-        {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
-        {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
-    ],
-    "require": {
-        "php": ">=5.3.2"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "4.*"
-    },
-    "autoload": {
-        "psr-0": { "Doctrine\\Common\\Inflector\\": "lib/" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0.x-dev"
-        }
-    }
-}
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php b/vendor/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php
deleted file mode 100644
index b007b21..0000000
--- a/vendor/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php
+++ /dev/null
@@ -1,415 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Inflector;
-
-/**
- * Doctrine inflector has static methods for inflecting text.
- *
- * The methods in these classes are from several different sources collected
- * across several different php projects and several different authors. The
- * original author names and emails are not known.
- *
- * Pluralize & Singularize implementation are borrowed from CakePHP with some modifications.
- *
- * @link   www.doctrine-project.org
- * @since  1.0
- * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
- * @author Jonathan H. Wage <jonwage@gmail.com>
- */
-class Inflector
-{
-    /**
-     * Plural inflector rules.
-     *
-     * @var array
-     */
-    private static $plural = array(
-        'rules' => array(
-            '/(s)tatus$/i' => '\1\2tatuses',
-            '/(quiz)$/i' => '\1zes',
-            '/^(ox)$/i' => '\1\2en',
-            '/([m|l])ouse$/i' => '\1ice',
-            '/(matr|vert|ind)(ix|ex)$/i' => '\1ices',
-            '/(x|ch|ss|sh)$/i' => '\1es',
-            '/([^aeiouy]|qu)y$/i' => '\1ies',
-            '/(hive)$/i' => '\1s',
-            '/(?:([^f])fe|([lr])f)$/i' => '\1\2ves',
-            '/sis$/i' => 'ses',
-            '/([ti])um$/i' => '\1a',
-            '/(p)erson$/i' => '\1eople',
-            '/(m)an$/i' => '\1en',
-            '/(c)hild$/i' => '\1hildren',
-            '/(buffal|tomat)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',
-            '/s$/' => 's',
-            '/^$/' => '',
-            '/$/' => 's',
-        ),
-        'uninflected' => array(
-            '.*[nrlm]ese', '.*deer', '.*fish', '.*measles', '.*ois', '.*pox', '.*sheep', 'people', 'cookie'
-        ),
-        'irregular' => array(
-            'atlas' => 'atlases',
-            'beef' => 'beefs',
-            'brother' => 'brothers',
-            'cafe' => 'cafes',
-            'child' => 'children',
-            'cookie' => 'cookies',
-            'corpus' => 'corpuses',
-            'cow' => 'cows',
-            'criteria' => 'criterion',
-            'ganglion' => 'ganglions',
-            'genie' => 'genies',
-            'genus' => 'genera',
-            'graffito' => 'graffiti',
-            'hoof' => 'hoofs',
-            'human' => 'humans',
-            'loaf' => 'loaves',
-            'man' => 'men',
-            'money' => 'monies',
-            'mongoose' => 'mongooses',
-            'move' => 'moves',
-            'mythos' => 'mythoi',
-            'niche' => 'niches',
-            'numen' => 'numina',
-            'occiput' => 'occiputs',
-            'octopus' => 'octopuses',
-            'opus' => 'opuses',
-            'ox' => 'oxen',
-            'penis' => 'penises',
-            'person' => 'people',
-            'sex' => 'sexes',
-            'soliloquy' => 'soliloquies',
-            'testis' => 'testes',
-            'trilby' => 'trilbys',
-            'turf' => 'turfs',
-        )
-    );
-
-    /**
-     * Singular inflector rules.
-     *
-     * @var array
-     */
-    private static $singular = array(
-        'rules' => array(
-            '/(s)tatuses$/i' => '\1\2tatus',
-            '/^(.*)(menu)s$/i' => '\1\2',
-            '/(quiz)zes$/i' => '\\1',
-            '/(matr)ices$/i' => '\1ix',
-            '/(vert|ind)ices$/i' => '\1ex',
-            '/^(ox)en/i' => '\1',
-            '/(alias)(es)*$/i' => '\1',
-            '/(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',
-            '/(shoe|slave)s$/i' => '\1',
-            '/(o)es$/i' => '\1',
-            '/ouses$/' => 'ouse',
-            '/([^a])uses$/' => '\1us',
-            '/([m|l])ice$/i' => '\1ouse',
-            '/(x|ch|ss|sh)es$/i' => '\1',
-            '/(m)ovies$/i' => '\1\2ovie',
-            '/(s)eries$/i' => '\1\2eries',
-            '/([^aeiouy]|qu)ies$/i' => '\1y',
-            '/([lr])ves$/i' => '\1f',
-            '/(tive)s$/i' => '\1',
-            '/(hive)s$/i' => '\1',
-            '/(drive)s$/i' => '\1',
-            '/([^fo])ves$/i' => '\1fe',
-            '/(^analy)ses$/i' => '\1sis',
-            '/(analy|diagno|^ba|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' => '\1\2sis',
-            '/([ti])a$/i' => '\1um',
-            '/(p)eople$/i' => '\1\2erson',
-            '/(m)en$/i' => '\1an',
-            '/(c)hildren$/i' => '\1\2hild',
-            '/(n)ews$/i' => '\1\2ews',
-            '/eaus$/' => 'eau',
-            '/^(.*us)$/' => '\\1',
-            '/s$/i' => '',
-        ),
-        'uninflected' => array(
-            '.*[nrlm]ese',
-            '.*deer',
-            '.*fish',
-            '.*measles',
-            '.*ois',
-            '.*pox',
-            '.*sheep',
-            '.*ss',
-        ),
-        'irregular' => array(
-            'criterion' => 'criteria',
-            'curves' => 'curve',
-            'foes' => 'foe',
-            'waves' => 'wave',
-        )
-    );
-
-    /**
-     * Words that should not be inflected.
-     *
-     * @var array
-     */
-    private static $uninflected = array(
-        'Amoyese', 'bison', 'Borghese', 'bream', 'breeches', 'britches', 'buffalo', 'cantus',
-        'carp', 'chassis', 'clippers', 'cod', 'coitus', 'Congoese', 'contretemps', 'corps',
-        'debris', 'diabetes', 'djinn', 'eland', 'elk', 'equipment', 'Faroese', 'flounder',
-        'Foochowese', 'gallows', 'Genevese', 'Genoese', 'Gilbertese', 'graffiti',
-        'headquarters', 'herpes', 'hijinks', 'Hottentotese', 'information', 'innings',
-        'jackanapes', 'Kiplingese', 'Kongoese', 'Lucchese', 'mackerel', 'Maltese', '.*?media',
-        'mews', 'moose', 'mumps', 'Nankingese', 'news', 'nexus', 'Niasese',
-        'Pekingese', 'Piedmontese', 'pincers', 'Pistoiese', 'pliers', 'Portuguese',
-        'proceedings', 'rabies', 'rice', 'rhinoceros', 'salmon', 'Sarawakese', 'scissors',
-        'sea[- ]bass', 'series', 'Shavese', 'shears', 'siemens', 'species', 'staff', 'swine',
-        'testes', 'trousers', 'trout', 'tuna', 'Vermontese', 'Wenchowese', 'whiting',
-        'wildebeest', 'Yengeese'
-    );
-
-    /**
-     * Method cache array.
-     *
-     * @var array
-     */
-    private static $cache = array();
-
-    /**
-     * The initial state of Inflector so reset() works.
-     *
-     * @var array
-     */
-    private static $initialState = array();
-
-    /**
-     * Converts a word into the format for a Doctrine table name. Converts 'ModelName' to 'model_name'.
-     *
-     * @param string $word The word to tableize.
-     *
-     * @return string The tableized word.
-     */
-    public static function tableize($word)
-    {
-        return strtolower(preg_replace('~(?<=\\w)([A-Z])~', '_$1', $word));
-    }
-
-    /**
-     * Converts a word into the format for a Doctrine class name. Converts 'table_name' to 'TableName'.
-     *
-     * @param string $word The word to classify.
-     *
-     * @return string The classified word.
-     */
-    public static function classify($word)
-    {
-        return str_replace(" ", "", ucwords(strtr($word, "_-", "  ")));
-    }
-
-    /**
-     * Camelizes a word. This uses the classify() method and turns the first character to lowercase.
-     *
-     * @param string $word The word to camelize.
-     *
-     * @return string The camelized word.
-     */
-    public static function camelize($word)
-    {
-        return lcfirst(self::classify($word));
-    }
-
-    /**
-     * Clears Inflectors inflected value caches, and resets the inflection
-     * rules to the initial values.
-     *
-     * @return void
-     */
-    public static function reset()
-    {
-        if (empty(self::$initialState)) {
-            self::$initialState = get_class_vars('Inflector');
-
-            return;
-        }
-
-        foreach (self::$initialState as $key => $val) {
-            if ($key != 'initialState') {
-                self::${$key} = $val;
-            }
-        }
-    }
-
-    /**
-     * Adds custom inflection $rules, of either 'plural' or 'singular' $type.
-     *
-     * ### Usage:
-     *
-     * {{{
-     * Inflector::rules('plural', array('/^(inflect)or$/i' => '\1ables'));
-     * Inflector::rules('plural', array(
-     *     'rules' => array('/^(inflect)ors$/i' => '\1ables'),
-     *     'uninflected' => array('dontinflectme'),
-     *     'irregular' => array('red' => 'redlings')
-     * ));
-     * }}}
-     *
-     * @param string  $type  The type of inflection, either 'plural' or 'singular'
-     * @param array   $rules An array of rules to be added.
-     * @param boolean $reset If true, will unset default inflections for all
-     *                       new rules that are being defined in $rules.
-     *
-     * @return void
-     */
-    public static function rules($type, $rules, $reset = false)
-    {
-        foreach ($rules as $rule => $pattern) {
-            if ( ! is_array($pattern)) {
-                continue;
-            }
-
-            if ($reset) {
-                self::${$type}[$rule] = $pattern;
-            } else {
-                self::${$type}[$rule] = ($rule === 'uninflected')
-                    ? array_merge($pattern, self::${$type}[$rule])
-                    : $pattern + self::${$type}[$rule];
-            }
-
-            unset($rules[$rule], self::${$type}['cache' . ucfirst($rule)]);
-
-            if (isset(self::${$type}['merged'][$rule])) {
-                unset(self::${$type}['merged'][$rule]);
-            }
-
-            if ($type === 'plural') {
-                self::$cache['pluralize'] = self::$cache['tableize'] = array();
-            } elseif ($type === 'singular') {
-                self::$cache['singularize'] = array();
-            }
-        }
-
-        self::${$type}['rules'] = $rules + self::${$type}['rules'];
-    }
-
-    /**
-     * Returns a word in plural form.
-     *
-     * @param string $word The word in singular form.
-     *
-     * @return string The word in plural form.
-     */
-    public static function pluralize($word)
-    {
-        if (isset(self::$cache['pluralize'][$word])) {
-            return self::$cache['pluralize'][$word];
-        }
-
-        if (!isset(self::$plural['merged']['irregular'])) {
-            self::$plural['merged']['irregular'] = self::$plural['irregular'];
-        }
-
-        if (!isset(self::$plural['merged']['uninflected'])) {
-            self::$plural['merged']['uninflected'] = array_merge(self::$plural['uninflected'], self::$uninflected);
-        }
-
-        if (!isset(self::$plural['cacheUninflected']) || !isset(self::$plural['cacheIrregular'])) {
-            self::$plural['cacheUninflected'] = '(?:' . implode('|', self::$plural['merged']['uninflected']) . ')';
-            self::$plural['cacheIrregular']   = '(?:' . implode('|', array_keys(self::$plural['merged']['irregular'])) . ')';
-        }
-
-        if (preg_match('/(.*)\\b(' . self::$plural['cacheIrregular'] . ')$/i', $word, $regs)) {
-            self::$cache['pluralize'][$word] = $regs[1] . substr($word, 0, 1) . substr(self::$plural['merged']['irregular'][strtolower($regs[2])], 1);
-            
-            return self::$cache['pluralize'][$word];
-        }
-
-        if (preg_match('/^(' . self::$plural['cacheUninflected'] . ')$/i', $word, $regs)) {
-            self::$cache['pluralize'][$word] = $word;
-
-            return $word;
-        }
-
-        foreach (self::$plural['rules'] as $rule => $replacement) {
-            if (preg_match($rule, $word)) {
-                self::$cache['pluralize'][$word] = preg_replace($rule, $replacement, $word);
-
-                return self::$cache['pluralize'][$word];
-            }
-        }
-    }
-
-    /**
-     * Returns a word in singular form.
-     *
-     * @param string $word The word in plural form.
-     *
-     * @return string The word in singular form.
-     */
-    public static function singularize($word)
-    {
-        if (isset(self::$cache['singularize'][$word])) {
-            return self::$cache['singularize'][$word];
-        }
-
-        if (!isset(self::$singular['merged']['uninflected'])) {
-            self::$singular['merged']['uninflected'] = array_merge(
-                self::$singular['uninflected'],
-                self::$uninflected
-            );
-        }
-
-        if (!isset(self::$singular['merged']['irregular'])) {
-            self::$singular['merged']['irregular'] = array_merge(
-                self::$singular['irregular'],
-                array_flip(self::$plural['irregular'])
-            );
-        }
-
-        if (!isset(self::$singular['cacheUninflected']) || !isset(self::$singular['cacheIrregular'])) {
-            self::$singular['cacheUninflected'] = '(?:' . join('|', self::$singular['merged']['uninflected']) . ')';
-            self::$singular['cacheIrregular'] = '(?:' . join('|', array_keys(self::$singular['merged']['irregular'])) . ')';
-        }
-
-        if (preg_match('/(.*)\\b(' . self::$singular['cacheIrregular'] . ')$/i', $word, $regs)) {
-            self::$cache['singularize'][$word] = $regs[1] . substr($word, 0, 1) . substr(self::$singular['merged']['irregular'][strtolower($regs[2])], 1);
-            
-            return self::$cache['singularize'][$word];
-        }
-
-        if (preg_match('/^(' . self::$singular['cacheUninflected'] . ')$/i', $word, $regs)) {
-            self::$cache['singularize'][$word] = $word;
-
-            return $word;
-        }
-
-        foreach (self::$singular['rules'] as $rule => $replacement) {
-            if (preg_match($rule, $word)) {
-                self::$cache['singularize'][$word] = preg_replace($rule, $replacement, $word);
-
-                return self::$cache['singularize'][$word];
-            }
-        }
-
-        self::$cache['singularize'][$word] = $word;
-
-        return $word;
-    }
-}
diff --git a/vendor/doctrine/inflector/phpunit.xml.dist b/vendor/doctrine/inflector/phpunit.xml.dist
deleted file mode 100644
index ef07faa..0000000
--- a/vendor/doctrine/inflector/phpunit.xml.dist
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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"
->
-    <testsuites>
-        <testsuite name="Doctrine Inflector Test Suite">
-            <directory>./tests/Doctrine/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./lib/Doctrine/</directory>
-        </whitelist>
-    </filter>
-    
-    <groups>
-        <exclude>
-            <group>performance</group>
-        </exclude>
-    </groups>
-</phpunit>
diff --git a/vendor/doctrine/instantiator/.gitignore b/vendor/doctrine/instantiator/.gitignore
deleted file mode 100644
index e3e368d..0000000
--- a/vendor/doctrine/instantiator/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-phpunit.xml
-composer.lock
-build
-vendor
-coverage.clover
diff --git a/vendor/doctrine/instantiator/.scrutinizer.yml b/vendor/doctrine/instantiator/.scrutinizer.yml
deleted file mode 100644
index aad5e40..0000000
--- a/vendor/doctrine/instantiator/.scrutinizer.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-before_commands:
-    - "composer install --prefer-source"
-
-tools:
-    external_code_coverage:
-        timeout: 600
-    php_code_coverage:
-        enabled: true
-        test_command: ./vendor/bin/phpunit
-    php_code_sniffer:
-        enabled: true
-        config:
-            standard: PSR2
-        filter:
-            paths: ["src/*", "tests/*"]
-    php_cpd:
-        enabled: true
-        excluded_dirs: ["build/*", "tests", "vendor"]
-    php_cs_fixer:
-        enabled: true
-        config:
-            level: all
-        filter:
-            paths: ["src/*", "tests/*"]
-    php_loc:
-        enabled: true
-        excluded_dirs: ["build", "tests", "vendor"]
-    php_mess_detector:
-        enabled: true
-        config:
-            ruleset: phpmd.xml.dist
-            design_rules: { eval_expression: false }
-        filter:
-            paths: ["src/*"]
-    php_pdepend:
-        enabled: true
-        excluded_dirs: ["build", "tests", "vendor"]
-    php_analyzer:
-        enabled: true
-        filter:
-            paths: ["src/*", "tests/*"]
-    php_hhvm:
-        enabled: true
-        filter:
-            paths: ["src/*", "tests/*"]
-    sensiolabs_security_checker: true
diff --git a/vendor/doctrine/instantiator/.travis.install.sh b/vendor/doctrine/instantiator/.travis.install.sh
deleted file mode 100755
index 2819188..0000000
--- a/vendor/doctrine/instantiator/.travis.install.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-set -x
-if [ "$TRAVIS_PHP_VERSION" = 'hhvm' ] || [ "$TRAVIS_PHP_VERSION" = 'hhvm-nightly' ] ; then
-    curl -sS https://getcomposer.org/installer > composer-installer.php
-    hhvm composer-installer.php
-    hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 composer.phar update --prefer-source
-elif [ "$TRAVIS_PHP_VERSION" = '5.3.3' ] ; then
-    composer self-update
-    composer update --prefer-source --no-dev
-    composer dump-autoload
-else
-    composer self-update
-    composer update --prefer-source
-fi
diff --git a/vendor/doctrine/instantiator/.travis.yml b/vendor/doctrine/instantiator/.travis.yml
deleted file mode 100644
index 7f1ec5f..0000000
--- a/vendor/doctrine/instantiator/.travis.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-language: php
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-before_script:
-  - ./.travis.install.sh
-  - if [ $TRAVIS_PHP_VERSION = '5.6' ]; then PHPUNIT_FLAGS="--coverage-clover coverage.clover"; else PHPUNIT_FLAGS=""; fi
-
-script:
-  - if [ $TRAVIS_PHP_VERSION = '5.3.3' ]; then phpunit; fi
-  - if [ $TRAVIS_PHP_VERSION != '5.3.3' ]; then ./vendor/bin/phpunit $PHPUNIT_FLAGS; fi
-  - if [ $TRAVIS_PHP_VERSION != '5.3.3' ]; then ./vendor/bin/phpcs --standard=PSR2 ./src/ ./tests/; fi
-  - if [[ $TRAVIS_PHP_VERSION != '5.3.3' && $TRAVIS_PHP_VERSION != '5.4.29' && $TRAVIS_PHP_VERSION != '5.5.13' ]]; then php -n ./vendor/bin/athletic -p ./tests/DoctrineTest/InstantiatorPerformance/ -f GroupedFormatter; fi
-
-after_script:
-  - if [ $TRAVIS_PHP_VERSION = '5.6' ]; then wget https://scrutinizer-ci.com/ocular.phar; php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi
diff --git a/vendor/doctrine/instantiator/CONTRIBUTING.md b/vendor/doctrine/instantiator/CONTRIBUTING.md
deleted file mode 100644
index 75b84b2..0000000
--- a/vendor/doctrine/instantiator/CONTRIBUTING.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Contributing
-
- * Coding standard for the project is [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
- * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php)
- * Any contribution must provide tests for additional introduced conditions
- * Any un-confirmed issue needs a failing test case before being accepted
- * Pull requests must be sent from a new hotfix/feature branch, not from `master`.
-
-## Installation
-
-To install the project and run the tests, you need to clone it first:
-
-```sh
-$ git clone git://github.com/doctrine/instantiator.git
-```
-
-You will then need to run a composer installation:
-
-```sh
-$ cd Instantiator
-$ curl -s https://getcomposer.org/installer | php
-$ php composer.phar update
-```
-
-## Testing
-
-The PHPUnit version to be used is the one installed as a dev- dependency via composer:
-
-```sh
-$ ./vendor/bin/phpunit
-```
-
-Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement 
-won't be merged.
-
diff --git a/vendor/doctrine/instantiator/LICENSE b/vendor/doctrine/instantiator/LICENSE
deleted file mode 100644
index 4d983d1..0000000
--- a/vendor/doctrine/instantiator/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 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
-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/doctrine/instantiator/README.md b/vendor/doctrine/instantiator/README.md
deleted file mode 100644
index 393ec7c..0000000
--- a/vendor/doctrine/instantiator/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# Instantiator
-
-This library provides a way of avoiding usage of constructors when instantiating PHP classes.
-
-[![Build Status](https://travis-ci.org/doctrine/instantiator.svg?branch=master)](https://travis-ci.org/doctrine/instantiator)
-[![Code Coverage](https://scrutinizer-ci.com/g/doctrine/instantiator/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/doctrine/instantiator/?branch=master)
-[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/doctrine/instantiator/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/doctrine/instantiator/?branch=master)
-[![Dependency Status](https://www.versioneye.com/package/php--doctrine--instantiator/badge.svg)](https://www.versioneye.com/package/php--doctrine--instantiator)
-[![HHVM Status](http://hhvm.h4cc.de/badge/doctrine/instantiator.png)](http://hhvm.h4cc.de/package/doctrine/instantiator)
-
-[![Latest Stable Version](https://poser.pugx.org/doctrine/instantiator/v/stable.png)](https://packagist.org/packages/doctrine/instantiator)
-[![Latest Unstable Version](https://poser.pugx.org/doctrine/instantiator/v/unstable.png)](https://packagist.org/packages/doctrine/instantiator)
-
-## Installation
-
-The suggested installation method is via [composer](https://getcomposer.org/):
-
-```sh
-php composer.phar require "doctrine/instantiator:~1.0.3"
-```
-
-## Usage
-
-The instantiator is able to create new instances of any class without using the constructor or any API of the class
-itself:
-
-```php
-$instantiator = new \Doctrine\Instantiator\Instantiator();
-
-$instance = $instantiator->instantiate('My\\ClassName\\Here');
-```
-
-## Contributing
-
-Please read the [CONTRIBUTING.md](CONTRIBUTING.md) contents if you wish to help out!
-
-## Credits
-
-This library was migrated from [ocramius/instantiator](https://github.com/Ocramius/Instantiator), which
-has been donated to the doctrine organization, and which is now deprecated in favour of this package.
diff --git a/vendor/doctrine/instantiator/composer.json b/vendor/doctrine/instantiator/composer.json
deleted file mode 100644
index 4823890..0000000
--- a/vendor/doctrine/instantiator/composer.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-    "name":              "doctrine/instantiator",
-    "description":       "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-    "type":              "library",
-    "license":           "MIT",
-    "homepage":          "https://github.com/doctrine/instantiator",
-    "keywords":          [
-        "instantiate",
-        "constructor"
-    ],
-    "authors": [
-        {
-            "name":     "Marco Pivetta",
-            "email":    "ocramius@gmail.com",
-            "homepage": "http://ocramius.github.com/"
-        }
-    ],
-    "require": {
-        "php": ">=5.3,<8.0-DEV"
-    },
-    "require-dev": {
-        "ext-phar":                  "*",
-        "ext-pdo":                   "*",
-        "phpunit/phpunit":           "~4.0",
-        "squizlabs/php_codesniffer": "~2.0",
-        "athletic/athletic":         "~0.1.8"
-    },
-    "autoload": {
-        "psr-4": {
-            "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
-        }
-    },
-    "autoload-dev": {
-        "psr-0": {
-            "DoctrineTest\\InstantiatorPerformance\\": "tests",
-            "DoctrineTest\\InstantiatorTest\\": "tests",
-            "DoctrineTest\\InstantiatorTestAsset\\": "tests"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0.x-dev"
-        }
-    }
-}
diff --git a/vendor/doctrine/instantiator/phpmd.xml.dist b/vendor/doctrine/instantiator/phpmd.xml.dist
deleted file mode 100644
index 8254105..0000000
--- a/vendor/doctrine/instantiator/phpmd.xml.dist
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<ruleset
-    name="Instantiator rules"
-    xmlns="http://pmd.sf.net/ruleset/1.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
-    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
->
-    <rule ref="rulesets/cleancode.xml">
-        <!-- static access is used for caching purposes -->
-        <exclude name="StaticAccess"/>
-    </rule>
-    <rule ref="rulesets/codesize.xml"/>
-    <rule ref="rulesets/controversial.xml"/>
-    <rule ref="rulesets/design.xml"/>
-    <rule ref="rulesets/naming.xml"/>
-    <rule ref="rulesets/unusedcode.xml"/>
-    <rule
-        name="NPathComplexity"
-        message="The {0} {1}() has an NPath complexity of {2}. The configured NPath complexity threshold is {3}."
-        class="PHP_PMD_Rule_Design_NpathComplexity"
-    >
-        <properties>
-            <property name="minimum" description="The npath reporting threshold" value="10"/>
-        </properties>
-    </rule>
-</ruleset>
diff --git a/vendor/doctrine/instantiator/phpunit.xml.dist b/vendor/doctrine/instantiator/phpunit.xml.dist
deleted file mode 100644
index 0a8d570..0000000
--- a/vendor/doctrine/instantiator/phpunit.xml.dist
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<phpunit
-    bootstrap="./vendor/autoload.php"
-    colors="true"
-    convertErrorsToExceptions="true"
-    convertNoticesToExceptions="true"
-    convertWarningsToExceptions="true"
-    verbose="true"
-    stopOnFailure="false"
-    processIsolation="false"
-    backupGlobals="false"
-    syntaxCheck="true"
->
-    <testsuite name="Doctrine\Instantiator tests">
-        <directory>./tests/DoctrineTest/InstantiatorTest</directory>
-    </testsuite>
-    <filter>
-        <whitelist addUncoveredFilesFromWhitelist="true">
-            <directory suffix=".php">./src</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
deleted file mode 100644
index 3065375..0000000
--- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Instantiator\Exception;
-
-/**
- * Base exception marker interface for the instantiator component
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php
deleted file mode 100644
index ea8d28c..0000000
--- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Instantiator\Exception;
-
-use InvalidArgumentException as BaseInvalidArgumentException;
-use ReflectionClass;
-
-/**
- * Exception for invalid arguments provided to the instantiator
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-class InvalidArgumentException extends BaseInvalidArgumentException implements ExceptionInterface
-{
-    /**
-     * @param string $className
-     *
-     * @return self
-     */
-    public static function fromNonExistingClass($className)
-    {
-        if (interface_exists($className)) {
-            return new self(sprintf('The provided type "%s" is an interface, and can not be instantiated', $className));
-        }
-
-        if (PHP_VERSION_ID >= 50400 && trait_exists($className)) {
-            return new self(sprintf('The provided type "%s" is a trait, and can not be instantiated', $className));
-        }
-
-        return new self(sprintf('The provided class "%s" does not exist', $className));
-    }
-
-    /**
-     * @param ReflectionClass $reflectionClass
-     *
-     * @return self
-     */
-    public static function fromAbstractClass(ReflectionClass $reflectionClass)
-    {
-        return new self(sprintf(
-            'The provided class "%s" is abstract, and can not be instantiated',
-            $reflectionClass->getName()
-        ));
-    }
-}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
deleted file mode 100644
index 1681e56..0000000
--- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Instantiator\Exception;
-
-use Exception;
-use ReflectionClass;
-use UnexpectedValueException as BaseUnexpectedValueException;
-
-/**
- * Exception for given parameters causing invalid/unexpected state on instantiation
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-class UnexpectedValueException extends BaseUnexpectedValueException implements ExceptionInterface
-{
-    /**
-     * @param ReflectionClass $reflectionClass
-     * @param Exception       $exception
-     *
-     * @return self
-     */
-    public static function fromSerializationTriggeredException(ReflectionClass $reflectionClass, Exception $exception)
-    {
-        return new self(
-            sprintf(
-                'An exception was raised while trying to instantiate an instance of "%s" via un-serialization',
-                $reflectionClass->getName()
-            ),
-            0,
-            $exception
-        );
-    }
-
-    /**
-     * @param ReflectionClass $reflectionClass
-     * @param string          $errorString
-     * @param int             $errorCode
-     * @param string          $errorFile
-     * @param int             $errorLine
-     *
-     * @return UnexpectedValueException
-     */
-    public static function fromUncleanUnSerialization(
-        ReflectionClass $reflectionClass,
-        $errorString,
-        $errorCode,
-        $errorFile,
-        $errorLine
-    ) {
-        return new self(
-            sprintf(
-                'Could not produce an instance of "%s" via un-serialization, since an error was triggered '
-                . 'in file "%s" at line "%d"',
-                $reflectionClass->getName(),
-                $errorFile,
-                $errorLine
-            ),
-            0,
-            new Exception($errorString, $errorCode)
-        );
-    }
-}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
deleted file mode 100644
index 6d5b3b6..0000000
--- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
+++ /dev/null
@@ -1,273 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Instantiator;
-
-use Closure;
-use Doctrine\Instantiator\Exception\InvalidArgumentException;
-use Doctrine\Instantiator\Exception\UnexpectedValueException;
-use Exception;
-use ReflectionClass;
-
-/**
- * {@inheritDoc}
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-final class Instantiator implements InstantiatorInterface
-{
-    /**
-     * Markers used internally by PHP to define whether {@see \unserialize} should invoke
-     * the method {@see \Serializable::unserialize()} when dealing with classes implementing
-     * the {@see \Serializable} interface.
-     */
-    const SERIALIZATION_FORMAT_USE_UNSERIALIZER   = 'C';
-    const SERIALIZATION_FORMAT_AVOID_UNSERIALIZER = 'O';
-
-    /**
-     * @var \Closure[] of {@see \Closure} instances used to instantiate specific classes
-     */
-    private static $cachedInstantiators = array();
-
-    /**
-     * @var object[] of objects that can directly be cloned
-     */
-    private static $cachedCloneables = array();
-
-    /**
-     * {@inheritDoc}
-     */
-    public function instantiate($className)
-    {
-        if (isset(self::$cachedCloneables[$className])) {
-            return clone self::$cachedCloneables[$className];
-        }
-
-        if (isset(self::$cachedInstantiators[$className])) {
-            $factory = self::$cachedInstantiators[$className];
-
-            return $factory();
-        }
-
-        return $this->buildAndCacheFromFactory($className);
-    }
-
-    /**
-     * Builds the requested object and caches it in static properties for performance
-     *
-     * @param string $className
-     *
-     * @return object
-     */
-    private function buildAndCacheFromFactory($className)
-    {
-        $factory  = self::$cachedInstantiators[$className] = $this->buildFactory($className);
-        $instance = $factory();
-
-        if ($this->isSafeToClone(new ReflectionClass($instance))) {
-            self::$cachedCloneables[$className] = clone $instance;
-        }
-
-        return $instance;
-    }
-
-    /**
-     * Builds a {@see \Closure} capable of instantiating the given $className without
-     * invoking its constructor.
-     *
-     * @param string $className
-     *
-     * @return Closure
-     */
-    private function buildFactory($className)
-    {
-        $reflectionClass = $this->getReflectionClass($className);
-
-        if ($this->isInstantiableViaReflection($reflectionClass)) {
-            return function () use ($reflectionClass) {
-                return $reflectionClass->newInstanceWithoutConstructor();
-            };
-        }
-
-        $serializedString = sprintf(
-            '%s:%d:"%s":0:{}',
-            $this->getSerializationFormat($reflectionClass),
-            strlen($className),
-            $className
-        );
-
-        $this->checkIfUnSerializationIsSupported($reflectionClass, $serializedString);
-
-        return function () use ($serializedString) {
-            return unserialize($serializedString);
-        };
-    }
-
-    /**
-     * @param string $className
-     *
-     * @return ReflectionClass
-     *
-     * @throws InvalidArgumentException
-     */
-    private function getReflectionClass($className)
-    {
-        if (! class_exists($className)) {
-            throw InvalidArgumentException::fromNonExistingClass($className);
-        }
-
-        $reflection = new ReflectionClass($className);
-
-        if ($reflection->isAbstract()) {
-            throw InvalidArgumentException::fromAbstractClass($reflection);
-        }
-
-        return $reflection;
-    }
-
-    /**
-     * @param ReflectionClass $reflectionClass
-     * @param string          $serializedString
-     *
-     * @throws UnexpectedValueException
-     *
-     * @return void
-     */
-    private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, $serializedString)
-    {
-        set_error_handler(function ($code, $message, $file, $line) use ($reflectionClass, & $error) {
-            $error = UnexpectedValueException::fromUncleanUnSerialization(
-                $reflectionClass,
-                $message,
-                $code,
-                $file,
-                $line
-            );
-        });
-
-        $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString);
-
-        restore_error_handler();
-
-        if ($error) {
-            throw $error;
-        }
-    }
-
-    /**
-     * @param ReflectionClass $reflectionClass
-     * @param string          $serializedString
-     *
-     * @throws UnexpectedValueException
-     *
-     * @return void
-     */
-    private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, $serializedString)
-    {
-        try {
-            unserialize($serializedString);
-        } catch (Exception $exception) {
-            restore_error_handler();
-
-            throw UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $exception);
-        }
-    }
-
-    /**
-     * @param ReflectionClass $reflectionClass
-     *
-     * @return bool
-     */
-    private function isInstantiableViaReflection(ReflectionClass $reflectionClass)
-    {
-        if (\PHP_VERSION_ID >= 50600) {
-            return ! ($this->hasInternalAncestors($reflectionClass) && $reflectionClass->isFinal());
-        }
-
-        return \PHP_VERSION_ID >= 50400 && ! $this->hasInternalAncestors($reflectionClass);
-    }
-
-    /**
-     * Verifies whether the given class is to be considered internal
-     *
-     * @param ReflectionClass $reflectionClass
-     *
-     * @return bool
-     */
-    private function hasInternalAncestors(ReflectionClass $reflectionClass)
-    {
-        do {
-            if ($reflectionClass->isInternal()) {
-                return true;
-            }
-        } while ($reflectionClass = $reflectionClass->getParentClass());
-
-        return false;
-    }
-
-    /**
-     * Verifies if the given PHP version implements the `Serializable` interface serialization
-     * with an incompatible serialization format. If that's the case, use serialization marker
-     * "C" instead of "O".
-     *
-     * @link http://news.php.net/php.internals/74654
-     *
-     * @param ReflectionClass $reflectionClass
-     *
-     * @return string the serialization format marker, either self::SERIALIZATION_FORMAT_USE_UNSERIALIZER
-     *                or self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER
-     */
-    private function getSerializationFormat(ReflectionClass $reflectionClass)
-    {
-        if ($this->isPhpVersionWithBrokenSerializationFormat()
-            && $reflectionClass->implementsInterface('Serializable')
-        ) {
-            return self::SERIALIZATION_FORMAT_USE_UNSERIALIZER;
-        }
-
-        return self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER;
-    }
-
-    /**
-     * Checks whether the current PHP runtime uses an incompatible serialization format
-     *
-     * @return bool
-     */
-    private function isPhpVersionWithBrokenSerializationFormat()
-    {
-        return PHP_VERSION_ID === 50429 || PHP_VERSION_ID === 50513;
-    }
-
-    /**
-     * Checks if a class is cloneable
-     *
-     * @param ReflectionClass $reflection
-     *
-     * @return bool
-     */
-    private function isSafeToClone(ReflectionClass $reflection)
-    {
-        if (method_exists($reflection, 'isCloneable') && ! $reflection->isCloneable()) {
-            return false;
-        }
-
-        // not cloneable if it implements `__clone`, as we want to avoid calling it
-        return ! $reflection->hasMethod('__clone');
-    }
-}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
deleted file mode 100644
index b665bea..0000000
--- a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Instantiator;
-
-/**
- * Instantiator provides utility methods to build objects without invoking their constructors
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-interface InstantiatorInterface
-{
-    /**
-     * @param string $className
-     *
-     * @return object
-     *
-     * @throws \Doctrine\Instantiator\Exception\ExceptionInterface
-     */
-    public function instantiate($className);
-}
diff --git a/vendor/doctrine/lexer/LICENSE b/vendor/doctrine/lexer/LICENSE
deleted file mode 100644
index 5e781fc..0000000
--- a/vendor/doctrine/lexer/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006-2013 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
-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/doctrine/lexer/README.md b/vendor/doctrine/lexer/README.md
deleted file mode 100644
index 66f4430..0000000
--- a/vendor/doctrine/lexer/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Doctrine Lexer
-
-Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.
-
-This lexer is used in Doctrine Annotations and in Doctrine ORM (DQL).
diff --git a/vendor/doctrine/lexer/composer.json b/vendor/doctrine/lexer/composer.json
deleted file mode 100644
index 8cd694c..0000000
--- a/vendor/doctrine/lexer/composer.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "name": "doctrine/lexer",
-    "type": "library",
-    "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
-    "keywords": ["lexer", "parser"],
-    "homepage": "http://www.doctrine-project.org",
-    "license": "MIT",
-    "authors": [
-        {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
-        {"name": "Roman Borschel", "email": "roman@code-factory.org"},
-        {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
-    ],
-    "require": {
-        "php": ">=5.3.2"
-    },
-    "autoload": {
-        "psr-0": { "Doctrine\\Common\\Lexer\\": "lib/" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0.x-dev"
-        }
-    }
-}
diff --git a/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php b/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php
deleted file mode 100644
index 399a552..0000000
--- a/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php
+++ /dev/null
@@ -1,327 +0,0 @@
-<?php
-/*
- * 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.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the MIT license. For more information, see
- * <http://www.doctrine-project.org>.
- */
-
-namespace Doctrine\Common\Lexer;
-
-/**
- * Base class for writing simple lexers, i.e. for creating small DSLs.
- *
- * @since  2.0
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- */
-abstract class AbstractLexer
-{
-    /**
-     * Lexer original input string.
-     *
-     * @var string
-     */
-    private $input;
-
-    /**
-     * Array of scanned tokens.
-     *
-     * Each token is an associative array containing three items:
-     *  - 'value'    : the string value of the token in the input string
-     *  - 'type'     : the type of the token (identifier, numeric, string, input
-     *                 parameter, none)
-     *  - 'position' : the position of the token in the input string
-     *
-     * @var array
-     */
-    private $tokens = array();
-
-    /**
-     * Current lexer position in input string.
-     *
-     * @var integer
-     */
-    private $position = 0;
-
-    /**
-     * Current peek of current lexer position.
-     *
-     * @var integer
-     */
-    private $peek = 0;
-
-    /**
-     * The next token in the input.
-     *
-     * @var array
-     */
-    public $lookahead;
-
-    /**
-     * The last matched/seen token.
-     *
-     * @var array
-     */
-    public $token;
-
-    /**
-     * Sets the input data to be tokenized.
-     *
-     * The Lexer is immediately reset and the new input tokenized.
-     * Any unprocessed tokens from any previous input are lost.
-     *
-     * @param string $input The input to be tokenized.
-     *
-     * @return void
-     */
-    public function setInput($input)
-    {
-        $this->input  = $input;
-        $this->tokens = array();
-
-        $this->reset();
-        $this->scan($input);
-    }
-
-    /**
-     * Resets the lexer.
-     *
-     * @return void
-     */
-    public function reset()
-    {
-        $this->lookahead = null;
-        $this->token = null;
-        $this->peek = 0;
-        $this->position = 0;
-    }
-
-    /**
-     * Resets the peek pointer to 0.
-     *
-     * @return void
-     */
-    public function resetPeek()
-    {
-        $this->peek = 0;
-    }
-
-    /**
-     * Resets the lexer position on the input to the given position.
-     *
-     * @param integer $position Position to place the lexical scanner.
-     *
-     * @return void
-     */
-    public function resetPosition($position = 0)
-    {
-        $this->position = $position;
-    }
-
-    /**
-     * Retrieve the original lexer's input until a given position. 
-     *
-     * @param integer $position
-     *
-     * @return string
-     */
-    public function getInputUntilPosition($position)
-    {
-        return substr($this->input, 0, $position);
-    }
-
-    /**
-     * Checks whether a given token matches the current lookahead.
-     *
-     * @param integer|string $token
-     *
-     * @return boolean
-     */
-    public function isNextToken($token)
-    {
-        return null !== $this->lookahead && $this->lookahead['type'] === $token;
-    }
-
-    /**
-     * Checks whether any of the given tokens matches the current lookahead.
-     *
-     * @param array $tokens
-     *
-     * @return boolean
-     */
-    public function isNextTokenAny(array $tokens)
-    {
-        return null !== $this->lookahead && in_array($this->lookahead['type'], $tokens, true);
-    }
-
-    /**
-     * Moves to the next token in the input string.
-     *
-     * @return boolean
-     */
-    public function moveNext()
-    {
-        $this->peek = 0;
-        $this->token = $this->lookahead;
-        $this->lookahead = (isset($this->tokens[$this->position]))
-            ? $this->tokens[$this->position++] : null;
-
-        return $this->lookahead !== null;
-    }
-
-    /**
-     * Tells the lexer to skip input tokens until it sees a token with the given value.
-     *
-     * @param string $type The token type to skip until.
-     *
-     * @return void
-     */
-    public function skipUntil($type)
-    {
-        while ($this->lookahead !== null && $this->lookahead['type'] !== $type) {
-            $this->moveNext();
-        }
-    }
-
-    /**
-     * Checks if given value is identical to the given token.
-     *
-     * @param mixed   $value
-     * @param integer $token
-     *
-     * @return boolean
-     */
-    public function isA($value, $token)
-    {
-        return $this->getType($value) === $token;
-    }
-
-    /**
-     * Moves the lookahead token forward.
-     *
-     * @return array|null The next token or NULL if there are no more tokens ahead.
-     */
-    public function peek()
-    {
-        if (isset($this->tokens[$this->position + $this->peek])) {
-            return $this->tokens[$this->position + $this->peek++];
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Peeks at the next token, returns it and immediately resets the peek.
-     *
-     * @return array|null The next token or NULL if there are no more tokens ahead.
-     */
-    public function glimpse()
-    {
-        $peek = $this->peek();
-        $this->peek = 0;
-        return $peek;
-    }
-
-    /**
-     * Scans the input string for tokens.
-     *
-     * @param string $input A query string.
-     *
-     * @return void
-     */
-    protected function scan($input)
-    {
-        static $regex;
-
-        if ( ! isset($regex)) {
-            $regex = sprintf(
-                '/(%s)|%s/%s',
-                implode(')|(', $this->getCatchablePatterns()),
-                implode('|', $this->getNonCatchablePatterns()),
-                $this->getModifiers()
-            );
-        }
-
-        $flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE;
-        $matches = preg_split($regex, $input, -1, $flags);
-
-        foreach ($matches as $match) {
-            // Must remain before 'value' assignment since it can change content
-            $type = $this->getType($match[0]);
-
-            $this->tokens[] = array(
-                'value' => $match[0],
-                'type'  => $type,
-                'position' => $match[1],
-            );
-        }
-    }
-
-    /**
-     * Gets the literal for a given token.
-     *
-     * @param integer $token
-     *
-     * @return string
-     */
-    public function getLiteral($token)
-    {
-        $className = get_class($this);
-        $reflClass = new \ReflectionClass($className);
-        $constants = $reflClass->getConstants();
-
-        foreach ($constants as $name => $value) {
-            if ($value === $token) {
-                return $className . '::' . $name;
-            }
-        }
-
-        return $token;
-    }
-
-    /**
-     * Regex modifiers
-     *
-     * @return string
-     */
-    protected function getModifiers()
-    {
-        return 'i';
-    }
-
-    /**
-     * Lexical catchable patterns.
-     *
-     * @return array
-     */
-    abstract protected function getCatchablePatterns();
-
-    /**
-     * Lexical non-catchable patterns.
-     *
-     * @return array
-     */
-    abstract protected function getNonCatchablePatterns();
-
-    /**
-     * Retrieve token type. Also processes the token value if necessary.
-     *
-     * @param string $value
-     *
-     * @return integer
-     */
-    abstract protected function getType(&$value);
-}
diff --git a/vendor/easyrdf/easyrdf/CHANGELOG.md b/vendor/easyrdf/easyrdf/CHANGELOG.md
deleted file mode 100644
index 1f772a0..0000000
--- a/vendor/easyrdf/easyrdf/CHANGELOG.md
+++ /dev/null
@@ -1,327 +0,0 @@
-EasyRdf 0.9.1
-=============
-
-Bug Fixes
----------
-
-* Timeout is applied to response-times, not only connection-times (see #202)
-
-EasyRdf 0.9.0
-=============
-
-Major new features
-------------------
-* Framing support in `EasyRdf_Serialiser_JsonLd`
-* JSON-LD Parser
-
-API changes
------------
-* `EasyRdf_Literal_Decimal` returns strings, instead of floats to avoid losing precision (see issue #178)
-* `EasyRdf_Literal_Decimal` requires input-strings which conform to `xs:decimal` format
-* `EasyRdf_GraphStore` supports operations over default graph now
-* `EasyRdf_Literal` typed as `xs:double` is used for PHP-floats instead of `EasyRdf_Literal_Decimal`
-* Exceptions thrown from `EasyRdf_Graph::resource()` use different message-texts now (see issue #159)
-
-Enhancements
-------------
-* Synced list of default namespaces against [RDFa Core Initial Context](http://www.w3.org/2011/rdfa-context/rdfa-1.1) rev.2014-01-17
-* Added support for empty prefixes (see issue #183)
-* `EasyRdf_Graph::newAndLoad` throws `EasyRdf_Http_Exception` in case of failure, which gives access to status and response-body. (see issue #149)
-* `EasyRdf_Graph` and `EasyRdf_Resource` have 'typesAsResources()' methods now
-
-Bug Fixes
----------
-* Fix for Turtle serialisation of FALSE (see issue #179)
-* Fix for edge-case in RDF/XML serialisation (see issue #186)
-* SPARQL-queries against endpoints which have query-params in their URL (see issue #184)
-* Float values are properly handled if locale with "other" separator is active
-* Fixed parsing of Turtle-documents with higher utf-8 characters (see issue #195)
-* Namespace-prefixes are compliant with RDFXML QName spec (see issue #185)
-* `EasyRdf_Namespace` won't generate "short" names with "/" in them anymore (see issue #115)
-* `EasyRdf_Parser_RdfXml` respects "base" specified for the document (see issue #157)
-* HTML documents are correctly detected now, not as "n-triples" (see issue #206)
-* Accept-headers are formatted in locale-independent fashion now (see issue #208)
-
-
-EasyRdf 0.8.0
-=============
-
-Major new features
-------------------
-* Now PSR-2 compliant
-* Added RDFa parser
-* Added SPARQL Update support to `EasyRdf_Sparql_Client`
-
-API changes
------------
-* `is_a()` has been renamed to `isA()`
-* `isBnode()` has been renamed to `isBNode()`
-* `getNodeId()` has been renamed to `getBNodeId()`
-* Added a `$value` property to `hasProperty()`
-* Renamed `toArray()` to `toRdfPhp()`
-* Renamed `count()` to `countValues()` in `EasyRdf_Graph` and `EasyRdf_Resource`
-* Made passing a URI to `delete()` behave more like `all()` and `get()` - you must enclose in `<>`
-* `dump(true)` has changed to `dump('html')`
-* `getUri()` in `EasyRdf_Sparql_Client` has been renamed to `getQueryUri()`
-
-Enhancements
-------------
-* Added `EasyRdf_Container` class to help iterate through `rdf:Alt`, `rdf:Bag` and `rdf:Seq`
-* Added `EasyRdf_Collection` class to help iterate through `rdf:List`
-* Added `EasyRdf_Literal_HTML` and `EasyRdf_Literal_XML`
-* Changed formatting of `xsd:dateTime` from `DateTime::ISO8601` to `DateTime::ATOM`
-* Added `rss:title` to the list of properties that `label()` will check for
-* Added support for serialising containers to the RDF/XML serialiser
-* Added getGraph method to `EasyRdf_Resource`
-* Turtle parser improvements
-* Added the `application/n-triples` MIME type for the N-Triples format
-* Added support to `EasyRdf_Namespace` for expanding `a` to `rdf:type`
-* Added `listNamedGraphs()` function to `EasyRdf_Sparql_Client`
-* Added line and column number to exceptions in the built-in parsers
-
-Bug Fixes
----------
-* Fixed bug in `EasyRdf_Namespace::expand()` (see issue #114)
-* Fix for dumping SPARQL SELECT query with unbound result (see issue #112)
-* Sesame compatibility : avoid duplicate Content-Length header
-* Fix for for passing objects of type DateTime to $graph->add() (see issue #119)
-* Fix for SPARQL queries longer than 2KB (see issue #85)
-* Fix for dumping literal with unshortenable datatype uri (see issue #120)
-* Fix for getting default mime type or extension when there isn't one
-* Fix for missing trailing slash the HTTP client
-
-
-EasyRdf 0.7.2
-=============
-
-Enhancements
-------------
-* Removed automatic registration of ARC2 and librdf parsers and serialisers
-** You must now specifically choose the parser or serialiser
-* Refactored `EasyRdf_Literal` with datatypes so that it preserves exact value
-* Changed Turtle serialiser to not escape Unicode characters unnecessarily
-* Fix for escaping literals objects in Turtle serialiser
-* Added a new static function `newAndLoad()` to `EasyRdf_Graph`
-* Added setters for each of the components of the URI to the class `EasyRdf_ParsedUri`
-* Added option to the converter example, to allow raw output, without any HTML
-
-Bug Fixes
----------
-* Fixed broken Redland parser (thanks to Jon Phipps)
-* Fix for serialising two bnodes that reference each other in Turtle
-* Added support for parsing literals with single quotes in Turtle
-* Removed require for EasyRdf/Exception.php
-* Fix for serialising `EasyRdf_Literal_DateTime` to Turtle
-* Fix for serialising Turtle literals with a shorthand syntax
-* Several typo fixes and minor corrections
-
-
-EasyRdf 0.7.1
-=============
-
-Enhancements
-------------
-* Changed minimum version of PHPUnit to 3.5.15
-* Added RDFa namespace
-* Added Open Graph Protocol namespace
-* Made improvements to formatting of the Turtle serialiser
-* Added new splitUri() function to EasyRdf_Namespace
-* Made improvements to format guessing
-
-Bug Fixes
----------
-* Fix for RDF/XML parser not returning the number of triples
-* Added re-mapping of b-nodes to N-Triples and Redland parsers
-
-
-EasyRdf 0.7.0
-=============
-
-API Changes
------------
-* You must now wrap full property URIs in angle brackets
-
-Major new features
-------------------
-* Added a new pure-PHP Turtle parser
-* Added basic property-path support for traversing graphs
-* Added support for serialising to the GraphViz dot format (and generating images)
-* Added a new class `EasyRdf_ParsedUri` - a RFC3986 compliant URI parser
-
-Enhancements
-------------
-* The load() function in `EasyRdf_Graph` no-longer takes a $data argument
-* The parse() and load() methods, now return the number of triples parsed
-* Added count() method to `EasyRdf_Resource` and `EasyRdf_Graph`
-* Added localName() method to `EasyRdf_Resource`
-* Added htmlLink() method to `EasyRdf_Resource`
-* Added methods deleteResource() and deleteLiteral() to `EasyRdf_Graph`
-* Added support for guessing the file format based on the file extension
-* Performance improvements to built-in serialisers
-
-Environment changes
--------------------
-* Added PHP Composer description to the project
-* Now properly PSR-0 autoloader compatible
-* New minimum version of PHP is 5.2.8
-* Changed test suite to require PHPUnit 3.6
-* Changed from Phing to GNU Make based build system
-* Added automated testing of the examples
-
-Bug Fixes
----------
-* Fix for loading https:// URLs
-* Fix for storing the value 0 in a `EasyRdf_Graph`
-* Fix for HTTP servers that return relative URIs in the Location header
-* Fix for Literals with languages in the SPARQL Query Results XML Format
-* Fix for SPARQL servers that put extra whitespace into the XML result
-* Fix for the httpget.php example in PHP 5.4+
-
-
-EasyRdf 0.6.3
-=============
-* Added $graph->parseFile() method.
-* Added support for SSL (https) to the built-in HTTP client
-* Fixes for HTTP responses with a charset parameter in the Content Type.
-* Improved error handling and empty documents in JSON and rapper parsers.
-* Added connivence class for xsd:hexBinary literals:
-  - `EasyRdf_Literal_HexBinary`
-* Made EasyRdf more tolerant of 'badly serialised bnodes'
-* Fix for SPARQL servers that return charset in the MIME Type.
-* Fix for using xml:lang in SPARQL 1.1 Query Results JSON Format
-* Changed datetime ISO formatting to use 'Z' instead of +0000 for UTC dateTimes
-* Added the namespace for 'The Cert Ontology' to EasyRdf.
-
-
-EasyRdf 0.6.2
-=============
-* Bug fix for missing triples in the RDF/XML serialiser.
-* Added countTriples() method to `EasyRdf_Graph`.
-* Re-factored the mechanism for mapping RDF datatypes to PHP classes.
-* Added subclasses of `EasyRdf_Literal` for various XSD datatypes:
-  - `EasyRdf_Literal_Boolean`
-  - `EasyRdf_Literal_Date`
-  - `EasyRdf_Literal_DateTime`
-  - `EasyRdf_Literal_Decimal`
-  - `EasyRdf_Literal_Integer`
-* Made the Redland based parser write triples directly to `EasyRdf_Graph`
-* Added support for datatypes and languages in the `EasyRdf_Parser_Ntriples` parser.
-* Fix for parsing XML Literals in RDF/XML
-
-
-EasyRdf 0.6.1
-=============
-* Updated API documentation for new classes and methods added in 0.6.0
-* Added a description to the top of the source code for each example.
-* Changed the generated bnode identifier names from eidXXX to genidXXX.
-* Implemented inlining of resources in the RDF/XML serialiser.
-* Added new reversePropertyUris() method to `EasyRdf_Graph` and `EasyRdf_Resource`.
-* Added addType() and setType() to `EasyRdf_Resource`.
-* Added a textarea to the converter example.
-* Added support for parsing the json-triples format.
-* Renamed `EasyRdf_SparqlClient` to `EasyRdf_Sparql_Client`
-* Renamed `EasyRdf_SparqlResult` to `EasyRdf_Sparql_Result`
-* Fix for $graph->isEmpty() failing after adding and deleting some triples
-* Added new `EasyRdf_DatatypeMapper` class that allows you to map RDF datatypes to PHP classes.
-* Renamed guessDatatype() to getDatatypeForValue() in `EasyRdf_Literal`.
-* Added getResource() and allResources() to `EasyRdf_Graph` and `EasyRdf_Resource`
-* Implemented value casting in literals based on the datatype.
-
-
-EasyRdf 0.6.0
-=============
-* Major re-factor of the way data is stored internally in `EasyRdf_Graph`.
-* Parsing and serialising is now much faster and will enable further optimisations.
-* API is mostly backwards-compatible apart from:
-  - Changed inverse property operator from - to ^ to match Sparql 1.1 property paths.
-  - New `EasyRdf_Graphs` will not automatically be loaded on creation
-    You must now call $graph->load();
-  - Setting the default HTTP client is now part of a new `EasyRdf_Http` class
-  - It is no-longer possible to add multiple properties at once using an associative array.
-* Added methods to `EasyRdf_Graph` for direct manipulation of triples.
-* Added new `EasyRdf_GraphStore` - class for fetching, saving and deleting graphs to a Graph Store over HTTP.
-* Added new `EasyRdf_SparqlClient` and `EasyRdf_SparqlResult` - class for querying a SPARQL endpoint over HTTP.
-* Added q values for each Mime-Type associated with an `EasyRdf_Format`.
-* New example demonstrating integration with the Zend Framework.
-* New `EasyRdf_HTTP_MockClient` class makes testing easier.
-
-
-EasyRdf 0.5.2
-=============
-* Added a built-in RDF/XML parser
-* Made the RDF/XML serialiser use the rdf:type to open tags
-* Added support for comments in the N-Triples parser
-* Added new resolveUriReference() function to `EasyRdf_Utils`
-* Added the application/rdf+json and text/rdf+n3 mime types
-
-
-EasyRdf 0.5.1
-=============
-* Bug fixes for PHP 5.2
-
-
-EasyRdf 0.5.0
-=============
-* Added support for inverse properties.
-* Updated RDF/XML and Turtle serialisers to create new namespaces if possible.
-* Added new is_a($type) method to `EasyRdf_Resource`.
-* Added support for passing an array of properties to the get() method.
-* Added primaryTopic() method to `EasyRdf_Resource`.
-* The function label() in `EasyRdf_Resource` will no longer attempted to shorten the URI,
-  if there is no label available.
-* Resource types are now stored as resources, instead of shortened URIs.
-* Added support for deleting a specific value for property to `EasyRdf_Resource`.
-* Properties and datatypes are now stored as full URIs and not
-  converted to qnames during import.
-* Change the TypeMapper to store full URIs internally.
-* Added bibo and geo to the set of default namespaces.
-* Improved bnode links in dump format
-* Fix for converting non-string `EasyRdf_Literal` to string.
-* Created an example that resolves UK postcodes using uk-postcodes.com.
-
-
-EasyRdf 0.4.0
-=============
-* Moved source code to Github
-* Added an `EasyRdf_Literal` class
-* Added proper support for Datatypes and Languages
-* Added built-in RDF/XML serialiser
-* Added built-in Turtle serialiser
-* Added a new `EasyRdf_Format` class to deal with mime types etc.
-* finished a major refactoring of the Parser/Serialiser registration
-* removed all parsing related code from `EasyRdf_Graph`
-* Added a basic serialisation example
-* Added additional common namespaces
-* Test fixes
-
-
-EasyRdf 0.3.0
-=============
-* Generated Wiki pages from phpdoc
-* Filtering of literals by language
-* Moved parsers into `EasyRdf_Parser_XXX` namespace
-* Added support for serialisation
-* Wrote RDF generation example (foafmaker.php)
-* Added built-in ntriples parser/generator
-* Added built-in RDF/PHP serialiser
-* Added built-in RDF/JSON serialiser
-* Added SKOS and RSS to the set of default namespaces.
-
-
-EasyRdf 0.2.0
-=============
-* Added support for Redland PHP bindings
-* Added support for n-triples document type.
-* Improved blank node handing and added newBNode() method to `EasyRdf_Graph`.
-* Add option to `EasyRdf_RapperParser` to choose location of rapper command
-* Added Rails style HTML tag helpers to examples to make them simpler
-
-
-EasyRdf 0.1.0
-=============
-* First public release
-* Support for ARC2 and Rapper
-* Built-in HTTP Client
-* API Documentation
-* PHP Unit tests for every class.
-* Several usage examples
diff --git a/vendor/easyrdf/easyrdf/DEVELOPER.md b/vendor/easyrdf/easyrdf/DEVELOPER.md
deleted file mode 100644
index f9c6dac..0000000
--- a/vendor/easyrdf/easyrdf/DEVELOPER.md
+++ /dev/null
@@ -1,31 +0,0 @@
-Contributing to EasyRdf
-=======================
-
-Contributions to the EasyRdf codebase are welcome using the usual Github pull request workflow.
-
-To run the code style checker:
-
-```
-make cs
-```
-
-You can run the PHP unit test suite with:
-
-```
-make test-lib
-```
-
-Unit tests are automatically run after being received by Github:
-http://ci.aelius.com/job/easyrdf/
-
-The tests for the examples are run separately:
-http://ci.aelius.com/job/easyrdf-examples/
-
-
-Notes
------
-
-* Please ask on the [mailing list] before starting work on any significant changes
-* Please write tests for any new features or bug fixes. The tests should be checked in the same commit as the code.
-
-[mailing list]:http://groups.google.com/group/easyrdf
diff --git a/vendor/easyrdf/easyrdf/LICENSE.md b/vendor/easyrdf/easyrdf/LICENSE.md
deleted file mode 100644
index c5e2f5d..0000000
--- a/vendor/easyrdf/easyrdf/LICENSE.md
+++ /dev/null
@@ -1,420 +0,0 @@
-LICENSE
-=======
-
-Copyright (c) 2009-2011 Nicholas J Humfrey.  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.
- * The name of the author 'Nicholas J Humfrey" 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.
-
-
-OTHER LICENSES
-==============
-
-Parts of this program or documentation is available under different
-licensing terms. These are as following.
-
-The appendix in the documentation about RDF formats (APPENDIX A) is a
-derivative work under CC-BY-SA-3.0. It consists of two documents:
-
-1. The RDF/PHP Specification was written/edited 2008 by Ian Davis and Keith
-   Alexander
-2. The RDF/JSON Specification was written/edited 2007, 2008 by Keith
-   Alexander, Danny Ayers, Sam Tunnicliffe, Fellahst, Ian Davis and Robman
-
-These two documents have been translated 2014 into markdown by hakre.
-
-
-Creative Commons Attribution-ShareAlike 3.0 Unported
-====================================================
-
-CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
-LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
-ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
-ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE
-INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
-ITS USE.
-
-License
-
-THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
-COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
-COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
-AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
-
-BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
-TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
-BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
-CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
-CONDITIONS.
-
-1. Definitions
-
-a. "Adaptation" means a work based upon the Work, or upon the Work and
-other pre-existing works, such as a translation, adaptation, derivative
-work, arrangement of music or other alterations of a literary or
-artistic work, or phonogram or performance and includes cinematographic
-adaptations or any other form in which the Work may be recast,
-transformed, or adapted including in any form recognizably derived from
-the original, except that a work that constitutes a Collection will not
-be considered an Adaptation for the purpose of this License. For the
-avoidance of doubt, where the Work is a musical work, performance or
-phonogram, the synchronization of the Work in timed-relation with a
-moving image ("synching") will be considered an Adaptation for the
-purpose of this License.
-
-b. "Collection" means a collection of literary or artistic works, such
-as encyclopedias and anthologies, or performances, phonograms or
-broadcasts, or other works or subject matter other than works listed in
-Section 1(f) below, which, by reason of the selection and arrangement of
-their contents, constitute intellectual creations, in which the Work is
-included in its entirety in unmodified form along with one or more other
-contributions, each constituting separate and independent works in
-themselves, which together are assembled into a collective whole. A work
-that constitutes a Collection will not be considered an Adaptation (as
-defined below) for the purposes of this License.
-
-c. "Creative Commons Compatible License" means a license that is listed
-at http://creativecommons.org/compatiblelicenses that has been approved
-by Creative Commons as being essentially equivalent to this License,
-including, at a minimum, because that license: (i) contains terms that
-have the same purpose, meaning and effect as the License Elements of
-this License; and, (ii) explicitly permits the relicensing of
-adaptations of works made available under that license under this
-License or a Creative Commons jurisdiction license with the same License
-Elements as this License.
-
-d. "Distribute" means to make available to the public the original and
-copies of the Work or Adaptation, as appropriate, through sale or other
-transfer of ownership.
-
-e. "License Elements" means the following high-level license attributes
-as selected by Licensor and indicated in the title of this License:
-Attribution, ShareAlike.
-
-f. "Licensor" means the individual, individuals, entity or entities that
-offer(s) the Work under the terms of this License.
-
-g. "Original Author" means, in the case of a literary or artistic work,
-the individual, individuals, entity or entities who created the Work or
-if no individual or entity can be identified, the publisher; and in
-addition (i) in the case of a performance the actors, singers,
-musicians, dancers, and other persons who act, sing, deliver, declaim,
-play in, interpret or otherwise perform literary or artistic works or
-expressions of folklore; (ii) in the case of a phonogram the producer
-being the person or legal entity who first fixes the sounds of a
-performance or other sounds; and, (iii) in the case of broadcasts, the
-organization that transmits the broadcast.
-
-h. "Work" means the literary and/or artistic work offered under the
-terms of this License including without limitation any production in the
-literary, scientific and artistic domain, whatever may be the mode or
-form of its expression including digital form, such as a book, pamphlet
-and other writing; a lecture, address, sermon or other work of the same
-nature; a dramatic or dramatico-musical work; a choreographic work or
-entertainment in dumb show; a musical composition with or without words;
-a cinematographic work to which are assimilated works expressed by a
-process analogous to cinematography; a work of drawing, painting,
-architecture, sculpture, engraving or lithography; a photographic work
-to which are assimilated works expressed by a process analogous to
-photography; a work of applied art; an illustration, map, plan, sketch
-or three-dimensional work relative to geography, topography,
-architecture or science; a performance; a broadcast; a phonogram; a
-compilation of data to the extent it is protected as a copyrightable
-work; or a work performed by a variety or circus performer to the extent
-it is not otherwise considered a literary or artistic work.
-
-i. "You" means an individual or entity exercising rights under this
-License who has not previously violated the terms of this License with
-respect to the Work, or who has received express permission from the
-Licensor to exercise rights under this License despite a previous
-violation.
-
-j. "Publicly Perform" means to perform public recitations of the Work
-and to communicate to the public those public recitations, by any means
-or process, including by wire or wireless means or public digital
-performances; to make available to the public Works in such a way that
-members of the public may access these Works from a place and at a place
-individually chosen by them; to perform the Work to the public by any
-means or process and the communication to the public of the performances
-of the Work, including by public digital performance; to broadcast and
-rebroadcast the Work by any means including signs, sounds or images.
-
-k. "Reproduce" means to make copies of the Work by any means including
-without limitation by sound or visual recordings and the right of
-fixation and reproducing fixations of the Work, including storage of a
-protected performance or phonogram in digital form or other electronic
-medium.
-
-2. Fair Dealing Rights. Nothing in this License is intended to reduce,
-limit, or restrict any uses free from copyright or rights arising from
-limitations or exceptions that are provided for in connection with the
-copyright protection under copyright law or other applicable laws.
-
-3. License Grant. Subject to the terms and conditions of this License,
-Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
-perpetual (for the duration of the applicable copyright) license to
-exercise the rights in the Work as stated below:
-
-a. to Reproduce the Work, to incorporate the Work into one or more
-Collections, and to Reproduce the Work as incorporated in the
-Collections;
-
-b. to create and Reproduce Adaptations provided that any such
-Adaptation, including any translation in any medium, takes reasonable
-steps to clearly label, demarcate or otherwise identify that changes
-were made to the original Work. For example, a translation could be
-marked "The original work was translated from English to Spanish," or a
-modification could indicate "The original work has been modified.";
-
-c. to Distribute and Publicly Perform the Work including as incorporated
-in Collections; and,
-
-d. to Distribute and Publicly Perform Adaptations.
-
-e. For the avoidance of doubt:
-
-i. Non-waivable Compulsory License Schemes. In those jurisdictions in
-which the right to collect royalties through any statutory or compulsory
-licensing scheme cannot be waived, the Licensor reserves the exclusive
-right to collect such royalties for any exercise by You of the rights
-granted under this License;
-
-ii. Waivable Compulsory License Schemes. In those jurisdictions in which
-the right to collect royalties through any statutory or compulsory
-licensing scheme can be waived, the Licensor waives the exclusive right
-to collect such royalties for any exercise by You of the rights granted
-under this License; and,
-
-iii. Voluntary License Schemes. The Licensor waives the right to collect
-royalties, whether individually or, in the event that the Licensor is a
-member of a collecting society that administers voluntary licensing
-schemes, via that society, from any exercise by You of the rights
-granted under this License.
-
-The above rights may be exercised in all media and formats whether now
-known or hereafter devised. The above rights include the right to make
-such modifications as are technically necessary to exercise the rights
-in other media and formats. Subject to Section 8(f), all rights not
-expressly granted by Licensor are hereby reserved.
-
-4. Restrictions. The license granted in Section 3 above is expressly
-made subject to and limited by the following restrictions:
-
-a. You may Distribute or Publicly Perform the Work only under the terms
-of this License. You must include a copy of, or the Uniform Resource
-Identifier (URI) for, this License with every copy of the Work You
-Distribute or Publicly Perform. You may not offer or impose any terms on
-the Work that restrict the terms of this License or the ability of the
-recipient of the Work to exercise the rights granted to that recipient
-under the terms of the License. You may not sublicense the Work. You
-must keep intact all notices that refer to this License and to the
-disclaimer of warranties with every copy of the Work You Distribute or
-Publicly Perform. When You Distribute or Publicly Perform the Work, You
-may not impose any effective technological measures on the Work that
-restrict the ability of a recipient of the Work from You to exercise the
-rights granted to that recipient under the terms of the License. This
-Section 4(a) applies to the Work as incorporated in a Collection, but
-this does not require the Collection apart from the Work itself to be
-made subject to the terms of this License. If You create a Collection,
-upon notice from any Licensor You must, to the extent practicable,
-remove from the Collection any credit as required by Section 4(c), as
-requested. If You create an Adaptation, upon notice from any Licensor
-You must, to the extent practicable, remove from the Adaptation any
-credit as required by Section 4(c), as requested.
-
-b. You may Distribute or Publicly Perform an Adaptation only under the
-terms of: (i) this License; (ii) a later version of this License with
-the same License Elements as this License; (iii) a Creative Commons
-jurisdiction license (either this or a later license version) that
-contains the same License Elements as this License (e.g.,
-Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible
-License. If you license the Adaptation under one of the licenses
-mentioned in (iv), you must comply with the terms of that license. If
-you license the Adaptation under the terms of any of the licenses
-mentioned in (i), (ii) or (iii) (the "Applicable License"), you must
-comply with the terms of the Applicable License generally and the
-following provisions: (I) You must include a copy of, or the URI for,
-the Applicable License with every copy of each Adaptation You Distribute
-or Publicly Perform; (II) You may not offer or impose any terms on the
-Adaptation that restrict the terms of the Applicable License or the
-ability of the recipient of the Adaptation to exercise the rights
-granted to that recipient under the terms of the Applicable License;
-(III) You must keep intact all notices that refer to the Applicable
-License and to the disclaimer of warranties with every copy of the Work
-as included in the Adaptation You Distribute or Publicly Perform; (IV)
-when You Distribute or Publicly Perform the Adaptation, You may not
-impose any effective technological measures on the Adaptation that
-restrict the ability of a recipient of the Adaptation from You to
-exercise the rights granted to that recipient under the terms of the
-Applicable License. This Section 4(b) applies to the Adaptation as
-incorporated in a Collection, but this does not require the Collection
-apart from the Adaptation itself to be made subject to the terms of the
-Applicable License.
-
-c. If You Distribute, or Publicly Perform the Work or any Adaptations or
-Collections, You must, unless a request has been made pursuant to
-Section 4(a), keep intact all copyright notices for the Work and
-provide, reasonable to the medium or means You are utilizing: (i) the
-name of the Original Author (or pseudonym, if applicable) if supplied,
-and/or if the Original Author and/or Licensor designate another party or
-parties (e.g., a sponsor institute, publishing entity, journal) for
-attribution ("Attribution Parties") in Licensor's copyright notice,
-terms of service or by other reasonable means, the name of such party or
-parties; (ii) the title of the Work if supplied; (iii) to the extent
-reasonably practicable, the URI, if any, that Licensor specifies to be
-associated with the Work, unless such URI does not refer to the
-copyright notice or licensing information for the Work; and (iv) ,
-consistent with Ssection 3(b), in the case of an Adaptation, a credit
-identifying the use of the Work in the Adaptation (e.g., "French
-translation of the Work by Original Author," or "Screenplay based on
-original Work by Original Author"). The credit required by this Section
-4(c) may be implemented in any reasonable manner; provided, however,
-that in the case of a Adaptation or Collection, at a minimum such credit
-will appear, if a credit for all contributing authors of the Adaptation
-or Collection appears, then as part of these credits and in a manner at
-least as prominent as the credits for the other contributing authors.
-For the avoidance of doubt, You may only use the credit required by this
-Section for the purpose of attribution in the manner set out above and,
-by exercising Your rights under this License, You may not implicitly or
-explicitly assert or imply any connection with, sponsorship or
-endorsement by the Original Author, Licensor and/or Attribution Parties,
-as appropriate, of You or Your use of the Work, without the separate,
-express prior written permission of the Original Author, Licensor and/or
-Attribution Parties.
-
-d. Except as otherwise agreed in writing by the Licensor or as may be
-otherwise permitted by applicable law, if You Reproduce, Distribute or
-Publicly Perform the Work either by itself or as part of any Adaptations
-or Collections, You must not distort, mutilate, modify or take other
-derogatory action in relation to the Work which would be prejudicial to
-the Original Author's honor or reputation. Licensor agrees that in those
-jurisdictions (e.g. Japan), in which any exercise of the right granted
-in Section 3(b) of this License (the right to make Adaptations) would be
-deemed to be a distortion, mutilation, modification or other derogatory
-action prejudicial to the Original Author's honor and reputation, the
-Licensor will waive or not assert, as appropriate, this Section, to the
-fullest extent permitted by the applicable national law, to enable You
-to reasonably exercise Your right under Section 3(b) of this License
-(right to make Adaptations) but not otherwise.
-
-5. Representations, Warranties and Disclaimer
-
-UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
-OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
-KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
-INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
-FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
-LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
-WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE
-EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
-
-6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
-LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
-ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
-ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
-BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. Termination
-
-a. This License and the rights granted hereunder will terminate
-automatically upon any breach by You of the terms of this License.
-Individuals or entities who have received Adaptations or Collections
-from You under this License, however, will not have their licenses
-terminated provided such individuals or entities remain in full
-compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
-survive any termination of this License.
-
-b. Subject to the above terms and conditions, the license granted here
-is perpetual (for the duration of the applicable copyright in the Work).
-Notwithstanding the above, Licensor reserves the right to release the
-Work under different license terms or to stop distributing the Work at
-any time; provided, however that any such election will not serve to
-withdraw this License (or any other license that has been, or is
-required to be, granted under the terms of this License), and this
-License will continue in full force and effect unless terminated as
-stated above.
-
-8. Miscellaneous
-
-a. Each time You Distribute or Publicly Perform the Work or a
-Collection, the Licensor offers to the recipient a license to the Work
-on the same terms and conditions as the license granted to You under
-this License.
-
-b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
-offers to the recipient a license to the original Work on the same terms
-and conditions as the license granted to You under this License.
-
-c. If any provision of this License is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this License, and without further action
-by the parties to this agreement, such provision shall be reformed to
-the minimum extent necessary to make such provision valid and
-enforceable.
-
-d.  No term or provision of this License shall be deemed waived and no
-breach consented to unless such waiver or consent shall be in writing
-and signed by the party to be charged with such waiver or consent.
-
-e. This License constitutes the entire agreement between the parties
-with respect to the Work licensed here. There are no understandings,
-agreements or representations with respect to the Work not specified
-here. Licensor shall not be bound by any additional provisions that may
-appear in any communication from You. This License may not be modified
-without the mutual written agreement of the Licensor and You.
-
-f. The rights granted under, and the subject matter referenced, in this
-License were drafted utilizing the terminology of the Berne Convention
-for the Protection of Literary and Artistic Works (as amended on
-September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
-Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and
-the Universal Copyright Convention (as revised on July 24, 1971). These
-rights and subject matter take effect in the relevant jurisdiction in
-which the License terms are sought to be enforced according to the
-corresponding provisions of the implementation of those treaty
-provisions in the applicable national law. If the standard suite of
-rights granted under applicable copyright law includes additional rights
-not granted under this License, such additional rights are deemed to be
-included in the License; this License is not intended to restrict the
-license of any rights under applicable law.
-
-
-
-Creative Commons Notice
-
-Creative Commons is not a party to this License, and makes no warranty
-whatsoever in connection with the Work. Creative Commons will not be
-liable to You or any party on any legal theory for any damages
-whatsoever, including without limitation any general, special,
-incidental or consequential damages arising in connection to this
-license. Notwithstanding the foregoing two (2) sentences, if Creative
-Commons has expressly identified itself as the Licensor hereunder, it
-shall have all rights and obligations of Licensor.
-
-Except for the limited purpose of indicating to the public that the Work
-is licensed under the CCPL, Creative Commons does not authorize the use
-by either party of the trademark "Creative Commons" or any related
-trademark or logo of Creative Commons without the prior written consent
-of Creative Commons. Any permitted use will be in compliance with
-Creative Commons' then-current trademark usage guidelines, as may be
-published on its website or otherwise made available upon request from
-time to time. For the avoidance of doubt, this trademark restriction
-does not form part of the License.
-
-Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/vendor/easyrdf/easyrdf/README.md b/vendor/easyrdf/easyrdf/README.md
deleted file mode 100644
index d5b9956..0000000
--- a/vendor/easyrdf/easyrdf/README.md
+++ /dev/null
@@ -1,112 +0,0 @@
-EasyRdf
-=======
-EasyRdf is a PHP library designed to make it easy to consume and produce [RDF].
-It was designed for use in mixed teams of experienced and inexperienced RDF
-developers. It is written in Object Oriented PHP and has been tested
-extensively using PHPUnit.
-
-After parsing EasyRdf builds up a graph of PHP objects that can then be walked
-around to get the data to be placed on the page. Dump methods are available to
-inspect what data is available during development.
-
-Data is typically loaded into a [EasyRdf_Graph] object from source RDF
-documents, loaded from the web via HTTP. The [EasyRdf_GraphStore] class
-simplifies loading and saving data to a SPARQL 1.1 Graph Store.
-
-SPARQL queries can be made over HTTP to a Triplestore using the
-[EasyRdf_Sparql_Client] class. SELECT and ASK queries will return an
-[EasyRdf_Sparql_Result] object and CONSTRUCT and DESCRIBE queries will return
-an [EasyRdf_Graph] object.
-
-### Example ###
-
-    $foaf = new EasyRdf_Graph("http://njh.me/foaf.rdf");
-    $foaf->load();
-    $me = $foaf->primaryTopic();
-    echo "My name is: ".$me->get('foaf:name')."\n";
-
-
-Downloads
----------
-
-The latest _stable_ version of EasyRdf can be [downloaded from the EasyRdf website].
-
-
-Links
------
-
-* [EasyRdf Homepage](http://www.easyrdf.org/)
-* [API documentation](http://www.easyrdf.org/docs/api)
-* [Change Log](http://github.com/njh/easyrdf/blob/master/CHANGELOG.md)
-* Source Code: <http://github.com/njh/easyrdf>
-* Issue Tracker: <http://github.com/njh/easyrdf/issues>
-
-
-Requirements
-------------
-
-* PHP 5.2.8 or higher
-
-
-Features
---------
-
-* API documentation written in phpdoc
-* Extensive unit tests written using phpunit
-  * Automated testing against PHP 5.2, 5.3 and 5.4
-* Built-in parsers and serialisers: RDF/JSON, N-Triples, RDF/XML, Turtle
-* Optional parsing support for: [ARC2], [Redland Bindings], [rapper]
-* Optional support for [Zend_Http_Client]
-* No required external dependancies upon other libraries (PEAR, Zend, etc...)
-* Complies with Zend Framework coding style.
-* Type mapper - resources of type foaf:Person can be mapped into PHP object of class Foaf_Person
-* Support for visualisation of graphs using [GraphViz]
-* Comes with a number of examples
-
-
-More Examples
--------------
-
-* [artistinfo.php](https://github.com/njh/easyrdf/blob/master/examples/artistinfo.php#slider) - Example of mapping an RDF class type to a PHP Class
-* [basic.php](https://github.com/njh/easyrdf/blob/master/examples/basic.php#slider) - Basic "Hello World" type example
-* [basic_sparql.php](https://github.com/njh/easyrdf/blob/master/examples/basic_sparql.php#slider) - Example of making a SPARQL SELECT query
-* [converter.php](https://github.com/njh/easyrdf/blob/master/examples/converter.php#slider) - Convert RDF from one format to another
-* [dump.php](https://github.com/njh/easyrdf/blob/master/examples/dump.php#slider) - Display the contents of a graph
-* [foafinfo.php](https://github.com/njh/easyrdf/blob/master/examples/foafinfo.php#slider) - Display the basic information in a FOAF document
-* [foafmaker.php](https://github.com/njh/easyrdf/blob/master/examples/foafmaker.php#slider) - Construct a FOAF document with a choice of serialisations
-* [graph_direct.php](https://github.com/njh/easyrdf/blob/master/examples/graph_direct.php#slider) - Example of using EasyRdf_Graph directly without EasyRdf_Resource
-* [graphstore.php](https://github.com/njh/easyrdf/blob/master/examples/graphstore.php#slider) - Store and retrieve data from a SPARQL 1.1 Graph Store
-* [graphviz.php](https://github.com/njh/easyrdf/blob/master/examples/graphviz.php#slider) - GraphViz rendering example
-* [html_tag_helpers.php](https://github.com/njh/easyrdf/blob/master/examples/html_tag_helpers.php#slider) - Rails Style html tag helpers to make the EasyRdf examples simplier
-* [httpget.php](https://github.com/njh/easyrdf/blob/master/examples/httpget.php#slider) - No RDF, just test EasyRdf_Http_Client
-* [serialise.php](https://github.com/njh/easyrdf/blob/master/examples/serialise.php#slider) - Basic serialisation example
-* [sparql_queryform.php](https://github.com/njh/easyrdf/blob/master/examples/sparql_queryform.php#slider) - Form to submit SPARQL queries and display the result
-* [uk_postcode.php](https://github.com/njh/easyrdf/blob/master/examples/uk_postcode.php#slider) - Example of resolving UK postcodes using uk-postcodes.com
-* [villages.php](https://github.com/njh/easyrdf/blob/master/examples/villages.php#slider) - Fetch and information about villages in Fife from dbpedialite.org
-* [zend_framework.php](https://github.com/njh/easyrdf/blob/master/examples/zend_framework.php#slider) - Example of using Zend_Http_Client and Zend_Loader_Autoloader with EasyRdf
-
-
-
-Licensing
----------
-
-The EasyRdf library and tests are licensed under the [BSD-3-Clause] license.
-The examples are in the public domain, for more information see [UNLICENSE].
-
-
-
-[EasyRdf_Graph]:http://www.easyrdf.org/docs/api/EasyRdf_Graph.html
-[EasyRdf_GraphStore]:http://www.easyrdf.org/docs/api/EasyRdf_GraphStore.html
-[EasyRdf_Sparql_Client]:http://www.easyrdf.org/docs/api/EasyRdf_Sparql_Client.html
-[EasyRdf_Sparql_Result]:http://www.easyrdf.org/docs/api/EasyRdf_Sparql_Result.html
-
-[ARC2]:http://github.com/semsol/arc2/
-[BSD-3-Clause]:http://www.opensource.org/licenses/BSD-3-Clause
-[downloaded from the EasyRdf website]:http://www.easyrdf.org/downloads
-[GraphViz]:http://www.graphviz.org/
-[rapper]:http://librdf.org/raptor/rapper.html
-[RDF]:http://en.wikipedia.org/wiki/Resource_Description_Framework
-[Redland Bindings]:http://librdf.org/bindings/
-[SPARQL 1.1 query language]:http://www.w3.org/TR/sparql11-query/
-[UNLICENSE]:http://unlicense.org/
-[Zend_Http_Client]:http://framework.zend.com/manual/en/zend.http.client.html
diff --git a/vendor/easyrdf/easyrdf/composer.json b/vendor/easyrdf/easyrdf/composer.json
deleted file mode 100644
index 6d0e6ec..0000000
--- a/vendor/easyrdf/easyrdf/composer.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-    "name": "easyrdf/easyrdf",
-    "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.",
-    "version": "0.9.1",
-    "type": "library",
-    "keywords": ["RDF", "Semantic Web", "Linked Data", "Turtle", "RDFa", "SPARQL"],
-    "homepage": "http://www.easyrdf.org/",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Nicholas Humfrey",
-            "email": "njh@aelius.com",
-            "homepage": "http://www.aelius.com/njh/",
-            "role": "Developer"
-        },
-        {
-            "name": "Alexey Zakhlestin",
-            "email": "indeyets@gmail.com",
-            "role": "Developer"
-        }
-    ],
-    "support": {
-        "forum": "http://groups.google.com/group/easyrdf/",
-        "issues": "http://github.com/njh/easyrdf/issues",
-        "irc": "irc://chat.freenode.net/easyrdf"
-    },
-    "require": {
-        "php": ">=5.2.8",
-        "ext-mbstring": "*",
-        "ext-pcre": "*"
-    },
-    "suggest": {
-        "ml/json-ld": "~1.0"
-    },
-    "require-dev": {
-        "phpunit/PHPUnit": "~3.5",
-        "squizlabs/php_codesniffer": "~1.4.3",
-        "sami/sami": "~1.4"
-    },
-    "autoload": {
-        "psr-0": { "EasyRdf_": "lib/" }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/doap.php b/vendor/easyrdf/easyrdf/doap.php
deleted file mode 100644
index 4393fe0..0000000
--- a/vendor/easyrdf/easyrdf/doap.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-    require_once "vendor/autoload.php";
-
-    // Load some properties from the composer file
-    $composer = json_decode(file_get_contents(__DIR__."/composer.json"));
-
-    // Start building up a RDF graph
-    $doap = new EasyRdf_Graph($composer->homepage.'doap.rdf');
-    $easyrdf = $doap->resource('#easyrdf', 'doap:Project', 'foaf:Project');
-    $easyrdf->addLiteral('doap:name',  'EasyRDF');
-    $easyrdf->addLiteral('doap:shortname', 'easyrdf');
-    $easyrdf->addLiteral('doap:revision', $composer->version);
-    $easyrdf->addLiteral('doap:shortdesc', $composer->description, 'en');
-    $easyrdf->addResource('doap:homepage', $composer->homepage);
-
-    $easyrdf->addLiteral('doap:programming-language', 'PHP');
-    $easyrdf->addLiteral(
-        'doap:description', 'EasyRdf is a PHP library designed to make it easy to consume and produce RDF. '.
-        'It was designed for use in mixed teams of experienced and inexperienced RDF developers. '.
-        'It is written in Object Oriented PHP and has been tested extensively using PHPUnit.', 'en'
-    );
-    $easyrdf->addResource('doap:license', 'http://usefulinc.com/doap/licenses/bsd');
-    $easyrdf->addResource('doap:download-page', 'http://github.com/njh/easyrdf/downloads');
-    $easyrdf->addResource('doap:download-page', 'http://github.com/njh/easyrdf/downloads');
-    $easyrdf->addResource('doap:bug-database', 'http://github.com/njh/easyrdf/issues');
-    $easyrdf->addResource('doap:mailing-list', 'http://groups.google.com/group/easyrdf');
-
-    $easyrdf->addResource('doap:category', 'http://dbpedia.org/resource/Resource_Description_Framework');
-    $easyrdf->addResource('doap:category', 'http://dbpedia.org/resource/PHP');
-    $easyrdf->addResource('doap:category', 'http://www.dbpedialite.org/things/24131#id');
-    $easyrdf->addResource('doap:category', 'http://www.dbpedialite.org/things/53847#id');
-
-    $repository = $doap->newBNode('doap:GitRepository');
-    $repository->addResource('doap:browse', 'http://github.com/njh/easyrdf');
-    $repository->addResource('doap:location', 'git://github.com/njh/easyrdf.git');
-    $easyrdf->addResource('doap:repository', $repository);
-
-    $njh = $doap->resource('http://njh.me/', 'foaf:Person');
-    $njh->addLiteral('foaf:name', 'Nicholas J Humfrey');
-    $njh->addResource('foaf:homepage', 'http://www.aelius.com/njh/');
-    $easyrdf->add('doap:maintainer', $njh);
-    $easyrdf->add('doap:developer', $njh);
-    $easyrdf->add('foaf:maker', $njh);
-
-    print $doap->serialise('rdfxml');
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf.php b/vendor/easyrdf/easyrdf/lib/EasyRdf.php
deleted file mode 100644
index 8c7248b..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf.php
+++ /dev/null
@@ -1,244 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * Use this file to load the core of EasyRdf, if you don't have an autoloader.
- *
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2011-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * @see EasyRdf_Exception
- */
-require_once "EasyRdf/Exception.php";
-
-/**
- * @see EasyRdf_Format
- */
-require_once "EasyRdf/Format.php";
-
-/**
- * @see EasyRdf_Graph
- */
-require_once "EasyRdf/Graph.php";
-
-/**
- * @see EasyRdf_GraphStore
- */
-require_once "EasyRdf/GraphStore.php";
-
-/**
- * @see EasyRdf_Http
- */
-require_once "EasyRdf/Http.php";
-
-/**
- * @see EasyRdf_Http_Client
- */
-require_once "EasyRdf/Http/Client.php";
-
-/**
- * @see EasyRdf_Http_Response
- */
-require_once "EasyRdf/Http/Response.php";
-
-/**
- * @see EasyRdf_Isomorphic
- */
-require_once "EasyRdf/Isomorphic.php";
-
-/**
- * @see EasyRdf_Namespace
- */
-require_once "EasyRdf/Namespace.php";
-
-/**
- * @see EasyRdf_Literal
- */
-require_once "EasyRdf/Literal.php";
-
-/**
- * @see EasyRdf_Literal_Boolean
- */
-require_once "EasyRdf/Literal/Boolean.php";
-
-/**
- * @see EasyRdf_Literal_Date
- */
-require_once "EasyRdf/Literal/Date.php";
-
-/**
- * @see EasyRdf_Literal_DateTime
- */
-require_once "EasyRdf/Literal/DateTime.php";
-
-/**
- * @see EasyRdf_Literal_Decimal
- */
-require_once "EasyRdf/Literal/Decimal.php";
-
-/**
- * @see EasyRdf_Literal_HexBinary
- */
-require_once "EasyRdf/Literal/HexBinary.php";
-
-/**
- * @see EasyRdf_Literal_HTML
- */
-require_once "EasyRdf/Literal/HTML.php";
-
-/**
- * @see EasyRdf_Literal_Integer
- */
-require_once "EasyRdf/Literal/Integer.php";
-
-/**
- * @see EasyRdf_Literal_XML
- */
-require_once "EasyRdf/Literal/XML.php";
-
-/**
- * @see EasyRdf_ParsedUri
- */
-require_once "EasyRdf/ParsedUri.php";
-
-/**
- * @see EasyRdf_Parser
- */
-require_once "EasyRdf/Parser.php";
-
-/**
- * @see EasyRdf_Parser_Exception
- */
-require_once "EasyRdf/Parser/Exception.php";
-
-/**
- * @see EasyRdf_Parser_RdfPhp
- */
-require_once "EasyRdf/Parser/RdfPhp.php";
-
-/**
- * @see EasyRdf_Parser_Ntriples
- */
-require_once "EasyRdf/Parser/Ntriples.php";
-
-/**
- * @see EasyRdf_Parser_Json
- */
-require_once "EasyRdf/Parser/Json.php";
-
-/**
- * @see EasyRdf_Parser_Rdfa
- */
-require_once "EasyRdf/Parser/Rdfa.php";
-
-/**
- * @see EasyRdf_Parser_RdfXml
- */
-require_once "EasyRdf/Parser/RdfXml.php";
-
-/**
- * @see EasyRdf_Parser_Turtle
- */
-require_once "EasyRdf/Parser/Turtle.php";
-
-/**
- * @see EasyRdf_Resource
- */
-require_once "EasyRdf/Resource.php";
-
-/**
- * @see EasyRdf_Collection
- */
-require_once "EasyRdf/Collection.php";
-
-/**
- * @see EasyRdf_Container
- */
-require_once "EasyRdf/Container.php";
-
-/**
- * @see EasyRdf_Serialiser
- */
-require_once "EasyRdf/Serialiser.php";
-
-/**
- * @see EasyRdf_Serialiser_GraphViz
- */
-require_once "EasyRdf/Serialiser/GraphViz.php";
-
-/**
- * @see EasyRdf_Serialiser_RdfPhp
- */
-require_once "EasyRdf/Serialiser/RdfPhp.php";
-
-/**
- * @see EasyRdf_Serialiser_Ntriples
- */
-require_once "EasyRdf/Serialiser/Ntriples.php";
-
-/**
- * @see EasyRdf_Serialiser_Json
- */
-require_once "EasyRdf/Serialiser/Json.php";
-
-/**
- * @see EasyRdf_Serialiser_RdfXml
- */
-require_once "EasyRdf/Serialiser/RdfXml.php";
-
-/**
- * @see EasyRdf_Serialiser_Turtle
- */
-require_once "EasyRdf/Serialiser/Turtle.php";
-
-/**
- * @see EasyRdf_Sparql_Client
- */
-require_once "EasyRdf/Sparql/Client.php";
-
-/**
- * @see EasyRdf_Sparql_Result
- */
-require_once "EasyRdf/Sparql/Result.php";
-
-/**
- * @see EasyRdf_TypeMapper
- */
-require_once "EasyRdf/TypeMapper.php";
-
-/**
- * @see EasyRdf_Utils
- */
-require_once "EasyRdf/Utils.php";
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Collection.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Collection.php
deleted file mode 100644
index b66646c..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Collection.php
+++ /dev/null
@@ -1,333 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Sub-class of EasyRdf_Resource that represents an RDF collection (rdf:List)
- *
- * This class can be used to iterate through a collection of items.
- *
- * Note that items are numbered from 1 (not 0) for consistency with RDF Containers.
- *
- * @package    EasyRdf
- * @link       http://www.w3.org/TR/xmlschema-2/#date
- * @copyright  Copyright (c) 2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Collection extends EasyRdf_Resource implements ArrayAccess, Countable, SeekableIterator
-{
-    private $position;
-    private $current;
-
-    /** Create a new collection - do not use this directly
-     *
-     * @ignore
-     */
-    public function __construct($uri, $graph)
-    {
-        $this->position = 1;
-        $this->current = null;
-        parent::__construct($uri, $graph);
-    }
-
-    /** Seek to a specific position in the container
-     *
-     * The first item is postion 1
-     *
-     * @param  integer  $position     The position in the container to seek to
-     * @throws OutOfBoundsException
-     */
-    public function seek($position)
-    {
-        if (is_int($position) and $position > 0) {
-            list($node, $actual) = $this->getCollectionNode($position);
-            if ($actual === $position) {
-                $this->position = $actual;
-                $this->current = $node;
-            } else {
-                throw new OutOfBoundsException(
-                    "Unable to seek to position $position in the collection"
-                );
-            }
-        } else {
-            throw new InvalidArgumentException(
-                "Collection position must be a positive integer"
-            );
-        }
-    }
-
-    /** Rewind the iterator back to the start of the collection
-     *
-     */
-    public function rewind()
-    {
-        $this->position = 1;
-        $this->current = null;
-    }
-
-    /** Return the current item in the collection
-     *
-     * @return mixed The current item
-     */
-    public function current()
-    {
-        if ($this->position === 1) {
-            return $this->get('rdf:first');
-        } elseif ($this->current) {
-            return $this->current->get('rdf:first');
-        }
-    }
-
-    /** Return the key / current position in the collection
-     *
-     * Note: the first item is number 1
-     *
-     * @return int The current position
-     */
-    public function key()
-    {
-        return $this->position;
-    }
-
-    /** Move forward to next item in the collection
-     *
-     */
-    public function next()
-    {
-        if ($this->position === 1) {
-            $this->current = $this->get('rdf:rest');
-        } elseif ($this->current) {
-            $this->current = $this->current->get('rdf:rest');
-        }
-        $this->position++;
-    }
-
-    /** Checks if current position is valid
-     *
-     * @return bool True if the current position is valid
-     */
-    public function valid()
-    {
-        if ($this->position === 1 and $this->hasProperty('rdf:first')) {
-            return true;
-        } elseif ($this->current !== null and $this->current->hasProperty('rdf:first')) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    /** Get a node for a particular offset into the collection
-     *
-     * This function may not return the item you requested, if
-     * it does not exist. Please check the $postion parameter
-     * returned.
-     *
-     * If the offset is null, then the last node in the
-     * collection (before rdf:nil) will be returned.
-     *
-     * @param  integer $offset          The offset into the collection (or null)
-     * @return array   $node, $postion  The node object and postion of the node
-     */
-    public function getCollectionNode($offset)
-    {
-        $position = 1;
-        $node = $this;
-        $nil = $this->graph->resource('rdf:nil');
-        while (($rest = $node->get('rdf:rest')) and $rest !== $nil and (is_null($offset) or ($position < $offset))) {
-            $node = $rest;
-            $position++;
-        }
-        return array($node, $position);
-    }
-
-    /** Counts the number of items in the collection
-     *
-     * Note that this is an slow method - it is more efficient to use
-     * the iterator interface, if you can.
-     *
-     * @return integer The number of items in the collection
-     */
-    public function count()
-    {
-        // Find the end of the collection
-        list($node, $position) = $this->getCollectionNode(null);
-        if (!$node->hasProperty('rdf:first')) {
-            return 0;
-        } else {
-            return $position;
-        }
-    }
-
-    /** Append an item to the end of the collection
-     *
-     * @param  mixed $value      The value to append
-     * @return integer           The number of values appended (1 or 0)
-     */
-    public function append($value)
-    {
-        // Find the end of the collection
-        list($node, $position) = $this->getCollectionNode(null);
-        $rest = $node->get('rdf:rest');
-
-        if ($node === $this and is_null($rest)) {
-            $node->set('rdf:first', $value);
-            $node->addResource('rdf:rest', 'rdf:nil');
-        } else {
-            $new = $this->graph->newBnode();
-            $node->set('rdf:rest', $new);
-            $new->add('rdf:first', $value);
-            $new->addResource('rdf:rest', 'rdf:nil');
-        }
-
-        return 1;
-    }
-
-    /** Array Access: check if a position exists in collection using array syntax
-     *
-     * Example: isset($list[2])
-     */
-    public function offsetExists($offset)
-    {
-        if (is_int($offset) and $offset > 0) {
-            list($node, $position) = $this->getCollectionNode($offset);
-            return ($node and $position === $offset and $node->hasProperty('rdf:first'));
-        } else {
-            throw new InvalidArgumentException(
-                "Collection offset must be a positive integer"
-            );
-        }
-    }
-
-    /** Array Access: get an item at a specified position in collection using array syntax
-     *
-     * Example: $item = $list[2];
-     */
-    public function offsetGet($offset)
-    {
-        if (is_int($offset) and $offset > 0) {
-            list($node, $position) = $this->getCollectionNode($offset);
-            if ($node and $position === $offset) {
-                return $node->get('rdf:first');
-            }
-        } else {
-            throw new InvalidArgumentException(
-                "Collection offset must be a positive integer"
-            );
-        }
-    }
-
-    /**
-     * Array Access: set an item at a positon in collection using array syntax
-     *
-     * Example: $list[2] = $item;
-     */
-    public function offsetSet($offset, $value)
-    {
-        if (is_null($offset)) {
-            // No offset - append to end of collection
-            $this->append($value);
-        } elseif (is_int($offset) and $offset > 0) {
-            list($node, $position) = $this->getCollectionNode($offset);
-
-            // Create nodes, if they are missing
-            while ($position < $offset) {
-                $new = $this->graph->newBnode();
-                $node->set('rdf:rest', $new);
-                $new->addResource('rdf:rest', 'rdf:nil');
-                $node = $new;
-                $position++;
-            }
-
-            // Terminate the list
-            if (!$node->hasProperty('rdf:rest')) {
-                $node->addResource('rdf:rest', 'rdf:nil');
-            }
-
-            return $node->set('rdf:first', $value);
-        } else {
-            throw new InvalidArgumentException(
-                "Collection offset must be a positive integer"
-            );
-        }
-    }
-
-    /**
-     * Array Access: delete an item at a specific postion using array syntax
-     *
-     * Example: unset($seq[2]);
-     */
-    public function offsetUnset($offset)
-    {
-        if (is_int($offset) and $offset > 0) {
-            list($node, $position) = $this->getCollectionNode($offset);
-        } else {
-            throw new InvalidArgumentException(
-                "Collection offset must be a positive integer"
-            );
-        }
-
-        // Does the item exist?
-        if ($node and $position === $offset) {
-            $nil = $this->graph->resource('rdf:nil');
-            if ($position === 1) {
-                $rest = $node->get('rdf:rest');
-                if ($rest and $rest !== $nil) {
-                    // Move second value, so we can keep the head of list
-                    $node->set('rdf:first', $rest->get('rdf:first'));
-                    $node->set('rdf:rest', $rest->get('rdf:rest'));
-                    $rest->delete('rdf:first');
-                    $rest->delete('rdf:rest');
-                } else {
-                    // Just remove the value
-                    $node->delete('rdf:first');
-                    $node->delete('rdf:rest');
-                }
-            } else {
-                // Remove the value and re-link the list
-                $node->delete('rdf:first');
-                $rest = $node->get('rdf:rest');
-                $previous = $node->get('^rdf:rest');
-                if (is_null($rest)) {
-                    $rest = $nil;
-                }
-                if ($previous) {
-                    $previous->set('rdf:rest', $rest);
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Container.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Container.php
deleted file mode 100644
index 2207956..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Container.php
+++ /dev/null
@@ -1,230 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Sub-class of EasyRdf_Resource that represents an RDF container
- * (rdf:Alt, rdf:Bag and rdf:Seq)
- *
- * This class can be used to iterate through a list of items.
- *
- * @package    EasyRdf
- * @link       http://www.w3.org/TR/xmlschema-2/#date
- * @copyright  Copyright (c) 2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Container extends EasyRdf_Resource implements ArrayAccess, Countable, SeekableIterator
-{
-    private $position;
-
-    /** Create a new container - do not use this directly
-     *
-     * @ignore
-     */
-    public function __construct($uri, $graph)
-    {
-        $this->position = 1;
-        parent::__construct($uri, $graph);
-    }
-
-    /** Seek to a specific position in the container
-     *
-     * The first item is postion 1
-     *
-     * @param  integer  $position     The position in the container to seek to
-     * @throws OutOfBoundsException
-     */
-    public function seek($position)
-    {
-        if (is_int($position) and $position > 0) {
-            if ($this->hasProperty('rdf:_'.$position)) {
-                $this->position = $position;
-            } else {
-                throw new OutOfBoundsException(
-                    "Unable to seek to position $position in the container"
-                );
-            }
-        } else {
-            throw new InvalidArgumentException(
-                "Container position must be a positive integer"
-            );
-        }
-    }
-
-    /** Rewind the iterator back to the start of the container (item 1)
-     *
-     */
-    public function rewind()
-    {
-        $this->position = 1;
-    }
-
-    /** Return the current item in the container
-     *
-     * @return mixed The current item
-     */
-    public function current()
-    {
-        return $this->get('rdf:_'.$this->position);
-    }
-
-    /** Return the key / current position in the container
-     *
-     * @return int The current position
-     */
-    public function key()
-    {
-        return $this->position;
-    }
-
-    /** Move forward to next item in the container
-     *
-     */
-    public function next()
-    {
-        $this->position++;
-    }
-
-    /** Checks if current position is valid
-     *
-     * @return bool True if the current position is valid
-     */
-    public function valid()
-    {
-        return $this->hasProperty('rdf:_'.$this->position);
-    }
-
-    /** Counts the number of items in the container
-     *
-     * Note that this is an slow method - it is more efficient to use
-     * the iterator interface, if you can.
-     *
-     * @return integer The number of items in the container
-     */
-    public function count()
-    {
-        $pos = 1;
-        while ($this->hasProperty('rdf:_'.$pos)) {
-            $pos++;
-        }
-        return $pos - 1;
-    }
-
-    /** Append an item to the end of the container
-     *
-     * @param  mixed $value      The value to append
-     * @return integer           The number of values appended (1 or 0)
-     */
-    public function append($value)
-    {
-        // Find the end of the list
-        $pos = 1;
-        while ($this->hasProperty('rdf:_'.$pos)) {
-            $pos++;
-        }
-
-        // Add the item
-        return $this->add('rdf:_'.$pos, $value);
-    }
-
-    /** Array Access: check if a position exists in container using array syntax
-     *
-     * Example: isset($seq[2])
-     */
-    public function offsetExists($offset)
-    {
-        if (is_int($offset) and $offset > 0) {
-            return $this->hasProperty('rdf:_'.$offset);
-        } else {
-            throw new InvalidArgumentException(
-                "Container position must be a positive integer"
-            );
-        }
-    }
-
-    /** Array Access: get an item at a specified position in container using array syntax
-     *
-     * Example: $item = $seq[2];
-     */
-    public function offsetGet($offset)
-    {
-        if (is_int($offset) and $offset > 0) {
-            return $this->get('rdf:_'.$offset);
-        } else {
-            throw new InvalidArgumentException(
-                "Container position must be a positive integer"
-            );
-        }
-    }
-
-    /**
-     * Array Access: set an item at a positon in container using array syntax
-     *
-     * Example: $seq[2] = $item;
-     *
-     * Warning: creating gaps in the sequence will result in unexpected behavior
-     */
-    public function offsetSet($offset, $value)
-    {
-        if (is_int($offset) and $offset > 0) {
-            return $this->set('rdf:_'.$offset, $value);
-        } elseif (is_null($offset)) {
-            return $this->append($value);
-        } else {
-            throw new InvalidArgumentException(
-                "Container position must be a positive integer"
-            );
-        }
-    }
-
-    /**
-     * Array Access: delete an item at a specific postion using array syntax
-     *
-     * Example: unset($seq[2]);
-     *
-     * Warning: creating gaps in the sequence will result in unexpected behavior
-     */
-    public function offsetUnset($offset)
-    {
-        if (is_int($offset) and $offset > 0) {
-            return $this->delete('rdf:_'.$offset);
-        } else {
-            throw new InvalidArgumentException(
-                "Container position must be a positive integer"
-            );
-        }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Exception.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Exception.php
deleted file mode 100644
index 25090a5..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Exception.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * EasyRdf Exception class
- *
- * All exceptions thrown by EasyRdf are an instance of this class.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Exception extends Exception
-{
-    // Comment to make PHP CodeSniffer happy
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Format.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Format.php
deleted file mode 100644
index d6eb670..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Format.php
+++ /dev/null
@@ -1,699 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class the represents an RDF file format.
- *
- * For each format, the name, label, URIs and associated MIME Types are
- * stored. A single parser and serialiser can also be registered to each
- * format.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Format
-{
-    private static $formats = array();
-
-    private $name = array();
-    private $label = null;
-    private $uri = null;
-    private $mimeTypes = array();
-    private $extensions = array();
-    private $parserClass = null;
-    private $serialiserClass = null;
-
-    /** Get a list of format names
-     *
-     * @return array          An array of formats name
-     */
-    public static function getNames()
-    {
-        return array_keys(self::$formats);
-    }
-
-    /** Get a list of all the registered formats
-     *
-     * @return array          An array of format objects
-     */
-    public static function getFormats()
-    {
-        return self::$formats;
-    }
-
-    /** Generates an HTTP Accept header string
-     *
-     * The string will contain all of the MIME Types that we
-     * are able to parse.
-     *
-     * It is also possible to specify additional MIME types
-     * in the form array('text/plain' => 0.5) where 0.5 is the
-     * q value for that type. The types are sorted by q value
-     * before constructing the string.
-     *
-     * @param array $extraTypes    extra MIME types to add
-     * @return string              list of supported MIME types
-     */
-    public static function getHttpAcceptHeader($extraTypes = array())
-    {
-        $accept = $extraTypes;
-        foreach (self::$formats as $format) {
-            if ($format->parserClass and count($format->mimeTypes) > 0) {
-                $accept = array_merge($accept, $format->mimeTypes);
-            }
-        }
-        arsort($accept, SORT_NUMERIC);
-
-        $acceptStr='';
-        foreach ($accept as $type => $q) {
-            if ($acceptStr) {
-                $acceptStr .= ',';
-            }
-            if ($q == 1.0) {
-                $acceptStr .= $type;
-            } else {
-                $acceptStr .= sprintf("%s;q=%1.1F", $type, $q);
-            }
-        }
-        return $acceptStr;
-    }
-
-    /** Check if a named graph exists
-     *
-     * @param string $name    the name of the format
-     * @return boolean        true if the format exists
-     */
-    public static function formatExists($name)
-    {
-        return array_key_exists($name, self::$formats);
-    }
-
-    /** Get a EasyRdf_Format from a name, uri or mime type
-     *
-     * @param string $query   a query string to search for
-     * @return object         the first EasyRdf_Format that matches the query
-     * @throws EasyRdf_Exception  if no format is found
-     */
-    public static function getFormat($query)
-    {
-        if (!is_string($query) or $query == null or $query == '') {
-            throw new InvalidArgumentException(
-                "\$query should be a string and cannot be null or empty"
-            );
-        }
-
-        foreach (self::$formats as $format) {
-            if ($query == $format->name or
-                $query == $format->uri or
-                array_key_exists($query, $format->mimeTypes) or
-                in_array($query, $format->extensions)) {
-                return $format;
-            }
-        }
-
-        # No match
-        throw new EasyRdf_Exception(
-            "Format is not recognised: $query"
-        );
-    }
-
-    /** Register a new format
-     *
-     * @param  string  $name       The name of the format (e.g. ntriples)
-     * @param  string  $label      The label for the format (e.g. N-Triples)
-     * @param  string  $uri        The URI for the format
-     * @param  string  $mimeTypes  One or more mime types for the format
-     * @param  string  $extensions One or more extensions (file suffix)
-     * @return object              The new EasyRdf_Format object
-     */
-    public static function register(
-        $name,
-        $label = null,
-        $uri = null,
-        $mimeTypes = array(),
-        $extensions = array()
-    ) {
-        if (!is_string($name) or $name == null or $name == '') {
-            throw new InvalidArgumentException(
-                "\$name should be a string and cannot be null or empty"
-            );
-        }
-
-        if (!array_key_exists($name, self::$formats)) {
-            self::$formats[$name] = new EasyRdf_Format($name);
-        }
-
-        self::$formats[$name]->setLabel($label);
-        self::$formats[$name]->setUri($uri);
-        self::$formats[$name]->setMimeTypes($mimeTypes);
-        self::$formats[$name]->setExtensions($extensions);
-        return self::$formats[$name];
-    }
-
-    /** Remove a format from the registry
-     *
-     * @param  string  $name      The name of the format (e.g. ntriples)
-     */
-    public static function unregister($name)
-    {
-        unset(self::$formats[$name]);
-    }
-
-    /** Class method to register a parser class to a format name
-     *
-     * @param  string  $name   The name of the format (e.g. ntriples)
-     * @param  string  $class  The name of the class (e.g. EasyRdf_Parser_Ntriples)
-     */
-    public static function registerParser($name, $class)
-    {
-        if (!self::formatExists($name)) {
-            self::register($name);
-        }
-        self::getFormat($name)->setParserClass($class);
-    }
-
-    /** Class method to register a serialiser class to a format name
-     *
-     * @param  string  $name   The name of the format (e.g. ntriples)
-     * @param  string  $class  The name of the class (e.g. EasyRdf_Serialiser_Ntriples)
-     */
-    public static function registerSerialiser($name, $class)
-    {
-        if (!self::formatExists($name)) {
-            self::register($name);
-        }
-        self::getFormat($name)->setSerialiserClass($class);
-    }
-
-    /** Attempt to guess the document format from some content.
-     *
-     * If $filename is given, then the suffix is first used to guess the format.
-     *
-     * If the document format is not recognised, null is returned.
-     *
-     * @param  string $data     The document data
-     * @param  string $filename Optional filename
-     * @return object EasyRdf_Format The format object
-     */
-    public static function guessFormat($data, $filename = null)
-    {
-        if (is_array($data)) {
-            # Data has already been parsed into RDF/PHP
-            return self::getFormat('php');
-        }
-
-        // First try and identify by the filename
-        if ($filename and preg_match('/\.(\w+)$/', $filename, $matches)) {
-            foreach (self::$formats as $format) {
-                if (in_array($matches[1], $format->extensions)) {
-                    return $format;
-                }
-            }
-        }
-
-        // Then try and guess by the first 1024 bytes of content
-        $short = substr($data, 0, 1024);
-        if (preg_match('/^\s*\{/', $short)) {
-            return self::getFormat('json');
-        } elseif (preg_match('/<rdf:/i', $short)) {
-            return self::getFormat('rdfxml');
-        } elseif (preg_match('|http://www.w3.org/2005/sparql-results|', $short)) {
-            return self::getFormat('sparql-xml');
-        } elseif (preg_match('/\WRDFa\W/i', $short)) {
-            return self::getFormat('rdfa');
-        } elseif (preg_match('/<!DOCTYPE html|<html/i', $short)) {
-            # We don't support any other microformats embedded in HTML
-            return self::getFormat('rdfa');
-        } elseif (preg_match('/@prefix\s|@base\s/', $short)) {
-            return self::getFormat('turtle');
-        } elseif (preg_match('/^\s*<.+> <.+>/m', $short)) {
-            return self::getFormat('ntriples');
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * This constructor is for internal use only.
-     * To create a new format, use the register method.
-     *
-     * @param  string  $name    The name of the format
-     * @see    EasyRdf_Format::register()
-     * @ignore
-     */
-    public function __construct($name)
-    {
-        $this->name = $name;
-        $this->label = $name;  # Only a default
-    }
-
-    /** Get the name of a format object
-     *
-     * @return string The name of the format (e.g. rdfxml)
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /** Get the label for a format object
-     *
-     * @return string The format label (e.g. RDF/XML)
-     */
-    public function getLabel()
-    {
-        return $this->label;
-    }
-
-    /** Set the label for a format object
-     *
-     * @param  string $label  The new label for the format
-     */
-    public function setLabel($label)
-    {
-        if ($label) {
-            if (!is_string($label)) {
-                throw new InvalidArgumentException(
-                    "\$label should be a string"
-                );
-            }
-            return $this->label = $label;
-        } else {
-            return $this->label = null;
-        }
-    }
-
-    /** Get the URI for a format object
-     *
-     * @return string The format URI
-     */
-    public function getUri()
-    {
-        return $this->uri;
-    }
-
-    /** Set the URI for a format object
-     *
-     * @param string $uri  The new URI for the format
-     */
-    public function setUri($uri)
-    {
-        if ($uri) {
-            if (!is_string($uri)) {
-                throw new InvalidArgumentException(
-                    "\$uri should be a string"
-                );
-            }
-            return $this->uri = $uri;
-        } else {
-            return $this->uri = null;
-        }
-    }
-
-    /** Get the default registered mime type for a format object
-     *
-     * @return string The default mime type as a string.
-     */
-    public function getDefaultMimeType()
-    {
-        $types = array_keys($this->mimeTypes);
-        if (isset($types[0])) {
-            return $types[0];
-        }
-    }
-
-    /** Get all the registered mime types for a format object
-     *
-     * @return array One or more MIME types in an array with
-     *               the mime type as the key and q value as the value
-     */
-    public function getMimeTypes()
-    {
-        return $this->mimeTypes;
-    }
-
-    /** Set the MIME Types for a format object
-     *
-     * @param array $mimeTypes  One or more mime types
-     */
-    public function setMimeTypes($mimeTypes)
-    {
-        if ($mimeTypes) {
-            if (!is_array($mimeTypes)) {
-                $mimeTypes = array($mimeTypes);
-            }
-            $this->mimeTypes = $mimeTypes;
-        } else {
-            $this->mimeTypes = array();
-        }
-    }
-
-    /** Get the default registered file extension (filename suffix) for a format object
-     *
-     * @return string The default extension as a string.
-     */
-    public function getDefaultExtension()
-    {
-        if (isset($this->extensions[0])) {
-            return $this->extensions[0];
-        }
-    }
-
-    /** Get all the registered file extensions (filename suffix) for a format object
-     *
-     * @return array One or more extensions as an array
-     */
-    public function getExtensions()
-    {
-        return $this->extensions;
-    }
-
-    /** Set the file format extensions (filename suffix) for a format object
-     *
-     * @param mixed $extensions  One or more file extensions
-     */
-    public function setExtensions($extensions)
-    {
-        if ($extensions) {
-            if (!is_array($extensions)) {
-                $extensions = array($extensions);
-            }
-            $this->extensions = $extensions;
-        } else {
-            $this->extensions = array();
-        }
-    }
-
-    /** Set the parser to use for a format
-     *
-     * @param string $class  The name of the class
-     */
-    public function setParserClass($class)
-    {
-        if ($class) {
-            if (!is_string($class)) {
-                throw new InvalidArgumentException(
-                    "\$class should be a string"
-                );
-            }
-            $this->parserClass = $class;
-        } else {
-            $this->parserClass = null;
-        }
-    }
-
-    /** Get the name of the class to use to parse the format
-     *
-     * @return string The name of the class
-     */
-    public function getParserClass()
-    {
-        return $this->parserClass;
-    }
-
-    /** Create a new parser to parse this format
-     *
-     * @return object The new parser object
-     */
-    public function newParser()
-    {
-        $parserClass = $this->parserClass;
-        if (!$parserClass) {
-            throw new EasyRdf_Exception(
-                "No parser class available for format: ".$this->getName()
-            );
-        }
-        return (new $parserClass());
-    }
-
-    /** Set the serialiser to use for a format
-     *
-     * @param string $class  The name of the class
-     */
-    public function setSerialiserClass($class)
-    {
-        if ($class) {
-            if (!is_string($class)) {
-                throw new InvalidArgumentException(
-                    "\$class should be a string"
-                );
-            }
-            $this->serialiserClass = $class;
-        } else {
-            $this->serialiserClass = null;
-        }
-    }
-
-    /** Get the name of the class to use to serialise the format
-     *
-     * @return string The name of the class
-     */
-    public function getSerialiserClass()
-    {
-        return $this->serialiserClass;
-    }
-
-    /** Create a new serialiser to parse this format
-     *
-     * @return object The new serialiser object
-     */
-    public function newSerialiser()
-    {
-        $serialiserClass = $this->serialiserClass;
-        if (!$serialiserClass) {
-            throw new EasyRdf_Exception(
-                "No serialiser class available for format: ".$this->getName()
-            );
-        }
-        return (new $serialiserClass());
-    }
-
-    /** Magic method to return the name of the format when casted to string
-     *
-     * @return string The name of the format
-     */
-    public function __toString()
-    {
-        return $this->name;
-    }
-}
-
-
-/*
-   Register default set of supported formats
-   NOTE: they are ordered by preference
-*/
-
-EasyRdf_Format::register(
-    'php',
-    'RDF/PHP',
-    'http://n2.talis.com/wiki/RDF_PHP_Specification',
-    array(
-        'application/x-httpd-php-source' => 1.0
-    ),
-    array('phps')
-);
-
-EasyRdf_Format::register(
-    'json',
-    'RDF/JSON Resource-Centric',
-    'http://n2.talis.com/wiki/RDF_JSON_Specification',
-    array(
-        'application/json' => 1.0,
-        'text/json' => 0.9,
-        'application/rdf+json' => 0.9
-    ),
-    array('json')
-);
-
-EasyRdf_Format::register(
-    'jsonld',
-    'JSON-LD',
-    'http://www.w3.org/TR/json-ld/',
-    array(
-        'application/ld+json' => 1.0
-    ),
-    array('jsonld')
-);
-
-EasyRdf_Format::register(
-    'ntriples',
-    'N-Triples',
-    'http://www.w3.org/TR/n-triples/',
-    array(
-        'application/n-triples' => 1.0,
-        'text/plain' => 0.9,
-        'text/ntriples' => 0.9,
-        'application/ntriples' => 0.9,
-        'application/x-ntriples' => 0.9
-    ),
-    array('nt')
-);
-
-EasyRdf_Format::register(
-    'turtle',
-    'Turtle Terse RDF Triple Language',
-    'http://www.dajobe.org/2004/01/turtle',
-    array(
-        'text/turtle' => 0.8,
-        'application/turtle' => 0.7,
-        'application/x-turtle' => 0.7
-    ),
-    array('ttl')
-);
-
-EasyRdf_Format::register(
-    'rdfxml',
-    'RDF/XML',
-    'http://www.w3.org/TR/rdf-syntax-grammar',
-    array(
-        'application/rdf+xml' => 0.8
-    ),
-    array('rdf', 'xrdf')
-);
-
-EasyRdf_Format::register(
-    'dot',
-    'Graphviz',
-    'http://www.graphviz.org/doc/info/lang.html',
-    array(
-        'text/vnd.graphviz' => 0.8
-    ),
-    array('gv', 'dot')
-);
-
-EasyRdf_Format::register(
-    'json-triples',
-    'RDF/JSON Triples'
-);
-
-EasyRdf_Format::register(
-    'n3',
-    'Notation3',
-    'http://www.w3.org/2000/10/swap/grammar/n3#',
-    array(
-        'text/n3' => 0.5,
-        'text/rdf+n3' => 0.5
-    ),
-    array('n3')
-);
-
-EasyRdf_Format::register(
-    'rdfa',
-    'RDFa',
-    'http://www.w3.org/TR/rdfa-core/',
-    array(
-        'text/html' => 0.4,
-        'application/xhtml+xml' => 0.4
-    ),
-    array('html')
-);
-
-EasyRdf_Format::register(
-    'sparql-xml',
-    'SPARQL XML Query Results',
-    'http://www.w3.org/TR/rdf-sparql-XMLres/',
-    array(
-        'application/sparql-results+xml' => 1.0
-    )
-);
-
-EasyRdf_Format::register(
-    'sparql-json',
-    'SPARQL JSON Query Results',
-    'http://www.w3.org/TR/rdf-sparql-json-res/',
-    array(
-        'application/sparql-results+json' => 1.0
-    )
-);
-
-EasyRdf_Format::register(
-    'png',
-    'Portable Network Graphics (PNG)',
-    'http://www.w3.org/TR/PNG/',
-    array(
-        'image/png' => 0.3
-    ),
-    array('png')
-);
-
-EasyRdf_Format::register(
-    'gif',
-    'Graphics Interchange Format (GIF)',
-    'http://www.w3.org/Graphics/GIF/spec-gif89a.txt',
-    array(
-        'image/gif' => 0.2
-    ),
-    array('gif')
-);
-
-EasyRdf_Format::register(
-    'svg',
-    'Scalable Vector Graphics (SVG)',
-    'http://www.w3.org/TR/SVG/',
-    array(
-        'image/svg+xml' => 0.3
-    ),
-    array('svg')
-);
-
-
-/*
-   Register default set of parsers and serialisers
-*/
-
-EasyRdf_Format::registerParser('json', 'EasyRdf_Parser_Json');
-EasyRdf_Format::registerParser('jsonld', 'EasyRdf_Parser_JsonLd');
-EasyRdf_Format::registerParser('ntriples', 'EasyRdf_Parser_Ntriples');
-EasyRdf_Format::registerParser('php', 'EasyRdf_Parser_RdfPhp');
-EasyRdf_Format::registerParser('rdfxml', 'EasyRdf_Parser_RdfXml');
-EasyRdf_Format::registerParser('turtle', 'EasyRdf_Parser_Turtle');
-EasyRdf_Format::registerParser('rdfa', 'EasyRdf_Parser_Rdfa');
-
-EasyRdf_Format::registerSerialiser('json', 'EasyRdf_Serialiser_Json');
-EasyRdf_Format::registerSerialiser('jsonld', 'EasyRdf_Serialiser_JsonLd');
-EasyRdf_Format::registerSerialiser('n3', 'EasyRdf_Serialiser_Turtle');
-EasyRdf_Format::registerSerialiser('ntriples', 'EasyRdf_Serialiser_Ntriples');
-EasyRdf_Format::registerSerialiser('php', 'EasyRdf_Serialiser_RdfPhp');
-EasyRdf_Format::registerSerialiser('rdfxml', 'EasyRdf_Serialiser_RdfXml');
-EasyRdf_Format::registerSerialiser('turtle', 'EasyRdf_Serialiser_Turtle');
-
-EasyRdf_Format::registerSerialiser('dot', 'EasyRdf_Serialiser_GraphViz');
-EasyRdf_Format::registerSerialiser('gif', 'EasyRdf_Serialiser_GraphViz');
-EasyRdf_Format::registerSerialiser('png', 'EasyRdf_Serialiser_GraphViz');
-EasyRdf_Format::registerSerialiser('svg', 'EasyRdf_Serialiser_GraphViz');
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Graph.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Graph.php
deleted file mode 100644
index 46ccc17..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Graph.php
+++ /dev/null
@@ -1,1663 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Container for collection of EasyRdf_Resources.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Graph
-{
-    /** The URI of the graph */
-    private $uri = null;
-    private $parsedUri = null;
-
-    /** Array of resources contained in the graph */
-    private $resources = array();
-
-    private $index = array();
-    private $revIndex = array();
-
-    /** Counter for the number of bnodes */
-    private $bNodeCount = 0;
-
-    /** Array of URLs that have been loaded into the graph */
-    private $loaded = array();
-
-    private $maxRedirects = 10;
-
-
-    /**
-     * Constructor
-     *
-     * If no URI is given then an unnamed graph is created.
-     *
-     * The $data parameter is optional and will be parsed into
-     * the graph if given.
-     *
-     * The data format is optional and should be specified if it
-     * can't be guessed by EasyRdf.
-     *
-     * @param  string  $uri     The URI of the graph
-     * @param  string  $data    Data for the graph
-     * @param  string  $format  The document type of the data (e.g. rdfxml)
-     * @return object EasyRdf_Graph
-     */
-    public function __construct($uri = null, $data = null, $format = null)
-    {
-        $this->checkResourceParam($uri, true);
-
-        if ($uri) {
-            $this->uri = $uri;
-            $this->parsedUri = new EasyRdf_ParsedUri($uri);
-            if ($data) {
-                $this->parse($data, $format, $this->uri);
-            }
-        }
-    }
-
-    /**
-     * Create a new graph and load RDF data from a URI into it
-     *
-     * This static function is shorthand for:
-     *     $graph = new EasyRdf_Graph($uri);
-     *     $graph->load($uri, $format);
-     *
-     * The document type is optional but should be specified if it
-     * can't be guessed or got from the HTTP headers.
-     *
-     * @param  string  $uri     The URI of the data to load
-     * @param  string  $format  Optional format of the data (eg. rdfxml)
-     * @return object EasyRdf_Graph    The new the graph object
-     */
-    public static function newAndLoad($uri, $format = null)
-    {
-        $graph = new self($uri);
-        $graph->load($uri, $format);
-        return $graph;
-    }
-
-    /** Get or create a resource stored in a graph
-     *
-     * If the resource did not previously exist, then a new resource will
-     * be created. If you provide an RDF type and that type is registered
-     * with the EasyRdf_TypeMapper, then the resource will be an instance
-     * of the class registered.
-     *
-     * If URI is null, then the URI of the graph is used.
-     *
-     * @param  string  $uri    The URI of the resource
-     * @param  mixed   $types  RDF type of a new resource (e.g. foaf:Person)
-     * @return object EasyRdf_Resource
-     */
-    public function resource($uri = null, $types = array())
-    {
-        $this->checkResourceParam($uri, true);
-        if (!$uri) {
-            throw new InvalidArgumentException(
-                '$uri is null and EasyRdf_Graph object has no URI either.'
-            );
-        }
-
-        // Resolve relative URIs
-        if ($this->parsedUri) {
-            $uri = $this->parsedUri->resolve($uri)->toString();
-        }
-
-        // Add the types
-        $this->addType($uri, $types);
-
-        // Create resource object if it doesn't already exist
-        if (!isset($this->resources[$uri])) {
-            $resClass = $this->classForResource($uri);
-            $this->resources[$uri] = new $resClass($uri, $this);
-        }
-
-        return $this->resources[$uri];
-    }
-
-    /** Work out the class to instantiate a resource as
-     *  @ignore
-     */
-    protected function classForResource($uri)
-    {
-        $rdfType = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';
-        if (isset($this->index[$uri][$rdfType])) {
-            foreach ($this->index[$uri][$rdfType] as $type) {
-                if ($type['type'] == 'uri' or $type['type'] == 'bnode') {
-                    $class = EasyRdf_TypeMapper::get($type['value']);
-                    if ($class != null) {
-                        return $class;
-                    }
-                }
-            }
-        }
-
-        // Parsers don't typically add a rdf:type to rdf:List, so we have to
-        // do a bit of 'inference' here using properties.
-        if ($uri == 'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil' or
-            isset($this->index[$uri]['http://www.w3.org/1999/02/22-rdf-syntax-ns#first']) or
-            isset($this->index[$uri]['http://www.w3.org/1999/02/22-rdf-syntax-ns#rest'])
-        ) {
-            return 'EasyRdf_Collection';
-        }
-        return 'EasyRdf_Resource';
-    }
-
-    /**
-     * Create a new blank node in the graph and return it.
-     *
-     * If you provide an RDF type and that type is registered
-     * with the EasyRdf_TypeMapper, then the resource will be an instance
-     * of the class registered.
-     *
-     * @param  mixed  $types  RDF type of a new blank node (e.g. foaf:Person)
-     * @return object EasyRdf_Resource The new blank node
-     */
-    public function newBNode($types = array())
-    {
-        return $this->resource($this->newBNodeId(), $types);
-    }
-
-    /**
-     * Create a new unique blank node identifier and return it.
-     *
-     * @return string The new blank node identifier (e.g. _:genid1)
-     */
-    public function newBNodeId()
-    {
-        return "_:genid".(++$this->bNodeCount);
-    }
-
-    /**
-     * Parse some RDF data into the graph object.
-     *
-     * @param  string  $data    Data to parse for the graph
-     * @param  string  $format  Optional format of the data
-     * @param  string  $uri     The URI of the data to load
-     * @return integer          The number of triples added to the graph
-     */
-    public function parse($data, $format = null, $uri = null)
-    {
-        $this->checkResourceParam($uri, true);
-
-        if (empty($format) or $format == 'guess') {
-            // Guess the format if it is Unknown
-            $format = EasyRdf_Format::guessFormat($data, $uri);
-        } else {
-            $format = EasyRdf_Format::getFormat($format);
-        }
-
-        if (!$format) {
-            throw new EasyRdf_Exception(
-                "Unable to parse data of an unknown format."
-            );
-        }
-
-        $parser = $format->newParser();
-        return $parser->parse($this, $data, $format, $uri);
-    }
-
-    /**
-     * Parse a file containing RDF data into the graph object.
-     *
-     * @param  string  $filename The path of the file to load
-     * @param  string  $format   Optional format of the file
-     * @param  string  $uri      The URI of the file to load
-     * @return integer           The number of triples added to the graph
-     */
-    public function parseFile($filename, $format = null, $uri = null)
-    {
-        if ($uri === null) {
-            $uri = "file://$filename";
-        }
-
-        return $this->parse(
-            file_get_contents($filename),
-            $format,
-            $uri
-        );
-    }
-
-    /**
-     * Load RDF data into the graph from a URI.
-     *
-     * If no URI is given, then the URI of the graph will be used.
-     *
-     * The document type is optional but should be specified if it
-     * can't be guessed or got from the HTTP headers.
-     *
-     * @param  string  $uri     The URI of the data to load
-     * @param  string  $format  Optional format of the data (eg. rdfxml)
-     * @return integer          The number of triples added to the graph
-     */
-    public function load($uri = null, $format = null)
-    {
-        $this->checkResourceParam($uri, true);
-
-        if (!$uri) {
-            throw new EasyRdf_Exception(
-                "No URI given to load() and the graph does not have a URI."
-            );
-        }
-
-        // Setup the HTTP client
-        $client = EasyRdf_Http::getDefaultHttpClient();
-        $client->resetParameters(true);
-        $client->setConfig(array('maxredirects' => 0));
-        $client->setMethod('GET');
-        $client->setHeaders('Accept', EasyRdf_Format::getHttpAcceptHeader());
-
-        $requestUrl = $uri;
-        $response = null;
-        $redirectCounter = 0;
-        do {
-            // Have we already loaded it into the graph?
-            $requestUrl = EasyRdf_Utils::removeFragmentFromUri($requestUrl);
-            if (in_array($requestUrl, $this->loaded)) {
-                return 0;
-            }
-
-            // Make the HTTP request
-            $client->setHeaders('host', null);
-            $client->setUri($requestUrl);
-            $response = $client->request();
-
-            // Add the URL to the list of URLs loaded
-            $this->loaded[] = $requestUrl;
-
-            if ($response->isRedirect() and $location = $response->getHeader('location')) {
-                // Avoid problems with buggy servers that add whitespace
-                $location = trim($location);
-
-                // Some servers return relative URLs in the location header
-                // resolve it in relation to previous request
-                $baseUri = new EasyRdf_ParsedUri($requestUrl);
-                $requestUrl = $baseUri->resolve($location)->toString();
-                $requestUrl = EasyRdf_Utils::removeFragmentFromUri($requestUrl);
-
-                // If it is a 303 then drop the parameters
-                if ($response->getStatus() == 303) {
-                    $client->resetParameters();
-                }
-
-                ++$redirectCounter;
-            } elseif ($response->isSuccessful()) {
-                // If we didn't get any location, stop redirecting
-                break;
-            } else {
-                throw new EasyRdf_Http_Exception(
-                    "HTTP request for {$requestUrl} failed: ".$response->getMessage(),
-                    $response->getStatus(),
-                    null,
-                    $response->getBody()
-                );
-            }
-        } while ($redirectCounter < $this->maxRedirects);
-
-        if (!$format or $format == 'guess') {
-            list($format, $params) = EasyRdf_Utils::parseMimeType(
-                $response->getHeader('Content-Type')
-            );
-        }
-
-        // Parse the data
-        return $this->parse($response->getBody(), $format, $uri);
-    }
-
-    /** Get an associative array of all the resources stored in the graph.
-     *  The keys of the array is the URI of the EasyRdf_Resource.
-     *
-     * @return array Array of EasyRdf_Resource
-     */
-    public function resources()
-    {
-        foreach ($this->index as $subject => $properties) {
-            if (!isset($this->resources[$subject])) {
-                $this->resource($subject);
-            }
-        }
-
-        foreach ($this->revIndex as $object => $properties) {
-            if (!isset($this->resources[$object])) {
-                $this->resource($object);
-            }
-        }
-
-        return $this->resources;
-    }
-
-    /** Get an arry of resources matching a certain property and optional value.
-     *
-     * For example this routine could be used as a way of getting
-     * everyone who has name:
-     * $people = $graph->resourcesMatching('foaf:name')
-     *
-     * Or everyone who is male:
-     * $people = $graph->resourcesMatching('foaf:gender', 'male');
-     *
-     * Or all homepages:
-     * $people = $graph->resourcesMatching('^foaf:homepage');
-     *
-     * @param  string  $property   The property to check.
-     * @param  mixed   $value      Optional, the value of the propery to check for.
-     * @return array   Array of EasyRdf_Resource
-     */
-    public function resourcesMatching($property, $value = null)
-    {
-        $this->checkSinglePropertyParam($property, $inverse);
-        $this->checkValueParam($value);
-
-        // Use the reverse index if it is an inverse property
-        if ($inverse) {
-            $index = &$this->revIndex;
-        } else {
-            $index = &$this->index;
-        }
-
-        $matched = array();
-        foreach ($index as $subject => $props) {
-            if (isset($index[$subject][$property])) {
-                if (isset($value)) {
-                    foreach ($this->index[$subject][$property] as $v) {
-                        if ($v['type'] == $value['type'] and
-                            $v['value'] == $value['value']) {
-                            $matched[] = $this->resource($subject);
-                            break;
-                        }
-                    }
-                } else {
-                    $matched[] = $this->resource($subject);
-                }
-            }
-        }
-        return $matched;
-    }
-
-    /** Get the URI of the graph
-     *
-     * @return string The URI of the graph
-     */
-    public function getUri()
-    {
-        return $this->uri;
-    }
-
-    /** Check that a URI/resource parameter is valid, and convert it to a string
-     *  @ignore
-     */
-    protected function checkResourceParam(&$resource, $allowNull = false)
-    {
-        if ($allowNull == true) {
-            if ($resource === null) {
-                if ($this->uri) {
-                    $resource = $this->uri;
-                } else {
-                    return;
-                }
-            }
-        } elseif ($resource === null) {
-            throw new InvalidArgumentException(
-                "\$resource should be either IRI, blank-node identifier or EasyRdf_Resource. got null"
-            );
-        }
-
-        if (is_object($resource) and $resource instanceof EasyRdf_Resource) {
-            $resource = $resource->getUri();
-        } elseif (is_object($resource) and $resource instanceof EasyRdf_ParsedUri) {
-            $resource = strval($resource);
-        } elseif (is_string($resource)) {
-            if ($resource == '') {
-                throw new InvalidArgumentException(
-                    "\$resource should be either IRI, blank-node identifier or EasyRdf_Resource. got empty string"
-                );
-            } elseif (preg_match("|^<(.+)>$|", $resource, $matches)) {
-                $resource = $matches[1];
-            } else {
-                $resource = EasyRdf_Namespace::expand($resource);
-            }
-        } else {
-            throw new InvalidArgumentException(
-                "\$resource should be either IRI, blank-node identifier or EasyRdf_Resource"
-            );
-        }
-    }
-
-    /** Check that a single URI/property parameter (not a property path)
-     *  is valid, and expand it if required
-     *  @ignore
-     */
-    protected function checkSinglePropertyParam(&$property, &$inverse)
-    {
-        if (is_object($property) and $property instanceof EasyRdf_Resource) {
-            $property = $property->getUri();
-        } elseif (is_object($property) and $property instanceof EasyRdf_ParsedUri) {
-            $property = strval($property);
-        } elseif (is_string($property)) {
-            if ($property == '') {
-                throw new InvalidArgumentException(
-                    "\$property cannot be an empty string"
-                );
-            } elseif (substr($property, 0, 1) == '^') {
-                $inverse = true;
-                $property = EasyRdf_Namespace::expand(substr($property, 1));
-            } elseif (substr($property, 0, 2) == '_:') {
-                throw new InvalidArgumentException(
-                    "\$property cannot be a blank node"
-                );
-            } else {
-                $inverse = false;
-                $property = EasyRdf_Namespace::expand($property);
-            }
-        }
-
-        if ($property === null or !is_string($property)) {
-            throw new InvalidArgumentException(
-                "\$property should be a string or EasyRdf_Resource and cannot be null"
-            );
-        }
-    }
-
-    /** Check that a value parameter is valid, and convert it to an associative array if needed
-     *  @ignore
-     */
-    protected function checkValueParam(&$value)
-    {
-        if (isset($value)) {
-            if (is_object($value)) {
-                if (!method_exists($value, 'toRdfPhp')) {
-                    // Convert to a literal object
-                    $value = EasyRdf_Literal::create($value);
-                }
-                $value = $value->toRdfPhp();
-            } elseif (is_array($value)) {
-                if (!isset($value['type'])) {
-                    throw new InvalidArgumentException(
-                        "\$value is missing a 'type' key"
-                    );
-                }
-
-                if (!isset($value['value'])) {
-                    throw new InvalidArgumentException(
-                        "\$value is missing a 'value' key"
-                    );
-                }
-
-                // Fix ordering and remove unknown keys
-                $value = array(
-                    'type' => strval($value['type']),
-                    'value' => strval($value['value']),
-                    'lang' => isset($value['lang']) ? strval($value['lang']) : null,
-                    'datatype' => isset($value['datatype']) ? strval($value['datatype']) : null
-                );
-            } else {
-                $value = array(
-                    'type' => 'literal',
-                    'value' => strval($value),
-                    'datatype' => EasyRdf_Literal::getDatatypeForValue($value)
-                );
-            }
-            if (!in_array($value['type'], array('uri', 'bnode', 'literal'), true)) {
-                throw new InvalidArgumentException(
-                    "\$value does not have a valid type (".$value['type'].")"
-                );
-            }
-            if (empty($value['datatype'])) {
-                unset($value['datatype']);
-            }
-            if (empty($value['lang'])) {
-                unset($value['lang']);
-            }
-            if (isset($value['lang']) and isset($value['datatype'])) {
-                throw new InvalidArgumentException(
-                    "\$value cannot have both and language and a datatype"
-                );
-            }
-        }
-    }
-
-    /** Get a single value for a property of a resource
-     *
-     * If multiple values are set for a property then the value returned
-     * may be arbitrary.
-     *
-     * If $property is an array, then the first item in the array that matches
-     * a property that exists is returned.
-     *
-     * This method will return null if the property does not exist.
-     *
-     * @param  string    $resource       The URI of the resource (e.g. http://example.com/joe#me)
-     * @param  string    $propertyPath   A valid property path
-     * @param  string    $type           The type of value to filter by (e.g. literal or resource)
-     * @param  string    $lang           The language to filter by (e.g. en)
-     * @return mixed                     A value associated with the property
-     */
-    public function get($resource, $propertyPath, $type = null, $lang = null)
-    {
-        $this->checkResourceParam($resource);
-
-        if (is_object($propertyPath) and $propertyPath instanceof EasyRdf_Resource) {
-            return $this->getSingleProperty($resource, $propertyPath->getUri(), $type, $lang);
-        } elseif (is_string($propertyPath) and preg_match('|^(\^?)<(.+)>|', $propertyPath, $matches)) {
-            return $this->getSingleProperty($resource, "$matches[1]$matches[2]", $type, $lang);
-        } elseif ($propertyPath === null or !is_string($propertyPath)) {
-            throw new InvalidArgumentException(
-                "\$propertyPath should be a string or EasyRdf_Resource and cannot be null"
-            );
-        } elseif ($propertyPath === '') {
-            throw new InvalidArgumentException(
-                "\$propertyPath cannot be an empty string"
-            );
-        }
-
-        // Loop through each component in the path
-        foreach (explode('/', $propertyPath) as $part) {
-            // Stop if we come to a literal
-            if ($resource instanceof EasyRdf_Literal) {
-                return null;
-            }
-
-            // Try each of the alternative paths
-            foreach (explode('|', $part) as $p) {
-                $res = $this->getSingleProperty($resource, $p, $type, $lang);
-                if ($res) {
-                    break;
-                }
-            }
-
-            // Stop if nothing was found
-            $resource = $res;
-            if (!$resource) {
-                break;
-            }
-        }
-
-        return $resource;
-    }
-
-    /** Get a single value for a property of a resource
-     *
-     * @param  string    $resource The URI of the resource (e.g. http://example.com/joe#me)
-     * @param  string    $property The name of the property (e.g. foaf:name)
-     * @param  string    $type     The type of value to filter by (e.g. literal or resource)
-     * @param  string    $lang     The language to filter by (e.g. en)
-     * @return mixed               A value associated with the property
-     *
-     * @ignore
-     */
-    protected function getSingleProperty($resource, $property, $type = null, $lang = null)
-    {
-        $this->checkResourceParam($resource);
-        $this->checkSinglePropertyParam($property, $inverse);
-
-        // Get an array of values for the property
-        $values = $this->propertyValuesArray($resource, $property, $inverse);
-        if (!isset($values)) {
-            return null;
-        }
-
-        // Filter the results
-        $result = null;
-        if ($type) {
-            foreach ($values as $value) {
-                if ($type == 'literal' and $value['type'] == 'literal') {
-                    if ($lang == null or (isset($value['lang']) and $value['lang'] == $lang)) {
-                        $result = $value;
-                        break;
-                    }
-                } elseif ($type == 'resource') {
-                    if ($value['type'] == 'uri' or $value['type'] == 'bnode') {
-                        $result = $value;
-                        break;
-                    }
-                }
-            }
-        } else {
-            $result = $values[0];
-        }
-
-        // Convert the internal data structure into a PHP object
-        return $this->arrayToObject($result);
-    }
-
-    /** Get a single literal value for a property of a resource
-     *
-     * If multiple values are set for a property then the value returned
-     * may be arbitrary.
-     *
-     * This method will return null if there is not literal value for the
-     * property.
-     *
-     * @param  string       $resource The URI of the resource (e.g. http://example.com/joe#me)
-     * @param  string|array $property The name of the property (e.g. foaf:name)
-     * @param  string       $lang     The language to filter by (e.g. en)
-     * @return object EasyRdf_Literal Literal value associated with the property
-     */
-    public function getLiteral($resource, $property, $lang = null)
-    {
-        return $this->get($resource, $property, 'literal', $lang);
-    }
-
-    /** Get a single resource value for a property of a resource
-     *
-     * If multiple values are set for a property then the value returned
-     * may be arbitrary.
-     *
-     * This method will return null if there is not resource for the
-     * property.
-     *
-     * @param  string       $resource The URI of the resource (e.g. http://example.com/joe#me)
-     * @param  string|array $property The name of the property (e.g. foaf:name)
-     * @return object EasyRdf_Resource Resource associated with the property
-     */
-    public function getResource($resource, $property)
-    {
-        return $this->get($resource, $property, 'resource');
-    }
-
-    /** Return all the values for a particular property of a resource
-     *  @ignore
-     */
-    protected function propertyValuesArray($resource, $property, $inverse = false)
-    {
-        // Is an inverse property being requested?
-        if ($inverse) {
-            if (isset($this->revIndex[$resource])) {
-                $properties = &$this->revIndex[$resource];
-            }
-        } else {
-            if (isset($this->index[$resource])) {
-                $properties = &$this->index[$resource];
-            }
-        }
-
-        if (isset($properties[$property])) {
-            return $properties[$property];
-        } else {
-            return null;
-        }
-    }
-
-    /** Get an EasyRdf_Resource or EasyRdf_Literal object from an associative array.
-     *  @ignore
-     */
-    protected function arrayToObject($data)
-    {
-        if ($data) {
-            if ($data['type'] == 'uri' or $data['type'] == 'bnode') {
-                return $this->resource($data['value']);
-            } else {
-                return EasyRdf_Literal::create($data);
-            }
-        } else {
-            return null;
-        }
-    }
-
-    /** Get all values for a property path
-     *
-     * This method will return an empty array if the property does not exist.
-     *
-     * @param  string  $resource      The URI of the resource (e.g. http://example.com/joe#me)
-     * @param  string  $propertyPath  A valid property path
-     * @param  string  $type          The type of value to filter by (e.g. literal)
-     * @param  string  $lang          The language to filter by (e.g. en)
-     * @return array                  An array of values associated with the property
-     */
-    public function all($resource, $propertyPath, $type = null, $lang = null)
-    {
-        $this->checkResourceParam($resource);
-
-        if (is_object($propertyPath) and $propertyPath instanceof EasyRdf_Resource) {
-            return $this->allForSingleProperty($resource, $propertyPath->getUri(), $type, $lang);
-        } elseif (is_string($propertyPath) and preg_match('|^(\^?)<(.+)>|', $propertyPath, $matches)) {
-            return $this->allForSingleProperty($resource, "$matches[1]$matches[2]", $type, $lang);
-        } elseif ($propertyPath === null or !is_string($propertyPath)) {
-            throw new InvalidArgumentException(
-                "\$propertyPath should be a string or EasyRdf_Resource and cannot be null"
-            );
-        } elseif ($propertyPath === '') {
-            throw new InvalidArgumentException(
-                "\$propertyPath cannot be an empty string"
-            );
-        }
-
-        $objects = array($resource);
-
-        // Loop through each component in the path
-        foreach (explode('/', $propertyPath) as $part) {
-
-            $results = array();
-            foreach (explode('|', $part) as $p) {
-                foreach ($objects as $o) {
-                    // Ignore literals found earlier in path
-                    if ($o instanceof EasyRdf_Literal) {
-                        continue;
-                    }
-
-                    $results = array_merge(
-                        $results,
-                        $this->allForSingleProperty($o, $p, $type, $lang)
-                    );
-                }
-            }
-
-            // Stop if we don't have anything
-            if (empty($objects)) {
-                break;
-            }
-
-            // Use the results as the input to the next iteration
-            $objects = $results;
-        }
-
-        return $results;
-    }
-
-    /** Get all values for a single property of a resource
-     *
-     * @param  string  $resource The URI of the resource (e.g. http://example.com/joe#me)
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  string  $type     The type of value to filter by (e.g. literal)
-     * @param  string  $lang     The language to filter by (e.g. en)
-     * @return array             An array of values associated with the property
-     *
-     * @ignore
-     */
-    protected function allForSingleProperty($resource, $property, $type = null, $lang = null)
-    {
-        $this->checkResourceParam($resource);
-        $this->checkSinglePropertyParam($property, $inverse);
-
-        // Get an array of values for the property
-        $values = $this->propertyValuesArray($resource, $property, $inverse);
-        if (!isset($values)) {
-            return array();
-        }
-
-        $objects = array();
-        if ($type) {
-            foreach ($values as $value) {
-                if ($type == 'literal' and $value['type'] == 'literal') {
-                    if ($lang == null or (isset($value['lang']) and $value['lang'] == $lang)) {
-                        $objects[] = $this->arrayToObject($value);
-                    }
-                } elseif ($type == 'resource') {
-                    if ($value['type'] == 'uri' or $value['type'] == 'bnode') {
-                        $objects[] = $this->arrayToObject($value);
-                    }
-                }
-            }
-        } else {
-            foreach ($values as $value) {
-                $objects[] = $this->arrayToObject($value);
-            }
-        }
-        return $objects;
-    }
-
-    /** Get all literal values for a property of a resource
-     *
-     * This method will return an empty array if the resource does not
-     * has any literal values for that property.
-     *
-     * @param  string  $resource The URI of the resource (e.g. http://example.com/joe#me)
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  string  $lang     The language to filter by (e.g. en)
-     * @return array             An array of values associated with the property
-     */
-    public function allLiterals($resource, $property, $lang = null)
-    {
-        return $this->all($resource, $property, 'literal', $lang);
-    }
-
-    /** Get all resources for a property of a resource
-     *
-     * This method will return an empty array if the resource does not
-     * has any resources for that property.
-     *
-     * @param  string  $resource The URI of the resource (e.g. http://example.com/joe#me)
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @return array             An array of values associated with the property
-     */
-    public function allResources($resource, $property)
-    {
-        return $this->all($resource, $property, 'resource');
-    }
-
-    /** Get all the resources in the graph of a certain type
-     *
-     * If no resources of the type are available and empty
-     * array is returned.
-     *
-     * @param  string  $type   The type of the resource (e.g. foaf:Person)
-     * @return array The array of resources
-     */
-    public function allOfType($type)
-    {
-        return $this->all($type, '^rdf:type');
-    }
-
-    /** Count the number of values for a property of a resource
-     *
-     * @param  string  $resource The URI of the resource (e.g. http://example.com/joe#me)
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  string  $type     The type of value to filter by (e.g. literal)
-     * @param  string  $lang     The language to filter by (e.g. en)
-     * @return integer           The number of values for this property
-     */
-    public function countValues($resource, $property, $type = null, $lang = null)
-    {
-        return count($this->all($resource, $property, $type, $lang));
-    }
-
-    /** Concatenate all values for a property of a resource into a string.
-     *
-     * The default is to join the values together with a space character.
-     * This method will return an empty string if the property does not exist.
-     *
-     * @param  mixed   $resource The resource to get the property on
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  string  $glue     The string to glue the values together with.
-     * @param  string  $lang     The language to filter by (e.g. en)
-     * @return string            Concatenation of all the values.
-     */
-    public function join($resource, $property, $glue = ' ', $lang = null)
-    {
-        return join($glue, $this->all($resource, $property, 'literal', $lang));
-    }
-
-    /** Add data to the graph
-     *
-     * The resource can either be a resource or the URI of a resource.
-     *
-     * Example:
-     *   $graph->add("http://www.example.com", 'dc:title', 'Title of Page');
-     *
-     * @param  mixed $resource   The resource to add data to
-     * @param  mixed $property   The property name
-     * @param  mixed $value      The new value for the property
-     * @return integer           The number of values added (1 or 0)
-     */
-    public function add($resource, $property, $value)
-    {
-        $this->checkResourceParam($resource);
-        $this->checkSinglePropertyParam($property, $inverse);
-        $this->checkValueParam($value);
-
-        // No value given?
-        if ($value === null) {
-            return 0;
-        }
-
-        // Check that the value doesn't already exist
-        if (isset($this->index[$resource][$property])) {
-            foreach ($this->index[$resource][$property] as $v) {
-                if ($v == $value) {
-                    return 0;
-                }
-            }
-        }
-        $this->index[$resource][$property][] = $value;
-
-        // Add to the reverse index if it is a resource
-        if ($value['type'] == 'uri' or $value['type'] == 'bnode') {
-            $uri = $value['value'];
-            $this->revIndex[$uri][$property][] = array(
-                'type' => substr($resource, 0, 2) == '_:' ? 'bnode' : 'uri',
-                'value' => $resource
-            );
-        }
-
-        // Success
-        return 1;
-    }
-
-    /** Add a literal value as a property of a resource
-     *
-     * The resource can either be a resource or the URI of a resource.
-     * The value can either be a single value or an array of values.
-     *
-     * Example:
-     *   $graph->add("http://www.example.com", 'dc:title', 'Title of Page');
-     *
-     * @param  mixed  $resource  The resource to add data to
-     * @param  mixed  $property  The property name
-     * @param  mixed  $value     The value or values for the property
-     * @param  string $lang      The language of the literal
-     * @return integer           The number of values added
-     */
-    public function addLiteral($resource, $property, $value, $lang = null)
-    {
-        $this->checkResourceParam($resource);
-        $this->checkSinglePropertyParam($property, $inverse);
-
-        if (is_array($value)) {
-            $added = 0;
-            foreach ($value as $v) {
-                $added += $this->addLiteral($resource, $property, $v, $lang);
-            }
-            return $added;
-        } elseif (!is_object($value) or !$value instanceof EasyRdf_Literal) {
-            $value = EasyRdf_Literal::create($value, $lang);
-        }
-        return $this->add($resource, $property, $value);
-    }
-
-    /** Add a resource as a property of another resource
-     *
-     * The resource can either be a resource or the URI of a resource.
-     *
-     * Example:
-     *   $graph->add("http://example.com/bob", 'foaf:knows', 'http://example.com/alice');
-     *
-     * @param  mixed $resource   The resource to add data to
-     * @param  mixed $property   The property name
-     * @param  mixed $resource2  The resource to be value of the property
-     * @return integer           The number of values added
-     */
-    public function addResource($resource, $property, $resource2)
-    {
-        $this->checkResourceParam($resource);
-        $this->checkSinglePropertyParam($property, $inverse);
-        $this->checkResourceParam($resource2);
-
-        return $this->add(
-            $resource,
-            $property,
-            array(
-                'type' => substr($resource2, 0, 2) == '_:' ? 'bnode' : 'uri',
-                'value' => $resource2
-            )
-        );
-    }
-
-    /** Set a value for a property
-     *
-     * The new value will replace the existing values for the property.
-     *
-     * @param  string  $resource The resource to set the property on
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  mixed   $value    The value for the property
-     * @return integer           The number of values added (1 or 0)
-     */
-    public function set($resource, $property, $value)
-    {
-        $this->checkResourceParam($resource);
-        $this->checkSinglePropertyParam($property, $inverse);
-        $this->checkValueParam($value);
-
-        // Delete the old values
-        $this->delete($resource, $property);
-
-        // Add the new values
-        return $this->add($resource, $property, $value);
-    }
-
-    /** Delete a property (or optionally just a specific value)
-     *
-     * @param  mixed   $resource The resource to delete the property from
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  mixed   $value The value to delete (null to delete all values)
-     * @return integer The number of values deleted
-     */
-    public function delete($resource, $property, $value = null)
-    {
-        $this->checkResourceParam($resource);
-
-        if (is_object($property) and $property instanceof EasyRdf_Resource) {
-            return $this->deleteSingleProperty($resource, $property->getUri(), $value);
-        } elseif (is_string($property) and preg_match('|^(\^?)<(.+)>|', $property, $matches)) {
-            return $this->deleteSingleProperty($resource, "$matches[1]$matches[2]", $value);
-        } elseif ($property === null or !is_string($property)) {
-            throw new InvalidArgumentException(
-                "\$property should be a string or EasyRdf_Resource and cannot be null"
-            );
-        } elseif ($property === '') {
-            throw new InvalidArgumentException(
-                "\$property cannot be an empty string"
-            );
-        }
-
-        // FIXME: finish implementing property paths for delete
-        return $this->deleteSingleProperty($resource, $property, $value);
-    }
-
-
-    /** Delete a property (or optionally just a specific value)
-     *
-     * @param  mixed   $resource The resource to delete the property from
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  mixed   $value The value to delete (null to delete all values)
-     * @return integer The number of values deleted
-     *
-     * @ignore
-     */
-    public function deleteSingleProperty($resource, $property, $value = null)
-    {
-        $this->checkResourceParam($resource);
-        $this->checkSinglePropertyParam($property, $inverse);
-        $this->checkValueParam($value);
-
-        $count = 0;
-        if (isset($this->index[$resource][$property])) {
-            foreach ($this->index[$resource][$property] as $k => $v) {
-                if (!$value or $v == $value) {
-                    unset($this->index[$resource][$property][$k]);
-                    $count++;
-                    if ($v['type'] == 'uri' or $v['type'] == 'bnode') {
-                        $this->deleteInverse($v['value'], $property, $resource);
-                    }
-                }
-            }
-
-            // Clean up the indexes - remove empty properties and resources
-            if ($count) {
-                if (count($this->index[$resource][$property]) == 0) {
-                    unset($this->index[$resource][$property]);
-                }
-                if (count($this->index[$resource]) == 0) {
-                    unset($this->index[$resource]);
-                }
-            }
-        }
-
-        return $count;
-    }
-
-    /** Delete a resource from a property of another resource
-     *
-     * The resource can either be a resource or the URI of a resource.
-     *
-     * Example:
-     *   $graph->delete("http://example.com/bob", 'foaf:knows', 'http://example.com/alice');
-     *
-     * @param  mixed $resource   The resource to delete data from
-     * @param  mixed $property   The property name
-     * @param  mixed $resource2  The resource value of the property to be deleted
-     */
-    public function deleteResource($resource, $property, $resource2)
-    {
-        $this->checkResourceParam($resource);
-        $this->checkSinglePropertyParam($property, $inverse);
-        $this->checkResourceParam($resource2);
-
-        return $this->delete(
-            $resource,
-            $property,
-            array(
-                'type' => substr($resource2, 0, 2) == '_:' ? 'bnode' : 'uri',
-                'value' => $resource2
-            )
-        );
-    }
-
-    /** Delete a literal value from a property of a resource
-     *
-     * Example:
-     *   $graph->delete("http://www.example.com", 'dc:title', 'Title of Page');
-     *
-     * @param  mixed  $resource  The resource to add data to
-     * @param  mixed  $property  The property name
-     * @param  mixed  $value     The value of the property
-     * @param  string $lang      The language of the literal
-     */
-    public function deleteLiteral($resource, $property, $value, $lang = null)
-    {
-        $this->checkResourceParam($resource);
-        $this->checkSinglePropertyParam($property, $inverse);
-        $this->checkValueParam($value);
-
-        if ($lang) {
-            $value['lang'] = $lang;
-        }
-
-        return $this->delete($resource, $property, $value);
-    }
-
-    /** This function is for internal use only.
-     *
-     * Deletes an inverse property from a resource.
-     *
-     * @ignore
-     */
-    protected function deleteInverse($resource, $property, $value)
-    {
-        if (isset($this->revIndex[$resource])) {
-            foreach ($this->revIndex[$resource][$property] as $k => $v) {
-                if ($v['value'] === $value) {
-                    unset($this->revIndex[$resource][$property][$k]);
-                }
-            }
-            if (count($this->revIndex[$resource][$property]) == 0) {
-                unset($this->revIndex[$resource][$property]);
-            }
-            if (count($this->revIndex[$resource]) == 0) {
-                unset($this->revIndex[$resource]);
-            }
-        }
-    }
-
-    /** Check if the graph contains any statements
-     *
-     * @return boolean True if the graph contains no statements
-     */
-    public function isEmpty()
-    {
-        return count($this->index) == 0;
-    }
-
-    /** Get a list of all the shortened property names (qnames) for a resource.
-     *
-     * This method will return an empty array if the resource has no properties.
-     *
-     * @return array            Array of shortened URIs
-     */
-    public function properties($resource)
-    {
-        $this->checkResourceParam($resource);
-
-        $properties = array();
-        if (isset($this->index[$resource])) {
-            foreach ($this->index[$resource] as $property => $value) {
-                $short = EasyRdf_Namespace::shorten($property);
-                if ($short) {
-                    $properties[] = $short;
-                }
-            }
-        }
-        return $properties;
-    }
-
-    /** Get a list of the full URIs for the properties of a resource.
-     *
-     * This method will return an empty array if the resource has no properties.
-     *
-     * @return array            Array of full URIs
-     */
-    public function propertyUris($resource)
-    {
-        $this->checkResourceParam($resource);
-
-        if (isset($this->index[$resource])) {
-            return array_keys($this->index[$resource]);
-        } else {
-            return array();
-        }
-    }
-
-    /** Get a list of the full URIs for the properties that point to a resource.
-     *
-     * @return array   Array of full property URIs
-     */
-    public function reversePropertyUris($resource)
-    {
-        $this->checkResourceParam($resource);
-
-        if (isset($this->revIndex[$resource])) {
-            return array_keys($this->revIndex[$resource]);
-        } else {
-            return array();
-        }
-    }
-
-    /** Check to see if a property exists for a resource.
-     *
-     * This method will return true if the property exists.
-     * If the value parameter is given, then it will only return true
-     * if the value also exists for that property.
-     *
-     * By providing a value parameter you can use this function to check
-     * to see if a triple exists in the graph.
-     *
-     * @param  mixed   $resource The resource to check
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  mixed   $value    An optional value of the property
-     * @return boolean           True if value the property exists.
-     */
-    public function hasProperty($resource, $property, $value = null)
-    {
-        $this->checkResourceParam($resource);
-        $this->checkSinglePropertyParam($property, $inverse);
-        $this->checkValueParam($value);
-
-        // Use the reverse index if it is an inverse property
-        if ($inverse) {
-            $index = &$this->revIndex;
-        } else {
-            $index = &$this->index;
-        }
-
-        if (isset($index[$resource][$property])) {
-            if (is_null($value)) {
-                return true;
-            } else {
-                foreach ($index[$resource][$property] as $v) {
-                    if ($v == $value) {
-                        return true;
-                    }
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /** Serialise the graph into RDF
-     *
-     * The $format parameter can be an EasyRdf_Format object, a
-     * format name, a mime type or a file extension.
-     *
-     * Example:
-     *   $turtle = $graph->serialise('turtle');
-     *
-     * @param  mixed $format  The format to serialise to
-     * @param  array $options Serialiser-specific options, for fine-tuning the output
-     * @return mixed  The serialised graph
-     */
-    public function serialise($format, array $options = array())
-    {
-        if (!$format instanceof EasyRdf_Format) {
-            $format = EasyRdf_Format::getFormat($format);
-        }
-        $serialiser = $format->newSerialiser();
-        return $serialiser->serialise($this, $format->getName(), $options);
-    }
-
-    /** Return a human readable view of all the resources in the graph
-     *
-     * This method is intended to be a debugging aid and will
-     * return a pretty-print view of all the resources and their
-     * properties.
-     *
-     * @param  string  $format  Either 'html' or 'text'
-     * @return string
-     */
-    public function dump($format = 'html')
-    {
-        $result = '';
-        if ($format == 'html') {
-            $result .= "<div style='font-family:arial; font-weight: bold; padding:0.5em; ".
-                   "color: black; background-color:lightgrey;border:dashed 1px grey;'>".
-                   "Graph: ". $this->uri . "</div>\n";
-        } else {
-            $result .= "Graph: ". $this->uri . "\n";
-        }
-
-        foreach ($this->index as $resource => $properties) {
-            $result .= $this->dumpResource($resource, $format);
-        }
-        return $result;
-    }
-
-    /** Return a human readable view of a resource and its properties
-     *
-     * This method is intended to be a debugging aid and will
-     * print a resource and its properties.
-     *
-     * @param  mixed    $resource  The resource to dump
-     * @param  string   $format    Either 'html' or 'text'
-     * @return string
-     */
-    public function dumpResource($resource, $format = 'html')
-    {
-        $this->checkResourceParam($resource, true);
-
-        if (isset($this->index[$resource])) {
-            $properties = $this->index[$resource];
-        } else {
-            return '';
-        }
-
-        $plist = array();
-        foreach ($properties as $property => $values) {
-            $olist = array();
-            foreach ($values as $value) {
-                if ($value['type'] == 'literal') {
-                    $olist []= EasyRdf_Utils::dumpLiteralValue($value, $format, 'black');
-                } else {
-                    $olist []= EasyRdf_Utils::dumpResourceValue($value['value'], $format, 'blue');
-                }
-            }
-
-            $pstr = EasyRdf_Namespace::shorten($property);
-            if ($pstr == null) {
-                $pstr = $property;
-            }
-            if ($format == 'html') {
-                $plist []= "<span style='font-size:130%'>&rarr;</span> ".
-                           "<span style='text-decoration:none;color:green'>".
-                           htmlentities($pstr) . "</span> ".
-                           "<span style='font-size:130%'>&rarr;</span> ".
-                           join(", ", $olist);
-            } else {
-                $plist []= "  -> $pstr -> " . join(", ", $olist);
-            }
-        }
-
-        if ($format == 'html') {
-            return "<div id='".htmlentities($resource, ENT_QUOTES)."' " .
-                   "style='font-family:arial; padding:0.5em; ".
-                   "background-color:lightgrey;border:dashed 1px grey;'>\n".
-                   "<div>".EasyRdf_Utils::dumpResourceValue($resource, $format, 'blue')." ".
-                   "<span style='font-size: 0.8em'>(".
-                   $this->classForResource($resource).")</span></div>\n".
-                   "<div style='padding-left: 3em'>\n".
-                   "<div>".join("</div>\n<div>", $plist)."</div>".
-                   "</div></div>\n";
-        } else {
-            return $resource." (".$this->classForResource($resource).")\n" .
-                   join("\n", $plist) . "\n\n";
-        }
-    }
-
-    /** Get the resource type of the graph
-     *
-     * The type will be a shortened URI as a string.
-     * If the graph has multiple types then the type returned
-     * may be arbitrary.
-     * This method will return null if the resource has no type.
-     *
-     * @return string A type assocated with the resource (e.g. foaf:Document)
-     */
-    public function type($resource = null)
-    {
-        $type = $this->typeAsResource($resource);
-
-        if ($type) {
-            return EasyRdf_Namespace::shorten($type);
-        }
-
-        return null;
-    }
-
-    /** Get the resource type of the graph as a EasyRdf_Resource
-     *
-     * If the graph has multiple types then the type returned
-     * may be arbitrary.
-     * This method will return null if the resource has no type.
-     *
-     * @return object EasyRdf_Resource  A type assocated with the resource
-     */
-    public function typeAsResource($resource = null)
-    {
-        $this->checkResourceParam($resource, true);
-
-        if ($resource) {
-            return $this->get($resource, 'rdf:type', 'resource');
-        }
-
-        return null;
-    }
-
-    /** Get a list of types for a resource
-     *
-     * The types will each be a shortened URI as a string.
-     * This method will return an empty array if the resource has no types.
-     *
-     * If $resource is null, then it will get the types for the URI of the graph.
-     *
-     * @return array All types assocated with the resource (e.g. foaf:Person)
-     */
-    public function types($resource = null)
-    {
-        $resources = $this->typesAsResources($resource);
-
-        $types = array();
-        foreach ($resources as $type) {
-            $types[] = EasyRdf_Namespace::shorten($type);
-        }
-
-        return $types;
-    }
-
-    /**
-     * Get the resource types of the graph as a EasyRdf_Resource
-     *
-     * @return EasyRdf_Resource[]
-     */
-    public function typesAsResources($resource = null)
-    {
-        $this->checkResourceParam($resource, true);
-
-        if ($resource) {
-            return $this->all($resource, 'rdf:type', 'resource');
-        }
-
-        return array();
-    }
-
-    /** Check if a resource is of the specified type
-     *
-     * @param  string  $resource The resource to check the type of
-     * @param  string  $type     The type to check (e.g. foaf:Person)
-     * @return boolean           True if resource is of specified type
-     */
-    public function isA($resource, $type)
-    {
-        $this->checkResourceParam($resource, true);
-
-        $type = EasyRdf_Namespace::expand($type);
-        foreach ($this->all($resource, 'rdf:type', 'resource') as $t) {
-            if ($t->getUri() == $type) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /** Add one or more rdf:type properties to a resource
-     *
-     * @param  string  $resource The resource to add the type to
-     * @param  string  $types    One or more types to add (e.g. foaf:Person)
-     * @return integer           The number of types added
-     */
-    public function addType($resource, $types)
-    {
-        $this->checkResourceParam($resource, true);
-
-        if (!is_array($types)) {
-            $types = array($types);
-        }
-
-        $count = 0;
-        foreach ($types as $type) {
-            $type = EasyRdf_Namespace::expand($type);
-            $count += $this->add($resource, 'rdf:type', array('type' => 'uri', 'value' => $type));
-        }
-
-        return $count;
-    }
-
-    /** Change the rdf:type property for a resource
-     *
-     * Note that if the resource object has already previously
-     * been created, then the PHP class of the resource will not change.
-     *
-     * @param  string  $resource The resource to change the type of
-     * @param  string  $type     The new type (e.g. foaf:Person)
-     * @return integer           The number of types added
-     */
-    public function setType($resource, $type)
-    {
-        $this->checkResourceParam($resource, true);
-
-        $this->delete($resource, 'rdf:type');
-        return $this->addType($resource, $type);
-    }
-
-    /** Get a human readable label for a resource
-     *
-     * This method will check a number of properties for a resource
-     * (in the order: skos:prefLabel, rdfs:label, foaf:name, dc:title)
-     * and return an approriate first that is available. If no label
-     * is available then it will return null.
-     *
-     * @return string A label for the resource.
-     */
-    public function label($resource = null, $lang = null)
-    {
-        $this->checkResourceParam($resource, true);
-
-        if ($resource) {
-            return $this->get(
-                $resource,
-                'skos:prefLabel|rdfs:label|foaf:name|rss:title|dc:title|dc11:title',
-                'literal',
-                $lang
-            );
-        } else {
-            return null;
-        }
-    }
-
-    /** Get the primary topic of the graph
-     *
-     * @return EasyRdf_Resource The primary topic of the document.
-     */
-    public function primaryTopic($resource = null)
-    {
-        $this->checkResourceParam($resource, true);
-
-        if ($resource) {
-            return $this->get(
-                $resource,
-                'foaf:primaryTopic|^foaf:isPrimaryTopicOf',
-                'resource'
-            );
-        } else {
-            return null;
-        }
-    }
-
-    /** Returns the graph as a RDF/PHP associative array
-     *
-     * @return array The contents of the graph as an array.
-     */
-    public function toRdfPhp()
-    {
-        return $this->index;
-    }
-
-    /** Calculates the number of triples in the graph
-     *
-     * @return integer The number of triples in the graph.
-     */
-    public function countTriples()
-    {
-        $count = 0;
-        foreach ($this->index as $resource) {
-            foreach ($resource as $property => $values) {
-                $count += count($values);
-            }
-        }
-        return $count;
-    }
-
-    /** Magic method to return URI of resource when casted to string
-     *
-     * @return string The URI of the resource
-     */
-    public function __toString()
-    {
-        return $this->uri == null ? '' : $this->uri;
-    }
-
-    /** Magic method to get a property of the graph
-     *
-     * Note that only properties in the default namespace can be accessed in this way.
-     *
-     * Example:
-     *   $value = $graph->title;
-     *
-     * @see EasyRdf_Namespace::setDefault()
-     * @param  string $name The name of the property
-     * @return string       A single value for the named property
-     */
-    public function __get($name)
-    {
-        return $this->get($this->uri, $name);
-    }
-
-    /** Magic method to set the value for a property of the graph
-     *
-     * Note that only properties in the default namespace can be accessed in this way.
-     *
-     * Example:
-     *   $graph->title = 'Title';
-     *
-     * @see EasyRdf_Namespace::setDefault()
-     * @param  string $name The name of the property
-     * @param  string $value The value for the property
-     */
-    public function __set($name, $value)
-    {
-        return $this->set($this->uri, $name, $value);
-    }
-
-    /** Magic method to check if a property exists
-     *
-     * Note that only properties in the default namespace can be accessed in this way.
-     *
-     * Example:
-     *   if (isset($graph->title)) { blah(); }
-     *
-     * @see EasyRdf_Namespace::setDefault()
-     * @param string $name The name of the property
-     */
-    public function __isset($name)
-    {
-        return $this->hasProperty($this->uri, $name);
-    }
-
-    /** Magic method to delete a property of the graph
-     *
-     * Note that only properties in the default namespace can be accessed in this way.
-     *
-     * Example:
-     *   unset($graph->title);
-     *
-     * @see EasyRdf_Namespace::setDefault()
-     * @param string $name The name of the property
-     */
-    public function __unset($name)
-    {
-        return $this->delete($this->uri, $name);
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/GraphStore.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/GraphStore.php
deleted file mode 100644
index 40cbf63..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/GraphStore.php
+++ /dev/null
@@ -1,306 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * A class for fetching, saving and deleting graphs to a Graph Store.
- * Implementation of the SPARQL 1.1 Graph Store HTTP Protocol.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_GraphStore
-{
-    /**
-     * Use to reference default graph of triplestore
-     */
-    const DEFAULT_GRAPH = 'urn:easyrdf:default-graph';
-
-    /** The address of the GraphStore endpoint */
-    private $uri = null;
-    private $parsedUri = null;
-
-
-    /** Create a new SPARQL Graph Store client
-     *
-     * @param string $uri The address of the graph store endpoint
-     */
-    public function __construct($uri)
-    {
-        $this->uri = $uri;
-        $this->parsedUri = new EasyRdf_ParsedUri($uri);
-    }
-
-    /** Get the URI of the graph store
-     *
-     * @return string The URI of the graph store
-     */
-    public function getUri()
-    {
-        return $this->uri;
-    }
-
-    /** Fetch a named graph from the graph store
-     *
-     * The URI can either be a full absolute URI or
-     * a URI relative to the URI of the graph store.
-     *
-     * @param string $uriRef The URI of graph desired
-     * @return EasyRdf_Graph The graph requested
-     */
-    public function get($uriRef)
-    {
-        if ($uriRef === self::DEFAULT_GRAPH) {
-            $dataUrl = $this->urlForGraph(self::DEFAULT_GRAPH);
-            $graph = new EasyRdf_Graph();
-        } else {
-            $graphUri = $this->parsedUri->resolve($uriRef)->toString();
-            $dataUrl = $this->urlForGraph($graphUri);
-
-            $graph = new EasyRdf_Graph($graphUri);
-        }
-
-        $graph->load($dataUrl);
-
-        return $graph;
-    }
-
-    /**
-     * Fetch default graph from the graph store
-     * @return EasyRdf_Graph
-     */
-    public function getDefault()
-    {
-        return $this->get(self::DEFAULT_GRAPH);
-    }
-
-    /** Send some graph data to the graph store
-     *
-     * This method is used by insert() and replace()
-     *
-     * @ignore
-     */
-    protected function sendGraph($method, $graph, $uriRef, $format)
-    {
-        if (is_object($graph) and $graph instanceof EasyRdf_Graph) {
-            if ($uriRef === null) {
-                $uriRef = $graph->getUri();
-            }
-            $data = $graph->serialise($format);
-        } else {
-            $data = $graph;
-        }
-
-        if ($uriRef === null) {
-            throw new InvalidArgumentException('Graph IRI is not specified');
-        }
-
-        $formatObj = EasyRdf_Format::getFormat($format);
-        $mimeType = $formatObj->getDefaultMimeType();
-
-        if ($uriRef === self::DEFAULT_GRAPH) {
-            $dataUrl = $this->urlForGraph(self::DEFAULT_GRAPH);
-        } else {
-            $graphUri = $this->parsedUri->resolve($uriRef)->toString();
-            $dataUrl = $this->urlForGraph($graphUri);
-        }
-
-        $client = EasyRdf_Http::getDefaultHttpClient();
-        $client->resetParameters(true);
-        $client->setUri($dataUrl);
-        $client->setMethod($method);
-        $client->setRawData($data);
-        $client->setHeaders('Content-Type', $mimeType);
-
-        $response = $client->request();
-
-        if (!$response->isSuccessful()) {
-            throw new EasyRdf_Exception(
-                "HTTP request for {$dataUrl} failed: ".$response->getMessage()
-            );
-        }
-
-        return $response;
-    }
-
-    /** Replace the contents of a graph in the graph store with new data
-     *
-     * The $graph parameter is the EasyRdf_Graph object to be sent to the
-     * graph store. Alternatively it can be a string, already serialised.
-     *
-     * The URI can either be a full absolute URI or
-     * a URI relative to the URI of the graph store.
-     *
-     * The $format parameter can be given to specify the serialisation
-     * used to send the graph data to the graph store.
-     *
-     * @param EasyRdf_Graph|string $graph  Data
-     * @param string               $uriRef The URI of graph to be replaced
-     * @param string               $format The format of the data to send to the graph store
-     * @return EasyRdf_Http_Response The response from the graph store
-     */
-    public function replace($graph, $uriRef = null, $format = 'ntriples')
-    {
-        return $this->sendGraph('PUT', $graph, $uriRef, $format);
-    }
-
-    /**
-     * Replace the contents of default graph in the graph store with new data
-     *
-     * The $graph parameter is the EasyRdf_Graph object to be sent to the
-     * graph store. Alternatively it can be a string, already serialised.
-     *
-     * The $format parameter can be given to specify the serialisation
-     * used to send the graph data to the graph store.
-     *
-     * @param EasyRdf_Graph|string $graph  Data
-     * @param string               $format The format of the data to send to the graph store
-     * @return EasyRdf_Http_Response The response from the graph store
-     */
-    public function replaceDefault($graph, $format = 'ntriples')
-    {
-        return self::replace($graph, self::DEFAULT_GRAPH, $format);
-    }
-
-    /** Add data to a graph in the graph store
-     *
-     * The $graph parameter is the EasyRdf_Graph object to be sent to the
-     * graph store. Alternatively it can be a string, already serialised.
-     *
-     * The URI can either be a full absolute URI or
-     * a URI relative to the URI of the graph store.
-     *
-     * The $format parameter can be given to specify the serialisation
-     * used to send the graph data to the graph store.
-     *
-     * @param EasyRdf_Graph|string $graph  Data
-     * @param string               $uriRef The URI of graph to be added to
-     * @param string               $format The format of the data to send to the graph store
-     * @return object EasyRdf_Http_Response The response from the graph store
-     */
-    public function insert($graph, $uriRef = null, $format = 'ntriples')
-    {
-        return $this->sendGraph('POST', $graph, $uriRef, $format);
-    }
-
-    /**
-     * Add data to default graph of the graph store
-     *
-     * The $graph parameter is the EasyRdf_Graph object to be sent to the
-     * graph store. Alternatively it can be a string, already serialised.
-     *
-     * The $format parameter can be given to specify the serialisation
-     * used to send the graph data to the graph store.
-     *
-     * @param EasyRdf_Graph|string $graph  Data
-     * @param string               $format The format of the data to send to the graph store
-     * @return object EasyRdf_Http_Response The response from the graph store
-     */
-    public function insertIntoDefault($graph, $format = 'ntriples')
-    {
-        return $this->insert($graph, self::DEFAULT_GRAPH, $format);
-    }
-
-    /** Delete named graph content from the graph store
-     *
-     * The URI can either be a full absolute URI or
-     * a URI relative to the URI of the graph store.
-     *
-     * @param string $uriRef The URI of graph to be added to
-     *
-     * @throws EasyRdf_Exception
-     * @return EasyRdf_Http_Response The response from the graph store
-     */
-    public function delete($uriRef)
-    {
-        if ($uriRef === self::DEFAULT_GRAPH) {
-            $dataUrl = $this->urlForGraph(self::DEFAULT_GRAPH);
-        } else {
-            $graphUri = $this->parsedUri->resolve($uriRef)->toString();
-            $dataUrl = $this->urlForGraph($graphUri);
-        }
-
-        $client = EasyRdf_Http::getDefaultHttpClient();
-        $client->resetParameters(true);
-        $client->setUri($dataUrl);
-        $client->setMethod('DELETE');
-        $response = $client->request();
-
-        if (!$response->isSuccessful()) {
-            throw new EasyRdf_Exception(
-                "HTTP request to delete {$dataUrl} failed: ".$response->getMessage()
-            );
-        }
-
-        return $response;
-    }
-
-    /**
-     * Delete default graph content from the graph store
-     *
-     * @return EasyRdf_Http_Response
-     * @throws EasyRdf_Exception
-     */
-    public function deleteDefault()
-    {
-        return $this->delete(self::DEFAULT_GRAPH);
-    }
-
-    /** Work out the full URL for a graph store request.
-     *  by checking if if it is a direct or indirect request.
-     *  @ignore
-     */
-    protected function urlForGraph($url)
-    {
-        if ($url === self::DEFAULT_GRAPH) {
-            $url = $this->uri.'?default';
-        } elseif (strpos($url, $this->uri) === false) {
-            $url = $this->uri."?graph=".urlencode($url);
-        }
-
-        return $url;
-    }
-
-    /** Magic method to return URI of the graph store when casted to string
-     *
-     * @return string The URI of the graph store
-     */
-    public function __toString()
-    {
-        return empty($this->uri) ? '' : $this->uri;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Http.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Http.php
deleted file mode 100644
index c978463..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Http.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-
-/**
- * Static class to set the HTTP client used by EasyRdf
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Http
-{
-    /** The default HTTP Client object */
-    private static $defaultHttpClient = null;
-
-    /** Set the HTTP Client object used to fetch RDF data
-     *
-     * @param  EasyRdf_Http_Client|Zend_Http_Client $httpClient The new HTTP client object
-     * @return EasyRdf_Http_Client|Zend_Http_Client The new HTTP client object
-     */
-    public static function setDefaultHttpClient($httpClient)
-    {
-        if (!is_object($httpClient) or
-            !($httpClient instanceof Zend_Http_Client or
-              $httpClient instanceof EasyRdf_Http_Client)) {
-            throw new InvalidArgumentException(
-                "\$httpClient should be an object of class Zend_Http_Client or EasyRdf_Http_Client"
-            );
-        }
-        return self::$defaultHttpClient = $httpClient;
-    }
-
-    /** Get the HTTP Client object used to fetch RDF data
-     *
-     * If no HTTP Client has previously been set, then a new
-     * default (EasyRdf_Http_Client) client will be created.
-     *
-     * @return EasyRdf_Http_Client|Zend_Http_Client The HTTP client object
-     */
-    public static function getDefaultHttpClient()
-    {
-        if (!isset(self::$defaultHttpClient)) {
-            self::$defaultHttpClient = new EasyRdf_Http_Client();
-        }
-        return self::$defaultHttpClient;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Http/Client.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Http/Client.php
deleted file mode 100644
index 49f429a..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Http/Client.php
+++ /dev/null
@@ -1,558 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- * Copyright (c) 2005-2009 Zend Technologies USA Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- *             Copyright (c) 2005-2009 Zend Technologies USA Inc.
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * This class is an implemetation of an HTTP client in PHP.
- * It supports basic HTTP 1.0 and 1.1 requests. For a more complete
- * implementation try Zend_Http_Client.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Http_Client
-{
-    /**
-     * Configuration array, set using the constructor or using ::setConfig()
-     *
-     * @var array
-     */
-    private $config = array(
-        'maxredirects'    => 5,
-        'useragent'       => 'EasyRdf_Http_Client',
-        'timeout'         => 10
-    );
-
-    /**
-     * Request URI
-     *
-     * @var string
-     */
-    private $uri = null;
-
-    /**
-     * Associative array of request headers
-     *
-     * @var array
-     */
-    private $headers = array();
-
-    /**
-     * HTTP request method
-     *
-     * @var string
-     */
-    private $method = 'GET';
-
-    /**
-     * Associative array of GET parameters
-     *
-     * @var array
-     */
-    private $paramsGet = array();
-
-    /**
-     * The raw post data to send. Could be set by setRawData($data).
-     *
-     * @var string
-     */
-    private $rawPostData = null;
-
-    /**
-     * Redirection counter
-     *
-     * @var int
-     */
-    private $redirectCounter = 0;
-
-    /**
-     * Constructor method. Will create a new HTTP client. Accepts the target
-     * URL and optionally configuration array.
-     *
-     * @param string $uri
-     * @param array $config Configuration key-value pairs.
-     */
-    public function __construct($uri = null, $config = null)
-    {
-        if ($uri !== null) {
-            $this->setUri($uri);
-        }
-        if ($config !== null) {
-            $this->setConfig($config);
-        }
-    }
-
-    /**
-     * Set the URI for the next request
-     *
-     * @param  string $uri
-     * @return EasyRdf_Http_Client
-     */
-    public function setUri($uri)
-    {
-        if (!is_string($uri)) {
-            $uri = strval($uri);
-        }
-
-        if (!preg_match('/^http(s?):/', $uri)) {
-            throw new InvalidArgumentException(
-                "EasyRdf_Http_Client only supports the 'http' and 'https' schemes."
-            );
-        }
-
-        $this->uri = $uri;
-
-        return $this;
-    }
-
-    /**
-     * Get the URI for the next request
-     *
-     * @return string
-     */
-    public function getUri($asString = true)
-    {
-        return $this->uri;
-    }
-
-    /**
-     * Set configuration parameters for this HTTP client
-     *
-     * @param  array $config
-     * @return EasyRdf_Http_Client
-     * @throws InvalidArgumentException
-     */
-    public function setConfig($config = array())
-    {
-        if ($config == null or !is_array($config)) {
-            throw new InvalidArgumentException(
-                "\$config should be an array and cannot be null"
-            );
-        }
-
-        foreach ($config as $k => $v) {
-            $this->config[strtolower($k)] = $v;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Set a request header
-     *
-     * @param string $name Header name (e.g. 'Accept')
-     * @param string $value Header value or null
-     * @return EasyRdf_Http_Client
-     */
-    public function setHeaders($name, $value = null)
-    {
-        $normalizedName = strtolower($name);
-
-        // If $value is null or false, unset the header
-        if ($value === null || $value === false) {
-            unset($this->headers[$normalizedName]);
-        } else {
-            // Else, set the header
-            $this->headers[$normalizedName] = array($name, $value);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Set the next request's method
-     *
-     * Validated the passed method and sets it.
-     *
-     * @param string $method
-     * @return EasyRdf_Http_Client
-     * @throws InvalidArgumentException
-     */
-    public function setMethod($method)
-    {
-        if (!is_string($method) or !preg_match('/^[A-Z]+$/', $method)) {
-            throw new InvalidArgumentException("Invalid HTTP request method.");
-        }
-
-        $this->method = $method;
-
-        return $this;
-    }
-
-    /**
-     * Get the method for the next request
-     *
-     * @return string
-     */
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    /**
-     * Get the value of a specific header
-     *
-     * Note that if the header has more than one value, an array
-     * will be returned.
-     *
-     * @param string $key
-     * @return string|array|null The header value or null if it is not set
-     */
-    public function getHeader($key)
-    {
-        $key = strtolower($key);
-        if (isset($this->headers[$key])) {
-            return $this->headers[$key][1];
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Set a GET parameter for the request.
-     *
-     * @param string $name
-     * @param string $value
-     * @return EasyRdf_Http_Client
-     */
-    public function setParameterGet($name, $value = null)
-    {
-        if ($value === null) {
-            if (isset($this->paramsGet[$name])) {
-                unset($this->paramsGet[$name]);
-            }
-        } else {
-            $this->paramsGet[$name] = $value;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Get a GET parameter for the request.
-     *
-     * @param string $name
-     * @return string value
-     */
-    public function getParameterGet($name)
-    {
-        if (isset($this->paramsGet[$name])) {
-            return $this->paramsGet[$name];
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Get all the GET parameters
-     *
-     * @return array
-     */
-    public function getParametersGet()
-    {
-        return $this->paramsGet;
-    }
-
-    /**
-     * Get the number of redirections done on the last request
-     *
-     * @return int
-     */
-    public function getRedirectionsCount()
-    {
-        return $this->redirectCounter;
-    }
-
-    /**
-     * Set the raw (already encoded) POST data.
-     *
-     * This function is here for two reasons:
-     * 1. For advanced user who would like to set their own data, already encoded
-     * 2. For backwards compatibilty: If someone uses the old post($data) method.
-     *    this method will be used to set the encoded data.
-     *
-     * $data can also be stream (such as file) from which the data will be read.
-     *
-     * @param string|resource $data
-     * @return Zend_Http_Client
-     */
-    public function setRawData($data)
-    {
-        $this->rawPostData = $data;
-        return $this;
-    }
-
-    /**
-     * Get the raw (already encoded) POST data.
-     *
-     * @return string
-     */
-    public function getRawData()
-    {
-        return $this->rawPostData;
-    }
-
-    /**
-     * Clear all GET and POST parameters
-     *
-     * Should be used to reset the request parameters if the client is
-     * used for several concurrent requests.
-     *
-     * clearAll parameter controls if we clean just parameters or also
-     * headers
-     *
-     * @param bool $clearAll Should all data be cleared?
-     * @return EasyRdf_Http_Client
-     */
-    public function resetParameters($clearAll = false)
-    {
-        // Reset parameter data
-        $this->paramsGet   = array();
-        $this->rawPostData = null;
-        $this->method      = 'GET';
-
-        if ($clearAll) {
-            $this->headers = array();
-        } else {
-            // Clear outdated headers
-            if (isset($this->headers['content-type'])) {
-                unset($this->headers['content-type']);
-            }
-            if (isset($this->headers['content-length'])) {
-                unset($this->headers['content-length']);
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * Send the HTTP request and return an HTTP response object
-     *
-     * @return EasyRdf_Http_Response
-     * @throws EasyRdf_Exception
-     */
-    public function request($method = null)
-    {
-        if (!$this->uri) {
-            throw new EasyRdf_Exception(
-                "Set URI before calling EasyRdf_Http_Client->request()"
-            );
-        }
-
-        if ($method) {
-            $this->setMethod($method);
-        }
-        $this->redirectCounter = 0;
-        $response = null;
-
-        // Send the first request. If redirected, continue.
-        do {
-            // Clone the URI and add the additional GET parameters to it
-            $uri = parse_url($this->uri);
-            if ($uri['scheme'] === 'http') {
-                $host = $uri['host'];
-            } elseif ($uri['scheme'] === 'https') {
-                $host = 'ssl://'.$uri['host'];
-            } else {
-                throw new EasyRdf_Exception(
-                    "Unsupported URI scheme: ".$uri['scheme']
-                );
-            }
-
-            if (isset($uri['port'])) {
-                $port = $uri['port'];
-            } else {
-                if ($uri['scheme'] === 'https') {
-                    $port = 443;
-                } else {
-                    $port = 80;
-                }
-            }
-
-            if (!empty($this->paramsGet)) {
-                if (!empty($uri['query'])) {
-                    $uri['query'] .= '&';
-                } else {
-                    $uri['query'] = '';
-                }
-                $uri['query'] .= http_build_query($this->paramsGet, null, '&');
-            }
-
-            $headers = $this->prepareHeaders($uri['host'], $port);
-
-            // Open socket to remote server
-            $socket = @fsockopen($host, $port, $errno, $errstr, $this->config['timeout']);
-            if (!$socket) {
-                throw new EasyRdf_Exception("Unable to connect to $host:$port ($errstr)");
-            }
-            stream_set_timeout($socket, $this->config['timeout']);
-            $info = stream_get_meta_data($socket);
-
-            // Write the request
-            $path = $uri['path'];
-            if (empty($path)) {
-                $path = '/';
-            }
-            if (isset($uri['query'])) {
-                $path .= '?' . $uri['query'];
-            }
-            fwrite($socket, "{$this->method} {$path} HTTP/1.1\r\n");
-            foreach ($headers as $k => $v) {
-                if (is_string($k)) {
-                    $v = ucfirst($k) . ": $v";
-                }
-                fwrite($socket, "$v\r\n");
-            }
-            fwrite($socket, "\r\n");
-
-            // Send the request body, if there is one set
-            if (isset($this->rawPostData)) {
-                fwrite($socket, $this->rawPostData);
-            }
-
-            // Read in the response
-            $content = '';
-            while (!feof($socket) && !$info['timed_out']) {
-                $content .= fgets($socket);
-                $info = stream_get_meta_data($socket);
-            }
-
-            if ($info['timed_out']) {
-                throw new EasyRdf_Exception("Request to $host:$port timed out");
-            }
-
-            // FIXME: support HTTP/1.1 100 Continue
-
-            // Close the socket
-            @fclose($socket);
-
-            // Parse the response string
-            $response = EasyRdf_Http_Response::fromString($content);
-
-            // If we got redirected, look for the Location header
-            if ($response->isRedirect() &&
-                   ($location = $response->getHeader('location'))
-               ) {
-
-                // Avoid problems with buggy servers that add whitespace at the
-                // end of some headers (See ZF-11283)
-                $location = trim($location);
-
-                // Some servers return relative URLs in the location header
-                // resolve it in relation to previous request
-                $baseUri = new EasyRdf_ParsedUri($this->uri);
-                $location = $baseUri->resolve($location)->toString();
-
-                // If it is a 303 then drop the parameters and send a GET request
-                if ($response->getStatus() == 303) {
-                    $this->resetParameters();
-                    $this->setMethod('GET');
-                }
-
-                // If we got a well formed absolute URI
-                if (parse_url($location)) {
-                    $this->setHeaders('host', null);
-                    $this->setUri($location);
-                } else {
-                    throw new EasyRdf_Exception(
-                        "Failed to parse Location header returned by ".
-                        $this->uri
-                    );
-                }
-                ++$this->redirectCounter;
-
-            } else {
-                // If we didn't get any location, stop redirecting
-                break;
-            }
-
-
-        } while ($this->redirectCounter < $this->config['maxredirects']);
-
-        return $response;
-    }
-
-    /**
-     * Prepare the request headers
-     *
-     * @ignore
-     * @return array
-     */
-    protected function prepareHeaders($host, $port)
-    {
-        $headers = array();
-
-        // Set the host header
-        if (! isset($this->headers['host'])) {
-            // If the port is not default, add it
-            if ($port !== 80 and $port !== 443) {
-                $host .= ':' . $port;
-            }
-            $headers[] = "Host: {$host}";
-        }
-
-        // Set the connection header
-        if (! isset($this->headers['connection'])) {
-            $headers[] = "Connection: close";
-        }
-
-        // Set the user agent header
-        if (! isset($this->headers['user-agent'])) {
-            $headers[] = "User-Agent: {$this->config['useragent']}";
-        }
-
-        // If we have rawPostData set, set the content-length header
-        if (isset($this->rawPostData)) {
-            $headers[] = "Content-Length: ".strlen($this->rawPostData);
-        }
-
-        // Add all other user defined headers
-        foreach ($this->headers as $header) {
-            list($name, $value) = $header;
-            if (is_array($value)) {
-                $value = implode(', ', $value);
-            }
-
-            $headers[] = "$name: $value";
-        }
-
-        return $headers;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Http/Exception.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Http/Exception.php
deleted file mode 100644
index 4e4c073..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Http/Exception.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-
-class EasyRdf_Http_Exception extends EasyRdf_Exception
-{
-    private $body;
-
-    public function __construct($message = "", $code = 0, Exception $previous = null, $body = '')
-    {
-        parent::__construct($message, $code, $previous);
-        $this->body = $body;
-    }
-
-    public function getBody()
-    {
-        return $this->body;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Http/Response.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Http/Response.php
deleted file mode 100644
index 21f986a..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Http/Response.php
+++ /dev/null
@@ -1,360 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.
- * Copyright (c) 2005-2009 Zend Technologies USA Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc.
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an HTTP 1.0 / 1.1 response message.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- *             Copyright (c) 2005-2009 Zend Technologies USA Inc.
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Http_Response
-{
-
-    /**
-     * The HTTP response status code
-     *
-     * @var int
-     */
-    private $status;
-
-    /**
-     * The HTTP response code as string
-     * (e.g. 'Not Found' for 404 or 'Internal Server Error' for 500)
-     *
-     * @var string
-     */
-    private $message;
-
-    /**
-     * The HTTP response headers array
-     *
-     * @var array
-     */
-    private $headers = array();
-
-    /**
-     * The HTTP response body
-     *
-     * @var string
-     */
-    private $body;
-
-    /**
-     * Constructor.
-     *
-     * @param  int     $status HTTP Status code
-     * @param  array   $headers The HTTP response headers
-     * @param  string  $body The content of the response
-     * @param  string  $version The HTTP Version (1.0 or 1.1)
-     * @param  string  $message The HTTP response Message
-     * @return object  EasyRdf_Http_Response
-     */
-    public function __construct(
-        $status,
-        $headers,
-        $body = null,
-        $version = '1.1',
-        $message = null
-    ) {
-        $this->status = intval($status);
-        $this->body = $body;
-        $this->version = $version;
-        $this->message = $message;
-
-        foreach ($headers as $k => $v) {
-            $k = ucwords(strtolower($k));
-            $this->headers[$k] = $v;
-        }
-    }
-
-    /**
-     * Check whether the response in successful
-     *
-     * @return boolean
-     */
-    public function isSuccessful()
-    {
-        return ($this->status >= 200 && $this->status < 300);
-    }
-
-    /**
-     * Check whether the response is an error
-     *
-     * @return boolean
-     */
-    public function isError()
-    {
-        return ($this->status >= 400 && $this->status < 600);
-    }
-
-    /**
-     * Check whether the response is a redirection
-     *
-     * @return boolean
-     */
-    public function isRedirect()
-    {
-        return ($this->status >= 300 && $this->status < 400);
-    }
-
-    /**
-     * Get the HTTP response status code
-     *
-     * @return int
-     */
-    public function getStatus()
-    {
-        return $this->status;
-    }
-
-    /**
-     * Return a message describing the HTTP response code
-     * (Eg. "OK", "Not Found", "Moved Permanently")
-     *
-     * @return string
-     */
-    public function getMessage()
-    {
-        return $this->message;
-    }
-
-    /**
-     * Get the response body as string
-     *
-     * @return string
-     */
-    public function getBody()
-    {
-        // Decode the body if it was transfer-encoded
-        switch (strtolower($this->getHeader('transfer-encoding'))) {
-            // Handle chunked body
-            case 'chunked':
-                return self::decodeChunkedBody($this->body);
-                break;
-
-            // No transfer encoding, or unknown encoding extension:
-            // return body as is
-            default:
-                return $this->body;
-                break;
-        }
-    }
-
-    /**
-     * Get the raw response body (as transfered "on wire") as string
-     *
-     * If the body is encoded (with Transfer-Encoding, not content-encoding -
-     * IE "chunked" body), gzip compressed, etc. it will not be decoded.
-     *
-     * @return string
-     */
-    public function getRawBody()
-    {
-        return $this->body;
-    }
-
-    /**
-     * Get the HTTP version of the response
-     *
-     * @return string
-     */
-    public function getVersion()
-    {
-        return $this->version;
-    }
-
-    /**
-     * Get the response headers
-     *
-     * @return array
-     */
-    public function getHeaders()
-    {
-        return $this->headers;
-    }
-
-    /**
-     * Get a specific header as string, or null if it is not set
-     *
-     * @param string$header
-     * @return string|array|null
-     */
-    public function getHeader($header)
-    {
-        $header = ucwords(strtolower($header));
-        if (array_key_exists($header, $this->headers)) {
-            return $this->headers[$header];
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Get all headers as string
-     *
-     * @param boolean $statusLine Whether to return the first status line (ie "HTTP 200 OK")
-     * @param string  $br         Line breaks (eg. "\n", "\r\n", "<br />")
-     * @return string
-     */
-    public function getHeadersAsString($statusLine = true, $br = "\n")
-    {
-        $str = '';
-
-        if ($statusLine) {
-            $str = "HTTP/{$this->version} {$this->status} {$this->message}{$br}";
-        }
-
-        // Iterate over the headers and stringify them
-        foreach ($this->headers as $name => $value) {
-            if (is_string($value)) {
-                $str .= "{$name}: {$value}{$br}";
-            } elseif (is_array($value)) {
-                foreach ($value as $subval) {
-                    $str .= "{$name}: {$subval}{$br}";
-                }
-            }
-        }
-
-        return $str;
-    }
-
-    /**
-     * Create an EasyRdf_Http_Response object from a HTTP response string
-     *
-     * @param string $responseStr
-     * @return EasyRdf_Http_Response
-     */
-    public static function fromString($responseStr)
-    {
-        // First, split body and headers
-        $matches = preg_split('|(?:\r?\n){2}|m', $responseStr, 2);
-        if ($matches and sizeof($matches) == 2) {
-            list ($headerLines, $body) = $matches;
-        } else {
-            throw new EasyRdf_Exception(
-                "Failed to parse HTTP response."
-            );
-        }
-
-        // Split headers part to lines
-        $headerLines = preg_split('|[\r\n]+|m', $headerLines);
-        $status = array_shift($headerLines);
-        if (preg_match("|^HTTP/([\d\.x]+) (\d+) ([^\r\n]+)|", $status, $m)) {
-            $version = $m[1];
-            $status = $m[2];
-            $message = $m[3];
-        } else {
-            throw new EasyRdf_Exception(
-                "Failed to parse HTTP response status line."
-            );
-        }
-
-        // Process the rest of the header lines
-        $headers = array();
-        foreach ($headerLines as $line) {
-            if (preg_match("|^([\w-]+):\s+(.+)$|", $line, $m)) {
-                $hName = ucwords(strtolower($m[1]));
-                $hValue = $m[2];
-
-                if (isset($headers[$hName])) {
-                    if (! is_array($headers[$hName])) {
-                        $headers[$hName] = array($headers[$hName]);
-                    }
-                    $headers[$hName][] = $hValue;
-                } else {
-                    $headers[$hName] = $hValue;
-                }
-            }
-        }
-
-        return new EasyRdf_Http_Response($status, $headers, $body, $version, $message);
-    }
-
-
-    /**
-     * Decode a "chunked" transfer-encoded body and return the decoded text
-     *
-     * @param string $body
-     * @return string
-     */
-    public static function decodeChunkedBody($body)
-    {
-        $decBody = '';
-
-        while (trim($body)) {
-            if (preg_match('/^([\da-fA-F]+)[^\r\n]*\r\n/sm', $body, $m)) {
-                $length = hexdec(trim($m[1]));
-                $cut = strlen($m[0]);
-                $decBody .= substr($body, $cut, $length);
-                $body = substr($body, $cut + $length + 2);
-            } else {
-                throw new EasyRdf_Exception(
-                    "Failed to decode chunked body in HTTP response."
-                );
-            }
-        }
-
-        return $decBody;
-    }
-
-
-    /**
-     * Get the entire response as string
-     *
-     * @param string $br Line breaks (eg. "\n", "\r\n", "<br />")
-     * @return string
-     */
-    public function asString($br = "\n")
-    {
-        return $this->getHeadersAsString(true, $br) . $br . $this->getRawBody();
-    }
-
-    /**
-     * Implements magic __toString()
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return $this->asString();
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Isomorphic.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Isomorphic.php
deleted file mode 100644
index 5b46125..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Isomorphic.php
+++ /dev/null
@@ -1,436 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Functions for comparing two graphs with each other
- *
- * Based on rdf-isomorphic.rb by Ben Lavender:
- * https://github.com/ruby-rdf/rdf-isomorphic
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Isomorphic
-{
-    /**
-     * Check if one graph is isomorphic (equal) to another graph
-     *
-     * For example:
-     *    $graphA = EasyRdf_Graph::newAndLoad('http://example.com/a.ttl');
-     *    $graphB = EasyRdf_Graph::newAndLoad('http://example.com/b.ttl');
-     *    if (EasyRdf_Isomorphic::isomorphic($graphA, $graphB)) print "Equal!";
-     *
-     * @param  object EasyRdf_Graph  $graphA  The first graph to be compared
-     * @param  object EasyRdf_Graph  $graphB  The second graph to be compared
-     * @return boolean True if the two graphs are isomorphic
-     */
-    public static function isomorphic($graphA, $graphB)
-    {
-        return is_array(self::bijectionBetween($graphA, $graphB));
-    }
-
-    /**
-     * Returns an associative array of bnode identifiers representing an isomorphic
-     * bijection of one EasyRdf_Graph to another EasyRdf_Graph's blank nodes or
-     * null if a bijection cannot be found.
-     *
-     * @param  object EasyRdf_Graph  $graphA  The first graph to be compared
-     * @param  object EasyRdf_Graph  $graphB  The second graph to be compared
-     * @return array bnode mapping from $graphA to $graphB
-     */
-    public static function bijectionBetween($graphA, $graphB)
-    {
-        $bnodesA = array();
-        $bnodesB = array();
-        $statementsA = array();
-        $statementsB = array();
-
-        // Quick initial check: are there differing numbers of subjects?
-        if (self::countSubjects($graphA) != self::countSubjects($graphB)) {
-            return null;
-        }
-
-        // Check if all the statements in Graph A exist in Graph B
-        $groundedStatementsMatch = self::groundedStatementsMatch($graphA, $graphB, $bnodesA, $statementsA);
-
-        if ($groundedStatementsMatch) {
-            // Check if all the statements in Graph B exist in Graph A
-            $groundedStatementsMatch = self::groundedStatementsMatch($graphB, $graphA, $bnodesB, $statementsB);
-        }
-
-        if ($groundedStatementsMatch === false) {
-            // The grounded statements do not match
-            return null;
-        } elseif (count($bnodesA) > 0 or count($bnodesB > 0)) {
-            // There are blank nodes - build a bi-jection
-            return self::buildBijectionTo($statementsA, $bnodesA, $statementsB, $bnodesB);
-        } else {
-            // No bnodes and the grounded statements match
-            return array();
-        }
-    }
-
-    /**
-     * Count the number of subjects in a graph
-     * @ignore
-     */
-    private static function countSubjects($graph)
-    {
-        return count($graph->toRdfPhp());
-    }
-
-    /**
-     * Check if all the statements in $graphA also appear in $graphB
-     * @ignore
-     */
-    private static function groundedStatementsMatch($graphA, $graphB, &$bnodes, &$anonStatements)
-    {
-        $groundedStatementsMatch = true;
-
-        foreach ($graphA->toRdfPhp() as $subject => $properties) {
-            if (substr($subject, 0, 2) == '_:') {
-                array_push($bnodes, $subject);
-                $subjectIsBnode = true;
-            } else {
-                $subjectIsBnode = false;
-            }
-
-            foreach ($properties as $property => $values) {
-                foreach ($values as $value) {
-                    if ($value['type'] == 'uri' and substr($value['value'], 0, 2) == '_:') {
-                        array_push($bnodes, $value['value']);
-                        $objectIsBnode = true;
-                    } else {
-                        $objectIsBnode = false;
-                    }
-
-                    if ($groundedStatementsMatch and
-                        $subjectIsBnode === false and
-                        $objectIsBnode === false and
-                        $graphB->hasProperty($subject, $property, $value) === false
-                    ) {
-                        $groundedStatementsMatch = false;
-                    }
-
-                    if ($subjectIsBnode or $objectIsBnode) {
-                        array_push(
-                            $anonStatements,
-                            array(
-                                array('type' => $subjectIsBnode ? 'bnode' : 'uri', 'value' => $subject),
-                                array('type' => 'uri', 'value' => $property),
-                                $value
-                            )
-                        );
-                    }
-                }
-            }
-        }
-
-        return $groundedStatementsMatch;
-    }
-
-    /**
-     * The main recursive bijection algorithm.
-     *
-     * This algorithm is very similar to the one explained by Jeremy Carroll in
-     * http://www.hpl.hp.com/techreports/2001/HPL-2001-293.pdf. Page 12 has the
-     * relevant pseudocode.
-     *
-     * @ignore
-     */
-    private static function buildBijectionTo
-    (
-        $statementsA,
-        $nodesA,
-        $statementsB,
-        $nodesB,
-        $groundedHashesA = array(),
-        $groundedHashesB = array()
-    ) {
-
-        // Create a hash signature of every node, based on the signature of
-        // statements it exists in.
-        // We also save hashes of nodes that cannot be reliably known; we will use
-        // that information to eliminate possible recursion combinations.
-        //
-        // Any mappings given in the method parameters are considered grounded.
-        list($hashesA, $ungroundedHashesA) = self::hashNodes($statementsA, $nodesA, $groundedHashesA);
-        list($hashesB, $ungroundedHashesB) = self::hashNodes($statementsB, $nodesB, $groundedHashesB);
-
-        // Grounded hashes are built at the same rate between the two graphs (if
-        // they are isomorphic).  If there exists a grounded node in one that is
-        // not in the other, we can just return.  Ungrounded nodes might still
-        // conflict, so we don't check them.  This is a little bit messy in the
-        // middle of the method, and probably slows down isomorphic checks,  but
-        // prevents almost-isomorphic cases from getting nutty.
-        foreach ($hashesA as $nodeA => $hashA) {
-            if (!in_array($hashA, $hashesB)) {
-                return null;
-            }
-        }
-        foreach ($hashesB as $nodeB => $hashB) {
-            if (!in_array($hashB, $hashesA)) {
-                return null;
-            }
-        }
-
-        // Using the created hashes, map nodes to other_nodes
-        // Ungrounded hashes will also be equal, but we keep the distinction
-        // around for when we recurse later (we only recurse on ungrounded nodes)
-        $bijection = array();
-        foreach ($nodesA as $nodeA) {
-            $foundNode = null;
-            foreach ($ungroundedHashesB as $nodeB => $hashB) {
-                if ($ungroundedHashesA[$nodeA] == $hashB) {
-                    $foundNode = $nodeB;
-                }
-            }
-
-            if ($foundNode) {
-                $bijection[$nodeA] = $foundNode;
-
-                // Deletion is required to keep counts even; two nodes with identical
-                // signatures can biject to each other at random.
-                unset($ungroundedHashesB[$foundNode]);
-            }
-        }
-
-        // bijection is now a mapping of nodes to other_nodes.  If all are
-        // accounted for on both sides, we have a bijection.
-        //
-        // If not, we will speculatively mark pairs with matching ungrounded
-        // hashes as bijected and recurse.
-        $bijectionA = array_keys($bijection);
-        $bijectionB = array_values($bijection);
-        sort($bijectionA);
-        sort($nodesA);
-        sort($bijectionB);
-        sort($nodesB);
-        if ($bijectionA != $nodesA or $bijectionB != $nodesB) {
-            $bijection = null;
-
-            foreach ($nodesA as $nodeA) {
-
-                // We don't replace grounded nodes' hashes
-                if (isset($hashesA[$nodeA])) {
-                    continue;
-                }
-
-                foreach ($nodesB as $nodeB) {
-                    // We don't replace grounded nodesB's hashes
-                    if (isset($hashesB[$nodeB])) {
-                        continue;
-                    }
-
-                    // The ungrounded signature must match for this to potentially work
-                    if ($ungroundedHashesA[$nodeA] != $ungroundedHashesB[$nodeB]) {
-                        continue;
-                    }
-
-                    $hash = sha1($nodeA);
-                    $hashesA[$nodeA] = $hash;
-                    $hashesB[$nodeB] = $hash;
-                    $bijection = self::buildBijectionTo(
-                        $statementsA,
-                        $nodesA,
-                        $statementsB,
-                        $nodesA,
-                        $hashesA,
-                        $hashesB
-                    );
-                }
-            }
-        }
-
-        return $bijection;
-    }
-
-    /**
-     * Given a set of statements, create a mapping of node => SHA1 for a given
-     * set of blank nodes.  grounded_hashes is a mapping of node => SHA1 pairs
-     * that we will take as a given, and use those to make more specific
-     * signatures of other nodes.
-     *
-     * Returns a tuple of associative arrats: one of grounded hashes, and one of all
-     * hashes.  grounded hashes are based on non-blank nodes and grounded blank
-     * nodes, and can be used to determine if a node's signature matches
-     * another.
-     *
-     * @ignore
-     */
-    private static function hashNodes($statements, $nodes, $groundedHahes)
-    {
-        $hashes = $groundedHahes;
-        $ungroundedHashes = array();
-        $hashNeeded = true;
-
-        // We may have to go over the list multiple times.  If a node is marked as
-        // grounded, other nodes can then use it to decide their own state of
-        // grounded.
-        while ($hashNeeded) {
-            $startingGroundedNodes = count($hashes);
-            foreach ($nodes as $node) {
-                if (!isset($hashes[$node])) {
-                    $hash = self::nodeHashFor($node, $statements, $hashes);
-                    if (self::nodeIsGrounded($node, $statements, $hashes)) {
-                        $hashes[$node] = $hash;
-                    }
-                }
-                $ungroundedHashes[$node] = $hash;
-            }
-
-            // after going over the list, any nodes with a unique hash can be marked
-            // as grounded, even if we have not tied them back to a root yet.
-            $uniques = array();
-            foreach ($ungroundedHashes as $node => $hash) {
-                $uniques[$hash] = isset($uniques[$hash]) ? false : $node;
-            }
-            foreach ($uniques as $hash => $node) {
-                if ($node) {
-                    $hashes[$node] = $hash;
-                }
-            }
-            $hashNeeded = ($startingGroundedNodes != count($hashes));
-        }
-
-        return array($hashes, $ungroundedHashes);
-    }
-
-    /**
-     * Generate a hash for a node based on the signature of the statements it
-     * appears in.  Signatures consist of grounded elements in statements
-     * associated with a node, that is, anything but an ungrounded anonymous
-     * node.  Creating the hash is simply hashing a sorted list of each
-     * statement's signature, which is itself a concatenation of the string form
-     * of all grounded elements.
-     *
-     * Nodes other than the given node are considered grounded if they are a
-     * member in the given hash.
-     *
-     * Returns a tuple consisting of grounded being true or false and the string
-     * for the hash
-     *
-     * @ignore
-     */
-    private static function nodeHashFor($node, $statements, $hashes)
-    {
-        $statement_signatures = array();
-        foreach ($statements as $statement) {
-            foreach ($statement as $n) {
-                if ($n['type'] != 'literal' and $n['value'] == $node) {
-                    array_push(
-                        $statement_signatures,
-                        self::hashStringFor($statement, $hashes, $node)
-                    );
-                }
-            }
-        }
-
-        // Note that we sort the signatures--without a canonical ordering,
-        // we might get different hashes for equivalent nodes
-        sort($statement_signatures);
-
-        // Convert statements into one long string and hash it
-        return sha1(implode('', $statement_signatures));
-    }
-
-    /**
-     * Returns true if a given node is grounded
-     * A node is groundd if it is not a blank node or it is included
-     * in the given mapping of grounded nodes.
-     *
-     * @ignore
-     */
-    private static function nodeIsGrounded($node, $statements, $hashes)
-    {
-        $grounded = true;
-        foreach ($statements as $statement) {
-            if (in_array($node, $statement)) {
-                foreach ($statement as $resource) {
-                    if ($node['type'] != 'bnode' or
-                        isset($hashes[$node['value']]) or
-                        $resource == $node
-                    ) {
-                        $grounded = false;
-                    }
-                }
-            }
-        }
-        return $grounded;
-    }
-
-    /**
-     * Provide a string signature for the given statement, collecting
-     * string signatures for grounded node elements.
-     *
-     * @ignore
-     */
-    private static function hashStringFor($statement, $hashes, $node)
-    {
-        $str = "";
-        foreach ($statement as $r) {
-            $str .= self::stringForNode($r, $hashes, $node);
-        }
-        return $str;
-    }
-
-    /**
-     * Provides a string for the given node for use in a string signature
-     * Non-anonymous nodes will return their string form.  Grounded anonymous
-     * nodes will return their hashed form.
-     *
-     * @ignore
-     */
-    private static function stringForNode($node, $hashes, $target)
-    {
-        if (is_null($node)) {
-            return "";
-        } elseif ($node['type'] == 'bnode') {
-            if ($node['value'] == $target) {
-                return "itself";
-            } elseif (isset($hashes[$node['value']])) {
-                return $hashes[$node['value']];
-            } else {
-                return "a blank node";
-            }
-        } else {
-            $s = new EasyRdf_Serialiser_Ntriples();
-            return $s->serialiseValue($node);
-        }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal.php
deleted file mode 100644
index b6e5a71..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal.php
+++ /dev/null
@@ -1,332 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an RDF Literal
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Literal
-{
-    /** @ignore a mapping from datatype uri to class name */
-    private static $datatypeMap = array();
-
-    /** @ignore A mapping from class name to datatype URI */
-    private static $classMap = array();
-
-    /** @ignore The string value for this literal */
-    protected $value = null;
-
-    /** @ignore The language of the literal (e.g. 'en') */
-    protected $lang = null;
-
-    /** @ignore The datatype URI of the literal */
-    protected $datatype = null;
-
-
-    /** Create a new literal object
-     *
-     * PHP values of type bool, int or float, will automatically be converted
-     * to the corresponding datatype and PHP sub-class.
-     *
-     * If a registered datatype is given, then the registered subclass of EasyRdf_Literal
-     * will instantiated.
-     *
-     * Note that literals are not required to have a language or datatype.
-     * Literals cannot have both a language and a datatype.
-     *
-     * @param  mixed  $value     The value of the literal or an associative array
-     * @param  string $lang      The natural language of the literal or null (e.g. 'en')
-     * @param  string $datatype  The datatype of the literal or null (e.g. 'xsd:integer')
-     * @return object EasyRdf_Literal (or subclass of EasyRdf_Literal)
-     */
-    public static function create($value, $lang = null, $datatype = null)
-    {
-        if (EasyRdf_Utils::isAssociativeArray($value)) {
-            if (isset($value['xml:lang'])) {
-                $lang = $value['xml:lang'];
-            } elseif (isset($value['lang'])) {
-                $lang = $value['lang'];
-            }
-            if (isset($value['datatype'])) {
-                $datatype = $value['datatype'];
-            }
-            $value = isset($value['value']) ? $value['value'] : null;
-        }
-
-        if (is_null($datatype) or $datatype === '') {
-            if (is_null($lang) or $lang === '') {
-                // Automatic datatype selection
-                $datatype = self::getDatatypeForValue($value);
-            }
-        } elseif (is_object($datatype)) {
-            $datatype = strval($datatype);
-        } else {
-            // Expand shortened URIs (qnames)
-            $datatype = EasyRdf_Namespace::expand($datatype);
-        }
-
-        // Work out what class to use for this datatype
-        if (isset(self::$datatypeMap[$datatype])) {
-            $class = self::$datatypeMap[$datatype];
-        } else {
-            $class = 'EasyRdf_Literal';
-        }
-        return new $class($value, $lang, $datatype);
-    }
-
-    /** Register an RDF datatype with a PHP class name
-     *
-     * When parsing registered class will be used whenever the datatype
-     * is seen.
-     *
-     * When serialising a registered class, the mapping will be used to
-     * set the datatype in the RDF.
-     *
-     * Example:
-     * EasyRdf_Literal::registerDatatype('xsd:dateTime', 'My_DateTime_Class');
-     *
-     * @param  string  $datatype   The RDF datatype (e.g. xsd:dateTime)
-     * @param  string  $class      The PHP class name (e.g. My_DateTime_Class)
-     */
-    public static function setDatatypeMapping($datatype, $class)
-    {
-        if (!is_string($datatype) or $datatype == null or $datatype == '') {
-            throw new InvalidArgumentException(
-                "\$datatype should be a string and cannot be null or empty"
-            );
-        }
-
-        if (!is_string($class) or $class == null or $class == '') {
-            throw new InvalidArgumentException(
-                "\$class should be a string and cannot be null or empty"
-            );
-        }
-
-        $datatype = EasyRdf_Namespace::expand($datatype);
-        self::$datatypeMap[$datatype] = $class;
-        self::$classMap[$class] = $datatype;
-    }
-
-    /** Remove the mapping between an RDF datatype and a PHP class name
-     *
-     * @param  string  $datatype   The RDF datatype (e.g. xsd:dateTime)
-     */
-    public static function deleteDatatypeMapping($datatype)
-    {
-        if (!is_string($datatype) or $datatype == null or $datatype == '') {
-            throw new InvalidArgumentException(
-                "\$datatype should be a string and cannot be null or empty"
-            );
-        }
-
-        $datatype = EasyRdf_Namespace::expand($datatype);
-        if (isset(self::$datatypeMap[$datatype])) {
-            $class = self::$datatypeMap[$datatype];
-            unset(self::$datatypeMap[$datatype]);
-            unset(self::$classMap[$class]);
-        }
-    }
-
-    /** Get datatype URI for a PHP value.
-     *
-     * This static function is intended for internal use.
-     * Given a PHP value, it will return an XSD datatype
-     * URI for that value, for example:
-     * http://www.w3.org/2001/XMLSchema#integer
-     *
-     * @return string  A URI for the datatype of $value.
-     */
-    public static function getDatatypeForValue($value)
-    {
-        if (is_float($value)) {
-            return 'http://www.w3.org/2001/XMLSchema#double';
-        } elseif (is_int($value)) {
-            return 'http://www.w3.org/2001/XMLSchema#integer';
-        } elseif (is_bool($value)) {
-            return 'http://www.w3.org/2001/XMLSchema#boolean';
-        } elseif (is_object($value) and $value instanceof DateTime) {
-            return 'http://www.w3.org/2001/XMLSchema#dateTime';
-        } else {
-            return null;
-        }
-    }
-
-
-
-    /** Constructor for creating a new literal
-     *
-     * @param  string $value     The value of the literal
-     * @param  string $lang      The natural language of the literal or null (e.g. 'en')
-     * @param  string $datatype  The datatype of the literal or null (e.g. 'xsd:string')
-     * @return object EasyRdf_Literal
-     */
-    public function __construct($value, $lang = null, $datatype = null)
-    {
-        $this->value = $value;
-        $this->lang = $lang ? $lang : null;
-        $this->datatype = $datatype ? $datatype : null;
-
-        if ($this->datatype) {
-            if (is_object($this->datatype)) {
-                // Convert objects to strings
-                $this->datatype = strval($this->datatype);
-            } else {
-                // Expand shortened URIs (CURIEs)
-                $this->datatype = EasyRdf_Namespace::expand($this->datatype);
-            }
-
-            // Literals can not have both a language and a datatype
-            $this->lang = null;
-        } else {
-            // Set the datatype based on the subclass
-            $class = get_class($this);
-            if (isset(self::$classMap[$class])) {
-                $this->datatype = self::$classMap[$class];
-                $this->lang = null;
-            }
-        }
-
-        if (is_float($this->value)) {
-            // special handling of floats, as they suffer from locale [mis]configuration
-            $this->value = rtrim(sprintf('%F', $this->value), '0');
-        } else {
-            // Cast value to string
-            settype($this->value, 'string');
-        }
-    }
-
-    /** Returns the value of the literal.
-     *
-     * @return string  Value of this literal.
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /** Returns the full datatype URI of the literal.
-     *
-     * @return string  Datatype URI of this literal.
-     */
-    public function getDatatypeUri()
-    {
-        return $this->datatype;
-    }
-
-    /** Returns the shortened datatype URI of the literal.
-     *
-     * @return string  Datatype of this literal (e.g. xsd:integer).
-     */
-    public function getDatatype()
-    {
-        if ($this->datatype) {
-            return EasyRdf_Namespace::shorten($this->datatype);
-        } else {
-            return null;
-        }
-    }
-
-    /** Returns the language of the literal.
-     *
-     * @return string  Language of this literal.
-     */
-    public function getLang()
-    {
-        return $this->lang;
-    }
-
-    /** Returns the properties of the literal as an associative array
-     *
-     * For example:
-     * array('type' => 'literal', 'value' => 'string value')
-     *
-     * @return array  The properties of the literal
-     */
-    public function toRdfPhp()
-    {
-        $array = array(
-            'type' => 'literal',
-            'value' => $this->value
-        );
-
-        if ($this->datatype) {
-            $array['datatype'] = $this->datatype;
-        }
-
-        if ($this->lang) {
-            $array['lang'] = $this->lang;
-        }
-
-        return $array;
-    }
-
-    /** Magic method to return the value of a literal as a string
-     *
-     * @return string The value of the literal
-     */
-    public function __toString()
-    {
-        return isset($this->value) ? $this->value : '';
-    }
-
-    /** Return pretty-print view of the literal
-     *
-     * @param  string $format Either 'html' or 'text'
-     * @param  string $color  The colour of the text
-     * @return string
-     */
-    public function dumpValue($format = 'html', $color = 'black')
-    {
-        return EasyRdf_Utils::dumpLiteralValue($this, $format, $color);
-    }
-}
-
-/*
-   Register default set of datatype classes
-*/
-
-EasyRdf_Literal::setDatatypeMapping('xsd:boolean', 'EasyRdf_Literal_Boolean');
-EasyRdf_Literal::setDatatypeMapping('xsd:date', 'EasyRdf_Literal_Date');
-EasyRdf_Literal::setDatatypeMapping('xsd:dateTime', 'EasyRdf_Literal_DateTime');
-EasyRdf_Literal::setDatatypeMapping('xsd:decimal', 'EasyRdf_Literal_Decimal');
-EasyRdf_Literal::setDatatypeMapping('xsd:hexBinary', 'EasyRdf_Literal_HexBinary');
-EasyRdf_Literal::setDatatypeMapping('rdf:HTML', 'EasyRdf_Literal_HTML');
-EasyRdf_Literal::setDatatypeMapping('xsd:integer', 'EasyRdf_Literal_Integer');
-EasyRdf_Literal::setDatatypeMapping('rdf:XMLLiteral', 'EasyRdf_Literal_XML');
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Boolean.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Boolean.php
deleted file mode 100644
index d8ca2ed..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Boolean.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an RDF Literal of datatype xsd:boolean
- *
- * @package    EasyRdf
- * @link       http://www.w3.org/TR/xmlschema-2/#boolean
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Literal_Boolean extends EasyRdf_Literal
-{
-    /** Constructor for creating a new boolean literal
-     *
-     * If the value is not a string, then it will be converted to 'true' or 'false'.
-     *
-     * @param  mixed  $value     The value of the literal
-     * @param  string $lang      Should be null (literals with a datatype can't have a language)
-     * @param  string $datatype  Optional datatype (default 'xsd:boolean')
-     * @return object EasyRdf_Literal_Boolean
-     */
-    public function __construct($value, $lang = null, $datatype = null)
-    {
-        if (!is_string($value)) {
-            $value = $value ? 'true' : 'false';
-        }
-        parent::__construct($value, null, $datatype);
-    }
-
-    /** Return the value of the literal cast to a PHP bool
-     *
-     * If the value is 'true' or '1' return true, otherwise returns false.
-     *
-     * @return bool
-     */
-    public function getValue()
-    {
-        return strtolower($this->value) === 'true' or $this->value === '1';
-    }
-
-    /** Return true if the value of the literal is 'true' or '1'
-     *
-     * @return bool
-     */
-    public function isTrue()
-    {
-        return strtolower($this->value) === 'true' or $this->value === '1';
-    }
-
-    /** Return true if the value of the literal is 'false' or '0'
-     *
-     * @return bool
-     */
-    public function isFalse()
-    {
-        return strtolower($this->value) === 'false' or $this->value === '0';
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Date.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Date.php
deleted file mode 100644
index 0e05acf..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Date.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an RDF Literal of datatype xsd:date
- *
- * @package    EasyRdf
- * @link       http://www.w3.org/TR/xmlschema-2/#date
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Literal_Date extends EasyRdf_Literal
-{
-    /** Constructor for creating a new date literal
-     *
-     * If the value is a DateTime object, then it will be converted to the xsd:date format.
-     * If no value is given or is is null, then the current date is used.
-     *
-     * @see DateTime
-     *
-     * @param  mixed  $value     The value of the literal
-     * @param  string $lang      Should be null (literals with a datatype can't have a language)
-     * @param  string $datatype  Optional datatype (default 'xsd:date')
-     * @return object EasyRdf_Literal_Date
-     */
-    public function __construct($value = null, $lang = null, $datatype = null)
-    {
-        // If $value is null, use today's date
-        if (is_null($value)) {
-            $value = new DateTime('today');
-        }
-
-        // Convert DateTime object into string
-        if ($value instanceof DateTime) {
-            $value = $value->format('Y-m-d');
-        }
-
-        parent::__construct($value, null, $datatype);
-    }
-
-    /** Parses a string using DateTime and creates a new literal
-     *
-     * Example:
-     *   $date = EasyRdf_Literal_Date::parse('1 January 2011');
-     *
-     * @see DateTime
-     * @param string $value The date to parse
-     * @return object EasyRdf_Literal_Date
-     */
-    public static function parse($value)
-    {
-        $value = new DateTime($value);
-        return new EasyRdf_Literal_Date($value);
-    }
-
-    /** Returns the date as a PHP DateTime object
-     *
-     * @see DateTime::format
-     * @return string
-     */
-    public function getValue()
-    {
-        return new DateTime($this->value);
-    }
-
-    /** Returns date formatted according to given format
-     *
-     * @see DateTime::format
-     * @param string $format
-     * @return string
-     */
-    public function format($format)
-    {
-        return $this->getValue()->format($format);
-    }
-
-    /** A full integer representation of the year, 4 digits
-     *
-     * @return integer
-     */
-    public function year()
-    {
-        return (int)$this->format('Y');
-    }
-
-    /** Integer representation of the month
-     *
-     * @return integer
-     */
-    public function month()
-    {
-        return (int)$this->format('m');
-    }
-
-    /** Integer representation of the day of the month
-     *
-     * @return integer
-     */
-    public function day()
-    {
-        return (int)$this->format('d');
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/DateTime.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/DateTime.php
deleted file mode 100644
index c1c602d..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/DateTime.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an RDF Literal of datatype xsd:dateTime
- *
- * @package    EasyRdf
- * @link       http://www.w3.org/TR/xmlschema-2/#date
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Literal_DateTime extends EasyRdf_Literal_Date
-{
-    /** Constructor for creating a new date and time literal
-     *
-     * If the value is a DateTime object, then it will be converted to the xsd:dateTime format.
-     * If no value is given or is is null, then the current time is used.
-     *
-     * @see DateTime
-     *
-     * @param  mixed  $value     The value of the literal
-     * @param  string $lang      Should be null (literals with a datatype can't have a language)
-     * @param  string $datatype  Optional datatype (default 'xsd:dateTime')
-     * @return object EasyRdf_Literal_DateTime
-     */
-    public function __construct($value = null, $lang = null, $datatype = null)
-    {
-        // If $value is null, use 'now'
-        if (is_null($value)) {
-            $value = new DateTime('now');
-        }
-
-        // Convert DateTime objects into string
-        if ($value instanceof DateTime) {
-            $atom = $value->format(DateTime::ATOM);
-            $value = preg_replace('/[\+\-]00(\:?)00$/', 'Z', $atom);
-        }
-
-        EasyRdf_Literal::__construct($value, null, $datatype);
-    }
-
-    /** Parses a string using DateTime and creates a new literal
-     *
-     * Example:
-     *   $dt = EasyRdf_Literal_DateTime::parse('Mon 18 Jul 2011 18:45:43 BST');
-     *
-     * @see DateTime
-     * @param string $value The date and time to parse
-     * @return object EasyRdf_Literal_DateTime
-     */
-    public static function parse($value)
-    {
-        $value = new DateTime($value);
-        return new EasyRdf_Literal_DateTime($value);
-    }
-
-    /** 24-hour format of the hour as an integer
-     *
-     * @return integer
-     */
-    public function hour()
-    {
-        return (int)$this->format('H');
-    }
-
-    /** The minutes pasts the hour as an integer
-     *
-     * @return integer
-     */
-    public function min()
-    {
-        return (int)$this->format('i');
-    }
-
-    /** The seconds pasts the minute as an integer
-     *
-     * @return integer
-     */
-    public function sec()
-    {
-        return (int)$this->format('s');
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Decimal.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Decimal.php
deleted file mode 100644
index 51c59c8..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Decimal.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an RDF Literal of datatype xsd:decimal
- *
- * @package    EasyRdf
- * @link       http://www.w3.org/TR/xmlschema-2/#decimal
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Literal_Decimal extends EasyRdf_Literal
-{
-    /**
-     * written according to http://www.w3.org/TR/xmlschema-2/#decimal
-     */
-    const DECIMAL_REGEX = '^([+\-]?)(((\d+)?\.(\d+))|((\d+)\.?))$';
-
-    /** Constructor for creating a new decimal literal
-     *
-     * @param  double|int|string $value    The value of the literal
-     * @param  string            $lang     Should be null (literals with a datatype can't have a language)
-     * @param  string            $datatype Optional datatype (default 'xsd:decimal')
-     *
-     * @throws UnexpectedValueException
-     * @return EasyRdf_Literal_Decimal
-     */
-    public function __construct($value, $lang = null, $datatype = null)
-    {
-        if (is_string($value)) {
-            self::validate($value);
-        } elseif (is_double($value) or is_int($value)) {
-            $locale_data = localeconv();
-            $value = str_replace($locale_data['decimal_point'], '.', strval($value));
-        } else {
-            throw new UnexpectedValueException('EasyRdf_Literal_Decimal expects int/float/string as value');
-        }
-
-        $value = self::canonicalise($value);
-
-        parent::__construct($value, null, $datatype);
-    }
-
-    /** Return the value of the literal cast to a PHP string
-     *
-     * @return string
-     */
-    public function getValue()
-    {
-        return strval($this->value);
-    }
-
-    /**
-     * @param string $value
-     *
-     * @throws UnexpectedValueException
-     */
-    public static function validate($value)
-    {
-        if (!mb_ereg_match(self::DECIMAL_REGEX, $value)) {
-            throw new UnexpectedValueException("'{$value}' doesn't look like a valid decimal");
-        }
-    }
-
-    /**
-     * Converts valid xsd:decimal literal to Canonical representation
-     * see http://www.w3.org/TR/xmlschema-2/#decimal
-     *
-     * @param string $value Valid xsd:decimal literal
-     *
-     * @return string
-     */
-    public static function canonicalise($value)
-    {
-        $pieces = array();
-        mb_ereg(self::DECIMAL_REGEX, $value, $pieces);
-
-        $sign       = $pieces[1] === '-' ? '-' : '';  // '+' is not allowed
-        $integer    = ltrim(($pieces[4] !== false) ? $pieces[4] : $pieces[7], '0');
-        $fractional = rtrim($pieces[5], '0');
-
-        if (empty($integer)) {
-            $integer = '0';
-        }
-
-        if (empty($fractional)) {
-            $fractional = '0';
-        }
-
-        return "{$sign}{$integer}.{$fractional}";
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/HTML.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/HTML.php
deleted file mode 100644
index a4915b7..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/HTML.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an RDF Literal of datatype rdf:HTML
- *
- * @package    EasyRdf
- * @link       http://www.w3.org/TR/rdf11-concepts/#section-html
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Literal_HTML extends EasyRdf_Literal
-{
-    /** Constructor for creating a new rdf:HTML literal
-     *
-     * @param  mixed  $value     The HTML fragment
-     * @param  string $lang      Should be null (literals with a datatype can't have a language)
-     * @param  string $datatype  Optional datatype (default 'rdf:HTML')
-     * @return object EasyRdf_Literal_HTML
-     */
-    public function __construct($value, $lang = null, $datatype = null)
-    {
-        parent::__construct($value, null, $datatype);
-    }
-
-    /** Strip the HTML tags from the literal
-     *
-     * @link   http://php.net/manual/en/function.strip-tags.php
-     * @param  string $allowableTags  Optional allowed tag, not be be removed
-     * @return string The literal as plain text
-     */
-    public function stripTags($allowableTags = null)
-    {
-        return strip_tags($this->value, $allowableTags);
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/HexBinary.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/HexBinary.php
deleted file mode 100644
index 7301a10..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/HexBinary.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an RDF Literal of datatype xsd:hexBinary
- *
- * @package    EasyRdf
- * @link       http://www.w3.org/TR/xmlschema-2/#hexBinary
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Literal_HexBinary extends EasyRdf_Literal
-{
-    /** Constructor for creating a new xsd:hexBinary literal
-     *
-     * @param  mixed  $value     The value of the literal (already encoded as hexadecimal)
-     * @param  string $lang      Should be null (literals with a datatype can't have a language)
-     * @param  string $datatype  Optional datatype (default 'xsd:hexBinary')
-     * @return object EasyRdf_Literal_HexBinary
-     */
-    public function __construct($value, $lang = null, $datatype = null)
-    {
-        // Normalise the canonical representation, as specified here:
-        // http://www.w3.org/TR/xmlschema-2/#hexBinary-canonical-repr
-        $value = strtoupper($value);
-
-        // Validate the data
-        if (preg_match('/[^A-F0-9]/', $value)) {
-            throw new InvalidArgumentException(
-                "Literal of type xsd:hexBinary contains non-hexadecimal characters"
-            );
-        }
-
-        parent::__construct(strtoupper($value), null, 'xsd:hexBinary');
-    }
-
-    /** Constructor for creating a new literal object from a binary blob
-     *
-     * @param  string $binary  The binary data
-     * @return object EasyRdf_Literal_HexBinary
-     */
-    public static function fromBinary($binary)
-    {
-        return new self( bin2hex($binary) );
-    }
-
-    /** Decode the hexadecimal string into a binary blob
-     *
-     * @return string The binary blob
-     */
-    public function toBinary()
-    {
-        return pack("H*", $this->value);
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Integer.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Integer.php
deleted file mode 100644
index 47de413..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/Integer.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an RDF Literal of datatype xsd:integer
- *
- * @package    EasyRdf
- * @link       http://www.w3.org/TR/xmlschema-2/#integer
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Literal_Integer extends EasyRdf_Literal
-{
-    /** Constructor for creating a new integer literal
-     *
-     * @param  mixed  $value     The value of the literal
-     * @param  string $lang      Should be null (literals with a datatype can't have a language)
-     * @param  string $datatype  Optional datatype (default 'xsd:integer')
-     * @return object EasyRdf_Literal_Integer
-     */
-    public function __construct($value, $lang = null, $datatype = null)
-    {
-        parent::__construct($value, null, $datatype);
-    }
-
-    /** Return the value of the literal cast to a PHP int
-     *
-     * @return double
-     */
-    public function getValue()
-    {
-        return (int)$this->value;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/XML.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/XML.php
deleted file mode 100644
index 3f8dd79..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Literal/XML.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an RDF Literal of datatype rdf:XMLLiteral
- *
- * @package    EasyRdf
- * @link       http://www.w3.org/TR/REC-rdf-syntax/#section-Syntax-XML-literals
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Literal_XML extends EasyRdf_Literal
-{
-    /** Constructor for creating a new rdf:XMLLiteral literal
-     *
-     * @param  mixed  $value     The XML fragment
-     * @param  string $lang      Should be null (literals with a datatype can't have a language)
-     * @param  string $datatype  Optional datatype (default 'rdf:XMLLiteral')
-     * @return object EasyRdf_Literal_XML
-     */
-    public function __construct($value, $lang = null, $datatype = null)
-    {
-        parent::__construct($value, null, $datatype);
-    }
-
-    /** Parse the XML literal into a DOMDocument
-     *
-     * @link   http://php.net/manual/en/domdocument.loadxml.php
-     * @return object DOMDocument
-     */
-    public function domParse()
-    {
-        $dom = new DOMDocument();
-        $dom->loadXML($this->value);
-        return $dom;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Namespace.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Namespace.php
deleted file mode 100644
index 8990e82..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Namespace.php
+++ /dev/null
@@ -1,416 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2014 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2014 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * A namespace registry and manipulation class.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2014 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Namespace
-{
-    /** Namespace registry
-     *
-     * List of default namespaces come from:
-     *  - http://www.w3.org/2011/rdfa-context/rdfa-1.1
-     *
-     * With a few extras added.
-     *
-     */
-    private static $initial_namespaces = array(
-        'bibo'    => 'http://purl.org/ontology/bibo/',
-        'cc'      => 'http://creativecommons.org/ns#',
-        'cert'    => 'http://www.w3.org/ns/auth/cert#',
-        'ctag'    => 'http://commontag.org/ns#',
-        'dc'      => 'http://purl.org/dc/terms/',
-        'dc11'    => 'http://purl.org/dc/elements/1.1/',
-        'dcat'    => 'http://www.w3.org/ns/dcat#',
-        'dcterms' => 'http://purl.org/dc/terms/',
-        'doap'    => 'http://usefulinc.com/ns/doap#',
-        'exif'    => 'http://www.w3.org/2003/12/exif/ns#',
-        'foaf'    => 'http://xmlns.com/foaf/0.1/',
-        'geo'     => 'http://www.w3.org/2003/01/geo/wgs84_pos#',
-        'gr'      => 'http://purl.org/goodrelations/v1#',
-        'grddl'   => 'http://www.w3.org/2003/g/data-view#',
-        'ical'    => 'http://www.w3.org/2002/12/cal/icaltzd#',
-        'ma'      => 'http://www.w3.org/ns/ma-ont#',
-        'og'      => 'http://ogp.me/ns#',
-        'org'     => 'http://www.w3.org/ns/org#',
-        'owl'     => 'http://www.w3.org/2002/07/owl#',
-        'prov'    => 'http://www.w3.org/ns/prov#',
-        'qb'      => 'http://purl.org/linked-data/cube#',
-        'rdf'     => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
-        'rdfa'    => 'http://www.w3.org/ns/rdfa#',
-        'rdfs'    => 'http://www.w3.org/2000/01/rdf-schema#',
-        'rev'     => 'http://purl.org/stuff/rev#',
-        'rif'     => 'http://www.w3.org/2007/rif#',
-        'rr'      => 'http://www.w3.org/ns/r2rml#',
-        'rss'     => 'http://purl.org/rss/1.0/',
-        'schema'  => 'http://schema.org/',
-        'sd'      => 'http://www.w3.org/ns/sparql-service-description#',
-        'sioc'    => 'http://rdfs.org/sioc/ns#',
-        'skos'    => 'http://www.w3.org/2004/02/skos/core#',
-        'skosxl'  => 'http://www.w3.org/2008/05/skos-xl#',
-        'synd'    => 'http://purl.org/rss/1.0/modules/syndication/',
-        'v'       => 'http://rdf.data-vocabulary.org/#',
-        'vcard'   => 'http://www.w3.org/2006/vcard/ns#',
-        'void'    => 'http://rdfs.org/ns/void#',
-        'wdr'     => 'http://www.w3.org/2007/05/powder#',
-        'wdrs'    => 'http://www.w3.org/2007/05/powder-s#',
-        'wot'     => 'http://xmlns.com/wot/0.1/',
-        'xhv'     => 'http://www.w3.org/1999/xhtml/vocab#',
-        'xml'     => 'http://www.w3.org/XML/1998/namespace',
-        'xsd'     => 'http://www.w3.org/2001/XMLSchema#',
-    );
-
-    private static $namespaces = null;
-
-    private static $default = null;
-
-    /** Counter for numbering anonymous namespaces */
-    private static $anonymousNamespaceCount = 0;
-
-    /**
-      * Return all the namespaces registered
-      *
-      * @return array Associative array of all the namespaces.
-      */
-    public static function namespaces()
-    {
-        if (self::$namespaces === null) {
-            self::resetNamespaces();
-        }
-
-        return self::$namespaces;
-    }
-
-    /**
-     * Resets list of namespaces to the one, which is provided by EasyRDF
-     * useful for tests, among other things
-     */
-    public static function resetNamespaces()
-    {
-        self::$namespaces = self::$initial_namespaces;
-    }
-
-    /**
-      * Return a namespace given its prefix.
-      *
-      * @param string $prefix The namespace prefix (eg 'foaf')
-      * @return string The namespace URI (eg 'http://xmlns.com/foaf/0.1/')
-      */
-    public static function get($prefix)
-    {
-        if (!is_string($prefix) or $prefix === null) {
-            throw new InvalidArgumentException(
-                "\$prefix should be a string and cannot be null or empty"
-            );
-        }
-
-        if (preg_match('/\W/', $prefix)) {
-            throw new InvalidArgumentException(
-                "\$prefix should only contain alpha-numeric characters"
-            );
-        }
-
-        $prefix = strtolower($prefix);
-        $namespaces = self::namespaces();
-
-        if (array_key_exists($prefix, $namespaces)) {
-            return $namespaces[$prefix];
-        } else {
-            return null;
-        }
-    }
-
-    /**
-      * Register a new namespace.
-      *
-      * @param string $prefix The namespace prefix (eg 'foaf')
-      * @param string $long The namespace URI (eg 'http://xmlns.com/foaf/0.1/')
-      */
-    public static function set($prefix, $long)
-    {
-        if (!is_string($prefix) or $prefix === null) {
-            throw new InvalidArgumentException(
-                "\$prefix should be a string and cannot be null or empty"
-            );
-        }
-
-        if ($prefix !== '') {
-            // prefix        ::= Name minus ":"                   // see: http://www.w3.org/TR/REC-xml-names/#NT-NCName
-            // Name          ::= NameStartChar (NameChar)*        // see: http://www.w3.org/TR/REC-xml/#NT-Name
-            // NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |
-            //                   [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] |
-            //                   [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
-            // NameChar      ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
-
-            $_name_start_char =
-                'A-Z_a-z\xc0-\xD6\xd8-\xf6\xf8-\xff\x{0100}-\x{02ff}\x{0370}-\x{037d}' .
-                '\x{037F}-\x{1FFF}\x{200C}-\x{200D}\x{2070}-\x{218F}\x{2C00}-\x{2FEF}\x{3001}-\x{D7FF}' .
-                '\x{F900}-\x{FDCF}\x{FDF0}-\x{FFFD}\x{10000}-\x{EFFFF}';
-
-            $_name_char =
-                $_name_start_char .
-                '\-.0-9\xb7\x{0300}-\x{036f}\x{203f}-\x{2040}';
-
-            $regex = "#^[{$_name_start_char}]{1}[{$_name_char}]{0,}$#u";
-
-            $match_result = preg_match($regex, $prefix);
-
-            if ($match_result === false) {
-                throw new LogicException('regexp error');
-            }
-
-            if ($match_result === 0) {
-                throw new InvalidArgumentException(
-                    "\$prefix should match RDFXML-QName specification. got: {$prefix}"
-                );
-            }
-        }
-
-        if (!is_string($long) or $long === null or $long === '') {
-            throw new InvalidArgumentException(
-                "\$long should be a string and cannot be null or empty"
-            );
-        }
-
-        $prefix = strtolower($prefix);
-
-        $namespaces = self::namespaces();
-        $namespaces[$prefix] = $long;
-
-        self::$namespaces = $namespaces;
-    }
-
-    /**
-      * Get the default namespace
-      *
-      * Returns the URI of the default namespace or null
-      * if no default namespace is defined.
-      *
-      * @return string The URI of the default namespace
-      */
-    public static function getDefault()
-    {
-        return self::$default;
-    }
-
-    /**
-      * Set the default namespace
-      *
-      * Set the default namespace to either a URI or the prefix of
-      * an already defined namespace.
-      *
-      * Example:
-      *   EasyRdf_Namespace::setDefault('http://schema.org/');
-      *
-      * @param string $namespace The URI or prefix of a namespace (eg 'og')
-      */
-    public static function setDefault($namespace)
-    {
-        if (is_null($namespace) or $namespace === '') {
-            self::$default = null;
-        } elseif (preg_match('/^\w+$/', $namespace)) {
-            $namespaces = self::namespaces();
-
-            if (!isset($namespaces[$namespace])) {
-                throw new InvalidArgumentException(
-                    "Unable to set default namespace to unknown prefix: $namespace"
-                );
-            }
-
-            self::$default = $namespaces[$namespace];
-        } else {
-            self::$default = $namespace;
-        }
-    }
-
-    /**
-      * Delete an existing namespace.
-      *
-      * @param string $prefix The namespace prefix (eg 'foaf')
-      */
-    public static function delete($prefix)
-    {
-        if (!is_string($prefix) or $prefix === null or $prefix === '') {
-            throw new InvalidArgumentException(
-                "\$prefix should be a string and cannot be null or empty"
-            );
-        }
-
-        $prefix = strtolower($prefix);
-        self::namespaces();  // make sure, that self::$namespaces is initialized
-        if (isset(self::$namespaces[$prefix])) {
-            unset(self::$namespaces[$prefix]);
-        }
-    }
-
-    /**
-      * Delete the anonymous namespaces and reset the counter to 0
-      */
-    public static function reset()
-    {
-        while (self::$anonymousNamespaceCount > 0) {
-            self::delete('ns'.(self::$anonymousNamespaceCount-1));
-            self::$anonymousNamespaceCount--;
-        }
-    }
-
-    /**
-      * Try and breakup a URI into a prefix and local part
-      *
-      * If $createNamespace is true, and the URI isn't part of an existing
-      * namespace, then EasyRdf will attempt to create a new namespace and
-      * return the name of the new prefix (for example 'ns0', 'term').
-      *
-      * If it isn't possible to split the URI, then null will be returned.
-      *
-      * @param string  $uri The full URI (eg 'http://xmlns.com/foaf/0.1/name')
-      * @param bool    $createNamespace If true, a new namespace will be created
-      * @return array  The split URI (eg 'foaf', 'name') or null
-      */
-    public static function splitUri($uri, $createNamespace = false)
-    {
-        if ($uri === null or $uri === '') {
-            throw new InvalidArgumentException(
-                "\$uri cannot be null or empty"
-            );
-        }
-
-        if (is_object($uri) and ($uri instanceof EasyRdf_Resource)) {
-            $uri = $uri->getUri();
-        } elseif (!is_string($uri)) {
-            throw new InvalidArgumentException(
-                "\$uri should be a string or EasyRdf_Resource"
-            );
-        }
-
-        foreach (self::namespaces() as $prefix => $long) {
-            if (substr($uri, 0, strlen($long)) !== $long) {
-                continue;
-            }
-
-            $local_part = substr($uri, strlen($long));
-
-            if (strpos($local_part, '/') !== false) {
-                // we can't have '/' in local part
-                continue;
-            }
-
-            return array($prefix, $local_part);
-        }
-
-        if ($createNamespace) {
-            // Try and create a new namespace
-            # FIXME: check the valid characters for an XML element name
-            if (preg_match('/^(.+?)([\w\-]+)$/', $uri, $matches)) {
-                $prefix = "ns".(self::$anonymousNamespaceCount++);
-                self::set($prefix, $matches[1]);
-                return array($prefix, $matches[2]);
-            }
-        }
-
-        return null;
-    }
-
-    /**
-      * Return the prefix namespace that a URI belongs to.
-      *
-      * @param string $uri A full URI (eg 'http://xmlns.com/foaf/0.1/name')
-      * @return string The prefix namespace that it is a part of(eg 'foaf')
-      */
-    public static function prefixOfUri($uri)
-    {
-        if ($parts = self::splitUri($uri)) {
-            return $parts[0];
-        }
-    }
-
-    /**
-      * Shorten a URI by substituting in the namespace prefix.
-      *
-      * If $createNamespace is true, and the URI isn't part of an existing
-      * namespace, then EasyRdf will attempt to create a new namespace and
-      * use that namespace to shorten the URI (for example ns0:term).
-      *
-      * If it isn't possible to shorten the URI, then null will be returned.
-      *
-      * @param string  $uri The full URI (eg 'http://xmlns.com/foaf/0.1/name')
-      * @param bool    $createNamespace If true, a new namespace will be created
-      * @return string The shortened URI (eg 'foaf:name') or null
-      */
-    public static function shorten($uri, $createNamespace = false)
-    {
-        if ($parts = self::splitUri($uri, $createNamespace)) {
-            return implode(':', $parts);
-        }
-    }
-
-    /**
-      * Expand a shortened URI (qname) back into a full URI.
-      *
-      * If it isn't possible to expand the qname, for example if the namespace
-      * isn't registered, then the original string will be returned.
-      *
-      * @param string $shortUri The short URI (eg 'foaf:name')
-      * @return string The full URI (eg 'http://xmlns.com/foaf/0.1/name')
-      */
-    public static function expand($shortUri)
-    {
-        if (!is_string($shortUri) or $shortUri === '') {
-            throw new InvalidArgumentException(
-                "\$shortUri should be a string and cannot be null or empty"
-            );
-        }
-
-        if ($shortUri === 'a') {
-            $namespaces = self::namespaces();
-            return $namespaces['rdf'] . 'type';
-        } elseif (preg_match('/^(\w+?):([\w\-]+)$/', $shortUri, $matches)) {
-            $long = self::get($matches[1]);
-            if ($long) {
-                return $long . $matches[2];
-            }
-        } elseif (preg_match('/^(\w+)$/', $shortUri) and isset(self::$default)) {
-            return self::$default . $shortUri;
-        }
-
-        return $shortUri;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/ParsedUri.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/ParsedUri.php
deleted file mode 100644
index 0b8dd47..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/ParsedUri.php
+++ /dev/null
@@ -1,340 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-
-/**
- * A RFC3986 compliant URI parser
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- * @link       http://www.ietf.org/rfc/rfc3986.txt
- */
-class EasyRdf_ParsedUri
-{
-    // For all URIs:
-    private $scheme = null;
-    private $fragment = null;
-
-    // For hierarchical URIs:
-    private $authority = null;
-    private $path = null;
-    private $query = null;
-
-    const URI_REGEX = "|^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?|";
-
-    /** Constructor for creating a new parsed URI
-     *
-     * The $uri parameter can either be a string or an
-     * associative array with the following keys:
-     * scheme, authority, path, query, fragment
-     *
-     * @param  mixed $uri  The URI as a string or an array
-     * @return object EasyRdf_ParsedUri
-     */
-    public function __construct($uri = null)
-    {
-        if (is_string($uri)) {
-            if (preg_match(self::URI_REGEX, $uri, $matches)) {
-                if (!empty($matches[1])) {
-                    $this->scheme = isset($matches[2]) ? $matches[2] : '';
-                }
-                if (!empty($matches[3])) {
-                    $this->authority = isset($matches[4]) ? $matches[4] : '';
-                }
-                $this->path = isset($matches[5]) ? $matches[5] : '';
-                if (!empty($matches[6])) {
-                    $this->query = isset($matches[7]) ? $matches[7] : '';
-                }
-                if (!empty($matches[8])) {
-                    $this->fragment = isset($matches[9]) ? $matches[9] : '';
-                }
-            }
-        } elseif (is_array($uri)) {
-            $this->scheme = isset($uri['scheme']) ? $uri['scheme'] : null;
-            $this->authority = isset($uri['authority']) ? $uri['authority'] : null;
-            $this->path = isset($uri['path']) ? $uri['path'] : null;
-            $this->query = isset($uri['query']) ? $uri['query'] : null;
-            $this->fragment = isset($uri['fragment']) ? $uri['fragment'] : null;
-        }
-    }
-
-
-    /** Returns true if this is an absolute (complete) URI
-     * @return boolean
-     */
-    public function isAbsolute()
-    {
-        return $this->scheme !== null;
-    }
-
-    /** Returns true if this is an relative (partial) URI
-     * @return boolean
-     */
-    public function isRelative()
-    {
-        return $this->scheme === null;
-    }
-
-    /** Returns the scheme of the URI (e.g. http)
-     * @return string
-     */
-    public function getScheme()
-    {
-        return $this->scheme;
-    }
-
-    /** Sets the scheme of the URI (e.g. http)
-     * @param string $scheme The new value for the scheme of the URI
-     */
-    public function setScheme($scheme)
-    {
-        $this->scheme = $scheme;
-    }
-
-    /** Returns the authority of the URI (e.g. www.example.com:8080)
-     * @return string
-     */
-    public function getAuthority()
-    {
-        return $this->authority;
-    }
-
-    /** Sets the authority of the URI (e.g. www.example.com:8080)
-     * @param string $authority The new value for the authority component of the URI
-     */
-    public function setAuthority($authority)
-    {
-        $this->authority = $authority;
-    }
-
-    /** Returns the path of the URI (e.g. /foo/bar)
-     * @return string
-     */
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    /** Set the path of the URI (e.g. /foo/bar)
-     * @param string $path The new value for the path component of the URI
-     */
-    public function setPath($path)
-    {
-        $this->path = $path;
-    }
-
-    /** Returns the query string part of the URI (e.g. foo=bar)
-     * @return string
-     */
-    public function getQuery()
-    {
-        return $this->query;
-    }
-
-    /** Set the query string of the URI (e.g. foo=bar)
-     * @param string $query The new value for the query string component of the URI
-     */
-    public function setQuery($query)
-    {
-        $this->query = $query;
-    }
-
-    /** Returns the fragment part of the URI (i.e. after the #)
-     * @return string
-     */
-    public function getFragment()
-    {
-        return $this->fragment;
-    }
-
-    /** Set the fragment of the URI (i.e. after the #)
-     * @param string $fragment The new value for the fragment component of the URI
-     */
-    public function setFragment($fragment)
-    {
-        $this->fragment = $fragment;
-    }
-
-
-    /**
-     * Normalises the path of this URI if it has one. Normalising a path means
-     * that any unnecessary '.' and '..' segments are removed. For example, the
-     * URI http://example.com/a/b/../c/./d would be normalised to
-     * http://example.com/a/c/d
-     *
-     * @return object EasyRdf_ParsedUri
-     */
-    public function normalise()
-    {
-        if (empty($this->path)) {
-            return $this;
-        }
-
-        // Remove ./ from the start
-        if (substr($this->path, 0, 2) == './') {
-            // Remove both characters
-            $this->path = substr($this->path, 2);
-        }
-
-        // Remove /. from the end
-        if (substr($this->path, -2) == '/.') {
-            // Remove only the last dot, not the slash!
-            $this->path = substr($this->path, 0, -1);
-        }
-
-        if (substr($this->path, -3) == '/..') {
-            $this->path .= '/';
-        }
-
-        // Split the path into its segments
-        $segments = explode('/', $this->path);
-        $newSegments = array();
-
-        // Remove all unnecessary '.' and '..' segments
-        foreach ($segments as $segment) {
-            if ($segment == '..') {
-                // Remove the previous part of the path
-                $count = count($newSegments);
-                if ($count > 0 && $newSegments[$count-1]) {
-                    array_pop($newSegments);
-                }
-            } elseif ($segment == '.') {
-                // Ignore
-                continue;
-            } else {
-                array_push($newSegments, $segment);
-            }
-        }
-
-        // Construct the new normalised path
-        $this->path = implode($newSegments, '/');
-
-        // Allow easy chaining of methods
-        return $this;
-    }
-
-    /**
-     * Resolves a relative URI using this URI as the base URI.
-     */
-    public function resolve($relUri)
-    {
-        // If it is a string, then convert it to a parsed object
-        if (is_string($relUri)) {
-            $relUri = new EasyRdf_ParsedUri($relUri);
-        }
-
-        // This code is based on the pseudocode in section 5.2.2 of RFC3986
-        $target = new EasyRdf_ParsedUri();
-        if ($relUri->scheme) {
-            $target->scheme = $relUri->scheme;
-            $target->authority = $relUri->authority;
-            $target->path = $relUri->path;
-            $target->query = $relUri->query;
-        } else {
-            if ($relUri->authority) {
-                $target->authority = $relUri->authority;
-                $target->path = $relUri->path;
-                $target->query = $relUri->query;
-            } else {
-                if (empty($relUri->path)) {
-                    $target->path = $this->path;
-                    if ($relUri->query) {
-                        $target->query = $relUri->query;
-                    } else {
-                        $target->query = $this->query;
-                    }
-                } else {
-                    if (substr($relUri->path, 0, 1) == '/') {
-                        $target->path = $relUri->path;
-                    } else {
-                        $path = $this->path;
-                        $lastSlash = strrpos($path, '/');
-                        if ($lastSlash !== false) {
-                            $path = substr($path, 0, $lastSlash + 1);
-                        } else {
-                            $path = '/';
-                        }
-
-                        $target->path .= $path . $relUri->path;
-                    }
-                    $target->query = $relUri->query;
-                }
-                $target->authority = $this->authority;
-            }
-            $target->scheme = $this->scheme;
-        }
-
-        $target->fragment = $relUri->fragment;
-
-        $target->normalise();
-
-        return $target;
-    }
-
-    /** Convert the parsed URI back into a string
-     *
-     * @return string The URI as a string
-     */
-    public function toString()
-    {
-        $str = '';
-        if ($this->scheme !== null) {
-            $str .= $this->scheme . ':';
-        }
-        if ($this->authority !== null) {
-            $str .= '//' . $this->authority;
-        }
-        $str .= $this->path;
-        if ($this->query !== null) {
-            $str .= '?' . $this->query;
-        }
-        if ($this->fragment !== null) {
-            $str .= '#' . $this->fragment;
-        }
-        return $str;
-    }
-
-    /** Magic method to convert the URI, when casted, back to a string
-     *
-     * @return string The URI as a string
-     */
-    public function __toString()
-    {
-        return $this->toString();
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser.php
deleted file mode 100644
index 196388d..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Parent class for the EasyRdf parsers
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser
-{
-    /** Mapping from source to graph bnode identifiers */
-    private $bnodeMap = array();
-
-    /** The current graph to insert triples into */
-    protected $graph = null;
-
-    /** The format of the document currently being parsed */
-    protected $format = null;
-
-    /** The base URI for the document currently being parsed */
-    protected $baseUri = null;
-
-
-    protected $tripleCount = 0;
-
-    /**
-     * Create a new, unique bnode identifier from a source identifier.
-     * If the source identifier has previously been seen, the
-     * same new bnode identifier is returned.
-     * @ignore
-     */
-    protected function remapBnode($name)
-    {
-        if (!isset($this->bnodeMap[$name])) {
-            $this->bnodeMap[$name] = $this->graph->newBNodeId();
-        }
-        return $this->bnodeMap[$name];
-    }
-
-    /**
-     * Delete the bnode mapping - to be called at the start of a new parse
-     * @ignore
-     */
-    protected function resetBnodeMap()
-    {
-        $this->bnodeMap = array();
-    }
-
-    /**
-     * Check, cleanup parameters and prepare for parsing
-     * @ignore
-     */
-    protected function checkParseParams($graph, $data, $format, $baseUri)
-    {
-        if ($graph == null or !is_object($graph) or
-            !($graph instanceof EasyRdf_Graph)) {
-            throw new InvalidArgumentException(
-                "\$graph should be an EasyRdf_Graph object and cannot be null"
-            );
-        } else {
-            $this->graph = $graph;
-        }
-
-        if ($format == null or $format == '') {
-            throw new InvalidArgumentException(
-                "\$format cannot be null or empty"
-            );
-        } elseif (is_object($format) and $format instanceof EasyRdf_Format) {
-            $this->format = $format = $format->getName();
-        } elseif (!is_string($format)) {
-            throw new InvalidArgumentException(
-                "\$format should be a string or an EasyRdf_Format object"
-            );
-        } else {
-            $this->format = $format;
-        }
-
-        if ($baseUri) {
-            if (!is_string($baseUri)) {
-                throw new InvalidArgumentException(
-                    "\$baseUri should be a string"
-                );
-            } else {
-                $this->baseUri = new EasyRdf_ParsedUri($baseUri);
-            }
-        } else {
-            $this->baseUri = null;
-        }
-
-        // Prepare for parsing
-        $this->resetBnodeMap();
-        $this->tripleCount = 0;
-    }
-
-    /**
-     * Sub-classes must follow this protocol
-     * @ignore
-     */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        throw new EasyRdf_Exception(
-            "This method should be overridden by sub-classes."
-        );
-    }
-
-    /**
-     * Add a triple to the current graph, and keep count of the number of triples
-     * @ignore
-     */
-    protected function addTriple($resource, $property, $value)
-    {
-        $count = $this->graph->add($resource, $property, $value);
-        $this->tripleCount += $count;
-        return $count;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Arc.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Arc.php
deleted file mode 100644
index b4e5e1e..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Arc.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to parse RDF using the ARC2 library.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_Arc extends EasyRdf_Parser_RdfPhp
-{
-    private static $supportedTypes = array(
-        'rdfxml' => 'RDFXML',
-        'turtle' => 'Turtle',
-        'ntriples' => 'Turtle',
-        'rdfa' => 'SemHTML',
-    );
-
-    /**
-     * Constructor
-     *
-     * @return object EasyRdf_Parser_Arc
-     */
-    public function __construct()
-    {
-        require_once 'arc/ARC2.php';
-    }
-
-    /**
-      * Parse an RDF document into an EasyRdf_Graph
-      *
-      * @param object EasyRdf_Graph $graph   the graph to load the data into
-      * @param string               $data    the RDF document data
-      * @param string               $format  the format of the input data
-      * @param string               $baseUri the base URI of the data being parsed
-      * @return integer             The number of triples added to the graph
-      */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        parent::checkParseParams($graph, $data, $format, $baseUri);
-
-        if (array_key_exists($format, self::$supportedTypes)) {
-            $className = self::$supportedTypes[$format];
-        } else {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Parser_Arc does not support: $format"
-            );
-        }
-
-        $parser = ARC2::getParser($className);
-        if ($parser) {
-            $parser->parse($baseUri, $data);
-            $rdfphp = $parser->getSimpleIndex(false);
-            return parent::parse($graph, $rdfphp, 'php', $baseUri);
-        } else {
-            throw new EasyRdf_Exception(
-                "ARC2 failed to get a $className parser."
-            );
-        }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Exception.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Exception.php
deleted file mode 100644
index d03b5bd..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Exception.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * EasyRdf Exception class
- *
- * All exceptions thrown by EasyRdf are an instance of this class.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_Exception extends EasyRdf_Exception
-{
-    protected $parserLine;
-    protected $parserColumn;
-    
-    public function __construct($message, $line = null, $column = null)
-    {
-        $this->parserLine = $line;
-        $this->parserColumn = $column;
-
-        if (!is_null($line)) {
-            $message .= " on line $line";
-            if (!is_null($column)) {
-                $message .= ", column $column";
-            }
-        }
-
-        parent::__construct($message);
-    }
-    
-    public function getParserLine()
-    {
-        return $this->parserLine;
-    }
-    
-    public function getParserColumn()
-    {
-        return $this->parserColumn;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Json.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Json.php
deleted file mode 100644
index 924abdc..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Json.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * A pure-php class to parse RDF/JSON with no dependancies.
- *
- * http://n2.talis.com/wiki/RDF_JSON_Specification
- * docs/appendix-a-rdf-formats-json.md
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_Json extends EasyRdf_Parser_RdfPhp
-{
-    private $jsonLastErrorExists = false;
-
-    /**
-     * Constructor
-     *
-     * @return object EasyRdf_Parser_Json
-     */
-    public function __construct()
-    {
-        $this->jsonLastErrorExists = function_exists('json_last_error');
-    }
-
-    /** Return the last JSON parser error as a string
-     *
-     * If json_last_error() is not available a generic message will be returned.
-     *
-     * @ignore
-     */
-    protected function jsonLastErrorString()
-    {
-        if ($this->jsonLastErrorExists) {
-            switch (json_last_error()) {
-                case JSON_ERROR_NONE:
-                    return null;
-                case JSON_ERROR_DEPTH:
-                    return "JSON Parse error: the maximum stack depth has been exceeded";
-                case JSON_ERROR_STATE_MISMATCH:
-                    return "JSON Parse error: invalid or malformed JSON";
-                case JSON_ERROR_CTRL_CHAR:
-                    return "JSON Parse error: control character error, possibly incorrectly encoded";
-                case JSON_ERROR_SYNTAX:
-                    return "JSON Parse syntax error";
-                case JSON_ERROR_UTF8:
-                    return "JSON Parse error: malformed UTF-8 characters, possibly incorrectly encoded";
-                default:
-                    return "JSON Parse error: unknown";
-            }
-        } else {
-            return "JSON Parse error";
-        }
-    }
-
-    /** Parse the triple-centric JSON format, as output by libraptor
-     *
-     * http://librdf.org/raptor/api/serializer-json.html
-     *
-     * @ignore
-     */
-    protected function parseJsonTriples($data, $baseUri)
-    {
-        foreach ($data['triples'] as $triple) {
-            if ($triple['subject']['type'] == 'bnode') {
-                $subject = $this->remapBnode($triple['subject']['value']);
-            } else {
-                $subject = $triple['subject']['value'];
-            }
-
-            $predicate = $triple['predicate']['value'];
-
-            if ($triple['object']['type'] == 'bnode') {
-                $object = array(
-                    'type' => 'bnode',
-                    'value' => $this->remapBnode($triple['object']['value'])
-                );
-            } else {
-                $object = $triple['object'];
-            }
-
-            $this->addTriple($subject, $predicate, $object);
-        }
-
-        return $this->tripleCount;
-    }
-
-    /**
-      * Parse RDF/JSON into an EasyRdf_Graph
-      *
-      * @param object EasyRdf_Graph $graph   the graph to load the data into
-      * @param string               $data    the RDF document data
-      * @param string               $format  the format of the input data
-      * @param string               $baseUri the base URI of the data being parsed
-      * @return integer             The number of triples added to the graph
-      */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        $this->checkParseParams($graph, $data, $format, $baseUri);
-
-        if ($format != 'json') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Parser_Json does not support: $format"
-            );
-        }
-
-        $decoded = @json_decode(strval($data), true);
-        if ($decoded === null) {
-            throw new EasyRdf_Parser_Exception(
-                $this->jsonLastErrorString()
-            );
-        }
-
-        if (array_key_exists('triples', $decoded)) {
-            return $this->parseJsonTriples($decoded, $baseUri);
-        } else {
-            return parent::parse($graph, $decoded, 'php', $baseUri);
-        }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/JsonLd.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/JsonLd.php
deleted file mode 100644
index d0efc12..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/JsonLd.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-if (PHP_MAJOR_VERSION > 5 or (PHP_MAJOR_VERSION == 5 and PHP_MINOR_VERSION >= 3)) {
-    require dirname(__FILE__).'/JsonLdImplementation.php';
-} else {
-    throw new LogicException("JSON-LD support requires PHP 5.3+");
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/JsonLdImplementation.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/JsonLdImplementation.php
deleted file mode 100644
index d2e22c4..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/JsonLdImplementation.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to parse JSON-LD to an EasyRdf_Graph
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2014 Markus Lanthaler
- * @author     Markus Lanthaler <mail@markus-lanthaler.com>
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_JsonLd extends EasyRdf_Parser
-{
-    /**
-      * Parse a JSON-LD document into an EasyRdf_Graph
-      *
-      * Attention: Since JSON-LD supports datasets, a document may contain
-      * multiple graphs and not just one. This parser returns only the
-      * default graph. An alternative would be to merge all graphs.
-      *
-      * @param object EasyRdf_Graph $graph   the graph to load the data into
-      * @param string               $data    the RDF document data
-      * @param string               $format  the format of the input data
-      * @param string               $baseUri the base URI of the data being parsed
-      * @return integer             The number of triples added to the graph
-      */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        parent::checkParseParams($graph, $data, $format, $baseUri);
-
-        if ($format != 'jsonld') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Parser_JsonLd does not support $format"
-            );
-        }
-
-        try {
-            $quads = \ML\JsonLD\JsonLD::toRdf($data, array('base' => $baseUri));
-        } catch (\ML\JsonLD\Exception\JsonLdException $e) {
-            throw new EasyRdf_Parser_Exception($e->getMessage());
-        }
-
-        foreach ($quads as $quad) {
-            // Ignore named graphs
-            if (null !== $quad->getGraph()) {
-                continue;
-            }
-
-            $subject = (string) $quad->getSubject();
-            if ('_:' === substr($subject, 0, 2)) {
-                $subject = $this->remapBnode($subject);
-            }
-
-            $predicate = (string) $quad->getProperty();
-
-            if ($quad->getObject() instanceof \ML\IRI\IRI) {
-                $object = array(
-                    'type' => 'uri',
-                    'value' => (string) $quad->getObject()
-                );
-
-                if ('_:' === substr($object['value'], 0, 2)) {
-                    $object = array(
-                        'type' => 'bnode',
-                        'value' => $this->remapBnode($object['value'])
-                    );
-                }
-            } else {
-                $object = array(
-                    'type' => 'literal',
-                    'value' => $quad->getObject()->getValue()
-                );
-
-                if ($quad->getObject() instanceof \ML\JsonLD\LanguageTaggedString) {
-                    $object['lang'] = $quad->getObject()->getLanguage();
-                } else {
-                    $object['datatype'] = $quad->getObject()->getType();
-                }
-            }
-
-            $this->addTriple($subject, $predicate, $object);
-        }
-
-        return $this->tripleCount;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Ntriples.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Ntriples.php
deleted file mode 100644
index 01ebf9d..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Ntriples.php
+++ /dev/null
@@ -1,211 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * A pure-php class to parse N-Triples with no dependancies.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_Ntriples extends EasyRdf_Parser
-{
-    /**
-     * Decodes an encoded N-Triples string. Any \-escape sequences are substituted
-     * with their decoded value.
-     *
-     * @param  string $str An encoded N-Triples string.
-     * @return The unencoded string.
-     **/
-    protected function unescapeString($str)
-    {
-        if (strpos($str, '\\') === false) {
-            return $str;
-        }
-
-        $mappings = array(
-            't' => chr(0x09),
-            'b' => chr(0x08),
-            'n' => chr(0x0A),
-            'r' => chr(0x0D),
-            'f' => chr(0x0C),
-            '\"' => chr(0x22),
-            '\'' => chr(0x27)
-        );
-        foreach ($mappings as $in => $out) {
-            $str = preg_replace('/\x5c([' . $in . '])/', $out, $str);
-        }
-
-        if (stripos($str, '\u') === false) {
-            return $str;
-        }
-
-        while (preg_match('/\\\(U)([0-9A-F]{8})/', $str, $matches) ||
-               preg_match('/\\\(u)([0-9A-F]{4})/', $str, $matches)) {
-            $no = hexdec($matches[2]);
-            if ($no < 128) {                // 0x80
-                $char = chr($no);
-            } elseif ($no < 2048) {         // 0x800
-                $char = chr(($no >> 6) + 192) .
-                        chr(($no & 63) + 128);
-            } elseif ($no < 65536) {        // 0x10000
-                $char = chr(($no >> 12) + 224) .
-                        chr((($no >> 6) & 63) + 128) .
-                        chr(($no & 63) + 128);
-            } elseif ($no < 2097152) {      // 0x200000
-                $char = chr(($no >> 18) + 240) .
-                        chr((($no >> 12) & 63) + 128) .
-                        chr((($no >> 6) & 63) + 128) .
-                        chr(($no & 63) + 128);
-            } else {
-                # FIXME: throw an exception instead?
-                $char = '';
-            }
-            $str = str_replace('\\' . $matches[1] . $matches[2], $char, $str);
-        }
-        return $str;
-    }
-
-    /**
-     * @ignore
-     */
-    protected function parseNtriplesSubject($sub, $lineNum)
-    {
-        if (preg_match('/<([^<>]+)>/', $sub, $matches)) {
-            return $this->unescapeString($matches[1]);
-        } elseif (preg_match('/_:([A-Za-z0-9]*)/', $sub, $matches)) {
-            if (empty($matches[1])) {
-                return $this->graph->newBNodeId();
-            } else {
-                $nodeid = $this->unescapeString($matches[1]);
-                return $this->remapBnode($nodeid);
-            }
-        } else {
-            throw new EasyRdf_Parser_Exception(
-                "Failed to parse subject: $sub",
-                $lineNum
-            );
-        }
-    }
-
-    /**
-     * @ignore
-     */
-    protected function parseNtriplesObject($obj, $lineNum)
-    {
-        if (preg_match('/"(.+)"\^\^<([^<>]+)>/', $obj, $matches)) {
-            return array(
-                'type' => 'literal',
-                'value' => $this->unescapeString($matches[1]),
-                'datatype' => $this->unescapeString($matches[2])
-            );
-        } elseif (preg_match('/"(.+)"@([\w\-]+)/', $obj, $matches)) {
-            return array(
-                'type' => 'literal',
-                'value' => $this->unescapeString($matches[1]),
-                'lang' => $this->unescapeString($matches[2])
-            );
-        } elseif (preg_match('/"(.*)"/', $obj, $matches)) {
-            return array('type' => 'literal', 'value' => $this->unescapeString($matches[1]));
-        } elseif (preg_match('/<([^<>]+)>/', $obj, $matches)) {
-            return array('type' => 'uri', 'value' => $matches[1]);
-        } elseif (preg_match('/_:([A-Za-z0-9]*)/', $obj, $matches)) {
-            if (empty($matches[1])) {
-                return array(
-                    'type' => 'bnode',
-                    'value' => $this->graph->newBNodeId()
-                );
-            } else {
-                $nodeid = $this->unescapeString($matches[1]);
-                return array(
-                    'type' => 'bnode',
-                    'value' => $this->remapBnode($nodeid)
-                );
-            }
-        } else {
-            throw new EasyRdf_Parser_Exception(
-                "Failed to parse object: $obj",
-                $lineNum
-            );
-        }
-    }
-
-    /**
-      * Parse an N-Triples document into an EasyRdf_Graph
-      *
-      * @param object EasyRdf_Graph $graph   the graph to load the data into
-      * @param string               $data    the RDF document data
-      * @param string               $format  the format of the input data
-      * @param string               $baseUri the base URI of the data being parsed
-      * @return integer             The number of triples added to the graph
-      */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        parent::checkParseParams($graph, $data, $format, $baseUri);
-
-        if ($format != 'ntriples') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Parser_Ntriples does not support: $format"
-            );
-        }
-
-        $lines = preg_split('/\x0D?\x0A/', strval($data));
-        foreach ($lines as $index => $line) {
-            $lineNum = $index + 1;
-            if (preg_match('/^\s*#/', $line)) {
-                # Comment
-                continue;
-            } elseif (preg_match('/^\s*(.+?)\s+<([^<>]+?)>\s+(.+?)\s*\.\s*$/', $line, $matches)) {
-                $this->addTriple(
-                    $this->parseNtriplesSubject($matches[1], $lineNum),
-                    $this->unescapeString($matches[2]),
-                    $this->parseNtriplesObject($matches[3], $lineNum)
-                );
-            } elseif (preg_match('/^\s*$/', $line)) {
-                # Blank line
-                continue;
-            } else {
-                throw new EasyRdf_Parser_Exception(
-                    "Failed to parse statement",
-                    $lineNum
-                );
-            }
-        }
-
-        return $this->tripleCount;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Rapper.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Rapper.php
deleted file mode 100644
index ed12198..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Rapper.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to parse RDF using the 'rapper' command line tool.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_Rapper extends EasyRdf_Parser_Json
-{
-    private $rapperCmd = null;
-
-    const MINIMUM_RAPPER_VERSION = '1.4.17';
-
-    /**
-     * Constructor
-     *
-     * @param string $rapperCmd Optional path to the rapper command to use.
-     * @return object EasyRdf_Parser_Rapper
-     */
-    public function __construct($rapperCmd = 'rapper')
-    {
-        $result = exec("$rapperCmd --version 2>/dev/null", $output, $status);
-        if ($status != 0) {
-            throw new EasyRdf_Exception(
-                "Failed to execute the command '$rapperCmd': $result"
-            );
-        } elseif (version_compare($result, self::MINIMUM_RAPPER_VERSION) < 0) {
-            throw new EasyRdf_Exception(
-                "Version ".self::MINIMUM_RAPPER_VERSION." or higher of rapper is required."
-            );
-        } else {
-            $this->rapperCmd = $rapperCmd;
-        }
-    }
-
-    /**
-      * Parse an RDF document into an EasyRdf_Graph
-      *
-      * @param object EasyRdf_Graph $graph   the graph to load the data into
-      * @param string               $data    the RDF document data
-      * @param string               $format  the format of the input data
-      * @param string               $baseUri the base URI of the data being parsed
-      * @return integer             The number of triples added to the graph
-      */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        parent::checkParseParams($graph, $data, $format, $baseUri);
-
-        $json = EasyRdf_Utils::execCommandPipe(
-            $this->rapperCmd,
-            array(
-                '--quiet',
-                '--input', $format,
-                '--output', 'json',
-                '--ignore-errors',
-                '--input-uri', $baseUri,
-                '--output-uri', '-', '-'
-            ),
-            $data
-        );
-
-        // Parse in the JSON
-        return parent::parse($graph, $json, 'json', $baseUri);
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/RdfPhp.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/RdfPhp.php
deleted file mode 100644
index cd0ec82..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/RdfPhp.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to parse RDF with no external dependancies.
- *
- * http://n2.talis.com/wiki/RDF_PHP_Specification
- * docs/appendix-a-rdf-formats-php.md
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_RdfPhp extends EasyRdf_Parser
-{
-    /**
-     * Constructor
-     *
-     * @return object EasyRdf_Parser_RdfPhp
-     */
-    public function __construct()
-    {
-    }
-
-    /**
-      * Parse RDF/PHP into an EasyRdf_Graph
-      *
-      * @param object EasyRdf_Graph $graph   the graph to load the data into
-      * @param string               $data    the RDF document data
-      * @param string               $format  the format of the input data
-      * @param string               $baseUri the base URI of the data being parsed
-      * @return integer             The number of triples added to the graph
-      */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        $this->checkParseParams($graph, $data, $format, $baseUri);
-
-        if ($format != 'php') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Parser_RdfPhp does not support: $format"
-            );
-        }
-
-        foreach ($data as $subject => $properties) {
-            if (substr($subject, 0, 2) === '_:') {
-                $subject = $this->remapBnode($subject);
-            } elseif (preg_match('/^\w+$/', $subject)) {
-                # Cope with invalid RDF/JSON serialisations that
-                # put the node name in, without the _: prefix
-                # (such as net.fortytwo.sesametools.rdfjson)
-                $subject = $this->remapBnode($subject);
-            }
-
-            foreach ($properties as $property => $objects) {
-                foreach ($objects as $object) {
-                    if ($object['type'] === 'bnode') {
-                        $object['value'] = $this->remapBnode($object['value']);
-                    }
-                    $this->addTriple($subject, $property, $object);
-                }
-            }
-        }
-
-        return $this->tripleCount;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/RdfXml.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/RdfXml.php
deleted file mode 100644
index bfbbd30..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/RdfXml.php
+++ /dev/null
@@ -1,812 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2010-2013 Nicholas J Humfrey
- * Copyright (c) 2004-2010 Benjamin Nowack (based on ARC2_RDFXMLParser.php)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2010-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-
-/**
- * A pure-php class to parse RDF/XML.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- *             Copyright (c) 2004-2010 Benjamin Nowack (based on ARC2_RDFXMLParser.php)
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_RdfXml extends EasyRdf_Parser
-{
-    private $state;
-    private $xLang;
-    private $xBase;
-    private $xml;
-    private $rdf;
-    private $nsp;
-    private $sStack;
-    private $sCount;
-
-    /**
-     * Constructor
-     *
-     * @return object EasyRdf_Parser_RdfXml
-     */
-    public function __construct()
-    {
-    }
-
-    /** @ignore */
-    protected function init($graph, $base)
-    {
-        $this->graph = $graph;
-        $this->state = 0;
-        $this->xLang = null;
-        $this->xBase = new EasyRdf_ParsedUri($base);
-        $this->xml = 'http://www.w3.org/XML/1998/namespace';
-        $this->rdf = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
-        $this->nsp = array($this->xml => 'xml', $this->rdf => 'rdf');
-        $this->sStack = array();
-        $this->sCount = 0;
-    }
-
-    /** @ignore */
-    protected function initXMLParser()
-    {
-        if (!isset($this->xmlParser)) {
-            $parser = xml_parser_create_ns('UTF-8', '');
-            xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 0);
-            xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
-            xml_set_element_handler($parser, 'startElementHandler', 'endElementHandler');
-            xml_set_character_data_handler($parser, 'cdataHandler');
-            xml_set_start_namespace_decl_handler($parser, 'newNamespaceHandler');
-            xml_set_object($parser, $this);
-            $this->xmlParser = $parser;
-        }
-    }
-
-    /** @ignore */
-    protected function pushS(&$s)
-    {
-        $s['pos'] = $this->sCount;
-        $this->sStack[$this->sCount] = $s;
-        $this->sCount++;
-    }
-
-    /** @ignore */
-    protected function popS()
-    {
-        $r = array();
-        $this->sCount--;
-        for ($i = 0, $iMax = $this->sCount; $i < $iMax; $i++) {
-            $r[$i] = $this->sStack[$i];
-        }
-        $this->sStack = $r;
-    }
-
-    /** @ignore */
-    protected function updateS($s)
-    {
-        $this->sStack[$s['pos']] = $s;
-    }
-
-    /** @ignore */
-    protected function getParentS()
-    {
-        if ($this->sCount && isset($this->sStack[$this->sCount - 1])) {
-            return $this->sStack[$this->sCount - 1];
-        } else {
-            return false;
-        }
-    }
-
-    /** @ignore */
-    protected function getParentXBase()
-    {
-        if ($p = $this->getParentS()) {
-            if (isset($p['p_x_base']) && $p['p_x_base']) {
-                return $p['p_x_base'];
-            } elseif (isset($p['x_base'])) {
-                return $p['x_base'];
-            } else {
-                return '';
-            }
-        } else {
-            return $this->xBase;
-        }
-    }
-
-    /** @ignore */
-    protected function getParentXLang()
-    {
-        if ($p = $this->getParentS()) {
-            if (isset($p['p_x_lang']) && $p['p_x_lang']) {
-                return $p['p_x_lang'];
-            } elseif (isset($p['x_lang'])) {
-                return $p['x_lang'];
-            } else {
-                return null;
-            }
-        } else {
-            return $this->xLang;
-        }
-    }
-
-    /** @ignore */
-    protected function splitURI($v)
-    {
-        /* auto-splitting on / or # */
-        if (preg_match('/^(.*[\/\#])([^\/\#]+)$/', $v, $m)) {
-            return array($m[1], $m[2]);
-        }
-        /* auto-splitting on last special char, e.g. urn:foo:bar */
-        if (preg_match('/^(.*[\:\/])([^\:\/]+)$/', $v, $m)) {
-            return array($m[1], $m[2]);
-        }
-        return array($v, '');
-    }
-
-    /** @ignore */
-    protected function add($s, $p, $o, $sType, $oType, $oDatatype = null, $oLang = null)
-    {
-        $this->addTriple(
-            $s,
-            $p,
-            array(
-                'type' => $oType,
-                'value' => $o,
-                'lang' => $oLang,
-                'datatype' => $oDatatype
-            )
-        );
-    }
-
-    /** @ignore */
-    protected function reify($t, $s, $p, $o, $sType, $oType, $oDatatype = null, $oLang = null)
-    {
-        $this->add($t, $this->rdf.'type', $this->rdf.'Statement', 'uri', 'uri');
-        $this->add($t, $this->rdf.'subject', $s, 'uri', $sType);
-        $this->add($t, $this->rdf.'predicate', $p, 'uri', 'uri');
-        $this->add($t, $this->rdf.'object', $o, 'uri', $oType, $oDatatype, $oLang);
-    }
-
-    /** @ignore */
-    protected function startElementHandler($p, $t, $a)
-    {
-        switch($this->state) {
-            case 0:
-                return $this->startState0($t, $a);
-            case 1:
-                return $this->startState1($t, $a);
-            case 2:
-                return $this->startState2($t, $a);
-            case 4:
-                return $this->startState4($t, $a);
-            case 5:
-                return $this->startState5($t, $a);
-            case 6:
-                return $this->startState6($t, $a);
-            default:
-                throw new EasyRdf_Parser_Exception(
-                    'startElementHandler() called at state ' . $this->state . ' in '.$t
-                );
-        }
-    }
-
-    /** @ignore */
-    protected function endElementHandler($p, $t)
-    {
-        switch($this->state){
-            case 1:
-                return $this->endState1($t);
-            case 2:
-                return $this->endState2($t);
-            case 3:
-                return $this->endState3($t);
-            case 4:
-                return $this->endState4($t);
-            case 5:
-                return $this->endState5($t);
-            case 6:
-                return $this->endState6($t);
-            default:
-                throw new EasyRdf_Parser_Exception(
-                    'endElementHandler() called at state ' . $this->state . ' in '.$t
-                );
-        }
-    }
-
-    /** @ignore */
-    protected function cdataHandler($p, $d)
-    {
-        switch($this->state){
-            case 4:
-                return $this->cdataState4($d);
-            case 6:
-                return $this->cdataState6($d);
-            default:
-                return false;
-        }
-    }
-
-    /** @ignore */
-    protected function newNamespaceHandler($p, $prf, $uri)
-    {
-        $this->nsp[$uri] = isset($this->nsp[$uri]) ? $this->nsp[$uri] : $prf;
-    }
-
-    /** @ignore */
-    protected function startState0($t, $a)
-    {
-        $this->state = 1;
-        if ($t !== $this->rdf.'RDF') {
-            $this->startState1($t, $a);
-        } else {
-            if (isset($a[$this->xml.'base'])) {
-                $this->xBase = $this->xBase->resolve($a[$this->xml.'base']);
-            }
-        }
-    }
-
-    /** @ignore */
-    protected function startState1($t, $a)
-    {
-        $s = array(
-            'x_base' => $this->getParentXBase(),
-            'x_lang' => $this->getParentXLang(),
-            'li_count' => 0,
-        );
-
-        if (isset($a[$this->xml.'base'])) {
-            $s['x_base'] = $this->xBase->resolve($a[$this->xml.'base']);
-        }
-
-        if (isset($a[$this->xml.'lang'])) {
-            $s['x_lang'] = $a[$this->xml.'lang'];
-        }
-
-        /* ID */
-        if (isset($a[$this->rdf.'ID'])) {
-            $s['type'] = 'uri';
-            $s['value'] = $s['x_base']->resolve('#'.$a[$this->rdf.'ID']);
-            /* about */
-        } elseif (isset($a[$this->rdf.'about'])) {
-            $s['type'] = 'uri';
-            $s['value'] = $s['x_base']->resolve($a[$this->rdf.'about']);
-            /* bnode */
-        } else {
-            $s['type'] = 'bnode';
-            if (isset($a[$this->rdf.'nodeID'])) {
-                $s['value'] = $this->remapBnode($a[$this->rdf.'nodeID']);
-            } else {
-                $s['value'] = $this->graph->newBNodeId();
-            }
-        }
-
-        /* sub-node */
-        if ($this->state === 4) {
-            $supS = $this->getParentS();
-            /* new collection */
-            if (isset($supS['o_is_coll']) && $supS['o_is_coll']) {
-                $coll = array(
-                    'type' => 'bnode',
-                    'value' => $this->graph->newBNodeId(),
-                    'is_coll' => true,
-                    'x_base' => $s['x_base'],
-                    'x_lang' => $s['x_lang']
-                );
-                $this->add($supS['value'], $supS['p'], $coll['value'], $supS['type'], $coll['type']);
-                $this->add($coll['value'], $this->rdf.'first', $s['value'], $coll['type'], $s['type']);
-                $this->pushS($coll);
-
-            } elseif (isset($supS['is_coll']) && $supS['is_coll']) {
-                /* new entry in existing coll */
-                $coll = array(
-                'type' => 'bnode',
-                'value' => $this->graph->newBNodeId(),
-                'is_coll' => true,
-                'x_base' => $s['x_base'],
-                'x_lang' => $s['x_lang']
-                );
-                $this->add($supS['value'], $this->rdf.'rest', $coll['value'], $supS['type'], $coll['type']);
-                $this->add($coll['value'], $this->rdf.'first', $s['value'], $coll['type'], $s['type']);
-                $this->pushS($coll);
-                /* normal sub-node */
-            } elseif (isset($supS['p']) && $supS['p']) {
-                $this->add($supS['value'], $supS['p'], $s['value'], $supS['type'], $s['type']);
-            }
-        }
-        /* typed node */
-        if ($t !== $this->rdf.'Description') {
-            $this->add($s['value'], $this->rdf.'type', $t, $s['type'], 'uri');
-        }
-        /* (additional) typing attr */
-        if (isset($a[$this->rdf.'type'])) {
-            $this->add($s['value'], $this->rdf.'type', $a[$this->rdf.'type'], $s['type'], 'uri');
-        }
-
-        /* Seq|Bag|Alt */
-        // if (in_array($t, array($this->rdf.'Seq', $this->rdf.'Bag', $this->rdf.'Alt'))) {
-        //     # FIXME: what is this?
-        //     $s['is_con'] = true;
-        // }
-
-        /* any other attrs (skip rdf and xml, except rdf:_, rdf:value, rdf:Seq) */
-        foreach ($a as $k => $v) {
-            if (((strpos($k, $this->xml) === false) && (strpos($k, $this->rdf) === false)) ||
-                preg_match('/(\_[0-9]+|value|Seq|Bag|Alt|Statement|Property|List)$/', $k)) {
-                if (strpos($k, ':')) {
-                    $this->add($s['value'], $k, $v, $s['type'], 'literal', null, $s['x_lang']);
-                }
-            }
-        }
-        $this->pushS($s);
-        $this->state = 2;
-    }
-
-    /** @ignore */
-    protected function startState2($t, $a)
-    {
-        $s = $this->getParentS();
-        foreach (array('p_x_base', 'p_x_lang', 'p_id', 'o_is_coll') as $k) {
-            unset($s[$k]);
-        }
-        /* base */
-        if (isset($a[$this->xml.'base'])) {
-            $s['p_x_base'] = $s['x_base']->resolve($a[$this->xml.'base']);
-        }
-        $b = isset($s['p_x_base']) && $s['p_x_base'] ? $s['p_x_base'] : $s['x_base'];
-        /* lang */
-        if (isset($a[$this->xml.'lang'])) {
-            $s['p_x_lang'] = $a[$this->xml.'lang'];
-        }
-        $l = isset($s['p_x_lang']) && $s['p_x_lang'] ? $s['p_x_lang'] : $s['x_lang'];
-        /* adjust li */
-        if ($t === $this->rdf.'li') {
-            $s['li_count']++;
-            $t = $this->rdf.'_'.$s['li_count'];
-        }
-        /* set p */
-        $s['p'] = $t;
-        /* reification */
-        if (isset($a[$this->rdf.'ID'])) {
-            $s['p_id'] = $a[$this->rdf.'ID'];
-        }
-        $o = array('value' => null, 'type' => null, 'x_base' => $b, 'x_lang' => $l);
-        /* resource/rdf:resource */
-        if (isset($a['resource'])) {
-            $a[$this->rdf.'resource'] = $a['resource'];
-            unset($a['resource']);
-        }
-        if (isset($a[$this->rdf.'resource'])) {
-            $o['type'] = 'uri';
-            $o['value'] = $b->resolve($a[$this->rdf.'resource']);
-            $this->add($s['value'], $s['p'], $o['value'], $s['type'], $o['type']);
-            /* type */
-            if (isset($a[$this->rdf.'type'])) {
-                $this->add(
-                    $o['value'],
-                    $this->rdf.'type',
-                    $a[$this->rdf.'type'],
-                    'uri',
-                    'uri'
-                );
-            }
-            /* reification */
-            if (isset($s['p_id'])) {
-                $this->reify(
-                    $b->resolve('#'.$s['p_id']),
-                    $s['value'],
-                    $s['p'],
-                    $o['value'],
-                    $s['type'],
-                    $o['type']
-                );
-                unset($s['p_id']);
-            }
-            $this->state = 3;
-        } elseif (isset($a[$this->rdf.'nodeID'])) {
-            /* named bnode */
-            $o['value'] = $this->remapBnode($a[$this->rdf.'nodeID']);
-            $o['type'] = 'bnode';
-            $this->add($s['value'], $s['p'], $o['value'], $s['type'], $o['type']);
-            $this->state = 3;
-            /* reification */
-            if (isset($s['p_id'])) {
-                $this->reify(
-                    $b->resolve('#'.$s['p_id']),
-                    $s['value'],
-                    $s['p'],
-                    $o['value'],
-                    $s['type'],
-                    $o['type']
-                );
-            }
-            /* parseType */
-        } elseif (isset($a[$this->rdf.'parseType'])) {
-            if ($a[$this->rdf.'parseType'] === 'Literal') {
-                $s['o_xml_level'] = 0;
-                $s['o_xml_data'] = '';
-                $s['p_xml_literal_level'] = 0;
-                $s['ns'] = array();
-                $this->state = 6;
-            } elseif ($a[$this->rdf.'parseType'] === 'Resource') {
-                $o['value'] = $this->graph->newBNodeId();
-                $o['type'] = 'bnode';
-                $o['hasClosingTag'] = 0;
-                $this->add($s['value'], $s['p'], $o['value'], $s['type'], $o['type']);
-                $this->pushS($o);
-                /* reification */
-                if (isset($s['p_id'])) {
-                    $this->reify(
-                        $b->resolve('#'.$s['p_id']),
-                        $s['value'],
-                        $s['p'],
-                        $o['value'],
-                        $s['type'],
-                        $o['type']
-                    );
-                    unset($s['p_id']);
-                }
-                $this->state = 2;
-            } elseif ($a[$this->rdf.'parseType'] === 'Collection') {
-                $s['o_is_coll'] = true;
-                $this->state = 4;
-            }
-        } else {
-            /* sub-node or literal */
-            $s['o_cdata'] = '';
-            if (isset($a[$this->rdf.'datatype'])) {
-                $s['o_datatype'] = $a[$this->rdf.'datatype'];
-            }
-            $this->state = 4;
-        }
-        /* any other attrs (skip rdf and xml) */
-        foreach ($a as $k => $v) {
-            if (((strpos($k, $this->xml) === false) &&
-             (strpos($k, $this->rdf) === false)) ||
-             preg_match('/(\_[0-9]+|value)$/', $k)) {
-                if (strpos($k, ':')) {
-                    if (!$o['value']) {
-                        $o['value'] = $this->graph->newBNodeId();
-                        $o['type'] = 'bnode';
-                        $this->add($s['value'], $s['p'], $o['value'], $s['type'], $o['type']);
-                    }
-                    /* reification */
-                    if (isset($s['p_id'])) {
-                        $this->reify(
-                            $b->resolve('#'.$s['p_id']),
-                            $s['value'],
-                            $s['p'],
-                            $o['value'],
-                            $s['type'],
-                            $o['type']
-                        );
-                        unset($s['p_id']);
-                    }
-                    $this->add($o['value'], $k, $v, $o['type'], 'literal');
-                    $this->state = 3;
-                }
-            }
-        }
-        $this->updateS($s);
-    }
-
-    /** @ignore */
-    protected function startState4($t, $a)
-    {
-        return $this->startState1($t, $a);
-    }
-
-    /** @ignore */
-    protected function startState5($t, $a)
-    {
-        $this->state = 4;
-        return $this->startState4($t, $a);
-    }
-
-    /** @ignore */
-    protected function startState6($t, $a)
-    {
-        $s = $this->getParentS();
-        $data = isset($s['o_xml_data']) ? $s['o_xml_data'] : '';
-        $ns = isset($s['ns']) ? $s['ns'] : array();
-        $parts = $this->splitURI($t);
-        if (count($parts) === 1) {
-            $data .= '<'.$t;
-        } else {
-            $nsUri = $parts[0];
-            $name = $parts[1];
-            if (!isset($this->nsp[$nsUri])) {
-                foreach ($this->nsp as $tmp1 => $tmp2) {
-                    if (strpos($t, $tmp1) === 0) {
-                        $nsUri = $tmp1;
-                        $name = substr($t, strlen($tmp1));
-                        break;
-                    }
-                }
-            }
-
-            $nsp = isset($this->nsp[$nsUri]) ? $this->nsp[$nsUri] : '';
-            $data .= $nsp ? '<' . $nsp . ':' . $name : '<' . $name;
-            /* ns */
-            if (!isset($ns[$nsp.'='.$nsUri]) || !$ns[$nsp.'='.$nsUri]) {
-                $data .= $nsp ? ' xmlns:'.$nsp.'="'.$nsUri.'"' : ' xmlns="'.$nsUri.'"';
-                $ns[$nsp.'='.$nsUri] = true;
-                $s['ns'] = $ns;
-            }
-        }
-        foreach ($a as $k => $v) {
-            $parts = $this->splitURI($k);
-            if (count($parts) === 1) {
-                $data .= ' '.$k.'="'.$v.'"';
-            } else {
-                $nsUri = $parts[0];
-                $name = $parts[1];
-                $nsp = isset($this->nsp[$nsUri]) ? $this->nsp[$nsUri] : '';
-                $data .= $nsp ? ' '.$nsp.':'.$name.'="'.$v.'"' : ' '.$name.'="'.$v.'"' ;
-            }
-        }
-        $data .= '>';
-        $s['o_xml_data'] = $data;
-        $s['o_xml_level'] = isset($s['o_xml_level']) ? $s['o_xml_level'] + 1 : 1;
-        if ($t == $s['p']) {/* xml container prop */
-            $s['p_xml_literal_level'] = isset($s['p_xml_literal_level']) ? $s['p_xml_literal_level'] + 1 : 1;
-        }
-        $this->updateS($s);
-    }
-
-    /** @ignore */
-    protected function endState1($t)
-    {
-        /* end of doc */
-        $this->state = 0;
-    }
-
-    /** @ignore */
-    protected function endState2($t)
-    {
-        /* expecting a prop, getting a close */
-        if ($s = $this->getParentS()) {
-            $hasClosingTag = (isset($s['hasClosingTag']) && !$s['hasClosingTag']) ? 0 : 1;
-            $this->popS();
-            $this->state = 5;
-            if ($s = $this->getParentS()) {
-                /* new s */
-                if (!isset($s['p']) || !$s['p']) {
-                    /* p close after collection|parseType=Resource|node close after p close */
-                    $this->state = $this->sCount ? 4 : 1;
-                    if (!$hasClosingTag) {
-                        $this->state = 2;
-                    }
-                } elseif (!$hasClosingTag) {
-                    $this->state = 2;
-                }
-            }
-        }
-    }
-
-    /** @ignore */
-    protected function endState3($t)
-    {
-        /* p close */
-        $this->state = 2;
-    }
-
-    /** @ignore */
-    protected function endState4($t)
-    {
-        /* empty p | pClose after cdata | pClose after collection */
-        if ($s = $this->getParentS()) {
-            $b = isset($s['p_x_base']) && $s['p_x_base'] ?
-                $s['p_x_base'] : (isset($s['x_base']) ? $s['x_base'] : '');
-            if (isset($s['is_coll']) && $s['is_coll']) {
-                $this->add($s['value'], $this->rdf.'rest', $this->rdf.'nil', $s['type'], 'uri');
-                /* back to collection start */
-                while ((!isset($s['p']) || ($s['p'] != $t))) {
-                    $subS = $s;
-                    $this->popS();
-                    $s = $this->getParentS();
-                }
-                /* reification */
-                if (isset($s['p_id']) && $s['p_id']) {
-                    $this->reify(
-                        $b->resolve('#'.$s['p_id']),
-                        $s['value'],
-                        $s['p'],
-                        $subS['value'],
-                        $s['type'],
-                        $subS['type']
-                    );
-                }
-                unset($s['p']);
-                $this->updateS($s);
-            } else {
-                $dt = isset($s['o_datatype']) ? $s['o_datatype'] : null;
-                $l = isset($s['p_x_lang']) && $s['p_x_lang'] ?
-                     $s['p_x_lang'] : (isset($s['x_lang']) ? $s['x_lang'] : null);
-                $o = array('type' => 'literal', 'value' => $s['o_cdata']);
-                $this->add(
-                    $s['value'],
-                    $s['p'],
-                    $o['value'],
-                    $s['type'],
-                    $o['type'],
-                    $dt,
-                    $l
-                );
-                /* reification */
-                if (isset($s['p_id']) && $s['p_id']) {
-                    $this->reify(
-                        $b->resolve('#'.$s['p_id']),
-                        $s['value'],
-                        $s['p'],
-                        $o['value'],
-                        $s['type'],
-                        $o['type'],
-                        $dt,
-                        $l
-                    );
-                }
-                unset($s['o_cdata']);
-                unset($s['o_datatype']);
-                unset($s['p']);
-                $this->updateS($s);
-            }
-            $this->state = 2;
-        }
-    }
-
-    /** @ignore */
-    protected function endState5($t)
-    {
-        /* p close */
-        if ($s = $this->getParentS()) {
-            unset($s['p']);
-            $this->updateS($s);
-            $this->state = 2;
-        }
-    }
-
-    /** @ignore */
-    protected function endState6($t)
-    {
-        if ($s = $this->getParentS()) {
-            $l = isset($s['p_x_lang']) && $s['p_x_lang'] ?
-                $s['p_x_lang'] :
-                (isset($s['x_lang']) ? $s['x_lang'] : null);
-            $data = $s['o_xml_data'];
-            $level = $s['o_xml_level'];
-            if ($level === 0) {
-                /* pClose */
-                $this->add(
-                    $s['value'],
-                    $s['p'],
-                    trim($data, ' '),
-                    $s['type'],
-                    'literal',
-                    $this->rdf.'XMLLiteral',
-                    $l
-                );
-                unset($s['o_xml_data']);
-                $this->state = 2;
-            } else {
-                $parts = $this->splitURI($t);
-                if (count($parts) == 1) {
-                    $data .= '</'.$t.'>';
-                } else {
-                    $nsUri = $parts[0];
-                    $name = $parts[1];
-                    if (!isset($this->nsp[$nsUri])) {
-                        foreach ($this->nsp as $tmp1 => $tmp2) {
-                            if (strpos($t, $tmp1) === 0) {
-                                $nsUri = $tmp1;
-                                $name = substr($t, strlen($tmp1));
-                                break;
-                            }
-                        }
-                    }
-                    $nsp = isset($this->nsp[$nsUri]) ? $this->nsp[$nsUri] : '';
-                    $data .= $nsp ? '</'.$nsp.':'.$name.'>' : '</'.$name.'>';
-                }
-                $s['o_xml_data'] = $data;
-                $s['o_xml_level'] = $level - 1;
-                if ($t == $s['p']) {
-                    /* xml container prop */
-                    $s['p_xml_literal_level']--;
-                }
-            }
-            $this->updateS($s);
-        }
-    }
-
-    /** @ignore */
-    protected function cdataState4($d)
-    {
-        if ($s = $this->getParentS()) {
-            $s['o_cdata'] = isset($s['o_cdata']) ? $s['o_cdata'] . $d : $d;
-            $this->updateS($s);
-        }
-    }
-
-    /** @ignore */
-    protected function cdataState6($d)
-    {
-        if ($s = $this->getParentS()) {
-            if (isset($s['o_xml_data']) || preg_match('/[\n\r]/', $d) || trim($d)) {
-                $d = htmlspecialchars($d, ENT_NOQUOTES);
-                $s['o_xml_data'] = isset($s['o_xml_data']) ? $s['o_xml_data'] . $d : $d;
-            }
-            $this->updateS($s);
-        }
-    }
-
-    /**
-      * Parse an RDF/XML document into an EasyRdf_Graph
-      *
-      * @param object EasyRdf_Graph $graph   the graph to load the data into
-      * @param string               $data    the RDF document data
-      * @param string               $format  the format of the input data
-      * @param string               $baseUri the base URI of the data being parsed
-      * @return integer             The number of triples added to the graph
-      */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        parent::checkParseParams($graph, $data, $format, $baseUri);
-
-        if ($format != 'rdfxml') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Parser_RdfXml does not support: $format"
-            );
-        }
-
-        $this->init($graph, $baseUri);
-        $this->resetBnodeMap();
-
-        /* xml parser */
-        $this->initXMLParser();
-
-        /* parse */
-        if (!xml_parse($this->xmlParser, $data, false)) {
-            $message = xml_error_string(xml_get_error_code($this->xmlParser));
-            throw new EasyRdf_Parser_Exception(
-                'XML error: "' . $message . '"',
-                xml_get_current_line_number($this->xmlParser),
-                xml_get_current_column_number($this->xmlParser)
-            );
-        }
-
-        xml_parser_free($this->xmlParser);
-
-        return $this->tripleCount;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Rdfa.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Rdfa.php
deleted file mode 100644
index 58eebe6..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Rdfa.php
+++ /dev/null
@@ -1,727 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2012-2013 Nicholas J Humfrey.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- *             Copyright (c) 1997-2006 Aduna (http://www.aduna-software.com/)
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to parse RDFa 1.1 with no external dependancies.
- *
- * http://www.w3.org/TR/rdfa-core/
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2012-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_Rdfa extends EasyRdf_Parser
-{
-    const XML_NS = 'http://www.w3.org/XML/1998/namespace';
-    const RDF_XML_LITERAL = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral';
-    const TERM_REGEXP = '/^([a-zA-Z_])([0-9a-zA-Z_\.-]*)$/';
-
-    public $debug = false;
-
-    /**
-     * Constructor
-     *
-     * @return object EasyRdf_Parser_Rdfa
-     */
-    public function __construct()
-    {
-    }
-
-    protected function addTriple($resource, $property, $value)
-    {
-        if ($this->debug) {
-            print "Adding triple: $resource -> $property -> ".$value['type'].':'.$value['value']."\n";
-        }
-        $count = $this->graph->add($resource, $property, $value);
-        $this->tripleCount += $count;
-        return $count;
-    }
-
-    protected function generateList($subject, $property, $list)
-    {
-        $current = $subject;
-        $prop = $property;
-
-        // Output a blank node for each item in the list
-        foreach ($list as $item) {
-            $newNode = $this->graph->newBNodeId();
-            $this->addTriple($current, $prop, array('type' => 'bnode', 'value' => $newNode));
-            $this->addTriple($newNode, 'rdf:first', $item);
-
-            $current = $newNode;
-            $prop = 'rdf:rest';
-        }
-
-        // Finally, terminate the list
-        $this->addTriple(
-            $current,
-            $prop,
-            array('type' => 'uri', 'value' => EasyRdf_Namespace::expand('rdf:nil'))
-        );
-    }
-
-    protected function addToList($listMapping, $property, $value)
-    {
-        if ($this->debug) {
-            print "Adding to list: $property -> ".$value['type'].':'.$value['value']."\n";
-        }
-
-        // Create property in the list mapping if it doesn't already exist
-        if (!isset($listMapping->$property)) {
-            $listMapping->$property = array();
-        }
-        array_push($listMapping->$property, $value);
-    }
-
-    protected function printNode($node, $depth)
-    {
-        $indent = str_repeat('  ', $depth);
-        print $indent;
-        switch($node->nodeType) {
-            case XML_ELEMENT_NODE:
-                print 'node';
-                break;
-            case XML_ATTRIBUTE_NODE:
-                print 'attr';
-                break;
-            case XML_TEXT_NODE:
-                print 'text';
-                break;
-            case XML_CDATA_SECTION_NODE:
-                print 'cdata';
-                break;
-            case XML_ENTITY_REF_NODE:
-                print 'entref';
-                break;
-            case XML_ENTITY_NODE:
-                print 'entity';
-                break;
-            case XML_PI_NODE:
-                print 'pi';
-                break;
-            case XML_COMMENT_NODE:
-                print 'comment';
-                break;
-            case XML_DOCUMENT_NODE:
-                print 'doc';
-                break;
-            case XML_DOCUMENT_TYPE_NODE:
-                print 'doctype';
-                break;
-            case XML_HTML_DOCUMENT_NODE:
-                print 'html';
-                break;
-            default:
-                throw new EasyRdf_Exception("unknown node type: ".$node->nodeType);
-                break;
-        }
-        print ' '.$node->nodeName."\n";
-
-        if ($node->hasAttributes()) {
-            foreach ($node->attributes as $attr) {
-                print $indent.' '.$attr->nodeName." => ".$attr->nodeValue."\n";
-            }
-        }
-    }
-
-    protected function guessTimeDatatype($value)
-    {
-        if (preg_match('/^-?\d{4}-\d{2}-\d{2}(Z|[\-\+]\d{2}:\d{2})?$/', $value)) {
-            return 'http://www.w3.org/2001/XMLSchema#date';
-        } elseif (preg_match('/^\d{2}:\d{2}:\d{2}(Z|[\-\+]\d{2}:\d{2})?$/', $value)) {
-            return 'http://www.w3.org/2001/XMLSchema#time';
-        } elseif (preg_match('/^-?\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(Z|[\-\+]\d{2}:\d{2})?$/', $value)) {
-            return 'http://www.w3.org/2001/XMLSchema#dateTime';
-        } elseif (preg_match('/^P(\d+Y)?(\d+M)?(\d+D)?T?(\d+H)?(\d+M)?(\d+S)?$/', $value)) {
-            return 'http://www.w3.org/2001/XMLSchema#duration';
-        } elseif (preg_match('/^\d{4}$/', $value)) {
-            return 'http://www.w3.org/2001/XMLSchema#gYear';
-        } elseif (preg_match('/^\d{4}-\d{2}$/', $value)) {
-            return 'http://www.w3.org/2001/XMLSchema#gYearMonth';
-        } else {
-            return null;
-        }
-    }
-
-    protected function initialContext()
-    {
-        $context = array(
-            'prefixes' => array(),
-            'vocab' => null,
-            'subject' => $this->baseUri,
-            'property' => null,
-            'object' => null,
-            'terms' => array(),
-            'incompleteRels' => array(),
-            'incompleteRevs' => array(),
-            'listMapping' => null,
-            'lang' => null,
-            'path' => '',
-            'xmlns' => array(),
-        );
-
-        // Set the default prefix
-        $context['prefixes'][''] = 'http://www.w3.org/1999/xhtml/vocab#';
-
-        // RDFa 1.1 default term mapping
-        $context['terms']['describedby'] = 'http://www.w3.org/2007/05/powder-s#describedby';
-        $context['terms']['license'] = 'http://www.w3.org/1999/xhtml/vocab#license';
-        $context['terms']['role'] = 'http://www.w3.org/1999/xhtml/vocab#role';
-
-        return $context;
-    }
-
-    protected function expandCurie($node, &$context, $value)
-    {
-        if (preg_match('/^(\w*?):(.*)$/', $value, $matches)) {
-            list (, $prefix, $local) = $matches;
-            $prefix = strtolower($prefix);
-            if ($prefix === '_') {
-                // It is a bnode
-                return $this->remapBnode(substr($value, 2));
-            } elseif (empty($prefix) and $context['vocab']) {
-                // Empty prefix
-                return $context['vocab'] . $local;
-            } elseif (isset($context['prefixes'][$prefix])) {
-                return $context['prefixes'][$prefix] . $local;
-            } elseif ($uri = $node->lookupNamespaceURI($prefix)) {
-                return $uri . $local;
-            } elseif (!empty($prefix) and $uri = EasyRdf_Namespace::get($prefix)) {
-                // Expand using well-known prefixes
-                return $uri . $local;
-            }
-        }
-    }
-
-    protected function processUri($node, &$context, $value, $isProp = false)
-    {
-        if (preg_match('/^\[(.*)\]$/', $value, $matches)) {
-            // Safe CURIE
-            return $this->expandCurie($node, $context, $matches[1]);
-        } elseif (preg_match(self::TERM_REGEXP, $value) and $isProp) {
-            $term = strtolower($value);
-            if ($context['vocab']) {
-                return $context['vocab'] . $value;
-            } elseif (isset($context['terms'][$term])) {
-                return $context['terms'][$term];
-            }
-        } elseif (substr($value, 0, 2) === '_:' and $isProp) {
-            return null;
-        } else {
-            $uri = $this->expandCurie($node, $context, $value);
-            if ($uri) {
-                return $uri;
-            } else {
-                $parsed = new EasyRdf_ParsedUri($value);
-                if ($parsed->isAbsolute()) {
-                    return $value;
-                } elseif ($isProp) {
-                    // Properties can't be relative URIs
-                    return null;
-                } elseif ($this->baseUri) {
-                    return $this->baseUri->resolve($parsed);
-                }
-            }
-        }
-    }
-
-    protected function processUriList($node, $context, $values)
-    {
-        if (!$values) {
-            return array();
-        }
-
-        $uris = array();
-        foreach (preg_split('/\s+/', $values) as $value) {
-            $uri = $this->processUri($node, $context, $value, true);
-            if ($uri) {
-                array_push($uris, $uri);
-            }
-        }
-        return $uris;
-    }
-
-    protected function getUriAttribute($node, &$context, $attributes)
-    {
-        if (!is_array($attributes)) {
-            $attributes = array($attributes);
-        }
-
-        // Find the first attribute that returns a valid URI
-        foreach ($attributes as $attribute) {
-            if ($node->hasAttribute($attribute)) {
-                $value = $node->getAttribute($attribute);
-                $uri = $this->processUri($node, $context, $value);
-                if ($uri) {
-                    return $uri;
-                }
-            }
-        }
-    }
-
-    protected function processNode($node, &$context, $depth = 1)
-    {
-        if ($this->debug) {
-            $this->printNode($node, $depth);
-        }
-
-        // Step 1: establish local variables
-        $skip = false;
-        $subject = null;
-        $typedResource = null;
-        $object = null;
-        $rels = array();
-        $revs = array();
-        $lang = $context['lang'];
-        $incompleteRels = array();
-        $incompleteRevs = array();
-
-        if ($node->nodeType === XML_ELEMENT_NODE) {
-            $context['path'] .= '/' . $node->nodeName;
-
-            $content = $node->hasAttribute('content') ? $node->getAttribute('content') : null;
-            $datatype = $node->hasAttribute('datatype') ? $node->getAttribute('datatype') : null;
-            $property = $node->getAttribute('property') ? $node->getAttribute('property') : null;
-            $typeof = $node->getAttribute('typeof') ? $node->getAttribute('typeof') : null;
-
-            // Step 2: Default vocabulary
-            if ($node->hasAttribute('vocab')) {
-                $context['vocab'] = $node->getAttribute('vocab');
-                if ($context['vocab']) {
-                    $this->addTriple(
-                        $this->baseUri,
-                        'rdfa:usesVocabulary',
-                        array('type' => 'uri', 'value' => $context['vocab'])
-                    );
-                }
-            }
-
-            // Step 3: Set prefix mappings
-            // Support for deprecated xmlns if present in document
-            foreach ($context['xmlns'] as $prefix => $uri) {
-                if ($node->hasAttribute('xmlns:' . $prefix)) {
-                    $context['prefixes'][$prefix] = $node->getAttribute('xmlns:' . $prefix);
-                    if ($this->debug) {
-                        print "Prefix (xmlns): $prefix => $uri\n";
-                    }
-                }
-            }
-            if ($node->hasAttribute('prefix')) {
-                $mappings = preg_split('/\s+/', $node->getAttribute('prefix'));
-                while (count($mappings)) {
-                    $prefix = strtolower(array_shift($mappings));
-                    $uri = array_shift($mappings);
-
-                    if (substr($prefix, -1) === ':') {
-                        $prefix = substr($prefix, 0, -1);
-                    } else {
-                        continue;
-                    }
-
-                    if ($prefix === '_') {
-                        continue;
-                    } elseif (!empty($prefix)) {
-                        $context['prefixes'][$prefix] = $uri;
-                        if ($this->debug) {
-                            print "Prefix: $prefix => $uri\n";
-                        }
-                    }
-                }
-            }
-
-            // Step 4
-            if ($node->hasAttributeNS(self::XML_NS, 'lang')) {
-                $lang = $node->getAttributeNS(self::XML_NS, 'lang');
-            } elseif ($node->hasAttribute('lang')) {
-                $lang = $node->getAttribute('lang');
-            }
-
-            // HTML+RDFa 1.1: ignore rel and rev unless they contain CURIEs.
-            foreach (array('rel', 'rev') as $attr) {
-                if ($node->hasAttribute('property') and $node->hasAttribute($attr)) {
-                    // Quick check in case there are no CURIEs to deal with.
-                    if (strpos($node->getAttribute($attr), ':') === false) {
-                        $node->removeAttribute($attr);
-                    } else {
-                        // Only keep CURIEs.
-                        $curies = array();
-                        foreach (preg_split('/\s+/', $node->getAttribute($attr)) as $token) {
-                            if (strpos($token, ':')) {
-                                $curies[] = $token;
-                            }
-                        }
-                        $node->setAttribute($attr, implode(' ', $curies));
-                    }
-                }
-            }
-
-            $rels = $this->processUriList($node, $context, $node->getAttribute('rel'));
-            $revs = $this->processUriList($node, $context, $node->getAttribute('rev'));
-
-            if (!$node->hasAttribute('rel') and !$node->hasAttribute('rev')) {
-                // Step 5: Establish a new subject if no rel/rev
-                if ($property and is_null($content) and is_null($datatype)) {
-                    $subject = $this->getUriAttribute($node, $context, 'about');
-                    if ($typeof and !$subject) {
-                        $typedResource = $this->getUriAttribute(
-                            $node,
-                            $context,
-                            array('resource', 'href', 'src')
-                        );
-                        if (!$typedResource) {
-                            $typedResource = $this->graph->newBNodeId();
-                        }
-                        $object = $typedResource;
-                    }
-                } else {
-                    $subject = $this->getUriAttribute(
-                        $node,
-                        $context,
-                        array('about', 'resource', 'href', 'src')
-                    );
-                }
-
-                // Establish a subject if there isn't one
-                # FIXME: refactor this
-                if (is_null($subject)) {
-                    if ($context['path'] === '/html/head') {
-                        $subject = $context['object'];
-                    } elseif ($depth <= 2) {
-                        $subject = $this->baseUri;
-                    } elseif ($typeof and !$property) {
-                        $subject = $this->graph->newBNodeId();
-                    } else {
-                        if (!$property) {
-                            $skip = true;
-                        }
-                        $subject = $context['object'];
-                    }
-                }
-
-            } else {
-                // Step 6
-                // If the current element does contain a @rel or @rev attribute, then the next step is to
-                // establish both a value for new subject and a value for current object resource:
-
-                $subject = $this->getUriAttribute($node, $context, 'about');
-
-                $object = $this->getUriAttribute(
-                    $node,
-                    $context,
-                    array('resource', 'href', 'src')
-                );
-
-                if ($typeof) {
-                    if (!$object and !$subject) {
-                        $object = $this->graph->newBNodeId();
-                    }
-                    $typedResource = $subject ? $subject : $object;
-                }
-
-                # FIXME: if the element is the root element of the document
-                # then act as if there is an empty @about present
-                if (!$subject) {
-                    $subject = $context['object'];
-                }
-
-            }
-
-            # FIXME: better place for this?
-            if ($typeof and $subject and !$typedResource) {
-                $typedResource = $subject;
-            }
-
-            // Step 7: Process @typeof if there is a subject
-            if ($typedResource) {
-                foreach ($this->processUriList($node, $context, $typeof) as $type) {
-                    $this->addTriple(
-                        $typedResource,
-                        'rdf:type',
-                        array('type' => 'uri', 'value' => $type)
-                    );
-                }
-            }
-
-            // Step 8: Create new List mapping if the subject has changed
-            if ($subject and $subject !== $context['subject']) {
-                $listMapping = new StdClass();
-            } else {
-                $listMapping = $context['listMapping'];
-            }
-
-            // Step 9: Generate triples with given object
-            if ($subject and $object) {
-                foreach ($rels as $prop) {
-                    $obj = array('type' => 'uri', 'value' => $object);
-                    if ($node->hasAttribute('inlist')) {
-                        $this->addToList($listMapping, $prop, $obj);
-                    } else {
-                        $this->addTriple($subject, $prop, $obj);
-                    }
-                }
-
-                foreach ($revs as $prop) {
-                    $this->addTriple(
-                        $object,
-                        $prop,
-                        array('type' => 'uri', 'value' => $subject)
-                    );
-                }
-            } elseif ($rels or $revs) {
-                // Step 10: Incomplete triples and bnode creation
-                $object = $this->graph->newBNodeId();
-                if ($rels) {
-                    if ($node->hasAttribute('inlist')) {
-                        foreach ($rels as $prop) {
-                            # FIXME: add support for incomplete lists
-                            if (!isset($listMapping->$prop)) {
-                                $listMapping->$prop = array();
-                            }
-                        }
-                    } else {
-                        $incompleteRels = $rels;
-                        if ($this->debug) {
-                            print "Incomplete rels: ".implode(',', $rels)."\n";
-                        }
-                    }
-                }
-
-                if ($revs) {
-                    $incompleteRevs = $revs;
-                    if ($this->debug) {
-                        print "Incomplete revs: ".implode(',', $revs)."\n";
-                    }
-                }
-            }
-
-            // Step 11: establish current property value
-            if ($subject and $property) {
-                $value = array();
-
-                if ($datatype) {
-                    $datatype = $this->processUri($node, $context, $datatype, true);
-                }
-
-                if ($content !== null) {
-                    $value['value'] = $content;
-                } elseif ($node->hasAttribute('datetime')) {
-                    $value['value'] = $node->getAttribute('datetime');
-                    $datetime = true;
-                } elseif ($datatype === '') {
-                    $value['value'] = $node->textContent;
-                } elseif ($datatype === self::RDF_XML_LITERAL) {
-                    $value['value'] = '';
-                    foreach ($node->childNodes as $child) {
-                        $value['value'] .= $child->C14N();
-                    }
-                } elseif (is_null($datatype) and empty($rels) and empty($revs)) {
-                    $value['value'] = $this->getUriAttribute(
-                        $node,
-                        $context,
-                        array('resource', 'href', 'src')
-                    );
-
-                    if ($value['value']) {
-                        $value['type'] = 'uri';
-                    }
-                }
-
-                if (empty($value['value']) and $typedResource and !$node->hasAttribute('about')) {
-                    $value['type'] = 'uri';
-                    $value['value'] = $typedResource;
-                }
-
-                if (empty($value['value'])) {
-                    $value['value'] = $node->textContent;
-                }
-
-                if (empty($value['type'])) {
-                    $value['type'] = 'literal';
-                    if ($datatype) {
-                        $value['datatype'] = $datatype;
-                    } elseif (isset($datetime) or $node->nodeName === 'time') {
-                        $value['datatype'] = $this->guessTimeDatatype($value['value']);
-                    }
-
-                    if (empty($value['datatype']) and $lang) {
-                        $value['lang'] = $lang;
-                    }
-                }
-
-                // Add each of the properties
-                foreach ($this->processUriList($node, $context, $property) as $prop) {
-                    if ($node->hasAttribute('inlist')) {
-                        $this->addToList($listMapping, $prop, $value);
-                    } elseif ($subject) {
-                        $this->addTriple($subject, $prop, $value);
-                    }
-                }
-            }
-
-            // Step 12: Complete the incomplete triples from the evaluation context
-            if (!$skip and $subject and ($context['incompleteRels'] or $context['incompleteRevs'])) {
-                foreach ($context['incompleteRels'] as $prop) {
-                    $this->addTriple(
-                        $context['subject'],
-                        $prop,
-                        array('type' => 'uri', 'value' => $subject)
-                    );
-                }
-
-                foreach ($context['incompleteRevs'] as $prop) {
-                    $this->addTriple(
-                        $subject,
-                        $prop,
-                        array('type' => 'uri', 'value' => $context['subject'])
-                    );
-                }
-            }
-        }
-
-        // Step 13: create a new evaluation context and proceed recursively
-        if ($node->hasChildNodes()) {
-            if ($skip) {
-                $newContext = $context;
-            } else {
-                // Prepare a new evaluation context
-                $newContext = $context;
-                if ($object) {
-                    $newContext['object'] = $object;
-                } elseif ($subject) {
-                    $newContext['object'] = $subject;
-                } else {
-                    $newContext['object'] = $context['subject'];
-                }
-                if ($subject) {
-                    $newContext['subject'] = $subject;
-                }
-                $newContext['incompleteRels'] = $incompleteRels;
-                $newContext['incompleteRevs'] = $incompleteRevs;
-                if (isset($listMapping)) {
-                    $newContext['listMapping'] = $listMapping;
-                }
-            }
-
-            // The language is always updated, even if skip is set
-            $newContext['lang'] = $lang;
-
-            foreach ($node->childNodes as $child) {
-                if ($child->nodeType === XML_ELEMENT_NODE) {
-                    $this->processNode($child, $newContext, $depth+1);
-                }
-            }
-        }
-
-        // Step 14: create triples for lists
-        if (!empty($listMapping)) {
-            foreach ($listMapping as $prop => $list) {
-                if ($context['listMapping'] !== $listMapping) {
-                    if ($this->debug) {
-                        print "Need to create triples for $prop => ".count($list)." items\n";
-                    }
-                    $this->generateList($subject, $prop, $list);
-                }
-            }
-        }
-    }
-
-    /**
-     * Parse RDFa 1.1 into an EasyRdf_Graph
-     *
-     * @param object EasyRdf_Graph $graph   the graph to load the data into
-     * @param string               $data    the RDF document data
-     * @param string               $format  the format of the input data
-     * @param string               $baseUri the base URI of the data being parsed
-     * @return integer             The number of triples added to the graph
-     */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        parent::checkParseParams($graph, $data, $format, $baseUri);
-
-        if ($format != 'rdfa') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Parser_Rdfa does not support: $format"
-            );
-        }
-
-        // Initialise evaluation context.
-        $context = $this->initialContext();
-
-        libxml_use_internal_errors(true);
-
-        // Parse the document into DOM
-        $doc = new DOMDocument();
-        // Attempt to parse the document as strict XML, and fall back to HTML
-        // if XML parsing fails.
-        if ($doc->loadXML($data, LIBXML_NONET)) {
-            if ($this->debug) {
-                print "Document was parsed as XML.";
-            }
-            // Collect all xmlns namespaces defined throughout the document.
-            $sxe = simplexml_import_dom($doc);
-            $context['xmlns'] = $sxe->getDocNamespaces(true);
-            unset($context['xmlns']['']);
-        } else {
-            $doc->loadHTML($data);
-            if ($this->debug) {
-                print "Document was parsed as HTML.";
-            }
-        }
-
-        // Establish the base for both XHTML and HTML documents.
-        $xpath = new DOMXPath($doc);
-        $xpath->registerNamespace('xh', "http://www.w3.org/1999/xhtml");
-        $nodeList = $xpath->query('/xh:html/xh:head/xh:base');
-        if ($node = $nodeList->item(0) and $href = $node->getAttribute('href')) {
-            $this->baseUri = new EasyRdf_ParsedUri($href);
-        }
-        $nodeList = $xpath->query('/html/head/base');
-        if ($node = $nodeList->item(0) and $href = $node->getAttribute('href')) {
-            $this->baseUri = new EasyRdf_ParsedUri($href);
-        }
-
-        // Remove the fragment from the base URI
-        $this->baseUri->setFragment(null);
-
-        // Recursively process XML nodes
-        $this->processNode($doc, $context);
-
-        return $this->tripleCount;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Redland.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Redland.php
deleted file mode 100644
index bdeb5a2..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Redland.php
+++ /dev/null
@@ -1,246 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to parse RDF using Redland (librdf) C library.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_Redland extends EasyRdf_Parser
-{
-    /** Variable set to the librdf world */
-    private $world = null;
-
-    /** Parser feature URI string for getting the error count of last parse. */
-    const LIBRDF_PARSER_FEATURE_ERROR_COUNT =
-        'http://feature.librdf.org/parser-error-count';
-
-    /*
-     *  Types supported by Redland:
-     *
-     *  ntriples: N-Triples
-     *  turtle: Turtle Terse RDF Triple Language
-     *  trig: TriG - Turtle with Named Graphs
-     *  rss-tag-soup: RSS Tag Soup
-     *  grddl: Gleaning Resource Descriptions from Dialects of Languages
-     *  guess: Pick the parser to use using content type and URI
-     *  rdfa: RDF/A via librdfa
-     *  raptor: (null)
-     *  rdfxml: RDF/XML
-     */
-
-
-    /**
-     * Convert a librdf node type into a string
-     * @ignore
-     */
-    protected function nodeTypeString($node)
-    {
-        switch(librdf_node_get_type($node)) {
-            case 1:
-                return 'uri';
-                break;
-            case 2:
-                return 'literal';
-                break;
-            case 4:
-                return 'bnode';
-                break;
-            default:
-                return 'unknown';
-                break;
-        }
-    }
-
-    /**
-     * Convert the URI for a node into a string
-     * @ignore
-     */
-    protected function nodeUriString($node)
-    {
-        $type = EasyRdf_Parser_Redland::nodeTypeString($node);
-        if ($type == 'uri') {
-            $uri = librdf_node_get_uri($node);
-            if (!$uri) {
-                throw new EasyRdf_Exception("Failed to get URI of node");
-            }
-            $str = librdf_uri_to_string($uri);
-            if (!$str) {
-                throw new EasyRdf_Exception(
-                    "Failed to convert librdf_uri to string"
-                );
-            }
-            return $str;
-        } elseif ($type == 'bnode') {
-            return $this->remapBnode(
-                librdf_node_get_blank_identifier($node)
-            );
-        } else {
-            throw new EasyRdf_Exception("Unsupported type: ".$type);
-        }
-    }
-
-    /**
-     * Convert a node into an associate array
-     * @ignore
-     */
-    protected function nodeToRdfPhp($node)
-    {
-        $object = array();
-        $object['type'] = EasyRdf_Parser_Redland::nodeTypeString($node);
-        if ($object['type'] == 'uri') {
-            $object['value'] = EasyRdf_Parser_Redland::nodeUriString($node);
-        } elseif ($object['type'] == 'bnode') {
-            $object['value'] = '_:'.librdf_node_get_blank_identifier($node);
-        } elseif ($object['type'] == 'literal') {
-            $object['value'] = librdf_node_get_literal_value($node);
-            $lang = librdf_node_get_literal_value_language($node);
-            if ($lang) {
-                $object['lang'] = $lang;
-            }
-            $datatype = librdf_node_get_literal_value_datatype_uri($node);
-            if ($datatype) {
-                $object['datatype'] = librdf_uri_to_string($datatype);
-            }
-        } else {
-            throw new EasyRdf_Exception("Unsupported type: ".$object['type']);
-        }
-        return $object;
-    }
-
-    /**
-     * Return the number of errors during parsing
-     * @ignore
-     */
-    protected function parserErrorCount($parser)
-    {
-        $errorUri = librdf_new_uri(
-            $this->world,
-            self::LIBRDF_PARSER_FEATURE_ERROR_COUNT
-        );
-        $errorNode = librdf_parser_get_feature($parser, $errorUri);
-        $errorCount = librdf_node_get_literal_value($errorNode);
-        librdf_free_uri($errorUri);
-        return $errorCount;
-    }
-
-    /**
-     * Constructor
-     *
-     * @return object EasyRdf_Parser_Redland
-     */
-    public function __construct()
-    {
-        if (extension_loaded('redland')) {
-            $this->world = librdf_php_get_world();
-            if (!$this->world) {
-                throw new EasyRdf_Exception(
-                    "Failed to initialise librdf world."
-                );
-            }
-        } else {
-            throw new EasyRdf_Exception(
-                "Redland PHP extension is not available."
-            );
-        }
-    }
-
-    /**
-      * Parse an RDF document into an EasyRdf_Graph
-      *
-      * @param object EasyRdf_Graph $graph   the graph to load the data into
-      * @param string               $data    the RDF document data
-      * @param string               $format  the format of the input data
-      * @param string               $baseUri the base URI of the data being parsed
-      * @return integer             The number of triples added to the graph
-      */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        parent::checkParseParams($graph, $data, $format, $baseUri);
-
-        $parser = librdf_new_parser($this->world, $format, null, null);
-        if (!$parser) {
-            throw new EasyRdf_Exception(
-                "Failed to create librdf_parser of type: $format"
-            );
-        }
-
-        $rdfUri = librdf_new_uri($this->world, $baseUri);
-        if (!$rdfUri) {
-            throw new EasyRdf_Exception(
-                "Failed to create librdf_uri from: $baseUri"
-            );
-        }
-
-        $stream = librdf_parser_parse_string_as_stream($parser, $data, $rdfUri);
-        if (!$stream) {
-            throw new EasyRdf_Parser_Exception(
-                "Failed to parse RDF stream"
-            );
-        }
-
-        do {
-            $statement = librdf_stream_get_object($stream);
-            if ($statement) {
-                $subject = EasyRdf_Parser_Redland::nodeUriString(
-                    librdf_statement_get_subject($statement)
-                );
-                $predicate = EasyRdf_Parser_Redland::nodeUriString(
-                    librdf_statement_get_predicate($statement)
-                );
-                $object = EasyRdf_Parser_Redland::nodeToRdfPhp(
-                    librdf_statement_get_object($statement)
-                );
-
-                $this->addTriple($subject, $predicate, $object);
-            }
-        } while (!librdf_stream_next($stream));
-
-        $errorCount = $this->parserErrorCount($parser);
-        if ($errorCount) {
-            throw new EasyRdf_Parser_Exception("$errorCount errors while parsing.");
-        }
-
-        librdf_free_uri($rdfUri);
-        librdf_free_stream($stream);
-        librdf_free_parser($parser);
-
-        return $this->tripleCount;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Turtle.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Turtle.php
deleted file mode 100644
index 760cf7b..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/Turtle.php
+++ /dev/null
@@ -1,1317 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.
- * Copyright (c) 1997-2013 Aduna (http://www.aduna-software.com/)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- *             Copyright (c) 1997-2006 Aduna (http://www.aduna-software.com/)
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to parse Turtle with no external dependancies.
- *
- * It is a translation from Java to PHP of the Sesame Turtle Parser:
- * http://bit.ly/TurtleParser
- * 
- * Lasted updated against version: 
- * ecda6a15a200a2fc6a062e2e43081257c3ccd4e6   (Mon Jul 29 12:05:58 2013)
- * 
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- *             Copyright (c) 1997-2013 Aduna (http://www.aduna-software.com/)
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Parser_Turtle extends EasyRdf_Parser_Ntriples
-{
-    protected $data;
-    protected $namespaces;
-    protected $subject;
-    protected $predicate;
-    protected $object;
-    
-    protected $line;
-    protected $column;
-
-    /**
-     * Constructor
-     *
-     * @return object EasyRdf_Parser_Turtle
-     */
-    public function __construct()
-    {
-    }
-
-    /**
-     * Parse Turtle into an EasyRdf_Graph
-     *
-     * @param object EasyRdf_Graph $graph   the graph to load the data into
-     * @param string               $data    the RDF document data
-     * @param string               $format  the format of the input data
-     * @param string               $baseUri the base URI of the data being parsed
-     * @return integer             The number of triples added to the graph
-     */
-    public function parse($graph, $data, $format, $baseUri)
-    {
-        parent::checkParseParams($graph, $data, $format, $baseUri);
-
-        if ($format != 'turtle') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Parser_Turtle does not support: $format"
-            );
-        }
-
-        $this->data = $data;
-        $this->namespaces = array();
-        $this->subject = null;
-        $this->predicate = null;
-        $this->object = null;
-        
-        $this->line = 1;
-        $this->column = 1;
-
-        $this->resetBnodeMap();
-
-        $c = $this->skipWSC();
-        while ($c != -1) {
-            $this->parseStatement();
-            $c = $this->skipWSC();
-        }
-
-        return $this->tripleCount;
-    }
-
-
-    /**
-     * Parse a statement [2]
-     * @ignore
-     */
-    protected function parseStatement()
-    {
-        $directive = '';
-        while (true) {
-            $c = $this->read();
-            if ($c == -1 || self::isWhitespace($c)) {
-                $this->unread($c);
-                break;
-            } else {
-                $directive .= $c;
-            }
-        }
-
-        if (preg_match('/^(@|prefix$|base$)/i', $directive)) {
-            $this->parseDirective($directive);
-            $this->skipWSC();
-            // SPARQL BASE and PREFIX lines do not end in .
-            if ($directive[0] == "@") {
-                $this->verifyCharacterOrFail($this->read(), ".");
-            }
-        } else {
-            $this->unread($directive);
-            $this->parseTriples();
-            $this->skipWSC();
-            $this->verifyCharacterOrFail($this->read(), ".");
-        }
-    }
-
-    /**
-     * Parse a directive [3]
-     * @ignore
-     */
-    protected function parseDirective($directive)
-    {
-        $directive = strtolower($directive);
-        if ($directive == "prefix" || $directive == '@prefix') {
-            $this->parsePrefixID();
-        } elseif ($directive == "base" || $directive == '@base') {
-            $this->parseBase();
-        } elseif (mb_strlen($directive, "UTF-8") == 0) {
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: directive name is missing, expected @prefix or @base",
-                $this->line,
-                $this->column
-            );
-        } else {
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: unknown directive \"$directive\"",
-                $this->line,
-                $this->column
-            );
-        }
-    }
-
-    /**
-     * Parse a prefixID [4]
-     * @ignore
-     */
-    protected function parsePrefixID()
-    {
-        $this->skipWSC();
-
-        // Read prefix ID (e.g. "rdf:" or ":")
-        $prefixID = '';
-
-        while (true) {
-            $c = $this->read();
-            if ($c == ':') {
-                $this->unread($c);
-                break;
-            } elseif (self::isWhitespace($c)) {
-                break;
-            } elseif ($c == -1) {
-                throw new EasyRdf_Parser_Exception(
-                    "Turtle Parse Error: unexpected end of file while reading prefix id",
-                    $this->line,
-                    $this->column
-                );
-            }
-
-            $prefixID .= $c;
-        }
-
-        $this->skipWSC();
-        $this->verifyCharacterOrFail($this->read(), ":");
-        $this->skipWSC();
-
-        // Read the namespace URI
-        $namespace = $this->parseURI();
-
-        // Store local namespace mapping
-        $this->namespaces[$prefixID] = $namespace['value'];
-    }
-
-    /**
-     * Parse base [5]
-     * @ignore
-     */
-    protected function parseBase()
-    {
-        $this->skipWSC();
-
-        $baseUri = $this->parseURI();
-        $this->baseUri = new EasyRdf_ParsedUri($baseUri['value']);
-    }
-
-    /**
-     * Parse triples [6]
-     * @ignore
-     */
-    protected function parseTriples()
-    {
-        $c = $this->peek();
-
-        // If the first character is an open bracket we need to decide which of
-        // the two parsing methods for blank nodes to use
-        if ($c == '[') {
-            $c = $this->read();
-            $this->skipWSC();
-            $c = $this->peek();
-            if ($c == ']') {
-                $c = $this->read();
-                $this->subject = $this->createBNode();
-                $this->skipWSC();
-                $this->parsePredicateObjectList();
-            } else {
-                $this->unread('[');
-                $this->subject = $this->parseImplicitBlank();
-            }
-            $this->skipWSC();
-            $c = $this->peek();
-
-            // if this is not the end of the statement, recurse into the list of
-            // predicate and objects, using the subject parsed above as the subject
-            // of the statement.
-            if ($c != '.') {
-                $this->parsePredicateObjectList();
-            }
-        } else {
-            $this->parseSubject();
-            $this->skipWSC();
-            $this->parsePredicateObjectList();
-        }
-
-        $this->subject = null;
-        $this->predicate = null;
-        $this->object = null;
-    }
-
-    /**
-     * Parse a predicateObjectList [7]
-     * @ignore
-     */
-    protected function parsePredicateObjectList()
-    {
-        $this->predicate = $this->parsePredicate();
-
-        $this->skipWSC();
-        $this->parseObjectList();
-
-        while ($this->skipWSC() == ';') {
-            $this->read();
-
-            $c = $this->skipWSC();
-
-            if ($c == '.' || $c == ']') {
-                break;
-            } elseif ($c == ';') {
-                // empty predicateObjectList, skip to next
-                continue;
-            }
-
-            $this->predicate = $this->parsePredicate();
-
-            $this->skipWSC();
-
-            $this->parseObjectList();
-        }
-    }
-
-    /**
-     * Parse a objectList [8]
-     * @ignore
-     */
-    protected function parseObjectList()
-    {
-        $this->parseObject();
-
-        while ($this->skipWSC() == ',') {
-            $this->read();
-            $this->skipWSC();
-            $this->parseObject();
-        }
-    }
-
-    /**
-     * Parse a subject [10]
-     * @ignore
-     */
-    protected function parseSubject()
-    {
-        $c = $this->peek();
-        if ($c == '(') {
-            $this->subject = $this->parseCollection();
-        } elseif ($c == '[') {
-            $this->subject = $this->parseImplicitBlank();
-        } else {
-            $value = $this->parseValue();
-
-            if ($value['type'] == 'uri' or $value['type'] == 'bnode') {
-                $this->subject = $value;
-            } else {
-                throw new EasyRdf_Parser_Exception(
-                    "Turtle Parse Error: illegal subject type: ".$value['type'],
-                    $this->line,
-                    $this->column
-                );
-            }
-        }
-    }
-
-    /**
-     * Parse a predicate [11]
-     * @ignore
-     */
-    protected function parsePredicate()
-    {
-        // Check if the short-cut 'a' is used
-        $c1 = $this->read();
-
-        if ($c1 == 'a') {
-            $c2 = $this->read();
-
-            if (self::isWhitespace($c2)) {
-                // Short-cut is used, return the rdf:type URI
-                return array(
-                    'type' => 'uri',
-                    'value' => EasyRdf_Namespace::get('rdf') . 'type'
-                );
-            }
-
-            // Short-cut is not used, unread all characters
-            $this->unread($c2);
-        }
-        $this->unread($c1);
-
-        // Predicate is a normal resource
-        $predicate = $this->parseValue();
-        if ($predicate['type'] == 'uri') {
-            return $predicate;
-        } else {
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: Illegal predicate type: " . $predicate['type'],
-                $this->line,
-                $this->column
-            );
-        }
-    }
-
-    /**
-     * Parse a object [12]
-     * @ignore
-     */
-    protected function parseObject()
-    {
-        $c = $this->peek();
-
-        if ($c == '(') {
-            $this->object = $this->parseCollection();
-        } elseif ($c == '[') {
-            $this->object = $this->parseImplicitBlank();
-        } else {
-            $this->object = $this->parseValue();
-        }
-
-        $this->addTriple(
-            $this->subject['value'],
-            $this->predicate['value'],
-            $this->object
-        );
-    }
-
-    /**
-     * Parses a blankNodePropertyList [15]
-     *
-     * This method parses the token []
-     * and predicateObjectLists that are surrounded by square brackets.
-     *
-     * @ignore
-     */
-    protected function parseImplicitBlank()
-    {
-        $this->verifyCharacterOrFail($this->read(), "[");
-
-        $bnode = $this->createBNode();
-
-        $c = $this->read();
-        if ($c != ']') {
-            $this->unread($c);
-
-            // Remember current subject and predicate
-            $oldSubject = $this->subject;
-            $oldPredicate = $this->predicate;
-
-            // generated bNode becomes subject
-            $this->subject = $bnode;
-
-            // Enter recursion with nested predicate-object list
-            $this->skipWSC();
-
-            $this->parsePredicateObjectList();
-
-            $this->skipWSC();
-
-            // Read closing bracket
-            $this->verifyCharacterOrFail($this->read(), "]");
-
-            // Restore previous subject and predicate
-            $this->subject = $oldSubject;
-            $this->predicate = $oldPredicate;
-        }
-
-        return $bnode;
-    }
-
-    /**
-     * Parses a collection [16], e.g: ( item1 item2 item3 )
-     * @ignore
-     */
-    protected function parseCollection()
-    {
-        $this->verifyCharacterOrFail($this->read(), "(");
-
-        $c = $this->skipWSC();
-        if ($c == ')') {
-            // Empty list
-            $this->read();
-            return array(
-                'type' => 'uri',
-                'value' => EasyRdf_Namespace::get('rdf') . 'nil'
-            );
-        } else {
-            $listRoot = $this->createBNode();
-
-            // Remember current subject and predicate
-            $oldSubject = $this->subject;
-            $oldPredicate = $this->predicate;
-
-            // generated bNode becomes subject, predicate becomes rdf:first
-            $this->subject = $listRoot;
-            $this->predicate = array(
-                'type' => 'uri',
-                'value' => EasyRdf_Namespace::get('rdf') . 'first'
-            );
-
-            $this->parseObject();
-            $bNode = $listRoot;
-
-            while ($this->skipWSC() != ')') {
-                // Create another list node and link it to the previous
-                $newNode = $this->createBNode();
-
-                $this->addTriple(
-                    $bNode['value'],
-                    EasyRdf_Namespace::get('rdf') . 'rest',
-                    $newNode
-                );
-
-                // New node becomes the current
-                $this->subject = $bNode = $newNode;
-
-                $this->parseObject();
-            }
-
-            // Skip ')'
-            $this->read();
-
-            // Close the list
-            $this->addTriple(
-                $bNode['value'],
-                EasyRdf_Namespace::get('rdf') . 'rest',
-                array(
-                    'type' => 'uri',
-                    'value' => EasyRdf_Namespace::get('rdf') . 'nil'
-                )
-            );
-
-            // Restore previous subject and predicate
-            $this->subject = $oldSubject;
-            $this->predicate = $oldPredicate;
-
-            return $listRoot;
-        }
-    }
-
-    /**
-     * Parses an RDF value. This method parses uriref, qname, node ID, quoted
-     * literal, integer, double and boolean.
-     * @ignore
-     */
-    protected function parseValue()
-    {
-        $c = $this->peek();
-
-        if ($c == '<') {
-            // uriref, e.g. <foo://bar>
-            return $this->parseURI();
-        } elseif ($c == ':' || self::isPrefixStartChar($c)) {
-            // qname or boolean
-            return $this->parseQNameOrBoolean();
-        } elseif ($c == '_') {
-            // node ID, e.g. _:n1
-            return $this->parseNodeID();
-        } elseif ($c == '"' || $c == "'") {
-            // quoted literal, e.g. "foo" or """foo""" or 'foo' or '''foo'''
-            return $this->parseQuotedLiteral();
-        } elseif (ctype_digit($c) || $c == '.' || $c == '+' || $c == '-') {
-            // integer or double, e.g. 123 or 1.2e3
-            return $this->parseNumber();
-        } elseif ($c == -1) {
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: unexpected end of file while reading value",
-                $this->line,
-                $this->column
-            );
-        } else {
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: expected an RDF value here, found '$c'",
-                $this->line,
-                $this->column
-            );
-        }
-    }
-
-    /**
-     * Parses a quoted string, optionally followed by a language tag or datatype.
-     * @ignore
-     */
-    protected function parseQuotedLiteral()
-    {
-        $label = $this->parseQuotedString();
-
-        // Check for presence of a language tag or datatype
-        $c = $this->peek();
-
-        if ($c == '@') {
-            $this->read();
-
-            // Read language
-            $lang = '';
-            $c = $this->read();
-            if ($c == -1) {
-                throw new EasyRdf_Parser_Exception(
-                    "Turtle Parse Error: unexpected end of file while reading language",
-                    $this->line,
-                    $this->column
-                );
-            } elseif (!self::isLanguageStartChar($c)) {
-                throw new EasyRdf_Parser_Exception(
-                    "Turtle Parse Error: expected a letter, found '$c'",
-                    $this->line,
-                    $this->column
-                );
-            }
-
-            $lang .= $c;
-
-            $c = $this->read();
-            while (!self::isWhitespace($c)) {
-                if ($c == '.' || $c == ';' || $c == ',' || $c == ')' || $c == ']' || $c == -1) {
-                    break;
-                }
-                if (self::isLanguageChar($c)) {
-                    $lang .= $c;
-                } else {
-                    throw new EasyRdf_Parser_Exception(
-                        "Turtle Parse Error: illegal language tag char: '$c'",
-                        $this->line,
-                        $this->column
-                    );
-                }
-                $c = $this->read();
-            }
-
-            $this->unread($c);
-
-            return array(
-                'type' => 'literal',
-                'value' => $label,
-                'lang' => $lang
-            );
-        } elseif ($c == '^') {
-            $this->read();
-
-            // next character should be another '^'
-            $this->verifyCharacterOrFail($this->read(), "^");
-
-            // Read datatype
-            $datatype = $this->parseValue();
-            if ($datatype['type'] == 'uri') {
-                return array(
-                    'type' => 'literal',
-                    'value' => $label,
-                    'datatype' => $datatype['value']
-                );
-            } else {
-                throw new EasyRdf_Parser_Exception(
-                    "Turtle Parse Error: illegal datatype type: " . $datatype['type'],
-                    $this->line,
-                    $this->column
-                );
-            }
-        } else {
-            return array(
-                'type' => 'literal',
-                'value' => $label
-            );
-        }
-    }
-
-    /**
-     * Parses a quoted string, which is either a "normal string" or a """long string""".
-     * @ignore
-     */
-    protected function parseQuotedString()
-    {
-        $result = null;
-
-        $c1 = $this->read();
-
-        // First character should be ' or "
-        $this->verifyCharacterOrFail($c1, "\"\'");
-
-        // Check for long-string, which starts and ends with three double quotes
-        $c2 = $this->read();
-        $c3 = $this->read();
-
-        if ($c2 == $c1 && $c3 == $c1) {
-            // Long string
-            $result = $this->parseLongString($c2);
-        } else {
-            // Normal string
-            $this->unread($c3);
-            $this->unread($c2);
-
-            $result = $this->parseString($c1);
-        }
-
-        // Unescape any escape sequences
-        return $this->unescapeString($result);
-    }
-
-    /**
-     * Parses a "normal string". This method requires that the opening character
-     * has already been parsed.
-     * @param string  $closingCharacter  The type of quote to use (either ' or ")
-     * @ignore
-     */
-    protected function parseString($closingCharacter)
-    {
-        $str = '';
-
-        while (true) {
-            $c = $this->read();
-
-            if ($c == $closingCharacter) {
-                break;
-            } elseif ($c == -1) {
-                throw new EasyRdf_Parser_Exception(
-                    "Turtle Parse Error: unexpected end of file while reading string",
-                    $this->line,
-                    $this->column
-                );
-            }
-
-            $str .= $c;
-
-            if ($c == '\\') {
-                // This escapes the next character, which might be a ' or a "
-                $c = $this->read();
-                if ($c == -1) {
-                    throw new EasyRdf_Parser_Exception(
-                        "Turtle Parse Error: unexpected end of file while reading string",
-                        $this->line,
-                        $this->column
-                    );
-                }
-                $str .= $c;
-            }
-        }
-
-        return $str;
-    }
-
-    /**
-     * Parses a """long string""". This method requires that the first three
-     * characters have already been parsed.
-     * @param string  $closingCharacter  The type of quote to use (either ' or ")
-     * @ignore
-     */
-    protected function parseLongString($closingCharacter)
-    {
-        $str = '';
-        $doubleQuoteCount = 0;
-
-        while ($doubleQuoteCount < 3) {
-            $c = $this->read();
-
-            if ($c == -1) {
-                throw new EasyRdf_Parser_Exception(
-                    "Turtle Parse Error: unexpected end of file while reading long string",
-                    $this->line,
-                    $this->column
-                );
-            } elseif ($c == $closingCharacter) {
-                $doubleQuoteCount++;
-            } else {
-                $doubleQuoteCount = 0;
-            }
-
-            $str .= $c;
-
-            if ($c == '\\') {
-                // This escapes the next character, which might be a ' or "
-                $c = $this->read();
-                if ($c == -1) {
-                    throw new EasyRdf_Parser_Exception(
-                        "Turtle Parse Error: unexpected end of file while reading long string",
-                        $this->line,
-                        $this->column
-                    );
-                }
-                $str .= $c;
-            }
-        }
-
-        return mb_substr($str, 0, -3, "UTF-8");
-    }
-
-    /**
-     * Parses a numeric value, either of type integer, decimal or double
-     * @ignore
-     */
-    protected function parseNumber()
-    {
-        $value = '';
-        $datatype = EasyRdf_Namespace::get('xsd').'integer';
-
-        $c = $this->read();
-
-        // read optional sign character
-        if ($c == '+' || $c == '-') {
-            $value .= $c;
-            $c = $this->read();
-        }
-
-        while (ctype_digit($c)) {
-            $value .= $c;
-            $c = $this->read();
-        }
-
-        if ($c == '.' || $c == 'e' || $c == 'E') {
-            // read optional fractional digits
-            if ($c == '.') {
-
-                if (self::isWhitespace($this->peek())) {
-                    // We're parsing an integer that did not have a space before the
-                    // period to end the statement
-                } else {
-                    $value .= $c;
-                    $c = $this->read();
-                    while (ctype_digit($c)) {
-                        $value .= $c;
-                        $c = $this->read();
-                    }
-
-                    if (mb_strlen($value, "UTF-8") == 1) {
-                        // We've only parsed a '.'
-                        throw new EasyRdf_Parser_Exception(
-                            "Turtle Parse Error: object for statement missing",
-                            $this->line,
-                            $this->column
-                        );
-                    }
-
-                    // We're parsing a decimal or a double
-                    $datatype = EasyRdf_Namespace::get('xsd').'decimal';
-                }
-            } else {
-                if (mb_strlen($value, "UTF-8") == 0) {
-                    // We've only parsed an 'e' or 'E'
-                    throw new EasyRdf_Parser_Exception(
-                        "Turtle Parse Error: object for statement missing",
-                        $this->line,
-                        $this->column
-                    );
-                }
-            }
-
-            // read optional exponent
-            if ($c == 'e' || $c == 'E') {
-                $datatype = EasyRdf_Namespace::get('xsd').'double';
-                $value .= $c;
-
-                $c = $this->read();
-                if ($c == '+' || $c == '-') {
-                    $value .= $c;
-                    $c = $this->read();
-                }
-
-                if (!ctype_digit($c)) {
-                    throw new EasyRdf_Parser_Exception(
-                        "Turtle Parse Error: exponent value missing",
-                        $this->line,
-                        $this->column
-                    );
-                }
-
-                $value .= $c;
-
-                $c = $this->read();
-                while (ctype_digit($c)) {
-                    $value .= $c;
-                    $c = $this->read();
-                }
-            }
-        }
-
-        // Unread last character, it isn't part of the number
-        $this->unread($c);
-
-        // Return result as a typed literal
-        return array(
-            'type' => 'literal',
-            'value' => $value,
-            'datatype' => $datatype
-        );
-    }
-
-    /**
-     * Parses a URI / IRI
-     * @ignore
-     */
-    protected function parseURI()
-    {
-        $uri = '';
-
-        // First character should be '<'
-        $this->verifyCharacterOrFail($this->read(), "<");
-
-        // Read up to the next '>' character
-        while (true) {
-            $c = $this->read();
-
-            if ($c == '>') {
-                break;
-            } elseif ($c == -1) {
-                throw new EasyRdf_Parser_Exception(
-                    "Turtle Parse Error: unexpected end of file while reading URI",
-                    $this->line,
-                    $this->column
-                );
-            }
-
-            $uri .= $c;
-
-            if ($c == '\\') {
-                // This escapes the next character, which might be a '>'
-                $c = $this->read();
-                if ($c == -1) {
-                    throw new EasyRdf_Parser_Exception(
-                        "Turtle Parse Error: unexpected end of file while reading URI",
-                        $this->line,
-                        $this->column
-                    );
-                }
-                $uri .= $c;
-            }
-        }
-
-        // Unescape any escape sequences
-        $uri = $this->unescapeString($uri);
-
-        return array(
-            'type' => 'uri',
-            'value' => $this->resolve($uri)
-        );
-    }
-
-    /**
-     * Parses qnames and boolean values, which have equivalent starting
-     * characters.
-     * @ignore
-     */
-    protected function parseQNameOrBoolean()
-    {
-        // First character should be a ':' or a letter
-        $c = $this->read();
-        if ($c == -1) {
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: unexpected end of file while readying value",
-                $this->line,
-                $this->column
-            );
-        }
-        if ($c != ':' && !self::isPrefixStartChar($c)) {
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: expected a ':' or a letter, found '$c'",
-                $this->line,
-                $this->column
-            );
-        }
-
-        $namespace = null;
-
-        if ($c == ':') {
-            // qname using default namespace
-            if (isset($this->namespaces[''])) {
-                $namespace = $this->namespaces[''];
-            } else {
-                throw new EasyRdf_Parser_Exception(
-                    "Turtle Parse Error: default namespace used but not defined",
-                    $this->line,
-                    $this->column
-                );
-            }
-        } else {
-            // $c is the first letter of the prefix
-            $prefix = $c;
-
-            $c = $this->read();
-            while (self::isPrefixChar($c)) {
-                $prefix .= $c;
-                $c = $this->read();
-            }
-
-            if ($c != ':') {
-                // prefix may actually be a boolean value
-                $value = $prefix;
-
-                if ($value == "true" || $value == "false") {
-                    return array(
-                        'type' => 'literal',
-                        'value' => $value,
-                        'datatype' => EasyRdf_Namespace::get('xsd') . 'boolean'
-                    );
-                }
-            }
-
-            $this->verifyCharacterOrFail($c, ":");
-
-            if (isset($this->namespaces[$prefix])) {
-                $namespace = $this->namespaces[$prefix];
-            } else {
-                throw new EasyRdf_Parser_Exception(
-                    "Turtle Parse Error: namespace prefix '$prefix' used but not defined",
-                    $this->line,
-                    $this->column
-                );
-            }
-        }
-
-        // $c == ':', read optional local name
-        $localName = '';
-        $c = $this->read();
-        if (self::isNameStartChar($c)) {
-            if ($c == '\\') {
-                $localName .= $this->readLocalEscapedChar();
-            } else {
-                $localName .= $c;
-            }
-
-            $c = $this->read();
-            while (self::isNameChar($c)) {
-                if ($c == '\\') {
-                    $localName .= $this->readLocalEscapedChar();
-                } else {
-                    $localName .= $c;
-                }
-                $c = $this->read();
-            }
-        }
-
-        // Unread last character
-        $this->unread($c);
-
-        // Note: namespace has already been resolved
-        return array(
-            'type' => 'uri',
-            'value' => $namespace . $localName
-        );
-    }
-
-    protected function readLocalEscapedChar()
-    {
-        $c = $this->read();
-
-        if (self::isLocalEscapedChar($c)) {
-            return $c;
-        } else {
-            throw new EasyRdf_Parser_Exception(
-                "found '" . $c . "', expected one of: " . implode(', ', self::$localEscapedChars),
-                $this->line,
-                $this->column
-            );
-        }
-    }
-
-    /**
-     * Parses a blank node ID, e.g: _:node1
-     * @ignore
-     */
-    protected function parseNodeID()
-    {
-        // Node ID should start with "_:"
-        $this->verifyCharacterOrFail($this->read(), "_");
-        $this->verifyCharacterOrFail($this->read(), ":");
-
-        // Read the node ID
-        $c = $this->read();
-        if ($c == -1) {
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: unexpected end of file while reading node id",
-                $this->line,
-                $this->column
-            );
-        } elseif (!self::isNameStartChar($c)) {
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: expected a letter, found '$c'",
-                $this->line,
-                $this->column
-            );
-        }
-
-        // Read all following letter and numbers, they are part of the name
-        $name = $c;
-        $c = $this->read();
-        while (self::isNameChar($c)) {
-            $name .= $c;
-            $c = $this->read();
-        }
-
-        $this->unread($c);
-
-        return array(
-            'type' => 'bnode',
-            'value' => $this->remapBnode($name)
-        );
-    }
-
-    protected function resolve($uri)
-    {
-        if ($this->baseUri) {
-            return $this->baseUri->resolve($uri)->toString();
-        } else {
-            return $uri;
-        }
-    }
-
-    /**
-     * Verifies that the supplied character $c is one of the expected
-     * characters specified in $expected. This method will throw a
-     * exception if this is not the case.
-     * @ignore
-     */
-    protected function verifyCharacterOrFail($c, $expected)
-    {
-        if ($c == -1) {
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: unexpected end of file",
-                $this->line,
-                $this->column
-            );
-        } elseif (strpbrk($c, $expected) === false) {
-            $msg = 'expected ';
-            for ($i = 0; $i < strlen($expected); $i++) {
-                if ($i > 0) {
-                    $msg .= " or ";
-                }
-                $msg .= '\''.$expected[$i].'\'';
-            }
-            $msg .= ", found '$c'";
-
-            throw new EasyRdf_Parser_Exception(
-                "Turtle Parse Error: $msg",
-                $this->line,
-                $this->column
-            );
-        }
-    }
-
-    /**
-     * Skip through whitespace and comments
-     * @ignore
-     */
-    protected function skipWSC()
-    {
-        $c = $this->read();
-        while (self::isWhitespace($c) || $c == '#') {
-            if ($c == '#') {
-                $this->processComment();
-            }
-
-            $c = $this->read();
-        }
-
-        $this->unread($c);
-        return $c;
-    }
-
-    /**
-     * Consumes characters from reader until the first EOL has been read.
-     * @ignore
-     */
-    protected function processComment()
-    {
-        $comment = '';
-        $c = $this->read();
-        while ($c != -1 && $c != "\r" && $c != "\n") {
-            $comment .= $c;
-            $c = $this->read();
-        }
-
-        // c is equal to -1, \r or \n.
-        // In case c is equal to \r, we should also read a following \n.
-        if ($c == "\r") {
-            $c = $this->read();
-            if ($c != "\n") {
-                $this->unread($c);
-            }
-        }
-    }
-
-    /**
-     * Read a single character from the input buffer.
-     * Returns -1 when the end of the file is reached.
-     * @ignore
-     */
-    protected function read()
-    {
-        if (!empty($this->data)) {
-            $c = mb_substr($this->data, 0, 1, "UTF-8");
-            // Keep tracks of which line we are on (0A = Line Feed)
-            if ($c == "\x0A") {
-                $this->line += 1;
-                $this->column = 1;
-            } else {
-                $this->column += 1;
-            }
-
-            if (version_compare(PHP_VERSION, '5.4.8', '<')) {
-                // versions of PHP prior to 5.4.8 treat "NULL" length parameter as 0
-                $this->data = mb_substr($this->data, 1, mb_strlen($this->data), "UTF-8");
-            } else {
-                $this->data = mb_substr($this->data, 1, null, "UTF-8");
-            }
-            return $c;
-        } else {
-            return -1;
-        }
-    }
-
-    /**
-     * Gets the next character to be returned by read()
-     * without removing it from the input buffer.
-     * @ignore
-     */
-    protected function peek()
-    {
-        if (!empty($this->data)) {
-            return mb_substr($this->data, 0, 1, "UTF-8");
-        } else {
-            return -1;
-        }
-    }
-
-
-    /**
-     * Steps back, restoring the previous character read() to the input buffer
-     * @ignore
-     */
-    protected function unread($c)
-    {
-        # FIXME: deal with unreading new lines
-        $this->column -= mb_strlen($c, "UTF-8");
-        $this->data = $c . $this->data;
-    }
-
-    /** @ignore */
-    protected function createBNode()
-    {
-        return array(
-            'type' => 'bnode',
-            'value' => $this->graph->newBNodeId()
-        );
-    }
-
-    /**
-     * Returns true if $c is a whitespace character
-     * @ignore
-     */
-    public static function isWhitespace($c)
-    {
-        // Whitespace character are space, tab, newline and carriage return:
-        return $c == "\x20" || $c == "\x09" || $c == "\x0A" || $c == "\x0D";
-    }
-
-    /** @ignore */
-    public static function isPrefixStartChar($c)
-    {
-        $o = ord($c);
-        return
-            $o >= 0x41   && $o <= 0x5a ||     # A-Z
-            $o >= 0x61   && $o <= 0x7a ||     # a-z
-            $o >= 0x00C0 && $o <= 0x00D6 ||
-            $o >= 0x00D8 && $o <= 0x00F6 ||
-            $o >= 0x00F8 && $o <= 0x02FF ||
-            $o >= 0x0370 && $o <= 0x037D ||
-            $o >= 0x037F && $o <= 0x1FFF ||
-            $o >= 0x200C && $o <= 0x200D ||
-            $o >= 0x2070 && $o <= 0x218F ||
-            $o >= 0x2C00 && $o <= 0x2FEF ||
-            $o >= 0x3001 && $o <= 0xD7FF ||
-            $o >= 0xF900 && $o <= 0xFDCF ||
-            $o >= 0xFDF0 && $o <= 0xFFFD ||
-            $o >= 0x10000 && $o <= 0xEFFFF;
-    }
-
-    /** @ignore */
-    public static function isNameStartChar($c)
-    {
-        return
-            $c == '\\' ||
-            $c == '_' ||
-            $c == ':' ||
-            $c == '%' ||
-            ctype_digit($c) ||
-            self::isPrefixStartChar($c);
-    }
-
-    /** @ignore */
-    public static function isNameChar($c)
-    {
-        $o = ord($c);
-        return
-            self::isNameStartChar($c) ||
-            $o >= 0x30 && $o <= 0x39 ||     # 0-9
-            $c == '-' ||
-            $o == 0x00B7 ||
-            $o >= 0x0300 && $o <= 0x036F ||
-            $o >= 0x203F && $o <= 0x2040;
-    }
-
-    /** @ignore */
-    private static $localEscapedChars = array(
-        '_', '~', '.', '-', '!', '$', '&', '\'', '(', ')',
-        '*', '+', ',', ';', '=', '/', '?', '#', '@', '%'
-    );
-
-    /** @ignore */
-    public static function isLocalEscapedChar($c)
-    {
-        return in_array($c, self::$localEscapedChars);
-    }
-
-    /** @ignore */
-    public static function isPrefixChar($c)
-    {
-        $o = ord($c);
-        return
-            $c == '_' ||
-            $o >= 0x30 && $o <= 0x39 ||     # 0-9
-            self::isPrefixStartChar($c) ||
-            $c == '-' ||
-            $o == 0x00B7 ||
-            $c >= 0x0300 && $c <= 0x036F ||
-            $c >= 0x203F && $c <= 0x2040;
-    }
-
-    /** @ignore */
-    public static function isLanguageStartChar($c)
-    {
-        $o = ord($c);
-        return
-            $o >= 0x41 && $o <= 0x5a ||   # A-Z
-            $o >= 0x61 && $o <= 0x7a;     # a-z
-    }
-
-    /** @ignore */
-    public static function isLanguageChar($c)
-    {
-        $o = ord($c);
-        return
-            $o >= 0x41 && $o <= 0x5a ||   # A-Z
-            $o >= 0x61 && $o <= 0x7a ||   # a-z
-            $o >= 0x30 && $o <= 0x39 ||   # 0-9
-            $c == '-';
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Resource.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Resource.php
deleted file mode 100644
index 3cb2805..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Resource.php
+++ /dev/null
@@ -1,720 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class that represents an RDF resource
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Resource
-{
-    /** The URI for this resource */
-    protected $uri = null;
-
-    /** The Graph that this resource belongs to */
-    protected $graph = null;
-
-
-    /** Constructor
-     *
-     * * Please do not call new EasyRdf_Resource() directly *
-     *
-     * To create a new resource use the get method in a graph:
-     * $resource = $graph->resource('http://www.example.com/');
-     *
-     */
-    public function __construct($uri, $graph = null)
-    {
-        if (!is_string($uri) or $uri == null or $uri == '') {
-            throw new InvalidArgumentException(
-                "\$uri should be a string and cannot be null or empty"
-            );
-        }
-
-        $this->uri = $uri;
-
-        # Check that $graph is an EasyRdf_Graph object
-        if (is_object($graph) and $graph instanceof EasyRdf_Graph) {
-            $this->graph = $graph;
-        } elseif (!is_null($graph)) {
-            throw new InvalidArgumentException(
-                "\$graph should be an EasyRdf_Graph object"
-            );
-        }
-    }
-
-    /**
-     * Return the graph that this resource belongs to
-     *
-     * @return EasyRdf_Graph
-     */
-    public function getGraph()
-    {
-        return $this->graph;
-    }
-
-    /** Returns the URI for the resource.
-     *
-     * @return string  URI of this resource.
-     */
-    public function getUri()
-    {
-        return $this->uri;
-    }
-
-    /** Check to see if a resource is a blank node.
-     *
-     * @return bool True if this resource is a blank node.
-     */
-    public function isBNode()
-    {
-        if (substr($this->uri, 0, 2) == '_:') {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    /** Get the identifier for a blank node
-     *
-     * Returns null if the resource is not a blank node.
-     *
-     * @return string The identifer for the bnode
-     */
-    public function getBNodeId()
-    {
-        if (substr($this->uri, 0, 2) == '_:') {
-            return substr($this->uri, 2);
-        } else {
-            return null;
-        }
-    }
-
-    /** Get a the prefix of the namespace that this resource is part of
-     *
-     * This method will return null the resource isn't part of any
-     * registered namespace.
-     *
-     * @return string The namespace prefix of the resource (e.g. foaf)
-     */
-    public function prefix()
-    {
-        return EasyRdf_Namespace::prefixOfUri($this->uri);
-    }
-
-    /** Get a shortened version of the resources URI.
-     *
-     * This method will return the full URI if the resource isn't part of any
-     * registered namespace.
-     *
-     * @return string The shortened URI of this resource (e.g. foaf:name)
-     */
-    public function shorten()
-    {
-        return EasyRdf_Namespace::shorten($this->uri);
-    }
-
-    /** Gets the local name of the URI of this resource
-     *
-     * The local name is defined as the part of the URI string
-     * after the last occurrence of the '#', ':' or '/' character.
-     *
-     * @return string The local name
-     */
-    public function localName()
-    {
-        if (preg_match("|([^#:/]+)$|", $this->uri, $matches)) {
-            return $matches[1];
-        }
-    }
-
-    /** Parse the URI of the resource and return as a ParsedUri object
-     *
-     * @return EasyRdf_ParsedUri
-     */
-    public function parseUri()
-    {
-        return new EasyRdf_ParsedUri($this->uri);
-    }
-
-    /** Generates an HTML anchor tag, linking to this resource.
-     *
-     * If no text is given, then the URI also uses as the link text.
-     *
-     * @param  string  $text    Text for the link.
-     * @param  array   $options Associative array of attributes for the anchor tag
-     * @return string  The HTML link string
-     */
-    public function htmlLink($text = null, $options = array())
-    {
-        $options = array_merge(array('href' => $this->uri), $options);
-        if ($text === null) {
-            $text = $this->uri;
-        }
-
-        $html = "<a";
-        foreach ($options as $key => $value) {
-            if (!preg_match('/^[-\w]+$/', $key)) {
-                throw new InvalidArgumentException(
-                    "\$options should use valid attribute names as keys"
-                );
-            }
-
-            $html .= " ".htmlspecialchars($key)."=\"".
-                         htmlspecialchars($value)."\"";
-        }
-        $html .= ">".htmlspecialchars($text)."</a>";
-
-        return $html;
-    }
-
-    /** Returns the properties of the resource as an RDF/PHP associative array
-     *
-     * For example:
-     * array('type' => 'uri', 'value' => 'http://www.example.com/')
-     *
-     * @return array  The properties of the resource
-     */
-    public function toRdfPhp()
-    {
-        if ($this->isBNode()) {
-            return array('type' => 'bnode', 'value' => $this->uri);
-        } else {
-            return array('type' => 'uri', 'value' => $this->uri);
-        }
-    }
-
-    /** Return pretty-print view of the resource
-     *
-     * @param  string $format Either 'html' or 'text'
-     * @param  string $color The colour of the text
-     * @return string
-     */
-    public function dumpValue($format = 'html', $color = 'blue')
-    {
-        return EasyRdf_Utils::dumpResourceValue($this, $format, $color);
-    }
-
-    /** Magic method to return URI of resource when casted to string
-     *
-     * @return string The URI of the resource
-     */
-    public function __toString()
-    {
-        return $this->uri;
-    }
-
-
-
-    /** Throw can exception if the resource does not belong to a graph
-     *  @ignore
-     */
-    protected function checkHasGraph()
-    {
-        if (!$this->graph) {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Resource is not part of a graph."
-            );
-        }
-    }
-
-    /** Perform a load (download of remote URI) of the resource into the graph
-     *
-     * The document type is optional but should be specified if it
-     * can't be guessed or got from the HTTP headers.
-     *
-     * @param  string  $format  Optional format of the data (eg. rdfxml)
-     */
-    public function load($format = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->load($this->uri, $format);
-    }
-
-    /** Delete a property (or optionally just a specific value)
-     *
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  object  $value The value to delete (null to delete all values)
-     * @return null
-     */
-    public function delete($property, $value = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->delete($this->uri, $property, $value);
-    }
-
-    /** Add values to for a property of the resource
-     *
-     * Example:
-     *   $resource->add('prefix:property', 'value');
-     *
-     * @param  mixed $property   The property name
-     * @param  mixed $value      The value for the property
-     * @return integer           The number of values added (1 or 0)
-     */
-    public function add($property, $value)
-    {
-        $this->checkHasGraph();
-        return $this->graph->add($this->uri, $property, $value);
-    }
-
-    /** Add a literal value as a property of the resource
-     *
-     * The value can either be a single value or an array of values.
-     *
-     * Example:
-     *   $resource->add('dc:title', 'Title of Page');
-     *
-     * @param  mixed  $property  The property name
-     * @param  mixed  $values    The value or values for the property
-     * @param  string $lang      The language of the literal
-     * @return integer           The number of values added
-     */
-    public function addLiteral($property, $values, $lang = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->addLiteral($this->uri, $property, $values, $lang);
-    }
-
-    /** Add a resource as a property of the resource
-     *
-     * Example:
-     *   $bob->add('foaf:knows', 'http://example.com/alice');
-     *
-     * @param  mixed $property   The property name
-     * @param  mixed $resource2  The resource to be the value of the property
-     * @return integer           The number of values added (1 or 0)
-     */
-    public function addResource($property, $resource2)
-    {
-        $this->checkHasGraph();
-        return $this->graph->addResource($this->uri, $property, $resource2);
-    }
-
-    /** Set value for a property
-     *
-     * The new value(s) will replace the existing values for the property.
-     * The name of the property should be a string.
-     * If you set a property to null or an empty array, then the property
-     * will be deleted.
-     *
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  mixed   $value    The value for the property.
-     * @return integer           The number of values added (1 or 0)
-     */
-    public function set($property, $value)
-    {
-        $this->checkHasGraph();
-        return $this->graph->set($this->uri, $property, $value);
-    }
-
-    /** Get a single value for a property
-     *
-     * If multiple values are set for a property then the value returned
-     * may be arbitrary.
-     *
-     * If $property is an array, then the first item in the array that matches
-     * a property that exists is returned.
-     *
-     * This method will return null if the property does not exist.
-     *
-     * @param  string|array $property The name of the property (e.g. foaf:name)
-     * @param  string       $type     The type of value to filter by (e.g. literal or resource)
-     * @param  string       $lang     The language to filter by (e.g. en)
-     * @return mixed                  A value associated with the property
-     */
-    public function get($property, $type = null, $lang = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->get($this->uri, $property, $type, $lang);
-    }
-
-    /** Get a single literal value for a property of the resource
-     *
-     * If multiple values are set for a property then the value returned
-     * may be arbitrary.
-     *
-     * This method will return null if there is not literal value for the
-     * property.
-     *
-     * @param  string|array $property The name of the property (e.g. foaf:name)
-     * @param  string       $lang     The language to filter by (e.g. en)
-     * @return object EasyRdf_Literal Literal value associated with the property
-     */
-    public function getLiteral($property, $lang = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->get($this->uri, $property, 'literal', $lang);
-    }
-
-    /** Get a single resource value for a property of the resource
-     *
-     * If multiple values are set for a property then the value returned
-     * may be arbitrary.
-     *
-     * This method will return null if there is not resource for the
-     * property.
-     *
-     * @param  string|array $property The name of the property (e.g. foaf:name)
-     * @return object EasyRdf_Resource Resource associated with the property
-     */
-    public function getResource($property)
-    {
-        $this->checkHasGraph();
-        return $this->graph->get($this->uri, $property, 'resource');
-    }
-
-    /** Get all values for a property
-     *
-     * This method will return an empty array if the property does not exist.
-     *
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  string  $type     The type of value to filter by (e.g. literal)
-     * @param  string  $lang     The language to filter by (e.g. en)
-     * @return array             An array of values associated with the property
-     */
-    public function all($property, $type = null, $lang = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->all($this->uri, $property, $type, $lang);
-    }
-
-    /** Get all literal values for a property of the resource
-     *
-     * This method will return an empty array if the resource does not
-     * has any literal values for that property.
-     *
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  string  $lang     The language to filter by (e.g. en)
-     * @return array             An array of values associated with the property
-     */
-    public function allLiterals($property, $lang = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->all($this->uri, $property, 'literal', $lang);
-    }
-
-    /** Get all resources for a property of the resource
-     *
-     * This method will return an empty array if the resource does not
-     * has any resources for that property.
-     *
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @return array             An array of values associated with the property
-     */
-    public function allResources($property)
-    {
-        $this->checkHasGraph();
-        return $this->graph->all($this->uri, $property, 'resource');
-    }
-
-    /** Count the number of values for a property of a resource
-     *
-     * This method will return 0 if the property does not exist.
-     *
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  string  $type     The type of value to filter by (e.g. literal)
-     * @param  string  $lang     The language to filter by (e.g. en)
-     * @return integer           The number of values associated with the property
-     */
-    public function countValues($property, $type = null, $lang = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->countValues($this->uri, $property, $type, $lang);
-    }
-
-    /** Concatenate all values for a property into a string.
-     *
-     * The default is to join the values together with a space character.
-     * This method will return an empty string if the property does not exist.
-     *
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  string  $glue     The string to glue the values together with.
-     * @param  string  $lang     The language to filter by (e.g. en)
-     * @return string            Concatenation of all the values.
-     */
-    public function join($property, $glue = ' ', $lang = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->join($this->uri, $property, $glue, $lang);
-    }
-
-    /** Get a list of the full URIs for the properties of this resource.
-     *
-     * This method will return an empty array if the resource has no properties.
-     *
-     * @return array            Array of full URIs
-     */
-    public function propertyUris()
-    {
-        $this->checkHasGraph();
-        return $this->graph->propertyUris($this->uri);
-    }
-
-    /** Get a list of all the shortened property names (qnames) for a resource.
-     *
-     * This method will return an empty array if the resource has no properties.
-     *
-     * @return array            Array of shortened URIs
-     */
-    public function properties()
-    {
-        $this->checkHasGraph();
-        return $this->graph->properties($this->uri);
-    }
-
-    /** Get a list of the full URIs for the properties that point to this resource.
-     *
-     * @return array   Array of full property URIs
-     */
-    public function reversePropertyUris()
-    {
-        $this->checkHasGraph();
-        return $this->graph->reversePropertyUris($this->uri);
-    }
-
-    /** Check to see if a property exists for this resource.
-     *
-     * This method will return true if the property exists.
-     * If the value parameter is given, then it will only return true
-     * if the value also exists for that property.
-     *
-     * @param  string  $property The name of the property (e.g. foaf:name)
-     * @param  mixed   $value    An optional value of the property
-     * @return bool              True if value the property exists.
-     */
-    public function hasProperty($property, $value = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->hasProperty($this->uri, $property, $value);
-    }
-
-    /** Get a list of types for a resource.
-     *
-     * The types will each be a shortened URI as a string.
-     * This method will return an empty array if the resource has no types.
-     *
-     * @return array All types assocated with the resource (e.g. foaf:Person)
-     */
-    public function types()
-    {
-        $this->checkHasGraph();
-        return $this->graph->types($this->uri);
-    }
-
-    /** Get a single type for a resource.
-     *
-     * The type will be a shortened URI as a string.
-     * If the resource has multiple types then the type returned
-     * may be arbitrary.
-     * This method will return null if the resource has no type.
-     *
-     * @return string A type assocated with the resource (e.g. foaf:Person)
-     */
-    public function type()
-    {
-        $this->checkHasGraph();
-        return $this->graph->type($this->uri);
-    }
-
-    /** Get a single type for a resource, as a resource.
-     *
-     * The type will be returned as an EasyRdf_Resource.
-     * If the resource has multiple types then the type returned
-     * may be arbitrary.
-     * This method will return null if the resource has no type.
-     *
-     * @return EasyRdf_Resource A type assocated with the resource.
-     */
-    public function typeAsResource()
-    {
-        $this->checkHasGraph();
-        return $this->graph->typeAsResource($this->uri);
-    }
-
-    /**
-     * Get a list of types for a resource, as Resources.
-     *
-     * @return EasyRdf_Resource[]
-     * @throws EasyRdf_Exception
-     */
-    public function typesAsResources()
-    {
-        $this->checkHasGraph();
-        return $this->graph->typesAsResources($this->uri);
-    }
-
-    /** Check if a resource is of the specified type
-     *
-     * @param  string  $type The type to check (e.g. foaf:Person)
-     * @return boolean       True if resource is of specified type.
-     */
-    public function isA($type)
-    {
-        $this->checkHasGraph();
-        return $this->graph->isA($this->uri, $type);
-    }
-
-    /** Add one or more rdf:type properties to the resource
-     *
-     * @param  string  $types    One or more types to add (e.g. foaf:Person)
-     * @return integer           The number of types added
-     */
-    public function addType($types)
-    {
-        $this->checkHasGraph();
-        return $this->graph->addType($this->uri, $types);
-    }
-
-    /** Change the rdf:type property for the resource
-     *
-     * Note that the PHP class of the resource will not change.
-     *
-     * @param  string  $type     The new type (e.g. foaf:Person)
-     * @return integer           The number of types added
-     */
-    public function setType($type)
-    {
-        $this->checkHasGraph();
-        return $this->graph->setType($this->uri, $type);
-    }
-
-    /** Get the primary topic of this resource.
-     *
-     * Returns null if no primary topic is available.
-     *
-     * @return EasyRdf_Resource The primary topic of this resource.
-     */
-    public function primaryTopic()
-    {
-        $this->checkHasGraph();
-        return $this->graph->primaryTopic($this->uri);
-    }
-
-    /** Get a human readable label for this resource
-     *
-     * This method will check a number of properties for the resource
-     * (in the order: skos:prefLabel, rdfs:label, foaf:name, dc:title)
-     * and return an approriate first that is available. If no label
-     * is available then it will return null.
-     *
-     * @return string A label for the resource.
-     */
-    public function label($lang = null)
-    {
-        $this->checkHasGraph();
-        return $this->graph->label($this->uri, $lang);
-    }
-
-    /** Return a human readable view of the resource and its properties
-     *
-     * This method is intended to be a debugging aid and will
-     * print a resource and its properties.
-     *
-     * @param  string $format   Either 'html' or 'text'
-     * @return string
-     */
-    public function dump($format = 'html')
-    {
-        $this->checkHasGraph();
-        return $this->graph->dumpResource($this->uri, $format);
-    }
-
-    /** Magic method to get a property of a resource
-     *
-     * Note that only properties in the default namespace can be accessed in this way.
-     *
-     * Example:
-     *   $value = $resource->title;
-     *
-     * @see EasyRdf_Namespace::setDefault()
-     * @param  string $name The name of the property
-     * @return string       A single value for the named property
-     */
-    public function __get($name)
-    {
-        return $this->graph->get($this->uri, $name);
-    }
-
-    /** Magic method to set the value for a property of a resource
-     *
-     * Note that only properties in the default namespace can be accessed in this way.
-     *
-     * Example:
-     *   $resource->title = 'Title';
-     *
-     * @see EasyRdf_Namespace::setDefault()
-     * @param  string $name The name of the property
-     * @param  string $value The value for the property
-     */
-    public function __set($name, $value)
-    {
-        return $this->graph->set($this->uri, $name, $value);
-    }
-
-    /** Magic method to check if a property exists
-     *
-     * Note that only properties in the default namespace can be accessed in this way.
-     *
-     * Example:
-     *   if (isset($resource->title)) { blah(); }
-     *
-     * @see EasyRdf_Namespace::setDefault()
-     * @param string $name The name of the property
-     */
-    public function __isset($name)
-    {
-        return $this->graph->hasProperty($this->uri, $name);
-    }
-
-    /** Magic method to delete a property of the resource
-     *
-     * Note that only properties in the default namespace can be accessed in this way.
-     *
-     * Example:
-     *   unset($resource->title);
-     *
-     * @see EasyRdf_Namespace::setDefault()
-     * @param string $name The name of the property
-     */
-    public function __unset($name)
-    {
-        return $this->graph->delete($this->uri, $name);
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser.php
deleted file mode 100644
index 1c0acb8..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Parent class for the EasyRdf serialiser
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Serialiser
-{
-    protected $prefixes = array();
-
-    public function __construct()
-    {
-    }
-
-    /**
-     * Keep track of the prefixes used while serialising
-     * @ignore
-     */
-    protected function addPrefix($qname)
-    {
-        list ($prefix) = explode(':', $qname);
-        $this->prefixes[$prefix] = true;
-    }
-
-    /**
-     * Check and cleanup parameters passed to serialise() method
-     * @ignore
-     */
-    protected function checkSerialiseParams(&$graph, &$format)
-    {
-        if (is_null($graph) or !is_object($graph) or !($graph instanceof EasyRdf_Graph)) {
-            throw new InvalidArgumentException(
-                "\$graph should be an EasyRdf_Graph object and cannot be null"
-            );
-        }
-
-        if (is_null($format) or $format == '') {
-            throw new InvalidArgumentException(
-                "\$format cannot be null or empty"
-            );
-        } elseif (is_object($format) and ($format instanceof EasyRdf_Format)) {
-            $format = $format->getName();
-        } elseif (!is_string($format)) {
-            throw new InvalidArgumentException(
-                "\$format should be a string or an EasyRdf_Format object"
-            );
-        }
-    }
-
-    /**
-     * Protected method to get the number of reverse properties for a resource
-     * If a resource only has a single property, the number of values for that
-     * property is returned instead.
-     * @ignore
-     */
-    protected function reversePropertyCount($resource)
-    {
-        $properties = $resource->reversePropertyUris();
-        $count = count($properties);
-        if ($count == 1) {
-            $property = $properties[0];
-            return $resource->countValues("^<$property>");
-        } else {
-            return $count;
-        }
-    }
-
-    /**
-     * Sub-classes must follow this protocol
-     * @ignore
-     */
-    public function serialise($graph, $format, array $options = array())
-    {
-        throw new EasyRdf_Exception(
-            "This method should be overridden by sub-classes."
-        );
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Arc.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Arc.php
deleted file mode 100644
index 31bd8b7..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Arc.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to serialise RDF using the ARC2 library.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Serialiser_Arc extends EasyRdf_Serialiser_RdfPhp
-{
-    private static $supportedTypes = array(
-        'rdfxml' => 'RDFXML',
-        'turtle' => 'Turtle',
-        'ntriples' => 'NTriples',
-        'posh' => 'POSHRDF'
-    );
-
-    /**
-     * Constructor
-     *
-     * @return object EasyRdf_Serialiser_Arc
-     */
-    public function __construct()
-    {
-        require_once 'arc/ARC2.php';
-    }
-
-    /**
-     * Serialise an EasyRdf_Graph into RDF format of choice.
-     *
-     * @param EasyRdf_Graph $graph   An EasyRdf_Graph object.
-     * @param string        $format  The name of the format to convert to.
-     * @param array         $options
-     * @throws EasyRdf_Exception
-     * @return string              The RDF in the new desired format.
-     */
-    public function serialise($graph, $format, array $options = array())
-    {
-        parent::checkSerialiseParams($graph, $format);
-
-        if (array_key_exists($format, self::$supportedTypes)) {
-            $className = self::$supportedTypes[$format];
-        } else {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Serialiser_Arc does not support: $format"
-            );
-        }
-
-        $serialiser = ARC2::getSer($className);
-        if ($serialiser) {
-            return $serialiser->getSerializedIndex(
-                parent::serialise($graph, 'php')
-            );
-        } else {
-            throw new EasyRdf_Exception(
-                "ARC2 failed to get a $className serialiser."
-            );
-        }
-    }
-}
-
-EasyRdf_Format::register('posh', 'poshRDF');
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/GraphViz.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/GraphViz.php
deleted file mode 100644
index 2fd22da..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/GraphViz.php
+++ /dev/null
@@ -1,392 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2012-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to serialise an EasyRdf_Graph to GraphViz
- *
- * Depends upon the GraphViz 'dot' command line tools to render images.
- *
- * See http://www.graphviz.org/ for more information.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2012-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Serialiser_GraphViz extends EasyRdf_Serialiser
-{
-    private $dotCommand = 'dot';
-    private $useLabels = false;
-    private $onlyLabelled = false;
-    private $attributes = array('charset' => 'utf-8');
-
-    /**
-     * Constructor
-     *
-     * @return object EasyRdf_Serialiser_GraphViz
-     */
-    public function __construct()
-    {
-    }
-
-    /**
-     * Set the path to the GraphViz 'dot' command
-     *
-     * Default is to search PATH for the command 'dot'.
-     *
-     * @param string $cmd   The path to the 'dot' command.
-     * @return object EasyRdf_Serialiser_GraphViz
-     */
-    public function setDotCommand($cmd)
-    {
-        $this->dotCommand = $cmd;
-        return $this;
-    }
-
-    /**
-     * Get the path to the GraphViz 'dot' command
-     *
-     * The default value is simply 'dot'
-     *
-     * @return string The path to the 'dot' command.
-     */
-    public function getDotCommand()
-    {
-        return $this->dotCommand;
-    }
-
-    /**
-     * Turn on/off the option to display labels instead of URIs.
-     *
-     * When this option is turned on, then labels for resources will
-     * be displayed instead of the full URI of a resource. This makes
-     * it simpler to create friendly diagrams that non-technical people
-     * can understand.
-     *
-     * This option is turned off by default.
-     *
-     * @param bool $useLabels   A boolean value to turn labels on and off
-     * @return object EasyRdf_Serialiser_GraphViz
-     */
-    public function setUseLabels($useLabels)
-    {
-        $this->useLabels = $useLabels;
-        return $this;
-    }
-
-    /**
-     * Get the state of the use labels option
-     *
-     * @return bool The current state of the use labels option
-     */
-    public function getUseLabels()
-    {
-        return $this->useLabels;
-    }
-
-    /**
-     * Turn on/off the option to only display nodes and edges with labels
-     *
-     * When this option is turned on, then only nodes (resources and literals)
-     * and edges (properties) will only be displayed if they have a label. You
-     * can use this option, to create concise, diagrams of your data, rather than
-     * the RDF.
-     *
-     * This option is turned off by default.
-     *
-     * @param bool $onlyLabelled   A boolean value to enable/display only labelled items
-     * @return object EasyRdf_Serialiser_GraphViz
-     */
-    public function setOnlyLabelled($onlyLabelled)
-    {
-        $this->onlyLabelled = $onlyLabelled;
-        return $this;
-    }
-
-    /**
-     * Get the state of the only Only Labelled option
-     *
-     * @return bool The current state of the Only Labelled option
-     */
-    public function getOnlyLabelled()
-    {
-        return $this->onlyLabelled;
-    }
-
-    /**
-     * Set an attribute on the GraphViz graph
-     *
-     * Example:
-     *     $serialiser->setAttribute('rotate', 90);
-     *
-     * See the GraphViz tool documentation for information about the
-     * available attributes.
-     *
-     * @param string $name    The name of the attribute
-     * @param string $value   The value for the attribute
-     * @return object EasyRdf_Serialiser_GraphViz
-     */
-    public function setAttribute($name, $value)
-    {
-        $this->attributes[$name] = $value;
-        return $this;
-    }
-
-    /**
-     * Get an attribute of the GraphViz graph
-     *
-     * @param string $name    Attribute name
-     * @return string The value of the graph attribute
-     */
-    public function getAttribute($name)
-    {
-        return $this->attributes[$name];
-    }
-
-    /**
-     * Convert an EasyRdf object into a GraphViz node identifier
-     *
-     * @ignore
-     */
-    protected function nodeName($entity)
-    {
-        if ($entity instanceof EasyRdf_Resource) {
-            if ($entity->isBNode()) {
-                return "B".$entity->getUri();
-            } else {
-                return "R".$entity->getUri();
-            }
-        } else {
-            return "L".$entity;
-        }
-    }
-
-    /**
-     * Internal function to escape a string into DOT safe syntax
-     *
-     * @ignore
-     */
-    protected function escape($input)
-    {
-        if (preg_match('/^([a-z_][a-z_0-9]*|-?(\.[0-9]+|[0-9]+(\.[0-9]*)?))$/i', $input)) {
-            return $input;
-        } else {
-            return '"'.str_replace(
-                array("\r\n", "\n", "\r", '"'),
-                array('\n',   '\n', '\n', '\"'),
-                $input
-            ).'"';
-        }
-    }
-
-    /**
-     * Internal function to escape an associate array of attributes and
-     * turns it into a DOT notation string
-     *
-     * @ignore
-     */
-    protected function escapeAttributes($array)
-    {
-        $items = '';
-        foreach ($array as $k => $v) {
-            $items[] = $this->escape($k).'='.$this->escape($v);
-        }
-        return '['.implode(',', $items).']';
-    }
-
-    /**
-     * Internal function to create dot syntax line for either a node or an edge
-     *
-     * @ignore
-     */
-    protected function serialiseRow($node1, $node2 = null, $attributes = array())
-    {
-        $result = '  '.$this->escape($node1);
-        if ($node2) {
-            $result .= ' -> '.$this->escape($node2);
-        }
-        if (count($attributes)) {
-            $result .= ' '.$this->escapeAttributes($attributes);
-        }
-        return $result.";\n";
-    }
-
-    /**
-     * Internal function to serialise an EasyRdf_Graph into a DOT formatted string
-     *
-     * @ignore
-     */
-    protected function serialiseDot($graph)
-    {
-        $result = "digraph {\n";
-
-        // Write the graph attributes
-        foreach ($this->attributes as $k => $v) {
-            $result .= '  '.$this->escape($k).'='.$this->escape($v).";\n";
-        }
-
-        // Go through each of the properties and write the edges
-        $nodes = array();
-        $result .= "\n  // Edges\n";
-        foreach ($graph->resources() as $resource) {
-            $name1 = $this->nodeName($resource);
-            foreach ($resource->propertyUris() as $property) {
-                $label = null;
-                if ($this->useLabels) {
-                    $label = $graph->resource($property)->label();
-                }
-                if ($label === null) {
-                    if ($this->onlyLabelled == true) {
-                        continue;
-                    } else {
-                        $label = EasyRdf_Namespace::shorten($property);
-                    }
-                }
-                foreach ($resource->all("<$property>") as $value) {
-                    $name2 = $this->nodeName($value);
-                    $nodes[$name1] = $resource;
-                    $nodes[$name2] = $value;
-                    $result .= $this->serialiseRow(
-                        $name1,
-                        $name2,
-                        array('label' => $label)
-                    );
-                }
-            }
-        }
-
-        ksort($nodes);
-
-        $result .= "\n  // Nodes\n";
-        foreach ($nodes as $name => $node) {
-            $type = substr($name, 0, 1);
-            $label = '';
-            if ($type == 'R') {
-                if ($this->useLabels) {
-                    $label = $node->label();
-                }
-                if (!$label) {
-                    $label = $node->shorten();
-                }
-                if (!$label) {
-                    $label = $node->getURI();
-                }
-                $result .= $this->serialiseRow(
-                    $name,
-                    null,
-                    array(
-                        'URL'   => $node->getURI(),
-                        'label' => $label,
-                        'shape' => 'ellipse',
-                        'color' => 'blue'
-                    )
-                );
-            } elseif ($type == 'B') {
-                if ($this->useLabels) {
-                    $label = $node->label();
-                }
-                $result .= $this->serialiseRow(
-                    $name,
-                    null,
-                    array(
-                        'label' => $label,
-                        'shape' => 'circle',
-                        'color' => 'green'
-                    )
-                );
-            } else {
-                $result .= $this->serialiseRow(
-                    $name,
-                    null,
-                    array(
-                        'label' => strval($node),
-                        'shape' => 'record',
-                    )
-                );
-            }
-
-        }
-
-        $result .= "}\n";
-
-        return $result;
-    }
-
-    /**
-     * Internal function to render a graph into an image
-     *
-     * @ignore
-     */
-    public function renderImage($graph, $format = 'png')
-    {
-        $dot = $this->serialiseDot($graph);
-
-        return EasyRdf_Utils::execCommandPipe(
-            $this->dotCommand,
-            array("-T$format"),
-            $dot
-        );
-    }
-
-    /**
-     * Serialise an EasyRdf_Graph into a GraphViz dot document.
-     *
-     * Supported output format names: dot, gif, png, svg
-     *
-     * @param EasyRdf_Graph $graph  An EasyRdf_Graph object.
-     * @param string        $format The name of the format to convert to.
-     * @param array         $options
-     * @throws EasyRdf_Exception
-     * @return string The RDF in the new desired format.
-     */
-    public function serialise($graph, $format, array $options = array())
-    {
-        parent::checkSerialiseParams($graph, $format);
-
-        switch($format) {
-            case 'dot':
-                return $this->serialiseDot($graph);
-            case 'png':
-            case 'gif':
-            case 'svg':
-                return $this->renderImage($graph, $format);
-            default:
-                throw new EasyRdf_Exception(
-                    "EasyRdf_Serialiser_GraphViz does not support: $format"
-                );
-        }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Json.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Json.php
deleted file mode 100644
index 2ff3f59..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Json.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to serialise an EasyRdf_Graph to RDF/JSON
- * with no external dependancies.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Serialiser_Json extends EasyRdf_Serialiser_RdfPhp
-{
-    /**
-     * Method to serialise an EasyRdf_Graph to RDF/JSON
-     *
-     * http://n2.talis.com/wiki/RDF_JSON_Specification
-     * docs/appendix-a-rdf-formats-json.md
-     *
-     * @param EasyRdf_Graph $graph   An EasyRdf_Graph object.
-     * @param string        $format  The name of the format to convert to.
-     * @param array         $options
-     * @throws EasyRdf_Exception
-     * @return string The RDF in the new desired format.
-     */
-    public function serialise($graph, $format, array $options = array())
-    {
-        parent::checkSerialiseParams($graph, $format);
-
-        if ($format != 'json') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Serialiser_Json does not support: $format"
-            );
-        }
-
-        return json_encode(parent::serialise($graph, 'php'));
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd.php
deleted file mode 100644
index 4265773..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-if (PHP_MAJOR_VERSION > 5 or (PHP_MAJOR_VERSION == 5 and PHP_MINOR_VERSION >= 3)) {
-    require dirname(__FILE__).'/JsonLd_real.php';
-} else {
-    throw new LogicException("JSON-LD support requires PHP 5.3+");
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd_real.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd_real.php
deleted file mode 100644
index 4fb6c49..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd_real.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to serialise an EasyRdf_Graph to JSON-LD
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2013 Alexey Zakhlestin
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Serialiser_JsonLd extends EasyRdf_Serialiser
-{
-    public function __construct()
-    {
-        if (!class_exists('\ML\JsonLD\JsonLD')) {
-            throw new LogicException('Please install "ml/json-ld" dependency to use JSON-LD serialisation');
-        }
-
-        parent::__construct();
-    }
-
-    /**
-     * @param EasyRdf_Graph $graph
-     * @param string        $format
-     * @param array         $options
-     * @throws EasyRdf_Exception
-     * @return string
-     */
-    public function serialise($graph, $format, array $options = array())
-    {
-        parent::checkSerialiseParams($graph, $format);
-
-        if ($format != 'jsonld') {
-            throw new EasyRdf_Exception(__CLASS__.' does not support: '.$format);
-        }
-
-
-        $ld_graph = new \ML\JsonLD\Graph();
-        $nodes = array(); // cache for id-to-node association
-
-        foreach ($graph->toRdfPhp() as $resource => $properties) {
-            if (array_key_exists($resource, $nodes)) {
-                $node = $nodes[$resource];
-            } else {
-                $node = $ld_graph->createNode($resource);
-                $nodes[$resource] = $node;
-            }
-
-            foreach ($properties as $property => $values) {
-                foreach ($values as $value) {
-                    if ($value['type'] == 'bnode' or $value['type'] == 'uri') {
-                        if (array_key_exists($value['value'], $nodes)) {
-                            $_value = $nodes[$value['value']];
-                        } else {
-                            $_value = $ld_graph->createNode($value['value']);
-                            $nodes[$value['value']] = $_value;
-                        }
-                    } elseif ($value['type'] == 'literal') {
-                        if (isset($value['lang'])) {
-                            $_value = new \ML\JsonLD\LanguageTaggedString($value['value'], $value['lang']);
-                        } elseif (isset($value['datatype'])) {
-                            $_value = new \ML\JsonLD\TypedValue($value['value'], $value['datatype']);
-                        } else {
-                            $_value = $value['value'];
-                        }
-                    } else {
-                        throw new EasyRdf_Exception(
-                            "Unable to serialise object to JSON-LD: ".$value['type']
-                        );
-                    }
-
-                    if ($property == "http://www.w3.org/1999/02/22-rdf-syntax-ns#type") {
-                        $node->addType($_value);
-                    } else {
-                        $node->addPropertyValue($property, $_value);
-                    }
-                }
-            }
-        }
-
-        // OPTIONS
-        $use_native_types = !(isset($options['expand_native_types']) and $options['expand_native_types'] == true);
-        $should_compact = (isset($options['compact']) and $options['compact'] == true);
-        $should_frame = isset($options['frame']);
-
-        // expanded form
-        $data = $ld_graph->toJsonLd($use_native_types);
-
-        if ($should_frame) {
-            $data = \ML\JsonLD\JsonLD::frame($data, $options['frame'], $options);
-
-        }
-
-        if ($should_compact) {
-            // compact form
-            $compact_context = isset($options['context']) ? $options['context'] : null;
-            $compact_options = array(
-                'useNativeTypes' => $use_native_types,
-                'base' => $graph->getUri()
-            );
-
-            $data = \ML\JsonLD\JsonLD::compact($data, $compact_context, $compact_options);
-        }
-
-        return \ML\JsonLD\JsonLD::toString($data);
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Ntriples.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Ntriples.php
deleted file mode 100644
index d77a638..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Ntriples.php
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to serialise an EasyRdf_Graph to N-Triples
- * with no external dependancies.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Serialiser_Ntriples extends EasyRdf_Serialiser
-{
-    private $escChars = array();   // Character encoding cache
-
-    /**
-     * @ignore
-     */
-    protected function escapeString($str)
-    {
-        if (strpos(utf8_decode(str_replace('?', '', $str)), '?') === false) {
-            $str = utf8_decode($str);
-        }
-
-        $result = '';
-        $strLen = strlen($str);
-        for ($i = 0; $i < $strLen; $i++) {
-            $c = $str[$i];
-            if (!isset($this->escChars[$c])) {
-                $this->escChars[$c] = $this->escapedChar($c);
-            }
-            $result .= $this->escChars[$c];
-        }
-        return $result;
-    }
-
-    /**
-     * @ignore
-     */
-    protected function unicodeCharNo($c)
-    {
-        $cUtf = utf8_encode($c);
-        $bl = strlen($cUtf); /* binary length */
-        $r = 0;
-        switch ($bl) {
-            case 1: /* 0####### (0-127) */
-                $r = ord($cUtf);
-                break;
-            case 2: /* 110##### 10###### = 192+x 128+x */
-                $r = ((ord($cUtf[0]) - 192) * 64) +
-                     (ord($cUtf[1]) - 128);
-                break;
-            case 3: /* 1110#### 10###### 10###### = 224+x 128+x 128+x */
-                $r = ((ord($cUtf[0]) - 224) * 4096) +
-                     ((ord($cUtf[1]) - 128) * 64) +
-                     (ord($cUtf[2]) - 128);
-                break;
-            case 4: /* 1111#### 10###### 10###### 10###### = 240+x 128+x 128+x 128+x */
-                $r = ((ord($cUtf[0]) - 240) * 262144) +
-                     ((ord($cUtf[1]) - 128) * 4096) +
-                     ((ord($cUtf[2]) - 128) * 64) +
-                     (ord($cUtf[3]) - 128);
-                break;
-        }
-        return $r;
-    }
-
-    /**
-     * @ignore
-     */
-    protected function escapedChar($c)
-    {
-        $no = $this->unicodeCharNo($c);
-
-        /* see http://www.w3.org/TR/rdf-testcases/#ntrip_strings */
-        if ($no < 9) {
-            return "\\u" . sprintf('%04X', $no);  /* #x0-#x8 (0-8) */
-        } elseif ($no == 9) {
-            return '\t';                          /* #x9 (9) */
-        } elseif ($no == 10) {
-            return '\n';                          /* #xA (10) */
-        } elseif ($no < 13) {
-            return "\\u" . sprintf('%04X', $no);  /* #xB-#xC (11-12) */
-        } elseif ($no == 13) {
-            return '\r';                          /* #xD (13) */
-        } elseif ($no < 32) {
-            return "\\u" . sprintf('%04X', $no);  /* #xE-#x1F (14-31) */
-        } elseif ($no < 34) {
-            return $c;                            /* #x20-#x21 (32-33) */
-        } elseif ($no == 34) {
-            return '\"';                          /* #x22 (34) */
-        } elseif ($no < 92) {
-            return $c;                            /* #x23-#x5B (35-91) */
-        } elseif ($no == 92) {
-            return '\\';                          /* #x5C (92) */
-        } elseif ($no < 127) {
-            return $c;                            /* #x5D-#x7E (93-126) */
-        } elseif ($no < 65536) {
-            return "\\u" . sprintf('%04X', $no);  /* #x7F-#xFFFF (128-65535) */
-        } elseif ($no < 1114112) {
-            return "\\U" . sprintf('%08X', $no);  /* #x10000-#x10FFFF (65536-1114111) */
-        } else {
-            return '';                            /* not defined => ignore */
-        }
-    }
-
-    /**
-     * @ignore
-     */
-    protected function serialiseResource($res)
-    {
-        $escaped = $this->escapeString($res);
-        if (substr($res, 0, 2) == '_:') {
-            return $escaped;
-        } else {
-            return "<$escaped>";
-        }
-    }
-
-    /**
-     * Serialise an RDF value into N-Triples
-     *
-     * The value can either be an array in RDF/PHP form, or
-     * an EasyRdf_Literal or EasyRdf_Resource object.
-     *
-     * @param array|object  $value   An associative array or an object
-     * @throws EasyRdf_Exception
-     * @return string The RDF value serialised to N-Triples
-     */
-    public function serialiseValue($value)
-    {
-        if (is_object($value)) {
-            $value = $value->toRdfPhp();
-        }
-
-        if ($value['type'] == 'uri' or $value['type'] == 'bnode') {
-            return $this->serialiseResource($value['value']);
-        } elseif ($value['type'] == 'literal') {
-            $escaped = $this->escapeString($value['value']);
-            if (isset($value['lang'])) {
-                $lang = $this->escapeString($value['lang']);
-                return '"' . $escaped . '"' . '@' . $lang;
-            } elseif (isset($value['datatype'])) {
-                $datatype = $this->escapeString($value['datatype']);
-                return '"' . $escaped . '"' . "^^<$datatype>";
-            } else {
-                return '"' . $escaped . '"';
-            }
-        } else {
-            throw new EasyRdf_Exception(
-                "Unable to serialise object of type '".$value['type']."' to ntriples: "
-            );
-        }
-    }
-
-    /**
-     * Serialise an EasyRdf_Graph into N-Triples
-     *
-     * @param EasyRdf_Graph $graph   An EasyRdf_Graph object.
-     * @param string        $format  The name of the format to convert to.
-     * @param array         $options
-     * @throws EasyRdf_Exception
-     * @return string The RDF in the new desired format.
-     */
-    public function serialise($graph, $format, array $options = array())
-    {
-        parent::checkSerialiseParams($graph, $format);
-
-        if ($format == 'ntriples') {
-            $nt = '';
-            foreach ($graph->toRdfPhp() as $resource => $properties) {
-                foreach ($properties as $property => $values) {
-                    foreach ($values as $value) {
-                        $nt .= $this->serialiseResource($resource)." ";
-                        $nt .= "<" . $this->escapeString($property) . "> ";
-                        $nt .= $this->serialiseValue($value)." .\n";
-                    }
-                }
-            }
-            return $nt;
-        } else {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Serialiser_Ntriples does not support: $format"
-            );
-        }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Rapper.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Rapper.php
deleted file mode 100644
index ba42bc5..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Rapper.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to serialise an EasyRdf_Graph to RDF
- * using the 'rapper' command line tool.
- *
- * Note: the built-in N-Triples serialiser is used to pass data to Rapper.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Serialiser_Rapper extends EasyRdf_Serialiser_Ntriples
-{
-    private $rapperCmd = null;
-
-    /**
-     * Constructor
-     *
-     * @param string $rapperCmd Optional path to the rapper command to use.
-     * @return object EasyRdf_Serialiser_Rapper
-     */
-    public function __construct($rapperCmd = 'rapper')
-    {
-        $result = exec("$rapperCmd --version 2>/dev/null", $output, $status);
-        if ($status != 0) {
-            throw new EasyRdf_Exception(
-                "Failed to execute the command '$rapperCmd': $result"
-            );
-        } else {
-            $this->rapperCmd = $rapperCmd;
-        }
-    }
-
-    /**
-     * Serialise an EasyRdf_Graph to the RDF format of choice.
-     *
-     * @param EasyRdf_Graph $graph   An EasyRdf_Graph object.
-     * @param string        $format  The name of the format to convert to.
-     * @param array         $options
-     * @return string The RDF in the new desired format.
-     */
-    public function serialise($graph, $format, array $options = array())
-    {
-        parent::checkSerialiseParams($graph, $format);
-
-        $ntriples = parent::serialise($graph, 'ntriples');
-
-        // Hack to produce more concise RDF/XML
-        if ($format == 'rdfxml') {
-            $format = 'rdfxml-abbrev';
-        }
-
-        return EasyRdf_Utils::execCommandPipe(
-            $this->rapperCmd,
-            array(
-                '--quiet',
-                '--input', 'ntriples',
-                '--output', $format,
-                '-', 'unknown://'
-            ),
-            $ntriples
-        );
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/RdfPhp.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/RdfPhp.php
deleted file mode 100644
index ed851af..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/RdfPhp.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to serialise an EasyRdf_Graph to RDF/PHP
- * with no external dependancies.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Serialiser_RdfPhp extends EasyRdf_Serialiser
-{
-    /**
-     * Method to serialise an EasyRdf_Graph to RDF/PHP
-     *
-     * http://n2.talis.com/wiki/RDF_PHP_Specification
-     * docs/appendix-a-rdf-formats-php.md
-     *
-     * @param EasyRdf_Graph $graph   An EasyRdf_Graph object.
-     * @param string        $format  The name of the format to convert to.
-     * @param array         $options
-     * @throws EasyRdf_Exception
-     * @return string The RDF in the new desired format.
-     */
-    public function serialise($graph, $format, array $options = array())
-    {
-        parent::checkSerialiseParams($graph, $format);
-
-        if ($format != 'php') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Serialiser_RdfPhp does not support: $format"
-            );
-        }
-
-        // Graph is already stored as RDF/PHP resource-centric array internally within the EasyRdf_Graph object
-        return $graph->toRdfPhp();
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/RdfXml.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/RdfXml.php
deleted file mode 100644
index 289d7dc..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/RdfXml.php
+++ /dev/null
@@ -1,247 +0,0 @@
-<?php
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to serialise an EasyRdf_Graph to RDF/XML
- * with no external dependancies.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Serialiser_RdfXml extends EasyRdf_Serialiser
-{
-    private $outputtedResources = array();
-
-    /** A constant for the RDF Type property URI */
-    const RDF_XML_LITERAL = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral';
-
-    /**
-     * Protected method to serialise an object node into an XML object
-     * @ignore
-     */
-    protected function rdfxmlObject($property, $obj, $depth)
-    {
-        $indent = str_repeat('  ', $depth);
-
-        if ($property[0] === ':') {
-            $property = substr($property, 1);
-        }
-
-        if (is_object($obj) and $obj instanceof EasyRdf_Resource) {
-            $pcount = count($obj->propertyUris());
-            $rpcount = $this->reversePropertyCount($obj);
-            $alreadyOutput = isset($this->outputtedResources[$obj->getUri()]);
-
-            $tag = "{$indent}<{$property}";
-            if ($obj->isBNode()) {
-                if ($alreadyOutput or $rpcount > 1 or $pcount == 0) {
-                    $tag .= " rdf:nodeID=\"".htmlspecialchars($obj->getBNodeId()).'"';
-                }
-            } else {
-                if ($alreadyOutput or $rpcount != 1 or $pcount == 0) {
-                    $tag .= " rdf:resource=\"".htmlspecialchars($obj->getURI()).'"';
-                }
-            }
-
-            if ($alreadyOutput == false and $rpcount == 1 and $pcount > 0) {
-                $xml = $this->rdfxmlResource($obj, false, $depth+1);
-                if ($xml) {
-                    return "$tag>$xml$indent</$property>\n\n";
-                } else {
-                    return '';
-                }
-            } else {
-                return $tag."/>\n";
-            }
-
-        } elseif (is_object($obj) and $obj instanceof EasyRdf_Literal) {
-            $atrributes = "";
-            $datatype = $obj->getDatatypeUri();
-            if ($datatype) {
-                if ($datatype == self::RDF_XML_LITERAL) {
-                    $atrributes .= " rdf:parseType=\"Literal\"";
-                    $value = strval($obj);
-                } else {
-                    $datatype = htmlspecialchars($datatype);
-                    $atrributes .= " rdf:datatype=\"$datatype\"";
-                }
-            } elseif ($obj->getLang()) {
-                $atrributes .= ' xml:lang="'.
-                               htmlspecialchars($obj->getLang()).'"';
-            }
-
-            // Escape the value
-            if (!isset($value)) {
-                $value = htmlspecialchars(strval($obj));
-            }
-
-            return "{$indent}<{$property}{$atrributes}>{$value}</{$property}>\n";
-        } else {
-            throw new EasyRdf_Exception(
-                "Unable to serialise object to xml: ".getType($obj)
-            );
-        }
-    }
-
-    /**
-     * Protected method to serialise a whole resource and its properties
-     * @ignore
-     */
-    protected function rdfxmlResource($res, $showNodeId, $depth = 1)
-    {
-        // Keep track of the resources we have already serialised
-        if (isset($this->outputtedResources[$res->getUri()])) {
-            return '';
-        } else {
-            $this->outputtedResources[$res->getUri()] = true;
-        }
-
-        // If the resource has no properties - don't serialise it
-        $properties = $res->propertyUris();
-        if (count($properties) == 0) {
-            return '';
-        }
-
-        $type = $res->type();
-        if ($type) {
-            $this->addPrefix($type);
-        } else {
-            $type = 'rdf:Description';
-        }
-
-        $indent = str_repeat('  ', $depth);
-        $xml = "\n$indent<$type";
-        if ($res->isBNode()) {
-            if ($showNodeId) {
-                $xml .= ' rdf:nodeID="'.htmlspecialchars($res->getBNodeId()).'"';
-            }
-        } else {
-            $xml .= ' rdf:about="'.htmlspecialchars($res->getUri()).'"';
-        }
-        $xml .= ">\n";
-
-        if ($res instanceof EasyRdf_Container) {
-            foreach ($res as $item) {
-                $xml .= $this->rdfxmlObject('rdf:li', $item, $depth+1);
-            }
-        } else {
-            foreach ($properties as $property) {
-                $short = EasyRdf_Namespace::shorten($property, true);
-                if ($short) {
-                    $this->addPrefix($short);
-                    $objects = $res->all("<$property>");
-                    if ($short == 'rdf:type' && $type != 'rdf:Description') {
-                        array_shift($objects);
-                    }
-                    foreach ($objects as $object) {
-                        $xml .= $this->rdfxmlObject($short, $object, $depth+1);
-                    }
-                } else {
-                    throw new EasyRdf_Exception(
-                        "It is not possible to serialse the property ".
-                        "'$property' to RDF/XML."
-                    );
-                }
-            }
-        }
-        $xml .= "$indent</$type>\n";
-
-        return $xml;
-    }
-
-
-    /**
-     * Method to serialise an EasyRdf_Graph to RDF/XML
-     *
-     * @param EasyRdf_Graph $graph   An EasyRdf_Graph object.
-     * @param string        $format  The name of the format to convert to.
-     * @param array         $options
-     * @throws EasyRdf_Exception
-     * @return string The RDF in the new desired format.
-     */
-    public function serialise($graph, $format, array $options = array())
-    {
-        parent::checkSerialiseParams($graph, $format);
-
-        if ($format != 'rdfxml') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Serialiser_RdfXml does not support: $format"
-            );
-        }
-
-        // store of namespaces to be appended to the rdf:RDF tag
-        $this->prefixes = array('rdf' => true);
-
-        // store of the resource URIs we have serialised
-        $this->outputtedResources = array();
-
-        $xml = '';
-
-        // Serialise URIs first
-        foreach ($graph->resources() as $resource) {
-            if (!$resource->isBnode()) {
-                $xml .= $this->rdfxmlResource($resource, true);
-            }
-        }
-
-        // Serialise bnodes afterwards
-        foreach ($graph->resources() as $resource) {
-            if ($resource->isBnode()) {
-                $xml .= $this->rdfxmlResource($resource, true);
-            }
-        }
-
-        // iterate through namepsaces array prefix and output a string.
-        $namespaceStr = '';
-        foreach ($this->prefixes as $prefix => $count) {
-            $url = EasyRdf_Namespace::get($prefix);
-
-            if (strlen($namespaceStr)) {
-                $namespaceStr .= "\n        ";
-            }
-
-            if (strlen($prefix) === 0) {
-                $namespaceStr .= ' xmlns="'.htmlspecialchars($url).'"';
-            } else {
-                $namespaceStr .= ' xmlns:'.$prefix.'="'.htmlspecialchars($url).'"';
-            }
-        }
-
-        return "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n".
-               "<rdf:RDF". $namespaceStr . ">\n" . $xml . "\n</rdf:RDF>\n";
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Turtle.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Turtle.php
deleted file mode 100644
index b268201..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/Turtle.php
+++ /dev/null
@@ -1,363 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to serialise an EasyRdf_Graph to Turtle
- * with no external dependancies.
- *
- * http://www.w3.org/TR/turtle/
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Serialiser_Turtle extends EasyRdf_Serialiser
-{
-    private $outputtedBnodes = array();
-
-    /**
-     * Given a IRI string, escape and enclose in angle brackets.
-     *
-     * @param  string $resourceIri
-     * @return string
-     */
-    public static function escapeIri($resourceIri)
-    {
-        $escapedIri = str_replace('>', '\\>', $resourceIri);
-        return "<$escapedIri>";
-    }
-
-    /**
-     * Given a string, enclose in quotes and escape any quotes in the string.
-     * Strings containing tabs, linefeeds or carriage returns will be
-     * enclosed in three double quotes (""").
-     *
-     * @param  string $value
-     * @return string
-     */
-    public static function quotedString($value)
-    {
-        if (preg_match('/[\t\n\r]/', $value)) {
-            $escaped = str_replace(array('\\', '"""'), array('\\\\', '\\"""'), $value);
-            return '"""'.$escaped.'"""';
-        } else {
-            $escaped = str_replace(array('\\', '"'), array('\\\\', '\\"'), $value);
-            return '"'.$escaped.'"';
-        }
-    }
-
-    /**
-     * Given a an EasyRdf_Resource or URI, convert it into a string, suitable to
-     * be written to a Turtle document. URIs will be shortened into CURIES
-     * where possible.
-     *
-     * @param  EasyRdf_Resource $resource   The resource to convert to a Turtle string
-     * @param  boolean $createNamespace     If true, a new namespace may be created
-     * @return string
-     */
-    public function serialiseResource($resource, $createNamespace = false)
-    {
-        if (is_object($resource)) {
-            if ($resource->isBNode()) {
-                return $resource->getUri();
-            }
-
-            $resource = $resource->getUri();
-        }
-
-        $short = EasyRdf_Namespace::shorten($resource, $createNamespace);
-
-        if ($short) {
-            $this->addPrefix($short);
-            return $short;
-        }
-
-        return self::escapeIri($resource);
-    }
-
-    /**
-     * Given an EasyRdf_Literal object, convert it into a string, suitable to
-     * be written to a Turtle document. Supports multiline literals and literals with
-     * datatypes or languages.
-     *
-     * @param  EasyRdf_Literal $literal
-     * @return string
-     */
-    public function serialiseLiteral($literal)
-    {
-        $value = strval($literal);
-        $quoted = self::quotedString($value);
-
-        if ($datatype = $literal->getDatatypeUri()) {
-            if ($datatype == 'http://www.w3.org/2001/XMLSchema#integer') {
-                return sprintf('%d', $value);
-            } elseif ($datatype == 'http://www.w3.org/2001/XMLSchema#decimal') {
-                return sprintf('%s', $value);
-            } elseif ($datatype == 'http://www.w3.org/2001/XMLSchema#double') {
-                return sprintf('%e', $value);
-            } elseif ($datatype == 'http://www.w3.org/2001/XMLSchema#boolean') {
-                return sprintf('%s', $value);
-            } else {
-                $escaped = $this->serialiseResource($datatype, true);
-                return sprintf('%s^^%s', $quoted, $escaped);
-            }
-        } elseif ($lang = $literal->getLang()) {
-            return $quoted . '@' . $lang;
-        } else {
-            return $quoted;
-        }
-    }
-
-    /**
-     * Convert an EasyRdf object into a string suitable to
-     * be written to a Turtle document.
-     *
-     * @param  EasyRdf_Resource|EasyRdf_Literal $object
-     * @return string
-     */
-    public function serialiseObject($object)
-    {
-        if ($object instanceof EasyRdf_Resource) {
-            return $this->serialiseResource($object);
-        } elseif ($object instanceof EasyRdf_Literal) {
-            return $this->serialiseLiteral($object);
-        } else {
-            throw new InvalidArgumentException(
-                "serialiseObject() requires \$object to be ".
-                "of type EasyRdf_Resource or EasyRdf_Literal"
-            );
-        }
-    }
-
-
-    /**
-     * Protected method to serialise a RDF collection
-     * @ignore
-     */
-    protected function serialiseCollection($node, $indent)
-    {
-        $turtle = '(';
-        $count = 0;
-        while ($node) {
-            if ($id = $node->getBNodeId()) {
-                $this->outputtedBnodes[$id] = true;
-            }
-
-            $value = $node->get('rdf:first');
-            $node = $node->get('rdf:rest');
-            if ($node and $node->hasProperty('rdf:first')) {
-                $count++;
-            }
-
-            if ($value !== null) {
-                $serialised = $this->serialiseObject($value);
-                if ($count) {
-                    $turtle .= "\n$indent  $serialised";
-                } else {
-                    $turtle .= " ".$serialised;
-                }
-            }
-        }
-        if ($count) {
-            $turtle .= "\n$indent)";
-        } else {
-            $turtle .= " )";
-        }
-        return $turtle;
-    }
-
-    /**
-     * Protected method to serialise the properties of a resource
-     * @ignore
-     */
-    protected function serialiseProperties($res, $depth = 1)
-    {
-        $properties = $res->propertyUris();
-        $indent = str_repeat(' ', ($depth*2)-1);
-
-        $turtle = '';
-        if (count($properties) > 1) {
-            $turtle .= "\n$indent";
-        }
-
-        $pCount = 0;
-        foreach ($properties as $property) {
-            if ($property === 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type') {
-                $pStr = 'a';
-            } else {
-                $pStr = $this->serialiseResource($property, true);
-            }
-
-            if ($pCount) {
-                $turtle .= " ;\n$indent";
-            }
-
-            $turtle .= ' ' . $pStr;
-
-            $oCount = 0;
-            foreach ($res->all("<$property>") as $object) {
-                if ($oCount) {
-                    $turtle .= ',';
-                }
-
-                if ($object instanceof EasyRdf_Collection) {
-                    $turtle .= ' ' . $this->serialiseCollection($object, $indent);
-                } elseif ($object instanceof EasyRdf_Resource and $object->isBNode()) {
-                    $id = $object->getBNodeId();
-                    $rpcount = $this->reversePropertyCount($object);
-                    if ($rpcount <= 1 and !isset($this->outputtedBnodes[$id])) {
-                        // Nested unlabelled Blank Node
-                        $this->outputtedBnodes[$id] = true;
-                        $turtle .= ' [';
-                        $turtle .= $this->serialiseProperties($object, $depth+1);
-                        $turtle .= ' ]';
-                    } else {
-                        // Multiple properties pointing to this blank node
-                        $turtle .= ' ' . $this->serialiseObject($object);
-                    }
-                } else {
-                    $turtle .= ' ' . $this->serialiseObject($object);
-                }
-                $oCount++;
-            }
-            $pCount++;
-        }
-
-        if ($depth == 1) {
-            $turtle .= " .";
-            if ($pCount > 1) {
-                $turtle .= "\n";
-            }
-        } elseif ($pCount > 1) {
-            $turtle .= "\n" . str_repeat(' ', (($depth-1)*2)-1);
-        }
-
-        return $turtle;
-    }
-
-    /**
-     * @ignore
-     */
-    protected function serialisePrefixes()
-    {
-        $turtle = '';
-        foreach ($this->prefixes as $prefix => $count) {
-            $url = EasyRdf_Namespace::get($prefix);
-            $turtle .= "@prefix $prefix: <$url> .\n";
-        }
-        return $turtle;
-    }
-
-    /**
-     * @ignore
-     */
-    protected function serialiseSubjects(EasyRdf_Graph $graph, $filterType)
-    {
-        $turtle = '';
-        foreach ($graph->resources() as $resource) {
-            /** @var $resource EasyRdf_Resource */
-            // If the resource has no properties - don't serialise it
-            $properties = $resource->propertyUris();
-            if (count($properties) == 0) {
-                continue;
-            }
-
-            // Is this node of the right type?
-            $thisType = $resource->isBNode() ? 'bnode' : 'uri';
-            if ($thisType != $filterType) {
-                continue;
-            }
-
-            if ($thisType == 'bnode') {
-                $id = $resource->getBNodeId();
-
-                if (isset($this->outputtedBnodes[$id])) {
-                    // Already been serialised
-                    continue;
-                }
-
-                $this->outputtedBnodes[$id] = true;
-                $rpcount = $this->reversePropertyCount($resource);
-
-                if ($rpcount == 0) {
-                    $turtle .= '[]';
-                } else {
-                    $turtle .= $this->serialiseResource($resource);
-                }
-            } else {
-                $turtle .= $this->serialiseResource($resource);
-            }
-
-            $turtle .= $this->serialiseProperties($resource);
-            $turtle .= "\n";
-        }
-        return $turtle;
-    }
-
-    /**
-     * Serialise an EasyRdf_Graph to Turtle.
-     *
-     * @param EasyRdf_Graph $graph   An EasyRdf_Graph object.
-     * @param string        $format  The name of the format to convert to.
-     * @param array         $options
-     * @throws EasyRdf_Exception
-     * @return string The RDF in the new desired format.
-     */
-    public function serialise($graph, $format, array $options = array())
-    {
-        parent::checkSerialiseParams($graph, $format);
-
-        if ($format != 'turtle' and $format != 'n3') {
-            throw new EasyRdf_Exception(
-                "EasyRdf_Serialiser_Turtle does not support: $format"
-            );
-        }
-
-        $this->prefixes = array();
-        $this->outputtedBnodes = array();
-
-        $turtle = '';
-        $turtle .= $this->serialiseSubjects($graph, 'uri');
-        $turtle .= $this->serialiseSubjects($graph, 'bnode');
-
-        if (count($this->prefixes)) {
-            return $this->serialisePrefixes() . "\n" . $turtle;
-        } else {
-            return $turtle;
-        }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Sparql/Client.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Sparql/Client.php
deleted file mode 100644
index 5f97138..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Sparql/Client.php
+++ /dev/null
@@ -1,309 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class for making SPARQL queries using the SPARQL 1.1 Protocol
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Sparql_Client
-{
-    /** The query/read address of the SPARQL Endpoint */
-    private $queryUri = null;
-
-    private $queryUri_has_params = false;
-
-    /** The update/write address of the SPARQL Endpoint */
-    private $updateUri = null;
-
-    /** Create a new SPARQL endpoint client
-     *
-     * If the query and update endpoints are the same, then you
-     * only need to give a single URI.
-     *
-     * @param string $queryUri The address of the SPARQL Query Endpoint
-     * @param string $updateUri Optional address of the SPARQL Update Endpoint
-     */
-    public function __construct($queryUri, $updateUri = null)
-    {
-        $this->queryUri = $queryUri;
-
-        if (strlen(parse_url($queryUri, PHP_URL_QUERY)) > 0) {
-            $this->queryUri_has_params = true;
-        } else {
-            $this->queryUri_has_params = false;
-        }
-
-        if ($updateUri) {
-            $this->updateUri = $updateUri;
-        } else {
-            $this->updateUri = $queryUri;
-        }
-    }
-
-    /** Get the URI of the SPARQL query endpoint
-     *
-     * @return string The query URI of the SPARQL endpoint
-     */
-    public function getQueryUri()
-    {
-        return $this->queryUri;
-    }
-
-    /** Get the URI of the SPARQL update endpoint
-     *
-     * @return string The query URI of the SPARQL endpoint
-     */
-    public function getUpdateUri()
-    {
-        return $this->updateUri;
-    }
-
-    /**
-     * @depredated
-     * @ignore
-     */
-    public function getUri()
-    {
-        return $this->queryUri;
-    }
-
-    /** Make a query to the SPARQL endpoint
-     *
-     * SELECT and ASK queries will return an object of type
-     * EasyRdf_Sparql_Result.
-     *
-     * CONSTRUCT and DESCRIBE queries will return an object
-     * of type EasyRdf_Graph.
-     *
-     * @param string $query The query string to be executed
-     * @return object EasyRdf_Sparql_Result|EasyRdf_Graph Result of the query.
-     */
-    public function query($query)
-    {
-        return $this->request('query', $query);
-    }
-
-    /** Count the number of triples in a SPARQL 1.1 endpoint
-     *
-     * Performs a SELECT query to estriblish the total number of triples.
-     *
-     * Counts total number of triples by default but a conditional triple pattern
-     * can be given to count of a subset of all triples.
-     *
-     * @param string $condition Triple-pattern condition for the count query
-     * @return integer The number of triples
-     */
-    public function countTriples($condition = '?s ?p ?o')
-    {
-        // SELECT (COUNT(*) AS ?count)
-        // WHERE {
-        //   {?s ?p ?o}
-        //   UNION
-        //   {GRAPH ?g {?s ?p ?o}}
-        // }
-        $result = $this->query('SELECT (COUNT(*) AS ?count) {'.$condition.'}');
-        return $result[0]->count->getValue();
-    }
-
-    /** Get a list of named graphs from a SPARQL 1.1 endpoint
-     *
-     * Performs a SELECT query to get a list of the named graphs
-     *
-     * @param string $limit Optional limit to the number of results
-     * @return array Array of EasyRdf_Resource objects for each named graph
-     */
-    public function listNamedGraphs($limit = null)
-    {
-        $query = "SELECT DISTINCT ?g WHERE {GRAPH ?g {?s ?p ?o}}";
-        if (!is_null($limit)) {
-            $query .= " LIMIT ".(int)$limit;
-        }
-        $result = $this->query($query);
-
-        // Convert the result object into an array of resources
-        $graphs = array();
-        foreach ($result as $row) {
-            array_push($graphs, $row->g);
-        }
-        return $graphs;
-    }
-
-    /** Make an update request to the SPARQL endpoint
-     *
-     * Successful responses will return the HTTP response object
-     *
-     * Unsuccessful responses will throw an exception
-     *
-     * @param string $query The update query string to be executed
-     * @return object EasyRdf_Http_Response HTTP response
-     */
-    public function update($query)
-    {
-        return $this->request('update', $query);
-    }
-
-    public function insert($data, $graphUri = null)
-    {
-        #$this->updateData('INSET',
-        $query = 'INSERT DATA {';
-        if ($graphUri) {
-            $query .= "GRAPH <$graphUri> {";
-        }
-        $query .= $this->convertToTriples($data);
-        if ($graphUri) {
-            $query .= "}";
-        }
-        $query .= '}';
-        return $this->update($query);
-    }
-
-    protected function updateData($operation, $data, $graphUri = null)
-    {
-        $query = "$operation DATA {";
-        if ($graphUri) {
-            $query .= "GRAPH <$graphUri> {";
-        }
-        $query .= $this->convertToTriples($data);
-        if ($graphUri) {
-            $query .= "}";
-        }
-        $query .= '}';
-        return $this->update($query);
-    }
-
-    public function clear($graphUri, $silent = false)
-    {
-        $query = "CLEAR";
-        if ($silent) {
-            $query .= " SILENT";
-        }
-        if (preg_match('/^all|named|default$/i', $graphUri)) {
-            $query .= " $graphUri";
-        } else {
-            $query .= " GRAPH <$graphUri>";
-        }
-        return $this->update($query);
-    }
-
-    /*
-     * Internal function to make an HTTP request to SPARQL endpoint
-     *
-     * @ignore
-     */
-    protected function request($type, $query)
-    {
-        // Check for undefined prefixes
-        $prefixes = '';
-        foreach (EasyRdf_Namespace::namespaces() as $prefix => $uri) {
-            if (strpos($query, "$prefix:") !== false and
-                strpos($query, "PREFIX $prefix:") === false) {
-                $prefixes .=  "PREFIX $prefix: <$uri>\n";
-            }
-        }
-
-        $client = EasyRdf_Http::getDefaultHttpClient();
-        $client->resetParameters();
-
-        // Tell the server which response formats we can parse
-        $accept = EasyRdf_Format::getHttpAcceptHeader(
-            array(
-              'application/sparql-results+json' => 1.0,
-              'application/sparql-results+xml' => 0.8
-            )
-        );
-        $client->setHeaders('Accept', $accept);
-
-        if ($type == 'update') {
-            $client->setMethod('POST');
-            $client->setUri($this->updateUri);
-            $client->setRawData($prefixes . $query);
-            $client->setHeaders('Content-Type', 'application/sparql-update');
-        } elseif ($type == 'query') {
-            // Use GET if the query is less than 2kB
-            // 2046 = 2kB minus 1 for '?' and 1 for NULL-terminated string on server
-            $encodedQuery = 'query='.urlencode($prefixes . $query);
-            if (strlen($encodedQuery) + strlen($this->queryUri) <= 2046) {
-                $delimiter = $this->queryUri_has_params ? '&' : '?';
-
-                $client->setMethod('GET');
-                $client->setUri($this->queryUri.$delimiter.$encodedQuery);
-            } else {
-                // Fall back to POST instead (which is un-cacheable)
-                $client->setMethod('POST');
-                $client->setUri($this->queryUri);
-                $client->setRawData($encodedQuery);
-                $client->setHeaders('Content-Type', 'application/x-www-form-urlencoded');
-            }
-        }
-
-        $response = $client->request();
-        if ($response->getStatus() == 204) {
-            // No content
-            return $response;
-        } elseif ($response->isSuccessful()) {
-            list($type, $params) = EasyRdf_Utils::parseMimeType(
-                $response->getHeader('Content-Type')
-            );
-            if (strpos($type, 'application/sparql-results') === 0) {
-                return new EasyRdf_Sparql_Result($response->getBody(), $type);
-            } else {
-                return new EasyRdf_Graph($this->queryUri, $response->getBody(), $type);
-            }
-        } else {
-            throw new EasyRdf_Exception(
-                "HTTP request for SPARQL query failed: ".$response->getBody()
-            );
-        }
-    }
-
-    protected function convertToTriples($data)
-    {
-        if (is_string($data)) {
-            return $data;
-        } elseif (is_object($data) and $data instanceof EasyRdf_Graph) {
-            # FIXME: insert Turtle when there is a way of seperateing out the prefixes
-            return $data->serialise('ntriples');
-        } else {
-            throw new EasyRdf_Exception(
-                "Don't know how to convert to triples for SPARQL query: ".$response->getBody()
-            );
-        }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Sparql/Result.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Sparql/Result.php
deleted file mode 100644
index 22001e9..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Sparql/Result.php
+++ /dev/null
@@ -1,384 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class for returned for SPARQL SELECT and ASK query responses.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Sparql_Result extends ArrayIterator
-{
-    private $type = null;
-    private $boolean = null;
-
-    private $ordered = null;
-    private $distinct = null;
-    private $fields = array();
-
-    /** A constant for the SPARQL Query Results XML Format namespace */
-    const SPARQL_XML_RESULTS_NS = 'http://www.w3.org/2005/sparql-results#';
-
-    /** Create a new SPARQL Result object
-     *
-     * You should not normally need to create a SPARQL result
-     * object directly - it will be constructed automatically
-     * for you by EasyRdf_Sparql_Client.
-     *
-     * @param string $data      The SPARQL result body
-     * @param string $mimeType  The MIME type of the result
-     */
-    public function __construct($data, $mimeType)
-    {
-        if ($mimeType == 'application/sparql-results+xml') {
-            return $this->parseXml($data);
-        } elseif ($mimeType == 'application/sparql-results+json') {
-            return $this->parseJson($data);
-        } else {
-            throw new EasyRdf_Exception(
-                "Unsupported SPARQL Query Results format: $mimeType"
-            );
-        }
-    }
-
-    /** Get the query result type (boolean/bindings)
-     *
-     * ASK queries return a result of type 'boolean'.
-     * SELECT query return a result of type 'bindings'.
-     *
-     * @return string The query result type.
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /** Return the boolean value of the query result
-     *
-     * If the query was of type boolean then this method will
-     * return either true or false. If the query was of some other
-     * type then this method will return null.
-     *
-     * @return boolean The result of the query.
-     */
-    public function getBoolean()
-    {
-        return $this->boolean;
-    }
-
-    /** Return true if the result of the query was true.
-     *
-     * @return boolean True if the query result was true.
-     */
-    public function isTrue()
-    {
-        return $this->boolean == true;
-    }
-
-    /** Return false if the result of the query was false.
-     *
-     * @return boolean True if the query result was false.
-     */
-    public function isFalse()
-    {
-        return $this->boolean == false;
-    }
-
-    /** Return the number of fields in a query result of type bindings.
-     *
-     * @return integer The number of fields.
-     */
-    public function numFields()
-    {
-        return count($this->fields);
-    }
-
-    /** Return the number of rows in a query result of type bindings.
-     *
-     * @return integer The number of rows.
-     */
-    public function numRows()
-    {
-        return count($this);
-    }
-
-    /** Get the field names in a query result of type bindings.
-     *
-     * @return array The names of the fields in the result.
-     */
-    public function getFields()
-    {
-        return $this->fields;
-    }
-
-    /** Return a human readable view of the query result.
-     *
-     * This method is intended to be a debugging aid and will
-     * return a pretty-print view of the query result.
-     *
-     * @param  string  $format  Either 'text' or 'html'
-     */
-    public function dump($format = 'html')
-    {
-        if ($this->type == 'bindings') {
-            $result = '';
-            if ($format == 'html') {
-                $result .= "<table class='sparql-results' style='border-collapse:collapse'>";
-                $result .= "<tr>";
-                foreach ($this->fields as $field) {
-                    $result .= "<th style='border:solid 1px #000;padding:4px;".
-                               "vertical-align:top;background-color:#eee;'>".
-                               "?$field</th>";
-                }
-                $result .= "</tr>";
-                foreach ($this as $row) {
-                    $result .= "<tr>";
-                    foreach ($this->fields as $field) {
-                        if (isset($row->$field)) {
-                            $result .= "<td style='border:solid 1px #000;padding:4px;".
-                                       "vertical-align:top'>".
-                                       $row->$field->dumpValue($format)."</td>";
-                        } else {
-                            $result .= "<td>&nbsp;</td>";
-                        }
-                    }
-                    $result .= "</tr>";
-                }
-                $result .= "</table>";
-            } else {
-                // First calculate the width of each comment
-                $colWidths = array();
-                foreach ($this->fields as $field) {
-                    $colWidths[$field] = strlen($field);
-                }
-
-                $textData = array();
-                foreach ($this as $row) {
-                    $textRow = array();
-                    foreach ($row as $k => $v) {
-                        $textRow[$k] = $v->dumpValue('text');
-                        $width = strlen($textRow[$k]);
-                        if ($colWidths[$k] < $width) {
-                            $colWidths[$k] = $width;
-                        }
-                    }
-                    $textData[] = $textRow;
-                }
-
-                // Create a horizontal rule
-                $hr = "+";
-                foreach ($colWidths as $k => $v) {
-                    $hr .= "-".str_repeat('-', $v).'-+';
-                }
-
-                // Output the field names
-                $result .= "$hr\n|";
-                foreach ($this->fields as $field) {
-                    $result .= ' '.str_pad("?$field", $colWidths[$field]).' |';
-                }
-
-                // Output each of the rows
-                $result .= "\n$hr\n";
-                foreach ($textData as $textRow) {
-                    $result .= '|';
-                    foreach ($textRow as $k => $v) {
-                        $result .= ' '.str_pad($v, $colWidths[$k]).' |';
-                    }
-                    $result .= "\n";
-                }
-                $result .= "$hr\n";
-
-            }
-            return $result;
-        } elseif ($this->type == 'boolean') {
-            $str = ($this->boolean ? 'true' : 'false');
-            if ($format == 'html') {
-                return "<p>Result: <span style='font-weight:bold'>$str</span></p>";
-            } else {
-                return "Result: $str";
-            }
-        } else {
-            throw new EasyRdf_Exception(
-                "Failed to dump SPARQL Query Results format, unknown type: ". $this->type
-            );
-        }
-    }
-
-    /** Create a new EasyRdf_Resource or EasyRdf_Literal depending
-     *  on the type of data passed in.
-     *
-     * @ignore
-     */
-    protected function newTerm($data)
-    {
-        switch($data['type']) {
-            case 'bnode':
-                return new EasyRdf_Resource('_:'.$data['value']);
-            case 'uri':
-                return new EasyRdf_Resource($data['value']);
-            case 'literal':
-            case 'typed-literal':
-                return EasyRdf_Literal::create($data);
-            default:
-                throw new EasyRdf_Exception(
-                    "Failed to parse SPARQL Query Results format, unknown term type: ".
-                    $data['type']
-                );
-        }
-    }
-
-    /** Parse a SPARQL result in the XML format into the object.
-     *
-     * @ignore
-     */
-    protected function parseXml($data)
-    {
-        $doc = new DOMDocument();
-        $doc->loadXML($data);
-
-        # Check for valid root node.
-        if ($doc->hasChildNodes() == false or
-            $doc->childNodes->length != 1 or
-            $doc->firstChild->nodeName != 'sparql' or
-            $doc->firstChild->namespaceURI != self::SPARQL_XML_RESULTS_NS) {
-            throw new EasyRdf_Exception(
-                "Incorrect root node in SPARQL XML Query Results format"
-            );
-        }
-
-        # Is it the result of an ASK query?
-        $boolean = $doc->getElementsByTagName('boolean');
-        if ($boolean->length) {
-            $this->type = 'boolean';
-            $value = $boolean->item(0)->nodeValue;
-            $this->boolean = $value == 'true' ? true : false;
-            return;
-        }
-
-        # Get a list of variables from the header
-        $head = $doc->getElementsByTagName('head');
-        if ($head->length) {
-            $variables = $head->item(0)->getElementsByTagName('variable');
-            foreach ($variables as $variable) {
-                $this->fields[] = $variable->getAttribute('name');
-            }
-        }
-
-        # Is it the result of a SELECT query?
-        $resultstag = $doc->getElementsByTagName('results');
-        if ($resultstag->length) {
-            $this->type = 'bindings';
-            $results = $resultstag->item(0)->getElementsByTagName('result');
-            foreach ($results as $result) {
-                $bindings = $result->getElementsByTagName('binding');
-                $t = new stdClass();
-                foreach ($bindings as $binding) {
-                    $key = $binding->getAttribute('name');
-                    foreach ($binding->childNodes as $node) {
-                        if ($node->nodeType != XML_ELEMENT_NODE) {
-                            continue;
-                        }
-                        $t->$key = $this->newTerm(
-                            array(
-                                'type' => $node->nodeName,
-                                'value' => $node->nodeValue,
-                                'lang' => $node->getAttribute('xml:lang'),
-                                'datatype' => $node->getAttribute('datatype')
-                            )
-                        );
-                        break;
-                    }
-                }
-                $this[] = $t;
-            }
-            return $this;
-        }
-
-        throw new EasyRdf_Exception(
-            "Failed to parse SPARQL XML Query Results format"
-        );
-    }
-
-    /** Parse a SPARQL result in the JSON format into the object.
-     *
-     * @ignore
-     */
-    protected function parseJson($data)
-    {
-        // Decode JSON to an array
-        $data = json_decode($data, true);
-
-        if (isset($data['boolean'])) {
-            $this->type = 'boolean';
-            $this->boolean = $data['boolean'];
-        } elseif (isset($data['results'])) {
-            $this->type = 'bindings';
-            if (isset($data['head']['vars'])) {
-                $this->fields = $data['head']['vars'];
-            }
-
-            foreach ($data['results']['bindings'] as $row) {
-                $t = new stdClass();
-                foreach ($row as $key => $value) {
-                    $t->$key = $this->newTerm($value);
-                }
-                $this[] = $t;
-            }
-        } else {
-            throw new EasyRdf_Exception(
-                "Failed to parse SPARQL JSON Query Results format"
-            );
-        }
-    }
-
-    /** Magic method to return value of the result to string
-     *
-     * If this is a boolean result then it will return 'true' or 'false'.
-     * If it is a bindings type, then it will dump as a text based table.
-     *
-     * @return string A string representation of the result.
-     */
-    public function __toString()
-    {
-        if ($this->type == 'boolean') {
-            return $this->boolean ? 'true' : 'false';
-        } else {
-            return $this->dump('text');
-        }
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/TypeMapper.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/TypeMapper.php
deleted file mode 100644
index 81404d2..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/TypeMapper.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-/**
- * Class to map between RDF Types and PHP Classes
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_TypeMapper
-{
-    /** The type map registry */
-    private static $map = array();
-
-    /** Get the registered class for an RDF type
-     *
-     * If a type is not registered, then this method will return null.
-     *
-     * @param  string  $type   The RDF type (e.g. foaf:Person)
-     * @return string          The class name (e.g. Model_Foaf_Name)
-     */
-    public static function get($type)
-    {
-        if (!is_string($type) or $type == null or $type == '') {
-            throw new InvalidArgumentException(
-                "\$type should be a string and cannot be null or empty"
-            );
-        }
-
-        $type = EasyRdf_Namespace::expand($type);
-        if (array_key_exists($type, self::$map)) {
-            return self::$map[$type];
-        } else {
-            return null;
-        }
-    }
-
-    /** Register an RDF type with a PHP Class name
-     *
-     * @param  string  $type   The RDF type (e.g. foaf:Person)
-     * @param  string  $class  The PHP class name (e.g. Model_Foaf_Name)
-     * @return string          The PHP class name
-     */
-    public static function set($type, $class)
-    {
-        if (!is_string($type) or $type == null or $type == '') {
-            throw new InvalidArgumentException(
-                "\$type should be a string and cannot be null or empty"
-            );
-        }
-
-        if (!is_string($class) or $class == null or $class == '') {
-            throw new InvalidArgumentException(
-                "\$class should be a string and cannot be null or empty"
-            );
-        }
-
-        $type = EasyRdf_Namespace::expand($type);
-        return self::$map[$type] = $class;
-    }
-
-    /**
-      * Delete an existing RDF type mapping.
-      *
-      * @param  string  $type   The RDF type (e.g. foaf:Person)
-      */
-    public static function delete($type)
-    {
-        if (!is_string($type) or $type == null or $type == '') {
-            throw new InvalidArgumentException(
-                "\$type should be a string and cannot be null or empty"
-            );
-        }
-
-        $type = EasyRdf_Namespace::expand($type);
-        if (isset(self::$map[$type])) {
-            unset(self::$map[$type]);
-        }
-    }
-}
-
-
-/*
-   Register default set of mapped types
-*/
-
-EasyRdf_TypeMapper::set('rdf:Alt', 'EasyRdf_Container');
-EasyRdf_TypeMapper::set('rdf:Bag', 'EasyRdf_Container');
-EasyRdf_TypeMapper::set('rdf:List', 'EasyRdf_Collection');
-EasyRdf_TypeMapper::set('rdf:Seq', 'EasyRdf_Container');
diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Utils.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Utils.php
deleted file mode 100644
index d854252..0000000
--- a/vendor/easyrdf/easyrdf/lib/EasyRdf/Utils.php
+++ /dev/null
@@ -1,291 +0,0 @@
-<?php
-
-/**
- * EasyRdf
- *
- * LICENSE
- *
- * Copyright (c) 2009-2013 Nicholas J Humfrey.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. The name of the author 'Nicholas J Humfrey" 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.
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-
-
-/**
- * Class containing static utility functions
- *
- * @package    EasyRdf
- * @copyright  Copyright (c) 2009-2013 Nicholas J Humfrey
- * @license    http://www.opensource.org/licenses/bsd-license.php
- */
-class EasyRdf_Utils
-{
-
-    /**
-     * Convert a string into CamelCase
-     *
-     * A capital letter is inserted for any non-letter (including userscore).
-     * For example:
-     * 'hello world' becomes HelloWorld
-     * 'rss-tag-soup' becomes RssTagSoup
-     * 'FOO//BAR' becomes FooBar
-     *
-     * @param string The input string
-     * @return string The input string converted to CamelCase
-     */
-    public static function camelise($str)
-    {
-        $cc = '';
-        foreach (preg_split('/[\W_]+/', $str) as $part) {
-            $cc .= ucfirst(strtolower($part));
-        }
-        return $cc;
-    }
-
-    /**
-     * Check if something is an associative array
-     *
-     * Note: this method only checks the key of the first value in the array.
-     *
-     * @param mixed $param The variable to check
-     * @return bool true if the variable is an associative array
-     */
-    public static function isAssociativeArray($param)
-    {
-        if (is_array($param)) {
-            $keys = array_keys($param);
-            if ($keys[0] === 0) {
-                return false;
-            } else {
-                return true;
-            }
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Remove the fragment from a URI (if it has one)
-     *
-     * @param mixed $uri A URI
-     * @return string The same URI with the fragment removed
-     */
-    public static function removeFragmentFromUri($uri)
-    {
-        $pos = strpos($uri, '#');
-        if ($pos === false) {
-            return $uri;
-        } else {
-            return substr($uri, 0, $pos);
-        }
-    }
-
-    /** Return pretty-print view of a resource URI
-     *
-     * This method is mainly intended for internal use and is used by
-     * EasyRdf_Graph and EasyRdf_Sparql_Result to format a resource
-     * for display.
-     *
-     * @param  mixed  $resource An EasyRdf_Resource object or an associative array
-     * @param  string $format   Either 'html' or 'text'
-     * @param  string $color    The colour of the text
-     * @return string
-     */
-    public static function dumpResourceValue($resource, $format = 'html', $color = 'blue')
-    {
-        if (!preg_match('/^#?[-\w]+$/', $color)) {
-            throw new InvalidArgumentException(
-                "\$color must be a legal color code or name"
-            );
-        }
-
-        if (is_object($resource)) {
-            $resource = strval($resource);
-        } elseif (is_array($resource)) {
-            $resource = $resource['value'];
-        }
-
-        $short = EasyRdf_Namespace::shorten($resource);
-        if ($format == 'html') {
-            $escaped = htmlentities($resource, ENT_QUOTES);
-            if (substr($resource, 0, 2) == '_:') {
-                $href = '#' . $escaped;
-            } else {
-                $href = $escaped;
-            }
-            if ($short) {
-                return "<a href='$href' style='text-decoration:none;color:$color'>$short</a>";
-            } else {
-                return "<a href='$href' style='text-decoration:none;color:$color'>$escaped</a>";
-            }
-        } else {
-            if ($short) {
-                return $short;
-            } else {
-                return $resource;
-            }
-        }
-    }
-
-    /** Return pretty-print view of a literal
-     *
-     * This method is mainly intended for internal use and is used by
-     * EasyRdf_Graph and EasyRdf_Sparql_Result to format a literal
-     * for display.
-     *
-     * @param  mixed  $literal  An EasyRdf_Literal object or an associative array
-     * @param  string $format   Either 'html' or 'text'
-     * @param  string $color    The colour of the text
-     * @return string
-     */
-    public static function dumpLiteralValue($literal, $format = 'html', $color = 'black')
-    {
-        if (!preg_match('/^#?[-\w]+$/', $color)) {
-            throw new InvalidArgumentException(
-                "\$color must be a legal color code or name"
-            );
-        }
-
-        if (is_object($literal)) {
-            $literal = $literal->toRdfPhp();
-        } elseif (!is_array($literal)) {
-            $literal = array('value' => $literal);
-        }
-
-        $text = '"'.$literal['value'].'"';
-        if (isset($literal['lang'])) {
-            $text .= '@' . $literal['lang'];
-        }
-        if (isset($literal['datatype'])) {
-            $short = EasyRdf_Namespace::shorten($literal['datatype']);
-            if ($short) {
-                $text .= "^^$short";
-            } else {
-                $text .= "^^<".$literal['datatype'].">";
-            }
-        }
-
-        if ($format == 'html') {
-            return "<span style='color:$color'>".
-                   htmlentities($text, ENT_COMPAT, "UTF-8").
-                   "</span>";
-        } else {
-            return $text;
-        }
-    }
-
-    /** Clean up and split a mime-type up into its parts
-     *
-     * @param  string $mimeType   A MIME Type, optionally with parameters
-     * @return array  $type, $parameters
-     */
-    public static function parseMimeType($mimeType)
-    {
-        $parts = explode(';', strtolower($mimeType));
-        $type = trim(array_shift($parts));
-        $params = array();
-        foreach ($parts as $part) {
-            if (preg_match('/^\s*(\w+)\s*=\s*(.+?)\s*$/', $part, $matches)) {
-                $params[$matches[1]] = $matches[2];
-            }
-        }
-        return array($type, $params);
-    }
-
-    /** Execute a command as a pipe
-     *
-     * The proc_open() function is used to open a pipe to a
-     * a command line process, writing $input to STDIN, returning STDOUT
-     * and throwing an exception if anything is written to STDERR or the
-     * process returns non-zero.
-     *
-     * @param  string $command   The command to execute
-     * @param  array  $args      Optional list of arguments to pass to the command
-     * @param  string $input     Optional buffer to send to the command
-     * @param  string $dir       Path to directory to run command in (defaults to /tmp)
-     * @return string The result of the command, printed to STDOUT
-     */
-    public static function execCommandPipe($command, $args = null, $input = null, $dir = null)
-    {
-        $descriptorspec = array(
-            0 => array('pipe', 'r'),
-            1 => array('pipe', 'w'),
-            2 => array('pipe', 'w')
-        );
-
-        // Use the system tmp directory by default
-        if (!$dir) {
-            $dir = sys_get_temp_dir();
-        }
-
-        if (is_array($args)) {
-            $fullCommand = implode(
-                ' ',
-                array_map('escapeshellcmd', array_merge(array($command), $args))
-            );
-        } else {
-            $fullCommand = escapeshellcmd($command);
-            if ($args) {
-                $fullCommand .= ' '.escapeshellcmd($args);
-            }
-        }
-
-        $process = proc_open($fullCommand, $descriptorspec, $pipes, $dir);
-        if (is_resource($process)) {
-            // $pipes now looks like this:
-            // 0 => writeable handle connected to child stdin
-            // 1 => readable handle connected to child stdout
-            // 2 => readable handle connected to child stderr
-
-            if ($input) {
-                fwrite($pipes[0], $input);
-            }
-            fclose($pipes[0]);
-
-            $output = stream_get_contents($pipes[1]);
-            fclose($pipes[1]);
-            $error = stream_get_contents($pipes[2]);
-            fclose($pipes[2]);
-
-            // It is important that you close any pipes before calling
-            // proc_close in order to avoid a deadlock
-            $returnValue = proc_close($process);
-            if ($returnValue) {
-                throw new EasyRdf_Exception(
-                    "Error while executing command $command: ".$error
-                );
-            }
-        } else {
-            throw new EasyRdf_Exception(
-                "Failed to execute command $command"
-            );
-        }
-
-        return $output;
-    }
-}
diff --git a/vendor/easyrdf/easyrdf/scripts/copyright_updater.php b/vendor/easyrdf/easyrdf/scripts/copyright_updater.php
deleted file mode 100644
index 557356b..0000000
--- a/vendor/easyrdf/easyrdf/scripts/copyright_updater.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-$ROOT = realpath(__DIR__ . '/..');
-
-function process_file($path) {
-    $year = date('Y', filemtime($path));
-    $contents = file_get_contents($path);
-
-    $copy_statements = 0;
-    $output = '';
-    foreach (preg_split("/[\r\n]/", $contents) as $line) {
-        if (preg_match("/^(.+)Copyright\s+\(c\)\s+(\d+)-?(\d*) (Nicholas.+)$/", $line, $m)) {
-            $copy_statements++;
-            
-            if ($m[2] != $year and $m[3] != $year) {
-                // Change the line
-                $line = "$m[1]Copyright (c) $m[2]-$year $m[4]";
-            }
-        }
-        
-        // Remove trailing whitespace
-        $line = rtrim($line);
-        $output .= "$line\n";
-    }
-    
-    // Remove surplus line endings
-    while (substr($output, -2) == "\n\n") {
-        $output = substr($output, 0, -1);
-    }
-
-    if ($copy_statements == 0) {
-        print "Warning: $path does not contain any copyright statements\n";
-    } else {
-        file_put_contents($path, $output);
-    }
-}
-
-
-function process_directory($path) {
-    $dir = opendir($path);
-    
-    while ($file = readdir($dir)) {
-        if (substr($file, 0, 1) == '.') {
-            continue;
-        }
-
-        $filepath = $path . '/' . $file;
-        if (is_dir($filepath)) {
-            process_directory($filepath);
-        } elseif (is_file($filepath)) {
-            if (substr($file, -4) == '.php') {
-                process_file($filepath);
-            }
-        } else {
-            print "Unknown type: $filepath\n";
-        }
-    }
-    
-    closedir($dir);   
-}
-
-process_directory($ROOT . '/examples');
-process_directory($ROOT . '/lib');
-process_directory($ROOT . '/test');
diff --git a/vendor/egulias/email-validator/.coveralls.yml b/vendor/egulias/email-validator/.coveralls.yml
deleted file mode 100644
index 143c197..0000000
--- a/vendor/egulias/email-validator/.coveralls.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-service_name: travis-ci
-src_dir:  .
-coverage_clover: build/logs/clover*.xml
diff --git a/vendor/egulias/email-validator/.gitignore b/vendor/egulias/email-validator/.gitignore
deleted file mode 100644
index 1630814..0000000
--- a/vendor/egulias/email-validator/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-report/
-vendor/
diff --git a/vendor/egulias/email-validator/.travis.yml b/vendor/egulias/email-validator/.travis.yml
deleted file mode 100644
index f25de0f..0000000
--- a/vendor/egulias/email-validator/.travis.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-sudo: false
-
-language: php
-
-php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-env:
-  global:
-    - deps=no
-
-matrix:
-  fast_finish: true
-  include:
-    - php: 5.3
-      env: deps=low
-    - php: 5.6
-      env: deps=high
-
-install:
-  - if [ "$deps" = "no" ]; then composer install; fi
-  - if [ "$deps" = "low" ]; then composer update --prefer-lowest; fi
-  - if [ "$deps" = "high" ]; then composer update; fi
-
-script:
- - mkdir -p build/logs
- - phpunit --coverage-clover build/logs/clover.xml
-
-after_script:
- - php vendor/bin/coveralls
-
diff --git a/vendor/egulias/email-validator/LICENSE b/vendor/egulias/email-validator/LICENSE
deleted file mode 100644
index de4a25b..0000000
--- a/vendor/egulias/email-validator/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2013 Eduardo Gulias Davis
-
-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/egulias/email-validator/README.md b/vendor/egulias/email-validator/README.md
deleted file mode 100644
index 262693b..0000000
--- a/vendor/egulias/email-validator/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-#EmailValidator
-[![Build Status](https://travis-ci.org/egulias/EmailValidator.png?branch=master)](https://travis-ci.org/egulias/EmailValidator) [![Coverage Status](https://coveralls.io/repos/egulias/EmailValidator/badge.png?branch=master)](https://coveralls.io/r/egulias/EmailValidator?branch=master) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/egulias/EmailValidator/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/egulias/EmailValidator/?branch=master) [![SensioLabsInsight](https://insight.sensiolabs.com/projects/22ba6692-9c02-42e5-a65d-1c5696bfffc6/small.png)](https://insight.sensiolabs.com/projects/22ba6692-9c02-42e5-a65d-1c5696bfffc6)
-=============================
-With the help of
-
-![Powered by PhpStorm](https://www.jetbrains.com/phpstorm/documentation/docs/logo_phpstorm.png)
-##Installation##
-
-Run the command below to install via Composer
-
-```shell
-composer require egulias/email-validator
-```
-
-##Usage##
-
-Simple example:
-
-```php
-<?php
-
-use Egulias\EmailValidator\EmailValidator;
-
-$validator = new EmailValidator;
-if ($validator->isValid($email)) {
-	echo $email . ' is a valid email address';
-}
-```
-
-More advanced example (returns detailed diagnostic error codes):
-
-```php
-<?php
-
-use Egulias\EmailValidator\EmailValidator;
-
-$validator = new EmailValidator;
-$email = 'dominic@sayers.cc';
-$result = $validator->isValid($email);
-
-if ($result) {
-	echo $email . ' is a valid email address';
-} else if ($validator->hasWarnings()) {
-	echo 'Warning! ' . $email . ' has unusual/deprecated features (result code ' . var_export($validator->getWarnings(), true) . ')';
-} else {
-	echo $email . ' is not a valid email address (result code ' . $validator->getError() . ')';
-}
-```
-
-##Contributors##
-As this is a port from another library and work, here are other people related to the previous:
-
-* Ricard Clau [@ricardclau](http://github.com/ricardclau):      	Performance against PHP built-in filter_var
-* Josepf Bielawski [@stloyd](http://github.com/stloyd):      		For its first re-work of Dominic's lib
-* Dominic Sayers [@dominicsayers](http://github.com/dominicsayers):  	The original isemail function
-
-##License##
-Released under the MIT License attached with this code.
-
diff --git a/vendor/egulias/email-validator/composer.json b/vendor/egulias/email-validator/composer.json
deleted file mode 100644
index 1ccb77a..0000000
--- a/vendor/egulias/email-validator/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "name":         "egulias/email-validator",
-  "description":  "A library for validating emails",
-  "homepage":     "https://github.com/egulias/EmailValidator",
-  "type":         "Library",
-  "keywords":     ["email", "validation", "validator", "emailvalidation", "emailvalidator"],
-  "license":      "MIT",
-  "authors": [
-    {"name": "Eduardo Gulias Davis"}
-  ],
-  "extra": {
-    "branch-alias": {
-      "dev-master": "2.0.x-dev"
-    }
-  },
-  "require":      {
-    "php": ">= 5.3.3",
-    "doctrine/lexer": "~1.0,>=1.0.1"
-  },
-  "require-dev" :   {
-    "satooshi/php-coveralls": "dev-master",
-    "phpunit/phpunit": "~4.4"
-  },
-  "autoload": {
-    "psr-0": {
-      "Egulias\\": "src/"
-    }
-  }
-}
diff --git a/vendor/egulias/email-validator/composer.lock b/vendor/egulias/email-validator/composer.lock
deleted file mode 100644
index 49f7df8..0000000
--- a/vendor/egulias/email-validator/composer.lock
+++ /dev/null
@@ -1,1498 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
-        "This file is @generated automatically"
-    ],
-    "hash": "9426f5a00cf0f71d83c287a7c0ff392b",
-    "packages": [
-        {
-            "name": "doctrine/lexer",
-            "version": "v1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/lexer.git",
-                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
-                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Doctrine\\Common\\Lexer\\": "lib/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                }
-            ],
-            "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
-            "homepage": "http://www.doctrine-project.org",
-            "keywords": [
-                "lexer",
-                "parser"
-            ],
-            "time": "2014-09-09 13:34:57"
-        }
-    ],
-    "packages-dev": [
-        {
-            "name": "doctrine/instantiator",
-            "version": "1.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3,<8.0-DEV"
-            },
-            "require-dev": {
-                "athletic/athletic": "~0.1.8",
-                "ext-pdo": "*",
-                "ext-phar": "*",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "~2.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com",
-                    "homepage": "http://ocramius.github.com/"
-                }
-            ],
-            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
-            "keywords": [
-                "constructor",
-                "instantiate"
-            ],
-            "time": "2015-06-14 21:17:01"
-        },
-        {
-            "name": "guzzle/guzzle",
-            "version": "v3.9.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/guzzle3.git",
-                "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9",
-                "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9",
-                "shasum": ""
-            },
-            "require": {
-                "ext-curl": "*",
-                "php": ">=5.3.3",
-                "symfony/event-dispatcher": "~2.1"
-            },
-            "replace": {
-                "guzzle/batch": "self.version",
-                "guzzle/cache": "self.version",
-                "guzzle/common": "self.version",
-                "guzzle/http": "self.version",
-                "guzzle/inflection": "self.version",
-                "guzzle/iterator": "self.version",
-                "guzzle/log": "self.version",
-                "guzzle/parser": "self.version",
-                "guzzle/plugin": "self.version",
-                "guzzle/plugin-async": "self.version",
-                "guzzle/plugin-backoff": "self.version",
-                "guzzle/plugin-cache": "self.version",
-                "guzzle/plugin-cookie": "self.version",
-                "guzzle/plugin-curlauth": "self.version",
-                "guzzle/plugin-error-response": "self.version",
-                "guzzle/plugin-history": "self.version",
-                "guzzle/plugin-log": "self.version",
-                "guzzle/plugin-md5": "self.version",
-                "guzzle/plugin-mock": "self.version",
-                "guzzle/plugin-oauth": "self.version",
-                "guzzle/service": "self.version",
-                "guzzle/stream": "self.version"
-            },
-            "require-dev": {
-                "doctrine/cache": "~1.3",
-                "monolog/monolog": "~1.0",
-                "phpunit/phpunit": "3.7.*",
-                "psr/log": "~1.0",
-                "symfony/class-loader": "~2.1",
-                "zendframework/zend-cache": "2.*,<2.3",
-                "zendframework/zend-log": "2.*,<2.3"
-            },
-            "suggest": {
-                "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.9-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Guzzle": "src/",
-                    "Guzzle\\Tests": "tests/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Michael Dowling",
-                    "email": "mtdowling@gmail.com",
-                    "homepage": "https://github.com/mtdowling"
-                },
-                {
-                    "name": "Guzzle Community",
-                    "homepage": "https://github.com/guzzle/guzzle/contributors"
-                }
-            ],
-            "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
-            "homepage": "http://guzzlephp.org/",
-            "keywords": [
-                "client",
-                "curl",
-                "framework",
-                "http",
-                "http client",
-                "rest",
-                "web service"
-            ],
-            "time": "2015-03-18 18:23:50"
-        },
-        {
-            "name": "phpdocumentor/reflection-docblock",
-            "version": "2.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
-                "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "suggest": {
-                "dflydev/markdown": "~1.0",
-                "erusev/parsedown": "~1.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "phpDocumentor": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "mike.vanriel@naenius.com"
-                }
-            ],
-            "time": "2015-02-03 12:10:50"
-        },
-        {
-            "name": "phpspec/prophecy",
-            "version": "v1.4.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
-                "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.0.2",
-                "phpdocumentor/reflection-docblock": "~2.0",
-                "sebastian/comparator": "~1.1"
-            },
-            "require-dev": {
-                "phpspec/phpspec": "~2.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Konstantin Kudryashov",
-                    "email": "ever.zet@gmail.com",
-                    "homepage": "http://everzet.com"
-                },
-                {
-                    "name": "Marcello Duarte",
-                    "email": "marcello.duarte@gmail.com"
-                }
-            ],
-            "description": "Highly opinionated mocking framework for PHP 5.3+",
-            "homepage": "https://github.com/phpspec/prophecy",
-            "keywords": [
-                "Double",
-                "Dummy",
-                "fake",
-                "mock",
-                "spy",
-                "stub"
-            ],
-            "time": "2015-04-27 22:15:08"
-        },
-        {
-            "name": "phpunit/php-code-coverage",
-            "version": "2.1.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "631e365cf26bb2c078683e8d9bcf8bc631ac4d44"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/631e365cf26bb2c078683e8d9bcf8bc631ac4d44",
-                "reference": "631e365cf26bb2c078683e8d9bcf8bc631ac4d44",
-                "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.0",
-                "sebastian/version": "~1.0"
-            },
-            "require-dev": {
-                "ext-xdebug": ">=2.1.4",
-                "phpunit/phpunit": "~4"
-            },
-            "suggest": {
-                "ext-dom": "*",
-                "ext-xdebug": ">=2.2.1",
-                "ext-xmlwriter": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.1.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
-            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
-            "keywords": [
-                "coverage",
-                "testing",
-                "xunit"
-            ],
-            "time": "2015-06-19 07:11:55"
-        },
-        {
-            "name": "phpunit/php-file-iterator",
-            "version": "1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-                "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb",
-                "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
-            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
-            "keywords": [
-                "filesystem",
-                "iterator"
-            ],
-            "time": "2015-04-02 05:19:05"
-        },
-        {
-            "name": "phpunit/php-text-template",
-            "version": "1.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-text-template.git",
-                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
-                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Simple template engine.",
-            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
-            "keywords": [
-                "template"
-            ],
-            "time": "2015-06-21 13:50:34"
-        },
-        {
-            "name": "phpunit/php-timer",
-            "version": "1.0.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/83fe1bdc5d47658b727595c14da140da92b3d66d",
-                "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Utility class for timing",
-            "homepage": "https://github.com/sebastianbergmann/php-timer/",
-            "keywords": [
-                "timer"
-            ],
-            "time": "2015-06-13 07:35:30"
-        },
-        {
-            "name": "phpunit/php-token-stream",
-            "version": "1.4.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-                "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/7a9b0969488c3c54fd62b4d504b3ec758fd005d9",
-                "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9",
-                "shasum": ""
-            },
-            "require": {
-                "ext-tokenizer": "*",
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Wrapper around PHP's tokenizer extension.",
-            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
-            "keywords": [
-                "tokenizer"
-            ],
-            "time": "2015-06-19 03:43:16"
-        },
-        {
-            "name": "phpunit/phpunit",
-            "version": "4.7.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "f6701ef3faea759acd1910a7751d8d102a7fd5bc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f6701ef3faea759acd1910a7751d8d102a7fd5bc",
-                "reference": "f6701ef3faea759acd1910a7751d8d102a7fd5bc",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-json": "*",
-                "ext-pcre": "*",
-                "ext-reflection": "*",
-                "ext-spl": "*",
-                "php": ">=5.3.3",
-                "phpspec/prophecy": "~1.3,>=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.2",
-                "sebastian/exporter": "~1.2",
-                "sebastian/global-state": "~1.0",
-                "sebastian/version": "~1.0",
-                "symfony/yaml": "~2.1|~3.0"
-            },
-            "suggest": {
-                "phpunit/php-invoker": "~1.1"
-            },
-            "bin": [
-                "phpunit"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.7.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "The PHP Unit Testing framework.",
-            "homepage": "https://phpunit.de/",
-            "keywords": [
-                "phpunit",
-                "testing",
-                "xunit"
-            ],
-            "time": "2015-06-21 07:23:36"
-        },
-        {
-            "name": "phpunit/phpunit-mock-objects",
-            "version": "2.3.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-                "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/92408bb1968a81b3217a6fdf6c1a198da83caa35",
-                "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "~1.0,>=1.0.2",
-                "php": ">=5.3.3",
-                "phpunit/php-text-template": "~1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "suggest": {
-                "ext-soap": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Mock Object library for PHPUnit",
-            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
-            "keywords": [
-                "mock",
-                "xunit"
-            ],
-            "time": "2015-06-11 15:55:48"
-        },
-        {
-            "name": "psr/log",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
-                "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
-                "shasum": ""
-            },
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "Psr\\Log\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for logging libraries",
-            "keywords": [
-                "log",
-                "psr",
-                "psr-3"
-            ],
-            "time": "2012-12-21 11:40:51"
-        },
-        {
-            "name": "satooshi/php-coveralls",
-            "version": "dev-master",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/satooshi/php-coveralls.git",
-                "reference": "2fbf803803d179ab1082807308a67bbd5a760c70"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/2fbf803803d179ab1082807308a67bbd5a760c70",
-                "reference": "2fbf803803d179ab1082807308a67bbd5a760c70",
-                "shasum": ""
-            },
-            "require": {
-                "ext-json": "*",
-                "ext-simplexml": "*",
-                "guzzle/guzzle": ">=2.7",
-                "php": ">=5.3",
-                "psr/log": "1.0.0",
-                "symfony/config": ">=2.0",
-                "symfony/console": ">=2.0",
-                "symfony/stopwatch": ">=2.2",
-                "symfony/yaml": ">=2.0"
-            },
-            "require-dev": {
-                "apigen/apigen": "2.8.*@stable",
-                "pdepend/pdepend": "dev-master as 2.0.0",
-                "phpmd/phpmd": "dev-master",
-                "phpunit/php-invoker": ">=1.1.0,<1.2.0",
-                "phpunit/phpunit": "3.7.*@stable",
-                "sebastian/finder-facade": "dev-master",
-                "sebastian/phpcpd": "1.4.*@stable",
-                "squizlabs/php_codesniffer": "1.4.*@stable",
-                "theseer/fdomdocument": "dev-master"
-            },
-            "suggest": {
-                "symfony/http-kernel": "Allows Symfony integration"
-            },
-            "bin": [
-                "composer/bin/coveralls"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "0.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Satooshi\\Component": "src/",
-                    "Satooshi\\Bundle": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Kitamura Satoshi",
-                    "email": "with.no.parachute@gmail.com",
-                    "homepage": "https://www.facebook.com/satooshi.jp"
-                }
-            ],
-            "description": "PHP client library for Coveralls API",
-            "homepage": "https://github.com/satooshi/php-coveralls",
-            "keywords": [
-                "ci",
-                "coverage",
-                "github",
-                "test"
-            ],
-            "time": "2014-11-11 15:35:34"
-        },
-        {
-            "name": "sebastian/comparator",
-            "version": "1.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "1dd8869519a225f7f2b9eb663e225298fade819e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e",
-                "reference": "1dd8869519a225f7f2b9eb663e225298fade819e",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "sebastian/diff": "~1.2",
-                "sebastian/exporter": "~1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides the functionality to compare PHP values for equality",
-            "homepage": "http://www.github.com/sebastianbergmann/comparator",
-            "keywords": [
-                "comparator",
-                "compare",
-                "equality"
-            ],
-            "time": "2015-01-29 16:28:08"
-        },
-        {
-            "name": "sebastian/diff",
-            "version": "1.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
-                "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Kore Nordmann",
-                    "email": "mail@kore-nordmann.de"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Diff implementation",
-            "homepage": "http://www.github.com/sebastianbergmann/diff",
-            "keywords": [
-                "diff"
-            ],
-            "time": "2015-02-22 15:13:53"
-        },
-        {
-            "name": "sebastian/environment",
-            "version": "1.2.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e",
-                "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides functionality to handle HHVM/PHP environments",
-            "homepage": "http://www.github.com/sebastianbergmann/environment",
-            "keywords": [
-                "Xdebug",
-                "environment",
-                "hhvm"
-            ],
-            "time": "2015-01-01 10:01:08"
-        },
-        {
-            "name": "sebastian/exporter",
-            "version": "1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "84839970d05254c73cde183a721c7af13aede943"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943",
-                "reference": "84839970d05254c73cde183a721c7af13aede943",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "sebastian/recursion-context": "~1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides the functionality to export PHP variables for visualization",
-            "homepage": "http://www.github.com/sebastianbergmann/exporter",
-            "keywords": [
-                "export",
-                "exporter"
-            ],
-            "time": "2015-01-27 07:23:06"
-        },
-        {
-            "name": "sebastian/global-state",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
-                "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.2"
-            },
-            "suggest": {
-                "ext-uopz": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Snapshotting of global state",
-            "homepage": "http://www.github.com/sebastianbergmann/global-state",
-            "keywords": [
-                "global state"
-            ],
-            "time": "2014-10-06 09:23:50"
-        },
-        {
-            "name": "sebastian/recursion-context",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/recursion-context.git",
-                "reference": "3989662bbb30a29d20d9faa04a846af79b276252"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252",
-                "reference": "3989662bbb30a29d20d9faa04a846af79b276252",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides functionality to recursively process PHP variables",
-            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
-            "time": "2015-01-24 09:48:32"
-        },
-        {
-            "name": "sebastian/version",
-            "version": "1.0.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/version.git",
-                "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
-                "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
-                "shasum": ""
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-            "homepage": "https://github.com/sebastianbergmann/version",
-            "time": "2015-06-21 13:59:46"
-        },
-        {
-            "name": "symfony/config",
-            "version": "v2.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Config.git",
-                "reference": "58ded81f1f582a87c528ef3dae9a859f78b5f374"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Config/zipball/58ded81f1f582a87c528ef3dae9a859f78b5f374",
-                "reference": "58ded81f1f582a87c528ef3dae9a859f78b5f374",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9",
-                "symfony/filesystem": "~2.3"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "~2.7"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Config\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Config Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-06-11 14:06:56"
-        },
-        {
-            "name": "symfony/console",
-            "version": "v2.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Console.git",
-                "reference": "564398bc1f33faf92fc2ec86859983d30eb81806"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Console/zipball/564398bc1f33faf92fc2ec86859983d30eb81806",
-                "reference": "564398bc1f33faf92fc2ec86859983d30eb81806",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "psr/log": "~1.0",
-                "symfony/event-dispatcher": "~2.1",
-                "symfony/phpunit-bridge": "~2.7",
-                "symfony/process": "~2.1"
-            },
-            "suggest": {
-                "psr/log": "For using the console logger",
-                "symfony/event-dispatcher": "",
-                "symfony/process": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Console\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Console Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-06-10 15:30:22"
-        },
-        {
-            "name": "symfony/event-dispatcher",
-            "version": "v2.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/EventDispatcher.git",
-                "reference": "be3c5ff8d503c46768aeb78ce6333051aa6f26d9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/be3c5ff8d503c46768aeb78ce6333051aa6f26d9",
-                "reference": "be3c5ff8d503c46768aeb78ce6333051aa6f26d9",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "psr/log": "~1.0",
-                "symfony/config": "~2.0,>=2.0.5",
-                "symfony/dependency-injection": "~2.6",
-                "symfony/expression-language": "~2.6",
-                "symfony/phpunit-bridge": "~2.7",
-                "symfony/stopwatch": "~2.3"
-            },
-            "suggest": {
-                "symfony/dependency-injection": "",
-                "symfony/http-kernel": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\EventDispatcher\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony EventDispatcher Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-06-08 09:37:21"
-        },
-        {
-            "name": "symfony/filesystem",
-            "version": "v2.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Filesystem.git",
-                "reference": "a0d43eb3e17d4f4c6990289805a488a0482a07f3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Filesystem/zipball/a0d43eb3e17d4f4c6990289805a488a0482a07f3",
-                "reference": "a0d43eb3e17d4f4c6990289805a488a0482a07f3",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "~2.7"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Filesystem\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Filesystem Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-06-08 09:37:21"
-        },
-        {
-            "name": "symfony/stopwatch",
-            "version": "v2.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Stopwatch.git",
-                "reference": "c653f1985f6c2b7dbffd04d48b9c0a96aaef814b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/c653f1985f6c2b7dbffd04d48b9c0a96aaef814b",
-                "reference": "c653f1985f6c2b7dbffd04d48b9c0a96aaef814b",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "~2.7"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Stopwatch\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Stopwatch Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-06-04 20:11:48"
-        },
-        {
-            "name": "symfony/yaml",
-            "version": "v2.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Yaml.git",
-                "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Yaml/zipball/9808e75c609a14f6db02f70fccf4ca4aab53c160",
-                "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "~2.7"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Yaml\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Yaml Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-06-10 15:30:22"
-        }
-    ],
-    "aliases": [],
-    "minimum-stability": "stable",
-    "stability-flags": {
-        "satooshi/php-coveralls": 20
-    },
-    "prefer-stable": false,
-    "prefer-lowest": false,
-    "platform": {
-        "php": ">= 5.3.3"
-    },
-    "platform-dev": []
-}
diff --git a/vendor/egulias/email-validator/phpunit.xml.dist b/vendor/egulias/email-validator/phpunit.xml.dist
deleted file mode 100644
index f335ec1..0000000
--- a/vendor/egulias/email-validator/phpunit.xml.dist
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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/bootstrap.php"
->
-<testsuites>
-  <testsuite name="EmailValidator Test Suite">
-    <directory>./tests/egulias/Tests/</directory>
-    <exclude>./vendor/</exclude>
-  </testsuite>
-</testsuites>
-
-<filter>
-  <blacklist>
-    <directory>./vendor</directory>
-  </blacklist>
-</filter>
-</phpunit>
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php
deleted file mode 100644
index d8522ff..0000000
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php
+++ /dev/null
@@ -1,223 +0,0 @@
-<?php
-
-namespace Egulias\EmailValidator;
-
-use Doctrine\Common\Lexer\AbstractLexer;
-
-class EmailLexer extends AbstractLexer
-{
-    //ASCII values
-    const C_DEL              = 127;
-    const C_NUL              = 0;
-    const S_AT               = 64;
-    const S_BACKSLASH        = 92;
-    const S_DOT              = 46;
-    const S_DQUOTE           = 34;
-    const S_OPENPARENTHESIS  = 49;
-    const S_CLOSEPARENTHESIS = 261;
-    const S_OPENBRACKET      = 262;
-    const S_CLOSEBRACKET     = 263;
-    const S_HYPHEN           = 264;
-    const S_COLON            = 265;
-    const S_DOUBLECOLON      = 266;
-    const S_SP               = 267;
-    const S_HTAB             = 268;
-    const S_CR               = 269;
-    const S_LF               = 270;
-    const S_IPV6TAG          = 271;
-    const S_LOWERTHAN        = 272;
-    const S_GREATERTHAN      = 273;
-    const S_COMMA            = 274;
-    const S_SEMICOLON        = 275;
-    const S_OPENQBRACKET     = 276;
-    const S_CLOSEQBRACKET    = 277;
-    const S_SLASH            = 278;
-    const S_EMPTY            = null;
-    const GENERIC            = 300;
-    const CRLF               = 301;
-    const INVALID            = 302;
-    const ASCII_INVALID_FROM = 127;
-    const ASCII_INVALID_TO   = 199;
-
-    /**
-     * US-ASCII visible characters not valid for atext (@link http://tools.ietf.org/html/rfc5322#section-3.2.3)
-     *
-     * @var array
-     */
-    protected $charValue = array(
-        '('    => self::S_OPENPARENTHESIS,
-        ')'    => self::S_CLOSEPARENTHESIS,
-        '<'    => self::S_LOWERTHAN,
-        '>'    => self::S_GREATERTHAN,
-        '['    => self::S_OPENBRACKET,
-        ']'    => self::S_CLOSEBRACKET,
-        ':'    => self::S_COLON,
-        ';'    => self::S_SEMICOLON,
-        '@'    => self::S_AT,
-        '\\'   => self::S_BACKSLASH,
-        '/'    => self::S_SLASH,
-        ','    => self::S_COMMA,
-        '.'    => self::S_DOT,
-        '"'    => self::S_DQUOTE,
-        '-'    => self::S_HYPHEN,
-        '::'   => self::S_DOUBLECOLON,
-        ' '    => self::S_SP,
-        "\t"   => self::S_HTAB,
-        "\r"   => self::S_CR,
-        "\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,
-        '\0'   => self::C_NUL,
-    );
-
-    protected $hasInvalidTokens = false;
-
-    protected $previous;
-
-    public function reset()
-    {
-        $this->hasInvalidTokens = false;
-        parent::reset();
-    }
-
-    public function hasInvalidTokens()
-    {
-        return $this->hasInvalidTokens;
-    }
-
-    /**
-     * @param $type
-     * @throws \UnexpectedValueException
-     * @return boolean
-     */
-    public function find($type)
-    {
-        $search = clone $this;
-        $search->skipUntil($type);
-
-        if (!$search->lookahead) {
-            throw new \UnexpectedValueException($type . ' not found');
-        }
-        return true;
-    }
-
-    /**
-     * getPrevious
-     *
-     * @return array token
-     */
-    public function getPrevious()
-    {
-        return $this->previous;
-    }
-
-    /**
-     * moveNext
-     *
-     * @return boolean
-     */
-    public function moveNext()
-    {
-        $this->previous = $this->token;
-
-        return parent::moveNext();
-    }
-
-    /**
-     * Lexical catchable patterns.
-     *
-     * @return string[]
-     */
-    protected function getCatchablePatterns()
-    {
-        return array(
-            '[a-zA-Z_]+[46]?', //ASCII and domain literal
-            '[^\x00-\x7F]',  //UTF-8
-            '[0-9]+',
-            '\r\n',
-            '::',
-            '\s+?',
-            '.',
-            );
-    }
-
-    /**
-     * Lexical non-catchable patterns.
-     *
-     * @return string[]
-     */
-    protected function getNonCatchablePatterns()
-    {
-        return array('[\xA0-\xff]+');
-    }
-
-    /**
-     * Retrieve token type. Also processes the token value if necessary.
-     *
-     * @param string $value
-     * @throws \InvalidArgumentException
-     * @return integer
-     */
-    protected function getType(&$value)
-    {
-        if ($this->isNullType($value)) {
-            return self::C_NUL;
-        }
-
-        if ($this->isValid($value)) {
-            return $this->charValue[$value];
-        }
-
-        if ($this->isUTF8Invalid($value)) {
-            $this->hasInvalidTokens = true;
-            return self::INVALID;
-        }
-
-        return  self::GENERIC;
-    }
-
-    protected function isValid($value)
-    {
-        if (isset($this->charValue[$value])) {
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * @param $value
-     * @return bool
-     */
-    protected function isNullType($value)
-    {
-        if ($value === "\0") {
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * @param $value
-     * @return bool
-     */
-    protected function isUTF8Invalid($value)
-    {
-        if (preg_match('/\p{Cc}+/u', $value)) {
-            return true;
-        }
-
-        return false;
-    }
-
-    protected function getModifiers()
-    {
-        return 'iu';
-    }
-}
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailParser.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailParser.php
deleted file mode 100644
index 5f4c4aa..0000000
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailParser.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-namespace Egulias\EmailValidator;
-
-use Egulias\EmailValidator\Parser\DomainPart;
-use Egulias\EmailValidator\Parser\LocalPart;
-
-/**
- * EmailParser
- *
- * @author Eduardo Gulias Davis <me@egulias.com>
- */
-class EmailParser
-{
-    const EMAIL_MAX_LENGTH = 254;
-
-    protected $warnings = array();
-    protected $domainPart = '';
-    protected $localPart = '';
-    protected $lexer;
-    protected $localPartParser;
-    protected $domainPartParser;
-
-    public function __construct(EmailLexer $lexer)
-    {
-        $this->lexer = $lexer;
-        $this->localPartParser = new LocalPart($this->lexer);
-        $this->domainPartParser = new DomainPart($this->lexer);
-    }
-
-    /**
-     * @param $str
-     * @return array
-     */
-    public function parse($str)
-    {
-        $this->lexer->setInput($str);
-
-        if (!$this->hasAtToken()) {
-            throw new \InvalidArgumentException('ERR_NOLOCALPART');
-        }
-
-
-        $this->localPartParser->parse($str);
-        $this->domainPartParser->parse($str);
-
-        $this->setParts($str);
-
-        if ($this->lexer->hasInvalidTokens()) {
-            throw new \InvalidArgumentException('ERR_INVALID_ATEXT');
-        }
-
-        return array('local' => $this->localPart, 'domain' => $this->domainPart);
-    }
-
-    public function getWarnings()
-    {
-        $localPartWarnings = $this->localPartParser->getWarnings();
-        $domainPartWarnings = $this->domainPartParser->getWarnings();
-
-        $this->warnings = array_merge($localPartWarnings, $domainPartWarnings);
-        $this->addLongEmailWarning($this->localPart, $this->domainPart);
-
-        return $this->warnings;
-    }
-
-    public function getParsedDomainPart()
-    {
-        return $this->domainPart;
-    }
-
-    protected function setParts($email)
-    {
-        $parts = explode('@', $email);
-        $this->domainPart = $this->domainPartParser->getDomainPart();
-        $this->localPart = $parts[0];
-    }
-
-    protected function hasAtToken()
-    {
-        $this->lexer->moveNext();
-        $this->lexer->moveNext();
-        if ($this->lexer->token['type'] === EmailLexer::S_AT) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * @param string $localPart
-     * @param string $parsedDomainPart
-     */
-    protected function addLongEmailWarning($localPart, $parsedDomainPart)
-    {
-        if (strlen($localPart . '@' . $parsedDomainPart) > self::EMAIL_MAX_LENGTH) {
-            $this->warnings[] = EmailValidator::RFC5322_TOOLONG;
-        }
-    }
-}
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php
deleted file mode 100644
index d047dec..0000000
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php
+++ /dev/null
@@ -1,169 +0,0 @@
-<?php
-
-namespace Egulias\EmailValidator;
-
-/**
- * EmailValidator
- *
- * @author Eduardo Gulias Davis <me@egulias.com>
- */
-class EmailValidator
-{
-    const ERR_CONSECUTIVEATS     = 128;
-    const ERR_EXPECTING_DTEXT    = 129;
-    const ERR_NOLOCALPART        = 130;
-    const ERR_NODOMAIN           = 131;
-    const ERR_CONSECUTIVEDOTS    = 132;
-    const ERR_ATEXT_AFTER_CFWS   = 133;
-    const ERR_ATEXT_AFTER_QS     = 134;
-    const ERR_ATEXT_AFTER_DOMLIT = 135;
-    const ERR_EXPECTING_QPAIR    = 136;
-    const ERR_EXPECTING_ATEXT    = 137;
-    const ERR_EXPECTING_QTEXT    = 138;
-    const ERR_EXPECTING_CTEXT    = 139;
-    const ERR_BACKSLASHEND       = 140;
-    const ERR_DOT_START          = 141;
-    const ERR_DOT_END            = 142;
-    const ERR_DOMAINHYPHENSTART  = 143;
-    const ERR_DOMAINHYPHENEND    = 144;
-    const ERR_UNCLOSEDQUOTEDSTR  = 145;
-    const ERR_UNCLOSEDCOMMENT    = 146;
-    const ERR_UNCLOSEDDOMLIT     = 147;
-    const ERR_FWS_CRLF_X2        = 148;
-    const ERR_FWS_CRLF_END       = 149;
-    const ERR_CR_NO_LF           = 150;
-    const ERR_DEPREC_REACHED     = 151;
-    const RFC5321_TLD             = 9;
-    const RFC5321_TLDNUMERIC      = 10;
-    const RFC5321_QUOTEDSTRING    = 11;
-    const RFC5321_ADDRESSLITERAL  = 12;
-    const RFC5321_IPV6DEPRECATED  = 13;
-    const CFWS_COMMENT            = 17;
-    const CFWS_FWS                = 18;
-    const DEPREC_LOCALPART        = 33;
-    const DEPREC_FWS              = 34;
-    const DEPREC_QTEXT            = 35;
-    const DEPREC_QP               = 36;
-    const DEPREC_COMMENT          = 37;
-    const DEPREC_CTEXT            = 38;
-    const DEPREC_CFWS_NEAR_AT     = 49;
-    const RFC5322_LOCAL_TOOLONG   = 64;
-    const RFC5322_LABEL_TOOLONG   = 63;
-    const RFC5322_DOMAIN          = 65;
-    const RFC5322_TOOLONG         = 66;
-    const RFC5322_DOMAIN_TOOLONG  = 255;
-    const RFC5322_DOMAINLITERAL   = 70;
-    const RFC5322_DOMLIT_OBSDTEXT = 71;
-    const RFC5322_IPV6_GRPCOUNT   = 72;
-    const RFC5322_IPV6_2X2XCOLON  = 73;
-    const RFC5322_IPV6_BADCHAR    = 74;
-    const RFC5322_IPV6_MAXGRPS    = 75;
-    const RFC5322_IPV6_COLONSTRT  = 76;
-    const RFC5322_IPV6_COLONEND   = 77;
-    const DNSWARN_NO_MX_RECORD    = 5;
-    const DNSWARN_NO_RECORD       = 6;
-
-    protected $parser;
-    protected $warnings = array();
-    protected $error;
-    protected $threshold = 255;
-
-    public function __construct()
-    {
-        $this->parser = new EmailParser(new EmailLexer());
-    }
-
-    public function isValid($email, $checkDNS = false, $strict = false)
-    {
-        try {
-            $this->parser->parse((string)$email);
-            $this->warnings = $this->parser->getWarnings();
-        } catch (\Exception $e) {
-            $rClass = new \ReflectionClass($this);
-            $this->error = $rClass->getConstant($e->getMessage());
-            return false;
-        }
-
-        $dns = true;
-        if ($checkDNS) {
-            $dns = $this->checkDNS();
-        }
-
-        if ($this->hasWarnings() && ((int) max($this->warnings) > $this->threshold)) {
-            $this->error = self::ERR_DEPREC_REACHED;
-
-            return false;
-        }
-
-        return !$strict || (!$this->hasWarnings() && $dns);
-    }
-
-    /**
-     * @return boolean
-     */
-    public function hasWarnings()
-    {
-        return !empty($this->warnings);
-    }
-
-    /**
-     * @return array
-     */
-    public function getWarnings()
-    {
-        return $this->warnings;
-    }
-
-    /**
-     * @return string
-     */
-    public function getError()
-    {
-        return $this->error;
-    }
-
-    /**
-     * @param int $threshold
-     *
-     * @return EmailValidator
-     */
-    public function setThreshold($threshold)
-    {
-        $this->threshold = (int) $threshold;
-
-        return $this;
-    }
-
-    /**
-     * @return int
-     */
-    public function getThreshold()
-    {
-        return $this->threshold;
-    }
-
-    protected function checkDNS()
-    {
-        $checked = true;
-
-        $result = checkdnsrr(trim($this->parser->getParsedDomainPart()), 'MX');
-
-        if (!$result) {
-            $this->warnings[] = self::DNSWARN_NO_RECORD;
-            $checked = false;
-            $this->addTLDWarnings();
-        }
-
-        return $checked;
-    }
-
-    protected function addTLDWarnings()
-    {
-        if (!in_array(self::DNSWARN_NO_RECORD, $this->warnings) &&
-            !in_array(self::DNSWARN_NO_MX_RECORD, $this->warnings) &&
-            in_array(self::RFC5322_DOMAINLITERAL, $this->warnings)
-        ) {
-            $this->warnings[] = self::RFC5321_TLD;
-        }
-    }
-}
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php
deleted file mode 100644
index c4d0cf6..0000000
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php
+++ /dev/null
@@ -1,317 +0,0 @@
-<?php
-
-
-namespace Egulias\EmailValidator\Parser;
-
-use Egulias\EmailValidator\EmailLexer;
-use Egulias\EmailValidator\Parser\Parser;
-use Egulias\EmailValidator\EmailValidator;
-
-class DomainPart extends Parser
-{
-    const DOMAIN_MAX_LENGTH = 254;
-    protected $domainPart = '';
-
-    public function parse($domainPart)
-    {
-        $this->lexer->moveNext();
-
-        if ($this->lexer->token['type'] === EmailLexer::S_DOT) {
-            throw new \InvalidArgumentException('ERR_DOT_START');
-        }
-
-        if ($this->lexer->token['type'] === EmailLexer::S_EMPTY) {
-            throw new \InvalidArgumentException('ERR_NODOMAIN');
-        }
-        if ($this->lexer->token['type'] === EmailLexer::S_HYPHEN) {
-            throw new \InvalidArgumentException('ERR_DOMAINHYPHENEND');
-        }
-
-        if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) {
-            $this->warnings[] = EmailValidator::DEPREC_COMMENT;
-            $this->parseDomainComments();
-        }
-
-        $domain = $this->doParseDomainPart();
-
-        $prev = $this->lexer->getPrevious();
-        $length = strlen($domain);
-
-        if ($prev['type'] === EmailLexer::S_DOT) {
-            throw new \InvalidArgumentException('ERR_DOT_END');
-        }
-        if ($prev['type'] === EmailLexer::S_HYPHEN) {
-            throw new \InvalidArgumentException('ERR_DOMAINHYPHENEND');
-        }
-        if ($length > self::DOMAIN_MAX_LENGTH) {
-            $this->warnings[] = EmailValidator::RFC5322_DOMAIN_TOOLONG;
-        }
-        if ($prev['type'] === EmailLexer::S_CR) {
-            throw new \InvalidArgumentException('ERR_FWS_CRLF_END');
-        }
-        $this->domainPart = $domain;
-    }
-
-    public function getDomainPart()
-    {
-        return $this->domainPart;
-    }
-
-    public function checkIPV6Tag($addressLiteral, $maxGroups = 8)
-    {
-        $prev = $this->lexer->getPrevious();
-        if ($prev['type'] === EmailLexer::S_COLON) {
-            $this->warnings[] = EmailValidator::RFC5322_IPV6_COLONEND;
-        }
-
-        $IPv6       = substr($addressLiteral, 5);
-        //Daniel Marschall's new IPv6 testing strategy
-        $matchesIP  = explode(':', $IPv6);
-        $groupCount = count($matchesIP);
-        $colons     = strpos($IPv6, '::');
-
-        if (count(preg_grep('/^[0-9A-Fa-f]{0,4}$/', $matchesIP, PREG_GREP_INVERT)) !== 0) {
-            $this->warnings[] = EmailValidator::RFC5322_IPV6_BADCHAR;
-        }
-
-        if ($colons === false) {
-            // We need exactly the right number of groups
-            if ($groupCount !== $maxGroups) {
-                $this->warnings[] = EmailValidator::RFC5322_IPV6_GRPCOUNT;
-            }
-            return;
-        }
-
-        if ($colons !== strrpos($IPv6, '::')) {
-            $this->warnings[] = EmailValidator::RFC5322_IPV6_2X2XCOLON;
-            return;
-        }
-
-        if ($colons === 0 || $colons === (strlen($IPv6) - 2)) {
-            // RFC 4291 allows :: at the start or end of an address
-            //with 7 other groups in addition
-            ++$maxGroups;
-        }
-
-        if ($groupCount > $maxGroups) {
-            $this->warnings[] = EmailValidator::RFC5322_IPV6_MAXGRPS;
-        } elseif ($groupCount === $maxGroups) {
-            $this->warnings[] = EmailValidator::RFC5321_IPV6DEPRECATED;
-        }
-    }
-
-    protected function doParseDomainPart()
-    {
-        $domain = '';
-        do {
-
-            $prev = $this->lexer->getPrevious();
-
-            if ($this->lexer->token['type'] === EmailLexer::S_SLASH) {
-                throw new \InvalidArgumentException('ERR_DOMAIN_CHAR_NOT_ALLOWED');
-            }
-
-            if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) {
-                $this->parseComments();
-                $this->lexer->moveNext();
-            }
-
-            $this->checkConsecutiveDots();
-            $this->checkDomainPartExceptions($prev);
-
-            if ($this->hasBrackets()) {
-                $this->parseDomainLiteral();
-            }
-
-            $this->checkLabelLength($prev);
-
-            if ($this->isFWS()) {
-                $this->parseFWS();
-            }
-
-            $domain .= $this->lexer->token['value'];
-            $this->lexer->moveNext();
-        } while ($this->lexer->token);
-
-        return $domain;
-    }
-
-    protected function parseDomainLiteral()
-    {
-        if ($this->lexer->isNextToken(EmailLexer::S_COLON)) {
-            $this->warnings[] = EmailValidator::RFC5322_IPV6_COLONSTRT;
-        }
-        if ($this->lexer->isNextToken(EmailLexer::S_IPV6TAG)) {
-            $lexer = clone $this->lexer;
-            $lexer->moveNext();
-            if ($lexer->isNextToken(EmailLexer::S_DOUBLECOLON)) {
-                $this->warnings[] = EmailValidator::RFC5322_IPV6_COLONSTRT;
-            }
-        }
-
-        return $this->doParseDomainLiteral();
-    }
-
-    protected function doParseDomainLiteral()
-    {
-        $IPv6TAG = false;
-        $addressLiteral = '';
-        do {
-            if ($this->lexer->token['type'] === EmailLexer::C_NUL) {
-                throw new \InvalidArgumentException('ERR_EXPECTING_DTEXT');
-            }
-
-            if ($this->lexer->token['type'] === EmailLexer::INVALID ||
-                $this->lexer->token['type'] === EmailLexer::C_DEL   ||
-                $this->lexer->token['type'] === EmailLexer::S_LF
-            ) {
-                $this->warnings[] = EmailValidator::RFC5322_DOMLIT_OBSDTEXT;
-            }
-
-            if ($this->lexer->isNextTokenAny(array(EmailLexer::S_OPENQBRACKET, EmailLexer::S_OPENBRACKET))) {
-                throw new \InvalidArgumentException('ERR_EXPECTING_DTEXT');
-            }
-
-            if ($this->lexer->isNextTokenAny(
-                array(EmailLexer::S_HTAB, EmailLexer::S_SP, $this->lexer->token['type'] === EmailLexer::CRLF)
-            )) {
-                $this->warnings[] = EmailValidator::CFWS_FWS;
-                $this->parseFWS();
-            }
-
-            if ($this->lexer->isNextToken(EmailLexer::S_CR)) {
-                throw new \InvalidArgumentException("ERR_CR_NO_LF");
-            }
-            if ($this->lexer->token['type'] === EmailLexer::S_BACKSLASH) {
-                $this->warnings[] = EmailValidator::RFC5322_DOMLIT_OBSDTEXT;
-                $addressLiteral .= $this->lexer->token['value'];
-                $this->lexer->moveNext();
-                $this->validateQuotedPair();
-            }
-            if ($this->lexer->token['type'] === EmailLexer::S_IPV6TAG) {
-                $IPv6TAG = true;
-            }
-            if ($this->lexer->token['type'] === EmailLexer::S_CLOSEQBRACKET) {
-                break;
-            }
-
-            $addressLiteral .= $this->lexer->token['value'];
-
-        } while ($this->lexer->moveNext());
-
-        $addressLiteral = str_replace('[', '', $addressLiteral);
-        $addressLiteral = $this->checkIPV4Tag($addressLiteral);
-
-        if (false === $addressLiteral) {
-            return $addressLiteral;
-        }
-
-        if (!$IPv6TAG) {
-            $this->warnings[] = EmailValidator::RFC5322_DOMAINLITERAL;
-            return $addressLiteral;
-        }
-
-        $this->warnings[] = EmailValidator::RFC5321_ADDRESSLITERAL;
-
-        $this->checkIPV6Tag($addressLiteral);
-
-        return $addressLiteral;
-    }
-
-    protected function checkIPV4Tag($addressLiteral)
-    {
-        $matchesIP  = array();
-
-        // Extract IPv4 part from the end of the address-literal (if there is one)
-        if (preg_match(
-                '/\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/',
-                $addressLiteral,
-                $matchesIP
-            ) > 0
-        ) {
-            $index = strrpos($addressLiteral, $matchesIP[0]);
-            if ($index === 0) {
-                $this->warnings[] = EmailValidator::RFC5321_ADDRESSLITERAL;
-                return false;
-            }
-            // Convert IPv4 part to IPv6 format for further testing
-            $addressLiteral = substr($addressLiteral, 0, $index) . '0:0';
-        }
-
-        return $addressLiteral;
-    }
-
-    protected function checkDomainPartExceptions($prev)
-    {
-        $invalidDomainTokens = array(
-            EmailLexer::S_DQUOTE => true,
-            EmailLexer::S_SEMICOLON => true,
-            EmailLexer::S_GREATERTHAN => true,
-            EmailLexer::S_LOWERTHAN => true,
-        );
-
-        if (isset($invalidDomainTokens[$this->lexer->token['type']])) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT');
-        }
-
-        if ($this->lexer->token['type'] === EmailLexer::S_COMMA) {
-            throw new \InvalidArgumentException('ERR_COMMA_IN_DOMAIN');
-        }
-
-        if ($this->lexer->token['type'] === EmailLexer::S_AT) {
-            throw new \InvalidArgumentException('ERR_CONSECUTIVEATS');
-        }
-
-        if ($this->lexer->token['type'] === EmailLexer::S_OPENQBRACKET && $prev['type'] !== EmailLexer::S_AT) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT');
-        }
-
-        if ($this->lexer->token['type'] === EmailLexer::S_HYPHEN && $this->lexer->isNextToken(EmailLexer::S_DOT)) {
-            throw new \InvalidArgumentException('ERR_DOMAINHYPHENEND');
-        }
-
-        if ($this->lexer->token['type'] === EmailLexer::S_BACKSLASH
-            && $this->lexer->isNextToken(EmailLexer::GENERIC)) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT');
-        }
-    }
-
-    protected function hasBrackets()
-    {
-        if ($this->lexer->token['type'] !== EmailLexer::S_OPENBRACKET) {
-            return false;
-        }
-
-        try {
-            $this->lexer->find(EmailLexer::S_CLOSEBRACKET);
-        } catch (\RuntimeException $e) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_DOMLIT_CLOSE');
-        }
-
-        return true;
-    }
-
-    protected function checkLabelLength($prev)
-    {
-        if ($this->lexer->token['type'] === EmailLexer::S_DOT &&
-            $prev['type'] === EmailLexer::GENERIC &&
-            strlen($prev['value']) > 63
-        ) {
-            $this->warnings[] = EmailValidator::RFC5322_LABEL_TOOLONG;
-        }
-    }
-
-    protected function parseDomainComments()
-    {
-        $this->isUnclosedComment();
-        while (!$this->lexer->isNextToken(EmailLexer::S_CLOSEPARENTHESIS)) {
-            $this->warnEscaping();
-            $this->lexer->moveNext();
-        }
-
-        $this->lexer->moveNext();
-        if ($this->lexer->isNextToken(EmailLexer::S_DOT)) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT');
-        }
-    }
-}
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php
deleted file mode 100644
index 2f77164..0000000
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-
-namespace Egulias\EmailValidator\Parser;
-
-use Egulias\EmailValidator\EmailLexer;
-use Egulias\EmailValidator\EmailValidator;
-use \InvalidArgumentException;
-
-class LocalPart extends Parser
-{
-    public function parse($localPart)
-    {
-        $parseDQuote = true;
-        $closingQuote = false;
-
-        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');
-            }
-
-            $closingQuote = $this->checkDQUOTE($closingQuote);
-            if ($closingQuote && $parseDQuote) {
-                $parseDQuote = $this->parseDoubleQuote();
-            }
-
-            if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) {
-                $this->parseComments();
-            }
-
-            $this->checkConsecutiveDots();
-
-            if (
-                $this->lexer->token['type'] === EmailLexer::S_DOT &&
-                $this->lexer->isNextToken(EmailLexer::S_AT)
-            ) {
-                throw new \InvalidArgumentException('ERR_DOT_END');
-            }
-
-            $this->warnEscaping();
-            $this->isInvalidToken($this->lexer->token, $closingQuote);
-
-            if ($this->isFWS()) {
-                $this->parseFWS();
-            }
-
-            $this->lexer->moveNext();
-        }
-
-        $prev = $this->lexer->getPrevious();
-        if (strlen($prev['value']) > EmailValidator::RFC5322_LOCAL_TOOLONG) {
-            $this->warnings[] = EmailValidator::RFC5322_LOCAL_TOOLONG;
-        }
-    }
-
-    protected function parseDoubleQuote()
-    {
-        $parseAgain = true;
-        $special = array(
-            EmailLexer::S_CR => true,
-            EmailLexer::S_HTAB => true,
-            EmailLexer::S_LF => true
-        );
-
-        $invalid = array(
-            EmailLexer::C_NUL => true,
-            EmailLexer::S_HTAB => true,
-            EmailLexer::S_CR => true,
-            EmailLexer::S_LF => true
-        );
-        $setSpecialsWarning = true;
-
-        $this->lexer->moveNext();
-
-        while ($this->lexer->token['type'] !== EmailLexer::S_DQUOTE && $this->lexer->token) {
-            $parseAgain = false;
-            if (isset($special[$this->lexer->token['type']]) && $setSpecialsWarning) {
-                $this->warnings[] = EmailValidator::CFWS_FWS;
-                $setSpecialsWarning = false;
-            }
-
-            $this->lexer->moveNext();
-
-            if (!$this->escaped() && isset($invalid[$this->lexer->token['type']])) {
-                throw new InvalidArgumentException("ERR_EXPECTED_ATEXT");
-            }
-        }
-
-        $prev = $this->lexer->getPrevious();
-
-        if ($prev['type'] === EmailLexer::S_BACKSLASH) {
-            if (!$this->checkDQUOTE(false)) {
-                throw new \InvalidArgumentException("ERR_UNCLOSED_DQUOTE");
-            }
-        }
-
-        if (!$this->lexer->isNextToken(EmailLexer::S_AT) && $prev['type'] !== EmailLexer::S_BACKSLASH) {
-            throw new \InvalidArgumentException("ERR_EXPECED_AT");
-        }
-
-        return $parseAgain;
-    }
-
-    protected function isInvalidToken($token, $closingQuote)
-    {
-        $forbidden = array(
-            EmailLexer::S_COMMA,
-            EmailLexer::S_CLOSEBRACKET,
-            EmailLexer::S_OPENBRACKET,
-            EmailLexer::S_GREATERTHAN,
-            EmailLexer::S_LOWERTHAN,
-            EmailLexer::S_COLON,
-            EmailLexer::S_SEMICOLON,
-            EmailLexer::INVALID
-        );
-
-        if (in_array($token['type'], $forbidden) && !$closingQuote) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT');
-        }
-    }
-}
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php
deleted file mode 100644
index b66279e..0000000
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php
+++ /dev/null
@@ -1,190 +0,0 @@
-<?php
-
-namespace Egulias\EmailValidator\Parser;
-
-use Egulias\EmailValidator\EmailLexer;
-use Egulias\EmailValidator\EmailValidator;
-
-abstract class Parser
-{
-    protected $warnings = array();
-    protected $lexer;
-
-    public function __construct(EmailLexer $lexer)
-    {
-        $this->lexer = $lexer;
-    }
-
-    public function getWarnings()
-    {
-        return $this->warnings;
-    }
-
-    abstract function parse($str);
-
-    /**
-     * validateQuotedPair
-     */
-    protected function validateQuotedPair()
-    {
-        if (!($this->lexer->token['type'] === EmailLexer::INVALID
-            || $this->lexer->token['type'] === EmailLexer::C_DEL)) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_QPAIR');
-        }
-
-        $this->warnings[] = EmailValidator::DEPREC_QP;
-    }
-
-    /**
-     * @return string the the comment
-     * @throws \InvalidArgumentException
-     */
-    protected function parseComments()
-    {
-        $this->isUnclosedComment();
-        $this->warnings[] = EmailValidator::CFWS_COMMENT;
-        while (!$this->lexer->isNextToken(EmailLexer::S_CLOSEPARENTHESIS)) {
-            $this->warnEscaping();
-            $this->lexer->moveNext();
-        }
-
-        $this->lexer->moveNext();
-        if ($this->lexer->isNextTokenAny(array(EmailLexer::GENERIC, EmailLexer::S_EMPTY))) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT');
-        }
-
-        if ($this->lexer->isNextToken(EmailLexer::S_AT)) {
-            $this->warnings[] = EmailValidator::DEPREC_CFWS_NEAR_AT;
-        }
-    }
-
-    protected function isUnclosedComment()
-    {
-        try {
-            $this->lexer->find(EmailLexer::S_CLOSEPARENTHESIS);
-            return true;
-        } catch (\RuntimeException $e) {
-            throw new \InvalidArgumentException('ERR_UNCLOSEDCOMMENT');
-        }
-    }
-
-    protected function parseFWS()
-    {
-        $previous = $this->lexer->getPrevious();
-
-        $this->checkCRLFInFWS();
-
-        if ($this->lexer->token['type'] === EmailLexer::S_CR) {
-            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");
-        }
-
-        if ($this->lexer->token['type'] === EmailLexer::S_LF || $this->lexer->token['type'] === EmailLexer::C_NUL) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_CTEXT');
-        }
-
-        if ($this->lexer->isNextToken(EmailLexer::S_AT) || $previous['type']  === EmailLexer::S_AT) {
-            $this->warnings[] = EmailValidator::DEPREC_CFWS_NEAR_AT;
-        } else {
-            $this->warnings[] = EmailValidator::CFWS_FWS;
-        }
-    }
-
-    protected function checkConsecutiveDots()
-    {
-        if ($this->lexer->token['type'] === EmailLexer::S_DOT && $this->lexer->isNextToken(EmailLexer::S_DOT)) {
-            throw new \InvalidArgumentException('ERR_CONSECUTIVEDOTS');
-        }
-    }
-
-    protected function isFWS()
-    {
-        if ($this->escaped()) {
-            return false;
-        }
-
-        if ($this->lexer->token['type'] === EmailLexer::S_SP ||
-            $this->lexer->token['type'] === EmailLexer::S_HTAB ||
-            $this->lexer->token['type'] === EmailLexer::S_CR ||
-            $this->lexer->token['type'] === EmailLexer::S_LF ||
-            $this->lexer->token['type'] === EmailLexer::CRLF
-        ) {
-            return true;
-        }
-
-        return false;
-    }
-
-    protected function escaped()
-    {
-        $previous = $this->lexer->getPrevious();
-
-        if ($previous['type'] === EmailLexer::S_BACKSLASH
-            &&
-            $this->lexer->token['type'] !== EmailLexer::GENERIC
-        ) {
-            return true;
-        }
-
-        return false;
-    }
-
-    protected function warnEscaping()
-    {
-        if ($this->lexer->token['type'] !== EmailLexer::S_BACKSLASH) {
-            return false;
-        }
-
-        if ($this->lexer->isNextToken(EmailLexer::GENERIC)) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT');
-        }
-
-        if (!$this->lexer->isNextTokenAny(array(EmailLexer::S_SP, EmailLexer::S_HTAB, EmailLexer::C_DEL))) {
-            return false;
-        }
-
-        $this->warnings[] = EmailValidator::DEPREC_QP;
-        return true;
-
-    }
-
-    protected function checkDQUOTE($hasClosingQuote)
-    {
-        if ($this->lexer->token['type'] !== EmailLexer::S_DQUOTE) {
-            return $hasClosingQuote;
-        }
-        if ($hasClosingQuote) {
-            return $hasClosingQuote;
-        }
-        $previous = $this->lexer->getPrevious();
-        if ($this->lexer->isNextToken(EmailLexer::GENERIC) && $previous['type'] === EmailLexer::GENERIC) {
-            throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT');
-        }
-
-        $this->warnings[] = EmailValidator::RFC5321_QUOTEDSTRING;
-        try {
-            $this->lexer->find(EmailLexer::S_DQUOTE);
-            $hasClosingQuote = true;
-        } catch (\Exception $e) {
-            throw new \InvalidArgumentException('ERR_UNCLOSEDQUOTEDSTR');
-        }
-
-        return $hasClosingQuote;
-    }
-
-    protected function checkCRLFInFWS()
-    {
-        if ($this->lexer->token['type'] !== EmailLexer::CRLF) {
-            return;
-        }
-        if ($this->lexer->isNextToken(EmailLexer::CRLF)) {
-            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");
-        }
-    }
-}
diff --git a/vendor/fabpot/goutte/.gitignore b/vendor/fabpot/goutte/.gitignore
deleted file mode 100644
index 81b9258..0000000
--- a/vendor/fabpot/goutte/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-composer.lock
-phpunit.xml
-vendor
diff --git a/vendor/fabpot/goutte/.travis.yml b/vendor/fabpot/goutte/.travis.yml
deleted file mode 100644
index 26a4ed1..0000000
--- a/vendor/fabpot/goutte/.travis.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-language: php
-
-php:
-    - 7.0
-    - 5.6
-    - 5.5
-    - hhvm
-
-install:
-    - travis_retry composer install --no-interaction --prefer-source
-
-script:
-    - phpunit
-
-matrix:
-    allow_failures:
-        - php: hhvm
-        - php: 7.0
diff --git a/vendor/fabpot/goutte/Goutte/Client.php b/vendor/fabpot/goutte/Goutte/Client.php
deleted file mode 100644
index 1474578..0000000
--- a/vendor/fabpot/goutte/Goutte/Client.php
+++ /dev/null
@@ -1,208 +0,0 @@
-<?php
-
-/*
- * This file is part of the Goutte 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 Goutte;
-
-use GuzzleHttp\Client as GuzzleClient;
-use GuzzleHttp\ClientInterface as GuzzleClientInterface;
-use GuzzleHttp\Cookie\CookieJar;
-use GuzzleHttp\Exception\RequestException;
-use Psr\Http\Message\ResponseInterface;
-use Symfony\Component\BrowserKit\Client as BaseClient;
-use Symfony\Component\BrowserKit\Request;
-use Symfony\Component\BrowserKit\Response;
-
-/**
- * Client.
- *
- * @author Fabien Potencier <fabien.potencier@symfony-project.com>
- * @author Michael Dowling <michael@guzzlephp.org>
- * @author Charles Sarrazin <charles@sarraz.in>
- */
-class Client extends BaseClient
-{
-    protected $client;
-
-    private $headers = array();
-    private $auth = null;
-
-    public function setClient(GuzzleClientInterface $client)
-    {
-        $this->client = $client;
-
-        return $this;
-    }
-
-    public function getClient()
-    {
-        if (!$this->client) {
-            $this->client = new GuzzleClient(array('defaults' => array('allow_redirects' => false, 'cookies' => true)));
-        }
-
-        return $this->client;
-    }
-
-    public function setHeader($name, $value)
-    {
-        $this->headers[$name] = $value;
-
-        return $this;
-    }
-
-    public function removeHeader($name)
-    {
-        unset($this->headers[$name]);
-    }
-
-    public function setAuth($user, $password = '', $type = 'basic')
-    {
-        $this->auth = array($user, $password, $type);
-
-        return $this;
-    }
-
-    public function resetAuth()
-    {
-        $this->auth = null;
-
-        return $this;
-    }
-
-    /**
-     * @param Request $request
-     *
-     * @return Response
-     */
-    protected function doRequest($request)
-    {
-        $headers = array();
-        foreach ($request->getServer() as $key => $val) {
-            $key = strtolower(str_replace('_', '-', $key));
-            $contentHeaders = array('content-length' => true, 'content-md5' => true, 'content-type' => true);
-            if (0 === strpos($key, 'http-')) {
-                $headers[substr($key, 5)] = $val;
-            }
-            // CONTENT_* are not prefixed with HTTP_
-            elseif (isset($contentHeaders[$key])) {
-                $headers[$key] = $val;
-            }
-        }
-
-        $cookies = CookieJar::fromArray(
-            $this->getCookieJar()->allRawValues($request->getUri()),
-            parse_url($request->getUri(), PHP_URL_HOST)
-        );
-
-        $requestOptions = array(
-            'cookies' => $cookies,
-            'allow_redirects' => false,
-            'auth' => $this->auth,
-        );
-
-        if (!in_array($request->getMethod(), array('GET', 'HEAD'))) {
-            if (null !== $content = $request->getContent()) {
-                $requestOptions['body'] = $content;
-            } else {
-                if ($files = $request->getFiles()) {
-                    $requestOptions['multipart'] = [];
-
-                    $this->addPostFields($request->getParameters(), $requestOptions['multipart']);
-                    $this->addPostFiles($files, $requestOptions['multipart']);
-                } else {
-                    $requestOptions['form_params'] = $request->getParameters();
-                }
-            }
-        }
-
-        if (!empty($headers)) {
-            $requestOptions['headers'] = $headers;
-        }
-
-        $method = $request->getMethod();
-        $uri = $request->getUri();
-
-        foreach ($this->headers as $name => $value) {
-            $requestOptions['headers'][$name] = $value;
-        }
-
-        // Let BrowserKit handle redirects
-        try {
-            $response = $this->getClient()->request($method, $uri, $requestOptions);
-        } catch (RequestException $e) {
-            $response = $e->getResponse();
-            if (null === $response) {
-                throw $e;
-            }
-        }
-
-        return $this->createResponse($response);
-    }
-
-    protected function addPostFiles(array $files, array &$multipart, $arrayName = '')
-    {
-        if (empty($files)) {
-            return;
-        }
-
-        foreach ($files as $name => $info) {
-            if (!empty($arrayName)) {
-                $name = $arrayName.'['.$name.']';
-            }
-
-            $file = [
-                'name' => $name,
-            ];
-
-            if (is_array($info)) {
-                if (isset($info['tmp_name'])) {
-                    if ('' !== $info['tmp_name']) {
-                        $file['contents'] = fopen($info['tmp_name'], 'r');
-                        if (isset($info['name'])) {
-                            $file['filename'] = $info['name'];
-                        }
-                    } else {
-                        continue;
-                    }
-                } else {
-                    $this->addPostFiles($info, $multipart, $name);
-                    continue;
-                }
-            } else {
-                $file['contents'] = fopen($info, 'r');
-            }
-
-            $multipart[] = $file;
-        }
-    }
-
-    public function addPostFields(array $formParams, array &$multipart, $arrayName = '')
-    {
-        foreach ($formParams as $name => $value) {
-            if (!empty($arrayName)) {
-                $name = $arrayName.'['.$name.']';
-            }
-
-            if (is_array($value)) {
-                $this->addPostFields($value, $multipart, $name);
-            } else {
-                $multipart[] = [
-                    'name' => $name,
-                    'contents' => $value,
-                ];
-            }
-        }
-    }
-
-    protected function createResponse(ResponseInterface $response)
-    {
-        return new Response((string) $response->getBody(), $response->getStatusCode(), $response->getHeaders());
-    }
-}
diff --git a/vendor/fabpot/goutte/Goutte/Resources/phar-stub.php b/vendor/fabpot/goutte/Goutte/Resources/phar-stub.php
deleted file mode 100644
index b9c3b44..0000000
--- a/vendor/fabpot/goutte/Goutte/Resources/phar-stub.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-/*
- * This file is part of the Goutte utility.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-require_once 'phar://'.__FILE__.'/vendor/autoload.php';
-
-__HALT_COMPILER();
diff --git a/vendor/fabpot/goutte/LICENSE b/vendor/fabpot/goutte/LICENSE
deleted file mode 100644
index ff727f4..0000000
--- a/vendor/fabpot/goutte/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010-2013 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/fabpot/goutte/README.rst b/vendor/fabpot/goutte/README.rst
deleted file mode 100644
index abd847e..0000000
--- a/vendor/fabpot/goutte/README.rst
+++ /dev/null
@@ -1,115 +0,0 @@
-Goutte, a simple PHP Web Scraper
-================================
-
-Goutte is a screen scraping and web crawling library for PHP.
-
-Goutte provides a nice API to crawl websites and extract data from the HTML/XML
-responses.
-
-Requirements
-------------
-
-Goutte depends on PHP 5.5+ and Guzzle 6+.
-
-.. tip::
-
-    If you need support for PHP 5.4 or Guzzle 4-5, use Goutte 2.x (latest `phar
-    <https://github.com/FriendsOfPHP/Goutte/releases/download/v2.0.4/goutte-v2.0.4.phar>`_).
-
-    If you need support for PHP 5.3 or Guzzle 3, use Goutte 1.x (latest `phar
-    <https://github.com/FriendsOfPHP/Goutte/releases/download/v1.0.7/goutte-v1.0.7.phar>`_).
-
-Installation
-------------
-
-Add ``fabpot/goutte`` as a require dependency in your ``composer.json`` file:
-
-.. code-block:: bash
-
-    composer require fabpot/goutte
-
-Usage
------
-
-Create a Goutte Client instance (which extends
-``Symfony\Component\BrowserKit\Client``):
-
-.. code-block:: php
-
-    use Goutte\Client;
-
-    $client = new Client();
-
-Make requests with the ``request()`` method:
-
-.. code-block:: php
-
-    // Go to the symfony.com website
-    $crawler = $client->request('GET', 'http://www.symfony.com/blog/');
-
-The method returns a ``Crawler`` object
-(``Symfony\Component\DomCrawler\Crawler``).
-
-Fine-tune cURL options:
-
-.. code-block:: php
-
-    $client->getClient()->setDefaultOption('config/curl/'.CURLOPT_TIMEOUT, 60);
-
-Click on links:
-
-.. code-block:: php
-
-    // Click on the "Security Advisories" link
-    $link = $crawler->selectLink('Security Advisories')->link();
-    $crawler = $client->click($link);
-
-Extract data:
-
-.. code-block:: php
-
-    // Get the latest post in this category and display the titles
-    $crawler->filter('h2 > a')->each(function ($node) {
-        print $node->text()."\n";
-    });
-
-Submit forms:
-
-.. code-block:: php
-
-    $crawler = $client->request('GET', 'http://github.com/');
-    $crawler = $client->click($crawler->selectLink('Sign in')->link());
-    $form = $crawler->selectButton('Sign in')->form();
-    $crawler = $client->submit($form, array('login' => 'fabpot', 'password' => 'xxxxxx'));
-    $crawler->filter('.flash-error')->each(function ($node) {
-        print $node->text()."\n";
-    });
-
-More Information
-----------------
-
-Read the documentation of the BrowserKit and `DomCrawler
-<http://symfony.com/doc/any/components/dom_crawler.html>`_ Symfony Components
-for more information about what you can do with Goutte.
-
-Pronunciation
--------------
-
-Goutte is pronounced ``goot`` i.e. it rhymes with ``boot`` and not ``out``.
-
-Technical Information
----------------------
-
-Goutte is a thin wrapper around the following fine PHP libraries:
-
-* Symfony Components: BrowserKit, CssSelector and DomCrawler;
-
-*  `Guzzle`_ HTTP Component.
-
-License
--------
-
-Goutte is licensed under the MIT license.
-
-.. _`Composer`: http://getcomposer.org
-.. _`Guzzle`:   http://docs.guzzlephp.org
diff --git a/vendor/fabpot/goutte/box.json b/vendor/fabpot/goutte/box.json
deleted file mode 100644
index 943c61e..0000000
--- a/vendor/fabpot/goutte/box.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "output": "goutte.phar",
-    "chmod": "0755",
-    "compactors": [
-        "Herrera\\Box\\Compactor\\Php"
-    ],
-    "extract": false,
-    "files": [
-        "LICENSE",
-        "Goutte/Client.php"
-    ],
-    "finder": [
-        {
-            "name": ["*.php", "*.pem*"],
-            "exclude": ["Tests", "tests"],
-            "in": "vendor"
-        }
-    ],
-    "stub": "Goutte/Resources/phar-stub.php",
-    "web": false
-}
diff --git a/vendor/fabpot/goutte/composer.json b/vendor/fabpot/goutte/composer.json
deleted file mode 100644
index 1a0ed82..0000000
--- a/vendor/fabpot/goutte/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "name": "fabpot/goutte",
-    "type": "application",
-    "description": "A simple PHP Web Scraper",
-    "keywords": ["scraper"],
-    "homepage": "https://github.com/FriendsOfPHP/Goutte",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        }
-    ],
-    "require": {
-        "php": ">=5.5.0",
-        "symfony/browser-kit": "~2.1",
-        "symfony/css-selector": "~2.1",
-        "symfony/dom-crawler": "~2.1",
-        "guzzlehttp/guzzle": "^6.0"
-    },
-    "autoload": {
-        "psr-4": { "Goutte\\": "Goutte" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "3.1-dev"
-        }
-    }
-}
diff --git a/vendor/fabpot/goutte/phpunit.xml.dist b/vendor/fabpot/goutte/phpunit.xml.dist
deleted file mode 100644
index 9e7ff98..0000000
--- a/vendor/fabpot/goutte/phpunit.xml.dist
+++ /dev/null
@@ -1,18 +0,0 @@
-<?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="./vendor/autoload.php">
-    <testsuites>
-        <testsuite name="Goutte Test Suite">
-            <directory>./Goutte/Tests</directory>
-        </testsuite>
-    </testsuites>
-</phpunit>
diff --git a/vendor/guzzlehttp/guzzle/.travis.yml b/vendor/guzzlehttp/guzzle/.travis.yml
deleted file mode 100644
index c0689d1..0000000
--- a/vendor/guzzlehttp/guzzle/.travis.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-language: php
-
-php:
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-before_script:
-  - curl --version
-  - composer self-update
-  - composer install --no-interaction --prefer-source --dev
-  - ~/.nvm/nvm.sh install v0.6.14
-  - ~/.nvm/nvm.sh run v0.6.14
-
-script: make test
-
-matrix:
-  allow_failures:
-    - php: hhvm
-    - php: 7.0
-  fast_finish: true
-
-before_deploy:
-  - make package
-
-deploy:
-  provider: releases
-  api_key:
-    secure: UpypqlYgsU68QT/x40YzhHXvzWjFwCNo9d+G8KAdm7U9+blFfcWhV1aMdzugvPMl6woXgvJj7qHq5tAL4v6oswCORhpSBfLgOQVFaica5LiHsvWlAedOhxGmnJqMTwuepjBCxXhs3+I8Kof1n4oUL9gKytXjOVCX/f7XU1HiinU=
-  file:
-    - build/artifacts/guzzle.phar
-    - build/artifacts/guzzle.zip
-  on:
-    repo: guzzle/guzzle
-    tags: true
-    all_branches: true
-    php: 5.5
diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md
deleted file mode 100644
index de7da2d..0000000
--- a/vendor/guzzlehttp/guzzle/CHANGELOG.md
+++ /dev/null
@@ -1,1188 +0,0 @@
-# CHANGELOG
-
-## 6.1.0 - 2015-09-08
-
-* Feature: Added the `on_stats` request option to provide access to transfer
-  statistics for requests. https://github.com/guzzle/guzzle/pull/1202
-* Feature: Added the ability to persist session cookies in CookieJars.
-  https://github.com/guzzle/guzzle/pull/1195
-* Feature: Some compatibility updates for Google APP Engine
-  https://github.com/guzzle/guzzle/pull/1216
-* Feature: Added support for NO_PROXY to prevent the use of a proxy based on
-  a simple set of rules. https://github.com/guzzle/guzzle/pull/1197
-* Feature: Cookies can now contain square brackets.
-  https://github.com/guzzle/guzzle/pull/1237
-* Bug fix: Now correctly parsing `=` inside of quotes in Cookies.
-  https://github.com/guzzle/guzzle/pull/1232
-* Bug fix: Cusotm cURL options now correctly override curl options of the
-  same name. https://github.com/guzzle/guzzle/pull/1221
-* Bug fix: Content-Type header is now added when using an explicitly provided
-  multipart body. https://github.com/guzzle/guzzle/pull/1218
-* Bug fix: Now ignoring Set-Cookie headers that have no name.
-* Bug fix: Reason phrase is no longer cast to an int in some cases in the
-  cURL handler. https://github.com/guzzle/guzzle/pull/1187
-* Bug fix: Remove the Authorization header when redirecting if the Host
-  header changes. https://github.com/guzzle/guzzle/pull/1207
-* Bug fix: Cookie path matching fixes
-  https://github.com/guzzle/guzzle/issues/1129
-* Bug fix: Fixing the cURL `body_as_string` setting
-  https://github.com/guzzle/guzzle/pull/1201
-* Bug fix: quotes are no longer stripped when parsing cookies.
-  https://github.com/guzzle/guzzle/issues/1172
-* Bug fix: `form_params` and `query` now always uses the `&` separator.
-  https://github.com/guzzle/guzzle/pull/1163
-* Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set.
-  https://github.com/guzzle/guzzle/pull/1189
-
-## 6.0.2 - 2015-07-04
-
-* Fixed a memory leak in the curl handlers in which references to callbacks
-  were not being removed by `curl_reset`.
-* Cookies are now extracted properly before redirects.
-* Cookies now allow more character ranges.
-* Decoded Content-Encoding responses are now modified to correctly reflect
-  their state if the encoding was automatically removed by a handler. This
-  means that the `Content-Encoding` header may be removed an the
-  `Content-Length` modified to reflect the message size after removing the
-  encoding.
-* Added a more explicit error message when trying to use `form_params` and
-  `multipart` in the same request.
-* Several fixes for HHVM support.
-* Functions are now conditionally required using an additional level of
-  indirection to help with global Composer installations.
-
-## 6.0.1 - 2015-05-27
-
-* Fixed a bug with serializing the `query` request option where the `&`
-  separator was missing.
-* Added a better error message for when `body` is provided as an array. Please
-  use `form_params` or `multipart` instead.
-* Various doc fixes.
-
-## 6.0.0 - 2015-05-26
-
-* See the UPGRADING.md document for more information.
-* Added `multipart` and `form_params` request options.
-* Added `synchronous` request option.
-* Added the `on_headers` request option.
-* Fixed `expect` handling.
-* No longer adding default middlewares in the client ctor. These need to be
-  present on the provided handler in order to work.
-* Requests are no longer initiated when sending async requests with the
-  CurlMultiHandler. This prevents unexpected recursion from requests completing
-  while ticking the cURL loop.
-* Removed the semantics of setting `default` to `true`. This is no longer
-  required now that the cURL loop is not ticked for async requests.
-* Added request and response logging middleware.
-* No longer allowing self signed certificates when using the StreamHandler.
-* Ensuring that `sink` is valid if saving to a file.
-* Request exceptions now include a "handler context" which provides handler
-  specific contextual information.
-* Added `GuzzleHttp\RequestOptions` to allow request options to be applied
-  using constants.
-* `$maxHandles` has been removed from CurlMultiHandler.
-* `MultipartPostBody` is now part of the `guzzlehttp/psr7` package.
-
-## 5.3.0 - 2015-05-19
-
-* Mock now supports `save_to`
-* Marked `AbstractRequestEvent::getTransaction()` as public.
-* Fixed a bug in which multiple headers using different casing would overwrite
-  previous headers in the associative array.
-* Added `Utils::getDefaultHandler()`
-* Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated.
-* URL scheme is now always lowercased.
-
-## 6.0.0-beta.1
-
-* Requires PHP >= 5.5
-* Updated to use PSR-7
-  * Requires immutable messages, which basically means an event based system
-    owned by a request instance is no longer possible.
-  * Utilizing the [Guzzle PSR-7 package](https://github.com/guzzle/psr7).
-  * Removed the dependency on `guzzlehttp/streams`. These stream abstractions
-    are available in the `guzzlehttp/psr7` package under the `GuzzleHttp\Psr7`
-    namespace.
-* Added middleware and handler system
-  * Replaced the Guzzle event and subscriber system with a middleware system.
-  * No longer depends on RingPHP, but rather places the HTTP handlers directly
-    in Guzzle, operating on PSR-7 messages.
-  * Retry logic is now encapsulated in `GuzzleHttp\Middleware::retry`, which
-    means the `guzzlehttp/retry-subscriber` is now obsolete.
-  * Mocking responses is now handled using `GuzzleHttp\Handler\MockHandler`.
-* Asynchronous responses
-  * No longer supports the `future` request option to send an async request.
-    Instead, use one of the `*Async` methods of a client (e.g., `requestAsync`,
-    `getAsync`, etc.).
-  * Utilizing `GuzzleHttp\Promise` instead of React's promise library to avoid
-    recursion required by chaining and forwarding react promises. See
-    https://github.com/guzzle/promises
-  * Added `requestAsync` and `sendAsync` to send request asynchronously.
-  * Added magic methods for `getAsync()`, `postAsync()`, etc. to send requests
-    asynchronously.
-* Request options
-  * POST and form updates
-    * Added the `form_fields` and `form_files` request options.
-    * Removed the `GuzzleHttp\Post` namespace.
-    * The `body` request option no longer accepts an array for POST requests.
-  * The `exceptions` request option has been deprecated in favor of the
-    `http_errors` request options.
-  * The `save_to` request option has been deprecated in favor of `sink` request
-    option.
-* Clients no longer accept an array of URI template string and variables for
-  URI variables. You will need to expand URI templates before passing them
-  into a client constructor or request method.
-* Client methods `get()`, `post()`, `put()`, `patch()`, `options()`, etc. are
-  now magic methods that will send synchronous requests.
-* Replaced `Utils.php` with plain functions in `functions.php`.
-* Removed `GuzzleHttp\Collection`.
-* Removed `GuzzleHttp\BatchResults`. Batched pool results are now returned as
-  an array.
-* Removed `GuzzleHttp\Query`. Query string handling is now handled using an
-  associative array passed into the `query` request option. The query string
-  is serialized using PHP's `http_build_query`. If you need more control, you
-  can pass the query string in as a string.
-* `GuzzleHttp\QueryParser` has been replaced with the
-  `GuzzleHttp\Psr7\parse_query`.
-
-## 5.2.0 - 2015-01-27
-
-* Added `AppliesHeadersInterface` to make applying headers to a request based
-  on the body more generic and not specific to `PostBodyInterface`.
-* Reduced the number of stack frames needed to send requests.
-* Nested futures are now resolved in the client rather than the RequestFsm
-* Finishing state transitions is now handled in the RequestFsm rather than the
-  RingBridge.
-* Added a guard in the Pool class to not use recursion for request retries.
-
-## 5.1.0 - 2014-12-19
-
-* Pool class no longer uses recursion when a request is intercepted.
-* The size of a Pool can now be dynamically adjusted using a callback.
-  See https://github.com/guzzle/guzzle/pull/943.
-* Setting a request option to `null` when creating a request with a client will
-  ensure that the option is not set. This allows you to overwrite default
-  request options on a per-request basis.
-  See https://github.com/guzzle/guzzle/pull/937.
-* Added the ability to limit which protocols are allowed for redirects by
-  specifying a `protocols` array in the `allow_redirects` request option.
-* Nested futures due to retries are now resolved when waiting for synchronous
-  responses. See https://github.com/guzzle/guzzle/pull/947.
-* `"0"` is now an allowed URI path. See
-  https://github.com/guzzle/guzzle/pull/935.
-* `Query` no longer typehints on the `$query` argument in the constructor,
-  allowing for strings and arrays.
-* Exceptions thrown in the `end` event are now correctly wrapped with Guzzle
-  specific exceptions if necessary.
-
-## 5.0.3 - 2014-11-03
-
-This change updates query strings so that they are treated as un-encoded values
-by default where the value represents an un-encoded value to send over the
-wire. A Query object then encodes the value before sending over the wire. This
-means that even value query string values (e.g., ":") are url encoded. This
-makes the Query class match PHP's http_build_query function. However, if you
-want to send requests over the wire using valid query string characters that do
-not need to be encoded, then you can provide a string to Url::setQuery() and
-pass true as the second argument to specify that the query string is a raw
-string that should not be parsed or encoded (unless a call to getQuery() is
-subsequently made, forcing the query-string to be converted into a Query
-object).
-
-## 5.0.2 - 2014-10-30
-
-* Added a trailing `\r\n` to multipart/form-data payloads. See
-  https://github.com/guzzle/guzzle/pull/871
-* Added a `GuzzleHttp\Pool::send()` convenience method to match the docs.
-* Status codes are now returned as integers. See
-  https://github.com/guzzle/guzzle/issues/881
-* No longer overwriting an existing `application/x-www-form-urlencoded` header
-  when sending POST requests, allowing for customized headers. See
-  https://github.com/guzzle/guzzle/issues/877
-* Improved path URL serialization.
-
-  * No longer double percent-encoding characters in the path or query string if
-    they are already encoded.
-  * Now properly encoding the supplied path to a URL object, instead of only
-    encoding ' ' and '?'.
-  * Note: This has been changed in 5.0.3 to now encode query string values by
-    default unless the `rawString` argument is provided when setting the query
-    string on a URL: Now allowing many more characters to be present in the
-    query string without being percent encoded. See http://tools.ietf.org/html/rfc3986#appendix-A
-
-## 5.0.1 - 2014-10-16
-
-Bugfix release.
-
-* Fixed an issue where connection errors still returned response object in
-  error and end events event though the response is unusable. This has been
-  corrected so that a response is not returned in the `getResponse` method of
-  these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867
-* Fixed an issue where transfer statistics were not being populated in the
-  RingBridge. https://github.com/guzzle/guzzle/issues/866
-
-## 5.0.0 - 2014-10-12
-
-Adding support for non-blocking responses and some minor API cleanup.
-
-### New Features
-
-* Added support for non-blocking responses based on `guzzlehttp/guzzle-ring`.
-* Added a public API for creating a default HTTP adapter.
-* Updated the redirect plugin to be non-blocking so that redirects are sent
-  concurrently. Other plugins like this can now be updated to be non-blocking.
-* Added a "progress" event so that you can get upload and download progress
-  events.
-* Added `GuzzleHttp\Pool` which implements FutureInterface and transfers
-  requests concurrently using a capped pool size as efficiently as possible.
-* Added `hasListeners()` to EmitterInterface.
-* Removed `GuzzleHttp\ClientInterface::sendAll` and marked
-  `GuzzleHttp\Client::sendAll` as deprecated (it's still there, just not the
-  recommended way).
-
-### Breaking changes
-
-The breaking changes in this release are relatively minor. The biggest thing to
-look out for is that request and response objects no longer implement fluent
-interfaces.
-
-* Removed the fluent interfaces (i.e., `return $this`) from requests,
-  responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`,
-  `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and
-  `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of
-  why I did this: http://ocramius.github.io/blog/fluent-interfaces-are-evil/.
-  This also makes the Guzzle message interfaces compatible with the current
-  PSR-7 message proposal.
-* Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except
-  for the HTTP request functions from function.php, these functions are now
-  implemented in `GuzzleHttp\Utils` using camelCase. `GuzzleHttp\json_decode`
-  moved to `GuzzleHttp\Utils::jsonDecode`. `GuzzleHttp\get_path` moved to
-  `GuzzleHttp\Utils::getPath`. `GuzzleHttp\set_path` moved to
-  `GuzzleHttp\Utils::setPath`. `GuzzleHttp\batch` should now be
-  `GuzzleHttp\Pool::batch`, which returns an `objectStorage`. Using functions.php
-  caused problems for many users: they aren't PSR-4 compliant, require an
-  explicit include, and needed an if-guard to ensure that the functions are not
-  declared multiple times.
-* Rewrote adapter layer.
-    * Removing all classes from `GuzzleHttp\Adapter`, these are now
-      implemented as callables that are stored in `GuzzleHttp\Ring\Client`.
-    * Removed the concept of "parallel adapters". Sending requests serially or
-      concurrently is now handled using a single adapter.
-    * Moved `GuzzleHttp\Adapter\Transaction` to `GuzzleHttp\Transaction`. The
-      Transaction object now exposes the request, response, and client as public
-      properties. The getters and setters have been removed.
-* Removed the "headers" event. This event was only useful for changing the
-  body a response once the headers of the response were known. You can implement
-  a similar behavior in a number of ways. One example might be to use a
-  FnStream that has access to the transaction being sent. For example, when the
-  first byte is written, you could check if the response headers match your
-  expectations, and if so, change the actual stream body that is being
-  written to.
-* Removed the `asArray` parameter from
-  `GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
-  value as an array, then use the newly added `getHeaderAsArray()` method of
-  `MessageInterface`. This change makes the Guzzle interfaces compatible with
-  the PSR-7 interfaces.
-* `GuzzleHttp\Message\MessageFactory` no longer allows subclasses to add
-  custom request options using double-dispatch (this was an implementation
-  detail). Instead, you should now provide an associative array to the
-  constructor which is a mapping of the request option name mapping to a
-  function that applies the option value to a request.
-* Removed the concept of "throwImmediately" from exceptions and error events.
-  This control mechanism was used to stop a transfer of concurrent requests
-  from completing. This can now be handled by throwing the exception or by
-  cancelling a pool of requests or each outstanding future request individually.
-* Updated to "GuzzleHttp\Streams" 3.0.
-    * `GuzzleHttp\Stream\StreamInterface::getContents()` no longer accepts a
-      `maxLen` parameter. This update makes the Guzzle streams project
-      compatible with the current PSR-7 proposal.
-    * `GuzzleHttp\Stream\Stream::__construct`,
-      `GuzzleHttp\Stream\Stream::factory`, and
-      `GuzzleHttp\Stream\Utils::create` no longer accept a size in the second
-      argument. They now accept an associative array of options, including the
-      "size" key and "metadata" key which can be used to provide custom metadata.
-
-## 4.2.2 - 2014-09-08
-
-* Fixed a memory leak in the CurlAdapter when reusing cURL handles.
-* No longer using `request_fulluri` in stream adapter proxies.
-* Relative redirects are now based on the last response, not the first response.
-
-## 4.2.1 - 2014-08-19
-
-* Ensuring that the StreamAdapter does not always add a Content-Type header
-* Adding automated github releases with a phar and zip
-
-## 4.2.0 - 2014-08-17
-
-* Now merging in default options using a case-insensitive comparison.
-  Closes https://github.com/guzzle/guzzle/issues/767
-* Added the ability to automatically decode `Content-Encoding` response bodies
-  using the `decode_content` request option. This is set to `true` by default
-  to decode the response body if it comes over the wire with a
-  `Content-Encoding`. Set this value to `false` to disable decoding the
-  response content, and pass a string to provide a request `Accept-Encoding`
-  header and turn on automatic response decoding. This feature now allows you
-  to pass an `Accept-Encoding` header in the headers of a request but still
-  disable automatic response decoding.
-  Closes https://github.com/guzzle/guzzle/issues/764
-* Added the ability to throw an exception immediately when transferring
-  requests in parallel. Closes https://github.com/guzzle/guzzle/issues/760
-* Updating guzzlehttp/streams dependency to ~2.1
-* No longer utilizing the now deprecated namespaced methods from the stream
-  package.
-
-## 4.1.8 - 2014-08-14
-
-* Fixed an issue in the CurlFactory that caused setting the `stream=false`
-  request option to throw an exception.
-  See: https://github.com/guzzle/guzzle/issues/769
-* TransactionIterator now calls rewind on the inner iterator.
-  See: https://github.com/guzzle/guzzle/pull/765
-* You can now set the `Content-Type` header to `multipart/form-data`
-  when creating POST requests to force multipart bodies.
-  See https://github.com/guzzle/guzzle/issues/768
-
-## 4.1.7 - 2014-08-07
-
-* Fixed an error in the HistoryPlugin that caused the same request and response
-  to be logged multiple times when an HTTP protocol error occurs.
-* Ensuring that cURL does not add a default Content-Type when no Content-Type
-  has been supplied by the user. This prevents the adapter layer from modifying
-  the request that is sent over the wire after any listeners may have already
-  put the request in a desired state (e.g., signed the request).
-* Throwing an exception when you attempt to send requests that have the
-  "stream" set to true in parallel using the MultiAdapter.
-* Only calling curl_multi_select when there are active cURL handles. This was
-  previously changed and caused performance problems on some systems due to PHP
-  always selecting until the maximum select timeout.
-* Fixed a bug where multipart/form-data POST fields were not correctly
-  aggregated (e.g., values with "&").
-
-## 4.1.6 - 2014-08-03
-
-* Added helper methods to make it easier to represent messages as strings,
-  including getting the start line and getting headers as a string.
-
-## 4.1.5 - 2014-08-02
-
-* Automatically retrying cURL "Connection died, retrying a fresh connect"
-  errors when possible.
-* cURL implementation cleanup
-* Allowing multiple event subscriber listeners to be registered per event by
-  passing an array of arrays of listener configuration.
-
-## 4.1.4 - 2014-07-22
-
-* Fixed a bug that caused multi-part POST requests with more than one field to
-  serialize incorrectly.
-* Paths can now be set to "0"
-* `ResponseInterface::xml` now accepts a `libxml_options` option and added a
-  missing default argument that was required when parsing XML response bodies.
-* A `save_to` stream is now created lazily, which means that files are not
-  created on disk unless a request succeeds.
-
-## 4.1.3 - 2014-07-15
-
-* Various fixes to multipart/form-data POST uploads
-* Wrapping function.php in an if-statement to ensure Guzzle can be used
-  globally and in a Composer install
-* Fixed an issue with generating and merging in events to an event array
-* POST headers are only applied before sending a request to allow you to change
-  the query aggregator used before uploading
-* Added much more robust query string parsing
-* Fixed various parsing and normalization issues with URLs
-* Fixing an issue where multi-valued headers were not being utilized correctly
-  in the StreamAdapter
-
-## 4.1.2 - 2014-06-18
-
-* Added support for sending payloads with GET requests
-
-## 4.1.1 - 2014-06-08
-
-* Fixed an issue related to using custom message factory options in subclasses
-* Fixed an issue with nested form fields in a multi-part POST
-* Fixed an issue with using the `json` request option for POST requests
-* Added `ToArrayInterface` to `GuzzleHttp\Cookie\CookieJar`
-
-## 4.1.0 - 2014-05-27
-
-* Added a `json` request option to easily serialize JSON payloads.
-* Added a `GuzzleHttp\json_decode()` wrapper to safely parse JSON.
-* Added `setPort()` and `getPort()` to `GuzzleHttp\Message\RequestInterface`.
-* Added the ability to provide an emitter to a client in the client constructor.
-* Added the ability to persist a cookie session using $_SESSION.
-* Added a trait that can be used to add event listeners to an iterator.
-* Removed request method constants from RequestInterface.
-* Fixed warning when invalid request start-lines are received.
-* Updated MessageFactory to work with custom request option methods.
-* Updated cacert bundle to latest build.
-
-4.0.2 (2014-04-16)
-------------------
-
-* Proxy requests using the StreamAdapter now properly use request_fulluri (#632)
-* Added the ability to set scalars as POST fields (#628)
-
-## 4.0.1 - 2014-04-04
-
-* The HTTP status code of a response is now set as the exception code of
-  RequestException objects.
-* 303 redirects will now correctly switch from POST to GET requests.
-* The default parallel adapter of a client now correctly uses the MultiAdapter.
-* HasDataTrait now initializes the internal data array as an empty array so
-  that the toArray() method always returns an array.
-
-## 4.0.0 - 2014-03-29
-
-* For more information on the 4.0 transition, see:
-  http://mtdowling.com/blog/2014/03/15/guzzle-4-rc/
-* For information on changes and upgrading, see:
-  https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
-* Added `GuzzleHttp\batch()` as a convenience function for sending requests in
-  parallel without needing to write asynchronous code.
-* Restructured how events are added to `GuzzleHttp\ClientInterface::sendAll()`.
-  You can now pass a callable or an array of associative arrays where each
-  associative array contains the "fn", "priority", and "once" keys.
-
-## 4.0.0.rc-2 - 2014-03-25
-
-* Removed `getConfig()` and `setConfig()` from clients to avoid confusion
-  around whether things like base_url, message_factory, etc. should be able to
-  be retrieved or modified.
-* Added `getDefaultOption()` and `setDefaultOption()` to ClientInterface
-* functions.php functions were renamed using snake_case to match PHP idioms
-* Added support for `HTTP_PROXY`, `HTTPS_PROXY`, and
-  `GUZZLE_CURL_SELECT_TIMEOUT` environment variables
-* Added the ability to specify custom `sendAll()` event priorities
-* Added the ability to specify custom stream context options to the stream
-  adapter.
-* Added a functions.php function for `get_path()` and `set_path()`
-* CurlAdapter and MultiAdapter now use a callable to generate curl resources
-* MockAdapter now properly reads a body and emits a `headers` event
-* Updated Url class to check if a scheme and host are set before adding ":"
-  and "//". This allows empty Url (e.g., "") to be serialized as "".
-* Parsing invalid XML no longer emits warnings
-* Curl classes now properly throw AdapterExceptions
-* Various performance optimizations
-* Streams are created with the faster `Stream\create()` function
-* Marked deprecation_proxy() as internal
-* Test server is now a collection of static methods on a class
-
-## 4.0.0-rc.1 - 2014-03-15
-
-* See https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
-
-## 3.8.1 - 2014-01-28
-
-* Bug: Always using GET requests when redirecting from a 303 response
-* Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in
-  `Guzzle\Http\ClientInterface::setSslVerification()`
-* Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL
-* Bug: The body of a request can now be set to `"0"`
-* Sending PHP stream requests no longer forces `HTTP/1.0`
-* Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of
-  each sub-exception
-* Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than
-  clobbering everything).
-* Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators)
-* Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`.
-  For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`.
-* Now properly escaping the regular expression delimiter when matching Cookie domains.
-* Network access is now disabled when loading XML documents
-
-## 3.8.0 - 2013-12-05
-
-* Added the ability to define a POST name for a file
-* JSON response parsing now properly walks additionalProperties
-* cURL error code 18 is now retried automatically in the BackoffPlugin
-* Fixed a cURL error when URLs contain fragments
-* Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were
-  CurlExceptions
-* CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e)
-* Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS`
-* Fixed a bug that was encountered when parsing empty header parameters
-* UriTemplate now has a `setRegex()` method to match the docs
-* The `debug` request parameter now checks if it is truthy rather than if it exists
-* Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin
-* Added the ability to combine URLs using strict RFC 3986 compliance
-* Command objects can now return the validation errors encountered by the command
-* Various fixes to cache revalidation (#437 and 29797e5)
-* Various fixes to the AsyncPlugin
-* Cleaned up build scripts
-
-## 3.7.4 - 2013-10-02
-
-* Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430)
-* Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp
-  (see https://github.com/aws/aws-sdk-php/issues/147)
-* Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots
-* Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420)
-* Updated the bundled cacert.pem (#419)
-* OauthPlugin now supports adding authentication to headers or query string (#425)
-
-## 3.7.3 - 2013-09-08
-
-* Added the ability to get the exception associated with a request/command when using `MultiTransferException` and
-  `CommandTransferException`.
-* Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description
-* Schemas are only injected into response models when explicitly configured.
-* No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of
-  an EntityBody.
-* Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator.
-* Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`.
-* Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody()
-* Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin
-* Bug fix: Visiting XML attributes first before visiting XML children when serializing requests
-* Bug fix: Properly parsing headers that contain commas contained in quotes
-* Bug fix: mimetype guessing based on a filename is now case-insensitive
-
-## 3.7.2 - 2013-08-02
-
-* Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander
-  See https://github.com/guzzle/guzzle/issues/371
-* Bug fix: Cookie domains are now matched correctly according to RFC 6265
-  See https://github.com/guzzle/guzzle/issues/377
-* Bug fix: GET parameters are now used when calculating an OAuth signature
-* Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted
-* `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched
-* `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input.
-  See https://github.com/guzzle/guzzle/issues/379
-* Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See
-  https://github.com/guzzle/guzzle/pull/380
-* cURL multi cleanup and optimizations
-
-## 3.7.1 - 2013-07-05
-
-* Bug fix: Setting default options on a client now works
-* Bug fix: Setting options on HEAD requests now works. See #352
-* Bug fix: Moving stream factory before send event to before building the stream. See #353
-* Bug fix: Cookies no longer match on IP addresses per RFC 6265
-* Bug fix: Correctly parsing header parameters that are in `<>` and quotes
-* Added `cert` and `ssl_key` as request options
-* `Host` header can now diverge from the host part of a URL if the header is set manually
-* `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter
-* OAuth parameters are only added via the plugin if they aren't already set
-* Exceptions are now thrown when a URL cannot be parsed
-* Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails
-* Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin
-
-## 3.7.0 - 2013-06-10
-
-* See UPGRADING.md for more information on how to upgrade.
-* Requests now support the ability to specify an array of $options when creating a request to more easily modify a
-  request. You can pass a 'request.options' configuration setting to a client to apply default request options to
-  every request created by a client (e.g. default query string variables, headers, curl options, etc.).
-* Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`.
-  See `Guzzle\Http\StaticClient::mount`.
-* Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests
-      created by a command (e.g. custom headers, query string variables, timeout settings, etc.).
-* Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the
-  headers of a response
-* Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key
-  (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`)
-* ServiceBuilders now support storing and retrieving arbitrary data
-* CachePlugin can now purge all resources for a given URI
-* CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource
-* CachePlugin now uses the Vary header to determine if a resource is a cache hit
-* `Guzzle\Http\Message\Response` now implements `\Serializable`
-* Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters
-* `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable
-* Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()`
-* Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size
-* `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message
-* Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older
-  Symfony users can still use the old version of Monolog.
-* Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`.
-  Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`.
-* Several performance improvements to `Guzzle\Common\Collection`
-* Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
-  createRequest, head, delete, put, patch, post, options, prepareRequest
-* Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
-* Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
-* Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
-  `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
-  resource, string, or EntityBody into the $options parameter to specify the download location of the response.
-* Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
-  default `array()`
-* Added `Guzzle\Stream\StreamInterface::isRepeatable`
-* Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
-  $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
-  $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`.
-* Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`.
-* Removed `Guzzle\Http\ClientInterface::expandTemplate()`
-* Removed `Guzzle\Http\ClientInterface::setRequestFactory()`
-* Removed `Guzzle\Http\ClientInterface::getCurlMulti()`
-* Removed `Guzzle\Http\Message\RequestInterface::canCache`
-* Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`
-* Removed `Guzzle\Http\Message\RequestInterface::isRedirect`
-* Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
-* You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting
-  `Guzzle\Common\Version::$emitWarnings` to true.
-* Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use
-      `$request->getResponseBody()->isRepeatable()` instead.
-* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
-  `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
-  `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-* Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
-* Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
-* Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
-* Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand.
-  These will work through Guzzle 4.0
-* Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params].
-* Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
-* Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`.
-* Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`.
-* Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
-* Marked `Guzzle\Common\Collection::inject()` as deprecated.
-* Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');`
-* CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
-  CacheStorageInterface. These two objects and interface will be removed in a future version.
-* Always setting X-cache headers on cached responses
-* Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
-* `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
-  $request, Response $response);`
-* `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
-* `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
-* Added `CacheStorageInterface::purge($url)`
-* `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
-  $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
-  CanCacheStrategyInterface $canCache = null)`
-* Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
-
-## 3.6.0 - 2013-05-29
-
-* ServiceDescription now implements ToArrayInterface
-* Added command.hidden_params to blacklist certain headers from being treated as additionalParameters
-* Guzzle can now correctly parse incomplete URLs
-* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
-* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
-* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
-* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
-  HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
-  CacheControl header implementation.
-* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
-* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
-* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
-  Guzzle\Http\Curl\RequestMediator
-* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
-* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
-* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
-* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
-* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
-* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
-* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
-  directly via interfaces
-* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
-  but are a no-op until removed.
-* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
-  `Guzzle\Service\Command\ArrayCommandInterface`.
-* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
-  on a request while the request is still being transferred
-* The ability to case-insensitively search for header values
-* Guzzle\Http\Message\Header::hasExactHeader
-* Guzzle\Http\Message\Header::raw. Use getAll()
-* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
-  instead.
-* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
-* Added the ability to cast Model objects to a string to view debug information.
-
-## 3.5.0 - 2013-05-13
-
-* Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times
-* Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove
-  itself from the EventDispatcher)
-* Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values
-* Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too
-* Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a
-  non-existent key
-* Bug: All __call() method arguments are now required (helps with mocking frameworks)
-* Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference
-  to help with refcount based garbage collection of resources created by sending a request
-* Deprecating ZF1 cache and log adapters. These will be removed in the next major version.
-* Deprecating `Response::getPreviousResponse()` (method signature still exists, but it'sdeprecated). Use the
-  HistoryPlugin for a history.
-* Added a `responseBody` alias for the `response_body` location
-* Refactored internals to no longer rely on Response::getRequest()
-* HistoryPlugin can now be cast to a string
-* HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests
-  and responses that are sent over the wire
-* Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects
-
-## 3.4.3 - 2013-04-30
-
-* Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response
-* Added a check to re-extract the temp cacert bundle from the phar before sending each request
-
-## 3.4.2 - 2013-04-29
-
-* Bug fix: Stream objects now work correctly with "a" and "a+" modes
-* Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present
-* Bug fix: AsyncPlugin no longer forces HEAD requests
-* Bug fix: DateTime timezones are now properly handled when using the service description schema formatter
-* Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails
-* Setting a response on a request will write to the custom request body from the response body if one is specified
-* LogPlugin now writes to php://output when STDERR is undefined
-* Added the ability to set multiple POST files for the same key in a single call
-* application/x-www-form-urlencoded POSTs now use the utf-8 charset by default
-* Added the ability to queue CurlExceptions to the MockPlugin
-* Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send)
-* Configuration loading now allows remote files
-
-## 3.4.1 - 2013-04-16
-
-* Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti
-  handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost.
-* Exceptions are now properly grouped when sending requests in parallel
-* Redirects are now properly aggregated when a multi transaction fails
-* Redirects now set the response on the original object even in the event of a failure
-* Bug fix: Model names are now properly set even when using $refs
-* Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax
-* Added support for oauth_callback in OAuth signatures
-* Added support for oauth_verifier in OAuth signatures
-* Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection
-
-## 3.4.0 - 2013-04-11
-
-* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289
-* Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289
-* Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263
-* Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.
-* Bug fix: Added `number` type to service descriptions.
-* Bug fix: empty parameters are removed from an OAuth signature
-* Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header
-* Bug fix: Fixed "array to string" error when validating a union of types in a service description
-* Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream
-* Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin.
-* Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs.
-* The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections.
-* Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if
-  the Content-Type can be determined based on the entity body or the path of the request.
-* Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder.
-* Added support for a PSR-3 LogAdapter.
-* Added a `command.after_prepare` event
-* Added `oauth_callback` parameter to the OauthPlugin
-* Added the ability to create a custom stream class when using a stream factory
-* Added a CachingEntityBody decorator
-* Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized.
-* The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar.
-* You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies
-* POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This
-  means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use
-  POST fields or files (the latter is only used when emulating a form POST in the browser).
-* Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest
-
-## 3.3.1 - 2013-03-10
-
-* Added the ability to create PHP streaming responses from HTTP requests
-* Bug fix: Running any filters when parsing response headers with service descriptions
-* Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing
-* Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across
-  response location visitors.
-* Bug fix: Removed the possibility of creating configuration files with circular dependencies
-* RequestFactory::create() now uses the key of a POST file when setting the POST file name
-* Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set
-
-## 3.3.0 - 2013-03-03
-
-* A large number of performance optimizations have been made
-* Bug fix: Added 'wb' as a valid write mode for streams
-* Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned
-* Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()`
-* BC: Removed `Guzzle\Http\Utils` class
-* BC: Setting a service description on a client will no longer modify the client's command factories.
-* BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using
-  the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
-* BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to
-  lowercase
-* Operation parameter objects are now lazy loaded internally
-* Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses
-* Added support for instantiating responseType=class responseClass classes. Classes must implement
-  `Guzzle\Service\Command\ResponseClassInterface`
-* Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These
-  additional properties also support locations and can be used to parse JSON responses where the outermost part of the
-  JSON is an array
-* Added support for nested renaming of JSON models (rename sentAs to name)
-* CachePlugin
-    * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error
-    * Debug headers can now added to cached response in the CachePlugin
-
-## 3.2.0 - 2013-02-14
-
-* CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients.
-* URLs with no path no longer contain a "/" by default
-* Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url.
-* BadResponseException no longer includes the full request and response message
-* Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface
-* Adding getResponseBody() to Guzzle\Http\Message\RequestInterface
-* Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription
-* Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list
-* xmlEncoding can now be customized for the XML declaration of a XML service description operation
-* Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value
-  aggregation and no longer uses callbacks
-* The URL encoding implementation of Guzzle\Http\QueryString can now be customized
-* Bug fix: Filters were not always invoked for array service description parameters
-* Bug fix: Redirects now use a target response body rather than a temporary response body
-* Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded
-* Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives
-
-## 3.1.2 - 2013-01-27
-
-* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the
-  response body. For example, the XmlVisitor now parses the XML response into an array in the before() method.
-* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent
-* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444)
-* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse()
-* Setting default headers on a client after setting the user-agent will not erase the user-agent setting
-
-## 3.1.1 - 2013-01-20
-
-* Adding wildcard support to Guzzle\Common\Collection::getPath()
-* Adding alias support to ServiceBuilder configs
-* Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface
-
-## 3.1.0 - 2013-01-12
-
-* BC: CurlException now extends from RequestException rather than BadResponseException
-* BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse()
-* Added getData to ServiceDescriptionInterface
-* Added context array to RequestInterface::setState()
-* Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http
-* Bug: Adding required content-type when JSON request visitor adds JSON to a command
-* Bug: Fixing the serialization of a service description with custom data
-* Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing
-  an array of successful and failed responses
-* Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection
-* Added Guzzle\Http\IoEmittingEntityBody
-* Moved command filtration from validators to location visitors
-* Added `extends` attributes to service description parameters
-* Added getModels to ServiceDescriptionInterface
-
-## 3.0.7 - 2012-12-19
-
-* Fixing phar detection when forcing a cacert to system if null or true
-* Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()`
-* Cleaning up `Guzzle\Common\Collection::inject` method
-* Adding a response_body location to service descriptions
-
-## 3.0.6 - 2012-12-09
-
-* CurlMulti performance improvements
-* Adding setErrorResponses() to Operation
-* composer.json tweaks
-
-## 3.0.5 - 2012-11-18
-
-* Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin
-* Bug: Response body can now be a string containing "0"
-* Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert
-* Bug: QueryString::fromString now properly parses query string parameters that contain equal signs
-* Added support for XML attributes in service description responses
-* DefaultRequestSerializer now supports array URI parameter values for URI template expansion
-* Added better mimetype guessing to requests and post files
-
-## 3.0.4 - 2012-11-11
-
-* Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value
-* Bug: Cookies can now be added that have a name, domain, or value set to "0"
-* Bug: Using the system cacert bundle when using the Phar
-* Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures
-* Enhanced cookie jar de-duplication
-* Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added
-* Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies
-* Added the ability to create any sort of hash for a stream rather than just an MD5 hash
-
-## 3.0.3 - 2012-11-04
-
-* Implementing redirects in PHP rather than cURL
-* Added PECL URI template extension and using as default parser if available
-* Bug: Fixed Content-Length parsing of Response factory
-* Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams.
-* Adding ToArrayInterface throughout library
-* Fixing OauthPlugin to create unique nonce values per request
-
-## 3.0.2 - 2012-10-25
-
-* Magic methods are enabled by default on clients
-* Magic methods return the result of a command
-* Service clients no longer require a base_url option in the factory
-* Bug: Fixed an issue with URI templates where null template variables were being expanded
-
-## 3.0.1 - 2012-10-22
-
-* Models can now be used like regular collection objects by calling filter, map, etc.
-* Models no longer require a Parameter structure or initial data in the constructor
-* Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator`
-
-## 3.0.0 - 2012-10-15
-
-* Rewrote service description format to be based on Swagger
-    * Now based on JSON schema
-    * Added nested input structures and nested response models
-    * Support for JSON and XML input and output models
-    * Renamed `commands` to `operations`
-    * Removed dot class notation
-    * Removed custom types
-* Broke the project into smaller top-level namespaces to be more component friendly
-* Removed support for XML configs and descriptions. Use arrays or JSON files.
-* Removed the Validation component and Inspector
-* Moved all cookie code to Guzzle\Plugin\Cookie
-* Magic methods on a Guzzle\Service\Client now return the command un-executed.
-* Calling getResult() or getResponse() on a command will lazily execute the command if needed.
-* Now shipping with cURL's CA certs and using it by default
-* Added previousResponse() method to response objects
-* No longer sending Accept and Accept-Encoding headers on every request
-* Only sending an Expect header by default when a payload is greater than 1MB
-* Added/moved client options:
-    * curl.blacklist to curl.option.blacklist
-    * Added ssl.certificate_authority
-* Added a Guzzle\Iterator component
-* Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin
-* Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin)
-* Added a more robust caching plugin
-* Added setBody to response objects
-* Updating LogPlugin to use a more flexible MessageFormatter
-* Added a completely revamped build process
-* Cleaning up Collection class and removing default values from the get method
-* Fixed ZF2 cache adapters
-
-## 2.8.8 - 2012-10-15
-
-* Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did
-
-## 2.8.7 - 2012-09-30
-
-* Bug: Fixed config file aliases for JSON includes
-* Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests
-* Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload
-* Bug: Hardening request and response parsing to account for missing parts
-* Bug: Fixed PEAR packaging
-* Bug: Fixed Request::getInfo
-* Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail
-* Adding the ability for the namespace Iterator factory to look in multiple directories
-* Added more getters/setters/removers from service descriptions
-* Added the ability to remove POST fields from OAuth signatures
-* OAuth plugin now supports 2-legged OAuth
-
-## 2.8.6 - 2012-09-05
-
-* Added the ability to modify and build service descriptions
-* Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command
-* Added a `json` parameter location
-* Now allowing dot notation for classes in the CacheAdapterFactory
-* Using the union of two arrays rather than an array_merge when extending service builder services and service params
-* Ensuring that a service is a string before doing strpos() checks on it when substituting services for references
-  in service builder config files.
-* Services defined in two different config files that include one another will by default replace the previously
-  defined service, but you can now create services that extend themselves and merge their settings over the previous
-* The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like
-  '_default' with a default JSON configuration file.
-
-## 2.8.5 - 2012-08-29
-
-* Bug: Suppressed empty arrays from URI templates
-* Bug: Added the missing $options argument from ServiceDescription::factory to enable caching
-* Added support for HTTP responses that do not contain a reason phrase in the start-line
-* AbstractCommand commands are now invokable
-* Added a way to get the data used when signing an Oauth request before a request is sent
-
-## 2.8.4 - 2012-08-15
-
-* Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin
-* Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable.
-* Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream
-* Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream
-* Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5())
-* Added additional response status codes
-* Removed SSL information from the default User-Agent header
-* DELETE requests can now send an entity body
-* Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries
-* Added the ability of the MockPlugin to consume mocked request bodies
-* LogPlugin now exposes request and response objects in the extras array
-
-## 2.8.3 - 2012-07-30
-
-* Bug: Fixed a case where empty POST requests were sent as GET requests
-* Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body
-* Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new
-* Added multiple inheritance to service description commands
-* Added an ApiCommandInterface and added `getParamNames()` and `hasParam()`
-* Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything
-* Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles
-
-## 2.8.2 - 2012-07-24
-
-* Bug: Query string values set to 0 are no longer dropped from the query string
-* Bug: A Collection object is no longer created each time a call is made to `Guzzle\Service\Command\AbstractCommand::getRequestHeaders()`
-* Bug: `+` is now treated as an encoded space when parsing query strings
-* QueryString and Collection performance improvements
-* Allowing dot notation for class paths in filters attribute of a service descriptions
-
-## 2.8.1 - 2012-07-16
-
-* Loosening Event Dispatcher dependency
-* POST redirects can now be customized using CURLOPT_POSTREDIR
-
-## 2.8.0 - 2012-07-15
-
-* BC: Guzzle\Http\Query
-    * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl)
-    * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding()
-    * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool)
-    * Changed the aggregation functions of QueryString to be static methods
-    * Can now use fromString() with querystrings that have a leading ?
-* cURL configuration values can be specified in service descriptions using `curl.` prefixed parameters
-* Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body
-* Cookies are no longer URL decoded by default
-* Bug: URI template variables set to null are no longer expanded
-
-## 2.7.2 - 2012-07-02
-
-* BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser.
-* BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty()
-* CachePlugin now allows for a custom request parameter function to check if a request can be cached
-* Bug fix: CachePlugin now only caches GET and HEAD requests by default
-* Bug fix: Using header glue when transferring headers over the wire
-* Allowing deeply nested arrays for composite variables in URI templates
-* Batch divisors can now return iterators or arrays
-
-## 2.7.1 - 2012-06-26
-
-* Minor patch to update version number in UA string
-* Updating build process
-
-## 2.7.0 - 2012-06-25
-
-* BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes.
-* BC: Removed magic setX methods from commands
-* BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method
-* Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable.
-* Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity)
-* Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace
-* Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin
-* Added the ability to set POST fields and files in a service description
-* Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method
-* Adding a command.before_prepare event to clients
-* Added BatchClosureTransfer and BatchClosureDivisor
-* BatchTransferException now includes references to the batch divisor and transfer strategies
-* Fixed some tests so that they pass more reliably
-* Added Guzzle\Common\Log\ArrayLogAdapter
-
-## 2.6.6 - 2012-06-10
-
-* BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin
-* BC: Removing Guzzle\Service\Command\CommandSet
-* Adding generic batching system (replaces the batch queue plugin and command set)
-* Updating ZF cache and log adapters and now using ZF's composer repository
-* Bug: Setting the name of each ApiParam when creating through an ApiCommand
-* Adding result_type, result_doc, deprecated, and doc_url to service descriptions
-* Bug: Changed the default cookie header casing back to 'Cookie'
-
-## 2.6.5 - 2012-06-03
-
-* BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource()
-* BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from
-* BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data
-* BC: Renaming methods in the CookieJarInterface
-* Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations
-* Making the default glue for HTTP headers ';' instead of ','
-* Adding a removeValue to Guzzle\Http\Message\Header
-* Adding getCookies() to request interface.
-* Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber()
-
-## 2.6.4 - 2012-05-30
-
-* BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class.
-* BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand
-* Bug: Fixing magic method command calls on clients
-* Bug: Email constraint only validates strings
-* Bug: Aggregate POST fields when POST files are present in curl handle
-* Bug: Fixing default User-Agent header
-* Bug: Only appending or prepending parameters in commands if they are specified
-* Bug: Not requiring response reason phrases or status codes to match a predefined list of codes
-* Allowing the use of dot notation for class namespaces when using instance_of constraint
-* Added any_match validation constraint
-* Added an AsyncPlugin
-* Passing request object to the calculateWait method of the ExponentialBackoffPlugin
-* Allowing the result of a command object to be changed
-* Parsing location and type sub values when instantiating a service description rather than over and over at runtime
-
-## 2.6.3 - 2012-05-23
-
-* [BC] Guzzle\Common\FromConfigInterface no longer requires any config options.
-* [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields.
-* You can now use an array of data when creating PUT request bodies in the request factory.
-* Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable.
-* [Http] Adding support for Content-Type in multipart POST uploads per upload
-* [Http] Added support for uploading multiple files using the same name (foo[0], foo[1])
-* Adding more POST data operations for easier manipulation of POST data.
-* You can now set empty POST fields.
-* The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files.
-* Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate.
-* CS updates
-
-## 2.6.2 - 2012-05-19
-
-* [Http] Better handling of nested scope requests in CurlMulti.  Requests are now always prepares in the send() method rather than the addRequest() method.
-
-## 2.6.1 - 2012-05-19
-
-* [BC] Removing 'path' support in service descriptions.  Use 'uri'.
-* [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache.
-* [BC] Removing Guzzle\Common\NullObject.  Use https://github.com/mtdowling/NullObject if you need it.
-* [BC] Removing Guzzle\Common\XmlElement.
-* All commands, both dynamic and concrete, have ApiCommand objects.
-* Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits.
-* Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored.
-* Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible.
-
-## 2.6.0 - 2012-05-15
-
-* [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder
-* [BC] Executing a Command returns the result of the command rather than the command
-* [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed.
-* [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args.
-* [BC] Moving ResourceIterator* to Guzzle\Service\Resource
-* [BC] Completely refactored ResourceIterators to iterate over a cloned command object
-* [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate
-* [BC] Guzzle\Guzzle is now deprecated
-* Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject
-* Adding Guzzle\Version class to give version information about Guzzle
-* Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate()
-* Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data
-* ServiceDescription and ServiceBuilder are now cacheable using similar configs
-* Changing the format of XML and JSON service builder configs.  Backwards compatible.
-* Cleaned up Cookie parsing
-* Trimming the default Guzzle User-Agent header
-* Adding a setOnComplete() method to Commands that is called when a command completes
-* Keeping track of requests that were mocked in the MockPlugin
-* Fixed a caching bug in the CacheAdapterFactory
-* Inspector objects can be injected into a Command object
-* Refactoring a lot of code and tests to be case insensitive when dealing with headers
-* Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL
-* Adding the ability to set global option overrides to service builder configs
-* Adding the ability to include other service builder config files from within XML and JSON files
-* Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method.
-
-## 2.5.0 - 2012-05-08
-
-* Major performance improvements
-* [BC] Simplifying Guzzle\Common\Collection.  Please check to see if you are using features that are now deprecated.
-* [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component.
-* [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates.  Use "{}"
-* Added the ability to passed parameters to all requests created by a client
-* Added callback functionality to the ExponentialBackoffPlugin
-* Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies.
-* Rewinding request stream bodies when retrying requests
-* Exception is thrown when JSON response body cannot be decoded
-* Added configurable magic method calls to clients and commands.  This is off by default.
-* Fixed a defect that added a hash to every parsed URL part
-* Fixed duplicate none generation for OauthPlugin.
-* Emitting an event each time a client is generated by a ServiceBuilder
-* Using an ApiParams object instead of a Collection for parameters of an ApiCommand
-* cache.* request parameters should be renamed to params.cache.*
-* Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc.). See CurlHandle.
-* Added the ability to disable type validation of service descriptions
-* ServiceDescriptions and ServiceBuilders are now Serializable
diff --git a/vendor/guzzlehttp/guzzle/LICENSE b/vendor/guzzlehttp/guzzle/LICENSE
deleted file mode 100644
index 9af9fba..0000000
--- a/vendor/guzzlehttp/guzzle/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011-2015 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.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.
diff --git a/vendor/guzzlehttp/guzzle/README.md b/vendor/guzzlehttp/guzzle/README.md
deleted file mode 100644
index 2d721c0..0000000
--- a/vendor/guzzlehttp/guzzle/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-Guzzle, PHP HTTP client
-=======================
-
-[![Build Status](https://secure.travis-ci.org/guzzle/guzzle.svg?branch=master)](http://travis-ci.org/guzzle/guzzle)
-
-Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and
-trivial to integrate with web services.
-
-- Simple interface for building query strings, POST requests, streaming large
-  uploads, streaming large downloads, using HTTP cookies, uploading JSON data,
-  etc...
-- Can send both synchronous and asynchronous requests using the same interface.
-- Uses PSR-7 interfaces for requests, responses, and streams. This allows you
-  to utilize other PSR-7 compatible libraries with Guzzle.
-- Abstracts away the underlying HTTP transport, allowing you to write
-  environment and transport agnostic code; i.e., no hard dependency on cURL,
-  PHP streams, sockets, or non-blocking event loops.
-- Middleware system allows you to augment and compose client behavior.
-
-```php
-$client = new GuzzleHttp\Client();
-$res = $client->request('GET', 'https://api.github.com/user', [
-    'auth' => ['user', 'pass']
-]);
-echo $res->getStatusCode();
-// "200"
-echo $res->getHeader('content-type');
-// 'application/json; charset=utf8'
-echo $res->getBody();
-// {"type":"User"...'
-
-// Send an asynchronous request.
-$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
-$promise = $client->sendAsync($request)->then(function ($response) {
-    echo 'I completed! ' . $response->getBody();
-});
-$promise->wait();
-```
-
-## Help and docs
-
-- [Documentation](http://guzzlephp.org/)
-- [stackoverflow](http://stackoverflow.com/questions/tagged/guzzle)
-- [Gitter](https://gitter.im/guzzle/guzzle)
-
-
-## Installing Guzzle
-
-The recommended way to install Guzzle is through
-[Composer](http://getcomposer.org).
-
-```bash
-# Install Composer
-curl -sS https://getcomposer.org/installer | php
-```
-
-Next, run the Composer command to install the latest stable version of Guzzle:
-
-```bash
-composer.phar require guzzlehttp/guzzle
-```
-
-After installing, you need to require Composer's autoloader:
-
-```php
-require 'vendor/autoload.php';
-```
-
-You can then later update Guzzle using composer:
-
- ```bash
-composer.phar update
- ```
-
-
-## Version Guidance
-
-| Version | Status      | Packagist           | Namespace    | Repo                | Docs                | PSR-7 |
-|---------|-------------|---------------------|--------------|---------------------|---------------------|-------|
-| 3.x     | EOL         | `guzzle/guzzle`     | `Guzzle`     | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No    |
-| 4.x     | EOL         | `guzzlehttp/guzzle` | `GuzzleHttp` | N/A                 | N/A                 | No    |
-| 5.x     | Maintained  | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No    |
-| 6.x     | Latest      | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes   |
-
-[guzzle-3-repo]: https://github.com/guzzle/guzzle3
-[guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3
-[guzzle-6-repo]: https://github.com/guzzle/guzzle
-[guzzle-3-docs]: http://guzzle3.readthedocs.org/en/latest/
-[guzzle-5-docs]: http://guzzle.readthedocs.org/en/5.3/
-[guzzle-6-docs]: http://guzzle.readthedocs.org/en/latest/
diff --git a/vendor/guzzlehttp/guzzle/UPGRADING.md b/vendor/guzzlehttp/guzzle/UPGRADING.md
deleted file mode 100644
index 9e31ddc..0000000
--- a/vendor/guzzlehttp/guzzle/UPGRADING.md
+++ /dev/null
@@ -1,1203 +0,0 @@
-Guzzle Upgrade Guide
-====================
-
-5.0 to 6.0
-----------
-
-Guzzle now uses [PSR-7](http://www.php-fig.org/psr/psr-7/) for HTTP messages.
-Due to the fact that these messages are immutable, this prompted a refactoring
-of Guzzle to use a middleware based system rather than an event system. Any
-HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be
-updated to work with the new immutable PSR-7 request and response objects. Any
-event listeners or subscribers need to be updated to become middleware
-functions that wrap handlers (or are injected into a
-`GuzzleHttp\HandlerStack`).
-
-- Removed `GuzzleHttp\BatchResults`
-- Removed `GuzzleHttp\Collection`
-- Removed `GuzzleHttp\HasDataTrait`
-- Removed `GuzzleHttp\ToArrayInterface`
-- The `guzzlehttp/streams` dependency has been removed. Stream functionality
-  is now present in the `GuzzleHttp\Psr7` namespace provided by the
-  `guzzlehttp/psr7` package.
-- Guzzle no longer uses ReactPHP promises and now uses the
-  `guzzlehttp/promises` library. We use a custom promise library for three
-  significant reasons:
-  1. React promises (at the time of writing this) are recursive. Promise
-     chaining and promise resolution will eventually blow the stack. Guzzle
-     promises are not recursive as they use a sort of trampolining technique.
-     Note: there has been movement in the React project to modify promises to
-     no longer utilize recursion.
-  2. Guzzle needs to have the ability to synchronously block on a promise to
-     wait for a result. Guzzle promises allows this functionality (and does
-     not require the use of recursion).
-  3. Because we need to be able to wait on a result, doing so using React
-     promises requires wrapping react promises with RingPHP futures. This
-     overhead is no longer needed, reducing stack sizes, reducing complexity,
-     and improving performance.
-- `GuzzleHttp\Mimetypes` has been moved to a function in
-  `GuzzleHttp\Psr7\mimetype_from_extension` and
-  `GuzzleHttp\Psr7\mimetype_from_filename`.
-- `GuzzleHttp\Query` and `GuzzleHttp\QueryParser` have been removed. Query
-  strings must now be passed into request objects as strings, or provided to
-  the `query` request option when creating requests with clients. The `query`
-  option uses PHP's `http_build_query` to convert an array to a string. If you
-  need a different serialization technique, you will need to pass the query
-  string in as a string. There are a couple helper functions that will make
-  working with query strings easier: `GuzzleHttp\Psr7\parse_query` and
-  `GuzzleHttp\Psr7\build_query`.
-- Guzzle no longer has a dependency on RingPHP. Due to the use of a middleware
-  system based on PSR-7, using RingPHP and it's middleware system as well adds
-  more complexity than the benefits it provides. All HTTP handlers that were
-  present in RingPHP have been modified to work directly with PSR-7 messages
-  and placed in the `GuzzleHttp\Handler` namespace. This significantly reduces
-  complexity in Guzzle, removes a dependency, and improves performance. RingPHP
-  will be maintained for Guzzle 5 support, but will no longer be a part of
-  Guzzle 6.
-- As Guzzle now uses a middleware based systems the event system and RingPHP
-  integration has been removed. Note: while the event system has been removed,
-  it is possible to add your own type of event system that is powered by the
-  middleware system.
-  - Removed the `Event` namespace.
-  - Removed the `Subscriber` namespace.
-  - Removed `Transaction` class
-  - Removed `RequestFsm`
-  - Removed `RingBridge`
-  - `GuzzleHttp\Subscriber\Cookie` is now provided by
-    `GuzzleHttp\Middleware::cookies`
-  - `GuzzleHttp\Subscriber\HttpError` is now provided by
-    `GuzzleHttp\Middleware::httpError`
-  - `GuzzleHttp\Subscriber\History` is now provided by
-    `GuzzleHttp\Middleware::history`
-  - `GuzzleHttp\Subscriber\Mock` is now provided by
-    `GuzzleHttp\Handler\MockHandler`
-  - `GuzzleHttp\Subscriber\Prepare` is now provided by
-    `GuzzleHttp\PrepareBodyMiddleware`
-  - `GuzzleHttp\Subscriber\Redirect` is now provided by
-    `GuzzleHttp\RedirectMiddleware`
-- Guzzle now uses `Psr\Http\Message\UriInterface` (implements in
-  `GuzzleHttp\Psr7\Uri`) for URI support. `GuzzleHttp\Url` is now gone.
-- Static functions in `GuzzleHttp\Utils` have been moved to namespaced
-  functions under the `GuzzleHttp` namespace. This requires either a Composer
-  based autoloader or you to include functions.php.
-- `GuzzleHttp\ClientInterface::getDefaultOption` has been renamed to
-  `GuzzleHttp\ClientInterface::getConfig`.
-- `GuzzleHttp\ClientInterface::setDefaultOption` has been removed.
-- The `json` and `xml` methods of response objects has been removed. With the
-  migration to strictly adhering to PSR-7 as the interface for Guzzle messages,
-  adding methods to message interfaces would actually require Guzzle messages
-  to extend from PSR-7 messages rather then work with them directly.
-
-## Migrating to middleware
-
-The change to PSR-7 unfortunately required significant refactoring to Guzzle
-due to the fact that PSR-7 messages are immutable. Guzzle 5 relied on an event
-system from plugins. The event system relied on mutability of HTTP messages and
-side effects in order to work. With immutable messages, you have to change your
-workflow to become more about either returning a value (e.g., functional
-middlewares) or setting a value on an object. Guzzle v6 has chosen the
-functional middleware approach.
-
-Instead of using the event system to listen for things like the `before` event,
-you now create a stack based middleware function that intercepts a request on
-the way in and the promise of the response on the way out. This is a much
-simpler and more predictable approach than the event system and works nicely
-with PSR-7 middleware. Due to the use of promises, the middleware system is
-also asynchronous.
-
-v5:
-
-```php
-use GuzzleHttp\Event\BeforeEvent;
-$client = new GuzzleHttp\Client();
-// Get the emitter and listen to the before event.
-$client->getEmitter()->on('before', function (BeforeEvent $e) {
-    // Guzzle v5 events relied on mutation
-    $e->getRequest()->setHeader('X-Foo', 'Bar');
-});
-```
-
-v6:
-
-In v6, you can modify the request before it is sent using the `mapRequest`
-middleware. The idiomatic way in v6 to modify the request/response lifecycle is
-to setup a handler middleware stack up front and inject the handler into a
-client.
-
-```php
-use GuzzleHttp\Middleware;
-// Create a handler stack that has all of the default middlewares attached
-$handler = GuzzleHttp\HandlerStack::create();
-// Push the handler onto the handler stack
-$handler->push(Middleware::mapRequest(function (RequestInterface $request) {
-    // Notice that we have to return a request object
-    return $request->withHeader('X-Foo', 'Bar');
-});
-// Inject the handler into the client
-$client = new GuzzleHttp\Client(['handler' => $handler]);
-```
-
-## POST Requests
-
-This version added the [`form_params`](http://guzzle.readthedocs.org/en/latest/request-options.html#form_params)
-and `multipart` request options. `form_params` is an associative array of
-strings or array of strings and is used to serialize an
-`application/x-www-form-urlencoded` POST request. The
-[`multipart`](http://guzzle.readthedocs.org/en/latest/request-options.html#multipart)
-option is now used to send a multipart/form-data POST request.
-
-`GuzzleHttp\Post\PostFile` has been removed. Use the `multipart` option to add
-POST files to a multipart/form-data request.
-
-The `body` option no longer accepts an array to send POST requests. Please use
-`multipart` or `form_params` instead.
-
-The `base_url` option has been renamed to `base_uri`.
-
-4.x to 5.0
-----------
-
-## Rewritten Adapter Layer
-
-Guzzle now uses [RingPHP](http://ringphp.readthedocs.org/en/latest) to send
-HTTP requests. The `adapter` option in a `GuzzleHttp\Client` constructor
-is still supported, but it has now been renamed to `handler`. Instead of
-passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP
-`callable` that follows the RingPHP specification.
-
-## Removed Fluent Interfaces
-
-[Fluent interfaces were removed](http://ocramius.github.io/blog/fluent-interfaces-are-evil)
-from the following classes:
-
-- `GuzzleHttp\Collection`
-- `GuzzleHttp\Url`
-- `GuzzleHttp\Query`
-- `GuzzleHttp\Post\PostBody`
-- `GuzzleHttp\Cookie\SetCookie`
-
-## Removed functions.php
-
-Removed "functions.php", so that Guzzle is truly PSR-4 compliant. The following
-functions can be used as replacements.
-
-- `GuzzleHttp\json_decode` -> `GuzzleHttp\Utils::jsonDecode`
-- `GuzzleHttp\get_path` -> `GuzzleHttp\Utils::getPath`
-- `GuzzleHttp\Utils::setPath` -> `GuzzleHttp\set_path`
-- `GuzzleHttp\Pool::batch` -> `GuzzleHttp\batch`. This function is, however,
-  deprecated in favor of using `GuzzleHttp\Pool::batch()`.
-
-The "procedural" global client has been removed with no replacement (e.g.,
-`GuzzleHttp\get()`, `GuzzleHttp\post()`, etc.). Use a `GuzzleHttp\Client`
-object as a replacement.
-
-## `throwImmediately` has been removed
-
-The concept of "throwImmediately" has been removed from exceptions and error
-events. This control mechanism was used to stop a transfer of concurrent
-requests from completing. This can now be handled by throwing the exception or
-by cancelling a pool of requests or each outstanding future request
-individually.
-
-## headers event has been removed
-
-Removed the "headers" event. This event was only useful for changing the
-body a response once the headers of the response were known. You can implement
-a similar behavior in a number of ways. One example might be to use a
-FnStream that has access to the transaction being sent. For example, when the
-first byte is written, you could check if the response headers match your
-expectations, and if so, change the actual stream body that is being
-written to.
-
-## Updates to HTTP Messages
-
-Removed the `asArray` parameter from
-`GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
-value as an array, then use the newly added `getHeaderAsArray()` method of
-`MessageInterface`. This change makes the Guzzle interfaces compatible with
-the PSR-7 interfaces.
-
-3.x to 4.0
-----------
-
-## Overarching changes:
-
-- Now requires PHP 5.4 or greater.
-- No longer requires cURL to send requests.
-- Guzzle no longer wraps every exception it throws. Only exceptions that are
-  recoverable are now wrapped by Guzzle.
-- Various namespaces have been removed or renamed.
-- No longer requiring the Symfony EventDispatcher. A custom event dispatcher
-  based on the Symfony EventDispatcher is
-  now utilized in `GuzzleHttp\Event\EmitterInterface` (resulting in significant
-  speed and functionality improvements).
-
-Changes per Guzzle 3.x namespace are described below.
-
-## Batch
-
-The `Guzzle\Batch` namespace has been removed. This is best left to
-third-parties to implement on top of Guzzle's core HTTP library.
-
-## Cache
-
-The `Guzzle\Cache` namespace has been removed. (Todo: No suitable replacement
-has been implemented yet, but hoping to utilize a PSR cache interface).
-
-## Common
-
-- Removed all of the wrapped exceptions. It's better to use the standard PHP
-  library for unrecoverable exceptions.
-- `FromConfigInterface` has been removed.
-- `Guzzle\Common\Version` has been removed. The VERSION constant can be found
-  at `GuzzleHttp\ClientInterface::VERSION`.
-
-### Collection
-
-- `getAll` has been removed. Use `toArray` to convert a collection to an array.
-- `inject` has been removed.
-- `keySearch` has been removed.
-- `getPath` no longer supports wildcard expressions. Use something better like
-  JMESPath for this.
-- `setPath` now supports appending to an existing array via the `[]` notation.
-
-### Events
-
-Guzzle no longer requires Symfony's EventDispatcher component. Guzzle now uses
-`GuzzleHttp\Event\Emitter`.
-
-- `Symfony\Component\EventDispatcher\EventDispatcherInterface` is replaced by
-  `GuzzleHttp\Event\EmitterInterface`.
-- `Symfony\Component\EventDispatcher\EventDispatcher` is replaced by
-  `GuzzleHttp\Event\Emitter`.
-- `Symfony\Component\EventDispatcher\Event` is replaced by
-  `GuzzleHttp\Event\Event`, and Guzzle now has an EventInterface in
-  `GuzzleHttp\Event\EventInterface`.
-- `AbstractHasDispatcher` has moved to a trait, `HasEmitterTrait`, and
-  `HasDispatcherInterface` has moved to `HasEmitterInterface`. Retrieving the
-  event emitter of a request, client, etc. now uses the `getEmitter` method
-  rather than the `getDispatcher` method.
-
-#### Emitter
-
-- Use the `once()` method to add a listener that automatically removes itself
-  the first time it is invoked.
-- Use the `listeners()` method to retrieve a list of event listeners rather than
-  the `getListeners()` method.
-- Use `emit()` instead of `dispatch()` to emit an event from an emitter.
-- Use `attach()` instead of `addSubscriber()` and `detach()` instead of
-  `removeSubscriber()`.
-
-```php
-$mock = new Mock();
-// 3.x
-$request->getEventDispatcher()->addSubscriber($mock);
-$request->getEventDispatcher()->removeSubscriber($mock);
-// 4.x
-$request->getEmitter()->attach($mock);
-$request->getEmitter()->detach($mock);
-```
-
-Use the `on()` method to add a listener rather than the `addListener()` method.
-
-```php
-// 3.x
-$request->getEventDispatcher()->addListener('foo', function (Event $event) { /* ... */ } );
-// 4.x
-$request->getEmitter()->on('foo', function (Event $event, $name) { /* ... */ } );
-```
-
-## Http
-
-### General changes
-
-- The cacert.pem certificate has been moved to `src/cacert.pem`.
-- Added the concept of adapters that are used to transfer requests over the
-  wire.
-- Simplified the event system.
-- Sending requests in parallel is still possible, but batching is no longer a
-  concept of the HTTP layer. Instead, you must use the `complete` and `error`
-  events to asynchronously manage parallel request transfers.
-- `Guzzle\Http\Url` has moved to `GuzzleHttp\Url`.
-- `Guzzle\Http\QueryString` has moved to `GuzzleHttp\Query`.
-- QueryAggregators have been rewritten so that they are simply callable
-  functions.
-- `GuzzleHttp\StaticClient` has been removed. Use the functions provided in
-  `functions.php` for an easy to use static client instance.
-- Exceptions in `GuzzleHttp\Exception` have been updated to all extend from
-  `GuzzleHttp\Exception\TransferException`.
-
-### Client
-
-Calling methods like `get()`, `post()`, `head()`, etc. no longer create and
-return a request, but rather creates a request, sends the request, and returns
-the response.
-
-```php
-// 3.0
-$request = $client->get('/');
-$response = $request->send();
-
-// 4.0
-$response = $client->get('/');
-
-// or, to mirror the previous behavior
-$request = $client->createRequest('GET', '/');
-$response = $client->send($request);
-```
-
-`GuzzleHttp\ClientInterface` has changed.
-
-- The `send` method no longer accepts more than one request. Use `sendAll` to
-  send multiple requests in parallel.
-- `setUserAgent()` has been removed. Use a default request option instead. You
-  could, for example, do something like:
-  `$client->setConfig('defaults/headers/User-Agent', 'Foo/Bar ' . $client::getDefaultUserAgent())`.
-- `setSslVerification()` has been removed. Use default request options instead,
-  like `$client->setConfig('defaults/verify', true)`.
-
-`GuzzleHttp\Client` has changed.
-
-- The constructor now accepts only an associative array. You can include a
-  `base_url` string or array to use a URI template as the base URL of a client.
-  You can also specify a `defaults` key that is an associative array of default
-  request options. You can pass an `adapter` to use a custom adapter,
-  `batch_adapter` to use a custom adapter for sending requests in parallel, or
-  a `message_factory` to change the factory used to create HTTP requests and
-  responses.
-- The client no longer emits a `client.create_request` event.
-- Creating requests with a client no longer automatically utilize a URI
-  template. You must pass an array into a creational method (e.g.,
-  `createRequest`, `get`, `put`, etc.) in order to expand a URI template.
-
-### Messages
-
-Messages no longer have references to their counterparts (i.e., a request no
-longer has a reference to it's response, and a response no loger has a
-reference to its request). This association is now managed through a
-`GuzzleHttp\Adapter\TransactionInterface` object. You can get references to
-these transaction objects using request events that are emitted over the
-lifecycle of a request.
-
-#### Requests with a body
-
-- `GuzzleHttp\Message\EntityEnclosingRequest` and
-  `GuzzleHttp\Message\EntityEnclosingRequestInterface` have been removed. The
-  separation between requests that contain a body and requests that do not
-  contain a body has been removed, and now `GuzzleHttp\Message\RequestInterface`
-  handles both use cases.
-- Any method that previously accepts a `GuzzleHttp\Response` object now accept a
-  `GuzzleHttp\Message\ResponseInterface`.
-- `GuzzleHttp\Message\RequestFactoryInterface` has been renamed to
-  `GuzzleHttp\Message\MessageFactoryInterface`. This interface is used to create
-  both requests and responses and is implemented in
-  `GuzzleHttp\Message\MessageFactory`.
-- POST field and file methods have been removed from the request object. You
-  must now use the methods made available to `GuzzleHttp\Post\PostBodyInterface`
-  to control the format of a POST body. Requests that are created using a
-  standard `GuzzleHttp\Message\MessageFactoryInterface` will automatically use
-  a `GuzzleHttp\Post\PostBody` body if the body was passed as an array or if
-  the method is POST and no body is provided.
-
-```php
-$request = $client->createRequest('POST', '/');
-$request->getBody()->setField('foo', 'bar');
-$request->getBody()->addFile(new PostFile('file_key', fopen('/path/to/content', 'r')));
-```
-
-#### Headers
-
-- `GuzzleHttp\Message\Header` has been removed. Header values are now simply
-  represented by an array of values or as a string. Header values are returned
-  as a string by default when retrieving a header value from a message. You can
-  pass an optional argument of `true` to retrieve a header value as an array
-  of strings instead of a single concatenated string.
-- `GuzzleHttp\PostFile` and `GuzzleHttp\PostFileInterface` have been moved to
-  `GuzzleHttp\Post`. This interface has been simplified and now allows the
-  addition of arbitrary headers.
-- Custom headers like `GuzzleHttp\Message\Header\Link` have been removed. Most
-  of the custom headers are now handled separately in specific
-  subscribers/plugins, and `GuzzleHttp\Message\HeaderValues::parseParams()` has
-  been updated to properly handle headers that contain parameters (like the
-  `Link` header).
-
-#### Responses
-
-- `GuzzleHttp\Message\Response::getInfo()` and
-  `GuzzleHttp\Message\Response::setInfo()` have been removed. Use the event
-  system to retrieve this type of information.
-- `GuzzleHttp\Message\Response::getRawHeaders()` has been removed.
-- `GuzzleHttp\Message\Response::getMessage()` has been removed.
-- `GuzzleHttp\Message\Response::calculateAge()` and other cache specific
-  methods have moved to the CacheSubscriber.
-- Header specific helper functions like `getContentMd5()` have been removed.
-  Just use `getHeader('Content-MD5')` instead.
-- `GuzzleHttp\Message\Response::setRequest()` and
-  `GuzzleHttp\Message\Response::getRequest()` have been removed. Use the event
-  system to work with request and response objects as a transaction.
-- `GuzzleHttp\Message\Response::getRedirectCount()` has been removed. Use the
-  Redirect subscriber instead.
-- `GuzzleHttp\Message\Response::isSuccessful()` and other related methods have
-  been removed. Use `getStatusCode()` instead.
-
-#### Streaming responses
-
-Streaming requests can now be created by a client directly, returning a
-`GuzzleHttp\Message\ResponseInterface` object that contains a body stream
-referencing an open PHP HTTP stream.
-
-```php
-// 3.0
-use Guzzle\Stream\PhpStreamRequestFactory;
-$request = $client->get('/');
-$factory = new PhpStreamRequestFactory();
-$stream = $factory->fromRequest($request);
-$data = $stream->read(1024);
-
-// 4.0
-$response = $client->get('/', ['stream' => true]);
-// Read some data off of the stream in the response body
-$data = $response->getBody()->read(1024);
-```
-
-#### Redirects
-
-The `configureRedirects()` method has been removed in favor of a
-`allow_redirects` request option.
-
-```php
-// Standard redirects with a default of a max of 5 redirects
-$request = $client->createRequest('GET', '/', ['allow_redirects' => true]);
-
-// Strict redirects with a custom number of redirects
-$request = $client->createRequest('GET', '/', [
-    'allow_redirects' => ['max' => 5, 'strict' => true]
-]);
-```
-
-#### EntityBody
-
-EntityBody interfaces and classes have been removed or moved to
-`GuzzleHttp\Stream`. All classes and interfaces that once required
-`GuzzleHttp\EntityBodyInterface` now require
-`GuzzleHttp\Stream\StreamInterface`. Creating a new body for a request no
-longer uses `GuzzleHttp\EntityBody::factory` but now uses
-`GuzzleHttp\Stream\Stream::factory` or even better:
-`GuzzleHttp\Stream\create()`.
-
-- `Guzzle\Http\EntityBodyInterface` is now `GuzzleHttp\Stream\StreamInterface`
-- `Guzzle\Http\EntityBody` is now `GuzzleHttp\Stream\Stream`
-- `Guzzle\Http\CachingEntityBody` is now `GuzzleHttp\Stream\CachingStream`
-- `Guzzle\Http\ReadLimitEntityBody` is now `GuzzleHttp\Stream\LimitStream`
-- `Guzzle\Http\IoEmittyinEntityBody` has been removed.
-
-#### Request lifecycle events
-
-Requests previously submitted a large number of requests. The number of events
-emitted over the lifecycle of a request has been significantly reduced to make
-it easier to understand how to extend the behavior of a request. All events
-emitted during the lifecycle of a request now emit a custom
-`GuzzleHttp\Event\EventInterface` object that contains context providing
-methods and a way in which to modify the transaction at that specific point in
-time (e.g., intercept the request and set a response on the transaction).
-
-- `request.before_send` has been renamed to `before` and now emits a
-  `GuzzleHttp\Event\BeforeEvent`
-- `request.complete` has been renamed to `complete` and now emits a
-  `GuzzleHttp\Event\CompleteEvent`.
-- `request.sent` has been removed. Use `complete`.
-- `request.success` has been removed. Use `complete`.
-- `error` is now an event that emits a `GuzzleHttp\Event\ErrorEvent`.
-- `request.exception` has been removed. Use `error`.
-- `request.receive.status_line` has been removed.
-- `curl.callback.progress` has been removed. Use a custom `StreamInterface` to
-  maintain a status update.
-- `curl.callback.write` has been removed. Use a custom `StreamInterface` to
-  intercept writes.
-- `curl.callback.read` has been removed. Use a custom `StreamInterface` to
-  intercept reads.
-
-`headers` is a new event that is emitted after the response headers of a
-request have been received before the body of the response is downloaded. This
-event emits a `GuzzleHttp\Event\HeadersEvent`.
-
-You can intercept a request and inject a response using the `intercept()` event
-of a `GuzzleHttp\Event\BeforeEvent`, `GuzzleHttp\Event\CompleteEvent`, and
-`GuzzleHttp\Event\ErrorEvent` event.
-
-See: http://docs.guzzlephp.org/en/latest/events.html
-
-## Inflection
-
-The `Guzzle\Inflection` namespace has been removed. This is not a core concern
-of Guzzle.
-
-## Iterator
-
-The `Guzzle\Iterator` namespace has been removed.
-
-- `Guzzle\Iterator\AppendIterator`, `Guzzle\Iterator\ChunkedIterator`, and
-  `Guzzle\Iterator\MethodProxyIterator` are nice, but not a core requirement of
-  Guzzle itself.
-- `Guzzle\Iterator\FilterIterator` is no longer needed because an equivalent
-  class is shipped with PHP 5.4.
-- `Guzzle\Iterator\MapIterator` is not really needed when using PHP 5.5 because
-  it's easier to just wrap an iterator in a generator that maps values.
-
-For a replacement of these iterators, see https://github.com/nikic/iter
-
-## Log
-
-The LogPlugin has moved to https://github.com/guzzle/log-subscriber. The
-`Guzzle\Log` namespace has been removed. Guzzle now relies on
-`Psr\Log\LoggerInterface` for all logging. The MessageFormatter class has been
-moved to `GuzzleHttp\Subscriber\Log\Formatter`.
-
-## Parser
-
-The `Guzzle\Parser` namespace has been removed. This was previously used to
-make it possible to plug in custom parsers for cookies, messages, URI
-templates, and URLs; however, this level of complexity is not needed in Guzzle
-so it has been removed.
-
-- Cookie: Cookie parsing logic has been moved to
-  `GuzzleHttp\Cookie\SetCookie::fromString`.
-- Message: Message parsing logic for both requests and responses has been moved
-  to `GuzzleHttp\Message\MessageFactory::fromMessage`. Message parsing is only
-  used in debugging or deserializing messages, so it doesn't make sense for
-  Guzzle as a library to add this level of complexity to parsing messages.
-- UriTemplate: URI template parsing has been moved to
-  `GuzzleHttp\UriTemplate`. The Guzzle library will automatically use the PECL
-  URI template library if it is installed.
-- Url: URL parsing is now performed in `GuzzleHttp\Url::fromString` (previously
-  it was `Guzzle\Http\Url::factory()`). If custom URL parsing is necessary,
-  then developers are free to subclass `GuzzleHttp\Url`.
-
-## Plugin
-
-The `Guzzle\Plugin` namespace has been renamed to `GuzzleHttp\Subscriber`.
-Several plugins are shipping with the core Guzzle library under this namespace.
-
-- `GuzzleHttp\Subscriber\Cookie`: Replaces the old CookiePlugin. Cookie jar
-  code has moved to `GuzzleHttp\Cookie`.
-- `GuzzleHttp\Subscriber\History`: Replaces the old HistoryPlugin.
-- `GuzzleHttp\Subscriber\HttpError`: Throws errors when a bad HTTP response is
-  received.
-- `GuzzleHttp\Subscriber\Mock`: Replaces the old MockPlugin.
-- `GuzzleHttp\Subscriber\Prepare`: Prepares the body of a request just before
-  sending. This subscriber is attached to all requests by default.
-- `GuzzleHttp\Subscriber\Redirect`: Replaces the RedirectPlugin.
-
-The following plugins have been removed (third-parties are free to re-implement
-these if needed):
-
-- `GuzzleHttp\Plugin\Async` has been removed.
-- `GuzzleHttp\Plugin\CurlAuth` has been removed.
-- `GuzzleHttp\Plugin\ErrorResponse\ErrorResponsePlugin` has been removed. This
-  functionality should instead be implemented with event listeners that occur
-  after normal response parsing occurs in the guzzle/command package.
-
-The following plugins are not part of the core Guzzle package, but are provided
-in separate repositories:
-
-- `Guzzle\Http\Plugin\BackoffPlugin` has been rewritten to be muchs simpler
-  to build custom retry policies using simple functions rather than various
-  chained classes. See: https://github.com/guzzle/retry-subscriber
-- `Guzzle\Http\Plugin\Cache\CachePlugin` has moved to
-  https://github.com/guzzle/cache-subscriber
-- `Guzzle\Http\Plugin\Log\LogPlugin` has moved to
-  https://github.com/guzzle/log-subscriber
-- `Guzzle\Http\Plugin\Md5\Md5Plugin` has moved to
-  https://github.com/guzzle/message-integrity-subscriber
-- `Guzzle\Http\Plugin\Mock\MockPlugin` has moved to
-  `GuzzleHttp\Subscriber\MockSubscriber`.
-- `Guzzle\Http\Plugin\Oauth\OauthPlugin` has moved to
-  https://github.com/guzzle/oauth-subscriber
-
-## Service
-
-The service description layer of Guzzle has moved into two separate packages:
-
-- http://github.com/guzzle/command Provides a high level abstraction over web
-  services by representing web service operations using commands.
-- http://github.com/guzzle/guzzle-services Provides an implementation of
-  guzzle/command that provides request serialization and response parsing using
-  Guzzle service descriptions.
-
-## Stream
-
-Stream have moved to a separate package available at
-https://github.com/guzzle/streams.
-
-`Guzzle\Stream\StreamInterface` has been given a large update to cleanly take
-on the responsibilities of `Guzzle\Http\EntityBody` and
-`Guzzle\Http\EntityBodyInterface` now that they have been removed. The number
-of methods implemented by the `StreamInterface` has been drastically reduced to
-allow developers to more easily extend and decorate stream behavior.
-
-## Removed methods from StreamInterface
-
-- `getStream` and `setStream` have been removed to better encapsulate streams.
-- `getMetadata` and `setMetadata` have been removed in favor of
-  `GuzzleHttp\Stream\MetadataStreamInterface`.
-- `getWrapper`, `getWrapperData`, `getStreamType`, and `getUri` have all been
-  removed. This data is accessible when
-  using streams that implement `GuzzleHttp\Stream\MetadataStreamInterface`.
-- `rewind` has been removed. Use `seek(0)` for a similar behavior.
-
-## Renamed methods
-
-- `detachStream` has been renamed to `detach`.
-- `feof` has been renamed to `eof`.
-- `ftell` has been renamed to `tell`.
-- `readLine` has moved from an instance method to a static class method of
-  `GuzzleHttp\Stream\Stream`.
-
-## Metadata streams
-
-`GuzzleHttp\Stream\MetadataStreamInterface` has been added to denote streams
-that contain additional metadata accessible via `getMetadata()`.
-`GuzzleHttp\Stream\StreamInterface::getMetadata` and
-`GuzzleHttp\Stream\StreamInterface::setMetadata` have been removed.
-
-## StreamRequestFactory
-
-The entire concept of the StreamRequestFactory has been removed. The way this
-was used in Guzzle 3 broke the actual interface of sending streaming requests
-(instead of getting back a Response, you got a StreamInterface). Streeaming
-PHP requests are now implemented throught the `GuzzleHttp\Adapter\StreamAdapter`.
-
-3.6 to 3.7
-----------
-
-### Deprecations
-
-- You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.:
-
-```php
-\Guzzle\Common\Version::$emitWarnings = true;
-```
-
-The following APIs and options have been marked as deprecated:
-
-- Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead.
-- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
-- Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
-- Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
-- Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
-- Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
-- Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
-- Marked `Guzzle\Common\Collection::inject()` as deprecated.
-- Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use
-  `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or
-  `$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));`
-
-3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational
-request methods. When paired with a client's configuration settings, these options allow you to specify default settings
-for various aspects of a request. Because these options make other previous configuration options redundant, several
-configuration options and methods of a client and AbstractCommand have been deprecated.
-
-- Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`.
-- Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`.
-- Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')`
-- Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0
-
-        $command = $client->getCommand('foo', array(
-            'command.headers' => array('Test' => '123'),
-            'command.response_body' => '/path/to/file'
-        ));
-
-        // Should be changed to:
-
-        $command = $client->getCommand('foo', array(
-            'command.request_options' => array(
-                'headers' => array('Test' => '123'),
-                'save_as' => '/path/to/file'
-            )
-        ));
-
-### Interface changes
-
-Additions and changes (you will need to update any implementations or subclasses you may have created):
-
-- Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
-  createRequest, head, delete, put, patch, post, options, prepareRequest
-- Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
-- Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
-- Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
-  `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
-  resource, string, or EntityBody into the $options parameter to specify the download location of the response.
-- Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
-  default `array()`
-- Added `Guzzle\Stream\StreamInterface::isRepeatable`
-- Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
-
-The following methods were removed from interfaces. All of these methods are still available in the concrete classes
-that implement them, but you should update your code to use alternative methods:
-
-- Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
-  `$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
-  `$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or
-  `$client->setDefaultOption('headers/{header_name}', 'value')`. or
-  `$client->setDefaultOption('headers', array('header_name' => 'value'))`.
-- Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`.
-- Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail.
-- Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail.
-- Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail.
-- Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin.
-- Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin.
-- Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin.
-
-### Cache plugin breaking changes
-
-- CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
-  CacheStorageInterface. These two objects and interface will be removed in a future version.
-- Always setting X-cache headers on cached responses
-- Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
-- `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
-  $request, Response $response);`
-- `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
-- `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
-- Added `CacheStorageInterface::purge($url)`
-- `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
-  $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
-  CanCacheStrategyInterface $canCache = null)`
-- Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
-
-3.5 to 3.6
-----------
-
-* Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
-* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
-* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
-  For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader().
-  Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request.
-* Specific header implementations can be created for complex headers. When a message creates a header, it uses a
-  HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
-  CacheControl header implementation.
-* Moved getLinks() from Response to just be used on a Link header object.
-
-If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the
-HeaderInterface (e.g. toArray(), getAll(), etc.).
-
-### Interface changes
-
-* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
-* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
-* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
-  Guzzle\Http\Curl\RequestMediator
-* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
-* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
-* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
-
-### Removed deprecated functions
-
-* Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
-* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
-
-### Deprecations
-
-* The ability to case-insensitively search for header values
-* Guzzle\Http\Message\Header::hasExactHeader
-* Guzzle\Http\Message\Header::raw. Use getAll()
-* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
-  instead.
-
-### Other changes
-
-* All response header helper functions return a string rather than mixing Header objects and strings inconsistently
-* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
-  directly via interfaces
-* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
-  but are a no-op until removed.
-* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
-  `Guzzle\Service\Command\ArrayCommandInterface`.
-* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
-  on a request while the request is still being transferred
-* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
-
-3.3 to 3.4
-----------
-
-Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
-
-3.2 to 3.3
-----------
-
-### Response::getEtag() quote stripping removed
-
-`Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header
-
-### Removed `Guzzle\Http\Utils`
-
-The `Guzzle\Http\Utils` class was removed. This class was only used for testing.
-
-### Stream wrapper and type
-
-`Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getStreamType()` are no longer converted to lowercase.
-
-### curl.emit_io became emit_io
-
-Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the
-'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
-
-3.1 to 3.2
-----------
-
-### CurlMulti is no longer reused globally
-
-Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added
-to a single client can pollute requests dispatched from other clients.
-
-If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the
-ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is
-created.
-
-```php
-$multi = new Guzzle\Http\Curl\CurlMulti();
-$builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json');
-$builder->addListener('service_builder.create_client', function ($event) use ($multi) {
-    $event['client']->setCurlMulti($multi);
-}
-});
-```
-
-### No default path
-
-URLs no longer have a default path value of '/' if no path was specified.
-
-Before:
-
-```php
-$request = $client->get('http://www.foo.com');
-echo $request->getUrl();
-// >> http://www.foo.com/
-```
-
-After:
-
-```php
-$request = $client->get('http://www.foo.com');
-echo $request->getUrl();
-// >> http://www.foo.com
-```
-
-### Less verbose BadResponseException
-
-The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and
-response information. You can, however, get access to the request and response object by calling `getRequest()` or
-`getResponse()` on the exception object.
-
-### Query parameter aggregation
-
-Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a
-setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is
-responsible for handling the aggregation of multi-valued query string variables into a flattened hash.
-
-2.8 to 3.x
-----------
-
-### Guzzle\Service\Inspector
-
-Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig`
-
-**Before**
-
-```php
-use Guzzle\Service\Inspector;
-
-class YourClient extends \Guzzle\Service\Client
-{
-    public static function factory($config = array())
-    {
-        $default = array();
-        $required = array('base_url', 'username', 'api_key');
-        $config = Inspector::fromConfig($config, $default, $required);
-
-        $client = new self(
-            $config->get('base_url'),
-            $config->get('username'),
-            $config->get('api_key')
-        );
-        $client->setConfig($config);
-
-        $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
-
-        return $client;
-    }
-```
-
-**After**
-
-```php
-use Guzzle\Common\Collection;
-
-class YourClient extends \Guzzle\Service\Client
-{
-    public static function factory($config = array())
-    {
-        $default = array();
-        $required = array('base_url', 'username', 'api_key');
-        $config = Collection::fromConfig($config, $default, $required);
-
-        $client = new self(
-            $config->get('base_url'),
-            $config->get('username'),
-            $config->get('api_key')
-        );
-        $client->setConfig($config);
-
-        $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
-
-        return $client;
-    }
-```
-
-### Convert XML Service Descriptions to JSON
-
-**Before**
-
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<client>
-    <commands>
-        <!-- Groups -->
-        <command name="list_groups" method="GET" uri="groups.json">
-            <doc>Get a list of groups</doc>
-        </command>
-        <command name="search_groups" method="GET" uri='search.json?query="{{query}} type:group"'>
-            <doc>Uses a search query to get a list of groups</doc>
-            <param name="query" type="string" required="true" />
-        </command>
-        <command name="create_group" method="POST" uri="groups.json">
-            <doc>Create a group</doc>
-            <param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
-            <param name="Content-Type" location="header" static="application/json"/>
-        </command>
-        <command name="delete_group" method="DELETE" uri="groups/{{id}}.json">
-            <doc>Delete a group by ID</doc>
-            <param name="id" type="integer" required="true"/>
-        </command>
-        <command name="get_group" method="GET" uri="groups/{{id}}.json">
-            <param name="id" type="integer" required="true"/>
-        </command>
-        <command name="update_group" method="PUT" uri="groups/{{id}}.json">
-            <doc>Update a group</doc>
-            <param name="id" type="integer" required="true"/>
-            <param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
-            <param name="Content-Type" location="header" static="application/json"/>
-        </command>
-    </commands>
-</client>
-```
-
-**After**
-
-```json
-{
-    "name":       "Zendesk REST API v2",
-    "apiVersion": "2012-12-31",
-    "description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users",
-    "operations": {
-        "list_groups":  {
-            "httpMethod":"GET",
-            "uri":       "groups.json",
-            "summary":   "Get a list of groups"
-        },
-        "search_groups":{
-            "httpMethod":"GET",
-            "uri":       "search.json?query=\"{query} type:group\"",
-            "summary":   "Uses a search query to get a list of groups",
-            "parameters":{
-                "query":{
-                    "location":   "uri",
-                    "description":"Zendesk Search Query",
-                    "type":       "string",
-                    "required":   true
-                }
-            }
-        },
-        "create_group": {
-            "httpMethod":"POST",
-            "uri":       "groups.json",
-            "summary":   "Create a group",
-            "parameters":{
-                "data":        {
-                    "type":       "array",
-                    "location":   "body",
-                    "description":"Group JSON",
-                    "filters":    "json_encode",
-                    "required":   true
-                },
-                "Content-Type":{
-                    "type":    "string",
-                    "location":"header",
-                    "static":  "application/json"
-                }
-            }
-        },
-        "delete_group": {
-            "httpMethod":"DELETE",
-            "uri":       "groups/{id}.json",
-            "summary":   "Delete a group",
-            "parameters":{
-                "id":{
-                    "location":   "uri",
-                    "description":"Group to delete by ID",
-                    "type":       "integer",
-                    "required":   true
-                }
-            }
-        },
-        "get_group":    {
-            "httpMethod":"GET",
-            "uri":       "groups/{id}.json",
-            "summary":   "Get a ticket",
-            "parameters":{
-                "id":{
-                    "location":   "uri",
-                    "description":"Group to get by ID",
-                    "type":       "integer",
-                    "required":   true
-                }
-            }
-        },
-        "update_group": {
-            "httpMethod":"PUT",
-            "uri":       "groups/{id}.json",
-            "summary":   "Update a group",
-            "parameters":{
-                "id":          {
-                    "location":   "uri",
-                    "description":"Group to update by ID",
-                    "type":       "integer",
-                    "required":   true
-                },
-                "data":        {
-                    "type":       "array",
-                    "location":   "body",
-                    "description":"Group JSON",
-                    "filters":    "json_encode",
-                    "required":   true
-                },
-                "Content-Type":{
-                    "type":    "string",
-                    "location":"header",
-                    "static":  "application/json"
-                }
-            }
-        }
-}
-```
-
-### Guzzle\Service\Description\ServiceDescription
-
-Commands are now called Operations
-
-**Before**
-
-```php
-use Guzzle\Service\Description\ServiceDescription;
-
-$sd = new ServiceDescription();
-$sd->getCommands();     // @returns ApiCommandInterface[]
-$sd->hasCommand($name);
-$sd->getCommand($name); // @returns ApiCommandInterface|null
-$sd->addCommand($command); // @param ApiCommandInterface $command
-```
-
-**After**
-
-```php
-use Guzzle\Service\Description\ServiceDescription;
-
-$sd = new ServiceDescription();
-$sd->getOperations();           // @returns OperationInterface[]
-$sd->hasOperation($name);
-$sd->getOperation($name);       // @returns OperationInterface|null
-$sd->addOperation($operation);  // @param OperationInterface $operation
-```
-
-### Guzzle\Common\Inflection\Inflector
-
-Namespace is now `Guzzle\Inflection\Inflector`
-
-### Guzzle\Http\Plugin
-
-Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below.
-
-### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log
-
-Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively.
-
-**Before**
-
-```php
-use Guzzle\Common\Log\ClosureLogAdapter;
-use Guzzle\Http\Plugin\LogPlugin;
-
-/** @var \Guzzle\Http\Client */
-$client;
-
-// $verbosity is an integer indicating desired message verbosity level
-$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE);
-```
-
-**After**
-
-```php
-use Guzzle\Log\ClosureLogAdapter;
-use Guzzle\Log\MessageFormatter;
-use Guzzle\Plugin\Log\LogPlugin;
-
-/** @var \Guzzle\Http\Client */
-$client;
-
-// $format is a string indicating desired message format -- @see MessageFormatter
-$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT);
-```
-
-### Guzzle\Http\Plugin\CurlAuthPlugin
-
-Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`.
-
-### Guzzle\Http\Plugin\ExponentialBackoffPlugin
-
-Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes.
-
-**Before**
-
-```php
-use Guzzle\Http\Plugin\ExponentialBackoffPlugin;
-
-$backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge(
-        ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429)
-    ));
-
-$client->addSubscriber($backoffPlugin);
-```
-
-**After**
-
-```php
-use Guzzle\Plugin\Backoff\BackoffPlugin;
-use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
-
-// Use convenient factory method instead -- see implementation for ideas of what
-// you can do with chaining backoff strategies
-$backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge(
-        HttpBackoffStrategy::getDefaultFailureCodes(), array(429)
-    ));
-$client->addSubscriber($backoffPlugin);
-```
-
-### Known Issues
-
-#### [BUG] Accept-Encoding header behavior changed unintentionally.
-
-(See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e)
-
-In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to
-properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen.
-See issue #217 for a workaround, or use a version containing the fix.
diff --git a/vendor/guzzlehttp/guzzle/composer.json b/vendor/guzzlehttp/guzzle/composer.json
deleted file mode 100644
index 1f8b070..0000000
--- a/vendor/guzzlehttp/guzzle/composer.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-    "name": "guzzlehttp/guzzle",
-    "type": "library",
-    "description": "Guzzle is a PHP HTTP client library",
-    "keywords": ["framework", "http", "rest", "web service", "curl", "client", "HTTP client"],
-    "homepage": "http://guzzlephp.org/",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Michael Dowling",
-            "email": "mtdowling@gmail.com",
-            "homepage": "https://github.com/mtdowling"
-        }
-    ],
-    "require": {
-        "php": ">=5.5.0",
-        "guzzlehttp/psr7": "~1.1",
-        "guzzlehttp/promises": "~1.0"
-    },
-    "require-dev": {
-        "ext-curl": "*",
-        "phpunit/phpunit": "~4.0",
-        "psr/log": "~1.0"
-    },
-    "autoload": {
-        "files": ["src/functions_include.php"],
-        "psr-4": {
-            "GuzzleHttp\\": "src/"
-        }
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "GuzzleHttp\\Tests\\": "tests/"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "6.1-dev"
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Client.php b/vendor/guzzlehttp/guzzle/src/Client.php
deleted file mode 100644
index 2e86ece..0000000
--- a/vendor/guzzlehttp/guzzle/src/Client.php
+++ /dev/null
@@ -1,397 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Cookie\CookieJar;
-use GuzzleHttp\Promise;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\UriInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * @method ResponseInterface get($uri, array $options = [])
- * @method ResponseInterface head($uri, array $options = [])
- * @method ResponseInterface put($uri, array $options = [])
- * @method ResponseInterface post($uri, array $options = [])
- * @method ResponseInterface patch($uri, array $options = [])
- * @method ResponseInterface delete($uri, array $options = [])
- * @method Promise\PromiseInterface getAsync($uri, array $options = [])
- * @method Promise\PromiseInterface headAsync($uri, array $options = [])
- * @method Promise\PromiseInterface putAsync($uri, array $options = [])
- * @method Promise\PromiseInterface postAsync($uri, array $options = [])
- * @method Promise\PromiseInterface patchAsync($uri, array $options = [])
- * @method Promise\PromiseInterface deleteAsync($uri, array $options = [])
- */
-class Client implements ClientInterface
-{
-    /** @var array Default request options */
-    private $config;
-
-    /**
-     * Clients accept an array of constructor parameters.
-     *
-     * Here's an example of creating a client using a base_uri and an array of
-     * default request options to apply to each request:
-     *
-     *     $client = new Client([
-     *         'base_uri'        => 'http://www.foo.com/1.0/',
-     *         'timeout'         => 0,
-     *         'allow_redirects' => false,
-     *         'proxy'           => '192.168.16.1:10'
-     *     ]);
-     *
-     * Client configuration settings include the following options:
-     *
-     * - handler: (callable) Function that transfers HTTP requests over the
-     *   wire. The function is called with a Psr7\Http\Message\RequestInterface
-     *   and array of transfer options, and must return a
-     *   GuzzleHttp\Promise\PromiseInterface that is fulfilled with a
-     *   Psr7\Http\Message\ResponseInterface on success. "handler" is a
-     *   constructor only option that cannot be overridden in per/request
-     *   options. If no handler is provided, a default handler will be created
-     *   that enables all of the request options below by attaching all of the
-     *   default middleware to the handler.
-     * - base_uri: (string|UriInterface) Base URI of the client that is merged
-     *   into relative URIs. Can be a string or instance of UriInterface.
-     * - **: any request option
-     *
-     * @param array $config Client configuration settings.
-     *
-     * @see \GuzzleHttp\RequestOptions for a list of available request options.
-     */
-    public function __construct(array $config = [])
-    {
-        if (!isset($config['handler'])) {
-            $config['handler'] = HandlerStack::create();
-        }
-
-        // Convert the base_uri to a UriInterface
-        if (isset($config['base_uri'])) {
-            $config['base_uri'] = Psr7\uri_for($config['base_uri']);
-        }
-
-        $this->configureDefaults($config);
-    }
-
-    public function __call($method, $args)
-    {
-        if (count($args) < 1) {
-            throw new \InvalidArgumentException('Magic request methods require a URI and optional options array');
-        }
-
-        $uri = $args[0];
-        $opts = isset($args[1]) ? $args[1] : [];
-
-        return substr($method, -5) === 'Async'
-            ? $this->requestAsync(substr($method, 0, -5), $uri, $opts)
-            : $this->request($method, $uri, $opts);
-    }
-
-    public function sendAsync(RequestInterface $request, array $options = [])
-    {
-        // Merge the base URI into the request URI if needed.
-        $options = $this->prepareDefaults($options);
-
-        return $this->transfer(
-            $request->withUri($this->buildUri($request->getUri(), $options)),
-            $options
-        );
-    }
-
-    public function send(RequestInterface $request, array $options = [])
-    {
-        $options[RequestOptions::SYNCHRONOUS] = true;
-        return $this->sendAsync($request, $options)->wait();
-    }
-
-    public function requestAsync($method, $uri = null, array $options = [])
-    {
-        $options = $this->prepareDefaults($options);
-        // Remove request modifying parameter because it can be done up-front.
-        $headers = isset($options['headers']) ? $options['headers'] : [];
-        $body = isset($options['body']) ? $options['body'] : null;
-        $version = isset($options['version']) ? $options['version'] : '1.1';
-        // Merge the URI into the base URI.
-        $uri = $this->buildUri($uri, $options);
-        if (is_array($body)) {
-            $this->invalidBody();
-        }
-        $request = new Psr7\Request($method, $uri, $headers, $body, $version);
-        // Remove the option so that they are not doubly-applied.
-        unset($options['headers'], $options['body'], $options['version']);
-
-        return $this->transfer($request, $options);
-    }
-
-    public function request($method, $uri = null, array $options = [])
-    {
-        $options[RequestOptions::SYNCHRONOUS] = true;
-        return $this->requestAsync($method, $uri, $options)->wait();
-    }
-
-    public function getConfig($option = null)
-    {
-        return $option === null
-            ? $this->config
-            : (isset($this->config[$option]) ? $this->config[$option] : null);
-    }
-
-    private function buildUri($uri, array $config)
-    {
-        if (!isset($config['base_uri'])) {
-            return $uri instanceof UriInterface ? $uri : new Psr7\Uri($uri);
-        }
-
-        return Psr7\Uri::resolve(Psr7\uri_for($config['base_uri']), $uri);
-    }
-
-    /**
-     * Configures the default options for a client.
-     *
-     * @param array $config
-     */
-    private function configureDefaults(array $config)
-    {
-        $defaults = [
-            'allow_redirects' => RedirectMiddleware::$defaultSettings,
-            'http_errors'     => true,
-            'decode_content'  => true,
-            'verify'          => true,
-            'cookies'         => false
-        ];
-
-        // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set
-        if ($proxy = getenv('HTTP_PROXY')) {
-            $defaults['proxy']['http'] = $proxy;
-        }
-
-        if ($proxy = getenv('HTTPS_PROXY')) {
-            $defaults['proxy']['https'] = $proxy;
-        }
-
-        if ($noProxy = getenv('NO_PROXY')) {
-            $cleanedNoProxy = str_replace(' ', '', $noProxy);
-            $defaults['proxy']['no'] = explode(',', $cleanedNoProxy);
-        }
-        
-        $this->config = $config + $defaults;
-
-        if (!empty($config['cookies']) && $config['cookies'] === true) {
-            $this->config['cookies'] = new CookieJar();
-        }
-
-        // Add the default user-agent header.
-        if (!isset($this->config['headers'])) {
-            $this->config['headers'] = ['User-Agent' => default_user_agent()];
-        } else {
-            // Add the User-Agent header if one was not already set.
-            foreach (array_keys($this->config['headers']) as $name) {
-                if (strtolower($name) === 'user-agent') {
-                    return;
-                }
-            }
-            $this->config['headers']['User-Agent'] = default_user_agent();
-        }
-    }
-
-    /**
-     * Merges default options into the array.
-     *
-     * @param array $options Options to modify by reference
-     *
-     * @return array
-     */
-    private function prepareDefaults($options)
-    {
-        $defaults = $this->config;
-
-        if (!empty($defaults['headers'])) {
-            // Default headers are only added if they are not present.
-            $defaults['_conditional'] = $defaults['headers'];
-            unset($defaults['headers']);
-        }
-
-        // Special handling for headers is required as they are added as
-        // conditional headers and as headers passed to a request ctor.
-        if (array_key_exists('headers', $options)) {
-            // Allows default headers to be unset.
-            if ($options['headers'] === null) {
-                $defaults['_conditional'] = null;
-                unset($options['headers']);
-            } elseif (!is_array($options['headers'])) {
-                throw new \InvalidArgumentException('headers must be an array');
-            }
-        }
-
-        // Shallow merge defaults underneath options.
-        $result = $options + $defaults;
-
-        // Remove null values.
-        foreach ($result as $k => $v) {
-            if ($v === null) {
-                unset($result[$k]);
-            }
-        }
-
-        return $result;
-    }
-
-    /**
-     * Transfers the given request and applies request options.
-     *
-     * The URI of the request is not modified and the request options are used
-     * as-is without merging in default options.
-     *
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return Promise\PromiseInterface
-     */
-    private function transfer(RequestInterface $request, array $options)
-    {
-        // save_to -> sink
-        if (isset($options['save_to'])) {
-            $options['sink'] = $options['save_to'];
-            unset($options['save_to']);
-        }
-
-        // exceptions -> http_error
-        if (isset($options['exceptions'])) {
-            $options['http_errors'] = $options['exceptions'];
-            unset($options['exceptions']);
-        }
-
-        $request = $this->applyOptions($request, $options);
-        $handler = $options['handler'];
-
-        try {
-            return Promise\promise_for($handler($request, $options));
-        } catch (\Exception $e) {
-            return Promise\rejection_for($e);
-        }
-    }
-
-    /**
-     * Applies the array of request options to a request.
-     *
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return RequestInterface
-     */
-    private function applyOptions(RequestInterface $request, array &$options)
-    {
-        $modify = [];
-
-        if (isset($options['form_params'])) {
-            if (isset($options['multipart'])) {
-                throw new \InvalidArgumentException('You cannot use '
-                    . 'form_params and multipart at the same time. Use the '
-                    . 'form_params option if you want to send application/'
-                    . 'x-www-form-urlencoded requests, and the multipart '
-                    . 'option to send multipart/form-data requests.');
-            }
-            $options['body'] = http_build_query($options['form_params'], null, '&');
-            unset($options['form_params']);
-            $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded';
-        }
-
-        if (isset($options['multipart'])) {
-            $elements = $options['multipart'];
-            unset($options['multipart']);
-            $options['body'] = new Psr7\MultipartStream($elements);
-        }
-
-        if (!empty($options['decode_content'])
-            && $options['decode_content'] !== true
-        ) {
-            $modify['set_headers']['Accept-Encoding'] = $options['decode_content'];
-        }
-
-        if (isset($options['headers'])) {
-            if (isset($modify['set_headers'])) {
-                $modify['set_headers'] = $options['headers'] + $modify['set_headers'];
-            } else {
-                $modify['set_headers'] = $options['headers'];
-            }
-            unset($options['headers']);
-        }
-
-        if (isset($options['body'])) {
-            if (is_array($options['body'])) {
-                $this->invalidBody();
-            }
-            $modify['body'] = Psr7\stream_for($options['body']);
-            unset($options['body']);
-        }
-
-        if (!empty($options['auth'])) {
-            $value = $options['auth'];
-            $type = is_array($value)
-                ? (isset($value[2]) ? strtolower($value[2]) : 'basic')
-                : $value;
-            $config['auth'] = $value;
-            switch (strtolower($type)) {
-                case 'basic':
-                    $modify['set_headers']['Authorization'] = 'Basic '
-                        . base64_encode("$value[0]:$value[1]");
-                    break;
-                case 'digest':
-                    // @todo: Do not rely on curl
-                    $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_DIGEST;
-                    $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
-                    break;
-            }
-        }
-
-        if (isset($options['query'])) {
-            $value = $options['query'];
-            if (is_array($value)) {
-                $value = http_build_query($value, null, '&', PHP_QUERY_RFC3986);
-            }
-            if (!is_string($value)) {
-                throw new \InvalidArgumentException('query must be a string or array');
-            }
-            $modify['query'] = $value;
-            unset($options['query']);
-        }
-
-        if (isset($options['json'])) {
-            $modify['body'] = Psr7\stream_for(json_encode($options['json']));
-            $options['_conditional']['Content-Type'] = 'application/json';
-            unset($options['json']);
-        }
-
-        $request = Psr7\modify_request($request, $modify);
-        if ($request->getBody() instanceof Psr7\MultipartStream) {
-            // Use a multipart/form-data POST if a Content-Type is not set.
-            $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary='
-                . $request->getBody()->getBoundary();
-        }
-
-        // Merge in conditional headers if they are not present.
-        if (isset($options['_conditional'])) {
-            // Build up the changes so it's in a single clone of the message.
-            $modify = [];
-            foreach ($options['_conditional'] as $k => $v) {
-                if (!$request->hasHeader($k)) {
-                    $modify['set_headers'][$k] = $v;
-                }
-            }
-            $request = Psr7\modify_request($request, $modify);
-            // Don't pass this internal value along to middleware/handlers.
-            unset($options['_conditional']);
-        }
-
-        return $request;
-    }
-
-    private function invalidBody()
-    {
-        throw new \InvalidArgumentException('Passing in the "body" request '
-            . 'option as an array to send a POST request has been deprecated. '
-            . 'Please use the "form_params" request option to send a '
-            . 'application/x-www-form-urlencoded request, or a the "multipart" '
-            . 'request option to send a multipart/form-data request.');
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/vendor/guzzlehttp/guzzle/src/ClientInterface.php
deleted file mode 100644
index b5b2306..0000000
--- a/vendor/guzzlehttp/guzzle/src/ClientInterface.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Exception\GuzzleException;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Client interface for sending HTTP requests.
- */
-interface ClientInterface
-{
-    const VERSION = '6.1.0';
-
-    /**
-     * Send an HTTP request.
-     *
-     * @param RequestInterface $request Request to send
-     * @param array            $options Request options to apply to the given
-     *                                  request and to the transfer.
-     *
-     * @return ResponseInterface
-     * @throws GuzzleException
-     */
-    public function send(RequestInterface $request, array $options = []);
-
-    /**
-     * Asynchronously send an HTTP request.
-     *
-     * @param RequestInterface $request Request to send
-     * @param array            $options Request options to apply to the given
-     *                                  request and to the transfer.
-     *
-     * @return PromiseInterface
-     */
-    public function sendAsync(RequestInterface $request, array $options = []);
-
-    /**
-     * Create and send an HTTP request.
-     *
-     * Use an absolute path to override the base path of the client, or a
-     * relative path to append to the base path of the client. The URL can
-     * contain the query string as well.
-     *
-     * @param string              $method  HTTP method
-     * @param string|UriInterface $uri     URI object or string.
-     * @param array               $options Request options to apply.
-     *
-     * @return ResponseInterface
-     * @throws GuzzleException
-     */
-    public function request($method, $uri, array $options = []);
-
-    /**
-     * Create and send an asynchronous HTTP request.
-     *
-     * Use an absolute path to override the base path of the client, or a
-     * relative path to append to the base path of the client. The URL can
-     * contain the query string as well. Use an array to provide a URL
-     * template and additional variables to use in the URL template expansion.
-     *
-     * @param string              $method  HTTP method
-     * @param string|UriInterface $uri     URI object or string.
-     * @param array               $options Request options to apply.
-     *
-     * @return PromiseInterface
-     */
-    public function requestAsync($method, $uri, array $options = []);
-
-    /**
-     * Get a client configuration option.
-     *
-     * These options include default request options of the client, a "handler"
-     * (if utilized by the concrete client), and a "base_uri" if utilized by
-     * the concrete client.
-     *
-     * @param string|null $option The config option to retrieve.
-     *
-     * @return mixed
-     */
-    public function getConfig($option = null);
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
deleted file mode 100644
index ea60068..0000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Cookie jar that stores cookies an an array
- */
-class CookieJar implements CookieJarInterface
-{
-    /** @var SetCookie[] Loaded cookie data */
-    private $cookies = [];
-
-    /** @var bool */
-    private $strictMode;
-
-    /**
-     * @param bool $strictMode   Set to true to throw exceptions when invalid
-     *                           cookies are added to the cookie jar.
-     * @param array $cookieArray Array of SetCookie objects or a hash of
-     *                           arrays that can be used with the SetCookie
-     *                           constructor
-     */
-    public function __construct($strictMode = false, $cookieArray = [])
-    {
-        $this->strictMode = $strictMode;
-
-        foreach ($cookieArray as $cookie) {
-            if (!($cookie instanceof SetCookie)) {
-                $cookie = new SetCookie($cookie);
-            }
-            $this->setCookie($cookie);
-        }
-    }
-
-    /**
-     * Create a new Cookie jar from an associative array and domain.
-     *
-     * @param array  $cookies Cookies to create the jar from
-     * @param string $domain  Domain to set the cookies to
-     *
-     * @return self
-     */
-    public static function fromArray(array $cookies, $domain)
-    {
-        $cookieJar = new self();
-        foreach ($cookies as $name => $value) {
-            $cookieJar->setCookie(new SetCookie([
-                'Domain'  => $domain,
-                'Name'    => $name,
-                'Value'   => $value,
-                'Discard' => true
-            ]));
-        }
-
-        return $cookieJar;
-    }
-
-    /**
-     * Quote the cookie value if it is not already quoted and it contains
-     * problematic characters.
-     *
-     * @param string $value Value that may or may not need to be quoted
-     *
-     * @return string
-     */
-    public static function getCookieValue($value)
-    {
-        if (substr($value, 0, 1) !== '"' &&
-            substr($value, -1, 1) !== '"' &&
-            strpbrk($value, ';,=')
-        ) {
-            $value = '"' . $value . '"';
-        }
-
-        return $value;
-    }
-
-    /**
-     * Evaluate if this cookie should be persisted to storage
-     * that survives between requests.
-     *
-     * @param SetCookie $cookie Being evaluated.
-     * @param bool $allowSessionCookies If we should presist session cookies
-     * @return bool
-     */
-    public static function shouldPersist(
-        SetCookie $cookie,
-        $allowSessionCookies = false
-    ) {
-        if ($cookie->getExpires() || $allowSessionCookies) {
-            if (!$cookie->getDiscard()) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    public function toArray()
-    {
-        return array_map(function (SetCookie $cookie) {
-            return $cookie->toArray();
-        }, $this->getIterator()->getArrayCopy());
-    }
-
-    public function clear($domain = null, $path = null, $name = null)
-    {
-        if (!$domain) {
-            $this->cookies = [];
-            return;
-        } elseif (!$path) {
-            $this->cookies = array_filter(
-                $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain) {
-                    return !$cookie->matchesDomain($domain);
-                }
-            );
-        } elseif (!$name) {
-            $this->cookies = array_filter(
-                $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain) {
-                    return !($cookie->matchesPath($path) &&
-                        $cookie->matchesDomain($domain));
-                }
-            );
-        } else {
-            $this->cookies = array_filter(
-                $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain, $name) {
-                    return !($cookie->getName() == $name &&
-                        $cookie->matchesPath($path) &&
-                        $cookie->matchesDomain($domain));
-                }
-            );
-        }
-    }
-
-    public function clearSessionCookies()
-    {
-        $this->cookies = array_filter(
-            $this->cookies,
-            function (SetCookie $cookie) {
-                return !$cookie->getDiscard() && $cookie->getExpires();
-            }
-        );
-    }
-
-    public function setCookie(SetCookie $cookie)
-    {
-        // If the name string is empty (but not 0), ignore the set-cookie
-        // string entirely.
-        $name = $cookie->getName();
-        if (!$name && $name !== '0') {
-            return false;
-        }
-
-        // Only allow cookies with set and valid domain, name, value
-        $result = $cookie->validate();
-        if ($result !== true) {
-            if ($this->strictMode) {
-                throw new \RuntimeException('Invalid cookie: ' . $result);
-            } else {
-                $this->removeCookieIfEmpty($cookie);
-                return false;
-            }
-        }
-
-        // Resolve conflicts with previously set cookies
-        foreach ($this->cookies as $i => $c) {
-
-            // Two cookies are identical, when their path, and domain are
-            // identical.
-            if ($c->getPath() != $cookie->getPath() ||
-                $c->getDomain() != $cookie->getDomain() ||
-                $c->getName() != $cookie->getName()
-            ) {
-                continue;
-            }
-
-            // The previously set cookie is a discard cookie and this one is
-            // not so allow the new cookie to be set
-            if (!$cookie->getDiscard() && $c->getDiscard()) {
-                unset($this->cookies[$i]);
-                continue;
-            }
-
-            // If the new cookie's expiration is further into the future, then
-            // replace the old cookie
-            if ($cookie->getExpires() > $c->getExpires()) {
-                unset($this->cookies[$i]);
-                continue;
-            }
-
-            // If the value has changed, we better change it
-            if ($cookie->getValue() !== $c->getValue()) {
-                unset($this->cookies[$i]);
-                continue;
-            }
-
-            // The cookie exists, so no need to continue
-            return false;
-        }
-
-        $this->cookies[] = $cookie;
-
-        return true;
-    }
-
-    public function count()
-    {
-        return count($this->cookies);
-    }
-
-    public function getIterator()
-    {
-        return new \ArrayIterator(array_values($this->cookies));
-    }
-
-    public function extractCookies(
-        RequestInterface $request,
-        ResponseInterface $response
-    ) {
-        if ($cookieHeader = $response->getHeader('Set-Cookie')) {
-            foreach ($cookieHeader as $cookie) {
-                $sc = SetCookie::fromString($cookie);
-                if (!$sc->getDomain()) {
-                    $sc->setDomain($request->getUri()->getHost());
-                }
-                $this->setCookie($sc);
-            }
-        }
-    }
-
-    public function withCookieHeader(RequestInterface $request)
-    {
-        $values = [];
-        $uri = $request->getUri();
-        $scheme = $uri->getScheme();
-        $host = $uri->getHost();
-        $path = $uri->getPath() ?: '/';
-
-        foreach ($this->cookies as $cookie) {
-            if ($cookie->matchesPath($path) &&
-                $cookie->matchesDomain($host) &&
-                !$cookie->isExpired() &&
-                (!$cookie->getSecure() || $scheme == 'https')
-            ) {
-                $values[] = $cookie->getName() . '='
-                    . self::getCookieValue($cookie->getValue());
-            }
-        }
-
-        return $values
-            ? $request->withHeader('Cookie', implode('; ', $values))
-            : $request;
-    }
-
-    /**
-     * If a cookie already exists and the server asks to set it again with a
-     * null value, the cookie must be deleted.
-     *
-     * @param SetCookie $cookie
-     */
-    private function removeCookieIfEmpty(SetCookie $cookie)
-    {
-        $cookieValue = $cookie->getValue();
-        if ($cookieValue === null || $cookieValue === '') {
-            $this->clear(
-                $cookie->getDomain(),
-                $cookie->getPath(),
-                $cookie->getName()
-            );
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
deleted file mode 100644
index 2cf298a..0000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Stores HTTP cookies.
- *
- * It extracts cookies from HTTP requests, and returns them in HTTP responses.
- * CookieJarInterface instances automatically expire contained cookies when
- * necessary. Subclasses are also responsible for storing and retrieving
- * cookies from a file, database, etc.
- *
- * @link http://docs.python.org/2/library/cookielib.html Inspiration
- */
-interface CookieJarInterface extends \Countable, \IteratorAggregate
-{
-    /**
-     * Create a request with added cookie headers.
-     *
-     * If no matching cookies are found in the cookie jar, then no Cookie
-     * header is added to the request and the same request is returned.
-     *
-     * @param RequestInterface $request Request object to modify.
-     *
-     * @return RequestInterface returns the modified request.
-     */
-    public function withCookieHeader(RequestInterface $request);
-
-    /**
-     * Extract cookies from an HTTP response and store them in the CookieJar.
-     *
-     * @param RequestInterface  $request  Request that was sent
-     * @param ResponseInterface $response Response that was received
-     */
-    public function extractCookies(
-        RequestInterface $request,
-        ResponseInterface $response
-    );
-
-    /**
-     * Sets a cookie in the cookie jar.
-     *
-     * @param SetCookie $cookie Cookie to set.
-     *
-     * @return bool Returns true on success or false on failure
-     */
-    public function setCookie(SetCookie $cookie);
-
-    /**
-     * Remove cookies currently held in the cookie jar.
-     *
-     * Invoking this method without arguments will empty the whole cookie jar.
-     * If given a $domain argument only cookies belonging to that domain will
-     * be removed. If given a $domain and $path argument, cookies belonging to
-     * the specified path within that domain are removed. If given all three
-     * arguments, then the cookie with the specified name, path and domain is
-     * removed.
-     *
-     * @param string $domain Clears cookies matching a domain
-     * @param string $path   Clears cookies matching a domain and path
-     * @param string $name   Clears cookies matching a domain, path, and name
-     *
-     * @return CookieJarInterface
-     */
-    public function clear($domain = null, $path = null, $name = null);
-
-    /**
-     * Discard all sessions cookies.
-     *
-     * Removes cookies that don't have an expire field or a have a discard
-     * field set to true. To be called when the user agent shuts down according
-     * to RFC 2965.
-     */
-    public function clearSessionCookies();
-
-    /**
-     * Converts the cookie jar to an array.
-     *
-     * @return array
-     */
-    public function toArray();
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
deleted file mode 100644
index c55bb34..0000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-/**
- * Persists non-session cookies using a JSON formatted file
- */
-class FileCookieJar extends CookieJar
-{
-    /** @var string filename */
-    private $filename;
-
-    /** @var bool Control whether to presist session cookies or not. */
-    private $storeSessionCookies;
-    
-    /**
-     * Create a new FileCookieJar object
-     *
-     * @param string $cookieFile        File to store the cookie data
-     * @param bool $storeSessionCookies Set to true to store session cookies
-     *                                  in the cookie jar.
-     *
-     * @throws \RuntimeException if the file cannot be found or created
-     */
-    public function __construct($cookieFile, $storeSessionCookies = false)
-    {
-        $this->filename = $cookieFile;
-        $this->storeSessionCookies = $storeSessionCookies;
-
-        if (file_exists($cookieFile)) {
-            $this->load($cookieFile);
-        }
-    }
-
-    /**
-     * Saves the file when shutting down
-     */
-    public function __destruct()
-    {
-        $this->save($this->filename);
-    }
-
-    /**
-     * Saves the cookies to a file.
-     *
-     * @param string $filename File to save
-     * @throws \RuntimeException if the file cannot be found or created
-     */
-    public function save($filename)
-    {
-        $json = [];
-        foreach ($this as $cookie) {
-            /** @var SetCookie $cookie */
-            if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
-                $json[] = $cookie->toArray();
-            }
-        }
-
-        if (false === file_put_contents($filename, json_encode($json))) {
-            throw new \RuntimeException("Unable to save file {$filename}");
-        }
-    }
-
-    /**
-     * Load cookies from a JSON formatted file.
-     *
-     * Old cookies are kept unless overwritten by newly loaded ones.
-     *
-     * @param string $filename Cookie file to load.
-     * @throws \RuntimeException if the file cannot be loaded.
-     */
-    public function load($filename)
-    {
-        $json = file_get_contents($filename);
-        if (false === $json) {
-            throw new \RuntimeException("Unable to load file {$filename}");
-        }
-
-        $data = json_decode($json, true);
-        if (is_array($data)) {
-            foreach (json_decode($json, true) as $cookie) {
-                $this->setCookie(new SetCookie($cookie));
-            }
-        } elseif (strlen($data)) {
-            throw new \RuntimeException("Invalid cookie file: {$filename}");
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
deleted file mode 100644
index d80c480..0000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-/**
- * Persists cookies in the client session
- */
-class SessionCookieJar extends CookieJar
-{
-    /** @var string session key */
-    private $sessionKey;
-    
-    /** @var bool Control whether to presist session cookies or not. */
-    private $storeSessionCookies;
-
-    /**
-     * Create a new SessionCookieJar object
-     *
-     * @param string $sessionKey        Session key name to store the cookie 
-     *                                  data in session
-     * @param bool $storeSessionCookies Set to true to store session cookies
-     *                                  in the cookie jar.
-     */
-    public function __construct($sessionKey, $storeSessionCookies = false)
-    {
-        $this->sessionKey = $sessionKey;
-        $this->storeSessionCookies = $storeSessionCookies;
-        $this->load();
-    }
-
-    /**
-     * Saves cookies to session when shutting down
-     */
-    public function __destruct()
-    {
-        $this->save();
-    }
-
-    /**
-     * Save cookies to the client session
-     */
-    public function save()
-    {
-        $json = [];
-        foreach ($this as $cookie) {
-            /** @var SetCookie $cookie */
-            if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
-                $json[] = $cookie->toArray();
-            }
-        }
-
-        $_SESSION[$this->sessionKey] = json_encode($json);
-    }
-
-    /**
-     * Load the contents of the client session into the data array
-     */
-    protected function load()
-    {
-        $cookieJar = isset($_SESSION[$this->sessionKey])
-            ? $_SESSION[$this->sessionKey]
-            : null;
-
-        $data = json_decode($cookieJar, true);
-        if (is_array($data)) {
-            foreach ($data as $cookie) {
-                $this->setCookie(new SetCookie($cookie));
-            }
-        } elseif (strlen($data)) {
-            throw new \RuntimeException("Invalid cookie data");
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
deleted file mode 100644
index acd654d..0000000
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
+++ /dev/null
@@ -1,404 +0,0 @@
-<?php
-namespace GuzzleHttp\Cookie;
-
-/**
- * Set-Cookie object
- */
-class SetCookie
-{
-    /** @var array */
-    private static $defaults = [
-        'Name'     => null,
-        'Value'    => null,
-        'Domain'   => null,
-        'Path'     => '/',
-        'Max-Age'  => null,
-        'Expires'  => null,
-        'Secure'   => false,
-        'Discard'  => false,
-        'HttpOnly' => false
-    ];
-
-    /** @var array Cookie data */
-    private $data;
-
-    /**
-     * Create a new SetCookie object from a string
-     *
-     * @param string $cookie Set-Cookie header string
-     *
-     * @return self
-     */
-    public static function fromString($cookie)
-    {
-        // Create the default return array
-        $data = self::$defaults;
-        // Explode the cookie string using a series of semicolons
-        $pieces = array_filter(array_map('trim', explode(';', $cookie)));
-        // The name of the cookie (first kvp) must include an equal sign.
-        if (empty($pieces) || !strpos($pieces[0], '=')) {
-            return new self($data);
-        }
-
-        // Add the cookie pieces into the parsed data array
-        foreach ($pieces as $part) {
-
-            $cookieParts = explode('=', $part, 2);
-            $key = trim($cookieParts[0]);
-            $value = isset($cookieParts[1])
-                ? trim($cookieParts[1], " \n\r\t\0\x0B")
-                : true;
-
-            // Only check for non-cookies when cookies have been found
-            if (empty($data['Name'])) {
-                $data['Name'] = $key;
-                $data['Value'] = $value;
-            } else {
-                foreach (array_keys(self::$defaults) as $search) {
-                    if (!strcasecmp($search, $key)) {
-                        $data[$search] = $value;
-                        continue 2;
-                    }
-                }
-                $data[$key] = $value;
-            }
-        }
-
-        return new self($data);
-    }
-
-    /**
-     * @param array $data Array of cookie data provided by a Cookie parser
-     */
-    public function __construct(array $data = [])
-    {
-        $this->data = array_replace(self::$defaults, $data);
-        // Extract the Expires value and turn it into a UNIX timestamp if needed
-        if (!$this->getExpires() && $this->getMaxAge()) {
-            // Calculate the Expires date
-            $this->setExpires(time() + $this->getMaxAge());
-        } elseif ($this->getExpires() && !is_numeric($this->getExpires())) {
-            $this->setExpires($this->getExpires());
-        }
-    }
-
-    public function __toString()
-    {
-        $str = $this->data['Name'] . '=' . $this->data['Value'] . '; ';
-        foreach ($this->data as $k => $v) {
-            if ($k != 'Name' && $k != 'Value' && $v !== null && $v !== false) {
-                if ($k == 'Expires') {
-                    $str .= 'Expires=' . gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
-                } else {
-                    $str .= ($v === true ? $k : "{$k}={$v}") . '; ';
-                }
-            }
-        }
-
-        return rtrim($str, '; ');
-    }
-
-    public function toArray()
-    {
-        return $this->data;
-    }
-
-    /**
-     * Get the cookie name
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->data['Name'];
-    }
-
-    /**
-     * Set the cookie name
-     *
-     * @param string $name Cookie name
-     */
-    public function setName($name)
-    {
-        $this->data['Name'] = $name;
-    }
-
-    /**
-     * Get the cookie value
-     *
-     * @return string
-     */
-    public function getValue()
-    {
-        return $this->data['Value'];
-    }
-
-    /**
-     * Set the cookie value
-     *
-     * @param string $value Cookie value
-     */
-    public function setValue($value)
-    {
-        $this->data['Value'] = $value;
-    }
-
-    /**
-     * Get the domain
-     *
-     * @return string|null
-     */
-    public function getDomain()
-    {
-        return $this->data['Domain'];
-    }
-
-    /**
-     * Set the domain of the cookie
-     *
-     * @param string $domain
-     */
-    public function setDomain($domain)
-    {
-        $this->data['Domain'] = $domain;
-    }
-
-    /**
-     * Get the path
-     *
-     * @return string
-     */
-    public function getPath()
-    {
-        return $this->data['Path'];
-    }
-
-    /**
-     * Set the path of the cookie
-     *
-     * @param string $path Path of the cookie
-     */
-    public function setPath($path)
-    {
-        $this->data['Path'] = $path;
-    }
-
-    /**
-     * Maximum lifetime of the cookie in seconds
-     *
-     * @return int|null
-     */
-    public function getMaxAge()
-    {
-        return $this->data['Max-Age'];
-    }
-
-    /**
-     * Set the max-age of the cookie
-     *
-     * @param int $maxAge Max age of the cookie in seconds
-     */
-    public function setMaxAge($maxAge)
-    {
-        $this->data['Max-Age'] = $maxAge;
-    }
-
-    /**
-     * The UNIX timestamp when the cookie Expires
-     *
-     * @return mixed
-     */
-    public function getExpires()
-    {
-        return $this->data['Expires'];
-    }
-
-    /**
-     * Set the unix timestamp for which the cookie will expire
-     *
-     * @param int $timestamp Unix timestamp
-     */
-    public function setExpires($timestamp)
-    {
-        $this->data['Expires'] = is_numeric($timestamp)
-            ? (int) $timestamp
-            : strtotime($timestamp);
-    }
-
-    /**
-     * Get whether or not this is a secure cookie
-     *
-     * @return null|bool
-     */
-    public function getSecure()
-    {
-        return $this->data['Secure'];
-    }
-
-    /**
-     * Set whether or not the cookie is secure
-     *
-     * @param bool $secure Set to true or false if secure
-     */
-    public function setSecure($secure)
-    {
-        $this->data['Secure'] = $secure;
-    }
-
-    /**
-     * Get whether or not this is a session cookie
-     *
-     * @return null|bool
-     */
-    public function getDiscard()
-    {
-        return $this->data['Discard'];
-    }
-
-    /**
-     * Set whether or not this is a session cookie
-     *
-     * @param bool $discard Set to true or false if this is a session cookie
-     */
-    public function setDiscard($discard)
-    {
-        $this->data['Discard'] = $discard;
-    }
-
-    /**
-     * Get whether or not this is an HTTP only cookie
-     *
-     * @return bool
-     */
-    public function getHttpOnly()
-    {
-        return $this->data['HttpOnly'];
-    }
-
-    /**
-     * Set whether or not this is an HTTP only cookie
-     *
-     * @param bool $httpOnly Set to true or false if this is HTTP only
-     */
-    public function setHttpOnly($httpOnly)
-    {
-        $this->data['HttpOnly'] = $httpOnly;
-    }
-
-    /**
-     * Check if the cookie matches a path value.
-     *
-     * A request-path path-matches a given cookie-path if at least one of
-     * the following conditions holds:
-     *
-     * - The cookie-path and the request-path are identical.
-     * - The cookie-path is a prefix of the request-path, and the last
-     *   character of the cookie-path is %x2F ("/").
-     * - The cookie-path is a prefix of the request-path, and the first
-     *   character of the request-path that is not included in the cookie-
-     *   path is a %x2F ("/") character.
-     *
-     * @param string $requestPath Path to check against
-     *
-     * @return bool
-     */
-    public function matchesPath($requestPath)
-    {
-        $cookiePath = $this->getPath();
-
-        // Match on exact matches or when path is the default empty "/"
-        if ($cookiePath == '/' || $cookiePath == $requestPath) {
-            return true;
-        }
-
-        // Ensure that the cookie-path is a prefix of the request path.
-        if (0 !== strpos($requestPath, $cookiePath)) {
-            return false;
-        }
-
-        // Match if the last character of the cookie-path is "/"
-        if (substr($cookiePath, -1, 1) == '/') {
-            return true;
-        }
-
-        // Match if the first character not included in cookie path is "/"
-        return substr($requestPath, strlen($cookiePath), 1) == '/';
-    }
-
-    /**
-     * Check if the cookie matches a domain value
-     *
-     * @param string $domain Domain to check against
-     *
-     * @return bool
-     */
-    public function matchesDomain($domain)
-    {
-        // Remove the leading '.' as per spec in RFC 6265.
-        // http://tools.ietf.org/html/rfc6265#section-5.2.3
-        $cookieDomain = ltrim($this->getDomain(), '.');
-
-        // Domain not set or exact match.
-        if (!$cookieDomain || !strcasecmp($domain, $cookieDomain)) {
-            return true;
-        }
-
-        // Matching the subdomain according to RFC 6265.
-        // http://tools.ietf.org/html/rfc6265#section-5.1.3
-        if (filter_var($domain, FILTER_VALIDATE_IP)) {
-            return false;
-        }
-
-        return (bool) preg_match('/\.' . preg_quote($cookieDomain) . '$/', $domain);
-    }
-
-    /**
-     * Check if the cookie is expired
-     *
-     * @return bool
-     */
-    public function isExpired()
-    {
-        return $this->getExpires() && time() > $this->getExpires();
-    }
-
-    /**
-     * Check if the cookie is valid according to RFC 6265
-     *
-     * @return bool|string Returns true if valid or an error message if invalid
-     */
-    public function validate()
-    {
-        // Names must not be empty, but can be 0
-        $name = $this->getName();
-        if (empty($name) && !is_numeric($name)) {
-            return 'The cookie name must not be empty';
-        }
-
-        // Check if any of the invalid characters are present in the cookie name
-        if (preg_match(
-            '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/',
-            $name)
-        ) {
-            return 'Cookie name must not contain invalid characters: ASCII '
-                . 'Control characters (0-31;127), space, tab and the '
-                . 'following characters: ()<>@,;:\"/?={}';
-        }
-
-        // Value must not be empty, but can be 0
-        $value = $this->getValue();
-        if (empty($value) && !is_numeric($value)) {
-            return 'The cookie value must not be empty';
-        }
-
-        // Domains must not be empty, but can be 0
-        // A "0" is not a valid internet domain, but may be used as server name
-        // in a private network.
-        $domain = $this->getDomain();
-        if (empty($domain) && !is_numeric($domain)) {
-            return 'The cookie domain must not be empty';
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
deleted file mode 100644
index fd78431..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-/**
- * Exception when an HTTP error occurs (4xx or 5xx error)
- */
-class BadResponseException extends RequestException {}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php b/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
deleted file mode 100644
index f95c09f..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-/**
- * Exception when a client error is encountered (4xx codes)
- */
-class ClientException extends BadResponseException {}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php b/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
deleted file mode 100644
index d33b0cc..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Exception thrown when a connection cannot be established.
- *
- * Note that no response is present for a ConnectException
- */
-class ConnectException extends RequestException
-{
-    public function __construct(
-        $message,
-        RequestInterface $request,
-        \Exception $previous = null,
-        array $handlerContext = []
-    ) {
-        parent::__construct($message, $request, null, $previous, $handlerContext);
-    }
-
-    /**
-     * @return null
-     */
-    public function getResponse()
-    {
-        return null;
-    }
-
-    /**
-     * @return bool
-     */
-    public function hasResponse()
-    {
-        return false;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php b/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
deleted file mode 100644
index c82998e..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-interface GuzzleException {}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
deleted file mode 100644
index 23dd02c..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use GuzzleHttp\Promise\PromiseInterface;
-
-/**
- * HTTP Request exception
- */
-class RequestException extends TransferException
-{
-    /** @var RequestInterface */
-    private $request;
-
-    /** @var ResponseInterface */
-    private $response;
-
-    /** @var array */
-    private $handlerContext;
-
-    public function __construct(
-        $message,
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $previous = null,
-        array $handlerContext = []
-    ) {
-        // Set the code of the exception if the response is set and not future.
-        $code = $response && !($response instanceof PromiseInterface)
-            ? $response->getStatusCode()
-            : 0;
-        parent::__construct($message, $code, $previous);
-        $this->request = $request;
-        $this->response = $response;
-        $this->handlerContext = $handlerContext;
-    }
-
-    /**
-     * Wrap non-RequestExceptions with a RequestException
-     *
-     * @param RequestInterface $request
-     * @param \Exception       $e
-     *
-     * @return RequestException
-     */
-    public static function wrapException(RequestInterface $request, \Exception $e)
-    {
-        return $e instanceof RequestException
-            ? $e
-            : new RequestException($e->getMessage(), $request, null, $e);
-    }
-
-    /**
-     * Factory method to create a new exception with a normalized error message
-     *
-     * @param RequestInterface  $request  Request
-     * @param ResponseInterface $response Response received
-     * @param \Exception        $previous Previous exception
-     * @param array             $ctx      Optional handler context.
-     *
-     * @return self
-     */
-    public static function create(
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $previous = null,
-        array $ctx = []
-    ) {
-        if (!$response) {
-            return new self(
-                'Error completing request',
-                $request,
-                null,
-                $previous,
-                $ctx
-            );
-        }
-
-        $level = floor($response->getStatusCode() / 100);
-        if ($level == '4') {
-            $label = 'Client error response';
-            $className = __NAMESPACE__ . '\\ClientException';
-        } elseif ($level == '5') {
-            $label = 'Server error response';
-            $className = __NAMESPACE__ . '\\ServerException';
-        } else {
-            $label = 'Unsuccessful response';
-            $className = __CLASS__;
-        }
-
-        $message = $label . ' [url] ' . $request->getUri()
-            . ' [http method] ' . $request->getMethod()
-            . ' [status code] ' . $response->getStatusCode()
-            . ' [reason phrase] ' . $response->getReasonPhrase();
-
-        return new $className($message, $request, $response, $previous, $ctx);
-    }
-
-    /**
-     * Get the request that caused the exception
-     *
-     * @return RequestInterface
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Get the associated response
-     *
-     * @return ResponseInterface|null
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-
-    /**
-     * Check if a response was received
-     *
-     * @return bool
-     */
-    public function hasResponse()
-    {
-        return $this->response !== null;
-    }
-
-    /**
-     * Get contextual information about the error from the underlying handler.
-     *
-     * The contents of this array will vary depending on which handler you are
-     * using. It may also be just an empty array. Relying on this data will
-     * couple you to a specific handler, but can give more debug information
-     * when needed.
-     *
-     * @return array
-     */
-    public function getHandlerContext()
-    {
-        return $this->handlerContext;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php b/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
deleted file mode 100644
index a77c289..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Exception thrown when a seek fails on a stream.
- */
-class SeekException extends \RuntimeException implements GuzzleException
-{
-    private $stream;
-
-    public function __construct(StreamInterface $stream, $pos = 0, $msg = '')
-    {
-        $this->stream = $stream;
-        $msg = $msg ?: 'Could not seek the stream to position ' . $pos;
-        parent::__construct($msg);
-    }
-
-    /**
-     * @return StreamInterface
-     */
-    public function getStream()
-    {
-        return $this->stream;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
deleted file mode 100644
index 7cdd340..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-/**
- * Exception when a server error is encountered (5xx codes)
- */
-class ServerException extends BadResponseException {}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php b/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
deleted file mode 100644
index b60a967..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-class TooManyRedirectsException extends RequestException {}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php b/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
deleted file mode 100644
index b92071c..0000000
--- a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-class TransferException extends \RuntimeException implements GuzzleException {}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
deleted file mode 100644
index e8d9388..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
+++ /dev/null
@@ -1,531 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Exception\ConnectException;
-use GuzzleHttp\Promise\FulfilledPromise;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Psr7;
-use GuzzleHttp\Psr7\LazyOpenStream;
-use GuzzleHttp\TransferStats;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Creates curl resources from a request
- */
-class CurlFactory implements CurlFactoryInterface
-{
-    /** @var array */
-    private $handles;
-
-    /** @var int Total number of idle handles to keep in cache */
-    private $maxHandles;
-
-    /**
-     * @param int $maxHandles Maximum number of idle handles.
-     */
-    public function __construct($maxHandles)
-    {
-        $this->maxHandles = $maxHandles;
-    }
-
-    public function create(RequestInterface $request, array $options)
-    {
-        if (isset($options['curl']['body_as_string'])) {
-            $options['_body_as_string'] = $options['curl']['body_as_string'];
-            unset($options['curl']['body_as_string']);
-        }
-
-        $easy = new EasyHandle;
-        $easy->request = $request;
-        $easy->options = $options;
-        $conf = $this->getDefaultConf($easy);
-        $this->applyMethod($easy, $conf);
-        $this->applyHandlerOptions($easy, $conf);
-        $this->applyHeaders($easy, $conf);
-        unset($conf['_headers']);
-
-        // Add handler options from the request configuration options
-        if (isset($options['curl'])) {
-            $conf = array_replace($conf, $options['curl']);
-        }
-
-        $conf[CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy);
-        $easy->handle = $this->handles
-            ? array_pop($this->handles)
-            : curl_init();
-        curl_setopt_array($easy->handle, $conf);
-
-        return $easy;
-    }
-
-    public function release(EasyHandle $easy)
-    {
-        $resource = $easy->handle;
-        unset($easy->handle);
-
-        if (count($this->handles) >= $this->maxHandles) {
-            curl_close($resource);
-        } else {
-            // Remove all callback functions as they can hold onto references
-            // and are not cleaned up by curl_reset. Using curl_setopt_array
-            // does not work for some reason, so removing each one
-            // individually.
-            curl_setopt($resource, CURLOPT_HEADERFUNCTION, null);
-            curl_setopt($resource, CURLOPT_READFUNCTION, null);
-            curl_setopt($resource, CURLOPT_WRITEFUNCTION, null);
-            curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null);
-            curl_reset($resource);
-            $this->handles[] = $resource;
-        }
-    }
-
-    /**
-     * Completes a cURL transaction, either returning a response promise or a
-     * rejected promise.
-     *
-     * @param callable             $handler
-     * @param EasyHandle           $easy
-     * @param CurlFactoryInterface $factory Dictates how the handle is released
-     *
-     * @return \GuzzleHttp\Promise\PromiseInterface
-     */
-    public static function finish(
-        callable $handler,
-        EasyHandle $easy,
-        CurlFactoryInterface $factory
-    ) {
-        if (isset($easy->options['on_stats'])) {
-            self::invokeStats($easy);
-        }
-
-        if (!$easy->response || $easy->errno) {
-            return self::finishError($handler, $easy, $factory);
-        }
-
-        // Return the response if it is present and there is no error.
-        $factory->release($easy);
-
-        // Rewind the body of the response if possible.
-        $body = $easy->response->getBody();
-        if ($body->isSeekable()) {
-            $body->rewind();
-        }
-
-        return new FulfilledPromise($easy->response);
-    }
-
-    private static function invokeStats(EasyHandle $easy)
-    {
-        $curlStats = curl_getinfo($easy->handle);
-        $stats = new TransferStats(
-            $easy->request,
-            $easy->response,
-            $curlStats['total_time'],
-            $easy->errno,
-            $curlStats
-        );
-        call_user_func($easy->options['on_stats'], $stats);
-    }
-
-    private static function finishError(
-        callable $handler,
-        EasyHandle $easy,
-        CurlFactoryInterface $factory
-    ) {
-        // Get error information and release the handle to the factory.
-        $ctx = [
-            'errno' => $easy->errno,
-            'error' => curl_error($easy->handle),
-        ] + curl_getinfo($easy->handle);
-        $factory->release($easy);
-
-        // Retry when nothing is present or when curl failed to rewind.
-        if (empty($easy->options['_err_message'])
-            && (!$easy->errno || $easy->errno == 65)
-        ) {
-            return self::retryFailedRewind($handler, $easy, $ctx);
-        }
-
-        return self::createRejection($easy, $ctx);
-    }
-
-    private static function createRejection(EasyHandle $easy, array $ctx)
-    {
-        static $connectionErrors = [
-            CURLE_OPERATION_TIMEOUTED  => true,
-            CURLE_COULDNT_RESOLVE_HOST => true,
-            CURLE_COULDNT_CONNECT      => true,
-            CURLE_SSL_CONNECT_ERROR    => true,
-            CURLE_GOT_NOTHING          => true,
-        ];
-
-        // If an exception was encountered during the onHeaders event, then
-        // return a rejected promise that wraps that exception.
-        if ($easy->onHeadersException) {
-            return new RejectedPromise(
-                new RequestException(
-                    'An error was encountered during the on_headers event',
-                    $easy->request,
-                    $easy->response,
-                    $easy->onHeadersException,
-                    $ctx
-                )
-            );
-        }
-
-        $message = sprintf(
-            'cURL error %s: %s (%s)',
-            $ctx['errno'],
-            $ctx['error'],
-            'see http://curl.haxx.se/libcurl/c/libcurl-errors.html'
-        );
-
-        // Create a connection exception if it was a specific error code.
-        $error = isset($connectionErrors[$easy->errno])
-            ? new ConnectException($message, $easy->request, null, $ctx)
-            : new RequestException($message, $easy->request, $easy->response, null, $ctx);
-
-        return new RejectedPromise($error);
-    }
-
-    private function getDefaultConf(EasyHandle $easy)
-    {
-        $conf = [
-            '_headers'             => $easy->request->getHeaders(),
-            CURLOPT_CUSTOMREQUEST  => $easy->request->getMethod(),
-            CURLOPT_URL            => (string) $easy->request->getUri(),
-            CURLOPT_RETURNTRANSFER => false,
-            CURLOPT_HEADER         => false,
-            CURLOPT_CONNECTTIMEOUT => 150,
-        ];
-
-        if (defined('CURLOPT_PROTOCOLS')) {
-            $conf[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
-        }
-
-        $version = $easy->request->getProtocolVersion();
-        if ($version == 1.1) {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1;
-        } elseif ($version == 2.0) {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2_0;
-        } else {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0;
-        }
-
-        return $conf;
-    }
-
-    private function applyMethod(EasyHandle $easy, array &$conf)
-    {
-        $body = $easy->request->getBody();
-        $size = $body->getSize();
-
-        if ($size === null || $size > 0) {
-            $this->applyBody($easy->request, $easy->options, $conf);
-            return;
-        }
-
-        $method = $easy->request->getMethod();
-        if ($method === 'PUT' || $method === 'POST') {
-            // See http://tools.ietf.org/html/rfc7230#section-3.3.2
-            if (!$easy->request->hasHeader('Content-Length')) {
-                $conf[CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
-            }
-        } elseif ($method === 'HEAD') {
-            $conf[CURLOPT_NOBODY] = true;
-            unset(
-                $conf[CURLOPT_WRITEFUNCTION],
-                $conf[CURLOPT_READFUNCTION],
-                $conf[CURLOPT_FILE],
-                $conf[CURLOPT_INFILE]
-            );
-        }
-    }
-
-    private function applyBody(RequestInterface $request, array $options, array &$conf)
-    {
-        $size = $request->hasHeader('Content-Length')
-            ? (int) $request->getHeaderLine('Content-Length')
-            : null;
-
-        // Send the body as a string if the size is less than 1MB OR if the
-        // [curl][body_as_string] request value is set.
-        if (($size !== null && $size < 1000000) ||
-            !empty($options['_body_as_string'])
-        ) {
-            $conf[CURLOPT_POSTFIELDS] = (string) $request->getBody();
-            // Don't duplicate the Content-Length header
-            $this->removeHeader('Content-Length', $conf);
-            $this->removeHeader('Transfer-Encoding', $conf);
-        } else {
-            $conf[CURLOPT_UPLOAD] = true;
-            if ($size !== null) {
-                $conf[CURLOPT_INFILESIZE] = $size;
-                $this->removeHeader('Content-Length', $conf);
-            }
-            $body = $request->getBody();
-            $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body) {
-                return $body->read($length);
-            };
-        }
-
-        // If the Expect header is not present, prevent curl from adding it
-        if (!$request->hasHeader('Expect')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Expect:';
-        }
-
-        // cURL sometimes adds a content-type by default. Prevent this.
-        if (!$request->hasHeader('Content-Type')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Content-Type:';
-        }
-    }
-
-    private function applyHeaders(EasyHandle $easy, array &$conf)
-    {
-        foreach ($conf['_headers'] as $name => $values) {
-            foreach ($values as $value) {
-                $conf[CURLOPT_HTTPHEADER][] = "$name: $value";
-            }
-        }
-
-        // Remove the Accept header if one was not set
-        if (!$easy->request->hasHeader('Accept')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Accept:';
-        }
-    }
-
-    /**
-     * Remove a header from the options array.
-     *
-     * @param string $name    Case-insensitive header to remove
-     * @param array  $options Array of options to modify
-     */
-    private function removeHeader($name, array &$options)
-    {
-        foreach (array_keys($options['_headers']) as $key) {
-            if (!strcasecmp($key, $name)) {
-                unset($options['_headers'][$key]);
-                return;
-            }
-        }
-    }
-
-    private function applyHandlerOptions(EasyHandle $easy, array &$conf)
-    {
-        $options = $easy->options;
-        if (isset($options['verify'])) {
-            if ($options['verify'] === false) {
-                unset($conf[CURLOPT_CAINFO]);
-                $conf[CURLOPT_SSL_VERIFYHOST] = 0;
-                $conf[CURLOPT_SSL_VERIFYPEER] = false;
-            } else {
-                $conf[CURLOPT_SSL_VERIFYHOST] = 2;
-                $conf[CURLOPT_SSL_VERIFYPEER] = true;
-                if (is_string($options['verify'])) {
-                    $conf[CURLOPT_CAINFO] = $options['verify'];
-                    if (!file_exists($options['verify'])) {
-                        throw new \InvalidArgumentException(
-                            "SSL CA bundle not found: {$options['verify']}"
-                        );
-                    }
-                }
-            }
-        }
-
-        if (!empty($options['decode_content'])) {
-            $accept = $easy->request->getHeaderLine('Accept-Encoding');
-            if ($accept) {
-                $conf[CURLOPT_ENCODING] = $accept;
-            } else {
-                $conf[CURLOPT_ENCODING] = '';
-                // Don't let curl send the header over the wire
-                $conf[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
-            }
-        }
-
-        if (isset($options['sink'])) {
-            $sink = $options['sink'];
-            if (!is_string($sink)) {
-                $sink = \GuzzleHttp\Psr7\stream_for($sink);
-            } elseif (!is_dir(dirname($sink))) {
-                // Ensure that the directory exists before failing in curl.
-                throw new \RuntimeException(sprintf(
-                    'Directory %s does not exist for sink value of %s',
-                    dirname($sink),
-                    $sink
-                ));
-            } else {
-                $sink = new LazyOpenStream($sink, 'w+');
-            }
-            $easy->sink = $sink;
-            $conf[CURLOPT_WRITEFUNCTION] = function ($ch, $write) use ($sink) {
-                return $sink->write($write);
-            };
-        } else {
-            // Use a default temp stream if no sink was set.
-            $conf[CURLOPT_FILE] = fopen('php://temp', 'w+');
-            $easy->sink = Psr7\stream_for($conf[CURLOPT_FILE]);
-        }
-
-        if (isset($options['timeout'])) {
-            $conf[CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000;
-        }
-
-        if (isset($options['connect_timeout'])) {
-            $conf[CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000;
-        }
-
-        if (isset($options['proxy'])) {
-            if (!is_array($options['proxy'])) {
-                $conf[CURLOPT_PROXY] = $options['proxy'];
-            } else {
-                $scheme = $easy->request->getUri()->getScheme();
-                if (isset($options['proxy'][$scheme])) {
-                    $host = $easy->request->getUri()->getHost();
-                    if (!isset($options['proxy']['no']) ||
-                        !\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no'])
-                    ) {
-                        $conf[CURLOPT_PROXY] = $options['proxy'][$scheme];
-                    }
-                }
-            }
-        }
-
-        if (isset($options['cert'])) {
-            $cert = $options['cert'];
-            if (is_array($cert)) {
-                $conf[CURLOPT_SSLCERTPASSWD] = $cert[1];
-                $cert = $cert[0];
-            }
-            if (!file_exists($cert)) {
-                throw new \InvalidArgumentException(
-                    "SSL certificate not found: {$cert}"
-                );
-            }
-            $conf[CURLOPT_SSLCERT] = $cert;
-        }
-
-        if (isset($options['ssl_key'])) {
-            $sslKey = $options['ssl_key'];
-            if (is_array($sslKey)) {
-                $conf[CURLOPT_SSLKEYPASSWD] = $sslKey[1];
-                $sslKey = $sslKey[0];
-            }
-            if (!file_exists($sslKey)) {
-                throw new \InvalidArgumentException(
-                    "SSL private key not found: {$sslKey}"
-                );
-            }
-            $conf[CURLOPT_SSLKEY] = $sslKey;
-        }
-
-        if (isset($options['progress'])) {
-            $progress = $options['progress'];
-            if (!is_callable($progress)) {
-                throw new \InvalidArgumentException(
-                    'progress client option must be callable'
-                );
-            }
-            $conf[CURLOPT_NOPROGRESS] = false;
-            $conf[CURLOPT_PROGRESSFUNCTION] = function () use ($progress) {
-                $args = func_get_args();
-                // PHP 5.5 pushed the handle onto the start of the args
-                if (is_resource($args[0])) {
-                    array_shift($args);
-                }
-                call_user_func_array($progress, $args);
-            };
-        }
-
-        if (!empty($options['debug'])) {
-            $conf[CURLOPT_STDERR] = \GuzzleHttp\debug_resource($options['debug']);
-            $conf[CURLOPT_VERBOSE] = true;
-        }
-    }
-
-    /**
-     * This function ensures that a response was set on a transaction. If one
-     * was not set, then the request is retried if possible. This error
-     * typically means you are sending a payload, curl encountered a
-     * "Connection died, retrying a fresh connect" error, tried to rewind the
-     * stream, and then encountered a "necessary data rewind wasn't possible"
-     * error, causing the request to be sent through curl_multi_info_read()
-     * without an error status.
-     */
-    private static function retryFailedRewind(
-        callable $handler,
-        EasyHandle $easy,
-        array $ctx
-    ) {
-        try {
-            // Only rewind if the body has been read from.
-            $body = $easy->request->getBody();
-            if ($body->tell() > 0) {
-                $body->rewind();
-            }
-        } catch (\RuntimeException $e) {
-            $ctx['error'] = 'The connection unexpectedly failed without '
-                . 'providing an error. The request would have been retried, '
-                . 'but attempting to rewind the request body failed. '
-                . 'Exception: ' . $e;
-            return self::createRejection($easy, $ctx);
-        }
-
-        // Retry no more than 3 times before giving up.
-        if (!isset($easy->options['_curl_retries'])) {
-            $easy->options['_curl_retries'] = 1;
-        } elseif ($easy->options['_curl_retries'] == 2) {
-            $ctx['error'] = 'The cURL request was retried 3 times '
-                . 'and did not succeed. The most likely reason for the failure '
-                . 'is that cURL was unable to rewind the body of the request '
-                . 'and subsequent retries resulted in the same error. Turn on '
-                . 'the debug option to see what went wrong. See '
-                . 'https://bugs.php.net/bug.php?id=47204 for more information.';
-            return self::createRejection($easy, $ctx);
-        } else {
-            $easy->options['_curl_retries']++;
-        }
-
-        return $handler($easy->request, $easy->options);
-    }
-
-    private function createHeaderFn(EasyHandle $easy)
-    {
-        if (!isset($easy->options['on_headers'])) {
-            $onHeaders = null;
-        } elseif (!is_callable($easy->options['on_headers'])) {
-            throw new \InvalidArgumentException('on_headers must be callable');
-        } else {
-            $onHeaders = $easy->options['on_headers'];
-        }
-
-        return function ($ch, $h) use (
-            $onHeaders,
-            $easy,
-            &$startingResponse
-        ) {
-            $value = trim($h);
-            if ($value === '') {
-                $startingResponse = true;
-                $easy->createResponse();
-                if ($onHeaders) {
-                    try {
-                        $onHeaders($easy->response);
-                    } catch (\Exception $e) {
-                        // Associate the exception with the handle and trigger
-                        // a curl header write error by returning 0.
-                        $easy->onHeadersException = $e;
-                        return -1;
-                    }
-                }
-            } elseif ($startingResponse) {
-                $startingResponse = false;
-                $easy->headers = [$value];
-            } else {
-                $easy->headers[] = $value;
-            }
-            return strlen($h);
-        };
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
deleted file mode 100644
index b0fc236..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use Psr\Http\Message\RequestInterface;
-
-interface CurlFactoryInterface
-{
-    /**
-     * Creates a cURL handle resource.
-     *
-     * @param RequestInterface $request Request
-     * @param array            $options Transfer options
-     *
-     * @return EasyHandle
-     * @throws \RuntimeException when an option cannot be applied
-     */
-    public function create(RequestInterface $request, array $options);
-
-    /**
-     * Release an easy handle, allowing it to be reused or closed.
-     *
-     * This function must call unset on the easy handle's "handle" property.
-     *
-     * @param EasyHandle $easy
-     */
-    public function release(EasyHandle $easy);
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
deleted file mode 100644
index 43577da..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * HTTP handler that uses cURL easy handles as a transport layer.
- *
- * When using the CurlHandler, custom curl options can be specified as an
- * associative array of curl option constants mapping to values in the
- * **curl** key of the "client" key of the request.
- */
-class CurlHandler
-{
-    /** @var CurlFactoryInterface */
-    private $factory;
-
-    /**
-     * Accepts an associative array of options:
-     *
-     * - factory: Optional curl factory used to create cURL handles.
-     *
-     * @param array $options Array of options to use with the handler
-     */
-    public function __construct(array $options = [])
-    {
-        $this->factory = isset($options['handle_factory'])
-            ? $options['handle_factory']
-            : new CurlFactory(3);
-    }
-
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        if (isset($options['delay'])) {
-            usleep($options['delay'] * 1000);
-        }
-
-        $easy = $this->factory->create($request, $options);
-        curl_exec($easy->handle);
-        $easy->errno = curl_errno($easy->handle);
-
-        return CurlFactory::finish($this, $easy, $this->factory);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
deleted file mode 100644
index 417850b..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
+++ /dev/null
@@ -1,197 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Promise as P;
-use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Returns an asynchronous response using curl_multi_* functions.
- *
- * When using the CurlMultiHandler, custom curl options can be specified as an
- * associative array of curl option constants mapping to values in the
- * **curl** key of the provided request options.
- *
- * @property resource $_mh Internal use only. Lazy loaded multi-handle.
- */
-class CurlMultiHandler
-{
-    /** @var CurlFactoryInterface */
-    private $factory;
-    private $selectTimeout;
-    private $active;
-    private $handles = [];
-    private $delays = [];
-
-    /**
-     * This handler accepts the following options:
-     *
-     * - handle_factory: An optional factory  used to create curl handles
-     * - select_timeout: Optional timeout (in seconds) to block before timing
-     *   out while selecting curl handles. Defaults to 1 second.
-     *
-     * @param array $options
-     */
-    public function __construct(array $options = [])
-    {
-        $this->factory = isset($options['handle_factory'])
-            ? $options['handle_factory'] : new CurlFactory(50);
-        $this->selectTimeout = isset($options['select_timeout'])
-            ? $options['select_timeout'] : 1;
-    }
-
-    public function __get($name)
-    {
-        if ($name === '_mh') {
-            return $this->_mh = curl_multi_init();
-        }
-
-        throw new \BadMethodCallException();
-    }
-
-    public function __destruct()
-    {
-        if (isset($this->_mh)) {
-            curl_multi_close($this->_mh);
-            unset($this->_mh);
-        }
-    }
-
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        $easy = $this->factory->create($request, $options);
-        $id = (int) $easy->handle;
-
-        $promise = new Promise(
-            [$this, 'execute'],
-            function () use ($id) { return $this->cancel($id); }
-        );
-
-        $this->addRequest(['easy' => $easy, 'deferred' => $promise]);
-
-        return $promise;
-    }
-
-    /**
-     * Ticks the curl event loop.
-     */
-    public function tick()
-    {
-        // Add any delayed handles if needed.
-        if ($this->delays) {
-            $currentTime = microtime(true);
-            foreach ($this->delays as $id => $delay) {
-                if ($currentTime >= $delay) {
-                    unset($this->delays[$id]);
-                    curl_multi_add_handle(
-                        $this->_mh,
-                        $this->handles[$id]['easy']->handle
-                    );
-                }
-            }
-        }
-
-        // Step through the task queue which may add additional requests.
-        P\queue()->run();
-
-        if ($this->active &&
-            curl_multi_select($this->_mh, $this->selectTimeout) === -1
-        ) {
-            // Perform a usleep if a select returns -1.
-            // See: https://bugs.php.net/bug.php?id=61141
-            usleep(250);
-        }
-
-        while (curl_multi_exec($this->_mh, $this->active) === CURLM_CALL_MULTI_PERFORM);
-
-        $this->processMessages();
-    }
-
-    /**
-     * Runs until all outstanding connections have completed.
-     */
-    public function execute()
-    {
-        $queue = P\queue();
-
-        while ($this->handles || !$queue->isEmpty()) {
-            // If there are no transfers, then sleep for the next delay
-            if (!$this->active && $this->delays) {
-                usleep($this->timeToNext());
-            }
-            $this->tick();
-        }
-    }
-
-    private function addRequest(array $entry)
-    {
-        $easy = $entry['easy'];
-        $id = (int) $easy->handle;
-        $this->handles[$id] = $entry;
-        if (empty($easy->options['delay'])) {
-            curl_multi_add_handle($this->_mh, $easy->handle);
-        } else {
-            $this->delays[$id] = microtime(true) + ($easy->options['delay'] / 1000);
-        }
-    }
-
-    /**
-     * Cancels a handle from sending and removes references to it.
-     *
-     * @param int $id Handle ID to cancel and remove.
-     *
-     * @return bool True on success, false on failure.
-     */
-    private function cancel($id)
-    {
-        // Cannot cancel if it has been processed.
-        if (!isset($this->handles[$id])) {
-            return false;
-        }
-
-        $handle = $this->handles[$id]['easy']->handle;
-        unset($this->delays[$id], $this->handles[$id]);
-        curl_multi_remove_handle($this->_mh, $handle);
-        curl_close($handle);
-
-        return true;
-    }
-
-    private function processMessages()
-    {
-        while ($done = curl_multi_info_read($this->_mh)) {
-            $id = (int) $done['handle'];
-            curl_multi_remove_handle($this->_mh, $done['handle']);
-
-            if (!isset($this->handles[$id])) {
-                // Probably was cancelled.
-                continue;
-            }
-
-            $entry = $this->handles[$id];
-            unset($this->handles[$id], $this->delays[$id]);
-            $entry['easy']->errno = $done['result'];
-            $entry['deferred']->resolve(
-                CurlFactory::finish(
-                    $this,
-                    $entry['easy'],
-                    $this->factory
-                )
-            );
-        }
-    }
-
-    private function timeToNext()
-    {
-        $currentTime = microtime(true);
-        $nextTime = PHP_INT_MAX;
-        foreach ($this->delays as $time) {
-            if ($time < $nextTime) {
-                $nextTime = $time;
-            }
-        }
-
-        return max(0, $currentTime - $nextTime);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
deleted file mode 100644
index c4b927e..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Psr7\Response;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Represents a cURL easy handle and the data it populates.
- *
- * @internal
- */
-final class EasyHandle
-{
-    /** @var resource cURL resource */
-    public $handle;
-
-    /** @var StreamInterface Where data is being written */
-    public $sink;
-
-    /** @var array Received HTTP headers so far */
-    public $headers = [];
-
-    /** @var ResponseInterface Received response (if any) */
-    public $response;
-
-    /** @var RequestInterface Request being sent */
-    public $request;
-
-    /** @var array Request options */
-    public $options = [];
-
-    /** @var int cURL error number (if any) */
-    public $errno = 0;
-
-    /** @var \Exception Exception during on_headers (if any) */
-    public $onHeadersException;
-
-    /**
-     * Attach a response to the easy handle based on the received headers.
-     *
-     * @throws \RuntimeException if no headers have been received.
-     */
-    public function createResponse()
-    {
-        if (empty($this->headers)) {
-            throw new \RuntimeException('No headers have been received');
-        }
-
-        // HTTP-version SP status-code SP reason-phrase
-        $startLine = explode(' ', array_shift($this->headers), 3);
-        $headers = \GuzzleHttp\headers_from_lines($this->headers);
-        $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
-
-        if (!empty($this->options['decode_content'])
-            && isset($normalizedKeys['content-encoding'])
-        ) {
-            unset($headers[$normalizedKeys['content-encoding']]);
-            if (isset($normalizedKeys['content-length'])) {
-                $bodyLength = (int) $this->sink->getSize();
-                if ($bodyLength) {
-                    $headers[$normalizedKeys['content-length']] = $bodyLength;
-                } else {
-                    unset($headers[$normalizedKeys['content-length']]);
-                }
-            }
-        }
-
-        // Attach a response to the easy handle with the parsed headers.
-        $this->response = new Response(
-            $startLine[1],
-            $headers,
-            $this->sink,
-            substr($startLine[0], 5),
-            isset($startLine[2]) ? (string) $startLine[2] : null
-        );
-    }
-
-    public function __get($name)
-    {
-        $msg = $name === 'handle'
-            ? 'The EasyHandle has been released'
-            : 'Invalid property: ' . $name;
-        throw new \BadMethodCallException($msg);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
deleted file mode 100644
index 4b1b0af..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\HandlerStack;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\TransferStats;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Handler that returns responses or throw exceptions from a queue.
- */
-class MockHandler implements \Countable
-{
-    private $queue;
-    private $lastRequest;
-    private $lastOptions;
-    private $onFulfilled;
-    private $onRejected;
-
-    /**
-     * Creates a new MockHandler that uses the default handler stack list of
-     * middlewares.
-     *
-     * @param array $queue Array of responses, callables, or exceptions.
-     * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
-     * @param callable $onRejected  Callback to invoke when the return value is rejected.
-     *
-     * @return MockHandler
-     */
-    public static function createWithMiddleware(
-        array $queue = null,
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        return HandlerStack::create(new self($queue, $onFulfilled, $onRejected));
-    }
-
-    /**
-     * The passed in value must be an array of
-     * {@see Psr7\Http\Message\ResponseInterface} objects, Exceptions,
-     * callables, or Promises.
-     *
-     * @param array $queue
-     * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
-     * @param callable $onRejected  Callback to invoke when the return value is rejected.
-     */
-    public function __construct(
-        array $queue = null,
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        $this->onFulfilled = $onFulfilled;
-        $this->onRejected = $onRejected;
-
-        if ($queue) {
-            call_user_func_array([$this, 'append'], $queue);
-        }
-    }
-
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        if (!$this->queue) {
-            throw new \OutOfBoundsException('Mock queue is empty');
-        }
-
-        if (isset($options['delay'])) {
-            usleep($options['delay'] * 1000);
-        }
-
-        $this->lastRequest = $request;
-        $this->lastOptions = $options;
-        $response = array_shift($this->queue);
-
-        if (is_callable($response)) {
-            $response = $response($request, $options);
-        }
-
-        $response = $response instanceof \Exception
-            ? new RejectedPromise($response)
-            : \GuzzleHttp\Promise\promise_for($response);
-
-        return $response->then(
-            function ($value) use ($request, $options) {
-                $this->invokeStats($request, $options, $value);
-                if ($this->onFulfilled) {
-                    call_user_func($this->onFulfilled, $value);
-                }
-                return $value;
-            },
-            function ($reason) use ($request, $options) {
-                $this->invokeStats($request, $options, null, $reason);
-                if ($this->onRejected) {
-                    call_user_func($this->onRejected, $reason);
-                }
-                return new RejectedPromise($reason);
-            }
-        );
-    }
-
-    /**
-     * Adds one or more variadic requests, exceptions, callables, or promises
-     * to the queue.
-     */
-    public function append()
-    {
-        foreach (func_get_args() as $value) {
-            if ($value instanceof ResponseInterface
-                || $value instanceof \Exception
-                || $value instanceof PromiseInterface
-                || is_callable($value)
-            ) {
-                $this->queue[] = $value;
-            } else {
-                throw new \InvalidArgumentException('Expected a response or '
-                    . 'exception. Found ' . \GuzzleHttp\describe_type($value));
-            }
-        }
-    }
-
-    /**
-     * Get the last received request.
-     *
-     * @return RequestInterface
-     */
-    public function getLastRequest()
-    {
-        return $this->lastRequest;
-    }
-
-    /**
-     * Get the last received request options.
-     *
-     * @return RequestInterface
-     */
-    public function getLastOptions()
-    {
-        return $this->lastOptions;
-    }
-
-    /**
-     * Returns the number of remaining items in the queue.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return count($this->queue);
-    }
-
-    private function invokeStats(
-        RequestInterface $request,
-        array $options,
-        ResponseInterface $response = null,
-        $reason = null
-    ) {
-        if (isset($options['on_stats'])) {
-            $stats = new TransferStats($request, $response, 0, $reason);
-            call_user_func($options['on_stats'], $stats);
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
deleted file mode 100644
index 9bd76d2..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Provides basic proxies for handlers.
- */
-class Proxy
-{
-    /**
-     * Sends synchronous requests to a specific handler while sending all other
-     * requests to another handler.
-     *
-     * @param callable $default Handler used for normal responses
-     * @param callable $sync    Handler used for synchronous responses.
-     *
-     * @return callable Returns the composed handler.
-     */
-    public static function wrapSync(
-        callable $default,
-        callable $sync
-    ) {
-        return function (RequestInterface $request, array $options) use ($default, $sync) {
-            return empty($options['sync'])
-                ? $default($request, $options)
-                : $sync($request, $options);
-        };
-    }
-
-    /**
-     * Sends streaming requests to a streaming compatible handler while sending
-     * all other requests to a default handler.
-     *
-     * This, for example, could be useful for taking advantage of the
-     * performance benefits of curl while still supporting true streaming
-     * through the StreamHandler.
-     *
-     * @param callable $default   Handler used for non-streaming responses
-     * @param callable $streaming Handler used for streaming responses
-     *
-     * @return callable Returns the composed handler.
-     */
-    public static function wrapStreaming(
-        callable $default,
-        callable $streaming
-    ) {
-        return function (RequestInterface $request, array $options) use ($default, $streaming) {
-            return empty($options['stream'])
-                ? $default($request, $options)
-                : $streaming($request, $options);
-        };
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
deleted file mode 100644
index 2f18a48..0000000
--- a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
+++ /dev/null
@@ -1,456 +0,0 @@
-<?php
-namespace GuzzleHttp\Handler;
-
-use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Exception\ConnectException;
-use GuzzleHttp\Promise\FulfilledPromise;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
-use GuzzleHttp\TransferStats;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * HTTP handler that uses PHP's HTTP stream wrapper.
- */
-class StreamHandler
-{
-    private $lastHeaders = [];
-
-    /**
-     * Sends an HTTP request.
-     *
-     * @param RequestInterface $request Request to send.
-     * @param array            $options Request transfer options.
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        // Sleep if there is a delay specified.
-        if (isset($options['delay'])) {
-            usleep($options['delay'] * 1000);
-        }
-
-        $startTime = isset($options['on_stats']) ? microtime(true) : null;
-
-        try {
-            // Does not support the expect header.
-            $request = $request->withoutHeader('Expect');
-
-            // Append a content-length header if body size is zero to match
-            // cURL's behavior.
-            if (0 === $request->getBody()->getSize()) {
-                $request = $request->withHeader('Content-Length', 0);
-            }
-
-            return $this->createResponse(
-                $request,
-                $options,
-                $this->createStream($request, $options),
-                $startTime
-            );
-        } catch (\InvalidArgumentException $e) {
-            throw $e;
-        } catch (\Exception $e) {
-            // Determine if the error was a networking error.
-            $message = $e->getMessage();
-            // This list can probably get more comprehensive.
-            if (strpos($message, 'getaddrinfo') // DNS lookup failed
-                || strpos($message, 'Connection refused')
-                || strpos($message, "couldn't connect to host") // error on HHVM
-            ) {
-                $e = new ConnectException($e->getMessage(), $request, $e);
-            }
-            $e = RequestException::wrapException($request, $e);
-            $this->invokeStats($options, $request, $startTime, null, $e);
-
-            return new RejectedPromise($e);
-        }
-    }
-
-    private function invokeStats(
-        array $options,
-        RequestInterface $request,
-        $startTime,
-        ResponseInterface $response = null,
-        $error = null
-    ) {
-        if (isset($options['on_stats'])) {
-            $stats = new TransferStats(
-                $request,
-                $response,
-                microtime(true) - $startTime,
-                $error,
-                []
-            );
-            call_user_func($options['on_stats'], $stats);
-        }
-    }
-
-    private function createResponse(
-        RequestInterface $request,
-        array $options,
-        $stream,
-        $startTime
-    ) {
-        $hdrs = $this->lastHeaders;
-        $this->lastHeaders = [];
-        $parts = explode(' ', array_shift($hdrs), 3);
-        $ver = explode('/', $parts[0])[1];
-        $status = $parts[1];
-        $reason = isset($parts[2]) ? $parts[2] : null;
-        $headers = \GuzzleHttp\headers_from_lines($hdrs);
-        list ($stream, $headers) = $this->checkDecode($options, $headers, $stream);
-        $stream = Psr7\stream_for($stream);
-        $sink = $this->createSink($stream, $options);
-        $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
-
-        if (isset($options['on_headers'])) {
-            try {
-                $options['on_headers']($response);
-            } catch (\Exception $e) {
-                $msg = 'An error was encountered during the on_headers event';
-                $ex = new RequestException($msg, $request, $response, $e);
-                return new RejectedPromise($ex);
-            }
-        }
-
-        if ($sink !== $stream) {
-            $this->drain($stream, $sink);
-        }
-
-        $this->invokeStats($options, $request, $startTime, $response, null);
-
-        return new FulfilledPromise($response);
-    }
-
-    private function createSink(StreamInterface $stream, array $options)
-    {
-        if (!empty($options['stream'])) {
-            return $stream;
-        }
-
-        $sink = isset($options['sink'])
-            ? $options['sink']
-            : fopen('php://temp', 'r+');
-
-        return is_string($sink)
-            ? new Psr7\Stream(Psr7\try_fopen($sink, 'r+'))
-            : Psr7\stream_for($sink);
-    }
-
-    private function checkDecode(array $options, array $headers, $stream)
-    {
-        // Automatically decode responses when instructed.
-        if (!empty($options['decode_content'])) {
-            $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
-            if (isset($normalizedKeys['content-encoding'])) {
-                $encoding = $headers[$normalizedKeys['content-encoding']];
-                if ($encoding[0] == 'gzip' || $encoding[0] == 'deflate') {
-                    $stream = new Psr7\InflateStream(
-                        Psr7\stream_for($stream)
-                    );
-                    // Remove content-encoding header
-                    unset($headers[$normalizedKeys['content-encoding']]);
-                    // Fix content-length header
-                    if (isset($normalizedKeys['content-length'])) {
-                        $length = (int) $stream->getSize();
-                        if ($length == 0) {
-                            unset($headers[$normalizedKeys['content-length']]);
-                        } else {
-                            $headers[$normalizedKeys['content-length']] = [$length];
-                        }
-                    }
-                }
-            }
-        }
-
-        return [$stream, $headers];
-    }
-
-    /**
-     * Drains the source stream into the "sink" client option.
-     *
-     * @param StreamInterface $source
-     * @param StreamInterface $sink
-     *
-     * @return StreamInterface
-     * @throws \RuntimeException when the sink option is invalid.
-     */
-    private function drain(StreamInterface $source, StreamInterface $sink)
-    {
-        Psr7\copy_to_stream($source, $sink);
-        $sink->seek(0);
-        $source->close();
-
-        return $sink;
-    }
-
-    /**
-     * Create a resource and check to ensure it was created successfully
-     *
-     * @param callable $callback Callable that returns stream resource
-     *
-     * @return resource
-     * @throws \RuntimeException on error
-     */
-    private function createResource(callable $callback)
-    {
-        $errors = null;
-        set_error_handler(function ($_, $msg, $file, $line) use (&$errors) {
-            $errors[] = [
-                'message' => $msg,
-                'file'    => $file,
-                'line'    => $line
-            ];
-            return true;
-        });
-
-        $resource = $callback();
-        restore_error_handler();
-
-        if (!$resource) {
-            $message = 'Error creating resource: ';
-            foreach ($errors as $err) {
-                foreach ($err as $key => $value) {
-                    $message .= "[$key] $value" . PHP_EOL;
-                }
-            }
-            throw new \RuntimeException(trim($message));
-        }
-
-        return $resource;
-    }
-
-    private function createStream(RequestInterface $request, array $options)
-    {
-        static $methods;
-        if (!$methods) {
-            $methods = array_flip(get_class_methods(__CLASS__));
-        }
-
-        // HTTP/1.1 streams using the PHP stream wrapper require a
-        // Connection: close header
-        if ($request->getProtocolVersion() == '1.1'
-            && !$request->hasHeader('Connection')
-        ) {
-            $request = $request->withHeader('Connection', 'close');
-        }
-
-        // Ensure SSL is verified by default
-        if (!isset($options['verify'])) {
-            $options['verify'] = true;
-        }
-
-        $params = [];
-        $context = $this->getDefaultContext($request, $options);
-
-        if (isset($options['on_headers']) && !is_callable($options['on_headers'])) {
-            throw new \InvalidArgumentException('on_headers must be callable');
-        }
-
-        if (!empty($options)) {
-            foreach ($options as $key => $value) {
-                $method = "add_{$key}";
-                if (isset($methods[$method])) {
-                    $this->{$method}($request, $context, $value, $params);
-                }
-            }
-        }
-
-        if (isset($options['stream_context'])) {
-            if (!is_array($options['stream_context'])) {
-                throw new \InvalidArgumentException('stream_context must be an array');
-            }
-            $context = array_replace_recursive(
-                $context,
-                $options['stream_context']
-            );
-        }
-
-        $context = $this->createResource(
-            function () use ($context, $params) {
-                return stream_context_create($context, $params);
-            }
-        );
-
-        return $this->createResource(
-            function () use ($request, &$http_response_header, $context) {
-                $resource = fopen($request->getUri(), 'r', null, $context);
-                $this->lastHeaders = $http_response_header;
-                return $resource;
-            }
-        );
-    }
-
-    private function getDefaultContext(RequestInterface $request)
-    {
-        $headers = '';
-        foreach ($request->getHeaders() as $name => $value) {
-            foreach ($value as $val) {
-                $headers .= "$name: $val\r\n";
-            }
-        }
-
-        $context = [
-            'http' => [
-                'method'           => $request->getMethod(),
-                'header'           => $headers,
-                'protocol_version' => $request->getProtocolVersion(),
-                'ignore_errors'    => true,
-                'follow_location'  => 0,
-            ],
-        ];
-
-        $body = (string) $request->getBody();
-
-        if (!empty($body)) {
-            $context['http']['content'] = $body;
-            // Prevent the HTTP handler from adding a Content-Type header.
-            if (!$request->hasHeader('Content-Type')) {
-                $context['http']['header'] .= "Content-Type:\r\n";
-            }
-        }
-
-        $context['http']['header'] = rtrim($context['http']['header']);
-
-        return $context;
-    }
-
-    private function add_proxy(RequestInterface $request, &$options, $value, &$params)
-    {
-        if (!is_array($value)) {
-            $options['http']['proxy'] = $value;
-        } else {
-            $scheme = $request->getUri()->getScheme();
-            if (isset($value[$scheme])) {
-                if (!isset($value['no'])
-                    || !\GuzzleHttp\is_host_in_noproxy(
-                        $request->getUri()->getHost(),
-                        $value['no']
-                    )
-                ) {
-                    $options['http']['proxy'] = $value[$scheme];
-                }
-            }
-        }
-    }
-
-    private function add_timeout(RequestInterface $request, &$options, $value, &$params)
-    {
-        $options['http']['timeout'] = $value;
-    }
-
-    private function add_verify(RequestInterface $request, &$options, $value, &$params)
-    {
-        if ($value === true) {
-            // PHP 5.6 or greater will find the system cert by default. When
-            // < 5.6, use the Guzzle bundled cacert.
-            if (PHP_VERSION_ID < 50600) {
-                $options['ssl']['cafile'] = \GuzzleHttp\default_ca_bundle();
-            }
-        } elseif (is_string($value)) {
-            $options['ssl']['cafile'] = $value;
-            if (!file_exists($value)) {
-                throw new \RuntimeException("SSL CA bundle not found: $value");
-            }
-        } elseif ($value === false) {
-            $options['ssl']['verify_peer'] = false;
-            return;
-        } else {
-            throw new \InvalidArgumentException('Invalid verify request option');
-        }
-
-        $options['ssl']['verify_peer'] = true;
-        $options['ssl']['allow_self_signed'] = false;
-    }
-
-    private function add_cert(RequestInterface $request, &$options, $value, &$params)
-    {
-        if (is_array($value)) {
-            $options['ssl']['passphrase'] = $value[1];
-            $value = $value[0];
-        }
-
-        if (!file_exists($value)) {
-            throw new \RuntimeException("SSL certificate not found: {$value}");
-        }
-
-        $options['ssl']['local_cert'] = $value;
-    }
-
-    private function add_progress(RequestInterface $request, &$options, $value, &$params)
-    {
-        $this->addNotification(
-            $params,
-            function ($code, $a, $b, $c, $transferred, $total) use ($value) {
-                if ($code == STREAM_NOTIFY_PROGRESS) {
-                    $value($total, $transferred, null, null);
-                }
-            }
-        );
-    }
-
-    private function add_debug(RequestInterface $request, &$options, $value, &$params)
-    {
-        if ($value === false) {
-            return;
-        }
-
-        static $map = [
-            STREAM_NOTIFY_CONNECT       => 'CONNECT',
-            STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED',
-            STREAM_NOTIFY_AUTH_RESULT   => 'AUTH_RESULT',
-            STREAM_NOTIFY_MIME_TYPE_IS  => 'MIME_TYPE_IS',
-            STREAM_NOTIFY_FILE_SIZE_IS  => 'FILE_SIZE_IS',
-            STREAM_NOTIFY_REDIRECTED    => 'REDIRECTED',
-            STREAM_NOTIFY_PROGRESS      => 'PROGRESS',
-            STREAM_NOTIFY_FAILURE       => 'FAILURE',
-            STREAM_NOTIFY_COMPLETED     => 'COMPLETED',
-            STREAM_NOTIFY_RESOLVE       => 'RESOLVE',
-        ];
-        static $args = ['severity', 'message', 'message_code',
-            'bytes_transferred', 'bytes_max'];
-
-        $value = \GuzzleHttp\debug_resource($value);
-        $ident = $request->getMethod() . ' ' . $request->getUri();
-        $this->addNotification(
-            $params,
-            function () use ($ident, $value, $map, $args) {
-                $passed = func_get_args();
-                $code = array_shift($passed);
-                fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
-                foreach (array_filter($passed) as $i => $v) {
-                    fwrite($value, $args[$i] . ': "' . $v . '" ');
-                }
-                fwrite($value, "\n");
-            }
-        );
-    }
-
-    private function addNotification(array &$params, callable $notify)
-    {
-        // Wrap the existing function if needed.
-        if (!isset($params['notification'])) {
-            $params['notification'] = $notify;
-        } else {
-            $params['notification'] = $this->callArray([
-                $params['notification'],
-                $notify
-            ]);
-        }
-    }
-
-    private function callArray(array $functions)
-    {
-        return function () use ($functions) {
-            $args = func_get_args();
-            foreach ($functions as $fn) {
-                call_user_func_array($fn, $args);
-            }
-        };
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/vendor/guzzlehttp/guzzle/src/HandlerStack.php
deleted file mode 100644
index f851849..0000000
--- a/vendor/guzzlehttp/guzzle/src/HandlerStack.php
+++ /dev/null
@@ -1,272 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Creates a composed Guzzle handler function by stacking middlewares on top of
- * an HTTP handler function.
- */
-class HandlerStack
-{
-    /** @var callable */
-    private $handler;
-
-    /** @var array */
-    private $stack = [];
-
-    /** @var callable|null */
-    private $cached;
-
-    /**
-     * Creates a default handler stack that can be used by clients.
-     *
-     * The returned handler will wrap the provided handler or use the most
-     * appropriate default handler for you system. The returned HandlerStack has
-     * support for cookies, redirects, HTTP error exceptions, and preparing a body
-     * before sending.
-     *
-     * The returned handler stack can be passed to a client in the "handler"
-     * option.
-     *
-     * @param callable $handler HTTP handler function to use with the stack. If no
-     *                          handler is provided, the best handler for your
-     *                          system will be utilized.
-     *
-     * @return HandlerStack
-     */
-    public static function create(callable $handler = null)
-    {
-        $stack = new self($handler ?: choose_handler());
-        $stack->push(Middleware::httpErrors(), 'http_errors');
-        $stack->push(Middleware::redirect(), 'allow_redirects');
-        $stack->push(Middleware::cookies(), 'cookies');
-        $stack->push(Middleware::prepareBody(), 'prepare_body');
-
-        return $stack;
-    }
-
-    /**
-     * @param callable $handler Underlying HTTP handler.
-     */
-    public function __construct(callable $handler = null)
-    {
-        $this->handler = $handler;
-    }
-
-    /**
-     * Invokes the handler stack as a composed handler
-     *
-     * @param RequestInterface $request
-     * @param array            $options
-     */
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        if (!$this->cached) {
-            $this->cached = $this->resolve();
-        }
-
-        $handler = $this->cached;
-        return $handler($request, $options);
-    }
-
-    /**
-     * Dumps a string representation of the stack.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        $depth = 0;
-        $stack = [];
-        if ($this->handler) {
-            $stack[] = "0) Handler: " . $this->debugCallable($this->handler);
-        }
-
-        $result = '';
-        foreach (array_reverse($this->stack) as $tuple) {
-            $depth++;
-            $str = "{$depth}) Name: '{$tuple[1]}', ";
-            $str .= "Function: " . $this->debugCallable($tuple[0]);
-            $result = "> {$str}\n{$result}";
-            $stack[] = $str;
-        }
-
-        foreach (array_keys($stack) as $k) {
-            $result .= "< {$stack[$k]}\n";
-        }
-
-        return $result;
-    }
-
-    /**
-     * Set the HTTP handler that actually returns a promise.
-     *
-     * @param callable $handler Accepts a request and array of options and
-     *                          returns a Promise.
-     */
-    public function setHandler(callable $handler)
-    {
-        $this->handler = $handler;
-        $this->cached = null;
-    }
-
-    /**
-     * Returns true if the builder has a handler.
-     *
-     * @return bool
-     */
-    public function hasHandler()
-    {
-        return (bool) $this->handler;
-    }
-
-    /**
-     * Unshift a middleware to the bottom of the stack.
-     *
-     * @param callable $middleware Middleware function
-     * @param string   $name       Name to register for this middleware.
-     */
-    public function unshift(callable $middleware, $name = null)
-    {
-        array_unshift($this->stack, [$middleware, $name]);
-        $this->cached = null;
-    }
-
-    /**
-     * Push a middleware to the top of the stack.
-     *
-     * @param callable $middleware Middleware function
-     * @param string   $name       Name to register for this middleware.
-     */
-    public function push(callable $middleware, $name = '')
-    {
-        $this->stack[] = [$middleware, $name];
-        $this->cached = null;
-    }
-
-    /**
-     * Add a middleware before another middleware by name.
-     *
-     * @param string   $findName   Middleware to find
-     * @param callable $middleware Middleware function
-     * @param string   $withName   Name to register for this middleware.
-     */
-    public function before($findName, callable $middleware, $withName = '')
-    {
-        $this->splice($findName, $withName, $middleware, true);
-    }
-
-    /**
-     * Add a middleware after another middleware by name.
-     *
-     * @param string   $findName   Middleware to find
-     * @param callable $middleware Middleware function
-     * @param string   $withName   Name to register for this middleware.
-     */
-    public function after($findName, callable $middleware, $withName = '')
-    {
-        $this->splice($findName, $withName, $middleware, false);
-    }
-
-    /**
-     * Remove a middleware by instance or name from the stack.
-     *
-     * @param callable|string $remove Middleware to remove by instance or name.
-     */
-    public function remove($remove)
-    {
-        $this->cached = null;
-        $idx = is_callable($remove) ? 0 : 1;
-        $this->stack = array_values(array_filter(
-            $this->stack,
-            function ($tuple) use ($idx, $remove) {
-                return $tuple[$idx] !== $remove;
-            }
-        ));
-    }
-
-    /**
-     * Compose the middleware and handler into a single callable function.
-     *
-     * @return callable
-     */
-    public function resolve()
-    {
-        if (!($prev = $this->handler)) {
-            throw new \LogicException('No handler has been specified');
-        }
-
-        foreach (array_reverse($this->stack) as $fn) {
-            $prev = $fn[0]($prev);
-        }
-
-        return $prev;
-    }
-
-    /**
-     * @param $name
-     * @return int
-     */
-    private function findByName($name)
-    {
-        foreach ($this->stack as $k => $v) {
-            if ($v[1] === $name) {
-                return $k;
-            }
-        }
-
-        throw new \InvalidArgumentException("Middleware not found: $name");
-    }
-
-    /**
-     * Splices a function into the middleware list at a specific position.
-     *
-     * @param          $findName
-     * @param          $withName
-     * @param callable $middleware
-     * @param          $before
-     */
-    private function splice($findName, $withName, callable $middleware, $before)
-    {
-        $this->cached = null;
-        $idx = $this->findByName($findName);
-        $tuple = [$middleware, $withName];
-
-        if ($before) {
-            if ($idx === 0) {
-                array_unshift($this->stack, $tuple);
-            } else {
-                $replacement = [$tuple, $this->stack[$idx]];
-                array_splice($this->stack, $idx, 1, $replacement);
-            }
-        } elseif ($idx === count($this->stack) - 1) {
-            $this->stack[] = $tuple;
-        } else {
-            $replacement = [$this->stack[$idx], $tuple];
-            array_splice($this->stack, $idx, 1, $replacement);
-        }
-    }
-
-    /**
-     * Provides a debug string for a given callable.
-     *
-     * @param array|callable $fn Function to write as a string.
-     *
-     * @return string
-     */
-    private function debugCallable($fn)
-    {
-        if (is_string($fn)) {
-            return "callable({$fn})";
-        }
-
-        if (is_array($fn)) {
-            return is_string($fn[0])
-                ? "callable({$fn[0]}::{$fn[1]})"
-                : "callable(['" . get_class($fn[0]) . "', '{$fn[1]}'])";
-        }
-
-        return 'callable(' . spl_object_hash($fn) . ')';
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
deleted file mode 100644
index 6b090a9..0000000
--- a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use Psr\Http\Message\MessageInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Formats log messages using variable substitutions for requests, responses,
- * and other transactional data.
- *
- * The following variable substitutions are supported:
- *
- * - {request}:        Full HTTP request message
- * - {response}:       Full HTTP response message
- * - {ts}:             ISO 8601 date in GMT
- * - {date_iso_8601}   ISO 8601 date in GMT
- * - {date_common_log} Apache common log date using the configured timezone.
- * - {host}:           Host of the request
- * - {method}:         Method of the request
- * - {uri}:            URI of the request
- * - {host}:           Host of the request
- * - {version}:        Protocol version
- * - {target}:         Request target of the request (path + query + fragment)
- * - {hostname}:       Hostname of the machine that sent the request
- * - {code}:           Status code of the response (if available)
- * - {phrase}:         Reason phrase of the response  (if available)
- * - {error}:          Any error messages (if available)
- * - {req_header_*}:   Replace `*` with the lowercased name of a request header to add to the message
- * - {res_header_*}:   Replace `*` with the lowercased name of a response header to add to the message
- * - {req_headers}:    Request headers
- * - {res_headers}:    Response headers
- * - {req_body}:       Request body
- * - {res_body}:       Response body
- */
-class MessageFormatter
-{
-    /**
-     * Apache Common Log Format.
-     * @link http://httpd.apache.org/docs/2.4/logs.html#common
-     * @var string
-     */
-    const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
-    const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
-    const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
-
-    /** @var string Template used to format log messages */
-    private $template;
-
-    /**
-     * @param string $template Log message template
-     */
-    public function __construct($template = self::CLF)
-    {
-        $this->template = $template ?: self::CLF;
-    }
-
-    /**
-     * Returns a formatted message string.
-     *
-     * @param RequestInterface  $request  Request that was sent
-     * @param ResponseInterface $response Response that was received
-     * @param \Exception        $error    Exception that was received
-     *
-     * @return string
-     */
-    public function format(
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $error = null
-    ) {
-        $cache = [];
-
-        return preg_replace_callback(
-            '/{\s*([A-Za-z_\-\.0-9]+)\s*}/',
-            function (array $matches) use ($request, $response, $error, &$cache) {
-
-                if (isset($cache[$matches[1]])) {
-                    return $cache[$matches[1]];
-                }
-
-                $result = '';
-                switch ($matches[1]) {
-                    case 'request':
-                        $result = Psr7\str($request);
-                        break;
-                    case 'response':
-                        $result = $response ? Psr7\str($response) : '';
-                        break;
-                    case 'req_headers':
-                        $result = trim($request->getMethod()
-                                . ' ' . $request->getRequestTarget())
-                            . ' HTTP/' . $request->getProtocolVersion() . "\r\n"
-                            . $this->headers($request);
-                        break;
-                    case 'res_headers':
-                        $result = $response ?
-                            sprintf(
-                                'HTTP/%s %d %s',
-                                $response->getProtocolVersion(),
-                                $response->getStatusCode(),
-                                $response->getReasonPhrase()
-                            ) . "\r\n" . $this->headers($response)
-                            : 'NULL';
-                        break;
-                    case 'req_body':
-                        $result = $request->getBody();
-                        break;
-                    case 'res_body':
-                        $result = $response ? $response->getBody() : 'NULL';
-                        break;
-                    case 'ts':
-                    case 'date_iso_8601':
-                        $result = gmdate('c');
-                        break;
-                    case 'date_common_log':
-                        $result = date('d/M/Y:H:i:s O');
-                        break;
-                    case 'method':
-                        $result = $request->getMethod();
-                        break;
-                    case 'version':
-                        $result = $request->getProtocolVersion();
-                        break;
-                    case 'uri':
-                    case 'url':
-                        $result = $request->getUri();
-                        break;
-                    case 'target':
-                        $result = $request->getRequestTarget();
-                        break;
-                    case 'req_version':
-                        $result = $request->getProtocolVersion();
-                        break;
-                    case 'res_version':
-                        $result = $response
-                            ? $response->getProtocolVersion()
-                            : 'NULL';
-                        break;
-                    case 'host':
-                        $result = $request->getHeaderLine('Host');
-                        break;
-                    case 'hostname':
-                        $result = gethostname();
-                        break;
-                    case 'code':
-                        $result = $response ? $response->getStatusCode() : 'NULL';
-                        break;
-                    case 'phrase':
-                        $result = $response ? $response->getReasonPhrase() : 'NULL';
-                        break;
-                    case 'error':
-                        $result = $error ? $error->getMessage() : 'NULL';
-                        break;
-                    default:
-                        // handle prefixed dynamic headers
-                        if (strpos($matches[1], 'req_header_') === 0) {
-                            $result = $request->getHeaderLine(substr($matches[1], 11));
-                        } elseif (strpos($matches[1], 'res_header_') === 0) {
-                            $result = $response
-                                ? $response->getHeaderLine(substr($matches[1], 11))
-                                : 'NULL';
-                        }
-                }
-
-                $cache[$matches[1]] = $result;
-                return $result;
-            },
-            $this->template
-        );
-    }
-
-    private function headers(MessageInterface $message)
-    {
-        $result = '';
-        foreach ($message->getHeaders() as $name => $values) {
-            $result .= $name . ': ' . implode(', ', $values) . "\r\n";
-        }
-
-        return trim($result);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Middleware.php b/vendor/guzzlehttp/guzzle/src/Middleware.php
deleted file mode 100644
index 2f165f3..0000000
--- a/vendor/guzzlehttp/guzzle/src/Middleware.php
+++ /dev/null
@@ -1,253 +0,0 @@
-<?php
-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;
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-
-/**
- * Functions used to create and wrap handlers with handler middleware.
- */
-final class Middleware
-{
-    /**
-     * Middleware that adds cookies to requests.
-     *
-     * The options array must be set to a CookieJarInterface in order to use
-     * cookies. This is typically handled for you by a client.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function cookies()
-    {
-        return function (callable $handler) {
-            return function ($request, array $options) use ($handler) {
-                if (empty($options['cookies'])) {
-                    return $handler($request, $options);
-                } elseif (!($options['cookies'] instanceof CookieJarInterface)) {
-                    throw new \InvalidArgumentException('cookies must be an instance of GuzzleHttp\Cookie\CookieJarInterface');
-                }
-                $cookieJar = $options['cookies'];
-                $request = $cookieJar->withCookieHeader($request);
-                return $handler($request, $options)
-                    ->then(function ($response) use ($cookieJar, $request) {
-                        $cookieJar->extractCookies($request, $response);
-                        return $response;
-                    }
-                );
-            };
-        };
-    }
-
-    /**
-     * Middleware that throws exceptions for 4xx or 5xx responses when the
-     * "http_error" request option is set to true.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function httpErrors()
-    {
-        return function (callable $handler) {
-            return function ($request, array $options) use ($handler) {
-                if (empty($options['http_errors'])) {
-                    return $handler($request, $options);
-                }
-                return $handler($request, $options)->then(
-                    function (ResponseInterface $response) use ($request, $handler) {
-                        $code = $response->getStatusCode();
-                        if ($code < 400) {
-                            return $response;
-                        }
-                        throw $code > 499
-                            ? new ServerException("Server error: $code", $request, $response)
-                            : new ClientException("Client error: $code", $request, $response);
-                    }
-                );
-            };
-        };
-    }
-
-    /**
-     * Middleware that pushes history data to an ArrayAccess container.
-     *
-     * @param array $container Container to hold the history (by reference).
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function history(array &$container)
-    {
-        return function (callable $handler) use (&$container) {
-            return function ($request, array $options) use ($handler, &$container) {
-                return $handler($request, $options)->then(
-                    function ($value) use ($request, &$container, $options) {
-                        $container[] = [
-                            'request'  => $request,
-                            'response' => $value,
-                            'error'    => null,
-                            'options'  => $options
-                        ];
-                        return $value;
-                    },
-                    function ($reason) use ($request, &$container, $options) {
-                        $container[] = [
-                            'request'  => $request,
-                            'response' => null,
-                            'error'    => $reason,
-                            'options'  => $options
-                        ];
-                        return new RejectedPromise($reason);
-                    }
-                );
-            };
-        };
-    }
-
-    /**
-     * Middleware that invokes a callback before and after sending a request.
-     *
-     * The provided listener cannot modify or alter the response. It simply
-     * "taps" into the chain to be notified before returning the promise. The
-     * before listener accepts a request and options array, and the after
-     * listener accepts a request, options array, and response promise.
-     *
-     * @param callable $before Function to invoke before forwarding the request.
-     * @param callable $after  Function invoked after forwarding.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function tap(callable $before = null, callable $after = null)
-    {
-        return function (callable $handler) use ($before, $after) {
-            return function ($request, array $options) use ($handler, $before, $after) {
-                if ($before) {
-                    $before($request, $options);
-                }
-                $response = $handler($request, $options);
-                if ($after) {
-                    $after($request, $options, $response);
-                }
-                return $response;
-            };
-        };
-    }
-
-    /**
-     * Middleware that handles request redirects.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function redirect()
-    {
-        return function (callable $handler) {
-            return new RedirectMiddleware($handler);
-        };
-    }
-
-    /**
-     * Middleware that retries requests based on the boolean result of
-     * invoking the provided "decider" function.
-     *
-     * If no delay function is provided, a simple implementation of exponential
-     * backoff will be utilized.
-     *
-     * @param callable $decider Function that accepts the number of retries,
-     *                          a request, [response], and [exception] and
-     *                          returns true if the request is to be retried.
-     * @param callable $delay   Function that accepts the number of retries and
-     *                          returns the number of milliseconds to delay.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function retry(callable $decider, callable $delay = null)
-    {
-        return function (callable $handler) use ($decider, $delay) {
-            return new RetryMiddleware($decider, $handler, $delay);
-        };
-    }
-
-    /**
-     * Middleware that logs requests, responses, and errors using a message
-     * formatter.
-     *
-     * @param LoggerInterface  $logger Logs messages.
-     * @param MessageFormatter $formatter Formatter used to create message strings.
-     * @param string           $logLevel Level at which to log requests.
-     *
-     * @return callable Returns a function that accepts the next handler.
-     */
-    public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = LogLevel::INFO)
-    {
-        return function (callable $handler) use ($logger, $formatter, $logLevel) {
-            return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
-                return $handler($request, $options)->then(
-                    function ($response) use ($logger, $request, $formatter, $logLevel) {
-                        $message = $formatter->format($request, $response);
-                        $logger->log($logLevel, $message);
-                        return $response;
-                    },
-                    function ($reason) use ($logger, $request, $formatter) {
-                        $response = $reason instanceof RequestException
-                            ? $reason->getResponse()
-                            : null;
-                        $message = $formatter->format($request, $response, $reason);
-                        $logger->notice($message);
-                        return \GuzzleHttp\Promise\rejection_for($reason);
-                    }
-                );
-            };
-        };
-    }
-
-    /**
-     * This middleware adds a default content-type if possible, a default
-     * content-length or transfer-encoding header, and the expect header.
-     *
-     * @return callable
-     */
-    public static function prepareBody()
-    {
-        return function (callable $handler) {
-            return new PrepareBodyMiddleware($handler);
-        };
-    }
-
-    /**
-     * Middleware that applies a map function to the request before passing to
-     * the next handler.
-     *
-     * @param callable $fn Function that accepts a RequestInterface and returns
-     *                     a RequestInterface.
-     * @return callable
-     */
-    public static function mapRequest(callable $fn)
-    {
-        return function (callable $handler) use ($fn) {
-            return function ($request, array $options) use ($handler, $fn) {
-                return $handler($fn($request), $options);
-            };
-        };
-    }
-
-    /**
-     * Middleware that applies a map function to the resolved promise's
-     * response.
-     *
-     * @param callable $fn Function that accepts a ResponseInterface and
-     *                     returns a ResponseInterface.
-     * @return callable
-     */
-    public static function mapResponse(callable $fn)
-    {
-        return function (callable $handler) use ($fn) {
-            return function ($request, array $options) use ($handler, $fn) {
-                return $handler($request, $options)->then($fn);
-            };
-        };
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/Pool.php b/vendor/guzzlehttp/guzzle/src/Pool.php
deleted file mode 100644
index bc41d6e..0000000
--- a/vendor/guzzlehttp/guzzle/src/Pool.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\PromisorInterface;
-use Psr\Http\Message\RequestInterface;
-use GuzzleHttp\Promise\EachPromise;
-
-/**
- * Sends and iterator of requests concurrently using a capped pool size.
- *
- * The pool will read from an iterator until it is cancelled or until the
- * iterator is consumed. When a request is yielded, the request is sent after
- * applying the "request_options" request options (if provided in the ctor).
- *
- * When a function is yielded by the iterator, the function is provided the
- * "request_options" array that should be merged on top of any existing
- * options, and the function MUST then return a wait-able promise.
- */
-class Pool implements PromisorInterface
-{
-    /** @var EachPromise */
-    private $each;
-
-    /**
-     * @param ClientInterface $client   Client used to send the requests.
-     * @param array|\Iterator $requests Requests or functions that return
-     *                                  requests to send concurrently.
-     * @param array           $config   Associative array of options
-     *     - concurrency: (int) Maximum number of requests to send concurrently
-     *     - options: Array of request options to apply to each request.
-     *     - fulfilled: (callable) Function to invoke when a request completes.
-     *     - rejected: (callable) Function to invoke when a request is rejected.
-     */
-    public function __construct(
-        ClientInterface $client,
-        $requests,
-        array $config = []
-    ) {
-        // Backwards compatibility.
-        if (isset($config['pool_size'])) {
-            $config['concurrency'] = $config['pool_size'];
-        } elseif (!isset($config['concurrency'])) {
-            $config['concurrency'] = 25;
-        }
-
-        if (isset($config['options'])) {
-            $opts = $config['options'];
-            unset($config['options']);
-        } else {
-            $opts = [];
-        }
-
-        $iterable = \GuzzleHttp\Promise\iter_for($requests);
-        $requests = function () use ($iterable, $client, $opts) {
-            foreach ($iterable as $rfn) {
-                if ($rfn instanceof RequestInterface) {
-                    yield $client->sendAsync($rfn, $opts);
-                } elseif (is_callable($rfn)) {
-                    yield $rfn($opts);
-                } else {
-                    throw new \InvalidArgumentException('Each value yielded by '
-                        . 'the iterator must be a Psr7\Http\Message\RequestInterface '
-                        . 'or a callable that returns a promise that fulfills '
-                        . 'with a Psr7\Message\Http\ResponseInterface object.');
-                }
-            }
-        };
-
-        $this->each = new EachPromise($requests(), $config);
-    }
-
-    public function promise()
-    {
-        return $this->each->promise();
-    }
-
-    /**
-     * Sends multiple requests concurrently and returns an array of responses
-     * and exceptions that uses the same ordering as the provided requests.
-     *
-     * IMPORTANT: This method keeps every request and response in memory, and
-     * as such, is NOT recommended when sending a large number or an
-     * indeterminate number of requests concurrently.
-     *
-     * @param ClientInterface $client   Client used to send the requests
-     * @param array|\Iterator $requests Requests to send concurrently.
-     * @param array           $options  Passes through the options available in
-     *                                  {@see GuzzleHttp\Pool::__construct}
-     *
-     * @return array Returns an array containing the response or an exception
-     *               in the same order that the requests were sent.
-     * @throws \InvalidArgumentException if the event format is incorrect.
-     */
-    public static function batch(
-        ClientInterface $client,
-        $requests,
-        array $options = []
-    ) {
-        $res = [];
-        self::cmpCallback($options, 'fulfilled', $res);
-        self::cmpCallback($options, 'rejected', $res);
-        $pool = new static($client, $requests, $options);
-        $pool->promise()->wait();
-        ksort($res);
-
-        return $res;
-    }
-
-    private static function cmpCallback(array &$options, $name, array &$results)
-    {
-        if (!isset($options[$name])) {
-            $options[$name] = function ($v, $k) use (&$results) {
-                $results[$k] = $v;
-            };
-        } else {
-            $currentFn = $options[$name];
-            $options[$name] = function ($v, $k) use (&$results, $currentFn) {
-                $currentFn($v, $k);
-                $results[$k] = $v;
-            };
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
deleted file mode 100644
index e6d176b..0000000
--- a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Prepares requests that contain a body, adding the Content-Length,
- * Content-Type, and Expect headers.
- */
-class PrepareBodyMiddleware
-{
-    /** @var callable  */
-    private $nextHandler;
-
-    /** @var array */
-    private static $skipMethods = ['GET' => true, 'HEAD' => true];
-
-    /**
-     * @param callable $nextHandler Next handler to invoke.
-     */
-    public function __construct(callable $nextHandler)
-    {
-        $this->nextHandler = $nextHandler;
-    }
-
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        $fn = $this->nextHandler;
-
-        // Don't do anything if the request has no body.
-        if (isset(self::$skipMethods[$request->getMethod()])
-            || $request->getBody()->getSize() === 0
-        ) {
-            return $fn($request, $options);
-        }
-
-        $modify = [];
-
-        // Add a default content-type if possible.
-        if (!$request->hasHeader('Content-Type')) {
-            if ($uri = $request->getBody()->getMetadata('uri')) {
-                if ($type = Psr7\mimetype_from_filename($uri)) {
-                    $modify['set_headers']['Content-Type'] = $type;
-                }
-            }
-        }
-
-        // Add a default content-length or transfer-encoding header.
-        if (!isset(self::$skipMethods[$request->getMethod()])
-            && !$request->hasHeader('Content-Length')
-            && !$request->hasHeader('Transfer-Encoding')
-        ) {
-            $size = $request->getBody()->getSize();
-            if ($size !== null) {
-                $modify['set_headers']['Content-Length'] = $size;
-            } else {
-                $modify['set_headers']['Transfer-Encoding'] = 'chunked';
-            }
-        }
-
-        // Add the expect header if needed.
-        $this->addExpectHeader($request, $options, $modify);
-
-        return $fn(Psr7\modify_request($request, $modify), $options);
-    }
-
-    private function addExpectHeader(
-        RequestInterface $request,
-        array $options,
-        array &$modify
-    ) {
-        // Determine if the Expect header should be used
-        if ($request->hasHeader('Expect')) {
-            return;
-        }
-
-        $expect = isset($options['expect']) ? $options['expect'] : null;
-
-        // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
-        if ($expect === false || $request->getProtocolVersion() < 1.1) {
-            return;
-        }
-
-        // The expect header is unconditionally enabled
-        if ($expect === true) {
-            $modify['set_headers']['Expect'] = '100-Continue';
-            return;
-        }
-
-        // By default, send the expect header when the payload is > 1mb
-        if ($expect === null) {
-            $expect = 1048576;
-        }
-
-        // Always add if the body cannot be rewound, the size cannot be
-        // determined, or the size is greater than the cutoff threshold
-        $body = $request->getBody();
-        $size = $body->getSize();
-
-        if ($size === null || $size >= (int) $expect || !$body->isSeekable()) {
-            $modify['set_headers']['Expect'] = '100-Continue';
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
deleted file mode 100644
index dbe8b87..0000000
--- a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
+++ /dev/null
@@ -1,231 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Exception\BadResponseException;
-use GuzzleHttp\Exception\TooManyRedirectsException;
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Request redirect middleware.
- *
- * Apply this middleware like other middleware using
- * {@see GuzzleHttp\Middleware::redirect()}.
- */
-class RedirectMiddleware
-{
-    const HISTORY_HEADER = 'X-Guzzle-Redirect-History';
-
-    public static $defaultSettings = [
-        'max'             => 5,
-        'protocols'       => ['http', 'https'],
-        'strict'          => false,
-        'referer'         => false,
-        'track_redirects' => false,
-    ];
-
-    /** @var callable  */
-    private $nextHandler;
-
-    /**
-     * @param callable $nextHandler Next handler to invoke.
-     */
-    public function __construct(callable $nextHandler)
-    {
-        $this->nextHandler = $nextHandler;
-    }
-
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        $fn = $this->nextHandler;
-
-        if (empty($options['allow_redirects'])) {
-            return $fn($request, $options);
-        }
-
-        if ($options['allow_redirects'] === true) {
-            $options['allow_redirects'] = self::$defaultSettings;
-        } elseif (!is_array($options['allow_redirects'])) {
-            throw new \InvalidArgumentException('allow_redirects must be true, false, or array');
-        } else {
-            // Merge the default settings with the provided settings
-            $options['allow_redirects'] += self::$defaultSettings;
-        }
-
-        if (empty($options['allow_redirects']['max'])) {
-            return $fn($request, $options);
-        }
-
-        return $fn($request, $options)
-            ->then(function (ResponseInterface $response) use ($request, $options) {
-                return $this->checkRedirect($request, $options, $response);
-            });
-    }
-
-    /**
-     * @param RequestInterface  $request
-     * @param array             $options
-     * @param ResponseInterface|PromiseInterface $response
-     *
-     * @return ResponseInterface|PromiseInterface
-     */
-    public function checkRedirect(
-        RequestInterface $request,
-        array $options,
-        ResponseInterface $response
-    ) {
-        if (substr($response->getStatusCode(), 0, 1) != '3'
-            || !$response->hasHeader('Location')
-        ) {
-            return $response;
-        }
-
-        $this->guardMax($request, $options);
-        $nextRequest = $this->modifyRequest($request, $options, $response);
-
-        if (isset($options['allow_redirects']['on_redirect'])) {
-            call_user_func(
-                $options['allow_redirects']['on_redirect'],
-                $request,
-                $response,
-                $nextRequest->getUri()
-            );
-        }
-
-        /** @var PromiseInterface|ResponseInterface $promise */
-        $promise = $this($nextRequest, $options);
-
-        // Add headers to be able to track history of redirects.
-        if (!empty($options['allow_redirects']['track_redirects'])) {
-            return $this->withTracking(
-                $promise,
-                (string) $nextRequest->getUri()
-            );
-        }
-
-        return $promise;
-    }
-
-    private function withTracking(PromiseInterface $promise, $uri)
-    {
-        return $promise->then(
-            function (ResponseInterface $response) use ($uri) {
-                // Note that we are pushing to the front of the list as this
-                // would be an earlier response than what is currently present
-                // in the history header.
-                $header = $response->getHeader(self::HISTORY_HEADER);
-                array_unshift($header, $uri);
-                return $response->withHeader(self::HISTORY_HEADER, $header);
-            }
-        );
-    }
-
-    private function guardMax(RequestInterface $request, array &$options)
-    {
-        $current = isset($options['__redirect_count'])
-            ? $options['__redirect_count']
-            : 0;
-        $options['__redirect_count'] = $current + 1;
-        $max = $options['allow_redirects']['max'];
-
-        if ($options['__redirect_count'] > $max) {
-            throw new TooManyRedirectsException(
-                "Will not follow more than {$max} redirects",
-                $request
-            );
-        }
-    }
-
-    /**
-     * @param RequestInterface  $request
-     * @param array             $options
-     * @param ResponseInterface $response
-     *
-     * @return RequestInterface
-     */
-    public function modifyRequest(
-        RequestInterface $request,
-        array $options,
-        ResponseInterface $response
-    ) {
-        // Request modifications to apply.
-        $modify = [];
-        $protocols = $options['allow_redirects']['protocols'];
-
-        // Use a GET request if this is an entity enclosing request and we are
-        // not forcing RFC compliance, but rather emulating what all browsers
-        // would do.
-        $statusCode = $response->getStatusCode();
-        if ($statusCode == 303 ||
-            ($statusCode <= 302 && $request->getBody() && !$options['allow_redirects']['strict'])
-        ) {
-            $modify['method'] = 'GET';
-            $modify['body'] = '';
-        }
-
-        $modify['uri'] = $this->redirectUri($request, $response, $protocols);
-        Psr7\rewind_body($request);
-
-        // Add the Referer header if it is told to do so and only
-        // add the header if we are not redirecting from https to http.
-        if ($options['allow_redirects']['referer']
-            && $modify['uri']->getScheme() === $request->getUri()->getScheme()
-        ) {
-            $uri = $request->getUri()->withUserInfo('', '');
-            $modify['set_headers']['Referer'] = (string) $uri;
-        } else {
-            $modify['remove_headers'][] = 'Referer';
-        }
-
-        // Remove Authorization header if host is different.
-        if ($request->getUri()->getHost() !== $modify['uri']->getHost()) {
-            $modify['remove_headers'][] = 'Authorization';
-        }
-
-        return Psr7\modify_request($request, $modify);
-    }
-
-    /**
-     * Set the appropriate URL on the request based on the location header
-     *
-     * @param RequestInterface  $request
-     * @param ResponseInterface $response
-     * @param array             $protocols
-     *
-     * @return UriInterface
-     */
-    private function redirectUri(
-        RequestInterface $request,
-        ResponseInterface $response,
-        array $protocols
-    ) {
-        $location = Psr7\Uri::resolve(
-            $request->getUri(),
-            $response->getHeaderLine('Location')
-        );
-
-        // Ensure that the redirect URI is allowed based on the protocols.
-        if (!in_array($location->getScheme(), $protocols)) {
-            throw new BadResponseException(
-                sprintf(
-                    'Redirect URI, %s, does not use one of the allowed redirect protocols: %s',
-                    $location,
-                    implode(', ', $protocols)
-                ),
-                $request,
-                $response
-            );
-        }
-
-        return $location;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/vendor/guzzlehttp/guzzle/src/RequestOptions.php
deleted file mode 100644
index 3af2f36..0000000
--- a/vendor/guzzlehttp/guzzle/src/RequestOptions.php
+++ /dev/null
@@ -1,244 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-/**
- * This class contains a list of built-in Guzzle request options.
- *
- * More documentation for each option can be found at http://guzzlephp.org/.
- *
- * @link http://docs.guzzlephp.org/en/v6/request-options.html
- */
-final class RequestOptions
-{
-    /**
-     * allow_redirects: (bool|array) Controls redirect behavior. Pass false
-     * to disable redirects, pass true to enable redirects, pass an
-     * associative to provide custom redirect settings. Defaults to "false".
-     * This option only works if your handler has the RedirectMiddleware. When
-     * passing an associative array, you can provide the following key value
-     * pairs:
-     *
-     * - max: (int, default=5) maximum number of allowed redirects.
-     * - strict: (bool, default=false) Set to true to use strict redirects
-     *   meaning redirect POST requests with POST requests vs. doing what most
-     *   browsers do which is redirect POST requests with GET requests
-     * - referer: (bool, default=true) Set to false to disable the Referer
-     *   header.
-     * - protocols: (array, default=['http', 'https']) Allowed redirect
-     *   protocols.
-     * - on_redirect: (callable) PHP callable that is invoked when a redirect
-     *   is encountered. The callable is invoked with the request, the redirect
-     *   response that was received, and the effective URI. Any return value
-     *   from the on_redirect function is ignored.
-     */
-    const ALLOW_REDIRECTS = 'allow_redirects';
-
-    /**
-     * auth: (array) Pass an array of HTTP authentication parameters to use
-     * with the request. The array must contain the username in index [0],
-     * the password in index [1], and you can optionally provide a built-in
-     * authentication type in index [2]. Pass null to disable authentication
-     * for a request.
-     */
-    const AUTH = 'auth';
-
-    /**
-     * body: (string|null|callable|iterator|object) Body to send in the
-     * request.
-     */
-    const BODY = 'body';
-
-    /**
-     * cert: (string|array) Set to a string to specify the path to a file
-     * containing a PEM formatted SSL client side certificate. If a password
-     * is required, then set cert to an array containing the path to the PEM
-     * file in the first array element followed by the certificate password
-     * in the second array element.
-     */
-    const CERT = 'cert';
-
-    /**
-     * cookies: (bool|GuzzleHttp\Cookie\CookieJarInterface, default=false)
-     * Specifies whether or not cookies are used in a request or what cookie
-     * jar to use or what cookies to send. This option only works if your
-     * handler has the `cookie` middleware. Valid values are `false` and
-     * an instance of {@see GuzzleHttp\Cookie\CookieJarInterface}.
-     */
-    const COOKIES = 'cookies';
-
-    /**
-     * connect_timeout: (float, default=0) Float describing the number of
-     * seconds to wait while trying to connect to a server. Use 0 to wait
-     * indefinitely (the default behavior).
-     */
-    const CONNECT_TIMEOUT = 'connect_timeout';
-
-    /**
-     * debug: (bool|resource) Set to true or set to a PHP stream returned by
-     * fopen()  enable debug output with the HTTP handler used to send a
-     * request.
-     */
-    const DEBUG = 'debug';
-
-    /**
-     * decode_content: (bool, default=true) Specify whether or not
-     * Content-Encoding responses (gzip, deflate, etc.) are automatically
-     * decoded.
-     */
-    const DECODE_CONTENT = 'decode_content';
-
-    /**
-     * delay: (int) The amount of time to delay before sending in milliseconds.
-     */
-    const DELAY = 'delay';
-
-    /**
-     * expect: (bool|integer) Controls the behavior of the
-     * "Expect: 100-Continue" header.
-     *
-     * Set to `true` to enable the "Expect: 100-Continue" header for all
-     * requests that sends a body. Set to `false` to disable the
-     * "Expect: 100-Continue" header for all requests. Set to a number so that
-     * the size of the payload must be greater than the number in order to send
-     * the Expect header. Setting to a number will send the Expect header for
-     * all requests in which the size of the payload cannot be determined or
-     * where the body is not rewindable.
-     *
-     * By default, Guzzle will add the "Expect: 100-Continue" header when the
-     * size of the body of a request is greater than 1 MB and a request is
-     * using HTTP/1.1.
-     */
-    const EXPECT = 'expect';
-
-    /**
-     * form_params: (array) Associative array of form field names to values
-     * where each value is a string or array of strings. Sets the Content-Type
-     * header to application/x-www-form-urlencoded when no Content-Type header
-     * is already present.
-     */
-    const FORM_PARAMS = 'form_params';
-
-    /**
-     * headers: (array) Associative array of HTTP headers. Each value MUST be
-     * a string or array of strings.
-     */
-    const HEADERS = 'headers';
-
-    /**
-     * http_errors: (bool, default=true) Set to false to disable exceptions
-     * when a non- successful HTTP response is received. By default,
-     * exceptions will be thrown for 4xx and 5xx responses. This option only
-     * works if your handler has the `httpErrors` middleware.
-     */
-    const HTTP_ERRORS = 'http_errors';
-
-    /**
-     * json: (mixed) Adds JSON data to a request. The provided value is JSON
-     * encoded and a Content-Type header of application/json will be added to
-     * the request if no Content-Type header is already present.
-     */
-    const JSON = 'json';
-
-    /**
-     * multipart: (array) Array of associative arrays, each containing a
-     * required "name" key mapping to the form field, name, a required
-     * "contents" key mapping to a StreamInterface|resource|string, an
-     * optional "headers" associative array of custom headers, and an
-     * optional "filename" key mapping to a string to send as the filename in
-     * the part. If no "filename" key is present, then no "filename" attribute
-     * will be added to the part.
-     */
-    const MULTIPART = 'multipart';
-
-    /**
-     * on_headers: (callable) A callable that is invoked when the HTTP headers
-     * of the response have been received but the body has not yet begun to
-     * download.
-     */
-    const ON_HEADERS = 'on_headers';
-
-    /**
-     * on_stats: (callable) allows you to get access to transfer statistics of
-     * a request and access the lower level transfer details of the handler
-     * associated with your client. ``on_stats`` is a callable that is invoked
-     * when a handler has finished sending a request. The callback is invoked
-     * with transfer statistics about the request, the response received, or
-     * the error encountered. Included in the data is the total amount of time
-     * taken to send the request.
-     */
-    const ON_STATS = 'on_stats';
-
-    /**
-     * progress: (callable) Defines a function to invoke when transfer
-     * progress is made. The function accepts the following positional
-     * arguments: the total number of bytes expected to be downloaded, the
-     * number of bytes downloaded so far, the number of bytes expected to be
-     * uploaded, the number of bytes uploaded so far.
-     */
-    const PROGRESS = 'progress';
-
-    /**
-     * proxy: (string|array) Pass a string to specify an HTTP proxy, or an
-     * array to specify different proxies for different protocols (where the
-     * key is the protocol and the value is a proxy string).
-     */
-    const PROXY = 'proxy';
-
-    /**
-     * query: (array|string) Associative array of query string values to add
-     * to the request. This option uses PHP's http_build_query() to create
-     * the string representation. Pass a string value if you need more
-     * control than what this method provides
-     */
-    const QUERY = 'query';
-
-    /**
-     * sink: (resource|string|StreamInterface) Where the data of the
-     * response is written to. Defaults to a PHP temp stream. Providing a
-     * string will write data to a file by the given name.
-     */
-    const SINK = 'sink';
-
-    /**
-     * synchronous: (bool) Set to true to inform HTTP handlers that you intend
-     * on waiting on the response. This can be useful for optimizations. Note
-     * that a promise is still returned if you are using one of the async
-     * client methods.
-     */
-    const SYNCHRONOUS = 'synchronous';
-
-    /**
-     * ssl_key: (array|string) Specify the path to a file containing a private
-     * SSL key in PEM format. If a password is required, then set to an array
-     * containing the path to the SSL key in the first array element followed
-     * by the password required for the certificate in the second element.
-     */
-    const SSL_KEY = 'ssl_key';
-
-    /**
-     * stream: Set to true to attempt to stream a response rather than
-     * download it all up-front.
-     */
-    const STREAM = 'stream';
-
-    /**
-     * verify: (bool|string, default=true) Describes the SSL certificate
-     * verification behavior of a request. Set to true to enable SSL
-     * certificate verification using the system CA bundle when available
-     * (the default). Set to false to disable certificate verification (this
-     * is insecure!). Set to a string to provide the path to a CA bundle on
-     * disk to enable verification using a custom certificate.
-     */
-    const VERIFY = 'verify';
-
-    /**
-     * timeout: (float, default=0) Float describing the timeout of the
-     * request in seconds. Use 0 to wait indefinitely (the default behavior).
-     */
-    const TIMEOUT = 'timeout';
-
-    /**
-     * version: (float) Specifies the HTTP protocol version to attempt to use.
-     */
-    const VERSION = 'version';
-}
diff --git a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php b/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
deleted file mode 100644
index 4b95a14..0000000
--- a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Psr7;
-use Psr\Http\Message\RequestInterface;
-
-/**
- * Middleware that retries requests based on the boolean result of
- * invoking the provided "decider" function.
- */
-class RetryMiddleware
-{
-    /** @var callable  */
-    private $nextHandler;
-
-    /** @var callable */
-    private $decider;
-
-    /**
-     * @param callable $decider     Function that accepts the number of retries,
-     *                              a request, [response], and [exception] and
-     *                              returns true if the request is to be
-     *                              retried.
-     * @param callable $nextHandler Next handler to invoke.
-     * @param callable $delay       Function that accepts the number of retries
-     *                              and returns the number of milliseconds to
-     *                              delay.
-     */
-    public function __construct(
-        callable $decider,
-        callable $nextHandler,
-        callable $delay = null
-    ) {
-        $this->decider = $decider;
-        $this->nextHandler = $nextHandler;
-        $this->delay = $delay ?: __CLASS__ . '::exponentialDelay';
-    }
-
-    /**
-     * Default exponential backoff delay function.
-     *
-     * @param $retries
-     *
-     * @return int
-     */
-    public static function exponentialDelay($retries)
-    {
-        return (int) pow(2, $retries - 1);
-    }
-
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
-    {
-        if (!isset($options['retries'])) {
-            $options['retries'] = 0;
-        }
-
-        $fn = $this->nextHandler;
-        return $fn($request, $options)
-            ->then(
-                $this->onFulfilled($request, $options),
-                $this->onRejected($request, $options)
-            );
-    }
-
-    private function onFulfilled(RequestInterface $req, array $options)
-    {
-        return function ($value) use ($req, $options) {
-            if (!call_user_func(
-                $this->decider,
-                $options['retries'],
-                $req,
-                $value,
-                null
-            )) {
-                return $value;
-            }
-            return $this->doRetry($req, $options);
-        };
-    }
-
-    private function onRejected(RequestInterface $req, array $options)
-    {
-        return function ($reason) use ($req, $options) {
-            if (!call_user_func(
-                $this->decider,
-                $options['retries'],
-                $req,
-                null,
-                $reason
-            )) {
-                return new RejectedPromise($reason);
-            }
-            return $this->doRetry($req, $options);
-        };
-    }
-
-    private function doRetry(RequestInterface $request, array $options)
-    {
-        $options['delay'] = call_user_func($this->delay, ++$options['retries']);
-
-        return $this($request, $options);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/TransferStats.php b/vendor/guzzlehttp/guzzle/src/TransferStats.php
deleted file mode 100644
index 15f717e..0000000
--- a/vendor/guzzlehttp/guzzle/src/TransferStats.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Represents data at the point after it was transferred either successfully
- * or after a network error.
- */
-final class TransferStats
-{
-    private $request;
-    private $response;
-    private $transferTime;
-    private $handlerStats;
-    private $handlerErrorData;
-
-    /**
-     * @param RequestInterface  $request          Request that was sent.
-     * @param ResponseInterface $response         Response received (if any)
-     * @param null              $transferTime     Total handler transfer time.
-     * @param mixed             $handlerErrorData Handler error data.
-     * @param array             $handlerStats     Handler specific stats.
-     */
-    public function __construct(
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        $transferTime = null,
-        $handlerErrorData = null,
-        $handlerStats = []
-    ) {
-        $this->request = $request;
-        $this->response = $response;
-        $this->transferTime = $transferTime;
-        $this->handlerErrorData = $handlerErrorData;
-        $this->handlerStats = $handlerStats;
-    }
-
-    /**
-     * @return RequestInterface
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Returns the response that was received (if any).
-     *
-     * @return ResponseInterface|null
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-
-    /**
-     * Returns true if a response was received.
-     *
-     * @return bool
-     */
-    public function hasResponse()
-    {
-        return $this->response !== null;
-    }
-
-    /**
-     * Gets handler specific error data.
-     *
-     * This might be an exception, a integer representing an error code, or
-     * anything else. Relying on this value assumes that you know what handler
-     * you are using.
-     *
-     * @return mixed
-     */
-    public function getHandlerErrorData()
-    {
-        return $this->handlerErrorData;
-    }
-
-    /**
-     * Get the effective URI the request was sent to.
-     *
-     * @return UriInterface
-     */
-    public function getEffectiveUri()
-    {
-        return $this->request->getUri();
-    }
-
-    /**
-     * Get the estimated time the request was being transferred by the handler.
-     *
-     * @return float Time in seconds.
-     */
-    public function getTransferTime()
-    {
-        return $this->transferTime;
-    }
-
-    /**
-     * Gets an array of all of the handler specific transfer data.
-     *
-     * @return array
-     */
-    public function getHandlerStats()
-    {
-        return $this->handlerStats;
-    }
-
-    /**
-     * Get a specific handler statistic from the handler by name.
-     *
-     * @param string $stat Handler specific transfer stat to retrieve.
-     *
-     * @return mixed|null
-     */
-    public function getHandlerStat($stat)
-    {
-        return isset($this->handlerStats[$stat])
-            ? $this->handlerStats[$stat]
-            : null;
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/UriTemplate.php b/vendor/guzzlehttp/guzzle/src/UriTemplate.php
deleted file mode 100644
index 55dfeb5..0000000
--- a/vendor/guzzlehttp/guzzle/src/UriTemplate.php
+++ /dev/null
@@ -1,241 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-/**
- * Expands URI templates. Userland implementation of PECL uri_template.
- *
- * @link http://tools.ietf.org/html/rfc6570
- */
-class UriTemplate
-{
-    /** @var string URI template */
-    private $template;
-
-    /** @var array Variables to use in the template expansion */
-    private $variables;
-
-    /** @var array Hash for quick operator lookups */
-    private static $operatorHash = array(
-        ''  => array('prefix' => '',  'joiner' => ',', 'query' => false),
-        '+' => array('prefix' => '',  'joiner' => ',', 'query' => false),
-        '#' => array('prefix' => '#', 'joiner' => ',', 'query' => false),
-        '.' => array('prefix' => '.', 'joiner' => '.', 'query' => false),
-        '/' => array('prefix' => '/', 'joiner' => '/', 'query' => false),
-        ';' => array('prefix' => ';', 'joiner' => ';', 'query' => true),
-        '?' => array('prefix' => '?', 'joiner' => '&', 'query' => true),
-        '&' => array('prefix' => '&', 'joiner' => '&', 'query' => true)
-    );
-
-    /** @var array Delimiters */
-    private static $delims = array(':', '/', '?', '#', '[', ']', '@', '!', '$',
-        '&', '\'', '(', ')', '*', '+', ',', ';', '=');
-
-    /** @var array Percent encoded delimiters */
-    private static $delimsPct = array('%3A', '%2F', '%3F', '%23', '%5B', '%5D',
-        '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C',
-        '%3B', '%3D');
-
-    public function expand($template, array $variables)
-    {
-        if (false === strpos($template, '{')) {
-            return $template;
-        }
-
-        $this->template = $template;
-        $this->variables = $variables;
-
-        return preg_replace_callback(
-            '/\{([^\}]+)\}/',
-            [$this, 'expandMatch'],
-            $this->template
-        );
-    }
-
-    /**
-     * Parse an expression into parts
-     *
-     * @param string $expression Expression to parse
-     *
-     * @return array Returns an associative array of parts
-     */
-    private function parseExpression($expression)
-    {
-        $result = array();
-
-        if (isset(self::$operatorHash[$expression[0]])) {
-            $result['operator'] = $expression[0];
-            $expression = substr($expression, 1);
-        } else {
-            $result['operator'] = '';
-        }
-
-        foreach (explode(',', $expression) as $value) {
-            $value = trim($value);
-            $varspec = array();
-            if ($colonPos = strpos($value, ':')) {
-                $varspec['value'] = substr($value, 0, $colonPos);
-                $varspec['modifier'] = ':';
-                $varspec['position'] = (int) substr($value, $colonPos + 1);
-            } elseif (substr($value, -1) == '*') {
-                $varspec['modifier'] = '*';
-                $varspec['value'] = substr($value, 0, -1);
-            } else {
-                $varspec['value'] = (string) $value;
-                $varspec['modifier'] = '';
-            }
-            $result['values'][] = $varspec;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Process an expansion
-     *
-     * @param array $matches Matches met in the preg_replace_callback
-     *
-     * @return string Returns the replacement string
-     */
-    private function expandMatch(array $matches)
-    {
-        static $rfc1738to3986 = array('+' => '%20', '%7e' => '~');
-
-        $replacements = array();
-        $parsed = self::parseExpression($matches[1]);
-        $prefix = self::$operatorHash[$parsed['operator']]['prefix'];
-        $joiner = self::$operatorHash[$parsed['operator']]['joiner'];
-        $useQuery = self::$operatorHash[$parsed['operator']]['query'];
-
-        foreach ($parsed['values'] as $value) {
-
-            if (!isset($this->variables[$value['value']])) {
-                continue;
-            }
-
-            $variable = $this->variables[$value['value']];
-            $actuallyUseQuery = $useQuery;
-            $expanded = '';
-
-            if (is_array($variable)) {
-
-                $isAssoc = $this->isAssoc($variable);
-                $kvp = array();
-                foreach ($variable as $key => $var) {
-
-                    if ($isAssoc) {
-                        $key = rawurlencode($key);
-                        $isNestedArray = is_array($var);
-                    } else {
-                        $isNestedArray = false;
-                    }
-
-                    if (!$isNestedArray) {
-                        $var = rawurlencode($var);
-                        if ($parsed['operator'] == '+' ||
-                            $parsed['operator'] == '#'
-                        ) {
-                            $var = $this->decodeReserved($var);
-                        }
-                    }
-
-                    if ($value['modifier'] == '*') {
-                        if ($isAssoc) {
-                            if ($isNestedArray) {
-                                // Nested arrays must allow for deeply nested
-                                // structures.
-                                $var = strtr(
-                                    http_build_query([$key => $var]),
-                                    $rfc1738to3986
-                                );
-                            } else {
-                                $var = $key . '=' . $var;
-                            }
-                        } elseif ($key > 0 && $actuallyUseQuery) {
-                            $var = $value['value'] . '=' . $var;
-                        }
-                    }
-
-                    $kvp[$key] = $var;
-                }
-
-                if (empty($variable)) {
-                    $actuallyUseQuery = false;
-                } elseif ($value['modifier'] == '*') {
-                    $expanded = implode($joiner, $kvp);
-                    if ($isAssoc) {
-                        // Don't prepend the value name when using the explode
-                        // modifier with an associative array.
-                        $actuallyUseQuery = false;
-                    }
-                } else {
-                    if ($isAssoc) {
-                        // When an associative array is encountered and the
-                        // explode modifier is not set, then the result must be
-                        // a comma separated list of keys followed by their
-                        // respective values.
-                        foreach ($kvp as $k => &$v) {
-                            $v = $k . ',' . $v;
-                        }
-                    }
-                    $expanded = implode(',', $kvp);
-                }
-
-            } else {
-                if ($value['modifier'] == ':') {
-                    $variable = substr($variable, 0, $value['position']);
-                }
-                $expanded = rawurlencode($variable);
-                if ($parsed['operator'] == '+' || $parsed['operator'] == '#') {
-                    $expanded = $this->decodeReserved($expanded);
-                }
-            }
-
-            if ($actuallyUseQuery) {
-                if (!$expanded && $joiner != '&') {
-                    $expanded = $value['value'];
-                } else {
-                    $expanded = $value['value'] . '=' . $expanded;
-                }
-            }
-
-            $replacements[] = $expanded;
-        }
-
-        $ret = implode($joiner, $replacements);
-        if ($ret && $prefix) {
-            return $prefix . $ret;
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Determines if an array is associative.
-     *
-     * This makes the assumption that input arrays are sequences or hashes.
-     * This assumption is a tradeoff for accuracy in favor of speed, but it
-     * should work in almost every case where input is supplied for a URI
-     * template.
-     *
-     * @param array $array Array to check
-     *
-     * @return bool
-     */
-    private function isAssoc(array $array)
-    {
-        return $array && array_keys($array)[0] !== 0;
-    }
-
-    /**
-     * Removes percent encoding on reserved characters (used with + and #
-     * modifiers).
-     *
-     * @param string $string String to fix
-     *
-     * @return string
-     */
-    private function decodeReserved($string)
-    {
-        return str_replace(self::$delimsPct, self::$delims, $string);
-    }
-}
diff --git a/vendor/guzzlehttp/guzzle/src/functions.php b/vendor/guzzlehttp/guzzle/src/functions.php
deleted file mode 100644
index d0a2ca8..0000000
--- a/vendor/guzzlehttp/guzzle/src/functions.php
+++ /dev/null
@@ -1,280 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Handler\CurlHandler;
-use GuzzleHttp\Handler\CurlMultiHandler;
-use GuzzleHttp\Handler\Proxy;
-use GuzzleHttp\Handler\StreamHandler;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Expands a URI template
- *
- * @param string $template  URI template
- * @param array  $variables Template variables
- *
- * @return string
- */
-function uri_template($template, array $variables)
-{
-    if (extension_loaded('uri_template')) {
-        // @codeCoverageIgnoreStart
-        return \uri_template($template, $variables);
-        // @codeCoverageIgnoreEnd
-    }
-
-    static $uriTemplate;
-    if (!$uriTemplate) {
-        $uriTemplate = new UriTemplate();
-    }
-
-    return $uriTemplate->expand($template, $variables);
-}
-
-/**
- * Debug function used to describe the provided value type and class.
- *
- * @param mixed $input
- *
- * @return string Returns a string containing the type of the variable and
- *                if a class is provided, the class name.
- */
-function describe_type($input)
-{
-    switch (gettype($input)) {
-        case 'object':
-            return 'object(' . get_class($input) . ')';
-        case 'array':
-            return 'array(' . count($input) . ')';
-        default:
-            ob_start();
-            var_dump($input);
-            // normalize float vs double
-            return str_replace('double(', 'float(', rtrim(ob_get_clean()));
-    }
-}
-
-/**
- * Parses an array of header lines into an associative array of headers.
- *
- * @param array $lines Header lines array of strings in the following
- *                     format: "Name: Value"
- * @return array
- */
-function headers_from_lines($lines)
-{
-    $headers = [];
-
-    foreach ($lines as $line) {
-        $parts = explode(':', $line, 2);
-        $headers[trim($parts[0])][] = isset($parts[1])
-            ? trim($parts[1])
-            : null;
-    }
-
-    return $headers;
-}
-
-/**
- * Returns a debug stream based on the provided variable.
- *
- * @param mixed $value Optional value
- *
- * @return resource
- */
-function debug_resource($value = null)
-{
-    if (is_resource($value)) {
-        return $value;
-    } elseif (defined('STDOUT')) {
-        return STDOUT;
-    }
-
-    return fopen('php://output', 'w');
-}
-
-/**
- * Chooses and creates a default handler to use based on the environment.
- *
- * The returned handler is not wrapped by any default middlewares.
- *
- * @throws \RuntimeException if no viable Handler is available.
- * @return callable Returns the best handler for the given system.
- */
-function choose_handler()
-{
-    $handler = null;
-    if (extension_loaded('curl')) {
-        $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
-    }
-
-    if (ini_get('allow_url_fopen')) {
-        $handler = $handler
-            ? Proxy::wrapStreaming($handler, new StreamHandler())
-            : new StreamHandler();
-    } elseif (!$handler) {
-        throw new \RuntimeException('GuzzleHttp requires cURL, the '
-            . 'allow_url_fopen ini setting, or a custom HTTP handler.');
-    }
-
-    return $handler;
-}
-
-/**
- * Get the default User-Agent string to use with Guzzle
- *
- * @return string
- */
-function default_user_agent()
-{
-    static $defaultAgent = '';
-
-    if (!$defaultAgent) {
-        $defaultAgent = 'GuzzleHttp/' . Client::VERSION;
-        if (extension_loaded('curl') && function_exists('curl_version')) {
-            $defaultAgent .= ' curl/' . \curl_version()['version'];
-        }
-        $defaultAgent .= ' PHP/' . PHP_VERSION;
-    }
-
-    return $defaultAgent;
-}
-
-/**
- * Returns the default cacert bundle for the current system.
- *
- * First, the openssl.cafile and curl.cainfo php.ini settings are checked.
- * If those settings are not configured, then the common locations for
- * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X
- * and Windows are checked. If any of these file locations are found on
- * disk, they will be utilized.
- *
- * Note: the result of this function is cached for subsequent calls.
- *
- * @return string
- * @throws \RuntimeException if no bundle can be found.
- */
-function default_ca_bundle()
-{
-    static $cached = null;
-    static $cafiles = [
-        // Red Hat, CentOS, Fedora (provided by the ca-certificates package)
-        '/etc/pki/tls/certs/ca-bundle.crt',
-        // Ubuntu, Debian (provided by the ca-certificates package)
-        '/etc/ssl/certs/ca-certificates.crt',
-        // FreeBSD (provided by the ca_root_nss package)
-        '/usr/local/share/certs/ca-root-nss.crt',
-        // OS X provided by homebrew (using the default path)
-        '/usr/local/etc/openssl/cert.pem',
-        // Google app engine
-        '/etc/ca-certificates.crt',
-        // Windows?
-        'C:\\windows\\system32\\curl-ca-bundle.crt',
-        'C:\\windows\\curl-ca-bundle.crt',
-    ];
-
-    if ($cached) {
-        return $cached;
-    }
-
-    if ($ca = ini_get('openssl.cafile')) {
-        return $cached = $ca;
-    }
-
-    if ($ca = ini_get('curl.cainfo')) {
-        return $cached = $ca;
-    }
-
-    foreach ($cafiles as $filename) {
-        if (file_exists($filename)) {
-            return $cached = $filename;
-        }
-    }
-
-    throw new \RuntimeException(<<< EOT
-No system CA bundle could be found in any of the the common system locations.
-PHP versions earlier than 5.6 are not properly configured to use the system's
-CA bundle by default. In order to verify peer certificates, you will need to
-supply the path on disk to a certificate bundle to the 'verify' request
-option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
-need a specific certificate bundle, then Mozilla provides a commonly used CA
-bundle which can be downloaded here (provided by the maintainer of cURL):
-https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt. Once
-you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
-ini setting to point to the path to the file, allowing you to omit the 'verify'
-request option. See http://curl.haxx.se/docs/sslcerts.html for more
-information.
-EOT
-    );
-}
-
-/**
- * Creates an associative array of lowercase header names to the actual
- * header casing.
- *
- * @param array $headers
- *
- * @return array
- */
-function normalize_header_keys(array $headers)
-{
-    $result = [];
-    foreach (array_keys($headers) as $key) {
-        $result[strtolower($key)] = $key;
-    }
-
-    return $result;
-}
-
-/**
- * Returns true if the provided host matches any of the no proxy areas.
- *
- * This method will strip a port from the host if it is present. Each pattern
- * can be matched with an exact match (e.g., "foo.com" == "foo.com") or a
- * partial match: (e.g., "foo.com" == "baz.foo.com" and ".foo.com" ==
- * "baz.foo.com", but ".foo.com" != "foo.com").
- *
- * Areas are matched in the following cases:
- * 1. "*" (without quotes) always matches any hosts.
- * 2. An exact match.
- * 3. The area starts with "." and the area is the last part of the host. e.g.
- *    '.mit.edu' will match any host that ends with '.mit.edu'.
- *
- * @param string $host         Host to check against the patterns.
- * @param array  $noProxyArray An array of host patterns.
- *
- * @return bool
- */
-function is_host_in_noproxy($host, array $noProxyArray)
-{
-    if (strlen($host) === 0) {
-        throw new \InvalidArgumentException('Empty host provided');
-    }
-
-    // Strip port if present.
-    if (strpos($host, ':')) {
-        $host = explode($host, ':', 2)[0];
-    }
-
-    foreach ($noProxyArray as $area) {
-        // Always match on wildcards.
-        if ($area === '*') {
-            return true;
-        } elseif (empty($area)) {
-            // Don't match on empty values.
-            continue;
-        } elseif ($area === $host) {
-            // Exact matches.
-            return true;
-        } else {
-            // Special match if the area when prefixed with ".". Remove any
-            // existing leading "." and add a new leading ".".
-            $area = '.' . ltrim($area, '.');
-            if (substr($host, -(strlen($area))) === $area) {
-                return true;
-            }
-        }
-    }
-
-    return false;
-}
diff --git a/vendor/guzzlehttp/guzzle/src/functions_include.php b/vendor/guzzlehttp/guzzle/src/functions_include.php
deleted file mode 100644
index a93393a..0000000
--- a/vendor/guzzlehttp/guzzle/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-// Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\uri_template')) {
-    require __DIR__ . '/functions.php';
-}
diff --git a/vendor/guzzlehttp/promises/.gitignore b/vendor/guzzlehttp/promises/.gitignore
deleted file mode 100644
index 83ec41e..0000000
--- a/vendor/guzzlehttp/promises/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-phpunit.xml
-composer.phar
-composer.lock
-composer-test.lock
-vendor/
-build/artifacts/
-artifacts/
-docs/_build
-docs/*.pyc
-.idea
-.DS_STORE
diff --git a/vendor/guzzlehttp/promises/.travis.yml b/vendor/guzzlehttp/promises/.travis.yml
deleted file mode 100644
index 4f4d2b8..0000000
--- a/vendor/guzzlehttp/promises/.travis.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-language: php
-
-php:
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-sudo: false
-
-install:
-  - travis_retry composer install --no-interaction --prefer-source
-
-script: make test
-
-matrix:
-  allow_failures:
-    - php: hhvm
-  fast_finish: true
diff --git a/vendor/guzzlehttp/promises/CHANGELOG.md b/vendor/guzzlehttp/promises/CHANGELOG.md
deleted file mode 100644
index daad986..0000000
--- a/vendor/guzzlehttp/promises/CHANGELOG.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# CHANGELOG
-
-## 1.0.2 - 2015-05-15
-
-* Conditionally require functions.php.
-
-## 1.0.1 - 2015-06-24
-
-* Updating EachPromise to call next on the underlying promise iterator as late
-  as possible to ensure that generators that generate new requests based on
-  callbacks are not iterated until after callbacks are invoked.
-
-## 1.0.0 - 2015-05-12
-
-* Initial release
diff --git a/vendor/guzzlehttp/promises/LICENSE b/vendor/guzzlehttp/promises/LICENSE
deleted file mode 100644
index 581d95f..0000000
--- a/vendor/guzzlehttp/promises/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.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.
diff --git a/vendor/guzzlehttp/promises/Makefile b/vendor/guzzlehttp/promises/Makefile
deleted file mode 100644
index 8d5b3ef..0000000
--- a/vendor/guzzlehttp/promises/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-all: clean test
-
-test:
-	vendor/bin/phpunit
-
-coverage:
-	vendor/bin/phpunit --coverage-html=artifacts/coverage
-
-view-coverage:
-	open artifacts/coverage/index.html
-
-clean:
-	rm -rf artifacts/*
diff --git a/vendor/guzzlehttp/promises/README.md b/vendor/guzzlehttp/promises/README.md
deleted file mode 100644
index c6780ab..0000000
--- a/vendor/guzzlehttp/promises/README.md
+++ /dev/null
@@ -1,501 +0,0 @@
-# Guzzle Promises
-
-[Promises/A+](https://promisesaplus.com/) implementation that handles promise
-chaining and resolution iteratively, allowing for "infinite" promise chaining
-while keeping the stack size constant. Read [this blog post](https://blog.domenic.me/youre-missing-the-point-of-promises/)
-for a general introduction to promises.
-
-- [Features](#features)
-- [Quick start](#quick-start)
-- [Synchronous wait](#synchronous-wait)
-- [Cancellation](#cancellation)
-- [API](#api)
-  - [Promise](#promise)
-  - [FulfilledPromise](#fulfilledpromise)
-  - [RejectedPromise](#rejectedpromise)
-- [Promise interop](#promise-interop)
-- [Implementation notes](#implementation-notes)
-
-
-# Features
-
-- [Promises/A+](https://promisesaplus.com/) implementation.
-- Promise resolution and chaining is handled iteratively, allowing for
-  "infinite" promise chaining.
-- Promises have a synchronous `wait` method.
-- Promises can be cancelled.
-- Works with any object that has a `then` function.
-- C# style async/await coroutine promises using
-  `GuzzleHttp\Promise\coroutine()`.
-
-
-# Quick start
-
-A *promise* represents the eventual result of an asynchronous operation. The
-primary way of interacting with a promise is through its `then` method, which
-registers callbacks to receive either a promise's eventual value or the reason
-why the promise cannot be fulfilled.
-
-
-## Callbacks
-
-Callbacks are registered with the `then` method by providing an optional 
-`$onFulfilled` followed by an optional `$onRejected` function.
-
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(
-    // $onFulfilled
-    function ($value) {
-        echo 'The promise was fulfilled.';
-    },
-    // $onRejected
-    function ($reason) {
-        echo 'The promise was rejected.';
-    }
-);
-```
-
-*Resolving* a promise means that you either fulfill a promise with a *value* or
-reject a promise with a *reason*. Resolving a promises triggers callbacks
-registered with the promises's `then` method. These callbacks are triggered
-only once and in the order in which they were added.
-
-
-## Resolving a promise
-
-Promises are fulfilled using the `resolve($value)` method. Resolving a promise
-with any value other than a `GuzzleHttp\Promise\RejectedPromise` will trigger
-all of the onFulfilled callbacks (resolving a promise with a rejected promise
-will reject the promise and trigger the `$onRejected` callbacks).
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise
-    ->then(function ($value) {
-        // Return a value and don't break the chain
-        return "Hello, " . $value;
-    })
-    // This then is executed after the first then and receives the value
-    // returned from the first then.
-    ->then(function ($value) {
-        echo $value;
-    });
-
-// Resolving the promise triggers the $onFulfilled callbacks and outputs
-// "Hello, reader".
-$promise->resolve('reader.');
-```
-
-
-## Promise forwarding
-
-Promises can be chained one after the other. Each then in the chain is a new
-promise. The return value of of a promise is what's forwarded to the next
-promise in the chain. Returning a promise in a `then` callback will cause the
-subsequent promises in the chain to only be fulfilled when the returned promise
-has been fulfilled. The next promise in the chain will be invoked with the
-resolved value of the promise.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$nextPromise = new Promise();
-
-$promise
-    ->then(function ($value) use ($nextPromise) {
-        echo $value;
-        return $nextPromise;
-    })
-    ->then(function ($value) {
-        echo $value;
-    });
-
-// Triggers the first callback and outputs "A"
-$promise->resolve('A');
-// Triggers the second callback and outputs "B"
-$nextPromise->resolve('B');
-```
-
-## Promise rejection
-
-When a promise is rejected, the `$onRejected` callbacks are invoked with the
-rejection reason.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
-    echo $reason;
-});
-
-$promise->reject('Error!');
-// Outputs "Error!"
-```
-
-## Rejection forwarding
-
-If an exception is thrown in an `$onRejected` callback, subsequent
-`$onRejected` callbacks are invoked with the thrown exception as the reason.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
-    throw new \Exception($reason);
-})->then(null, function ($reason) {
-    assert($reason->getMessage() === 'Error!');
-});
-
-$promise->reject('Error!');
-```
-
-You can also forward a rejection down the promise chain by returning a
-`GuzzleHttp\Promise\RejectedPromise` in either an `$onFulfilled` or
-`$onRejected` callback.
-
-```php
-use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Promise\RejectedPromise;
-
-$promise = new Promise();
-$promise->then(null, function ($reason) {
-    return new RejectedPromise($reason);
-})->then(null, function ($reason) {
-    assert($reason === 'Error!');
-});
-
-$promise->reject('Error!');
-```
-
-If an exception is not thrown in a `$onRejected` callback and the callback
-does not return a rejected promise, downstream `$onFulfilled` callbacks are
-invoked using the value returned from the `$onRejected` callback.
-
-```php
-use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Promise\RejectedPromise;
-
-$promise = new Promise();
-$promise
-    ->then(null, function ($reason) {
-        return "It's ok";
-    })
-    ->then(function ($value) {
-        assert($value === "It's ok");
-    });
-
-$promise->reject('Error!');
-```
-
-# Synchronous wait
-
-You can synchronously force promises to complete using a promise's `wait`
-method. When creating a promise, you can provide a wait function that is used
-to synchronously force a promise to complete. When a wait function is invoked
-it is expected to deliver a value to the promise or reject the promise. If the
-wait function does not deliver a value, then an exception is thrown. The wait
-function provided to a promise constructor is invoked when the `wait` function
-of the promise is called.
-
-```php
-$promise = new Promise(function () use (&$promise) {
-    $promise->deliver('foo');
-});
-
-// Calling wait will return the value of the promise.
-echo $promise->wait(); // outputs "foo"
-```
-
-If an exception is encountered while invoking the wait function of a promise,
-the promise is rejected with the exception and the exception is thrown.
-
-```php
-$promise = new Promise(function () use (&$promise) {
-    throw new \Exception('foo');
-});
-
-$promise->wait(); // throws the exception.
-```
-
-Calling `wait` on a promise that has been fulfilled will not trigger the wait
-function. It will simply return the previously delivered value.
-
-```php
-$promise = new Promise(function () { die('this is not called!'); });
-$promise->deliver('foo');
-echo $promise->wait(); // outputs "foo"
-```
-
-Calling `wait` on a promise that has been rejected will throw an exception. If
-the rejection reason is an instance of `\Exception` the reason is thrown.
-Otherwise, a `GuzzleHttp\Promise\RejectionException` is thrown and the reason
-can be obtained by calling the `getReason` method of the exception.
-
-```php
-$promise = new Promise();
-$promise->reject('foo');
-$promise->wait();
-```
-
-> PHP Fatal error:  Uncaught exception 'GuzzleHttp\Promise\RejectionException' with message 'The promise was rejected with value: foo'
-
-
-## Unwrapping a promise
-
-When synchronously waiting on a promise, you are joining the state of the
-promise into the current state of execution (i.e., return the value of the
-promise if it was fulfilled or throw an exception if it was rejected). This is
-called "unwrapping" the promise. Waiting on a promise will by default unwrap
-the promise state.
-
-You can force a promise to resolve and *not* unwrap the state of the promise
-by passing `false` to the first argument of the `wait` function:
-
-```php
-$promise = new Promise();
-$promise->reject('foo');
-// This will not throw an exception. It simply ensures the promise has
-// been resolved.
-$promise->wait(false);
-```
-
-When unwrapping a promise, the delivered value of the promise will be waited
-upon until the unwrapped value is not a promise. This means that if you resolve
-promise A with a promise B and unwrap promise A, the value returned by the
-wait function will be the value delivered to promise B.
-
-**Note**: when you do not unwrap the promise, no value is returned.
-
-
-# Cancellation
-
-You can cancel a promise that has not yet been fulfilled using the `cancel()`
-method of a promise. When creating a promise you can provide an optional
-cancel function that when invoked cancels the action of computing a resolution
-of the promise.
-
-
-# API
-
-
-## Promise
-
-When creating a promise object, you can provide an optional `$waitFn` and
-`$cancelFn`. `$waitFn` is a function that is invoked with no arguments and is
-expected to resolve the promise. `$cancelFn` is a function with no arguments
-that is expected to cancel the computation of a promise. It is invoked when the
-`cancel()` method of a promise is called.
-
-```php
-use GuzzleHttp\Promise\Promise;
-
-$promise = new Promise(
-    function () use (&$promise) {
-        $promise->resolve('waited');
-    },
-    function () {
-        // do something that will cancel the promise computation (e.g., close
-        // a socket, cancel a database query, etc...)
-    }
-);
-
-assert('waited' === $promise->wait());
-```
-
-A promise has the following methods:
-
-- `then(callable $onFulfilled, callable $onRejected) : PromiseInterface`
-  
-  Creates a new promise that is fulfilled or rejected when the promise is
-  resolved.
-
-- `wait($unwrap = true) : mixed`
-
-  Synchronously waits on the promise to complete.
-  
-  `$unwrap` controls whether or not the value of the promise is returned for a
-  fulfilled promise or if an exception is thrown if the promise is rejected.
-  This is set to `true` by default.
-
-- `cancel()`
-
-  Attempts to cancel the promise if possible. The promise being cancelled and
-  the parent most ancestor that has not yet been resolved will also be
-  cancelled. Any promises waiting on the cancelled promise to resolve will also
-  be cancelled.
-
-- `getState() : string`
-
-  Returns the state of the promise. One of `pending`, `fulfilled`, or
-  `rejected`.
-
-- `resolve($value)`
-
-  Fulfills the promise with the given `$value`.
-
-- `reject($reason)`
-
-  Rejects the promise with the given `$reason`.
-
-
-## FulfilledPromise
-
-A fulfilled promise can be created to represent a promise that has been
-fulfilled.
-
-```php
-use GuzzleHttp\Promise\FulfilledPromise;
-
-$promise = new FulfilledPromise('value');
-
-// Fulfilled callbacks are immediately invoked.
-$promise->then(function ($value) {
-    echo $value;
-});
-```
-
-
-## RejectedPromise
-
-A rejected promise can be created to represent a promise that has been
-rejected.
-
-```php
-use GuzzleHttp\Promise\RejectedPromise;
-
-$promise = new RejectedPromise('Error');
-
-// Rejected callbacks are immediately invoked.
-$promise->then(null, function ($reason) {
-    echo $reason;
-});
-```
-
-
-# Promise interop
-
-This library works with foreign promises that have a `then` method. This means
-you can use Guzzle promises with [React promises](https://github.com/reactphp/promise)
-for example. When a foreign promise is returned inside of a then method
-callback, promise resolution will occur recursively.
-
-```php
-// Create a React promise
-$deferred = new React\Promise\Deferred();
-$reactPromise = $deferred->promise();
-
-// Create a Guzzle promise that is fulfilled with a React promise.
-$guzzlePromise = new \GuzzleHttp\Promise\Promise();
-$guzzlePromise->then(function ($value) use ($reactPromise) {
-    // Do something something with the value...
-    // Return the React promise
-    return $reactPromise;
-});
-```
-
-Please note that wait and cancel chaining is no longer possible when forwarding
-a foreign promise. You will need to wrap a third-party promise with a Guzzle
-promise in order to utilize wait and cancel functions with foreign promises.
-
-
-## Event Loop Integration
-
-In order to keep the stack size constant, Guzzle promises are resolved
-asynchronously using a task queue. When waiting on promises synchronously, the
-task queue will be automatically run to ensure that the blocking promise and
-any forwarded promises are resolved. When using promises asynchronously in an
-event loop, you will need to run the task queue on each tick of the loop. If
-you do not run the task queue, then promises will not be resolved.
-
-You can run the task queue using the `run()` method of the global task queue
-instance.
-
-```php
-// Get the global task queue
-$queue = \GuzzleHttp\Promise\queue();
-$queue->run();
-```
-
-For example, you could use Guzzle promises with React using a periodic timer:
-
-```php
-$loop = React\EventLoop\Factory::create();
-$loop->addPeriodicTimer(0, [$queue, 'run']);
-```
-
-*TODO*: Perhaps adding a `futureTick()` on each tick would be faster?
-
-
-# Implementation notes
-
-
-## Promise resolution and chaining is handled iteratively
-
-By shuffling pending handlers from one owner to another, promises are
-resolved iteratively, allowing for "infinite" then chaining.
-
-```php
-<?php
-require 'vendor/autoload.php';
-
-use GuzzleHttp\Promise\Promise;
-
-$parent = new Promise();
-$p = $parent;
-
-for ($i = 0; $i < 1000; $i++) {
-    $p = $p->then(function ($v) {
-        // The stack size remains constant (a good thing)
-        echo xdebug_get_stack_depth() . ', ';
-        return $v + 1;
-    });
-}
-
-$parent->resolve(0);
-var_dump($p->wait()); // int(1000)
-
-```
-
-When a promise is fulfilled or rejected with a non-promise value, the promise
-then takes ownership of the handlers of each child promise and delivers values
-down the chain without using recursion.
-
-When a promise is resolved with another promise, the original promise transfers
-all of its pending handlers to the new promise. When the new promise is
-eventually resolved, all of the pending handlers are delivered the forwarded
-value.
-
-
-## A promise is the deferred.
-
-Some promise libraries implement promises using a deferred object to represent
-a computation and a promise object to represent the delivery of the result of
-the computation. This is a nice separation of computation and delivery because
-consumers of the promise cannot modify the value that will be eventually
-delivered.
-
-One side effect of being able to implement promise resolution and chaining
-iteratively is that you need to be able for one promise to reach into the state
-of another promise to shuffle around ownership of handlers. In order to achieve
-this without making the handlers of a promise publicly mutable, a promise is
-also the deferred value, allowing promises of the same parent class to reach
-into and modify the private properties of promises of the same type. While this
-does allow consumers of the value to modify the resolution or rejection of the
-deferred, it is a small price to pay for keeping the stack size constant.
-
-```php
-$promise = new Promise();
-$promise->then(function ($value) { echo $value; });
-// The promise is the deferred value, so you can deliver a value to it.
-$promise->deliver('foo');
-// prints "foo"
-```
diff --git a/vendor/guzzlehttp/promises/composer.json b/vendor/guzzlehttp/promises/composer.json
deleted file mode 100644
index f13844b..0000000
--- a/vendor/guzzlehttp/promises/composer.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-    "name": "guzzlehttp/promises",
-    "type": "library",
-    "description": "Guzzle promises library",
-    "keywords": ["promise"],
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Michael Dowling",
-            "email": "mtdowling@gmail.com",
-            "homepage": "https://github.com/mtdowling"
-        }
-    ],
-    "require": {
-        "php": ">=5.5.0"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.0"
-    },
-    "autoload": {
-        "psr-4": {
-            "GuzzleHttp\\Promise\\": "src/"
-        },
-        "files": ["src/functions_include.php"]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0-dev"
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/promises/phpunit.xml.dist b/vendor/guzzlehttp/promises/phpunit.xml.dist
deleted file mode 100644
index 500cd53..0000000
--- a/vendor/guzzlehttp/promises/phpunit.xml.dist
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit bootstrap="./tests/bootstrap.php"
-         colors="true">
-  <testsuites>
-    <testsuite>
-      <directory>tests</directory>
-    </testsuite>
-  </testsuites>
-  <filter>
-    <whitelist>
-      <directory suffix=".php">src</directory>
-      <exclude>
-        <directory suffix="Interface.php">src/</directory>
-      </exclude>
-    </whitelist>
-  </filter>
-</phpunit>
diff --git a/vendor/guzzlehttp/promises/src/AggregateException.php b/vendor/guzzlehttp/promises/src/AggregateException.php
deleted file mode 100644
index 6a5690c..0000000
--- a/vendor/guzzlehttp/promises/src/AggregateException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Exception thrown when too many errors occur in the some() or any() methods.
- */
-class AggregateException extends RejectionException
-{
-    public function __construct($msg, array $reasons)
-    {
-        parent::__construct(
-            $reasons,
-            sprintf('%s; %d rejected promises', $msg, count($reasons))
-        );
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/CancellationException.php b/vendor/guzzlehttp/promises/src/CancellationException.php
deleted file mode 100644
index cb360b8..0000000
--- a/vendor/guzzlehttp/promises/src/CancellationException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Exception that is set as the reason for a promise that has been cancelled.
- */
-class CancellationException extends RejectionException
-{
-}
diff --git a/vendor/guzzlehttp/promises/src/EachPromise.php b/vendor/guzzlehttp/promises/src/EachPromise.php
deleted file mode 100644
index 855d833..0000000
--- a/vendor/guzzlehttp/promises/src/EachPromise.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Represents a promise that iterates over many promises and invokes
- * side-effect functions in the process.
- */
-class EachPromise implements PromisorInterface
-{
-    private $pending = [];
-
-    /** @var \Iterator */
-    private $iterable;
-
-    /** @var callable|int */
-    private $concurrency;
-
-    /** @var callable */
-    private $onFulfilled;
-
-    /** @var callable */
-    private $onRejected;
-
-    /** @var Promise */
-    private $aggregate;
-
-    /**
-     * Configuration hash can include the following key value pairs:
-     *
-     * - fulfilled: (callable) Invoked when a promise fulfills. The function
-     *   is invoked with three arguments: the fulfillment value, the index
-     *   position from the iterable list of the promise, and the aggregate
-     *   promise that manages all of the promises. The aggregate promise may
-     *   be resolved from within the callback to short-circuit the promise.
-     * - rejected: (callable) Invoked when a promise is rejected. The
-     *   function is invoked with three arguments: the rejection reason, the
-     *   index position from the iterable list of the promise, and the
-     *   aggregate promise that manages all of the promises. The aggregate
-     *   promise may be resolved from within the callback to short-circuit
-     *   the promise.
-     * - concurrency: (integer) Pass this configuration option to limit the
-     *   allowed number of outstanding concurrently executing promises,
-     *   creating a capped pool of promises. There is no limit by default.
-     *
-     * @param mixed    $iterable Promises or values to iterate.
-     * @param array    $config   Configuration options
-     */
-    public function __construct($iterable, array $config = [])
-    {
-        $this->iterable = iter_for($iterable);
-
-        if (isset($config['concurrency'])) {
-            $this->concurrency = $config['concurrency'];
-        }
-
-        if (isset($config['fulfilled'])) {
-            $this->onFulfilled = $config['fulfilled'];
-        }
-
-        if (isset($config['rejected'])) {
-            $this->onRejected = $config['rejected'];
-        }
-    }
-
-    public function promise()
-    {
-        if ($this->aggregate) {
-            return $this->aggregate;
-        }
-
-        try {
-            $this->createPromise();
-            $this->iterable->rewind();
-            $this->refillPending();
-        } catch (\Exception $e) {
-            $this->aggregate->reject($e);
-        }
-
-        return $this->aggregate;
-    }
-
-    private function createPromise()
-    {
-        $this->aggregate = new Promise(function () {
-            reset($this->pending);
-            // Consume a potentially fluctuating list of promises while
-            // ensuring that indexes are maintained (precluding array_shift).
-            while ($promise = current($this->pending)) {
-                next($this->pending);
-                $promise->wait();
-                if ($this->aggregate->getState() !== PromiseInterface::PENDING) {
-                    return;
-                }
-            }
-        });
-
-        // Clear the references when the promise is resolved.
-        $clearFn = function () {
-            $this->iterable = $this->concurrency = $this->pending = null;
-            $this->onFulfilled = $this->onRejected = null;
-        };
-
-        $this->aggregate->then($clearFn, $clearFn);
-    }
-
-    private function refillPending()
-    {
-        if (!$this->concurrency) {
-            // Add all pending promises.
-            while ($this->addPending() && $this->advanceIterator());
-            return;
-        }
-
-        // Add only up to N pending promises.
-        $concurrency = is_callable($this->concurrency)
-            ? call_user_func($this->concurrency, count($this->pending))
-            : $this->concurrency;
-        $concurrency = max($concurrency - count($this->pending), 0);
-        // Concurrency may be set to 0 to disallow new promises.
-        if (!$concurrency) {
-            return;
-        }
-        // Add the first pending promise.
-        $this->addPending();
-        // Note this is special handling for concurrency=1 so that we do
-        // not advance the iterator after adding the first promise. This
-        // helps work around issues with generators that might not have the
-        // next value to yield until promise callbacks are called.
-        while (--$concurrency
-            && $this->advanceIterator()
-            && $this->addPending());
-    }
-
-    private function addPending()
-    {
-        if (!$this->iterable || !$this->iterable->valid()) {
-            return false;
-        }
-
-        $promise = promise_for($this->iterable->current());
-        $idx = $this->iterable->key();
-
-        $this->pending[$idx] = $promise->then(
-            function ($value) use ($idx) {
-                if ($this->onFulfilled) {
-                    call_user_func(
-                        $this->onFulfilled, $value, $idx, $this->aggregate
-                    );
-                }
-                $this->step($idx);
-            },
-            function ($reason) use ($idx) {
-                if ($this->onRejected) {
-                    call_user_func(
-                        $this->onRejected, $reason, $idx, $this->aggregate
-                    );
-                }
-                $this->step($idx);
-            }
-        );
-
-        return true;
-    }
-
-    private function advanceIterator()
-    {
-        try {
-            $this->iterable->next();
-            return true;
-        } catch (\Exception $e) {
-            $this->aggregate->reject($e);
-            return false;
-        }
-    }
-
-    private function step($idx)
-    {
-        // If the promise was already resolved, then ignore this step.
-        if ($this->aggregate->getState() !== PromiseInterface::PENDING) {
-            return;
-        }
-
-        unset($this->pending[$idx]);
-        $this->advanceIterator();
-
-        if (!$this->checkIfFinished()) {
-            // Add more pending promises if possible.
-            $this->refillPending();
-        }
-    }
-
-    private function checkIfFinished()
-    {
-        if (!$this->pending && !$this->iterable->valid()) {
-            // Resolve the promise if there's nothing left to do.
-            $this->aggregate->resolve(null);
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/FulfilledPromise.php b/vendor/guzzlehttp/promises/src/FulfilledPromise.php
deleted file mode 100644
index 5596296..0000000
--- a/vendor/guzzlehttp/promises/src/FulfilledPromise.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * A promise that has been fulfilled.
- *
- * Thenning off of this promise will invoke the onFulfilled callback
- * immediately and ignore other callbacks.
- */
-class FulfilledPromise implements PromiseInterface
-{
-    private $value;
-
-    public function __construct($value)
-    {
-        if (method_exists($value, 'then')) {
-            throw new \InvalidArgumentException(
-                'You cannot create a FulfilledPromise with a promise.');
-        }
-
-        $this->value = $value;
-    }
-
-    public function then(
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        // Return itself if there is no onFulfilled function.
-        if (!$onFulfilled) {
-            return $this;
-        }
-
-        $queue = queue();
-        $p = new Promise([$queue, 'run']);
-        $value = $this->value;
-        $queue->add(static function () use ($p, $value, $onFulfilled) {
-            if ($p->getState() === self::PENDING) {
-                try {
-                    $p->resolve($onFulfilled($value));
-                } catch (\Exception $e) {
-                    $p->reject($e);
-                }
-            }
-        });
-
-        return $p;
-    }
-
-    public function otherwise(callable $onRejected)
-    {
-        return $this->then(null, $onRejected);
-    }
-
-    public function wait($unwrap = true, $defaultDelivery = null)
-    {
-        return $unwrap ? $this->value : null;
-    }
-
-    public function getState()
-    {
-        return self::FULFILLED;
-    }
-
-    public function resolve($value)
-    {
-        if ($value !== $this->value) {
-            throw new \LogicException("Cannot resolve a fulfilled promise");
-        }
-    }
-
-    public function reject($reason)
-    {
-        throw new \LogicException("Cannot reject a fulfilled promise");
-    }
-
-    public function cancel()
-    {
-        // pass
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/Promise.php b/vendor/guzzlehttp/promises/src/Promise.php
deleted file mode 100644
index c2cf969..0000000
--- a/vendor/guzzlehttp/promises/src/Promise.php
+++ /dev/null
@@ -1,268 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Promises/A+ implementation that avoids recursion when possible.
- *
- * @link https://promisesaplus.com/
- */
-class Promise implements PromiseInterface
-{
-    private $state = self::PENDING;
-    private $result;
-    private $cancelFn;
-    private $waitFn;
-    private $waitList;
-    private $handlers = [];
-
-    /**
-     * @param callable $waitFn   Fn that when invoked resolves the promise.
-     * @param callable $cancelFn Fn that when invoked cancels the promise.
-     */
-    public function __construct(
-        callable $waitFn = null,
-        callable $cancelFn = null
-    ) {
-        $this->waitFn = $waitFn;
-        $this->cancelFn = $cancelFn;
-    }
-
-    public function then(
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        if ($this->state === self::PENDING) {
-            $p = new Promise(null, [$this, 'cancel']);
-            $this->handlers[] = [$p, $onFulfilled, $onRejected];
-            $p->waitList = $this->waitList;
-            $p->waitList[] = $this;
-            return $p;
-        }
-
-        // Return a fulfilled promise and immediately invoke any callbacks.
-        if ($this->state === self::FULFILLED) {
-            return $onFulfilled
-                ? promise_for($this->result)->then($onFulfilled)
-                : promise_for($this->result);
-        }
-
-        // It's either cancelled or rejected, so return a rejected promise
-        // and immediately invoke any callbacks.
-        $rejection = rejection_for($this->result);
-        return $onRejected ? $rejection->then(null, $onRejected) : $rejection;
-    }
-
-    public function otherwise(callable $onRejected)
-    {
-        return $this->then(null, $onRejected);
-    }
-
-    public function wait($unwrap = true)
-    {
-        $this->waitIfPending();
-
-        if (!$unwrap) {
-            return null;
-        }
-
-        if ($this->result instanceof PromiseInterface) {
-            return $this->result->wait($unwrap);
-        } elseif ($this->state === self::FULFILLED) {
-            return $this->result;
-        } else {
-            // It's rejected so "unwrap" and throw an exception.
-            throw exception_for($this->result);
-        }
-    }
-
-    public function getState()
-    {
-        return $this->state;
-    }
-
-    public function cancel()
-    {
-        if ($this->state !== self::PENDING) {
-            return;
-        }
-
-        $this->waitFn = $this->waitList = null;
-
-        if ($this->cancelFn) {
-            $fn = $this->cancelFn;
-            $this->cancelFn = null;
-            try {
-                $fn();
-            } catch (\Exception $e) {
-                $this->reject($e);
-            }
-        }
-
-        // Reject the promise only if it wasn't rejected in a then callback.
-        if ($this->state === self::PENDING) {
-            $this->reject(new CancellationException('Promise has been cancelled'));
-        }
-    }
-
-    public function resolve($value)
-    {
-        $this->settle(self::FULFILLED, $value);
-    }
-
-    public function reject($reason)
-    {
-        $this->settle(self::REJECTED, $reason);
-    }
-
-    private function settle($state, $value)
-    {
-        if ($this->state !== self::PENDING) {
-            // Ignore calls with the same resolution.
-            if ($state === $this->state && $value === $this->result) {
-                return;
-            }
-            throw $this->state === $state
-                ? new \LogicException("The promise is already {$state}.")
-                : new \LogicException("Cannot change a {$this->state} promise to {$state}");
-        }
-
-        if ($value === $this) {
-            throw new \LogicException('Cannot fulfill or reject a promise with itself');
-        }
-
-        // Clear out the state of the promise but stash the handlers.
-        $this->state = $state;
-        $this->result = $value;
-        $handlers = $this->handlers;
-        $this->handlers = null;
-        $this->waitList = $this->waitFn = null;
-        $this->cancelFn = null;
-
-        if (!$handlers) {
-            return;
-        }
-
-        // If the value was not a settled promise or a thenable, then resolve
-        // it in the task queue using the correct ID.
-        if (!method_exists($value, 'then')) {
-            $id = $state === self::FULFILLED ? 1 : 2;
-            // It's a success, so resolve the handlers in the queue.
-            queue()->add(static function () use ($id, $value, $handlers) {
-                foreach ($handlers as $handler) {
-                    self::callHandler($id, $value, $handler);
-                }
-            });
-        } elseif ($value instanceof Promise
-            && $value->getState() === self::PENDING
-        ) {
-            // We can just merge our handlers onto the next promise.
-            $value->handlers = array_merge($value->handlers, $handlers);
-        } else {
-            // Resolve the handlers when the forwarded promise is resolved.
-            $value->then(
-                static function ($value) use ($handlers) {
-                    foreach ($handlers as $handler) {
-                        self::callHandler(1, $value, $handler);
-                    }
-                },
-                static function ($reason) use ($handlers) {
-                    foreach ($handlers as $handler) {
-                        self::callHandler(2, $reason, $handler);
-                    }
-                }
-            );
-        }
-    }
-
-    /**
-     * Call a stack of handlers using a specific callback index and value.
-     *
-     * @param int   $index   1 (resolve) or 2 (reject).
-     * @param mixed $value   Value to pass to the callback.
-     * @param array $handler Array of handler data (promise and callbacks).
-     *
-     * @return array Returns the next group to resolve.
-     */
-    private static function callHandler($index, $value, array $handler)
-    {
-        /** @var PromiseInterface $promise */
-        $promise = $handler[0];
-
-        // The promise may have been cancelled or resolved before placing
-        // this thunk in the queue.
-        if ($promise->getState() !== self::PENDING) {
-            return;
-        }
-
-        try {
-            if (isset($handler[$index])) {
-                $promise->resolve($handler[$index]($value));
-            } elseif ($index === 1) {
-                // Forward resolution values as-is.
-                $promise->resolve($value);
-            } else {
-                // Forward rejections down the chain.
-                $promise->reject($value);
-            }
-        } catch (\Exception $reason) {
-            $promise->reject($reason);
-        }
-    }
-
-    private function waitIfPending()
-    {
-        if ($this->state !== self::PENDING) {
-            return;
-        } elseif ($this->waitFn) {
-            $this->invokeWaitFn();
-        } elseif ($this->waitList) {
-            $this->invokeWaitList();
-        } else {
-            // If there's not wait function, then reject the promise.
-            $this->reject('Cannot wait on a promise that has '
-                . 'no internal wait function. You must provide a wait '
-                . 'function when constructing the promise to be able to '
-                . 'wait on a promise.');
-        }
-
-        queue()->run();
-
-        if ($this->state === self::PENDING) {
-            $this->reject('Invoking the wait callback did not resolve the promise');
-        }
-    }
-
-    private function invokeWaitFn()
-    {
-        try {
-            $wfn = $this->waitFn;
-            $this->waitFn = null;
-            $wfn(true);
-        } catch (\Exception $reason) {
-            if ($this->state === self::PENDING) {
-                // The promise has not been resolved yet, so reject the promise
-                // with the exception.
-                $this->reject($reason);
-            } else {
-                // The promise was already resolved, so there's a problem in
-                // the application.
-                throw $reason;
-            }
-        }
-    }
-
-    private function invokeWaitList()
-    {
-        $waitList = $this->waitList;
-        $this->waitList = null;
-
-        foreach ($waitList as $result) {
-            descend:
-            $result->waitIfPending();
-            if ($result->result instanceof Promise) {
-                $result = $result->result;
-                goto descend;
-            }
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/PromiseInterface.php b/vendor/guzzlehttp/promises/src/PromiseInterface.php
deleted file mode 100644
index 8f5f4b9..0000000
--- a/vendor/guzzlehttp/promises/src/PromiseInterface.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * A promise represents the eventual result of an asynchronous operation.
- *
- * The primary way of interacting with a promise is through its then method,
- * which registers callbacks to receive either a promise’s eventual value or
- * the reason why the promise cannot be fulfilled.
- *
- * @link https://promisesaplus.com/
- */
-interface PromiseInterface
-{
-    const PENDING = 'pending';
-    const FULFILLED = 'fulfilled';
-    const REJECTED = 'rejected';
-
-    /**
-     * Appends fulfillment and rejection handlers to the promise, and returns
-     * a new promise resolving to the return value of the called handler.
-     *
-     * @param callable $onFulfilled Invoked when the promise fulfills.
-     * @param callable $onRejected  Invoked when the promise is rejected.
-     *
-     * @return PromiseInterface
-     */
-    public function then(
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    );
-
-    /**
-     * Appends a rejection handler callback to the promise, and returns a new
-     * promise resolving to the return value of the callback if it is called,
-     * or to its original fulfillment value if the promise is instead
-     * fulfilled.
-     *
-     * @param callable $onRejected Invoked when the promise is rejected.
-     *
-     * @return PromiseInterface
-     */
-    public function otherwise(callable $onRejected);
-
-    /**
-     * Get the state of the promise ("pending", "rejected", or "fulfilled").
-     *
-     * The three states can be checked against the constants defined on
-     * PromiseInterface: PENDING, FULFILLED, and REJECTED.
-     *
-     * @return string
-     */
-    public function getState();
-
-    /**
-     * Resolve the promise with the given value.
-     *
-     * @param mixed $value
-     * @throws \RuntimeException if the promise is already resolved.
-     */
-    public function resolve($value);
-
-    /**
-     * Reject the promise with the given reason.
-     *
-     * @param mixed $reason
-     * @throws \RuntimeException if the promise is already resolved.
-     */
-    public function reject($reason);
-
-    /**
-     * Cancels the promise if possible.
-     *
-     * @link https://github.com/promises-aplus/cancellation-spec/issues/7
-     */
-    public function cancel();
-
-    /**
-     * Waits until the promise completes if possible.
-     *
-     * Pass $unwrap as true to unwrap the result of the promise, either
-     * returning the resolved value or throwing the rejected exception.
-     *
-     * If the promise cannot be waited on, then the promise will be rejected.
-     *
-     * @param bool $unwrap
-     *
-     * @return mixed
-     * @throws \LogicException if the promise has no wait function or if the
-     *                         promise does not settle after waiting.
-     */
-    public function wait($unwrap = true);
-}
diff --git a/vendor/guzzlehttp/promises/src/PromisorInterface.php b/vendor/guzzlehttp/promises/src/PromisorInterface.php
deleted file mode 100644
index b07fe32..0000000
--- a/vendor/guzzlehttp/promises/src/PromisorInterface.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Interface used with classes that return a promise.
- */
-interface PromisorInterface
-{
-    /**
-     * Returns a promise.
-     *
-     * @return PromiseInterface
-     */
-    public function promise();
-}
diff --git a/vendor/guzzlehttp/promises/src/RejectedPromise.php b/vendor/guzzlehttp/promises/src/RejectedPromise.php
deleted file mode 100644
index bd499e6..0000000
--- a/vendor/guzzlehttp/promises/src/RejectedPromise.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * A promise that has been rejected.
- *
- * Thenning off of this promise will invoke the onRejected callback
- * immediately and ignore other callbacks.
- */
-class RejectedPromise implements PromiseInterface
-{
-    private $reason;
-
-    public function __construct($reason)
-    {
-        if (method_exists($reason, 'then')) {
-            throw new \InvalidArgumentException(
-                'You cannot create a RejectedPromise with a promise.');
-        }
-
-        $this->reason = $reason;
-    }
-
-    public function then(
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
-        // If there's no onRejected callback then just return self.
-        if (!$onRejected) {
-            return $this;
-        }
-
-        $queue = queue();
-        $reason = $this->reason;
-        $p = new Promise([$queue, 'run']);
-        $queue->add(static function () use ($p, $reason, $onRejected) {
-            if ($p->getState() === self::PENDING) {
-                try {
-                    // Return a resolved promise if onRejected does not throw.
-                    $p->resolve($onRejected($reason));
-                } catch (\Exception $e) {
-                    // onRejected threw, so return a rejected promise.
-                    $p->reject($e);
-                }
-            }
-        });
-
-        return $p;
-    }
-
-    public function otherwise(callable $onRejected)
-    {
-        return $this->then(null, $onRejected);
-    }
-
-    public function wait($unwrap = true, $defaultDelivery = null)
-    {
-        if ($unwrap) {
-            throw exception_for($this->reason);
-        }
-    }
-
-    public function getState()
-    {
-        return self::REJECTED;
-    }
-
-    public function resolve($value)
-    {
-        throw new \LogicException("Cannot resolve a rejected promise");
-    }
-
-    public function reject($reason)
-    {
-        if ($reason !== $this->reason) {
-            throw new \LogicException("Cannot reject a rejected promise");
-        }
-    }
-
-    public function cancel()
-    {
-        // pass
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/RejectionException.php b/vendor/guzzlehttp/promises/src/RejectionException.php
deleted file mode 100644
index 07c1136..0000000
--- a/vendor/guzzlehttp/promises/src/RejectionException.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * A special exception that is thrown when waiting on a rejected promise.
- *
- * The reason value is available via the getReason() method.
- */
-class RejectionException extends \RuntimeException
-{
-    /** @var mixed Rejection reason. */
-    private $reason;
-
-    /**
-     * @param mixed $reason       Rejection reason.
-     * @param string $description Optional description
-     */
-    public function __construct($reason, $description = null)
-    {
-        $this->reason = $reason;
-
-        $message = 'The promise was rejected';
-
-        if ($description) {
-            $message .= ' with reason: ' . $description;
-        } elseif (is_string($reason)
-            || (is_object($reason) && method_exists($reason, '__toString'))
-        ) {
-            $message .= ' with reason: ' . $this->reason;
-        } elseif ($reason instanceof \JsonSerializable) {
-            $message .= ' with reason: '
-                . json_encode($this->reason, JSON_PRETTY_PRINT);
-        }
-
-        parent::__construct($message);
-    }
-
-    /**
-     * Returns the rejection reason.
-     *
-     * @return mixed
-     */
-    public function getReason()
-    {
-        return $this->reason;
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/TaskQueue.php b/vendor/guzzlehttp/promises/src/TaskQueue.php
deleted file mode 100644
index 5026363..0000000
--- a/vendor/guzzlehttp/promises/src/TaskQueue.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * A task queue that executes tasks in a FIFO order.
- *
- * This task queue class is used to settle promises asynchronously and
- * maintains a constant stack size. You can use the task queue asynchronously
- * by calling the `run()` function of the global task queue in an event loop.
- *
- *     GuzzleHttp\Promise\queue()->run();
- */
-class TaskQueue
-{
-    private $enableShutdown = true;
-    private $queue = [];
-
-    public function __construct($withShutdown = true)
-    {
-        if ($withShutdown) {
-            register_shutdown_function(function () {
-                if ($this->enableShutdown) {
-                    // Only run the tasks if an E_ERROR didn't occur.
-                    $err = error_get_last();
-                    if (!$err || ($err['type'] ^ E_ERROR)) {
-                        $this->run();
-                    }
-                }
-            });
-        }
-    }
-
-    /**
-     * Returns true if the queue is empty.
-     *
-     * @return bool
-     */
-    public function isEmpty()
-    {
-        return !$this->queue;
-    }
-
-    /**
-     * Adds a task to the queue that will be executed the next time run is
-     * called.
-     *
-     * @param callable $task
-     */
-    public function add(callable $task)
-    {
-        $this->queue[] = $task;
-    }
-
-    /**
-     * Execute all of the pending task in the queue.
-     */
-    public function run()
-    {
-        while ($task = array_shift($this->queue)) {
-            $task();
-        }
-    }
-
-    /**
-     * The task queue will be run and exhausted by default when the process
-     * exits IFF the exit is not the result of a PHP E_ERROR error.
-     *
-     * You can disable running the automatic shutdown of the queue by calling
-     * this function. If you disable the task queue shutdown process, then you
-     * MUST either run the task queue (as a result of running your event loop
-     * or manually using the run() method) or wait on each outstanding promise.
-     *
-     * Note: This shutdown will occur before any destructors are triggered.
-     */
-    public function disableShutdown()
-    {
-        $this->enableShutdown = false;
-    }
-}
diff --git a/vendor/guzzlehttp/promises/src/functions.php b/vendor/guzzlehttp/promises/src/functions.php
deleted file mode 100644
index 89c6569..0000000
--- a/vendor/guzzlehttp/promises/src/functions.php
+++ /dev/null
@@ -1,495 +0,0 @@
-<?php
-namespace GuzzleHttp\Promise;
-
-/**
- * Get the global task queue used for promise resolution.
- *
- * This task queue MUST be run in an event loop in order for promises to be
- * settled asynchronously. It will be automatically run when synchronously
- * waiting on a promise.
- *
- * <code>
- * while ($eventLoop->isRunning()) {
- *     GuzzleHttp\Promise\queue()->run();
- * }
- * </code>
- *
- * @return TaskQueue
- */
-function queue()
-{
-    static $queue;
-
-    if (!$queue) {
-        $queue = new TaskQueue();
-    }
-
-    return $queue;
-}
-
-/**
- * Adds a function to run in the task queue when it is next `run()` and returns
- * a promise that is fulfilled or rejected with the result.
- *
- * @param callable $task Task function to run.
- *
- * @return PromiseInterface
- */
-function task(callable $task)
-{
-    $queue = queue();
-    $promise = new Promise([$queue, 'run']);
-    $queue->add(function () use ($task, $promise) {
-        try {
-            $promise->resolve($task());
-        } catch (\Exception $e) {
-            $promise->reject($e);
-        }
-    });
-
-    return $promise;
-}
-
-/**
- * Creates a promise for a value if the value is not a promise.
- *
- * @param mixed $value Promise or value.
- *
- * @return PromiseInterface
- */
-function promise_for($value)
-{
-    if ($value instanceof PromiseInterface) {
-        return $value;
-    }
-
-    // Return a Guzzle promise that shadows the given promise.
-    if (method_exists($value, 'then')) {
-        $wfn = method_exists($value, 'wait') ? [$value, 'wait'] : null;
-        $cfn = method_exists($value, 'cancel') ? [$value, 'cancel'] : null;
-        $promise = new Promise($wfn, $cfn);
-        $value->then([$promise, 'resolve'], [$promise, 'reject']);
-        return $promise;
-    }
-
-    return new FulfilledPromise($value);
-}
-
-/**
- * Creates a rejected promise for a reason if the reason is not a promise. If
- * the provided reason is a promise, then it is returned as-is.
- *
- * @param mixed $reason Promise or reason.
- *
- * @return PromiseInterface
- */
-function rejection_for($reason)
-{
-    if ($reason instanceof PromiseInterface) {
-        return $reason;
-    }
-
-    return new RejectedPromise($reason);
-}
-
-/**
- * Create an exception for a rejected promise value.
- *
- * @param mixed $reason
- *
- * @return \Exception
- */
-function exception_for($reason)
-{
-    return $reason instanceof \Exception
-        ? $reason
-        : new RejectionException($reason);
-}
-
-/**
- * Returns an iterator for the given value.
- *
- * @param mixed $value
- *
- * @return \Iterator
- */
-function iter_for($value)
-{
-    if ($value instanceof \Iterator) {
-        return $value;
-    } elseif (is_array($value)) {
-        return new \ArrayIterator($value);
-    } else {
-        return new \ArrayIterator([$value]);
-    }
-}
-
-/**
- * Synchronously waits on a promise to resolve and returns an inspection state
- * array.
- *
- * Returns a state associative array containing a "state" key mapping to a
- * valid promise state. If the state of the promise is "fulfilled", the array
- * will contain a "value" key mapping to the fulfilled value of the promise. If
- * the promise is rejected, the array will contain a "reason" key mapping to
- * the rejection reason of the promise.
- *
- * @param PromiseInterface $promise Promise or value.
- *
- * @return array
- */
-function inspect(PromiseInterface $promise)
-{
-    try {
-        return [
-            'state' => PromiseInterface::FULFILLED,
-            'value' => $promise->wait()
-        ];
-    } catch (RejectionException $e) {
-        return ['state' => 'rejected', 'reason' => $e->getReason()];
-    } catch (\Exception $e) {
-        return ['state' => 'rejected', 'reason' => $e];
-    }
-}
-
-/**
- * Waits on all of the provided promises, but does not unwrap rejected promises
- * as thrown exception.
- *
- * Returns an array of inspection state arrays.
- *
- * @param PromiseInterface[] $promises Traversable of promises to wait upon.
- *
- * @return array
- * @see GuzzleHttp\Promise\inspect for the inspection state array format.
- */
-function inspect_all($promises)
-{
-    $results = [];
-    foreach ($promises as $key => $promise) {
-        $results[$key] = inspect($promise);
-    }
-
-    return $results;
-}
-
-/**
- * Waits on all of the provided promises and returns the fulfilled values.
- *
- * Returns an array that contains the value of each promise (in the same order
- * the promises were provided). An exception is thrown if any of the promises
- * are rejected.
- *
- * @param mixed $promises Iterable of PromiseInterface objects to wait on.
- *
- * @return array
- * @throws \Exception on error
- */
-function unwrap($promises)
-{
-    $results = [];
-    foreach ($promises as $key => $promise) {
-        $results[$key] = $promise->wait();
-    }
-
-    return $results;
-}
-
-/**
- * Given an array of promises, return a promise that is fulfilled when all the
- * items in the array are fulfilled.
- *
- * The promise's fulfillment value is an array with fulfillment values at
- * respective positions to the original array. If any promise in the array
- * rejects, the returned promise is rejected with the rejection reason.
- *
- * @param mixed $promises Promises or values.
- *
- * @return Promise
- */
-function all($promises)
-{
-    $results = [];
-    return each(
-        $promises,
-        function ($value, $idx) use (&$results) {
-            $results[$idx] = $value;
-        },
-        function ($reason, $idx, Promise $aggregate) {
-            $aggregate->reject($reason);
-        }
-    )->then(function () use (&$results) {
-        ksort($results);
-        return $results;
-    });
-}
-
-/**
- * Initiate a competitive race between multiple promises or values (values will
- * become immediately fulfilled promises).
- *
- * When count amount of promises have been fulfilled, the returned promise is
- * fulfilled with an array that contains the fulfillment values of the winners
- * in order of resolution.
- *
- * This prommise is rejected with a {@see GuzzleHttp\Promise\AggregateException}
- * if the number of fulfilled promises is less than the desired $count.
- *
- * @param int   $count    Total number of promises.
- * @param mixed $promises Promises or values.
- *
- * @return Promise
- */
-function some($count, $promises)
-{
-    $results = [];
-    $rejections = [];
-
-    return each(
-        $promises,
-        function ($value, $idx, PromiseInterface $p) use (&$results, $count) {
-            if ($p->getState() !== PromiseInterface::PENDING) {
-                return;
-            }
-            $results[$idx] = $value;
-            if (count($results) >= $count) {
-                $p->resolve(null);
-            }
-        },
-        function ($reason) use (&$rejections) {
-            $rejections[] = $reason;
-        }
-    )->then(
-        function () use (&$results, &$rejections, $count) {
-            if (count($results) !== $count) {
-                throw new AggregateException(
-                    'Not enough promises to fulfill count',
-                    $rejections
-                );
-            }
-            ksort($results);
-            return array_values($results);
-        }
-    );
-}
-
-/**
- * Like some(), with 1 as count. However, if the promise fulfills, the
- * fulfillment value is not an array of 1 but the value directly.
- *
- * @param mixed $promises Promises or values.
- *
- * @return PromiseInterface
- */
-function any($promises)
-{
-    return some(1, $promises)->then(function ($values) { return $values[0]; });
-}
-
-/**
- * Returns a promise that is fulfilled when all of the provided promises have
- * been fulfilled or rejected.
- *
- * The returned promise is fulfilled with an array of inspection state arrays.
- *
- * @param mixed $promises Promises or values.
- *
- * @return Promise
- * @see GuzzleHttp\Promise\inspect for the inspection state array format.
- */
-function settle($promises)
-{
-    $results = [];
-
-    return each(
-        $promises,
-        function ($value, $idx) use (&$results) {
-            $results[$idx] = ['state' => 'fulfilled', 'value' => $value];
-        },
-        function ($reason, $idx) use (&$results) {
-            $results[$idx] = ['state' => 'rejected', 'reason' => $reason];
-        }
-    )->then(function () use (&$results) {
-        ksort($results);
-        return $results;
-    });
-}
-
-/**
- * Given an iterator that yields promises or values, returns a promise that is
- * fulfilled with a null value when the iterator has been consumed or the
- * aggregate promise has been fulfilled or rejected.
- *
- * $onFulfilled is a function that accepts the fulfilled value, iterator
- * index, and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate promise if needed.
- *
- * $onRejected is a function that accepts the rejection reason, iterator
- * index, and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate promise if needed.
- *
- * @param mixed    $iterable    Iterator or array to iterate over.
- * @param callable $onFulfilled
- * @param callable $onRejected
- *
- * @return Promise
- */
-function each(
-    $iterable,
-    callable $onFulfilled = null,
-    callable $onRejected = null
-) {
-    return (new EachPromise($iterable, [
-        'fulfilled' => $onFulfilled,
-        'rejected'  => $onRejected
-    ]))->promise();
-}
-
-/**
- * Like each, but only allows a certain number of outstanding promises at any
- * given time.
- *
- * $concurrency may be an integer or a function that accepts the number of
- * pending promises and returns a numeric concurrency limit value to allow for
- * dynamic a concurrency size.
- *
- * @param mixed        $iterable
- * @param int|callable $concurrency
- * @param callable     $onFulfilled
- * @param callable     $onRejected
- *
- * @return mixed
- */
-function each_limit(
-    $iterable,
-    $concurrency,
-    callable $onFulfilled = null,
-    callable $onRejected = null
-) {
-    return (new EachPromise($iterable, [
-        'fulfilled'   => $onFulfilled,
-        'rejected'    => $onRejected,
-        'concurrency' => $concurrency
-    ]))->promise();
-}
-
-/**
- * Like each_limit, but ensures that no promise in the given $iterable argument
- * is rejected. If any promise is rejected, then the aggregate promise is
- * rejected with the encountered rejection.
- *
- * @param mixed        $iterable
- * @param int|callable $concurrency
- * @param callable     $onFulfilled
- *
- * @return mixed
- */
-function each_limit_all(
-    $iterable,
-    $concurrency,
-    callable $onFulfilled = null
-) {
-    return each_limit(
-        $iterable,
-        $concurrency,
-        $onFulfilled,
-        function ($reason, $idx, PromiseInterface $aggregate) {
-            $aggregate->reject($reason);
-        }
-    );
-}
-
-/**
- * Returns true if a promise is fulfilled.
- *
- * @param PromiseInterface $promise
- *
- * @return bool
- */
-function is_fulfilled(PromiseInterface $promise)
-{
-    return $promise->getState() === PromiseInterface::FULFILLED;
-}
-
-/**
- * Returns true if a promise is rejected.
- *
- * @param PromiseInterface $promise
- *
- * @return bool
- */
-function is_rejected(PromiseInterface $promise)
-{
-    return $promise->getState() === PromiseInterface::REJECTED;
-}
-
-/**
- * Returns true if a promise is fulfilled or rejected.
- *
- * @param PromiseInterface $promise
- *
- * @return bool
- */
-function is_settled(PromiseInterface $promise)
-{
-    return $promise->getState() !== PromiseInterface::PENDING;
-}
-
-/**
- * Creates a promise that is resolved using a generator that yields values or
- * promises (somewhat similar to C#'s async keyword).
- *
- * When called, the coroutine function will start an instance of the generator
- * and returns a promise that is fulfilled with its final yielded value.
- *
- * Control is returned back to the generator when the yielded promise settles.
- * This can lead to less verbose code when doing lots of sequential async calls
- * with minimal processing in between.
- *
- *     use GuzzleHttp\Promise;
- *
- *     function createPromise($value) {
- *         return new Promise\FulfilledPromise($value);
- *     }
- *
- *     $promise = Promise\coroutine(function () {
- *         $value = (yield createPromise('a'));
- *         try {
- *             $value = (yield createPromise($value . 'b'));
- *         } catch (\Exception $e) {
- *             // The promise was rejected.
- *         }
- *         yield $value . 'c';
- *     });
- *
- *     // Outputs "abc"
- *     $promise->then(function ($v) { echo $v; });
- *
- * @param callable $generatorFn Generator function to wrap into a promise.
- *
- * @return Promise
- * @link https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration
- */
-function coroutine(callable $generatorFn)
-{
-    $generator = $generatorFn();
-    return __next_coroutine($generator->current(), $generator)->then();
-}
-
-/** @internal */
-function __next_coroutine($yielded, \Generator $generator)
-{
-    return promise_for($yielded)->then(
-        function ($value) use ($generator) {
-            $nextYield = $generator->send($value);
-            return $generator->valid()
-                ? __next_coroutine($nextYield, $generator)
-                : $value;
-        },
-        function ($reason) use ($generator) {
-            $nextYield = $generator->throw(exception_for($reason));
-            // The throw was caught, so keep iterating on the coroutine
-            return __next_coroutine($nextYield, $generator);
-        }
-    );
-}
diff --git a/vendor/guzzlehttp/promises/src/functions_include.php b/vendor/guzzlehttp/promises/src/functions_include.php
deleted file mode 100644
index 34cd171..0000000
--- a/vendor/guzzlehttp/promises/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-// Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\Promise\promise_for')) {
-    require __DIR__ . '/functions.php';
-}
diff --git a/vendor/guzzlehttp/psr7/.gitignore b/vendor/guzzlehttp/psr7/.gitignore
deleted file mode 100644
index 83ec41e..0000000
--- a/vendor/guzzlehttp/psr7/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-phpunit.xml
-composer.phar
-composer.lock
-composer-test.lock
-vendor/
-build/artifacts/
-artifacts/
-docs/_build
-docs/*.pyc
-.idea
-.DS_STORE
diff --git a/vendor/guzzlehttp/psr7/.travis.yml b/vendor/guzzlehttp/psr7/.travis.yml
deleted file mode 100644
index b88f8da..0000000
--- a/vendor/guzzlehttp/psr7/.travis.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-language: php
-
-php:
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-sudo: false
-
-install:
-  - travis_retry composer install --no-interaction --prefer-source
-
-script: make test
-
-matrix:
-  allow_failures:
-    - php: hhvm
-  fast_finish: true
diff --git a/vendor/guzzlehttp/psr7/CHANGELOG.md b/vendor/guzzlehttp/psr7/CHANGELOG.md
deleted file mode 100644
index 642dc9a..0000000
--- a/vendor/guzzlehttp/psr7/CHANGELOG.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# CHANGELOG
-
-## 1.2.0 - 2015-08-15
-
-* Body as `"0"` is now properly added to a response.
-* Now allowing forward seeking in CachingStream.
-* Now properly parsing HTTP requests that contain proxy targets in
-  `parse_request`.
-* functions.php is now conditionally required.
-* user-info is no longer dropped when resolving URIs.
-
-## 1.1.0 - 2015-06-24
-
-* URIs can now be relative.
-* `multipart/form-data` headers are now overridden case-insensitively.
-* URI paths no longer encode the following characters because they are allowed
-  in URIs: "(", ")", "*", "!", "'"
-* A port is no longer added to a URI when the scheme is missing and no port is
-  present.
-
-## 1.0.0 - 2015-05-19
-
-Initial release.
-
-Currently unsupported:
-
-- `Psr\Http\Message\ServerRequestInterface`
-- `Psr\Http\Message\UploadedFileInterface`
diff --git a/vendor/guzzlehttp/psr7/LICENSE b/vendor/guzzlehttp/psr7/LICENSE
deleted file mode 100644
index 581d95f..0000000
--- a/vendor/guzzlehttp/psr7/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.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.
diff --git a/vendor/guzzlehttp/psr7/Makefile b/vendor/guzzlehttp/psr7/Makefile
deleted file mode 100644
index 9c21096..0000000
--- a/vendor/guzzlehttp/psr7/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-all: clean test
-
-test:
-	vendor/bin/phpunit $(TEST)
-
-coverage:
-	vendor/bin/phpunit --coverage-html=artifacts/coverage $(TEST)
-
-view-coverage:
-	open artifacts/coverage/index.html
-
-clean:
-	rm -rf artifacts/*
diff --git a/vendor/guzzlehttp/psr7/README.md b/vendor/guzzlehttp/psr7/README.md
deleted file mode 100644
index 0b30d5a..0000000
--- a/vendor/guzzlehttp/psr7/README.md
+++ /dev/null
@@ -1,580 +0,0 @@
-# PSR-7 Message Implementation
-
-This repository contains a partial [PSR-7](http://www.php-fig.org/psr/psr-7/)
-message implementation, several stream decorators, and some helpful
-functionality like query string parsing.  Currently missing
-ServerRequestInterface and UploadedFileInterface; a pull request for these features is welcome.
-
-
-# Stream implementation
-
-This package comes with a number of stream implementations and stream
-decorators.
-
-
-## AppendStream
-
-`GuzzleHttp\Psr7\AppendStream`
-
-Reads from multiple streams, one after the other.
-
-```php
-use GuzzleHttp\Psr7;
-
-$a = Psr7\stream_for('abc, ');
-$b = Psr7\stream_for('123.');
-$composed = new Psr7\AppendStream([$a, $b]);
-
-$composed->addStream(Psr7\stream_for(' Above all listen to me').
-
-echo $composed(); // abc, 123. Above all listen to me.
-```
-
-
-## BufferStream
-
-`GuzzleHttp\Psr7\BufferStream`
-
-Provides a buffer stream that can be written to to fill a buffer, and read
-from to remove bytes from the buffer.
-
-This stream returns a "hwm" metadata value that tells upstream consumers
-what the configured high water mark of the stream is, or the maximum
-preferred size of the buffer.
-
-```php
-use GuzzleHttp\Psr7;
-
-// When more than 1024 bytes are in the buffer, it will begin returning
-// false to writes. This is an indication that writers should slow down.
-$buffer = new Psr7\BufferStream(1024);
-```
-
-
-## CachingStream
-
-The CachingStream is used to allow seeking over previously read bytes on
-non-seekable streams. This can be useful when transferring a non-seekable
-entity body fails due to needing to rewind the stream (for example, resulting
-from a redirect). Data that is read from the remote stream will be buffered in
-a PHP temp stream so that previously read bytes are cached first in memory,
-then on disk.
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\stream_for(fopen('http://www.google.com', 'r'));
-$stream = new Psr7\CachingStream($original);
-
-$stream->read(1024);
-echo $stream->tell();
-// 1024
-
-$stream->seek(0);
-echo $stream->tell();
-// 0
-```
-
-
-## DroppingStream
-
-`GuzzleHttp\Psr7\DroppingStream`
-
-Stream decorator that begins dropping data once the size of the underlying
-stream becomes too full.
-
-```php
-use GuzzleHttp\Psr7;
-
-// Create an empty stream
-$stream = Psr7\stream_for();
-
-// Start dropping data when the stream has more than 10 bytes
-$dropping = new Psr7\DroppingStream($stream, 10);
-
-$stream->write('01234567890123456789');
-echo $stream; // 0123456789
-```
-
-
-## FnStream
-
-`GuzzleHttp\Psr7\FnStream`
-
-Compose stream implementations based on a hash of functions.
-
-Allows for easy testing and extension of a provided stream without needing to
-to create a concrete class for a simple extension point.
-
-```php
-
-use GuzzleHttp\Psr7;
-
-$stream = Psr7\stream_for('hi');
-$fnStream = Psr7\FnStream::decorate($stream, [
-    'rewind' => function () use ($stream) {
-        echo 'About to rewind - ';
-        $stream->rewind();
-        echo 'rewound!';
-    }
-]);
-
-$fnStream->rewind();
-// Outputs: About to rewind - rewound!
-```
-
-
-## InflateStream
-
-`GuzzleHttp\Psr7\InflateStream`
-
-Uses PHP's zlib.inflate filter to inflate deflate or gzipped content.
-
-This stream decorator skips the first 10 bytes of the given stream to remove
-the gzip header, converts the provided stream to a PHP stream resource,
-then appends the zlib.inflate filter. The stream is then converted back
-to a Guzzle stream resource to be used as a Guzzle stream.
-
-
-## LazyOpenStream
-
-`GuzzleHttp\Psr7\LazyOpenStream`
-
-Lazily reads or writes to a file that is opened only after an IO operation
-take place on the stream.
-
-```php
-use GuzzleHttp\Psr7;
-
-$stream = new Psr7\LazyOpenStream('/path/to/file', 'r');
-// The file has not yet been opened...
-
-echo $stream->read(10);
-// The file is opened and read from only when needed.
-```
-
-
-## LimitStream
-
-`GuzzleHttp\Psr7\LimitStream`
-
-LimitStream can be used to read a subset or slice of an existing stream object.
-This can be useful for breaking a large file into smaller pieces to be sent in
-chunks (e.g. Amazon S3's multipart upload API).
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\stream_for(fopen('/tmp/test.txt', 'r+'));
-echo $original->getSize();
-// >>> 1048576
-
-// Limit the size of the body to 1024 bytes and start reading from byte 2048
-$stream = new Psr7\LimitStream($original, 1024, 2048);
-echo $stream->getSize();
-// >>> 1024
-echo $stream->tell();
-// >>> 0
-```
-
-
-## MultipartStream
-
-`GuzzleHttp\Psr7\MultipartStream`
-
-Stream that when read returns bytes for a streaming multipart or
-multipart/form-data stream.
-
-
-## NoSeekStream
-
-`GuzzleHttp\Psr7\NoSeekStream`
-
-NoSeekStream wraps a stream and does not allow seeking.
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\stream_for('foo');
-$noSeek = new Psr7\NoSeekStream($original);
-
-echo $noSeek->read(3);
-// foo
-var_export($noSeek->isSeekable());
-// false
-$noSeek->seek(0);
-var_export($noSeek->read(3));
-// NULL
-```
-
-
-## PumpStream
-
-`GuzzleHttp\Psr7\PumpStream`
-
-Provides a read only stream that pumps data from a PHP callable.
-
-When invoking the provided callable, the PumpStream will pass the amount of
-data requested to read to the callable. The callable can choose to ignore
-this value and return fewer or more bytes than requested. Any extra data
-returned by the provided callable is buffered internally until drained using
-the read() function of the PumpStream. The provided callable MUST return
-false when there is no more data to read.
-
-
-## Implementing stream decorators
-
-Creating a stream decorator is very easy thanks to the
-`GuzzleHttp\Psr7\StreamDecoratorTrait`. This trait provides methods that
-implement `Psr\Http\Message\StreamInterface` by proxying to an underlying
-stream. Just `use` the `StreamDecoratorTrait` and implement your custom
-methods.
-
-For example, let's say we wanted to call a specific function each time the last
-byte is read from a stream. This could be implemented by overriding the
-`read()` method.
-
-```php
-use Psr\Http\Message\StreamInterface;
-use GuzzleHttp\Psr7\StreamDecoratorTrait;
-
-class EofCallbackStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    private $callback;
-
-    public function __construct(StreamInterface $stream, callable $cb)
-    {
-        $this->stream = $stream;
-        $this->callback = $cb;
-    }
-
-    public function read($length)
-    {
-        $result = $this->stream->read($length);
-
-        // Invoke the callback when EOF is hit.
-        if ($this->eof()) {
-            call_user_func($this->callback);
-        }
-
-        return $result;
-    }
-}
-```
-
-This decorator could be added to any existing stream and used like so:
-
-```php
-use GuzzleHttp\Psr7;
-
-$original = Psr7\stream_for('foo');
-
-$eofStream = new EofCallbackStream($original, function () {
-    echo 'EOF!';
-});
-
-$eofStream->read(2);
-$eofStream->read(1);
-// echoes "EOF!"
-$eofStream->seek(0);
-$eofStream->read(3);
-// echoes "EOF!"
-```
-
-
-## PHP StreamWrapper
-
-You can use the `GuzzleHttp\Psr7\StreamWrapper` class if you need to use a
-PSR-7 stream as a PHP stream resource.
-
-Use the `GuzzleHttp\Psr7\StreamWrapper::getResource()` method to create a PHP
-stream from a PSR-7 stream.
-
-```php
-use GuzzleHttp\Psr7\StreamWrapper;
-
-$stream = GuzzleHttp\Psr7\stream_for('hello!');
-$resource = StreamWrapper::getResource($stream);
-echo fread($resource, 6); // outputs hello!
-```
-
-
-# Function API
-
-There are various functions available under the `GuzzleHttp\Psr7` namespace.
-
-
-## `function str`
-
-`function str(MessageInterface $message)`
-
-Returns the string representation of an HTTP message.
-
-```php
-$request = new GuzzleHttp\Psr7\Request('GET', 'http://example.com');
-echo GuzzleHttp\Psr7\str($request);
-```
-
-
-## `function uri_for`
-
-`function uri_for($uri)`
-
-This function accepts a string or `Psr\Http\Message\UriInterface` and returns a
-UriInterface for the given value. If the value is already a `UriInterface`, it
-is returned as-is.
-
-```php
-$uri = GuzzleHttp\Psr7\uri_for('http://example.com');
-assert($uri === GuzzleHttp\Psr7\uri_for($uri));
-```
-
-
-## `function stream_for`
-
-`function stream_for($resource = '', array $options = [])`
-
-Create a new stream based on the input type.
-
-Options is an associative array that can contain the following keys:
-
-* - metadata: Array of custom metadata.
-* - size: Size of the stream.
-
-This method accepts the following `$resource` types:
-
-- `Psr\Http\Message\StreamInterface`: Returns the value as-is.
-- `string`: Creates a stream object that uses the given string as the contents.
-- `resource`: Creates a stream object that wraps the given PHP stream resource.
-- `Iterator`: If the provided value implements `Iterator`, then a read-only
-  stream object will be created that wraps the given iterable. Each time the
-  stream is read from, data from the iterator will fill a buffer and will be
-  continuously called until the buffer is equal to the requested read size.
-  Subsequent read calls will first read from the buffer and then call `next`
-  on the underlying iterator until it is exhausted.
-- `object` with `__toString()`: If the object has the `__toString()` method,
-  the object will be cast to a string and then a stream will be returned that
-  uses the string value.
-- `NULL`: When `null` is passed, an empty stream object is returned.
-- `callable` When a callable is passed, a read-only stream object will be
-  created that invokes the given callable. The callable is invoked with the
-  number of suggested bytes to read. The callable can return any number of
-  bytes, but MUST return `false` when there is no more data to return. The
-  stream object that wraps the callable will invoke the callable until the
-  number of requested bytes are available. Any additional bytes will be
-  buffered and used in subsequent reads.
-
-```php
-$stream = GuzzleHttp\Psr7\stream_for('foo');
-$stream = GuzzleHttp\Psr7\stream_for(fopen('/path/to/file', 'r'));
-
-$generator function ($bytes) {
-    for ($i = 0; $i < $bytes; $i++) {
-        yield ' ';
-    }
-}
-
-$stream = GuzzleHttp\Psr7\stream_for($generator(100));
-```
-
-
-## `function parse_header`
-
-`function parse_header($header)`
-
-Parse an array of header values containing ";" separated data into an array of
-associative arrays representing the header key value pair data of the header.
-When a parameter does not contain a value, but just contains a key, this
-function will inject a key with a '' string value.
-
-
-## `function normalize_header`
-
-`function normalize_header($header)`
-
-Converts an array of header values that may contain comma separated headers
-into an array of headers with no comma separated values.
-
-
-## `function modify_request`
-
-`function modify_request(RequestInterface $request, array $changes)`
-
-Clone and modify a request with the given changes. This method is useful for
-reducing the number of clones needed to mutate a message.
-
-The changes can be one of:
-
-- method: (string) Changes the HTTP method.
-- set_headers: (array) Sets the given headers.
-- remove_headers: (array) Remove the given headers.
-- body: (mixed) Sets the given body.
-- uri: (UriInterface) Set the URI.
-- query: (string) Set the query string value of the URI.
-- version: (string) Set the protocol version.
-
-
-## `function rewind_body`
-
-`function rewind_body(MessageInterface $message)`
-
-Attempts to rewind a message body and throws an exception on failure. The body
-of the message will only be rewound if a call to `tell()` returns a value other
-than `0`.
-
-
-## `function try_fopen`
-
-`function try_fopen($filename, $mode)`
-
-Safely opens a PHP stream resource using a filename.
-
-When fopen fails, PHP normally raises a warning. This function adds an error
-handler that checks for errors and throws an exception instead.
-
-
-## `function copy_to_string`
-
-`function copy_to_string(StreamInterface $stream, $maxLen = -1)`
-
-Copy the contents of a stream into a string until the given number of bytes
-have been read.
-
-
-## `function copy_to_stream`
-
-`function copy_to_stream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)`
-
-Copy the contents of a stream into another stream until the given number of
-bytes have been read.
-
-
-## `function hash`
-
-`function hash(StreamInterface $stream, $algo, $rawOutput = false)`
-
-Calculate a hash of a Stream. This method reads the entire stream to calculate
-a rolling hash (based on PHP's hash_init functions).
-
-
-## `function readline`
-
-`function readline(StreamInterface $stream, $maxLength = null)`
-
-Read a line from the stream up to the maximum allowed buffer length.
-
-
-## `function parse_request`
-
-`function parse_request($message)`
-
-Parses a request message string into a request object.
-
-
-## `function parse_response`
-
-`function parse_response($message)`
-
-Parses a response message string into a response object.
-
-
-## `function parse_query`
-
-`function parse_query($str, $urlEncoding = true)`
-
-Parse a query string into an associative array.
-
-If multiple values are found for the same key, the value of that key value pair
-will become an array. This function does not parse nested PHP style arrays into
-an associative array (e.g., `foo[a]=1&foo[b]=2` will be parsed into
-`['foo[a]' => '1', 'foo[b]' => '2']`).
-
-
-## `function build_query`
-
-`function build_query(array $params, $encoding = PHP_QUERY_RFC3986)`
-
-Build a query string from an array of key value pairs.
-
-This function can use the return value of parseQuery() to build a query string.
-This function does not modify the provided keys when an array is encountered
-(like http_build_query would).
-
-
-## `function mimetype_from_filename`
-
-`function mimetype_from_filename($filename)`
-
-Determines the mimetype of a file by looking at its extension.
-
-
-## `function mimetype_from_extension`
-
-`function mimetype_from_extension($extension)`
-
-Maps a file extensions to a mimetype.
-
-
-# Static URI methods
-
-The `GuzzleHttp\Psr7\Uri` class has several static methods to manipulate URIs.
-
-
-## `GuzzleHttp\Psr7\Uri::removeDotSegments`
-
-`public static function removeDotSegments($path) -> UriInterface`
-
-Removes dot segments from a path and returns the new path.
-
-See http://tools.ietf.org/html/rfc3986#section-5.2.4
-
-
-## `GuzzleHttp\Psr7\Uri::resolve`
-
-`public static function resolve(UriInterface $base, $rel) -> UriInterface`
-
-Resolve a base URI with a relative URI and return a new URI.
-
-See http://tools.ietf.org/html/rfc3986#section-5
-
-
-## `GuzzleHttp\Psr7\Uri::withQueryValue`
-
-`public static function withQueryValue(UriInterface $uri, $key, $value) -> UriInterface`
-
-Create a new URI with a specific query string value.
-
-Any existing query string values that exactly match the provided key are
-removed and replaced with the given key value pair.
-
-Note: this function will convert "=" to "%3D" and "&" to "%26".
-
-
-## `GuzzleHttp\Psr7\Uri::withoutQueryValue`
-
-`public static function withoutQueryValue(UriInterface $uri, $key, $value) -> UriInterface`
-
-Create a new URI with a specific query string value removed.
-
-Any existing query string values that exactly match the provided key are
-removed.
-
-Note: this function will convert "=" to "%3D" and "&" to "%26".
-
-
-## `GuzzleHttp\Psr7\Uri::fromParts`
-
-`public static function fromParts(array $parts) -> UriInterface`
-
-Create a `GuzzleHttp\Psr7\Uri` object from a hash of `parse_url` parts.
-
-
-# Not Implemented
-
-A few aspects of PSR-7 are not implemented in this project. A pull request for
-any of these features is welcome:
-
-- `Psr\Http\Message\ServerRequestInterface`
-- `Psr\Http\Message\UploadedFileInterface`
diff --git a/vendor/guzzlehttp/psr7/composer.json b/vendor/guzzlehttp/psr7/composer.json
deleted file mode 100644
index f2e9d4c..0000000
--- a/vendor/guzzlehttp/psr7/composer.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "name": "guzzlehttp/psr7",
-    "type": "library",
-    "description": "PSR-7 message implementation",
-    "keywords": ["message", "stream", "http", "uri"],
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Michael Dowling",
-            "email": "mtdowling@gmail.com",
-            "homepage": "https://github.com/mtdowling"
-        }
-    ],
-    "require": {
-        "php": ">=5.4.0",
-        "psr/http-message": "~1.0"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.0"
-    },
-    "provide": {
-        "psr/http-message-implementation": "1.0"
-    },
-    "autoload": {
-        "psr-4": {
-            "GuzzleHttp\\Psr7\\": "src/"
-        },
-        "files": ["src/functions_include.php"]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0-dev"
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/phpunit.xml.dist b/vendor/guzzlehttp/psr7/phpunit.xml.dist
deleted file mode 100644
index 500cd53..0000000
--- a/vendor/guzzlehttp/psr7/phpunit.xml.dist
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit bootstrap="./tests/bootstrap.php"
-         colors="true">
-  <testsuites>
-    <testsuite>
-      <directory>tests</directory>
-    </testsuite>
-  </testsuites>
-  <filter>
-    <whitelist>
-      <directory suffix=".php">src</directory>
-      <exclude>
-        <directory suffix="Interface.php">src/</directory>
-      </exclude>
-    </whitelist>
-  </filter>
-</phpunit>
diff --git a/vendor/guzzlehttp/psr7/src/AppendStream.php b/vendor/guzzlehttp/psr7/src/AppendStream.php
deleted file mode 100644
index 23039fd..0000000
--- a/vendor/guzzlehttp/psr7/src/AppendStream.php
+++ /dev/null
@@ -1,233 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Reads from multiple streams, one after the other.
- *
- * This is a read-only stream decorator.
- */
-class AppendStream implements StreamInterface
-{
-    /** @var StreamInterface[] Streams being decorated */
-    private $streams = [];
-
-    private $seekable = true;
-    private $current = 0;
-    private $pos = 0;
-    private $detached = false;
-
-    /**
-     * @param StreamInterface[] $streams Streams to decorate. Each stream must
-     *                                   be readable.
-     */
-    public function __construct(array $streams = [])
-    {
-        foreach ($streams as $stream) {
-            $this->addStream($stream);
-        }
-    }
-
-    public function __toString()
-    {
-        try {
-            $this->rewind();
-            return $this->getContents();
-        } catch (\Exception $e) {
-            return '';
-        }
-    }
-
-    /**
-     * Add a stream to the AppendStream
-     *
-     * @param StreamInterface $stream Stream to append. Must be readable.
-     *
-     * @throws \InvalidArgumentException if the stream is not readable
-     */
-    public function addStream(StreamInterface $stream)
-    {
-        if (!$stream->isReadable()) {
-            throw new \InvalidArgumentException('Each stream must be readable');
-        }
-
-        // The stream is only seekable if all streams are seekable
-        if (!$stream->isSeekable()) {
-            $this->seekable = false;
-        }
-
-        $this->streams[] = $stream;
-    }
-
-    public function getContents()
-    {
-        return copy_to_string($this);
-    }
-
-    /**
-     * Closes each attached stream.
-     *
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        $this->pos = $this->current = 0;
-
-        foreach ($this->streams as $stream) {
-            $stream->close();
-        }
-
-        $this->streams = [];
-    }
-
-    /**
-     * Detaches each attached stream
-     *
-     * {@inheritdoc}
-     */
-    public function detach()
-    {
-        $this->close();
-        $this->detached = true;
-    }
-
-    public function tell()
-    {
-        return $this->pos;
-    }
-
-    /**
-     * Tries to calculate the size by adding the size of each stream.
-     *
-     * If any of the streams do not return a valid number, then the size of the
-     * append stream cannot be determined and null is returned.
-     *
-     * {@inheritdoc}
-     */
-    public function getSize()
-    {
-        $size = 0;
-
-        foreach ($this->streams as $stream) {
-            $s = $stream->getSize();
-            if ($s === null) {
-                return null;
-            }
-            $size += $s;
-        }
-
-        return $size;
-    }
-
-    public function eof()
-    {
-        return !$this->streams ||
-            ($this->current >= count($this->streams) - 1 &&
-             $this->streams[$this->current]->eof());
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    /**
-     * Attempts to seek to the given position. Only supports SEEK_SET.
-     *
-     * {@inheritdoc}
-     */
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        if (!$this->seekable) {
-            throw new \RuntimeException('This AppendStream is not seekable');
-        } elseif ($whence !== SEEK_SET) {
-            throw new \RuntimeException('The AppendStream can only seek with SEEK_SET');
-        }
-
-        $this->pos = $this->current = 0;
-
-        // Rewind each stream
-        foreach ($this->streams as $i => $stream) {
-            try {
-                $stream->rewind();
-            } catch (\Exception $e) {
-                throw new \RuntimeException('Unable to seek stream '
-                    . $i . ' of the AppendStream', 0, $e);
-            }
-        }
-
-        // Seek to the actual position by reading from each stream
-        while ($this->pos < $offset && !$this->eof()) {
-            $result = $this->read(min(8096, $offset - $this->pos));
-            if ($result === '') {
-                break;
-            }
-        }
-    }
-
-    /**
-     * Reads from all of the appended streams until the length is met or EOF.
-     *
-     * {@inheritdoc}
-     */
-    public function read($length)
-    {
-        $buffer = '';
-        $total = count($this->streams) - 1;
-        $remaining = $length;
-        $progressToNext = false;
-
-        while ($remaining > 0) {
-
-            // Progress to the next stream if needed.
-            if ($progressToNext || $this->streams[$this->current]->eof()) {
-                $progressToNext = false;
-                if ($this->current === $total) {
-                    break;
-                }
-                $this->current++;
-            }
-
-            $result = $this->streams[$this->current]->read($remaining);
-
-            // Using a loose comparison here to match on '', false, and null
-            if ($result == null) {
-                $progressToNext = true;
-                continue;
-            }
-
-            $buffer .= $result;
-            $remaining = $length - strlen($buffer);
-        }
-
-        $this->pos += strlen($buffer);
-
-        return $buffer;
-    }
-
-    public function isReadable()
-    {
-        return true;
-    }
-
-    public function isWritable()
-    {
-        return false;
-    }
-
-    public function isSeekable()
-    {
-        return $this->seekable;
-    }
-
-    public function write($string)
-    {
-        throw new \RuntimeException('Cannot write to an AppendStream');
-    }
-
-    public function getMetadata($key = null)
-    {
-        return $key ? null : [];
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/BufferStream.php b/vendor/guzzlehttp/psr7/src/BufferStream.php
deleted file mode 100644
index af4d4c2..0000000
--- a/vendor/guzzlehttp/psr7/src/BufferStream.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Provides a buffer stream that can be written to to fill a buffer, and read
- * from to remove bytes from the buffer.
- *
- * This stream returns a "hwm" metadata value that tells upstream consumers
- * what the configured high water mark of the stream is, or the maximum
- * preferred size of the buffer.
- */
-class BufferStream implements StreamInterface
-{
-    private $hwm;
-    private $buffer = '';
-
-    /**
-     * @param int $hwm High water mark, representing the preferred maximum
-     *                 buffer size. If the size of the buffer exceeds the high
-     *                 water mark, then calls to write will continue to succeed
-     *                 but will return false to inform writers to slow down
-     *                 until the buffer has been drained by reading from it.
-     */
-    public function __construct($hwm = 16384)
-    {
-        $this->hwm = $hwm;
-    }
-
-    public function __toString()
-    {
-        return $this->getContents();
-    }
-
-    public function getContents()
-    {
-        $buffer = $this->buffer;
-        $this->buffer = '';
-
-        return $buffer;
-    }
-
-    public function close()
-    {
-        $this->buffer = '';
-    }
-
-    public function detach()
-    {
-        $this->close();
-    }
-
-    public function getSize()
-    {
-        return strlen($this->buffer);
-    }
-
-    public function isReadable()
-    {
-        return true;
-    }
-
-    public function isWritable()
-    {
-        return true;
-    }
-
-    public function isSeekable()
-    {
-        return false;
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        throw new \RuntimeException('Cannot seek a BufferStream');
-    }
-
-    public function eof()
-    {
-        return strlen($this->buffer) === 0;
-    }
-
-    public function tell()
-    {
-        throw new \RuntimeException('Cannot determine the position of a BufferStream');
-    }
-
-    /**
-     * Reads data from the buffer.
-     */
-    public function read($length)
-    {
-        $currentLength = strlen($this->buffer);
-
-        if ($length >= $currentLength) {
-            // No need to slice the buffer because we don't have enough data.
-            $result = $this->buffer;
-            $this->buffer = '';
-        } else {
-            // Slice up the result to provide a subset of the buffer.
-            $result = substr($this->buffer, 0, $length);
-            $this->buffer = substr($this->buffer, $length);
-        }
-
-        return $result;
-    }
-
-    /**
-     * Writes data to the buffer.
-     */
-    public function write($string)
-    {
-        $this->buffer .= $string;
-
-        // TODO: What should happen here?
-        if (strlen($this->buffer) >= $this->hwm) {
-            return false;
-        }
-
-        return strlen($string);
-    }
-
-    public function getMetadata($key = null)
-    {
-        if ($key == 'hwm') {
-            return $this->hwm;
-        }
-
-        return $key ? null : [];
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/CachingStream.php b/vendor/guzzlehttp/psr7/src/CachingStream.php
deleted file mode 100644
index 796d581..0000000
--- a/vendor/guzzlehttp/psr7/src/CachingStream.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator that can cache previously read bytes from a sequentially
- * read stream.
- */
-class CachingStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    /** @var StreamInterface Stream being wrapped */
-    private $remoteStream;
-
-    /** @var int Number of bytes to skip reading due to a write on the buffer */
-    private $skipReadBytes = 0;
-
-    /**
-     * We will treat the buffer object as the body of the stream
-     *
-     * @param StreamInterface $stream Stream to cache
-     * @param StreamInterface $target Optionally specify where data is cached
-     */
-    public function __construct(
-        StreamInterface $stream,
-        StreamInterface $target = null
-    ) {
-        $this->remoteStream = $stream;
-        $this->stream = $target ?: new Stream(fopen('php://temp', 'r+'));
-    }
-
-    public function getSize()
-    {
-        return max($this->stream->getSize(), $this->remoteStream->getSize());
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        if ($whence == SEEK_SET) {
-            $byte = $offset;
-        } elseif ($whence == SEEK_CUR) {
-            $byte = $offset + $this->tell();
-        } elseif ($whence == SEEK_END) {
-            $size = $this->remoteStream->getSize();
-            if ($size === null) {
-                $size = $this->cacheEntireStream();
-            }
-            // Because 0 is the first byte, we seek to size - 1.
-            $byte = $size - 1 - $offset;
-        } else {
-            throw new \InvalidArgumentException('Invalid whence');
-        }
-
-        $diff = $byte - $this->stream->getSize();
-
-        if ($diff > 0) {
-            // If the seek byte is greater the number of read bytes, then read
-            // the difference of bytes to cache the bytes and inherently seek.
-            $this->read($diff);
-        } else {
-            // We can just do a normal seek since we've already seen this byte.
-            $this->stream->seek($byte);
-        }
-    }
-
-    public function read($length)
-    {
-        // Perform a regular read on any previously read data from the buffer
-        $data = $this->stream->read($length);
-        $remaining = $length - strlen($data);
-
-        // More data was requested so read from the remote stream
-        if ($remaining) {
-            // If data was written to the buffer in a position that would have
-            // been filled from the remote stream, then we must skip bytes on
-            // the remote stream to emulate overwriting bytes from that
-            // position. This mimics the behavior of other PHP stream wrappers.
-            $remoteData = $this->remoteStream->read(
-                $remaining + $this->skipReadBytes
-            );
-
-            if ($this->skipReadBytes) {
-                $len = strlen($remoteData);
-                $remoteData = substr($remoteData, $this->skipReadBytes);
-                $this->skipReadBytes = max(0, $this->skipReadBytes - $len);
-            }
-
-            $data .= $remoteData;
-            $this->stream->write($remoteData);
-        }
-
-        return $data;
-    }
-
-    public function write($string)
-    {
-        // When appending to the end of the currently read stream, you'll want
-        // to skip bytes from being read from the remote stream to emulate
-        // other stream wrappers. Basically replacing bytes of data of a fixed
-        // length.
-        $overflow = (strlen($string) + $this->tell()) - $this->remoteStream->tell();
-        if ($overflow > 0) {
-            $this->skipReadBytes += $overflow;
-        }
-
-        return $this->stream->write($string);
-    }
-
-    public function eof()
-    {
-        return $this->stream->eof() && $this->remoteStream->eof();
-    }
-
-    /**
-     * Close both the remote stream and buffer stream
-     */
-    public function close()
-    {
-        $this->remoteStream->close() && $this->stream->close();
-    }
-
-    private function cacheEntireStream()
-    {
-        $target = new FnStream(['write' => 'strlen']);
-        copy_to_stream($this, $target);
-
-        return $this->tell();
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/DroppingStream.php b/vendor/guzzlehttp/psr7/src/DroppingStream.php
deleted file mode 100644
index 8935c80..0000000
--- a/vendor/guzzlehttp/psr7/src/DroppingStream.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator that begins dropping data once the size of the underlying
- * stream becomes too full.
- */
-class DroppingStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    private $maxLength;
-
-    /**
-     * @param StreamInterface $stream    Underlying stream to decorate.
-     * @param int             $maxLength Maximum size before dropping data.
-     */
-    public function __construct(StreamInterface $stream, $maxLength)
-    {
-        $this->stream = $stream;
-        $this->maxLength = $maxLength;
-    }
-
-    public function write($string)
-    {
-        $diff = $this->maxLength - $this->stream->getSize();
-
-        // Begin returning 0 when the underlying stream is too large.
-        if ($diff <= 0) {
-            return 0;
-        }
-
-        // Write the stream or a subset of the stream if needed.
-        if (strlen($string) < $diff) {
-            return $this->stream->write($string);
-        }
-
-        return $this->stream->write(substr($string, 0, $diff));
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/FnStream.php b/vendor/guzzlehttp/psr7/src/FnStream.php
deleted file mode 100644
index cc9b445..0000000
--- a/vendor/guzzlehttp/psr7/src/FnStream.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Compose stream implementations based on a hash of functions.
- *
- * Allows for easy testing and extension of a provided stream without needing
- * to create a concrete class for a simple extension point.
- */
-class FnStream implements StreamInterface
-{
-    /** @var array */
-    private $methods;
-
-    /** @var array Methods that must be implemented in the given array */
-    private static $slots = ['__toString', 'close', 'detach', 'rewind',
-        'getSize', 'tell', 'eof', 'isSeekable', 'seek', 'isWritable', 'write',
-        'isReadable', 'read', 'getContents', 'getMetadata'];
-
-    /**
-     * @param array $methods Hash of method name to a callable.
-     */
-    public function __construct(array $methods)
-    {
-        $this->methods = $methods;
-
-        // Create the functions on the class
-        foreach ($methods as $name => $fn) {
-            $this->{'_fn_' . $name} = $fn;
-        }
-    }
-
-    /**
-     * Lazily determine which methods are not implemented.
-     * @throws \BadMethodCallException
-     */
-    public function __get($name)
-    {
-        throw new \BadMethodCallException(str_replace('_fn_', '', $name)
-            . '() is not implemented in the FnStream');
-    }
-
-    /**
-     * The close method is called on the underlying stream only if possible.
-     */
-    public function __destruct()
-    {
-        if (isset($this->_fn_close)) {
-            call_user_func($this->_fn_close);
-        }
-    }
-
-    /**
-     * Adds custom functionality to an underlying stream by intercepting
-     * specific method calls.
-     *
-     * @param StreamInterface $stream  Stream to decorate
-     * @param array           $methods Hash of method name to a closure
-     *
-     * @return FnStream
-     */
-    public static function decorate(StreamInterface $stream, array $methods)
-    {
-        // If any of the required methods were not provided, then simply
-        // proxy to the decorated stream.
-        foreach (array_diff(self::$slots, array_keys($methods)) as $diff) {
-            $methods[$diff] = [$stream, $diff];
-        }
-
-        return new self($methods);
-    }
-
-    public function __toString()
-    {
-        return call_user_func($this->_fn___toString);
-    }
-
-    public function close()
-    {
-        return call_user_func($this->_fn_close);
-    }
-
-    public function detach()
-    {
-        return call_user_func($this->_fn_detach);
-    }
-
-    public function getSize()
-    {
-        return call_user_func($this->_fn_getSize);
-    }
-
-    public function tell()
-    {
-        return call_user_func($this->_fn_tell);
-    }
-
-    public function eof()
-    {
-        return call_user_func($this->_fn_eof);
-    }
-
-    public function isSeekable()
-    {
-        return call_user_func($this->_fn_isSeekable);
-    }
-
-    public function rewind()
-    {
-        call_user_func($this->_fn_rewind);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        call_user_func($this->_fn_seek, $offset, $whence);
-    }
-
-    public function isWritable()
-    {
-        return call_user_func($this->_fn_isWritable);
-    }
-
-    public function write($string)
-    {
-        return call_user_func($this->_fn_write, $string);
-    }
-
-    public function isReadable()
-    {
-        return call_user_func($this->_fn_isReadable);
-    }
-
-    public function read($length)
-    {
-        return call_user_func($this->_fn_read, $length);
-    }
-
-    public function getContents()
-    {
-        return call_user_func($this->_fn_getContents);
-    }
-
-    public function getMetadata($key = null)
-    {
-        return call_user_func($this->_fn_getMetadata, $key);
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/InflateStream.php b/vendor/guzzlehttp/psr7/src/InflateStream.php
deleted file mode 100644
index 2c8628b..0000000
--- a/vendor/guzzlehttp/psr7/src/InflateStream.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Uses PHP's zlib.inflate filter to inflate deflate or gzipped content.
- *
- * This stream decorator skips the first 10 bytes of the given stream to remove
- * the gzip header, converts the provided stream to a PHP stream resource,
- * then appends the zlib.inflate filter. The stream is then converted back
- * to a Guzzle stream resource to be used as a Guzzle stream.
- *
- * @link http://tools.ietf.org/html/rfc1952
- * @link http://php.net/manual/en/filters.compression.php
- */
-class InflateStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    public function __construct(StreamInterface $stream)
-    {
-        // Skip the first 10 bytes
-        $stream = new LimitStream($stream, -1, 10);
-        $resource = StreamWrapper::getResource($stream);
-        stream_filter_append($resource, 'zlib.inflate', STREAM_FILTER_READ);
-        $this->stream = new Stream($resource);
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php b/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
deleted file mode 100644
index 02cec3a..0000000
--- a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Lazily reads or writes to a file that is opened only after an IO operation
- * take place on the stream.
- */
-class LazyOpenStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    /** @var string File to open */
-    private $filename;
-
-    /** @var string $mode */
-    private $mode;
-
-    /**
-     * @param string $filename File to lazily open
-     * @param string $mode     fopen mode to use when opening the stream
-     */
-    public function __construct($filename, $mode)
-    {
-        $this->filename = $filename;
-        $this->mode = $mode;
-    }
-
-    /**
-     * Creates the underlying stream lazily when required.
-     *
-     * @return StreamInterface
-     */
-    protected function createStream()
-    {
-        return stream_for(try_fopen($this->filename, $this->mode));
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/LimitStream.php b/vendor/guzzlehttp/psr7/src/LimitStream.php
deleted file mode 100644
index 7f2298b..0000000
--- a/vendor/guzzlehttp/psr7/src/LimitStream.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-
-/**
- * Decorator used to return only a subset of a stream
- */
-class LimitStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    /** @var int Offset to start reading from */
-    private $offset;
-
-    /** @var int Limit the number of bytes that can be read */
-    private $limit;
-
-    /**
-     * @param StreamInterface $stream Stream to wrap
-     * @param int             $limit  Total number of bytes to allow to be read
-     *                                from the stream. Pass -1 for no limit.
-     * @param int|null        $offset Position to seek to before reading (only
-     *                                works on seekable streams).
-     */
-    public function __construct(
-        StreamInterface $stream,
-        $limit = -1,
-        $offset = 0
-    ) {
-        $this->stream = $stream;
-        $this->setLimit($limit);
-        $this->setOffset($offset);
-    }
-
-    public function eof()
-    {
-        // Always return true if the underlying stream is EOF
-        if ($this->stream->eof()) {
-            return true;
-        }
-
-        // No limit and the underlying stream is not at EOF
-        if ($this->limit == -1) {
-            return false;
-        }
-
-        return $this->stream->tell() >= $this->offset + $this->limit;
-    }
-
-    /**
-     * Returns the size of the limited subset of data
-     * {@inheritdoc}
-     */
-    public function getSize()
-    {
-        if (null === ($length = $this->stream->getSize())) {
-            return null;
-        } elseif ($this->limit == -1) {
-            return $length - $this->offset;
-        } else {
-            return min($this->limit, $length - $this->offset);
-        }
-    }
-
-    /**
-     * Allow for a bounded seek on the read limited stream
-     * {@inheritdoc}
-     */
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        if ($whence !== SEEK_SET || $offset < 0) {
-            throw new \RuntimeException(sprintf(
-                'Cannot seek to offset % with whence %s',
-                $offset,
-                $whence
-            ));
-        }
-
-        $offset += $this->offset;
-
-        if ($this->limit !== -1) {
-            if ($offset > $this->offset + $this->limit) {
-                $offset = $this->offset + $this->limit;
-            }
-        }
-
-        $this->stream->seek($offset);
-    }
-
-    /**
-     * Give a relative tell()
-     * {@inheritdoc}
-     */
-    public function tell()
-    {
-        return $this->stream->tell() - $this->offset;
-    }
-
-    /**
-     * Set the offset to start limiting from
-     *
-     * @param int $offset Offset to seek to and begin byte limiting from
-     *
-     * @throws \RuntimeException if the stream cannot be seeked.
-     */
-    public function setOffset($offset)
-    {
-        $current = $this->stream->tell();
-
-        if ($current !== $offset) {
-            // If the stream cannot seek to the offset position, then read to it
-            if ($this->stream->isSeekable()) {
-                $this->stream->seek($offset);
-            } elseif ($current > $offset) {
-                throw new \RuntimeException("Could not seek to stream offset $offset");
-            } else {
-                $this->stream->read($offset - $current);
-            }
-        }
-
-        $this->offset = $offset;
-    }
-
-    /**
-     * Set the limit of bytes that the decorator allows to be read from the
-     * stream.
-     *
-     * @param int $limit Number of bytes to allow to be read from the stream.
-     *                   Use -1 for no limit.
-     */
-    public function setLimit($limit)
-    {
-        $this->limit = $limit;
-    }
-
-    public function read($length)
-    {
-        if ($this->limit == -1) {
-            return $this->stream->read($length);
-        }
-
-        // Check if the current position is less than the total allowed
-        // bytes + original offset
-        $remaining = ($this->offset + $this->limit) - $this->stream->tell();
-        if ($remaining > 0) {
-            // Only return the amount of requested data, ensuring that the byte
-            // limit is not exceeded
-            return $this->stream->read(min($remaining, $length));
-        }
-
-        return '';
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/MessageTrait.php b/vendor/guzzlehttp/psr7/src/MessageTrait.php
deleted file mode 100644
index 123205c..0000000
--- a/vendor/guzzlehttp/psr7/src/MessageTrait.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Trait implementing functionality common to requests and responses.
- */
-trait MessageTrait
-{
-    /** @var array Cached HTTP header collection with lowercase key to values */
-    private $headers = [];
-
-    /** @var array Actual key to list of values per header. */
-    private $headerLines = [];
-
-    /** @var string */
-    private $protocol = '1.1';
-
-    /** @var StreamInterface */
-    private $stream;
-
-    public function getProtocolVersion()
-    {
-        return $this->protocol;
-    }
-
-    public function withProtocolVersion($version)
-    {
-        if ($this->protocol === $version) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->protocol = $version;
-        return $new;
-    }
-
-    public function getHeaders()
-    {
-        return $this->headerLines;
-    }
-
-    public function hasHeader($header)
-    {
-        return isset($this->headers[strtolower($header)]);
-    }
-
-    public function getHeader($header)
-    {
-        $name = strtolower($header);
-        return isset($this->headers[$name]) ? $this->headers[$name] : [];
-    }
-
-    public function getHeaderLine($header)
-    {
-        return implode(', ', $this->getHeader($header));
-    }
-
-    public function withHeader($header, $value)
-    {
-        $new = clone $this;
-        $header = trim($header);
-        $name = strtolower($header);
-
-        if (!is_array($value)) {
-            $new->headers[$name] = [trim($value)];
-        } else {
-            $new->headers[$name] = $value;
-            foreach ($new->headers[$name] as &$v) {
-                $v = trim($v);
-            }
-        }
-
-        // Remove the header lines.
-        foreach (array_keys($new->headerLines) as $key) {
-            if (strtolower($key) === $name) {
-                unset($new->headerLines[$key]);
-            }
-        }
-
-        // Add the header line.
-        $new->headerLines[$header] = $new->headers[$name];
-
-        return $new;
-    }
-
-    public function withAddedHeader($header, $value)
-    {
-        if (!$this->hasHeader($header)) {
-            return $this->withHeader($header, $value);
-        }
-
-        $new = clone $this;
-        $new->headers[strtolower($header)][] = $value;
-        $new->headerLines[$header][] = $value;
-        return $new;
-    }
-
-    public function withoutHeader($header)
-    {
-        if (!$this->hasHeader($header)) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $name = strtolower($header);
-        unset($new->headers[$name]);
-
-        foreach (array_keys($new->headerLines) as $key) {
-            if (strtolower($key) === $name) {
-                unset($new->headerLines[$key]);
-            }
-        }
-
-        return $new;
-    }
-
-    public function getBody()
-    {
-        if (!$this->stream) {
-            $this->stream = stream_for('');
-        }
-
-        return $this->stream;
-    }
-
-    public function withBody(StreamInterface $body)
-    {
-        if ($body === $this->stream) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->stream = $body;
-        return $new;
-    }
-
-    private function setHeaders(array $headers)
-    {
-        $this->headerLines = $this->headers = [];
-        foreach ($headers as $header => $value) {
-            $header = trim($header);
-            $name = strtolower($header);
-            if (!is_array($value)) {
-                $value = trim($value);
-                $this->headers[$name][] = $value;
-                $this->headerLines[$header][] = $value;
-            } else {
-                foreach ($value as $v) {
-                    $v = trim($v);
-                    $this->headers[$name][] = $v;
-                    $this->headerLines[$header][] = $v;
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/MultipartStream.php b/vendor/guzzlehttp/psr7/src/MultipartStream.php
deleted file mode 100644
index fd006ec..0000000
--- a/vendor/guzzlehttp/psr7/src/MultipartStream.php
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream that when read returns bytes for a streaming multipart or
- * multipart/form-data stream.
- */
-class MultipartStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    private $boundary;
-
-    /**
-     * @param array  $elements Array of associative arrays, each containing a
-     *                         required "name" key mapping to the form field,
-     *                         name, a required "contents" key mapping to a
-     *                         StreamInterface/resource/string, an optional
-     *                         "headers" associative array of custom headers,
-     *                         and an optional "filename" key mapping to a
-     *                         string to send as the filename in the part.
-     * @param string $boundary You can optionally provide a specific boundary
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function __construct(array $elements = [], $boundary = null)
-    {
-        $this->boundary = $boundary ?: uniqid();
-        $this->stream = $this->createStream($elements);
-    }
-
-    /**
-     * Get the boundary
-     *
-     * @return string
-     */
-    public function getBoundary()
-    {
-        return $this->boundary;
-    }
-
-    public function isWritable()
-    {
-        return false;
-    }
-
-    /**
-     * Get the headers needed before transferring the content of a POST file
-     */
-    private function getHeaders(array $headers)
-    {
-        $str = '';
-        foreach ($headers as $key => $value) {
-            $str .= "{$key}: {$value}\r\n";
-        }
-
-        return "--{$this->boundary}\r\n" . trim($str) . "\r\n\r\n";
-    }
-
-    /**
-     * Create the aggregate stream that will be used to upload the POST data
-     */
-    protected function createStream(array $elements)
-    {
-        $stream = new AppendStream();
-
-        foreach ($elements as $element) {
-            $this->addElement($stream, $element);
-        }
-
-        // Add the trailing boundary with CRLF
-        $stream->addStream(stream_for("--{$this->boundary}--\r\n"));
-
-        return $stream;
-    }
-
-    private function addElement(AppendStream $stream, array $element)
-    {
-        foreach (['contents', 'name'] as $key) {
-            if (!array_key_exists($key, $element)) {
-                throw new \InvalidArgumentException("A '{$key}' key is required");
-            }
-        }
-
-        $element['contents'] = stream_for($element['contents']);
-
-        if (empty($element['filename'])) {
-            $uri = $element['contents']->getMetadata('uri');
-            if (substr($uri, 0, 6) !== 'php://') {
-                $element['filename'] = $uri;
-            }
-        }
-
-        list($body, $headers) = $this->createElement(
-            $element['name'],
-            $element['contents'],
-            isset($element['filename']) ? $element['filename'] : null,
-            isset($element['headers']) ? $element['headers'] : []
-        );
-
-        $stream->addStream(stream_for($this->getHeaders($headers)));
-        $stream->addStream($body);
-        $stream->addStream(stream_for("\r\n"));
-    }
-
-    /**
-     * @return array
-     */
-    private function createElement($name, $stream, $filename, array $headers)
-    {
-        // Set a default content-disposition header if one was no provided
-        $disposition = $this->getHeader($headers, 'content-disposition');
-        if (!$disposition) {
-            $headers['Content-Disposition'] = $filename
-                ? sprintf('form-data; name="%s"; filename="%s"',
-                    $name,
-                    basename($filename))
-                : "form-data; name=\"{$name}\"";
-        }
-
-        // Set a default content-length header if one was no provided
-        $length = $this->getHeader($headers, 'content-length');
-        if (!$length) {
-            if ($length = $stream->getSize()) {
-                $headers['Content-Length'] = (string) $length;
-            }
-        }
-
-        // Set a default Content-Type if one was not supplied
-        $type = $this->getHeader($headers, 'content-type');
-        if (!$type && $filename) {
-            if ($type = mimetype_from_filename($filename)) {
-                $headers['Content-Type'] = $type;
-            }
-        }
-
-        return [$stream, $headers];
-    }
-
-    private function getHeader(array $headers, $key)
-    {
-        $lowercaseHeader = strtolower($key);
-        foreach ($headers as $k => $v) {
-            if (strtolower($k) === $lowercaseHeader) {
-                return $v;
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/NoSeekStream.php b/vendor/guzzlehttp/psr7/src/NoSeekStream.php
deleted file mode 100644
index 2332218..0000000
--- a/vendor/guzzlehttp/psr7/src/NoSeekStream.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator that prevents a stream from being seeked
- */
-class NoSeekStream implements StreamInterface
-{
-    use StreamDecoratorTrait;
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        throw new \RuntimeException('Cannot seek a NoSeekStream');
-    }
-
-    public function isSeekable()
-    {
-        return false;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/PumpStream.php b/vendor/guzzlehttp/psr7/src/PumpStream.php
deleted file mode 100644
index ffb5440..0000000
--- a/vendor/guzzlehttp/psr7/src/PumpStream.php
+++ /dev/null
@@ -1,165 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Provides a read only stream that pumps data from a PHP callable.
- *
- * When invoking the provided callable, the PumpStream will pass the amount of
- * data requested to read to the callable. The callable can choose to ignore
- * this value and return fewer or more bytes than requested. Any extra data
- * returned by the provided callable is buffered internally until drained using
- * the read() function of the PumpStream. The provided callable MUST return
- * false when there is no more data to read.
- */
-class PumpStream implements StreamInterface
-{
-    /** @var callable */
-    private $source;
-
-    /** @var int */
-    private $size;
-
-    /** @var int */
-    private $tellPos = 0;
-
-    /** @var array */
-    private $metadata;
-
-    /** @var BufferStream */
-    private $buffer;
-
-    /**
-     * @param callable $source Source of the stream data. The callable MAY
-     *                         accept an integer argument used to control the
-     *                         amount of data to return. The callable MUST
-     *                         return a string when called, or false on error
-     *                         or EOF.
-     * @param array $options   Stream options:
-     *                         - metadata: Hash of metadata to use with stream.
-     *                         - size: Size of the stream, if known.
-     */
-    public function __construct(callable $source, array $options = [])
-    {
-        $this->source = $source;
-        $this->size = isset($options['size']) ? $options['size'] : null;
-        $this->metadata = isset($options['metadata']) ? $options['metadata'] : [];
-        $this->buffer = new BufferStream();
-    }
-
-    public function __toString()
-    {
-        try {
-            return copy_to_string($this);
-        } catch (\Exception $e) {
-            return '';
-        }
-    }
-
-    public function close()
-    {
-        $this->detach();
-    }
-
-    public function detach()
-    {
-        $this->tellPos = false;
-        $this->source = null;
-    }
-
-    public function getSize()
-    {
-        return $this->size;
-    }
-
-    public function tell()
-    {
-        return $this->tellPos;
-    }
-
-    public function eof()
-    {
-        return !$this->source;
-    }
-
-    public function isSeekable()
-    {
-        return false;
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        throw new \RuntimeException('Cannot seek a PumpStream');
-    }
-
-    public function isWritable()
-    {
-        return false;
-    }
-
-    public function write($string)
-    {
-        throw new \RuntimeException('Cannot write to a PumpStream');
-    }
-
-    public function isReadable()
-    {
-        return true;
-    }
-
-    public function read($length)
-    {
-        $data = $this->buffer->read($length);
-        $readLen = strlen($data);
-        $this->tellPos += $readLen;
-        $remaining = $length - $readLen;
-
-        if ($remaining) {
-            $this->pump($remaining);
-            $data .= $this->buffer->read($remaining);
-            $this->tellPos += strlen($data) - $readLen;
-        }
-
-        return $data;
-    }
-
-    public function getContents()
-    {
-        $result = '';
-        while (!$this->eof()) {
-            $result .= $this->read(1000000);
-        }
-
-        return $result;
-    }
-
-    public function getMetadata($key = null)
-    {
-        if (!$key) {
-            return $this->metadata;
-        }
-
-        return isset($this->metadata[$key]) ? $this->metadata[$key] : null;
-    }
-
-    private function pump($length)
-    {
-        if ($this->source) {
-            do {
-                $data = call_user_func($this->source, $length);
-                if ($data === false || $data === null) {
-                    $this->source = null;
-                    return;
-                }
-                $this->buffer->write($data);
-                $length -= strlen($data);
-            } while ($length > 0);
-        }
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Request.php b/vendor/guzzlehttp/psr7/src/Request.php
deleted file mode 100644
index 0189b14..0000000
--- a/vendor/guzzlehttp/psr7/src/Request.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use InvalidArgumentException;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * PSR-7 request implementation.
- */
-class Request implements RequestInterface
-{
-    use MessageTrait {
-        withHeader as protected withParentHeader;
-    }
-
-    /** @var string */
-    private $method;
-
-    /** @var null|string */
-    private $requestTarget;
-
-    /** @var null|UriInterface */
-    private $uri;
-
-    /**
-     * @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 string|resource|StreamInterface $body Message body.
-     * @param string $protocolVersion HTTP protocol version.
-     *
-     * @throws InvalidArgumentException for an invalid URI
-     */
-    public function __construct(
-        $method,
-        $uri,
-        array $headers = [],
-        $body = null,
-        $protocolVersion = '1.1'
-    ) {
-        if (is_string($uri)) {
-            $uri = new Uri($uri);
-        } elseif (!($uri instanceof UriInterface)) {
-            throw new \InvalidArgumentException(
-                'URI must be a string or Psr\Http\Message\UriInterface'
-            );
-        }
-
-        $this->method = strtoupper($method);
-        $this->uri = $uri;
-        $this->setHeaders($headers);
-        $this->protocol = $protocolVersion;
-
-        $host = $uri->getHost();
-        if ($host && !$this->hasHeader('Host')) {
-            $this->updateHostFromUri($host);
-        }
-
-        if ($body) {
-            $this->stream = stream_for($body);
-        }
-    }
-
-    public function getRequestTarget()
-    {
-        if ($this->requestTarget !== null) {
-            return $this->requestTarget;
-        }
-
-        $target = $this->uri->getPath();
-        if ($target == null) {
-            $target = '/';
-        }
-        if ($this->uri->getQuery()) {
-            $target .= '?' . $this->uri->getQuery();
-        }
-
-        return $target;
-    }
-
-    public function withRequestTarget($requestTarget)
-    {
-        if (preg_match('#\s#', $requestTarget)) {
-            throw new InvalidArgumentException(
-                'Invalid request target provided; cannot contain whitespace'
-            );
-        }
-
-        $new = clone $this;
-        $new->requestTarget = $requestTarget;
-        return $new;
-    }
-
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    public function withMethod($method)
-    {
-        $new = clone $this;
-        $new->method = strtoupper($method);
-        return $new;
-    }
-
-    public function getUri()
-    {
-        return $this->uri;
-    }
-
-    public function withUri(UriInterface $uri, $preserveHost = false)
-    {
-        if ($uri === $this->uri) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->uri = $uri;
-
-        if (!$preserveHost) {
-            if ($host = $uri->getHost()) {
-                $new->updateHostFromUri($host);
-            }
-        }
-
-        return $new;
-    }
-
-    public function withHeader($header, $value)
-    {
-        /** @var Request $newInstance */
-        $newInstance = $this->withParentHeader($header, $value);
-        return $newInstance;
-    }
-
-    private function updateHostFromUri($host)
-    {
-        // Ensure Host is the first header.
-        // See: http://tools.ietf.org/html/rfc7230#section-5.4
-        if ($port = $this->uri->getPort()) {
-            $host .= ':' . $port;
-        }
-
-        $this->headerLines = ['Host' => [$host]] + $this->headerLines;
-        $this->headers = ['host' => [$host]] + $this->headers;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Response.php b/vendor/guzzlehttp/psr7/src/Response.php
deleted file mode 100644
index c94bf8f..0000000
--- a/vendor/guzzlehttp/psr7/src/Response.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * PSR-7 response implementation.
- */
-class Response implements ResponseInterface
-{
-    use MessageTrait;
-
-    /** @var array Map of standard HTTP status code/reason phrases */
-    private static $phrases = [
-        100 => 'Continue',
-        101 => 'Switching Protocols',
-        102 => 'Processing',
-        200 => 'OK',
-        201 => 'Created',
-        202 => 'Accepted',
-        203 => 'Non-Authoritative Information',
-        204 => 'No Content',
-        205 => 'Reset Content',
-        206 => 'Partial Content',
-        207 => 'Multi-status',
-        208 => 'Already Reported',
-        300 => 'Multiple Choices',
-        301 => 'Moved Permanently',
-        302 => 'Found',
-        303 => 'See Other',
-        304 => 'Not Modified',
-        305 => 'Use Proxy',
-        306 => 'Switch Proxy',
-        307 => 'Temporary Redirect',
-        400 => 'Bad Request',
-        401 => 'Unauthorized',
-        402 => 'Payment Required',
-        403 => 'Forbidden',
-        404 => 'Not Found',
-        405 => 'Method Not Allowed',
-        406 => 'Not Acceptable',
-        407 => 'Proxy Authentication Required',
-        408 => 'Request Time-out',
-        409 => 'Conflict',
-        410 => 'Gone',
-        411 => 'Length Required',
-        412 => 'Precondition Failed',
-        413 => 'Request Entity Too Large',
-        414 => 'Request-URI Too Large',
-        415 => 'Unsupported Media Type',
-        416 => 'Requested range not satisfiable',
-        417 => 'Expectation Failed',
-        418 => 'I\'m a teapot',
-        422 => 'Unprocessable Entity',
-        423 => 'Locked',
-        424 => 'Failed Dependency',
-        425 => 'Unordered Collection',
-        426 => 'Upgrade Required',
-        428 => 'Precondition Required',
-        429 => 'Too Many Requests',
-        431 => 'Request Header Fields Too Large',
-        500 => 'Internal Server Error',
-        501 => 'Not Implemented',
-        502 => 'Bad Gateway',
-        503 => 'Service Unavailable',
-        504 => 'Gateway Time-out',
-        505 => 'HTTP Version not supported',
-        506 => 'Variant Also Negotiates',
-        507 => 'Insufficient Storage',
-        508 => 'Loop Detected',
-        511 => 'Network Authentication Required',
-    ];
-
-    /** @var null|string */
-    private $reasonPhrase = '';
-
-    /** @var int */
-    private $statusCode = 200;
-
-    /**
-     * @param int    $status  Status code for the response, if any.
-     * @param array  $headers Headers for the response, if any.
-     * @param mixed  $body    Stream body.
-     * @param string $version Protocol version.
-     * @param string $reason  Reason phrase (a default will be used if possible).
-     */
-    public function __construct(
-        $status = 200,
-        array $headers = [],
-        $body = null,
-        $version = '1.1',
-        $reason = null
-    ) {
-        $this->statusCode = (int) $status;
-
-        if ($body !== null) {
-            $this->stream = stream_for($body);
-        }
-
-        $this->setHeaders($headers);
-        if (!$reason && isset(self::$phrases[$this->statusCode])) {
-            $this->reasonPhrase = self::$phrases[$status];
-        } else {
-            $this->reasonPhrase = (string) $reason;
-        }
-
-        $this->protocol = $version;
-    }
-
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    public function getReasonPhrase()
-    {
-        return $this->reasonPhrase;
-    }
-
-    public function withStatus($code, $reasonPhrase = '')
-    {
-        $new = clone $this;
-        $new->statusCode = (int) $code;
-        if (!$reasonPhrase && isset(self::$phrases[$new->statusCode])) {
-            $reasonPhrase = self::$phrases[$new->statusCode];
-        }
-        $new->reasonPhrase = $reasonPhrase;
-        return $new;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Stream.php b/vendor/guzzlehttp/psr7/src/Stream.php
deleted file mode 100644
index 0b0db01..0000000
--- a/vendor/guzzlehttp/psr7/src/Stream.php
+++ /dev/null
@@ -1,245 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * PHP stream implementation.
- *
- * @var $stream
- */
-class Stream implements StreamInterface
-{
-    private $stream;
-    private $size;
-    private $seekable;
-    private $readable;
-    private $writable;
-    private $uri;
-    private $customMetadata;
-
-    /** @var array Hash of readable and writable stream types */
-    private static $readWriteHash = [
-        'read' => [
-            'r' => true, 'w+' => true, 'r+' => true, 'x+' => true, 'c+' => true,
-            'rb' => true, 'w+b' => true, 'r+b' => true, 'x+b' => true,
-            'c+b' => true, 'rt' => true, 'w+t' => true, 'r+t' => true,
-            'x+t' => true, 'c+t' => true, 'a+' => true
-        ],
-        'write' => [
-            'w' => true, 'w+' => true, 'rw' => true, 'r+' => true, 'x+' => true,
-            'c+' => true, 'wb' => true, 'w+b' => true, 'r+b' => true,
-            'x+b' => true, 'c+b' => true, 'w+t' => true, 'r+t' => true,
-            'x+t' => true, 'c+t' => true, 'a' => true, 'a+' => true
-        ]
-    ];
-
-    /**
-     * This constructor accepts an associative array of options.
-     *
-     * - size: (int) If a read stream would otherwise have an indeterminate
-     *   size, but the size is known due to foreknownledge, then you can
-     *   provide that size, in bytes.
-     * - metadata: (array) Any additional metadata to return when the metadata
-     *   of the stream is accessed.
-     *
-     * @param resource $stream  Stream resource to wrap.
-     * @param array    $options Associative array of options.
-     *
-     * @throws \InvalidArgumentException if the stream is not a stream resource
-     */
-    public function __construct($stream, $options = [])
-    {
-        if (!is_resource($stream)) {
-            throw new \InvalidArgumentException('Stream must be a resource');
-        }
-
-        if (isset($options['size'])) {
-            $this->size = $options['size'];
-        }
-
-        $this->customMetadata = isset($options['metadata'])
-            ? $options['metadata']
-            : [];
-
-        $this->stream = $stream;
-        $meta = stream_get_meta_data($this->stream);
-        $this->seekable = $meta['seekable'];
-        $this->readable = isset(self::$readWriteHash['read'][$meta['mode']]);
-        $this->writable = isset(self::$readWriteHash['write'][$meta['mode']]);
-        $this->uri = $this->getMetadata('uri');
-    }
-
-    public function __get($name)
-    {
-        if ($name == 'stream') {
-            throw new \RuntimeException('The stream is detached');
-        }
-
-        throw new \BadMethodCallException('No value for ' . $name);
-    }
-
-    /**
-     * Closes the stream when the destructed
-     */
-    public function __destruct()
-    {
-        $this->close();
-    }
-
-    public function __toString()
-    {
-        try {
-            $this->seek(0);
-            return (string) stream_get_contents($this->stream);
-        } catch (\Exception $e) {
-            return '';
-        }
-    }
-
-    public function getContents()
-    {
-        $contents = stream_get_contents($this->stream);
-
-        if ($contents === false) {
-            throw new \RuntimeException('Unable to read stream contents');
-        }
-
-        return $contents;
-    }
-
-    public function close()
-    {
-        if (isset($this->stream)) {
-            if (is_resource($this->stream)) {
-                fclose($this->stream);
-            }
-            $this->detach();
-        }
-    }
-
-    public function detach()
-    {
-        if (!isset($this->stream)) {
-            return null;
-        }
-
-        $result = $this->stream;
-        unset($this->stream);
-        $this->size = $this->uri = null;
-        $this->readable = $this->writable = $this->seekable = false;
-
-        return $result;
-    }
-
-    public function getSize()
-    {
-        if ($this->size !== null) {
-            return $this->size;
-        }
-
-        if (!isset($this->stream)) {
-            return null;
-        }
-
-        // Clear the stat cache if the stream has a URI
-        if ($this->uri) {
-            clearstatcache(true, $this->uri);
-        }
-
-        $stats = fstat($this->stream);
-        if (isset($stats['size'])) {
-            $this->size = $stats['size'];
-            return $this->size;
-        }
-
-        return null;
-    }
-
-    public function isReadable()
-    {
-        return $this->readable;
-    }
-
-    public function isWritable()
-    {
-        return $this->writable;
-    }
-
-    public function isSeekable()
-    {
-        return $this->seekable;
-    }
-
-    public function eof()
-    {
-        return !$this->stream || feof($this->stream);
-    }
-
-    public function tell()
-    {
-        $result = ftell($this->stream);
-
-        if ($result === false) {
-            throw new \RuntimeException('Unable to determine stream position');
-        }
-
-        return $result;
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        if (!$this->seekable) {
-            throw new \RuntimeException('Stream is not seekable');
-        } elseif (fseek($this->stream, $offset, $whence) === -1) {
-            throw new \RuntimeException('Unable to seek to stream position '
-                . $offset . ' with whence ' . var_export($whence, true));
-        }
-    }
-
-    public function read($length)
-    {
-        if (!$this->readable) {
-            throw new \RuntimeException('Cannot read from non-readable stream');
-        }
-
-        return fread($this->stream, $length);
-    }
-
-    public function write($string)
-    {
-        if (!$this->writable) {
-            throw new \RuntimeException('Cannot write to a non-writable stream');
-        }
-
-        // We can't know the size after writing anything
-        $this->size = null;
-        $result = fwrite($this->stream, $string);
-
-        if ($result === false) {
-            throw new \RuntimeException('Unable to write to stream');
-        }
-
-        return $result;
-    }
-
-    public function getMetadata($key = null)
-    {
-        if (!isset($this->stream)) {
-            return $key ? null : [];
-        } elseif (!$key) {
-            return $this->customMetadata + stream_get_meta_data($this->stream);
-        } elseif (isset($this->customMetadata[$key])) {
-            return $this->customMetadata[$key];
-        }
-
-        $meta = stream_get_meta_data($this->stream);
-
-        return isset($meta[$key]) ? $meta[$key] : null;
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
deleted file mode 100644
index daec6f5..0000000
--- a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Stream decorator trait
- * @property StreamInterface stream
- */
-trait StreamDecoratorTrait
-{
-    /**
-     * @param StreamInterface $stream Stream to decorate
-     */
-    public function __construct(StreamInterface $stream)
-    {
-        $this->stream = $stream;
-    }
-
-    /**
-     * Magic method used to create a new stream if streams are not added in
-     * the constructor of a decorator (e.g., LazyOpenStream).
-     *
-     * @param string $name Name of the property (allows "stream" only).
-     *
-     * @return StreamInterface
-     */
-    public function __get($name)
-    {
-        if ($name == 'stream') {
-            $this->stream = $this->createStream();
-            return $this->stream;
-        }
-
-        throw new \UnexpectedValueException("$name not found on class");
-    }
-
-    public function __toString()
-    {
-        try {
-            if ($this->isSeekable()) {
-                $this->seek(0);
-            }
-            return $this->getContents();
-        } catch (\Exception $e) {
-            // Really, PHP? https://bugs.php.net/bug.php?id=53648
-            trigger_error('StreamDecorator::__toString exception: '
-                . (string) $e, E_USER_ERROR);
-            return '';
-        }
-    }
-
-    public function getContents()
-    {
-        return copy_to_string($this);
-    }
-
-    /**
-     * Allow decorators to implement custom methods
-     *
-     * @param string $method Missing method name
-     * @param array  $args   Method arguments
-     *
-     * @return mixed
-     */
-    public function __call($method, array $args)
-    {
-        $result = call_user_func_array([$this->stream, $method], $args);
-
-        // Always return the wrapped object if the result is a return $this
-        return $result === $this->stream ? $this : $result;
-    }
-
-    public function close()
-    {
-        $this->stream->close();
-    }
-
-    public function getMetadata($key = null)
-    {
-        return $this->stream->getMetadata($key);
-    }
-
-    public function detach()
-    {
-        return $this->stream->detach();
-    }
-
-    public function getSize()
-    {
-        return $this->stream->getSize();
-    }
-
-    public function eof()
-    {
-        return $this->stream->eof();
-    }
-
-    public function tell()
-    {
-        return $this->stream->tell();
-    }
-
-    public function isReadable()
-    {
-        return $this->stream->isReadable();
-    }
-
-    public function isWritable()
-    {
-        return $this->stream->isWritable();
-    }
-
-    public function isSeekable()
-    {
-        return $this->stream->isSeekable();
-    }
-
-    public function rewind()
-    {
-        $this->seek(0);
-    }
-
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        $this->stream->seek($offset, $whence);
-    }
-
-    public function read($length)
-    {
-        return $this->stream->read($length);
-    }
-
-    public function write($string)
-    {
-        return $this->stream->write($string);
-    }
-
-    /**
-     * Implement in subclasses to dynamically create streams when requested.
-     *
-     * @return StreamInterface
-     * @throws \BadMethodCallException
-     */
-    protected function createStream()
-    {
-        throw new \BadMethodCallException('Not implemented');
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/StreamWrapper.php b/vendor/guzzlehttp/psr7/src/StreamWrapper.php
deleted file mode 100644
index cf7b223..0000000
--- a/vendor/guzzlehttp/psr7/src/StreamWrapper.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Converts Guzzle streams into PHP stream resources.
- */
-class StreamWrapper
-{
-    /** @var resource */
-    public $context;
-
-    /** @var StreamInterface */
-    private $stream;
-
-    /** @var string r, r+, or w */
-    private $mode;
-
-    /**
-     * Returns a resource representing the stream.
-     *
-     * @param StreamInterface $stream The stream to get a resource for
-     *
-     * @return resource
-     * @throws \InvalidArgumentException if stream is not readable or writable
-     */
-    public static function getResource(StreamInterface $stream)
-    {
-        self::register();
-
-        if ($stream->isReadable()) {
-            $mode = $stream->isWritable() ? 'r+' : 'r';
-        } elseif ($stream->isWritable()) {
-            $mode = 'w';
-        } else {
-            throw new \InvalidArgumentException('The stream must be readable, '
-                . 'writable, or both.');
-        }
-
-        return fopen('guzzle://stream', $mode, null, stream_context_create([
-            'guzzle' => ['stream' => $stream]
-        ]));
-    }
-
-    /**
-     * Registers the stream wrapper if needed
-     */
-    public static function register()
-    {
-        if (!in_array('guzzle', stream_get_wrappers())) {
-            stream_wrapper_register('guzzle', __CLASS__);
-        }
-    }
-
-    public function stream_open($path, $mode, $options, &$opened_path)
-    {
-        $options = stream_context_get_options($this->context);
-
-        if (!isset($options['guzzle']['stream'])) {
-            return false;
-        }
-
-        $this->mode = $mode;
-        $this->stream = $options['guzzle']['stream'];
-
-        return true;
-    }
-
-    public function stream_read($count)
-    {
-        return $this->stream->read($count);
-    }
-
-    public function stream_write($data)
-    {
-        return (int) $this->stream->write($data);
-    }
-
-    public function stream_tell()
-    {
-        return $this->stream->tell();
-    }
-
-    public function stream_eof()
-    {
-        return $this->stream->eof();
-    }
-
-    public function stream_seek($offset, $whence)
-    {
-        $this->stream->seek($offset, $whence);
-
-        return true;
-    }
-
-    public function stream_stat()
-    {
-        static $modeMap = [
-            'r'  => 33060,
-            'r+' => 33206,
-            'w'  => 33188
-        ];
-
-        return [
-            'dev'     => 0,
-            'ino'     => 0,
-            'mode'    => $modeMap[$this->mode],
-            'nlink'   => 0,
-            'uid'     => 0,
-            'gid'     => 0,
-            'rdev'    => 0,
-            'size'    => $this->stream->getSize() ?: 0,
-            'atime'   => 0,
-            'mtime'   => 0,
-            'ctime'   => 0,
-            'blksize' => 0,
-            'blocks'  => 0
-        ];
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/Uri.php b/vendor/guzzlehttp/psr7/src/Uri.php
deleted file mode 100644
index d428f2e..0000000
--- a/vendor/guzzlehttp/psr7/src/Uri.php
+++ /dev/null
@@ -1,599 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\UriInterface;
-
-/**
- * Basic PSR-7 URI implementation.
- *
- * @link https://github.com/phly/http This class is based upon
- *     Matthew Weier O'Phinney's URI implementation in phly/http.
- */
-class Uri implements UriInterface
-{
-    private static $schemes = [
-        'http'  => 80,
-        'https' => 443,
-    ];
-
-    private static $charUnreserved = 'a-zA-Z0-9_\-\.~';
-    private static $charSubDelims = '!\$&\'\(\)\*\+,;=';
-    private static $replaceQuery = ['=' => '%3D', '&' => '%26'];
-
-    /** @var string Uri scheme. */
-    private $scheme = '';
-
-    /** @var string Uri user info. */
-    private $userInfo = '';
-
-    /** @var string Uri host. */
-    private $host = '';
-
-    /** @var int|null Uri port. */
-    private $port;
-
-    /** @var string Uri path. */
-    private $path = '';
-
-    /** @var string Uri query string. */
-    private $query = '';
-
-    /** @var string Uri fragment. */
-    private $fragment = '';
-
-    /**
-     * @param string $uri URI to parse and wrap.
-     */
-    public function __construct($uri = '')
-    {
-        if ($uri != null) {
-            $parts = parse_url($uri);
-            if ($parts === false) {
-                throw new \InvalidArgumentException("Unable to parse URI: $uri");
-            }
-            $this->applyParts($parts);
-        }
-    }
-
-    public function __toString()
-    {
-        return self::createUriString(
-            $this->scheme,
-            $this->getAuthority(),
-            $this->getPath(),
-            $this->query,
-            $this->fragment
-        );
-    }
-
-    /**
-     * Removes dot segments from a path and returns the new path.
-     *
-     * @param string $path
-     *
-     * @return string
-     * @link http://tools.ietf.org/html/rfc3986#section-5.2.4
-     */
-    public static function removeDotSegments($path)
-    {
-        static $noopPaths = ['' => true, '/' => true, '*' => true];
-        static $ignoreSegments = ['.' => true, '..' => true];
-
-        if (isset($noopPaths[$path])) {
-            return $path;
-        }
-
-        $results = [];
-        $segments = explode('/', $path);
-        foreach ($segments as $segment) {
-            if ($segment == '..') {
-                array_pop($results);
-            } elseif (!isset($ignoreSegments[$segment])) {
-                $results[] = $segment;
-            }
-        }
-
-        $newPath = implode('/', $results);
-        // Add the leading slash if necessary
-        if (substr($path, 0, 1) === '/' &&
-            substr($newPath, 0, 1) !== '/'
-        ) {
-            $newPath = '/' . $newPath;
-        }
-
-        // Add the trailing slash if necessary
-        if ($newPath != '/' && isset($ignoreSegments[end($segments)])) {
-            $newPath .= '/';
-        }
-
-        return $newPath;
-    }
-
-    /**
-     * Resolve a base URI with a relative URI and return a new URI.
-     *
-     * @param UriInterface $base Base URI
-     * @param string       $rel  Relative URI
-     *
-     * @return UriInterface
-     */
-    public static function resolve(UriInterface $base, $rel)
-    {
-        if ($rel === null || $rel === '') {
-            return $base;
-        }
-
-        if (!($rel instanceof UriInterface)) {
-            $rel = new self($rel);
-        }
-
-        // Return the relative uri as-is if it has a scheme.
-        if ($rel->getScheme()) {
-            return $rel->withPath(static::removeDotSegments($rel->getPath()));
-        }
-
-        $relParts = [
-            'scheme'    => $rel->getScheme(),
-            'authority' => $rel->getAuthority(),
-            'path'      => $rel->getPath(),
-            'query'     => $rel->getQuery(),
-            'fragment'  => $rel->getFragment()
-        ];
-
-        $parts = [
-            'scheme'    => $base->getScheme(),
-            'authority' => $base->getAuthority(),
-            'path'      => $base->getPath(),
-            'query'     => $base->getQuery(),
-            'fragment'  => $base->getFragment()
-        ];
-
-        if (!empty($relParts['authority'])) {
-            $parts['authority'] = $relParts['authority'];
-            $parts['path'] = self::removeDotSegments($relParts['path']);
-            $parts['query'] = $relParts['query'];
-            $parts['fragment'] = $relParts['fragment'];
-        } elseif (!empty($relParts['path'])) {
-            if (substr($relParts['path'], 0, 1) == '/') {
-                $parts['path'] = self::removeDotSegments($relParts['path']);
-                $parts['query'] = $relParts['query'];
-                $parts['fragment'] = $relParts['fragment'];
-            } else {
-                if (!empty($parts['authority']) && empty($parts['path'])) {
-                    $mergedPath = '/';
-                } else {
-                    $mergedPath = substr($parts['path'], 0, strrpos($parts['path'], '/') + 1);
-                }
-                $parts['path'] = self::removeDotSegments($mergedPath . $relParts['path']);
-                $parts['query'] = $relParts['query'];
-                $parts['fragment'] = $relParts['fragment'];
-            }
-        } elseif (!empty($relParts['query'])) {
-            $parts['query'] = $relParts['query'];
-        } elseif ($relParts['fragment'] != null) {
-            $parts['fragment'] = $relParts['fragment'];
-        }
-
-        return new self(static::createUriString(
-            $parts['scheme'],
-            $parts['authority'],
-            $parts['path'],
-            $parts['query'],
-            $parts['fragment']
-        ));
-    }
-
-    /**
-     * Create a new URI with a specific query string value removed.
-     *
-     * Any existing query string values that exactly match the provided key are
-     * removed.
-     *
-     * Note: this function will convert "=" to "%3D" and "&" to "%26".
-     *
-     * @param UriInterface $uri URI to use as a base.
-     * @param string       $key Query string key value pair to remove.
-     *
-     * @return UriInterface
-     */
-    public static function withoutQueryValue(UriInterface $uri, $key)
-    {
-        $current = $uri->getQuery();
-        if (!$current) {
-            return $uri;
-        }
-
-        $result = [];
-        foreach (explode('&', $current) as $part) {
-            if (explode('=', $part)[0] !== $key) {
-                $result[] = $part;
-            };
-        }
-
-        return $uri->withQuery(implode('&', $result));
-    }
-
-    /**
-     * Create a new URI with a specific query string value.
-     *
-     * Any existing query string values that exactly match the provided key are
-     * removed and replaced with the given key value pair.
-     *
-     * Note: this function will convert "=" to "%3D" and "&" to "%26".
-     *
-     * @param UriInterface $uri URI to use as a base.
-     * @param string $key   Key to set.
-     * @param string $value Value to set.
-     *
-     * @return UriInterface
-     */
-    public static function withQueryValue(UriInterface $uri, $key, $value)
-    {
-        $current = $uri->getQuery();
-        $key = strtr($key, self::$replaceQuery);
-
-        if (!$current) {
-            $result = [];
-        } else {
-            $result = [];
-            foreach (explode('&', $current) as $part) {
-                if (explode('=', $part)[0] !== $key) {
-                    $result[] = $part;
-                };
-            }
-        }
-
-        if ($value !== null) {
-            $result[] = $key . '=' . strtr($value, self::$replaceQuery);
-        } else {
-            $result[] = $key;
-        }
-
-        return $uri->withQuery(implode('&', $result));
-    }
-
-    /**
-     * Create a URI from a hash of parse_url parts.
-     *
-     * @param array $parts
-     *
-     * @return self
-     */
-    public static function fromParts(array $parts)
-    {
-        $uri = new self();
-        $uri->applyParts($parts);
-        return $uri;
-    }
-
-    public function getScheme()
-    {
-        return $this->scheme;
-    }
-
-    public function getAuthority()
-    {
-        if (empty($this->host)) {
-            return '';
-        }
-
-        $authority = $this->host;
-        if (!empty($this->userInfo)) {
-            $authority = $this->userInfo . '@' . $authority;
-        }
-
-        if ($this->isNonStandardPort($this->scheme, $this->host, $this->port)) {
-            $authority .= ':' . $this->port;
-        }
-
-        return $authority;
-    }
-
-    public function getUserInfo()
-    {
-        return $this->userInfo;
-    }
-
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    public function getPort()
-    {
-        return $this->port;
-    }
-
-    public function getPath()
-    {
-        return $this->path == null ? '' : $this->path;
-    }
-
-    public function getQuery()
-    {
-        return $this->query;
-    }
-
-    public function getFragment()
-    {
-        return $this->fragment;
-    }
-
-    public function withScheme($scheme)
-    {
-        $scheme = $this->filterScheme($scheme);
-
-        if ($this->scheme === $scheme) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->scheme = $scheme;
-        $new->port = $new->filterPort($new->scheme, $new->host, $new->port);
-        return $new;
-    }
-
-    public function withUserInfo($user, $password = null)
-    {
-        $info = $user;
-        if ($password) {
-            $info .= ':' . $password;
-        }
-
-        if ($this->userInfo === $info) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->userInfo = $info;
-        return $new;
-    }
-
-    public function withHost($host)
-    {
-        if ($this->host === $host) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->host = $host;
-        return $new;
-    }
-
-    public function withPort($port)
-    {
-        $port = $this->filterPort($this->scheme, $this->host, $port);
-
-        if ($this->port === $port) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->port = $port;
-        return $new;
-    }
-
-    public function withPath($path)
-    {
-        if (!is_string($path)) {
-            throw new \InvalidArgumentException(
-                'Invalid path provided; must be a string'
-            );
-        }
-
-        $path = $this->filterPath($path);
-
-        if ($this->path === $path) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->path = $path;
-        return $new;
-    }
-
-    public function withQuery($query)
-    {
-        if (!is_string($query) && !method_exists($query, '__toString')) {
-            throw new \InvalidArgumentException(
-                'Query string must be a string'
-            );
-        }
-
-        $query = (string) $query;
-        if (substr($query, 0, 1) === '?') {
-            $query = substr($query, 1);
-        }
-
-        $query = $this->filterQueryAndFragment($query);
-
-        if ($this->query === $query) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->query = $query;
-        return $new;
-    }
-
-    public function withFragment($fragment)
-    {
-        if (substr($fragment, 0, 1) === '#') {
-            $fragment = substr($fragment, 1);
-        }
-
-        $fragment = $this->filterQueryAndFragment($fragment);
-
-        if ($this->fragment === $fragment) {
-            return $this;
-        }
-
-        $new = clone $this;
-        $new->fragment = $fragment;
-        return $new;
-    }
-
-    /**
-     * Apply parse_url parts to a URI.
-     *
-     * @param $parts Array of parse_url parts to apply.
-     */
-    private function applyParts(array $parts)
-    {
-        $this->scheme = isset($parts['scheme'])
-            ? $this->filterScheme($parts['scheme'])
-            : '';
-        $this->userInfo = isset($parts['user']) ? $parts['user'] : '';
-        $this->host = isset($parts['host']) ? $parts['host'] : '';
-        $this->port = !empty($parts['port'])
-            ? $this->filterPort($this->scheme, $this->host, $parts['port'])
-            : null;
-        $this->path = isset($parts['path'])
-            ? $this->filterPath($parts['path'])
-            : '';
-        $this->query = isset($parts['query'])
-            ? $this->filterQueryAndFragment($parts['query'])
-            : '';
-        $this->fragment = isset($parts['fragment'])
-            ? $this->filterQueryAndFragment($parts['fragment'])
-            : '';
-        if (isset($parts['pass'])) {
-            $this->userInfo .= ':' . $parts['pass'];
-        }
-    }
-
-    /**
-     * Create a URI string from its various parts
-     *
-     * @param string $scheme
-     * @param string $authority
-     * @param string $path
-     * @param string $query
-     * @param string $fragment
-     * @return string
-     */
-    private static function createUriString($scheme, $authority, $path, $query, $fragment)
-    {
-        $uri = '';
-
-        if (!empty($scheme)) {
-            $uri .= $scheme . '://';
-        }
-
-        if (!empty($authority)) {
-            $uri .= $authority;
-        }
-
-        if ($path != null) {
-            // Add a leading slash if necessary.
-            if ($uri && substr($path, 0, 1) !== '/') {
-                $uri .= '/';
-            }
-            $uri .= $path;
-        }
-
-        if ($query != null) {
-            $uri .= '?' . $query;
-        }
-
-        if ($fragment != null) {
-            $uri .= '#' . $fragment;
-        }
-
-        return $uri;
-    }
-
-    /**
-     * Is a given port non-standard for the current scheme?
-     *
-     * @param string $scheme
-     * @param string $host
-     * @param int $port
-     * @return bool
-     */
-    private static function isNonStandardPort($scheme, $host, $port)
-    {
-        if (!$scheme && $port) {
-            return true;
-        }
-
-        if (!$host || !$port) {
-            return false;
-        }
-
-        return !isset(static::$schemes[$scheme]) || $port !== static::$schemes[$scheme];
-    }
-
-    /**
-     * @param string $scheme
-     *
-     * @return string
-     */
-    private function filterScheme($scheme)
-    {
-        $scheme = strtolower($scheme);
-        $scheme = rtrim($scheme, ':/');
-
-        return $scheme;
-    }
-
-    /**
-     * @param string $scheme
-     * @param string $host
-     * @param int $port
-     *
-     * @return int|null
-     *
-     * @throws \InvalidArgumentException If the port is invalid.
-     */
-    private function filterPort($scheme, $host, $port)
-    {
-        if (null !== $port) {
-            $port = (int) $port;
-            if (1 > $port || 0xffff < $port) {
-                throw new \InvalidArgumentException(
-                    sprintf('Invalid port: %d. Must be between 1 and 65535', $port)
-                );
-            }
-        }
-
-        return $this->isNonStandardPort($scheme, $host, $port) ? $port : null;
-    }
-
-    /**
-     * Filters the path of a URI
-     *
-     * @param $path
-     *
-     * @return string
-     */
-    private function filterPath($path)
-    {
-        return preg_replace_callback(
-            '/(?:[^' . self::$charUnreserved . self::$charSubDelims . ':@\/%]+|%(?![A-Fa-f0-9]{2}))/',
-            [$this, 'rawurlencodeMatchZero'],
-            $path
-        );
-    }
-
-    /**
-     * Filters the query string or fragment of a URI.
-     *
-     * @param $str
-     *
-     * @return string
-     */
-    private function filterQueryAndFragment($str)
-    {
-        return preg_replace_callback(
-            '/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\/\?]+|%(?![A-Fa-f0-9]{2}))/',
-            [$this, 'rawurlencodeMatchZero'],
-            $str
-        );
-    }
-
-    private function rawurlencodeMatchZero(array $match)
-    {
-        return rawurlencode($match[0]);
-    }
-}
diff --git a/vendor/guzzlehttp/psr7/src/functions.php b/vendor/guzzlehttp/psr7/src/functions.php
deleted file mode 100644
index fd3e7f5..0000000
--- a/vendor/guzzlehttp/psr7/src/functions.php
+++ /dev/null
@@ -1,802 +0,0 @@
-<?php
-namespace GuzzleHttp\Psr7;
-
-use Psr\Http\Message\MessageInterface;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Returns the string representation of an HTTP message.
- *
- * @param MessageInterface $message Message to convert to a string.
- *
- * @return string
- */
-function str(MessageInterface $message)
-{
-    if ($message instanceof RequestInterface) {
-        $msg = trim($message->getMethod() . ' '
-                . $message->getRequestTarget())
-            . ' HTTP/' . $message->getProtocolVersion();
-        if (!$message->hasHeader('host')) {
-            $msg .= "\r\nHost: " . $message->getUri()->getHost();
-        }
-    } elseif ($message instanceof ResponseInterface) {
-        $msg = 'HTTP/' . $message->getProtocolVersion() . ' '
-            . $message->getStatusCode() . ' '
-            . $message->getReasonPhrase();
-    } else {
-        throw new \InvalidArgumentException('Unknown message type');
-    }
-
-    foreach ($message->getHeaders() as $name => $values) {
-        $msg .= "\r\n{$name}: " . implode(', ', $values);
-    }
-
-    return "{$msg}\r\n\r\n" . $message->getBody();
-}
-
-/**
- * Returns a UriInterface for the given value.
- *
- * This function accepts a string or {@see Psr\Http\Message\UriInterface} and
- * returns a UriInterface for the given value. If the value is already a
- * `UriInterface`, it is returned as-is.
- *
- * @param string|UriInterface $uri
- *
- * @return UriInterface
- * @throws \InvalidArgumentException
- */
-function uri_for($uri)
-{
-    if ($uri instanceof UriInterface) {
-        return $uri;
-    } elseif (is_string($uri)) {
-        return new Uri($uri);
-    }
-
-    throw new \InvalidArgumentException('URI must be a string or UriInterface');
-}
-
-/**
- * Create a new stream based on the input type.
- *
- * Options is an associative array that can contain the following keys:
- * - metadata: Array of custom metadata.
- * - size: Size of the stream.
- *
- * @param resource|string|StreamInterface $resource Entity body data
- * @param array                           $options  Additional options
- *
- * @return Stream
- * @throws \InvalidArgumentException if the $resource arg is not valid.
- */
-function stream_for($resource = '', array $options = [])
-{
-    switch (gettype($resource)) {
-        case 'string':
-            $stream = fopen('php://temp', 'r+');
-            if ($resource !== '') {
-                fwrite($stream, $resource);
-                fseek($stream, 0);
-            }
-            return new Stream($stream, $options);
-        case 'resource':
-            return new Stream($resource, $options);
-        case 'object':
-            if ($resource instanceof StreamInterface) {
-                return $resource;
-            } elseif ($resource instanceof \Iterator) {
-                return new PumpStream(function () use ($resource) {
-                    if (!$resource->valid()) {
-                        return false;
-                    }
-                    $result = $resource->current();
-                    $resource->next();
-                    return $result;
-                }, $options);
-            } elseif (method_exists($resource, '__toString')) {
-                return stream_for((string) $resource, $options);
-            }
-            break;
-        case 'NULL':
-            return new Stream(fopen('php://temp', 'r+'), $options);
-    }
-
-    if (is_callable($resource)) {
-        return new PumpStream($resource, $options);
-    }
-
-    throw new \InvalidArgumentException('Invalid resource type: ' . gettype($resource));
-}
-
-/**
- * Parse an array of header values containing ";" separated data into an
- * array of associative arrays representing the header key value pair
- * data of the header. When a parameter does not contain a value, but just
- * contains a key, this function will inject a key with a '' string value.
- *
- * @param string|array $header Header to parse into components.
- *
- * @return array Returns the parsed header values.
- */
-function parse_header($header)
-{
-    static $trimmed = "\"'  \n\t\r";
-    $params = $matches = [];
-
-    foreach (normalize_header($header) as $val) {
-        $part = [];
-        foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {
-            if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
-                $m = $matches[0];
-                if (isset($m[1])) {
-                    $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed);
-                } else {
-                    $part[] = trim($m[0], $trimmed);
-                }
-            }
-        }
-        if ($part) {
-            $params[] = $part;
-        }
-    }
-
-    return $params;
-}
-
-/**
- * Converts an array of header values that may contain comma separated
- * headers into an array of headers with no comma separated values.
- *
- * @param string|array $header Header to normalize.
- *
- * @return array Returns the normalized header field values.
- */
-function normalize_header($header)
-{
-    if (!is_array($header)) {
-        return array_map('trim', explode(',', $header));
-    }
-
-    $result = [];
-    foreach ($header as $value) {
-        foreach ((array) $value as $v) {
-            if (strpos($v, ',') === false) {
-                $result[] = $v;
-                continue;
-            }
-            foreach (preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) {
-                $result[] = trim($vv);
-            }
-        }
-    }
-
-    return $result;
-}
-
-/**
- * Clone and modify a request with the given changes.
- *
- * The changes can be one of:
- * - method: (string) Changes the HTTP method.
- * - set_headers: (array) Sets the given headers.
- * - remove_headers: (array) Remove the given headers.
- * - body: (mixed) Sets the given body.
- * - uri: (UriInterface) Set the URI.
- * - query: (string) Set the query string value of the URI.
- * - version: (string) Set the protocol version.
- *
- * @param RequestInterface $request Request to clone and modify.
- * @param array            $changes Changes to apply.
- *
- * @return RequestInterface
- */
-function modify_request(RequestInterface $request, array $changes)
-{
-    if (!$changes) {
-        return $request;
-    }
-
-    $headers = $request->getHeaders();
-
-    if (!isset($changes['uri'])) {
-        $uri = $request->getUri();
-    } else {
-        // Remove the host header if one is on the URI
-        if ($host = $changes['uri']->getHost()) {
-            $changes['set_headers']['Host'] = $host;
-        }
-        $uri = $changes['uri'];
-    }
-
-    if (!empty($changes['remove_headers'])) {
-        $headers = _caseless_remove($changes['remove_headers'], $headers);
-    }
-
-    if (!empty($changes['set_headers'])) {
-        $headers = _caseless_remove(array_keys($changes['set_headers']), $headers);
-        $headers = $changes['set_headers'] + $headers;
-    }
-
-    if (isset($changes['query'])) {
-        $uri = $uri->withQuery($changes['query']);
-    }
-
-    return new Request(
-        isset($changes['method']) ? $changes['method'] : $request->getMethod(),
-        $uri,
-        $headers,
-        isset($changes['body']) ? $changes['body'] : $request->getBody(),
-        isset($changes['version'])
-            ? $changes['version']
-            : $request->getProtocolVersion()
-    );
-}
-
-/**
- * Attempts to rewind a message body and throws an exception on failure.
- *
- * The body of the message will only be rewound if a call to `tell()` returns a
- * value other than `0`.
- *
- * @param MessageInterface $message Message to rewind
- *
- * @throws \RuntimeException
- */
-function rewind_body(MessageInterface $message)
-{
-    $body = $message->getBody();
-
-    if ($body->tell()) {
-        $body->rewind();
-    }
-}
-
-/**
- * Safely opens a PHP stream resource using a filename.
- *
- * When fopen fails, PHP normally raises a warning. This function adds an
- * error handler that checks for errors and throws an exception instead.
- *
- * @param string $filename File to open
- * @param string $mode     Mode used to open the file
- *
- * @return resource
- * @throws \RuntimeException if the file cannot be opened
- */
-function try_fopen($filename, $mode)
-{
-    $ex = null;
-    set_error_handler(function () use ($filename, $mode, &$ex) {
-        $ex = new \RuntimeException(sprintf(
-            'Unable to open %s using mode %s: %s',
-            $filename,
-            $mode,
-            func_get_args()[1]
-        ));
-    });
-
-    $handle = fopen($filename, $mode);
-    restore_error_handler();
-
-    if ($ex) {
-        /** @var $ex \RuntimeException */
-        throw $ex;
-    }
-
-    return $handle;
-}
-
-/**
- * Copy the contents of a stream into a string until the given number of
- * bytes have been read.
- *
- * @param StreamInterface $stream Stream to read
- * @param int             $maxLen Maximum number of bytes to read. Pass -1
- *                                to read the entire stream.
- * @return string
- * @throws \RuntimeException on error.
- */
-function copy_to_string(StreamInterface $stream, $maxLen = -1)
-{
-    $buffer = '';
-
-    if ($maxLen === -1) {
-        while (!$stream->eof()) {
-            $buf = $stream->read(1048576);
-            // Using a loose equality here to match on '' and false.
-            if ($buf == null) {
-                break;
-            }
-            $buffer .= $buf;
-        }
-        return $buffer;
-    }
-
-    $len = 0;
-    while (!$stream->eof() && $len < $maxLen) {
-        $buf = $stream->read($maxLen - $len);
-        // Using a loose equality here to match on '' and false.
-        if ($buf == null) {
-            break;
-        }
-        $buffer .= $buf;
-        $len = strlen($buffer);
-    }
-
-    return $buffer;
-}
-
-/**
- * Copy the contents of a stream into another stream until the given number
- * of bytes have been read.
- *
- * @param StreamInterface $source Stream to read from
- * @param StreamInterface $dest   Stream to write to
- * @param int             $maxLen Maximum number of bytes to read. Pass -1
- *                                to read the entire stream.
- *
- * @throws \RuntimeException on error.
- */
-function copy_to_stream(
-    StreamInterface $source,
-    StreamInterface $dest,
-    $maxLen = -1
-) {
-    if ($maxLen === -1) {
-        while (!$source->eof()) {
-            if (!$dest->write($source->read(1048576))) {
-                break;
-            }
-        }
-        return;
-    }
-
-    $bytes = 0;
-    while (!$source->eof()) {
-        $buf = $source->read($maxLen - $bytes);
-        if (!($len = strlen($buf))) {
-            break;
-        }
-        $bytes += $len;
-        $dest->write($buf);
-        if ($bytes == $maxLen) {
-            break;
-        }
-    }
-}
-
-/**
- * Calculate a hash of a Stream
- *
- * @param StreamInterface $stream    Stream to calculate the hash for
- * @param string          $algo      Hash algorithm (e.g. md5, crc32, etc)
- * @param bool            $rawOutput Whether or not to use raw output
- *
- * @return string Returns the hash of the stream
- * @throws \RuntimeException on error.
- */
-function hash(
-    StreamInterface $stream,
-    $algo,
-    $rawOutput = false
-) {
-    $pos = $stream->tell();
-
-    if ($pos > 0) {
-        $stream->rewind();
-    }
-
-    $ctx = hash_init($algo);
-    while (!$stream->eof()) {
-        hash_update($ctx, $stream->read(1048576));
-    }
-
-    $out = hash_final($ctx, (bool) $rawOutput);
-    $stream->seek($pos);
-
-    return $out;
-}
-
-/**
- * Read a line from the stream up to the maximum allowed buffer length
- *
- * @param StreamInterface $stream    Stream to read from
- * @param int             $maxLength Maximum buffer length
- *
- * @return string|bool
- */
-function readline(StreamInterface $stream, $maxLength = null)
-{
-    $buffer = '';
-    $size = 0;
-
-    while (!$stream->eof()) {
-        // Using a loose equality here to match on '' and false.
-        if (null == ($byte = $stream->read(1))) {
-            return $buffer;
-        }
-        $buffer .= $byte;
-        // Break when a new line is found or the max length - 1 is reached
-        if ($byte == PHP_EOL || ++$size == $maxLength - 1) {
-            break;
-        }
-    }
-
-    return $buffer;
-}
-
-/**
- * Parses a request message string into a request object.
- *
- * @param string $message Request message string.
- *
- * @return Request
- */
-function parse_request($message)
-{
-    $data = _parse_message($message);
-    $matches = [];
-    if (!preg_match('/^[a-zA-Z]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) {
-        throw new \InvalidArgumentException('Invalid request string');
-    }
-    $parts = explode(' ', $data['start-line'], 3);
-    $version = isset($parts[2]) ? explode('/', $parts[2])[1] : '1.1';
-
-    $request = new Request(
-        $parts[0],
-        $matches[1] === '/' ? _parse_request_uri($parts[1], $data['headers']) : $parts[1],
-        $data['headers'],
-        $data['body'],
-        $version
-    );
-
-    return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]);
-}
-
-/**
- * Parses a response message string into a response object.
- *
- * @param string $message Response message string.
- *
- * @return Response
- */
-function parse_response($message)
-{
-    $data = _parse_message($message);
-    if (!preg_match('/^HTTP\/.* [0-9]{3} .*/', $data['start-line'])) {
-        throw new \InvalidArgumentException('Invalid response string');
-    }
-    $parts = explode(' ', $data['start-line'], 3);
-
-    return new Response(
-        $parts[1],
-        $data['headers'],
-        $data['body'],
-        explode('/', $parts[0])[1],
-        isset($parts[2]) ? $parts[2] : null
-    );
-}
-
-/**
- * Parse a query string into an associative array.
- *
- * If multiple values are found for the same key, the value of that key
- * value pair will become an array. This function does not parse nested
- * PHP style arrays into an associative array (e.g., foo[a]=1&foo[b]=2 will
- * be parsed into ['foo[a]' => '1', 'foo[b]' => '2']).
- *
- * @param string      $str         Query string to parse
- * @param bool|string $urlEncoding How the query string is encoded
- *
- * @return array
- */
-function parse_query($str, $urlEncoding = true)
-{
-    $result = [];
-
-    if ($str === '') {
-        return $result;
-    }
-
-    if ($urlEncoding === true) {
-        $decoder = function ($value) {
-            return rawurldecode(str_replace('+', ' ', $value));
-        };
-    } elseif ($urlEncoding == PHP_QUERY_RFC3986) {
-        $decoder = 'rawurldecode';
-    } elseif ($urlEncoding == PHP_QUERY_RFC1738) {
-        $decoder = 'urldecode';
-    } else {
-        $decoder = function ($str) { return $str; };
-    }
-
-    foreach (explode('&', $str) as $kvp) {
-        $parts = explode('=', $kvp, 2);
-        $key = $decoder($parts[0]);
-        $value = isset($parts[1]) ? $decoder($parts[1]) : null;
-        if (!isset($result[$key])) {
-            $result[$key] = $value;
-        } else {
-            if (!is_array($result[$key])) {
-                $result[$key] = [$result[$key]];
-            }
-            $result[$key][] = $value;
-        }
-    }
-
-    return $result;
-}
-
-/**
- * Build a query string from an array of key value pairs.
- *
- * This function can use the return value of parseQuery() to build a query
- * string. This function does not modify the provided keys when an array is
- * encountered (like http_build_query would).
- *
- * @param array     $params   Query string parameters.
- * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
- *                            to encode using RFC3986, or PHP_QUERY_RFC1738
- *                            to encode using RFC1738.
- * @return string
- */
-function build_query(array $params, $encoding = PHP_QUERY_RFC3986)
-{
-    if (!$params) {
-        return '';
-    }
-
-    if ($encoding === false) {
-        $encoder = function ($str) { return $str; };
-    } elseif ($encoding == PHP_QUERY_RFC3986) {
-        $encoder = 'rawurlencode';
-    } elseif ($encoding == PHP_QUERY_RFC1738) {
-        $encoder = 'urlencode';
-    } else {
-        throw new \InvalidArgumentException('Invalid type');
-    }
-
-    $qs = '';
-    foreach ($params as $k => $v) {
-        $k = $encoder($k);
-        if (!is_array($v)) {
-            $qs .= $k;
-            if ($v !== null) {
-                $qs .= '=' . $encoder($v);
-            }
-            $qs .= '&';
-        } else {
-            foreach ($v as $vv) {
-                $qs .= $k;
-                if ($vv !== null) {
-                    $qs .= '=' . $encoder($vv);
-                }
-                $qs .= '&';
-            }
-        }
-    }
-
-    return $qs ? (string) substr($qs, 0, -1) : '';
-}
-
-/**
- * Determines the mimetype of a file by looking at its extension.
- *
- * @param $filename
- *
- * @return null|string
- */
-function mimetype_from_filename($filename)
-{
-    return mimetype_from_extension(pathinfo($filename, PATHINFO_EXTENSION));
-}
-
-/**
- * Maps a file extensions to a mimetype.
- *
- * @param $extension string The file extension.
- *
- * @return string|null
- * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types
- */
-function mimetype_from_extension($extension)
-{
-    static $mimetypes = [
-        '7z' => 'application/x-7z-compressed',
-        'aac' => 'audio/x-aac',
-        'ai' => 'application/postscript',
-        'aif' => 'audio/x-aiff',
-        'asc' => 'text/plain',
-        'asf' => 'video/x-ms-asf',
-        'atom' => 'application/atom+xml',
-        'avi' => 'video/x-msvideo',
-        'bmp' => 'image/bmp',
-        'bz2' => 'application/x-bzip2',
-        'cer' => 'application/pkix-cert',
-        'crl' => 'application/pkix-crl',
-        'crt' => 'application/x-x509-ca-cert',
-        'css' => 'text/css',
-        'csv' => 'text/csv',
-        'cu' => 'application/cu-seeme',
-        'deb' => 'application/x-debian-package',
-        'doc' => 'application/msword',
-        'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
-        'dvi' => 'application/x-dvi',
-        'eot' => 'application/vnd.ms-fontobject',
-        'eps' => 'application/postscript',
-        'epub' => 'application/epub+zip',
-        'etx' => 'text/x-setext',
-        'flac' => 'audio/flac',
-        'flv' => 'video/x-flv',
-        'gif' => 'image/gif',
-        'gz' => 'application/gzip',
-        'htm' => 'text/html',
-        'html' => 'text/html',
-        'ico' => 'image/x-icon',
-        'ics' => 'text/calendar',
-        'ini' => 'text/plain',
-        'iso' => 'application/x-iso9660-image',
-        'jar' => 'application/java-archive',
-        'jpe' => 'image/jpeg',
-        'jpeg' => 'image/jpeg',
-        'jpg' => 'image/jpeg',
-        'js' => 'text/javascript',
-        'json' => 'application/json',
-        'latex' => 'application/x-latex',
-        'log' => 'text/plain',
-        'm4a' => 'audio/mp4',
-        'm4v' => 'video/mp4',
-        'mid' => 'audio/midi',
-        'midi' => 'audio/midi',
-        'mov' => 'video/quicktime',
-        'mp3' => 'audio/mpeg',
-        'mp4' => 'video/mp4',
-        'mp4a' => 'audio/mp4',
-        'mp4v' => 'video/mp4',
-        'mpe' => 'video/mpeg',
-        'mpeg' => 'video/mpeg',
-        'mpg' => 'video/mpeg',
-        'mpg4' => 'video/mp4',
-        'oga' => 'audio/ogg',
-        'ogg' => 'audio/ogg',
-        'ogv' => 'video/ogg',
-        'ogx' => 'application/ogg',
-        'pbm' => 'image/x-portable-bitmap',
-        'pdf' => 'application/pdf',
-        'pgm' => 'image/x-portable-graymap',
-        'png' => 'image/png',
-        'pnm' => 'image/x-portable-anymap',
-        'ppm' => 'image/x-portable-pixmap',
-        'ppt' => 'application/vnd.ms-powerpoint',
-        'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
-        'ps' => 'application/postscript',
-        'qt' => 'video/quicktime',
-        'rar' => 'application/x-rar-compressed',
-        'ras' => 'image/x-cmu-raster',
-        'rss' => 'application/rss+xml',
-        'rtf' => 'application/rtf',
-        'sgm' => 'text/sgml',
-        'sgml' => 'text/sgml',
-        'svg' => 'image/svg+xml',
-        'swf' => 'application/x-shockwave-flash',
-        'tar' => 'application/x-tar',
-        'tif' => 'image/tiff',
-        'tiff' => 'image/tiff',
-        'torrent' => 'application/x-bittorrent',
-        'ttf' => 'application/x-font-ttf',
-        'txt' => 'text/plain',
-        'wav' => 'audio/x-wav',
-        'webm' => 'video/webm',
-        'wma' => 'audio/x-ms-wma',
-        'wmv' => 'video/x-ms-wmv',
-        'woff' => 'application/x-font-woff',
-        'wsdl' => 'application/wsdl+xml',
-        'xbm' => 'image/x-xbitmap',
-        'xls' => 'application/vnd.ms-excel',
-        'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
-        'xml' => 'application/xml',
-        'xpm' => 'image/x-xpixmap',
-        'xwd' => 'image/x-xwindowdump',
-        'yaml' => 'text/yaml',
-        'yml' => 'text/yaml',
-        'zip' => 'application/zip',
-    ];
-
-    $extension = strtolower($extension);
-
-    return isset($mimetypes[$extension])
-        ? $mimetypes[$extension]
-        : null;
-}
-
-/**
- * Parses an HTTP message into an associative array.
- *
- * The array contains the "start-line" key containing the start line of
- * the message, "headers" key containing an associative array of header
- * array values, and a "body" key containing the body of the message.
- *
- * @param string $message HTTP request or response to parse.
- *
- * @return array
- * @internal
- */
-function _parse_message($message)
-{
-    if (!$message) {
-        throw new \InvalidArgumentException('Invalid message');
-    }
-
-    // Iterate over each line in the message, accounting for line endings
-    $lines = preg_split('/(\\r?\\n)/', $message, -1, PREG_SPLIT_DELIM_CAPTURE);
-    $result = ['start-line' => array_shift($lines), 'headers' => [], 'body' => ''];
-    array_shift($lines);
-
-    for ($i = 0, $totalLines = count($lines); $i < $totalLines; $i += 2) {
-        $line = $lines[$i];
-        // If two line breaks were encountered, then this is the end of body
-        if (empty($line)) {
-            if ($i < $totalLines - 1) {
-                $result['body'] = implode('', array_slice($lines, $i + 2));
-            }
-            break;
-        }
-        if (strpos($line, ':')) {
-            $parts = explode(':', $line, 2);
-            $key = trim($parts[0]);
-            $value = isset($parts[1]) ? trim($parts[1]) : '';
-            $result['headers'][$key][] = $value;
-        }
-    }
-
-    return $result;
-}
-
-/**
- * Constructs a URI for an HTTP request message.
- *
- * @param string $path    Path from the start-line
- * @param array  $headers Array of headers (each value an array).
- *
- * @return string
- * @internal
- */
-function _parse_request_uri($path, array $headers)
-{
-    $hostKey = array_filter(array_keys($headers), function ($k) {
-        return strtolower($k) === 'host';
-    });
-
-    // If no host is found, then a full URI cannot be constructed.
-    if (!$hostKey) {
-        return $path;
-    }
-
-    $host = $headers[reset($hostKey)][0];
-    $scheme = substr($host, -4) === ':443' ? 'https' : 'http';
-
-    return $scheme . '://' . $host . '/' . ltrim($path, '/');
-}
-
-/** @internal */
-function _caseless_remove($keys, array $data)
-{
-    $result = [];
-
-    foreach ($keys as &$key) {
-        $key = strtolower($key);
-    }
-
-    foreach ($data as $k => $v) {
-        if (!in_array(strtolower($k), $keys)) {
-            $result[$k] = $v;
-        }
-    }
-
-    return $result;
-}
diff --git a/vendor/guzzlehttp/psr7/src/functions_include.php b/vendor/guzzlehttp/psr7/src/functions_include.php
deleted file mode 100644
index 96a4a83..0000000
--- a/vendor/guzzlehttp/psr7/src/functions_include.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-// Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\Psr7\str')) {
-    require __DIR__ . '/functions.php';
-}
diff --git a/vendor/jcalderonzumba/gastonjs/.travis.yml b/vendor/jcalderonzumba/gastonjs/.travis.yml
deleted file mode 100644
index c64d755..0000000
--- a/vendor/jcalderonzumba/gastonjs/.travis.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-language: php
-
-php:
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-matrix:
-  fast_finish: true
-  include:
-    - php: 5.4
-      env: COMPOSER_FLAGS='--prefer-lowest --prefer-stable' SYMFONY_DEPRECATIONS_HELPER=weak
-    - php: 5.6
-      env: DEPENDENCIES=dev
-  allow_failures:
-    - php: 7.0
-    - php: hhvm
-
-cache:
-  directories:
-    - $HOME/.composer/cache/files
-
-before_install:
-  - composer self-update
-  - if [ "$DEPENDENCIES" = "dev" ]; then perl -pi -e 's/^}$/,"minimum-stability":"dev"}/' composer.json; fi;
-
-install:
-  - composer update $COMPOSER_FLAGS
-
-script:
-  - bin/run-tests.sh
-
-after_script:
-  - ps axo pid,command | grep phantomjs | grep -v grep | awk '{print $1}' | xargs -I {} kill {}
-  - ps axo pid,command | grep php | grep -v grep | awk '{print $1}' | xargs -I {} kill {}
diff --git a/vendor/jcalderonzumba/gastonjs/LICENSE b/vendor/jcalderonzumba/gastonjs/LICENSE
deleted file mode 100644
index 7ba018a..0000000
--- a/vendor/jcalderonzumba/gastonjs/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Juan Francisco Calderón Zumba
-
-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/jcalderonzumba/gastonjs/README.md b/vendor/jcalderonzumba/gastonjs/README.md
deleted file mode 100644
index 4f8e83d..0000000
--- a/vendor/jcalderonzumba/gastonjs/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-GastonJS for Webpage automation
-================================
-[![Build Status](https://travis-ci.org/jcalderonzumba/gastonjs.svg?branch=travis_ci)](https://travis-ci.org/jcalderonzumba/gastonjs)
-[![Latest Stable Version](https://poser.pugx.org/jcalderonzumba/gastonjs/v/stable)](https://packagist.org/packages/jcalderonzumba/gastonjs)
-[![Total Downloads](https://poser.pugx.org/jcalderonzumba/gastonjs/downloads)](https://packagist.org/packages/jcalderonzumba/gastonjs)
-
-
-For full documentation go to [GastonJS doc](http://gastonjs.readthedocs.org/en/latest/)
diff --git a/vendor/jcalderonzumba/gastonjs/bin/run-tests.sh b/vendor/jcalderonzumba/gastonjs/bin/run-tests.sh
deleted file mode 100755
index 426ec94..0000000
--- a/vendor/jcalderonzumba/gastonjs/bin/run-tests.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-set -e
-
-start_browser_api(){
-  CURRENT_DIR=$(pwd)
-  LOCAL_PHANTOMJS="${CURRENT_DIR}/bin/phantomjs"
-  if [ -f ${LOCAL_PHANTOMJS} ]; then
-    ${LOCAL_PHANTOMJS} --ssl-protocol=any --ignore-ssl-errors=true src/Client/main.js 8510 1024 768 2>&1 &
-  else
-    phantomjs --ssl-protocol=any --ignore-ssl-errors=true src/Client/main.js 8510 1024 768 2>&1 >> /dev/null &
-  fi
-  sleep 2
-}
-
-stop_services(){
-  ps axo pid,command | grep phantomjs | grep -v grep | awk '{print $1}' | xargs -I {} kill {}
-  ps axo pid,command | grep php | grep -v grep | grep -v phpstorm | awk '{print $1}' | xargs -I {} kill {}
-  sleep 2
-}
-
-mkdir -p /tmp/jcalderonzumba/phantomjs
-stop_services
-start_browser_api
-CURRENT_DIR=$(pwd)
-${CURRENT_DIR}/bin/phpunit --configuration unit_tests.xml
-
diff --git a/vendor/jcalderonzumba/gastonjs/composer.json b/vendor/jcalderonzumba/gastonjs/composer.json
deleted file mode 100644
index 7e5d96e..0000000
--- a/vendor/jcalderonzumba/gastonjs/composer.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  "name": "jcalderonzumba/gastonjs",
-  "description": "PhantomJS API based server for webpage automation",
-  "keywords": [
-    "phantomjs",
-    "headless",
-    "api",
-    "automation",
-    "browser"
-  ],
-  "homepage": "https://github.com/jcalderonzumba/gastonjs",
-  "type": "phantomjs-api",
-  "license": "MIT",
-  "authors": [
-    {
-      "name": "Juan Francisco Calderón Zumba",
-      "email": "juanfcz@gmail.com",
-      "homepage": "http://github.com/jcalderonzumba"
-    }
-  ],
-  "require": {
-    "php": ">=5.4",
-    "guzzlehttp/guzzle": "~5.0|~6.0"
-  },
-  "require-dev": {
-    "symfony/process": "~2.1",
-    "symfony/phpunit-bridge": "~2.7",
-    "phpunit/phpunit": "~4.6",
-    "silex/silex": "~1.2"
-  },
-  "config": {
-    "bin-dir": "bin"
-  },
-  "autoload": {
-    "psr-4": {
-      "Zumba\\GastonJS\\": "src"
-    }
-  },
-  "autoload-dev": {
-    "psr-4": {
-      "Zumba\\GastonJS\\Tests\\": "tests/unit"
-    }
-  },
-  "extra": {
-    "branch-alias": {
-      "dev-master": "1.1.x-dev"
-    }
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/mkdocs.yml b/vendor/jcalderonzumba/gastonjs/mkdocs.yml
deleted file mode 100644
index 51d881f..0000000
--- a/vendor/jcalderonzumba/gastonjs/mkdocs.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-site_name: GastonJS Documentation
-pages:
-  - GastonJS introduction: index.md
-  - GastonJS API :
-    - 'Introduction': api/index.md
-    - 'Available commands': api/command-list.md
-    - 'Navigation commands':
-      - 'visit': api/commands/navigation/visit.md
-      - 'current_url': api/commands/navigation/current_url.md
-      - 'reload': api/commands/navigation/reload.md
-      - 'go_back': api/commands/navigation/go_back.md
-      - 'go_forward': api/commands/navigation/go_forward.md
-    - 'Header commands' :
-      - 'get_headers': api/commands/headers/get_headers.md
-      - 'response_headers': api/commands/headers/response_headers.md
-      - 'set_headers': api/commands/headers/set_headers.md
-      - 'add_headers': api/commands/headers/add_headers.md
-      - 'add_header': api/commands/headers/add_header.md
-    - 'Javascript commands' :
-      - 'add_extension': api/commands/javascript/add_extension.md
-      - 'execute': api/commands/javascript/execute.md
-      - 'evaluate': api/commands/javascript/evaluate.md
-      - 'set_js_errors': api/commands/javascript/set_js_errors.md
-    - 'Cookies commands' :
-      - 'cookies': api/commands/cookies/cookies.md
-      - 'clear_cookies': api/commands/cookies/clear_cookies.md
-      - 'cookies_enabled': api/commands/cookies/cookies_enabled.md
-      - 'remove_cookie': api/commands/cookies/remove_cookie.md
-      - 'set_cookie': api/commands/cookies/set_cookie.md
-    - 'Mouse commands':
-        - 'click': api/commands/mouse/click.md
-        - 'right_click': api/commands/mouse/right_click.md
-        - 'hover': api/commands/mouse/hover.md
-        - 'double_click': api/commands/mouse/double_click.md
-        - 'click_coordinates': api/commands/mouse/click_coordinates.md
-        - 'mouse_event': api/commands/mouse/mouse_event.md
-    - 'Render commands':
-        - 'render': api/commands/render/render.md
-        - 'render_base64': api/commands/render/render_base64.md
-  - GastonJS PHP client: clients/php/index.md
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/Browser.php b/vendor/jcalderonzumba/gastonjs/src/Browser/Browser.php
deleted file mode 100644
index 5c2a337..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/Browser.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Class Browser
- * @package Zumba\GastonJS
- */
-class Browser extends BrowserBase {
-
-  use BrowserAuthenticationTrait;
-  use BrowserConfigurationTrait;
-  use BrowserCookieTrait;
-  use BrowserFileTrait;
-  use BrowserFrameTrait;
-  use BrowserHeadersTrait;
-  use BrowserMouseEventTrait;
-  use BrowserNavigateTrait;
-  use BrowserNetworkTrait;
-  use BrowserPageElementTrait;
-  use BrowserPageTrait;
-  use BrowserRenderTrait;
-  use BrowserScriptTrait;
-  use BrowserWindowTrait;
-
-  /**
-   * @param string $phantomJSHost
-   * @param mixed  $logger
-   */
-  public function __construct($phantomJSHost, $logger = null) {
-    $this->phantomJSHost = $phantomJSHost;
-    $this->logger = $logger;
-    $this->debug = false;
-    $this->createApiClient();
-  }
-
-  /**
-   * Returns the value of a given element in a page
-   * @param $pageId
-   * @param $elementId
-   * @return mixed
-   */
-  public function value($pageId, $elementId) {
-    return $this->command('value', $pageId, $elementId);
-  }
-
-  /**
-   * Sets a value to a given element in a given page
-   * @param $pageId
-   * @param $elementId
-   * @param $value
-   * @return mixed
-   */
-  public function set($pageId, $elementId, $value) {
-    return $this->command('set', $pageId, $elementId, $value);
-  }
-
-  /**
-   * Tells whether an element on a page is visible or not
-   * @param $pageId
-   * @param $elementId
-   * @return bool
-   */
-  public function isVisible($pageId, $elementId) {
-    return $this->command('visible', $pageId, $elementId);
-  }
-
-  /**
-   * @param $pageId
-   * @param $elementId
-   * @return bool
-   */
-  public function isDisabled($pageId, $elementId) {
-    return $this->command('disabled', $pageId, $elementId);
-  }
-
-  /**
-   * Drag an element to a another in a given page
-   * @param $pageId
-   * @param $fromId
-   * @param $toId
-   * @return mixed
-   */
-  public function drag($pageId, $fromId, $toId) {
-    return $this->command('drag', $pageId, $fromId, $toId);
-  }
-
-  /**
-   * Selects a value in the given element and page
-   * @param $pageId
-   * @param $elementId
-   * @param $value
-   * @return mixed
-   */
-  public function select($pageId, $elementId, $value) {
-    return $this->command('select', $pageId, $elementId, $value);
-  }
-
-  /**
-   * Triggers an event to a given element on the given page
-   * @param $pageId
-   * @param $elementId
-   * @param $event
-   * @return mixed
-   */
-  public function trigger($pageId, $elementId, $event) {
-    return $this->command('trigger', $pageId, $elementId, $event);
-  }
-
-  /**
-   * TODO: not sure what this does, needs to do normalizeKeys
-   * @param int   $pageId
-   * @param int   $elementId
-   * @param array $keys
-   * @return mixed
-   */
-  public function sendKeys($pageId, $elementId, $keys) {
-    return $this->command('send_keys', $pageId, $elementId, $this->normalizeKeys($keys));
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserAuthenticationTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserAuthenticationTrait.php
deleted file mode 100644
index 7416a76..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserAuthenticationTrait.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Trait BrowserAuthenticationTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserAuthenticationTrait {
-  /**
-   * Sets basic HTTP authentication
-   * @param $user
-   * @param $password
-   * @return bool
-   */
-  public function setHttpAuth($user, $password) {
-    return $this->command('set_http_auth', $user, $password);
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserBase.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserBase.php
deleted file mode 100644
index 3ef14d0..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserBase.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-use Zumba\GastonJS\Exception\BrowserError;
-use Zumba\GastonJS\Exception\DeadClient;
-use GuzzleHttp\Client;
-use GuzzleHttp\Exception\ConnectException;
-use GuzzleHttp\Exception\ServerException;
-
-/**
- * Class BrowserBase
- * @package Zumba\GastonJS\Browser
- */
-class BrowserBase {
-  /** @var mixed */
-  protected $logger;
-  /** @var  bool */
-  protected $debug;
-  /** @var  string */
-  protected $phantomJSHost;
-  /** @var  Client */
-  protected $apiClient;
-
-  /**
-   *  Creates an http client to consume the phantomjs API
-   */
-  protected function createApiClient() {
-    // Provide a BC switch between guzzle 5 and guzzle 6.
-    if (class_exists('GuzzleHttp\Psr7\Response')) {
-      $this->apiClient = new Client(array("base_uri" => $this->getPhantomJSHost()));
-    }
-    else {
-      $this->apiClient = new Client(array("base_url" => $this->getPhantomJSHost()));
-    }
-  }
-
-  /**
-   * TODO: not sure how to do the normalizeKeys stuff fix when needed
-   * @param $keys
-   * @return mixed
-   */
-  protected function normalizeKeys($keys) {
-    return $keys;
-  }
-
-  /**
-   * @return Client
-   */
-  public function getApiClient() {
-    return $this->apiClient;
-  }
-
-  /**
-   * @return string
-   */
-  public function getPhantomJSHost() {
-    return $this->phantomJSHost;
-  }
-
-  /**
-   * @return mixed
-   */
-  public function getLogger() {
-    return $this->logger;
-  }
-
-  /**
-   * Restarts the browser
-   */
-  public function restart() {
-    //TODO: Do we really need to do this?, we are just a client
-  }
-
-  /**
-   * Sends a command to the browser
-   * @throws BrowserError
-   * @throws \Exception
-   * @return mixed
-   */
-  public function command() {
-    try {
-      $args = func_get_args();
-      $commandName = $args[0];
-      array_shift($args);
-      $messageToSend = json_encode(array('name' => $commandName, 'args' => $args));
-      /** @var $commandResponse \GuzzleHttp\Psr7\Response|\GuzzleHttp\Message\Response */
-      $commandResponse = $this->getApiClient()->post("/api", array("body" => $messageToSend));
-      $jsonResponse = json_decode($commandResponse->getBody(), TRUE);
-    } catch (ServerException $e) {
-      $jsonResponse = json_decode($e->getResponse()->getBody()->getContents(), true);
-    } catch (ConnectException $e) {
-      throw new DeadClient($e->getMessage(), $e->getCode(), $e);
-    } catch (\Exception $e) {
-      throw $e;
-    }
-
-    if (isset($jsonResponse['error'])) {
-      throw $this->getErrorClass($jsonResponse);
-    }
-
-    return $jsonResponse['response'];
-  }
-
-  /**
-   * @param $error
-   * @return BrowserError
-   */
-  protected function getErrorClass($error) {
-    $errorClassMap = array(
-      'Poltergeist.JavascriptError'   => "Zumba\\GastonJS\\Exception\\JavascriptError",
-      'Poltergeist.FrameNotFound'     => "Zumba\\GastonJS\\Exception\\FrameNotFound",
-      'Poltergeist.InvalidSelector'   => "Zumba\\GastonJS\\Exception\\InvalidSelector",
-      'Poltergeist.StatusFailError'   => "Zumba\\GastonJS\\Exception\\StatusFailError",
-      'Poltergeist.NoSuchWindowError' => "Zumba\\GastonJS\\Exception\\NoSuchWindowError",
-      'Poltergeist.ObsoleteNode'      => "Zumba\\GastonJS\\Exception\\ObsoleteNode"
-    );
-    if (isset($error['error']['name']) && isset($errorClassMap[$error["error"]["name"]])) {
-      return new $errorClassMap[$error["error"]["name"]]($error);
-    }
-
-    return new BrowserError($error);
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserConfigurationTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserConfigurationTrait.php
deleted file mode 100644
index 0db7f07..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserConfigurationTrait.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-
-/**
- * Trait BrowserConfigurationTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserConfigurationTrait {
-  /**
-   * Set whether to fail or not on javascript errors found on the page
-   * @param bool $enabled
-   * @return bool
-   */
-  public function jsErrors($enabled = true) {
-    return $this->command('set_js_errors', $enabled);
-  }
-
-  /**
-   * Set a blacklist of urls that we are not supposed to load
-   * @param array $blackList
-   * @return bool
-   */
-  public function urlBlacklist($blackList) {
-    return $this->command('set_url_blacklist', $blackList);
-  }
-
-  /**
-   * Set the debug mode on the browser
-   * @param bool $enable
-   * @return bool
-   */
-  public function debug($enable = false) {
-    $this->debug = $enable;
-    return $this->command('set_debug', $this->debug);
-  }
-
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserCookieTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserCookieTrait.php
deleted file mode 100644
index e2318a4..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserCookieTrait.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-use Zumba\GastonJS\Cookie;
-
-/**
- * Trait BrowserCookieTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserCookieTrait {
-  /**
-   * Gets the cookies on the browser
-   *
-   * @return Cookie[]
-   */
-  public function cookies() {
-    $cookies = $this->command('cookies');
-    $objCookies = array();
-    foreach ($cookies as $cookie) {
-      $objCookies[$cookie["name"]] = new Cookie($cookie);
-    }
-    return $objCookies;
-  }
-
-  /**
-   * Sets a cookie on the browser, expires times is set in seconds
-   * @param $cookie
-   * @return mixed
-   */
-  public function setCookie($cookie) {
-    //TODO: add error control when the cookie array is not valid
-    if (isset($cookie["expires"])) {
-      $cookie["expires"] = intval($cookie["expires"]) * 1000;
-    }
-    $cookie['value'] = urlencode($cookie['value']);
-    return $this->command('set_cookie', $cookie);
-  }
-
-  /**
-   * Deletes a cookie on the browser if exists
-   * @param $cookieName
-   * @return bool
-   */
-  public function removeCookie($cookieName) {
-    return $this->command('remove_cookie', $cookieName);
-  }
-
-  /**
-   * Clear all the cookies
-   * @return bool
-   */
-  public function clearCookies() {
-    return $this->command('clear_cookies');
-  }
-
-  /**
-   * Enables or disables the cookies con phantomjs
-   * @param bool $enabled
-   * @return bool
-   */
-  public function cookiesEnabled($enabled = true) {
-    return $this->command('cookies_enabled', $enabled);
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserFileTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserFileTrait.php
deleted file mode 100644
index 51fc745..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserFileTrait.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Trait BrowserFileTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserFileTrait {
-  /**
-   * Selects a file to send to the browser to a given page
-   * @param $pageId
-   * @param $elementId
-   * @param $value
-   * @return mixed
-   */
-  public function selectFile($pageId, $elementId, $value) {
-    return $this->command('select_file', $pageId, $elementId, $value);
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserFrameTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserFrameTrait.php
deleted file mode 100644
index edefe5e..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserFrameTrait.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Trait BrowserFrameTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserFrameTrait {
-  /**
-   * Back to the parent of the iframe if possible
-   * @return mixed
-   * @throws \Zumba\GastonJS\Exception\BrowserError
-   * @throws \Exception
-   */
-  public function popFrame() {
-    return $this->command("pop_frame");
-  }
-
-  /**
-   * Goes into the iframe to do stuff
-   * @param string $name
-   * @param int    $timeout
-   * @return mixed
-   * @throws \Zumba\GastonJS\Exception\BrowserError
-   * @throws \Exception
-   */
-  public function pushFrame($name, $timeout = null) {
-    return $this->command("push_frame", $name, $timeout);
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserHeadersTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserHeadersTrait.php
deleted file mode 100644
index 8300048..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserHeadersTrait.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Trait BrowserHeadersTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserHeadersTrait {
-  /**
-   * Returns the headers of the current page that will be used the next request
-   * @return mixed
-   */
-  public function getHeaders() {
-    return $this->command('get_headers');
-  }
-
-  /**
-   * Given an array of headers, set such headers for the requests, removing all others
-   * @param array $headers
-   * @return mixed
-   */
-  public function setHeaders($headers) {
-    return $this->command('set_headers', $headers);
-  }
-
-  /**
-   * Adds headers to current page overriding the existing ones for the next requests
-   * @param $headers
-   * @return mixed
-   */
-  public function addHeaders($headers) {
-    return $this->command('add_headers', $headers);
-  }
-
-  /**
-   * Adds a header to the page making it permanent if needed
-   * @param $header
-   * @param $permanent
-   * @return mixed
-   */
-  public function addHeader($header, $permanent = false) {
-    return $this->command('add_header', $header, $permanent);
-  }
-
-  /**
-   * Gets the response headers after a request
-   * @return mixed
-   */
-  public function responseHeaders() {
-    return $this->command('response_headers');
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserMouseEventTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserMouseEventTrait.php
deleted file mode 100644
index 38ec5a6..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserMouseEventTrait.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Trait BrowserMouseEventTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserMouseEventTrait {
-  /**
-   * Click on a given page and element
-   * @param $pageId
-   * @param $elementId
-   * @return mixed
-   */
-  public function click($pageId, $elementId) {
-    return $this->command('click', $pageId, $elementId);
-  }
-
-  /**
-   * Triggers a right click on a page an element
-   * @param $pageId
-   * @param $elementId
-   * @return mixed
-   */
-  public function rightClick($pageId, $elementId) {
-    return $this->command('right_click', $pageId, $elementId);
-  }
-
-  /**
-   * Triggers a double click in a given page and element
-   * @param $pageId
-   * @param $elementId
-   * @return mixed
-   */
-  public function doubleClick($pageId, $elementId) {
-    return $this->command('double_click', $pageId, $elementId);
-  }
-
-  /**
-   * Hovers over an element in a given page
-   * @param $pageId
-   * @param $elementId
-   * @return mixed
-   */
-  public function hover($pageId, $elementId) {
-    return $this->command('hover', $pageId, $elementId);
-  }
-
-  /**
-   * Click on given coordinates, THIS DOES NOT depend on the page, it just clicks on where we are right now
-   * @param $coordX
-   * @param $coordY
-   * @return mixed
-   */
-  public function clickCoordinates($coordX, $coordY) {
-    return $this->command('click_coordinates', $coordX, $coordY);
-  }
-
-  /**
-   * Scrolls the page by a given left and top coordinates
-   * @param $left
-   * @param $top
-   * @return mixed
-   */
-  public function scrollTo($left, $top) {
-    return $this->command('scroll_to', $left, $top);
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserNavigateTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserNavigateTrait.php
deleted file mode 100644
index 24189af..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserNavigateTrait.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-use Zumba\GastonJS\Exception\BrowserError;
-
-/**
- * Trait BrowserNavigateTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserNavigateTrait {
-
-  /**
-   * Send a visit command to the browser
-   * @param $url
-   * @return mixed
-   */
-  public function visit($url) {
-    return $this->command('visit', $url);
-  }
-
-  /**
-   * Gets the current url we are in
-   * @return mixed
-   */
-  public function currentUrl() {
-    return $this->command('current_url');
-  }
-
-  /**
-   * Goes back on the browser history if possible
-   * @return bool
-   * @throws BrowserError
-   * @throws \Exception
-   */
-  public function goBack() {
-    return $this->command('go_back');
-  }
-
-  /**
-   * Goes forward on the browser history if possible
-   * @return mixed
-   * @throws BrowserError
-   * @throws \Exception
-   */
-  public function goForward() {
-    return $this->command('go_forward');
-  }
-
-  /**
-   * Reloads the current page we are in
-   */
-  public function reload() {
-    return $this->command('reload');
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserNetworkTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserNetworkTrait.php
deleted file mode 100644
index d79d21e..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserNetworkTrait.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-use Zumba\GastonJS\NetworkTraffic\Request;
-
-/**
- * Trait BrowserNetworkTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserNetworkTrait {
-  /**
-   * Get all the network traffic that the page have created
-   * @return array
-   */
-  public function networkTraffic() {
-    $networkTraffic = $this->command('network_traffic');
-    $requestTraffic = array();
-
-    if (count($networkTraffic) === 0) {
-      return null;
-    }
-
-    foreach ($networkTraffic as $traffic) {
-      $requestTraffic[] = new Request($traffic["request"], $traffic["responseParts"]);
-    }
-
-    return $requestTraffic;
-  }
-
-  /**
-   * Clear the network traffic data stored on the phantomjs code
-   * @return mixed
-   */
-  public function clearNetworkTraffic() {
-    return $this->command('clear_network_traffic');
-  }
-
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserPageElementTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserPageElementTrait.php
deleted file mode 100644
index 3f998fa..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserPageElementTrait.php
+++ /dev/null
@@ -1,193 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Trait BrowserPageElementTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserPageElementTrait {
-  /**
-   * Find elements given a method and a selector
-   * @param $method
-   * @param $selector
-   * @return array
-   */
-  public function find($method, $selector) {
-    $result = $this->command('find', $method, $selector);
-    $found["page_id"] = $result["page_id"];
-    foreach ($result["ids"] as $id) {
-      $found["ids"][] = $id;
-    }
-    return $found;
-  }
-
-  /**
-   * Find elements within a page, method and selector
-   * @param $pageId
-   * @param $elementId
-   * @param $method
-   * @param $selector
-   * @return mixed
-   */
-  public function findWithin($pageId, $elementId, $method, $selector) {
-    return $this->command('find_within', $pageId, $elementId, $method, $selector);
-  }
-
-  /**
-   * @param $pageId
-   * @param $elementId
-   * @return mixed
-   */
-  public function getParents($pageId, $elementId) {
-    return $this->command('parents', $pageId, $elementId);
-  }
-
-  /**
-   * Returns the text of a given page and element
-   * @param $pageId
-   * @param $elementId
-   * @return mixed
-   */
-  public function allText($pageId, $elementId) {
-    return $this->command('all_text', $pageId, $elementId);
-  }
-
-  /**
-   * Returns the inner or outer html of the given page and element
-   * @param $pageId
-   * @param $elementId
-   * @param $type
-   * @return mixed
-   * @throws \Zumba\GastonJS\Exception\BrowserError
-   * @throws \Exception
-   */
-  public function allHtml($pageId, $elementId, $type = "inner") {
-    return $this->command('all_html', $pageId, $elementId, $type);
-  }
-
-  /**
-   * Returns ONLY the visible text of a given page and element
-   * @param $pageId
-   * @param $elementId
-   * @return mixed
-   */
-  public function visibleText($pageId, $elementId) {
-    return $this->command('visible_text', $pageId, $elementId);
-  }
-
-  /**
-   * Deletes the text of a given page and element
-   * @param $pageId
-   * @param $elementId
-   * @return mixed
-   */
-  public function deleteText($pageId, $elementId) {
-    return $this->command('delete_text', $pageId, $elementId);
-  }
-
-  /**
-   * Gets the tag name of a given element and page
-   * @param $pageId
-   * @param $elementId
-   * @return string
-   */
-  public function tagName($pageId, $elementId) {
-    return strtolower($this->command('tag_name', $pageId, $elementId));
-  }
-
-  /**
-   * Check if two elements are the same on a give
-   * @param $pageId
-   * @param $firstId
-   * @param $secondId
-   * @return bool
-   */
-  public function equals($pageId, $firstId, $secondId) {
-    return $this->command('equals', $pageId, $firstId, $secondId);
-  }
-
-  /**
-   * Returns the attributes of an element in a given page
-   * @param $pageId
-   * @param $elementId
-   * @return mixed
-   */
-  public function attributes($pageId, $elementId) {
-    return $this->command('attributes', $pageId, $elementId);
-  }
-
-  /**
-   * Returns the attribute of an element by name in a given page
-   * @param $pageId
-   * @param $elementId
-   * @param $name
-   * @return mixed
-   */
-  public function attribute($pageId, $elementId, $name) {
-    return $this->command('attribute', $pageId, $elementId, $name);
-  }
-
-  /**
-   * Set an attribute to the given element in the given page
-   * @param $pageId
-   * @param $elementId
-   * @param $name
-   * @param $value
-   * @return mixed
-   * @throws \Zumba\GastonJS\Exception\BrowserError
-   * @throws \Exception
-   */
-  public function setAttribute($pageId, $elementId, $name, $value) {
-    return $this->command('set_attribute', $pageId, $elementId, $name, $value);
-  }
-
-  /**
-   * Remove an attribute for a given page and element
-   * @param $pageId
-   * @param $elementId
-   * @param $name
-   * @return mixed
-   * @throws \Zumba\GastonJS\Exception\BrowserError
-   * @throws \Exception
-   */
-  public function removeAttribute($pageId, $elementId, $name) {
-    return $this->command('remove_attribute', $pageId, $elementId, $name);
-  }
-
-  /**
-   * Checks if an element is visible or not
-   * @param $pageId
-   * @param $elementId
-   * @return boolean
-   */
-  public function isVisible($pageId, $elementId) {
-    return $this->command("visible", $pageId, $elementId);
-  }
-
-  /**
-   * Sends the order to execute a key event on a given element
-   * @param $pageId
-   * @param $elementId
-   * @param $keyEvent
-   * @param $key
-   * @param $modifier
-   * @return mixed
-   */
-  public function keyEvent($pageId, $elementId, $keyEvent, $key, $modifier) {
-    return $this->command("key_event", $pageId, $elementId, $keyEvent, $key, $modifier);
-  }
-
-  /**
-   * Sends the command to select and option given a value
-   * @param      $pageId
-   * @param      $elementId
-   * @param      $value
-   * @param bool $multiple
-   * @return mixed
-   */
-  public function selectOption($pageId, $elementId, $value, $multiple = false) {
-    return $this->command("select_option", $pageId, $elementId, $value, $multiple);
-  }
-
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserPageTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserPageTrait.php
deleted file mode 100644
index 3d5f9f1..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserPageTrait.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Trait BrowserPageTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserPageTrait {
-  /**
-   * Gets the status code of the request we are currently in
-   * @return mixed
-   */
-  public function getStatusCode() {
-    return $this->command('status_code');
-  }
-
-  /**
-   * Returns the body of the response to a given browser request
-   * @return mixed
-   */
-  public function getBody() {
-    return $this->command('body');
-  }
-
-  /**
-   * Returns the source of the current page
-   * @return mixed
-   */
-  public function getSource() {
-    return $this->command('source');
-  }
-
-  /**
-   * Gets the current page title
-   * @return mixed
-   */
-  public function getTitle() {
-    return $this->command('title');
-  }
-
-  /**
-   * Resize the current page
-   * @param $width
-   * @param $height
-   * @return mixed
-   */
-  public function resize($width, $height) {
-    return $this->command('resize', $width, $height);
-  }
-
-  /**
-   * Resets the page we are in to a clean slate
-   * @return mixed
-   */
-  public function reset() {
-    return $this->command('reset');
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserRenderTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserRenderTrait.php
deleted file mode 100644
index 3aa10aa..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserRenderTrait.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Trait BrowserRenderTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserRenderTrait {
-  /**
-   * Check and fix render options
-   * @param $options
-   * @return mixed
-   */
-  protected function checkRenderOptions($options) {
-    //Default is full and no selection
-    if (count($options) === 0) {
-      $options["full"] = true;
-      $options["selector"] = null;
-    }
-
-    if (isset($options["full"]) && isset($options["selector"])) {
-      if ($options["full"]) {
-        //Whatever it is, full is more powerful than selection
-        $options["selector"] = null;
-      }
-    } else {
-      if (!isset($options["full"]) && isset($options["selector"])) {
-        $options["full"] = false;
-      }
-    }
-    return $options;
-  }
-
-  /**
-   * Renders a page or selection to a file given by path
-   * @param string $path
-   * @param array  $options
-   * @return mixed
-   */
-  public function render($path, $options = array()) {
-    $fixedOptions = $this->checkRenderOptions($options);
-    return $this->command('render', $path, $fixedOptions["full"], $fixedOptions["selector"]);
-  }
-
-  /**
-   * Renders base64 a page or selection to a file given by path
-   * @param string $imageFormat (PNG, GIF, JPEG)
-   * @param array  $options
-   * @return mixed
-   */
-  public function renderBase64($imageFormat, $options = array()) {
-    $fixedOptions = $this->checkRenderOptions($options);
-    return $this->command('render_base64', $imageFormat, $fixedOptions["full"], $fixedOptions["selector"]);
-  }
-
-  /**
-   * Sets the paper size, useful when saving to PDF
-   * @param $paperSize
-   * @return mixed
-   */
-  public function setPaperSize($paperSize) {
-    return $this->command('set_paper_size', $paperSize);
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserScriptTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserScriptTrait.php
deleted file mode 100644
index 769b86f..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserScriptTrait.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Trait BrowserScriptTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserScriptTrait {
-  /**
-   * Evaluates a script on the browser
-   * @param $script
-   * @return mixed
-   */
-  public function evaluate($script) {
-    return $this->command('evaluate', $script);
-  }
-
-  /**
-   * Executes a script on the browser
-   * @param $script
-   * @return mixed
-   */
-  public function execute($script) {
-    return $this->command('execute', $script);
-  }
-
-  /**
-   * Add desired extensions to phantomjs
-   * @param $extensions
-   * @return bool
-   */
-  public function extensions($extensions) {
-    //TODO: add error control for when extensions do not exist physically
-    foreach ($extensions as $extensionName) {
-      $this->command('add_extension', $extensionName);
-    }
-    return true;
-  }
-
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserWindowTrait.php b/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserWindowTrait.php
deleted file mode 100644
index 8647ffc..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Browser/BrowserWindowTrait.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Browser;
-
-/**
- * Class BrowserWindowTrait
- * @package Zumba\GastonJS\Browser
- */
-trait BrowserWindowTrait {
-  /**
-   * Returns the current window handle name in the browser
-   * @param string $name
-   * @return mixed
-   */
-  public function windowHandle($name = null) {
-    return $this->command('window_handle', $name);
-  }
-
-  /**
-   * Returns all the window handles present in the browser
-   * @return array
-   */
-  public function windowHandles() {
-    return $this->command('window_handles');
-  }
-
-  /**
-   * Change the browser focus to another window
-   * @param $windowHandleName
-   * @return mixed
-   */
-  public function switchToWindow($windowHandleName) {
-    return $this->command('switch_to_window', $windowHandleName);
-  }
-
-  /**
-   * Opens a new window on the browser
-   * @return mixed
-   */
-  public function openNewWindow() {
-    return $this->command('open_new_window');
-  }
-
-  /**
-   * Closes a window on the browser by a given handler name
-   * @param $windowHandleName
-   * @return mixed
-   */
-  public function closeWindow($windowHandleName) {
-    return $this->command('close_window', $windowHandleName);
-  }
-
-  /**
-   * Gets the current request window name
-   * @return string
-   * @throws \Zumba\GastonJS\Exception\BrowserError
-   * @throws \Exception
-   */
-  public function windowName() {
-    return $this->command('window_name');
-  }
-
-  /**
-   * Zoom factor for a web page
-   * @param $zoomFactor
-   * @return mixed
-   */
-  public function setZoomFactor($zoomFactor) {
-    return $this->command('set_zoom_factor', $zoomFactor);
-  }
-
-  /**
-   * Gets the window size
-   * @param $windowHandleName
-   * @return mixed
-   */
-  public function windowSize($windowHandleName) {
-    return $this->command('window_size', $windowHandleName);
-  }
-
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/browser_error.js b/vendor/jcalderonzumba/gastonjs/src/Client/Errors/browser_error.js
deleted file mode 100644
index 892333c..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/browser_error.js
+++ /dev/null
@@ -1,17 +0,0 @@
-Poltergeist.BrowserError = (function (_super) {
-  __extends(BrowserError, _super);
-
-  function BrowserError(message, stack) {
-    this.message = message;
-    this.stack = stack;
-  }
-
-  BrowserError.prototype.name = "Poltergeist.BrowserError";
-
-  BrowserError.prototype.args = function () {
-    return [this.message, this.stack];
-  };
-
-  return BrowserError;
-
-})(Poltergeist.Error);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/error.js b/vendor/jcalderonzumba/gastonjs/src/Client/Errors/error.js
deleted file mode 100644
index 5a6f1f6..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/error.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- *  Poltergeist base error class
- */
-Poltergeist.Error = (function () {
-  function Error() {
-  }
-
-  return Error;
-
-})();
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/frame_not_found.js b/vendor/jcalderonzumba/gastonjs/src/Client/Errors/frame_not_found.js
deleted file mode 100644
index d42e872..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/frame_not_found.js
+++ /dev/null
@@ -1,16 +0,0 @@
-Poltergeist.FrameNotFound = (function (_super) {
-  __extends(FrameNotFound, _super);
-
-  function FrameNotFound(frameName) {
-    this.frameName = frameName;
-  }
-
-  FrameNotFound.prototype.name = "Poltergeist.FrameNotFound";
-
-  FrameNotFound.prototype.args = function () {
-    return [this.frameName];
-  };
-
-  return FrameNotFound;
-
-})(Poltergeist.Error);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/invalid_selector.js b/vendor/jcalderonzumba/gastonjs/src/Client/Errors/invalid_selector.js
deleted file mode 100644
index 2ef4ae9..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/invalid_selector.js
+++ /dev/null
@@ -1,17 +0,0 @@
-Poltergeist.InvalidSelector = (function (_super) {
-  __extends(InvalidSelector, _super);
-
-  function InvalidSelector(method, selector) {
-    this.method = method;
-    this.selector = selector;
-  }
-
-  InvalidSelector.prototype.name = "Poltergeist.InvalidSelector";
-
-  InvalidSelector.prototype.args = function () {
-    return [this.method, this.selector];
-  };
-
-  return InvalidSelector;
-
-})(Poltergeist.Error);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/javascript_error.js b/vendor/jcalderonzumba/gastonjs/src/Client/Errors/javascript_error.js
deleted file mode 100644
index b8679e4..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/javascript_error.js
+++ /dev/null
@@ -1,16 +0,0 @@
-Poltergeist.JavascriptError = (function (_super) {
-  __extends(JavascriptError, _super);
-
-  function JavascriptError(errors) {
-    this.errors = errors;
-  }
-
-  JavascriptError.prototype.name = "Poltergeist.JavascriptError";
-
-  JavascriptError.prototype.args = function () {
-    return [this.errors];
-  };
-
-  return JavascriptError;
-
-})(Poltergeist.Error);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/mouse_event_failed.js b/vendor/jcalderonzumba/gastonjs/src/Client/Errors/mouse_event_failed.js
deleted file mode 100644
index f3d4e85..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/mouse_event_failed.js
+++ /dev/null
@@ -1,18 +0,0 @@
-Poltergeist.MouseEventFailed = (function (_super) {
-  __extends(MouseEventFailed, _super);
-
-  function MouseEventFailed(eventName, selector, position) {
-    this.eventName = eventName;
-    this.selector = selector;
-    this.position = position;
-  }
-
-  MouseEventFailed.prototype.name = "Poltergeist.MouseEventFailed";
-
-  MouseEventFailed.prototype.args = function () {
-    return [this.eventName, this.selector, this.position];
-  };
-
-  return MouseEventFailed;
-
-})(Poltergeist.Error);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/no_such_window_error.js b/vendor/jcalderonzumba/gastonjs/src/Client/Errors/no_such_window_error.js
deleted file mode 100644
index ee1d5ad..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/no_such_window_error.js
+++ /dev/null
@@ -1,17 +0,0 @@
-Poltergeist.NoSuchWindowError = (function (_super) {
-  __extends(NoSuchWindowError, _super);
-
-  function NoSuchWindowError() {
-    _ref2 = NoSuchWindowError.__super__.constructor.apply(this, arguments);
-    return _ref2;
-  }
-
-  NoSuchWindowError.prototype.name = "Poltergeist.NoSuchWindowError";
-
-  NoSuchWindowError.prototype.args = function () {
-    return [];
-  };
-
-  return NoSuchWindowError;
-
-})(Poltergeist.Error);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/obsolete_node.js b/vendor/jcalderonzumba/gastonjs/src/Client/Errors/obsolete_node.js
deleted file mode 100644
index 758cfd6..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/obsolete_node.js
+++ /dev/null
@@ -1,21 +0,0 @@
-Poltergeist.ObsoleteNode = (function (_super) {
-  __extends(ObsoleteNode, _super);
-
-  function ObsoleteNode() {
-    _ref = ObsoleteNode.__super__.constructor.apply(this, arguments);
-    return _ref;
-  }
-
-  ObsoleteNode.prototype.name = "Poltergeist.ObsoleteNode";
-
-  ObsoleteNode.prototype.args = function () {
-    return [];
-  };
-
-  ObsoleteNode.prototype.toString = function () {
-    return this.name;
-  };
-
-  return ObsoleteNode;
-
-})(Poltergeist.Error);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/status_fail_error.js b/vendor/jcalderonzumba/gastonjs/src/Client/Errors/status_fail_error.js
deleted file mode 100644
index 55f1871..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Errors/status_fail_error.js
+++ /dev/null
@@ -1,17 +0,0 @@
-Poltergeist.StatusFailError = (function (_super) {
-  __extends(StatusFailError, _super);
-
-  function StatusFailError() {
-    _ref1 = StatusFailError.__super__.constructor.apply(this, arguments);
-    return _ref1;
-  }
-
-  StatusFailError.prototype.name = "Poltergeist.StatusFailError";
-
-  StatusFailError.prototype.args = function () {
-    return [];
-  };
-
-  return StatusFailError;
-
-})(Poltergeist.Error);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Server/server.js b/vendor/jcalderonzumba/gastonjs/src/Client/Server/server.js
deleted file mode 100644
index 120d1fd..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Server/server.js
+++ /dev/null
@@ -1,80 +0,0 @@
-Poltergeist.Server = (function () {
-
-  /**
-   * Server constructor
-   * @param owner
-   * @param port
-   * @constructor
-   */
-  function Server(owner, port) {
-    this.server = require('webserver').create();
-    this.port = port;
-    this.owner = owner;
-    this.webServer = null;
-  }
-
-  /**
-   * Starts the web server
-   */
-  Server.prototype.start = function () {
-    var self = this;
-    this.webServer = this.server.listen(this.port, function (request, response) {
-      self.handleRequest(request, response);
-    });
-  };
-
-  /**
-   * Send error back with code and message
-   * @param response
-   * @param code
-   * @param message
-   * @return {boolean}
-   */
-  Server.prototype.sendError = function (response, code, message) {
-    response.statusCode = code;
-    response.setHeader('Content-Type', 'application/json');
-    response.write(JSON.stringify(message, null, 4));
-    response.close();
-    return true;
-  };
-
-
-  /**
-   * Send response back to the client
-   * @param response
-   * @param data
-   * @return {boolean}
-   */
-  Server.prototype.send = function (response, data) {
-    console.log("RESPONSE: " + JSON.stringify(data, null, 4).substr(0, 200));
-
-    response.statusCode = 200;
-    response.setHeader('Content-Type', 'application/json');
-    response.write(JSON.stringify(data, null, 4));
-    response.close();
-    return true;
-  };
-
-  /**
-   * Handles a request to the server
-   * @param request
-   * @param response
-   * @return {boolean}
-   */
-  Server.prototype.handleRequest = function (request, response) {
-    var commandData;
-    if (request.method !== "POST") {
-      return this.sendError(response, 405, "Only POST method is allowed in the service");
-    }
-    console.log("REQUEST: " + request.post + "\n");
-    try {
-      commandData = JSON.parse(request.post);
-    } catch (parseError) {
-      return this.sendError(response, 400, "JSON data invalid error: " + parseError.message);
-    }
-
-    return this.owner.serverRunCommand(commandData, response);
-  };
-
-  return Server;
-})();
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/Tools/inherit.js b/vendor/jcalderonzumba/gastonjs/src/Client/Tools/inherit.js
deleted file mode 100644
index a67a75c..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/Tools/inherit.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var __extends;
-/**
- * Helper function so objects can inherit from another
- * @param child
- * @param parent
- * @return {Object}
- * @private
- */
-__extends = function (child, parent) {
-  var __hasProp;
-  __hasProp = {}.hasOwnProperty;
-  for (var key in parent) {
-    if (parent.hasOwnProperty(key)) {
-      if (__hasProp.call(parent, key)) {
-        child[key] = parent[key];
-      }
-    }
-  }
-
-  function ClassConstructor() {
-    this.constructor = child;
-  }
-
-  ClassConstructor.prototype = parent.prototype;
-  child.prototype = new ClassConstructor();
-  child.__super__ = parent.prototype;
-  return child;
-};
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/agent.js b/vendor/jcalderonzumba/gastonjs/src/Client/agent.js
deleted file mode 100644
index 606a6c1..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/agent.js
+++ /dev/null
@@ -1,896 +0,0 @@
-var PoltergeistAgent;
-
-PoltergeistAgent = (function () {
-  function PoltergeistAgent() {
-    this.elements = [];
-    this.nodes = {};
-  }
-
-  /**
-   * Executes an external call done from the web page class
-   * @param name
-   * @param args
-   * @return {*}
-   */
-  PoltergeistAgent.prototype.externalCall = function (name, args) {
-    var error;
-    try {
-      return {
-        value: this[name].apply(this, args)
-      };
-    } catch (_error) {
-      error = _error;
-      return {
-        error: {
-          message: error.toString(),
-          stack: error.stack
-        }
-      };
-    }
-  };
-
-  /**
-   * Object stringifycation
-   * @param object
-   * @return {*}
-   */
-  PoltergeistAgent.stringify = function (object) {
-    var error;
-    try {
-      return JSON.stringify(object, function (key, value) {
-        if (Array.isArray(this[key])) {
-          return this[key];
-        } else {
-          return value;
-        }
-      });
-    } catch (_error) {
-      error = _error;
-      if (error instanceof TypeError) {
-        return '"(cyclic structure)"';
-      } else {
-        throw error;
-      }
-    }
-  };
-
-  /**
-   * Name speaks for itself
-   * @return {string}
-   */
-  PoltergeistAgent.prototype.currentUrl = function () {
-    return encodeURI(decodeURI(window.location.href));
-  };
-
-  /**
-   *  Given a method of selection (xpath or css), a selector and a possible element to search
-   *  tries to find the elements that matches such selection
-   * @param method
-   * @param selector
-   * @param within
-   * @return {Array}
-   */
-  PoltergeistAgent.prototype.find = function (method, selector, within) {
-    var elementForXpath, error, i, results, xpath, _i, _len, _results;
-    if (within == null) {
-      within = document;
-    }
-    try {
-      if (method === "xpath") {
-        xpath = document.evaluate(selector, within, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-        results = (function () {
-          var _i, _ref, _results;
-          _results = [];
-          for (i = _i = 0, _ref = xpath.snapshotLength; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
-            _results.push(xpath.snapshotItem(i));
-          }
-          return _results;
-        })();
-      } else {
-        results = within.querySelectorAll(selector);
-      }
-      _results = [];
-      for (_i = 0, _len = results.length; _i < _len; _i++) {
-        elementForXpath = results[_i];
-        _results.push(this.register(elementForXpath));
-      }
-      return _results;
-    } catch (_error) {
-      error = _error;
-      if (error.code === DOMException.SYNTAX_ERR || error.code === 51) {
-        throw new PoltergeistAgent.InvalidSelector;
-      } else {
-        throw error;
-      }
-    }
-  };
-
-  /**
-   *  Register the element in the agent
-   * @param element
-   * @return {number}
-   */
-  PoltergeistAgent.prototype.register = function (element) {
-    this.elements.push(element);
-    return this.elements.length - 1;
-  };
-
-  /**
-   *  Gets the size of the document
-   * @return {{height: number, width: number}}
-   */
-  PoltergeistAgent.prototype.documentSize = function () {
-    return {
-      height: document.documentElement.scrollHeight || document.documentElement.clientHeight,
-      width: document.documentElement.scrollWidth || document.documentElement.clientWidth
-    };
-  };
-
-  /**
-   * Gets a Node by a given id
-   * @param id
-   * @return {PoltergeistAgent.Node}
-   */
-  PoltergeistAgent.prototype.get = function (id) {
-    if (typeof this.nodes[id] == "undefined" || this.nodes[id] === null) {
-      //Let's try now the elements approach
-      if (typeof this.elements[id] == "undefined" || this.elements[id] === null) {
-        throw new PoltergeistAgent.ObsoleteNode;
-      }
-      return new PoltergeistAgent.Node(this, this.elements[id]);
-    }
-
-    return this.nodes[id];
-  };
-
-  /**
-   * Calls a Node agent function from the Node caller via delegates
-   * @param id
-   * @param name
-   * @param args
-   * @return {*}
-   */
-  PoltergeistAgent.prototype.nodeCall = function (id, name, args) {
-    var node;
-
-    node = this.get(id);
-    if (node.isObsolete()) {
-      throw new PoltergeistAgent.ObsoleteNode;
-    }
-    //TODO: add some error control here, we might not be able to call name function
-    return node[name].apply(node, args);
-  };
-
-  PoltergeistAgent.prototype.beforeUpload = function (id) {
-    return this.get(id).setAttribute('_poltergeist_selected', '');
-  };
-
-  PoltergeistAgent.prototype.afterUpload = function (id) {
-    return this.get(id).removeAttribute('_poltergeist_selected');
-  };
-
-  PoltergeistAgent.prototype.clearLocalStorage = function () {
-    //TODO: WTF where is variable...
-    return localStorage.clear();
-  };
-
-  return PoltergeistAgent;
-
-})();
-
-PoltergeistAgent.ObsoleteNode = (function () {
-  function ObsoleteNode() {
-  }
-
-  ObsoleteNode.prototype.toString = function () {
-    return "PoltergeistAgent.ObsoleteNode";
-  };
-
-  return ObsoleteNode;
-
-})();
-
-PoltergeistAgent.InvalidSelector = (function () {
-  function InvalidSelector() {
-  }
-
-  InvalidSelector.prototype.toString = function () {
-    return "PoltergeistAgent.InvalidSelector";
-  };
-
-  return InvalidSelector;
-
-})();
-
-PoltergeistAgent.Node = (function () {
-
-  Node.EVENTS = {
-    FOCUS: ['blur', 'focus', 'focusin', 'focusout'],
-    MOUSE: ['click', 'dblclick', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseover', 'mouseout', 'mouseup', 'contextmenu'],
-    FORM: ['submit']
-  };
-
-  function Node(agent, element) {
-    this.agent = agent;
-    this.element = element;
-  }
-
-  /**
-   * Give me the node id of the parent of this node
-   * @return {number}
-   */
-  Node.prototype.parentId = function () {
-    return this.agent.register(this.element.parentNode);
-  };
-
-  /**
-   * Returns all the node parents ids up to first child of the dom
-   * @return {Array}
-   */
-  Node.prototype.parentIds = function () {
-    var ids, parent;
-    ids = [];
-    parent = this.element.parentNode;
-    while (parent !== document) {
-      ids.push(this.agent.register(parent));
-      parent = parent.parentNode;
-    }
-    return ids;
-  };
-
-  /**
-   * Finds and returns the node ids that matches the selector within this node
-   * @param method
-   * @param selector
-   * @return {Array}
-   */
-  Node.prototype.find = function (method, selector) {
-    return this.agent.find(method, selector, this.element);
-  };
-
-  /**
-   * Checks whether the node is obsolete or not
-   * @return boolean
-   */
-  Node.prototype.isObsolete = function () {
-    var obsolete;
-
-    obsolete = function (element) {
-      if (element.parentNode != null) {
-        if (element.parentNode === document) {
-          return false;
-        } else {
-          return obsolete(element.parentNode);
-        }
-      } else {
-        return true;
-      }
-    };
-
-    return obsolete(this.element);
-  };
-
-  Node.prototype.changed = function () {
-    var event;
-    event = document.createEvent('HTMLEvents');
-    event.initEvent('change', true, false);
-    return this.element.dispatchEvent(event);
-  };
-
-  Node.prototype.input = function () {
-    var event;
-    event = document.createEvent('HTMLEvents');
-    event.initEvent('input', true, false);
-    return this.element.dispatchEvent(event);
-  };
-
-  Node.prototype.keyupdowned = function (eventName, keyCode) {
-    var event;
-    event = document.createEvent('UIEvents');
-    event.initEvent(eventName, true, true);
-    event.keyCode = keyCode;
-    event.which = keyCode;
-    event.charCode = 0;
-    return this.element.dispatchEvent(event);
-  };
-
-  Node.prototype.keypressed = function (altKey, ctrlKey, shiftKey, metaKey, keyCode, charCode) {
-    var event;
-    event = document.createEvent('UIEvents');
-    event.initEvent('keypress', true, true);
-    event.window = this.agent.window;
-    event.altKey = altKey;
-    event.ctrlKey = ctrlKey;
-    event.shiftKey = shiftKey;
-    event.metaKey = metaKey;
-    event.keyCode = keyCode;
-    event.charCode = charCode;
-    event.which = keyCode;
-    return this.element.dispatchEvent(event);
-  };
-
-  /**
-   * Tells if the node is inside the body of the document and not somewhere else
-   * @return {boolean}
-   */
-  Node.prototype.insideBody = function () {
-    return this.element === document.body || document.evaluate('ancestor::body', this.element, null, XPathResult.BOOLEAN_TYPE, null).booleanValue;
-  };
-
-  /**
-   * Returns all text visible or not of the node
-   * @return {string}
-   */
-  Node.prototype.allText = function () {
-    return this.element.textContent;
-  };
-
-  /**
-   * Returns the inner html our outer
-   * @returns {string}
-   */
-  Node.prototype.allHTML = function (type) {
-    var returnType = type || 'inner';
-
-    if (returnType === "inner") {
-      return this.element.innerHTML;
-    }
-
-    if (returnType === "outer") {
-      if (this.element.outerHTML) {
-        return this.element.outerHTML;
-      }
-      // polyfill:
-      var wrapper = document.createElement('div');
-      wrapper.appendChild(this.element.cloneNode(true));
-      return wrapper.innerHTML;
-    }
-
-    return '';
-  };
-
-  /**
-   * If the element is visible then we return the text
-   * @return {string}
-   */
-  Node.prototype.visibleText = function () {
-    if (!this.isVisible(null)) {
-      return null;
-    }
-
-    if (this.element.nodeName === "TEXTAREA") {
-      return this.element.textContent;
-    }
-
-    return this.element.innerText;
-  };
-
-  /**
-   * Deletes the actual text being represented by a selection object from the node's element DOM.
-   * @return {*}
-   */
-  Node.prototype.deleteText = function () {
-    var range;
-    range = document.createRange();
-    range.selectNodeContents(this.element);
-    window.getSelection().removeAllRanges();
-    window.getSelection().addRange(range);
-    return window.getSelection().deleteFromDocument();
-  };
-
-  /**
-   * Returns all the attributes {name:value} in the element
-   * @return {{}}
-   */
-  Node.prototype.getAttributes = function () {
-    var attributes, i, elementAttributes;
-
-    elementAttributes = this.element.attributes;
-    attributes = {};
-    for (i = 0; i < elementAttributes.length; i++) {
-      attributes[elementAttributes[i].name] = elementAttributes[i].value.replace("\n", "\\n");
-    }
-
-    return attributes;
-  };
-
-  /**
-   * Name speaks for it self, returns the value of a given attribute by name
-   * @param name
-   * @return {string}
-   */
-  Node.prototype.getAttribute = function (name) {
-    if (name === 'checked' || name === 'selected' || name === 'multiple') {
-      return this.element[name];
-    }
-    return this.element.getAttribute(name);
-  };
-
-  /**
-   * Scrolls the current element into the visible area of the browser window
-   * @return {*}
-   */
-  Node.prototype.scrollIntoView = function () {
-    return this.element.scrollIntoViewIfNeeded();
-  };
-
-  /**
-   *  Returns the element.value property with special treatment if the element is a select
-   * @return {*}
-   */
-  Node.prototype.value = function () {
-    var options, i, values;
-
-    if (this.element.tagName.toLowerCase() === 'select' && this.element.multiple) {
-      values = [];
-      options = this.element.children;
-      for (i = 0; i < options.length; i++) {
-        if (options[i].selected) {
-          values.push(options[i].value);
-        }
-      }
-      return values;
-    }
-
-    return this.element.value;
-  };
-
-  /**
-   * Sets a given value in the element value property by simulation key interaction
-   * @param value
-   * @return {*}
-   */
-  Node.prototype.set = function (value) {
-    var char, keyCode, i, len;
-
-    if (this.element.readOnly) {
-      return null;
-    }
-
-    //respect the maxLength property if present
-    if (this.element.maxLength >= 0) {
-      value = value.substr(0, this.element.maxLength);
-    }
-
-    this.element.value = '';
-    this.trigger('focus');
-
-    if (this.element.type === 'number') {
-      this.element.value = value;
-    } else {
-      for (i = 0, len = value.length; i < len; i++) {
-        char = value[i];
-        keyCode = this.characterToKeyCode(char);
-        this.keyupdowned('keydown', keyCode);
-        this.element.value += char;
-        this.keypressed(false, false, false, false, char.charCodeAt(0), char.charCodeAt(0));
-        this.keyupdowned('keyup', keyCode);
-      }
-    }
-
-    this.changed();
-    this.input();
-
-    return this.trigger('blur');
-  };
-
-  /**
-   * Is the node multiple
-   * @return {boolean}
-   */
-  Node.prototype.isMultiple = function () {
-    return this.element.multiple;
-  };
-
-  /**
-   * Sets the value of an attribute given by name
-   * @param name
-   * @param value
-   * @return {boolean}
-   */
-  Node.prototype.setAttribute = function (name, value) {
-    if (value === null) {
-      return this.removeAttribute(name);
-    }
-
-    this.element.setAttribute(name, value);
-    return true;
-  };
-
-  /**
-   *  Removes and attribute by name
-   * @param name
-   * @return {boolean}
-   */
-  Node.prototype.removeAttribute = function (name) {
-    this.element.removeAttribute(name);
-    return true;
-  };
-
-  /**
-   *  Selects the current node
-   * @param value
-   * @return {boolean}
-   */
-  Node.prototype.select = function (value) {
-    if (value === false && !this.element.parentNode.multiple) {
-      return false;
-    }
-
-    this.element.selected = value;
-    this.changed();
-    return true;
-  };
-
-  /**
-   * Selects the radio button that has the defined value
-   * @param value
-   * @return {boolean}
-   */
-  Node.prototype.selectRadioValue = function (value) {
-    if (this.element.value == value) {
-      this.element.checked = true;
-      this.trigger('focus');
-      this.trigger('click');
-      this.changed();
-      return true;
-    }
-
-    var formElements = this.element.form.elements;
-    var name = this.element.getAttribute('name');
-    var element, i;
-
-    var deselectAllRadios = function (elements, radioName) {
-      var inputRadioElement;
-
-      for (i = 0; i < elements.length; i++) {
-        inputRadioElement = elements[i];
-        if (inputRadioElement.tagName.toLowerCase() == 'input' && inputRadioElement.type.toLowerCase() == 'radio' && inputRadioElement.name == radioName) {
-          inputRadioElement.checked = false;
-        }
-      }
-    };
-
-    var radioChange = function (radioElement) {
-      var radioEvent;
-      radioEvent = document.createEvent('HTMLEvents');
-      radioEvent.initEvent('change', true, false);
-      return radioElement.dispatchEvent(radioEvent);
-    };
-
-    var radioClickEvent = function (radioElement, name) {
-      var radioEvent;
-      radioEvent = document.createEvent('MouseEvent');
-      radioEvent.initMouseEvent(name, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
-      return radioElement.dispatchEvent(radioEvent);
-    };
-
-    if (!name) {
-      throw new Poltergeist.BrowserError('The radio button does not have the value "' + value + '"');
-    }
-
-    for (i = 0; i < formElements.length; i++) {
-      element = formElements[i];
-      if (element.tagName.toLowerCase() == 'input' && element.type.toLowerCase() == 'radio' && element.name === name) {
-        if (value === element.value) {
-          deselectAllRadios(formElements, name);
-          element.checked = true;
-          radioClickEvent(element, 'click');
-          radioChange(element);
-          return true;
-        }
-      }
-    }
-
-    throw new Poltergeist.BrowserError('The radio group "' + name + '" does not have an option "' + value + '"');
-  };
-
-  /**
-   *  Checks or uncheck a radio option
-   * @param value
-   * @return {boolean}
-   */
-  Node.prototype.checked = function (value) {
-    //TODO: add error control for the checked stuff
-    this.element.checked = value;
-    return true;
-  };
-
-  /**
-   * Returns the element tag name as is, no transformations done
-   * @return {string}
-   */
-  Node.prototype.tagName = function () {
-    return this.element.tagName;
-  };
-
-  /**
-   * Checks if the element is visible either by itself of because the parents are visible
-   * @param element
-   * @return {boolean}
-   */
-  Node.prototype.isVisible = function (element) {
-    var nodeElement = element || this.element;
-
-    if (window.getComputedStyle(nodeElement).display === 'none') {
-      return false;
-    } else if (nodeElement.parentElement) {
-      return this.isVisible(nodeElement.parentElement);
-    } else {
-      return true;
-    }
-  };
-
-  /**
-   * Is the node disabled for operations with it?
-   * @return {boolean}
-   */
-  Node.prototype.isDisabled = function () {
-    return this.element.disabled || this.element.tagName === 'OPTION' && this.element.parentNode.disabled;
-  };
-
-  /**
-   * Does the node contains the selections
-   * @return {boolean}
-   */
-  Node.prototype.containsSelection = function () {
-    var selectedNode;
-
-    selectedNode = document.getSelection().focusNode;
-    if (!selectedNode) {
-      return false;
-    }
-    //this magic number is NODE.TEXT_NODE
-    if (selectedNode.nodeType === 3) {
-      selectedNode = selectedNode.parentNode;
-    }
-
-    return this.element.contains(selectedNode);
-  };
-
-  /**
-   * Returns the offset of the node in relation to the current frame
-   * @return {{top: number, left: number}}
-   */
-  Node.prototype.frameOffset = function () {
-    var offset, rect, style, win;
-    win = window;
-    offset = {
-      top: 0,
-      left: 0
-    };
-    while (win.frameElement) {
-      rect = win.frameElement.getClientRects()[0];
-      style = win.getComputedStyle(win.frameElement);
-      win = win.parent;
-      offset.top += rect.top + parseInt(style.getPropertyValue("padding-top"), 10);
-      offset.left += rect.left + parseInt(style.getPropertyValue("padding-left"), 10);
-    }
-    return offset;
-  };
-
-  /**
-   * Returns the object position in relation to the window
-   * @return {{top: *, right: *, left: *, bottom: *, width: *, height: *}}
-   */
-  Node.prototype.position = function () {
-    var frameOffset, pos, rect;
-
-    rect = this.element.getClientRects()[0];
-    if (!rect) {
-      throw new PoltergeistAgent.ObsoleteNode;
-    }
-
-    frameOffset = this.frameOffset();
-    pos = {
-      top: rect.top + frameOffset.top,
-      right: rect.right + frameOffset.left,
-      left: rect.left + frameOffset.left,
-      bottom: rect.bottom + frameOffset.top,
-      width: rect.width,
-      height: rect.height
-    };
-
-    return pos;
-  };
-
-  /**
-   * Triggers a DOM event related to the node element
-   * @param name
-   * @return {boolean}
-   */
-  Node.prototype.trigger = function (name) {
-    var event;
-    if (Node.EVENTS.MOUSE.indexOf(name) !== -1) {
-      event = document.createEvent('MouseEvent');
-      event.initMouseEvent(name, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
-    } else if (Node.EVENTS.FOCUS.indexOf(name) !== -1) {
-      event = this.obtainEvent(name);
-    } else if (Node.EVENTS.FORM.indexOf(name) !== -1) {
-      event = this.obtainEvent(name);
-    } else {
-      throw "Unknown event";
-    }
-    return this.element.dispatchEvent(event);
-  };
-
-  /**
-   * Creates a generic HTMLEvent to be use in the node element
-   * @param name
-   * @return {Event}
-   */
-  Node.prototype.obtainEvent = function (name) {
-    var event;
-    event = document.createEvent('HTMLEvents');
-    event.initEvent(name, true, true);
-    return event;
-  };
-
-  /**
-   * Does a check to see if the coordinates given
-   * match the node element or some of the parents chain
-   * @param x
-   * @param y
-   * @return {*}
-   */
-  Node.prototype.mouseEventTest = function (x, y) {
-    var elementForXpath, frameOffset, origEl;
-
-    frameOffset = this.frameOffset();
-    x -= frameOffset.left;
-    y -= frameOffset.top;
-
-    elementForXpath = origEl = document.elementFromPoint(x, y);
-    while (elementForXpath) {
-      if (elementForXpath === this.element) {
-        return {
-          status: 'success'
-        };
-      } else {
-        elementForXpath = elementForXpath.parentNode;
-      }
-    }
-
-    return {
-      status: 'failure',
-      selector: origEl && this.getSelector(origEl)
-    };
-  };
-
-  /**
-   * Returns the node selector in CSS style (NO xpath)
-   * @param elementForXpath
-   * @return {string}
-   */
-  Node.prototype.getSelector = function (elementForXpath) {
-    var className, selector, i, len, classNames;
-
-    selector = elementForXpath.tagName !== 'HTML' ? this.getSelector(elementForXpath.parentNode) + ' ' : '';
-    selector += elementForXpath.tagName.toLowerCase();
-
-    if (elementForXpath.id) {
-      selector += "#" + elementForXpath.id;
-    }
-
-    classNames = elementForXpath.classList;
-    for (i = 0, len = classNames.length; i < len; i++) {
-      className = classNames[i];
-      selector += "." + className;
-    }
-
-    return selector;
-  };
-
-  /**
-   * Returns the key code that represents the character
-   * @param character
-   * @return {number}
-   */
-  Node.prototype.characterToKeyCode = function (character) {
-    var code, specialKeys;
-    code = character.toUpperCase().charCodeAt(0);
-    specialKeys = {
-      96: 192,
-      45: 189,
-      61: 187,
-      91: 219,
-      93: 221,
-      92: 220,
-      59: 186,
-      39: 222,
-      44: 188,
-      46: 190,
-      47: 191,
-      127: 46,
-      126: 192,
-      33: 49,
-      64: 50,
-      35: 51,
-      36: 52,
-      37: 53,
-      94: 54,
-      38: 55,
-      42: 56,
-      40: 57,
-      41: 48,
-      95: 189,
-      43: 187,
-      123: 219,
-      125: 221,
-      124: 220,
-      58: 186,
-      34: 222,
-      60: 188,
-      62: 190,
-      63: 191
-    };
-    return specialKeys[code] || code;
-  };
-
-  /**
-   * Checks if one element is equal to other given by its node id
-   * @param other_id
-   * @return {boolean}
-   */
-  Node.prototype.isDOMEqual = function (other_id) {
-    return this.element === this.agent.get(other_id).element;
-  };
-
-  /**
-   * The following function allows one to pass an element and an XML document to find a unique string XPath expression leading back to that element.
-   * @param element
-   * @return {string}
-   */
-  Node.prototype.getXPathForElement = function (element) {
-    var elementForXpath = element || this.element;
-    var xpath = '';
-    var pos, tempitem2;
-
-    while (elementForXpath !== document.documentElement) {
-      pos = 0;
-      tempitem2 = elementForXpath;
-      while (tempitem2) {
-        if (tempitem2.nodeType === 1 && tempitem2.nodeName === elementForXpath.nodeName) { // If it is ELEMENT_NODE of the same name
-          pos += 1;
-        }
-        tempitem2 = tempitem2.previousSibling;
-      }
-
-      xpath = "*[name()='" + elementForXpath.nodeName + "' and namespace-uri()='" + (elementForXpath.namespaceURI === null ? '' : elementForXpath.namespaceURI) + "'][" + pos + ']' + '/' + xpath;
-
-      elementForXpath = elementForXpath.parentNode;
-    }
-
-    xpath = '/*' + "[name()='" + document.documentElement.nodeName + "' and namespace-uri()='" + (elementForXpath.namespaceURI === null ? '' : elementForXpath.namespaceURI) + "']" + '/' + xpath;
-    xpath = xpath.replace(/\/$/, '');
-    return xpath;
-  };
-
-  /**
-   * Deselect all the options for this element
-   */
-  Node.prototype.deselectAllOptions = function () {
-    //TODO: error control when the node is not a select node
-    var i, l = this.element.options.length;
-    for (i = 0; i < l; i++) {
-      this.element.options[i].selected = false;
-    }
-  };
-
-  return Node;
-
-})();
-
-window.__poltergeist = new PoltergeistAgent;
-
-document.addEventListener('DOMContentLoaded', function () {
-  return console.log('__DOMContentLoaded');
-});
-
-window.confirm = function (message) {
-  return true;
-};
-
-window.prompt = function (message, _default) {
-  return _default || null;
-};
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/browser.js b/vendor/jcalderonzumba/gastonjs/src/Client/browser.js
deleted file mode 100644
index df667fb..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/browser.js
+++ /dev/null
@@ -1,1293 +0,0 @@
-var __indexOf = [].indexOf || function (item) {
-    for (var i = 0, l = this.length; i < l; i++) {
-      if (i in this && this[i] === item) return i;
-    }
-    return -1;
-  };
-
-var xpathStringLiteral = function (s) {
-  if (s.indexOf('"') === -1)
-    return '"' + s + '"';
-  if (s.indexOf("'") === -1)
-    return "'" + s + "'";
-  return 'concat("' + s.replace(/"/g, '",\'"\',"') + '")';
-};
-
-Poltergeist.Browser = (function () {
-  /**
-   * Creates the "browser" inside phantomjs
-   * @param owner
-   * @param width
-   * @param height
-   * @constructor
-   */
-  function Browser(owner, width, height) {
-    this.owner = owner;
-    this.width = width || 1024;
-    this.height = height || 768;
-    this.pages = [];
-    this.js_errors = true;
-    this._debug = false;
-    this._counter = 0;
-    this.resetPage();
-  }
-
-  /**
-   * Resets the browser to a clean slate
-   * @return {Function}
-   */
-  Browser.prototype.resetPage = function () {
-    var _ref;
-    var self = this;
-
-    _ref = [0, []];
-    this._counter = _ref[0];
-    this.pages = _ref[1];
-
-    if (this.page != null) {
-      if (!this.page.closed) {
-        if (this.page.currentUrl() !== 'about:blank') {
-          this.page.clearLocalStorage();
-        }
-        this.page.release();
-      }
-      phantom.clearCookies();
-    }
-
-    this.page = this.currentPage = new Poltergeist.WebPage;
-    this.page.setViewportSize({
-      width: this.width,
-      height: this.height
-    });
-    this.page.handle = "" + (this._counter++);
-    this.pages.push(this.page);
-
-    return this.page.onPageCreated = function (newPage) {
-      var page;
-      page = new Poltergeist.WebPage(newPage);
-      page.handle = "" + (self._counter++);
-      return self.pages.push(page);
-    };
-  };
-
-  /**
-   * Given a page handle id, tries to get it from the browser page list
-   * @param handle
-   * @return {WebPage}
-   */
-  Browser.prototype.getPageByHandle = function (handle) {
-    var filteredPages;
-
-    //TODO: perhaps we should throw a PageNotFoundByHandle or something like that..
-    if (handle === null || typeof handle == "undefined") {
-      return null;
-    }
-
-    filteredPages = this.pages.filter(function (p) {
-      return !p.closed && p.handle === handle;
-    });
-
-    if (filteredPages.length === 1) {
-      return filteredPages[0];
-    }
-
-    return null;
-  };
-
-  /**
-   * Sends a debug message to the console
-   * @param message
-   * @return {*}
-   */
-  Browser.prototype.debug = function (message) {
-    if (this._debug) {
-      return console.log("poltergeist [" + (new Date().getTime()) + "] " + message);
-    }
-  };
-
-  /**
-   * Given a page_id and id, gets if possible the node in such page
-   * @param page_id
-   * @param id
-   * @return {Poltergeist.Node}
-   */
-  Browser.prototype.node = function (page_id, id) {
-    if (this.currentPage.id === page_id) {
-      return this.currentPage.get(id);
-    } else {
-      throw new Poltergeist.ObsoleteNode;
-    }
-  };
-
-  /**
-   * Returns the frameUrl related to the frame given by name
-   * @param frame_name
-   * @return {*}
-   */
-  Browser.prototype.frameUrl = function (frame_name) {
-    return this.currentPage.frameUrl(frame_name);
-  };
-
-  /**
-   * This method defines the rectangular area of the web page to be rasterized when render is invoked.
-   * If no clipping rectangle is set, render will process the entire web page.
-   * @param full
-   * @param selector
-   * @return {*}
-   */
-  Browser.prototype.set_clip_rect = function (full, selector) {
-    var dimensions, clipDocument, rect, clipViewport;
-
-    dimensions = this.currentPage.validatedDimensions();
-    clipDocument = dimensions.document;
-    clipViewport = dimensions.viewport;
-
-    if (full) {
-      rect = {
-        left: 0,
-        top: 0,
-        width: clipDocument.width,
-        height: clipDocument.height
-      };
-    } else {
-      if (selector != null) {
-        rect = this.currentPage.elementBounds(selector);
-      } else {
-        rect = {
-          left: 0,
-          top: 0,
-          width: clipViewport.width,
-          height: clipViewport.height
-        };
-      }
-    }
-
-    this.currentPage.setClipRect(rect);
-    return dimensions;
-  };
-
-  /**
-   * Kill the browser, i.e kill phantomjs current process
-   * @return {int}
-   */
-  Browser.prototype.exit = function () {
-    return phantom.exit(0);
-  };
-
-  /**
-   * Do nothing
-   */
-  Browser.prototype.noop = function () {
-  };
-
-  /**
-   * Throws a new Object error
-   */
-  Browser.prototype.browser_error = function () {
-    throw new Error('zomg');
-  };
-
-  /**
-   *  Visits a page and load its content
-   * @param serverResponse
-   * @param url
-   * @return {*}
-   */
-  Browser.prototype.visit = function (serverResponse, url) {
-    var prevUrl;
-    var self = this;
-    this.currentPage.state = 'loading';
-    prevUrl = this.currentPage.source === null ? 'about:blank' : this.currentPage.currentUrl();
-    this.currentPage.open(url);
-    if (/#/.test(url) && prevUrl.split('#')[0] === url.split('#')[0]) {
-      this.currentPage.state = 'default';
-      return this.serverSendResponse({
-        status: 'success'
-      }, serverResponse);
-    } else {
-      return this.currentPage.waitState('default', function () {
-        if (self.currentPage.statusCode === null && self.currentPage.status === 'fail') {
-          return self.owner.serverSendError(new Poltergeist.StatusFailError, serverResponse);
-        } else {
-          return self.serverSendResponse({
-            status: self.currentPage.status
-          }, serverResponse);
-        }
-      });
-    }
-  };
-
-  /**
-   *  Puts the control of the browser inside the IFRAME given by name
-   * @param serverResponse
-   * @param name
-   * @param timeout
-   * @return {*}
-   */
-  Browser.prototype.push_frame = function (serverResponse, name, timeout) {
-    var _ref;
-    var self = this;
-
-    if (timeout == null) {
-      timeout = new Date().getTime() + 2000;
-    }
-
-    //TODO: WTF, else if after a if with return COMMON
-    if (_ref = this.frameUrl(name), __indexOf.call(this.currentPage.blockedUrls(), _ref) >= 0) {
-      return this.serverSendResponse(true, serverResponse);
-    } else if (this.currentPage.pushFrame(name)) {
-      if (this.currentPage.currentUrl() === 'about:blank') {
-        this.currentPage.state = 'awaiting_frame_load';
-        return this.currentPage.waitState('default', function () {
-          return self.serverSendResponse(true, serverResponse);
-        });
-      } else {
-        return this.serverSendResponse(true, serverResponse);
-      }
-    } else {
-      if (new Date().getTime() < timeout) {
-        return setTimeout((function () {
-          return self.push_frame(serverResponse, name, timeout);
-        }), 50);
-      } else {
-        return this.owner.serverSendError(new Poltergeist.FrameNotFound(name), serverResponse);
-      }
-    }
-  };
-
-  /**
-   *  Injects a javascript into the current page
-   * @param serverResponse
-   * @param extension
-   * @return {*}
-   */
-  Browser.prototype.add_extension = function (serverResponse, extension) {
-    //TODO: error control when the injection was not possible
-    this.currentPage.injectExtension(extension);
-    return this.serverSendResponse('success', serverResponse);
-  };
-
-  /**
-   *  Returns the url we are currently in
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.current_url = function (serverResponse) {
-    return this.serverSendResponse(this.currentPage.currentUrl(), serverResponse);
-  };
-
-  /**
-   *  Returns the current page window name
-   * @param serverResponse
-   * @returns {*}
-   */
-  Browser.prototype.window_name = function (serverResponse) {
-    return this.serverSendResponse(this.currentPage.windowName(), serverResponse);
-  };
-
-  /**
-   *  Returns the status code associated to the page
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.status_code = function (serverResponse) {
-    if (this.currentPage.statusCode === undefined || this.currentPage.statusCode === null) {
-      return this.owner.serverSendError(new Poltergeist.StatusFailError("status_code_error"), serverResponse);
-    }
-    return this.serverSendResponse(this.currentPage.statusCode, serverResponse);
-  };
-
-  /**
-   *  Returns the source code of the active frame, useful for when inside an IFRAME
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.body = function (serverResponse) {
-    return this.serverSendResponse(this.currentPage.content(), serverResponse);
-  };
-
-  /**
-   * Returns the source code of the page all the html
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.source = function (serverResponse) {
-    return this.serverSendResponse(this.currentPage.source, serverResponse);
-  };
-
-  /**
-   * Returns the current page title
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.title = function (serverResponse) {
-    return this.serverSendResponse(this.currentPage.title(), serverResponse);
-  };
-
-  /**
-   *  Finds the elements that match a method of selection and a selector
-   * @param serverResponse
-   * @param method
-   * @param selector
-   * @return {*}
-   */
-  Browser.prototype.find = function (serverResponse, method, selector) {
-    return this.serverSendResponse({
-      page_id: this.currentPage.id,
-      ids: this.currentPage.find(method, selector)
-    }, serverResponse);
-  };
-
-  /**
-   * Find elements within a given element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param method
-   * @param selector
-   * @return {*}
-   */
-  Browser.prototype.find_within = function (serverResponse, page_id, id, method, selector) {
-    return this.serverSendResponse(this.node(page_id, id).find(method, selector), serverResponse);
-  };
-
-  /**
-   * Returns ALL the text, visible and not visible from the given element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.all_text = function (serverResponse, page_id, id) {
-    return this.serverSendResponse(this.node(page_id, id).allText(), serverResponse);
-  };
-
-  /**
-   * Returns the inner or outer html of a given id
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param type
-   * @returns Object
-   */
-  Browser.prototype.all_html = function (serverResponse, page_id, id, type) {
-    return this.serverSendResponse(this.node(page_id, id).allHTML(type), serverResponse);
-  };
-
-  /**
-   *  Returns only the visible text in a given element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.visible_text = function (serverResponse, page_id, id) {
-    return this.serverSendResponse(this.node(page_id, id).visibleText(), serverResponse);
-  };
-
-  /**
-   * Deletes the text in a given element leaving it empty
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.delete_text = function (serverResponse, page_id, id) {
-    return this.serverSendResponse(this.node(page_id, id).deleteText(), serverResponse);
-  };
-
-  /**
-   *  Gets the value of a given attribute in an element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param name
-   * @return {*}
-   */
-  Browser.prototype.attribute = function (serverResponse, page_id, id, name) {
-    return this.serverSendResponse(this.node(page_id, id).getAttribute(name), serverResponse);
-  };
-
-  /**
-   *  Allows the possibility to set an attribute on a given element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param name
-   * @param value
-   * @returns {*}
-   */
-  Browser.prototype.set_attribute = function (serverResponse, page_id, id, name, value) {
-    return this.serverSendResponse(this.node(page_id, id).setAttribute(name, value), serverResponse);
-  };
-
-  /**
-   *  Allows the possibility to remove an attribute on a given element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param name
-   * @returns {*}
-   */
-  Browser.prototype.remove_attribute = function (serverResponse, page_id, id, name) {
-    return this.serverSendResponse(this.node(page_id, id).removeAttribute(name), serverResponse);
-  };
-
-  /**
-   * Returns all the attributes of a given element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param name
-   * @return {*}
-   */
-  Browser.prototype.attributes = function (serverResponse, page_id, id, name) {
-    return this.serverSendResponse(this.node(page_id, id).getAttributes(), serverResponse);
-  };
-
-  /**
-   *  Returns all the way to the document level the parents of a given element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.parents = function (serverResponse, page_id, id) {
-    return this.serverSendResponse(this.node(page_id, id).parentIds(), serverResponse);
-  };
-
-  /**
-   * Returns the element.value of an element given by its page and id
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.value = function (serverResponse, page_id, id) {
-    return this.serverSendResponse(this.node(page_id, id).value(), serverResponse);
-  };
-
-  /**
-   *  Sets the element.value of an element by the given value
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param value
-   * @return {*}
-   */
-  Browser.prototype.set = function (serverResponse, page_id, id, value) {
-    this.node(page_id, id).set(value);
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   *  Uploads a file to an input file element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param file_path
-   * @return {*}
-   */
-  Browser.prototype.select_file = function (serverResponse, page_id, id, file_path) {
-    var node = this.node(page_id, id);
-
-    this.currentPage.beforeUpload(node.id);
-    this.currentPage.uploadFile('[_poltergeist_selected]', file_path);
-    this.currentPage.afterUpload(node.id);
-
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Sets a value to the selected element (to be used in select elements)
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param value
-   * @return {*}
-   */
-  Browser.prototype.select = function (serverResponse, page_id, id, value) {
-    return this.serverSendResponse(this.node(page_id, id).select(value), serverResponse);
-  };
-
-  /**
-   *  Selects an option with the given value
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param value
-   * @param multiple
-   * @return {*}
-   */
-  Browser.prototype.select_option = function (serverResponse, page_id, id, value, multiple) {
-    return this.serverSendResponse(this.node(page_id, id).select_option(value, multiple), serverResponse);
-  };
-
-  /**
-   *
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.tag_name = function (serverResponse, page_id, id) {
-    return this.serverSendResponse(this.node(page_id, id).tagName(), serverResponse);
-  };
-
-
-  /**
-   * Tells if an element is visible or not
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.visible = function (serverResponse, page_id, id) {
-    return this.serverSendResponse(this.node(page_id, id).isVisible(), serverResponse);
-  };
-
-  /**
-   *  Tells if an element is disabled
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.disabled = function (serverResponse, page_id, id) {
-    return this.serverSendResponse(this.node(page_id, id).isDisabled(), serverResponse);
-  };
-
-  /**
-   *  Evaluates a javascript and returns the outcome to the client
-   *  This will be JSON response so your script better be returning objects that can be used
-   *  in JSON.stringify
-   * @param serverResponse
-   * @param script
-   * @return {*}
-   */
-  Browser.prototype.evaluate = function (serverResponse, script) {
-    return this.serverSendResponse(this.currentPage.evaluate("function() { return " + script + " }"), serverResponse);
-  };
-
-  /**
-   *  Executes a javascript and goes back to the client with true if there were no errors
-   * @param serverResponse
-   * @param script
-   * @return {*}
-   */
-  Browser.prototype.execute = function (serverResponse, script) {
-    this.currentPage.execute("function() { " + script + " }");
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * If inside a frame then we will go back to the parent
-   * Not defined behaviour if you pop and are not inside an iframe
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.pop_frame = function (serverResponse) {
-    return this.serverSendResponse(this.currentPage.popFrame(), serverResponse);
-  };
-
-  /**
-   * Gets the window handle id by a given window name
-   * @param serverResponse
-   * @param name
-   * @return {*}
-   */
-  Browser.prototype.window_handle = function (serverResponse, name) {
-    var handle, pageByWindowName;
-
-    if (name === null || typeof name == "undefined" || name.length === 0) {
-      return this.serverSendResponse(this.currentPage.handle, serverResponse);
-    }
-
-    handle = null;
-
-    //Lets search the handle by the given window name
-    var filteredPages = this.pages.filter(function (p) {
-      return !p.closed && p.windowName() === name;
-    });
-
-    //A bit of error control is always good
-    if (Array.isArray(filteredPages) && filteredPages.length >= 1) {
-      pageByWindowName = filteredPages[0];
-    } else {
-      pageByWindowName = null;
-    }
-
-    if (pageByWindowName !== null && typeof pageByWindowName != "undefined") {
-      handle = pageByWindowName.handle;
-    }
-
-    return this.serverSendResponse(handle, serverResponse);
-  };
-
-  /**
-   * Returns all the window handles of opened windows
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.window_handles = function (serverResponse) {
-    var handles, filteredPages;
-
-    filteredPages = this.pages.filter(function (p) {
-      return !p.closed;
-    });
-
-    if (filteredPages.length > 0) {
-      handles = filteredPages.map(function (p) {
-        return p.handle;
-      });
-      if (handles.length === 0) {
-        handles = null;
-      }
-    } else {
-      handles = null;
-    }
-
-    return this.serverSendResponse(handles, serverResponse);
-  };
-
-  /**
-   *  Tries to switch to a window given by the handle id
-   * @param serverResponse
-   * @param handle
-   * @return {*}
-   */
-  Browser.prototype.switch_to_window = function (serverResponse, handle) {
-    var page;
-    var self = this;
-
-    page = this.getPageByHandle(handle);
-    if (page === null || typeof page == "undefined") {
-      throw new Poltergeist.NoSuchWindowError;
-    }
-
-    if (page !== this.currentPage) {
-      return page.waitState('default', function () {
-        self.currentPage = page;
-        return self.serverSendResponse(true, serverResponse);
-      });
-    }
-
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Opens a new window where we can do stuff
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.open_new_window = function (serverResponse) {
-    return this.execute(serverResponse, 'window.open()');
-  };
-
-  /**
-   * Closes the window given by handle name if possible
-   * @param serverResponse
-   * @param handle
-   * @return {*}
-   */
-  Browser.prototype.close_window = function (serverResponse, handle) {
-    var page;
-
-    page = this.getPageByHandle(handle);
-    if (page === null || typeof  page == "undefined") {
-      //TODO: should we throw error since we actually could not find the window?
-      return this.serverSendResponse(false, serverResponse);
-    }
-
-    //TODO: we have to add some control here to actually asses that the release has been done
-    page.release();
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Generic mouse event on an element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param name
-   * @return {number}
-   */
-  Browser.prototype.mouse_event = function (serverResponse, page_id, id, name) {
-    var node;
-    var self = this;
-    node = this.node(page_id, id);
-    this.currentPage.state = 'mouse_event';
-    this.last_mouse_event = node.mouseEvent(name);
-    return setTimeout(function () {
-      if (self.currentPage.state === 'mouse_event') {
-        self.currentPage.state = 'default';
-        return self.serverSendResponse({
-          position: self.last_mouse_event
-        }, serverResponse);
-      } else {
-        return self.currentPage.waitState('default', function () {
-          return self.serverSendResponse({
-            position: self.last_mouse_event
-          }, serverResponse);
-        });
-      }
-    }, 5);
-  };
-
-  /**
-   * Simple click on the element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.click = function (serverResponse, page_id, id) {
-    return this.mouse_event(serverResponse, page_id, id, 'click');
-  };
-
-  /**
-   * Right click on the element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.right_click = function (serverResponse, page_id, id) {
-    return this.mouse_event(serverResponse, page_id, id, 'rightclick');
-  };
-
-  /**
-   *  Double click on the element given by page and id
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.double_click = function (serverResponse, page_id, id) {
-    return this.mouse_event(serverResponse, page_id, id, 'doubleclick');
-  };
-
-  /**
-   * Executes a mousemove event on the page and given element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @return {*}
-   */
-  Browser.prototype.hover = function (serverResponse, page_id, id) {
-    return this.mouse_event(serverResponse, page_id, id, 'mousemove');
-  };
-
-  /**
-   * Triggers a mouse click event on the given coordinates
-   * @param serverResponse
-   * @param x
-   * @param y
-   * @return {*}
-   */
-  Browser.prototype.click_coordinates = function (serverResponse, x, y) {
-    var response;
-
-    this.currentPage.sendEvent('click', x, y);
-    response = {
-      click: {
-        x: x,
-        y: y
-      }
-    };
-
-    return this.serverSendResponse(response, serverResponse);
-  };
-
-  /**
-   *  Drags one element into another, useful for nice javascript thingies
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param other_id
-   * @return {*}
-   */
-  Browser.prototype.drag = function (serverResponse, page_id, id, other_id) {
-    this.node(page_id, id).dragTo(this.node(page_id, other_id));
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Triggers an event on the given page and element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param event
-   * @return {*}
-   */
-  Browser.prototype.trigger = function (serverResponse, page_id, id, event) {
-    this.node(page_id, id).trigger(event);
-    return this.serverSendResponse(event, serverResponse);
-  };
-
-  /**
-   * Checks if two elements are equal on a dom level
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param other_id
-   * @return {*}
-   */
-  Browser.prototype.equals = function (serverResponse, page_id, id, other_id) {
-    return this.serverSendResponse(this.node(page_id, id).isEqual(this.node(page_id, other_id)), serverResponse);
-  };
-
-  /**
-   * Resets the current page to a clean slate
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.reset = function (serverResponse) {
-    this.resetPage();
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Scrolls to a position given by the left, top coordinates
-   * @param serverResponse
-   * @param left
-   * @param top
-   * @return {*}
-   */
-  Browser.prototype.scroll_to = function (serverResponse, left, top) {
-    this.currentPage.setScrollPosition({
-      left: left,
-      top: top
-    });
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Sends keys to an element simulating as closest as possible what a user would do
-   * when typing
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param keys
-   * @return {*}
-   */
-  Browser.prototype.send_keys = function (serverResponse, page_id, id, keys) {
-    var key, sequence, target, _i, _len;
-    target = this.node(page_id, id);
-    if (!target.containsSelection()) {
-      target.mouseEvent('click');
-    }
-    for (_i = 0, _len = keys.length; _i < _len; _i++) {
-      sequence = keys[_i];
-      key = sequence.key != null ? this.currentPage.keyCode(sequence.key) : sequence;
-      this.currentPage.sendEvent('keypress', key);
-    }
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Sends a native phantomjs key event to element
-   * @param serverResponse
-   * @param page_id
-   * @param id
-   * @param keyEvent
-   * @param key
-   * @param modifier
-   */
-  Browser.prototype.key_event = function (serverResponse, page_id, id, keyEvent, key, modifier) {
-    var keyEventModifierMap;
-    var keyEventModifier;
-    var target;
-
-    keyEventModifierMap = {
-      'none': 0x0,
-      'shift': 0x02000000,
-      'ctrl': 0x04000000,
-      'alt': 0x08000000,
-      'meta': 0x10000000
-    };
-    keyEventModifier = keyEventModifierMap[modifier];
-
-    target = this.node(page_id, id);
-    if (!target.containsSelection()) {
-      target.mouseEvent('click');
-    }
-    target.page.sendEvent(keyEvent, key, null, null, keyEventModifier);
-
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   *  Sends the rendered page in a base64 encoding
-   * @param serverResponse
-   * @param format
-   * @param full
-   * @param selector
-   * @return {*}
-   */
-  Browser.prototype.render_base64 = function (serverResponse, format, full, selector) {
-    var encoded_image;
-    if (selector == null) {
-      selector = null;
-    }
-    this.set_clip_rect(full, selector);
-    encoded_image = this.currentPage.renderBase64(format);
-    return this.serverSendResponse(encoded_image, serverResponse);
-  };
-
-  /**
-   * Renders the current page entirely or a given selection
-   * @param serverResponse
-   * @param path
-   * @param full
-   * @param selector
-   * @return {*}
-   */
-  Browser.prototype.render = function (serverResponse, path, full, selector) {
-    var dimensions;
-    if (selector == null) {
-      selector = null;
-    }
-    dimensions = this.set_clip_rect(full, selector);
-    this.currentPage.setScrollPosition({
-      left: 0,
-      top: 0
-    });
-    this.currentPage.render(path);
-    this.currentPage.setScrollPosition({
-      left: dimensions.left,
-      top: dimensions.top
-    });
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-
-  /**
-   * Sets the paper size, useful when printing to PDF
-   * @param serverResponse
-   * @param size
-   * @return {*}
-   */
-  Browser.prototype.set_paper_size = function (serverResponse, size) {
-    this.currentPage.setPaperSize(size);
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   *  Sets the zoom factor on the current page
-   * @param serverResponse
-   * @param zoom_factor
-   * @return {*}
-   */
-  Browser.prototype.set_zoom_factor = function (serverResponse, zoom_factor) {
-    this.currentPage.setZoomFactor(zoom_factor);
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Resizes the browser viewport, useful when testing mobile stuff
-   * @param serverResponse
-   * @param width
-   * @param height
-   * @return {*}
-   */
-  Browser.prototype.resize = function (serverResponse, width, height) {
-    this.currentPage.setViewportSize({
-      width: width,
-      height: height
-    });
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Gets the browser viewport size
-   * Because PhantomJS is headless (nothing is shown)
-   * viewportSize effectively simulates the size of the window like in a traditional browser.
-   * @param serverResponse
-   * @param handle
-   * @return {*}
-   */
-  Browser.prototype.window_size = function (serverResponse, handle) {
-    //TODO: add support for window handles
-    return this.serverSendResponse(this.currentPage.viewportSize(), serverResponse);
-  };
-
-  /**
-   * Returns the network traffic that the current page has generated
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.network_traffic = function (serverResponse) {
-    return this.serverSendResponse(this.currentPage.networkTraffic(), serverResponse);
-  };
-
-  /**
-   * Clears the accumulated network_traffic in the current page
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.clear_network_traffic = function (serverResponse) {
-    this.currentPage.clearNetworkTraffic();
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Gets the headers of the current page
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.get_headers = function (serverResponse) {
-    return this.serverSendResponse(this.currentPage.getCustomHeaders(), serverResponse);
-  };
-
-  /**
-   * Set headers in the browser
-   * @param serverResponse
-   * @param headers
-   * @return {*}
-   */
-  Browser.prototype.set_headers = function (serverResponse, headers) {
-    if (headers['User-Agent']) {
-      this.currentPage.setUserAgent(headers['User-Agent']);
-    }
-    this.currentPage.setCustomHeaders(headers);
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Given an array of headers, adds them to the page
-   * @param serverResponse
-   * @param headers
-   * @return {*}
-   */
-  Browser.prototype.add_headers = function (serverResponse, headers) {
-    var allHeaders, name, value;
-    allHeaders = this.currentPage.getCustomHeaders();
-    for (name in headers) {
-      if (headers.hasOwnProperty(name)) {
-        value = headers[name];
-        allHeaders[name] = value;
-      }
-    }
-    return this.set_headers(serverResponse, allHeaders);
-  };
-
-  /**
-   * Adds a header to the page temporary or permanently
-   * @param serverResponse
-   * @param header
-   * @param permanent
-   * @return {*}
-   */
-  Browser.prototype.add_header = function (serverResponse, header, permanent) {
-    if (!permanent) {
-      this.currentPage.addTempHeader(header);
-    }
-    return this.add_headers(serverResponse, header);
-  };
-
-
-  /**
-   * Sends back the client the response headers sent from the browser when making
-   * the page request
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.response_headers = function (serverResponse) {
-    return this.serverSendResponse(this.currentPage.responseHeaders(), serverResponse);
-  };
-
-  /**
-   * Returns the cookies of the current page being browsed
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.cookies = function (serverResponse) {
-    return this.serverSendResponse(this.currentPage.cookies(), serverResponse);
-  };
-
-  /**
-   * Sets a cookie in the browser, the format of the cookies has to be the format it says
-   * on phantomjs documentation and as such you can set it in other domains, not on the
-   * current page
-   * @param serverResponse
-   * @param cookie
-   * @return {*}
-   */
-  Browser.prototype.set_cookie = function (serverResponse, cookie) {
-    return this.serverSendResponse(phantom.addCookie(cookie), serverResponse);
-  };
-
-  /**
-   * Remove a cookie set on the current page
-   * @param serverResponse
-   * @param name
-   * @return {*}
-   */
-  Browser.prototype.remove_cookie = function (serverResponse, name) {
-    //TODO: add error control to check if the cookie was properly deleted
-    this.currentPage.deleteCookie(name);
-    phantom.deleteCookie(name);
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Clear the cookies in the browser
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.clear_cookies = function (serverResponse) {
-    phantom.clearCookies();
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Enables / Disables the cookies on the browser
-   * @param serverResponse
-   * @param flag
-   * @return {*}
-   */
-  Browser.prototype.cookies_enabled = function (serverResponse, flag) {
-    phantom.cookiesEnabled = flag;
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * US19: DONE
-   * Sets a basic authentication credential to access a page
-   * THIS SHOULD BE USED BEFORE accessing a page
-   * @param serverResponse
-   * @param user
-   * @param password
-   * @return {*}
-   */
-  Browser.prototype.set_http_auth = function (serverResponse, user, password) {
-    this.currentPage.setHttpAuth(user, password);
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Sets the flag whether to fail on javascript errors or not.
-   * @param serverResponse
-   * @param value
-   * @return {*}
-   */
-  Browser.prototype.set_js_errors = function (serverResponse, value) {
-    this.js_errors = value;
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Sets the debug mode to boolean value
-   * @param serverResponse
-   * @param value
-   * @return {*}
-   */
-  Browser.prototype.set_debug = function (serverResponse, value) {
-    this._debug = value;
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Goes back in the history when possible
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.go_back = function (serverResponse) {
-    var self = this;
-    if (this.currentPage.canGoBack()) {
-      this.currentPage.state = 'loading';
-      this.currentPage.goBack();
-      return this.currentPage.waitState('default', function () {
-        return self.serverSendResponse(true, serverResponse);
-      });
-    } else {
-      return this.serverSendResponse(false, serverResponse);
-    }
-  };
-
-  /**
-   * Reloads the page if possible
-   * @return {*}
-   */
-  Browser.prototype.reload = function (serverResponse) {
-    var self = this;
-    this.currentPage.state = 'loading';
-    this.currentPage.reload();
-    return this.currentPage.waitState('default', function () {
-      return self.serverSendResponse(true, serverResponse);
-    });
-  };
-
-  /**
-   * Goes forward in the browser history if possible
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.go_forward = function (serverResponse) {
-    var self = this;
-    if (this.currentPage.canGoForward()) {
-      this.currentPage.state = 'loading';
-      this.currentPage.goForward();
-      return this.currentPage.waitState('default', function () {
-        return self.serverSendResponse(true, serverResponse);
-      });
-    } else {
-      return this.serverSendResponse(false, serverResponse);
-    }
-  };
-
-  /**
-   *  Sets the urlBlacklist for the given urls as parameters
-   * @return {boolean}
-   */
-  Browser.prototype.set_url_blacklist = function (serverResponse, blackList) {
-    this.currentPage.urlBlacklist = Array.prototype.slice.call(blackList);
-    return this.serverSendResponse(true, serverResponse);
-  };
-
-  /**
-   * Runs a browser command and returns the response back to the client
-   * when the command has finished the execution
-   * @param command
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.serverRunCommand = function (command, serverResponse) {
-    var commandData;
-    var commandArgs;
-    var commandName;
-
-    commandName = command.name;
-    commandArgs = command.args;
-    this.currentPage.state = 'default';
-    commandData = [serverResponse].concat(commandArgs);
-
-    if (typeof this[commandName] !== "function") {
-      //We can not run such command
-      throw new Poltergeist.Error();
-    }
-
-    return this[commandName].apply(this, commandData);
-  };
-
-  /**
-   * Sends a response back to the client who made the request
-   * @param response
-   * @param serverResponse
-   * @return {*}
-   */
-  Browser.prototype.serverSendResponse = function (response, serverResponse) {
-    var errors;
-    errors = this.currentPage.errors;
-    this.currentPage.clearErrors();
-    if (errors.length > 0 && this.js_errors) {
-      return this.owner.serverSendError(new Poltergeist.JavascriptError(errors), serverResponse);
-    } else {
-      return this.owner.serverSendResponse(response, serverResponse);
-    }
-  };
-
-  return Browser;
-
-})();
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/main.js b/vendor/jcalderonzumba/gastonjs/src/Client/main.js
deleted file mode 100644
index a8f2ecb..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/main.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var Poltergeist, system, _ref, _ref1, _ref2;
-
-//Inheritance tool
-phantom.injectJs("" + phantom.libraryPath + "/Tools/inherit.js");
-
-//Poltergeist main object
-phantom.injectJs("" + phantom.libraryPath + "/poltergeist.js");
-
-//Errors that are controller in the poltergeist code
-phantom.injectJs("" + phantom.libraryPath + "/Errors/error.js");
-phantom.injectJs("" + phantom.libraryPath + "/Errors/obsolete_node.js");
-phantom.injectJs("" + phantom.libraryPath + "/Errors/invalid_selector.js");
-phantom.injectJs("" + phantom.libraryPath + "/Errors/frame_not_found.js");
-phantom.injectJs("" + phantom.libraryPath + "/Errors/mouse_event_failed.js");
-phantom.injectJs("" + phantom.libraryPath + "/Errors/javascript_error.js");
-phantom.injectJs("" + phantom.libraryPath + "/Errors/browser_error.js");
-phantom.injectJs("" + phantom.libraryPath + "/Errors/status_fail_error.js");
-phantom.injectJs("" + phantom.libraryPath + "/Errors/no_such_window_error.js");
-
-//web server to control the commands
-phantom.injectJs("" + phantom.libraryPath + "/Server/server.js");
-
-phantom.injectJs("" + phantom.libraryPath + "/web_page.js");
-phantom.injectJs("" + phantom.libraryPath + "/node.js");
-phantom.injectJs("" + phantom.libraryPath + "/browser.js");
-
-system = require('system');
-
-new Poltergeist(system.args[1], system.args[2], system.args[3]);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/node.js b/vendor/jcalderonzumba/gastonjs/src/Client/node.js
deleted file mode 100644
index bdf5baf..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/node.js
+++ /dev/null
@@ -1,161 +0,0 @@
-var __slice = [].slice;
-
-Poltergeist.Node = (function () {
-  var name, _fn, _i, _len, _ref;
-  var xpathStringLiteral;
-
-  Node.DELEGATES = ['allText', 'visibleText', 'getAttribute', 'value', 'set', 'checked',
-    'setAttribute', 'isObsolete', 'removeAttribute', 'isMultiple',
-    'select', 'tagName', 'find', 'getAttributes', 'isVisible',
-    'position', 'trigger', 'input', 'parentId', 'parentIds', 'mouseEventTest',
-    'scrollIntoView', 'isDOMEqual', 'isDisabled', 'deleteText', 'selectRadioValue',
-    'containsSelection', 'allHTML', 'changed', 'getXPathForElement', 'deselectAllOptions'];
-
-  function Node(page, id) {
-    this.page = page;
-    this.id = id;
-  }
-
-  /**
-   * Returns the parent Node of this Node
-   * @return {Poltergeist.Node}
-   */
-  Node.prototype.parent = function () {
-    return new Poltergeist.Node(this.page, this.parentId());
-  };
-
-  _ref = Node.DELEGATES;
-
-  _fn = function (name) {
-    return Node.prototype[name] = function () {
-      var args = [];
-      if (arguments.length >= 1) {
-        args = __slice.call(arguments, 0)
-      }
-      return this.page.nodeCall(this.id, name, args);
-    };
-  };
-
-  //Adding all the delegates from the agent Node to this Node
-  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-    name = _ref[_i];
-    _fn(name);
-  }
-
-  xpathStringLiteral = function (s) {
-    if (s.indexOf('"') === -1)
-      return '"' + s + '"';
-    if (s.indexOf("'") === -1)
-      return "'" + s + "'";
-    return 'concat("' + s.replace(/"/g, '",\'"\',"') + '")';
-  };
-
-  /**
-   *  Gets an x,y position tailored for mouse event actions
-   * @return {{x, y}}
-   */
-  Node.prototype.mouseEventPosition = function () {
-    var middle, pos, viewport;
-
-    viewport = this.page.viewportSize();
-    pos = this.position();
-    middle = function (start, end, size) {
-      return start + ((Math.min(end, size) - start) / 2);
-    };
-
-    return {
-      x: middle(pos.left, pos.right, viewport.width),
-      y: middle(pos.top, pos.bottom, viewport.height)
-    };
-  };
-
-  /**
-   * Executes a phantomjs native mouse event
-   * @param name
-   * @return {{x, y}}
-   */
-  Node.prototype.mouseEvent = function (name) {
-    var pos, test;
-
-    this.scrollIntoView();
-    pos = this.mouseEventPosition();
-    test = this.mouseEventTest(pos.x, pos.y);
-
-    if (test.status === 'success') {
-      if (name === 'rightclick') {
-        this.page.mouseEvent('click', pos.x, pos.y, 'right');
-        this.trigger('contextmenu');
-      } else {
-        this.page.mouseEvent(name, pos.x, pos.y);
-      }
-      return pos;
-    } else {
-      throw new Poltergeist.MouseEventFailed(name, test.selector, pos);
-    }
-  };
-
-  /**
-   * Executes a mouse based drag from one node to another
-   * @param other
-   * @return {{x, y}}
-   */
-  Node.prototype.dragTo = function (other) {
-    var otherPosition, position;
-
-    this.scrollIntoView();
-    position = this.mouseEventPosition();
-    otherPosition = other.mouseEventPosition();
-    this.page.mouseEvent('mousedown', position.x, position.y);
-    return this.page.mouseEvent('mouseup', otherPosition.x, otherPosition.y);
-  };
-
-  /**
-   * Checks if one node is equal to another
-   * @param other
-   * @return {boolean}
-   */
-  Node.prototype.isEqual = function (other) {
-    return this.page === other.page && this.isDOMEqual(other.id);
-  };
-
-
-  /**
-   * The value to select
-   * @param value
-   * @param multiple
-   */
-  Node.prototype.select_option = function (value, multiple) {
-    var tagName = this.tagName().toLowerCase();
-
-    if (tagName === "select") {
-      var escapedOption = xpathStringLiteral(value);
-      // The value of an option is the normalized version of its text when it has no value attribute
-      var optionQuery = ".//option[@value = " + escapedOption + " or (not(@value) and normalize-space(.) = " + escapedOption + ")]";
-      var ids = this.find("xpath", optionQuery);
-      var polterNode = this.page.get(ids[0]);
-
-      if (multiple || !this.getAttribute('multiple')) {
-        if (!polterNode.getAttribute('selected')) {
-          polterNode.select(value);
-          this.trigger('click');
-          this.input();
-        }
-        return true;
-      }
-
-      this.deselectAllOptions();
-      polterNode.select(value);
-      this.trigger('click');
-      this.input();
-      return true;
-    } else if (tagName === "input" && this.getAttribute("type").toLowerCase() === "radio") {
-      return this.selectRadioValue(value);
-    }
-
-    throw new Poltergeist.BrowserError("The element is not a select or radio input");
-
-  };
-
-  return Node;
-
-}).call(this);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/poltergeist.js b/vendor/jcalderonzumba/gastonjs/src/Client/poltergeist.js
deleted file mode 100644
index 20f0267..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/poltergeist.js
+++ /dev/null
@@ -1,77 +0,0 @@
-Poltergeist = (function () {
-
-  /**
-   * The MAIN class of the project
-   * @param port
-   * @param width
-   * @param height
-   * @constructor
-   */
-  function Poltergeist(port, width, height) {
-    var self;
-    this.browser = new Poltergeist.Browser(this, width, height);
-
-    this.commandServer = new Poltergeist.Server(this, port);
-    this.commandServer.start();
-
-    self = this;
-
-    phantom.onError = function (message, stack) {
-      return self.onError(message, stack);
-    };
-
-    this.running = false;
-  }
-
-  /**
-   * Tries to execute a command send by a client and returns the command response
-   * or error if something happened
-   * @param command
-   * @param serverResponse
-   * @return {boolean}
-   */
-  Poltergeist.prototype.serverRunCommand = function (command, serverResponse) {
-    var error;
-    this.running = true;
-    try {
-      return this.browser.serverRunCommand(command, serverResponse);
-    } catch (_error) {
-      error = _error;
-      if (error instanceof Poltergeist.Error) {
-        return this.serverSendError(error, serverResponse);
-      }
-      return this.serverSendError(new Poltergeist.BrowserError(error.toString(), error.stack), serverResponse);
-    }
-  };
-
-  /**
-   * Sends error back to the client
-   * @param error
-   * @param serverResponse
-   * @return {boolean}
-   */
-  Poltergeist.prototype.serverSendError = function (error, serverResponse) {
-    var errorObject;
-    errorObject = {
-      error: {
-        name: error.name || 'Generic',
-        args: error.args && error.args() || [error.toString()]
-      }
-    };
-    return this.commandServer.sendError(serverResponse, 500, errorObject);
-  };
-
-  /**
-   * Send the response back to the client
-   * @param response        Data to send to the client
-   * @param serverResponse  Phantomjs response object associated to the client request
-   * @return {boolean}
-   */
-  Poltergeist.prototype.serverSendResponse = function (response, serverResponse) {
-    return this.commandServer.send(serverResponse, {response: response});
-  };
-
-  return Poltergeist;
-})();
-
-window.Poltergeist = Poltergeist;
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/web_page.js b/vendor/jcalderonzumba/gastonjs/src/Client/web_page.js
deleted file mode 100644
index c275b03..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Client/web_page.js
+++ /dev/null
@@ -1,829 +0,0 @@
-var __slice = [].slice;
-var __indexOf = [].indexOf || function (item) {
-    for (var i = 0, l = this.length; i < l; i++) {
-      if (i in this && this[i] === item) return i;
-    }
-    return -1;
-  };
-
-Poltergeist.WebPage = (function () {
-  var command, delegate, commandFunctionBind, delegateFunctionBind, i, j, commandsLength, delegatesRefLength, commandsRef, delegatesRef,
-    _this = this;
-
-  //Native or not webpage callbacks
-  WebPage.CALLBACKS = ['onAlert', 'onConsoleMessage', 'onLoadFinished', 'onInitialized', 'onLoadStarted', 'onResourceRequested',
-    'onResourceReceived', 'onError', 'onNavigationRequested', 'onUrlChanged', 'onPageCreated', 'onClosing'];
-
-  // Delegates the execution to the phantomjs page native functions but directly available in the WebPage object
-  WebPage.DELEGATES = ['open', 'sendEvent', 'uploadFile', 'release', 'render', 'renderBase64', 'goBack', 'goForward', 'reload'];
-
-  //Commands to execute on behalf of the browser but on the current page
-  WebPage.COMMANDS = ['currentUrl', 'find', 'nodeCall', 'documentSize', 'beforeUpload', 'afterUpload', 'clearLocalStorage'];
-
-  WebPage.EXTENSIONS = [];
-
-  function WebPage(nativeWebPage) {
-    var callback, i, callBacksLength, callBacksRef;
-
-    //Lets create the native phantomjs webpage
-    if (nativeWebPage === null || typeof nativeWebPage == "undefined") {
-      this._native = require('webpage').create();
-    } else {
-      this._native = nativeWebPage;
-    }
-
-    this.id = 0;
-    this.source = null;
-    this.closed = false;
-    this.state = 'default';
-    this.urlBlacklist = [];
-    this.frames = [];
-    this.errors = [];
-    this._networkTraffic = {};
-    this._tempHeaders = {};
-    this._blockedUrls = [];
-
-    callBacksRef = WebPage.CALLBACKS;
-    for (i = 0, callBacksLength = callBacksRef.length; i < callBacksLength; i++) {
-      callback = callBacksRef[i];
-      this.bindCallback(callback);
-    }
-  }
-
-  //Bind the commands we can run from the browser to the current page
-  commandsRef = WebPage.COMMANDS;
-  commandFunctionBind = function (command) {
-    return WebPage.prototype[command] = function () {
-      var args;
-      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
-      return this.runCommand(command, args);
-    };
-  };
-  for (i = 0, commandsLength = commandsRef.length; i < commandsLength; i++) {
-    command = commandsRef[i];
-    commandFunctionBind(command);
-  }
-
-  //Delegates bind applications
-  delegatesRef = WebPage.DELEGATES;
-  delegateFunctionBind = function (delegate) {
-    return WebPage.prototype[delegate] = function () {
-      return this._native[delegate].apply(this._native, arguments);
-    };
-  };
-  for (j = 0, delegatesRefLength = delegatesRef.length; j < delegatesRefLength; j++) {
-    delegate = delegatesRef[j];
-    delegateFunctionBind(delegate);
-  }
-
-  /**
-   * This callback is invoked after the web page is created but before a URL is loaded.
-   * The callback may be used to change global objects.
-   * @return {*}
-   */
-  WebPage.prototype.onInitializedNative = function () {
-    this.id += 1;
-    this.source = null;
-    this.injectAgent();
-    this.removeTempHeaders();
-    return this.setScrollPosition({
-      left: 0,
-      top: 0
-    });
-  };
-
-  /**
-   * This callback is invoked when the WebPage object is being closed,
-   * either via page.close in the PhantomJS outer space or via window.close in the page's client-side.
-   * @return {boolean}
-   */
-  WebPage.prototype.onClosingNative = function () {
-    this.handle = null;
-    return this.closed = true;
-  };
-
-  /**
-   * This callback is invoked when there is a JavaScript console message on the web page.
-   * The callback may accept up to three arguments: the string for the message, the line number, and the source identifier.
-   * @param message
-   * @param line
-   * @param sourceId
-   * @return {boolean}
-   */
-  WebPage.prototype.onConsoleMessageNative = function (message, line, sourceId) {
-    if (message === '__DOMContentLoaded') {
-      this.source = this._native.content;
-      return false;
-    }
-    console.log(message);
-    return true;
-  };
-
-  /**
-   * This callback is invoked when the page starts the loading. There is no argument passed to the callback.
-   * @return {number}
-   */
-  WebPage.prototype.onLoadStartedNative = function () {
-    this.state = 'loading';
-    return this.requestId = this.lastRequestId;
-  };
-
-  /**
-   * This callback is invoked when the page finishes the loading.
-   * It may accept a single argument indicating the page's status: 'success' if no network errors occurred, otherwise 'fail'.
-   * @param status
-   * @return {string}
-   */
-  WebPage.prototype.onLoadFinishedNative = function (status) {
-    this.status = status;
-    this.state = 'default';
-
-    if (this.source === null || typeof this.source == "undefined") {
-      this.source = this._native.content;
-    } else {
-      this.source = this._native.content;
-    }
-
-    return this.source;
-  };
-
-  /**
-   * This callback is invoked when there is a JavaScript execution error.
-   * It is a good way to catch problems when evaluating a script in the web page context.
-   * The arguments passed to the callback are the error message and the stack trace [as an Array].
-   * @param message
-   * @param stack
-   * @return {Number}
-   */
-  WebPage.prototype.onErrorNative = function (message, stack) {
-    var stackString;
-
-    stackString = message;
-    stack.forEach(function (frame) {
-      stackString += "\n";
-      stackString += "    at " + frame.file + ":" + frame.line;
-      if (frame["function"] && frame["function"] !== '') {
-        return stackString += " in " + frame["function"];
-      }
-    });
-
-    return this.errors.push({
-      message: message,
-      stack: stackString
-    });
-  };
-
-  /**
-   * This callback is invoked when the page requests a resource.
-   * The first argument to the callback is the requestData metadata object.
-   * The second argument is the networkRequest object itself.
-   * @param requestData
-   * @param networkRequest
-   * @return {*}
-   */
-  WebPage.prototype.onResourceRequestedNative = function (requestData, networkRequest) {
-    var abort;
-
-    abort = this.urlBlacklist.some(function (blacklistedUrl) {
-      return requestData.url.indexOf(blacklistedUrl) !== -1;
-    });
-
-    if (abort) {
-      if (this._blockedUrls.indexOf(requestData.url) === -1) {
-        this._blockedUrls.push(requestData.url);
-      }
-      //TODO: check this, as it raises onResourceError
-      return networkRequest.abort();
-    }
-
-    this.lastRequestId = requestData.id;
-    if (requestData.url === this.redirectURL) {
-      this.redirectURL = null;
-      this.requestId = requestData.id;
-    }
-
-    return this._networkTraffic[requestData.id] = {
-      request: requestData,
-      responseParts: []
-    };
-  };
-
-  /**
-   * This callback is invoked when a resource requested by the page is received.
-   * The only argument to the callback is the response metadata object.
-   * @param response
-   * @return {*}
-   */
-  WebPage.prototype.onResourceReceivedNative = function (response) {
-    var networkTrafficElement;
-
-    if ((networkTrafficElement = this._networkTraffic[response.id]) != null) {
-      networkTrafficElement.responseParts.push(response);
-    }
-
-    if (this.requestId === response.id) {
-      if (response.redirectURL) {
-        return this.redirectURL = response.redirectURL;
-      }
-
-      this.statusCode = response.status;
-      return this._responseHeaders = response.headers;
-    }
-  };
-
-  /**
-   * Inject the poltergeist agent into the webpage
-   * @return {Array}
-   */
-  WebPage.prototype.injectAgent = function () {
-    var extension, isAgentInjected, i, extensionsRefLength, extensionsRef, injectionResults;
-
-    isAgentInjected = this["native"]().evaluate(function () {
-      return typeof window.__poltergeist;
-    });
-
-    if (isAgentInjected === "undefined") {
-      this["native"]().injectJs("" + phantom.libraryPath + "/agent.js");
-      extensionsRef = WebPage.EXTENSIONS;
-      injectionResults = [];
-      for (i = 0, extensionsRefLength = extensionsRef.length; i < extensionsRefLength; i++) {
-        extension = extensionsRef[i];
-        injectionResults.push(this["native"]().injectJs(extension));
-      }
-      return injectionResults;
-    }
-  };
-
-  /**
-   * Injects a Javascript file extension into the
-   * @param file
-   * @return {*}
-   */
-  WebPage.prototype.injectExtension = function (file) {
-    //TODO: add error control, for example, check if file already in the extensions array, check if the file exists, etc.
-    WebPage.EXTENSIONS.push(file);
-    return this["native"]().injectJs(file);
-  };
-
-  /**
-   * Returns the native phantomjs webpage object
-   * @return {*}
-   */
-  WebPage.prototype["native"] = function () {
-    if (this.closed) {
-      throw new Poltergeist.NoSuchWindowError;
-    }
-
-    return this._native;
-  };
-
-  /**
-   * Returns the current page window name
-   * @return {*}
-   */
-  WebPage.prototype.windowName = function () {
-    return this["native"]().windowName;
-  };
-
-  /**
-   * Returns the keyCode of a given key as set in the phantomjs values
-   * @param name
-   * @return {number}
-   */
-  WebPage.prototype.keyCode = function (name) {
-    return this["native"]().event.key[name];
-  };
-
-  /**
-   * Waits for the page to reach a certain state
-   * @param state
-   * @param callback
-   * @return {*}
-   */
-  WebPage.prototype.waitState = function (state, callback) {
-    var self = this;
-    if (this.state === state) {
-      return callback.call();
-    } else {
-      return setTimeout((function () {
-        return self.waitState(state, callback);
-      }), 100);
-    }
-  };
-
-  /**
-   * Sets the browser header related to basic authentication protocol
-   * @param user
-   * @param password
-   * @return {boolean}
-   */
-  WebPage.prototype.setHttpAuth = function (user, password) {
-    var allHeaders = this.getCustomHeaders();
-
-    if (user === false || password === false) {
-      if (allHeaders.hasOwnProperty("Authorization")) {
-        delete allHeaders["Authorization"];
-      }
-      this.setCustomHeaders(allHeaders);
-      return true;
-    }
-
-    var userName = user || "";
-    var userPassword = password || "";
-
-    allHeaders["Authorization"] = "Basic " + btoa(userName + ":" + userPassword);
-    this.setCustomHeaders(allHeaders);
-    return true;
-  };
-
-  /**
-   * Returns all the network traffic associated to the rendering of this page
-   * @return {{}}
-   */
-  WebPage.prototype.networkTraffic = function () {
-    return this._networkTraffic;
-  };
-
-  /**
-   * Clears all the recorded network traffic related to the current page
-   * @return {{}}
-   */
-  WebPage.prototype.clearNetworkTraffic = function () {
-    return this._networkTraffic = {};
-  };
-
-  /**
-   * Returns the blocked urls that the page will not load
-   * @return {Array}
-   */
-  WebPage.prototype.blockedUrls = function () {
-    return this._blockedUrls;
-  };
-
-  /**
-   * Clean all the urls that should not be loaded
-   * @return {Array}
-   */
-  WebPage.prototype.clearBlockedUrls = function () {
-    return this._blockedUrls = [];
-  };
-
-  /**
-   * This property stores the content of the web page's currently active frame
-   * (which may or may not be the main frame), enclosed in an HTML/XML element.
-   * @return {string}
-   */
-  WebPage.prototype.content = function () {
-    return this["native"]().frameContent;
-  };
-
-  /**
-   * Returns the current active frame title
-   * @return {string}
-   */
-  WebPage.prototype.title = function () {
-    return this["native"]().frameTitle;
-  };
-
-  /**
-   * Returns if possible the frame url of the frame given by name
-   * @param frameName
-   * @return {string}
-   */
-  WebPage.prototype.frameUrl = function (frameName) {
-    var query;
-
-    query = function (frameName) {
-      var iframeReference;
-      if ((iframeReference = document.querySelector("iframe[name='" + frameName + "']")) != null) {
-        return iframeReference.src;
-      }
-      return void 0;
-    };
-
-    return this.evaluate(query, frameName);
-  };
-
-  /**
-   * Remove the errors caught on the page
-   * @return {Array}
-   */
-  WebPage.prototype.clearErrors = function () {
-    return this.errors = [];
-  };
-
-  /**
-   * Returns the response headers associated to this page
-   * @return {{}}
-   */
-  WebPage.prototype.responseHeaders = function () {
-    var headers;
-    headers = {};
-    this._responseHeaders.forEach(function (item) {
-      return headers[item.name] = item.value;
-    });
-    return headers;
-  };
-
-  /**
-   * Get Cookies visible to the current URL (though, for setting, use of page.addCookie is preferred).
-   * This array will be pre-populated by any existing Cookie data visible to this URL that is stored in the CookieJar, if any.
-   * @return {*}
-   */
-  WebPage.prototype.cookies = function () {
-    return this["native"]().cookies;
-  };
-
-  /**
-   * Delete any Cookies visible to the current URL with a 'name' property matching cookieName.
-   * Returns true if successfully deleted, otherwise false.
-   * @param name
-   * @return {*}
-   */
-  WebPage.prototype.deleteCookie = function (name) {
-    return this["native"]().deleteCookie(name);
-  };
-
-  /**
-   * This property gets the size of the viewport for the layout process.
-   * @return {*}
-   */
-  WebPage.prototype.viewportSize = function () {
-    return this["native"]().viewportSize;
-  };
-
-  /**
-   * This property sets the size of the viewport for the layout process.
-   * @param size
-   * @return {*}
-   */
-  WebPage.prototype.setViewportSize = function (size) {
-    return this["native"]().viewportSize = size;
-  };
-
-  /**
-   * This property specifies the scaling factor for the page.render and page.renderBase64 functions.
-   * @param zoomFactor
-   * @return {*}
-   */
-  WebPage.prototype.setZoomFactor = function (zoomFactor) {
-    return this["native"]().zoomFactor = zoomFactor;
-  };
-
-  /**
-   * This property defines the size of the web page when rendered as a PDF.
-   * See: http://phantomjs.org/api/webpage/property/paper-size.html
-   * @param size
-   * @return {*}
-   */
-  WebPage.prototype.setPaperSize = function (size) {
-    return this["native"]().paperSize = size;
-  };
-
-  /**
-   * This property gets the scroll position of the web page.
-   * @return {*}
-   */
-  WebPage.prototype.scrollPosition = function () {
-    return this["native"]().scrollPosition;
-  };
-
-  /**
-   * This property defines the scroll position of the web page.
-   * @param pos
-   * @return {*}
-   */
-  WebPage.prototype.setScrollPosition = function (pos) {
-    return this["native"]().scrollPosition = pos;
-  };
-
-
-  /**
-   * This property defines the rectangular area of the web page to be rasterized when page.render is invoked.
-   * If no clipping rectangle is set, page.render will process the entire web page.
-   * @return {*}
-   */
-  WebPage.prototype.clipRect = function () {
-    return this["native"]().clipRect;
-  };
-
-  /**
-   * This property defines the rectangular area of the web page to be rasterized when page.render is invoked.
-   * If no clipping rectangle is set, page.render will process the entire web page.
-   * @param rect
-   * @return {*}
-   */
-  WebPage.prototype.setClipRect = function (rect) {
-    return this["native"]().clipRect = rect;
-  };
-
-  /**
-   * Returns the size of an element given by a selector and its position relative to the viewport.
-   * @param selector
-   * @return {Object}
-   */
-  WebPage.prototype.elementBounds = function (selector) {
-    return this["native"]().evaluate(function (selector) {
-      return document.querySelector(selector).getBoundingClientRect();
-    }, selector);
-  };
-
-  /**
-   * Defines the user agent sent to server when the web page requests resources.
-   * @param userAgent
-   * @return {*}
-   */
-  WebPage.prototype.setUserAgent = function (userAgent) {
-    return this["native"]().settings.userAgent = userAgent;
-  };
-
-  /**
-   * Returns the additional HTTP request headers that will be sent to the server for EVERY request.
-   * @return {{}}
-   */
-  WebPage.prototype.getCustomHeaders = function () {
-    return this["native"]().customHeaders;
-  };
-
-  /**
-   * Gets the additional HTTP request headers that will be sent to the server for EVERY request.
-   * @param headers
-   * @return {*}
-   */
-  WebPage.prototype.setCustomHeaders = function (headers) {
-    return this["native"]().customHeaders = headers;
-  };
-
-  /**
-   * Adds a one time only request header, after being used it will be deleted
-   * @param header
-   * @return {Array}
-   */
-  WebPage.prototype.addTempHeader = function (header) {
-    var name, value, tempHeaderResult;
-    tempHeaderResult = [];
-    for (name in header) {
-      if (header.hasOwnProperty(name)) {
-        value = header[name];
-        tempHeaderResult.push(this._tempHeaders[name] = value);
-      }
-    }
-    return tempHeaderResult;
-  };
-
-  /**
-   * Remove the temporary headers we have set via addTempHeader
-   * @return {*}
-   */
-  WebPage.prototype.removeTempHeaders = function () {
-    var allHeaders, name, value, tempHeadersRef;
-    allHeaders = this.getCustomHeaders();
-    tempHeadersRef = this._tempHeaders;
-    for (name in tempHeadersRef) {
-      if (tempHeadersRef.hasOwnProperty(name)) {
-        value = tempHeadersRef[name];
-        delete allHeaders[name];
-      }
-    }
-
-    return this.setCustomHeaders(allHeaders);
-  };
-
-  /**
-   * If possible switch to the frame given by name
-   * @param name
-   * @return {boolean}
-   */
-  WebPage.prototype.pushFrame = function (name) {
-    if (this["native"]().switchToFrame(name)) {
-      this.frames.push(name);
-      return true;
-    }
-    return false;
-  };
-
-  /**
-   * Switch to parent frame, use with caution:
-   * popFrame assumes you are in frame, pop frame not being in a frame
-   * leaves unexpected behaviour
-   * @return {*}
-   */
-  WebPage.prototype.popFrame = function () {
-    //TODO: add some error control here, some way to check we are in a frame or not
-    this.frames.pop();
-    return this["native"]().switchToParentFrame();
-  };
-
-  /**
-   * Returns the webpage dimensions
-   * @return {{top: *, bottom: *, left: *, right: *, viewport: *, document: {height: number, width: number}}}
-   */
-  WebPage.prototype.dimensions = function () {
-    var scroll, viewport;
-    scroll = this.scrollPosition();
-    viewport = this.viewportSize();
-    return {
-      top: scroll.top,
-      bottom: scroll.top + viewport.height,
-      left: scroll.left,
-      right: scroll.left + viewport.width,
-      viewport: viewport,
-      document: this.documentSize()
-    };
-  };
-
-  /**
-   * Returns webpage dimensions that are valid
-   * @return {{top: *, bottom: *, left: *, right: *, viewport: *, document: {height: number, width: number}}}
-   */
-  WebPage.prototype.validatedDimensions = function () {
-    var dimensions, documentDimensions;
-
-    dimensions = this.dimensions();
-    documentDimensions = dimensions.document;
-
-    if (dimensions.right > documentDimensions.width) {
-      dimensions.left = Math.max(0, dimensions.left - (dimensions.right - documentDimensions.width));
-      dimensions.right = documentDimensions.width;
-    }
-
-    if (dimensions.bottom > documentDimensions.height) {
-      dimensions.top = Math.max(0, dimensions.top - (dimensions.bottom - documentDimensions.height));
-      dimensions.bottom = documentDimensions.height;
-    }
-
-    this.setScrollPosition({
-      left: dimensions.left,
-      top: dimensions.top
-    });
-
-    return dimensions;
-  };
-
-  /**
-   * Returns a Poltergeist.Node given by an id
-   * @param id
-   * @return {Poltergeist.Node}
-   */
-  WebPage.prototype.get = function (id) {
-    return new Poltergeist.Node(this, id);
-  };
-
-  /**
-   * Executes a phantomjs mouse event, for more info check: http://phantomjs.org/api/webpage/method/send-event.html
-   * @param name
-   * @param x
-   * @param y
-   * @param button
-   * @return {*}
-   */
-  WebPage.prototype.mouseEvent = function (name, x, y, button) {
-    if (button == null) {
-      button = 'left';
-    }
-    this.sendEvent('mousemove', x, y);
-    return this.sendEvent(name, x, y, button);
-  };
-
-  /**
-   * Evaluates a javascript and returns the evaluation of such script
-   * @return {*}
-   */
-  WebPage.prototype.evaluate = function () {
-    var args, fn;
-    fn = arguments[0];
-    args = [];
-
-    if (2 <= arguments.length) {
-      args = __slice.call(arguments, 1);
-    }
-
-    this.injectAgent();
-    return JSON.parse(this.sanitize(this["native"]().evaluate("function() { return PoltergeistAgent.stringify(" + (this.stringifyCall(fn, args)) + ") }")));
-  };
-
-  /**
-   * Does some string sanitation prior parsing
-   * @param potentialString
-   * @return {*}
-   */
-  WebPage.prototype.sanitize = function (potentialString) {
-    if (typeof potentialString === "string") {
-      return potentialString.replace("\n", "\\n").replace("\r", "\\r");
-    }
-
-    return potentialString;
-  };
-
-  /**
-   * Executes a script into the current page scope
-   * @param script
-   * @return {*}
-   */
-  WebPage.prototype.executeScript = function (script) {
-    return this["native"]().evaluateJavaScript(script);
-  };
-
-  /**
-   * Executes a script via phantomjs evaluation
-   * @return {*}
-   */
-  WebPage.prototype.execute = function () {
-    var args, fn;
-
-    fn = arguments[0];
-    args = [];
-
-    if (2 <= arguments.length) {
-      args = __slice.call(arguments, 1);
-    }
-
-    return this["native"]().evaluate("function() { " + (this.stringifyCall(fn, args)) + " }");
-  };
-
-  /**
-   * Helper methods to do script evaluation and execution
-   * @param fn
-   * @param args
-   * @return {string}
-   */
-  WebPage.prototype.stringifyCall = function (fn, args) {
-    if (args.length === 0) {
-      return "(" + (fn.toString()) + ")()";
-    }
-
-    return "(" + (fn.toString()) + ").apply(this, JSON.parse(" + (JSON.stringify(JSON.stringify(args))) + "))";
-  };
-
-  /**
-   * Binds callbacks to their respective Native implementations
-   * @param name
-   * @return {Function}
-   */
-  WebPage.prototype.bindCallback = function (name) {
-    var self;
-    self = this;
-
-    return this["native"]()[name] = function () {
-      var result;
-      if (self[name + 'Native'] != null) {
-        result = self[name + 'Native'].apply(self, arguments);
-      }
-      if (result !== false && (self[name] != null)) {
-        return self[name].apply(self, arguments);
-      }
-    };
-  };
-
-  /**
-   * Runs a command delegating to the PoltergeistAgent
-   * @param name
-   * @param args
-   * @return {*}
-   */
-  WebPage.prototype.runCommand = function (name, args) {
-    var method, result, selector;
-
-    result = this.evaluate(function (name, args) {
-      return window.__poltergeist.externalCall(name, args);
-    }, name, args);
-
-    if (result !== null) {
-      if (result.error != null) {
-        switch (result.error.message) {
-          case 'PoltergeistAgent.ObsoleteNode':
-            throw new Poltergeist.ObsoleteNode;
-            break;
-          case 'PoltergeistAgent.InvalidSelector':
-            method = args[0];
-            selector = args[1];
-            throw new Poltergeist.InvalidSelector(method, selector);
-            break;
-          default:
-            throw new Poltergeist.BrowserError(result.error.message, result.error.stack);
-        }
-      } else {
-        return result.value;
-      }
-    }
-  };
-
-  /**
-   * Tells if we can go back or not
-   * @return {boolean}
-   */
-  WebPage.prototype.canGoBack = function () {
-    return this["native"]().canGoBack;
-  };
-
-  /**
-   * Tells if we can go forward or not in the browser history
-   * @return {boolean}
-   */
-  WebPage.prototype.canGoForward = function () {
-    return this["native"]().canGoForward;
-  };
-
-  return WebPage;
-
-}).call(this);
diff --git a/vendor/jcalderonzumba/gastonjs/src/Cookie.php b/vendor/jcalderonzumba/gastonjs/src/Cookie.php
deleted file mode 100644
index d59c0f6..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Cookie.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS;
-
-/**
- * Class Cookie
- * @package Zumba\GastonJS
- */
-class Cookie {
-  /** @var  array */
-  protected $attributes;
-
-  /**
-   * @param $attributes
-   */
-  public function __construct($attributes) {
-    $this->attributes = $attributes;
-  }
-
-  /**
-   * Returns the cookie name
-   * @return string
-   */
-  public function getName() {
-    return $this->attributes['name'];
-  }
-
-  /**
-   * Returns the cookie value
-   * @return string
-   */
-  public function getValue() {
-    return urldecode($this->attributes['value']);
-  }
-
-  /**
-   * Returns the cookie domain
-   * @return string
-   */
-  public function getDomain() {
-    return $this->attributes['domain'];
-  }
-
-  /**
-   * Returns the path were the cookie is valid
-   * @return string
-   */
-  public function getPath() {
-    return $this->attributes['path'];
-  }
-
-  /**
-   * Is a secure cookie?
-   * @return bool
-   */
-  public function isSecure() {
-    return isset($this->attributes['secure']);
-  }
-
-  /**
-   * Is http only cookie?
-   * @return bool
-   */
-  public function isHttpOnly() {
-    return isset($this->attributes['httponly']);
-  }
-
-  /**
-   * Returns cookie expiration time
-   * @return mixed
-   */
-  public function getExpirationTime() {
-    //TODO: return a \DateTime object
-    if (isset($this->attributes['expiry'])) {
-      return $this->attributes['expiry'];
-    }
-    return null;
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/BrowserError.php b/vendor/jcalderonzumba/gastonjs/src/Exception/BrowserError.php
deleted file mode 100644
index a1c4f4b..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/BrowserError.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-
-/**
- * Class BrowserError
- * @package Zumba\GastonJS\Exception
- */
-class BrowserError extends ClientError {
-
-  /**
-   * @param array $response
-   */
-  public function __construct($response) {
-    parent::__construct($response);
-    $this->message = $this->message();
-  }
-
-  /**
-   * Gets the name of the browser error
-   * @return string
-   */
-  public function getName() {
-    return $this->response["error"]["name"];
-  }
-
-  /**
-   * @return JSErrorItem
-   */
-  public function javascriptError() {
-    //TODO: this need to be check, i don't know yet what comes in response
-    return new JSErrorItem($this->response["error"]["args"][0], $this->response["error"]["args"][1]);
-  }
-
-  /**
-   * Returns error message
-   * TODO: check how to proper implement if we have exceptions
-   * @return string
-   */
-  public function message() {
-    return "There was an error inside the PhantomJS portion of GastonJS.\nThis is probably a bug, so please report it:\n" . $this->javascriptError();
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/ClientError.php b/vendor/jcalderonzumba/gastonjs/src/Exception/ClientError.php
deleted file mode 100644
index 06be87b..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/ClientError.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-/**
- * Class ClientError
- * @package Zumba\GastonJS\Exception
- */
-class ClientError extends \Exception {
-
-  /** @var mixed */
-  protected $response;
-
-  /**
-   * @param mixed $response
-   */
-  public function __construct($response) {
-    $this->response = $response;
-  }
-
-  /**
-   * @return mixed
-   */
-  public function getResponse() {
-    return $this->response;
-  }
-
-  /**
-   * @param mixed $response
-   */
-  public function setResponse($response) {
-    $this->response = $response;
-  }
-
-
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/DeadClient.php b/vendor/jcalderonzumba/gastonjs/src/Exception/DeadClient.php
deleted file mode 100644
index f4af193..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/DeadClient.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-
-/**
- * Class DeadClient
- * @package Zumba\GastonJS\Exception
- */
-class DeadClient extends \Exception {
-
-  /**
-   * @param string     $message
-   * @param int        $code
-   * @param \Exception $previous
-   */
-  public function __construct($message = "", $code = 0, \Exception $previous = null) {
-    $errorMsg = $message."\nPhantomjs browser server is not taking connections, most probably it has crashed\n";
-    parent::__construct($errorMsg, $code, $previous);
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/FrameNotFound.php b/vendor/jcalderonzumba/gastonjs/src/Exception/FrameNotFound.php
deleted file mode 100644
index 56a6f91..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/FrameNotFound.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-/**
- * Class FrameNotFound
- * @package Zumba\GastonJS\Exception
- */
-class FrameNotFound extends ClientError {
-
-  /**
-   * @return string
-   */
-  public function getName() {
-    //TODO: check stuff here
-    return current(reset($this->response["args"]));
-  }
-
-  /**
-   * @return string
-   */
-  public function message() {
-    //TODO: check the exception message stuff
-    return "The frame " . $this->getName() . " was not not found";
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/InvalidSelector.php b/vendor/jcalderonzumba/gastonjs/src/Exception/InvalidSelector.php
deleted file mode 100644
index 44fad4b..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/InvalidSelector.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-/**
- * Class InvalidSelector
- * @package Zumba\GastonJS\Exception
- */
-class InvalidSelector extends ClientError {
-  /**
-   * Gets the method of selection
-   * @return string
-   */
-  public function getMethod() {
-    return $this->response["error"]["args"][0];
-  }
-
-  /**
-   * Gets the selector related to the method
-   * @return string
-   */
-  public function getSelector() {
-    return $this->response["error"]["args"][1];
-  }
-
-  /**
-   * @return string
-   */
-  public function message() {
-    return "The browser raised a syntax error while trying to evaluate" . $this->getMethod() . " selector " . $this->getSelector();
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/JSErrorItem.php b/vendor/jcalderonzumba/gastonjs/src/Exception/JSErrorItem.php
deleted file mode 100644
index 2fa205a..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/JSErrorItem.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-/**
- * Class JSErrorItem
- * @package Zumba\GastonJS\Exception
- */
-class JSErrorItem {
-  /** @var  mixed */
-  protected $message;
-  /** @var  mixed */
-  protected $stack;
-
-  /**
-   * @param $message
-   * @param $stack
-   */
-  public function __construct($message, $stack) {
-    $this->message = $message;
-    $this->stack = $stack;
-  }
-
-  /**
-   * String representation of the class
-   * @return string
-   */
-  public function __toString() {
-    return sprintf("%s\n%s", $this->message, $this->stack);
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/JavascriptError.php b/vendor/jcalderonzumba/gastonjs/src/Exception/JavascriptError.php
deleted file mode 100644
index 309adfb..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/JavascriptError.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-
-/**
- * Class JavascriptError
- * @package Zumba\GastonJS\Exception
- */
-class JavascriptError extends ClientError {
-
-  /**
-   * @param array $response
-   */
-  public function __construct($response) {
-    parent::__construct($response);
-    $this->message = $this->message();
-  }
-
-  /**
-   * Get the javascript errors found during the use of the phantomjs
-   * @return array
-   */
-  public function javascriptErrors() {
-    $jsErrors = array();
-    $errors = $this->response["error"]["args"][0];
-    foreach ($errors as $error) {
-      $jsErrors[] = new JSErrorItem($error["message"], $error["stack"]);
-    }
-    return $jsErrors;
-  }
-
-  /**
-   * Returns the javascript errors found
-   * @return string
-   */
-  public function message() {
-    $error = "One or more errors were raised in the Javascript code on the page.
-            If you don't care about these errors, you can ignore them by
-            setting js_errors: false in your Poltergeist configuration (see documentation for details).";
-    //TODO: add javascript errors
-    $jsErrors = $this->javascriptErrors();
-    foreach($jsErrors as $jsError){
-      $error = "$error\n$jsError";
-    }
-    return $error;
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/MouseEventFailed.php b/vendor/jcalderonzumba/gastonjs/src/Exception/MouseEventFailed.php
deleted file mode 100644
index abd72d3..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/MouseEventFailed.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-/**
- * Class MouseEventFailed
- * @package Zumba\GastonJS\Exception
- */
-class MouseEventFailed extends NodeError {
-
-  /**
-   * Gets the name of the event
-   * @return string
-   */
-  public function getName() {
-    return $this->response["args"][0];
-  }
-
-  /**
-   * Selector of the element to act with the mouse
-   * @return string
-   */
-  public function getSelector() {
-    return $this->response["args"][1];
-  }
-
-  /**
-   * Returns the position where the click was done
-   * @return array
-   */
-  public function getPosition() {
-    $position = array();
-    $position[0] = $this->response["args"][1]['x'];
-    $position[1] = $this->response["args"][2]['y'];
-    return $position;
-  }
-
-  /**
-   * @return string
-   */
-  public function message() {
-    $name = $this->getName();
-    $position = implode(",", $this->getPosition());
-    return "Firing a $name at co-ordinates [$position] failed. Poltergeist detected
-            another element with CSS selector '#{selector}' at this position.
-            It may be overlapping the element you are trying to interact with.
-            If you don't care about overlapping elements, try using node.trigger('$name').";
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/NoSuchWindowError.php b/vendor/jcalderonzumba/gastonjs/src/Exception/NoSuchWindowError.php
deleted file mode 100644
index 45388d1..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/NoSuchWindowError.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-namespace Zumba\GastonJS\Exception;
-
-
-/**
- * Class NoSuchWindowError
- * @package Zumba\GastonJS\Exception
- */
-class NoSuchWindowError extends ClientError {
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/NodeError.php b/vendor/jcalderonzumba/gastonjs/src/Exception/NodeError.php
deleted file mode 100644
index 4b399cf..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/NodeError.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-/**
- * Class NodeError
- * @package Zumba\GastonJS\Exception
- */
-class NodeError extends ClientError {
-  protected $node;
-
-  /**
-   * @param mixed $node
-   * @param mixed $response
-   */
-  public function __construct($node, $response) {
-    $this->node = $node;
-    parent::__construct($response);
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/ObsoleteNode.php b/vendor/jcalderonzumba/gastonjs/src/Exception/ObsoleteNode.php
deleted file mode 100644
index a0cdb17..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/ObsoleteNode.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-/**
- * Class ObsoleteNode
- * @package Zumba\GastonJS\Exception
- */
-class ObsoleteNode extends ClientError {
-
-  /**
-   * @param array $response
-   */
-  public function __construct($response) {
-    parent::__construct($response);
-    $this->message = $this->message();
-  }
-
-  /**
-   * @return string
-   */
-  public function message() {
-    return "The element you are trying to interact with is either not part of the DOM, or is
-    not currently visible on the page (perhaps display: none is set).
-    It's possible the element has been replaced by another element and you meant to interact with
-    the new element. If so you need to do a new 'find' in order to get a reference to the
-    new element.";
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/StatusFailError.php b/vendor/jcalderonzumba/gastonjs/src/Exception/StatusFailError.php
deleted file mode 100644
index fd90eef..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/StatusFailError.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-
-/**
- * Class StatusFailError
- * @package Zumba\GastonJS\Exception
- */
-class StatusFailError extends ClientError {
-  /**
-   * @return string
-   */
-  public function message() {
-    return "Request failed to reach server, check DNS and/or server status";
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/Exception/TimeoutError.php b/vendor/jcalderonzumba/gastonjs/src/Exception/TimeoutError.php
deleted file mode 100644
index 6366ffa..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/Exception/TimeoutError.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\Exception;
-
-/**
- * Class TimeoutError
- * @package Zumba\GastonJS\Exception
- */
-class TimeoutError extends \Exception {
-
-  /**
-   * @param string $message
-   */
-  public function __construct($message) {
-    $errorMessage = "Timed out waiting for response to {$message}. It's possible that this happened
-            because something took a very long time(for example a page load was slow).
-            If so, setting the Poltergeist :timeout option to a higher value will help
-            (see the docs for details). If increasing the timeout does not help, this is
-            probably a bug in Poltergeist - please report it to the issue tracker.";
-    parent::__construct($errorMessage);
-  }
-
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/NetworkTraffic/Request.php b/vendor/jcalderonzumba/gastonjs/src/NetworkTraffic/Request.php
deleted file mode 100644
index e6f9893..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/NetworkTraffic/Request.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-namespace Zumba\GastonJS\NetworkTraffic;
-
-/**
- * Class Request
- * @package Zumba\GastonJS\NetworkTraffic
- */
-class Request {
-  /** @var array */
-  protected $data;
-  /** @var array */
-  protected $responseParts;
-
-
-  /**
-   * @param array $data
-   * @param array $responseParts
-   */
-  public function __construct($data, $responseParts = null) {
-    $this->data = $data;
-    $this->responseParts = $this->createResponseParts($responseParts);
-  }
-
-  /**
-   * Creates an array of Response objects from a given response array
-   * @param $responseParts
-   * @return array
-   */
-  protected function createResponseParts($responseParts) {
-    if ($responseParts === null) {
-      return array();
-    }
-    $responses = array();
-    foreach ($responseParts as $responsePart) {
-      $responses[] = new Response($responsePart);
-    }
-    return $responses;
-  }
-
-  /**
-   * @return array
-   */
-  public function getResponseParts() {
-    return $this->responseParts;
-  }
-
-  /**
-   * @param array $responseParts
-   */
-  public function setResponseParts($responseParts) {
-    $this->responseParts = $responseParts;
-  }
-
-  /**
-   * Returns the url where the request is going to be made
-   * @return string
-   */
-  public function getUrl() {
-    //TODO: add isset maybe?
-    return $this->data['url'];
-  }
-
-  /**
-   * Returns the request method
-   * @return string
-   */
-  public function getMethod() {
-    return $this->data['method'];
-  }
-
-  /**
-   * Gets the request headers
-   * @return array
-   */
-  public function getHeaders() {
-    //TODO: Check if the data is actually an array, else make it array and see implications
-    return $this->data['headers'];
-  }
-
-  /**
-   * Returns if exists the request time
-   * @return \DateTime
-   */
-  public function getTime() {
-    if (isset($this->data['time'])) {
-      $requestTime = new \DateTime();
-      //TODO: fix the microseconds to miliseconds
-      $requestTime->createFromFormat("Y-m-dTH:i:s.uZ", $this->data["time"]);
-      return $requestTime;
-    }
-    return null;
-  }
-
-}
diff --git a/vendor/jcalderonzumba/gastonjs/src/NetworkTraffic/Response.php b/vendor/jcalderonzumba/gastonjs/src/NetworkTraffic/Response.php
deleted file mode 100644
index 37edc42..0000000
--- a/vendor/jcalderonzumba/gastonjs/src/NetworkTraffic/Response.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-namespace Zumba\GastonJS\NetworkTraffic;
-
-/**
- * Class Response
- * @package Zumba\GastonJS\NetworkTraffic
- */
-class Response {
-  /** @var  array */
-  protected $data;
-
-  /**
-   * @param $data
-   */
-  public function __construct($data) {
-    $this->data = $data;
-  }
-
-  /**
-   * Gets Response url
-   * @return string
-   */
-  public function getUrl() {
-    return $this->data['url'];
-  }
-
-  /**
-   * Gets the response status code
-   * @return int
-   */
-  public function getStatus() {
-    return intval($this->data['status']);
-  }
-
-  /**
-   * Gets the status text of the response
-   * @return string
-   */
-  public function getStatusText() {
-    return $this->data['statusText'];
-  }
-
-  /**
-   * Gets the response headers
-   * @return array
-   */
-  public function getHeaders() {
-    return $this->data['headers'];
-  }
-
-  /**
-   * Get redirect url if response is a redirect
-   * @return string
-   */
-  public function getRedirectUrl() {
-    if (isset($this->data['redirectUrl']) && !empty($this->data['redirectUrl'])) {
-      return $this->data['redirectUrl'];
-    }
-    return null;
-  }
-
-  /**
-   * Returns the size of the response body
-   * @return int
-   */
-  public function getBodySize() {
-    if (isset($this->data['bodySize'])) {
-      return intval($this->data['bodySize']);
-    }
-    return 0;
-  }
-
-  /**
-   * Returns the content type of the response
-   * @return string
-   */
-  public function getContentType() {
-    if (isset($this->data['contentType'])) {
-      return $this->data['contentType'];
-    }
-    return null;
-  }
-
-  /**
-   * Returns if exists the response time
-   * @return \DateTime
-   */
-  public function getTime() {
-    if (isset($this->data['time'])) {
-      $requestTime = new \DateTime();
-      //TODO: fix the microseconds to miliseconds
-      $requestTime->createFromFormat("Y-m-dTH:i:s.uZ", $this->data["time"]);
-      return $requestTime;
-    }
-    return null;
-  }
-}
diff --git a/vendor/jcalderonzumba/gastonjs/unit_tests.xml b/vendor/jcalderonzumba/gastonjs/unit_tests.xml
deleted file mode 100644
index 5473787..0000000
--- a/vendor/jcalderonzumba/gastonjs/unit_tests.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit bootstrap="./tests/unit/bootstrap.php"
-         backupGlobals="false"
-         backupStaticAttributes="false"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         processIsolation="false"
-         stopOnFailure="true"
-         syntaxCheck="false">
-    <testsuites>
-        <testsuite>
-            <directory>tests/unit</directory>
-        </testsuite>
-    </testsuites>
-    <filter>
-        <whitelist>
-            <directory suffix=".php">src</directory>
-            <exclude>
-                <directory suffix="Trait.php">src/</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/.gitignore b/vendor/jcalderonzumba/mink-phantomjs-driver/.gitignore
deleted file mode 100644
index 7df1a0b..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-.idea/*
-vendor/*
-bin/behat
-bin/phantomjs
-bin/phpunit
-composer.lock
-tmp/*
-tests/integration/ScreenShotContext.php
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/.travis.yml b/vendor/jcalderonzumba/mink-phantomjs-driver/.travis.yml
deleted file mode 100644
index 0dd8e58..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/.travis.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-language: php
-
-php:
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-matrix:
-  fast_finish: true
-  include:
-    - php: 5.4
-      env: COMPOSER_FLAGS='--prefer-lowest --prefer-stable' SYMFONY_DEPRECATIONS_HELPER=weak
-    - php: 5.6
-      env: DEPENDENCIES=dev
-  allow_failures:
-    - php: 7.0
-    - php: hhvm
-
-cache:
-  directories:
-    - $HOME/.composer/cache/files
-
-before_install:
-  - composer self-update
-  - if [ "$DEPENDENCIES" = "dev" ]; then perl -pi -e 's/^}$/,"minimum-stability":"dev"}/' composer.json; fi;
-
-install:
-  - composer update $COMPOSER_FLAGS
-
-before_script:
-  - mkdir -p /tmp/jcalderonzumba/phantomjs
-
-script:
-  - bin/run-tests.sh
-
-after_script:
-  - ps axo pid,command | grep phantomjs | grep -v grep | awk '{print $1}' | xargs -I {} kill {}
-  - ps axo pid,command | grep php | grep -v grep | awk '{print $1}' | xargs -I {} kill {}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/CHANGELOG-0.2.md b/vendor/jcalderonzumba/mink-phantomjs-driver/CHANGELOG-0.2.md
deleted file mode 100644
index e7482b2..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/CHANGELOG-0.2.md
+++ /dev/null
@@ -1,7 +0,0 @@
-CHANGELOG for 0.2.x
-===================
-This changelog references the relevant changes (bug and security fixes) done in 0.2 minor versions.
-
-* 0.2.3
-
-  * bug #1 set_url_blacklist was not working properly (thanks to reporter)
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/LICENSE b/vendor/jcalderonzumba/mink-phantomjs-driver/LICENSE
deleted file mode 100644
index 7ba018a..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Juan Francisco Calderón Zumba
-
-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/jcalderonzumba/mink-phantomjs-driver/README.md b/vendor/jcalderonzumba/mink-phantomjs-driver/README.md
deleted file mode 100644
index 54a433b..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/README.md
+++ /dev/null
@@ -1,61 +0,0 @@
-Mink PhantomJS Driver
-===========================
-[![Build Status](https://travis-ci.org/jcalderonzumba/MinkPhantomJSDriver.svg?branch=master)](https://travis-ci.org/jcalderonzumba/MinkPhantomJSDriver)
-[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/jcalderonzumba/MinkPhantomJSDriver/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/jcalderonzumba/MinkPhantomJSDriver/?branch=master)
-[![Latest Stable Version](https://poser.pugx.org/jcalderonzumba/mink-phantomjs-driver/v/stable)](https://packagist.org/packages/jcalderonzumba/mink-phantomjs-driver)
-[![Total Downloads](https://poser.pugx.org/jcalderonzumba/mink-phantomjs-driver/downloads)](https://packagist.org/packages/jcalderonzumba/mink-phantomjs-driver)
-
-Installation & Compatibility
-----------------------------
-You need a working installation of [PhantomJS](http://phantomjs.org/download.html)
-
-This driver is tested using PhantomJS 1.9.8 but it should work with 1.9.X or latest 2.0.X versions
-
-This driver supports **PHP 5.4 or greater**, there is NO support for PHP 5.3
-
-Use [Composer](https://getcomposer.org/) to install all required PHP dependencies:
-
-```bash
-$ composer require --dev behat/mink jcalderonzumba/mink-phantomjs-driver
-```
-
-How to use
--------------
-Extension configuration (for the moment NONE).
-```yml
-default:
-  extensions:
-    Zumba\PhantomJSExtension:
-```
-Driver specific configuration:
-```yml
-Behat\MinkExtension:
-phantomjs:
-    phantom_server: "http://localhost:8510/api"
-    template_cache: "/tmp/pjsdrivercache/phantomjs"
-```
-PhantomJS browser start:
-```bash
-phantomjs --ssl-protocol=any --ignore-ssl-errors=true vendor/jcalderonzumba/gastonjs/src/Client/main.js 8510 1024 768 2>&1 >> /tmp/gastonjs.log &
-```
-
-FAQ
----------
-
-1. Is this a selenium based driver?:
-
-  **NO**, it has nothing to do with Selenium it's inspired on [Poltergeist](https://github.com/teampoltergeist/poltergeist)
-
-2. What features does this driver implements?
-  
-  **ALL** of the features defined in Mink DriverInterface. maximizeWindow is the only one not implemented since is a headless browser it does not make sense to implement it.
-
-3. Do i need to modify my selenium based tests?
-
-  If you only use the standard behat driver defined methods then NO, you just have to change your default javascript driver.
-  
-
-Copyright
----------
-
-Copyright (c) 2015 Juan Francisco Calderon Zumba <juanfcz@gmail.com>
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/bin/run-tests.sh b/vendor/jcalderonzumba/mink-phantomjs-driver/bin/run-tests.sh
deleted file mode 100755
index 60bd219..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/bin/run-tests.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-set -e
-
-start_browser_api(){
-  CURRENT_DIR=$(pwd)
-  LOCAL_PHANTOMJS="${CURRENT_DIR}/bin/phantomjs"
-  if [ -f ${LOCAL_PHANTOMJS} ]; then
-    ${LOCAL_PHANTOMJS} --ssl-protocol=any --ignore-ssl-errors=true vendor/jcalderonzumba/gastonjs/src/Client/main.js 8510 1024 768 2>&1 &
-  else
-    phantomjs --ssl-protocol=any --ignore-ssl-errors=true vendor/jcalderonzumba/gastonjs/src/Client/main.js 8510 1024 768 2>&1 >> /dev/null &
-  fi
-  sleep 2
-}
-
-stop_services(){
-  ps axo pid,command | grep phantomjs | grep -v grep | awk '{print $1}' | xargs -I {} kill {}
-  ps axo pid,command | grep php | grep -v grep | grep -v phpstorm | awk '{print $1}' | xargs -I {} kill {}
-  sleep 2
-}
-
-star_local_browser(){
-  CURRENT_DIR=$(pwd)
-  cd ${CURRENT_DIR}/vendor/behat/mink/driver-testsuite/web-fixtures
-  if [ "$TRAVIS" = true ]; then
-    echo "Starting webserver fox fixtures...."
-    ~/.phpenv/versions/5.6/bin/php -S 127.0.0.1:6789 > /dev/null 2>&1 &
-  else
-    php -S 127.0.0.1:6789 2>&1 >> /dev/null &
-  fi
-  sleep 2
-}
-
-mkdir -p /tmp/jcalderonzumba/phantomjs
-stop_services
-start_browser_api
-star_local_browser
-cd ${CURRENT_DIR}
-${CURRENT_DIR}/bin/phpunit --configuration integration_tests.xml
-stop_services
-start_browser_api
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/composer.json b/vendor/jcalderonzumba/mink-phantomjs-driver/composer.json
deleted file mode 100644
index e5cbde8..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/composer.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-  "name": "jcalderonzumba/mink-phantomjs-driver",
-  "description": "PhantomJS driver for Mink framework",
-  "keywords": [
-    "phantomjs",
-    "headless",
-    "javascript",
-    "ajax",
-    "testing",
-    "browser"
-  ],
-  "homepage": "http://mink.behat.org/",
-  "type": "mink-driver",
-  "license": "MIT",
-  "authors": [
-    {
-      "name": "Juan Francisco Calderón Zumba",
-      "email": "juanfcz@gmail.com",
-      "homepage": "http://github.com/jcalderonzumba"
-    }
-  ],
-  "require": {
-    "php": ">=5.4",
-    "behat/mink": "~1.6",
-    "twig/twig": "~1.20|~2.0",
-    "jcalderonzumba/gastonjs": "~1.0"
-  },
-  "require-dev": {
-    "symfony/process": "~2.3",
-    "symfony/phpunit-bridge": "~2.7",
-    "symfony/css-selector": "~2.1",
-    "phpunit/phpunit": "~4.6",
-    "silex/silex": "~1.2"
-  },
-  "config": {
-    "bin-dir": "bin"
-  },
-  "autoload": {
-    "psr-4": {
-      "Zumba\\Mink\\Driver\\": "src"
-    }
-  },
-  "autoload-dev": {
-    "psr-4": {
-      "Behat\\Mink\\Tests\\Driver\\": "tests/integration"
-    }
-  },
-  "extra": {
-    "branch-alias": {
-      "dev-master": "0.4.x-dev"
-    }
-  }
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/integration_tests.xml b/vendor/jcalderonzumba/mink-phantomjs-driver/integration_tests.xml
deleted file mode 100644
index 739fc36..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/integration_tests.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit colors="true" bootstrap="./tests/integration/bootstrap.php" stopOnFailure="true">
-    <testsuites>
-        <testsuite name="PhantomJS Driver test suite">
-            <directory>tests/integration</directory>
-            <file>vendor/behat/mink/driver-testsuite/tests/Basic/BasicAuthTest.php</file>
-            <file>vendor/behat/mink/driver-testsuite/tests/Basic/ContentTest.php</file>
-            <file>vendor/behat/mink/driver-testsuite/tests/Basic/CookieTest.php</file>
-            <file>vendor/behat/mink/driver-testsuite/tests/Basic/ErrorHandlingTest.php</file>
-            <file>vendor/behat/mink/driver-testsuite/tests/Basic/IFrameTest.php</file>
-            <file>vendor/behat/mink/driver-testsuite/tests/Basic/ScreenshotTest.php</file>
-            <file>vendor/behat/mink/driver-testsuite/tests/Basic/TraversingTest.php</file>
-            <file>vendor/behat/mink/driver-testsuite/tests/Basic/VisibilityTest.php</file>
-            <directory>vendor/behat/mink/driver-testsuite/tests/Form</directory>
-            <directory>vendor/behat/mink/driver-testsuite/tests/Js</directory>
-            <!-- The following have been disabled and their respective equals added to Custom driver tests -->
-            <!--<directory>vendor/behat/mink/driver-testsuite/tests/Css</directory>-->
-            <!--<file>vendor/behat/mink/driver-testsuite/tests/Basic/StatusCodeTest.php</file>-->
-            <!--<file>vendor/behat/mink/driver-testsuite/tests/Basic/HeaderTest.php</file>-->
-            <!--<file>vendor/behat/mink/driver-testsuite/tests/Basic/NavigationTest.php</file>-->
-        </testsuite>
-    </testsuites>
-
-    <php>
-        <var name="driver_config_factory" value="Behat\Mink\Tests\Driver\PhantomJSConfig::getInstance"/>
-        <server name="WEB_FIXTURES_HOST" value="http://127.0.0.1:6789"/>
-        <!-- where driver will connect to -->
-        <server name="DRIVER_URL" value="http://127.0.0.1:8510/"/>
-        <server name="TEMPLATE_CACHE_DIR" value="/tmp/jcalderonzumba/phantomjs"/>
-    </php>
-
-    <filter>
-        <whitelist>
-            <directory>./src/Behat/Mink/Driver</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/BasePhantomJSDriver.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/BasePhantomJSDriver.php
deleted file mode 100644
index d962ff5..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/BasePhantomJSDriver.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-use Behat\Mink\Driver\CoreDriver;
-use Behat\Mink\Exception\DriverException;
-use Behat\Mink\Session;
-use Zumba\GastonJS\Browser\Browser;
-
-/**
- * Class BasePhantomJSDriver
- * @package Zumba\Mink\Driver
- */
-class BasePhantomJSDriver extends CoreDriver {
-
-  /** @var  Session */
-  protected $session;
-  /** @var  Browser */
-  protected $browser;
-  /** @var  string */
-  protected $phantomHost;
-  /** @var  \Twig_Loader_Filesystem */
-  protected $templateLoader;
-  /** @var  \Twig_Environment */
-  protected $templateEnv;
-
-  /**
-   * Instantiates the driver
-   * @param string $phantomHost browser "api" oriented host
-   * @param string $templateCache where we are going to store the templates cache
-   */
-  public function __construct($phantomHost, $templateCache = null) {
-    $this->phantomHost = $phantomHost;
-    $this->browser = new Browser($phantomHost);
-    $this->templateLoader = new \Twig_Loader_Filesystem(realpath(__DIR__ . '/Resources/Script'));
-    $this->templateEnv = new \Twig_Environment($this->templateLoader, array('cache' => $this->templateCacheSetup($templateCache), 'strict_variables' => true));
-  }
-
-  /**
-   * Sets up the cache template location for the scripts we are going to create with the driver
-   * @param $templateCache
-   * @return string
-   * @throws DriverException
-   */
-  protected function templateCacheSetup($templateCache) {
-    $cacheDir = $templateCache;
-    if ($templateCache === null) {
-      $cacheDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . "jcalderonzumba" . DIRECTORY_SEPARATOR . "phantomjs";
-      if (!file_exists($cacheDir)) {
-        mkdir($cacheDir, 0777, true);
-      }
-    }
-
-    if (!file_exists($cacheDir)) {
-      throw new DriverException("Template cache $cacheDir directory does not exist");
-    }
-    return $cacheDir;
-  }
-
-  /**
-   * Helper to find a node element given an xpath
-   * @param string $xpath
-   * @param int    $max
-   * @returns int
-   * @throws DriverException
-   */
-  protected function findElement($xpath, $max = 1) {
-    $elements = $this->browser->find("xpath", $xpath);
-    if (!isset($elements["page_id"]) || !isset($elements["ids"]) || count($elements["ids"]) !== $max) {
-      throw new DriverException("Failed to get elements with given $xpath");
-    }
-    return $elements;
-  }
-
-  /**
-   * {@inheritdoc}
-   * @param Session $session
-   */
-  public function setSession(Session $session) {
-    $this->session = $session;
-  }
-
-  /**
-   * @return Browser
-   */
-  public function getBrowser() {
-    return $this->browser;
-  }
-
-  /**
-   * @return \Twig_Environment
-   */
-  public function getTemplateEnv() {
-    return $this->templateEnv;
-  }
-
-  /**
-   * Returns a javascript script via twig template engine
-   * @param $templateName
-   * @param $viewData
-   * @return string
-   */
-  public function javascriptTemplateRender($templateName, $viewData) {
-    /** @var $templateEngine \Twig_Environment */
-    $templateEngine = $this->getTemplateEnv();
-    return $templateEngine->render($templateName, $viewData);
-  }
-
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/CookieTrait.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/CookieTrait.php
deleted file mode 100644
index 327b948..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/CookieTrait.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-use Zumba\GastonJS\Cookie;
-
-/**
- * Trait CookieTrait
- * @package Zumba\Mink\Driver
- */
-trait CookieTrait {
-
-  /**
-   * Sets a cookie on the browser, if null value then delete it
-   * @param string $name
-   * @param string $value
-   */
-  public function setCookie($name, $value = null) {
-    if ($value === null) {
-      $this->browser->removeCookie($name);
-    }
-    //TODO: set the cookie with domain, not with url, meaning www.aaa.com or .aaa.com
-    if ($value !== null) {
-      $urlData = parse_url($this->getCurrentUrl());
-      $cookie = array("name" => $name, "value" => $value, "domain" => $urlData["host"]);
-      $this->browser->setCookie($cookie);
-    }
-  }
-
-  /**
-   * Gets a cookie by its name if exists, else it will return null
-   * @param string $name
-   * @return string
-   */
-  public function getCookie($name) {
-    $cookies = $this->browser->cookies();
-    foreach ($cookies as $cookie) {
-      if ($cookie instanceof Cookie && strcmp($cookie->getName(), $name) === 0) {
-        return $cookie->getValue();
-      }
-    }
-    return null;
-  }
-
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/FormManipulationTrait.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/FormManipulationTrait.php
deleted file mode 100644
index 5a94fc7..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/FormManipulationTrait.php
+++ /dev/null
@@ -1,168 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-use Behat\Mink\Exception\DriverException;
-
-/**
- * Trait FormManipulationTrait
- * @package Zumba\Mink\Driver
- */
-trait FormManipulationTrait {
-
-
-  /**
-   * Returns the value of a given xpath element
-   * @param string $xpath
-   * @return string
-   * @throws DriverException
-   */
-  public function getValue($xpath) {
-    $this->findElement($xpath, 1);
-    $javascript = $this->javascriptTemplateRender("get_value.js.twig", array("xpath" => $xpath));
-    return $this->browser->evaluate($javascript);
-  }
-
-  /**
-   * @param string $xpath
-   * @param string $value
-   * @throws DriverException
-   */
-  public function setValue($xpath, $value) {
-    $this->findElement($xpath, 1);
-    //This stuff is BECAUSE the way the driver works for setting values when being checkboxes, radios, etc.
-    if (is_bool($value)) {
-      $value = $this->boolToString($value);
-    }
-
-    $javascript = $this->javascriptTemplateRender("set_value.js.twig", array("xpath" => $xpath, "value" => json_encode($value)));
-    $this->browser->evaluate($javascript);
-  }
-
-
-  /**
-   * Submits a form given an xpath selector
-   * @param string $xpath
-   * @throws DriverException
-   */
-  public function submitForm($xpath) {
-    $element = $this->findElement($xpath, 1);
-    $tagName = $this->browser->tagName($element["page_id"], $element["ids"][0]);
-    if (strcmp(strtolower($tagName), "form") !== 0) {
-      throw new DriverException("Can not submit something that is not a form");
-    }
-    $this->browser->trigger($element["page_id"], $element["ids"][0], "submit");
-  }
-
-  /**
-   * Helper method needed for twig and javascript stuff
-   * @param $boolValue
-   * @return string
-   */
-  protected function boolToString($boolValue) {
-    if ($boolValue === true) {
-      return "1";
-    }
-    return "0";
-  }
-
-  /**
-   * Selects an option
-   * @param string $xpath
-   * @param string $value
-   * @param bool   $multiple
-   * @return bool
-   * @throws DriverException
-   */
-  public function selectOption($xpath, $value, $multiple = false) {
-    $element = $this->findElement($xpath, 1);
-    $tagName = strtolower($this->browser->tagName($element["page_id"], $element["ids"][0]));
-    $attributes = $this->browser->attributes($element["page_id"], $element["ids"][0]);
-
-    if (!in_array($tagName, array("input", "select"))) {
-      throw new DriverException(sprintf('Impossible to select an option on the element with XPath "%s" as it is not a select or radio input', $xpath));
-    }
-
-    if ($tagName === "input" && $attributes["type"] != "radio") {
-      throw new DriverException(sprintf('Impossible to select an option on the element with XPath "%s" as it is not a select or radio input', $xpath));
-    }
-
-    return $this->browser->selectOption($element["page_id"], $element["ids"][0], $value, $multiple);
-  }
-
-  /**
-   * Check control over an input element of radio or checkbox type
-   * @param $xpath
-   * @return bool
-   * @throws DriverException
-   */
-  protected function inputCheckableControl($xpath) {
-    $element = $this->findElement($xpath, 1);
-    $tagName = strtolower($this->browser->tagName($element["page_id"], $element["ids"][0]));
-    $attributes = $this->browser->attributes($element["page_id"], $element["ids"][0]);
-    if ($tagName != "input") {
-      throw new DriverException("Can not check when the element is not of the input type");
-    }
-    if (!in_array($attributes["type"], array("checkbox", "radio"))) {
-      throw new DriverException("Can not check when the element is not checkbox or radio");
-    }
-    return true;
-  }
-
-  /**
-   * We click on the checkbox or radio when possible and needed
-   * @param string $xpath
-   * @throws DriverException
-   */
-  public function check($xpath) {
-    $this->inputCheckableControl($xpath);
-    $javascript = $this->javascriptTemplateRender("check_element.js.twig", array("xpath" => $xpath, "check" => "true"));
-    $this->browser->evaluate($javascript);
-  }
-
-  /**
-   * We click on the checkbox or radio when possible and needed
-   * @param string $xpath
-   * @throws DriverException
-   */
-  public function uncheck($xpath) {
-    $this->inputCheckableControl($xpath);
-    $javascript = $this->javascriptTemplateRender("check_element.js.twig", array("xpath" => $xpath, "check" => "false"));
-    $this->browser->evaluate($javascript);
-  }
-
-  /**
-   * Checks if the radio or checkbox is checked
-   * @param string $xpath
-   * @return bool
-   * @throws DriverException
-   */
-  public function isChecked($xpath) {
-    $this->findElement($xpath, 1);
-    $javascript = $this->javascriptTemplateRender("is_checked.js.twig", array("xpath" => $xpath));
-    $checked = $this->browser->evaluate($javascript);
-
-    if ($checked === null) {
-      throw new DriverException("Can not check when the element is not checkbox or radio");
-    }
-
-    return $checked;
-  }
-
-  /**
-   * Checks if the option is selected or not
-   * @param string $xpath
-   * @return bool
-   * @throws DriverException
-   */
-  public function isSelected($xpath) {
-    $elements = $this->findElement($xpath, 1);
-    $javascript = $this->javascriptTemplateRender("is_selected.js.twig", array("xpath" => $xpath));
-    $tagName = $this->browser->tagName($elements["page_id"], $elements["ids"][0]);
-    if (strcmp(strtolower($tagName), "option") !== 0) {
-      throw new DriverException("Can not assert on element that is not an option");
-    }
-
-    return $this->browser->evaluate($javascript);
-  }
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/HeadersTrait.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/HeadersTrait.php
deleted file mode 100644
index 1d6865a..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/HeadersTrait.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-/**
- * Class HeadersTrait
- * @package Zumba\Mink\Driver
- */
-trait HeadersTrait {
-
-  /**
-   * Gets the current request response headers
-   * Should be called only after a request, other calls are undefined behaviour
-   * @return array
-   */
-  public function getResponseHeaders() {
-    return $this->browser->responseHeaders();
-  }
-
-  /**
-   * Current request status code response
-   * @return int
-   */
-  public function getStatusCode() {
-    return $this->browser->getStatusCode();
-  }
-
-  /**
-   * The name say its all
-   * @param string $name
-   * @param string $value
-   */
-  public function setRequestHeader($name, $value) {
-    $header = array();
-    $header[$name] = $value;
-    //TODO: as a limitation of the driver it self, we will send permanent for the moment
-    $this->browser->addHeader($header, true);
-  }
-
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/JavascriptTrait.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/JavascriptTrait.php
deleted file mode 100644
index c5b7d63..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/JavascriptTrait.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-use Behat\Mink\Exception\DriverException;
-
-/**
- * Class JavascriptTrait
- * @package Zumba\Mink\Driver
- */
-trait JavascriptTrait {
-
-  /**
-   * Executes a script on the browser
-   * @param string $script
-   */
-  public function executeScript($script) {
-    $this->browser->execute($script);
-  }
-
-  /**
-   * Evaluates a script and returns the result
-   * @param string $script
-   * @return mixed
-   */
-  public function evaluateScript($script) {
-    return $this->browser->evaluate($script);
-  }
-
-  /**
-   * Waits some time or until JS condition turns true.
-   *
-   * @param integer $timeout timeout in milliseconds
-   * @param string  $condition JS condition
-   * @return boolean
-   * @throws DriverException                  When the operation cannot be done
-   */
-  public function wait($timeout, $condition) {
-    $start = microtime(true);
-    $end = $start + $timeout / 1000.0;
-    do {
-      $result = $this->browser->evaluate($condition);
-      usleep(100000);
-    } while (microtime(true) < $end && !$result);
-
-    return (bool)$result;
-  }
-
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/KeyboardTrait.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/KeyboardTrait.php
deleted file mode 100644
index 2b0c96d..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/KeyboardTrait.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-use Behat\Mink\Exception\DriverException;
-
-/**
- * Class KeyboardTrait
- * @package Zumba\Mink\Driver
- */
-trait KeyboardTrait {
-
-  /**
-   * Does some normalization for the char we want to do keyboard events with.
-   * @param $char
-   * @throws DriverException
-   * @return string
-   */
-  protected function normalizeCharForKeyEvent($char) {
-    if (!is_int($char) && !is_string($char)) {
-      throw new DriverException("Unsupported key type, can only be integer or string");
-    }
-
-    if (is_string($char) && strlen($char) !== 1) {
-      throw new DriverException("Key can only have ONE character");
-    }
-
-    $key = $char;
-    if (is_int($char)) {
-      $key = chr($char);
-    }
-    return $key;
-  }
-
-  /**
-   * Does some control and normalization for the key event modifier
-   * @param $modifier
-   * @return string
-   * @throws DriverException
-   */
-  protected function keyEventModifierControl($modifier) {
-    if ($modifier === null) {
-      $modifier = "none";
-    }
-
-    if (!in_array($modifier, array("none", "alt", "ctrl", "shift", "meta"))) {
-      throw new DriverException("Unsupported key modifier $modifier");
-    }
-    return $modifier;
-  }
-
-  /**
-   * Send a key-down event to the browser element
-   * @param        $xpath
-   * @param        $char
-   * @param string $modifier
-   * @throws DriverException
-   */
-  public function keyDown($xpath, $char, $modifier = null) {
-    $element = $this->findElement($xpath, 1);
-    $key = $this->normalizeCharForKeyEvent($char);
-    $modifier = $this->keyEventModifierControl($modifier);
-    return $this->browser->keyEvent($element["page_id"], $element["ids"][0], "keydown", $key, $modifier);
-  }
-
-  /**
-   * @param string $xpath
-   * @param string $char
-   * @param string $modifier
-   * @throws DriverException
-   */
-  public function keyPress($xpath, $char, $modifier = null) {
-    $element = $this->findElement($xpath, 1);
-    $key = $this->normalizeCharForKeyEvent($char);
-    $modifier = $this->keyEventModifierControl($modifier);
-    return $this->browser->keyEvent($element["page_id"], $element["ids"][0], "keypress", $key, $modifier);
-  }
-
-  /**
-   * Pressed up specific keyboard key.
-   *
-   * @param string         $xpath
-   * @param string|integer $char could be either char ('b') or char-code (98)
-   * @param string         $modifier keyboard modifier (could be 'ctrl', 'alt', 'shift' or 'meta')
-   *
-   * @throws DriverException                  When the operation cannot be done
-   */
-  public function keyUp($xpath, $char, $modifier = null) {
-    $this->findElement($xpath, 1);
-    $element = $this->findElement($xpath, 1);
-    $key = $this->normalizeCharForKeyEvent($char);
-    $modifier = $this->keyEventModifierControl($modifier);
-    return $this->browser->keyEvent($element["page_id"], $element["ids"][0], "keyup", $key, $modifier);
-  }
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/MouseTrait.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/MouseTrait.php
deleted file mode 100644
index c7cd2eb..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/MouseTrait.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-use Behat\Mink\Exception\DriverException;
-
-/**
- * Class MouseTrait
- * @package Zumba\Mink\Driver
- */
-trait MouseTrait {
-
-  /**
-   * Generates a mouseover event on the given element by xpath
-   * @param string $xpath
-   * @throws DriverException
-   */
-  public function mouseOver($xpath) {
-    $element = $this->findElement($xpath, 1);
-    $this->browser->hover($element["page_id"], $element["ids"][0]);
-  }
-
-  /**
-   * Clicks if possible on an element given by xpath
-   * @param string $xpath
-   * @return mixed
-   * @throws DriverException
-   */
-  public function click($xpath) {
-    $elements = $this->findElement($xpath, 1);
-    $this->browser->click($elements["page_id"], $elements["ids"][0]);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  /**
-   * Double click on element found via xpath
-   * @param string $xpath
-   * @throws DriverException
-   */
-  public function doubleClick($xpath) {
-    $elements = $this->findElement($xpath, 1);
-    $this->browser->doubleClick($elements["page_id"], $elements["ids"][0]);
-  }
-
-  /**
-   * Right click on element found via xpath
-   * @param string $xpath
-   * @throws DriverException
-   */
-  public function rightClick($xpath) {
-    $elements = $this->findElement($xpath, 1);
-    $this->browser->rightClick($elements["page_id"], $elements["ids"][0]);
-  }
-
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/NavigationTrait.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/NavigationTrait.php
deleted file mode 100644
index 88ca429..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/NavigationTrait.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-/**
- * Trait NavigationTrait
- * @package Zumba\Mink\Driver
- */
-trait NavigationTrait {
-  /**
-   * Visits a given url
-   * @param string $url
-   */
-  public function visit($url) {
-    $this->browser->visit($url);
-  }
-
-  /**
-   * Gets the current url if any
-   * @return string
-   */
-  public function getCurrentUrl() {
-    return $this->browser->currentUrl();
-  }
-
-
-  /**
-   * Reloads the page if possible
-   */
-  public function reload() {
-    $this->browser->reload();
-  }
-
-  /**
-   * Goes forward if possible
-   */
-  public function forward() {
-    $this->browser->goForward();
-  }
-
-  /**
-   * Goes back if possible
-   */
-  public function back() {
-    $this->browser->goBack();
-  }
-
-
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/PageContentTrait.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/PageContentTrait.php
deleted file mode 100644
index 7759a0f..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/PageContentTrait.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-use Behat\Mink\Exception\DriverException;
-
-/**
- * Class PageContentTrait
- * @package Zumba\Mink\Driver
- */
-trait PageContentTrait {
-
-  /**
-   * @return string
-   */
-  public function getContent() {
-    return $this->browser->getBody();
-  }
-
-  /**
-   * Given xpath, will try to get ALL the text, visible and not visible from such xpath
-   * @param string $xpath
-   * @return string
-   * @throws DriverException
-   */
-  public function getText($xpath) {
-    $elements = $this->findElement($xpath, 1);
-    //allText works only with ONE element so it will be the first one and also returns new lines that we will remove
-    $text = $this->browser->allText($elements["page_id"], $elements["ids"][0]);
-    $text = trim(str_replace(array("\r", "\r\n", "\n"), ' ', $text));
-    $text = preg_replace('/ {2,}/', ' ', $text);
-    return $text;
-  }
-
-  /**
-   * Returns the inner html of a given xpath
-   * @param string $xpath
-   * @return string
-   * @throws DriverException
-   */
-  public function getHtml($xpath) {
-    $elements = $this->findElement($xpath, 1);
-    //allText works only with ONE element so it will be the first one
-    return $this->browser->allHtml($elements["page_id"], $elements["ids"][0], "inner");
-  }
-
-  /**
-   * Gets the outer html of a given xpath
-   * @param string $xpath
-   * @return string
-   * @throws DriverException
-   */
-  public function getOuterHtml($xpath) {
-    $elements = $this->findElement($xpath, 1);
-    //allText works only with ONE element so it will be the first one
-    return $this->browser->allHtml($elements["page_id"], $elements["ids"][0], "outer");
-  }
-
-  /**
-   * Returns the binary representation of the current page we are in
-   * @throws DriverException
-   * @return string
-   */
-  public function getScreenshot() {
-    $options = array("full" => true, "selector" => null);
-    $b64ScreenShot = $this->browser->renderBase64("JPEG", $options);
-    if (($binaryScreenShot = base64_decode($b64ScreenShot, true)) === false) {
-      throw new DriverException("There was a problem while doing the screenshot of the current page");
-    }
-    return $binaryScreenShot;
-  }
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/PhantomJSDriver.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/PhantomJSDriver.php
deleted file mode 100644
index ac25170..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/PhantomJSDriver.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-use Behat\Mink\Element\NodeElement;
-use Behat\Mink\Exception\DriverException;
-
-/**
- * Class PhantomJSDriver
- * @package Behat\Mink\Driver
- */
-class PhantomJSDriver extends BasePhantomJSDriver {
-
-  use SessionTrait;
-  use NavigationTrait;
-  use CookieTrait;
-  use HeadersTrait;
-  use JavascriptTrait;
-  use MouseTrait;
-  use PageContentTrait;
-  use KeyboardTrait;
-  use FormManipulationTrait;
-  use WindowTrait;
-
-  /**
-   * Sets the basic auth user and password
-   * @param string $user
-   * @param string $password
-   */
-  public function setBasicAuth($user, $password) {
-    $this->browser->setHttpAuth($user, $password);
-  }
-
-  /**
-   * Gets the tag name of a given xpath
-   * @param string $xpath
-   * @return string
-   * @throws DriverException
-   */
-  public function getTagName($xpath) {
-    $elements = $this->findElement($xpath, 1);
-    return $this->browser->tagName($elements["page_id"], $elements["ids"][0]);
-  }
-
-  /**
-   * Gets the attribute value of a given element and name
-   * @param string $xpath
-   * @param string $name
-   * @return string
-   * @throws DriverException
-   */
-  public function getAttribute($xpath, $name) {
-    $elements = $this->findElement($xpath, 1);
-    return $this->browser->attribute($elements["page_id"], $elements["ids"][0], $name);
-  }
-
-  /**
-   * Check if element given by xpath is visible or not
-   * @param string $xpath
-   * @return bool
-   * @throws DriverException
-   */
-  public function isVisible($xpath) {
-    $elements = $this->findElement($xpath, 1);
-    return $this->browser->isVisible($elements["page_id"], $elements["ids"][0]);
-  }
-
-  /**
-   * Drags one element to another
-   * @param string $sourceXpath
-   * @param string $destinationXpath
-   * @throws DriverException
-   */
-  public function dragTo($sourceXpath, $destinationXpath) {
-    $sourceElement = $this->findElement($sourceXpath, 1);
-    $destinationElement = $this->findElement($destinationXpath, 1);
-    $this->browser->drag($sourceElement["page_id"], $sourceElement["ids"][0], $destinationElement["ids"][0]);
-  }
-
-  /**
-   * Upload a file to the browser
-   * @param string $xpath
-   * @param string $path
-   * @throws DriverException
-   */
-  public function attachFile($xpath, $path) {
-    if (!file_exists($path)) {
-      throw new DriverException("Wow there the file does not exist, you can not upload it");
-    }
-
-    if (($realPath = realpath($path)) === false) {
-      throw new DriverException("Wow there the file does not exist, you can not upload it");
-    }
-
-    $element = $this->findElement($xpath, 1);
-    $tagName = $this->getTagName($xpath);
-    if ($tagName != "input") {
-      throw new DriverException("The element is not an input element, you can not attach a file to it");
-    }
-
-    $attributes = $this->getBrowser()->attributes($element["page_id"], $element["ids"][0]);
-    if (!isset($attributes["type"]) || $attributes["type"] != "file") {
-      throw new DriverException("The element is not an input file type element, you can not attach a file to it");
-    }
-
-    $this->browser->selectFile($element["page_id"], $element["ids"][0], $realPath);
-  }
-
-  /**
-   * Puts the browser control inside the IFRAME
-   * You own the control, make sure to go back to the parent calling this method with null
-   * @param string $name
-   */
-  public function switchToIFrame($name = null) {
-    //TODO: check response of the calls
-    if ($name === null) {
-      $this->browser->popFrame();
-      return;
-    } else {
-      $this->browser->pushFrame($name);
-    }
-  }
-
-  /**
-   * Focus on an element
-   * @param string $xpath
-   * @throws DriverException
-   */
-  public function focus($xpath) {
-    $element = $this->findElement($xpath, 1);
-    $this->browser->trigger($element["page_id"], $element["ids"][0], "focus");
-  }
-
-  /**
-   * Blur on element
-   * @param string $xpath
-   * @throws DriverException
-   */
-  public function blur($xpath) {
-    $element = $this->findElement($xpath, 1);
-    $this->browser->trigger($element["page_id"], $element["ids"][0], "blur");
-  }
-
-  /**
-   * Finds elements with specified XPath query.
-   * @param string $xpath
-   * @return NodeElement[]
-   * @throws DriverException                  When the operation cannot be done
-   */
-  public function find($xpath) {
-    $elements = $this->browser->find("xpath", $xpath);
-    $nodeElements = array();
-
-    if (!isset($elements["ids"])) {
-      return null;
-    }
-
-    foreach ($elements["ids"] as $i => $elementId) {
-      $nodeElements[] = new NodeElement(sprintf('(%s)[%d]', $xpath, $i + 1), $this->session);
-    }
-    return $nodeElements;
-  }
-
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/check_element.js.twig b/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/check_element.js.twig
deleted file mode 100644
index f3372ba..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/check_element.js.twig
+++ /dev/null
@@ -1,35 +0,0 @@
-{% autoescape 'js' %}
-(function (xpath, check) {
-  function getPolterNode(xpath) {
-    var polterAgent = window.__poltergeist;
-    var ids = polterAgent.find("xpath", xpath, document);
-    return polterAgent.get(ids[0]);
-  }
-
-  var pNode = getPolterNode(xpath);
-
-  if (check && pNode.element.checked) {
-    //requested to check the element and is already check, do nothing.
-    return true;
-  }
-
-  if (!check && pNode.element.checked == false) {
-    //move along nothing to be done
-    return true;
-  }
-
-  if (check && pNode.element.checked == false) {
-    //we have to check the element, we will do so by triggering a click event so all change listeners are aware.
-    pNode.trigger("click");
-    pNode.element.checked = true;
-  }
-
-  if (!check && pNode.element.checked) {
-    //move along nothing to be done
-    pNode.trigger("click");
-    pNode.element.checked = false;
-    return true;
-  }
-  return false;
-}('{{xpath}}', {{check}}));
-{% endautoescape %}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/execute_script.js.twig b/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/execute_script.js.twig
deleted file mode 100644
index 791276c..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/execute_script.js.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% autoescape false %}
-  {{ script }};
-{% endautoescape %}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/get_value.js.twig b/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/get_value.js.twig
deleted file mode 100644
index 8e040f8..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/get_value.js.twig
+++ /dev/null
@@ -1,63 +0,0 @@
-{% autoescape 'js' %}
-(function (xpath) {
-  function getElement(xpath) {
-    var polterAgent = window.__poltergeist;
-    var ids = polterAgent.find("xpath", xpath, document);
-    var polterNode = polterAgent.get(ids[0]);
-    return polterNode.element;
-  }
-
-  function inputRadioGetValue(element){
-    var value = null;
-    var name = element.getAttribute('name');
-    if (!name){
-      return null;
-    }
-    var fields = window.document.getElementsByName(name);
-    var i;
-    var l = fields.length;
-    for (i = 0; i < l; i++) {
-      var field = fields.item(i);
-      if (field.form === element.form && field.checked) {
-        return field.value;
-      }
-    }
-    return null;
-  }
-
-  var node = getElement(xpath);
-  var tagName = node.tagName.toLowerCase();
-  var value = null;
-  if (tagName == "input") {
-    var type = node.type.toLowerCase();
-    if (type == "checkbox") {
-      value = node.checked ? node.value : null;
-    } else if (type == "radio") {
-      value = inputRadioGetValue(node);
-    } else {
-      value = node.value;
-    }
-  } else if (tagName == "textarea") {
-    value = node.value;
-  } else if (tagName == "select") {
-    if (node.multiple) {
-      value = [];
-      for (var i = 0; i < node.options.length; i++) {
-        if (node.options[i].selected) {
-          value.push(node.options[i].value);
-        }
-      }
-    } else {
-      var idx = node.selectedIndex;
-      if (idx >= 0) {
-        value = node.options.item(idx).value;
-      } else {
-        value = null;
-      }
-    }
-  } else {
-    value = node.value;
-  }
-  return value;
-}('{{ xpath }}'));
-{% endautoescape %}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/is_checked.js.twig b/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/is_checked.js.twig
deleted file mode 100644
index 6b14cad..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/is_checked.js.twig
+++ /dev/null
@@ -1,31 +0,0 @@
-{% autoescape 'js' %}
-(function (xpath) {
-  function getElement(xpath, within) {
-    var result;
-    if (within === null || within === undefined) {
-      within = document;
-    }
-    result = document.evaluate(xpath, within, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-    if (result.snapshotLength !== 1) {
-      return null;
-    }
-    return result.snapshotItem(0);
-  }
-
-  var node = getElement(xpath);
-
-  if (node === null) {
-    return null;
-  }
-
-  if(node.tagName.toLowerCase() != "input"){
-    return null;
-  }
-
-  if(node.type.toLowerCase() != "checkbox" && node.type.toLowerCase() != "radio"){
-    return null;
-  }
-
-  return node.checked;
-}('{{ xpath }}'));
-{% endautoescape %}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/is_selected.js.twig b/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/is_selected.js.twig
deleted file mode 100644
index a3a18d3..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/is_selected.js.twig
+++ /dev/null
@@ -1,16 +0,0 @@
-{% autoescape 'js' %}
-(function (xpath) {
-  function getElement(xpath) {
-    var polterAgent = window.__poltergeist;
-    var ids = polterAgent.find("xpath", xpath, document);
-    var polterNode = polterAgent.get(ids[0]);
-    return polterNode.element;
-  }
-
-  var node = getElement(xpath);
-  if(typeof node.selected == "undefined"){
-    return null;
-  }
-  return node.selected;
-}('{{xpath}}'));
-{% endautoescape %}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/set_value.js.twig b/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/set_value.js.twig
deleted file mode 100644
index 605aec3..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/Resources/Script/set_value.js.twig
+++ /dev/null
@@ -1,213 +0,0 @@
-{% autoescape 'js' %}
-(function (xpath, value) {
-  function getElement(xpath, within) {
-    var result;
-    if (within === null || within === undefined) {
-      within = document;
-    }
-    result = document.evaluate(xpath, within, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-    if (result.snapshotLength !== 1) {
-      return null;
-    }
-    return result.snapshotItem(0);
-  }
-
-  function isInput(element) {
-    if (element === null || element === undefined) {
-      return false;
-    }
-    return (element.tagName.toLowerCase() == "input");
-  }
-
-  function isTextArea(element) {
-    if (element === null || element === undefined) {
-      return false;
-    }
-    return (element.tagName.toLowerCase() == "textarea");
-  }
-
-  function isSelect(element) {
-    if (element === null || element === undefined) {
-      return false;
-    }
-    return (element.tagName.toLowerCase() == "select");
-  }
-
-  function deselectAllOptions(element) {
-    var i, l = element.options.length;
-    for (i = 0; i < l; i++) {
-      element.options[i].selected = false;
-    }
-  }
-
-  function xpathStringLiteral(s) {
-    if (s.indexOf('"') === -1)
-      return '"' + s + '"';
-    if (s.indexOf("'") === -1)
-      return "'" + s + "'";
-    return 'concat("' + s.replace(/"/g, '",\'"\',"') + '")';
-  }
-
-  function clickOnElement(element) {
-    // create a mouse click event
-    var event = document.createEvent('MouseEvents');
-    event.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
-
-    // send click to element
-    element.dispatchEvent(event);
-
-    //After dispatching the event let's wait for 2 seconds at least...
-    return setTimeout(function () {
-    }, 2);
-  }
-
-  function dispatchChange(element) {
-    var tagName =element.tagName.toLowerCase();
-    var elementType = element.getAttribute("type");
-    if (tagName != "option" || (tagName == "input" && elementType == "radio")){
-      return true;
-    }
-    //Force the change when element is option
-    var event;
-    event = document.createEvent('HTMLEvents');
-    event.initEvent('change', true, false);
-    element.dispatchEvent(event);
-    return true;
-  }
-
-  function selectOptionOnElement(element, option, multiple) {
-    var polterAgent = window.__poltergeist;
-    var escapedOption = xpathStringLiteral(option);
-    // The value of an option is the normalized version of its text when it has no value attribute
-    var optionQuery = ".//option[@value = " + escapedOption + " or (not(@value) and normalize-space(.) = " + escapedOption + ")]";
-    var ids = polterAgent.find("xpath", optionQuery, element);
-    var polterNode = polterAgent.get(ids[0]);
-    var optionElement = polterNode.element;
-
-    if (multiple || !element.multiple) {
-      if (!optionElement.selected) {
-        clickOnElement(optionElement);
-        optionElement.selected = true;
-      }
-      return dispatchChange(optionElement);
-    }
-
-    deselectAllOptions(element);
-    clickOnElement(optionElement);
-    optionElement.selected = true;
-    return dispatchChange(optionElement);
-  }
-
-  function selectSetValue(element, value) {
-    var option;
-    if ((Array.isArray && Array.isArray(value)) || (value instanceof Array)) {
-      deselectAllOptions(element);
-      for (option in value) {
-        if (value.hasOwnProperty(option)) {
-          selectOptionOnElement(element, value[option], true);
-        }
-      }
-      return true;
-    }
-
-    selectOptionOnElement(element, value, false);
-    return true;
-  }
-
-  function selectRadioValue(element, value) {
-    if (element.value === value) {
-      clickOnElement(element);
-      element.checked=true;
-      dispatchChange(element);
-      return true;
-    }
-
-    var formElements = element.form.elements;
-    var name = element.getAttribute("name");
-    var radioElement, i;
-
-    if (!name) {
-      return null;
-    }
-
-    for (i = 0; i < formElements.length; i++) {
-      radioElement = formElements[i];
-      if (radioElement.tagName.toLowerCase() == 'input' && radioElement.type.toLowerCase() == 'radio' && radioElement.name === name) {
-        if (value === radioElement.value) {
-          clickOnElement(radioElement);
-          radioElement.checked=true;
-          dispatchChange(radioElement);
-          return true;
-        }
-      }
-    }
-
-    return null;
-  }
-
-  function inputSetValue(element, value, elementXpath) {
-    var allowedTypes = ['submit', 'image', 'button', 'reset'];
-    var elementType = element.type.toLowerCase();
-    var textLikeInputType = ['file', 'text', 'password', 'url', 'email', 'search', 'number', 'tel', 'range', 'date', 'month', 'week', 'time', 'datetime', 'color', 'datetime-local'];
-
-    if (allowedTypes.indexOf(elementType) !== -1) {
-      return null;
-    }
-
-    if (elementType == "checkbox") {
-      var booleanValue = false;
-      if (value == "1" || value == 1) {
-        booleanValue = true;
-      } else if (value == "0" || value == 0) {
-        booleanValue = false;
-      }
-      if ((element.checked && !booleanValue) || (!element.checked && booleanValue)) {
-        clickOnElement(element);
-        dispatchChange(element);
-      }
-      return true;
-    }
-
-    if (elementType == "radio") {
-      return selectRadioValue(element, value);
-    }
-
-    if (textLikeInputType.indexOf(elementType) !== -1) {
-      return textAreaSetValue(elementXpath, value);
-    }
-
-    //No support for the moment for file stuff or other input types
-    return null;
-
-  }
-
-  function textAreaSetValue(elementXpath, value) {
-    var polterAgent = window.__poltergeist;
-    var ids = polterAgent.find("xpath", elementXpath, document);
-    var polterNode = polterAgent.get(ids[0]);
-    polterNode.set(value);
-    return true;
-  }
-
-  var node = getElement(xpath);
-  if (node === null) {
-    return null;
-  }
-
-  if (isSelect(node)) {
-    return selectSetValue(node, value);
-  }
-
-  if (isInput(node)) {
-    return inputSetValue(node, value, xpath);
-  }
-
-  if (isTextArea(node)) {
-    return textAreaSetValue(xpath, value);
-  }
-
-  //for the moment everything else also to textArea stuff
-  return textAreaSetValue(xpath, value);
-
-}('{{xpath}}', JSON.parse('{{ value }}')));
-{% endautoescape %}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/SessionTrait.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/SessionTrait.php
deleted file mode 100644
index 6443dff..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/SessionTrait.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-
-namespace Zumba\Mink\Driver;
-
-/**
- * Trait SessionTrait
- * @package Zumba\Mink\Driver
- */
-trait SessionTrait {
-
-  /** @var  bool */
-  protected $started;
-
-  /**
-   * Starts a session to be used by the driver client
-   */
-  public function start() {
-    $this->started = true;
-  }
-
-  /**
-   * Tells if the session is started or not
-   * @return bool
-   */
-  public function isStarted() {
-    return $this->started;
-  }
-
-  /**
-   * Stops the session completely, clean slate for the browser
-   * @return bool
-   */
-  public function stop() {
-    //Since we are using a remote browser "API", stopping is just like resetting, say good bye to cookies
-    //TODO: In the future we may want to control a start / stop of the remove browser
-    return $this->reset();
-  }
-
-  /**
-   * Clears the cookies in the browser, all of them
-   * @return bool
-   */
-  public function reset() {
-    $this->getBrowser()->clearCookies();
-    $this->getBrowser()->reset();
-    $this->started = false;
-    return true;
-  }
-}
diff --git a/vendor/jcalderonzumba/mink-phantomjs-driver/src/WindowTrait.php b/vendor/jcalderonzumba/mink-phantomjs-driver/src/WindowTrait.php
deleted file mode 100644
index 92fc6ee..0000000
--- a/vendor/jcalderonzumba/mink-phantomjs-driver/src/WindowTrait.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-namespace Zumba\Mink\Driver;
-
-use Behat\Mink\Exception\DriverException;
-
-/**
- * Class WindowTrait
- * @package Zumba\Mink\Driver
- */
-trait WindowTrait {
-  /**
-   * Returns the current page window name
-   * @return string
-   */
-  public function getWindowName() {
-    return $this->browser->windowName();
-  }
-
-  /**
-   * Return all the window handles currently present in phantomjs
-   * @return array
-   */
-  public function getWindowNames() {
-    return $this->browser->windowHandles();
-  }
-
-  /**
-   * Switches to window by name if possible
-   * @param $name
-   * @throws DriverException
-   */
-  public function switchToWindow($name = null) {
-    $handles = $this->browser->windowHandles();
-    if ($name === null) {
-      //null means back to the main window
-      return $this->browser->switchToWindow($handles[0]);
-    }
-
-    $windowHandle = $this->browser->windowHandle($name);
-    if (!empty($windowHandle)) {
-      $this->browser->switchToWindow($windowHandle);
-    } else {
-      throw new DriverException("Could not find window handle by a given window name: $name");
-    }
-
-  }
-
-  /**
-   * Resizing a window with specified size
-   * @param int    $width
-   * @param int    $height
-   * @param string $name
-   * @throws DriverException
-   */
-  public function resizeWindow($width, $height, $name = null) {
-    if ($name !== null) {
-      //TODO: add this on the phantomjs stuff
-      throw new DriverException("Resizing other window than the main one is not supported yet");
-    }
-    $this->browser->resize($width, $height);
-  }
-
-}
diff --git a/vendor/masterminds/html5/.gitignore b/vendor/masterminds/html5/.gitignore
deleted file mode 100644
index f9ead4a..0000000
--- a/vendor/masterminds/html5/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-vendor/
-scratch.php
-composer.lock
-build/
\ No newline at end of file
diff --git a/vendor/masterminds/html5/.travis.yml b/vendor/masterminds/html5/.travis.yml
deleted file mode 100644
index 2ccb563..0000000
--- a/vendor/masterminds/html5/.travis.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-language: php
-
-# Setting sudo access to false will let Travis CI use containers rather than
-# VMs to run the tests. For more details see:
-# - http://docs.travis-ci.com/user/workers/container-based-infrastructure/
-# - http://docs.travis-ci.com/user/workers/standard-infrastructure/
-sudo: false
-
-php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-  - nightly
-
-notifications:
-  irc: "irc.freenode.net#masterminds"
-
-before_script:
-  - composer self-update
-  - composer install
-
-script:
-  - mkdir -p build/logs
-  - ./vendor/bin/phpunit -c phpunit.xml.dist
-
-after_script:
-  - php vendor/bin/coveralls -v
diff --git a/vendor/masterminds/html5/CREDITS b/vendor/masterminds/html5/CREDITS
deleted file mode 100644
index c2dbc4b..0000000
--- a/vendor/masterminds/html5/CREDITS
+++ /dev/null
@@ -1,11 +0,0 @@
-Matt Butcher [technosophos] <technosophos@gmail.com> (lead)
-Matt Farina  [mattfarina] <matt@mattfarina.com> (lead)
-Asmir Mustafic [goetas] <goetas@lignano.it> (contributor)
-Edward Z. Yang [ezyang] <ezyang@mit.edu> (contributor)
-Geoffrey Sneddon [gsnedders] <geoffers@gmail.com> (contributor)
-Kukhar Vasily [ngreduce] <ngreduce@gmail.com> (contributor)
-Rune Christensen [MrElectronic] <mrelectronic@example.com> (contributor)
-Mišo Belica [miso-belica] <miso-belica@example.com> (contributor)
-Asmir Mustafic [goetas] <goetas@example.com> (contributor)
-KITAITI Makoto [KitaitiMakoto] <KitaitiMakoto@example.com> (contributor) 
-Jacob Floyd [cognifloyd] <cognifloyd@gmail.com> (contributor)
diff --git a/vendor/masterminds/html5/LICENSE.txt b/vendor/masterminds/html5/LICENSE.txt
deleted file mode 100644
index 3c275b5..0000000
--- a/vendor/masterminds/html5/LICENSE.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-## HTML5-PHP License
-
-Copyright (c) 2013 The Authors of HTML5-PHP
-
-Matt Butcher - mattbutcher@google.com
-Matt Farina - matt@mattfarina.com
-Asmir Mustafic - goetas@gmail.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.
-
-## HTML5Lib License
-
-Portions of this are based on html5lib's PHP version, which was a
-sub-project of html5lib. The following is the list of contributors from
-html5lib:
-
-html5lib:
-
-Copyright (c) 2006-2009 The Authors
-
-Contributors:
-James Graham - jg307@cam.ac.uk
-Anne van Kesteren - annevankesteren@gmail.com
-Lachlan Hunt - lachlan.hunt@lachy.id.au
-Matt McDonald - kanashii@kanashii.ca
-Sam Ruby - rubys@intertwingly.net
-Ian Hickson (Google) - ian@hixie.ch
-Thomas Broyer - t.broyer@ltgt.net
-Jacques Distler - distler@golem.ph.utexas.edu
-Henri Sivonen - hsivonen@iki.fi
-Adam Barth - abarth@webkit.org
-Eric Seidel - eric@webkit.org
-The Mozilla Foundation (contributions from Henri Sivonen since 2008)
-David Flanagan (Mozilla) - dflanagan@mozilla.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.
diff --git a/vendor/masterminds/html5/README.md b/vendor/masterminds/html5/README.md
deleted file mode 100644
index bbe003f..0000000
--- a/vendor/masterminds/html5/README.md
+++ /dev/null
@@ -1,253 +0,0 @@
-# HTML5-PHP
-
-The need for an HTML5 parser in PHP is clear. This project initially
-began with the seemingly abandoned `html5lib` project [original source](https://code.google.com/p/html5lib/source/checkout).
-But after some initial refactoring work, we began a new parser.
-
-- An HTML5 serializer
-- Support for PHP namespaces
-- Composer support
-- Event-based (SAX-like) parser
-- DOM tree builder
-- Interoperability with QueryPath [[in progress](https://github.com/technosophos/querypath/issues/114)]
-- Runs on **PHP** 5.3.0 or newer and **HHVM** 3.2 or newer
-
-[![Build Status](https://travis-ci.org/Masterminds/html5-php.png?branch=master)](https://travis-ci.org/Masterminds/html5-php) [![Latest Stable Version](https://poser.pugx.org/masterminds/html5/v/stable.png)](https://packagist.org/packages/masterminds/html5) [![Coverage Status](https://coveralls.io/repos/Masterminds/html5-php/badge.png?branch=master)](https://coveralls.io/r/Masterminds/html5-php?branch=master)
-
-## Installation
-
-Install HTML5-PHP using [composer](http://getcomposer.org/).
-
-To install, add `masterminds/html5` to your `composer.json` file:
-
-```
-{
-  "require" : {
-    "masterminds/html5": "2.*"
-  },
-}
-```
-
-(You may substitute `2.*` for a more specific release tag, of
-course.)
-
-From there, use the `composer install` or `composer update` commands to
-install.
-
-## Basic Usage
-
-HTML5-PHP has a high-level API and a low-level API. 
-
-Here is how you use the high-level `HTML5` library API:
-
-```php
-<?php
-// Assuming you installed from Composer:
-require "vendor/autoload.php";
-use Masterminds\HTML5;
-
-
-// An example HTML document:
-$html = <<< 'HERE'
-  <html>
-  <head>
-    <title>TEST</title>
-  </head>
-  <body id='foo'>
-    <h1>Hello World</h1>
-    <p>This is a test of the HTML5 parser.</p>
-  </body>
-  </html>
-HERE;
-
-// Parse the document. $dom is a DOMDocument.
-$html5 = new HTML5();
-$dom = $html5->loadHTML($html);
-
-// Render it as HTML5:
-print $html5->saveHTML($dom);
-
-// Or save it to a file:
-$html5->save($dom, 'out.html');
-
-?>
-```
-
-The `$dom` created by the parser is a full `DOMDocument` object. And the
-`save()` and `saveHTML()` methods will take any DOMDocument.
-
-### Options
-
-It is possible to pass in an array of configuration options when loading
-an HTML5 document.
-
-```php
-// An associative array of options
-$options = array(
-  'option_name' => 'option_value',
-);
-
-// Provide the options to the constructor
-$html5 = new HTML5($options);
-
-$dom = $html5->loadHTML($html);
-```
-
-The following options are supported:
-
-* `encode_entities` (boolean): Indicates that the serializer should aggressively
-  encode characters as entities. Without this, it only encodes the bare
-  minimum.
-* `disable_html_ns` (boolean): Prevents the parser from automatically
-  assigning the HTML5 namespace to the DOM document. This is for
-  non-namespace aware DOM tools.
-* `target_document` (\DOMDocument): A DOM document that will be used as the
-  destination for the parsed nodes.
-* `implicit_namespaces` (array): An assoc array of namespaces that should be
-  used by the parser. Name is tag prefix, value is NS URI.
-
-## The Low-Level API
-
-This library provides the following low-level APIs that you can use to
-create more customized HTML5 tools:
-
-- An `InputStream` abstraction that can work with different kinds of
-input source (not just files and strings).
-- A SAX-like event-based parser that you can hook into for special kinds
-of parsing.
-- A flexible error-reporting mechanism that can be tuned to document
-syntax checking.
-- A DOM implementation that uses PHP's built-in DOM library.
-
-The unit tests exercise each piece of the API, and every public function
-is well-documented.
-
-### Parser Design
-
-The parser is designed as follows:
-
-- The `InputStream` portion handles direct I/O.
-- The `Scanner` handles scanning on behalf of the parser.
-- The `Tokenizer` requests data off of the scanner, parses it, clasifies
-it, and sends it to an `EventHandler`. It is a *recursive descent parser.*
-- The `EventHandler` receives notifications and data for each specific
-semantic event that occurs during tokenization.
-- The `DOMBuilder` is an `EventHandler` that listens for tokenizing
-events and builds a document tree (`DOMDocument`) based on the events.
-
-### Serializer Design
-
-The serializer takes a data structure (the `DOMDocument`) and transforms
-it into a character representation -- an HTML5 document.
-
-The serializer is broken into three parts:
-
-- The `OutputRules` contain the rules to turn DOM elements into strings. The
-rules are an implementation of the interface `RulesInterface` allowing for
-different rule sets to be used. 
-- The `Traverser`, which is a special-purpose tree walker. It visits
-each node node in the tree and uses the `OutputRules` to transform the node
-into a string.
-- `HTML5` manages the `Traverser` and stores the resultant data
-in the correct place.
-
-The serializer (`save()`, `saveHTML()`) follows the 
-[section 8.9 of the HTML 5.0 spec](http://www.w3.org/TR/2012/CR-html5-20121217/syntax.html#serializing-html-fragments).
-So tags are serialized according to these rules:
-
-- A tag with children: &lt;foo&gt;CHILDREN&lt;/foo&gt;
-- A tag that cannot have content: &lt;foo&gt; (no closing tag)
-- A tag that could have content, but doesn't: &lt;foo&gt;&lt;/foo&gt;
-
-## Known Issues (Or, Things We Designed Against the Spec)
-
-Please check the issue queue for a full list, but the following are
-issues known issues that are not presently on the roadmap:
-
-- Namespaces: HTML5 only [supports a selected list of namespaces](http://www.w3.org/TR/html5/infrastructure.html#namespaces)
-  and they do not operate in the same way as XML namespaces. A `:` has no special
-  meaning. 
-  By default the parser does not support XML style namespaces via `:`; 
-  to enable the XML namespaces see the  [XML Namespaces section](#xml-namespaces)
-- Scripts: This parser does not contain a JavaScript or a CSS
-  interpreter. While one may be supplied, not all features will be
-  supported.
-- Rentrance: The current parser is not re-entrant. (Thus you can't pause
-  the parser to modify the HTML string mid-parse.)
-- Validation: The current tree builder is **not** a validating parser.
-  While it will correct some HTML, it does not check that the HTML
-  conforms to the standard. (Should you wish, you can build a validating
-  parser by extending DOMTree or building your own EventHandler
-  implementation.)
-  * There is limited support for insertion modes.
-  * Some autocorrection is done automatically.
-  * Per the spec, many legacy tags are admitted and correctly handled,
-    even though they are technically not part of HTML5.
-- Attribute names and values: Due to the implementation details of the
-  PHP implementation of DOM, attribute names that do not follow the 
-  XML 1.0 standard are not inserted into the DOM. (Effectively, they
-  are ignored.) If you've got a clever fix for this, jump in!
-- Processor Instructions: The HTML5 spec does not allow processor
-  instructions. We do. Since this is a server-side library, we think
-  this is useful. And that means, dear reader, that in some cases you
-  can parse the HTML from a mixed PHP/HTML document. This, however, 
-  is an incidental feature, not a core feature.
-- HTML manifests: Unsupported.
-- PLAINTEXT: Unsupported.
-- Adoption Agency Algorithm: Not yet implemented. (8.2.5.4.7)
-
-##XML Namespaces
-
-To use XML style namespaces you have to configure well the main `HTML5` instance.
-
-```php
-use Masterminds\HTML5;
-$html = new HTML5(array(
-    "xmlNamespaces" => true
-));
-
-$dom = $html->loadHTML('<t:tag xmlns:t="http://www.example.com"/>');
-
-$dom->documentElement->namespaceURI; // http://www.example.com
-
-```
-
-You can also add some default prefixes that will not require the namespace declaration,
-but it's elements will be namespaced.
-
-```php
-use Masterminds\HTML5;
-$html = new HTML5(array(
-    "implicitNamespaces"=>array(
-        "t"=>"http://www.example.com"
-    )
-));
-
-$dom = $html->loadHTML('<t:tag/>');
-
-$dom->documentElement->namespaceURI; // http://www.example.com
-
-```
-
-## Thanks to...
-
-The dedicated (and patient) contributors of patches small and large,
-who have already made this library better.See the CREDITS file for
-a list of contributors.
-
-We owe a huge debt of gratitude to the original authors of html5lib.
-
-While not much of the orignal parser remains, we learned a lot from
-reading the html5lib library. And some pieces remain here. In
-particular, much of the UTF-8 and Unicode handling is derived from the
-html5lib project.
-
-## License
-
-This software is released under the MIT license. The original html5lib
-library was also released under the MIT license.
-
-See LICENSE.txt
-
-Certain files contain copyright assertions by specific individuals
-involved with html5lib. Those have been retained where appropriate.
diff --git a/vendor/masterminds/html5/RELEASE.md b/vendor/masterminds/html5/RELEASE.md
deleted file mode 100644
index e3d70d3..0000000
--- a/vendor/masterminds/html5/RELEASE.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# Release Notes
-2.1.2 (2015-06-07)
-- #82: Support for PHP7
-- #84: Improved boolean attribute handling 
-
-2.1.1 (2015-03-23)
-- #78: Fixes bug where unmatched entity like string drops everything after &.
-
-2.1.0 (2015-02-01)
-- #74: Added `disable_html_ns` and `target_doc` dom parsing options
-- Unified option names
-- #73: Fixed alphabet, &szlig; now can be detected
-- #75 and #76: Allow whitespace in RCDATA tags
-- #77: Fixed parsing blunder for json embeds
-- #72: Add options to HTML methods
-
-2.0.2 (2014-12-17)
-- #50: empty document handling
-- #63: tags with strange capitalization
-- #65: dashes and underscores as allowed characters in tag names
-- #68: Fixed issue with non-inline elements inside inline containers
-
-2.0.1 (2014-09-23)
-- #59: Fixed issue parsing some fragments.
-- #56: Incorrectly saw 0 as empty string
-- Sami as new documentation generator
-
-2.0.0 (2014-07-28)
-- #53: Improved boolean attributes handling
-- #52: Facebook HHVM compatibility
-- #48: Adopted PSR-2 as coding standard
-- #47: Moved everything to Masterminds namespace
-- #45: Added custom namespaces
-- #44: Added support to XML-style namespaces
-- #37: Refactored HTML5 class removing static methods
-
-1.0.5 (2014-06-10)
-- #38: Set the dev-master branch as the 1.0.x branch for composer (goetas)
-- #34: Tests use PSR-4 for autoloading. (goetas)
-- #40, #41: Fix entity handling in RCDATA sections. (KitaitiMakoto)
-- #32: Fixed issue where wharacter references were being incorrectly encoded in style tags.
-
-1.0.4 (2014-04-29)
-- #30/#31 Don't throw an exception for invalid tag names.
-
-1.0.3 (2014-02-28)
-- #23 and #29: Ignore attributes with illegal chars in name for the PHP DOM.
-
-1.0.2 (2014-02-12)
-- #23: Handle missing tag close in attribute list.
-- #25: Fixed text escaping in the serializer (HTML% 8.3).
-- #27: Fixed tests on Windows: changed "\n" -> PHP_EOL.
-- #28: Fixed infinite loop for char "&" in unquoted attribute in parser.
-- #26: Updated tag name case handling to deal with uppercase usage.
-- #24: Newlines and tabs are allowed inside quoted attributes (HTML5 8.2.4).
-- Fixed Travis CI testing.
-
-1.0.1 (2013-11-07)
-- CDATA encoding is improved. (Non-standard; Issue #19)
-- Some parser rules were not returning the new current element. (Issue #20)
-- Added, to the README, details on code test coverage and to packagist version.
-- Fixed processor instructions.
-- Improved test coverage and documentation coverage.
-
-1.0.0 (2013-10-02)
-- Initial release.
diff --git a/vendor/masterminds/html5/UPGRADING.md b/vendor/masterminds/html5/UPGRADING.md
deleted file mode 100644
index 76e3a19..0000000
--- a/vendor/masterminds/html5/UPGRADING.md
+++ /dev/null
@@ -1,21 +0,0 @@
-From 1.x to 2.x
-=================
-
-- All classes uses `Masterminds` namespace.
-- All public static methods has been removed from `HTML5` class and the general API to access the HTML5 functionalities has changed. 
-
-    Before:
-    
-        $dom = \HTML5::loadHTML('<html>....');
-        \HTML5::saveHTML($dom);
-        
-    After:
-
-        use Masterminds\HTML5;
-        
-        $html5 = new HTML5();
-        
-        $dom = $html5->loadHTML('<html>....');
-        echo $html5->saveHTML($dom);
-
-
diff --git a/vendor/masterminds/html5/bin/entities.php b/vendor/masterminds/html5/bin/entities.php
deleted file mode 100644
index 0fbd6ec..0000000
--- a/vendor/masterminds/html5/bin/entities.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * Fetch the entities.json file and convert to PHP datastructure.
- */
-
-// The URL to the official entities JSON file.
-$ENTITIES_URL = 'http://www.w3.org/TR/2012/CR-html5-20121217/entities.json';
-
-$payload = file_get_contents($ENTITIES_URL);
-$json = json_decode($payload);
-
-$table = array();
-foreach ($json as $name => $obj) {
-  $sname = substr($name, 1, -1);
-  $table[$sname] = $obj->characters;
-}
-
-print '<?php
-namespace Masterminds\\HTML5;
-/** Entity lookup tables. This class is automatically generated. */
-class Entities {
-  public static $byName = ';
-var_export($table);
-print ';
-}' . PHP_EOL;
-//print serialize($table);
diff --git a/vendor/masterminds/html5/composer.json b/vendor/masterminds/html5/composer.json
deleted file mode 100644
index 9101239..0000000
--- a/vendor/masterminds/html5/composer.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
-    "name": "masterminds/html5",
-    "description": "An HTML5 parser and serializer.",
-    "type": "library",
-    "homepage": "http://masterminds.github.io/html5-php",
-    "license": "MIT",
-    "keywords": ["xml", "html", "html5", "dom", "parser", "serializer", "querypath"],
-    "authors": [
-        {
-            "name": "Matt Butcher",
-            "email": "technosophos@gmail.com"
-        },
-        {
-            "name": "Matt Farina",
-            "email": "matt@mattfarina.com"
-        },
-        {
-            "name": "Asmir Mustafic",
-            "email": "goetas@gmail.com"
-        }
-    ],
-    "require" : {
-        "ext-libxml" : "*",
-        "php" : ">=5.3.0"
-    },
-    "require-dev": {
-        "satooshi/php-coveralls": "0.6.*",
-        "phpunit/phpunit" : "4.*",
-        "sami/sami": "~2.0"
-    },
-    "autoload": {
-        "psr-4": {"Masterminds\\": "src"}
-    },
-    "autoload-dev": {
-        "psr-4": {"Masterminds\\HTML5\\Tests\\": "test/HTML5"}
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.1-dev"
-        }
-    }
-}
diff --git a/vendor/masterminds/html5/example.php b/vendor/masterminds/html5/example.php
deleted file mode 100644
index 5e3b25f..0000000
--- a/vendor/masterminds/html5/example.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-require "vendor/autoload.php";
-use Masterminds\HTML5;
-
-
-$html = <<< 'HERE'
-  <html>
-  <head>
-  <title>TEST</title>
-  <script language="javascript">
-  if (2 > 1) { alert("Math wins."); }
-  </script>
-  </head>
-  <body id='foo'>
-  <!-- This space intentionally left blank. -->
-  <section class="section-a pretty" id="bar1">
-  <h1>Hello World</h1><p>This is a test of the HTML5 parser.</p>
-  <hr>
-  &amp; Nobody nowhere.
-  </section>
-  <test xmlns:foo="http://example.com/foo">TEST</test>
-  <![CDATA[Because we can.]]>
-  &copy;
-  </body></html>
-HERE;
-
-$html5 = new HTML5();
-$dom = $html5->loadHTML($html);
-
-print "Converting to HTML 5\n";
-
-$html5->save($dom, fopen("php://stdin", 'w'));
diff --git a/vendor/masterminds/html5/phpunit.xml.dist b/vendor/masterminds/html5/phpunit.xml.dist
deleted file mode 100644
index c344880..0000000
--- a/vendor/masterminds/html5/phpunit.xml.dist
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit colors="true" bootstrap="vendor/autoload.php">
-    <testsuites>
-        <testsuite name="PHPUnit">
-          <directory>test/HTML5/</directory>
-        </testsuite>
-    </testsuites>
-    <filter>
-        <blacklist>
-            <file>systemlib.phpreflection_hni</file>
-            <file>src/HTML5/Parser/InputStream.php</file>
-            <file>src/HTML5/Serializer/RulesInterface.php</file>
-            <file>src/HTML5/Entities.php</file>
-            <file>src/HTML5/Serializer/HTML5Entities.php</file> 
-        </blacklist>
-    </filter>
-    <logging>
-        <log
-            type="coverage-html"
-            target="build/coverage"
-            charset="UTF-8"
-            yui="true"
-            highlight="true"
-            lowUpperBound="35"
-            highLowerBound="70"
-            showUncoveredFiles="true"
-            />
-          <log type="coverage-clover" target="build/logs/clover.xml"/>
-    </logging>
-</phpunit>
diff --git a/vendor/masterminds/html5/sami.php b/vendor/masterminds/html5/sami.php
deleted file mode 100644
index d0dd80b..0000000
--- a/vendor/masterminds/html5/sami.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-use Sami\Sami;
-
-return new Sami(__DIR__ . '/src' , array(
-    'title'                => 'HTML5-PHP API',
-    'build_dir'            => __DIR__.'/build/apidoc',
-    'cache_dir'            => __DIR__.'/build/sami-cache',
-    'default_opened_level' => 1,
-));
\ No newline at end of file
diff --git a/vendor/masterminds/html5/src/HTML5.php b/vendor/masterminds/html5/src/HTML5.php
deleted file mode 100644
index 1c46c2b..0000000
--- a/vendor/masterminds/html5/src/HTML5.php
+++ /dev/null
@@ -1,250 +0,0 @@
-<?php
-namespace Masterminds;
-
-use Masterminds\HTML5\Parser\FileInputStream;
-use Masterminds\HTML5\Parser\StringInputStream;
-use Masterminds\HTML5\Parser\DOMTreeBuilder;
-use Masterminds\HTML5\Parser\Scanner;
-use Masterminds\HTML5\Parser\Tokenizer;
-use Masterminds\HTML5\Serializer\OutputRules;
-use Masterminds\HTML5\Serializer\Traverser;
-
-/**
- * This class offers convenience methods for parsing and serializing HTML5.
- * It is roughly designed to mirror the \DOMDocument class that is
- * provided with most versions of PHP.
- *
- * EXPERIMENTAL. This may change or be completely replaced.
- */
-class HTML5
-{
-
-    /**
-     * Global options for the parser and serializer.
-     *
-     * @var array
-     */
-    protected $options = array(
-        // If the serializer should encode all entities.
-        'encode_entities' => false
-    );
-
-    protected $errors = array();
-
-    public function __construct(array $options = array())
-    {
-        $this->options = array_merge($this->options, $options);
-    }
-
-    /**
-     * Get the default options.
-     *
-     * @return array The default options.
-     */
-    public function getOptions()
-    {
-        return $this->options;
-    }
-
-    /**
-     * Load and parse an HTML file.
-     *
-     * This will apply the HTML5 parser, which is tolerant of many
-     * varieties of HTML, including XHTML 1, HTML 4, and well-formed HTML
-     * 3. Note that in these cases, not all of the old data will be
-     * preserved. For example, XHTML's XML declaration will be removed.
-     *
-     * The rules governing parsing are set out in the HTML 5 spec.
-     *
-     * @param string $file
-     *            The path to the file to parse. If this is a resource, it is
-     *            assumed to be an open stream whose pointer is set to the first
-     *            byte of input.
-     * @param array $options
-     *            Configuration options when parsing the HTML
-     * @return \DOMDocument A DOM document. These object type is defined by the libxml
-     *         library, and should have been included with your version of PHP.
-     */
-    public function load($file, array $options = array())
-    {
-        // Handle the case where file is a resource.
-        if (is_resource($file)) {
-            // FIXME: We need a StreamInputStream class.
-            return $this->loadHTML(stream_get_contents($file), $options);
-        }
-
-        $input = new FileInputStream($file);
-
-        return $this->parse($input, $options);
-    }
-
-    /**
-     * Parse a HTML Document from a string.
-     *
-     * Take a string of HTML 5 (or earlier) and parse it into a
-     * DOMDocument.
-     *
-     * @param string $string
-     *            A html5 document as a string.
-     * @param array $options
-     *            Configuration options when parsing the HTML
-     * @return \DOMDocument A DOM document. DOM is part of libxml, which is included with
-     *         almost all distribtions of PHP.
-     */
-    public function loadHTML($string, array $options = array())
-    {
-        $input = new StringInputStream($string);
-
-        return $this->parse($input, $options);
-    }
-
-    /**
-     * Convenience function to load an HTML file.
-     *
-     * This is here to provide backwards compatibility with the
-     * PHP DOM implementation. It simply calls load().
-     *
-     * @param string $file
-     *            The path to the file to parse. If this is a resource, it is
-     *            assumed to be an open stream whose pointer is set to the first
-     *            byte of input.
-     * @param array $options
-     *            Configuration options when parsing the HTML
-     *
-     * @return \DOMDocument A DOM document. These object type is defined by the libxml
-     *         library, and should have been included with your version of PHP.
-     */
-    public function loadHTMLFile($file, array $options = array())
-    {
-        return $this->load($file, $options);
-    }
-
-    /**
-     * Parse a HTML fragment from a string.
-     *
-     * @param string $string
-     *            The html5 fragment as a string.
-     * @param array $options
-     *            Configuration options when parsing the HTML
-     *
-     * @return \DOMDocumentFragment A DOM fragment. The DOM is part of libxml, which is included with
-     *         almost all distributions of PHP.
-     */
-    public function loadHTMLFragment($string, array $options = array())
-    {
-        $input = new StringInputStream($string);
-
-        return $this->parseFragment($input, $options);
-    }
-
-    /**
-     * Return all errors encountered into parsing phase
-     *
-     * @return array
-     */
-    public function getErrors()
-    {
-        return $this->errors;
-    }
-
-    /**
-     * Return true it some errors were encountered into parsing phase
-     *
-     * @return bool
-     */
-    public function hasErrors()
-    {
-        return count($this->errors) > 0;
-    }
-
-    /**
-     * Parse an input stream.
-     *
-     * Lower-level loading function. This requires an input stream instead
-     * of a string, file, or resource.
-     */
-    public function parse(\Masterminds\HTML5\Parser\InputStream $input, array $options = array())
-    {
-        $this->errors = array();
-        $events = new DOMTreeBuilder(false, array_merge($this->getOptions(), $options));
-        $scanner = new Scanner($input);
-        $parser = new Tokenizer($scanner, $events);
-
-        $parser->parse();
-        $this->errors = $events->getErrors();
-
-        return $events->document();
-    }
-
-    /**
-     * Parse an input stream where the stream is a fragment.
-     *
-     * Lower-level loading function. This requires an input stream instead
-     * of a string, file, or resource.
-     */
-    public function parseFragment(\Masterminds\HTML5\Parser\InputStream $input, array $options = array())
-    {
-        $events = new DOMTreeBuilder(true, array_merge($this->getOptions(), $options));
-        $scanner = new Scanner($input);
-        $parser = new Tokenizer($scanner, $events);
-
-        $parser->parse();
-        $this->errors = $events->getErrors();
-
-        return $events->fragment();
-    }
-
-    /**
-     * Save a DOM into a given file as HTML5.
-     *
-     * @param mixed $dom
-     *            The DOM to be serialized.
-     * @param string $file
-     *            The filename to be written.
-     * @param array $options
-     *            Configuration options when serializing the DOM. These include:
-     *            - encode_entities: Text written to the output is escaped by default and not all
-     *            entities are encoded. If this is set to true all entities will be encoded.
-     *            Defaults to false.
-     */
-    public function save($dom, $file, $options = array())
-    {
-        $close = true;
-        if (is_resource($file)) {
-            $stream = $file;
-            $close = false;
-        } else {
-            $stream = fopen($file, 'w');
-        }
-        $options = array_merge($this->getOptions(), $options);
-        $rules = new OutputRules($stream, $options);
-        $trav = new Traverser($dom, $stream, $rules, $options);
-
-        $trav->walk();
-
-        if ($close) {
-            fclose($stream);
-        }
-    }
-
-    /**
-     * Convert a DOM into an HTML5 string.
-     *
-     * @param mixed $dom
-     *            The DOM to be serialized.
-     * @param array $options
-     *            Configuration options when serializing the DOM. These include:
-     *            - encode_entities: Text written to the output is escaped by default and not all
-     *            entities are encoded. If this is set to true all entities will be encoded.
-     *            Defaults to false.
-     *
-     * @return string A HTML5 documented generated from the DOM.
-     */
-    public function saveHTML($dom, $options = array())
-    {
-        $stream = fopen('php://temp', 'w');
-        $this->save($dom, $stream, array_merge($this->getOptions(), $options));
-
-        return stream_get_contents($stream, - 1, 0);
-    }
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Elements.php b/vendor/masterminds/html5/src/HTML5/Elements.php
deleted file mode 100644
index 6cf72aa..0000000
--- a/vendor/masterminds/html5/src/HTML5/Elements.php
+++ /dev/null
@@ -1,634 +0,0 @@
-<?php
-/**
- * Provide general element functions.
- */
-namespace Masterminds\HTML5;
-
-/**
- * This class provides general information about HTML5 elements,
- * including syntactic and semantic issues.
- * Parsers and serializers can
- * use this class as a reference point for information about the rules
- * of various HTML5 elements.
- *
- * @todo consider using a bitmask table lookup. There is enough overlap in
- *       naming that this could significantly shrink the size and maybe make it
- *       faster. See the Go teams implementation at https://code.google.com/p/go/source/browse/html/atom.
- */
-class Elements
-{
-
-    /**
-     * Indicates an element is described in the specification.
-     */
-    const KNOWN_ELEMENT = 1;
-
-    // From section 8.1.2: "script", "style"
-    // From 8.2.5.4.7 ("in body" insertion mode): "noembed", "noscript"
-    // From 8.4 "style", "xmp", "iframe", "noembed", "noframes"
-    /**
-     * Indicates the contained text should be processed as raw text.
-     */
-    const TEXT_RAW = 2;
-
-    // From section 8.1.2: "textarea", "title"
-    /**
-     * Indicates the contained text should be processed as RCDATA.
-     */
-    const TEXT_RCDATA = 4;
-
-    /**
-     * Indicates the tag cannot have content.
-     */
-    const VOID_TAG = 8;
-
-    // "address", "article", "aside", "blockquote", "center", "details", "dialog", "dir", "div", "dl",
-    // "fieldset", "figcaption", "figure", "footer", "header", "hgroup", "menu",
-    // "nav", "ol", "p", "section", "summary", "ul"
-    // "h1", "h2", "h3", "h4", "h5", "h6"
-    // "pre", "listing"
-    // "form"
-    // "plaintext"
-    /**
-     * Indicates that if a previous event is for a P tag, that element
-     * should be considered closed.
-     */
-    const AUTOCLOSE_P = 16;
-
-    /**
-     * Indicates that the text inside is plaintext (pre).
-     */
-    const TEXT_PLAINTEXT = 32;
-
-    // See https://developer.mozilla.org/en-US/docs/HTML/Block-level_elements
-    /**
-     * Indicates that the tag is a block.
-     */
-    const BLOCK_TAG = 64;
-
-    /**
-     * Indicates that the tag allows only inline elements as child nodes.
-     */
-    const BLOCK_ONLY_INLINE = 128;
-
-    /**
-     * The HTML5 elements as defined in http://dev.w3.org/html5/markup/elements.html.
-     *
-     * @var array
-     */
-    public static $html5 = array(
-        "a" => 1,
-        "abbr" => 1,
-        "address" => 89, // NORMAL | VOID_TAG | AUTOCLOSE_P | BLOCK_TAG
-        "area" => 9, // NORMAL | VOID_TAG
-        "article" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "aside" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "audio" => 65, // NORMAL | BLOCK_TAG
-        "b" => 1,
-        "base" => 9, // NORMAL | VOID_TAG
-        "bdi" => 1,
-        "bdo" => 1,
-        "blockquote" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "body" => 1,
-        "br" => 9, // NORMAL | VOID_TAG
-        "button" => 1,
-        "canvas" => 65, // NORMAL | BLOCK_TAG
-        "caption" => 1,
-        "cite" => 1,
-        "code" => 1,
-        "col" => 9, // NORMAL | VOID_TAG
-        "colgroup" => 1,
-        "command" => 9, // NORMAL | VOID_TAG
-                        // "data" => 1, // This is highly experimental and only part of the whatwg spec (not w3c). See https://developer.mozilla.org/en-US/docs/HTML/Element/data
-        "datalist" => 1,
-        "dd" => 65, // NORMAL | BLOCK_TAG
-        "del" => 1,
-        "details" => 17, // NORMAL | AUTOCLOSE_P,
-        "dfn" => 1,
-        "dialog" => 17, // NORMAL | AUTOCLOSE_P,
-        "div" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "dl" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "dt" => 1,
-        "em" => 1,
-        "embed" => 9, // NORMAL | VOID_TAG
-        "fieldset" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "figcaption" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "figure" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "footer" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "form" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "h1" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "h2" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "h3" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "h4" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "h5" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "h6" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "head" => 1,
-        "header" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "hgroup" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "hr" => 73, // NORMAL | VOID_TAG
-        "html" => 1,
-        "i" => 1,
-        "iframe" => 3, // NORMAL | TEXT_RAW
-        "img" => 9, // NORMAL | VOID_TAG
-        "input" => 9, // NORMAL | VOID_TAG
-        "kbd" => 1,
-        "ins" => 1,
-        "keygen" => 9, // NORMAL | VOID_TAG
-        "label" => 1,
-        "legend" => 1,
-        "li" => 1,
-        "link" => 9, // NORMAL | VOID_TAG
-        "map" => 1,
-        "mark" => 1,
-        "menu" => 17, // NORMAL | AUTOCLOSE_P,
-        "meta" => 9, // NORMAL | VOID_TAG
-        "meter" => 1,
-        "nav" => 17, // NORMAL | AUTOCLOSE_P,
-        "noscript" => 67, // NORMAL | TEXT_RAW | BLOCK_TAG
-        "object" => 1,
-        "ol" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "optgroup" => 1,
-        "option" => 1,
-        "output" => 65, // NORMAL | BLOCK_TAG
-        "p" => 209, // NORMAL | AUTOCLOSE_P | BLOCK_TAG | BLOCK_ONLY_INLINE
-        "param" => 9, // NORMAL | VOID_TAG
-        "pre" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "progress" => 1,
-        "q" => 1,
-        "rp" => 1,
-        "rt" => 1,
-        "ruby" => 1,
-        "s" => 1,
-        "samp" => 1,
-        "script" => 3, // NORMAL | TEXT_RAW
-        "section" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "select" => 1,
-        "small" => 1,
-        "source" => 9, // NORMAL | VOID_TAG
-        "span" => 1,
-        "strong" => 1,
-        "style" => 3, // NORMAL | TEXT_RAW
-        "sub" => 1,
-        "summary" => 17, // NORMAL | AUTOCLOSE_P,
-        "sup" => 1,
-        "table" => 65, // NORMAL | BLOCK_TAG
-        "tbody" => 1,
-        "td" => 1,
-        "textarea" => 5, // NORMAL | TEXT_RCDATA
-        "tfoot" => 65, // NORMAL | BLOCK_TAG
-        "th" => 1,
-        "thead" => 1,
-        "time" => 1,
-        "title" => 5, // NORMAL | TEXT_RCDATA
-        "tr" => 1,
-        "track" => 9, // NORMAL | VOID_TAG
-        "u" => 1,
-        "ul" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
-        "var" => 1,
-        "video" => 65, // NORMAL | BLOCK_TAG
-        "wbr" => 9, // NORMAL | VOID_TAG
-
-        // Legacy?
-        'basefont' => 8, // VOID_TAG
-        'bgsound' => 8, // VOID_TAG
-        'noframes' => 2, // RAW_TEXT
-        'frame' => 9, // NORMAL | VOID_TAG
-        'frameset' => 1,
-        'center' => 16,
-        'dir' => 16,
-        'listing' => 16, // AUTOCLOSE_P
-        'plaintext' => 48, // AUTOCLOSE_P | TEXT_PLAINTEXT
-        'applet' => 0,
-        'marquee' => 0,
-        'isindex' => 8, // VOID_TAG
-        'xmp' => 20, // AUTOCLOSE_P | VOID_TAG | RAW_TEXT
-        'noembed' => 2 // RAW_TEXT
-        );
-
-    /**
-     * The MathML elements.
-     * See http://www.w3.org/wiki/MathML/Elements.
-     *
-     * In our case we are only concerned with presentation MathML and not content
-     * MathML. There is a nice list of this subset at https://developer.mozilla.org/en-US/docs/MathML/Element.
-     *
-     * @var array
-     */
-    public static $mathml = array(
-        "maction" => 1,
-        "maligngroup" => 1,
-        "malignmark" => 1,
-        "math" => 1,
-        "menclose" => 1,
-        "merror" => 1,
-        "mfenced" => 1,
-        "mfrac" => 1,
-        "mglyph" => 1,
-        "mi" => 1,
-        "mlabeledtr" => 1,
-        "mlongdiv" => 1,
-        "mmultiscripts" => 1,
-        "mn" => 1,
-        "mo" => 1,
-        "mover" => 1,
-        "mpadded" => 1,
-        "mphantom" => 1,
-        "mroot" => 1,
-        "mrow" => 1,
-        "ms" => 1,
-        "mscarries" => 1,
-        "mscarry" => 1,
-        "msgroup" => 1,
-        "msline" => 1,
-        "mspace" => 1,
-        "msqrt" => 1,
-        "msrow" => 1,
-        "mstack" => 1,
-        "mstyle" => 1,
-        "msub" => 1,
-        "msup" => 1,
-        "msubsup" => 1,
-        "mtable" => 1,
-        "mtd" => 1,
-        "mtext" => 1,
-        "mtr" => 1,
-        "munder" => 1,
-        "munderover" => 1
-    );
-
-    /**
-     * The svg elements.
-     *
-     * The Mozilla documentation has a good list at https://developer.mozilla.org/en-US/docs/SVG/Element.
-     * The w3c list appears to be lacking in some areas like filter effect elements.
-     * That list can be found at http://www.w3.org/wiki/SVG/Elements.
-     *
-     * Note, FireFox appears to do a better job rendering filter effects than chrome.
-     * While they are in the spec I'm not sure how widely implemented they are.
-     *
-     * @var array
-     */
-    public static $svg = array(
-        "a" => 1,
-        "altGlyph" => 1,
-        "altGlyphDef" => 1,
-        "altGlyphItem" => 1,
-        "animate" => 1,
-        "animateColor" => 1,
-        "animateMotion" => 1,
-        "animateTransform" => 1,
-        "circle" => 1,
-        "clipPath" => 1,
-        "color-profile" => 1,
-        "cursor" => 1,
-        "defs" => 1,
-        "desc" => 1,
-        "ellipse" => 1,
-        "feBlend" => 1,
-        "feColorMatrix" => 1,
-        "feComponentTransfer" => 1,
-        "feComposite" => 1,
-        "feConvolveMatrix" => 1,
-        "feDiffuseLighting" => 1,
-        "feDisplacementMap" => 1,
-        "feDistantLight" => 1,
-        "feFlood" => 1,
-        "feFuncA" => 1,
-        "feFuncB" => 1,
-        "feFuncG" => 1,
-        "feFuncR" => 1,
-        "feGaussianBlur" => 1,
-        "feImage" => 1,
-        "feMerge" => 1,
-        "feMergeNode" => 1,
-        "feMorphology" => 1,
-        "feOffset" => 1,
-        "fePointLight" => 1,
-        "feSpecularLighting" => 1,
-        "feSpotLight" => 1,
-        "feTile" => 1,
-        "feTurbulence" => 1,
-        "filter" => 1,
-        "font" => 1,
-        "font-face" => 1,
-        "font-face-format" => 1,
-        "font-face-name" => 1,
-        "font-face-src" => 1,
-        "font-face-uri" => 1,
-        "foreignObject" => 1,
-        "g" => 1,
-        "glyph" => 1,
-        "glyphRef" => 1,
-        "hkern" => 1,
-        "image" => 1,
-        "line" => 1,
-        "linearGradient" => 1,
-        "marker" => 1,
-        "mask" => 1,
-        "metadata" => 1,
-        "missing-glyph" => 1,
-        "mpath" => 1,
-        "path" => 1,
-        "pattern" => 1,
-        "polygon" => 1,
-        "polyline" => 1,
-        "radialGradient" => 1,
-        "rect" => 1,
-        "script" => 3, // NORMAL | RAW_TEXT
-        "set" => 1,
-        "stop" => 1,
-        "style" => 3, // NORMAL | RAW_TEXT
-        "svg" => 1,
-        "switch" => 1,
-        "symbol" => 1,
-        "text" => 1,
-        "textPath" => 1,
-        "title" => 1,
-        "tref" => 1,
-        "tspan" => 1,
-        "use" => 1,
-        "view" => 1,
-        "vkern" => 1
-    );
-
-    /**
-     * Some attributes in SVG are case sensetitive.
-     *
-     * This map contains key/value pairs with the key as the lowercase attribute
-     * name and the value with the correct casing.
-     */
-    public static $svgCaseSensitiveAttributeMap = array(
-        'attributename' => 'attributeName',
-        'attributetype' => 'attributeType',
-        'basefrequency' => 'baseFrequency',
-        'baseprofile' => 'baseProfile',
-        'calcmode' => 'calcMode',
-        'clippathunits' => 'clipPathUnits',
-        'contentscripttype' => 'contentScriptType',
-        'contentstyletype' => 'contentStyleType',
-        'diffuseconstant' => 'diffuseConstant',
-        'edgemode' => 'edgeMode',
-        'externalresourcesrequired' => 'externalResourcesRequired',
-        'filterres' => 'filterRes',
-        'filterunits' => 'filterUnits',
-        'glyphref' => 'glyphRef',
-        'gradienttransform' => 'gradientTransform',
-        'gradientunits' => 'gradientUnits',
-        'kernelmatrix' => 'kernelMatrix',
-        'kernelunitlength' => 'kernelUnitLength',
-        'keypoints' => 'keyPoints',
-        'keysplines' => 'keySplines',
-        'keytimes' => 'keyTimes',
-        'lengthadjust' => 'lengthAdjust',
-        'limitingconeangle' => 'limitingConeAngle',
-        'markerheight' => 'markerHeight',
-        'markerunits' => 'markerUnits',
-        'markerwidth' => 'markerWidth',
-        'maskcontentunits' => 'maskContentUnits',
-        'maskunits' => 'maskUnits',
-        'numoctaves' => 'numOctaves',
-        'pathlength' => 'pathLength',
-        'patterncontentunits' => 'patternContentUnits',
-        'patterntransform' => 'patternTransform',
-        'patternunits' => 'patternUnits',
-        'pointsatx' => 'pointsAtX',
-        'pointsaty' => 'pointsAtY',
-        'pointsatz' => 'pointsAtZ',
-        'preservealpha' => 'preserveAlpha',
-        'preserveaspectratio' => 'preserveAspectRatio',
-        'primitiveunits' => 'primitiveUnits',
-        'refx' => 'refX',
-        'refy' => 'refY',
-        'repeatcount' => 'repeatCount',
-        'repeatdur' => 'repeatDur',
-        'requiredextensions' => 'requiredExtensions',
-        'requiredfeatures' => 'requiredFeatures',
-        'specularconstant' => 'specularConstant',
-        'specularexponent' => 'specularExponent',
-        'spreadmethod' => 'spreadMethod',
-        'startoffset' => 'startOffset',
-        'stddeviation' => 'stdDeviation',
-        'stitchtiles' => 'stitchTiles',
-        'surfacescale' => 'surfaceScale',
-        'systemlanguage' => 'systemLanguage',
-        'tablevalues' => 'tableValues',
-        'targetx' => 'targetX',
-        'targety' => 'targetY',
-        'textlength' => 'textLength',
-        'viewbox' => 'viewBox',
-        'viewtarget' => 'viewTarget',
-        'xchannelselector' => 'xChannelSelector',
-        'ychannelselector' => 'yChannelSelector',
-        'zoomandpan' => 'zoomAndPan'
-    );
-
-    /**
-     * Some SVG elements are case sensetitive.
-     * This map contains these.
-     *
-     * The map contains key/value store of the name is lowercase as the keys and
-     * the correct casing as the value.
-     */
-    public static $svgCaseSensitiveElementMap = array(
-        'altglyph' => 'altGlyph',
-        'altglyphdef' => 'altGlyphDef',
-        'altglyphitem' => 'altGlyphItem',
-        'animatecolor' => 'animateColor',
-        'animatemotion' => 'animateMotion',
-        'animatetransform' => 'animateTransform',
-        'clippath' => 'clipPath',
-        'feblend' => 'feBlend',
-        'fecolormatrix' => 'feColorMatrix',
-        'fecomponenttransfer' => 'feComponentTransfer',
-        'fecomposite' => 'feComposite',
-        'feconvolvematrix' => 'feConvolveMatrix',
-        'fediffuselighting' => 'feDiffuseLighting',
-        'fedisplacementmap' => 'feDisplacementMap',
-        'fedistantlight' => 'feDistantLight',
-        'feflood' => 'feFlood',
-        'fefunca' => 'feFuncA',
-        'fefuncb' => 'feFuncB',
-        'fefuncg' => 'feFuncG',
-        'fefuncr' => 'feFuncR',
-        'fegaussianblur' => 'feGaussianBlur',
-        'feimage' => 'feImage',
-        'femerge' => 'feMerge',
-        'femergenode' => 'feMergeNode',
-        'femorphology' => 'feMorphology',
-        'feoffset' => 'feOffset',
-        'fepointlight' => 'fePointLight',
-        'fespecularlighting' => 'feSpecularLighting',
-        'fespotlight' => 'feSpotLight',
-        'fetile' => 'feTile',
-        'feturbulence' => 'feTurbulence',
-        'foreignobject' => 'foreignObject',
-        'glyphref' => 'glyphRef',
-        'lineargradient' => 'linearGradient',
-        'radialgradient' => 'radialGradient',
-        'textpath' => 'textPath'
-    );
-
-    /**
-     * Check whether the given element meets the given criterion.
-     *
-     * Example:
-     *
-     * Elements::isA('script', Elements::TEXT_RAW); // Returns true.
-     *
-     * Elements::isA('script', Elements::TEXT_RCDATA); // Returns false.
-     *
-     * @param string $name
-     *            The element name.
-     * @param int $mask
-     *            One of the constants on this class.
-     * @return boolean true if the element matches the mask, false otherwise.
-     */
-    public static function isA($name, $mask)
-    {
-        if (! static::isElement($name)) {
-            return false;
-        }
-
-        return (static::element($name) & $mask) == $mask;
-    }
-
-    /**
-     * Test if an element is a valid html5 element.
-     *
-     * @param string $name
-     *            The name of the element.
-     *
-     * @return bool True if a html5 element and false otherwise.
-     */
-    public static function isHtml5Element($name)
-    {
-        // html5 element names are case insensetitive. Forcing lowercase for the check.
-        // Do we need this check or will all data passed here already be lowercase?
-        return isset(static::$html5[strtolower($name)]);
-    }
-
-    /**
-     * Test if an element name is a valid MathML presentation element.
-     *
-     * @param string $name
-     *            The name of the element.
-     *
-     * @return bool True if a MathML name and false otherwise.
-     */
-    public static function isMathMLElement($name)
-    {
-        // MathML is case-sensetitive unlike html5 elements.
-        return isset(static::$mathml[$name]);
-    }
-
-    /**
-     * Test if an element is a valid SVG element.
-     *
-     * @param string $name
-     *            The name of the element.
-     *
-     * @return boolean True if a SVG element and false otherise.
-     */
-    public static function isSvgElement($name)
-    {
-        // SVG is case-sensetitive unlike html5 elements.
-        return isset(static::$svg[$name]);
-    }
-
-    /**
-     * Is an element name valid in an html5 document.
-     *
-     * This includes html5 elements along with other allowed embedded content
-     * such as svg and mathml.
-     *
-     * @param string $name
-     *            The name of the element.
-     *
-     * @return bool True if valid and false otherwise.
-     */
-    public static function isElement($name)
-    {
-        return static::isHtml5Element($name) || static::isMathMLElement($name) || static::isSvgElement($name);
-    }
-
-    /**
-     * Get the element mask for the given element name.
-     *
-     * @param string $name
-     *            The name of the element.
-     *
-     * @return int The element mask.
-     */
-    public static function element($name)
-    {
-        if (isset(static::$html5[$name])) {
-            return static::$html5[$name];
-        }
-        if (isset(static::$svg[$name])) {
-            return static::$svg[$name];
-        }
-        if (isset(static::$mathml[$name])) {
-            return static::$mathml[$name];
-        }
-
-        return false;
-    }
-
-    /**
-     * Normalize a SVG element name to its proper case and form.
-     *
-     * @param string $name
-     *            The name of the element.
-     *
-     * @return string The normalized form of the element name.
-     */
-    public static function normalizeSvgElement($name)
-    {
-        $name = strtolower($name);
-        if (isset(static::$svgCaseSensitiveElementMap[$name])) {
-            $name = static::$svgCaseSensitiveElementMap[$name];
-        }
-
-        return $name;
-    }
-
-    /**
-     * Normalize a SVG attribute name to its proper case and form.
-     *
-     * @param string $name
-     *            The name of the attribute.
-     *
-     * @return string The normalized form of the attribute name.
-     */
-    public static function normalizeSvgAttribute($name)
-    {
-        $name = strtolower($name);
-        if (isset(static::$svgCaseSensitiveAttributeMap[$name])) {
-            $name = static::$svgCaseSensitiveAttributeMap[$name];
-        }
-
-        return $name;
-    }
-
-    /**
-     * Normalize a MathML attribute name to its proper case and form.
-     *
-     * Note, all MathML element names are lowercase.
-     *
-     * @param string $name
-     *            The name of the attribute.
-     *
-     * @return string The normalized form of the attribute name.
-     */
-    public static function normalizeMathMlAttribute($name)
-    {
-        $name = strtolower($name);
-
-        // Only one attribute has a mixed case form for MathML.
-        if ($name == 'definitionurl') {
-            $name = 'definitionURL';
-        }
-
-        return $name;
-    }
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Entities.php b/vendor/masterminds/html5/src/HTML5/Entities.php
deleted file mode 100644
index 2e605d6..0000000
--- a/vendor/masterminds/html5/src/HTML5/Entities.php
+++ /dev/null
@@ -1,2236 +0,0 @@
-<?php
-namespace Masterminds\HTML5;
-
-/**
- * Entity lookup tables.
- * This class is automatically generated.
- */
-class Entities
-{
-
-    public static $byName = array(
-        'Aacute' => 'Á',
-        'Aacut' => 'Á',
-        'aacute' => 'á',
-        'aacut' => 'á',
-        'Abreve' => 'Ă',
-        'abreve' => 'ă',
-        'ac' => '∾',
-        'acd' => '∿',
-        'acE' => '∾̳',
-        'Acirc' => 'Â',
-        'Acir' => 'Â',
-        'acirc' => 'â',
-        'acir' => 'â',
-        'acute' => '´',
-        'acut' => '´',
-        'Acy' => 'А',
-        'acy' => 'а',
-        'AElig' => 'Æ',
-        'AEli' => 'Æ',
-        'aelig' => 'æ',
-        'aeli' => 'æ',
-        'af' => '⁡',
-        'Afr' => '𝔄',
-        'afr' => '𝔞',
-        'Agrave' => 'À',
-        'Agrav' => 'À',
-        'agrave' => 'à',
-        'agrav' => 'à',
-        'alefsym' => 'ℵ',
-        'aleph' => 'ℵ',
-        'Alpha' => 'Α',
-        'alpha' => 'α',
-        'Amacr' => 'Ā',
-        'amacr' => 'ā',
-        'amalg' => '⨿',
-        'AMP' => '&',
-        'AM' => '&',
-        'amp' => '&',
-        'am' => '&',
-        'And' => '⩓',
-        'and' => '∧',
-        'andand' => '⩕',
-        'andd' => '⩜',
-        'andslope' => '⩘',
-        'andv' => '⩚',
-        'ang' => '∠',
-        'ange' => '⦤',
-        'angle' => '∠',
-        'angmsd' => '∡',
-        'angmsdaa' => '⦨',
-        'angmsdab' => '⦩',
-        'angmsdac' => '⦪',
-        'angmsdad' => '⦫',
-        'angmsdae' => '⦬',
-        'angmsdaf' => '⦭',
-        'angmsdag' => '⦮',
-        'angmsdah' => '⦯',
-        'angrt' => '∟',
-        'angrtvb' => '⊾',
-        'angrtvbd' => '⦝',
-        'angsph' => '∢',
-        'angst' => 'Å',
-        'angzarr' => '⍼',
-        'Aogon' => 'Ą',
-        'aogon' => 'ą',
-        'Aopf' => '𝔸',
-        'aopf' => '𝕒',
-        'ap' => '≈',
-        'apacir' => '⩯',
-        'apE' => '⩰',
-        'ape' => '≊',
-        'apid' => '≋',
-        'apos' => '\'',
-        'ApplyFunction' => '⁡',
-        'approx' => '≈',
-        'approxeq' => '≊',
-        'Aring' => 'Å',
-        'Arin' => 'Å',
-        'aring' => 'å',
-        'arin' => 'å',
-        'Ascr' => '𝒜',
-        'ascr' => '𝒶',
-        'Assign' => '≔',
-        'ast' => '*',
-        'asymp' => '≈',
-        'asympeq' => '≍',
-        'Atilde' => 'Ã',
-        'Atild' => 'Ã',
-        'atilde' => 'ã',
-        'atild' => 'ã',
-        'Auml' => 'Ä',
-        'Aum' => 'Ä',
-        'auml' => 'ä',
-        'aum' => 'ä',
-        'awconint' => '∳',
-        'awint' => '⨑',
-        'backcong' => '≌',
-        'backepsilon' => '϶',
-        'backprime' => '‵',
-        'backsim' => '∽',
-        'backsimeq' => '⋍',
-        'Backslash' => '∖',
-        'Barv' => '⫧',
-        'barvee' => '⊽',
-        'Barwed' => '⌆',
-        'barwed' => '⌅',
-        'barwedge' => '⌅',
-        'bbrk' => '⎵',
-        'bbrktbrk' => '⎶',
-        'bcong' => '≌',
-        'Bcy' => 'Б',
-        'bcy' => 'б',
-        'bdquo' => '„',
-        'becaus' => '∵',
-        'Because' => '∵',
-        'because' => '∵',
-        'bemptyv' => '⦰',
-        'bepsi' => '϶',
-        'bernou' => 'ℬ',
-        'Bernoullis' => 'ℬ',
-        'Beta' => 'Β',
-        'beta' => 'β',
-        'beth' => 'ℶ',
-        'between' => '≬',
-        'Bfr' => '𝔅',
-        'bfr' => '𝔟',
-        'bigcap' => '⋂',
-        'bigcirc' => '◯',
-        'bigcup' => '⋃',
-        'bigodot' => '⨀',
-        'bigoplus' => '⨁',
-        'bigotimes' => '⨂',
-        'bigsqcup' => '⨆',
-        'bigstar' => '★',
-        'bigtriangledown' => '▽',
-        'bigtriangleup' => '△',
-        'biguplus' => '⨄',
-        'bigvee' => '⋁',
-        'bigwedge' => '⋀',
-        'bkarow' => '⤍',
-        'blacklozenge' => '⧫',
-        'blacksquare' => '▪',
-        'blacktriangle' => '▴',
-        'blacktriangledown' => '▾',
-        'blacktriangleleft' => '◂',
-        'blacktriangleright' => '▸',
-        'blank' => '␣',
-        'blk12' => '▒',
-        'blk14' => '░',
-        'blk34' => '▓',
-        'block' => '█',
-        'bne' => '=⃥',
-        'bnequiv' => '≡⃥',
-        'bNot' => '⫭',
-        'bnot' => '⌐',
-        'Bopf' => '𝔹',
-        'bopf' => '𝕓',
-        'bot' => '⊥',
-        'bottom' => '⊥',
-        'bowtie' => '⋈',
-        'boxbox' => '⧉',
-        'boxDL' => '╗',
-        'boxDl' => '╖',
-        'boxdL' => '╕',
-        'boxdl' => '┐',
-        'boxDR' => '╔',
-        'boxDr' => '╓',
-        'boxdR' => '╒',
-        'boxdr' => '┌',
-        'boxH' => '═',
-        'boxh' => '─',
-        'boxHD' => '╦',
-        'boxHd' => '╤',
-        'boxhD' => '╥',
-        'boxhd' => '┬',
-        'boxHU' => '╩',
-        'boxHu' => '╧',
-        'boxhU' => '╨',
-        'boxhu' => '┴',
-        'boxminus' => '⊟',
-        'boxplus' => '⊞',
-        'boxtimes' => '⊠',
-        'boxUL' => '╝',
-        'boxUl' => '╜',
-        'boxuL' => '╛',
-        'boxul' => '┘',
-        'boxUR' => '╚',
-        'boxUr' => '╙',
-        'boxuR' => '╘',
-        'boxur' => '└',
-        'boxV' => '║',
-        'boxv' => '│',
-        'boxVH' => '╬',
-        'boxVh' => '╫',
-        'boxvH' => '╪',
-        'boxvh' => '┼',
-        'boxVL' => '╣',
-        'boxVl' => '╢',
-        'boxvL' => '╡',
-        'boxvl' => '┤',
-        'boxVR' => '╠',
-        'boxVr' => '╟',
-        'boxvR' => '╞',
-        'boxvr' => '├',
-        'bprime' => '‵',
-        'Breve' => '˘',
-        'breve' => '˘',
-        'brvbar' => '¦',
-        'brvba' => '¦',
-        'Bscr' => 'ℬ',
-        'bscr' => '𝒷',
-        'bsemi' => '⁏',
-        'bsim' => '∽',
-        'bsime' => '⋍',
-        'bsol' => '\\',
-        'bsolb' => '⧅',
-        'bsolhsub' => '⟈',
-        'bull' => '•',
-        'bullet' => '•',
-        'bump' => '≎',
-        'bumpE' => '⪮',
-        'bumpe' => '≏',
-        'Bumpeq' => '≎',
-        'bumpeq' => '≏',
-        'Cacute' => 'Ć',
-        'cacute' => 'ć',
-        'Cap' => '⋒',
-        'cap' => '∩',
-        'capand' => '⩄',
-        'capbrcup' => '⩉',
-        'capcap' => '⩋',
-        'capcup' => '⩇',
-        'capdot' => '⩀',
-        'CapitalDifferentialD' => 'ⅅ',
-        'caps' => '∩︀',
-        'caret' => '⁁',
-        'caron' => 'ˇ',
-        'Cayleys' => 'ℭ',
-        'ccaps' => '⩍',
-        'Ccaron' => 'Č',
-        'ccaron' => 'č',
-        'Ccedil' => 'Ç',
-        'Ccedi' => 'Ç',
-        'ccedil' => 'ç',
-        'ccedi' => 'ç',
-        'Ccirc' => 'Ĉ',
-        'ccirc' => 'ĉ',
-        'Cconint' => '∰',
-        'ccups' => '⩌',
-        'ccupssm' => '⩐',
-        'Cdot' => 'Ċ',
-        'cdot' => 'ċ',
-        'cedil' => '¸',
-        'cedi' => '¸',
-        'Cedilla' => '¸',
-        'cemptyv' => '⦲',
-        'cent' => '¢',
-        'cen' => '¢',
-        'CenterDot' => '·',
-        'centerdot' => '·',
-        'Cfr' => 'ℭ',
-        'cfr' => '𝔠',
-        'CHcy' => 'Ч',
-        'chcy' => 'ч',
-        'check' => '✓',
-        'checkmark' => '✓',
-        'Chi' => 'Χ',
-        'chi' => 'χ',
-        'cir' => '○',
-        'circ' => 'ˆ',
-        'circeq' => '≗',
-        'circlearrowleft' => '↺',
-        'circlearrowright' => '↻',
-        'circledast' => '⊛',
-        'circledcirc' => '⊚',
-        'circleddash' => '⊝',
-        'CircleDot' => '⊙',
-        'circledR' => '®',
-        'circledS' => 'Ⓢ',
-        'CircleMinus' => '⊖',
-        'CirclePlus' => '⊕',
-        'CircleTimes' => '⊗',
-        'cirE' => '⧃',
-        'cire' => '≗',
-        'cirfnint' => '⨐',
-        'cirmid' => '⫯',
-        'cirscir' => '⧂',
-        'ClockwiseContourIntegral' => '∲',
-        'CloseCurlyDoubleQuote' => '”',
-        'CloseCurlyQuote' => '’',
-        'clubs' => '♣',
-        'clubsuit' => '♣',
-        'Colon' => '∷',
-        'colon' => ':',
-        'Colone' => '⩴',
-        'colone' => '≔',
-        'coloneq' => '≔',
-        'comma' => ',',
-        'commat' => '@',
-        'comp' => '∁',
-        'compfn' => '∘',
-        'complement' => '∁',
-        'complexes' => 'ℂ',
-        'cong' => '≅',
-        'congdot' => '⩭',
-        'Congruent' => '≡',
-        'Conint' => '∯',
-        'conint' => '∮',
-        'ContourIntegral' => '∮',
-        'Copf' => 'ℂ',
-        'copf' => '𝕔',
-        'coprod' => '∐',
-        'Coproduct' => '∐',
-        'COPY' => '©',
-        'COP' => '©',
-        'copy' => '©',
-        'cop' => '©',
-        'copysr' => '℗',
-        'CounterClockwiseContourIntegral' => '∳',
-        'crarr' => '↵',
-        'Cross' => '⨯',
-        'cross' => '✗',
-        'Cscr' => '𝒞',
-        'cscr' => '𝒸',
-        'csub' => '⫏',
-        'csube' => '⫑',
-        'csup' => '⫐',
-        'csupe' => '⫒',
-        'ctdot' => '⋯',
-        'cudarrl' => '⤸',
-        'cudarrr' => '⤵',
-        'cuepr' => '⋞',
-        'cuesc' => '⋟',
-        'cularr' => '↶',
-        'cularrp' => '⤽',
-        'Cup' => '⋓',
-        'cup' => '∪',
-        'cupbrcap' => '⩈',
-        'CupCap' => '≍',
-        'cupcap' => '⩆',
-        'cupcup' => '⩊',
-        'cupdot' => '⊍',
-        'cupor' => '⩅',
-        'cups' => '∪︀',
-        'curarr' => '↷',
-        'curarrm' => '⤼',
-        'curlyeqprec' => '⋞',
-        'curlyeqsucc' => '⋟',
-        'curlyvee' => '⋎',
-        'curlywedge' => '⋏',
-        'curren' => '¤',
-        'curre' => '¤',
-        'curvearrowleft' => '↶',
-        'curvearrowright' => '↷',
-        'cuvee' => '⋎',
-        'cuwed' => '⋏',
-        'cwconint' => '∲',
-        'cwint' => '∱',
-        'cylcty' => '⌭',
-        'Dagger' => '‡',
-        'dagger' => '†',
-        'daleth' => 'ℸ',
-        'Darr' => '↡',
-        'dArr' => '⇓',
-        'darr' => '↓',
-        'dash' => '‐',
-        'Dashv' => '⫤',
-        'dashv' => '⊣',
-        'dbkarow' => '⤏',
-        'dblac' => '˝',
-        'Dcaron' => 'Ď',
-        'dcaron' => 'ď',
-        'Dcy' => 'Д',
-        'dcy' => 'д',
-        'DD' => 'ⅅ',
-        'dd' => 'ⅆ',
-        'ddagger' => '‡',
-        'ddarr' => '⇊',
-        'DDotrahd' => '⤑',
-        'ddotseq' => '⩷',
-        'deg' => '°',
-        'de' => '°',
-        'Del' => '∇',
-        'Delta' => 'Δ',
-        'delta' => 'δ',
-        'demptyv' => '⦱',
-        'dfisht' => '⥿',
-        'Dfr' => '𝔇',
-        'dfr' => '𝔡',
-        'dHar' => '⥥',
-        'dharl' => '⇃',
-        'dharr' => '⇂',
-        'DiacriticalAcute' => '´',
-        'DiacriticalDot' => '˙',
-        'DiacriticalDoubleAcute' => '˝',
-        'DiacriticalGrave' => '`',
-        'DiacriticalTilde' => '˜',
-        'diam' => '⋄',
-        'Diamond' => '⋄',
-        'diamond' => '⋄',
-        'diamondsuit' => '♦',
-        'diams' => '♦',
-        'die' => '¨',
-        'DifferentialD' => 'ⅆ',
-        'digamma' => 'ϝ',
-        'disin' => '⋲',
-        'div' => '÷',
-        'divide' => '÷',
-        'divid' => '÷',
-        'divideontimes' => '⋇',
-        'divonx' => '⋇',
-        'DJcy' => 'Ђ',
-        'djcy' => 'ђ',
-        'dlcorn' => '⌞',
-        'dlcrop' => '⌍',
-        'dollar' => '$',
-        'Dopf' => '𝔻',
-        'dopf' => '𝕕',
-        'Dot' => '¨',
-        'dot' => '˙',
-        'DotDot' => '⃜',
-        'doteq' => '≐',
-        'doteqdot' => '≑',
-        'DotEqual' => '≐',
-        'dotminus' => '∸',
-        'dotplus' => '∔',
-        'dotsquare' => '⊡',
-        'doublebarwedge' => '⌆',
-        'DoubleContourIntegral' => '∯',
-        'DoubleDot' => '¨',
-        'DoubleDownArrow' => '⇓',
-        'DoubleLeftArrow' => '⇐',
-        'DoubleLeftRightArrow' => '⇔',
-        'DoubleLeftTee' => '⫤',
-        'DoubleLongLeftArrow' => '⟸',
-        'DoubleLongLeftRightArrow' => '⟺',
-        'DoubleLongRightArrow' => '⟹',
-        'DoubleRightArrow' => '⇒',
-        'DoubleRightTee' => '⊨',
-        'DoubleUpArrow' => '⇑',
-        'DoubleUpDownArrow' => '⇕',
-        'DoubleVerticalBar' => '∥',
-        'DownArrow' => '↓',
-        'Downarrow' => '⇓',
-        'downarrow' => '↓',
-        'DownArrowBar' => '⤓',
-        'DownArrowUpArrow' => '⇵',
-        'DownBreve' => '̑',
-        'downdownarrows' => '⇊',
-        'downharpoonleft' => '⇃',
-        'downharpoonright' => '⇂',
-        'DownLeftRightVector' => '⥐',
-        'DownLeftTeeVector' => '⥞',
-        'DownLeftVector' => '↽',
-        'DownLeftVectorBar' => '⥖',
-        'DownRightTeeVector' => '⥟',
-        'DownRightVector' => '⇁',
-        'DownRightVectorBar' => '⥗',
-        'DownTee' => '⊤',
-        'DownTeeArrow' => '↧',
-        'drbkarow' => '⤐',
-        'drcorn' => '⌟',
-        'drcrop' => '⌌',
-        'Dscr' => '𝒟',
-        'dscr' => '𝒹',
-        'DScy' => 'Ѕ',
-        'dscy' => 'ѕ',
-        'dsol' => '⧶',
-        'Dstrok' => 'Đ',
-        'dstrok' => 'đ',
-        'dtdot' => '⋱',
-        'dtri' => '▿',
-        'dtrif' => '▾',
-        'duarr' => '⇵',
-        'duhar' => '⥯',
-        'dwangle' => '⦦',
-        'DZcy' => 'Џ',
-        'dzcy' => 'џ',
-        'dzigrarr' => '⟿',
-        'Eacute' => 'É',
-        'Eacut' => 'É',
-        'eacute' => 'é',
-        'eacut' => 'é',
-        'easter' => '⩮',
-        'Ecaron' => 'Ě',
-        'ecaron' => 'ě',
-        'ecir' => 'ê',
-        'Ecirc' => 'Ê',
-        'Ecir' => 'Ê',
-        'ecirc' => 'ê',
-        'ecolon' => '≕',
-        'Ecy' => 'Э',
-        'ecy' => 'э',
-        'eDDot' => '⩷',
-        'Edot' => 'Ė',
-        'eDot' => '≑',
-        'edot' => 'ė',
-        'ee' => 'ⅇ',
-        'efDot' => '≒',
-        'Efr' => '𝔈',
-        'efr' => '𝔢',
-        'eg' => '⪚',
-        'Egrave' => 'È',
-        'Egrav' => 'È',
-        'egrave' => 'è',
-        'egrav' => 'è',
-        'egs' => '⪖',
-        'egsdot' => '⪘',
-        'el' => '⪙',
-        'Element' => '∈',
-        'elinters' => '⏧',
-        'ell' => 'ℓ',
-        'els' => '⪕',
-        'elsdot' => '⪗',
-        'Emacr' => 'Ē',
-        'emacr' => 'ē',
-        'empty' => '∅',
-        'emptyset' => '∅',
-        'EmptySmallSquare' => '◻',
-        'emptyv' => '∅',
-        'EmptyVerySmallSquare' => '▫',
-        'emsp' => ' ',
-        'emsp13' => ' ',
-        'emsp14' => ' ',
-        'ENG' => 'Ŋ',
-        'eng' => 'ŋ',
-        'ensp' => ' ',
-        'Eogon' => 'Ę',
-        'eogon' => 'ę',
-        'Eopf' => '𝔼',
-        'eopf' => '𝕖',
-        'epar' => '⋕',
-        'eparsl' => '⧣',
-        'eplus' => '⩱',
-        'epsi' => 'ε',
-        'Epsilon' => 'Ε',
-        'epsilon' => 'ε',
-        'epsiv' => 'ϵ',
-        'eqcirc' => '≖',
-        'eqcolon' => '≕',
-        'eqsim' => '≂',
-        'eqslantgtr' => '⪖',
-        'eqslantless' => '⪕',
-        'Equal' => '⩵',
-        'equals' => '=',
-        'EqualTilde' => '≂',
-        'equest' => '≟',
-        'Equilibrium' => '⇌',
-        'equiv' => '≡',
-        'equivDD' => '⩸',
-        'eqvparsl' => '⧥',
-        'erarr' => '⥱',
-        'erDot' => '≓',
-        'Escr' => 'ℰ',
-        'escr' => 'ℯ',
-        'esdot' => '≐',
-        'Esim' => '⩳',
-        'esim' => '≂',
-        'Eta' => 'Η',
-        'eta' => 'η',
-        'ETH' => 'Ð',
-        'ET' => 'Ð',
-        'eth' => 'ð',
-        'et' => 'ð',
-        'Euml' => 'Ë',
-        'Eum' => 'Ë',
-        'euml' => 'ë',
-        'eum' => 'ë',
-        'euro' => '€',
-        'excl' => '!',
-        'exist' => '∃',
-        'Exists' => '∃',
-        'expectation' => 'ℰ',
-        'ExponentialE' => 'ⅇ',
-        'exponentiale' => 'ⅇ',
-        'fallingdotseq' => '≒',
-        'Fcy' => 'Ф',
-        'fcy' => 'ф',
-        'female' => '♀',
-        'ffilig' => 'ﬃ',
-        'fflig' => 'ﬀ',
-        'ffllig' => 'ﬄ',
-        'Ffr' => '𝔉',
-        'ffr' => '𝔣',
-        'filig' => 'ﬁ',
-        'FilledSmallSquare' => '◼',
-        'FilledVerySmallSquare' => '▪',
-        'fjlig' => 'fj',
-        'flat' => '♭',
-        'fllig' => 'ﬂ',
-        'fltns' => '▱',
-        'fnof' => 'ƒ',
-        'Fopf' => '𝔽',
-        'fopf' => '𝕗',
-        'ForAll' => '∀',
-        'forall' => '∀',
-        'fork' => '⋔',
-        'forkv' => '⫙',
-        'Fouriertrf' => 'ℱ',
-        'fpartint' => '⨍',
-        'frac12' => '½',
-        'frac1' => '¼',
-        'frac13' => '⅓',
-        'frac14' => '¼',
-        'frac15' => '⅕',
-        'frac16' => '⅙',
-        'frac18' => '⅛',
-        'frac23' => '⅔',
-        'frac25' => '⅖',
-        'frac34' => '¾',
-        'frac3' => '¾',
-        'frac35' => '⅗',
-        'frac38' => '⅜',
-        'frac45' => '⅘',
-        'frac56' => '⅚',
-        'frac58' => '⅝',
-        'frac78' => '⅞',
-        'frasl' => '⁄',
-        'frown' => '⌢',
-        'Fscr' => 'ℱ',
-        'fscr' => '𝒻',
-        'gacute' => 'ǵ',
-        'Gamma' => 'Γ',
-        'gamma' => 'γ',
-        'Gammad' => 'Ϝ',
-        'gammad' => 'ϝ',
-        'gap' => '⪆',
-        'Gbreve' => 'Ğ',
-        'gbreve' => 'ğ',
-        'Gcedil' => 'Ģ',
-        'Gcirc' => 'Ĝ',
-        'gcirc' => 'ĝ',
-        'Gcy' => 'Г',
-        'gcy' => 'г',
-        'Gdot' => 'Ġ',
-        'gdot' => 'ġ',
-        'gE' => '≧',
-        'ge' => '≥',
-        'gEl' => '⪌',
-        'gel' => '⋛',
-        'geq' => '≥',
-        'geqq' => '≧',
-        'geqslant' => '⩾',
-        'ges' => '⩾',
-        'gescc' => '⪩',
-        'gesdot' => '⪀',
-        'gesdoto' => '⪂',
-        'gesdotol' => '⪄',
-        'gesl' => '⋛︀',
-        'gesles' => '⪔',
-        'Gfr' => '𝔊',
-        'gfr' => '𝔤',
-        'Gg' => '⋙',
-        'gg' => '≫',
-        'ggg' => '⋙',
-        'gimel' => 'ℷ',
-        'GJcy' => 'Ѓ',
-        'gjcy' => 'ѓ',
-        'gl' => '≷',
-        'gla' => '⪥',
-        'glE' => '⪒',
-        'glj' => '⪤',
-        'gnap' => '⪊',
-        'gnapprox' => '⪊',
-        'gnE' => '≩',
-        'gne' => '⪈',
-        'gneq' => '⪈',
-        'gneqq' => '≩',
-        'gnsim' => '⋧',
-        'Gopf' => '𝔾',
-        'gopf' => '𝕘',
-        'grave' => '`',
-        'GreaterEqual' => '≥',
-        'GreaterEqualLess' => '⋛',
-        'GreaterFullEqual' => '≧',
-        'GreaterGreater' => '⪢',
-        'GreaterLess' => '≷',
-        'GreaterSlantEqual' => '⩾',
-        'GreaterTilde' => '≳',
-        'Gscr' => '𝒢',
-        'gscr' => 'ℊ',
-        'gsim' => '≳',
-        'gsime' => '⪎',
-        'gsiml' => '⪐',
-        'GT' => '>',
-        'G' => '>',
-        'Gt' => '≫',
-        'gt' => '>',
-        'g' => '>',
-        'gtcc' => '⪧',
-        'gtcir' => '⩺',
-        'gtdot' => '⋗',
-        'gtlPar' => '⦕',
-        'gtquest' => '⩼',
-        'gtrapprox' => '⪆',
-        'gtrarr' => '⥸',
-        'gtrdot' => '⋗',
-        'gtreqless' => '⋛',
-        'gtreqqless' => '⪌',
-        'gtrless' => '≷',
-        'gtrsim' => '≳',
-        'gvertneqq' => '≩︀',
-        'gvnE' => '≩︀',
-        'Hacek' => 'ˇ',
-        'hairsp' => ' ',
-        'half' => '½',
-        'hamilt' => 'ℋ',
-        'HARDcy' => 'Ъ',
-        'hardcy' => 'ъ',
-        'hArr' => '⇔',
-        'harr' => '↔',
-        'harrcir' => '⥈',
-        'harrw' => '↭',
-        'Hat' => '^',
-        'hbar' => 'ℏ',
-        'Hcirc' => 'Ĥ',
-        'hcirc' => 'ĥ',
-        'hearts' => '♥',
-        'heartsuit' => '♥',
-        'hellip' => '…',
-        'hercon' => '⊹',
-        'Hfr' => 'ℌ',
-        'hfr' => '𝔥',
-        'HilbertSpace' => 'ℋ',
-        'hksearow' => '⤥',
-        'hkswarow' => '⤦',
-        'hoarr' => '⇿',
-        'homtht' => '∻',
-        'hookleftarrow' => '↩',
-        'hookrightarrow' => '↪',
-        'Hopf' => 'ℍ',
-        'hopf' => '𝕙',
-        'horbar' => '―',
-        'HorizontalLine' => '─',
-        'Hscr' => 'ℋ',
-        'hscr' => '𝒽',
-        'hslash' => 'ℏ',
-        'Hstrok' => 'Ħ',
-        'hstrok' => 'ħ',
-        'HumpDownHump' => '≎',
-        'HumpEqual' => '≏',
-        'hybull' => '⁃',
-        'hyphen' => '‐',
-        'Iacute' => 'Í',
-        'Iacut' => 'Í',
-        'iacute' => 'í',
-        'iacut' => 'í',
-        'ic' => '⁣',
-        'Icirc' => 'Î',
-        'Icir' => 'Î',
-        'icirc' => 'î',
-        'icir' => 'î',
-        'Icy' => 'И',
-        'icy' => 'и',
-        'Idot' => 'İ',
-        'IEcy' => 'Е',
-        'iecy' => 'е',
-        'iexcl' => '¡',
-        'iexc' => '¡',
-        'iff' => '⇔',
-        'Ifr' => 'ℑ',
-        'ifr' => '𝔦',
-        'Igrave' => 'Ì',
-        'Igrav' => 'Ì',
-        'igrave' => 'ì',
-        'igrav' => 'ì',
-        'ii' => 'ⅈ',
-        'iiiint' => '⨌',
-        'iiint' => '∭',
-        'iinfin' => '⧜',
-        'iiota' => '℩',
-        'IJlig' => 'Ĳ',
-        'ijlig' => 'ĳ',
-        'Im' => 'ℑ',
-        'Imacr' => 'Ī',
-        'imacr' => 'ī',
-        'image' => 'ℑ',
-        'ImaginaryI' => 'ⅈ',
-        'imagline' => 'ℐ',
-        'imagpart' => 'ℑ',
-        'imath' => 'ı',
-        'imof' => '⊷',
-        'imped' => 'Ƶ',
-        'Implies' => '⇒',
-        'in' => '∈',
-        'incare' => '℅',
-        'infin' => '∞',
-        'infintie' => '⧝',
-        'inodot' => 'ı',
-        'Int' => '∬',
-        'int' => '∫',
-        'intcal' => '⊺',
-        'integers' => 'ℤ',
-        'Integral' => '∫',
-        'intercal' => '⊺',
-        'Intersection' => '⋂',
-        'intlarhk' => '⨗',
-        'intprod' => '⨼',
-        'InvisibleComma' => '⁣',
-        'InvisibleTimes' => '⁢',
-        'IOcy' => 'Ё',
-        'iocy' => 'ё',
-        'Iogon' => 'Į',
-        'iogon' => 'į',
-        'Iopf' => '𝕀',
-        'iopf' => '𝕚',
-        'Iota' => 'Ι',
-        'iota' => 'ι',
-        'iprod' => '⨼',
-        'iquest' => '¿',
-        'iques' => '¿',
-        'Iscr' => 'ℐ',
-        'iscr' => '𝒾',
-        'isin' => '∈',
-        'isindot' => '⋵',
-        'isinE' => '⋹',
-        'isins' => '⋴',
-        'isinsv' => '⋳',
-        'isinv' => '∈',
-        'it' => '⁢',
-        'Itilde' => 'Ĩ',
-        'itilde' => 'ĩ',
-        'Iukcy' => 'І',
-        'iukcy' => 'і',
-        'Iuml' => 'Ï',
-        'Ium' => 'Ï',
-        'iuml' => 'ï',
-        'ium' => 'ï',
-        'Jcirc' => 'Ĵ',
-        'jcirc' => 'ĵ',
-        'Jcy' => 'Й',
-        'jcy' => 'й',
-        'Jfr' => '𝔍',
-        'jfr' => '𝔧',
-        'jmath' => 'ȷ',
-        'Jopf' => '𝕁',
-        'jopf' => '𝕛',
-        'Jscr' => '𝒥',
-        'jscr' => '𝒿',
-        'Jsercy' => 'Ј',
-        'jsercy' => 'ј',
-        'Jukcy' => 'Є',
-        'jukcy' => 'є',
-        'Kappa' => 'Κ',
-        'kappa' => 'κ',
-        'kappav' => 'ϰ',
-        'Kcedil' => 'Ķ',
-        'kcedil' => 'ķ',
-        'Kcy' => 'К',
-        'kcy' => 'к',
-        'Kfr' => '𝔎',
-        'kfr' => '𝔨',
-        'kgreen' => 'ĸ',
-        'KHcy' => 'Х',
-        'khcy' => 'х',
-        'KJcy' => 'Ќ',
-        'kjcy' => 'ќ',
-        'Kopf' => '𝕂',
-        'kopf' => '𝕜',
-        'Kscr' => '𝒦',
-        'kscr' => '𝓀',
-        'lAarr' => '⇚',
-        'Lacute' => 'Ĺ',
-        'lacute' => 'ĺ',
-        'laemptyv' => '⦴',
-        'lagran' => 'ℒ',
-        'Lambda' => 'Λ',
-        'lambda' => 'λ',
-        'Lang' => '⟪',
-        'lang' => '⟨',
-        'langd' => '⦑',
-        'langle' => '⟨',
-        'lap' => '⪅',
-        'Laplacetrf' => 'ℒ',
-        'laquo' => '«',
-        'laqu' => '«',
-        'Larr' => '↞',
-        'lArr' => '⇐',
-        'larr' => '←',
-        'larrb' => '⇤',
-        'larrbfs' => '⤟',
-        'larrfs' => '⤝',
-        'larrhk' => '↩',
-        'larrlp' => '↫',
-        'larrpl' => '⤹',
-        'larrsim' => '⥳',
-        'larrtl' => '↢',
-        'lat' => '⪫',
-        'lAtail' => '⤛',
-        'latail' => '⤙',
-        'late' => '⪭',
-        'lates' => '⪭︀',
-        'lBarr' => '⤎',
-        'lbarr' => '⤌',
-        'lbbrk' => '❲',
-        'lbrace' => '{',
-        'lbrack' => '[',
-        'lbrke' => '⦋',
-        'lbrksld' => '⦏',
-        'lbrkslu' => '⦍',
-        'Lcaron' => 'Ľ',
-        'lcaron' => 'ľ',
-        'Lcedil' => 'Ļ',
-        'lcedil' => 'ļ',
-        'lceil' => '⌈',
-        'lcub' => '{',
-        'Lcy' => 'Л',
-        'lcy' => 'л',
-        'ldca' => '⤶',
-        'ldquo' => '“',
-        'ldquor' => '„',
-        'ldrdhar' => '⥧',
-        'ldrushar' => '⥋',
-        'ldsh' => '↲',
-        'lE' => '≦',
-        'le' => '≤',
-        'LeftAngleBracket' => '⟨',
-        'LeftArrow' => '←',
-        'Leftarrow' => '⇐',
-        'leftarrow' => '←',
-        'LeftArrowBar' => '⇤',
-        'LeftArrowRightArrow' => '⇆',
-        'leftarrowtail' => '↢',
-        'LeftCeiling' => '⌈',
-        'LeftDoubleBracket' => '⟦',
-        'LeftDownTeeVector' => '⥡',
-        'LeftDownVector' => '⇃',
-        'LeftDownVectorBar' => '⥙',
-        'LeftFloor' => '⌊',
-        'leftharpoondown' => '↽',
-        'leftharpoonup' => '↼',
-        'leftleftarrows' => '⇇',
-        'LeftRightArrow' => '↔',
-        'Leftrightarrow' => '⇔',
-        'leftrightarrow' => '↔',
-        'leftrightarrows' => '⇆',
-        'leftrightharpoons' => '⇋',
-        'leftrightsquigarrow' => '↭',
-        'LeftRightVector' => '⥎',
-        'LeftTee' => '⊣',
-        'LeftTeeArrow' => '↤',
-        'LeftTeeVector' => '⥚',
-        'leftthreetimes' => '⋋',
-        'LeftTriangle' => '⊲',
-        'LeftTriangleBar' => '⧏',
-        'LeftTriangleEqual' => '⊴',
-        'LeftUpDownVector' => '⥑',
-        'LeftUpTeeVector' => '⥠',
-        'LeftUpVector' => '↿',
-        'LeftUpVectorBar' => '⥘',
-        'LeftVector' => '↼',
-        'LeftVectorBar' => '⥒',
-        'lEg' => '⪋',
-        'leg' => '⋚',
-        'leq' => '≤',
-        'leqq' => '≦',
-        'leqslant' => '⩽',
-        'les' => '⩽',
-        'lescc' => '⪨',
-        'lesdot' => '⩿',
-        'lesdoto' => '⪁',
-        'lesdotor' => '⪃',
-        'lesg' => '⋚︀',
-        'lesges' => '⪓',
-        'lessapprox' => '⪅',
-        'lessdot' => '⋖',
-        'lesseqgtr' => '⋚',
-        'lesseqqgtr' => '⪋',
-        'LessEqualGreater' => '⋚',
-        'LessFullEqual' => '≦',
-        'LessGreater' => '≶',
-        'lessgtr' => '≶',
-        'LessLess' => '⪡',
-        'lesssim' => '≲',
-        'LessSlantEqual' => '⩽',
-        'LessTilde' => '≲',
-        'lfisht' => '⥼',
-        'lfloor' => '⌊',
-        'Lfr' => '𝔏',
-        'lfr' => '𝔩',
-        'lg' => '≶',
-        'lgE' => '⪑',
-        'lHar' => '⥢',
-        'lhard' => '↽',
-        'lharu' => '↼',
-        'lharul' => '⥪',
-        'lhblk' => '▄',
-        'LJcy' => 'Љ',
-        'ljcy' => 'љ',
-        'Ll' => '⋘',
-        'll' => '≪',
-        'llarr' => '⇇',
-        'llcorner' => '⌞',
-        'Lleftarrow' => '⇚',
-        'llhard' => '⥫',
-        'lltri' => '◺',
-        'Lmidot' => 'Ŀ',
-        'lmidot' => 'ŀ',
-        'lmoust' => '⎰',
-        'lmoustache' => '⎰',
-        'lnap' => '⪉',
-        'lnapprox' => '⪉',
-        'lnE' => '≨',
-        'lne' => '⪇',
-        'lneq' => '⪇',
-        'lneqq' => '≨',
-        'lnsim' => '⋦',
-        'loang' => '⟬',
-        'loarr' => '⇽',
-        'lobrk' => '⟦',
-        'LongLeftArrow' => '⟵',
-        'Longleftarrow' => '⟸',
-        'longleftarrow' => '⟵',
-        'LongLeftRightArrow' => '⟷',
-        'Longleftrightarrow' => '⟺',
-        'longleftrightarrow' => '⟷',
-        'longmapsto' => '⟼',
-        'LongRightArrow' => '⟶',
-        'Longrightarrow' => '⟹',
-        'longrightarrow' => '⟶',
-        'looparrowleft' => '↫',
-        'looparrowright' => '↬',
-        'lopar' => '⦅',
-        'Lopf' => '𝕃',
-        'lopf' => '𝕝',
-        'loplus' => '⨭',
-        'lotimes' => '⨴',
-        'lowast' => '∗',
-        'lowbar' => '_',
-        'LowerLeftArrow' => '↙',
-        'LowerRightArrow' => '↘',
-        'loz' => '◊',
-        'lozenge' => '◊',
-        'lozf' => '⧫',
-        'lpar' => '(',
-        'lparlt' => '⦓',
-        'lrarr' => '⇆',
-        'lrcorner' => '⌟',
-        'lrhar' => '⇋',
-        'lrhard' => '⥭',
-        'lrm' => '‎',
-        'lrtri' => '⊿',
-        'lsaquo' => '‹',
-        'Lscr' => 'ℒ',
-        'lscr' => '𝓁',
-        'Lsh' => '↰',
-        'lsh' => '↰',
-        'lsim' => '≲',
-        'lsime' => '⪍',
-        'lsimg' => '⪏',
-        'lsqb' => '[',
-        'lsquo' => '‘',
-        'lsquor' => '‚',
-        'Lstrok' => 'Ł',
-        'lstrok' => 'ł',
-        'LT' => '<',
-        'L' => '<',
-        'Lt' => '≪',
-        'lt' => '<',
-        'l' => '<',
-        'ltcc' => '⪦',
-        'ltcir' => '⩹',
-        'ltdot' => '⋖',
-        'lthree' => '⋋',
-        'ltimes' => '⋉',
-        'ltlarr' => '⥶',
-        'ltquest' => '⩻',
-        'ltri' => '◃',
-        'ltrie' => '⊴',
-        'ltrif' => '◂',
-        'ltrPar' => '⦖',
-        'lurdshar' => '⥊',
-        'luruhar' => '⥦',
-        'lvertneqq' => '≨︀',
-        'lvnE' => '≨︀',
-        'macr' => '¯',
-        'mac' => '¯',
-        'male' => '♂',
-        'malt' => '✠',
-        'maltese' => '✠',
-        'Map' => '⤅',
-        'map' => '↦',
-        'mapsto' => '↦',
-        'mapstodown' => '↧',
-        'mapstoleft' => '↤',
-        'mapstoup' => '↥',
-        'marker' => '▮',
-        'mcomma' => '⨩',
-        'Mcy' => 'М',
-        'mcy' => 'м',
-        'mdash' => '—',
-        'mDDot' => '∺',
-        'measuredangle' => '∡',
-        'MediumSpace' => ' ',
-        'Mellintrf' => 'ℳ',
-        'Mfr' => '𝔐',
-        'mfr' => '𝔪',
-        'mho' => '℧',
-        'micro' => 'µ',
-        'micr' => 'µ',
-        'mid' => '∣',
-        'midast' => '*',
-        'midcir' => '⫰',
-        'middot' => '·',
-        'middo' => '·',
-        'minus' => '−',
-        'minusb' => '⊟',
-        'minusd' => '∸',
-        'minusdu' => '⨪',
-        'MinusPlus' => '∓',
-        'mlcp' => '⫛',
-        'mldr' => '…',
-        'mnplus' => '∓',
-        'models' => '⊧',
-        'Mopf' => '𝕄',
-        'mopf' => '𝕞',
-        'mp' => '∓',
-        'Mscr' => 'ℳ',
-        'mscr' => '𝓂',
-        'mstpos' => '∾',
-        'Mu' => 'Μ',
-        'mu' => 'μ',
-        'multimap' => '⊸',
-        'mumap' => '⊸',
-        'nabla' => '∇',
-        'Nacute' => 'Ń',
-        'nacute' => 'ń',
-        'nang' => '∠⃒',
-        'nap' => '≉',
-        'napE' => '⩰̸',
-        'napid' => '≋̸',
-        'napos' => 'ŉ',
-        'napprox' => '≉',
-        'natur' => '♮',
-        'natural' => '♮',
-        'naturals' => 'ℕ',
-        'nbsp' => ' ',
-        'nbs' => ' ',
-        'nbump' => '≎̸',
-        'nbumpe' => '≏̸',
-        'ncap' => '⩃',
-        'Ncaron' => 'Ň',
-        'ncaron' => 'ň',
-        'Ncedil' => 'Ņ',
-        'ncedil' => 'ņ',
-        'ncong' => '≇',
-        'ncongdot' => '⩭̸',
-        'ncup' => '⩂',
-        'Ncy' => 'Н',
-        'ncy' => 'н',
-        'ndash' => '–',
-        'ne' => '≠',
-        'nearhk' => '⤤',
-        'neArr' => '⇗',
-        'nearr' => '↗',
-        'nearrow' => '↗',
-        'nedot' => '≐̸',
-        'NegativeMediumSpace' => '​',
-        'NegativeThickSpace' => '​',
-        'NegativeThinSpace' => '​',
-        'NegativeVeryThinSpace' => '​',
-        'nequiv' => '≢',
-        'nesear' => '⤨',
-        'nesim' => '≂̸',
-        'NestedGreaterGreater' => '≫',
-        'NestedLessLess' => '≪',
-        'NewLine' => '
-',
-        'nexist' => '∄',
-        'nexists' => '∄',
-        'Nfr' => '𝔑',
-        'nfr' => '𝔫',
-        'ngE' => '≧̸',
-        'nge' => '≱',
-        'ngeq' => '≱',
-        'ngeqq' => '≧̸',
-        'ngeqslant' => '⩾̸',
-        'nges' => '⩾̸',
-        'nGg' => '⋙̸',
-        'ngsim' => '≵',
-        'nGt' => '≫⃒',
-        'ngt' => '≯',
-        'ngtr' => '≯',
-        'nGtv' => '≫̸',
-        'nhArr' => '⇎',
-        'nharr' => '↮',
-        'nhpar' => '⫲',
-        'ni' => '∋',
-        'nis' => '⋼',
-        'nisd' => '⋺',
-        'niv' => '∋',
-        'NJcy' => 'Њ',
-        'njcy' => 'њ',
-        'nlArr' => '⇍',
-        'nlarr' => '↚',
-        'nldr' => '‥',
-        'nlE' => '≦̸',
-        'nle' => '≰',
-        'nLeftarrow' => '⇍',
-        'nleftarrow' => '↚',
-        'nLeftrightarrow' => '⇎',
-        'nleftrightarrow' => '↮',
-        'nleq' => '≰',
-        'nleqq' => '≦̸',
-        'nleqslant' => '⩽̸',
-        'nles' => '⩽̸',
-        'nless' => '≮',
-        'nLl' => '⋘̸',
-        'nlsim' => '≴',
-        'nLt' => '≪⃒',
-        'nlt' => '≮',
-        'nltri' => '⋪',
-        'nltrie' => '⋬',
-        'nLtv' => '≪̸',
-        'nmid' => '∤',
-        'NoBreak' => '⁠',
-        'NonBreakingSpace' => ' ',
-        'Nopf' => 'ℕ',
-        'nopf' => '𝕟',
-        'Not' => '⫬',
-        'not' => '¬',
-        'no' => '¬',
-        'NotCongruent' => '≢',
-        'NotCupCap' => '≭',
-        'NotDoubleVerticalBar' => '∦',
-        'NotElement' => '∉',
-        'NotEqual' => '≠',
-        'NotEqualTilde' => '≂̸',
-        'NotExists' => '∄',
-        'NotGreater' => '≯',
-        'NotGreaterEqual' => '≱',
-        'NotGreaterFullEqual' => '≧̸',
-        'NotGreaterGreater' => '≫̸',
-        'NotGreaterLess' => '≹',
-        'NotGreaterSlantEqual' => '⩾̸',
-        'NotGreaterTilde' => '≵',
-        'NotHumpDownHump' => '≎̸',
-        'NotHumpEqual' => '≏̸',
-        'notin' => '∉',
-        'notindot' => '⋵̸',
-        'notinE' => '⋹̸',
-        'notinva' => '∉',
-        'notinvb' => '⋷',
-        'notinvc' => '⋶',
-        'NotLeftTriangle' => '⋪',
-        'NotLeftTriangleBar' => '⧏̸',
-        'NotLeftTriangleEqual' => '⋬',
-        'NotLess' => '≮',
-        'NotLessEqual' => '≰',
-        'NotLessGreater' => '≸',
-        'NotLessLess' => '≪̸',
-        'NotLessSlantEqual' => '⩽̸',
-        'NotLessTilde' => '≴',
-        'NotNestedGreaterGreater' => '⪢̸',
-        'NotNestedLessLess' => '⪡̸',
-        'notni' => '∌',
-        'notniva' => '∌',
-        'notnivb' => '⋾',
-        'notnivc' => '⋽',
-        'NotPrecedes' => '⊀',
-        'NotPrecedesEqual' => '⪯̸',
-        'NotPrecedesSlantEqual' => '⋠',
-        'NotReverseElement' => '∌',
-        'NotRightTriangle' => '⋫',
-        'NotRightTriangleBar' => '⧐̸',
-        'NotRightTriangleEqual' => '⋭',
-        'NotSquareSubset' => '⊏̸',
-        'NotSquareSubsetEqual' => '⋢',
-        'NotSquareSuperset' => '⊐̸',
-        'NotSquareSupersetEqual' => '⋣',
-        'NotSubset' => '⊂⃒',
-        'NotSubsetEqual' => '⊈',
-        'NotSucceeds' => '⊁',
-        'NotSucceedsEqual' => '⪰̸',
-        'NotSucceedsSlantEqual' => '⋡',
-        'NotSucceedsTilde' => '≿̸',
-        'NotSuperset' => '⊃⃒',
-        'NotSupersetEqual' => '⊉',
-        'NotTilde' => '≁',
-        'NotTildeEqual' => '≄',
-        'NotTildeFullEqual' => '≇',
-        'NotTildeTilde' => '≉',
-        'NotVerticalBar' => '∤',
-        'npar' => '∦',
-        'nparallel' => '∦',
-        'nparsl' => '⫽⃥',
-        'npart' => '∂̸',
-        'npolint' => '⨔',
-        'npr' => '⊀',
-        'nprcue' => '⋠',
-        'npre' => '⪯̸',
-        'nprec' => '⊀',
-        'npreceq' => '⪯̸',
-        'nrArr' => '⇏',
-        'nrarr' => '↛',
-        'nrarrc' => '⤳̸',
-        'nrarrw' => '↝̸',
-        'nRightarrow' => '⇏',
-        'nrightarrow' => '↛',
-        'nrtri' => '⋫',
-        'nrtrie' => '⋭',
-        'nsc' => '⊁',
-        'nsccue' => '⋡',
-        'nsce' => '⪰̸',
-        'Nscr' => '𝒩',
-        'nscr' => '𝓃',
-        'nshortmid' => '∤',
-        'nshortparallel' => '∦',
-        'nsim' => '≁',
-        'nsime' => '≄',
-        'nsimeq' => '≄',
-        'nsmid' => '∤',
-        'nspar' => '∦',
-        'nsqsube' => '⋢',
-        'nsqsupe' => '⋣',
-        'nsub' => '⊄',
-        'nsubE' => '⫅̸',
-        'nsube' => '⊈',
-        'nsubset' => '⊂⃒',
-        'nsubseteq' => '⊈',
-        'nsubseteqq' => '⫅̸',
-        'nsucc' => '⊁',
-        'nsucceq' => '⪰̸',
-        'nsup' => '⊅',
-        'nsupE' => '⫆̸',
-        'nsupe' => '⊉',
-        'nsupset' => '⊃⃒',
-        'nsupseteq' => '⊉',
-        'nsupseteqq' => '⫆̸',
-        'ntgl' => '≹',
-        'Ntilde' => 'Ñ',
-        'Ntild' => 'Ñ',
-        'ntilde' => 'ñ',
-        'ntild' => 'ñ',
-        'ntlg' => '≸',
-        'ntriangleleft' => '⋪',
-        'ntrianglelefteq' => '⋬',
-        'ntriangleright' => '⋫',
-        'ntrianglerighteq' => '⋭',
-        'Nu' => 'Ν',
-        'nu' => 'ν',
-        'num' => '#',
-        'numero' => '№',
-        'numsp' => ' ',
-        'nvap' => '≍⃒',
-        'nVDash' => '⊯',
-        'nVdash' => '⊮',
-        'nvDash' => '⊭',
-        'nvdash' => '⊬',
-        'nvge' => '≥⃒',
-        'nvgt' => '>⃒',
-        'nvHarr' => '⤄',
-        'nvinfin' => '⧞',
-        'nvlArr' => '⤂',
-        'nvle' => '≤⃒',
-        'nvlt' => '<⃒',
-        'nvltrie' => '⊴⃒',
-        'nvrArr' => '⤃',
-        'nvrtrie' => '⊵⃒',
-        'nvsim' => '∼⃒',
-        'nwarhk' => '⤣',
-        'nwArr' => '⇖',
-        'nwarr' => '↖',
-        'nwarrow' => '↖',
-        'nwnear' => '⤧',
-        'Oacute' => 'Ó',
-        'Oacut' => 'Ó',
-        'oacute' => 'ó',
-        'oacut' => 'ó',
-        'oast' => '⊛',
-        'ocir' => 'ô',
-        'Ocirc' => 'Ô',
-        'Ocir' => 'Ô',
-        'ocirc' => 'ô',
-        'Ocy' => 'О',
-        'ocy' => 'о',
-        'odash' => '⊝',
-        'Odblac' => 'Ő',
-        'odblac' => 'ő',
-        'odiv' => '⨸',
-        'odot' => '⊙',
-        'odsold' => '⦼',
-        'OElig' => 'Œ',
-        'oelig' => 'œ',
-        'ofcir' => '⦿',
-        'Ofr' => '𝔒',
-        'ofr' => '𝔬',
-        'ogon' => '˛',
-        'Ograve' => 'Ò',
-        'Ograv' => 'Ò',
-        'ograve' => 'ò',
-        'ograv' => 'ò',
-        'ogt' => '⧁',
-        'ohbar' => '⦵',
-        'ohm' => 'Ω',
-        'oint' => '∮',
-        'olarr' => '↺',
-        'olcir' => '⦾',
-        'olcross' => '⦻',
-        'oline' => '‾',
-        'olt' => '⧀',
-        'Omacr' => 'Ō',
-        'omacr' => 'ō',
-        'Omega' => 'Ω',
-        'omega' => 'ω',
-        'Omicron' => 'Ο',
-        'omicron' => 'ο',
-        'omid' => '⦶',
-        'ominus' => '⊖',
-        'Oopf' => '𝕆',
-        'oopf' => '𝕠',
-        'opar' => '⦷',
-        'OpenCurlyDoubleQuote' => '“',
-        'OpenCurlyQuote' => '‘',
-        'operp' => '⦹',
-        'oplus' => '⊕',
-        'Or' => '⩔',
-        'or' => '∨',
-        'orarr' => '↻',
-        'ord' => 'º',
-        'order' => 'ℴ',
-        'orderof' => 'ℴ',
-        'ordf' => 'ª',
-        'ordm' => 'º',
-        'origof' => '⊶',
-        'oror' => '⩖',
-        'orslope' => '⩗',
-        'orv' => '⩛',
-        'oS' => 'Ⓢ',
-        'Oscr' => '𝒪',
-        'oscr' => 'ℴ',
-        'Oslash' => 'Ø',
-        'Oslas' => 'Ø',
-        'oslash' => 'ø',
-        'oslas' => 'ø',
-        'osol' => '⊘',
-        'Otilde' => 'Õ',
-        'Otild' => 'Õ',
-        'otilde' => 'õ',
-        'otild' => 'õ',
-        'Otimes' => '⨷',
-        'otimes' => '⊗',
-        'otimesas' => '⨶',
-        'Ouml' => 'Ö',
-        'Oum' => 'Ö',
-        'ouml' => 'ö',
-        'oum' => 'ö',
-        'ovbar' => '⌽',
-        'OverBar' => '‾',
-        'OverBrace' => '⏞',
-        'OverBracket' => '⎴',
-        'OverParenthesis' => '⏜',
-        'par' => '¶',
-        'para' => '¶',
-        'parallel' => '∥',
-        'parsim' => '⫳',
-        'parsl' => '⫽',
-        'part' => '∂',
-        'PartialD' => '∂',
-        'Pcy' => 'П',
-        'pcy' => 'п',
-        'percnt' => '%',
-        'period' => '.',
-        'permil' => '‰',
-        'perp' => '⊥',
-        'pertenk' => '‱',
-        'Pfr' => '𝔓',
-        'pfr' => '𝔭',
-        'Phi' => 'Φ',
-        'phi' => 'φ',
-        'phiv' => 'ϕ',
-        'phmmat' => 'ℳ',
-        'phone' => '☎',
-        'Pi' => 'Π',
-        'pi' => 'π',
-        'pitchfork' => '⋔',
-        'piv' => 'ϖ',
-        'planck' => 'ℏ',
-        'planckh' => 'ℎ',
-        'plankv' => 'ℏ',
-        'plus' => '+',
-        'plusacir' => '⨣',
-        'plusb' => '⊞',
-        'pluscir' => '⨢',
-        'plusdo' => '∔',
-        'plusdu' => '⨥',
-        'pluse' => '⩲',
-        'PlusMinus' => '±',
-        'plusmn' => '±',
-        'plusm' => '±',
-        'plussim' => '⨦',
-        'plustwo' => '⨧',
-        'pm' => '±',
-        'Poincareplane' => 'ℌ',
-        'pointint' => '⨕',
-        'Popf' => 'ℙ',
-        'popf' => '𝕡',
-        'pound' => '£',
-        'poun' => '£',
-        'Pr' => '⪻',
-        'pr' => '≺',
-        'prap' => '⪷',
-        'prcue' => '≼',
-        'prE' => '⪳',
-        'pre' => '⪯',
-        'prec' => '≺',
-        'precapprox' => '⪷',
-        'preccurlyeq' => '≼',
-        'Precedes' => '≺',
-        'PrecedesEqual' => '⪯',
-        'PrecedesSlantEqual' => '≼',
-        'PrecedesTilde' => '≾',
-        'preceq' => '⪯',
-        'precnapprox' => '⪹',
-        'precneqq' => '⪵',
-        'precnsim' => '⋨',
-        'precsim' => '≾',
-        'Prime' => '″',
-        'prime' => '′',
-        'primes' => 'ℙ',
-        'prnap' => '⪹',
-        'prnE' => '⪵',
-        'prnsim' => '⋨',
-        'prod' => '∏',
-        'Product' => '∏',
-        'profalar' => '⌮',
-        'profline' => '⌒',
-        'profsurf' => '⌓',
-        'prop' => '∝',
-        'Proportion' => '∷',
-        'Proportional' => '∝',
-        'propto' => '∝',
-        'prsim' => '≾',
-        'prurel' => '⊰',
-        'Pscr' => '𝒫',
-        'pscr' => '𝓅',
-        'Psi' => 'Ψ',
-        'psi' => 'ψ',
-        'puncsp' => ' ',
-        'Qfr' => '𝔔',
-        'qfr' => '𝔮',
-        'qint' => '⨌',
-        'Qopf' => 'ℚ',
-        'qopf' => '𝕢',
-        'qprime' => '⁗',
-        'Qscr' => '𝒬',
-        'qscr' => '𝓆',
-        'quaternions' => 'ℍ',
-        'quatint' => '⨖',
-        'quest' => '?',
-        'questeq' => '≟',
-        'QUOT' => '"',
-        'QUO' => '"',
-        'quot' => '"',
-        'quo' => '"',
-        'rAarr' => '⇛',
-        'race' => '∽̱',
-        'Racute' => 'Ŕ',
-        'racute' => 'ŕ',
-        'radic' => '√',
-        'raemptyv' => '⦳',
-        'Rang' => '⟫',
-        'rang' => '⟩',
-        'rangd' => '⦒',
-        'range' => '⦥',
-        'rangle' => '⟩',
-        'raquo' => '»',
-        'raqu' => '»',
-        'Rarr' => '↠',
-        'rArr' => '⇒',
-        'rarr' => '→',
-        'rarrap' => '⥵',
-        'rarrb' => '⇥',
-        'rarrbfs' => '⤠',
-        'rarrc' => '⤳',
-        'rarrfs' => '⤞',
-        'rarrhk' => '↪',
-        'rarrlp' => '↬',
-        'rarrpl' => '⥅',
-        'rarrsim' => '⥴',
-        'Rarrtl' => '⤖',
-        'rarrtl' => '↣',
-        'rarrw' => '↝',
-        'rAtail' => '⤜',
-        'ratail' => '⤚',
-        'ratio' => '∶',
-        'rationals' => 'ℚ',
-        'RBarr' => '⤐',
-        'rBarr' => '⤏',
-        'rbarr' => '⤍',
-        'rbbrk' => '❳',
-        'rbrace' => '}',
-        'rbrack' => ']',
-        'rbrke' => '⦌',
-        'rbrksld' => '⦎',
-        'rbrkslu' => '⦐',
-        'Rcaron' => 'Ř',
-        'rcaron' => 'ř',
-        'Rcedil' => 'Ŗ',
-        'rcedil' => 'ŗ',
-        'rceil' => '⌉',
-        'rcub' => '}',
-        'Rcy' => 'Р',
-        'rcy' => 'р',
-        'rdca' => '⤷',
-        'rdldhar' => '⥩',
-        'rdquo' => '”',
-        'rdquor' => '”',
-        'rdsh' => '↳',
-        'Re' => 'ℜ',
-        'real' => 'ℜ',
-        'realine' => 'ℛ',
-        'realpart' => 'ℜ',
-        'reals' => 'ℝ',
-        'rect' => '▭',
-        'REG' => '®',
-        'RE' => '®',
-        'reg' => '®',
-        're' => '®',
-        'ReverseElement' => '∋',
-        'ReverseEquilibrium' => '⇋',
-        'ReverseUpEquilibrium' => '⥯',
-        'rfisht' => '⥽',
-        'rfloor' => '⌋',
-        'Rfr' => 'ℜ',
-        'rfr' => '𝔯',
-        'rHar' => '⥤',
-        'rhard' => '⇁',
-        'rharu' => '⇀',
-        'rharul' => '⥬',
-        'Rho' => 'Ρ',
-        'rho' => 'ρ',
-        'rhov' => 'ϱ',
-        'RightAngleBracket' => '⟩',
-        'RightArrow' => '→',
-        'Rightarrow' => '⇒',
-        'rightarrow' => '→',
-        'RightArrowBar' => '⇥',
-        'RightArrowLeftArrow' => '⇄',
-        'rightarrowtail' => '↣',
-        'RightCeiling' => '⌉',
-        'RightDoubleBracket' => '⟧',
-        'RightDownTeeVector' => '⥝',
-        'RightDownVector' => '⇂',
-        'RightDownVectorBar' => '⥕',
-        'RightFloor' => '⌋',
-        'rightharpoondown' => '⇁',
-        'rightharpoonup' => '⇀',
-        'rightleftarrows' => '⇄',
-        'rightleftharpoons' => '⇌',
-        'rightrightarrows' => '⇉',
-        'rightsquigarrow' => '↝',
-        'RightTee' => '⊢',
-        'RightTeeArrow' => '↦',
-        'RightTeeVector' => '⥛',
-        'rightthreetimes' => '⋌',
-        'RightTriangle' => '⊳',
-        'RightTriangleBar' => '⧐',
-        'RightTriangleEqual' => '⊵',
-        'RightUpDownVector' => '⥏',
-        'RightUpTeeVector' => '⥜',
-        'RightUpVector' => '↾',
-        'RightUpVectorBar' => '⥔',
-        'RightVector' => '⇀',
-        'RightVectorBar' => '⥓',
-        'ring' => '˚',
-        'risingdotseq' => '≓',
-        'rlarr' => '⇄',
-        'rlhar' => '⇌',
-        'rlm' => '‏',
-        'rmoust' => '⎱',
-        'rmoustache' => '⎱',
-        'rnmid' => '⫮',
-        'roang' => '⟭',
-        'roarr' => '⇾',
-        'robrk' => '⟧',
-        'ropar' => '⦆',
-        'Ropf' => 'ℝ',
-        'ropf' => '𝕣',
-        'roplus' => '⨮',
-        'rotimes' => '⨵',
-        'RoundImplies' => '⥰',
-        'rpar' => ')',
-        'rpargt' => '⦔',
-        'rppolint' => '⨒',
-        'rrarr' => '⇉',
-        'Rrightarrow' => '⇛',
-        'rsaquo' => '›',
-        'Rscr' => 'ℛ',
-        'rscr' => '𝓇',
-        'Rsh' => '↱',
-        'rsh' => '↱',
-        'rsqb' => ']',
-        'rsquo' => '’',
-        'rsquor' => '’',
-        'rthree' => '⋌',
-        'rtimes' => '⋊',
-        'rtri' => '▹',
-        'rtrie' => '⊵',
-        'rtrif' => '▸',
-        'rtriltri' => '⧎',
-        'RuleDelayed' => '⧴',
-        'ruluhar' => '⥨',
-        'rx' => '℞',
-        'Sacute' => 'Ś',
-        'sacute' => 'ś',
-        'sbquo' => '‚',
-        'Sc' => '⪼',
-        'sc' => '≻',
-        'scap' => '⪸',
-        'Scaron' => 'Š',
-        'scaron' => 'š',
-        'sccue' => '≽',
-        'scE' => '⪴',
-        'sce' => '⪰',
-        'Scedil' => 'Ş',
-        'scedil' => 'ş',
-        'Scirc' => 'Ŝ',
-        'scirc' => 'ŝ',
-        'scnap' => '⪺',
-        'scnE' => '⪶',
-        'scnsim' => '⋩',
-        'scpolint' => '⨓',
-        'scsim' => '≿',
-        'Scy' => 'С',
-        'scy' => 'с',
-        'sdot' => '⋅',
-        'sdotb' => '⊡',
-        'sdote' => '⩦',
-        'searhk' => '⤥',
-        'seArr' => '⇘',
-        'searr' => '↘',
-        'searrow' => '↘',
-        'sect' => '§',
-        'sec' => '§',
-        'semi' => ';',
-        'seswar' => '⤩',
-        'setminus' => '∖',
-        'setmn' => '∖',
-        'sext' => '✶',
-        'Sfr' => '𝔖',
-        'sfr' => '𝔰',
-        'sfrown' => '⌢',
-        'sharp' => '♯',
-        'SHCHcy' => 'Щ',
-        'shchcy' => 'щ',
-        'SHcy' => 'Ш',
-        'shcy' => 'ш',
-        'ShortDownArrow' => '↓',
-        'ShortLeftArrow' => '←',
-        'shortmid' => '∣',
-        'shortparallel' => '∥',
-        'ShortRightArrow' => '→',
-        'ShortUpArrow' => '↑',
-        'shy' => '­',
-        'sh' => '­',
-        'Sigma' => 'Σ',
-        'sigma' => 'σ',
-        'sigmaf' => 'ς',
-        'sigmav' => 'ς',
-        'sim' => '∼',
-        'simdot' => '⩪',
-        'sime' => '≃',
-        'simeq' => '≃',
-        'simg' => '⪞',
-        'simgE' => '⪠',
-        'siml' => '⪝',
-        'simlE' => '⪟',
-        'simne' => '≆',
-        'simplus' => '⨤',
-        'simrarr' => '⥲',
-        'slarr' => '←',
-        'SmallCircle' => '∘',
-        'smallsetminus' => '∖',
-        'smashp' => '⨳',
-        'smeparsl' => '⧤',
-        'smid' => '∣',
-        'smile' => '⌣',
-        'smt' => '⪪',
-        'smte' => '⪬',
-        'smtes' => '⪬︀',
-        'SOFTcy' => 'Ь',
-        'softcy' => 'ь',
-        'sol' => '/',
-        'solb' => '⧄',
-        'solbar' => '⌿',
-        'Sopf' => '𝕊',
-        'sopf' => '𝕤',
-        'spades' => '♠',
-        'spadesuit' => '♠',
-        'spar' => '∥',
-        'sqcap' => '⊓',
-        'sqcaps' => '⊓︀',
-        'sqcup' => '⊔',
-        'sqcups' => '⊔︀',
-        'Sqrt' => '√',
-        'sqsub' => '⊏',
-        'sqsube' => '⊑',
-        'sqsubset' => '⊏',
-        'sqsubseteq' => '⊑',
-        'sqsup' => '⊐',
-        'sqsupe' => '⊒',
-        'sqsupset' => '⊐',
-        'sqsupseteq' => '⊒',
-        'squ' => '□',
-        'Square' => '□',
-        'square' => '□',
-        'SquareIntersection' => '⊓',
-        'SquareSubset' => '⊏',
-        'SquareSubsetEqual' => '⊑',
-        'SquareSuperset' => '⊐',
-        'SquareSupersetEqual' => '⊒',
-        'SquareUnion' => '⊔',
-        'squarf' => '▪',
-        'squf' => '▪',
-        'srarr' => '→',
-        'Sscr' => '𝒮',
-        'sscr' => '𝓈',
-        'ssetmn' => '∖',
-        'ssmile' => '⌣',
-        'sstarf' => '⋆',
-        'Star' => '⋆',
-        'star' => '☆',
-        'starf' => '★',
-        'straightepsilon' => 'ϵ',
-        'straightphi' => 'ϕ',
-        'strns' => '¯',
-        'Sub' => '⋐',
-        'sub' => '⊂',
-        'subdot' => '⪽',
-        'subE' => '⫅',
-        'sube' => '⊆',
-        'subedot' => '⫃',
-        'submult' => '⫁',
-        'subnE' => '⫋',
-        'subne' => '⊊',
-        'subplus' => '⪿',
-        'subrarr' => '⥹',
-        'Subset' => '⋐',
-        'subset' => '⊂',
-        'subseteq' => '⊆',
-        'subseteqq' => '⫅',
-        'SubsetEqual' => '⊆',
-        'subsetneq' => '⊊',
-        'subsetneqq' => '⫋',
-        'subsim' => '⫇',
-        'subsub' => '⫕',
-        'subsup' => '⫓',
-        'succ' => '≻',
-        'succapprox' => '⪸',
-        'succcurlyeq' => '≽',
-        'Succeeds' => '≻',
-        'SucceedsEqual' => '⪰',
-        'SucceedsSlantEqual' => '≽',
-        'SucceedsTilde' => '≿',
-        'succeq' => '⪰',
-        'succnapprox' => '⪺',
-        'succneqq' => '⪶',
-        'succnsim' => '⋩',
-        'succsim' => '≿',
-        'SuchThat' => '∋',
-        'Sum' => '∑',
-        'sum' => '∑',
-        'sung' => '♪',
-        'Sup' => '⋑',
-        'sup' => '³',
-        'sup1' => '¹',
-        'sup2' => '²',
-        'sup3' => '³',
-        'supdot' => '⪾',
-        'supdsub' => '⫘',
-        'supE' => '⫆',
-        'supe' => '⊇',
-        'supedot' => '⫄',
-        'Superset' => '⊃',
-        'SupersetEqual' => '⊇',
-        'suphsol' => '⟉',
-        'suphsub' => '⫗',
-        'suplarr' => '⥻',
-        'supmult' => '⫂',
-        'supnE' => '⫌',
-        'supne' => '⊋',
-        'supplus' => '⫀',
-        'Supset' => '⋑',
-        'supset' => '⊃',
-        'supseteq' => '⊇',
-        'supseteqq' => '⫆',
-        'supsetneq' => '⊋',
-        'supsetneqq' => '⫌',
-        'supsim' => '⫈',
-        'supsub' => '⫔',
-        'supsup' => '⫖',
-        'swarhk' => '⤦',
-        'swArr' => '⇙',
-        'swarr' => '↙',
-        'swarrow' => '↙',
-        'swnwar' => '⤪',
-        'szlig' => 'ß',
-        'szli' => 'ß',
-        'Tab' => '	',
-        'target' => '⌖',
-        'Tau' => 'Τ',
-        'tau' => 'τ',
-        'tbrk' => '⎴',
-        'Tcaron' => 'Ť',
-        'tcaron' => 'ť',
-        'Tcedil' => 'Ţ',
-        'tcedil' => 'ţ',
-        'Tcy' => 'Т',
-        'tcy' => 'т',
-        'tdot' => '⃛',
-        'telrec' => '⌕',
-        'Tfr' => '𝔗',
-        'tfr' => '𝔱',
-        'there4' => '∴',
-        'Therefore' => '∴',
-        'therefore' => '∴',
-        'Theta' => 'Θ',
-        'theta' => 'θ',
-        'thetasym' => 'ϑ',
-        'thetav' => 'ϑ',
-        'thickapprox' => '≈',
-        'thicksim' => '∼',
-        'ThickSpace' => '  ',
-        'thinsp' => ' ',
-        'ThinSpace' => ' ',
-        'thkap' => '≈',
-        'thksim' => '∼',
-        'THORN' => 'Þ',
-        'THOR' => 'Þ',
-        'thorn' => 'þ',
-        'thor' => 'þ',
-        'Tilde' => '∼',
-        'tilde' => '˜',
-        'TildeEqual' => '≃',
-        'TildeFullEqual' => '≅',
-        'TildeTilde' => '≈',
-        'times' => '×',
-        'time' => '×',
-        'timesb' => '⊠',
-        'timesbar' => '⨱',
-        'timesd' => '⨰',
-        'tint' => '∭',
-        'toea' => '⤨',
-        'top' => '⊤',
-        'topbot' => '⌶',
-        'topcir' => '⫱',
-        'Topf' => '𝕋',
-        'topf' => '𝕥',
-        'topfork' => '⫚',
-        'tosa' => '⤩',
-        'tprime' => '‴',
-        'TRADE' => '™',
-        'trade' => '™',
-        'triangle' => '▵',
-        'triangledown' => '▿',
-        'triangleleft' => '◃',
-        'trianglelefteq' => '⊴',
-        'triangleq' => '≜',
-        'triangleright' => '▹',
-        'trianglerighteq' => '⊵',
-        'tridot' => '◬',
-        'trie' => '≜',
-        'triminus' => '⨺',
-        'TripleDot' => '⃛',
-        'triplus' => '⨹',
-        'trisb' => '⧍',
-        'tritime' => '⨻',
-        'trpezium' => '⏢',
-        'Tscr' => '𝒯',
-        'tscr' => '𝓉',
-        'TScy' => 'Ц',
-        'tscy' => 'ц',
-        'TSHcy' => 'Ћ',
-        'tshcy' => 'ћ',
-        'Tstrok' => 'Ŧ',
-        'tstrok' => 'ŧ',
-        'twixt' => '≬',
-        'twoheadleftarrow' => '↞',
-        'twoheadrightarrow' => '↠',
-        'Uacute' => 'Ú',
-        'Uacut' => 'Ú',
-        'uacute' => 'ú',
-        'uacut' => 'ú',
-        'Uarr' => '↟',
-        'uArr' => '⇑',
-        'uarr' => '↑',
-        'Uarrocir' => '⥉',
-        'Ubrcy' => 'Ў',
-        'ubrcy' => 'ў',
-        'Ubreve' => 'Ŭ',
-        'ubreve' => 'ŭ',
-        'Ucirc' => 'Û',
-        'Ucir' => 'Û',
-        'ucirc' => 'û',
-        'ucir' => 'û',
-        'Ucy' => 'У',
-        'ucy' => 'у',
-        'udarr' => '⇅',
-        'Udblac' => 'Ű',
-        'udblac' => 'ű',
-        'udhar' => '⥮',
-        'ufisht' => '⥾',
-        'Ufr' => '𝔘',
-        'ufr' => '𝔲',
-        'Ugrave' => 'Ù',
-        'Ugrav' => 'Ù',
-        'ugrave' => 'ù',
-        'ugrav' => 'ù',
-        'uHar' => '⥣',
-        'uharl' => '↿',
-        'uharr' => '↾',
-        'uhblk' => '▀',
-        'ulcorn' => '⌜',
-        'ulcorner' => '⌜',
-        'ulcrop' => '⌏',
-        'ultri' => '◸',
-        'Umacr' => 'Ū',
-        'umacr' => 'ū',
-        'uml' => '¨',
-        'um' => '¨',
-        'UnderBar' => '_',
-        'UnderBrace' => '⏟',
-        'UnderBracket' => '⎵',
-        'UnderParenthesis' => '⏝',
-        'Union' => '⋃',
-        'UnionPlus' => '⊎',
-        'Uogon' => 'Ų',
-        'uogon' => 'ų',
-        'Uopf' => '𝕌',
-        'uopf' => '𝕦',
-        'UpArrow' => '↑',
-        'Uparrow' => '⇑',
-        'uparrow' => '↑',
-        'UpArrowBar' => '⤒',
-        'UpArrowDownArrow' => '⇅',
-        'UpDownArrow' => '↕',
-        'Updownarrow' => '⇕',
-        'updownarrow' => '↕',
-        'UpEquilibrium' => '⥮',
-        'upharpoonleft' => '↿',
-        'upharpoonright' => '↾',
-        'uplus' => '⊎',
-        'UpperLeftArrow' => '↖',
-        'UpperRightArrow' => '↗',
-        'Upsi' => 'ϒ',
-        'upsi' => 'υ',
-        'upsih' => 'ϒ',
-        'Upsilon' => 'Υ',
-        'upsilon' => 'υ',
-        'UpTee' => '⊥',
-        'UpTeeArrow' => '↥',
-        'upuparrows' => '⇈',
-        'urcorn' => '⌝',
-        'urcorner' => '⌝',
-        'urcrop' => '⌎',
-        'Uring' => 'Ů',
-        'uring' => 'ů',
-        'urtri' => '◹',
-        'Uscr' => '𝒰',
-        'uscr' => '𝓊',
-        'utdot' => '⋰',
-        'Utilde' => 'Ũ',
-        'utilde' => 'ũ',
-        'utri' => '▵',
-        'utrif' => '▴',
-        'uuarr' => '⇈',
-        'Uuml' => 'Ü',
-        'Uum' => 'Ü',
-        'uuml' => 'ü',
-        'uum' => 'ü',
-        'uwangle' => '⦧',
-        'vangrt' => '⦜',
-        'varepsilon' => 'ϵ',
-        'varkappa' => 'ϰ',
-        'varnothing' => '∅',
-        'varphi' => 'ϕ',
-        'varpi' => 'ϖ',
-        'varpropto' => '∝',
-        'vArr' => '⇕',
-        'varr' => '↕',
-        'varrho' => 'ϱ',
-        'varsigma' => 'ς',
-        'varsubsetneq' => '⊊︀',
-        'varsubsetneqq' => '⫋︀',
-        'varsupsetneq' => '⊋︀',
-        'varsupsetneqq' => '⫌︀',
-        'vartheta' => 'ϑ',
-        'vartriangleleft' => '⊲',
-        'vartriangleright' => '⊳',
-        'Vbar' => '⫫',
-        'vBar' => '⫨',
-        'vBarv' => '⫩',
-        'Vcy' => 'В',
-        'vcy' => 'в',
-        'VDash' => '⊫',
-        'Vdash' => '⊩',
-        'vDash' => '⊨',
-        'vdash' => '⊢',
-        'Vdashl' => '⫦',
-        'Vee' => '⋁',
-        'vee' => '∨',
-        'veebar' => '⊻',
-        'veeeq' => '≚',
-        'vellip' => '⋮',
-        'Verbar' => '‖',
-        'verbar' => '|',
-        'Vert' => '‖',
-        'vert' => '|',
-        'VerticalBar' => '∣',
-        'VerticalLine' => '|',
-        'VerticalSeparator' => '❘',
-        'VerticalTilde' => '≀',
-        'VeryThinSpace' => ' ',
-        'Vfr' => '𝔙',
-        'vfr' => '𝔳',
-        'vltri' => '⊲',
-        'vnsub' => '⊂⃒',
-        'vnsup' => '⊃⃒',
-        'Vopf' => '𝕍',
-        'vopf' => '𝕧',
-        'vprop' => '∝',
-        'vrtri' => '⊳',
-        'Vscr' => '𝒱',
-        'vscr' => '𝓋',
-        'vsubnE' => '⫋︀',
-        'vsubne' => '⊊︀',
-        'vsupnE' => '⫌︀',
-        'vsupne' => '⊋︀',
-        'Vvdash' => '⊪',
-        'vzigzag' => '⦚',
-        'Wcirc' => 'Ŵ',
-        'wcirc' => 'ŵ',
-        'wedbar' => '⩟',
-        'Wedge' => '⋀',
-        'wedge' => '∧',
-        'wedgeq' => '≙',
-        'weierp' => '℘',
-        'Wfr' => '𝔚',
-        'wfr' => '𝔴',
-        'Wopf' => '𝕎',
-        'wopf' => '𝕨',
-        'wp' => '℘',
-        'wr' => '≀',
-        'wreath' => '≀',
-        'Wscr' => '𝒲',
-        'wscr' => '𝓌',
-        'xcap' => '⋂',
-        'xcirc' => '◯',
-        'xcup' => '⋃',
-        'xdtri' => '▽',
-        'Xfr' => '𝔛',
-        'xfr' => '𝔵',
-        'xhArr' => '⟺',
-        'xharr' => '⟷',
-        'Xi' => 'Ξ',
-        'xi' => 'ξ',
-        'xlArr' => '⟸',
-        'xlarr' => '⟵',
-        'xmap' => '⟼',
-        'xnis' => '⋻',
-        'xodot' => '⨀',
-        'Xopf' => '𝕏',
-        'xopf' => '𝕩',
-        'xoplus' => '⨁',
-        'xotime' => '⨂',
-        'xrArr' => '⟹',
-        'xrarr' => '⟶',
-        'Xscr' => '𝒳',
-        'xscr' => '𝓍',
-        'xsqcup' => '⨆',
-        'xuplus' => '⨄',
-        'xutri' => '△',
-        'xvee' => '⋁',
-        'xwedge' => '⋀',
-        'Yacute' => 'Ý',
-        'Yacut' => 'Ý',
-        'yacute' => 'ý',
-        'yacut' => 'ý',
-        'YAcy' => 'Я',
-        'yacy' => 'я',
-        'Ycirc' => 'Ŷ',
-        'ycirc' => 'ŷ',
-        'Ycy' => 'Ы',
-        'ycy' => 'ы',
-        'yen' => '¥',
-        'ye' => '¥',
-        'Yfr' => '𝔜',
-        'yfr' => '𝔶',
-        'YIcy' => 'Ї',
-        'yicy' => 'ї',
-        'Yopf' => '𝕐',
-        'yopf' => '𝕪',
-        'Yscr' => '𝒴',
-        'yscr' => '𝓎',
-        'YUcy' => 'Ю',
-        'yucy' => 'ю',
-        'Yuml' => 'Ÿ',
-        'yuml' => 'ÿ',
-        'yum' => 'ÿ',
-        'Zacute' => 'Ź',
-        'zacute' => 'ź',
-        'Zcaron' => 'Ž',
-        'zcaron' => 'ž',
-        'Zcy' => 'З',
-        'zcy' => 'з',
-        'Zdot' => 'Ż',
-        'zdot' => 'ż',
-        'zeetrf' => 'ℨ',
-        'ZeroWidthSpace' => '​',
-        'Zeta' => 'Ζ',
-        'zeta' => 'ζ',
-        'Zfr' => 'ℨ',
-        'zfr' => '𝔷',
-        'ZHcy' => 'Ж',
-        'zhcy' => 'ж',
-        'zigrarr' => '⇝',
-        'Zopf' => 'ℤ',
-        'zopf' => '𝕫',
-        'Zscr' => '𝒵',
-        'zscr' => '𝓏',
-        'zwj' => '‍',
-        'zwnj' => '‌'
-    );
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Exception.php b/vendor/masterminds/html5/src/HTML5/Exception.php
deleted file mode 100644
index 8f33126..0000000
--- a/vendor/masterminds/html5/src/HTML5/Exception.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Masterminds\HTML5;
-
-/**
- * The base exception for the HTML5 project.
- */
-class Exception extends \Exception
-{
-}
diff --git a/vendor/masterminds/html5/src/HTML5/InstructionProcessor.php b/vendor/masterminds/html5/src/HTML5/InstructionProcessor.php
deleted file mode 100644
index ac6a23c..0000000
--- a/vendor/masterminds/html5/src/HTML5/InstructionProcessor.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * A handler for processor instructions.
- */
-namespace Masterminds\HTML5;
-
-/**
- * Provide an processor to handle embedded instructions.
- *
- * XML defines a mechanism for inserting instructions (like PHP) into a
- * document. These are called "Processor Instructions." The HTML5 parser
- * provides an opportunity to handle these processor instructions during
- * the tree-building phase (before the DOM is constructed), which makes
- * it possible to alter the document as it is being created.
- *
- * One could, for example, use this mechanism to execute well-formed PHP
- * code embedded inside of an HTML5 document.
- */
-interface InstructionProcessor
-{
-
-    /**
-     * Process an individual processing instruction.
-     *
-     * The process() function is responsible for doing the following:
-     * - Determining whether $name is an instruction type it can handle.
-     * - Determining what to do with the data passed in.
-     * - Making any subsequent modifications to the DOM by modifying the
-     * DOMElement or its attached DOM tree.
-     *
-     * @param DOMElement $element
-     *            The parent element for the current processing instruction.
-     * @param string $name
-     *            The instruction's name. E.g. `&lt;?php` has the name `php`.
-     * @param string $data
-     *            All of the data between the opening and closing PI marks.
-     * @return DOMElement The element that should be considered "Current". This may just be
-     *         the element passed in, but if the processor added more elements,
-     *         it may choose to reset the current element to one of the elements
-     *         it created. (When in doubt, return the element passed in.)
-     */
-    public function process(\DOMElement $element, $name, $data);
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/CharacterReference.php b/vendor/masterminds/html5/src/HTML5/Parser/CharacterReference.php
deleted file mode 100644
index c1617e7..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/CharacterReference.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Parser;
-
-use Masterminds\HTML5\Entities;
-
-/**
- * Manage entity references.
- *
- * This is a simple resolver for HTML5 character reference entitites.
- * See \Masterminds\HTML5\Entities for the list of supported entities.
- */
-class CharacterReference
-{
-
-    protected static $numeric_mask = array(
-        0x0,
-        0x2FFFF,
-        0,
-        0xFFFF
-    );
-
-    /**
-     * Given a name (e.g.
-     * 'amp'), lookup the UTF-8 character ('&')
-     *
-     * @param string $name
-     *            The name to look up.
-     * @return string The character sequence. In UTF-8 this may be more than one byte.
-     */
-    public static function lookupName($name)
-    {
-        // Do we really want to return NULL here? or FFFD
-        return isset(Entities::$byName[$name]) ? Entities::$byName[$name] : null;
-    }
-
-    /**
-     * Given a Unicode codepoint, return the UTF-8 character.
-     *
-     * (NOT USED ANYWHERE)
-     */
-    /*
-     * public static function lookupCode($codePoint) { return 'POINT'; }
-     */
-
-    /**
-     * Given a decimal number, return the UTF-8 character.
-     */
-    public static function lookupDecimal($int)
-    {
-        $entity = '&#' . $int . ';';
-        // UNTESTED: This may fail on some planes. Couldn't find full documentation
-        // on the value of the mask array.
-        return mb_decode_numericentity($entity, static::$numeric_mask, 'utf-8');
-    }
-
-    /**
-     * Given a hexidecimal number, return the UTF-8 character.
-     */
-    public static function lookupHex($hexdec)
-    {
-        return static::lookupDecimal(hexdec($hexdec));
-    }
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/DOMTreeBuilder.php b/vendor/masterminds/html5/src/HTML5/Parser/DOMTreeBuilder.php
deleted file mode 100644
index ccad229..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/DOMTreeBuilder.php
+++ /dev/null
@@ -1,684 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Parser;
-
-use Masterminds\HTML5\Elements;
-
-/**
- * Create an HTML5 DOM tree from events.
- *
- * This attempts to create a DOM from events emitted by a parser. This
- * attempts (but does not guarantee) to up-convert older HTML documents
- * to HTML5. It does this by applying HTML5's rules, but it will not
- * change the architecture of the document itself.
- *
- * Many of the error correction and quirks features suggested in the specification
- * are implemented herein; however, not all of them are. Since we do not
- * assume a graphical user agent, no presentation-specific logic is conducted
- * during tree building.
- *
- * FIXME: The present tree builder does not exactly follow the state machine rules
- * for insert modes as outlined in the HTML5 spec. The processor needs to be
- * re-written to accomodate this. See, for example, the Go language HTML5
- * parser.
- */
-class DOMTreeBuilder implements EventHandler
-{
-    /**
-     * Defined in http://www.w3.org/TR/html51/infrastructure.html#html-namespace-0
-     */
-    const NAMESPACE_HTML = 'http://www.w3.org/1999/xhtml';
-
-    const NAMESPACE_MATHML = 'http://www.w3.org/1998/Math/MathML';
-
-    const NAMESPACE_SVG = 'http://www.w3.org/2000/svg';
-
-    const NAMESPACE_XLINK = 'http://www.w3.org/1999/xlink';
-
-    const NAMESPACE_XML = 'http://www.w3.org/XML/1998/namespace';
-
-    const NAMESPACE_XMLNS = 'http://www.w3.org/2000/xmlns/';
-
-    const OPT_DISABLE_HTML_NS = 'disable_html_ns';
-
-    const OPT_TARGET_DOC = 'target_document';
-
-    const OPT_IMPLICIT_NS = 'implicit_namespaces';
-
-    /**
-     * Holds the HTML5 element names that causes a namespace switch
-     *
-     * @var array
-     */
-    protected $nsRoots = array(
-        'html' => self::NAMESPACE_HTML,
-        'svg' => self::NAMESPACE_SVG,
-        'math' => self::NAMESPACE_MATHML
-    );
-
-    /**
-     * Holds the always available namespaces (which does not require the XMLNS declaration).
-     *
-     * @var array
-     */
-    protected $implicitNamespaces = array(
-        'xml' => self::NAMESPACE_XML,
-        'xmlns' => self::NAMESPACE_XMLNS,
-        'xlink' => self::NAMESPACE_XLINK
-    );
-
-    /**
-     * Holds a stack of currently active namespaces.
-     *
-     * @var array
-     */
-    protected $nsStack = array();
-
-    /**
-     * Holds the number of namespaces declared by a node.
-     *
-     * @var array
-     */
-    protected $pushes = array();
-
-    /**
-     * Defined in 8.2.5.
-     */
-    const IM_INITIAL = 0;
-
-    const IM_BEFORE_HTML = 1;
-
-    const IM_BEFORE_HEAD = 2;
-
-    const IM_IN_HEAD = 3;
-
-    const IM_IN_HEAD_NOSCRIPT = 4;
-
-    const IM_AFTER_HEAD = 5;
-
-    const IM_IN_BODY = 6;
-
-    const IM_TEXT = 7;
-
-    const IM_IN_TABLE = 8;
-
-    const IM_IN_TABLE_TEXT = 9;
-
-    const IM_IN_CAPTION = 10;
-
-    const IM_IN_COLUMN_GROUP = 11;
-
-    const IM_IN_TABLE_BODY = 12;
-
-    const IM_IN_ROW = 13;
-
-    const IM_IN_CELL = 14;
-
-    const IM_IN_SELECT = 15;
-
-    const IM_IN_SELECT_IN_TABLE = 16;
-
-    const IM_AFTER_BODY = 17;
-
-    const IM_IN_FRAMESET = 18;
-
-    const IM_AFTER_FRAMESET = 19;
-
-    const IM_AFTER_AFTER_BODY = 20;
-
-    const IM_AFTER_AFTER_FRAMESET = 21;
-
-    const IM_IN_SVG = 22;
-
-    const IM_IN_MATHML = 23;
-
-    protected $options = array();
-
-    protected $stack = array();
-
-    protected $current; // Pointer in the tag hierarchy.
-    protected $doc;
-
-    protected $frag;
-
-    protected $processor;
-
-    protected $insertMode = 0;
-
-    /**
-     * Track if we are in an element that allows only inline child nodes
-     * @var string|null
-     */
-    protected $onlyInline;
-
-    /**
-     * Quirks mode is enabled by default.
-     * Any document that is missing the
-     * DT will be considered to be in quirks mode.
-     */
-    protected $quirks = true;
-
-    protected $errors = array();
-
-    public function __construct($isFragment = false, array $options = array())
-    {
-        $this->options = $options;
-
-        if (isset($options[self::OPT_TARGET_DOC])) {
-            $this->doc = $options[self::OPT_TARGET_DOC];
-        } else {
-            $impl = new \DOMImplementation();
-            // XXX:
-            // Create the doctype. For now, we are always creating HTML5
-            // documents, and attempting to up-convert any older DTDs to HTML5.
-            $dt = $impl->createDocumentType('html');
-            // $this->doc = \DOMImplementation::createDocument(NULL, 'html', $dt);
-            $this->doc = $impl->createDocument(null, null, $dt);
-        }
-        $this->errors = array();
-
-        $this->current = $this->doc; // ->documentElement;
-
-        // Create a rules engine for tags.
-        $this->rules = new TreeBuildingRules($this->doc);
-
-        $implicitNS = array();
-        if (isset($this->options[self::OPT_IMPLICIT_NS])) {
-            $implicitNS = $this->options[self::OPT_IMPLICIT_NS];
-        } elseif (isset($this->options["implicitNamespaces"])) {
-            $implicitNS = $this->options["implicitNamespaces"];
-        }
-
-        // Fill $nsStack with the defalut HTML5 namespaces, plus the "implicitNamespaces" array taken form $options
-        array_unshift($this->nsStack, $implicitNS + array(
-            '' => self::NAMESPACE_HTML
-        ) + $this->implicitNamespaces);
-
-        if ($isFragment) {
-            $this->insertMode = static::IM_IN_BODY;
-            $this->frag = $this->doc->createDocumentFragment();
-            $this->current = $this->frag;
-        }
-    }
-
-    /**
-     * Get the document.
-     */
-    public function document()
-    {
-        return $this->doc;
-    }
-
-    /**
-     * Get the DOM fragment for the body.
-     *
-     * This returns a DOMNodeList because a fragment may have zero or more
-     * DOMNodes at its root.
-     *
-     * @see http://www.w3.org/TR/2012/CR-html5-20121217/syntax.html#concept-frag-parse-context
-     *
-     * @return \DOMFragmentDocumentFragment
-     */
-    public function fragment()
-    {
-        return $this->frag;
-    }
-
-    /**
-     * Provide an instruction processor.
-     *
-     * This is used for handling Processor Instructions as they are
-     * inserted. If omitted, PI's are inserted directly into the DOM tree.
-     */
-    public function setInstructionProcessor(\Masterminds\HTML5\InstructionProcessor $proc)
-    {
-        $this->processor = $proc;
-    }
-
-    public function doctype($name, $idType = 0, $id = null, $quirks = false)
-    {
-        // This is used solely for setting quirks mode. Currently we don't
-        // try to preserve the inbound DT. We convert it to HTML5.
-        $this->quirks = $quirks;
-
-        if ($this->insertMode > static::IM_INITIAL) {
-            $this->parseError("Illegal placement of DOCTYPE tag. Ignoring: " . $name);
-
-            return;
-        }
-
-        $this->insertMode = static::IM_BEFORE_HTML;
-    }
-
-    /**
-     * Process the start tag.
-     *
-     * @todo - XMLNS namespace handling (we need to parse, even if it's not valid)
-     *       - XLink, MathML and SVG namespace handling
-     *       - Omission rules: 8.1.2.4 Optional tags
-     */
-    public function startTag($name, $attributes = array(), $selfClosing = false)
-    {
-        // fprintf(STDOUT, $name);
-        $lname = $this->normalizeTagName($name);
-
-        // Make sure we have an html element.
-        if (! $this->doc->documentElement && $name !== 'html' && ! $this->frag) {
-            $this->startTag('html');
-        }
-
-        // Set quirks mode if we're at IM_INITIAL with no doctype.
-        if ($this->insertMode == static::IM_INITIAL) {
-            $this->quirks = true;
-            $this->parseError("No DOCTYPE specified.");
-        }
-
-        // SPECIAL TAG HANDLING:
-        // Spec says do this, and "don't ask."
-        if ($name == 'image') {
-            $name = 'img';
-        }
-
-        // Autoclose p tags where appropriate.
-        if ($this->insertMode >= static::IM_IN_BODY && Elements::isA($name, Elements::AUTOCLOSE_P)) {
-            $this->autoclose('p');
-        }
-
-        // Set insert mode:
-        switch ($name) {
-            case 'html':
-                $this->insertMode = static::IM_BEFORE_HEAD;
-                break;
-            case 'head':
-                if ($this->insertMode > static::IM_BEFORE_HEAD) {
-                    $this->parseError("Unexpected head tag outside of head context.");
-                } else {
-                    $this->insertMode = static::IM_IN_HEAD;
-                }
-                break;
-            case 'body':
-                $this->insertMode = static::IM_IN_BODY;
-                break;
-            case 'svg':
-                $this->insertMode = static::IM_IN_SVG;
-                break;
-            case 'math':
-                $this->insertMode = static::IM_IN_MATHML;
-                break;
-            case 'noscript':
-                if ($this->insertMode == static::IM_IN_HEAD) {
-                    $this->insertMode = static::IM_IN_HEAD_NOSCRIPT;
-                }
-                break;
-        }
-
-        // Special case handling for SVG.
-        if ($this->insertMode == static::IM_IN_SVG) {
-            $lname = Elements::normalizeSvgElement($lname);
-        }
-
-        $pushes = 0;
-        // when we found a tag thats appears inside $nsRoots, we have to switch the defalut namespace
-        if (isset($this->nsRoots[$lname]) && $this->nsStack[0][''] !== $this->nsRoots[$lname]) {
-            array_unshift($this->nsStack, array(
-                '' => $this->nsRoots[$lname]
-            ) + $this->nsStack[0]);
-            $pushes ++;
-        }
-        $needsWorkaround = false;
-        if (isset($this->options["xmlNamespaces"]) && $this->options["xmlNamespaces"]) {
-            // when xmlNamespaces is true a and we found a 'xmlns' or 'xmlns:*' attribute, we should add a new item to the $nsStack
-            foreach ($attributes as $aName => $aVal) {
-                if ($aName === 'xmlns') {
-                    $needsWorkaround = $aVal;
-                    array_unshift($this->nsStack, array(
-                        '' => $aVal
-                    ) + $this->nsStack[0]);
-                    $pushes ++;
-                } elseif ((($pos = strpos($aName, ':')) ? substr($aName, 0, $pos) : '') === 'xmlns') {
-                    array_unshift($this->nsStack, array(
-                        substr($aName, $pos + 1) => $aVal
-                    ) + $this->nsStack[0]);
-                    $pushes ++;
-                }
-            }
-        }
-
-        if ($this->onlyInline && Elements::isA($lname, Elements::BLOCK_TAG)) {
-        	$this->autoclose($this->onlyInline);
-        	$this->onlyInline = null;
-        }
-
-        try {
-            $prefix = ($pos = strpos($lname, ':')) ? substr($lname, 0, $pos) : '';
-
-
-            if ($needsWorkaround!==false) {
-
-                $xml = "<$lname xmlns=\"$needsWorkaround\" ".(strlen($prefix) && isset($this->nsStack[0][$prefix])?("xmlns:$prefix=\"".$this->nsStack[0][$prefix]."\""):"")."/>";
-
-                $frag = new \DOMDocument('1.0', 'UTF-8');
-                $frag->loadXML($xml);
-
-                $ele = $this->doc->importNode($frag->documentElement, true);
-
-            } else {
-                if (!isset($this->nsStack[0][$prefix]) || ($prefix === "" && isset($this->options[self::OPT_DISABLE_HTML_NS]) && $this->options[self::OPT_DISABLE_HTML_NS])) {
-                    $ele = $this->doc->createElement($lname);
-                } else {
-                    $ele = $this->doc->createElementNS($this->nsStack[0][$prefix], $lname);
-                }
-            }
-
-        } catch (\DOMException $e) {
-            $this->parseError("Illegal tag name: <$lname>. Replaced with <invalid>.");
-            $ele = $this->doc->createElement('invalid');
-        }
-
-        if (Elements::isA($lname, Elements::BLOCK_ONLY_INLINE)) {
-        	$this->onlyInline = $lname;
-        }
-
-        // When we add some namespacess, we have to track them. Later, when "endElement" is invoked, we have to remove them.
-        // When we are on a void tag, we do not need to care about namesapce nesting.
-        if ($pushes > 0 && !Elements::isA($name, Elements::VOID_TAG)) {
-            // PHP tends to free the memory used by DOM,
-            // to avoid spl_object_hash collisions whe have to avoid garbage collection of $ele storing it into $pushes
-            // see https://bugs.php.net/bug.php?id=67459
-            $this->pushes[spl_object_hash($ele)] = array($pushes, $ele);
-
-            // SEE https://github.com/facebook/hhvm/issues/2962
-            if (defined('HHVM_VERSION')) {
-                $ele->setAttribute('html5-php-fake-id-attribute', spl_object_hash($ele));
-            }
-        }
-
-        foreach ($attributes as $aName => $aVal) {
-            // xmlns attributes can't be set
-            if ($aName === 'xmlns') {
-                continue;
-            }
-
-            if ($this->insertMode == static::IM_IN_SVG) {
-                $aName = Elements::normalizeSvgAttribute($aName);
-            } elseif ($this->insertMode == static::IM_IN_MATHML) {
-                $aName = Elements::normalizeMathMlAttribute($aName);
-            }
-
-            try {
-                $prefix = ($pos = strpos($aName, ':')) ? substr($aName, 0, $pos) : false;
-
-                if ($prefix==='xmlns') {
-                    $ele->setAttributeNs(self::NAMESPACE_XMLNS, $aName, $aVal);
-                } elseif ($prefix!==false && isset($this->nsStack[0][$prefix])) {
-                    $ele->setAttributeNs($this->nsStack[0][$prefix], $aName, $aVal);
-                } else {
-                    $ele->setAttribute($aName, $aVal);
-                }
-            } catch (\DOMException $e) {
-                $this->parseError("Illegal attribute name for tag $name. Ignoring: $aName");
-                continue;
-            }
-
-            // This is necessary on a non-DTD schema, like HTML5.
-            if ($aName == 'id') {
-                $ele->setIdAttribute('id', true);
-            }
-        }
-
-        // Some elements have special processing rules. Handle those separately.
-        if ($this->rules->hasRules($name) && $this->frag !== $this->current) {
-            $this->current = $this->rules->evaluate($ele, $this->current);
-        }         // Otherwise, it's a standard element.
-        else {
-            $this->current->appendChild($ele);
-
-            // XXX: Need to handle self-closing tags and unary tags.
-            if (! Elements::isA($name, Elements::VOID_TAG)) {
-                $this->current = $ele;
-            }
-        }
-
-        // This is sort of a last-ditch attempt to correct for cases where no head/body
-        // elements are provided.
-        if ($this->insertMode <= static::IM_BEFORE_HEAD && $name != 'head' && $name != 'html') {
-            $this->insertMode = static::IM_IN_BODY;
-        }
-
-        // When we are on a void tag, we do not need to care about namesapce nesting,
-        // but we have to remove the namespaces pushed to $nsStack.
-        if ($pushes > 0 && Elements::isA($name, Elements::VOID_TAG)) {
-            // remove the namespaced definded by current node
-            for ($i = 0; $i < $pushes; $i ++) {
-                array_shift($this->nsStack);
-            }
-        }
-        // Return the element mask, which the tokenizer can then use to set
-        // various processing rules.
-        return Elements::element($name);
-    }
-
-    public function endTag($name)
-    {
-        $lname = $this->normalizeTagName($name);
-
-        // Ignore closing tags for unary elements.
-        if (Elements::isA($name, Elements::VOID_TAG)) {
-            return;
-        }
-
-        if ($this->insertMode <= static::IM_BEFORE_HTML) {
-            // 8.2.5.4.2
-            if (in_array($name, array(
-                'html',
-                'br',
-                'head',
-                'title'
-            ))) {
-                $this->startTag('html');
-                $this->endTag($name);
-                $this->insertMode = static::IM_BEFORE_HEAD;
-
-                return;
-            }
-
-            // Ignore the tag.
-            $this->parseError("Illegal closing tag at global scope.");
-
-            return;
-        }
-
-        // Special case handling for SVG.
-        if ($this->insertMode == static::IM_IN_SVG) {
-            $lname = Elements::normalizeSvgElement($lname);
-        }
-
-        // See https://github.com/facebook/hhvm/issues/2962
-        if (defined('HHVM_VERSION') && ($cid = $this->current->getAttribute('html5-php-fake-id-attribute'))) {
-            $this->current->removeAttribute('html5-php-fake-id-attribute');
-        } else {
-            $cid = spl_object_hash($this->current);
-        }
-
-        // XXX: Not sure whether we need this anymore.
-        // if ($name != $lname) {
-        // return $this->quirksTreeResolver($lname);
-        // }
-
-        // XXX: HTML has no parent. What do we do, though,
-        // if this element appears in the wrong place?
-        if ($lname == 'html') {
-            return;
-        }
-
-        // remove the namespaced definded by current node
-        if (isset($this->pushes[$cid])) {
-            for ($i = 0; $i < $this->pushes[$cid][0]; $i ++) {
-                array_shift($this->nsStack);
-            }
-            unset($this->pushes[$cid]);
-        }
-
-        if (! $this->autoclose($lname)) {
-            $this->parseError('Could not find closing tag for ' . $lname);
-        }
-
-        // switch ($this->insertMode) {
-        switch ($lname) {
-            case "head":
-                $this->insertMode = static::IM_AFTER_HEAD;
-                break;
-            case "body":
-                $this->insertMode = static::IM_AFTER_BODY;
-                break;
-            case "svg":
-            case "mathml":
-                $this->insertMode = static::IM_IN_BODY;
-                break;
-        }
-    }
-
-    public function comment($cdata)
-    {
-        // TODO: Need to handle case where comment appears outside of the HTML tag.
-        $node = $this->doc->createComment($cdata);
-        $this->current->appendChild($node);
-    }
-
-    public function text($data)
-    {
-        // XXX: Hmmm.... should we really be this strict?
-        if ($this->insertMode < static::IM_IN_HEAD) {
-            // Per '8.2.5.4.3 The "before head" insertion mode' the characters
-            // " \t\n\r\f" should be ignored but no mention of a parse error. This is
-            // practical as most documents contain these characters. Other text is not
-            // expected here so recording a parse error is necessary.
-            $dataTmp = trim($data, " \t\n\r\f");
-            if (! empty($dataTmp)) {
-                // fprintf(STDOUT, "Unexpected insert mode: %d", $this->insertMode);
-                $this->parseError("Unexpected text. Ignoring: " . $dataTmp);
-            }
-
-            return;
-        }
-        // fprintf(STDOUT, "Appending text %s.", $data);
-        $node = $this->doc->createTextNode($data);
-        $this->current->appendChild($node);
-    }
-
-    public function eof()
-    {
-        // If the $current isn't the $root, do we need to do anything?
-    }
-
-    public function parseError($msg, $line = 0, $col = 0)
-    {
-        $this->errors[] = sprintf("Line %d, Col %d: %s", $line, $col, $msg);
-    }
-
-    public function getErrors()
-    {
-        return $this->errors;
-    }
-
-    public function cdata($data)
-    {
-        $node = $this->doc->createCDATASection($data);
-        $this->current->appendChild($node);
-    }
-
-    public function processingInstruction($name, $data = null)
-    {
-        // XXX: Ignore initial XML declaration, per the spec.
-        if ($this->insertMode == static::IM_INITIAL && 'xml' == strtolower($name)) {
-            return;
-        }
-
-        // Important: The processor may modify the current DOM tree however
-        // it sees fit.
-        if (isset($this->processor)) {
-            $res = $this->processor->process($this->current, $name, $data);
-            if (! empty($res)) {
-                $this->current = $res;
-            }
-
-            return;
-        }
-
-        // Otherwise, this is just a dumb PI element.
-        $node = $this->doc->createProcessingInstruction($name, $data);
-
-        $this->current->appendChild($node);
-    }
-
-    // ==========================================================================
-    // UTILITIES
-    // ==========================================================================
-
-    /**
-     * Apply normalization rules to a tag name.
-     *
-     * See sections 2.9 and 8.1.2.
-     *
-     * @param string $name
-     *            The tag name.
-     * @return string The normalized tag name.
-     */
-    protected function normalizeTagName($name)
-    {
-        /*
-         * Section 2.9 suggests that we should not do this. if (strpos($name, ':') !== false) { // We know from the grammar that there must be at least one other // char besides :, since : is not a legal tag start. $parts = explode(':', $name); return array_pop($parts); }
-         */
-        return $name;
-    }
-
-    protected function quirksTreeResolver($name)
-    {
-        throw new \Exception("Not implemented.");
-    }
-
-    /**
-     * Automatically climb the tree and close the closest node with the matching $tag.
-     */
-    protected function autoclose($tag)
-    {
-        $working = $this->current;
-        do {
-            if ($working->nodeType != XML_ELEMENT_NODE) {
-                return false;
-            }
-            if ($working->tagName == $tag) {
-                $this->current = $working->parentNode;
-
-                return true;
-            }
-        } while ($working = $working->parentNode);
-        return false;
-    }
-
-    /**
-     * Checks if the given tagname is an ancestor of the present candidate.
-     *
-     * If $this->current or anything above $this->current matches the given tag
-     * name, this returns true.
-     */
-    protected function isAncestor($tagname)
-    {
-        $candidate = $this->current;
-        while ($candidate->nodeType === XML_ELEMENT_NODE) {
-            if ($candidate->tagName == $tagname) {
-                return true;
-            }
-            $candidate = $candidate->parentNode;
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns true if the immediate parent element is of the given tagname.
-     */
-    protected function isParent($tagname)
-    {
-        return $this->current->tagName == $tagname;
-    }
-}
\ No newline at end of file
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/EventHandler.php b/vendor/masterminds/html5/src/HTML5/Parser/EventHandler.php
deleted file mode 100644
index 2d55347..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/EventHandler.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Parser;
-
-/**
- * Standard events for HTML5.
- *
- * This is roughly analogous to a SAX2 or expat-style interface.
- * However, it is tuned specifically for HTML5, according to section 8
- * of the HTML5 specification.
- *
- * An event handler receives parser events. For a concrete
- * implementation, see DOMTreeBuilder.
- *
- * Quirks support in the parser is limited to close-in syntax (malformed
- * tags or attributes). Higher order syntax and semantic issues with a
- * document (e.g. mismatched tags, illegal nesting, etc.) are the
- * responsibility of the event handler implementation.
- *
- * See HTML5 spec section 8.2.4
- */
-interface EventHandler
-{
-
-    const DOCTYPE_NONE = 0;
-
-    const DOCTYPE_PUBLIC = 1;
-
-    const DOCTYPE_SYSTEM = 2;
-
-    /**
-     * A doctype declaration.
-     *
-     * @param string $name
-     *            The name of the root element.
-     * @param int $idType
-     *            One of DOCTYPE_NONE, DOCTYPE_PUBLIC, or DOCTYPE_SYSTEM.
-     * @param string $id
-     *            The identifier. For DOCTYPE_PUBLIC, this is the public ID. If DOCTYPE_SYSTEM,
-     *            then this is a system ID.
-     * @param boolean $quirks
-     *            Indicates whether the builder should enter quirks mode.
-     */
-    public function doctype($name, $idType = 0, $id = null, $quirks = false);
-
-    /**
-     * A start tag.
-     *
-     * IMPORTANT: The parser watches the return value of this event. If this returns
-     * an integer, the parser will switch TEXTMODE patters according to the int.
-     *
-     * This is how the Tree Builder can tell the Tokenizer when a certain tag should
-     * cause the parser to go into RAW text mode.
-     *
-     * The HTML5 standard requires that the builder is the one that initiates this
-     * step, and this is the only way short of a circular reference that we can
-     * do that.
-     *
-     * Example: if a startTag even for a `script` name is fired, and the startTag()
-     * implementation returns Tokenizer::TEXTMODE_RAW, then the tokenizer will
-     * switch into RAW text mode and consume data until it reaches a closing
-     * `script` tag.
-     *
-     * The textmode is automatically reset to Tokenizer::TEXTMODE_NORMAL when the
-     * closing tag is encounter. **This behavior may change.**
-     *
-     * @param string $name
-     *            The tag name.
-     * @param array $attributes
-     *            An array with all of the tag's attributes.
-     * @param boolean $selfClosing
-     *            An indicator of whether or not this tag is self-closing (<foo/>)
-     * @return numeric One of the Tokenizer::TEXTMODE_* constants.
-     */
-    public function startTag($name, $attributes = array(), $selfClosing = false);
-
-    /**
-     * An end-tag.
-     */
-    public function endTag($name);
-
-    /**
-     * A comment section (unparsed character data).
-     */
-    public function comment($cdata);
-
-    /**
-     * A unit of parsed character data.
-     *
-     * Entities in this text are *already decoded*.
-     */
-    public function text($cdata);
-
-    /**
-     * Indicates that the document has been entirely processed.
-     */
-    public function eof();
-
-    /**
-     * Emitted when the parser encounters an error condition.
-     */
-    public function parseError($msg, $line, $col);
-
-    /**
-     * A CDATA section.
-     *
-     * @param string $data
-     *            The unparsed character data.
-     */
-    public function cdata($data);
-
-    /**
-     * This is a holdover from the XML spec.
-     *
-     * While user agents don't get PIs, server-side does.
-     *
-     * @param string $name
-     *            The name of the processor (e.g. 'php').
-     * @param string $data
-     *            The unparsed data.
-     */
-    public function processingInstruction($name, $data = null);
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/FileInputStream.php b/vendor/masterminds/html5/src/HTML5/Parser/FileInputStream.php
deleted file mode 100644
index e58006a..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/FileInputStream.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Parser;
-
-/**
- * The FileInputStream loads a file to be parsed.
- *
- * So right now we read files into strings and then process the
- * string. We chose to do this largely for the sake of expediency of
- * development, and also because we could optimize toward processing
- * arbitrarily large chunks of the input. But in the future, we'd
- * really like to rewrite this class to efficiently handle lower level
- * stream reads (and thus efficiently handle large documents).
- *
- * @todo A buffered input stream would be useful.
- */
-class FileInputStream extends StringInputStream implements InputStream
-{
-
-    /**
-     * Load a file input stream.
-     *
-     * @param string $data
-     *            The file or url path to load.
-     */
-    public function __construct($data, $encoding = 'UTF-8', $debug = '')
-    {
-        // Get the contents of the file.
-        $content = file_get_contents($data);
-
-        parent::__construct($content, $encoding, $debug);
-    }
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/InputStream.php b/vendor/masterminds/html5/src/HTML5/Parser/InputStream.php
deleted file mode 100644
index 0bdc803..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/InputStream.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Parser;
-
-/**
- * Interface for stream readers.
- *
- * The parser only reads from streams. Various input sources can write
- * an adapater to this InputStream.
- *
- * Currently provided InputStream implementations include
- * FileInputStream and StringInputStream.
- */
-interface InputStream extends \Iterator
-{
-
-    /**
-     * Returns the current line that is being consumed.
-     *
-     * TODO: Move this to the scanner.
-     */
-    public function currentLine();
-
-    /**
-     * Returns the current column of the current line that the tokenizer is at.
-     *
-     * Newlines are column 0. The first char after a newline is column 1.
-     *
-     * @TODO Move this to the scanner.
-     *
-     * @return int The column number.
-     */
-    public function columnOffset();
-
-    /**
-     * Get all characters until EOF.
-     *
-     * This consumes characters until the EOF.
-     */
-    public function remainingChars();
-
-    /**
-     * Read to a particular match (or until $max bytes are consumed).
-     *
-     * This operates on byte sequences, not characters.
-     *
-     * Matches as far as possible until we reach a certain set of bytes
-     * and returns the matched substring.
-     *
-     * @see strcspn
-     * @param string $bytes
-     *            Bytes to match.
-     * @param int $max
-     *            Maximum number of bytes to scan.
-     * @return mixed Index or false if no match is found. You should use strong
-     *         equality when checking the result, since index could be 0.
-     */
-    public function charsUntil($bytes, $max = null);
-
-    /**
-     * Returns the string so long as $bytes matches.
-     *
-     * Matches as far as possible with a certain set of bytes
-     * and returns the matched substring.
-     *
-     * @see strspn
-     * @param string $bytes
-     *            A mask of bytes to match. If ANY byte in this mask matches the
-     *            current char, the pointer advances and the char is part of the
-     *            substring.
-     * @param int $max
-     *            The max number of chars to read.
-     */
-    public function charsWhile($bytes, $max = null);
-
-    /**
-     * Unconsume one character.
-     *
-     * @param int $howMany
-     *            The number of characters to move the pointer back.
-     */
-    public function unconsume($howMany = 1);
-
-    /**
-     * Retrieve the next character without advancing the pointer.
-     */
-    public function peek();
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/ParseError.php b/vendor/masterminds/html5/src/HTML5/Parser/ParseError.php
deleted file mode 100644
index 86498a1..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/ParseError.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Parser;
-
-/**
- * Emit when the parser has an error.
- */
-class ParseError extends \Exception
-{
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/README.md b/vendor/masterminds/html5/src/HTML5/Parser/README.md
deleted file mode 100644
index 9f92957..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# The Parser Model
-
-The parser model here follows the model in section
-[8.2.1](http://www.w3.org/TR/2012/CR-html5-20121217/syntax.html#parsing)
-of the HTML5 specification, though we do not assume a networking layer.
-
-     [ InputStream ]    // Generic support for reading input.
-           ||
-      [ Scanner ]       // Breaks down the stream into characters.
-           ||
-     [ Tokenizer ]      // Groups characters into syntactic
-           ||
-    [ Tree Builder ]    // Organizes units into a tree of objects
-           ||
-     [ DOM Document ]     // The final state of the parsed document.
-
-
-## InputStream
-
-This is an interface with at least two concrete implementations:
-
-- StringInputStream: Reads an HTML5 string.
-- FileInputStream: Reads an HTML5 file.
-
-## Scanner
-
-This is a mechanical piece of the parser.
-
-## Tokenizer
-
-This follows section 8.4 of the HTML5 spec. It is (roughly) a recursive
-descent parser. (Though there are plenty of optimizations that are less
-than purely functional.
-
-## EventHandler and DOMTree
-
-EventHandler is the interface for tree builders. Since not all
-implementations will necessarily build trees, we've chosen a more
-generic name.
-
-The event handler emits tokens during tokenization.
-
-The DOMTree is an event handler that builds a DOM tree. The output of
-the DOMTree builder is a DOMDocument.
-
-## DOMDocument
-
-PHP has a DOMDocument class built-in (technically, it's part of libxml.)
-We use that, thus rendering the output of this process compatible with
-SimpleXML, QueryPath, and many other XML/HTML processing tools.
-
-For cases where the HTML5 is a fragment of a HTML5 document a
-DOMDocumentFragment is returned instead. This is another built-in class.
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/Scanner.php b/vendor/masterminds/html5/src/HTML5/Parser/Scanner.php
deleted file mode 100644
index f605c69..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/Scanner.php
+++ /dev/null
@@ -1,222 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Parser;
-
-/**
- * The scanner.
- *
- * This scans over an input stream.
- */
-class Scanner
-{
-
-    const CHARS_HEX = 'abcdefABCDEF01234567890';
-
-    const CHARS_ALNUM = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890';
-
-    const CHARS_ALPHA = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
-    protected $is;
-
-    // Flipping this to true will give minisculely more debugging info.
-    public $debug = false;
-
-    /**
-     * Create a new Scanner.
-     *
-     * @param \Masterminds\HTML5\Parser\InputStream $input
-     *            An InputStream to be scanned.
-     */
-    public function __construct($input)
-    {
-        $this->is = $input;
-    }
-
-    /**
-     * Get the current position.
-     *
-     * @return int The current intiger byte position.
-     */
-    public function position()
-    {
-        return $this->is->key();
-    }
-
-    /**
-     * Take a peek at the next character in the data.
-     *
-     * @return string The next character.
-     */
-    public function peek()
-    {
-        return $this->is->peek();
-    }
-
-    /**
-     * Get the next character.
-     *
-     * Note: This advances the pointer.
-     *
-     * @return string The next character.
-     */
-    public function next()
-    {
-        $this->is->next();
-        if ($this->is->valid()) {
-            if ($this->debug)
-                fprintf(STDOUT, "> %s\n", $this->is->current());
-            return $this->is->current();
-        }
-
-        return false;
-    }
-
-    /**
-     * Get the current character.
-     *
-     * Note, this does not advance the pointer.
-     *
-     * @return string The current character.
-     */
-    public function current()
-    {
-        if ($this->is->valid()) {
-            return $this->is->current();
-        }
-
-        return false;
-    }
-
-    /**
-     * Silently consume N chars.
-     */
-    public function consume($count = 1)
-    {
-        for ($i = 0; $i < $count; ++ $i) {
-            $this->next();
-        }
-    }
-
-    /**
-     * Unconsume some of the data.
-     * This moves the data pointer backwards.
-     *
-     * @param int $howMany
-     *            The number of characters to move the pointer back.
-     */
-    public function unconsume($howMany = 1)
-    {
-        $this->is->unconsume($howMany);
-    }
-
-    /**
-     * Get the next group of that contains hex characters.
-     *
-     * Note, along with getting the characters the pointer in the data will be
-     * moved as well.
-     *
-     * @return string The next group that is hex characters.
-     */
-    public function getHex()
-    {
-        return $this->is->charsWhile(static::CHARS_HEX);
-    }
-
-    /**
-     * Get the next group of characters that are ASCII Alpha characters.
-     *
-     * Note, along with getting the characters the pointer in the data will be
-     * moved as well.
-     *
-     * @return string The next group of ASCII alpha characters.
-     */
-    public function getAsciiAlpha()
-    {
-        return $this->is->charsWhile(static::CHARS_ALPHA);
-    }
-
-    /**
-     * Get the next group of characters that are ASCII Alpha characters and numbers.
-     *
-     * Note, along with getting the characters the pointer in the data will be
-     * moved as well.
-     *
-     * @return string The next group of ASCII alpha characters and numbers.
-     */
-    public function getAsciiAlphaNum()
-    {
-        return $this->is->charsWhile(static::CHARS_ALNUM);
-    }
-
-    /**
-     * Get the next group of numbers.
-     *
-     * Note, along with getting the characters the pointer in the data will be
-     * moved as well.
-     *
-     * @return string The next group of numbers.
-     */
-    public function getNumeric()
-    {
-        return $this->is->charsWhile('0123456789');
-    }
-
-    /**
-     * Consume whitespace.
-     *
-     * Whitespace in HTML5 is: formfeed, tab, newline, space.
-     */
-    public function whitespace()
-    {
-        return $this->is->charsWhile("\n\t\f ");
-    }
-
-    /**
-     * Returns the current line that is being consumed.
-     *
-     * @return int The current line number.
-     */
-    public function currentLine()
-    {
-        return $this->is->currentLine();
-    }
-
-    /**
-     * Read chars until something in the mask is encountered.
-     */
-    public function charsUntil($mask)
-    {
-        return $this->is->charsUntil($mask);
-    }
-
-    /**
-     * Read chars as long as the mask matches.
-     */
-    public function charsWhile($mask)
-    {
-        return $this->is->charsWhile($mask);
-    }
-
-    /**
-     * Returns the current column of the current line that the tokenizer is at.
-     *
-     * Newlines are column 0. The first char after a newline is column 1.
-     *
-     * @return int The column number.
-     */
-    public function columnOffset()
-    {
-        return $this->is->columnOffset();
-    }
-
-    /**
-     * Get all characters until EOF.
-     *
-     * This consumes characters until the EOF.
-     *
-     * @return int The number of characters remaining.
-     */
-    public function remainingChars()
-    {
-        return $this->is->remainingChars();
-    }
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/StringInputStream.php b/vendor/masterminds/html5/src/HTML5/Parser/StringInputStream.php
deleted file mode 100644
index 4cac3c2..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/StringInputStream.php
+++ /dev/null
@@ -1,331 +0,0 @@
-<?php
-/**
- * Loads a string to be parsed.
- */
-namespace Masterminds\HTML5\Parser;
-
-/*
- *
-* Based on code from html5lib:
-
-Copyright 2009 Geoffrey Sneddon <http://gsnedders.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.
-
-*/
-
-// Some conventions:
-// - /* */ indicates verbatim text from the HTML 5 specification
-//   MPB: Not sure which version of the spec. Moving from HTML5lib to
-//   HTML5-PHP, I have been using this version:
-//   http://www.w3.org/TR/2012/CR-html5-20121217/Overview.html#contents
-//
-// - // indicates regular comments
-
-class StringInputStream implements InputStream
-{
-
-    /**
-     * The string data we're parsing.
-     */
-    private $data;
-
-    /**
-     * The current integer byte position we are in $data
-     */
-    private $char;
-
-    /**
-     * Length of $data; when $char === $data, we are at the end-of-file.
-     */
-    private $EOF;
-
-    /**
-     * Parse errors.
-     */
-    public $errors = array();
-
-    /**
-     * Create a new InputStream wrapper.
-     *
-     * @param $data Data
-     *            to parse
-     */
-    public function __construct($data, $encoding = 'UTF-8', $debug = '')
-    {
-        $data = UTF8Utils::convertToUTF8($data, $encoding);
-        if ($debug)
-            fprintf(STDOUT, $debug, $data, strlen($data));
-
-            // There is good reason to question whether it makes sense to
-            // do this here, since most of these checks are done during
-            // parsing, and since this check doesn't actually *do* anything.
-        $this->errors = UTF8Utils::checkForIllegalCodepoints($data);
-        // if (!empty($e)) {
-        // throw new ParseError("UTF-8 encoding issues: " . implode(', ', $e));
-        // }
-
-        $data = $this->replaceLinefeeds($data);
-
-        $this->data = $data;
-        $this->char = 0;
-        $this->EOF = strlen($data);
-    }
-
-    /**
-     * Replace linefeed characters according to the spec.
-     */
-    protected function replaceLinefeeds($data)
-    {
-        /*
-         * U+000D CARRIAGE RETURN (CR) characters and U+000A LINE FEED (LF) characters are treated specially. Any CR characters that are followed by LF characters must be removed, and any CR characters not followed by LF characters must be converted to LF characters. Thus, newlines in HTML DOMs are represented by LF characters, and there are never any CR characters in the input to the tokenization stage.
-         */
-        $crlfTable = array(
-            "\0" => "\xEF\xBF\xBD",
-            "\r\n" => "\n",
-            "\r" => "\n"
-        );
-
-        return strtr($data, $crlfTable);
-    }
-
-    /**
-     * Returns the current line that the tokenizer is at.
-     */
-    public function currentLine()
-    {
-        if (empty($this->EOF) || $this->char == 0) {
-            return 1;
-        }
-        // Add one to $this->char because we want the number for the next
-        // byte to be processed.
-        return substr_count($this->data, "\n", 0, min($this->char, $this->EOF)) + 1;
-    }
-
-    /**
-     *
-     * @deprecated
-     *
-     */
-    public function getCurrentLine()
-    {
-        return currentLine();
-    }
-
-    /**
-     * Returns the current column of the current line that the tokenizer is at.
-     *
-     * Newlines are column 0. The first char after a newline is column 1.
-     *
-     * @return int The column number.
-     */
-    public function columnOffset()
-    {
-        // Short circuit for the first char.
-        if ($this->char == 0) {
-            return 0;
-        }
-        // strrpos is weird, and the offset needs to be negative for what we
-        // want (i.e., the last \n before $this->char). This needs to not have
-        // one (to make it point to the next character, the one we want the
-        // position of) added to it because strrpos's behaviour includes the
-        // final offset byte.
-        $backwardFrom = $this->char - 1 - strlen($this->data);
-        $lastLine = strrpos($this->data, "\n", $backwardFrom);
-
-        // However, for here we want the length up until the next byte to be
-        // processed, so add one to the current byte ($this->char).
-        if ($lastLine !== false) {
-            $findLengthOf = substr($this->data, $lastLine + 1, $this->char - 1 - $lastLine);
-        } else {
-            // After a newline.
-            $findLengthOf = substr($this->data, 0, $this->char);
-        }
-
-        return UTF8Utils::countChars($findLengthOf);
-    }
-
-    /**
-     *
-     * @deprecated
-     *
-     */
-    public function getColumnOffset()
-    {
-        return $this->columnOffset();
-    }
-
-    /**
-     * Get the current character.
-     *
-     * @return string The current character.
-     */
-    public function current()
-    {
-        return $this->data[$this->char];
-    }
-
-    /**
-     * Advance the pointer.
-     * This is part of the Iterator interface.
-     */
-    public function next()
-    {
-        $this->char ++;
-    }
-
-    /**
-     * Rewind to the start of the string.
-     */
-    public function rewind()
-    {
-        $this->char = 0;
-    }
-
-    /**
-     * Is the current pointer location valid.
-     *
-     * @return bool Is the current pointer location valid.
-     */
-    public function valid()
-    {
-        if ($this->char < $this->EOF) {
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Get all characters until EOF.
-     *
-     * This reads to the end of the file, and sets the read marker at the
-     * end of the file.
-     *
-     * @note This performs bounds checking
-     *
-     * @return string Returns the remaining text. If called when the InputStream is
-     *         already exhausted, it returns an empty string.
-     */
-    public function remainingChars()
-    {
-        if ($this->char < $this->EOF) {
-            $data = substr($this->data, $this->char);
-            $this->char = $this->EOF;
-
-            return $data;
-        }
-
-        return ''; // false;
-    }
-
-    /**
-     * Read to a particular match (or until $max bytes are consumed).
-     *
-     * This operates on byte sequences, not characters.
-     *
-     * Matches as far as possible until we reach a certain set of bytes
-     * and returns the matched substring.
-     *
-     * @param string $bytes
-     *            Bytes to match.
-     * @param int $max
-     *            Maximum number of bytes to scan.
-     * @return mixed Index or false if no match is found. You should use strong
-     *         equality when checking the result, since index could be 0.
-     */
-    public function charsUntil($bytes, $max = null)
-    {
-        if ($this->char >= $this->EOF) {
-            return false;
-        }
-
-        if ($max === 0 || $max) {
-            $len = strcspn($this->data, $bytes, $this->char, $max);
-        } else {
-            $len = strcspn($this->data, $bytes, $this->char);
-        }
-
-        $string = (string) substr($this->data, $this->char, $len);
-        $this->char += $len;
-
-        return $string;
-    }
-
-    /**
-     * Returns the string so long as $bytes matches.
-     *
-     * Matches as far as possible with a certain set of bytes
-     * and returns the matched substring.
-     *
-     * @param string $bytes
-     *            A mask of bytes to match. If ANY byte in this mask matches the
-     *            current char, the pointer advances and the char is part of the
-     *            substring.
-     * @param int $max
-     *            The max number of chars to read.
-     */
-    public function charsWhile($bytes, $max = null)
-    {
-        if ($this->char >= $this->EOF) {
-            return false;
-        }
-
-        if ($max === 0 || $max) {
-            $len = strspn($this->data, $bytes, $this->char, $max);
-        } else {
-            $len = strspn($this->data, $bytes, $this->char);
-        }
-        $string = (string) substr($this->data, $this->char, $len);
-        $this->char += $len;
-
-        return $string;
-    }
-
-    /**
-     * Unconsume characters.
-     *
-     * @param int $howMany
-     *            The number of characters to unconsume.
-     */
-    public function unconsume($howMany = 1)
-    {
-        if (($this->char - $howMany) >= 0) {
-            $this->char = $this->char - $howMany;
-        }
-    }
-
-    /**
-     * Look ahead without moving cursor.
-     */
-    public function peek()
-    {
-        if (($this->char + 1) <= $this->EOF) {
-            return $this->data[$this->char + 1];
-        }
-
-        return false;
-    }
-
-    public function key()
-    {
-        return $this->char;
-    }
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/Tokenizer.php b/vendor/masterminds/html5/src/HTML5/Parser/Tokenizer.php
deleted file mode 100644
index a779191..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/Tokenizer.php
+++ /dev/null
@@ -1,1098 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Parser;
-
-use Masterminds\HTML5\Elements;
-
-/**
- * The HTML5 tokenizer.
- *
- * The tokenizer's role is reading data from the scanner and gathering it into
- * semantic units. From the tokenizer, data is emitted to an event handler,
- * which may (for example) create a DOM tree.
- *
- * The HTML5 specification has a detailed explanation of tokenizing HTML5. We
- * follow that specification to the maximum extent that we can. If you find
- * a discrepancy that is not documented, please file a bug and/or submit a
- * patch.
- *
- * This tokenizer is implemented as a recursive descent parser.
- *
- * Within the API documentation, you may see references to the specific section
- * of the HTML5 spec that the code attempts to reproduce. Example: 8.2.4.1.
- * This refers to section 8.2.4.1 of the HTML5 CR specification.
- *
- * @see http://www.w3.org/TR/2012/CR-html5-20121217/
- */
-class Tokenizer
-{
-
-    protected $scanner;
-
-    protected $events;
-
-    protected $tok;
-
-    /**
-     * Buffer for text.
-     */
-    protected $text = '';
-
-    // When this goes to false, the parser stops.
-    protected $carryOn = true;
-
-    protected $textMode = 0; // TEXTMODE_NORMAL;
-    protected $untilTag = null;
-
-    const WHITE = "\t\n\f ";
-
-    /**
-     * Create a new tokenizer.
-     *
-     * Typically, parsing a document involves creating a new tokenizer, giving
-     * it a scanner (input) and an event handler (output), and then calling
-     * the Tokenizer::parse() method.`
-     *
-     * @param \Masterminds\HTML5\Parser\Scanner $scanner
-     *            A scanner initialized with an input stream.
-     * @param \Masterminds\HTML5\Parser\EventHandler $eventHandler
-     *            An event handler, initialized and ready to receive
-     *            events.
-     */
-    public function __construct($scanner, $eventHandler)
-    {
-        $this->scanner = $scanner;
-        $this->events = $eventHandler;
-    }
-
-    /**
-     * Begin parsing.
-     *
-     * This will begin scanning the document, tokenizing as it goes.
-     * Tokens are emitted into the event handler.
-     *
-     * Tokenizing will continue until the document is completely
-     * read. Errors are emitted into the event handler, but
-     * the parser will attempt to continue parsing until the
-     * entire input stream is read.
-     */
-    public function parse()
-    {
-        $p = 0;
-        do {
-            $p = $this->scanner->position();
-            $this->consumeData();
-
-            // FIXME: Add infinite loop protection.
-        } while ($this->carryOn);
-    }
-
-    /**
-     * Set the text mode for the character data reader.
-     *
-     * HTML5 defines three different modes for reading text:
-     * - Normal: Read until a tag is encountered.
-     * - RCDATA: Read until a tag is encountered, but skip a few otherwise-
-     * special characters.
-     * - Raw: Read until a special closing tag is encountered (viz. pre, script)
-     *
-     * This allows those modes to be set.
-     *
-     * Normally, setting is done by the event handler via a special return code on
-     * startTag(), but it can also be set manually using this function.
-     *
-     * @param integer $textmode
-     *            One of Elements::TEXT_*
-     * @param string $untilTag
-     *            The tag that should stop RAW or RCDATA mode. Normal mode does not
-     *            use this indicator.
-     */
-    public function setTextMode($textmode, $untilTag = null)
-    {
-        $this->textMode = $textmode & (Elements::TEXT_RAW | Elements::TEXT_RCDATA);
-        $this->untilTag = $untilTag;
-    }
-
-    /**
-     * Consume a character and make a move.
-     * HTML5 8.2.4.1
-     */
-    protected function consumeData()
-    {
-        // Character Ref
-        /*
-         * $this->characterReference() || $this->tagOpen() || $this->eof() || $this->characterData();
-         */
-        $this->characterReference();
-        $this->tagOpen();
-        $this->eof();
-        $this->characterData();
-
-        return $this->carryOn;
-    }
-
-    /**
-     * Parse anything that looks like character data.
-     *
-     * Different rules apply based on the current text mode.
-     *
-     * @see Elements::TEXT_RAW Elements::TEXT_RCDATA.
-     */
-    protected function characterData()
-    {
-        if ($this->scanner->current() === false) {
-            return false;
-        }
-        switch ($this->textMode) {
-            case Elements::TEXT_RAW:
-                return $this->rawText();
-            case Elements::TEXT_RCDATA:
-                return $this->rcdata();
-            default:
-                $tok = $this->scanner->current();
-                if (strspn($tok, "<&")) {
-                    return false;
-                }
-                return $this->text();
-        }
-    }
-
-    /**
-     * This buffers the current token as character data.
-     */
-    protected function text()
-    {
-        $tok = $this->scanner->current();
-
-        // This should never happen...
-        if ($tok === false) {
-            return false;
-        }
-        // Null
-        if ($tok === "\00") {
-            $this->parseError("Received null character.");
-        }
-        // fprintf(STDOUT, "Writing '%s'", $tok);
-        $this->buffer($tok);
-        $this->scanner->next();
-        return true;
-    }
-
-    /**
-     * Read text in RAW mode.
-     */
-    protected function rawText()
-    {
-        if (is_null($this->untilTag)) {
-            return $this->text();
-        }
-        $sequence = '</' . $this->untilTag . '>';
-        $txt = $this->readUntilSequence($sequence);
-        $this->events->text($txt);
-        $this->setTextMode(0);
-        return $this->endTag();
-    }
-
-    /**
-     * Read text in RCDATA mode.
-     */
-    protected function rcdata()
-    {
-        if (is_null($this->untilTag)) {
-            return $this->text();
-        }
-        $sequence = '</' . $this->untilTag;
-        $txt = '';
-        $tok = $this->scanner->current();
-
-        $caseSensitive = !Elements::isHtml5Element($this->untilTag);
-        while ($tok !== false && ! ($tok == '<' && ($this->sequenceMatches($sequence, $caseSensitive)))) {
-            if ($tok == '&') {
-                $txt .= $this->decodeCharacterReference();
-                $tok = $this->scanner->current();
-            } else {
-                $txt .= $tok;
-                $tok = $this->scanner->next();
-            }
-        }
-        $len = strlen($sequence);
-        $this->scanner->consume($len);
-        $len += strlen($this->scanner->whitespace());
-        if ($this->scanner->current() !== '>') {
-            $this->parseError("Unclosed RCDATA end tag");
-        }
-        $this->scanner->unconsume($len);
-        $this->events->text($txt);
-        $this->setTextMode(0);
-        return $this->endTag();
-    }
-
-    /**
-     * If the document is read, emit an EOF event.
-     */
-    protected function eof()
-    {
-        if ($this->scanner->current() === false) {
-            // fprintf(STDOUT, "EOF");
-            $this->flushBuffer();
-            $this->events->eof();
-            $this->carryOn = false;
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Handle character references (aka entities).
-     *
-     * This version is specific to PCDATA, as it buffers data into the
-     * text buffer. For a generic version, see decodeCharacterReference().
-     *
-     * HTML5 8.2.4.2
-     */
-    protected function characterReference()
-    {
-        $ref = $this->decodeCharacterReference();
-        if ($ref !== false) {
-            $this->buffer($ref);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Emit a tagStart event on encountering a tag.
-     *
-     * 8.2.4.8
-     */
-    protected function tagOpen()
-    {
-        if ($this->scanner->current() != '<') {
-            return false;
-        }
-
-        // Any buffered text data can go out now.
-        $this->flushBuffer();
-
-        $this->scanner->next();
-
-        return $this->markupDeclaration() || $this->endTag() || $this->processingInstruction() || $this->tagName() ||
-          /*  This always returns false. */
-          $this->parseError("Illegal tag opening") || $this->characterData();
-    }
-
-    /**
-     * Look for markup.
-     */
-    protected function markupDeclaration()
-    {
-        if ($this->scanner->current() != '!') {
-            return false;
-        }
-
-        $tok = $this->scanner->next();
-
-        // Comment:
-        if ($tok == '-' && $this->scanner->peek() == '-') {
-            $this->scanner->next(); // Consume the other '-'
-            $this->scanner->next(); // Next char.
-            return $this->comment();
-        }
-
-        elseif ($tok == 'D' || $tok == 'd') { // Doctype
-            return $this->doctype('');
-        }
-
-        elseif ($tok == '[') { // CDATA section
-            return $this->cdataSection();
-        }
-
-        // FINISH
-        $this->parseError("Expected <!--, <![CDATA[, or <!DOCTYPE. Got <!%s", $tok);
-        $this->bogusComment('<!');
-        return true;
-    }
-
-    /**
-     * Consume an end tag.
-     * 8.2.4.9
-     */
-    protected function endTag()
-    {
-        if ($this->scanner->current() != '/') {
-            return false;
-        }
-        $tok = $this->scanner->next();
-
-        // a-zA-Z -> tagname
-        // > -> parse error
-        // EOF -> parse error
-        // -> parse error
-        if (! ctype_alpha($tok)) {
-            $this->parseError("Expected tag name, got '%s'", $tok);
-            if ($tok == "\0" || $tok === false) {
-                return false;
-            }
-            return $this->bogusComment('</');
-        }
-
-        $name = strtolower($this->scanner->charsUntil("\n\f \t>"));
-        // Trash whitespace.
-        $this->scanner->whitespace();
-
-        if ($this->scanner->current() != '>') {
-            $this->parseError("Expected >, got '%s'", $this->scanner->current());
-            // We just trash stuff until we get to the next tag close.
-            $this->scanner->charsUntil('>');
-        }
-
-        $this->events->endTag($name);
-        $this->scanner->next();
-        return true;
-    }
-
-    /**
-     * Consume a tag name and body.
-     * 8.2.4.10
-     */
-    protected function tagName()
-    {
-        $tok = $this->scanner->current();
-        if (! ctype_alpha($tok)) {
-            return false;
-        }
-
-        // We know this is at least one char.
-        $name = strtolower($this->scanner->charsWhile(":_-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
-        $attributes = array();
-        $selfClose = false;
-
-        // Handle attribute parse exceptions here so that we can
-        // react by trying to build a sensible parse tree.
-        try {
-            do {
-                $this->scanner->whitespace();
-                $this->attribute($attributes);
-            } while (! $this->isTagEnd($selfClose));
-        } catch (ParseError $e) {
-            $selfClose = false;
-        }
-
-        $mode = $this->events->startTag($name, $attributes, $selfClose);
-        // Should we do this? What does this buy that selfClose doesn't?
-        if ($selfClose) {
-            $this->events->endTag($name);
-        } elseif (is_int($mode)) {
-            // fprintf(STDOUT, "Event response says move into mode %d for tag %s", $mode, $name);
-            $this->setTextMode($mode, $name);
-        }
-
-        $this->scanner->next();
-
-        return true;
-    }
-
-    /**
-     * Check if the scanner has reached the end of a tag.
-     */
-    protected function isTagEnd(&$selfClose)
-    {
-        $tok = $this->scanner->current();
-        if ($tok == '/') {
-            $this->scanner->next();
-            $this->scanner->whitespace();
-            if ($this->scanner->current() == '>') {
-                $selfClose = true;
-                return true;
-            }
-            if ($this->scanner->current() === false) {
-                $this->parseError("Unexpected EOF inside of tag.");
-                return true;
-            }
-            // Basically, we skip the / token and go on.
-            // See 8.2.4.43.
-            $this->parseError("Unexpected '%s' inside of a tag.", $this->scanner->current());
-            return false;
-        }
-
-        if ($this->scanner->current() == '>') {
-            return true;
-        }
-        if ($this->scanner->current() === false) {
-            $this->parseError("Unexpected EOF inside of tag.");
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Parse attributes from inside of a tag.
-     */
-    protected function attribute(&$attributes)
-    {
-        $tok = $this->scanner->current();
-        if ($tok == '/' || $tok == '>' || $tok === false) {
-            return false;
-        }
-
-        if ($tok == '<') {
-            $this->parseError("Unexepcted '<' inside of attributes list.");
-            // Push the < back onto the stack.
-            $this->scanner->unconsume();
-            // Let the caller figure out how to handle this.
-            throw new ParseError("Start tag inside of attribute.");
-        }
-
-        $name = strtolower($this->scanner->charsUntil("/>=\n\f\t "));
-
-        if (strlen($name) == 0) {
-            $this->parseError("Expected an attribute name, got %s.", $this->scanner->current());
-            // Really, only '=' can be the char here. Everything else gets absorbed
-            // under one rule or another.
-            $name = $this->scanner->current();
-            $this->scanner->next();
-        }
-
-        $isValidAttribute = true;
-        // Attribute names can contain most Unicode characters for HTML5.
-        // But method "DOMElement::setAttribute" is throwing exception
-        // because of it's own internal restriction so these have to be filtered.
-        // see issue #23: https://github.com/Masterminds/html5-php/issues/23
-        // and http://www.w3.org/TR/2011/WD-html5-20110525/syntax.html#syntax-attribute-name
-        if (preg_match("/[\x1-\x2C\\/\x3B-\x40\x5B-\x5E\x60\x7B-\x7F]/u", $name)) {
-            $this->parseError("Unexpected characters in attribute name: %s", $name);
-            $isValidAttribute = false;
-        }         // There is no limitation for 1st character in HTML5.
-        // But method "DOMElement::setAttribute" is throwing exception for the
-        // characters below so they have to be filtered.
-        // see issue #23: https://github.com/Masterminds/html5-php/issues/23
-        // and http://www.w3.org/TR/2011/WD-html5-20110525/syntax.html#syntax-attribute-name
-        else
-            if (preg_match("/^[0-9.-]/u", $name)) {
-                $this->parseError("Unexpected character at the begining of attribute name: %s", $name);
-                $isValidAttribute = false;
-            }
-        // 8.1.2.3
-        $this->scanner->whitespace();
-
-        $val = $this->attributeValue();
-        if ($isValidAttribute) {
-            $attributes[$name] = $val;
-        }
-        return true;
-    }
-
-    /**
-     * Consume an attribute value.
-     * 8.2.4.37 and after.
-     */
-    protected function attributeValue()
-    {
-        if ($this->scanner->current() != '=') {
-            return null;
-        }
-        $this->scanner->next();
-        // 8.1.2.3
-        $this->scanner->whitespace();
-
-        $tok = $this->scanner->current();
-        switch ($tok) {
-            case "\n":
-            case "\f":
-            case " ":
-            case "\t":
-                // Whitespace here indicates an empty value.
-                return null;
-            case '"':
-            case "'":
-                $this->scanner->next();
-                return $this->quotedAttributeValue($tok);
-            case '>':
-                // case '/': // 8.2.4.37 seems to allow foo=/ as a valid attr.
-                $this->parseError("Expected attribute value, got tag end.");
-                return null;
-            case '=':
-            case '`':
-                $this->parseError("Expecting quotes, got %s.", $tok);
-                return $this->unquotedAttributeValue();
-            default:
-                return $this->unquotedAttributeValue();
-        }
-    }
-
-    /**
-     * Get an attribute value string.
-     *
-     * @param string $quote
-     *            IMPORTANT: This is a series of chars! Any one of which will be considered
-     *            termination of an attribute's value. E.g. "\"'" will stop at either
-     *            ' or ".
-     * @return string The attribute value.
-     */
-    protected function quotedAttributeValue($quote)
-    {
-        $stoplist = "\f" . $quote;
-        $val = '';
-        $tok = $this->scanner->current();
-        while (strspn($tok, $stoplist) == 0 && $tok !== false) {
-            if ($tok == '&') {
-                $val .= $this->decodeCharacterReference(true);
-                $tok = $this->scanner->current();
-            } else {
-                $val .= $tok;
-                $tok = $this->scanner->next();
-            }
-        }
-        $this->scanner->next();
-        return $val;
-    }
-
-    protected function unquotedAttributeValue()
-    {
-        $stoplist = "\t\n\f >";
-        $val = '';
-        $tok = $this->scanner->current();
-        while (strspn($tok, $stoplist) == 0 && $tok !== false) {
-            if ($tok == '&') {
-                $val .= $this->decodeCharacterReference(true);
-                $tok = $this->scanner->current();
-            } else {
-                if (strspn($tok, "\"'<=`") > 0) {
-                    $this->parseError("Unexpected chars in unquoted attribute value %s", $tok);
-                }
-                $val .= $tok;
-                $tok = $this->scanner->next();
-            }
-        }
-        return $val;
-    }
-
-    /**
-     * Consume malformed markup as if it were a comment.
-     * 8.2.4.44
-     *
-     * The spec requires that the ENTIRE tag-like thing be enclosed inside of
-     * the comment. So this will generate comments like:
-     *
-     * &lt;!--&lt/+foo&gt;--&gt;
-     *
-     * @param string $leading
-     *            Prepend any leading characters. This essentially
-     *            negates the need to backtrack, but it's sort of
-     *            a hack.
-     */
-    protected function bogusComment($leading = '')
-    {
-
-        // TODO: This can be done more efficiently when the
-        // scanner exposes a readUntil() method.
-        $comment = $leading;
-        $tok = $this->scanner->current();
-        do {
-            $comment .= $tok;
-            $tok = $this->scanner->next();
-        } while ($tok !== false && $tok != '>');
-
-        $this->flushBuffer();
-        $this->events->comment($comment . $tok);
-        $this->scanner->next();
-
-        return true;
-    }
-
-    /**
-     * Read a comment.
-     *
-     * Expects the first tok to be inside of the comment.
-     */
-    protected function comment()
-    {
-        $tok = $this->scanner->current();
-        $comment = '';
-
-        // <!-->. Emit an empty comment because 8.2.4.46 says to.
-        if ($tok == '>') {
-            // Parse error. Emit the comment token.
-            $this->parseError("Expected comment data, got '>'");
-            $this->events->comment('');
-            $this->scanner->next();
-            return true;
-        }
-
-        // Replace NULL with the replacement char.
-        if ($tok == "\0") {
-            $tok = UTF8Utils::FFFD;
-        }
-        while (! $this->isCommentEnd()) {
-            $comment .= $tok;
-            $tok = $this->scanner->next();
-        }
-
-        $this->events->comment($comment);
-        $this->scanner->next();
-        return true;
-    }
-
-    /**
-     * Check if the scanner has reached the end of a comment.
-     */
-    protected function isCommentEnd()
-    {
-        // EOF
-        if ($this->scanner->current() === false) {
-            // Hit the end.
-            $this->parseError("Unexpected EOF in a comment.");
-            return true;
-        }
-
-        // If it doesn't start with -, not the end.
-        if ($this->scanner->current() != '-') {
-            return false;
-        }
-
-        // Advance one, and test for '->'
-        if ($this->scanner->next() == '-' && $this->scanner->peek() == '>') {
-            $this->scanner->next(); // Consume the last '>'
-            return true;
-        }
-        // Unread '-';
-        $this->scanner->unconsume(1);
-        return false;
-    }
-
-    /**
-     * Parse a DOCTYPE.
-     *
-     * Parse a DOCTYPE declaration. This method has strong bearing on whether or
-     * not Quirksmode is enabled on the event handler.
-     *
-     * @todo This method is a little long. Should probably refactor.
-     */
-    protected function doctype()
-    {
-        if (strcasecmp($this->scanner->current(), 'D')) {
-            return false;
-        }
-        // Check that string is DOCTYPE.
-        $chars = $this->scanner->charsWhile("DOCTYPEdoctype");
-        if (strcasecmp($chars, 'DOCTYPE')) {
-            $this->parseError('Expected DOCTYPE, got %s', $chars);
-            return $this->bogusComment('<!' . $chars);
-        }
-
-        $this->scanner->whitespace();
-        $tok = $this->scanner->current();
-
-        // EOF: die.
-        if ($tok === false) {
-            $this->events->doctype('html5', EventHandler::DOCTYPE_NONE, '', true);
-            return $this->eof();
-        }
-
-        $doctypeName = '';
-
-        // NULL char: convert.
-        if ($tok === "\0") {
-            $this->parseError("Unexpected null character in DOCTYPE.");
-            $doctypeName .= UTF8::FFFD;
-            $tok = $this->scanner->next();
-        }
-
-        $stop = " \n\f>";
-        $doctypeName = $this->scanner->charsUntil($stop);
-        // Lowercase ASCII, replace \0 with FFFD
-        $doctypeName = strtolower(strtr($doctypeName, "\0", UTF8Utils::FFFD));
-
-        $tok = $this->scanner->current();
-
-        // If false, emit a parse error, DOCTYPE, and return.
-        if ($tok === false) {
-            $this->parseError('Unexpected EOF in DOCTYPE declaration.');
-            $this->events->doctype($doctypeName, EventHandler::DOCTYPE_NONE, null, true);
-            return true;
-        }
-
-        // Short DOCTYPE, like <!DOCTYPE html>
-        if ($tok == '>') {
-            // DOCTYPE without a name.
-            if (strlen($doctypeName) == 0) {
-                $this->parseError("Expected a DOCTYPE name. Got nothing.");
-                $this->events->doctype($doctypeName, 0, null, true);
-                $this->scanner->next();
-                return true;
-            }
-            $this->events->doctype($doctypeName);
-            $this->scanner->next();
-            return true;
-        }
-        $this->scanner->whitespace();
-
-        $pub = strtoupper($this->scanner->getAsciiAlpha());
-        $white = strlen($this->scanner->whitespace());
-        $tok = $this->scanner->current();
-
-        // Get ID, and flag it as pub or system.
-        if (($pub == 'PUBLIC' || $pub == 'SYSTEM') && $white > 0) {
-            // Get the sys ID.
-            $type = $pub == 'PUBLIC' ? EventHandler::DOCTYPE_PUBLIC : EventHandler::DOCTYPE_SYSTEM;
-            $id = $this->quotedString("\0>");
-            if ($id === false) {
-                $this->events->doctype($doctypeName, $type, $pub, false);
-                return false;
-            }
-
-            // Premature EOF.
-            if ($this->scanner->current() === false) {
-                $this->parseError("Unexpected EOF in DOCTYPE");
-                $this->events->doctype($doctypeName, $type, $id, true);
-                return true;
-            }
-
-            // Well-formed complete DOCTYPE.
-            $this->scanner->whitespace();
-            if ($this->scanner->current() == '>') {
-                $this->events->doctype($doctypeName, $type, $id, false);
-                $this->scanner->next();
-                return true;
-            }
-
-            // If we get here, we have <!DOCTYPE foo PUBLIC "bar" SOME_JUNK
-            // Throw away the junk, parse error, quirks mode, return true.
-            $this->scanner->charsUntil(">");
-            $this->parseError("Malformed DOCTYPE.");
-            $this->events->doctype($doctypeName, $type, $id, true);
-            $this->scanner->next();
-            return true;
-        }
-
-        // Else it's a bogus DOCTYPE.
-        // Consume to > and trash.
-        $this->scanner->charsUntil('>');
-
-        $this->parseError("Expected PUBLIC or SYSTEM. Got %s.", $pub);
-        $this->events->doctype($doctypeName, 0, null, true);
-        $this->scanner->next();
-        return true;
-    }
-
-    /**
-     * Utility for reading a quoted string.
-     *
-     * @param string $stopchars
-     *            Characters (in addition to a close-quote) that should stop the string.
-     *            E.g. sometimes '>' is higher precedence than '"' or "'".
-     * @return mixed String if one is found (quotations omitted)
-     */
-    protected function quotedString($stopchars)
-    {
-        $tok = $this->scanner->current();
-        if ($tok == '"' || $tok == "'") {
-            $this->scanner->next();
-            $ret = $this->scanner->charsUntil($tok . $stopchars);
-            if ($this->scanner->current() == $tok) {
-                $this->scanner->next();
-            } else {
-                // Parse error because no close quote.
-                $this->parseError("Expected %s, got %s", $tok, $this->scanner->current());
-            }
-            return $ret;
-        }
-        return false;
-    }
-
-    /**
-     * Handle a CDATA section.
-     */
-    protected function cdataSection()
-    {
-        if ($this->scanner->current() != '[') {
-            return false;
-        }
-        $cdata = '';
-        $this->scanner->next();
-
-        $chars = $this->scanner->charsWhile('CDAT');
-        if ($chars != 'CDATA' || $this->scanner->current() != '[') {
-            $this->parseError('Expected [CDATA[, got %s', $chars);
-            return $this->bogusComment('<![' . $chars);
-        }
-
-        $tok = $this->scanner->next();
-        do {
-            if ($tok === false) {
-                $this->parseError('Unexpected EOF inside CDATA.');
-                $this->bogusComment('<![CDATA[' . $cdata);
-                return true;
-            }
-            $cdata .= $tok;
-            $tok = $this->scanner->next();
-        } while (! $this->sequenceMatches(']]>'));
-
-        // Consume ]]>
-        $this->scanner->consume(3);
-
-        $this->events->cdata($cdata);
-        return true;
-    }
-
-    // ================================================================
-    // Non-HTML5
-    // ================================================================
-    /**
-     * Handle a processing instruction.
-     *
-     * XML processing instructions are supposed to be ignored in HTML5,
-     * treated as "bogus comments". However, since we're not a user
-     * agent, we allow them. We consume until ?> and then issue a
-     * EventListener::processingInstruction() event.
-     */
-    protected function processingInstruction()
-    {
-        if ($this->scanner->current() != '?') {
-            return false;
-        }
-
-        $tok = $this->scanner->next();
-        $procName = $this->scanner->getAsciiAlpha();
-        $white = strlen($this->scanner->whitespace());
-
-        // If not a PI, send to bogusComment.
-        if (strlen($procName) == 0 || $white == 0 || $this->scanner->current() == false) {
-            $this->parseError("Expected processing instruction name, got $tok");
-            $this->bogusComment('<?' . $tok . $procName);
-            return true;
-        }
-
-        $data = '';
-        // As long as it's not the case that the next two chars are ? and >.
-        while (! ($this->scanner->current() == '?' && $this->scanner->peek() == '>')) {
-            $data .= $this->scanner->current();
-
-            $tok = $this->scanner->next();
-            if ($tok === false) {
-                $this->parseError("Unexpected EOF in processing instruction.");
-                $this->events->processingInstruction($procName, $data);
-                return true;
-            }
-        }
-
-        $this->scanner->next(); // >
-        $this->scanner->next(); // Next token.
-        $this->events->processingInstruction($procName, $data);
-        return true;
-    }
-
-    // ================================================================
-    // UTILITY FUNCTIONS
-    // ================================================================
-
-    /**
-     * Read from the input stream until we get to the desired sequene
-     * or hit the end of the input stream.
-     */
-    protected function readUntilSequence($sequence)
-    {
-        $buffer = '';
-
-        // Optimization for reading larger blocks faster.
-        $first = substr($sequence, 0, 1);
-        while ($this->scanner->current() !== false) {
-            $buffer .= $this->scanner->charsUntil($first);
-
-            // Stop as soon as we hit the stopping condition.
-            if ($this->sequenceMatches($sequence, false)) {
-                return $buffer;
-            }
-            $buffer .= $this->scanner->current();
-            $this->scanner->next();
-        }
-
-        // If we get here, we hit the EOF.
-        $this->parseError("Unexpected EOF during text read.");
-        return $buffer;
-    }
-
-    /**
-     * Check if upcomming chars match the given sequence.
-     *
-     * This will read the stream for the $sequence. If it's
-     * found, this will return true. If not, return false.
-     * Since this unconsumes any chars it reads, the caller
-     * will still need to read the next sequence, even if
-     * this returns true.
-     *
-     * Example: $this->sequenceMatches('</script>') will
-     * see if the input stream is at the start of a
-     * '</script>' string.
-     */
-    protected function sequenceMatches($sequence, $caseSensitive = true)
-    {
-        $len = strlen($sequence);
-        $buffer = '';
-        for ($i = 0; $i < $len; ++ $i) {
-            $buffer .= $this->scanner->current();
-
-            // EOF. Rewind and let the caller handle it.
-            if ($this->scanner->current() === false) {
-                $this->scanner->unconsume($i);
-                return false;
-            }
-            $this->scanner->next();
-        }
-
-        $this->scanner->unconsume($len);
-        return $caseSensitive ? $buffer == $sequence : strcasecmp($buffer, $sequence) === 0;
-    }
-
-    /**
-     * Send a TEXT event with the contents of the text buffer.
-     *
-     * This emits an EventHandler::text() event with the current contents of the
-     * temporary text buffer. (The buffer is used to group as much PCDATA
-     * as we can instead of emitting lots and lots of TEXT events.)
-     */
-    protected function flushBuffer()
-    {
-        if ($this->text === '') {
-            return;
-        }
-        $this->events->text($this->text);
-        $this->text = '';
-    }
-
-    /**
-     * Add text to the temporary buffer.
-     *
-     * @see flushBuffer()
-     */
-    protected function buffer($str)
-    {
-        $this->text .= $str;
-    }
-
-    /**
-     * Emit a parse error.
-     *
-     * A parse error always returns false because it never consumes any
-     * characters.
-     */
-    protected function parseError($msg)
-    {
-        $args = func_get_args();
-
-        if (count($args) > 1) {
-            array_shift($args);
-            $msg = vsprintf($msg, $args);
-        }
-
-        $line = $this->scanner->currentLine();
-        $col = $this->scanner->columnOffset();
-        $this->events->parseError($msg, $line, $col);
-        return false;
-    }
-
-    /**
-     * Decode a character reference and return the string.
-     *
-     * Returns false if the entity could not be found. If $inAttribute is set
-     * to true, a bare & will be returned as-is.
-     *
-     * @param boolean $inAttribute
-     *            Set to true if the text is inside of an attribute value.
-     *            false otherwise.
-     */
-    protected function decodeCharacterReference($inAttribute = false)
-    {
-
-        // If it fails this, it's definitely not an entity.
-        if ($this->scanner->current() != '&') {
-            return false;
-        }
-
-        // Next char after &.
-        $tok = $this->scanner->next();
-        $entity = '';
-        $start = $this->scanner->position();
-
-        if ($tok == false) {
-            return '&';
-        }
-
-        // These indicate not an entity. We return just
-        // the &.
-        if (strspn($tok, static::WHITE . "&<") == 1) {
-            // $this->scanner->next();
-            return '&';
-        }
-
-        // Numeric entity
-        if ($tok == '#') {
-            $tok = $this->scanner->next();
-
-            // Hexidecimal encoding.
-            // X[0-9a-fA-F]+;
-            // x[0-9a-fA-F]+;
-            if ($tok == 'x' || $tok == 'X') {
-                $tok = $this->scanner->next(); // Consume x
-
-                // Convert from hex code to char.
-                $hex = $this->scanner->getHex();
-                if (empty($hex)) {
-                    $this->parseError("Expected &#xHEX;, got &#x%s", $tok);
-                    // We unconsume because we don't know what parser rules might
-                    // be in effect for the remaining chars. For example. '&#>'
-                    // might result in a specific parsing rule inside of tag
-                    // contexts, while not inside of pcdata context.
-                    $this->scanner->unconsume(2);
-                    return '&';
-                }
-                $entity = CharacterReference::lookupHex($hex);
-            }             // Decimal encoding.
-            // [0-9]+;
-            else {
-                // Convert from decimal to char.
-                $numeric = $this->scanner->getNumeric();
-                if ($numeric === false) {
-                    $this->parseError("Expected &#DIGITS;, got &#%s", $tok);
-                    $this->scanner->unconsume(2);
-                    return '&';
-                }
-                $entity = CharacterReference::lookupDecimal($numeric);
-            }
-        }         // String entity.
-        else {
-            // Attempt to consume a string up to a ';'.
-            // [a-zA-Z0-9]+;
-            $cname = $this->scanner->getAsciiAlpha();
-            $entity = CharacterReference::lookupName($cname);
-
-            // When no entity is found provide the name of the unmatched string
-            // and continue on as the & is not part of an entity. The & will
-            // be converted to &amp; elsewhere.
-            if ($entity == null) {
-                $this->parseError("No match in entity table for '%s'", $cname);
-                $this->scanner->unconsume($this->scanner->position() - $start);
-                return '&';
-            }
-        }
-
-        // The scanner has advanced the cursor for us.
-        $tok = $this->scanner->current();
-
-        // We have an entity. We're done here.
-        if ($tok == ';') {
-            $this->scanner->next();
-            return $entity;
-        }
-
-        // If in an attribute, then failing to match ; means unconsume the
-        // entire string. Otherwise, failure to match is an error.
-        if ($inAttribute) {
-            $this->scanner->unconsume($this->scanner->position() - $start);
-            return '&';
-        }
-
-        $this->parseError("Expected &ENTITY;, got &ENTITY%s (no trailing ;) ", $tok);
-        return '&' . $entity;
-    }
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/TreeBuildingRules.php b/vendor/masterminds/html5/src/HTML5/Parser/TreeBuildingRules.php
deleted file mode 100644
index 2af3c66..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/TreeBuildingRules.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Parser;
-
-/**
- * Handles special-case rules for the DOM tree builder.
- *
- * Many tags have special rules that need to be accomodated on an
- * individual basis. This class handles those rules.
- *
- * See section 8.1.2.4 of the spec.
- *
- * @todo - colgroup and col special behaviors
- *       - body and head special behaviors
- */
-class TreeBuildingRules
-{
-
-    protected static $tags = array(
-        'li' => 1,
-        'dd' => 1,
-        'dt' => 1,
-        'rt' => 1,
-        'rp' => 1,
-        'tr' => 1,
-        'th' => 1,
-        'td' => 1,
-        'thead' => 1,
-        'tfoot' => 1,
-        'tbody' => 1,
-        'table' => 1,
-        'optgroup' => 1,
-        'option' => 1
-    );
-
-    /**
-     * Build a new rules engine.
-     *
-     * @param \DOMDocument $doc
-     *            The DOM document to use for evaluation and modification.
-     */
-    public function __construct($doc)
-    {
-        $this->doc = $doc;
-    }
-
-    /**
-     * Returns true if the given tagname has special processing rules.
-     */
-    public function hasRules($tagname)
-    {
-        return isset(static::$tags[$tagname]);
-    }
-
-    /**
-     * Evaluate the rule for the current tag name.
-     *
-     * This may modify the existing DOM.
-     *
-     * @return \DOMElement The new Current DOM element.
-     */
-    public function evaluate($new, $current)
-    {
-        switch ($new->tagName) {
-            case 'li':
-                return $this->handleLI($new, $current);
-            case 'dt':
-            case 'dd':
-                return $this->handleDT($new, $current);
-            case 'rt':
-            case 'rp':
-                return $this->handleRT($new, $current);
-            case 'optgroup':
-                return $this->closeIfCurrentMatches($new, $current, array(
-                    'optgroup'
-                ));
-            case 'option':
-                return $this->closeIfCurrentMatches($new, $current, array(
-                    'option',
-                    'optgroup'
-                ));
-            case 'tr':
-                return $this->closeIfCurrentMatches($new, $current, array(
-                    'tr'
-                ));
-            case 'td':
-            case 'th':
-                return $this->closeIfCurrentMatches($new, $current, array(
-                    'th',
-                    'td'
-                ));
-            case 'tbody':
-            case 'thead':
-            case 'tfoot':
-            case 'table': // Spec isn't explicit about this, but it's necessary.
-
-                return $this->closeIfCurrentMatches($new, $current, array(
-                    'thead',
-                    'tfoot',
-                    'tbody'
-                ));
-        }
-
-        return $current;
-    }
-
-    protected function handleLI($ele, $current)
-    {
-        return $this->closeIfCurrentMatches($ele, $current, array(
-            'li'
-        ));
-    }
-
-    protected function handleDT($ele, $current)
-    {
-        return $this->closeIfCurrentMatches($ele, $current, array(
-            'dt',
-            'dd'
-        ));
-    }
-
-    protected function handleRT($ele, $current)
-    {
-        return $this->closeIfCurrentMatches($ele, $current, array(
-            'rt',
-            'rp'
-        ));
-    }
-
-    protected function closeIfCurrentMatches($ele, $current, $match)
-    {
-        $tname = $current->tagName;
-        if (in_array($current->tagName, $match)) {
-            $current->parentNode->appendChild($ele);
-        } else {
-            $current->appendChild($ele);
-        }
-
-        return $ele;
-    }
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Parser/UTF8Utils.php b/vendor/masterminds/html5/src/HTML5/Parser/UTF8Utils.php
deleted file mode 100644
index d319252..0000000
--- a/vendor/masterminds/html5/src/HTML5/Parser/UTF8Utils.php
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Parser;
-/*
- *
-* Portions based on code from html5lib files with the following copyright:
-
-Copyright 2009 Geoffrey Sneddon <http://gsnedders.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.
-
-*/
-/**
- * UTF-8 Utilities
- */
-class UTF8Utils
-{
-
-    /**
-     * The Unicode replacement character..
-     */
-    const FFFD = "\xEF\xBF\xBD";
-
-    /**
-     * Count the number of characters in a string.
-     *
-     * UTF-8 aware. This will try (in order) iconv,
-     * MB, libxml, and finally a custom counter.
-     *
-     * @todo Move this to a general utility class.
-     */
-    public static function countChars($string)
-    {
-        // Get the length for the string we need.
-        if (function_exists('iconv_strlen')) {
-            return iconv_strlen($string, 'utf-8');
-        } elseif (function_exists('mb_strlen')) {
-            return mb_strlen($string, 'utf-8');
-        } elseif (function_exists('utf8_decode')) {
-            // MPB: Will this work? Won't certain decodes lead to two chars
-            // extrapolated out of 2-byte chars?
-            return strlen(utf8_decode($string));
-        }
-        $count = count_chars($string);
-        // 0x80 = 0x7F - 0 + 1 (one added to get inclusive range)
-        // 0x33 = 0xF4 - 0x2C + 1 (one added to get inclusive range)
-        return array_sum(array_slice($count, 0, 0x80)) + array_sum(array_slice($count, 0xC2, 0x33));
-    }
-
-    /**
-     * Convert data from the given encoding to UTF-8.
-     *
-     * This has not yet been tested with charactersets other than UTF-8.
-     * It should work with ISO-8859-1/-13 and standard Latin Win charsets.
-     *
-     * @param string $data
-     *            The data to convert.
-     * @param string $encoding
-     *            A valid encoding. Examples: http://www.php.net/manual/en/mbstring.supported-encodings.php
-     */
-    public static function convertToUTF8($data, $encoding = 'UTF-8')
-    {
-        /*
-         * From the HTML5 spec: Given an encoding, the bytes in the input stream must be converted to Unicode characters for the tokeniser, as described by the rules for that encoding, except that the leading U+FEFF BYTE ORDER MARK character, if any, must not be stripped by the encoding layer (it is stripped by the rule below). Bytes or sequences of bytes in the original byte stream that could not be converted to Unicode characters must be converted to U+FFFD REPLACEMENT CHARACTER code points.
-         */
-
-        // mb_convert_encoding is chosen over iconv because of a bug. The best
-        // details for the bug are on http://us1.php.net/manual/en/function.iconv.php#108643
-        // which contains links to the actual but reports as well as work around
-        // details.
-        if (function_exists('mb_convert_encoding')) {
-            // mb library has the following behaviors:
-            // - UTF-16 surrogates result in false.
-            // - Overlongs and outside Plane 16 result in empty strings.
-
-            // Before we run mb_convert_encoding we need to tell it what to do with
-            // characters it does not know. This could be different than the parent
-            // application executing this library so we store the value, change it
-            // to our needs, and then change it back when we are done. This feels
-            // a little excessive and it would be great if there was a better way.
-            $save = ini_get('mbstring.substitute_character');
-            ini_set('mbstring.substitute_character', "none");
-            $data = mb_convert_encoding($data, 'UTF-8', $encoding);
-            ini_set('mbstring.substitute_character', $save);
-        }        // @todo Get iconv running in at least some environments if that is possible.
-        elseif (function_exists('iconv') && $encoding != 'auto') {
-            // fprintf(STDOUT, "iconv found\n");
-            // iconv has the following behaviors:
-            // - Overlong representations are ignored.
-            // - Beyond Plane 16 is replaced with a lower char.
-            // - Incomplete sequences generate a warning.
-            $data = @iconv($encoding, 'UTF-8//IGNORE', $data);
-        } else {
-            // we can make a conforming native implementation
-            throw new Exception('Not implemented, please install mbstring or iconv');
-        }
-
-        /*
-         * One leading U+FEFF BYTE ORDER MARK character must be ignored if any are present.
-         */
-        if (substr($data, 0, 3) === "\xEF\xBB\xBF") {
-            $data = substr($data, 3);
-        }
-
-        return $data;
-    }
-
-    /**
-     * Checks for Unicode code points that are not valid in a document.
-     *
-     * @param string $data
-     *            A string to analyze.
-     * @return array An array of (string) error messages produced by the scanning.
-     */
-    public static function checkForIllegalCodepoints($data)
-    {
-        if (! function_exists('preg_match_all')) {
-            throw\Exception('The PCRE library is not loaded or is not available.');
-        }
-
-        // Vestigal error handling.
-        $errors = array();
-
-        /*
-         * All U+0000 null characters in the input must be replaced by U+FFFD REPLACEMENT CHARACTERs. Any occurrences of such characters is a parse error.
-         */
-        for ($i = 0, $count = substr_count($data, "\0"); $i < $count; $i ++) {
-            $errors[] = 'null-character';
-        }
-
-        /*
-         * Any occurrences of any characters in the ranges U+0001 to U+0008, U+000B, U+000E to U+001F, U+007F to U+009F, U+D800 to U+DFFF , U+FDD0 to U+FDEF, and characters U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFFE, U+2FFFF, U+3FFFE, U+3FFFF, U+4FFFE, U+4FFFF, U+5FFFE, U+5FFFF, U+6FFFE, U+6FFFF, U+7FFFE, U+7FFFF, U+8FFFE, U+8FFFF, U+9FFFE, U+9FFFF, U+AFFFE, U+AFFFF, U+BFFFE, U+BFFFF, U+CFFFE, U+CFFFF, U+DFFFE, U+DFFFF, U+EFFFE, U+EFFFF, U+FFFFE, U+FFFFF, U+10FFFE, and U+10FFFF are parse errors. (These are all control characters or permanently undefined Unicode characters.)
-         */
-        // Check PCRE is loaded.
-        $count = preg_match_all(
-            '/(?:
-        [\x01-\x08\x0B\x0E-\x1F\x7F] # U+0001 to U+0008, U+000B,  U+000E to U+001F and U+007F
-      |
-        \xC2[\x80-\x9F] # U+0080 to U+009F
-      |
-        \xED(?:\xA0[\x80-\xFF]|[\xA1-\xBE][\x00-\xFF]|\xBF[\x00-\xBF]) # U+D800 to U+DFFFF
-      |
-        \xEF\xB7[\x90-\xAF] # U+FDD0 to U+FDEF
-      |
-        \xEF\xBF[\xBE\xBF] # U+FFFE and U+FFFF
-      |
-        [\xF0-\xF4][\x8F-\xBF]\xBF[\xBE\xBF] # U+nFFFE and U+nFFFF (1 <= n <= 10_{16})
-      )/x', $data, $matches);
-        for ($i = 0; $i < $count; $i ++) {
-            $errors[] = 'invalid-codepoint';
-        }
-
-        return $errors;
-    }
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Serializer/HTML5Entities.php b/vendor/masterminds/html5/src/HTML5/Serializer/HTML5Entities.php
deleted file mode 100644
index 4f90f84..0000000
--- a/vendor/masterminds/html5/src/HTML5/Serializer/HTML5Entities.php
+++ /dev/null
@@ -1,1533 +0,0 @@
-<?php
-/**
- * @file
- * This contains HTML5 entities to use with serializing.
- *
- * The list here is mildly different from the list at \Masterminds\HTML5\Entities because
- * that list was generated from the w3c. It contains some entities that are
- * not entirely proper such as &am; which maps to &. This list is meant to be
- * a fallback for PHP versions prior to PHP 5.4 when dealing with encoding.
- */
-namespace Masterminds\HTML5\Serializer;
-
-/**
- * A mapping of entities to their html5 representation.
- * Used for older PHP
- * versions that don't have the mapping.
- */
-class HTML5Entities
-{
-
-    public static $map = array(
-        '	' => '&Tab;',
-        "\n" => '&NewLine;',
-        '!' => '&excl;',
-        '"' => '&quot;',
-        '#' => '&num;',
-        '$' => '&dollar;',
-        '%' => '&percnt;',
-        '&' => '&amp;',
-        '\'' => '&apos;',
-        '(' => '&lpar;',
-        ')' => '&rpar;',
-        '*' => '&ast;',
-        '+' => '&plus;',
-        ',' => '&comma;',
-        '.' => '&period;',
-        '/' => '&sol;',
-        ':' => '&colon;',
-        ';' => '&semi;',
-        '<' => '&lt;',
-        '<⃒' => '&nvlt',
-        '=' => '&equals;',
-        '=⃥' => '&bne',
-        '>' => '&gt;',
-        '>⃒' => '&nvgt',
-        '?' => '&quest;',
-        '@' => '&commat;',
-        '[' => '&lbrack;',
-        '\\' => '&bsol;',
-        ']' => '&rsqb;',
-        '^' => '&Hat;',
-        '_' => '&lowbar;',
-        '`' => '&grave;',
-        'fj' => '&fjlig',
-        '{' => '&lbrace;',
-        '|' => '&vert;',
-        '}' => '&rcub;',
-        ' ' => '&nbsp;',
-        '¡' => '&iexcl;',
-        '¢' => '&cent;',
-        '£' => '&pound;',
-        '¤' => '&curren;',
-        '¥' => '&yen;',
-        '¦' => '&brvbar;',
-        '§' => '&sect;',
-        '¨' => '&DoubleDot;',
-        '©' => '&copy;',
-        'ª' => '&ordf;',
-        '«' => '&laquo;',
-        '¬' => '&not;',
-        '­' => '&shy;',
-        '®' => '&reg;',
-        '¯' => '&macr;',
-        '°' => '&deg;',
-        '±' => '&plusmn;',
-        '²' => '&sup2;',
-        '³' => '&sup3;',
-        '´' => '&DiacriticalAcute;',
-        'µ' => '&micro;',
-        '¶' => '&para;',
-        '·' => '&CenterDot;',
-        '¸' => '&Cedilla;',
-        '¹' => '&sup1;',
-        'º' => '&ordm;',
-        '»' => '&raquo;',
-        '¼' => '&frac14;',
-        '½' => '&half;',
-        '¾' => '&frac34;',
-        '¿' => '&iquest;',
-        'À' => '&Agrave;',
-        'Á' => '&Aacute;',
-        'Â' => '&Acirc;',
-        'Ã' => '&Atilde;',
-        'Ä' => '&Auml;',
-        'Å' => '&Aring;',
-        'Æ' => '&AElig;',
-        'Ç' => '&Ccedil;',
-        'È' => '&Egrave;',
-        'É' => '&Eacute;',
-        'Ê' => '&Ecirc;',
-        'Ë' => '&Euml;',
-        'Ì' => '&Igrave;',
-        'Í' => '&Iacute;',
-        'Î' => '&Icirc;',
-        'Ï' => '&Iuml;',
-        'Ð' => '&ETH;',
-        'Ñ' => '&Ntilde;',
-        'Ò' => '&Ograve;',
-        'Ó' => '&Oacute;',
-        'Ô' => '&Ocirc;',
-        'Õ' => '&Otilde;',
-        'Ö' => '&Ouml;',
-        '×' => '&times;',
-        'Ø' => '&Oslash;',
-        'Ù' => '&Ugrave;',
-        'Ú' => '&Uacute;',
-        'Û' => '&Ucirc;',
-        'Ü' => '&Uuml;',
-        'Ý' => '&Yacute;',
-        'Þ' => '&THORN;',
-        'ß' => '&szlig;',
-        'à' => '&agrave;',
-        'á' => '&aacute;',
-        'â' => '&acirc;',
-        'ã' => '&atilde;',
-        'ä' => '&auml;',
-        'å' => '&aring;',
-        'æ' => '&aelig;',
-        'ç' => '&ccedil;',
-        'è' => '&egrave;',
-        'é' => '&eacute;',
-        'ê' => '&ecirc;',
-        'ë' => '&euml;',
-        'ì' => '&igrave;',
-        'í' => '&iacute;',
-        'î' => '&icirc;',
-        'ï' => '&iuml;',
-        'ð' => '&eth;',
-        'ñ' => '&ntilde;',
-        'ò' => '&ograve;',
-        'ó' => '&oacute;',
-        'ô' => '&ocirc;',
-        'õ' => '&otilde;',
-        'ö' => '&ouml;',
-        '÷' => '&divide;',
-        'ø' => '&oslash;',
-        'ù' => '&ugrave;',
-        'ú' => '&uacute;',
-        'û' => '&ucirc;',
-        'ü' => '&uuml;',
-        'ý' => '&yacute;',
-        'þ' => '&thorn;',
-        'ÿ' => '&yuml;',
-        'Ā' => '&Amacr;',
-        'ā' => '&amacr;',
-        'Ă' => '&Abreve;',
-        'ă' => '&abreve;',
-        'Ą' => '&Aogon;',
-        'ą' => '&aogon;',
-        'Ć' => '&Cacute;',
-        'ć' => '&cacute;',
-        'Ĉ' => '&Ccirc;',
-        'ĉ' => '&ccirc;',
-        'Ċ' => '&Cdot;',
-        'ċ' => '&cdot;',
-        'Č' => '&Ccaron;',
-        'č' => '&ccaron;',
-        'Ď' => '&Dcaron;',
-        'ď' => '&dcaron;',
-        'Đ' => '&Dstrok;',
-        'đ' => '&dstrok;',
-        'Ē' => '&Emacr;',
-        'ē' => '&emacr;',
-        'Ė' => '&Edot;',
-        'ė' => '&edot;',
-        'Ę' => '&Eogon;',
-        'ę' => '&eogon;',
-        'Ě' => '&Ecaron;',
-        'ě' => '&ecaron;',
-        'Ĝ' => '&Gcirc;',
-        'ĝ' => '&gcirc;',
-        'Ğ' => '&Gbreve;',
-        'ğ' => '&gbreve;',
-        'Ġ' => '&Gdot;',
-        'ġ' => '&gdot;',
-        'Ģ' => '&Gcedil;',
-        'Ĥ' => '&Hcirc;',
-        'ĥ' => '&hcirc;',
-        'Ħ' => '&Hstrok;',
-        'ħ' => '&hstrok;',
-        'Ĩ' => '&Itilde;',
-        'ĩ' => '&itilde;',
-        'Ī' => '&Imacr;',
-        'ī' => '&imacr;',
-        'Į' => '&Iogon;',
-        'į' => '&iogon;',
-        'İ' => '&Idot;',
-        'ı' => '&inodot;',
-        'Ĳ' => '&IJlig;',
-        'ĳ' => '&ijlig;',
-        'Ĵ' => '&Jcirc;',
-        'ĵ' => '&jcirc;',
-        'Ķ' => '&Kcedil;',
-        'ķ' => '&kcedil;',
-        'ĸ' => '&kgreen;',
-        'Ĺ' => '&Lacute;',
-        'ĺ' => '&lacute;',
-        'Ļ' => '&Lcedil;',
-        'ļ' => '&lcedil;',
-        'Ľ' => '&Lcaron;',
-        'ľ' => '&lcaron;',
-        'Ŀ' => '&Lmidot;',
-        'ŀ' => '&lmidot;',
-        'Ł' => '&Lstrok;',
-        'ł' => '&lstrok;',
-        'Ń' => '&Nacute;',
-        'ń' => '&nacute;',
-        'Ņ' => '&Ncedil;',
-        'ņ' => '&ncedil;',
-        'Ň' => '&Ncaron;',
-        'ň' => '&ncaron;',
-        'ŉ' => '&napos;',
-        'Ŋ' => '&ENG;',
-        'ŋ' => '&eng;',
-        'Ō' => '&Omacr;',
-        'ō' => '&omacr;',
-        'Ő' => '&Odblac;',
-        'ő' => '&odblac;',
-        'Œ' => '&OElig;',
-        'œ' => '&oelig;',
-        'Ŕ' => '&Racute;',
-        'ŕ' => '&racute;',
-        'Ŗ' => '&Rcedil;',
-        'ŗ' => '&rcedil;',
-        'Ř' => '&Rcaron;',
-        'ř' => '&rcaron;',
-        'Ś' => '&Sacute;',
-        'ś' => '&sacute;',
-        'Ŝ' => '&Scirc;',
-        'ŝ' => '&scirc;',
-        'Ş' => '&Scedil;',
-        'ş' => '&scedil;',
-        'Š' => '&Scaron;',
-        'š' => '&scaron;',
-        'Ţ' => '&Tcedil;',
-        'ţ' => '&tcedil;',
-        'Ť' => '&Tcaron;',
-        'ť' => '&tcaron;',
-        'Ŧ' => '&Tstrok;',
-        'ŧ' => '&tstrok;',
-        'Ũ' => '&Utilde;',
-        'ũ' => '&utilde;',
-        'Ū' => '&Umacr;',
-        'ū' => '&umacr;',
-        'Ŭ' => '&Ubreve;',
-        'ŭ' => '&ubreve;',
-        'Ů' => '&Uring;',
-        'ů' => '&uring;',
-        'Ű' => '&Udblac;',
-        'ű' => '&udblac;',
-        'Ų' => '&Uogon;',
-        'ų' => '&uogon;',
-        'Ŵ' => '&Wcirc;',
-        'ŵ' => '&wcirc;',
-        'Ŷ' => '&Ycirc;',
-        'ŷ' => '&ycirc;',
-        'Ÿ' => '&Yuml;',
-        'Ź' => '&Zacute;',
-        'ź' => '&zacute;',
-        'Ż' => '&Zdot;',
-        'ż' => '&zdot;',
-        'Ž' => '&Zcaron;',
-        'ž' => '&zcaron;',
-        'ƒ' => '&fnof;',
-        'Ƶ' => '&imped;',
-        'ǵ' => '&gacute;',
-        'ȷ' => '&jmath;',
-        'ˆ' => '&circ;',
-        'ˇ' => '&Hacek;',
-        '˘' => '&Breve;',
-        '˙' => '&dot;',
-        '˚' => '&ring;',
-        '˛' => '&ogon;',
-        '˜' => '&DiacriticalTilde;',
-        '˝' => '&DiacriticalDoubleAcute;',
-        '̑' => '&DownBreve;',
-        'Α' => '&Alpha;',
-        'Β' => '&Beta;',
-        'Γ' => '&Gamma;',
-        'Δ' => '&Delta;',
-        'Ε' => '&Epsilon;',
-        'Ζ' => '&Zeta;',
-        'Η' => '&Eta;',
-        'Θ' => '&Theta;',
-        'Ι' => '&Iota;',
-        'Κ' => '&Kappa;',
-        'Λ' => '&Lambda;',
-        'Μ' => '&Mu;',
-        'Ν' => '&Nu;',
-        'Ξ' => '&Xi;',
-        'Ο' => '&Omicron;',
-        'Π' => '&Pi;',
-        'Ρ' => '&Rho;',
-        'Σ' => '&Sigma;',
-        'Τ' => '&Tau;',
-        'Υ' => '&Upsilon;',
-        'Φ' => '&Phi;',
-        'Χ' => '&Chi;',
-        'Ψ' => '&Psi;',
-        'Ω' => '&Omega;',
-        'α' => '&alpha;',
-        'β' => '&beta;',
-        'γ' => '&gamma;',
-        'δ' => '&delta;',
-        'ε' => '&epsi;',
-        'ζ' => '&zeta;',
-        'η' => '&eta;',
-        'θ' => '&theta;',
-        'ι' => '&iota;',
-        'κ' => '&kappa;',
-        'λ' => '&lambda;',
-        'μ' => '&mu;',
-        'ν' => '&nu;',
-        'ξ' => '&xi;',
-        'ο' => '&omicron;',
-        'π' => '&pi;',
-        'ρ' => '&rho;',
-        'ς' => '&sigmav;',
-        'σ' => '&sigma;',
-        'τ' => '&tau;',
-        'υ' => '&upsi;',
-        'φ' => '&phi;',
-        'χ' => '&chi;',
-        'ψ' => '&psi;',
-        'ω' => '&omega;',
-        'ϑ' => '&thetasym;',
-        'ϒ' => '&upsih;',
-        'ϕ' => '&straightphi;',
-        'ϖ' => '&piv;',
-        'Ϝ' => '&Gammad;',
-        'ϝ' => '&gammad;',
-        'ϰ' => '&varkappa;',
-        'ϱ' => '&rhov;',
-        'ϵ' => '&straightepsilon;',
-        '϶' => '&backepsilon;',
-        'Ё' => '&IOcy;',
-        'Ђ' => '&DJcy;',
-        'Ѓ' => '&GJcy;',
-        'Є' => '&Jukcy;',
-        'Ѕ' => '&DScy;',
-        'І' => '&Iukcy;',
-        'Ї' => '&YIcy;',
-        'Ј' => '&Jsercy;',
-        'Љ' => '&LJcy;',
-        'Њ' => '&NJcy;',
-        'Ћ' => '&TSHcy;',
-        'Ќ' => '&KJcy;',
-        'Ў' => '&Ubrcy;',
-        'Џ' => '&DZcy;',
-        'А' => '&Acy;',
-        'Б' => '&Bcy;',
-        'В' => '&Vcy;',
-        'Г' => '&Gcy;',
-        'Д' => '&Dcy;',
-        'Е' => '&IEcy;',
-        'Ж' => '&ZHcy;',
-        'З' => '&Zcy;',
-        'И' => '&Icy;',
-        'Й' => '&Jcy;',
-        'К' => '&Kcy;',
-        'Л' => '&Lcy;',
-        'М' => '&Mcy;',
-        'Н' => '&Ncy;',
-        'О' => '&Ocy;',
-        'П' => '&Pcy;',
-        'Р' => '&Rcy;',
-        'С' => '&Scy;',
-        'Т' => '&Tcy;',
-        'У' => '&Ucy;',
-        'Ф' => '&Fcy;',
-        'Х' => '&KHcy;',
-        'Ц' => '&TScy;',
-        'Ч' => '&CHcy;',
-        'Ш' => '&SHcy;',
-        'Щ' => '&SHCHcy;',
-        'Ъ' => '&HARDcy;',
-        'Ы' => '&Ycy;',
-        'Ь' => '&SOFTcy;',
-        'Э' => '&Ecy;',
-        'Ю' => '&YUcy;',
-        'Я' => '&YAcy;',
-        'а' => '&acy;',
-        'б' => '&bcy;',
-        'в' => '&vcy;',
-        'г' => '&gcy;',
-        'д' => '&dcy;',
-        'е' => '&iecy;',
-        'ж' => '&zhcy;',
-        'з' => '&zcy;',
-        'и' => '&icy;',
-        'й' => '&jcy;',
-        'к' => '&kcy;',
-        'л' => '&lcy;',
-        'м' => '&mcy;',
-        'н' => '&ncy;',
-        'о' => '&ocy;',
-        'п' => '&pcy;',
-        'р' => '&rcy;',
-        'с' => '&scy;',
-        'т' => '&tcy;',
-        'у' => '&ucy;',
-        'ф' => '&fcy;',
-        'х' => '&khcy;',
-        'ц' => '&tscy;',
-        'ч' => '&chcy;',
-        'ш' => '&shcy;',
-        'щ' => '&shchcy;',
-        'ъ' => '&hardcy;',
-        'ы' => '&ycy;',
-        'ь' => '&softcy;',
-        'э' => '&ecy;',
-        'ю' => '&yucy;',
-        'я' => '&yacy;',
-        'ё' => '&iocy;',
-        'ђ' => '&djcy;',
-        'ѓ' => '&gjcy;',
-        'є' => '&jukcy;',
-        'ѕ' => '&dscy;',
-        'і' => '&iukcy;',
-        'ї' => '&yicy;',
-        'ј' => '&jsercy;',
-        'љ' => '&ljcy;',
-        'њ' => '&njcy;',
-        'ћ' => '&tshcy;',
-        'ќ' => '&kjcy;',
-        'ў' => '&ubrcy;',
-        'џ' => '&dzcy;',
-        ' ' => '&ensp;',
-        ' ' => '&emsp;',
-        ' ' => '&emsp13;',
-        ' ' => '&emsp14;',
-        ' ' => '&numsp;',
-        ' ' => '&puncsp;',
-        ' ' => '&ThinSpace;',
-        ' ' => '&hairsp;',
-        '​' => '&ZeroWidthSpace;',
-        '‌' => '&zwnj;',
-        '‍' => '&zwj;',
-        '‎' => '&lrm;',
-        '‏' => '&rlm;',
-        '‐' => '&hyphen;',
-        '–' => '&ndash;',
-        '—' => '&mdash;',
-        '―' => '&horbar;',
-        '‖' => '&Verbar;',
-        '‘' => '&OpenCurlyQuote;',
-        '’' => '&rsquo;',
-        '‚' => '&sbquo;',
-        '“' => '&OpenCurlyDoubleQuote;',
-        '”' => '&rdquo;',
-        '„' => '&bdquo;',
-        '†' => '&dagger;',
-        '‡' => '&Dagger;',
-        '•' => '&bull;',
-        '‥' => '&nldr;',
-        '…' => '&hellip;',
-        '‰' => '&permil;',
-        '‱' => '&pertenk;',
-        '′' => '&prime;',
-        '″' => '&Prime;',
-        '‴' => '&tprime;',
-        '‵' => '&backprime;',
-        '‹' => '&lsaquo;',
-        '›' => '&rsaquo;',
-        '‾' => '&oline;',
-        '⁁' => '&caret;',
-        '⁃' => '&hybull;',
-        '⁄' => '&frasl;',
-        '⁏' => '&bsemi;',
-        '⁗' => '&qprime;',
-        ' ' => '&MediumSpace;',
-        '  ' => '&ThickSpace',
-        '⁠' => '&NoBreak;',
-        '⁡' => '&af;',
-        '⁢' => '&InvisibleTimes;',
-        '⁣' => '&ic;',
-        '€' => '&euro;',
-        '⃛' => '&TripleDot;',
-        '⃜' => '&DotDot;',
-        'ℂ' => '&complexes;',
-        '℅' => '&incare;',
-        'ℊ' => '&gscr;',
-        'ℋ' => '&HilbertSpace;',
-        'ℌ' => '&Hfr;',
-        'ℍ' => '&Hopf;',
-        'ℎ' => '&planckh;',
-        'ℏ' => '&planck;',
-        'ℐ' => '&imagline;',
-        'ℑ' => '&Ifr;',
-        'ℒ' => '&lagran;',
-        'ℓ' => '&ell;',
-        'ℕ' => '&naturals;',
-        '№' => '&numero;',
-        '℗' => '&copysr;',
-        '℘' => '&wp;',
-        'ℙ' => '&primes;',
-        'ℚ' => '&rationals;',
-        'ℛ' => '&realine;',
-        'ℜ' => '&Rfr;',
-        'ℝ' => '&Ropf;',
-        '℞' => '&rx;',
-        '™' => '&trade;',
-        'ℤ' => '&Zopf;',
-        '℧' => '&mho;',
-        'ℨ' => '&Zfr;',
-        '℩' => '&iiota;',
-        'ℬ' => '&Bscr;',
-        'ℭ' => '&Cfr;',
-        'ℯ' => '&escr;',
-        'ℰ' => '&expectation;',
-        'ℱ' => '&Fouriertrf;',
-        'ℳ' => '&Mellintrf;',
-        'ℴ' => '&orderof;',
-        'ℵ' => '&aleph;',
-        'ℶ' => '&beth;',
-        'ℷ' => '&gimel;',
-        'ℸ' => '&daleth;',
-        'ⅅ' => '&CapitalDifferentialD;',
-        'ⅆ' => '&DifferentialD;',
-        'ⅇ' => '&exponentiale;',
-        'ⅈ' => '&ImaginaryI;',
-        '⅓' => '&frac13;',
-        '⅔' => '&frac23;',
-        '⅕' => '&frac15;',
-        '⅖' => '&frac25;',
-        '⅗' => '&frac35;',
-        '⅘' => '&frac45;',
-        '⅙' => '&frac16;',
-        '⅚' => '&frac56;',
-        '⅛' => '&frac18;',
-        '⅜' => '&frac38;',
-        '⅝' => '&frac58;',
-        '⅞' => '&frac78;',
-        '←' => '&larr;',
-        '↑' => '&uarr;',
-        '→' => '&srarr;',
-        '↓' => '&darr;',
-        '↔' => '&harr;',
-        '↕' => '&UpDownArrow;',
-        '↖' => '&nwarrow;',
-        '↗' => '&UpperRightArrow;',
-        '↘' => '&LowerRightArrow;',
-        '↙' => '&swarr;',
-        '↚' => '&nleftarrow;',
-        '↛' => '&nrarr;',
-        '↝' => '&rarrw;',
-        '↝̸' => '&nrarrw',
-        '↞' => '&Larr;',
-        '↟' => '&Uarr;',
-        '↠' => '&twoheadrightarrow;',
-        '↡' => '&Darr;',
-        '↢' => '&larrtl;',
-        '↣' => '&rarrtl;',
-        '↤' => '&LeftTeeArrow;',
-        '↥' => '&UpTeeArrow;',
-        '↦' => '&map;',
-        '↧' => '&DownTeeArrow;',
-        '↩' => '&larrhk;',
-        '↪' => '&rarrhk;',
-        '↫' => '&larrlp;',
-        '↬' => '&looparrowright;',
-        '↭' => '&harrw;',
-        '↮' => '&nleftrightarrow;',
-        '↰' => '&Lsh;',
-        '↱' => '&rsh;',
-        '↲' => '&ldsh;',
-        '↳' => '&rdsh;',
-        '↵' => '&crarr;',
-        '↶' => '&curvearrowleft;',
-        '↷' => '&curarr;',
-        '↺' => '&olarr;',
-        '↻' => '&orarr;',
-        '↼' => '&leftharpoonup;',
-        '↽' => '&leftharpoondown;',
-        '↾' => '&RightUpVector;',
-        '↿' => '&uharl;',
-        '⇀' => '&rharu;',
-        '⇁' => '&rhard;',
-        '⇂' => '&RightDownVector;',
-        '⇃' => '&dharl;',
-        '⇄' => '&rightleftarrows;',
-        '⇅' => '&udarr;',
-        '⇆' => '&lrarr;',
-        '⇇' => '&llarr;',
-        '⇈' => '&upuparrows;',
-        '⇉' => '&rrarr;',
-        '⇊' => '&downdownarrows;',
-        '⇋' => '&leftrightharpoons;',
-        '⇌' => '&rightleftharpoons;',
-        '⇍' => '&nLeftarrow;',
-        '⇎' => '&nhArr;',
-        '⇏' => '&nrArr;',
-        '⇐' => '&DoubleLeftArrow;',
-        '⇑' => '&DoubleUpArrow;',
-        '⇒' => '&Implies;',
-        '⇓' => '&Downarrow;',
-        '⇔' => '&hArr;',
-        '⇕' => '&Updownarrow;',
-        '⇖' => '&nwArr;',
-        '⇗' => '&neArr;',
-        '⇘' => '&seArr;',
-        '⇙' => '&swArr;',
-        '⇚' => '&lAarr;',
-        '⇛' => '&rAarr;',
-        '⇝' => '&zigrarr;',
-        '⇤' => '&LeftArrowBar;',
-        '⇥' => '&RightArrowBar;',
-        '⇵' => '&DownArrowUpArrow;',
-        '⇽' => '&loarr;',
-        '⇾' => '&roarr;',
-        '⇿' => '&hoarr;',
-        '∀' => '&forall;',
-        '∁' => '&comp;',
-        '∂' => '&part;',
-        '∂̸' => '&npart',
-        '∃' => '&Exists;',
-        '∄' => '&nexist;',
-        '∅' => '&empty;',
-        '∇' => '&nabla;',
-        '∈' => '&isinv;',
-        '∉' => '&notin;',
-        '∋' => '&ReverseElement;',
-        '∌' => '&notniva;',
-        '∏' => '&prod;',
-        '∐' => '&Coproduct;',
-        '∑' => '&sum;',
-        '−' => '&minus;',
-        '∓' => '&MinusPlus;',
-        '∔' => '&plusdo;',
-        '∖' => '&ssetmn;',
-        '∗' => '&lowast;',
-        '∘' => '&compfn;',
-        '√' => '&Sqrt;',
-        '∝' => '&prop;',
-        '∞' => '&infin;',
-        '∟' => '&angrt;',
-        '∠' => '&angle;',
-        '∠⃒' => '&nang',
-        '∡' => '&angmsd;',
-        '∢' => '&angsph;',
-        '∣' => '&mid;',
-        '∤' => '&nshortmid;',
-        '∥' => '&shortparallel;',
-        '∦' => '&nparallel;',
-        '∧' => '&and;',
-        '∨' => '&or;',
-        '∩' => '&cap;',
-        '∩︀' => '&caps',
-        '∪' => '&cup;',
-        '∪︀' => '&cups',
-        '∫' => '&Integral;',
-        '∬' => '&Int;',
-        '∭' => '&tint;',
-        '∮' => '&ContourIntegral;',
-        '∯' => '&DoubleContourIntegral;',
-        '∰' => '&Cconint;',
-        '∱' => '&cwint;',
-        '∲' => '&cwconint;',
-        '∳' => '&awconint;',
-        '∴' => '&there4;',
-        '∵' => '&Because;',
-        '∶' => '&ratio;',
-        '∷' => '&Colon;',
-        '∸' => '&minusd;',
-        '∺' => '&mDDot;',
-        '∻' => '&homtht;',
-        '∼' => '&sim;',
-        '∼⃒' => '&nvsim',
-        '∽' => '&bsim;',
-        '∽̱' => '&race',
-        '∾' => '&ac;',
-        '∾̳' => '&acE',
-        '∿' => '&acd;',
-        '≀' => '&wr;',
-        '≁' => '&NotTilde;',
-        '≂' => '&esim;',
-        '≂̸' => '&nesim',
-        '≃' => '&simeq;',
-        '≄' => '&nsime;',
-        '≅' => '&TildeFullEqual;',
-        '≆' => '&simne;',
-        '≇' => '&ncong;',
-        '≈' => '&approx;',
-        '≉' => '&napprox;',
-        '≊' => '&ape;',
-        '≋' => '&apid;',
-        '≋̸' => '&napid',
-        '≌' => '&bcong;',
-        '≍' => '&CupCap;',
-        '≍⃒' => '&nvap',
-        '≎' => '&bump;',
-        '≎̸' => '&nbump',
-        '≏' => '&HumpEqual;',
-        '≏̸' => '&nbumpe',
-        '≐' => '&esdot;',
-        '≐̸' => '&nedot',
-        '≑' => '&doteqdot;',
-        '≒' => '&fallingdotseq;',
-        '≓' => '&risingdotseq;',
-        '≔' => '&coloneq;',
-        '≕' => '&eqcolon;',
-        '≖' => '&ecir;',
-        '≗' => '&circeq;',
-        '≙' => '&wedgeq;',
-        '≚' => '&veeeq;',
-        '≜' => '&triangleq;',
-        '≟' => '&equest;',
-        '≠' => '&NotEqual;',
-        '≡' => '&Congruent;',
-        '≡⃥' => '&bnequiv',
-        '≢' => '&NotCongruent;',
-        '≤' => '&leq;',
-        '≤⃒' => '&nvle',
-        '≥' => '&ge;',
-        '≥⃒' => '&nvge',
-        '≦' => '&lE;',
-        '≦̸' => '&nlE',
-        '≧' => '&geqq;',
-        '≧̸' => '&NotGreaterFullEqual',
-        '≨' => '&lneqq;',
-        '≨︀' => '&lvertneqq',
-        '≩' => '&gneqq;',
-        '≩︀' => '&gvertneqq',
-        '≪' => '&ll;',
-        '≪̸' => '&nLtv',
-        '≪⃒' => '&nLt',
-        '≫' => '&gg;',
-        '≫̸' => '&NotGreaterGreater',
-        '≫⃒' => '&nGt',
-        '≬' => '&between;',
-        '≭' => '&NotCupCap;',
-        '≮' => '&NotLess;',
-        '≯' => '&ngtr;',
-        '≰' => '&NotLessEqual;',
-        '≱' => '&ngeq;',
-        '≲' => '&LessTilde;',
-        '≳' => '&GreaterTilde;',
-        '≴' => '&nlsim;',
-        '≵' => '&ngsim;',
-        '≶' => '&lessgtr;',
-        '≷' => '&gl;',
-        '≸' => '&ntlg;',
-        '≹' => '&NotGreaterLess;',
-        '≺' => '&prec;',
-        '≻' => '&succ;',
-        '≼' => '&PrecedesSlantEqual;',
-        '≽' => '&succcurlyeq;',
-        '≾' => '&precsim;',
-        '≿' => '&SucceedsTilde;',
-        '≿̸' => '&NotSucceedsTilde',
-        '⊀' => '&npr;',
-        '⊁' => '&NotSucceeds;',
-        '⊂' => '&sub;',
-        '⊂⃒' => '&vnsub',
-        '⊃' => '&sup;',
-        '⊃⃒' => '&nsupset',
-        '⊄' => '&nsub;',
-        '⊅' => '&nsup;',
-        '⊆' => '&SubsetEqual;',
-        '⊇' => '&supe;',
-        '⊈' => '&NotSubsetEqual;',
-        '⊉' => '&NotSupersetEqual;',
-        '⊊' => '&subsetneq;',
-        '⊊︀' => '&vsubne',
-        '⊋' => '&supsetneq;',
-        '⊋︀' => '&vsupne',
-        '⊍' => '&cupdot;',
-        '⊎' => '&UnionPlus;',
-        '⊏' => '&sqsub;',
-        '⊏̸' => '&NotSquareSubset',
-        '⊐' => '&sqsupset;',
-        '⊐̸' => '&NotSquareSuperset',
-        '⊑' => '&SquareSubsetEqual;',
-        '⊒' => '&SquareSupersetEqual;',
-        '⊓' => '&sqcap;',
-        '⊓︀' => '&sqcaps',
-        '⊔' => '&sqcup;',
-        '⊔︀' => '&sqcups',
-        '⊕' => '&CirclePlus;',
-        '⊖' => '&ominus;',
-        '⊗' => '&CircleTimes;',
-        '⊘' => '&osol;',
-        '⊙' => '&CircleDot;',
-        '⊚' => '&ocir;',
-        '⊛' => '&oast;',
-        '⊝' => '&odash;',
-        '⊞' => '&boxplus;',
-        '⊟' => '&boxminus;',
-        '⊠' => '&timesb;',
-        '⊡' => '&sdotb;',
-        '⊢' => '&vdash;',
-        '⊣' => '&dashv;',
-        '⊤' => '&DownTee;',
-        '⊥' => '&perp;',
-        '⊧' => '&models;',
-        '⊨' => '&DoubleRightTee;',
-        '⊩' => '&Vdash;',
-        '⊪' => '&Vvdash;',
-        '⊫' => '&VDash;',
-        '⊬' => '&nvdash;',
-        '⊭' => '&nvDash;',
-        '⊮' => '&nVdash;',
-        '⊯' => '&nVDash;',
-        '⊰' => '&prurel;',
-        '⊲' => '&vartriangleleft;',
-        '⊳' => '&vrtri;',
-        '⊴' => '&LeftTriangleEqual;',
-        '⊴⃒' => '&nvltrie',
-        '⊵' => '&RightTriangleEqual;',
-        '⊵⃒' => '&nvrtrie',
-        '⊶' => '&origof;',
-        '⊷' => '&imof;',
-        '⊸' => '&mumap;',
-        '⊹' => '&hercon;',
-        '⊺' => '&intcal;',
-        '⊻' => '&veebar;',
-        '⊽' => '&barvee;',
-        '⊾' => '&angrtvb;',
-        '⊿' => '&lrtri;',
-        '⋀' => '&xwedge;',
-        '⋁' => '&xvee;',
-        '⋂' => '&bigcap;',
-        '⋃' => '&bigcup;',
-        '⋄' => '&diamond;',
-        '⋅' => '&sdot;',
-        '⋆' => '&Star;',
-        '⋇' => '&divonx;',
-        '⋈' => '&bowtie;',
-        '⋉' => '&ltimes;',
-        '⋊' => '&rtimes;',
-        '⋋' => '&lthree;',
-        '⋌' => '&rthree;',
-        '⋍' => '&backsimeq;',
-        '⋎' => '&curlyvee;',
-        '⋏' => '&curlywedge;',
-        '⋐' => '&Sub;',
-        '⋑' => '&Supset;',
-        '⋒' => '&Cap;',
-        '⋓' => '&Cup;',
-        '⋔' => '&pitchfork;',
-        '⋕' => '&epar;',
-        '⋖' => '&lessdot;',
-        '⋗' => '&gtrdot;',
-        '⋘' => '&Ll;',
-        '⋘̸' => '&nLl',
-        '⋙' => '&Gg;',
-        '⋙̸' => '&nGg',
-        '⋚' => '&lesseqgtr;',
-        '⋚︀' => '&lesg',
-        '⋛' => '&gtreqless;',
-        '⋛︀' => '&gesl',
-        '⋞' => '&curlyeqprec;',
-        '⋟' => '&cuesc;',
-        '⋠' => '&NotPrecedesSlantEqual;',
-        '⋡' => '&NotSucceedsSlantEqual;',
-        '⋢' => '&NotSquareSubsetEqual;',
-        '⋣' => '&NotSquareSupersetEqual;',
-        '⋦' => '&lnsim;',
-        '⋧' => '&gnsim;',
-        '⋨' => '&precnsim;',
-        '⋩' => '&scnsim;',
-        '⋪' => '&nltri;',
-        '⋫' => '&ntriangleright;',
-        '⋬' => '&nltrie;',
-        '⋭' => '&NotRightTriangleEqual;',
-        '⋮' => '&vellip;',
-        '⋯' => '&ctdot;',
-        '⋰' => '&utdot;',
-        '⋱' => '&dtdot;',
-        '⋲' => '&disin;',
-        '⋳' => '&isinsv;',
-        '⋴' => '&isins;',
-        '⋵' => '&isindot;',
-        '⋵̸' => '&notindot',
-        '⋶' => '&notinvc;',
-        '⋷' => '&notinvb;',
-        '⋹' => '&isinE;',
-        '⋹̸' => '&notinE',
-        '⋺' => '&nisd;',
-        '⋻' => '&xnis;',
-        '⋼' => '&nis;',
-        '⋽' => '&notnivc;',
-        '⋾' => '&notnivb;',
-        '⌅' => '&barwed;',
-        '⌆' => '&doublebarwedge;',
-        '⌈' => '&lceil;',
-        '⌉' => '&RightCeiling;',
-        '⌊' => '&LeftFloor;',
-        '⌋' => '&RightFloor;',
-        '⌌' => '&drcrop;',
-        '⌍' => '&dlcrop;',
-        '⌎' => '&urcrop;',
-        '⌏' => '&ulcrop;',
-        '⌐' => '&bnot;',
-        '⌒' => '&profline;',
-        '⌓' => '&profsurf;',
-        '⌕' => '&telrec;',
-        '⌖' => '&target;',
-        '⌜' => '&ulcorner;',
-        '⌝' => '&urcorner;',
-        '⌞' => '&llcorner;',
-        '⌟' => '&drcorn;',
-        '⌢' => '&frown;',
-        '⌣' => '&smile;',
-        '⌭' => '&cylcty;',
-        '⌮' => '&profalar;',
-        '⌶' => '&topbot;',
-        '⌽' => '&ovbar;',
-        '⌿' => '&solbar;',
-        '⍼' => '&angzarr;',
-        '⎰' => '&lmoust;',
-        '⎱' => '&rmoust;',
-        '⎴' => '&OverBracket;',
-        '⎵' => '&bbrk;',
-        '⎶' => '&bbrktbrk;',
-        '⏜' => '&OverParenthesis;',
-        '⏝' => '&UnderParenthesis;',
-        '⏞' => '&OverBrace;',
-        '⏟' => '&UnderBrace;',
-        '⏢' => '&trpezium;',
-        '⏧' => '&elinters;',
-        '␣' => '&blank;',
-        'Ⓢ' => '&oS;',
-        '─' => '&HorizontalLine;',
-        '│' => '&boxv;',
-        '┌' => '&boxdr;',
-        '┐' => '&boxdl;',
-        '└' => '&boxur;',
-        '┘' => '&boxul;',
-        '├' => '&boxvr;',
-        '┤' => '&boxvl;',
-        '┬' => '&boxhd;',
-        '┴' => '&boxhu;',
-        '┼' => '&boxvh;',
-        '═' => '&boxH;',
-        '║' => '&boxV;',
-        '╒' => '&boxdR;',
-        '╓' => '&boxDr;',
-        '╔' => '&boxDR;',
-        '╕' => '&boxdL;',
-        '╖' => '&boxDl;',
-        '╗' => '&boxDL;',
-        '╘' => '&boxuR;',
-        '╙' => '&boxUr;',
-        '╚' => '&boxUR;',
-        '╛' => '&boxuL;',
-        '╜' => '&boxUl;',
-        '╝' => '&boxUL;',
-        '╞' => '&boxvR;',
-        '╟' => '&boxVr;',
-        '╠' => '&boxVR;',
-        '╡' => '&boxvL;',
-        '╢' => '&boxVl;',
-        '╣' => '&boxVL;',
-        '╤' => '&boxHd;',
-        '╥' => '&boxhD;',
-        '╦' => '&boxHD;',
-        '╧' => '&boxHu;',
-        '╨' => '&boxhU;',
-        '╩' => '&boxHU;',
-        '╪' => '&boxvH;',
-        '╫' => '&boxVh;',
-        '╬' => '&boxVH;',
-        '▀' => '&uhblk;',
-        '▄' => '&lhblk;',
-        '█' => '&block;',
-        '░' => '&blk14;',
-        '▒' => '&blk12;',
-        '▓' => '&blk34;',
-        '□' => '&Square;',
-        '▪' => '&squarf;',
-        '▫' => '&EmptyVerySmallSquare;',
-        '▭' => '&rect;',
-        '▮' => '&marker;',
-        '▱' => '&fltns;',
-        '△' => '&bigtriangleup;',
-        '▴' => '&blacktriangle;',
-        '▵' => '&triangle;',
-        '▸' => '&blacktriangleright;',
-        '▹' => '&rtri;',
-        '▽' => '&bigtriangledown;',
-        '▾' => '&blacktriangledown;',
-        '▿' => '&triangledown;',
-        '◂' => '&blacktriangleleft;',
-        '◃' => '&ltri;',
-        '◊' => '&lozenge;',
-        '○' => '&cir;',
-        '◬' => '&tridot;',
-        '◯' => '&bigcirc;',
-        '◸' => '&ultri;',
-        '◹' => '&urtri;',
-        '◺' => '&lltri;',
-        '◻' => '&EmptySmallSquare;',
-        '◼' => '&FilledSmallSquare;',
-        '★' => '&starf;',
-        '☆' => '&star;',
-        '☎' => '&phone;',
-        '♀' => '&female;',
-        '♂' => '&male;',
-        '♠' => '&spadesuit;',
-        '♣' => '&clubs;',
-        '♥' => '&hearts;',
-        '♦' => '&diamondsuit;',
-        '♪' => '&sung;',
-        '♭' => '&flat;',
-        '♮' => '&natur;',
-        '♯' => '&sharp;',
-        '✓' => '&check;',
-        '✗' => '&cross;',
-        '✠' => '&maltese;',
-        '✶' => '&sext;',
-        '❘' => '&VerticalSeparator;',
-        '❲' => '&lbbrk;',
-        '❳' => '&rbbrk;',
-        '⟈' => '&bsolhsub;',
-        '⟉' => '&suphsol;',
-        '⟦' => '&LeftDoubleBracket;',
-        '⟧' => '&RightDoubleBracket;',
-        '⟨' => '&langle;',
-        '⟩' => '&RightAngleBracket;',
-        '⟪' => '&Lang;',
-        '⟫' => '&Rang;',
-        '⟬' => '&loang;',
-        '⟭' => '&roang;',
-        '⟵' => '&longleftarrow;',
-        '⟶' => '&LongRightArrow;',
-        '⟷' => '&LongLeftRightArrow;',
-        '⟸' => '&xlArr;',
-        '⟹' => '&DoubleLongRightArrow;',
-        '⟺' => '&xhArr;',
-        '⟼' => '&xmap;',
-        '⟿' => '&dzigrarr;',
-        '⤂' => '&nvlArr;',
-        '⤃' => '&nvrArr;',
-        '⤄' => '&nvHarr;',
-        '⤅' => '&Map;',
-        '⤌' => '&lbarr;',
-        '⤍' => '&bkarow;',
-        '⤎' => '&lBarr;',
-        '⤏' => '&dbkarow;',
-        '⤐' => '&drbkarow;',
-        '⤑' => '&DDotrahd;',
-        '⤒' => '&UpArrowBar;',
-        '⤓' => '&DownArrowBar;',
-        '⤖' => '&Rarrtl;',
-        '⤙' => '&latail;',
-        '⤚' => '&ratail;',
-        '⤛' => '&lAtail;',
-        '⤜' => '&rAtail;',
-        '⤝' => '&larrfs;',
-        '⤞' => '&rarrfs;',
-        '⤟' => '&larrbfs;',
-        '⤠' => '&rarrbfs;',
-        '⤣' => '&nwarhk;',
-        '⤤' => '&nearhk;',
-        '⤥' => '&searhk;',
-        '⤦' => '&swarhk;',
-        '⤧' => '&nwnear;',
-        '⤨' => '&toea;',
-        '⤩' => '&seswar;',
-        '⤪' => '&swnwar;',
-        '⤳' => '&rarrc;',
-        '⤳̸' => '&nrarrc',
-        '⤵' => '&cudarrr;',
-        '⤶' => '&ldca;',
-        '⤷' => '&rdca;',
-        '⤸' => '&cudarrl;',
-        '⤹' => '&larrpl;',
-        '⤼' => '&curarrm;',
-        '⤽' => '&cularrp;',
-        '⥅' => '&rarrpl;',
-        '⥈' => '&harrcir;',
-        '⥉' => '&Uarrocir;',
-        '⥊' => '&lurdshar;',
-        '⥋' => '&ldrushar;',
-        '⥎' => '&LeftRightVector;',
-        '⥏' => '&RightUpDownVector;',
-        '⥐' => '&DownLeftRightVector;',
-        '⥑' => '&LeftUpDownVector;',
-        '⥒' => '&LeftVectorBar;',
-        '⥓' => '&RightVectorBar;',
-        '⥔' => '&RightUpVectorBar;',
-        '⥕' => '&RightDownVectorBar;',
-        '⥖' => '&DownLeftVectorBar;',
-        '⥗' => '&DownRightVectorBar;',
-        '⥘' => '&LeftUpVectorBar;',
-        '⥙' => '&LeftDownVectorBar;',
-        '⥚' => '&LeftTeeVector;',
-        '⥛' => '&RightTeeVector;',
-        '⥜' => '&RightUpTeeVector;',
-        '⥝' => '&RightDownTeeVector;',
-        '⥞' => '&DownLeftTeeVector;',
-        '⥟' => '&DownRightTeeVector;',
-        '⥠' => '&LeftUpTeeVector;',
-        '⥡' => '&LeftDownTeeVector;',
-        '⥢' => '&lHar;',
-        '⥣' => '&uHar;',
-        '⥤' => '&rHar;',
-        '⥥' => '&dHar;',
-        '⥦' => '&luruhar;',
-        '⥧' => '&ldrdhar;',
-        '⥨' => '&ruluhar;',
-        '⥩' => '&rdldhar;',
-        '⥪' => '&lharul;',
-        '⥫' => '&llhard;',
-        '⥬' => '&rharul;',
-        '⥭' => '&lrhard;',
-        '⥮' => '&udhar;',
-        '⥯' => '&ReverseUpEquilibrium;',
-        '⥰' => '&RoundImplies;',
-        '⥱' => '&erarr;',
-        '⥲' => '&simrarr;',
-        '⥳' => '&larrsim;',
-        '⥴' => '&rarrsim;',
-        '⥵' => '&rarrap;',
-        '⥶' => '&ltlarr;',
-        '⥸' => '&gtrarr;',
-        '⥹' => '&subrarr;',
-        '⥻' => '&suplarr;',
-        '⥼' => '&lfisht;',
-        '⥽' => '&rfisht;',
-        '⥾' => '&ufisht;',
-        '⥿' => '&dfisht;',
-        '⦅' => '&lopar;',
-        '⦆' => '&ropar;',
-        '⦋' => '&lbrke;',
-        '⦌' => '&rbrke;',
-        '⦍' => '&lbrkslu;',
-        '⦎' => '&rbrksld;',
-        '⦏' => '&lbrksld;',
-        '⦐' => '&rbrkslu;',
-        '⦑' => '&langd;',
-        '⦒' => '&rangd;',
-        '⦓' => '&lparlt;',
-        '⦔' => '&rpargt;',
-        '⦕' => '&gtlPar;',
-        '⦖' => '&ltrPar;',
-        '⦚' => '&vzigzag;',
-        '⦜' => '&vangrt;',
-        '⦝' => '&angrtvbd;',
-        '⦤' => '&ange;',
-        '⦥' => '&range;',
-        '⦦' => '&dwangle;',
-        '⦧' => '&uwangle;',
-        '⦨' => '&angmsdaa;',
-        '⦩' => '&angmsdab;',
-        '⦪' => '&angmsdac;',
-        '⦫' => '&angmsdad;',
-        '⦬' => '&angmsdae;',
-        '⦭' => '&angmsdaf;',
-        '⦮' => '&angmsdag;',
-        '⦯' => '&angmsdah;',
-        '⦰' => '&bemptyv;',
-        '⦱' => '&demptyv;',
-        '⦲' => '&cemptyv;',
-        '⦳' => '&raemptyv;',
-        '⦴' => '&laemptyv;',
-        '⦵' => '&ohbar;',
-        '⦶' => '&omid;',
-        '⦷' => '&opar;',
-        '⦹' => '&operp;',
-        '⦻' => '&olcross;',
-        '⦼' => '&odsold;',
-        '⦾' => '&olcir;',
-        '⦿' => '&ofcir;',
-        '⧀' => '&olt;',
-        '⧁' => '&ogt;',
-        '⧂' => '&cirscir;',
-        '⧃' => '&cirE;',
-        '⧄' => '&solb;',
-        '⧅' => '&bsolb;',
-        '⧉' => '&boxbox;',
-        '⧍' => '&trisb;',
-        '⧎' => '&rtriltri;',
-        '⧏' => '&LeftTriangleBar;',
-        '⧏̸' => '&NotLeftTriangleBar',
-        '⧐' => '&RightTriangleBar;',
-        '⧐̸' => '&NotRightTriangleBar',
-        '⧜' => '&iinfin;',
-        '⧝' => '&infintie;',
-        '⧞' => '&nvinfin;',
-        '⧣' => '&eparsl;',
-        '⧤' => '&smeparsl;',
-        '⧥' => '&eqvparsl;',
-        '⧫' => '&lozf;',
-        '⧴' => '&RuleDelayed;',
-        '⧶' => '&dsol;',
-        '⨀' => '&xodot;',
-        '⨁' => '&bigoplus;',
-        '⨂' => '&bigotimes;',
-        '⨄' => '&biguplus;',
-        '⨆' => '&bigsqcup;',
-        '⨌' => '&iiiint;',
-        '⨍' => '&fpartint;',
-        '⨐' => '&cirfnint;',
-        '⨑' => '&awint;',
-        '⨒' => '&rppolint;',
-        '⨓' => '&scpolint;',
-        '⨔' => '&npolint;',
-        '⨕' => '&pointint;',
-        '⨖' => '&quatint;',
-        '⨗' => '&intlarhk;',
-        '⨢' => '&pluscir;',
-        '⨣' => '&plusacir;',
-        '⨤' => '&simplus;',
-        '⨥' => '&plusdu;',
-        '⨦' => '&plussim;',
-        '⨧' => '&plustwo;',
-        '⨩' => '&mcomma;',
-        '⨪' => '&minusdu;',
-        '⨭' => '&loplus;',
-        '⨮' => '&roplus;',
-        '⨯' => '&Cross;',
-        '⨰' => '&timesd;',
-        '⨱' => '&timesbar;',
-        '⨳' => '&smashp;',
-        '⨴' => '&lotimes;',
-        '⨵' => '&rotimes;',
-        '⨶' => '&otimesas;',
-        '⨷' => '&Otimes;',
-        '⨸' => '&odiv;',
-        '⨹' => '&triplus;',
-        '⨺' => '&triminus;',
-        '⨻' => '&tritime;',
-        '⨼' => '&iprod;',
-        '⨿' => '&amalg;',
-        '⩀' => '&capdot;',
-        '⩂' => '&ncup;',
-        '⩃' => '&ncap;',
-        '⩄' => '&capand;',
-        '⩅' => '&cupor;',
-        '⩆' => '&cupcap;',
-        '⩇' => '&capcup;',
-        '⩈' => '&cupbrcap;',
-        '⩉' => '&capbrcup;',
-        '⩊' => '&cupcup;',
-        '⩋' => '&capcap;',
-        '⩌' => '&ccups;',
-        '⩍' => '&ccaps;',
-        '⩐' => '&ccupssm;',
-        '⩓' => '&And;',
-        '⩔' => '&Or;',
-        '⩕' => '&andand;',
-        '⩖' => '&oror;',
-        '⩗' => '&orslope;',
-        '⩘' => '&andslope;',
-        '⩚' => '&andv;',
-        '⩛' => '&orv;',
-        '⩜' => '&andd;',
-        '⩝' => '&ord;',
-        '⩟' => '&wedbar;',
-        '⩦' => '&sdote;',
-        '⩪' => '&simdot;',
-        '⩭' => '&congdot;',
-        '⩭̸' => '&ncongdot',
-        '⩮' => '&easter;',
-        '⩯' => '&apacir;',
-        '⩰' => '&apE;',
-        '⩰̸' => '&napE',
-        '⩱' => '&eplus;',
-        '⩲' => '&pluse;',
-        '⩳' => '&Esim;',
-        '⩴' => '&Colone;',
-        '⩵' => '&Equal;',
-        '⩷' => '&ddotseq;',
-        '⩸' => '&equivDD;',
-        '⩹' => '&ltcir;',
-        '⩺' => '&gtcir;',
-        '⩻' => '&ltquest;',
-        '⩼' => '&gtquest;',
-        '⩽' => '&les;',
-        '⩽̸' => '&nles',
-        '⩾' => '&ges;',
-        '⩾̸' => '&nges',
-        '⩿' => '&lesdot;',
-        '⪀' => '&gesdot;',
-        '⪁' => '&lesdoto;',
-        '⪂' => '&gesdoto;',
-        '⪃' => '&lesdotor;',
-        '⪄' => '&gesdotol;',
-        '⪅' => '&lap;',
-        '⪆' => '&gap;',
-        '⪇' => '&lne;',
-        '⪈' => '&gne;',
-        '⪉' => '&lnap;',
-        '⪊' => '&gnap;',
-        '⪋' => '&lesseqqgtr;',
-        '⪌' => '&gEl;',
-        '⪍' => '&lsime;',
-        '⪎' => '&gsime;',
-        '⪏' => '&lsimg;',
-        '⪐' => '&gsiml;',
-        '⪑' => '&lgE;',
-        '⪒' => '&glE;',
-        '⪓' => '&lesges;',
-        '⪔' => '&gesles;',
-        '⪕' => '&els;',
-        '⪖' => '&egs;',
-        '⪗' => '&elsdot;',
-        '⪘' => '&egsdot;',
-        '⪙' => '&el;',
-        '⪚' => '&eg;',
-        '⪝' => '&siml;',
-        '⪞' => '&simg;',
-        '⪟' => '&simlE;',
-        '⪠' => '&simgE;',
-        '⪡' => '&LessLess;',
-        '⪡̸' => '&NotNestedLessLess',
-        '⪢' => '&GreaterGreater;',
-        '⪢̸' => '&NotNestedGreaterGreater',
-        '⪤' => '&glj;',
-        '⪥' => '&gla;',
-        '⪦' => '&ltcc;',
-        '⪧' => '&gtcc;',
-        '⪨' => '&lescc;',
-        '⪩' => '&gescc;',
-        '⪪' => '&smt;',
-        '⪫' => '&lat;',
-        '⪬' => '&smte;',
-        '⪬︀' => '&smtes',
-        '⪭' => '&late;',
-        '⪭︀' => '&lates',
-        '⪮' => '&bumpE;',
-        '⪯' => '&preceq;',
-        '⪯̸' => '&NotPrecedesEqual',
-        '⪰' => '&SucceedsEqual;',
-        '⪰̸' => '&NotSucceedsEqual',
-        '⪳' => '&prE;',
-        '⪴' => '&scE;',
-        '⪵' => '&precneqq;',
-        '⪶' => '&scnE;',
-        '⪷' => '&precapprox;',
-        '⪸' => '&succapprox;',
-        '⪹' => '&precnapprox;',
-        '⪺' => '&succnapprox;',
-        '⪻' => '&Pr;',
-        '⪼' => '&Sc;',
-        '⪽' => '&subdot;',
-        '⪾' => '&supdot;',
-        '⪿' => '&subplus;',
-        '⫀' => '&supplus;',
-        '⫁' => '&submult;',
-        '⫂' => '&supmult;',
-        '⫃' => '&subedot;',
-        '⫄' => '&supedot;',
-        '⫅' => '&subE;',
-        '⫅̸' => '&nsubE',
-        '⫆' => '&supseteqq;',
-        '⫆̸' => '&nsupseteqq',
-        '⫇' => '&subsim;',
-        '⫈' => '&supsim;',
-        '⫋' => '&subsetneqq;',
-        '⫋︀' => '&vsubnE',
-        '⫌' => '&supnE;',
-        '⫌︀' => '&varsupsetneqq',
-        '⫏' => '&csub;',
-        '⫐' => '&csup;',
-        '⫑' => '&csube;',
-        '⫒' => '&csupe;',
-        '⫓' => '&subsup;',
-        '⫔' => '&supsub;',
-        '⫕' => '&subsub;',
-        '⫖' => '&supsup;',
-        '⫗' => '&suphsub;',
-        '⫘' => '&supdsub;',
-        '⫙' => '&forkv;',
-        '⫚' => '&topfork;',
-        '⫛' => '&mlcp;',
-        '⫤' => '&Dashv;',
-        '⫦' => '&Vdashl;',
-        '⫧' => '&Barv;',
-        '⫨' => '&vBar;',
-        '⫩' => '&vBarv;',
-        '⫫' => '&Vbar;',
-        '⫬' => '&Not;',
-        '⫭' => '&bNot;',
-        '⫮' => '&rnmid;',
-        '⫯' => '&cirmid;',
-        '⫰' => '&midcir;',
-        '⫱' => '&topcir;',
-        '⫲' => '&nhpar;',
-        '⫳' => '&parsim;',
-        '⫽︀' => '&varsupsetneqq',
-        'ﬀ' => '&fflig;',
-        'ﬁ' => '&filig;',
-        'ﬂ' => '&fllig;',
-        'ﬃ' => '&ffilig;',
-        'ﬄ' => '&ffllig;',
-        '𝒜' => '&Ascr;',
-        '𝒞' => '&Cscr;',
-        '𝒟' => '&Dscr;',
-        '𝒢' => '&Gscr;',
-        '𝒥' => '&Jscr;',
-        '𝒦' => '&Kscr;',
-        '𝒩' => '&Nscr;',
-        '𝒪' => '&Oscr;',
-        '𝒫' => '&Pscr;',
-        '𝒬' => '&Qscr;',
-        '𝒮' => '&Sscr;',
-        '𝒯' => '&Tscr;',
-        '𝒰' => '&Uscr;',
-        '𝒱' => '&Vscr;',
-        '𝒲' => '&Wscr;',
-        '𝒳' => '&Xscr;',
-        '𝒴' => '&Yscr;',
-        '𝒵' => '&Zscr;',
-        '𝒶' => '&ascr;',
-        '𝒷' => '&bscr;',
-        '𝒸' => '&cscr;',
-        '𝒹' => '&dscr;',
-        '𝒻' => '&fscr;',
-        '𝒽' => '&hscr;',
-        '𝒾' => '&iscr;',
-        '𝒿' => '&jscr;',
-        '𝓀' => '&kscr;',
-        '𝓁' => '&lscr;',
-        '𝓂' => '&mscr;',
-        '𝓃' => '&nscr;',
-        '𝓅' => '&pscr;',
-        '𝓆' => '&qscr;',
-        '𝓇' => '&rscr;',
-        '𝓈' => '&sscr;',
-        '𝓉' => '&tscr;',
-        '𝓊' => '&uscr;',
-        '𝓋' => '&vscr;',
-        '𝓌' => '&wscr;',
-        '𝓍' => '&xscr;',
-        '𝓎' => '&yscr;',
-        '𝓏' => '&zscr;',
-        '𝔄' => '&Afr;',
-        '𝔅' => '&Bfr;',
-        '𝔇' => '&Dfr;',
-        '𝔈' => '&Efr;',
-        '𝔉' => '&Ffr;',
-        '𝔊' => '&Gfr;',
-        '𝔍' => '&Jfr;',
-        '𝔎' => '&Kfr;',
-        '𝔏' => '&Lfr;',
-        '𝔐' => '&Mfr;',
-        '𝔑' => '&Nfr;',
-        '𝔒' => '&Ofr;',
-        '𝔓' => '&Pfr;',
-        '𝔔' => '&Qfr;',
-        '𝔖' => '&Sfr;',
-        '𝔗' => '&Tfr;',
-        '𝔘' => '&Ufr;',
-        '𝔙' => '&Vfr;',
-        '𝔚' => '&Wfr;',
-        '𝔛' => '&Xfr;',
-        '𝔜' => '&Yfr;',
-        '𝔞' => '&afr;',
-        '𝔟' => '&bfr;',
-        '𝔠' => '&cfr;',
-        '𝔡' => '&dfr;',
-        '𝔢' => '&efr;',
-        '𝔣' => '&ffr;',
-        '𝔤' => '&gfr;',
-        '𝔥' => '&hfr;',
-        '𝔦' => '&ifr;',
-        '𝔧' => '&jfr;',
-        '𝔨' => '&kfr;',
-        '𝔩' => '&lfr;',
-        '𝔪' => '&mfr;',
-        '𝔫' => '&nfr;',
-        '𝔬' => '&ofr;',
-        '𝔭' => '&pfr;',
-        '𝔮' => '&qfr;',
-        '𝔯' => '&rfr;',
-        '𝔰' => '&sfr;',
-        '𝔱' => '&tfr;',
-        '𝔲' => '&ufr;',
-        '𝔳' => '&vfr;',
-        '𝔴' => '&wfr;',
-        '𝔵' => '&xfr;',
-        '𝔶' => '&yfr;',
-        '𝔷' => '&zfr;',
-        '𝔸' => '&Aopf;',
-        '𝔹' => '&Bopf;',
-        '𝔻' => '&Dopf;',
-        '𝔼' => '&Eopf;',
-        '𝔽' => '&Fopf;',
-        '𝔾' => '&Gopf;',
-        '𝕀' => '&Iopf;',
-        '𝕁' => '&Jopf;',
-        '𝕂' => '&Kopf;',
-        '𝕃' => '&Lopf;',
-        '𝕄' => '&Mopf;',
-        '𝕆' => '&Oopf;',
-        '𝕊' => '&Sopf;',
-        '𝕋' => '&Topf;',
-        '𝕌' => '&Uopf;',
-        '𝕍' => '&Vopf;',
-        '𝕎' => '&Wopf;',
-        '𝕏' => '&Xopf;',
-        '𝕐' => '&Yopf;',
-        '𝕒' => '&aopf;',
-        '𝕓' => '&bopf;',
-        '𝕔' => '&copf;',
-        '𝕕' => '&dopf;',
-        '𝕖' => '&eopf;',
-        '𝕗' => '&fopf;',
-        '𝕘' => '&gopf;',
-        '𝕙' => '&hopf;',
-        '𝕚' => '&iopf;',
-        '𝕛' => '&jopf;',
-        '𝕜' => '&kopf;',
-        '𝕝' => '&lopf;',
-        '𝕞' => '&mopf;',
-        '𝕟' => '&nopf;',
-        '𝕠' => '&oopf;',
-        '𝕡' => '&popf;',
-        '𝕢' => '&qopf;',
-        '𝕣' => '&ropf;',
-        '𝕤' => '&sopf;',
-        '𝕥' => '&topf;',
-        '𝕦' => '&uopf;',
-        '𝕧' => '&vopf;',
-        '𝕨' => '&wopf;',
-        '𝕩' => '&xopf;',
-        '𝕪' => '&yopf;',
-        '𝕫' => '&zopf;'
-    );
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Serializer/OutputRules.php b/vendor/masterminds/html5/src/HTML5/Serializer/OutputRules.php
deleted file mode 100644
index 4ad74f6..0000000
--- a/vendor/masterminds/html5/src/HTML5/Serializer/OutputRules.php
+++ /dev/null
@@ -1,550 +0,0 @@
-<?php
-/**
- * @file
- * The rules for generating output in the serializer.
- *
- * These output rules are likely to generate output similar to the document that
- * was parsed. It is not intended to output exactly the document that was parsed.
- */
-namespace Masterminds\HTML5\Serializer;
-
-use Masterminds\HTML5\Elements;
-
-/**
- * Generate the output html5 based on element rules.
- */
-class OutputRules implements \Masterminds\HTML5\Serializer\RulesInterface
-{
-    /**
-     * Defined in http://www.w3.org/TR/html51/infrastructure.html#html-namespace-0
-     */
-    const NAMESPACE_HTML = 'http://www.w3.org/1999/xhtml';
-
-    const NAMESPACE_MATHML = 'http://www.w3.org/1998/Math/MathML';
-
-    const NAMESPACE_SVG = 'http://www.w3.org/2000/svg';
-
-    const NAMESPACE_XLINK = 'http://www.w3.org/1999/xlink';
-
-    const NAMESPACE_XML = 'http://www.w3.org/XML/1998/namespace';
-
-    const NAMESPACE_XMLNS = 'http://www.w3.org/2000/xmlns/';
-
-    /**
-     * Holds the HTML5 element names that causes a namespace switch
-     *
-     * @var array
-     */
-    protected $implicitNamespaces = array(
-        self::NAMESPACE_HTML,
-        self::NAMESPACE_SVG,
-        self::NAMESPACE_MATHML,
-        self::NAMESPACE_XML,
-        self::NAMESPACE_XMLNS,
-    );
-
-    const IM_IN_HTML = 1;
-
-    const IM_IN_SVG = 2;
-
-    const IM_IN_MATHML = 3;
-
-    /**
-     * Used as cache to detect if is available ENT_HTML5
-     * @var boolean
-     */
-    private $hasHTML5 = false;
-
-    protected $traverser;
-
-    protected $encode = false;
-
-    protected $out;
-
-    protected $outputMode;
-
-    private $xpath;
-
-    protected $nonBooleanAttributes = array(
-        /*
-        array(
-            'nodeNamespace'=>'http://www.w3.org/1999/xhtml',
-            'attrNamespace'=>'http://www.w3.org/1999/xhtml',
-
-            'nodeName'=>'img', 'nodeName'=>array('img', 'a'),
-            'attrName'=>'alt', 'attrName'=>array('title', 'alt'),
-        ),
-        */
-        array(
-            'nodeNamespace' => 'http://www.w3.org/1999/xhtml',
-            'attrName' => array('href',
-                'hreflang',
-                'http-equiv',
-                'icon',
-                'id',
-                'keytype',
-                'kind',
-                'label',
-                'lang',
-                'language',
-                'list',
-                'maxlength',
-                'media',
-                'method',
-                'name',
-                'placeholder',
-                'rel',
-                'rows',
-                'rowspan',
-                'sandbox',
-                'spellcheck',
-                'scope',
-                'seamless',
-                'shape',
-                'size',
-                'sizes',
-                'span',
-                'src',
-                'srcdoc',
-                'srclang',
-                'srcset',
-                'start',
-                'step',
-                'style',
-                'summary',
-                'tabindex',
-                'target',
-                'title',
-                'type',
-                'value',
-                'width',
-                'border',
-                'charset',
-                'cite',
-                'class',
-                'code',
-                'codebase',
-                'color',
-                'cols',
-                'colspan',
-                'content',
-                'coords',
-                'data',
-                'datetime',
-                'default',
-                'dir',
-                'dirname',
-                'enctype',
-                'for',
-                'form',
-                'formaction',
-                'headers',
-                'height',
-                'accept',
-                'accept-charset',
-                'accesskey',
-                'action',
-                'align',
-                'alt',
-                'bgcolor',
-            ),
-        ),
-        array(
-            'nodeNamespace' => 'http://www.w3.org/1999/xhtml',
-            'xpath' => 'starts-with(local-name(), \'data-\')',
-        ),
-    );
-
-    const DOCTYPE = '<!DOCTYPE html>';
-
-    public function __construct($output, $options = array())
-    {
-        if (isset($options['encode_entities'])) {
-            $this->encode = $options['encode_entities'];
-        }
-
-        $this->outputMode = static::IM_IN_HTML;
-        $this->out = $output;
-
-        // If HHVM, see https://github.com/facebook/hhvm/issues/2727
-        $this->hasHTML5 = defined('ENT_HTML5') && !defined('HHVM_VERSION');
-    }
-    public function addRule(array $rule)
-    {
-        $this->nonBooleanAttributes[] = $rule;
-    }
-
-    public function setTraverser(\Masterminds\HTML5\Serializer\Traverser $traverser)
-    {
-        $this->traverser = $traverser;
-
-        return $this;
-    }
-
-    public function document($dom)
-    {
-        $this->doctype();
-        if ($dom->documentElement) {
-            $this->traverser->node($dom->documentElement);
-            $this->nl();
-        }
-    }
-
-    protected function doctype()
-    {
-        $this->wr(static::DOCTYPE);
-        $this->nl();
-    }
-
-    public function element($ele)
-    {
-        $name = $ele->tagName;
-
-        // Per spec:
-        // If the element has a declared namespace in the HTML, MathML or
-        // SVG namespaces, we use the lname instead of the tagName.
-        if ($this->traverser->isLocalElement($ele)) {
-            $name = $ele->localName;
-        }
-
-        // If we are in SVG or MathML there is special handling.
-        // Using if/elseif instead of switch because it's faster in PHP.
-        if ($name == 'svg') {
-            $this->outputMode = static::IM_IN_SVG;
-            $name = Elements::normalizeSvgElement($name);
-        } elseif ($name == 'math') {
-            $this->outputMode = static::IM_IN_MATHML;
-        }
-
-        $this->openTag($ele);
-        if (Elements::isA($name, Elements::TEXT_RAW)) {
-            foreach ($ele->childNodes as $child) {
-                $this->wr($child->data);
-            }
-        } else {
-            // Handle children.
-            if ($ele->hasChildNodes()) {
-                $this->traverser->children($ele->childNodes);
-            }
-
-            // Close out the SVG or MathML special handling.
-            if ($name == 'svg' || $name == 'math') {
-                $this->outputMode = static::IM_IN_HTML;
-            }
-        }
-
-        // If not unary, add a closing tag.
-        if (! Elements::isA($name, Elements::VOID_TAG)) {
-            $this->closeTag($ele);
-        }
-    }
-
-    /**
-     * Write a text node.
-     *
-     * @param \DOMText $ele
-     *            The text node to write.
-     */
-    public function text($ele)
-    {
-        if (isset($ele->parentNode) && isset($ele->parentNode->tagName) && Elements::isA($ele->parentNode->localName, Elements::TEXT_RAW)) {
-            $this->wr($ele->data);
-            return;
-        }
-
-        // FIXME: This probably needs some flags set.
-        $this->wr($this->enc($ele->data));
-    }
-
-    public function cdata($ele)
-    {
-        // This encodes CDATA.
-        $this->wr($ele->ownerDocument->saveXML($ele));
-    }
-
-    public function comment($ele)
-    {
-        // These produce identical output.
-        // $this->wr('<!--')->wr($ele->data)->wr('-->');
-        $this->wr($ele->ownerDocument->saveXML($ele));
-    }
-
-    public function processorInstruction($ele)
-    {
-        $this->wr('<?')
-            ->wr($ele->target)
-            ->wr(' ')
-            ->wr($ele->data)
-            ->wr('?>');
-    }
-    /**
-     * Write the namespace attributes
-     *
-     *
-     * @param \DOMNode $ele
-     *            The element being written.
-     */
-    protected function namespaceAttrs($ele)
-    {
-        if (!$this->xpath || $this->xpath->document !== $ele->ownerDocument){
-            $this->xpath = new \DOMXPath($ele->ownerDocument);
-        }
-
-        foreach( $this->xpath->query('namespace::*[not(.=../../namespace::*)]', $ele ) as $nsNode ) {
-            if (!in_array($nsNode->nodeValue, $this->implicitNamespaces)) {
-                $this->wr(' ')->wr($nsNode->nodeName)->wr('="')->wr($nsNode->nodeValue)->wr('"');
-            }
-        }
-    }
-
-    /**
-     * Write the opening tag.
-     *
-     * Tags for HTML, MathML, and SVG are in the local name. Otherwise, use the
-     * qualified name (8.3).
-     *
-     * @param \DOMNode $ele
-     *            The element being written.
-     */
-    protected function openTag($ele)
-    {
-        $this->wr('<')->wr($this->traverser->isLocalElement($ele) ? $ele->localName : $ele->tagName);
-
-
-        $this->attrs($ele);
-        $this->namespaceAttrs($ele);
-
-
-        if ($this->outputMode == static::IM_IN_HTML) {
-            $this->wr('>');
-        }         // If we are not in html mode we are in SVG, MathML, or XML embedded content.
-        else {
-            if ($ele->hasChildNodes()) {
-                $this->wr('>');
-            }             // If there are no children this is self closing.
-            else {
-                $this->wr(' />');
-            }
-        }
-    }
-
-    protected function attrs($ele)
-    {
-        // FIXME: Needs support for xml, xmlns, xlink, and namespaced elements.
-        if (! $ele->hasAttributes()) {
-            return $this;
-        }
-
-        // TODO: Currently, this always writes name="value", and does not do
-        // value-less attributes.
-        $map = $ele->attributes;
-        $len = $map->length;
-        for ($i = 0; $i < $len; ++ $i) {
-            $node = $map->item($i);
-            $val = $this->enc($node->value, true);
-
-            // XXX: The spec says that we need to ensure that anything in
-            // the XML, XMLNS, or XLink NS's should use the canonical
-            // prefix. It seems that DOM does this for us already, but there
-            // may be exceptions.
-            $name = $node->name;
-
-            // Special handling for attributes in SVG and MathML.
-            // Using if/elseif instead of switch because it's faster in PHP.
-            if ($this->outputMode == static::IM_IN_SVG) {
-                $name = Elements::normalizeSvgAttribute($name);
-            } elseif ($this->outputMode == static::IM_IN_MATHML) {
-                $name = Elements::normalizeMathMlAttribute($name);
-            }
-
-            $this->wr(' ')->wr($name);
-
-            if ((isset($val) && $val !== '') || $this->nonBooleanAttribute($node)) {
-                $this->wr('="')->wr($val)->wr('"');
-            }
-        }
-    }
-
-
-    protected function nonBooleanAttribute(\DOMAttr $attr)
-    {
-        $ele = $attr->ownerElement;
-        foreach($this->nonBooleanAttributes as $rule){
-
-            if(isset($rule['nodeNamespace']) && $rule['nodeNamespace']!==$ele->namespaceURI){
-                continue;
-            }
-            if(isset($rule['attNamespace']) && $rule['attNamespace']!==$attr->namespaceURI){
-                continue;
-            }
-            if(isset($rule['nodeName']) && !is_array($rule['nodeName']) && $rule['nodeName']!==$ele->localName){
-                continue;
-            }
-            if(isset($rule['nodeName']) && is_array($rule['nodeName']) && !in_array($ele->localName, $rule['nodeName'], true)){
-                continue;
-            }
-            if(isset($rule['attrName']) && !is_array($rule['attrName']) && $rule['attrName']!==$attr->localName){
-                continue;
-            }
-            if(isset($rule['attrName']) && is_array($rule['attrName']) && !in_array($attr->localName, $rule['attrName'], true)){
-                continue;
-            }
-            if(isset($rule['xpath'])){
-
-                $xp = $this->getXPath($attr);
-                if(isset($rule['prefixes'])){
-                    foreach($rule['prefixes'] as $nsPrefix => $ns){
-                        $xp->registerNamespace($nsPrefix, $ns);
-                    }
-                }
-                if(!$xp->evaluate($rule['xpath'], $attr)){
-                    continue;
-                }
-            }
-
-            return true;
-        }
-
-        return false;
-    }
-
-    private function getXPath(\DOMNode $node){
-        if(!$this->xpath){
-            $this->xpath = new \DOMXPath($node->ownerDocument);
-        }
-        return $this->xpath;
-    }
-
-    /**
-     * Write the closing tag.
-     *
-     * Tags for HTML, MathML, and SVG are in the local name. Otherwise, use the
-     * qualified name (8.3).
-     *
-     * @param \DOMNode $ele
-     *            The element being written.
-     */
-    protected function closeTag($ele)
-    {
-        if ($this->outputMode == static::IM_IN_HTML || $ele->hasChildNodes()) {
-            $this->wr('</')->wr($this->traverser->isLocalElement($ele) ? $ele->localName : $ele->tagName)->wr('>');
-        }
-    }
-
-    /**
-     * Write to the output.
-     *
-     * @param string $text
-     *            The string to put into the output.
-     *
-     * @return \Masterminds\HTML5\Serializer\Traverser $this so it can be used in chaining.
-     */
-    protected function wr($text)
-    {
-        fwrite($this->out, $text);
-        return $this;
-    }
-
-    /**
-     * Write a new line character.
-     *
-     * @return \Masterminds\HTML5\Serializer\Traverser $this so it can be used in chaining.
-     */
-    protected function nl()
-    {
-        fwrite($this->out, PHP_EOL);
-        return $this;
-    }
-
-    /**
-     * Encode text.
-     *
-     * When encode is set to false, the default value, the text passed in is
-     * escaped per section 8.3 of the html5 spec. For details on how text is
-     * escaped see the escape() method.
-     *
-     * When encoding is set to true the text is converted to named character
-     * references where appropriate. Section 8.1.4 Character references of the
-     * html5 spec refers to using named character references. This is useful for
-     * characters that can't otherwise legally be used in the text.
-     *
-     * The named character references are listed in section 8.5.
-     *
-     * @see http://www.w3.org/TR/2013/CR-html5-20130806/syntax.html#named-character-references True encoding will turn all named character references into their entities.
-     *      This includes such characters as +.# and many other common ones. By default
-     *      encoding here will just escape &'<>".
-     *
-     *      Note, PHP 5.4+ has better html5 encoding.
-     *
-     * @todo Use the Entities class in php 5.3 to have html5 entities.
-     *
-     * @param string $text
-     *            text to encode.
-     * @param boolean $attribute
-     *            True if we are encoding an attrubute, false otherwise
-     *
-     * @return string The encoded text.
-     */
-    protected function enc($text, $attribute = false)
-    {
-
-        // Escape the text rather than convert to named character references.
-        if (! $this->encode) {
-            return $this->escape($text, $attribute);
-        }
-
-        // If we are in PHP 5.4+ we can use the native html5 entity functionality to
-        // convert the named character references.
-
-        if ($this->hasHTML5) {
-            return htmlentities($text, ENT_HTML5 | ENT_SUBSTITUTE | ENT_QUOTES, 'UTF-8', false);
-        }         // If a version earlier than 5.4 html5 entities are not entirely handled.
-        // This manually handles them.
-        else {
-            return strtr($text, \Masterminds\HTML5\Serializer\HTML5Entities::$map);
-        }
-    }
-
-    /**
-     * Escape test.
-     *
-     * According to the html5 spec section 8.3 Serializing HTML fragments, text
-     * within tags that are not style, script, xmp, iframe, noembed, and noframes
-     * need to be properly escaped.
-     *
-     * The & should be converted to &amp;, no breaking space unicode characters
-     * converted to &nbsp;, when in attribute mode the " should be converted to
-     * &quot;, and when not in attribute mode the < and > should be converted to
-     * &lt; and &gt;.
-     *
-     * @see http://www.w3.org/TR/2013/CR-html5-20130806/syntax.html#escapingString
-     *
-     * @param string $text
-     *            text to escape.
-     * @param boolean $attribute
-     *            True if we are escaping an attrubute, false otherwise
-     */
-    protected function escape($text, $attribute = false)
-    {
-
-        // Not using htmlspecialchars because, while it does escaping, it doesn't
-        // match the requirements of section 8.5. For example, it doesn't handle
-        // non-breaking spaces.
-        if ($attribute) {
-            $replace = array(
-                '"' => '&quot;',
-                '&' => '&amp;',
-                "\xc2\xa0" => '&nbsp;'
-            );
-        } else {
-            $replace = array(
-                '<' => '&lt;',
-                '>' => '&gt;',
-                '&' => '&amp;',
-                "\xc2\xa0" => '&nbsp;'
-            );
-        }
-
-        return strtr($text, $replace);
-    }
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Serializer/README.md b/vendor/masterminds/html5/src/HTML5/Serializer/README.md
deleted file mode 100644
index 849a47f..0000000
--- a/vendor/masterminds/html5/src/HTML5/Serializer/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# The Serializer (Writer) Model
-
-The serializer roughly follows sections _8.1 Writing HTML documents_ and section
-_8.3 Serializing HTML fragments_ by converting DOMDocument, DOMDocumentFragment,
-and DOMNodeList into HTML5.
-
-       [ HTML5 ]   // Interface for saving.
-          ||
-     [ Traverser ]   // Walk the DOM
-          ||
-       [ Rules ]     // Convert DOM elements into strings.
-          ||
-       [ HTML5 ]     // HTML5 document or fragment in text.
-
-
-## HTML5 Class
-
-Provides the top level interface for saving.
-
-## The Traverser
-
-Walks the DOM finding each element and passing it off to the output rules to
-convert to HTML5.
-
-## Output Rules
-
-The output rules are defined in the RulesInterface which can have multiple
-implementations. Currently, the OutputRules is the default implementation that
-converts a DOM as is into HTML5.
-
-## HTML5 String
-
-The output of the process it HTML5 as a string or saved to a file.
\ No newline at end of file
diff --git a/vendor/masterminds/html5/src/HTML5/Serializer/RulesInterface.php b/vendor/masterminds/html5/src/HTML5/Serializer/RulesInterface.php
deleted file mode 100644
index 6ef5e5e..0000000
--- a/vendor/masterminds/html5/src/HTML5/Serializer/RulesInterface.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-/**
- * @file
- * The interface definition for Rules to generate output.
- */
-namespace Masterminds\HTML5\Serializer;
-
-/**
- * To create a new rule set for writing output the RulesInterface needs to be
- * implemented.
- * The resulting class can be specified in the options with the
- * key of rules.
- *
- * For an example implementation see \Masterminds\HTML5\Serializer\OutputRules.
- */
-interface RulesInterface
-{
-
-    /**
-     * The class constructor.
-     *
-     * Note, before the rules can be used a traverser must be registered.
-     *
-     * @param mixed $output
-     *            The output stream to write output to.
-     * @param array $options
-     *            An array of options.
-     */
-    public function __construct($output, $options = array());
-
-    /**
-     * Register the traverser used in but the rules.
-     *
-     * Note, only one traverser can be used by the rules.
-     *
-     * @param \Masterminds\HTML5\Serializer\Traverser $traverser
-     *            The traverser used in the rules.
-     * @return \Masterminds\HTML5\Serializer\RulesInterface $this for the current object.
-     */
-    public function setTraverser(\Masterminds\HTML5\Serializer\Traverser $traverser);
-
-    /**
-     * Write a document element (\DOMDocument).
-     *
-     * Instead of returning the result write it to the output stream ($output)
-     * that was passed into the constructor.
-     *
-     * @param \DOMDocument $dom
-     */
-    public function document($dom);
-
-    /**
-     * Write an element.
-     *
-     * Instead of returning the result write it to the output stream ($output)
-     * that was passed into the constructor.
-     *
-     * @param mixed $ele
-     */
-    public function element($ele);
-
-    /**
-     * Write a text node.
-     *
-     * Instead of returning the result write it to the output stream ($output)
-     * that was passed into the constructor.
-     *
-     * @param mixed $ele
-     */
-    public function text($ele);
-
-    /**
-     * Write a CDATA node.
-     *
-     * Instead of returning the result write it to the output stream ($output)
-     * that was passed into the constructor.
-     *
-     * @param mixed $ele
-     */
-    public function cdata($ele);
-
-    /**
-     * Write a comment node.
-     *
-     * Instead of returning the result write it to the output stream ($output)
-     * that was passed into the constructor.
-     *
-     * @param mixed $ele
-     */
-    public function comment($ele);
-
-    /**
-     * Write a processor instruction.
-     *
-     * To learn about processor instructions see \Masterminds\HTML5\InstructionProcessor
-     *
-     * Instead of returning the result write it to the output stream ($output)
-     * that was passed into the constructor.
-     *
-     * @param mixed $ele
-     */
-    public function processorInstruction($ele);
-}
diff --git a/vendor/masterminds/html5/src/HTML5/Serializer/Traverser.php b/vendor/masterminds/html5/src/HTML5/Serializer/Traverser.php
deleted file mode 100644
index 9c700da..0000000
--- a/vendor/masterminds/html5/src/HTML5/Serializer/Traverser.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-namespace Masterminds\HTML5\Serializer;
-
-/**
- * Traverser for walking a DOM tree.
- *
- * This is a concrete traverser designed to convert a DOM tree into an
- * HTML5 document. It is not intended to be a generic DOMTreeWalker
- * implementation.
- *
- * @see http://www.w3.org/TR/2012/CR-html5-20121217/syntax.html#serializing-html-fragments
- */
-class Traverser
-{
-
-    /**
-     * Namespaces that should be treated as "local" to HTML5.
-     */
-    static $local_ns = array(
-        'http://www.w3.org/1999/xhtml' => 'html',
-        'http://www.w3.org/1998/Math/MathML' => 'math',
-        'http://www.w3.org/2000/svg' => 'svg'
-    );
-
-    protected $dom;
-
-    protected $options;
-
-    protected $encode = false;
-
-    protected $rules;
-
-    protected $out;
-
-    /**
-     * Create a traverser.
-     *
-     * @param DOMNode|DOMNodeList $dom
-     *            The document or node to traverse.
-     * @param resource $out
-     *            A stream that allows writing. The traverser will output into this
-     *            stream.
-     * @param array $options
-     *            An array or options for the traverser as key/value pairs. These include:
-     *            - encode_entities: A bool to specify if full encding should happen for all named
-     *            charachter references. Defaults to false which escapes &'<>".
-     *            - output_rules: The path to the class handling the output rules.
-     */
-    public function __construct($dom, $out, RulesInterface $rules, $options = array())
-    {
-        $this->dom = $dom;
-        $this->out = $out;
-        $this->rules = $rules;
-        $this->options = $options;
-
-        $this->rules->setTraverser($this);
-    }
-
-    /**
-     * Tell the traverser to walk the DOM.
-     *
-     * @return resource $out
-     *         Returns the output stream.
-     */
-    public function walk()
-    {
-        if ($this->dom instanceof \DOMDocument) {
-            $this->rules->document($this->dom);
-        } elseif ($this->dom instanceof \DOMDocumentFragment) {
-            // Document fragments are a special case. Only the children need to
-            // be serialized.
-            if ($this->dom->hasChildNodes()) {
-                $this->children($this->dom->childNodes);
-            }
-        }        // If NodeList, loop
-        elseif ($this->dom instanceof \DOMNodeList) {
-            // If this is a NodeList of DOMDocuments this will not work.
-            $this->children($this->dom);
-        }         // Else assume this is a DOMNode-like datastructure.
-        else {
-            $this->node($this->dom);
-        }
-
-        return $this->out;
-    }
-
-    /**
-     * Process a node in the DOM.
-     *
-     * @param mixed $node
-     *            A node implementing \DOMNode.
-     */
-    public function node($node)
-    {
-        // A listing of types is at http://php.net/manual/en/dom.constants.php
-        switch ($node->nodeType) {
-            case XML_ELEMENT_NODE:
-                $this->rules->element($node);
-                break;
-            case XML_TEXT_NODE:
-                $this->rules->text($node);
-                break;
-            case XML_CDATA_SECTION_NODE:
-                $this->rules->cdata($node);
-                break;
-            // FIXME: It appears that the parser doesn't do PI's.
-            case XML_PI_NODE:
-                $this->rules->processorInstruction($node);
-                break;
-            case XML_COMMENT_NODE:
-                $this->rules->comment($node);
-                break;
-            // Currently we don't support embedding DTDs.
-            default:
-                //print '<!-- Skipped -->';
-                break;
-        }
-    }
-
-    /**
-     * Walk through all the nodes on a node list.
-     *
-     * @param \DOMNodeList $nl
-     *            A list of child elements to walk through.
-     */
-    public function children($nl)
-    {
-        foreach ($nl as $node) {
-            $this->node($node);
-        }
-    }
-
-    /**
-     * Is an element local?
-     *
-     * @param mixed $ele
-     *            An element that implement \DOMNode.
-     *
-     * @return bool True if local and false otherwise.
-     */
-    public function isLocalElement($ele)
-    {
-        $uri = $ele->namespaceURI;
-        if (empty($uri)) {
-            return false;
-        }
-
-        return isset(static::$local_ns[$uri]);
-    }
-}
diff --git a/vendor/mikey179/vfsStream/CHANGELOG.md b/vendor/mikey179/vfsStream/CHANGELOG.md
deleted file mode 100644
index 126c5ff..0000000
--- a/vendor/mikey179/vfsStream/CHANGELOG.md
+++ /dev/null
@@ -1,199 +0,0 @@
-1.6.0 (2015-10-06)
-------------------
-
-   * added `vfsStreamWrapper::unregister()`, provided by @malkusch with #114
-   * fixed #115: incorrect handling of `..` in root directory on PHP 5.5, fix provided by @acoulton with #116
-
-
-1.5.0 (2015-03-29)
-------------------
-
-   * implemented #91: `vfsStream::copyFromFileSystem()` should create large file instances
-   * implemented #92: `vfsStream::copyFromFileSystem()` should respect block devices
-   * fixed #107: `touch()` does not respect file permissions
-   * fixed #105: vfs directory structure is not reset after each test
-   * fixed #104: vfsStream can't handle url encoded pathes
-
-
-1.4.0 (2014-09-14)
-------------------
-
-   * implemented #85: Added support for emulating block devices in the virtual filesystem, feature provided by Harris Borawski
-   * fixed #68: Unlink a non-existing file now triggers a PHP warning
-
-
-1.3.0 (2014-07-21)
-------------------
-
-   * implemented #79: possibility to mock large files without large memory footprint, see https://github.com/mikey179/vfsStream/wiki/MockingLargeFiles
-   * implemented #67: added partial support for text-mode translation flag (i.e., no actual translation of line endings takes place) so it no longer throws an exception (provided by Anthon Pang)
-   * fixed issue #74: issue with trailing windows path separators (provided by Sebastian Krüger)
-   * fixed issue #50: difference between real file system and vfs with `RecursiveDirectoryIterator`
-   * fixed issue #80: touch with no arguments for modification and access time behave incorrect
-   * deprecated `org\bovigo\vfs\vfsStreamFile::readUntilEnd()`
-   * deprecated `org\bovigo\vfs\vfsStreamFile::getBytesRead()`
-
-
-1.2.0 (2013-04-01)
-------------------
-
-   * implemented issue #34: provide `url()` method on all `vfsStreamContent` instances
-     * added `org\bovigo\vfs\vfsStreamContent::url()`
-     * added `org\bovigo\vfs\vfsStreamContent::path()`
-   * fixed issue #40: flock implementation doesn't work correctly, patch provided by Kamil Dziedzic
-   * fixed issue #49: call to member function on a non-object when trying to delete a file one above root where a file with same name in root exists
-   * fixed issue #51: `unlink()` must consider permissions of directory where file is inside, not of the file to unlink itself
-   * fixed issue #52: `chmod()`, `chown()` and `chgrp()` must consider permissions of directory where file/directory is inside
-   * fixed issue #53: `chmod()`, `chown()` and `chgrp()` must consider current user and current owner of file/directoy to change
-
-
-1.1.0 (2012-08-25)
-------------------
-
-   * implemented issue #11: add support for `streamWrapper::stream_metadata()` vfsStream now supports `touch()`, `chown()`, `chgrp()` and `chmod()`
-   * implemented issue #33: add support for `stream_truncate()` (provided by https://github.com/nikcorg)
-   * implemented issue #35: size limit (quota) for VFS
-
-
-1.0.0 (2012-05-15)
-------------------
-
-   * raised requirement for PHP version to 5.3.0
-   * migrated codebase to use namespaces
-   * changed distribution from PEAR to Composer
-   * implemented issue #30: support "c" mode for `fopen()`
-   * fixed issue #31: prohibit aquiring locks when already locked / release lock on `fclose()`
-   * fixed issue #32: problems when subfolder has same name as folder
-   * fixed issue #36: `vfsStreamWrapper::stream_open()` should return false while trying to open existing non-writable file, patch provided by Alexander Peresypkin
-
-
-0.11.2 (2012-01-14)
--------------------
-
-   * fixed issue #29: set permissions properly when using `vfsStream::copyFromFileSystem()`, patch provided by predakanga
-   * fixed failing tests under PHP > 5.3.2
-
-
-0.11.1 (2011-12-04)
--------------------
-
-   * fixed issue #28: `mkdir()` overwrites existing directories/files
-
-
-0.11.0 (2011-11-29)
--------------------
-
-   * implemented issue #20: `vfsStream::create()` removes old structure
-   * implemented issue #4: possibility to copy structure from existing file system
-   * fixed issue #23: `unlink()` should not remove any directory
-   * fixed issue #25: `vfsStreamDirectory::hasChild()` gives false positives for nested paths, patch provided by Andrew Coulton
-   * fixed issue #26: opening a file for reading only should not update its modification time, reported and initial patch provided by Ludovic Chabant
-
-
-0.10.1 (2011-08-22)
--------------------
-
-   * fixed issue #16: replace `vfsStreamContent` to `vfsStreamContainer` for autocompletion
-   * fixed issue #17: `vfsStream::create()` has issues with numeric directories, patch provided by mathieuk
-
-
-0.10.0 (2011-07-22)
--------------------
-
-   * added new method `vfsStreamContainer::hasChildren()` and `vfsStreamDirectory::hasChildren()`
-   * implemented issue #14: less verbose way to initialize vfsStream
-   * implemented issue #13: remove deprecated method `vfsStreamContent::setFilemtime()`
-   * implemented issue #6: locking meachanism for files
-   * ensured that `stream_set_blocking()`, `stream_set_timeout()` and `stream_set_write_buffer()` on vfsStream urls have the same behaviour with PHP 5.2 and 5.3
-   * implemented issue #10: method to print directory structure
-
-
-0.9.0 (2011-07-13)
-------------------
-
-   * implemented feature request issue #7: add support for `fileatime()` and `filectime()`
-   * fixed issue #3: add support for `streamWrapper::stream_cast()`
-   * fixed issue #9: resolve path not called everywhere its needed
-   * deprecated `vfsStreamAbstractContent::setFilemtime()`, use `vfsStreamAbstractContent::lastModified()` instead, will be removed with 0.10.0
-
-
-0.8.0 (2010-10-08)
-------------------
-
-   * implemented enhancement #6: use `vfsStream::umask()` to influence initial file mode for files and directories
-   * implemented enhancement #19: support of .. in the url, patch provided by Guislain Duthieuw
-   * fixed issue #18: `getChild()` returns NULL when child's name contains parent name
-   * fixed bug with incomplete error message when accessing non-existing files on root level
-
-
-0.7.0 (2010-06-08)
-------------------
-
-   * added new `vfsStream::setup()` method to simplify vfsStream usage
-   * fixed issue #15: `mkdir()` creates a subfolder in a folder without permissions
-
-
-0.6.0 (2010-02-15)
-------------------
-
-   * added support for `$mode` param when opening files, implements enhancement #7 and fixes issue #13
-   * `vfsStreamWrapper::stream_open()` now evaluates `$options` for `STREAM_REPORT_ERRORS`
-
-
-0.5.0 (2010-01-25)
-------------------
-
-   * added support for `rename()`, patch provided by Benoit Aubuchon
-   * added support for . as directory alias so that `vfs://foo/.` resolves to `vfs://foo`, can be used as workaround for bug #8
-
-
-0.4.0 (2009-07-13)
-------------------
-
-   * added support for file modes, users and groups (with restrictions, see http://code.google.com/p/bovigo/wiki/vfsStreamDocsKnownIssues)
-   * fixed bug #5: `vfsStreamDirectory::addChild()` does not replace child with same name
-   * fixed bug with `is_writable()` because of missing `stat()` fields, patch provided by Sergey Galkin
-
-
-0.3.2 (2009-02-16)
-------------------
-
-   * support trailing slashes on directories in vfsStream urls, patch provided by Gabriel Birke
-   * fixed bug #4: vfsstream can only be read once, reported by Christoph Bloemer
-   * enabled multiple iterations at the same time over the same directory
-
-
-0.3.1 (2008-02-18)
-------------------
-
-   * fixed path/directory separator issues under linux systems
-   * fixed uid/gid issues under linux systems
-
-
-0.3.0 (2008-01-02)
-------------------
-
-   * added support for `rmdir()`
-   * added `vfsStream::newDirectory()`, dropped `vfsStreamDirectory::ceate()`
-   * added new interface `vfsStreamContainer`
-   * added `vfsStreamContent::at()` which allows code like `$file = vfsStream::newFile('file.txt.')->withContent('foo')->at($otherDir);`
-   * added `vfsStreamContent::lastModified()`, made `vfsStreamContent::setFilemtime()` an alias for this
-   * moved from Stubbles development environment to bovigo
-   * refactorings to reduce crap index of various methods
-
-
-0.2.0 (2007-12-29)
-------------------
-
-   * moved `vfsStreamWrapper::PROTOCOL` to `vfsStream::SCHEME`
-   * added new `vfsStream::url()` method to assist in creating correct vfsStream urls
-   * added `vfsStream::path()` method as opposite to `vfsStream::url()`
-   * a call to `vfsStreamWrapper::register()` will now reset the root to null, implemented on request from David Zuelke
-   * added support for `is_readable()`, `is_dir()`, `is_file()`
-   * added `vfsStream::newFile()` to be able to do `$file = vfsStream::newFile("foo.txt")->withContent("bar");`
-
-
-0.1.0 (2007-12-14)
-------------------
-
-   * Initial release.
diff --git a/vendor/mikey179/vfsStream/LICENSE b/vendor/mikey179/vfsStream/LICENSE
deleted file mode 100644
index 1d41ab9..0000000
--- a/vendor/mikey179/vfsStream/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2007-2015, Frank Kleine
-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 Stubbles nor the names of its
-  contributors may be used to endorse or promote products derived
-  from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/mikey179/vfsStream/README.md b/vendor/mikey179/vfsStream/README.md
deleted file mode 100644
index 74554bf..0000000
--- a/vendor/mikey179/vfsStream/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-You can find documentation in the [wiki](https://github.com/mikey179/vfsStream/wiki).
-
-Also you might want to check [vfsStream examples](https://github.com/mikey179/vfsStream-examples).
-
-
-[![Build Status](https://secure.travis-ci.org/mikey179/vfsStream.png)](http://travis-ci.org/mikey179/vfsStream) [![Coverage Status](https://coveralls.io/repos/mikey179/vfsStream/badge.png?branch=master)](https://coveralls.io/r/mikey179/vfsStream?branch=master)
-
-[![Latest Stable Version](https://poser.pugx.org/mikey179/vfsStream/version.png)](https://packagist.org/packages/mikey179/vfsStream) [![Latest Unstable Version](https://poser.pugx.org/mikey179/vfsStream/v/unstable.png)](//packagist.org/packages/mikey179/vfsStream)
diff --git a/vendor/mikey179/vfsStream/composer.json b/vendor/mikey179/vfsStream/composer.json
deleted file mode 100644
index c18e37d..0000000
--- a/vendor/mikey179/vfsStream/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-    "name": "mikey179/vfsStream",
-    "type": "library",
-    "homepage": "http://vfs.bovigo.org/",
-    "description": "Virtual file system to mock the real file system in unit tests.",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Frank Kleine",
-            "homepage": "http://frankkleine.de/",
-            "role": "Developer"
-        }
-    ],
-    "support": {
-        "issues": "https://github.com/mikey179/vfsStream/issues",
-        "source": "https://github.com/mikey179/vfsStream/tree/master",
-        "wiki": "https://github.com/mikey179/vfsStream/wiki"
-    },
-    "require": {
-        "php": ">=5.3.0"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.5"
-    },
-    "autoload": {
-        "psr-0": { "org\\bovigo\\vfs\\": "src/main/php" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.6.x-dev"
-        }
-    }
-}
diff --git a/vendor/mikey179/vfsStream/composer.lock b/vendor/mikey179/vfsStream/composer.lock
deleted file mode 100644
index 99e1130..0000000
--- a/vendor/mikey179/vfsStream/composer.lock
+++ /dev/null
@@ -1,972 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
-        "This file is @generated automatically"
-    ],
-    "hash": "e3c2dd0d4b4daf3d2c9e0bedd344592a",
-    "content-hash": "59c3102c5db7e3c4d78a920d4712790d",
-    "packages": [],
-    "packages-dev": [
-        {
-            "name": "doctrine/instantiator",
-            "version": "1.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3,<8.0-DEV"
-            },
-            "require-dev": {
-                "athletic/athletic": "~0.1.8",
-                "ext-pdo": "*",
-                "ext-phar": "*",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "~2.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com",
-                    "homepage": "http://ocramius.github.com/"
-                }
-            ],
-            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
-            "keywords": [
-                "constructor",
-                "instantiate"
-            ],
-            "time": "2015-06-14 21:17:01"
-        },
-        {
-            "name": "phpdocumentor/reflection-docblock",
-            "version": "2.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
-                "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "suggest": {
-                "dflydev/markdown": "~1.0",
-                "erusev/parsedown": "~1.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "phpDocumentor": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "mike.vanriel@naenius.com"
-                }
-            ],
-            "time": "2015-02-03 12:10:50"
-        },
-        {
-            "name": "phpspec/prophecy",
-            "version": "v1.5.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"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Konstantin Kudryashov",
-                    "email": "ever.zet@gmail.com",
-                    "homepage": "http://everzet.com"
-                },
-                {
-                    "name": "Marcello Duarte",
-                    "email": "marcello.duarte@gmail.com"
-                }
-            ],
-            "description": "Highly opinionated mocking framework for PHP 5.3+",
-            "homepage": "https://github.com/phpspec/prophecy",
-            "keywords": [
-                "Double",
-                "Dummy",
-                "fake",
-                "mock",
-                "spy",
-                "stub"
-            ],
-            "time": "2015-08-13 10:07:40"
-        },
-        {
-            "name": "phpunit/php-code-coverage",
-            "version": "2.2.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "ef1ca6835468857944d5c3b48fa503d5554cff2f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef1ca6835468857944d5c3b48fa503d5554cff2f",
-                "reference": "ef1ca6835468857944d5c3b48fa503d5554cff2f",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "phpunit/php-file-iterator": "~1.3",
-                "phpunit/php-text-template": "~1.2",
-                "phpunit/php-token-stream": "~1.3",
-                "sebastian/environment": "^1.3.2",
-                "sebastian/version": "~1.0"
-            },
-            "require-dev": {
-                "ext-xdebug": ">=2.1.4",
-                "phpunit/phpunit": "~4"
-            },
-            "suggest": {
-                "ext-dom": "*",
-                "ext-xdebug": ">=2.2.1",
-                "ext-xmlwriter": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
-            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
-            "keywords": [
-                "coverage",
-                "testing",
-                "xunit"
-            ],
-            "time": "2015-09-14 06:51:16"
-        },
-        {
-            "name": "phpunit/php-file-iterator",
-            "version": "1.4.1",
-            "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"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
-            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
-            "keywords": [
-                "filesystem",
-                "iterator"
-            ],
-            "time": "2015-06-21 13:08:43"
-        },
-        {
-            "name": "phpunit/php-text-template",
-            "version": "1.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-text-template.git",
-                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
-                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Simple template engine.",
-            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
-            "keywords": [
-                "template"
-            ],
-            "time": "2015-06-21 13:50:34"
-        },
-        {
-            "name": "phpunit/php-timer",
-            "version": "1.0.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
-                "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Utility class for timing",
-            "homepage": "https://github.com/sebastianbergmann/php-timer/",
-            "keywords": [
-                "timer"
-            ],
-            "time": "2015-06-21 08:01:12"
-        },
-        {
-            "name": "phpunit/php-token-stream",
-            "version": "1.4.8",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-                "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
-                "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
-                "shasum": ""
-            },
-            "require": {
-                "ext-tokenizer": "*",
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Wrapper around PHP's tokenizer extension.",
-            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
-            "keywords": [
-                "tokenizer"
-            ],
-            "time": "2015-09-15 10:49:45"
-        },
-        {
-            "name": "phpunit/phpunit",
-            "version": "4.8.10",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "463163747474815c5ccd4ae12b5b355ec12158e8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/463163747474815c5ccd4ae12b5b355ec12158e8",
-                "reference": "463163747474815c5ccd4ae12b5b355ec12158e8",
-                "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"
-            },
-            "suggest": {
-                "phpunit/php-invoker": "~1.1"
-            },
-            "bin": [
-                "phpunit"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.8.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "The PHP Unit Testing framework.",
-            "homepage": "https://phpunit.de/",
-            "keywords": [
-                "phpunit",
-                "testing",
-                "xunit"
-            ],
-            "time": "2015-10-01 09:14:30"
-        },
-        {
-            "name": "phpunit/phpunit-mock-objects",
-            "version": "2.3.8",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-                "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
-                "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.0.2",
-                "php": ">=5.3.3",
-                "phpunit/php-text-template": "~1.2",
-                "sebastian/exporter": "~1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "suggest": {
-                "ext-soap": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Mock Object library for PHPUnit",
-            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
-            "keywords": [
-                "mock",
-                "xunit"
-            ],
-            "time": "2015-10-02 06:51:40"
-        },
-        {
-            "name": "sebastian/comparator",
-            "version": "1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
-                "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "sebastian/diff": "~1.2",
-                "sebastian/exporter": "~1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides the functionality to compare PHP values for equality",
-            "homepage": "http://www.github.com/sebastianbergmann/comparator",
-            "keywords": [
-                "comparator",
-                "compare",
-                "equality"
-            ],
-            "time": "2015-07-26 15:48:44"
-        },
-        {
-            "name": "sebastian/diff",
-            "version": "1.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
-                "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Kore Nordmann",
-                    "email": "mail@kore-nordmann.de"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Diff implementation",
-            "homepage": "http://www.github.com/sebastianbergmann/diff",
-            "keywords": [
-                "diff"
-            ],
-            "time": "2015-02-22 15:13:53"
-        },
-        {
-            "name": "sebastian/environment",
-            "version": "1.3.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44",
-                "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides functionality to handle HHVM/PHP environments",
-            "homepage": "http://www.github.com/sebastianbergmann/environment",
-            "keywords": [
-                "Xdebug",
-                "environment",
-                "hhvm"
-            ],
-            "time": "2015-08-03 06:14:51"
-        },
-        {
-            "name": "sebastian/exporter",
-            "version": "1.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "7ae5513327cb536431847bcc0c10edba2701064e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
-                "reference": "7ae5513327cb536431847bcc0c10edba2701064e",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "sebastian/recursion-context": "~1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides the functionality to export PHP variables for visualization",
-            "homepage": "http://www.github.com/sebastianbergmann/exporter",
-            "keywords": [
-                "export",
-                "exporter"
-            ],
-            "time": "2015-06-21 07:55:53"
-        },
-        {
-            "name": "sebastian/global-state",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
-                "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.2"
-            },
-            "suggest": {
-                "ext-uopz": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Snapshotting of global state",
-            "homepage": "http://www.github.com/sebastianbergmann/global-state",
-            "keywords": [
-                "global state"
-            ],
-            "time": "2014-10-06 09:23:50"
-        },
-        {
-            "name": "sebastian/recursion-context",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/recursion-context.git",
-                "reference": "994d4a811bafe801fb06dccbee797863ba2792ba"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
-                "reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides functionality to recursively process PHP variables",
-            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
-            "time": "2015-06-21 08:04:50"
-        },
-        {
-            "name": "sebastian/version",
-            "version": "1.0.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/version.git",
-                "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
-                "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
-                "shasum": ""
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-            "homepage": "https://github.com/sebastianbergmann/version",
-            "time": "2015-06-21 13:59:46"
-        },
-        {
-            "name": "symfony/yaml",
-            "version": "v2.7.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/yaml.git",
-                "reference": "31cb2ad0155c95b88ee55fe12bc7ff92232c1770"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/31cb2ad0155c95b88ee55fe12bc7ff92232c1770",
-                "reference": "31cb2ad0155c95b88ee55fe12bc7ff92232c1770",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "~2.7"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Yaml\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Yaml Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-09-14 14:14:09"
-        }
-    ],
-    "aliases": [],
-    "minimum-stability": "stable",
-    "stability-flags": [],
-    "prefer-stable": false,
-    "prefer-lowest": false,
-    "platform": {
-        "php": ">=5.3.0"
-    },
-    "platform-dev": []
-}
diff --git a/vendor/mikey179/vfsStream/phpunit.xml.dist b/vendor/mikey179/vfsStream/phpunit.xml.dist
deleted file mode 100644
index f5e0556..0000000
--- a/vendor/mikey179/vfsStream/phpunit.xml.dist
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         bootstrap="vendor/autoload.php"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         forceCoversAnnotation="false"
-         mapTestClassNameToCoveredClassName="false"
-         printerClass="PHPUnit_TextUI_ResultPrinter"
-         processIsolation="false"
-         stopOnError="false"
-         stopOnFailure="false"
-         stopOnIncomplete="false"
-         stopOnSkipped="false"
-         verbose="true">
-  <testsuites>
-    <testsuite>
-      <directory suffix="TestCase.php">./src/test/php</directory>
-    </testsuite>
-  </testsuites>
-
-  <filter>
-    <whitelist>
-      <directory>src/main/php</directory>
-    </whitelist>
-  </filter>
-
-  <logging>
-    <log type="coverage-html" target="docs/coverage" charset="UTF-8"
-         yui="true" highlight="false"
-         lowUpperBound="35" highLowerBound="70"/>
-    <log type="coverage-clover" target="docs/phpunit/clover.xml"/>
-    <log type="junit" target="docs/phpunit/junit.xml" logIncompleteSkipped="false"/>
-    <log type="testdox-html" target="docs/phpunit/testdox.html"/>
-  </logging>
-
-  <php>
-    <ini name="memory_limit" value="-1"/>
-    <ini name="error_reporting" value="30719"/> <!-- E_ALL | E_STRICT -->
-  </php>
-</phpunit>
\ No newline at end of file
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/DotDirectory.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/DotDirectory.php
deleted file mode 100644
index e9bc215..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/DotDirectory.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-/**
- * Directory container.
- */
-class DotDirectory extends vfsStreamDirectory
-{
-    /**
-     * returns iterator for the children
-     *
-     * @return  vfsStreamContainerIterator
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator(array());
-    }
-
-    /**
-     * checks whether dir is a dot dir
-     *
-     * @return  bool
-     */
-    public function isDot()
-    {
-        return true;
-    }
-}
-?>
\ No newline at end of file
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/Quota.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/Quota.php
deleted file mode 100644
index b86ad8c..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/Quota.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-/**
- * Represents a quota for disk space.
- *
- * @since     1.1.0
- * @internal
- */
-class Quota
-{
-    /**
-     * unlimited quota
-     */
-    const UNLIMITED   = -1;
-    /**
-     * quota in bytes
-     *
-     * A value of -1 is treated as unlimited.
-     *
-     * @type  int
-     */
-    private $amount;
-
-    /**
-     * constructor
-     *
-     * @param  int  $amount  quota in bytes
-     */
-    public function __construct($amount)
-    {
-        $this->amount = $amount;
-    }
-
-    /**
-     * create with unlimited space
-     *
-     * @return  Quota
-     */
-    public static function unlimited()
-    {
-        return new self(self::UNLIMITED);
-    }
-
-    /**
-     * checks if a quota is set
-     *
-     * @return  bool
-     */
-    public function isLimited()
-    {
-        return self::UNLIMITED < $this->amount;
-    }
-
-    /**
-     * checks if given used space exceeda quota limit
-     *
-     *
-     * @param     int   $usedSpace
-     * @return    int
-     */
-    public function spaceLeft($usedSpace)
-    {
-        if (self::UNLIMITED === $this->amount) {
-            return $usedSpace;
-        }
-
-        if ($usedSpace >= $this->amount) {
-            return 0;
-        }
-
-        $spaceLeft = $this->amount - $usedSpace;
-        if (0 >= $spaceLeft) {
-            return 0;
-        }
-
-        return $spaceLeft;
-    }
-}
-?>
\ No newline at end of file
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/FileContent.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/FileContent.php
deleted file mode 100644
index de649a8..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/FileContent.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs\content;
-/**
- * Interface for actual file contents.
- *
- * @since  1.3.0
- */
-interface FileContent
-{
-    /**
-     * returns actual content
-     *
-     * @return  string
-     */
-    public function content();
-
-    /**
-     * returns size of content
-     *
-     * @return  int
-     */
-    public function size();
-
-    /**
-     * reads the given amount of bytes from content
-     *
-     * @param   int     $count
-     * @return  string
-     */
-    public function read($count);
-
-    /**
-     * seeks to the given offset
-     *
-     * @param   int   $offset
-     * @param   int   $whence
-     * @return  bool
-     */
-    public function seek($offset, $whence);
-
-    /**
-     * checks whether pointer is at end of file
-     *
-     * @return  bool
-     */
-    public function eof();
-
-    /**
-     * writes an amount of data
-     *
-     * @param   string  $data
-     * @return  amount of written bytes
-     */
-    public function write($data);
-
-    /**
-     * Truncates a file to a given length
-     *
-     * @param   int  $size length to truncate file to
-     * @return  bool
-     */
-    public function truncate($size);
-}
\ No newline at end of file
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/LargeFileContent.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/LargeFileContent.php
deleted file mode 100644
index 6bc0afc..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/LargeFileContent.php
+++ /dev/null
@@ -1,167 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs\content;
-/**
- * File content implementation to mock large files.
- *
- * When content is written via write() the data will be written into the
- * positions according to the current offset.
- * When content is read via read() it will use the already written data. If no
- * data is written at the offsets to read those offsets will be filled with
- * spaces.
- * Please note that accessing the whole content via content() will deliver a
- * string with the length of the originally defined size. It is not advisable to
- * do so with large sizes, except you have enough memory and time. :-)
- *
- * @since  1.3.0
- */
-class LargeFileContent extends SeekableFileContent implements FileContent
-{
-    /**
-     * byte array of written content
-     *
-     * @type  char[]
-     */
-    private $content = array();
-    /**
-     * file size in bytes
-     *
-     * @type  int
-     */
-    private $size;
-
-    /**
-     * constructor
-     *
-     * @param  int  $size  file size in bytes
-     */
-    public function __construct($size)
-    {
-        $this->size = $size;
-    }
-
-    /**
-     * create large file with given size in kilobyte
-     *
-     * @param   int  $kilobyte
-     * @return  LargeFileContent
-     */
-    public static function withKilobytes($kilobyte)
-    {
-        return new self($kilobyte * 1024);
-    }
-
-    /**
-     * create large file with given size in megabyte
-     *
-     * @param   int  $megabyte
-     * @return  LargeFileContent
-     */
-    public static function withMegabytes($megabyte)
-    {
-        return self::withKilobytes($megabyte * 1024);
-    }
-
-    /**
-     * create large file with given size in gigabyte
-     *
-     * @param   int  $gigabyte
-     * @return  LargeFileContent
-     */
-    public static function withGigabytes($gigabyte)
-    {
-        return self::withMegabytes($gigabyte * 1024);
-    }
-
-    /**
-     * returns actual content
-     *
-     * @return  string
-     */
-    public function content()
-    {
-        return $this->doRead(0, $this->size);
-    }
-
-    /**
-     * returns size of content
-     *
-     * @return  int
-     */
-    public function size()
-    {
-        return $this->size;
-    }
-
-    /**
-     * actual reading of given byte count starting at given offset
-     *
-     * @param  int  $offset
-     * @param  int  $count
-     */
-    protected function doRead($offset, $count)
-    {
-        if (($offset + $count) > $this->size) {
-            $count = $this->size - $offset;
-        }
-
-        $result = '';
-        for ($i = 0; $i < $count; $i++) {
-            if (isset($this->content[$i + $offset])) {
-                $result .= $this->content[$i + $offset];
-            } else {
-                $result .= ' ';
-            }
-        }
-
-        return $result;
-    }
-
-    /**
-     * actual writing of data with specified length at given offset
-     *
-     * @param   string  $data
-     * @param   int     $offset
-     * @param   int     $length
-     */
-    protected function doWrite($data, $offset, $length)
-    {
-        for ($i = 0; $i < $length; $i++) {
-            $this->content[$i + $offset] = $data{$i};
-        }
-
-        if ($offset >= $this->size) {
-            $this->size += $length;
-        } elseif (($offset + $length) > $this->size) {
-            $this->size = $offset + $length;
-        }
-    }
-
-    /**
-     * Truncates a file to a given length
-     *
-     * @param   int  $size length to truncate file to
-     * @return  bool
-     */
-    public function truncate($size)
-    {
-        $this->size = $size;
-        foreach (array_filter(array_keys($this->content),
-                              function($pos) use ($size)
-                              {
-                                  return $pos >= $size;
-                              }
-                ) as $removePos) {
-            unset($this->content[$removePos]);
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/SeekableFileContent.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/SeekableFileContent.php
deleted file mode 100644
index e748000..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/SeekableFileContent.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs\content;
-/**
- * Default implementation for file contents based on simple strings.
- *
- * @since  1.3.0
- */
-abstract class SeekableFileContent implements FileContent
-{
-    /**
-     * current position within content
-     *
-     * @type  int
-     */
-    private $offset = 0;
-
-    /**
-     * reads the given amount of bytes from content
-     *
-     * @param   int     $count
-     * @return  string
-     */
-    public function read($count)
-    {
-        $data = $this->doRead($this->offset, $count);
-        $this->offset += $count;
-        return $data;
-    }
-
-    /**
-     * actual reading of given byte count starting at given offset
-     *
-     * @param  int  $offset
-     * @param  int  $count
-     */
-    protected abstract function doRead($offset, $count);
-
-    /**
-     * seeks to the given offset
-     *
-     * @param   int   $offset
-     * @param   int   $whence
-     * @return  bool
-     */
-    public function seek($offset, $whence)
-    {
-        switch ($whence) {
-            case SEEK_CUR:
-                $this->offset += $offset;
-                return true;
-
-            case SEEK_END:
-                $this->offset = $this->size() + $offset;
-                return true;
-
-            case SEEK_SET:
-                $this->offset = $offset;
-                return true;
-
-            default:
-                return false;
-        }
-
-        return false;
-    }
-
-    /**
-     * checks whether pointer is at end of file
-     *
-     * @return  bool
-     */
-    public function eof()
-    {
-        return $this->size() <= $this->offset;
-    }
-
-    /**
-     * writes an amount of data
-     *
-     * @param   string  $data
-     * @return  amount of written bytes
-     */
-    public function write($data)
-    {
-        $dataLength    = strlen($data);
-        $this->doWrite($data, $this->offset, $dataLength);
-        $this->offset += $dataLength;
-        return $dataLength;
-    }
-
-    /**
-     * actual writing of data with specified length at given offset
-     *
-     * @param   string  $data
-     * @param   int     $offset
-     * @param   int     $length
-     */
-    protected abstract function doWrite($data, $offset, $length);
-
-    /**
-     * for backwards compatibility with vfsStreamFile::bytesRead()
-     *
-     * @return  int
-     * @deprecated
-     */
-    public function bytesRead()
-    {
-        return $this->offset;
-    }
-
-    /**
-     * for backwards compatibility with vfsStreamFile::readUntilEnd()
-     *
-     * @return  string
-     * @deprecated
-     */
-    public function readUntilEnd()
-    {
-        return substr($this->content(), $this->offset);
-    }
-}
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/StringBasedFileContent.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/StringBasedFileContent.php
deleted file mode 100644
index 58bd214..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/content/StringBasedFileContent.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs\content;
-/**
- * Default implementation for file contents based on simple strings.
- *
- * @since  1.3.0
- */
-class StringBasedFileContent extends SeekableFileContent implements FileContent
-{
-    /**
-     * actual content
-     *
-     * @type  string
-     */
-    private $content;
-
-    /**
-     * constructor
-     *
-     * @param  string  $content
-     */
-    public function __construct($content)
-    {
-        $this->content = $content;
-    }
-
-    /**
-     * returns actual content
-     *
-     * @return  string
-     */
-    public function content()
-    {
-        return $this->content;
-    }
-
-    /**
-     * returns size of content
-     *
-     * @return  int
-     */
-    public function size()
-    {
-        return strlen($this->content);
-    }
-
-    /**
-     * actual reading of length starting at given offset
-     *
-     * @param  int  $offset
-     * @param  int  $count
-     */
-    protected function doRead($offset, $count)
-    {
-        return substr($this->content, $offset, $count);
-    }
-
-    /**
-     * actual writing of data with specified length at given offset
-     *
-     * @param   string  $data
-     * @param   int     $offset
-     * @param   int     $length
-     */
-    protected function doWrite($data, $offset, $length)
-    {
-        $this->content = substr($this->content, 0, $offset)
-                       . $data
-                       . substr($this->content, $offset + $length);
-    }
-
-    /**
-     * Truncates a file to a given length
-     *
-     * @param   int  $size length to truncate file to
-     * @return  bool
-     */
-    public function truncate($size)
-    {
-        if ($size > $this->size()) {
-            // Pad with null-chars if we're "truncating up"
-            $this->content .= str_repeat("\0", $size - $this->size());
-        } else {
-            $this->content = substr($this->content, 0, $size);
-        }
-
-        return true;
-    }
-}
\ No newline at end of file
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStream.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStream.php
deleted file mode 100644
index f7f13cb..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStream.php
+++ /dev/null
@@ -1,462 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-use org\bovigo\vfs\content\LargeFileContent;
-use org\bovigo\vfs\visitor\vfsStreamVisitor;
-/**
- * Some utility methods for vfsStream.
- *
- * @api
- */
-class vfsStream
-{
-    /**
-     * url scheme
-     */
-    const SCHEME            = 'vfs';
-    /**
-     * owner: root
-     */
-    const OWNER_ROOT        = 0;
-    /**
-     * owner: user 1
-     */
-    const OWNER_USER_1       = 1;
-    /**
-     * owner: user 2
-     */
-    const OWNER_USER_2       = 2;
-    /**
-     * group: root
-     */
-    const GROUP_ROOT         = 0;
-    /**
-     * group: user 1
-     */
-    const GROUP_USER_1       = 1;
-    /**
-     * group: user 2
-     */
-    const GROUP_USER_2       = 2;
-    /**
-     * initial umask setting
-     *
-     * @type  int
-     */
-    protected static $umask  = 0000;
-    /**
-     * switch whether dotfiles are enabled in directory listings
-     *
-     * @type  bool
-     */
-    private static $dotFiles = true;
-
-    /**
-     * prepends the scheme to the given URL
-     *
-     * @param   string  $path  path to translate to vfsStream url
-     * @return  string
-     */
-    public static function url($path)
-    {
-        return self::SCHEME . '://' . str_replace('\\', '/', $path);
-    }
-
-    /**
-     * restores the path from the url
-     *
-     * @param   string  $url  vfsStream url to translate into path
-     * @return  string
-     */
-    public static function path($url)
-    {
-        // remove line feeds and trailing whitespaces and path separators
-        $path = trim($url, " \t\r\n\0\x0B/\\");
-        $path = substr($path, strlen(self::SCHEME . '://'));
-        $path = str_replace('\\', '/', $path);
-        // replace double slashes with single slashes
-        $path = str_replace('//', '/', $path);
-        return urldecode($path);
-    }
-
-    /**
-     * sets new umask setting and returns previous umask setting
-     *
-     * If no value is given only the current umask setting is returned.
-     *
-     * @param   int  $umask  new umask setting
-     * @return  int
-     * @since   0.8.0
-     */
-    public static function umask($umask = null)
-    {
-        $oldUmask = self::$umask;
-        if (null !== $umask) {
-            self::$umask = $umask;
-        }
-
-        return $oldUmask;
-    }
-
-    /**
-     * helper method for setting up vfsStream in unit tests
-     *
-     * Instead of
-     * vfsStreamWrapper::register();
-     * vfsStreamWrapper::setRoot(vfsStream::newDirectory('root'));
-     * you can simply do
-     * vfsStream::setup()
-     * which yields the same result. Additionally, the method returns the
-     * freshly created root directory which you can use to make further
-     * adjustments to it.
-     *
-     * Assumed $structure contains an array like this:
-     * <code>
-     * array('Core' = array('AbstractFactory' => array('test.php'    => 'some text content',
-     *                                                 'other.php'   => 'Some more text content',
-     *                                                 'Invalid.csv' => 'Something else',
-     *                                           ),
-     *                      'AnEmptyFolder'   => array(),
-     *                      'badlocation.php' => 'some bad content',
-     *                )
-     * )
-     * </code>
-     * the resulting directory tree will look like this:
-     * <pre>
-     * root
-     * \- Core
-     *  |- badlocation.php
-     *  |- AbstractFactory
-     *  | |- test.php
-     *  | |- other.php
-     *  | \- Invalid.csv
-     *  \- AnEmptyFolder
-     * </pre>
-     * Arrays will become directories with their key as directory name, and
-     * strings becomes files with their key as file name and their value as file
-     * content.
-     *
-     * @param   string  $rootDirName  name of root directory
-     * @param   int     $permissions  file permissions of root directory
-     * @param   array   $structure    directory structure to add under root directory
-     * @return  \org\bovigo\vfs\vfsStreamDirectory
-     * @since   0.7.0
-     * @see     https://github.com/mikey179/vfsStream/issues/14
-     * @see     https://github.com/mikey179/vfsStream/issues/20
-     */
-    public static function setup($rootDirName = 'root', $permissions = null, array $structure = array())
-    {
-        vfsStreamWrapper::register();
-        return self::create($structure, vfsStreamWrapper::setRoot(self::newDirectory($rootDirName, $permissions)));
-    }
-
-    /**
-     * creates vfsStream directory structure from an array and adds it to given base dir
-     *
-     * Assumed $structure contains an array like this:
-     * <code>
-     * array('Core' = array('AbstractFactory' => array('test.php'    => 'some text content',
-     *                                                 'other.php'   => 'Some more text content',
-     *                                                 'Invalid.csv' => 'Something else',
-     *                                           ),
-     *                      'AnEmptyFolder'   => array(),
-     *                      'badlocation.php' => 'some bad content',
-     *                )
-     * )
-     * </code>
-     * the resulting directory tree will look like this:
-     * <pre>
-     * baseDir
-     * \- Core
-     *  |- badlocation.php
-     *  |- AbstractFactory
-     *  | |- test.php
-     *  | |- other.php
-     *  | \- Invalid.csv
-     *  \- AnEmptyFolder
-     * </pre>
-     * Arrays will become directories with their key as directory name, and
-     * strings becomes files with their key as file name and their value as file
-     * content.
-     *
-     * If no baseDir is given it will try to add the structure to the existing
-     * root directory without replacing existing childs except those with equal
-     * names.
-     *
-     * @param   array               $structure  directory structure to add under root directory
-     * @param   vfsStreamDirectory  $baseDir    base directory to add structure to
-     * @return  vfsStreamDirectory
-     * @throws  \InvalidArgumentException
-     * @since   0.10.0
-     * @see     https://github.com/mikey179/vfsStream/issues/14
-     * @see     https://github.com/mikey179/vfsStream/issues/20
-     */
-    public static function create(array $structure, vfsStreamDirectory $baseDir = null)
-    {
-        if (null === $baseDir) {
-            $baseDir = vfsStreamWrapper::getRoot();
-        }
-
-        if (null === $baseDir) {
-            throw new \InvalidArgumentException('No baseDir given and no root directory set.');
-        }
-
-        return self::addStructure($structure, $baseDir);
-    }
-
-    /**
-     * helper method to create subdirectories recursively
-     *
-     * @param   array               $structure  subdirectory structure to add
-     * @param   vfsStreamDirectory  $baseDir    directory to add the structure to
-     * @return  vfsStreamDirectory
-     */
-    protected static function addStructure(array $structure, vfsStreamDirectory $baseDir)
-    {
-        foreach ($structure as $name => $data) {
-            $name = (string) $name;
-            if (is_array($data) === true) {
-                self::addStructure($data, self::newDirectory($name)->at($baseDir));
-            } elseif (is_string($data) === true) {
-                $matches = null;
-                preg_match('/^\[(.*)\]$/', $name, $matches);
-                if ($matches !== array()) {
-                    self::newBlock($matches[1])->withContent($data)->at($baseDir);
-                } else {
-                    self::newFile($name)->withContent($data)->at($baseDir);
-                }
-            }
-        }
-
-        return $baseDir;
-    }
-
-    /**
-     * copies the file system structure from given path into the base dir
-     *
-     * If no baseDir is given it will try to add the structure to the existing
-     * root directory without replacing existing childs except those with equal
-     * names.
-     * File permissions are copied as well.
-     * Please note that file contents will only be copied if their file size
-     * does not exceed the given $maxFileSize which defaults to 1024 KB. In case
-     * the file is larger file content will be mocked, see
-     * https://github.com/mikey179/vfsStream/wiki/MockingLargeFiles.
-     *
-     * @param   string              $path         path to copy the structure from
-     * @param   vfsStreamDirectory  $baseDir      directory to add the structure to
-     * @param   int                 $maxFileSize  maximum file size of files to copy content from
-     * @return  vfsStreamDirectory
-     * @throws  \InvalidArgumentException
-     * @since   0.11.0
-     * @see     https://github.com/mikey179/vfsStream/issues/4
-     */
-    public static function copyFromFileSystem($path, vfsStreamDirectory $baseDir = null, $maxFileSize = 1048576)
-    {
-        if (null === $baseDir) {
-            $baseDir = vfsStreamWrapper::getRoot();
-        }
-
-        if (null === $baseDir) {
-            throw new \InvalidArgumentException('No baseDir given and no root directory set.');
-        }
-
-        $dir = new \DirectoryIterator($path);
-        foreach ($dir as $fileinfo) {
-            switch (filetype($fileinfo->getPathname())) {
-                case 'file':
-                    if ($fileinfo->getSize() <= $maxFileSize) {
-                        $content = file_get_contents($fileinfo->getPathname());
-                    } else {
-                        $content = new LargeFileContent($fileinfo->getSize());
-                    }
-
-                    self::newFile(
-                            $fileinfo->getFilename(),
-                            octdec(substr(sprintf('%o', $fileinfo->getPerms()), -4))
-                        )
-                        ->withContent($content)
-                        ->at($baseDir);
-                    break;
-
-                case 'dir':
-                    if (!$fileinfo->isDot()) {
-                        self::copyFromFileSystem(
-                                $fileinfo->getPathname(),
-                                self::newDirectory(
-                                        $fileinfo->getFilename(),
-                                        octdec(substr(sprintf('%o', $fileinfo->getPerms()), -4))
-                                )->at($baseDir),
-                                $maxFileSize
-                        );
-                    }
-
-                    break;
-
-                case 'block':
-                    self::newBlock(
-                            $fileinfo->getFilename(),
-                            octdec(substr(sprintf('%o', $fileinfo->getPerms()), -4))
-                        )->at($baseDir);
-                    break;
-            }
-        }
-
-        return $baseDir;
-    }
-
-    /**
-     * returns a new file with given name
-     *
-     * @param   string  $name         name of file to create
-     * @param   int     $permissions  permissions of file to create
-     * @return  vfsStreamFile
-     */
-    public static function newFile($name, $permissions = null)
-    {
-        return new vfsStreamFile($name, $permissions);
-    }
-
-    /**
-     * returns a new directory with given name
-     *
-     * If the name contains slashes, a new directory structure will be created.
-     * The returned directory will always be the parent directory of this
-     * directory structure.
-     *
-     * @param   string  $name         name of directory to create
-     * @param   int     $permissions  permissions of directory to create
-     * @return  vfsStreamDirectory
-     */
-    public static function newDirectory($name, $permissions = null)
-    {
-        if ('/' === $name{0}) {
-            $name = substr($name, 1);
-        }
-
-        $firstSlash = strpos($name, '/');
-        if (false === $firstSlash) {
-            return new vfsStreamDirectory($name, $permissions);
-        }
-
-        $ownName   = substr($name, 0, $firstSlash);
-        $subDirs   = substr($name, $firstSlash + 1);
-        $directory = new vfsStreamDirectory($ownName, $permissions);
-        self::newDirectory($subDirs, $permissions)->at($directory);
-        return $directory;
-    }
-
-    /**
-     * returns a new block with the given name
-     *
-     * @param   string  $name           name of the block device
-     * @param   int     $permissions    permissions of block to create
-     * @return vfsStreamBlock
-     */
-    public static function newBlock($name, $permissions = null)
-    {
-        return new vfsStreamBlock($name, $permissions);
-    }
-
-    /**
-     * returns current user
-     *
-     * If the system does not support posix_getuid() the current user will be root (0).
-     *
-     * @return  int
-     */
-    public static function getCurrentUser()
-    {
-        return function_exists('posix_getuid') ? posix_getuid() : self::OWNER_ROOT;
-    }
-
-    /**
-     * returns current group
-     *
-     * If the system does not support posix_getgid() the current group will be root (0).
-     *
-     * @return  int
-     */
-    public static function getCurrentGroup()
-    {
-        return function_exists('posix_getgid') ? posix_getgid() : self::GROUP_ROOT;
-    }
-
-    /**
-     * use visitor to inspect a content structure
-     *
-     * If the given content is null it will fall back to use the current root
-     * directory of the stream wrapper.
-     *
-     * Returns given visitor for method chaining comfort.
-     *
-     * @param   vfsStreamVisitor  $visitor  the visitor who inspects
-     * @param   vfsStreamContent  $content  directory structure to inspect
-     * @return  vfsStreamVisitor
-     * @throws  \InvalidArgumentException
-     * @since   0.10.0
-     * @see     https://github.com/mikey179/vfsStream/issues/10
-     */
-    public static function inspect(vfsStreamVisitor $visitor, vfsStreamContent $content = null)
-    {
-        if (null !== $content) {
-            return $visitor->visit($content);
-        }
-
-        $root = vfsStreamWrapper::getRoot();
-        if (null === $root) {
-            throw new \InvalidArgumentException('No content given and no root directory set.');
-        }
-
-        return $visitor->visitDirectory($root);
-    }
-
-    /**
-     * sets quota to given amount of bytes
-     *
-     * @param  int  $bytes
-     * @since  1.1.0
-     */
-    public static function setQuota($bytes)
-    {
-        vfsStreamWrapper::setQuota(new Quota($bytes));
-    }
-
-    /**
-     * checks if vfsStream lists dotfiles in directory listings
-     *
-     * @return  bool
-     * @since   1.3.0
-     */
-    public static function useDotfiles()
-    {
-        return self::$dotFiles;
-    }
-
-    /**
-     * disable dotfiles in directory listings
-     *
-     * @since  1.3.0
-     */
-    public static function disableDotfiles()
-    {
-        self::$dotFiles = false;
-    }
-
-    /**
-     * enable dotfiles in directory listings
-     *
-     * @since  1.3.0
-     */
-    public static function enableDotfiles()
-    {
-        self::$dotFiles = true;
-    }
-}
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamAbstractContent.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamAbstractContent.php
deleted file mode 100644
index 0467451..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamAbstractContent.php
+++ /dev/null
@@ -1,419 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-/**
- * Base stream contents container.
- */
-abstract class vfsStreamAbstractContent implements vfsStreamContent
-{
-    /**
-     * name of the container
-     *
-     * @type  string
-     */
-    protected $name;
-    /**
-     * type of the container
-     *
-     * @type  string
-     */
-    protected $type;
-    /**
-     * timestamp of last access
-     *
-     * @type  int
-     */
-    protected $lastAccessed;
-    /**
-     * timestamp of last attribute modification
-     *
-     * @type  int
-     */
-    protected $lastAttributeModified;
-    /**
-     * timestamp of last modification
-     *
-     * @type  int
-     */
-    protected $lastModified;
-    /**
-     * permissions for content
-     *
-     * @type  int
-     */
-    protected $permissions;
-    /**
-     * owner of the file
-     *
-     * @type  int
-     */
-    protected $user;
-    /**
-     * owner group of the file
-     *
-     * @type  int
-     */
-    protected $group;
-    /**
-     * path to to this content
-     *
-     * @type  string
-     */
-    private $parentPath;
-
-    /**
-     * constructor
-     *
-     * @param  string  $name
-     * @param  int     $permissions  optional
-     */
-    public function __construct($name, $permissions = null)
-    {
-        $this->name = $name;
-        $time       = time();
-        if (null === $permissions) {
-            $permissions = $this->getDefaultPermissions() & ~vfsStream::umask();
-        }
-
-        $this->lastAccessed          = $time;
-        $this->lastAttributeModified = $time;
-        $this->lastModified          = $time;
-        $this->permissions           = $permissions;
-        $this->user                  = vfsStream::getCurrentUser();
-        $this->group                 = vfsStream::getCurrentGroup();
-    }
-
-    /**
-     * returns default permissions for concrete implementation
-     *
-     * @return  int
-     * @since   0.8.0
-     */
-    protected abstract function getDefaultPermissions();
-
-    /**
-     * returns the file name of the content
-     *
-     * @return  string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * renames the content
-     *
-     * @param  string  $newName
-     */
-    public function rename($newName)
-    {
-        $this->name = $newName;
-    }
-
-    /**
-     * checks whether the container can be applied to given name
-     *
-     * @param   string  $name
-     * @return  bool
-     */
-    public function appliesTo($name)
-    {
-        if ($name === $this->name) {
-            return true;
-        }
-
-        $segment_name = $this->name.'/';
-        return (strncmp($segment_name, $name, strlen($segment_name)) == 0);
-    }
-
-    /**
-     * returns the type of the container
-     *
-     * @return  int
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * sets the last modification time of the stream content
-     *
-     * @param   int  $filemtime
-     * @return  $this
-     */
-    public function lastModified($filemtime)
-    {
-        $this->lastModified = $filemtime;
-        return $this;
-    }
-
-    /**
-     * returns the last modification time of the stream content
-     *
-     * @return  int
-     */
-    public function filemtime()
-    {
-        return $this->lastModified;
-    }
-
-    /**
-     * sets last access time of the stream content
-     *
-     * @param   int  $fileatime
-     * @return  $this
-     * @since   0.9
-     */
-    public function lastAccessed($fileatime)
-    {
-        $this->lastAccessed = $fileatime;
-        return $this;
-    }
-
-    /**
-     * returns the last access time of the stream content
-     *
-     * @return  int
-     * @since   0.9
-     */
-    public function fileatime()
-    {
-        return $this->lastAccessed;
-    }
-
-    /**
-     * sets the last attribute modification time of the stream content
-     *
-     * @param   int  $filectime
-     * @return  $this
-     * @since   0.9
-     */
-    public function lastAttributeModified($filectime)
-    {
-        $this->lastAttributeModified = $filectime;
-        return $this;
-    }
-
-    /**
-     * returns the last attribute modification time of the stream content
-     *
-     * @return  int
-     * @since   0.9
-     */
-    public function filectime()
-    {
-        return $this->lastAttributeModified;
-    }
-
-    /**
-     * adds content to given container
-     *
-     * @param   vfsStreamContainer  $container
-     * @return  $this
-     */
-    public function at(vfsStreamContainer $container)
-    {
-        $container->addChild($this);
-        return $this;
-    }
-
-    /**
-     * change file mode to given permissions
-     *
-     * @param   int  $permissions
-     * @return  $this
-     */
-    public function chmod($permissions)
-    {
-        $this->permissions           = $permissions;
-        $this->lastAttributeModified = time();
-        clearstatcache();
-        return $this;
-    }
-
-    /**
-     * returns permissions
-     *
-     * @return  int
-     */
-    public function getPermissions()
-    {
-        return $this->permissions;
-    }
-
-    /**
-     * checks whether content is readable
-     *
-     * @param   int   $user   id of user to check for
-     * @param   int   $group  id of group to check for
-     * @return  bool
-     */
-    public function isReadable($user, $group)
-    {
-        if ($this->user === $user) {
-            $check = 0400;
-        } elseif ($this->group === $group) {
-            $check = 0040;
-        } else {
-            $check = 0004;
-        }
-
-        return (bool) ($this->permissions & $check);
-    }
-
-    /**
-     * checks whether content is writable
-     *
-     * @param   int   $user   id of user to check for
-     * @param   int   $group  id of group to check for
-     * @return  bool
-     */
-    public function isWritable($user, $group)
-    {
-        if ($this->user === $user) {
-            $check = 0200;
-        } elseif ($this->group === $group) {
-            $check = 0020;
-        } else {
-            $check = 0002;
-        }
-
-        return (bool) ($this->permissions & $check);
-    }
-
-    /**
-     * checks whether content is executable
-     *
-     * @param   int   $user   id of user to check for
-     * @param   int   $group  id of group to check for
-     * @return  bool
-     */
-    public function isExecutable($user, $group)
-    {
-        if ($this->user === $user) {
-            $check = 0100;
-        } elseif ($this->group === $group) {
-            $check = 0010;
-        } else {
-            $check = 0001;
-        }
-
-        return (bool) ($this->permissions & $check);
-    }
-
-    /**
-     * change owner of file to given user
-     *
-     * @param   int  $user
-     * @return  $this
-     */
-    public function chown($user)
-    {
-        $this->user                  = $user;
-        $this->lastAttributeModified = time();
-        return $this;
-    }
-
-    /**
-     * checks whether file is owned by given user
-     *
-     * @param   int  $user
-     * @return  bool
-     */
-    public function isOwnedByUser($user)
-    {
-        return $this->user === $user;
-    }
-
-    /**
-     * returns owner of file
-     *
-     * @return  int
-     */
-    public function getUser()
-    {
-        return $this->user;
-    }
-
-    /**
-     * change owner group of file to given group
-     *
-     * @param   int  $group
-     * @return  $this
-     */
-    public function chgrp($group)
-    {
-        $this->group                 = $group;
-        $this->lastAttributeModified = time();
-        return $this;
-    }
-
-    /**
-     * checks whether file is owned by group
-     *
-     * @param   int   $group
-     * @return  bool
-     */
-    public function isOwnedByGroup($group)
-    {
-        return $this->group === $group;
-    }
-
-    /**
-     * returns owner group of file
-     *
-     * @return  int
-     */
-    public function getGroup()
-    {
-        return $this->group;
-    }
-
-    /**
-     * sets parent path
-     *
-     * @param  string  $parentPath
-     * @internal  only to be set by parent
-     * @since   1.2.0
-     */
-    public function setParentPath($parentPath)
-    {
-        $this->parentPath = $parentPath;
-    }
-
-    /**
-     * returns path to this content
-     *
-     * @return  string
-     * @since   1.2.0
-     */
-    public function path()
-    {
-        if (null === $this->parentPath) {
-            return $this->name;
-        }
-
-        return $this->parentPath . '/' . $this->name;
-    }
-
-    /**
-     * returns complete vfsStream url for this content
-     *
-     * @return  string
-     * @since   1.2.0
-     */
-    public function url()
-    {
-        return vfsStream::url($this->path());
-    }
-}
-?>
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamBlock.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamBlock.php
deleted file mode 100644
index 128a96a..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamBlock.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-
-/**
- * Block container.
- *
- * @api
- */
-class vfsStreamBlock extends vfsStreamFile
-{
-    /**
-     * constructor
-     *
-     * @param  string  $name
-     * @param  int     $permissions  optional
-     */
-    public function __construct($name, $permissions = null)
-    {
-        if (empty($name)) {
-            throw new vfsStreamException('Name of Block device was empty');
-        }
-        parent::__construct($name, $permissions);
-
-        $this->type = vfsStreamContent::TYPE_BLOCK;
-    }
-}
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContainer.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContainer.php
deleted file mode 100644
index e27a581..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContainer.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-/**
- * Interface for stream contents that are able to store other stream contents.
- */
-interface vfsStreamContainer extends \IteratorAggregate
-{
-    /**
-     * adds child to the directory
-     *
-     * @param  vfsStreamContent  $child
-     */
-    public function addChild(vfsStreamContent $child);
-
-    /**
-     * removes child from the directory
-     *
-     * @param   string  $name
-     * @return  bool
-     */
-    public function removeChild($name);
-
-    /**
-     * checks whether the container contains a child with the given name
-     *
-     * @param   string  $name
-     * @return  bool
-     */
-    public function hasChild($name);
-
-    /**
-     * returns the child with the given name
-     *
-     * @param   string  $name
-     * @return  vfsStreamContent
-     */
-    public function getChild($name);
-
-    /**
-     * checks whether directory contains any children
-     *
-     * @return  bool
-     * @since   0.10.0
-     */
-    public function hasChildren();
-
-    /**
-     * returns a list of children for this directory
-     *
-     * @return  vfsStreamContent[]
-     */
-    public function getChildren();
-}
-?>
\ No newline at end of file
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContainerIterator.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContainerIterator.php
deleted file mode 100644
index 83943dc..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContainerIterator.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-/**
- * Iterator for children of a directory container.
- */
-class vfsStreamContainerIterator implements \Iterator
-{
-    /**
-     * list of children from container to iterate over
-     *
-     * @type  vfsStreamContent[]
-     */
-    protected $children;
-
-    /**
-     * constructor
-     *
-     * @param  vfsStreamContent[]  $children
-     */
-    public function __construct(array $children)
-    {
-        $this->children = $children;
-        if (vfsStream::useDotfiles()) {
-            array_unshift($this->children, new DotDirectory('.'), new DotDirectory('..'));
-        }
-
-        reset($this->children);
-    }
-
-    /**
-     * resets children pointer
-     */
-    public function rewind()
-    {
-        reset($this->children);
-    }
-
-    /**
-     * returns the current child
-     *
-     * @return  vfsStreamContent
-     */
-    public function current()
-    {
-        $child = current($this->children);
-        if (false === $child) {
-            return null;
-        }
-
-        return $child;
-    }
-
-    /**
-     * returns the name of the current child
-     *
-     * @return  string
-     */
-    public function key()
-    {
-        $child = current($this->children);
-        if (false === $child) {
-            return null;
-        }
-
-        return $child->getName();
-    }
-
-    /**
-     * iterates to next child
-     */
-    public function next()
-    {
-        next($this->children);
-    }
-
-    /**
-     * checks if the current value is valid
-     *
-     * @return  bool
-     */
-    public function valid()
-    {
-        return (false !== current($this->children));
-    }
-}
-?>
\ No newline at end of file
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContent.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContent.php
deleted file mode 100644
index efcccce..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamContent.php
+++ /dev/null
@@ -1,214 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-/**
- * Interface for stream contents.
- */
-interface vfsStreamContent
-{
-    /**
-     * stream content type: file
-     *
-     * @see  getType()
-     */
-    const TYPE_FILE = 0100000;
-    /**
-     * stream content type: directory
-     *
-     * @see  getType()
-     */
-    const TYPE_DIR  = 0040000;
-    /**
-     * stream content type: symbolic link
-     *
-     * @see  getType();
-     */
-    #const TYPE_LINK = 0120000;
-
-    /**
-     * stream content type: block
-     *
-     * @see getType()
-     */
-    const TYPE_BLOCK = 0060000;
-
-    /**
-     * returns the file name of the content
-     *
-     * @return  string
-     */
-    public function getName();
-
-    /**
-     * renames the content
-     *
-     * @param  string  $newName
-     */
-    public function rename($newName);
-
-    /**
-     * checks whether the container can be applied to given name
-     *
-     * @param   string  $name
-     * @return  bool
-     */
-    public function appliesTo($name);
-
-    /**
-     * returns the type of the container
-     *
-     * @return  int
-     */
-    public function getType();
-
-    /**
-     * returns size of content
-     *
-     * @return  int
-     */
-    public function size();
-
-    /**
-     * sets the last modification time of the stream content
-     *
-     * @param   int  $filemtime
-     * @return  vfsStreamContent
-     */
-    public function lastModified($filemtime);
-
-    /**
-     * returns the last modification time of the stream content
-     *
-     * @return  int
-     */
-    public function filemtime();
-
-    /**
-     * adds content to given container
-     *
-     * @param   vfsStreamContainer  $container
-     * @return  vfsStreamContent
-     */
-    public function at(vfsStreamContainer $container);
-
-    /**
-     * change file mode to given permissions
-     *
-     * @param   int  $permissions
-     * @return  vfsStreamContent
-     */
-    public function chmod($permissions);
-
-    /**
-     * returns permissions
-     *
-     * @return  int
-     */
-    public function getPermissions();
-
-    /**
-     * checks whether content is readable
-     *
-     * @param   int   $user   id of user to check for
-     * @param   int   $group  id of group to check for
-     * @return  bool
-     */
-    public function isReadable($user, $group);
-
-    /**
-     * checks whether content is writable
-     *
-     * @param   int   $user   id of user to check for
-     * @param   int   $group  id of group to check for
-     * @return  bool
-     */
-    public function isWritable($user, $group);
-
-    /**
-     * checks whether content is executable
-     *
-     * @param   int   $user   id of user to check for
-     * @param   int   $group  id of group to check for
-     * @return  bool
-     */
-    public function isExecutable($user, $group);
-
-    /**
-     * change owner of file to given user
-     *
-     * @param   int  $user
-     * @return  vfsStreamContent
-     */
-    public function chown($user);
-
-    /**
-     * checks whether file is owned by given user
-     *
-     * @param   int  $user
-     * @return  bool
-     */
-    public function isOwnedByUser($user);
-
-    /**
-     * returns owner of file
-     *
-     * @return  int
-     */
-    public function getUser();
-
-    /**
-     * change owner group of file to given group
-     *
-     * @param   int  $group
-     * @return  vfsStreamContent
-     */
-    public function chgrp($group);
-
-    /**
-     * checks whether file is owned by group
-     *
-     * @param   int   $group
-     * @return  bool
-     */
-    public function isOwnedByGroup($group);
-
-    /**
-     * returns owner group of file
-     *
-     * @return  int
-     */
-    public function getGroup();
-
-    /**
-     * sets parent path
-     *
-     * @param  string  $parentPath
-     * @internal  only to be set by parent
-     * @since   1.2.0
-     */
-    public function setParentPath($parentPath);
-
-    /**
-     * returns path to this content
-     *
-     * @return  string
-     * @since   1.2.0
-     */
-    public function path();
-
-    /**
-     * returns complete vfsStream url for this content
-     *
-     * @return  string
-     * @since   1.2.0
-     */
-    public function url();
-}
-?>
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamDirectory.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamDirectory.php
deleted file mode 100644
index e17c835..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamDirectory.php
+++ /dev/null
@@ -1,267 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-/**
- * Directory container.
- *
- * @api
- */
-class vfsStreamDirectory extends vfsStreamAbstractContent implements vfsStreamContainer
-{
-    /**
-     * list of directory children
-     *
-     * @type  vfsStreamContent[]
-     */
-    protected $children = array();
-
-    /**
-     * constructor
-     *
-     * @param   string  $name
-     * @param   int     $permissions  optional
-     * @throws  vfsStreamException
-     */
-    public function __construct($name, $permissions = null)
-    {
-        if (strstr($name, '/') !== false) {
-            throw new vfsStreamException('Directory name can not contain /.');
-        }
-
-        $this->type = vfsStreamContent::TYPE_DIR;
-        parent::__construct($name, $permissions);
-    }
-
-    /**
-     * returns default permissions for concrete implementation
-     *
-     * @return  int
-     * @since   0.8.0
-     */
-    protected function getDefaultPermissions()
-    {
-        return 0777;
-    }
-
-    /**
-     * returns size of directory
-     *
-     * The size of a directory is always 0 bytes. To calculate the summarized
-     * size of all children in the directory use sizeSummarized().
-     *
-     * @return  int
-     */
-    public function size()
-    {
-        return 0;
-    }
-
-    /**
-     * returns summarized size of directory and its children
-     *
-     * @return  int
-     */
-    public function sizeSummarized()
-    {
-        $size = 0;
-        foreach ($this->children as $child) {
-            if ($child->getType() === vfsStreamContent::TYPE_DIR) {
-                $size += $child->sizeSummarized();
-            } else {
-                $size += $child->size();
-            }
-        }
-
-        return $size;
-    }
-
-    /**
-     * renames the content
-     *
-     * @param   string  $newName
-     * @throws  vfsStreamException
-     */
-    public function rename($newName)
-    {
-        if (strstr($newName, '/') !== false) {
-            throw new vfsStreamException('Directory name can not contain /.');
-        }
-
-        parent::rename($newName);
-    }
-
-
-    /**
-     * sets parent path
-     *
-     * @param  string  $parentPath
-     * @internal  only to be set by parent
-     * @since   1.2.0
-     */
-    public function setParentPath($parentPath)
-    {
-        parent::setParentPath($parentPath);
-        foreach ($this->children as $child) {
-            $child->setParentPath($this->path());
-        }
-    }
-
-    /**
-     * adds child to the directory
-     *
-     * @param  vfsStreamContent  $child
-     */
-    public function addChild(vfsStreamContent $child)
-    {
-        $child->setParentPath($this->path());
-        $this->children[$child->getName()] = $child;
-        $this->updateModifications();
-    }
-
-    /**
-     * removes child from the directory
-     *
-     * @param   string  $name
-     * @return  bool
-     */
-    public function removeChild($name)
-    {
-        foreach ($this->children as $key => $child) {
-            if ($child->appliesTo($name)) {
-                $child->setParentPath(null);
-                unset($this->children[$key]);
-                $this->updateModifications();
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * updates internal timestamps
-     */
-    protected function updateModifications()
-    {
-        $time = time();
-        $this->lastAttributeModified = $time;
-        $this->lastModified          = $time;
-    }
-
-    /**
-     * checks whether the container contains a child with the given name
-     *
-     * @param   string  $name
-     * @return  bool
-     */
-    public function hasChild($name)
-    {
-        return ($this->getChild($name) !== null);
-    }
-
-    /**
-     * returns the child with the given name
-     *
-     * @param   string  $name
-     * @return  vfsStreamContent
-     */
-    public function getChild($name)
-    {
-        $childName = $this->getRealChildName($name);
-        foreach ($this->children as $child) {
-            if ($child->getName() === $childName) {
-                return $child;
-            }
-
-            if ($child->appliesTo($childName) === true && $child->hasChild($childName) === true) {
-                return $child->getChild($childName);
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * helper method to detect the real child name
-     *
-     * @param   string  $name
-     * @return  string
-     */
-    protected function getRealChildName($name)
-    {
-        if ($this->appliesTo($name) === true) {
-            return self::getChildName($name, $this->name);
-        }
-
-        return $name;
-    }
-
-    /**
-     * helper method to calculate the child name
-     *
-     * @param   string  $name
-     * @param   string  $ownName
-     * @return  string
-     */
-    protected static function getChildName($name, $ownName)
-    {
-        if ($name === $ownName) {
-            return $name;
-        }
-
-        return substr($name, strlen($ownName) + 1);
-    }
-
-    /**
-     * checks whether directory contains any children
-     *
-     * @return  bool
-     * @since   0.10.0
-     */
-    public function hasChildren()
-    {
-        return (count($this->children) > 0);
-    }
-
-    /**
-     * returns a list of children for this directory
-     *
-     * @return  vfsStreamContent[]
-     */
-    public function getChildren()
-    {
-        return array_values($this->children);
-    }
-
-    /**
-     * returns iterator for the children
-     *
-     * @return  vfsStreamContainerIterator
-     */
-    public function getIterator()
-    {
-        return new vfsStreamContainerIterator($this->children);
-    }
-
-    /**
-     * checks whether dir is a dot dir
-     *
-     * @return  bool
-     */
-    public function isDot()
-    {
-        if ('.' === $this->name || '..' === $this->name) {
-            return true;
-        }
-
-        return false;
-    }
-}
-?>
\ No newline at end of file
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamException.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamException.php
deleted file mode 100644
index aa79d64..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamException.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-/**
- * Exception for vfsStream errors.
- *
- * @api
- */
-class vfsStreamException extends \Exception
-{
-    // intentionally empty
-}
-?>
\ No newline at end of file
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamFile.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamFile.php
deleted file mode 100644
index 7e5f065..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamFile.php
+++ /dev/null
@@ -1,394 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-use org\bovigo\vfs\content\FileContent;
-use org\bovigo\vfs\content\StringBasedFileContent;
-/**
- * File container.
- *
- * @api
- */
-class vfsStreamFile extends vfsStreamAbstractContent
-{
-    /**
-     * content of the file
-     *
-     * @type  FileContent
-     */
-    private $content;
-    /**
-     * Resource id which exclusively locked this file
-     *
-     * @type  string
-     */
-    protected $exclusiveLock;
-    /**
-     * Resources ids which currently holds shared lock to this file
-     *
-     * @type  bool[string]
-     */
-    protected $sharedLock = array();
-
-    /**
-     * constructor
-     *
-     * @param  string  $name
-     * @param  int     $permissions  optional
-     */
-    public function __construct($name, $permissions = null)
-    {
-        $this->content = new StringBasedFileContent(null);
-        $this->type    = vfsStreamContent::TYPE_FILE;
-        parent::__construct($name, $permissions);
-    }
-
-    /**
-     * returns default permissions for concrete implementation
-     *
-     * @return  int
-     * @since   0.8.0
-     */
-    protected function getDefaultPermissions()
-    {
-        return 0666;
-    }
-
-    /**
-     * checks whether the container can be applied to given name
-     *
-     * @param   string  $name
-     * @return  bool
-     */
-    public function appliesTo($name)
-    {
-        return ($name === $this->name);
-    }
-
-    /**
-     * alias for withContent()
-     *
-     * @param   string  $content
-     * @return  vfsStreamFile
-     * @see     withContent()
-     */
-    public function setContent($content)
-    {
-        return $this->withContent($content);
-    }
-
-    /**
-     * sets the contents of the file
-     *
-     * Setting content with this method does not change the time when the file
-     * was last modified.
-     *
-     * @param   string]FileContent  $content
-     * @return  vfsStreamFile
-     * @throws  \InvalidArgumentException
-     */
-    public function withContent($content)
-    {
-        if (is_string($content)) {
-            $this->content = new StringBasedFileContent($content);
-        } elseif ($content instanceof FileContent) {
-            $this->content = $content;
-        } else {
-            throw new \InvalidArgumentException('Given content must either be a string or an instance of org\bovigo\vfs\content\FileContent');
-        }
-
-        return $this;
-    }
-
-    /**
-     * returns the contents of the file
-     *
-     * Getting content does not change the time when the file
-     * was last accessed.
-     *
-     * @return  string
-     */
-    public function getContent()
-    {
-        return $this->content->content();
-    }
-
-    /**
-     * simply open the file
-     *
-     * @since  0.9
-     */
-    public function open()
-    {
-        $this->content->seek(0, SEEK_SET);
-        $this->lastAccessed = time();
-    }
-
-    /**
-     * open file and set pointer to end of file
-     *
-     * @since  0.9
-     */
-    public function openForAppend()
-    {
-        $this->content->seek(0, SEEK_END);
-        $this->lastAccessed = time();
-    }
-
-    /**
-     * open file and truncate content
-     *
-     * @since  0.9
-     */
-    public function openWithTruncate()
-    {
-        $this->open();
-        $this->content->truncate(0);
-        $time               = time();
-        $this->lastAccessed = $time;
-        $this->lastModified = $time;
-    }
-
-    /**
-     * reads the given amount of bytes from content
-     *
-     * Using this method changes the time when the file was last accessed.
-     *
-     * @param   int     $count
-     * @return  string
-     */
-    public function read($count)
-    {
-        $this->lastAccessed = time();
-        return $this->content->read($count);
-    }
-
-    /**
-     * returns the content until its end from current offset
-     *
-     * Using this method changes the time when the file was last accessed.
-     *
-     * @return  string
-     * @deprecated  since 1.3.0
-     */
-    public function readUntilEnd()
-    {
-        $this->lastAccessed = time();
-        return $this->content->readUntilEnd();
-    }
-
-    /**
-     * writes an amount of data
-     *
-     * Using this method changes the time when the file was last modified.
-     *
-     * @param   string  $data
-     * @return  amount of written bytes
-     */
-    public function write($data)
-    {
-        $this->lastModified = time();
-        return $this->content->write($data);
-    }
-
-    /**
-     * Truncates a file to a given length
-     *
-     * @param   int  $size length to truncate file to
-     * @return  bool
-     * @since   1.1.0
-     */
-    public function truncate($size)
-    {
-        $this->content->truncate($size);
-        $this->lastModified = time();
-        return true;
-    }
-
-    /**
-     * checks whether pointer is at end of file
-     *
-     * @return  bool
-     */
-    public function eof()
-    {
-        return $this->content->eof();
-    }
-
-    /**
-     * returns the current position within the file
-     *
-     * @return  int
-     * @deprecated  since 1.3.0
-     */
-    public function getBytesRead()
-    {
-        return $this->content->bytesRead();
-    }
-
-    /**
-     * seeks to the given offset
-     *
-     * @param   int   $offset
-     * @param   int   $whence
-     * @return  bool
-     */
-    public function seek($offset, $whence)
-    {
-        return $this->content->seek($offset, $whence);
-    }
-
-    /**
-     * returns size of content
-     *
-     * @return  int
-     */
-    public function size()
-    {
-        return $this->content->size();
-    }
-
-
-    /**
-     * locks file for
-     *
-     * @param   resource|vfsStreamWrapper $resource
-     * @param   int  $operation
-     * @return  bool
-     * @since   0.10.0
-     * @see     https://github.com/mikey179/vfsStream/issues/6
-     * @see     https://github.com/mikey179/vfsStream/issues/40
-     */
-    public function lock($resource, $operation)
-    {
-        if ((LOCK_NB & $operation) == LOCK_NB) {
-            $operation = $operation - LOCK_NB;
-        }
-
-        // call to lock file on the same file handler firstly releases the lock
-        $this->unlock($resource);
-
-        if (LOCK_EX === $operation) {
-            if ($this->isLocked()) {
-                return false;
-            }
-
-            $this->setExclusiveLock($resource);
-        } elseif(LOCK_SH === $operation) {
-            if ($this->hasExclusiveLock()) {
-                return false;
-            }
-
-            $this->addSharedLock($resource);
-        }
-
-        return true;
-    }
-
-    /**
-     * Removes lock from file acquired by given resource
-     *
-     * @param   resource|vfsStreamWrapper $resource
-     * @see     https://github.com/mikey179/vfsStream/issues/40
-     */
-    public function unlock($resource) {
-        if ($this->hasExclusiveLock($resource)) {
-            $this->exclusiveLock = null;
-        }
-        if ($this->hasSharedLock($resource)) {
-            unset($this->sharedLock[$this->getResourceId($resource)]);
-        }
-    }
-
-    /**
-     * Set exlusive lock on file by given resource
-     *
-     * @param   resource|vfsStreamWrapper $resource
-     * @see     https://github.com/mikey179/vfsStream/issues/40
-     */
-    protected function setExclusiveLock($resource) {
-        $this->exclusiveLock = $this->getResourceId($resource);
-    }
-
-    /**
-     * Add shared lock on file by given resource
-     *
-     * @param   resource|vfsStreamWrapper $resource
-     * @see     https://github.com/mikey179/vfsStream/issues/40
-     */
-    protected function addSharedLock($resource) {
-        $this->sharedLock[$this->getResourceId($resource)] = true;
-    }
-
-    /**
-     * checks whether file is locked
-     *
-     * @param   resource|vfsStreamWrapper $resource
-     * @return  bool
-     * @since   0.10.0
-     * @see     https://github.com/mikey179/vfsStream/issues/6
-     * @see     https://github.com/mikey179/vfsStream/issues/40
-     */
-    public function isLocked($resource = null)
-    {
-        return $this->hasSharedLock($resource) || $this->hasExclusiveLock($resource);
-    }
-
-    /**
-     * checks whether file is locked in shared mode
-     *
-     * @param   resource|vfsStreamWrapper $resource
-     * @return  bool
-     * @since   0.10.0
-     * @see     https://github.com/mikey179/vfsStream/issues/6
-     * @see     https://github.com/mikey179/vfsStream/issues/40
-     */
-    public function hasSharedLock($resource = null)
-    {
-        if (null !== $resource) {
-            return isset($this->sharedLock[$this->getResourceId($resource)]);
-        }
-
-        return !empty($this->sharedLock);
-    }
-
-    /**
-     * Returns unique resource id
-     *
-     * @param   resource|vfsStreamWrapper $resource
-     * @return  string
-     * @see     https://github.com/mikey179/vfsStream/issues/40
-     */
-    public function getResourceId($resource) {
-        if (is_resource($resource)) {
-            $data = stream_get_meta_data($resource);
-            $resource = $data['wrapper_data'];
-        }
-
-        return spl_object_hash($resource);
-    }
-
-    /**
-     * checks whether file is locked in exclusive mode
-     *
-     * @param   resource|vfsStreamWrapper $resource
-     * @return  bool
-     * @since   0.10.0
-     * @see     https://github.com/mikey179/vfsStream/issues/6
-     * @see     https://github.com/mikey179/vfsStream/issues/40
-     */
-    public function hasExclusiveLock($resource = null)
-    {
-        if (null !== $resource) {
-            return $this->exclusiveLock === $this->getResourceId($resource);
-        }
-
-        return null !== $this->exclusiveLock;
-    }
-}
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamWrapper.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamWrapper.php
deleted file mode 100644
index 911334a..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/vfsStreamWrapper.php
+++ /dev/null
@@ -1,1013 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs;
-/**
- * Stream wrapper to mock file system requests.
- */
-class vfsStreamWrapper
-{
-    /**
-     * open file for reading
-     */
-    const READ                   = 'r';
-    /**
-     * truncate file
-     */
-    const TRUNCATE               = 'w';
-    /**
-     * set file pointer to end, append new data
-     */
-    const APPEND                 = 'a';
-    /**
-     * set file pointer to start, overwrite existing data
-     */
-    const WRITE                  = 'x';
-    /**
-     * set file pointer to start, overwrite existing data; or create file if
-     * does not exist
-     */
-    const WRITE_NEW              = 'c';
-    /**
-     * file mode: read only
-     */
-    const READONLY               = 0;
-    /**
-     * file mode: write only
-     */
-    const WRITEONLY              = 1;
-    /**
-     * file mode: read and write
-     */
-    const ALL                    = 2;
-    /**
-     * switch whether class has already been registered as stream wrapper or not
-     *
-     * @type  bool
-     */
-    protected static $registered = false;
-    /**
-     * root content
-     *
-     * @type  vfsStreamContent
-     */
-    protected static $root;
-    /**
-     * disk space quota
-     *
-     * @type  Quota
-     */
-    private static $quota;
-    /**
-     * file mode: read only, write only, all
-     *
-     * @type  int
-     */
-    protected $mode;
-    /**
-     * shortcut to file container
-     *
-     * @type  vfsStreamFile
-     */
-    protected $content;
-    /**
-     * shortcut to directory container
-     *
-     * @type  vfsStreamDirectory
-     */
-    protected $dir;
-    /**
-     * shortcut to directory container iterator
-     *
-     * @type  vfsStreamDirectory
-     */
-    protected $dirIterator;
-
-    /**
-     * method to register the stream wrapper
-     *
-     * Please be aware that a call to this method will reset the root element
-     * to null.
-     * If the stream is already registered the method returns silently. If there
-     * is already another stream wrapper registered for the scheme used by
-     * vfsStream a vfsStreamException will be thrown.
-     *
-     * @throws  vfsStreamException
-     */
-    public static function register()
-    {
-        self::$root  = null;
-        self::$quota = Quota::unlimited();
-        if (true === self::$registered) {
-            return;
-        }
-
-        if (@stream_wrapper_register(vfsStream::SCHEME, __CLASS__) === false) {
-            throw new vfsStreamException('A handler has already been registered for the ' . vfsStream::SCHEME . ' protocol.');
-        }
-
-        self::$registered = true;
-    }
-
-    /**
-     * Unregisters a previously registered URL wrapper for the vfs scheme.
-     * 
-     * If this stream wrapper wasn't registered, the method returns silently.
-     *
-     * If unregistering fails, or if the URL wrapper for vfs:// was not
-     * registered with this class, a vfsStreamException will be thrown.
-     * 
-     * @throws vfsStreamException
-     * @since  1.6.0
-     */
-    public static function unregister()
-    {
-        if (!self::$registered) {
-            if (in_array(vfsStream::SCHEME, stream_get_wrappers())) {
-                throw new vfsStreamException('The URL wrapper for the protocol ' . vfsStream::SCHEME . ' was not registered with this version of vfsStream.');
-            }
-            return;
-        }
-
-        if (!@stream_wrapper_unregister(vfsStream::SCHEME)) {
-            throw new vfsStreamException('Failed to unregister the URL wrapper for the ' . vfsStream::SCHEME . ' protocol.');
-        }
-
-        self::$registered = false;
-    }
-
-    /**
-     * sets the root content
-     *
-     * @param   vfsStreamContainer  $root
-     * @return  vfsStreamContainer
-     */
-    public static function setRoot(vfsStreamContainer $root)
-    {
-        self::$root = $root;
-        clearstatcache();
-        return self::$root;
-    }
-
-    /**
-     * returns the root content
-     *
-     * @return  vfsStreamContainer
-     */
-    public static function getRoot()
-    {
-        return self::$root;
-    }
-
-    /**
-     * sets quota for disk space
-     *
-     * @param  Quota  $quota
-     * @since  1.1.0
-     */
-    public static function setQuota(Quota $quota)
-    {
-        self::$quota = $quota;
-    }
-
-    /**
-     * returns content for given path
-     *
-     * @param   string  $path
-     * @return  vfsStreamContent
-     */
-    protected function getContent($path)
-    {
-        if (null === self::$root) {
-            return null;
-        }
-
-        if (self::$root->getName() === $path) {
-            return self::$root;
-        }
-
-        if ($this->isInRoot($path) && self::$root->hasChild($path) === true) {
-            return self::$root->getChild($path);
-        }
-
-        return null;
-    }
-
-    /**
-     * helper method to detect whether given path is in root path
-     *
-     * @param   string  $path
-     * @return  bool
-     */
-    private function isInRoot($path)
-    {
-        return substr($path, 0, strlen(self::$root->getName())) === self::$root->getName();
-    }
-
-    /**
-     * returns content for given path but only when it is of given type
-     *
-     * @param   string  $path
-     * @param   int     $type
-     * @return  vfsStreamContent
-     */
-    protected function getContentOfType($path, $type)
-    {
-        $content = $this->getContent($path);
-        if (null !== $content && $content->getType() === $type) {
-            return $content;
-        }
-
-        return null;
-    }
-
-    /**
-     * splits path into its dirname and the basename
-     *
-     * @param   string  $path
-     * @return  string[]
-     */
-    protected function splitPath($path)
-    {
-        $lastSlashPos = strrpos($path, '/');
-        if (false === $lastSlashPos) {
-            return array('dirname' => '', 'basename' => $path);
-        }
-
-        return array('dirname'  => substr($path, 0, $lastSlashPos),
-                     'basename' => substr($path, $lastSlashPos + 1)
-               );
-    }
-
-    /**
-     * helper method to resolve a path from /foo/bar/. to /foo/bar
-     *
-     * @param   string  $path
-     * @return  string
-     */
-    protected function resolvePath($path)
-    {
-        $newPath  = array();
-        foreach (explode('/', $path) as $pathPart) {
-            if ('.' !== $pathPart) {
-                if ('..' !== $pathPart) {
-                    $newPath[] = $pathPart;
-                } elseif (count($newPath) > 1) {
-                    array_pop($newPath);
-                }
-            }
-        }
-
-        return implode('/', $newPath);
-    }
-
-    /**
-     * open the stream
-     *
-     * @param   string  $path         the path to open
-     * @param   string  $mode         mode for opening
-     * @param   string  $options      options for opening
-     * @param   string  $opened_path  full path that was actually opened
-     * @return  bool
-     */
-    public function stream_open($path, $mode, $options, $opened_path)
-    {
-        $extended = ((strstr($mode, '+') !== false) ? (true) : (false));
-        $mode     = str_replace(array('t', 'b', '+'), '', $mode);
-        if (in_array($mode, array('r', 'w', 'a', 'x', 'c')) === false) {
-            if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
-                trigger_error('Illegal mode ' . $mode . ', use r, w, a, x  or c, flavoured with t, b and/or +', E_USER_WARNING);
-            }
-
-            return false;
-        }
-
-        $this->mode    = $this->calculateMode($mode, $extended);
-        $path          = $this->resolvePath(vfsStream::path($path));
-        $this->content = $this->getContentOfType($path, vfsStreamContent::TYPE_FILE);
-        if (null !== $this->content) {
-            if (self::WRITE === $mode) {
-                if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
-                    trigger_error('File ' . $path . ' already exists, can not open with mode x', E_USER_WARNING);
-                }
-
-                return false;
-            }
-
-            if (
-                (self::TRUNCATE === $mode || self::APPEND === $mode) &&
-                $this->content->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false
-            ) {
-                return false;
-            }
-
-            if (self::TRUNCATE === $mode) {
-                $this->content->openWithTruncate();
-            } elseif (self::APPEND === $mode) {
-                $this->content->openForAppend();
-            } else {
-                if (!$this->content->isReadable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup())) {
-                    if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
-                        trigger_error('Permission denied', E_USER_WARNING);
-                    }
-                    return false;
-                }
-                $this->content->open();
-            }
-
-            return true;
-        }
-
-        $content = $this->createFile($path, $mode, $options);
-        if (false === $content) {
-            return false;
-        }
-
-        $this->content = $content;
-        return true;
-    }
-
-    /**
-     * creates a file at given path
-     *
-     * @param   string  $path     the path to open
-     * @param   string  $mode     mode for opening
-     * @param   string  $options  options for opening
-     * @return  bool
-     */
-    private function createFile($path, $mode = null, $options = null)
-    {
-        $names = $this->splitPath($path);
-        if (empty($names['dirname']) === true) {
-            if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
-                trigger_error('File ' . $names['basename'] . ' does not exist', E_USER_WARNING);
-            }
-
-            return false;
-        }
-
-        $dir = $this->getContentOfType($names['dirname'], vfsStreamContent::TYPE_DIR);
-        if (null === $dir) {
-            if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
-                trigger_error('Directory ' . $names['dirname'] . ' does not exist', E_USER_WARNING);
-            }
-
-            return false;
-        } elseif ($dir->hasChild($names['basename']) === true) {
-            if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
-                trigger_error('Directory ' . $names['dirname'] . ' already contains a director named ' . $names['basename'], E_USER_WARNING);
-            }
-
-            return false;
-        }
-
-        if (self::READ === $mode) {
-            if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
-                trigger_error('Can not open non-existing file ' . $path . ' for reading', E_USER_WARNING);
-            }
-
-            return false;
-        }
-
-        if ($dir->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
-            if (($options & STREAM_REPORT_ERRORS) === STREAM_REPORT_ERRORS) {
-                trigger_error('Can not create new file in non-writable path ' . $names['dirname'], E_USER_WARNING);
-            }
-
-            return false;
-        }
-
-        return vfsStream::newFile($names['basename'])->at($dir);
-    }
-
-    /**
-     * calculates the file mode
-     *
-     * @param   string  $mode      opening mode: r, w, a or x
-     * @param   bool    $extended  true if + was set with opening mode
-     * @return  int
-     */
-    protected function calculateMode($mode, $extended)
-    {
-        if (true === $extended) {
-            return self::ALL;
-        }
-
-        if (self::READ === $mode) {
-            return self::READONLY;
-        }
-
-        return self::WRITEONLY;
-    }
-
-    /**
-     * closes the stream
-     *
-     * @see     https://github.com/mikey179/vfsStream/issues/40
-     */
-    public function stream_close()
-    {
-        $this->content->lock($this, LOCK_UN);
-    }
-
-    /**
-     * read the stream up to $count bytes
-     *
-     * @param   int     $count  amount of bytes to read
-     * @return  string
-     */
-    public function stream_read($count)
-    {
-        if (self::WRITEONLY === $this->mode) {
-            return '';
-        }
-
-        if ($this->content->isReadable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
-            return '';
-        }
-
-        return $this->content->read($count);
-    }
-
-    /**
-     * writes data into the stream
-     *
-     * @param   string  $data
-     * @return  int     amount of bytes written
-     */
-    public function stream_write($data)
-    {
-        if (self::READONLY === $this->mode) {
-            return 0;
-        }
-
-        if ($this->content->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
-            return 0;
-        }
-
-        if (self::$quota->isLimited()) {
-            $data = substr($data, 0, self::$quota->spaceLeft(self::$root->sizeSummarized()));
-        }
-
-        return $this->content->write($data);
-    }
-
-    /**
-     * truncates a file to a given length
-     *
-     * @param   int  $size  length to truncate file to
-     * @return  bool
-     * @since   1.1.0
-     */
-    public function stream_truncate($size)
-    {
-        if (self::READONLY === $this->mode) {
-            return false;
-        }
-
-        if ($this->content->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
-            return false;
-        }
-
-        if ($this->content->getType() !== vfsStreamContent::TYPE_FILE) {
-            return false;
-        }
-
-        if (self::$quota->isLimited() && $this->content->size() < $size) {
-            $maxSize = self::$quota->spaceLeft(self::$root->sizeSummarized());
-            if (0 === $maxSize) {
-                return false;
-            }
-
-            if ($size > $maxSize) {
-                $size = $maxSize;
-            }
-        }
-
-        return $this->content->truncate($size);
-    }
-
-    /**
-     * sets metadata like owner, user or permissions
-     *
-     * @param   string  $path
-     * @param   int     $option
-     * @param   mixed   $var
-     * @return  bool
-     * @since   1.1.0
-     */
-    public function stream_metadata($path, $option, $var)
-    {
-        $path    = $this->resolvePath(vfsStream::path($path));
-        $content = $this->getContent($path);
-        switch ($option) {
-            case STREAM_META_TOUCH:
-                if (null === $content) {
-                    $content = $this->createFile($path, null, STREAM_REPORT_ERRORS);
-                    // file creation may not be allowed at provided path
-                    if (false === $content) {
-                        return false;
-                    }
-                }
-
-                $currentTime = time();
-                $content->lastModified(((isset($var[0])) ? ($var[0]) : ($currentTime)))
-                        ->lastAccessed(((isset($var[1])) ? ($var[1]) : ($currentTime)));
-                return true;
-
-            case STREAM_META_OWNER_NAME:
-                return false;
-
-            case STREAM_META_OWNER:
-                if (null === $content) {
-                    return false;
-                }
-
-                return $this->doPermChange($path,
-                                           $content,
-                                           function() use ($content, $var)
-                                           {
-                                               $content->chown($var);
-                                           }
-                );
-
-            case STREAM_META_GROUP_NAME:
-                return false;
-
-            case STREAM_META_GROUP:
-                if (null === $content) {
-                    return false;
-                }
-
-                return $this->doPermChange($path,
-                                           $content,
-                                           function() use ($content, $var)
-                                           {
-                                               $content->chgrp($var);
-                                           }
-                );
-
-            case STREAM_META_ACCESS:
-                if (null === $content) {
-                    return false;
-                }
-
-                return $this->doPermChange($path,
-                                           $content,
-                                           function() use ($content, $var)
-                                           {
-                                               $content->chmod($var);
-                                           }
-                );
-
-            default:
-                return false;
-        }
-    }
-
-    /**
-     * executes given permission change when necessary rights allow such a change
-     *
-     * @param   string                    $path
-     * @param   vfsStreamAbstractContent  $content
-     * @param   \Closure                  $change
-     * @return  bool
-     */
-    private function doPermChange($path, vfsStreamAbstractContent $content, \Closure $change)
-    {
-        if (!$content->isOwnedByUser(vfsStream::getCurrentUser())) {
-            return false;
-        }
-
-        if (self::$root->getName() !== $path) {
-            $names   = $this->splitPath($path);
-            $parent = $this->getContent($names['dirname']);
-            if (!$parent->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup())) {
-                return false;
-            }
-        }
-
-        $change();
-        return true;
-    }
-
-    /**
-     * checks whether stream is at end of file
-     *
-     * @return  bool
-     */
-    public function stream_eof()
-    {
-        return $this->content->eof();
-    }
-
-    /**
-     * returns the current position of the stream
-     *
-     * @return  int
-     */
-    public function stream_tell()
-    {
-        return $this->content->getBytesRead();
-    }
-
-    /**
-     * seeks to the given offset
-     *
-     * @param   int   $offset
-     * @param   int   $whence
-     * @return  bool
-     */
-    public function stream_seek($offset, $whence)
-    {
-        return $this->content->seek($offset, $whence);
-    }
-
-    /**
-     * flushes unstored data into storage
-     *
-     * @return  bool
-     */
-    public function stream_flush()
-    {
-        return true;
-    }
-
-    /**
-     * returns status of stream
-     *
-     * @return  array
-     */
-    public function stream_stat()
-    {
-        $fileStat = array('dev'     => 0,
-                          'ino'     => 0,
-                          'mode'    => $this->content->getType() | $this->content->getPermissions(),
-                          'nlink'   => 0,
-                          'uid'     => $this->content->getUser(),
-                          'gid'     => $this->content->getGroup(),
-                          'rdev'    => 0,
-                          'size'    => $this->content->size(),
-                          'atime'   => $this->content->fileatime(),
-                          'mtime'   => $this->content->filemtime(),
-                          'ctime'   => $this->content->filectime(),
-                          'blksize' => -1,
-                          'blocks'  => -1
-                    );
-        return array_merge(array_values($fileStat), $fileStat);
-    }
-
-    /**
-     * retrieve the underlaying resource
-     *
-     * Please note that this method always returns false as there is no
-     * underlaying resource to return.
-     *
-     * @param   int  $cast_as
-     * @since   0.9.0
-     * @see     https://github.com/mikey179/vfsStream/issues/3
-     * @return  bool
-     */
-    public function stream_cast($cast_as)
-    {
-        return false;
-    }
-
-    /**
-     * set lock status for stream
-     *
-     * @param   int   $operation
-     * @return  bool
-     * @since   0.10.0
-     * @see     https://github.com/mikey179/vfsStream/issues/6
-     * @see     https://github.com/mikey179/vfsStream/issues/31
-     * @see     https://github.com/mikey179/vfsStream/issues/40
-     */
-    public function stream_lock($operation)
-    {
-        if ((LOCK_NB & $operation) == LOCK_NB) {
-            $operation = $operation - LOCK_NB;
-        }
-
-        return $this->content->lock($this, $operation);
-    }
-
-    /**
-     * sets options on the stream
-     *
-     * @param   int   $option  key of option to set
-     * @param   int   $arg1
-     * @param   int   $arg2
-     * @return  bool
-     * @since   0.10.0
-     * @see     https://github.com/mikey179/vfsStream/issues/15
-     * @see     http://www.php.net/manual/streamwrapper.stream-set-option.php
-     */
-    public function stream_set_option($option, $arg1, $arg2)
-    {
-        switch ($option) {
-            case STREAM_OPTION_BLOCKING:
-                // break omitted
-
-            case STREAM_OPTION_READ_TIMEOUT:
-                // break omitted
-
-            case STREAM_OPTION_WRITE_BUFFER:
-                // break omitted
-
-            default:
-                // nothing to do here
-        }
-
-        return false;
-    }
-
-    /**
-     * remove the data under the given path
-     *
-     * @param   string  $path
-     * @return  bool
-     */
-    public function unlink($path)
-    {
-        $realPath = $this->resolvePath(vfsStream::path($path));
-        $content  = $this->getContent($realPath);
-        if (null === $content) {
-            trigger_error('unlink(' . $path . '): No such file or directory', E_USER_WARNING);
-            return false;
-        }
-
-        if ($content->getType() !== vfsStreamContent::TYPE_FILE) {
-            trigger_error('unlink(' . $path . '): Operation not permitted', E_USER_WARNING);
-            return false;
-        }
-
-        return $this->doUnlink($realPath);
-    }
-
-    /**
-     * removes a path
-     *
-     * @param   string  $path
-     * @return  bool
-     */
-    protected function doUnlink($path)
-    {
-        if (self::$root->getName() === $path) {
-            // delete root? very brave. :)
-            self::$root = null;
-            clearstatcache();
-            return true;
-        }
-
-        $names   = $this->splitPath($path);
-        $content = $this->getContent($names['dirname']);
-        if (!$content->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup())) {
-            return false;
-        }
-
-        clearstatcache();
-        return $content->removeChild($names['basename']);
-    }
-
-    /**
-     * rename from one path to another
-     *
-     * @param   string  $path_from
-     * @param   string  $path_to
-     * @return  bool
-     * @author  Benoit Aubuchon
-     */
-    public function rename($path_from, $path_to)
-    {
-        $srcRealPath = $this->resolvePath(vfsStream::path($path_from));
-        $dstRealPath = $this->resolvePath(vfsStream::path($path_to));
-        $srcContent  = $this->getContent($srcRealPath);
-        if (null == $srcContent) {
-            trigger_error(' No such file or directory', E_USER_WARNING);
-            return false;
-        }
-        $dstNames = $this->splitPath($dstRealPath);
-        $dstParentContent = $this->getContent($dstNames['dirname']);
-        if (null == $dstParentContent) {
-            trigger_error('No such file or directory', E_USER_WARNING);
-            return false;
-        }
-        if (!$dstParentContent->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup())) {
-            trigger_error('Permission denied', E_USER_WARNING);
-            return false;
-        }
-        if ($dstParentContent->getType() !== vfsStreamContent::TYPE_DIR) {
-            trigger_error('Target is not a directory', E_USER_WARNING);
-            return false;
-        }
-
-        // remove old source first, so we can rename later
-        // (renaming first would lead to not being able to remove the old path)
-        if (!$this->doUnlink($srcRealPath)) {
-            return false;
-        }
-
-        $dstContent = $srcContent;
-        // Renaming the filename
-        $dstContent->rename($dstNames['basename']);
-        // Copying to the destination
-        $dstParentContent->addChild($dstContent);
-        return true;
-    }
-
-    /**
-     * creates a new directory
-     *
-     * @param   string  $path
-     * @param   int     $mode
-     * @param   int     $options
-     * @return  bool
-     */
-    public function mkdir($path, $mode, $options)
-    {
-        $umask = vfsStream::umask();
-        if (0 < $umask) {
-            $permissions = $mode & ~$umask;
-        } else {
-            $permissions = $mode;
-        }
-
-        $path = $this->resolvePath(vfsStream::path($path));
-        if (null !== $this->getContent($path)) {
-            trigger_error('mkdir(): Path vfs://' . $path . ' exists', E_USER_WARNING);
-            return false;
-        }
-
-        if (null === self::$root) {
-            self::$root = vfsStream::newDirectory($path, $permissions);
-            return true;
-        }
-
-        $maxDepth = count(explode('/', $path));
-        $names    = $this->splitPath($path);
-        $newDirs  = $names['basename'];
-        $dir      = null;
-        $i        = 0;
-        while ($dir === null && $i < $maxDepth) {
-            $dir     = $this->getContent($names['dirname']);
-            $names   = $this->splitPath($names['dirname']);
-            if (null == $dir) {
-                $newDirs = $names['basename'] . '/' . $newDirs;
-            }
-
-            $i++;
-        }
-
-        if (null === $dir
-          || $dir->getType() !== vfsStreamContent::TYPE_DIR
-          || $dir->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
-            return false;
-        }
-
-        $recursive = ((STREAM_MKDIR_RECURSIVE & $options) !== 0) ? (true) : (false);
-        if (strpos($newDirs, '/') !== false && false === $recursive) {
-            return false;
-        }
-
-        vfsStream::newDirectory($newDirs, $permissions)->at($dir);
-        return true;
-    }
-
-    /**
-     * removes a directory
-     *
-     * @param   string  $path
-     * @param   int     $options
-     * @return  bool
-     * @todo    consider $options with STREAM_MKDIR_RECURSIVE
-     */
-    public function rmdir($path, $options)
-    {
-        $path  = $this->resolvePath(vfsStream::path($path));
-        $child = $this->getContentOfType($path, vfsStreamContent::TYPE_DIR);
-        if (null === $child) {
-            return false;
-        }
-
-        // can only remove empty directories
-        if (count($child->getChildren()) > 0) {
-            return false;
-        }
-
-        if (self::$root->getName() === $path) {
-            // delete root? very brave. :)
-            self::$root = null;
-            clearstatcache();
-            return true;
-        }
-
-        $names = $this->splitPath($path);
-        $dir   = $this->getContentOfType($names['dirname'], vfsStreamContent::TYPE_DIR);
-        if ($dir->isWritable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
-            return false;
-        }
-
-        clearstatcache();
-        return $dir->removeChild($child->getName());
-    }
-
-    /**
-     * opens a directory
-     *
-     * @param   string  $path
-     * @param   int     $options
-     * @return  bool
-     */
-    public function dir_opendir($path, $options)
-    {
-        $path      = $this->resolvePath(vfsStream::path($path));
-        $this->dir = $this->getContentOfType($path, vfsStreamContent::TYPE_DIR);
-        if (null === $this->dir || $this->dir->isReadable(vfsStream::getCurrentUser(), vfsStream::getCurrentGroup()) === false) {
-            return false;
-        }
-
-        $this->dirIterator = $this->dir->getIterator();
-        return true;
-    }
-
-    /**
-     * reads directory contents
-     *
-     * @return  string
-     */
-    public function dir_readdir()
-    {
-        $dir = $this->dirIterator->current();
-        if (null === $dir) {
-            return false;
-        }
-
-        $this->dirIterator->next();
-        return $dir->getName();
-    }
-
-    /**
-     * reset directory iteration
-     *
-     * @return  bool
-     */
-    public function dir_rewinddir()
-    {
-        return $this->dirIterator->rewind();
-    }
-
-    /**
-     * closes directory
-     *
-     * @return  bool
-     */
-    public function dir_closedir()
-    {
-        $this->dirIterator = null;
-        return true;
-    }
-
-    /**
-     * returns status of url
-     *
-     * @param   string  $path   path of url to return status for
-     * @param   int     $flags  flags set by the stream API
-     * @return  array
-     */
-    public function url_stat($path, $flags)
-    {
-        $content = $this->getContent($this->resolvePath(vfsStream::path($path)));
-        if (null === $content) {
-            if (($flags & STREAM_URL_STAT_QUIET) != STREAM_URL_STAT_QUIET) {
-                trigger_error(' No such file or directory: ' . $path, E_USER_WARNING);
-            }
-
-            return false;
-
-        }
-
-        $fileStat = array('dev'     => 0,
-                          'ino'     => 0,
-                          'mode'    => $content->getType() | $content->getPermissions(),
-                          'nlink'   => 0,
-                          'uid'     => $content->getUser(),
-                          'gid'     => $content->getGroup(),
-                          'rdev'    => 0,
-                          'size'    => $content->size(),
-                          'atime'   => $content->fileatime(),
-                          'mtime'   => $content->filemtime(),
-                          'ctime'   => $content->filectime(),
-                          'blksize' => -1,
-                          'blocks'  => -1
-                    );
-        return array_merge(array_values($fileStat), $fileStat);
-    }
-}
-?>
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamAbstractVisitor.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamAbstractVisitor.php
deleted file mode 100644
index 4f8c286..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamAbstractVisitor.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs\visitor;
-use org\bovigo\vfs\vfsStreamContent;
-use org\bovigo\vfs\vfsStreamBlock;
-
-/**
- * Abstract base class providing an implementation for the visit() method.
- *
- * @since  0.10.0
- * @see    https://github.com/mikey179/vfsStream/issues/10
- */
-abstract class vfsStreamAbstractVisitor implements vfsStreamVisitor
-{
-    /**
-     * visit a content and process it
-     *
-     * @param   vfsStreamContent  $content
-     * @return  vfsStreamVisitor
-     * @throws  \InvalidArgumentException
-     */
-    public function visit(vfsStreamContent $content)
-    {
-        switch ($content->getType()) {
-            case vfsStreamContent::TYPE_BLOCK:
-                $this->visitBlockDevice($content);
-                break;
-
-            case vfsStreamContent::TYPE_FILE:
-                $this->visitFile($content);
-                break;
-
-            case vfsStreamContent::TYPE_DIR:
-                if (!$content->isDot()) {
-                    $this->visitDirectory($content);
-                }
-
-                break;
-
-            default:
-                throw new \InvalidArgumentException('Unknown content type ' . $content->getType() . ' for ' . $content->getName());
-        }
-
-        return $this;
-    }
-
-    /**
-     * visit a block device and process it
-     *
-     * @param   vfsStreamBlock $block
-     * @return  vfsStreamVisitor
-     */
-    public function visitBlockDevice(vfsStreamBlock $block)
-    {
-        return $this->visitFile($block);
-    }
-}
-?>
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamPrintVisitor.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamPrintVisitor.php
deleted file mode 100644
index 4175485..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamPrintVisitor.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs\visitor;
-use org\bovigo\vfs\vfsStreamContent;
-use org\bovigo\vfs\vfsStreamDirectory;
-use org\bovigo\vfs\vfsStreamFile;
-use org\bovigo\vfs\vfsStreamBlock;
-
-/**
- * Visitor which traverses a content structure recursively to print it to an output stream.
- *
- * @since  0.10.0
- * @see    https://github.com/mikey179/vfsStream/issues/10
- */
-class vfsStreamPrintVisitor extends vfsStreamAbstractVisitor
-{
-    /**
-     * target to write output to
-     *
-     * @type  resource
-     */
-    protected $out;
-    /**
-     * current depth in directory tree
-     *
-     * @type  int
-     */
-    protected $depth;
-
-    /**
-     * constructor
-     *
-     * If no file pointer given it will fall back to STDOUT.
-     *
-     * @param   resource  $out  optional
-     * @throws  \InvalidArgumentException
-     * @api
-     */
-    public function __construct($out = STDOUT)
-    {
-        if (is_resource($out) === false || get_resource_type($out) !== 'stream') {
-            throw new \InvalidArgumentException('Given filepointer is not a resource of type stream');
-        }
-
-        $this->out = $out;
-    }
-
-    /**
-     * visit a file and process it
-     *
-     * @param   vfsStreamFile  $file
-     * @return  vfsStreamPrintVisitor
-     */
-    public function visitFile(vfsStreamFile $file)
-    {
-        $this->printContent($file->getName());
-        return $this;
-    }
-
-    /**
-     * visit a block device and process it
-     *
-     * @param   vfsStreamBlock  $block
-     * @return  vfsStreamPrintVisitor
-     */
-    public function visitBlockDevice(vfsStreamBlock $block)
-    {
-        $name = '[' . $block->getName() . ']';
-        $this->printContent($name);
-        return $this;
-    }
-
-    /**
-     * visit a directory and process it
-     *
-     * @param   vfsStreamDirectory  $dir
-     * @return  vfsStreamPrintVisitor
-     */
-    public function visitDirectory(vfsStreamDirectory $dir)
-    {
-        $this->printContent($dir->getName());
-        $this->depth++;
-        foreach ($dir as $child) {
-            $this->visit($child);
-        }
-
-        $this->depth--;
-        return $this;
-    }
-
-    /**
-     * helper method to print the content
-     *
-     * @param  string   $name
-     */
-    protected function printContent($name)
-    {
-        fwrite($this->out, str_repeat('  ', $this->depth) . '- ' . $name . "\n");
-    }
-}
-?>
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitor.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitor.php
deleted file mode 100644
index 957e5df..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitor.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs\visitor;
-use org\bovigo\vfs\vfsStreamDirectory;
-use org\bovigo\vfs\vfsStreamFile;
-use org\bovigo\vfs\vfsStreamBlock;
-
-/**
- * Visitor which traverses a content structure recursively to create an array structure from it.
- *
- * @since  0.10.0
- * @see    https://github.com/mikey179/vfsStream/issues/10
- */
-class vfsStreamStructureVisitor extends vfsStreamAbstractVisitor
-{
-    /**
-     * collected structure
-     *
-     * @type  array
-     */
-    protected $structure = array();
-    /**
-     * poiting to currently iterated directory
-     *
-     * @type  array
-     */
-    protected $current;
-
-    /**
-     * constructor
-     *
-     * @api
-     */
-    public function __construct()
-    {
-        $this->reset();
-    }
-
-    /**
-     * visit a file and process it
-     *
-     * @param   vfsStreamFile  $file
-     * @return  vfsStreamStructureVisitor
-     */
-    public function visitFile(vfsStreamFile $file)
-    {
-        $this->current[$file->getName()] = $file->getContent();
-        return $this;
-    }
-
-    /**
-     * visit a block device and process it
-     *
-     * @param   vfsStreamBlock $block
-     * @return  vfsStreamStructureVisitor
-     */
-    public function visitBlockDevice(vfsStreamBlock $block)
-    {
-        $this->current['[' . $block->getName() . ']'] = $block->getContent();
-        return $this;
-    }
-
-    /**
-     * visit a directory and process it
-     *
-     * @param   vfsStreamDirectory  $dir
-     * @return  vfsStreamStructureVisitor
-     */
-    public function visitDirectory(vfsStreamDirectory $dir)
-    {
-        $this->current[$dir->getName()] = array();
-        $tmp           =& $this->current;
-        $this->current =& $tmp[$dir->getName()];
-        foreach ($dir as $child) {
-            $this->visit($child);
-        }
-
-        $this->current =& $tmp;
-        return $this;
-    }
-
-    /**
-     * returns structure of visited contents
-     *
-     * @return  array
-     * @api
-     */
-    public function getStructure()
-    {
-        return $this->structure;
-    }
-
-    /**
-     * resets structure so visitor could be reused
-     *
-     * @return  vfsStreamStructureVisitor
-     */
-    public function reset()
-    {
-        $this->structure = array();
-        $this->current   =& $this->structure;
-        return $this;
-    }
-}
-?>
diff --git a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamVisitor.php b/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamVisitor.php
deleted file mode 100644
index 89e4374..0000000
--- a/vendor/mikey179/vfsStream/src/main/php/org/bovigo/vfs/visitor/vfsStreamVisitor.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/**
- * This file is part of vfsStream.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @package  org\bovigo\vfs
- */
-namespace org\bovigo\vfs\visitor;
-use org\bovigo\vfs\vfsStreamContent;
-use org\bovigo\vfs\vfsStreamDirectory;
-use org\bovigo\vfs\vfsStreamFile;
-use org\bovigo\vfs\vfsStreamBlock;
-
-/**
- * Interface for a visitor to work on a vfsStream content structure.
- *
- * @since  0.10.0
- * @see    https://github.com/mikey179/vfsStream/issues/10
- */
-interface vfsStreamVisitor
-{
-    /**
-     * visit a content and process it
-     *
-     * @param   vfsStreamContent  $content
-     * @return  vfsStreamVisitor
-     */
-    public function visit(vfsStreamContent $content);
-
-    /**
-     * visit a file and process it
-     *
-     * @param   vfsStreamFile  $file
-     * @return  vfsStreamVisitor
-     */
-    public function visitFile(vfsStreamFile $file);
-
-    /**
-     * visit a directory and process it
-     *
-     * @param   vfsStreamDirectory  $dir
-     * @return  vfsStreamVisitor
-     */
-    public function visitDirectory(vfsStreamDirectory $dir);
-
-    /**
-     * visit a block device and process it
-     *
-     * @param   vfsStreamBlock  $block
-     * @return  vfsStreamVisitor
-     */
-    public function visitBlockDevice(vfsStreamBlock $block);
-}
-?>
diff --git a/vendor/paragonie/random_compat/.scrutinizer.yml b/vendor/paragonie/random_compat/.scrutinizer.yml
deleted file mode 100644
index a2f32ea..0000000
--- a/vendor/paragonie/random_compat/.scrutinizer.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-checks:
-    php:
-        code_rating: true
-        duplication: false
\ No newline at end of file
diff --git a/vendor/paragonie/random_compat/.travis.yml b/vendor/paragonie/random_compat/.travis.yml
deleted file mode 100644
index 43ec127..0000000
--- a/vendor/paragonie/random_compat/.travis.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-language: php
-php:
-
-- "7.0"
-- "5.6"
-- "5.5"
-- "5.4"
-- "5.3"
-- "hhvm"
-
-
-sudo: false
-
-matrix:
-    fast_finish: true
-    allow_failures:
-      - php: "hhvm"
-
-install:
-
-- composer install
-- composer self-update
-- composer update
-- chmod +x ./phpunit.sh
-
-script: ./phpunit.sh travis
diff --git a/vendor/paragonie/random_compat/ERRATA.md b/vendor/paragonie/random_compat/ERRATA.md
deleted file mode 100644
index 9c0ef9f..0000000
--- a/vendor/paragonie/random_compat/ERRATA.md
+++ /dev/null
@@ -1,40 +0,0 @@
-## Errata (Design Decisions)
-
-### Reasoning Behind the Order of Preferred Random Data Sources
-
-The order is:
-
- 1. `libsodium if available`
- 2. `fread() /dev/urandom if available`
- 3. `mcrypt_create_iv($bytes, MCRYPT_CREATE_IV)`
- 4. `COM('CAPICOM.Utilities.1')->GetRandom()`
- 5. `openssl_random_pseudo_bytes()`
-
-If libsodium is available, we get random data from it. This is the preferred
-method on all OSes, but libsodium is not very widely installed, so other
-fallbacks are available.
-
-Next, we read `/dev/urandom` (if it exists). This is the preferred file to read
-for random data for cryptographic purposes for BSD and Linux.
-
-Despite [strongly urging people not to use mcrypt in their projects](https://paragonie.com/blog/2015/05/if-you-re-typing-word-mcrypt-into-your-code-you-re-doing-it-wrong),
-because libmcrypt is abandonware and the API puts too much responsibility on the
-implementor, we prioritize `mcrypt_create_iv()` with `MCRYPT_DEV_URANDOM` above
-the remaining implementations.
-
-The reason is simple: `mcrypt_create_iv()` is part of PHP's `ext/mcrypt` code,
-and is not part `libmcrypt`. It actually does the right thing:
-
- * On Unix-based operating systems, it reads from `/dev/urandom`, which is the
-   sane and correct thing to do.
- * On Windows, it reads from `CryptGenRandom`, which is an exclusively Windows
-   way to get random bytes.
-
-If we're on Windows and don't have access to `mcrypt`, we use `CAPICOM.Utilities.1`.
-
-Finally, we use `openssl_random_pseudo_bytes()` **as a last resort**, due to
-[PHP bug #70014](https://bugs.php.net/bug.php?id=70014). Internally, this 
-function calls `RAND_pseudo_bytes()`, which has been [deprecated](https://github.com/paragonie/random_compat/issues/5)
-by the OpenSSL team. Furthermore, [it might silently return weak random data](https://github.com/paragonie/random_compat/issues/6#issuecomment-119564973)
-if it is called before OpenSSL's **userspace** CSPRNG is seeded. Also, 
-[you want the OS CSPRNG, not a userspace CSPRNG](http://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers/).
diff --git a/vendor/paragonie/random_compat/LICENSE b/vendor/paragonie/random_compat/LICENSE
deleted file mode 100644
index 45c7017..0000000
--- a/vendor/paragonie/random_compat/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Paragon Initiative Enterprises
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/vendor/paragonie/random_compat/README.md b/vendor/paragonie/random_compat/README.md
deleted file mode 100644
index ed5b1d8..0000000
--- a/vendor/paragonie/random_compat/README.md
+++ /dev/null
@@ -1,149 +0,0 @@
-# random_compat
-
-[![Build Status](https://travis-ci.org/paragonie/random_compat.svg?branch=master)](https://travis-ci.org/paragonie/random_compat)
-[![Scrutinizer](https://scrutinizer-ci.com/g/paragonie/random_compat/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/paragonie/random_compat)
-
-PHP 5.x polyfill for `random_bytes()` and `random_int()` created and maintained
-by [Paragon Initiative Enterprises](https://paragonie.com).
-
-Although this library *should* function in earlier versions of PHP, we will only
-consider issues relevant to [supported PHP versions](https://secure.php.net/supported-versions.php).
-**If you are using an unsupported version of PHP, please upgrade as soon as possible.**
-
-## Important
-
-Although this library has been examined by some security experts in the PHP 
-community, there will always be a chance that we overlooked something. Please 
-ask your favorite trusted hackers to hammer it for implementation errors and
-bugs before even thinking about deploying it in production.
-
-**Do not use the master branch, use a [stable release](https://github.com/paragonie/random_compat/releases/latest).**
-
-For the background of this library, please refer to our blog post on 
-[Generating Random Integers and Strings in PHP](https://paragonie.com/blog/2015/07/how-safely-generate-random-strings-and-integers-in-php).
-
-### Usability Notice
-
-If PHP cannot safely generate random data, this library will throw an `Exception`.
-It will never fall back to insecure random data. If this keeps happening, upgrade
-to a newer version of PHP immediately.
-
-## Usage
-
-This library exposes the [CSPRNG functions added in PHP 7](https://secure.php.net/manual/en/ref.csprng.php)
-for use in PHP 5 projects. Their behavior should be identical.
-
-### Generate a string of random bytes
-
-```php
-try {
-    $string = random_bytes(32);
-} catch (TypeError $e) {
-    // Well, it's an integer, so this IS unexpected.
-    die("An unexpected error has occurred"); 
-} catch (Error $e) {
-    // This is also unexpected because 32 is a reasonable integer.
-    die("An unexpected error has occurred");
-} catch (Exception $e) {
-    // If you get this message, the CSPRNG failed hard.
-    die("Could not generate a random string. Is our OS secure?");
-}
-
-var_dump(bin2hex($string));
-// string(64) "5787c41ae124b3b9363b7825104f8bc8cf27c4c3036573e5f0d4a91ad2eeac6f"
-```
-
-### Generate a random integer between two given integers (inclusive)
-
-```php
-try {
-    $int = random_int(0,255);
-
-} catch (TypeError $e) {
-    // Well, it's an integer, so this IS unexpected.
-    die("An unexpected error has occurred"); 
-} catch (Error $e) {
-    // This is also unexpected because 0 and 255 are both reasonable integers.
-    die("An unexpected error has occurred");
-} catch (Exception $e) {
-    // If you get this message, the CSPRNG failed hard.
-    die("Could not generate a random string. Is our OS secure?");
-}
-
-var_dump($int);
-// int(47)
-```
-
-### Exception handling
-
-When handling exceptions and errors you must account for differences between
-PHP 5 and PHP7.
-
-The differences:
-
-* Catching `Error` works, so long as it is caught before `Exception`.
-* Catching `Exception` has different behavior, without previously catching `Error`.
-* There is *no* portable way to catch all errors/exceptions.
-
-#### Our recommendation
-
-**Always** catch `Error` before `Exception`.
-
-#### Example
-
-```php
-try {
-    return random_int(1, $userInput);
-} catch (TypeError $e) {
-    // This is okay, so long as `Error` is caught before `Exception`.
-    throw new Exception('Please enter a number!');
-} catch (Error $e) {
-    // This is required, if you do not need to do anything just rethrow.
-    throw $e;
-} catch (Exception $e) {
-    // This is optional and maybe omitted if you do not want to handle errors
-    // during generation.
-    throw new InternalServerErrorException(
-        'Oops, our server is bust and cannot generate any random data.',
-        500,
-        $e
-    );
-}
-```
-
-## Contributors
-
-This project would not be anywhere near as excellent as it is today if it 
-weren't for the contributions of the following individuals:
-
-* [@AndrewCarterUK (Andrew Carter)](https://github.com/AndrewCarterUK)
-* [@asgrim (James Titcumb)](https://github.com/asgrim)
-* [@CodesInChaos (Christian Winnerlein)](https://github.com/CodesInChaos)
-* [@chriscct7 (Chris Christoff)](https://github.com/chriscct7)
-* [@cs278 (Chris Smith)](https://github.com/cs278)
-* [@cweagans (Cameron Eagans)](https://github.com/cweagans)
-* [@dd32 (Dion Hulse)](https://github.com/dd32)
-* [@geggleto (Glenn Eggleton)](https://github.com/geggleto)
-* [@ircmaxell (Anthony Ferrara)](https://github.com/ircmaxell)
-* [@jedisct1 (Frank Denis)](https://github.com/jedisct1)
-* [@juliangut (Julián Gutiérrez)](https://github.com/juliangut)
-* [@kelunik (Niklas Keller)](https://github.com/kelunik)
-* [@lt (Leigh)](https://github.com/lt)
-* [@MasonM (Mason Malone)](https://github.com/MasonM)
-* [@mmeyer2k (Michael M)](https://github.com/mmeyer2k)
-* [@narfbg (Andrey Andreev)](https://github.com/narfbg)
-* [@nicolas-grekas (Nicolas Grekas)](https://github.com/nicolas-grekas)
-* [@oittaa](https://github.com/oittaa)
-* [@redragonx (Stephen Chavez)](https://github.com/redragonx)
-* [@rchouinard (Ryan Chouinard)](https://github.com/rchouinard)
-* [@SammyK (Sammy Kaye Powers)](https://github.com/SammyK)
-* [@scottchiefbaker (Scott Baker)](https://github.com/scottchiefbaker)
-* [@skyosev (Stoyan Kyosev)](https://github.com/skyosev)
-* [@stof (Christophe Coevoet)](https://github.com/stof)
-* [@teohhanhui (Teoh Han Hui)](https://github.com/teohhanhui)
-* [@tom-- (Tom Worster)](https://github.com/tom--)
-* [@tsyr2ko](https://github.com/tsyr2ko)
-* [@trowski (Aaron Piotrowski)](https://github.com/trowski)
-* [@twistor (Chris Lepannen)](https://github.com/twistor)
-* [@voku (Lars Moelleken)](https://github.com/voku)
-* [@xabbuh (Christian Flothmann)](https://github.com/xabbuh)
diff --git a/vendor/paragonie/random_compat/SECURITY.md b/vendor/paragonie/random_compat/SECURITY.md
deleted file mode 100644
index 8f731b3..0000000
--- a/vendor/paragonie/random_compat/SECURITY.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# An Invitation to Security Researchers
-
-Every company says they take security "very seriously." Rather than bore anyone 
-with banal boilerplate, here are some quick answers followed by detailed
-elaboration. If you have any questions about our policies, please email them to
-`scott@paragonie.com`.
-
-## Quick Answers
-
-* There is no compulsion to disclose vulnerabilities privately, but we 
-  appreciate a head's up.
-* `security@paragonie.com` will get your reports to the right person. Our GPG 
-  fingerprint, should you decide to encrypt your report, is 
-  `7F52 D5C6 1D12 55C7 3136  2E82 6B97 A1C2 8264 04DA`.
-
-* **YES**, we will reward security researchers who disclose vulnerabilities in
-  our software.
-* In most cases, **No Proof-of-Concept Required.**
-
-## How to Report a Security Bug to Paragon Initiative Enterprises
-
-### There is no compulsion to disclose privately.
-
-We believe vulnerability disclosure style is a personal choice and enjoy working
-with a diverse community. We understand and appreciate the importance of Full 
-Disclosure in the history and practice of security research.
-
-We would *like* to know about high-severity bugs before they become public
-knowledge, so we can fix them in a timely manner, but **we do not believe in 
-threatening researchers or trying to enforce vulnerability embargoes**.
-
-Ultimately, if you discover a security-affecting vulnerability, what you do with
-it is your choice. We would like to work with people, and to celebrate and 
-reward their skill, experience, and dedication. We appreciate being informed of
-our mistakes so we can learn from them and build a better product. Our goal is
-to empower the community.
-
-### Where to Send Security Vulnerabilities
-
-Our security email address is `security@paragonie.com`. Also feel free to open a
-new issue on Github if you want to disclose publicly.
-
-```
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG
-
-mQENBFUgwRUBCADcIpqNwyYc5UmY/tpx1sF/rQ3knR1YNXYZThzFV+Gmqhp1fDH5
-qBs9foh1xwI6O7knWmQngnf/nBumI3x6xj7PuOdEZUh2FwCG/VWnglW8rKmoHzHA
-ivjiu9SLnPIPAgHSHeh2XD7q3Ndm3nenbjAiRFNl2iXcwA2cTQp9Mmfw9vVcw0G0
-z1o0G3s8cC8ZS6flFySIervvfSRWj7A1acI5eE3+AH/qXJRdEJ+9J8OB65p1JMfk
-6+fWgOB1XZxMpz70S0rW6IX38WDSRhEK2fXyZJAJjyt+YGuzjZySNSoQR/V6vNYn
-syrNPCJ2i5CgZQxAkyBBcr7koV9RIhPRzct/ABEBAAG0IVNlY3VyaXR5IDxzZWN1
-cml0eUBwYXJhZ29uaWUuY29tPokBOQQTAQIAIwUCVSDBFQIbAwcLCQgHAwIBBhUI
-AgkKCwQWAgMBAh4BAheAAAoJEGuXocKCZATat2YIAIoejNFEQ2c1iaOEtSuB7Pn/
-WLbsDsHNLDKOV+UnfaCjv/vL7D+5NMChFCi2frde/NQb2TsjqmIH+V+XbnJtlrXD
-Vj7yvMVal+Jqjwj7v4eOEWcKVcFZk+9cfUgh7t92T2BMX58RpgZF0IQZ6Z1R3FfC
-9Ub4X6ykW+te1q0/4CoRycniwmlQi6iGSr99LQ5pfJq2Qlmz/luTZ0UX0h575T7d
-cp2T1sX/zFRk/fHeANWSksipdDBjAXR7NMnYZgw2HghEdFk/xRDY7K1NRWNZBf05
-WrMHmh6AIVJiWZvI175URxEe268hh+wThBhXQHMhFNJM1qPIuzb4WogxM3UUD7m5
-AQ0EVSDBFQEIALNkpzSuJsHAHh79sc0AYWztdUe2MzyofQbbOnOCpWZebYsC3EXU
-335fIg59k0m6f+O7GmEZzzIv5v0i99GS1R8CJm6FvhGqtH8ZqmOGbc71WdJSiNVE
-0kpQoJlVzRbig6ZyyjzrggbM1eh5OXOk5pw4+23FFEdw7JWU0HJS2o71r1hwp05Z
-vy21kcUEobz/WWQQyGS0Neo7PJn+9KS6wOxXul/UE0jct/5f7KLMdWMJ1VgniQmm
-hjvkHLPSICteqCI04RfcmMseW9gueHQXeUu1SNIvsWa2MhxjeBej3pDnrZWszKwy
-gF45GO9/v4tkIXNMy5J1AtOyRgQ3IUMqp8EAEQEAAYkBHwQYAQIACQUCVSDBFQIb
-DAAKCRBrl6HCgmQE2jnIB/4/xFz8InpM7eybnBOAir3uGcYfs3DOmaKn7qWVtGzv
-rKpQPYnVtlU2i6Z5UO4c4jDLT/8Xm1UDz3Lxvqt4xCaDwJvBZexU5BMK8l5DvOzH
-6o6P2L1UDu6BvmPXpVZz7/qUhOnyf8VQg/dAtYF4/ax19giNUpI5j5o5mX5w80Rx
-qSXV9NdSL4fdjeG1g/xXv2luhoV53T1bsycI3wjk/x5tV+M2KVhZBvvuOm/zhJje
-oLWp0saaESkGXIXqurj6gZoujJvSvzl0n9F9VwqMEizDUfrXgtD1siQGhP0sVC6q
-ha+F/SAEJ0jEquM4TfKWWU2S5V5vgPPpIQSYRnhQW4b1
-=xJPW
------END PGP PUBLIC KEY BLOCK-----
-```
-
-### We Will Reward Security Researchers
-
-**This process has not been formalized; nor have dollar amounts been 
-discussed.**
-
-However, if you report a valid security-affecting bug, we will compensate you
-for the time spent finding the vulnerability and reward you for being a good
-neighbor.
-
-#### What does a "valid" bug mean?
-
-There are two sides to this:
-
-1. Some have spammed projects with invalid bug reports hoping to collect
-   bounties for pressing a button and running an automated analysis tool. This
-   is not cool.
-2. There is a potential for the developers of a project to declare all security
-   bug reports as invalid to save money.
-
-Our team members have an established history of reporting vulnerabilities to
-large open source projects. **We aren't in the business of ripping people off.**
-When in doubt, our policy is to err on the side of generosity.
-
-### No Proof-of-Concept Required
-
-We might ask for one if we feel we do not understand some of the details 
-pertaining to a specific vulnerability. We certainly appreciate them if you 
-include them in your report, but we believe **the burden lies with the developer
-to prove their software *is* secure** rather than with the researcher to prove
-that it isn't.
-
-In our experience, most bugs are simpler to fix than they are to exploit.
-
diff --git a/vendor/paragonie/random_compat/composer.json b/vendor/paragonie/random_compat/composer.json
deleted file mode 100644
index d363f4c..0000000
--- a/vendor/paragonie/random_compat/composer.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "name":         "paragonie/random_compat",
-    "description":  "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
-    "keywords": [
-            "csprng",
-            "random",
-            "pseudorandom"
-        ],
-    "license":      "MIT",
-    "type":         "library",
-    "authors": [
-            {
-                "name":     "Paragon Initiative Enterprises",
-                "email":    "security@paragonie.com",
-                "homepage": "https://paragonie.com"
-            }
-        ],
-    "support": {
-        "issues":   "https://github.com/paragonie/random_compat/issues",
-        "email":    "info@paragonie.com",
-        "source":   "https://github.com/paragonie/random_compat"
-    },
-    "require": {
-        "php": ">=5.2.0"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "4.*|5.*"
-    },
-    "suggest": {
-        "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
-    },
-    "autoload": {
-        "files": ["lib/random.php"]
-    }
-}
diff --git a/vendor/paragonie/random_compat/lib/byte_safe_strings.php b/vendor/paragonie/random_compat/lib/byte_safe_strings.php
deleted file mode 100644
index a3cc90b..0000000
--- a/vendor/paragonie/random_compat/lib/byte_safe_strings.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library
- * for using the new PHP 7 random_* API in PHP 5 projects
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2015 Paragon Initiative Enterprises
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-if (!function_exists('RandomCompat_strlen')) {
-    if (
-        defined('MB_OVERLOAD_STRING') &&
-        ini_get('mbstring.func_overload') & MB_OVERLOAD_STRING
-    ) {
-        /**
-         * strlen() implementation that isn't brittle to mbstring.func_overload
-         *
-         * This version uses mb_strlen() in '8bit' mode to treat strings as raw
-         * binary rather than UTF-8, ISO-8859-1, etc
-         *
-         * @param string $binary_string
-         *
-         * @throws TypeError
-         *
-         * @return int
-         */
-        function RandomCompat_strlen($binary_string)
-        {
-            if (!is_string($binary_string)) {
-                throw new TypeError(
-                    'RandomCompat_strlen() expects a string'
-                );
-            }
-            return mb_strlen($binary_string, '8bit');
-        }
-    } else {
-        /**
-         * strlen() implementation that isn't brittle to mbstring.func_overload
-         *
-         * This version just used the default strlen()
-         *
-         * @param string $binary_string
-         *
-         * @throws TypeError
-         *
-         * @return int
-         */
-        function RandomCompat_strlen($binary_string)
-        {
-            if (!is_string($binary_string)) {
-                throw new TypeError(
-                    'RandomCompat_strlen() expects a string'
-                );
-            }
-            return strlen($binary_string);
-        }
-    }
-}
-
-if (!function_exists('RandomCompat_substr')) {
-    if (
-        defined('MB_OVERLOAD_STRING') &&
-        ini_get('mbstring.func_overload') & MB_OVERLOAD_STRING
-    ) {
-        /**
-         * substr() implementation that isn't brittle to mbstring.func_overload
-         *
-         * This version uses mb_substr() in '8bit' mode to treat strings as raw
-         * binary rather than UTF-8, ISO-8859-1, etc
-         *
-         * @param string $binary_string
-         * @param int $start
-         * @param int $length (optional)
-         *
-         * @throws TypeError
-         *
-         * @return string
-         */
-        function RandomCompat_substr($binary_string, $start, $length = null)
-        {
-            if (!is_string($binary_string)) {
-                throw new TypeError(
-                    'RandomCompat_substr(): First argument should be a string'
-                );
-            }
-            if (!is_int($start)) {
-                throw new TypeError(
-                    'RandomCompat_substr(): Second argument should be an integer'
-                );
-            }
-            if ($length === null) {
-                /**
-                 * mb_substr($str, 0, NULL, '8bit') returns an empty string on
-                 * PHP 5.3, so we have to find the length ourselves.
-                 */
-                $length = RandomCompat_strlen($length) - $start;
-            } elseif (!is_int($length)) {
-                throw new TypeError(
-                    'RandomCompat_substr(): Third argument should be an integer, or omitted'
-                );
-            }
-            return mb_substr($binary_string, $start, $length, '8bit');
-        }
-    } else {
-        /**
-         * substr() implementation that isn't brittle to mbstring.func_overload
-         *
-         * This version just uses the default substr()
-         *
-         * @param string $binary_string
-         * @param int $start
-         * @param int $length (optional)
-         *
-         * @throws TypeError
-         *
-         * @return string
-         */
-        function RandomCompat_substr($binary_string, $start, $length = null)
-        {
-            if (!is_string($binary_string)) {
-                throw new TypeError(
-                    'RandomCompat_substr(): First argument should be a string'
-                );
-            }
-            if (!is_int($start)) {
-                throw new TypeError(
-                    'RandomCompat_substr(): Second argument should be an integer'
-                );
-            }
-            if ($length !== null) {
-                if (!is_int($length)) {
-                    throw new TypeError(
-                        'RandomCompat_substr(): Third argument should be an integer, or omitted'
-                    );
-                }
-                return substr($binary_string, $start, $length);
-            }
-            return substr($binary_string, $start);
-        }
-    }
-}
diff --git a/vendor/paragonie/random_compat/lib/cast_to_int.php b/vendor/paragonie/random_compat/lib/cast_to_int.php
deleted file mode 100644
index 474ce64..0000000
--- a/vendor/paragonie/random_compat/lib/cast_to_int.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library
- * for using the new PHP 7 random_* API in PHP 5 projects
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2015 Paragon Initiative Enterprises
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-if (!function_exists('RandomCompat_intval')) {
-    
-    /**
-     * Cast to an integer if we can, safely.
-     * 
-     * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
-     * (non-inclusive), it will sanely cast it to an int. If you it's equal to
-     * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats 
-     * lose precision, so the <= and => operators might accidentally let a float
-     * through.
-     * 
-     * @param numeric $number The number we want to convert to an int
-     * @param boolean $fail_open Set to true to not throw an exception
-     * 
-     * @return int (or float if $fail_open)
-     */
-    function RandomCompat_intval($number, $fail_open = false)
-    {
-        if (is_numeric($number)) {
-            $number += 0;
-        }
-        if (
-            is_float($number) &&
-            $number > ~PHP_INT_MAX &&
-            $number < PHP_INT_MAX
-        ) {
-            $number = (int) $number;
-        }
-        if (is_int($number) || $fail_open) {
-            return $number;
-        }
-        throw new TypeError(
-            'Expected an integer.'
-        );
-    }
-}
diff --git a/vendor/paragonie/random_compat/lib/error_polyfill.php b/vendor/paragonie/random_compat/lib/error_polyfill.php
deleted file mode 100644
index 57cfefd..0000000
--- a/vendor/paragonie/random_compat/lib/error_polyfill.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-if (!class_exists('Error', false)) {
-    // We can't really avoid making this extend Exception in PHP 5.
-    class Error extends Exception
-    {
-        
-    }
-}
-
-if (!class_exists('TypeError', false)) {
-    class TypeError extends Error
-    {
-        
-    }
-}
diff --git a/vendor/paragonie/random_compat/lib/random.php b/vendor/paragonie/random_compat/lib/random.php
deleted file mode 100644
index d1f7555..0000000
--- a/vendor/paragonie/random_compat/lib/random.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-if (!defined('PHP_VERSION_ID')) {
-    // This constant was introduced in PHP 5.2.7
-    $RandomCompatversion = explode('.', PHP_VERSION);
-    define('PHP_VERSION_ID', ($RandomCompatversion[0] * 10000 + $RandomCompatversion[1] * 100 + $RandomCompatversion[2]));
-    $RandomCompatversion = null;
-}
-if (PHP_VERSION_ID < 70000) {
-    if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
-        define('RANDOM_COMPAT_READ_BUFFER', 8);
-    }
-    $RandomCompatDIR = dirname(__FILE__);
-    require_once $RandomCompatDIR.'/byte_safe_strings.php';
-    require_once $RandomCompatDIR.'/cast_to_int.php';
-    require_once $RandomCompatDIR.'/error_polyfill.php';
-    if (!function_exists('random_bytes')) {
-        /**
-         * PHP 5.2.0 - 5.6.x way to implement random_bytes()
-         * 
-         * We use conditional statements here to define the function in accordance
-         * to the operating environment. It's a micro-optimization.
-         * 
-         * In order of preference:
-         *   1. Use libsodium if available.
-         *   2. fread() /dev/urandom if available (never on Windows)
-         *   3. mcrypt_create_iv($bytes, MCRYPT_CREATE_IV)
-         *   4. COM('CAPICOM.Utilities.1')->GetRandom()
-         *   5. openssl_random_pseudo_bytes() (absolute last resort)
-         * 
-         * See ERRATA.md for our reasoning behind this particular order
-         */
-        if (extension_loaded('libsodium')) {
-            // See random_bytes_libsodium.php
-            require_once $RandomCompatDIR.'/random_bytes_libsodium.php';
-        }
-        if (
-            !function_exists('random_bytes') && 
-            DIRECTORY_SEPARATOR === '/' &&
-            @is_readable('/dev/urandom')
-        ) {
-            // DIRECTORY_SEPARATOR === '/' on Unix-like OSes -- this is a fast
-            // way to exclude Windows.
-            // 
-            // Error suppression on is_readable() in case of an open_basedir or 
-            // safe_mode failure. All we care about is whether or not we can 
-            // read it at this point. If the PHP environment is going to panic 
-            // over trying to see if the file can be read in the first place,
-            // that is not helpful to us here.
-            
-            // See random_bytes_dev_urandom.php
-            require_once $RandomCompatDIR.'/random_bytes_dev_urandom.php';
-        }
-        if (
-            !function_exists('random_bytes') &&
-            PHP_VERSION_ID >= 50307 &&
-            extension_loaded('mcrypt')
-        ) {
-            // See random_bytes_mcrypt.php
-            require_once $RandomCompatDIR.'/random_bytes_mcrypt.php';
-        }
-        if (
-            !function_exists('random_bytes') && 
-            extension_loaded('com_dotnet') &&
-            class_exists('COM')
-        ) {
-            try {
-                $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
-                if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
-                    // See random_bytes_com_dotnet.php
-                    require_once $RandomCompatDIR.'/random_bytes_com_dotnet.php';
-                }
-            } catch (com_exception $e) {
-                // Don't try to use it.
-            }
-            $RandomCompatCOMtest = null;
-        }
-        if (
-            !function_exists('random_bytes') && 
-            extension_loaded('openssl') &&
-            (
-                // Unix-like with PHP >= 5.3.0 or
-                (
-                    DIRECTORY_SEPARATOR === '/' &&
-                    PHP_VERSION_ID >= 50300
-                ) ||
-                // Windows with PHP >= 5.4.1
-                PHP_VERSION_ID >= 50401
-            )
-        ) {
-            // See random_bytes_openssl.php
-            require_once $RandomCompatDIR.'/random_bytes_openssl.php';
-        }
-        if (!function_exists('random_bytes')) {
-            /**
-             * We don't have any more options, so let's throw an exception right now
-             * and hope the developer won't let it fail silently.
-             */
-            function random_bytes()
-            {
-                throw new Exception(
-                    'There is no suitable CSPRNG installed on your system'
-                );
-            }
-        }
-    }
-    if (!function_exists('random_int')) {
-        require_once $RandomCompatDIR.'/random_int.php';
-    }
-    $RandomCompatDIR = null;
-}
diff --git a/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php b/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php
deleted file mode 100644
index 0a781f4..0000000
--- a/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/**
- * Windows with PHP < 5.3.0 will not have the function
- * openssl_random_pseudo_bytes() available, so let's use
- * CAPICOM to work around this deficiency.
- * 
- * @param int $bytes
- * 
- * @throws Exception
- * 
- * @return string
- */
-function random_bytes($bytes)
-{
-    try {
-        $bytes = RandomCompat_intval($bytes);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_bytes(): $bytes must be an integer'
-        );
-    }
-    if ($bytes < 1) {
-        throw new Error(
-            'Length must be greater than 0'
-        );
-    }
-    $buf = '';
-    $util = new COM('CAPICOM.Utilities.1');
-    $execCount = 0;
-    /**
-     * Let's not let it loop forever. If we run N times and fail to
-     * get N bytes of random data, then CAPICOM has failed us.
-     */
-    do {
-        $buf .= base64_decode($util->GetRandom($bytes, 0));
-        if (RandomCompat_strlen($buf) >= $bytes) {
-            /**
-             * Return our random entropy buffer here:
-             */
-            return RandomCompat_substr($buf, 0, $bytes);
-        }
-        ++$execCount; 
-    } while ($execCount < $bytes);
-    /**
-     * If we reach here, PHP has failed us.
-     */
-    throw new Exception(
-        'Could not gather sufficient random data'
-    );
-}
diff --git a/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php b/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php
deleted file mode 100644
index 5d07104..0000000
--- a/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
-    define('RANDOM_COMPAT_READ_BUFFER', 8);
-}
-
-/**
- * Unless open_basedir is enabled, use /dev/urandom for
- * random numbers in accordance with best practices
- * 
- * Why we use /dev/urandom and not /dev/random
- * @ref http://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers
- * 
- * @param int $bytes
- * 
- * @throws Exception
- * 
- * @return string
- */
-function random_bytes($bytes)
-{
-    static $fp = null;
-    /**
-     * This block should only be run once
-     */
-    if (empty($fp)) {
-        /**
-         * We use /dev/urandom if it is a char device.
-         * We never fall back to /dev/random
-         */
-        $fp = fopen('/dev/urandom', 'rb');
-        if (!empty($fp)) {
-            $st = fstat($fp);
-            if (($st['mode'] & 0170000) !== 020000) {
-                fclose($fp);
-                $fp = false;
-            }
-        }
-        if (!empty($fp)) {
-            /**
-             * stream_set_read_buffer() does not exist in HHVM
-             * 
-             * If we don't set the stream's read buffer to 0, PHP will
-             * internally buffer 8192 bytes, which can waste entropy
-             * 
-             * stream_set_read_buffer returns 0 on success
-             */
-            if (function_exists('stream_set_read_buffer')) {
-                stream_set_read_buffer($fp, RANDOM_COMPAT_READ_BUFFER);
-            }
-            if (function_exists('stream_set_chunk_size')) {
-                stream_set_chunk_size($fp, RANDOM_COMPAT_READ_BUFFER);
-            }
-        }
-    }
-    try {
-        $bytes = RandomCompat_intval($bytes);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_bytes(): $bytes must be an integer'
-        );
-    }
-    if ($bytes < 1) {
-        throw new Error(
-            'Length must be greater than 0'
-        );
-    }
-    /**
-     * This if() block only runs if we managed to open a file handle
-     * 
-     * It does not belong in an else {} block, because the above 
-     * if (empty($fp)) line is logic that should only be run once per
-     * page load.
-     */
-    if (!empty($fp)) {
-        $remaining = $bytes;
-        $buf = '';
-        /**
-         * We use fread() in a loop to protect against partial reads
-         */
-        do {
-            $read = fread($fp, $remaining); 
-            if ($read === false) {
-                /**
-                 * We cannot safely read from the file. Exit the
-                 * do-while loop and trigger the exception condition
-                 */
-                $buf = false;
-                break;
-            }
-            /**
-             * Decrease the number of bytes returned from remaining
-             */
-            $remaining -= RandomCompat_strlen($read);
-            $buf .= $read;
-        } while ($remaining > 0);
-        
-        /**
-         * Is our result valid?
-         */
-        if ($buf !== false) {
-            if (RandomCompat_strlen($buf) === $bytes) {
-                /**
-                 * Return our random entropy buffer here:
-                 */
-                return $buf;
-            }
-        }
-    }
-    /**
-     * If we reach here, PHP has failed us.
-     */
-    throw new Exception(
-        'Error reading from source device'
-    );
-}
diff --git a/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php b/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php
deleted file mode 100644
index 938cac9..0000000
--- a/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/**
- * If the libsodium PHP extension is loaded, we'll use it above any other
- * solution.
- *
- * libsodium-php project:
- * @ref https://github.com/jedisct1/libsodium-php
- *
- * @param int $bytes
- *
- * @throws Exception
- *
- * @return string
- */
-function random_bytes($bytes)
-{
-    try {
-        $bytes = RandomCompat_intval($bytes);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_bytes(): $bytes must be an integer'
-        );
-    }
-    if ($bytes < 1) {
-        throw new Error(
-            'Length must be greater than 0'
-        );
-    }
-    /**
-     * \Sodium\randombytes_buf() doesn't allow more than 2147483647 bytes to be
-     * generated in one invocation.
-     */
-    if ($bytes > 2147483647) {
-        $buf = '';
-        for ($i = 0; $i < $bytes; $i += 1073741824) {
-            $n = ($bytes - $i) > 1073741824
-                ? 1073741824
-                : $bytes - $i;
-            $buf .= \Sodium\randombytes_buf($n);
-        }
-    } else {
-        $buf = \Sodium\randombytes_buf($bytes);
-    }
-
-    if ($buf !== false) {
-        if (RandomCompat_strlen($buf) === $bytes) {
-            return $buf;
-        }
-    }
-
-    /**
-     * If we reach here, PHP has failed us.
-     */
-    throw new Exception(
-        'Could not gather sufficient random data'
-    );
-}
diff --git a/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php b/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php
deleted file mode 100644
index 5a1b688..0000000
--- a/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-/**
- * Powered by ext/mcrypt (and thankfully NOT libmcrypt)
- * 
- * @ref https://bugs.php.net/bug.php?id=55169
- * @ref https://github.com/php/php-src/blob/c568ffe5171d942161fc8dda066bce844bdef676/ext/mcrypt/mcrypt.c#L1321-L1386
- * 
- * @param int $bytes
- * 
- * @throws Exception
- * 
- * @return string
- */
-function random_bytes($bytes)
-{
-    try {
-        $bytes = RandomCompat_intval($bytes);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_bytes(): $bytes must be an integer'
-        );
-    }
-    if ($bytes < 1) {
-        throw new Error(
-            'Length must be greater than 0'
-        );
-    }
-
-    $buf = @mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM);
-    if ($buf !== false) {
-        if (RandomCompat_strlen($buf) === $bytes) {
-            /**
-             * Return our random entropy buffer here:
-             */
-            return $buf;
-        }
-    }
-    /**
-     * If we reach here, PHP has failed us.
-     */
-    throw new Exception(
-        'Could not gather sufficient random data'
-    );
-}
diff --git a/vendor/paragonie/random_compat/lib/random_bytes_openssl.php b/vendor/paragonie/random_compat/lib/random_bytes_openssl.php
deleted file mode 100644
index 3e12d3d..0000000
--- a/vendor/paragonie/random_compat/lib/random_bytes_openssl.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/**
- * Since openssl_random_pseudo_bytes() uses openssl's 
- * RAND_pseudo_bytes() API, which has been marked as deprecated by the
- * OpenSSL team, this is our last resort before failure.
- * 
- * @ref https://www.openssl.org/docs/crypto/RAND_bytes.html
- * 
- * @param int $bytes
- * 
- * @throws Exception
- * 
- * @return string
- */
-function random_bytes($bytes)
-{
-    try {
-        $bytes = RandomCompat_intval($bytes);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_bytes(): $bytes must be an integer'
-        );
-    }
-    if ($bytes < 1) {
-        throw new Error(
-            'Length must be greater than 0'
-        );
-    }
-    $secure = true;
-    /**
-     * $secure is passed by reference. If it's set to false, fail. Note
-     * that this will only return false if this function fails to return
-     * any data.
-     * 
-     * @ref https://github.com/paragonie/random_compat/issues/6#issuecomment-119564973
-     */
-    $buf = openssl_random_pseudo_bytes($bytes, $secure);
-    if ($buf !== false && $secure) {
-        if (RandomCompat_strlen($buf) === $bytes) {
-            return $buf;
-        }
-    }
-    /**
-     * If we reach here, PHP has failed us.
-     */
-    throw new Exception(
-        'Could not gather sufficient random data'
-    );
-}
diff --git a/vendor/paragonie/random_compat/lib/random_int.php b/vendor/paragonie/random_compat/lib/random_int.php
deleted file mode 100644
index 6c91dbc..0000000
--- a/vendor/paragonie/random_compat/lib/random_int.php
+++ /dev/null
@@ -1,185 +0,0 @@
-<?php
-/**
- * Random_* Compatibility Library 
- * for using the new PHP 7 random_* API in PHP 5 projects
- * 
- * The MIT License (MIT)
- * 
- * Copyright (c) 2015 Paragon Initiative Enterprises
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/**
- * Fetch a random integer between $min and $max inclusive
- * 
- * @param int $min
- * @param int $max
- * 
- * @throws Exception
- * 
- * @return int
- */
-function random_int($min, $max)
-{
-    /**
-     * Type and input logic checks
-     * 
-     * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
-     * (non-inclusive), it will sanely cast it to an int. If you it's equal to
-     * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats 
-     * lose precision, so the <= and => operators might accidentally let a float
-     * through.
-     */
-    
-    try {
-        $min = RandomCompat_intval($min);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_int(): $min must be an integer'
-        );
-    }
-    try {
-        $max = RandomCompat_intval($max);
-    } catch (TypeError $ex) {
-        throw new TypeError(
-            'random_int(): $max must be an integer'
-        );
-    }
-    
-    /**
-     * Now that we've verified our weak typing system has given us an integer,
-     * let's validate the logic then we can move forward with generating random
-     * integers along a given range.
-     */
-    if ($min > $max) {
-        throw new Error(
-            'Minimum value must be less than or equal to the maximum value'
-        );
-    }
-    if ($max === $min) {
-        return $min;
-    }
-
-    /**
-     * Initialize variables to 0
-     * 
-     * We want to store:
-     * $bytes => the number of random bytes we need
-     * $mask => an integer bitmask (for use with the &) operator
-     *          so we can minimize the number of discards
-     */
-    $attempts = $bits = $bytes = $mask = $valueShift = 0;
-
-    /**
-     * At this point, $range is a positive number greater than 0. It might
-     * overflow, however, if $max - $min > PHP_INT_MAX. PHP will cast it to
-     * a float and we will lose some precision.
-     */
-    $range = $max - $min;
-
-    /**
-     * Test for integer overflow:
-     */
-    if (!is_int($range)) {
-        /**
-         * Still safely calculate wider ranges.
-         * Provided by @CodesInChaos, @oittaa
-         * 
-         * @ref https://gist.github.com/CodesInChaos/03f9ea0b58e8b2b8d435
-         * 
-         * We use ~0 as a mask in this case because it generates all 1s
-         * 
-         * @ref https://eval.in/400356 (32-bit)
-         * @ref http://3v4l.org/XX9r5  (64-bit)
-         */
-        $bytes = PHP_INT_SIZE;
-        $mask = ~0;
-    } else {
-        /**
-         * $bits is effectively ceil(log($range, 2)) without dealing with 
-         * type juggling
-         */
-        while ($range > 0) {
-            if ($bits % 8 === 0) {
-               ++$bytes;
-            }
-            ++$bits;
-            $range >>= 1;
-            $mask = $mask << 1 | 1;
-        }
-        $valueShift = $min;
-    }
-
-    /**
-     * Now that we have our parameters set up, let's begin generating
-     * random integers until one falls between $min and $max
-     */
-    do {
-        /**
-         * The rejection probability is at most 0.5, so this corresponds
-         * to a failure probability of 2^-128 for a working RNG
-         */
-        if ($attempts > 128) {
-            throw new Exception(
-                'random_int: RNG is broken - too many rejections'
-            );
-        }
-
-        /**
-         * Let's grab the necessary number of random bytes
-         */
-        $randomByteString = random_bytes($bytes);
-        if ($randomByteString === false) {
-            throw new Exception(
-                'Random number generator failure'
-            );
-        }
-
-        /**
-         * Let's turn $randomByteString into an integer
-         * 
-         * This uses bitwise operators (<< and |) to build an integer
-         * out of the values extracted from ord()
-         * 
-         * Example: [9F] | [6D] | [32] | [0C] =>
-         *   159 + 27904 + 3276800 + 201326592 =>
-         *   204631455
-         */
-        $val = 0;
-        for ($i = 0; $i < $bytes; ++$i) {
-            $val |= ord($randomByteString[$i]) << ($i * 8);
-        }
-
-        /**
-         * Apply mask
-         */
-        $val &= $mask;
-        $val += $valueShift;
-
-        ++$attempts;
-        /**
-         * If $val overflows to a floating point number,
-         * ... or is larger than $max,
-         * ... or smaller than $min,
-         * then try again.
-         */
-    } while (!is_int($val) || $val > $max || $val < $min);
-    return (int) $val;
-}
diff --git a/vendor/paragonie/random_compat/phpunit.sh b/vendor/paragonie/random_compat/phpunit.sh
deleted file mode 100755
index c4c6a9f..0000000
--- a/vendor/paragonie/random_compat/phpunit.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/env bash
-
-if [ "$1" == 'full' ]; then
-    fulltest=1
-elif [ "$1" == 'each' ]; then
-    testeach=1
-else
-    fulltest=0
-fi
-
-PHP_VERSION=$(php -r "echo PHP_VERSION_ID;")
-
-echo
-echo -e "\033[33mBegin Unit Testing\033[0m"
-# Run the testing suite
-echo "Basic test suite:"
-php vendor/bin/phpunit tests/unit
-if [ $? -ne 0 ]; then
-    # Test failure
-    exit 1
-fi
-echo "With open_basedir enabled:"
-php -d open_basedir=`pwd` vendor/bin/phpunit tests/unit
-if [ $? -ne 0 ]; then
-    # Test failure
-    exit 1
-fi
-echo "With open_basedir enabled, allowing /dev:"
-php -d open_basedir=`pwd`:/dev vendor/bin/phpunit tests/unit
-if [ $? -ne 0 ]; then
-    # Test failure
-    exit 1
-fi
-echo "With mbstring.func_overload enabled:"
-php -d mbstring.func_overload=7 vendor/bin/phpunit tests/unit
-if [ $? -ne 0 ]; then
-    # Test failure
-    exit 1
-fi
-
-if [[ "$testeach" == "1" ]]; then
-    echo "    CAPICOM:"
-    php vendor/bin/phpunit --bootstrap tests/specific/capicom.php tests/unit
-    echo "    /dev/urandom:"
-    php vendor/bin/phpunit --bootstrap tests/specific/dev_urandom.php tests/unit
-    echo "    libsodium:"
-    php vendor/bin/phpunit --bootstrap tests/specific/libsodium.php tests/unit
-    echo "    mcrypt:"
-    php vendor/bin/phpunit --bootstrap tests/specific/mcrypt.php tests/unit
-    echo "    openssl:"
-    php vendor/bin/phpunit --bootstrap tests/specific/openssl.php tests/unit
-fi
-
-# Should we perform full statistical analyses?
-if [[ "$fulltest" == "1" ]]; then
-    php vendor/bin/phpunit tests/full
-    if [ $? -ne 0 ]; then
-        # Test failure
-        exit 1
-    fi
-fi
-
diff --git a/vendor/paragonie/random_compat/phpunit.xml.dist b/vendor/paragonie/random_compat/phpunit.xml.dist
deleted file mode 100644
index b4697d3..0000000
--- a/vendor/paragonie/random_compat/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="true"
-         backupStaticAttributes="false"
-         bootstrap="lib/random.php"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         processIsolation="false"
-         stopOnError="false"
-         stopOnFailure="false"
-         syntaxCheck="true"
->
-    <testsuites>
-        <testsuite name="Unit">
-            <directory>tests/unit</directory>
-        </testsuite>
-    </testsuites>
-    <testsuites>
-        <testsuite name="Random Compat Test Suite">
-            <directory suffix="Test.php">./tests/unit</directory>
-        </testsuite>
-    </testsuites>
-    <filter>
-        <whitelist processUncoveredFilesFromWhitelist="true">
-            <directory suffix=".php">./lib</directory>
-        </whitelist>
-    </filter>
-</phpunit>
\ No newline at end of file
diff --git a/vendor/phpdocumentor/reflection-docblock/.gitignore b/vendor/phpdocumentor/reflection-docblock/.gitignore
deleted file mode 100644
index 3ce5adb..0000000
--- a/vendor/phpdocumentor/reflection-docblock/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-.idea
-vendor
diff --git a/vendor/phpdocumentor/reflection-docblock/.travis.yml b/vendor/phpdocumentor/reflection-docblock/.travis.yml
deleted file mode 100644
index eef782c..0000000
--- a/vendor/phpdocumentor/reflection-docblock/.travis.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-language: php
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-  - hhvm-nightly
-
-matrix:
-    allow_failures:
-        - php: hhvm
-        - php: hhvm-nightly
-
-script:
- - vendor/bin/phpunit
-
-before_script:
- - sudo apt-get -qq update > /dev/null
- - phpenv rehash > /dev/null
- - composer selfupdate --quiet
- - composer install --no-interaction --prefer-source --dev
- - vendor/bin/phpunit
- - composer update --no-interaction --prefer-source --dev
-
-notifications:
-  irc: "irc.freenode.org#phpdocumentor"
-  email:
-    - mike.vanriel@naenius.com
-    - ashnazg@php.net
-    - boen.robot@gmail.com
diff --git a/vendor/phpdocumentor/reflection-docblock/LICENSE b/vendor/phpdocumentor/reflection-docblock/LICENSE
deleted file mode 100644
index 792e404..0000000
--- a/vendor/phpdocumentor/reflection-docblock/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2010 Mike van Riel
-
-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/phpdocumentor/reflection-docblock/README.md b/vendor/phpdocumentor/reflection-docblock/README.md
deleted file mode 100644
index 6405d1a..0000000
--- a/vendor/phpdocumentor/reflection-docblock/README.md
+++ /dev/null
@@ -1,57 +0,0 @@
-The ReflectionDocBlock Component [![Build Status](https://secure.travis-ci.org/phpDocumentor/ReflectionDocBlock.png)](https://travis-ci.org/phpDocumentor/ReflectionDocBlock)
-================================
-
-Introduction
-------------
-
-The ReflectionDocBlock component of phpDocumentor provides a DocBlock parser
-that is 100% compatible with the [PHPDoc standard](http://phpdoc.org/docs/latest).
-
-With this component, a library can provide support for annotations via DocBlocks
-or otherwise retrieve information that is embedded in a DocBlock.
-
-> **Note**: *this is a core component of phpDocumentor and is constantly being
-> optimized for performance.*
-
-Installation
-------------
-
-You can install the component in the following ways:
-
-* Use the official Github repository (https://github.com/phpDocumentor/ReflectionDocBlock)
-* Via Composer (http://packagist.org/packages/phpdocumentor/reflection-docblock)
-
-Usage
------
-
-The ReflectionDocBlock component is designed to work in an identical fashion to
-PHP's own Reflection extension (http://php.net/manual/en/book.reflection.php).
-
-Parsing can be initiated by instantiating the
-`\phpDocumentor\Reflection\DocBlock()` class and passing it a string containing
-a DocBlock (including asterisks) or by passing an object supporting the
-`getDocComment()` method.
-
-> *Examples of objects having the `getDocComment()` method are the
-> `ReflectionClass` and the `ReflectionMethod` classes of the PHP
-> Reflection extension*
-
-Example:
-
-    $class = new ReflectionClass('MyClass');
-    $phpdoc = new \phpDocumentor\Reflection\DocBlock($class);
-
-or
-
-    $docblock = <<<DOCBLOCK
-    /**
-     * This is a short description.
-     *
-     * This is a *long* description.
-     *
-     * @return void
-     */
-    DOCBLOCK;
-
-    $phpdoc = new \phpDocumentor\Reflection\DocBlock($docblock);
-
diff --git a/vendor/phpdocumentor/reflection-docblock/composer.json b/vendor/phpdocumentor/reflection-docblock/composer.json
deleted file mode 100644
index 4dffa22..0000000
--- a/vendor/phpdocumentor/reflection-docblock/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "name":    "phpdocumentor/reflection-docblock",
-    "type":    "library",
-    "license": "MIT",
-    "authors": [
-        {"name": "Mike van Riel", "email": "mike.vanriel@naenius.com"}
-    ],
-    "require": {
-        "php": ">=5.3.3"
-    },
-    "autoload": {
-        "psr-0": {"phpDocumentor": ["src/"]}
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.0"
-    },
-    "suggest": {
-        "dflydev/markdown": "~1.0",
-        "erusev/parsedown": "~1.0"
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.0.x-dev"
-        }
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/composer.lock b/vendor/phpdocumentor/reflection-docblock/composer.lock
deleted file mode 100644
index 4c6a8bb..0000000
--- a/vendor/phpdocumentor/reflection-docblock/composer.lock
+++ /dev/null
@@ -1,827 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
-        "This file is @generated automatically"
-    ],
-    "hash": "ea1734d11b8c878445c2c6e58de8b85f",
-    "packages": [],
-    "packages-dev": [
-        {
-            "name": "ocramius/instantiator",
-            "version": "1.1.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Ocramius/Instantiator.git",
-                "reference": "a7abbb5fc9df6e7126af741dd6c140d1a7369435"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Ocramius/Instantiator/zipball/a7abbb5fc9df6e7126af741dd6c140d1a7369435",
-                "reference": "a7abbb5fc9df6e7126af741dd6c140d1a7369435",
-                "shasum": ""
-            },
-            "require": {
-                "ocramius/lazy-map": "1.0.*",
-                "php": "~5.3"
-            },
-            "require-dev": {
-                "athletic/athletic": "~0.1.8",
-                "ext-pdo": "*",
-                "ext-phar": "*",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "2.0.*@ALPHA"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Instantiator\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com",
-                    "homepage": "http://ocramius.github.com/"
-                }
-            ],
-            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/Ocramius/Instantiator",
-            "keywords": [
-                "constructor",
-                "instantiate"
-            ],
-            "time": "2014-08-14 15:10:55"
-        },
-        {
-            "name": "ocramius/lazy-map",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Ocramius/LazyMap.git",
-                "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Ocramius/LazyMap/zipball/7fe3d347f5e618bcea7d39345ff83f3651d8b752",
-                "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "athletic/athletic": "~0.1.6",
-                "phpmd/phpmd": "1.5.*",
-                "phpunit/phpunit": ">=3.7",
-                "satooshi/php-coveralls": "~0.6",
-                "squizlabs/php_codesniffer": "1.4.*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "LazyMap\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com",
-                    "homepage": "http://ocramius.github.com/",
-                    "role": "Developer"
-                }
-            ],
-            "description": "A library that provides lazy instantiation logic for a map of objects",
-            "homepage": "https://github.com/Ocramius/LazyMap",
-            "keywords": [
-                "lazy",
-                "lazy instantiation",
-                "lazy loading",
-                "map",
-                "service location"
-            ],
-            "time": "2013-11-09 22:30:54"
-        },
-        {
-            "name": "phpunit/php-code-coverage",
-            "version": "2.0.10",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "6d196af48e8c100a3ae881940123e693da5a9217"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6d196af48e8c100a3ae881940123e693da5a9217",
-                "reference": "6d196af48e8c100a3ae881940123e693da5a9217",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "phpunit/php-file-iterator": "~1.3.1",
-                "phpunit/php-text-template": "~1.2.0",
-                "phpunit/php-token-stream": "~1.2.2",
-                "sebastian/environment": "~1.0.0",
-                "sebastian/version": "~1.0.3"
-            },
-            "require-dev": {
-                "ext-xdebug": ">=2.1.4",
-                "phpunit/phpunit": "~4.0.14"
-            },
-            "suggest": {
-                "ext-dom": "*",
-                "ext-xdebug": ">=2.2.1",
-                "ext-xmlwriter": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "include-path": [
-                ""
-            ],
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
-            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
-            "keywords": [
-                "coverage",
-                "testing",
-                "xunit"
-            ],
-            "time": "2014-08-06 06:39:42"
-        },
-        {
-            "name": "phpunit/php-file-iterator",
-            "version": "1.3.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-                "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb",
-                "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "File/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "include-path": [
-                ""
-            ],
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
-            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
-            "keywords": [
-                "filesystem",
-                "iterator"
-            ],
-            "time": "2013-10-10 15:34:57"
-        },
-        {
-            "name": "phpunit/php-text-template",
-            "version": "1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-text-template.git",
-                "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
-                "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "Text/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "include-path": [
-                ""
-            ],
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Simple template engine.",
-            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
-            "keywords": [
-                "template"
-            ],
-            "time": "2014-01-30 17:20:04"
-        },
-        {
-            "name": "phpunit/php-timer",
-            "version": "1.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
-                "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "PHP/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "include-path": [
-                ""
-            ],
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Utility class for timing",
-            "homepage": "https://github.com/sebastianbergmann/php-timer/",
-            "keywords": [
-                "timer"
-            ],
-            "time": "2013-08-02 07:42:54"
-        },
-        {
-            "name": "phpunit/php-token-stream",
-            "version": "1.2.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-                "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32",
-                "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32",
-                "shasum": ""
-            },
-            "require": {
-                "ext-tokenizer": "*",
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.2-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "PHP/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "include-path": [
-                ""
-            ],
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Wrapper around PHP's tokenizer extension.",
-            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
-            "keywords": [
-                "tokenizer"
-            ],
-            "time": "2014-03-03 05:10:30"
-        },
-        {
-            "name": "phpunit/phpunit",
-            "version": "4.2.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "a33fa68ece9f8c68589bfc2da8d2794e27b820bc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a33fa68ece9f8c68589bfc2da8d2794e27b820bc",
-                "reference": "a33fa68ece9f8c68589bfc2da8d2794e27b820bc",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-json": "*",
-                "ext-pcre": "*",
-                "ext-reflection": "*",
-                "ext-spl": "*",
-                "php": ">=5.3.3",
-                "phpunit/php-code-coverage": "~2.0",
-                "phpunit/php-file-iterator": "~1.3.1",
-                "phpunit/php-text-template": "~1.2",
-                "phpunit/php-timer": "~1.0.2",
-                "phpunit/phpunit-mock-objects": "~2.2",
-                "sebastian/comparator": "~1.0",
-                "sebastian/diff": "~1.1",
-                "sebastian/environment": "~1.0",
-                "sebastian/exporter": "~1.0",
-                "sebastian/version": "~1.0",
-                "symfony/yaml": "~2.0"
-            },
-            "suggest": {
-                "phpunit/php-invoker": "~1.1"
-            },
-            "bin": [
-                "phpunit"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "include-path": [
-                "",
-                "../../symfony/yaml/"
-            ],
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "The PHP Unit Testing framework.",
-            "homepage": "http://www.phpunit.de/",
-            "keywords": [
-                "phpunit",
-                "testing",
-                "xunit"
-            ],
-            "time": "2014-08-18 05:12:30"
-        },
-        {
-            "name": "phpunit/phpunit-mock-objects",
-            "version": "2.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-                "reference": "42e589e08bc86e3e9bdf20d385e948347788505b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/42e589e08bc86e3e9bdf20d385e948347788505b",
-                "reference": "42e589e08bc86e3e9bdf20d385e948347788505b",
-                "shasum": ""
-            },
-            "require": {
-                "ocramius/instantiator": "~1.0",
-                "php": ">=5.3.3",
-                "phpunit/php-text-template": "~1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "4.2.*@dev"
-            },
-            "suggest": {
-                "ext-soap": "*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "include-path": [
-                ""
-            ],
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Mock Object library for PHPUnit",
-            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
-            "keywords": [
-                "mock",
-                "xunit"
-            ],
-            "time": "2014-08-02 13:50:58"
-        },
-        {
-            "name": "sebastian/comparator",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2",
-                "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "sebastian/diff": "~1.1",
-                "sebastian/exporter": "~1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                },
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                }
-            ],
-            "description": "Provides the functionality to compare PHP values for equality",
-            "homepage": "http://www.github.com/sebastianbergmann/comparator",
-            "keywords": [
-                "comparator",
-                "compare",
-                "equality"
-            ],
-            "time": "2014-05-02 07:05:58"
-        },
-        {
-            "name": "sebastian/diff",
-            "version": "1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d",
-                "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                },
-                {
-                    "name": "Kore Nordmann",
-                    "email": "mail@kore-nordmann.de"
-                }
-            ],
-            "description": "Diff implementation",
-            "homepage": "http://www.github.com/sebastianbergmann/diff",
-            "keywords": [
-                "diff"
-            ],
-            "time": "2013-08-03 16:46:33"
-        },
-        {
-            "name": "sebastian/environment",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/79517609ec01139cd7e9fded0dd7ce08c952ef6a",
-                "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "4.0.*@dev"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Provides functionality to handle HHVM/PHP environments",
-            "homepage": "http://www.github.com/sebastianbergmann/environment",
-            "keywords": [
-                "Xdebug",
-                "environment",
-                "hhvm"
-            ],
-            "time": "2014-02-18 16:17:19"
-        },
-        {
-            "name": "sebastian/exporter",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529",
-                "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "4.0.*@dev"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                },
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net",
-                    "role": "Lead"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                }
-            ],
-            "description": "Provides the functionality to export PHP variables for visualization",
-            "homepage": "http://www.github.com/sebastianbergmann/exporter",
-            "keywords": [
-                "export",
-                "exporter"
-            ],
-            "time": "2014-02-16 08:26:31"
-        },
-        {
-            "name": "sebastian/version",
-            "version": "1.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/version.git",
-                "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
-                "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
-                "shasum": ""
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
-                }
-            ],
-            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-            "homepage": "https://github.com/sebastianbergmann/version",
-            "time": "2014-03-07 15:35:33"
-        },
-        {
-            "name": "symfony/yaml",
-            "version": "v2.5.3",
-            "target-dir": "Symfony/Component/Yaml",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Yaml.git",
-                "reference": "5a75366ae9ca8b4792cd0083e4ca4dff9fe96f1f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Yaml/zipball/5a75366ae9ca8b4792cd0083e4ca4dff9fe96f1f",
-                "reference": "5a75366ae9ca8b4792cd0083e4ca4dff9fe96f1f",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.5-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Symfony\\Component\\Yaml\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "http://symfony.com/contributors"
-                },
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                }
-            ],
-            "description": "Symfony Yaml Component",
-            "homepage": "http://symfony.com",
-            "time": "2014-08-05 09:00:40"
-        }
-    ],
-    "aliases": [],
-    "minimum-stability": "stable",
-    "stability-flags": [],
-    "prefer-stable": false,
-    "platform": {
-        "php": ">=5.3.3"
-    },
-    "platform-dev": []
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist b/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist
deleted file mode 100644
index f67ad2a..0000000
--- a/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<phpunit colors="true" strict="true" bootstrap="vendor/autoload.php">
-  <testsuites>
-    <testsuite name="phpDocumentor\Reflection\DocBlock">
-      <directory>./tests/</directory>
-    </testsuite>
-  </testsuites>
-  <filter>
-    <whitelist>
-        <directory suffix=".php">./src/</directory>
-    </whitelist>
-  </filter>
-</phpunit>
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock.php
deleted file mode 100644
index 02968b1..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock.php
+++ /dev/null
@@ -1,468 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection;
-
-use phpDocumentor\Reflection\DocBlock\Tag;
-use phpDocumentor\Reflection\DocBlock\Context;
-use phpDocumentor\Reflection\DocBlock\Location;
-
-/**
- * Parses the DocBlock for any structure.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class DocBlock implements \Reflector
-{
-    /** @var string The opening line for this docblock. */
-    protected $short_description = '';
-
-    /**
-     * @var DocBlock\Description The actual
-     *     description for this docblock.
-     */
-    protected $long_description = null;
-
-    /**
-     * @var Tag[] An array containing all
-     *     the tags in this docblock; except inline.
-     */
-    protected $tags = array();
-
-    /** @var Context Information about the context of this DocBlock. */
-    protected $context = null;
-
-    /** @var Location Information about the location of this DocBlock. */
-    protected $location = null;
-
-    /** @var bool Is this DocBlock (the start of) a template? */
-    protected $isTemplateStart = false;
-
-    /** @var bool Does this DocBlock signify the end of a DocBlock template? */
-    protected $isTemplateEnd = false;
-
-    /**
-     * Parses the given docblock and populates the member fields.
-     *
-     * The constructor may also receive namespace information such as the
-     * current namespace and aliases. This information is used by some tags
-     * (e.g. @return, @param, etc.) to turn a relative Type into a FQCN.
-     *
-     * @param \Reflector|string $docblock A docblock comment (including
-     *     asterisks) or reflector supporting the getDocComment method.
-     * @param Context           $context  The context in which the DocBlock
-     *     occurs.
-     * @param Location          $location The location within the file that this
-     *     DocBlock occurs in.
-     *
-     * @throws \InvalidArgumentException if the given argument does not have the
-     *     getDocComment method.
-     */
-    public function __construct(
-        $docblock,
-        Context $context = null,
-        Location $location = null
-    ) {
-        if (is_object($docblock)) {
-            if (!method_exists($docblock, 'getDocComment')) {
-                throw new \InvalidArgumentException(
-                    'Invalid object passed; the given reflector must support '
-                    . 'the getDocComment method'
-                );
-            }
-
-            $docblock = $docblock->getDocComment();
-        }
-
-        $docblock = $this->cleanInput($docblock);
-
-        list($templateMarker, $short, $long, $tags) = $this->splitDocBlock($docblock);
-        $this->isTemplateStart = $templateMarker === '#@+';
-        $this->isTemplateEnd = $templateMarker === '#@-';
-        $this->short_description = $short;
-        $this->long_description = new DocBlock\Description($long, $this);
-        $this->parseTags($tags);
-
-        $this->context  = $context;
-        $this->location = $location;
-    }
-
-    /**
-     * Strips the asterisks from the DocBlock comment.
-     *
-     * @param string $comment String containing the comment text.
-     *
-     * @return string
-     */
-    protected function cleanInput($comment)
-    {
-        $comment = trim(
-            preg_replace(
-                '#[ \t]*(?:\/\*\*|\*\/|\*)?[ \t]{0,1}(.*)?#u',
-                '$1',
-                $comment
-            )
-        );
-
-        // reg ex above is not able to remove */ from a single line docblock
-        if (substr($comment, -2) == '*/') {
-            $comment = trim(substr($comment, 0, -2));
-        }
-
-        // normalize strings
-        $comment = str_replace(array("\r\n", "\r"), "\n", $comment);
-
-        return $comment;
-    }
-
-    /**
-     * Splits the DocBlock into a template marker, summary, description and block of tags.
-     *
-     * @param string $comment Comment to split into the sub-parts.
-     *
-     * @author Richard van Velzen (@_richardJ) Special thanks to Richard for the regex responsible for the split.
-     * @author Mike van Riel <me@mikevanriel.com> for extending the regex with template marker support.
-     *
-     * @return string[] containing the template marker (if any), summary, description and a string containing the tags.
-     */
-    protected function splitDocBlock($comment)
-    {
-        // Performance improvement cheat: if the first character is an @ then only tags are in this DocBlock. This
-        // method does not split tags so we return this verbatim as the fourth result (tags). This saves us the
-        // performance impact of running a regular expression
-        if (strpos($comment, '@') === 0) {
-            return array('', '', '', $comment);
-        }
-
-        // clears all extra horizontal whitespace from the line endings to prevent parsing issues
-        $comment = preg_replace('/\h*$/Sum', '', $comment);
-
-        /*
-         * Splits the docblock into a template marker, short description, long description and tags section
-         *
-         * - The template marker is empty, #@+ or #@- if the DocBlock starts with either of those (a newline may
-         *   occur after it and will be stripped).
-         * - The short description is started from the first character until a dot is encountered followed by a
-         *   newline OR two consecutive newlines (horizontal whitespace is taken into account to consider spacing
-         *   errors). This is optional.
-         * - The long description, any character until a new line is encountered followed by an @ and word
-         *   characters (a tag). This is optional.
-         * - Tags; the remaining characters
-         *
-         * Big thanks to RichardJ for contributing this Regular Expression
-         */
-        preg_match(
-            '/
-            \A
-            # 1. Extract the template marker
-            (?:(\#\@\+|\#\@\-)\n?)?
-
-            # 2. Extract the summary
-            (?:
-              (?! @\pL ) # The summary may not start with an @
-              (
-                [^\n.]+
-                (?:
-                  (?! \. \n | \n{2} )     # End summary upon a dot followed by newline or two newlines
-                  [\n.] (?! [ \t]* @\pL ) # End summary when an @ is found as first character on a new line
-                  [^\n.]+                 # Include anything else
-                )*
-                \.?
-              )?
-            )
-
-            # 3. Extract the description
-            (?:
-              \s*        # Some form of whitespace _must_ precede a description because a summary must be there
-              (?! @\pL ) # The description may not start with an @
-              (
-                [^\n]+
-                (?: \n+
-                  (?! [ \t]* @\pL ) # End description when an @ is found as first character on a new line
-                  [^\n]+            # Include anything else
-                )*
-              )
-            )?
-
-            # 4. Extract the tags (anything that follows)
-            (\s+ [\s\S]*)? # everything that follows
-            /ux',
-            $comment,
-            $matches
-        );
-        array_shift($matches);
-
-        while (count($matches) < 4) {
-            $matches[] = '';
-        }
-
-        return $matches;
-    }
-
-    /**
-     * Creates the tag objects.
-     *
-     * @param string $tags Tag block to parse.
-     *
-     * @return void
-     */
-    protected function parseTags($tags)
-    {
-        $result = array();
-        $tags = trim($tags);
-        if ('' !== $tags) {
-            if ('@' !== $tags[0]) {
-                throw new \LogicException(
-                    'A tag block started with text instead of an actual tag,'
-                    . ' this makes the tag block invalid: ' . $tags
-                );
-            }
-            foreach (explode("\n", $tags) as $tag_line) {
-                if (isset($tag_line[0]) && ($tag_line[0] === '@')) {
-                    $result[] = $tag_line;
-                } else {
-                    $result[count($result) - 1] .= "\n" . $tag_line;
-                }
-            }
-
-            // create proper Tag objects
-            foreach ($result as $key => $tag_line) {
-                $result[$key] = Tag::createInstance(trim($tag_line), $this);
-            }
-        }
-
-        $this->tags = $result;
-    }
-
-    /**
-     * Gets the text portion of the doc block.
-     * 
-     * Gets the text portion (short and long description combined) of the doc
-     * block.
-     * 
-     * @return string The text portion of the doc block.
-     */
-    public function getText()
-    {
-        $short = $this->getShortDescription();
-        $long = $this->getLongDescription()->getContents();
-
-        if ($long) {
-            return "{$short}\n\n{$long}";
-        } else {
-            return $short;
-        }
-    }
-
-    /**
-     * Set the text portion of the doc block.
-     * 
-     * Sets the text portion (short and long description combined) of the doc
-     * block.
-     *
-     * @param string $docblock The new text portion of the doc block.
-     * 
-     * @return $this This doc block.
-     */
-    public function setText($comment)
-    {
-        list(,$short, $long) = $this->splitDocBlock($comment);
-        $this->short_description = $short;
-        $this->long_description = new DocBlock\Description($long, $this);
-        return $this;
-    }
-    /**
-     * Returns the opening line or also known as short description.
-     *
-     * @return string
-     */
-    public function getShortDescription()
-    {
-        return $this->short_description;
-    }
-
-    /**
-     * Returns the full description or also known as long description.
-     *
-     * @return DocBlock\Description
-     */
-    public function getLongDescription()
-    {
-        return $this->long_description;
-    }
-
-    /**
-     * Returns whether this DocBlock is the start of a Template section.
-     *
-     * A Docblock may serve as template for a series of subsequent DocBlocks. This is indicated by a special marker
-     * (`#@+`) that is appended directly after the opening `/**` of a DocBlock.
-     *
-     * An example of such an opening is:
-     *
-     * ```
-     * /**#@+
-     *  * My DocBlock
-     *  * /
-     * ```
-     *
-     * The description and tags (not the summary!) are copied onto all subsequent DocBlocks and also applied to all
-     * elements that follow until another DocBlock is found that contains the closing marker (`#@-`).
-     *
-     * @see self::isTemplateEnd() for the check whether a closing marker was provided.
-     *
-     * @return boolean
-     */
-    public function isTemplateStart()
-    {
-        return $this->isTemplateStart;
-    }
-
-    /**
-     * Returns whether this DocBlock is the end of a Template section.
-     *
-     * @see self::isTemplateStart() for a more complete description of the Docblock Template functionality.
-     *
-     * @return boolean
-     */
-    public function isTemplateEnd()
-    {
-        return $this->isTemplateEnd;
-    }
-
-    /**
-     * Returns the current context.
-     *
-     * @return Context
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-
-    /**
-     * Returns the current location.
-     *
-     * @return Location
-     */
-    public function getLocation()
-    {
-        return $this->location;
-    }
-
-    /**
-     * Returns the tags for this DocBlock.
-     *
-     * @return Tag[]
-     */
-    public function getTags()
-    {
-        return $this->tags;
-    }
-
-    /**
-     * Returns an array of tags matching the given name. If no tags are found
-     * an empty array is returned.
-     *
-     * @param string $name String to search by.
-     *
-     * @return Tag[]
-     */
-    public function getTagsByName($name)
-    {
-        $result = array();
-
-        /** @var Tag $tag */
-        foreach ($this->getTags() as $tag) {
-            if ($tag->getName() != $name) {
-                continue;
-            }
-
-            $result[] = $tag;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Checks if a tag of a certain type is present in this DocBlock.
-     *
-     * @param string $name Tag name to check for.
-     *
-     * @return bool
-     */
-    public function hasTag($name)
-    {
-        /** @var Tag $tag */
-        foreach ($this->getTags() as $tag) {
-            if ($tag->getName() == $name) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Appends a tag at the end of the list of tags.
-     *
-     * @param Tag $tag The tag to add.
-     *
-     * @return Tag The newly added tag.
-     *
-     * @throws \LogicException When the tag belongs to a different DocBlock.
-     */
-    public function appendTag(Tag $tag)
-    {
-        if (null === $tag->getDocBlock()) {
-            $tag->setDocBlock($this);
-        }
-
-        if ($tag->getDocBlock() === $this) {
-            $this->tags[] = $tag;
-        } else {
-            throw new \LogicException(
-                'This tag belongs to a different DocBlock object.'
-            );
-        }
-
-        return $tag;
-    }
-
-
-    /**
-     * Builds a string representation of this object.
-     *
-     * @todo determine the exact format as used by PHP Reflection and
-     *     implement it.
-     *
-     * @return string
-     * @codeCoverageIgnore Not yet implemented
-     */
-    public static function export()
-    {
-        throw new \Exception('Not yet implemented');
-    }
-
-    /**
-     * Returns the exported information (we should use the export static method
-     * BUT this throws an exception at this point).
-     *
-     * @return string
-     * @codeCoverageIgnore Not yet implemented
-     */
-    public function __toString()
-    {
-        return 'Not yet implemented';
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Context.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Context.php
deleted file mode 100644
index 81aa83c..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Context.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Vasil Rangelov <boen.robot@gmail.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock;
-
-/**
- * The context in which a DocBlock occurs.
- *
- * @author  Vasil Rangelov <boen.robot@gmail.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class Context
-{
-    /** @var string The current namespace. */
-    protected $namespace = '';
-
-    /** @var array List of namespace aliases => Fully Qualified Namespace. */
-    protected $namespace_aliases = array();
-    
-    /** @var string Name of the structural element, within the namespace. */
-    protected $lsen = '';
-    
-    /**
-     * Cteates a new context.
-     * @param string $namespace         The namespace where this DocBlock
-     *     resides in.
-     * @param array  $namespace_aliases List of namespace aliases => Fully
-     *     Qualified Namespace.
-     * @param string $lsen              Name of the structural element, within
-     *     the namespace.
-     */
-    public function __construct(
-        $namespace = '',
-        array $namespace_aliases = array(),
-        $lsen = ''
-    ) {
-        if (!empty($namespace)) {
-            $this->setNamespace($namespace);
-        }
-        $this->setNamespaceAliases($namespace_aliases);
-        $this->setLSEN($lsen);
-    }
-
-    /**
-     * @return string The namespace where this DocBlock resides in.
-     */
-    public function getNamespace()
-    {
-        return $this->namespace;
-    }
-
-    /**
-     * @return array List of namespace aliases => Fully Qualified Namespace.
-     */
-    public function getNamespaceAliases()
-    {
-        return $this->namespace_aliases;
-    }
-    
-    /**
-     * Returns the Local Structural Element Name.
-     * 
-     * @return string Name of the structural element, within the namespace.
-     */
-    public function getLSEN()
-    {
-        return $this->lsen;
-    }
-    
-    /**
-     * Sets a new namespace.
-     * 
-     * Sets a new namespace for the context. Leading and trailing slashes are
-     * trimmed, and the keywords "global" and "default" are treated as aliases
-     * to no namespace.
-     * 
-     * @param string $namespace The new namespace to set.
-     * 
-     * @return $this
-     */
-    public function setNamespace($namespace)
-    {
-        if ('global' !== $namespace
-            && 'default' !== $namespace
-        ) {
-            // Srip leading and trailing slash
-            $this->namespace = trim((string)$namespace, '\\');
-        } else {
-            $this->namespace = '';
-        }
-        return $this;
-    }
-    
-    /**
-     * Sets the namespace aliases, replacing all previous ones.
-     * 
-     * @param array $namespace_aliases List of namespace aliases => Fully
-     *     Qualified Namespace.
-     * 
-     * @return $this
-     */
-    public function setNamespaceAliases(array $namespace_aliases)
-    {
-        $this->namespace_aliases = array();
-        foreach ($namespace_aliases as $alias => $fqnn) {
-            $this->setNamespaceAlias($alias, $fqnn);
-        }
-        return $this;
-    }
-    
-    /**
-     * Adds a namespace alias to the context.
-     * 
-     * @param string $alias The alias name (the part after "as", or the last
-     *     part of the Fully Qualified Namespace Name) to add.
-     * @param string $fqnn  The Fully Qualified Namespace Name for this alias.
-     *     Any form of leading/trailing slashes are accepted, but what will be
-     *     stored is a name, prefixed with a slash, and no trailing slash.
-     * 
-     * @return $this
-     */
-    public function setNamespaceAlias($alias, $fqnn)
-    {
-        $this->namespace_aliases[$alias] = '\\' . trim((string)$fqnn, '\\');
-        return $this;
-    }
-    
-    /**
-     * Sets a new Local Structural Element Name.
-     * 
-     * Sets a new Local Structural Element Name. A local name also contains
-     * punctuation determining the kind of structural element (e.g. trailing "("
-     * and ")" for functions and methods).
-     * 
-     * @param string $lsen The new local name of a structural element.
-     * 
-     * @return $this
-     */
-    public function setLSEN($lsen)
-    {
-        $this->lsen = (string)$lsen;
-        return $this;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Description.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Description.php
deleted file mode 100644
index d41142e..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Description.php
+++ /dev/null
@@ -1,223 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock;
-
-use phpDocumentor\Reflection\DocBlock;
-
-/**
- * Parses a Description of a DocBlock or tag.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class Description implements \Reflector
-{
-    /** @var string */
-    protected $contents = '';
-
-    /** @var array The contents, as an array of strings and Tag objects. */
-    protected $parsedContents = null;
-
-    /** @var DocBlock The DocBlock which this description belongs to. */
-    protected $docblock = null;
-
-    /**
-     * Populates the fields of a description.
-     *
-     * @param string   $content  The description's conetnts.
-     * @param DocBlock $docblock The DocBlock which this description belongs to.
-     */
-    public function __construct($content, DocBlock $docblock = null)
-    {
-        $this->setContent($content)->setDocBlock($docblock);
-    }
-
-    /**
-     * Gets the text of this description.
-     *
-     * @return string
-     */
-    public function getContents()
-    {
-        return $this->contents;
-    }
-
-    /**
-     * Sets the text of this description.
-     *
-     * @param string $content The new text of this description.
-     *
-     * @return $this
-     */
-    public function setContent($content)
-    {
-        $this->contents = trim($content);
-
-        $this->parsedContents = null;
-        return $this;
-    }
-
-    /**
-     * Returns the parsed text of this description.
-     *
-     * @return array An array of strings and tag objects, in the order they
-     *     occur within the description.
-     */
-    public function getParsedContents()
-    {
-        if (null === $this->parsedContents) {
-            $this->parsedContents = preg_split(
-                '/\{
-                    # "{@}" is not a valid inline tag. This ensures that
-                    # we do not treat it as one, but treat it literally.
-                    (?!@\})
-                    # We want to capture the whole tag line, but without the
-                    # inline tag delimiters.
-                    (\@
-                        # Match everything up to the next delimiter.
-                        [^{}]*
-                        # Nested inline tag content should not be captured, or
-                        # it will appear in the result separately.
-                        (?:
-                            # Match nested inline tags.
-                            (?:
-                                # Because we did not catch the tag delimiters
-                                # earlier, we must be explicit with them here.
-                                # Notice that this also matches "{}", as a way
-                                # to later introduce it as an escape sequence.
-                                \{(?1)?\}
-                                |
-                                # Make sure we match hanging "{".
-                                \{
-                            )
-                            # Match content after the nested inline tag.
-                            [^{}]*
-                        )* # If there are more inline tags, match them as well.
-                           # We use "*" since there may not be any nested inline
-                           # tags.
-                    )
-                \}/Sux',
-                $this->contents,
-                null,
-                PREG_SPLIT_DELIM_CAPTURE
-            );
-
-            $count = count($this->parsedContents);
-            for ($i=1; $i<$count; $i += 2) {
-                $this->parsedContents[$i] = Tag::createInstance(
-                    $this->parsedContents[$i],
-                    $this->docblock
-                );
-            }
-
-            //In order to allow "literal" inline tags, the otherwise invalid
-            //sequence "{@}" is changed to "@", and "{}" is changed to "}".
-            //See unit tests for examples.
-            for ($i=0; $i<$count; $i += 2) {
-                $this->parsedContents[$i] = str_replace(
-                    array('{@}', '{}'),
-                    array('@', '}'),
-                    $this->parsedContents[$i]
-                );
-            }
-        }
-        return $this->parsedContents;
-    }
-
-    /**
-     * Return a formatted variant of the Long Description using MarkDown.
-     *
-     * @todo this should become a more intelligent piece of code where the
-     *     configuration contains a setting what format long descriptions are.
-     *
-     * @codeCoverageIgnore Will be removed soon, in favor of adapters at
-     *     PhpDocumentor itself that will process text in various formats.
-     *
-     * @return string
-     */
-    public function getFormattedContents()
-    {
-        $result = $this->contents;
-
-        // if the long description contains a plain HTML <code> element, surround
-        // it with a pre element. Please note that we explicitly used str_replace
-        // and not preg_replace to gain performance
-        if (strpos($result, '<code>') !== false) {
-            $result = str_replace(
-                array('<code>', "<code>\r\n", "<code>\n", "<code>\r", '</code>'),
-                array('<pre><code>', '<code>', '<code>', '<code>', '</code></pre>'),
-                $result
-            );
-        }
-
-        if (class_exists('Parsedown')) {
-            $markdown = \Parsedown::instance();
-            $result = $markdown->parse($result);
-        } elseif (class_exists('dflydev\markdown\MarkdownExtraParser')) {
-            $markdown = new \dflydev\markdown\MarkdownExtraParser();
-            $result = $markdown->transformMarkdown($result);
-        }
-
-        return trim($result);
-    }
-
-    /**
-     * Gets the docblock this tag belongs to.
-     *
-     * @return DocBlock The docblock this description belongs to.
-     */
-    public function getDocBlock()
-    {
-        return $this->docblock;
-    }
-
-    /**
-     * Sets the docblock this tag belongs to.
-     *
-     * @param DocBlock $docblock The new docblock this description belongs to.
-     *     Setting NULL removes any association.
-     *
-     * @return $this
-     */
-    public function setDocBlock(DocBlock $docblock = null)
-    {
-        $this->docblock = $docblock;
-
-        return $this;
-    }
-
-    /**
-     * Builds a string representation of this object.
-     *
-     * @todo determine the exact format as used by PHP Reflection
-     *     and implement it.
-     *
-     * @return void
-     * @codeCoverageIgnore Not yet implemented
-     */
-    public static function export()
-    {
-        throw new \Exception('Not yet implemented');
-    }
-
-    /**
-     * Returns the long description as a string.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return $this->getContents();
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Location.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Location.php
deleted file mode 100644
index 966ed44..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Location.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Vasil Rangelov <boen.robot@gmail.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock;
-
-/**
- * The location a DocBlock occurs within a file.
- *
- * @author  Vasil Rangelov <boen.robot@gmail.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class Location
-{
-    /** @var int Line where the DocBlock text starts. */
-    protected $lineNumber = 0;
-
-    /** @var int Column where the DocBlock text starts. */
-    protected $columnNumber = 0;
-    
-    public function __construct(
-        $lineNumber = 0,
-        $columnNumber = 0
-    ) {
-        $this->setLineNumber($lineNumber)->setColumnNumber($columnNumber);
-    }
-
-    /**
-     * @return int Line where the DocBlock text starts.
-     */
-    public function getLineNumber()
-    {
-        return $this->lineNumber;
-    }
-
-    /**
-     * 
-     * @param type $lineNumber
-     * @return $this
-     */
-    public function setLineNumber($lineNumber)
-    {
-        $this->lineNumber = (int)$lineNumber;
-
-        return $this;
-    }
-
-    /**
-     * @return int Column where the DocBlock text starts.
-     */
-    public function getColumnNumber()
-    {
-        return $this->columnNumber;
-    }
-
-    /**
-     * 
-     * @param int $columnNumber
-     * @return $this
-     */
-    public function setColumnNumber($columnNumber)
-    {
-        $this->columnNumber = (int)$columnNumber;
-
-        return $this;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Serializer.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Serializer.php
deleted file mode 100644
index c161785..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Serializer.php
+++ /dev/null
@@ -1,198 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Barry vd. Heuvel <barryvdh@gmail.com>
- * @copyright 2013 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock;
-
-use phpDocumentor\Reflection\DocBlock;
-
-/**
- * Serializes a DocBlock instance.
- *
- * @author  Barry vd. Heuvel <barryvdh@gmail.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class Serializer
-{
-
-    /** @var string The string to indent the comment with. */
-    protected $indentString = ' ';
-
-    /** @var int The number of times the indent string is repeated. */
-    protected $indent = 0;
-
-    /** @var bool Whether to indent the first line. */
-    protected $isFirstLineIndented = true;
-
-    /** @var int|null The max length of a line. */
-    protected $lineLength = null;
-
-    /**
-     * Create a Serializer instance.
-     *
-     * @param int      $indent          The number of times the indent string is
-     *     repeated.
-     * @param string   $indentString    The string to indent the comment with.
-     * @param bool     $indentFirstLine Whether to indent the first line.
-     * @param int|null $lineLength      The max length of a line or NULL to
-     *     disable line wrapping.
-     */
-    public function __construct(
-        $indent = 0,
-        $indentString = ' ',
-        $indentFirstLine = true,
-        $lineLength = null
-    ) {
-        $this->setIndentationString($indentString);
-        $this->setIndent($indent);
-        $this->setIsFirstLineIndented($indentFirstLine);
-        $this->setLineLength($lineLength);
-    }
-
-    /**
-     * Sets the string to indent comments with.
-     * 
-     * @param string $indentationString The string to indent comments with.
-     * 
-     * @return $this This serializer object.
-     */
-    public function setIndentationString($indentString)
-    {
-        $this->indentString = (string)$indentString;
-        return $this;
-    }
-
-    /**
-     * Gets the string to indent comments with.
-     * 
-     * @return string The indent string.
-     */
-    public function getIndentationString()
-    {
-        return $this->indentString;
-    }
-
-    /**
-     * Sets the number of indents.
-     * 
-     * @param int $indent The number of times the indent string is repeated.
-     * 
-     * @return $this This serializer object.
-     */
-    public function setIndent($indent)
-    {
-        $this->indent = (int)$indent;
-        return $this;
-    }
-
-    /**
-     * Gets the number of indents.
-     * 
-     * @return int The number of times the indent string is repeated.
-     */
-    public function getIndent()
-    {
-        return $this->indent;
-    }
-
-    /**
-     * Sets whether or not the first line should be indented.
-     * 
-     * Sets whether or not the first line (the one with the "/**") should be
-     * indented.
-     * 
-     * @param bool $indentFirstLine The new value for this setting.
-     * 
-     * @return $this This serializer object.
-     */
-    public function setIsFirstLineIndented($indentFirstLine)
-    {
-        $this->isFirstLineIndented = (bool)$indentFirstLine;
-        return $this;
-    }
-
-    /**
-     * Gets whether or not the first line should be indented.
-     * 
-     * @return bool Whether or not the first line should be indented.
-     */
-    public function isFirstLineIndented()
-    {
-        return $this->isFirstLineIndented;
-    }
-
-    /**
-     * Sets the line length.
-     * 
-     * Sets the length of each line in the serialization. Content will be
-     * wrapped within this limit.
-     * 
-     * @param int|null $lineLength The length of each line. NULL to disable line
-     *     wrapping altogether.
-     * 
-     * @return $this This serializer object.
-     */
-    public function setLineLength($lineLength)
-    {
-        $this->lineLength = null === $lineLength ? null : (int)$lineLength;
-        return $this;
-    }
-
-    /**
-     * Gets the line length.
-     * 
-     * @return int|null The length of each line or NULL if line wrapping is
-     *     disabled.
-     */
-    public function getLineLength()
-    {
-        return $this->lineLength;
-    }
-
-    /**
-     * Generate a DocBlock comment.
-     *
-     * @param DocBlock The DocBlock to serialize.
-     * 
-     * @return string The serialized doc block.
-     */
-    public function getDocComment(DocBlock $docblock)
-    {
-        $indent = str_repeat($this->indentString, $this->indent);
-        $firstIndent = $this->isFirstLineIndented ? $indent : '';
-
-        $text = $docblock->getText();
-        if ($this->lineLength) {
-            //3 === strlen(' * ')
-            $wrapLength = $this->lineLength - strlen($indent) - 3;
-            $text = wordwrap($text, $wrapLength);
-        }
-        $text = str_replace("\n", "\n{$indent} * ", $text);
-
-        $comment = "{$firstIndent}/**\n{$indent} * {$text}\n{$indent} *\n";
-
-        /** @var Tag $tag */
-        foreach ($docblock->getTags() as $tag) {
-            $tagText = (string) $tag;
-            if ($this->lineLength) {
-                $tagText = wordwrap($tagText, $wrapLength);
-            }
-            $tagText = str_replace("\n", "\n{$indent} * ", $tagText);
-
-            $comment .= "{$indent} * {$tagText}\n";
-        }
-
-        $comment .= $indent . ' */';
-
-        return $comment;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag.php
deleted file mode 100644
index a96db09..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag.php
+++ /dev/null
@@ -1,377 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock;
-
-use phpDocumentor\Reflection\DocBlock;
-
-/**
- * Parses a tag definition for a DocBlock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class Tag implements \Reflector
-{
-    /**
-     * PCRE regular expression matching a tag name.
-     */
-    const REGEX_TAGNAME = '[\w\-\_\\\\]+';
-
-    /** @var string Name of the tag */
-    protected $tag = '';
-
-    /**
-     * @var string|null Content of the tag.
-     *     When set to NULL, it means it needs to be regenerated.
-     */
-    protected $content = '';
-
-    /** @var string Description of the content of this tag */
-    protected $description = '';
-
-    /**
-     * @var array|null The description, as an array of strings and Tag objects.
-     *     When set to NULL, it means it needs to be regenerated.
-     */
-    protected $parsedDescription = null;
-
-    /** @var Location Location of the tag. */
-    protected $location = null;
-
-    /** @var DocBlock The DocBlock which this tag belongs to. */
-    protected $docblock = null;
-    
-    /**
-     * @var array An array with a tag as a key, and an FQCN to a class that
-     *     handles it as an array value. The class is expected to inherit this
-     *     class.
-     */
-    private static $tagHandlerMappings = array(
-        'author'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\AuthorTag',
-        'covers'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\CoversTag',
-        'deprecated'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag',
-        'example'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\ExampleTag',
-        'link'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\LinkTag',
-        'method'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\MethodTag',
-        'param'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\ParamTag',
-        'property-read'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\PropertyReadTag',
-        'property'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\PropertyTag',
-        'property-write'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\PropertyWriteTag',
-        'return'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\ReturnTag',
-        'see'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\SeeTag',
-        'since'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\SinceTag',
-        'source'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\SourceTag',
-        'throw'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag',
-        'throws'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag',
-        'uses'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\UsesTag',
-        'var'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\VarTag',
-        'version'
-            => '\phpDocumentor\Reflection\DocBlock\Tag\VersionTag'
-    );
-
-    /**
-     * Factory method responsible for instantiating the correct sub type.
-     *
-     * @param string   $tag_line The text for this tag, including description.
-     * @param DocBlock $docblock The DocBlock which this tag belongs to.
-     * @param Location $location Location of the tag.
-     *
-     * @throws \InvalidArgumentException if an invalid tag line was presented.
-     *
-     * @return static A new tag object.
-     */
-    final public static function createInstance(
-        $tag_line,
-        DocBlock $docblock = null,
-        Location $location = null
-    ) {
-        if (!preg_match(
-            '/^@(' . self::REGEX_TAGNAME . ')(?:\s*([^\s].*)|$)?/us',
-            $tag_line,
-            $matches
-        )) {
-            throw new \InvalidArgumentException(
-                'Invalid tag_line detected: ' . $tag_line
-            );
-        }
-
-        $handler = __CLASS__;
-        if (isset(self::$tagHandlerMappings[$matches[1]])) {
-            $handler = self::$tagHandlerMappings[$matches[1]];
-        } elseif (isset($docblock)) {
-            $tagName = (string)new Type\Collection(
-                array($matches[1]),
-                $docblock->getContext()
-            );
-
-            if (isset(self::$tagHandlerMappings[$tagName])) {
-                $handler = self::$tagHandlerMappings[$tagName];
-            }
-        }
-
-        return new $handler(
-            $matches[1],
-            isset($matches[2]) ? $matches[2] : '',
-            $docblock,
-            $location
-        );
-    }
-
-    /**
-     * Registers a handler for tags.
-     * 
-     * Registers a handler for tags. The class specified is autoloaded if it's
-     * not available. It must inherit from this class.
-     * 
-     * @param string      $tag     Name of tag to regiser a handler for. When
-     *     registering a namespaced tag, the full name, along with a prefixing
-     *     slash MUST be provided.
-     * @param string|null $handler FQCN of handler. Specifing NULL removes the
-     *     handler for the specified tag, if any.
-     * 
-     * @return bool TRUE on success, FALSE on failure.
-     */
-    final public static function registerTagHandler($tag, $handler)
-    {
-        $tag = trim((string)$tag);
-
-        if (null === $handler) {
-            unset(self::$tagHandlerMappings[$tag]);
-            return true;
-        }
-
-        if ('' !== $tag
-            && class_exists($handler, true)
-            && is_subclass_of($handler, __CLASS__)
-            && !strpos($tag, '\\') //Accept no slash, and 1st slash at offset 0.
-        ) {
-            self::$tagHandlerMappings[$tag] = $handler;
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Parses a tag and populates the member variables.
-     *
-     * @param string   $name     Name of the tag.
-     * @param string   $content  The contents of the given tag.
-     * @param DocBlock $docblock The DocBlock which this tag belongs to.
-     * @param Location $location Location of the tag.
-     */
-    public function __construct(
-        $name,
-        $content,
-        DocBlock $docblock = null,
-        Location $location = null
-    ) {
-        $this
-            ->setName($name)
-            ->setContent($content)
-            ->setDocBlock($docblock)
-            ->setLocation($location);
-    }
-
-    /**
-     * Gets the name of this tag.
-     *
-     * @return string The name of this tag.
-     */
-    public function getName()
-    {
-        return $this->tag;
-    }
-
-    /**
-     * Sets the name of this tag.
-     * 
-     * @param string $name The new name of this tag.
-     * 
-     * @return $this
-     * @throws \InvalidArgumentException When an invalid tag name is provided.
-     */
-    public function setName($name)
-    {
-        if (!preg_match('/^' . self::REGEX_TAGNAME . '$/u', $name)) {
-            throw new \InvalidArgumentException(
-                'Invalid tag name supplied: ' . $name
-            );
-        }
-
-        $this->tag = $name;
-
-        return $this;
-    }
-
-    /**
-     * Gets the content of this tag.
-     *
-     * @return string
-     */
-    public function getContent()
-    {
-        if (null === $this->content) {
-            $this->content = $this->description;
-        }
-
-        return $this->content;
-    }
-
-    /**
-     * Sets the content of this tag.
-     * 
-     * @param string $content The new content of this tag.
-     * 
-     * @return $this
-     */
-    public function setContent($content)
-    {
-        $this->setDescription($content);
-        $this->content = $content;
-
-        return $this;
-    }
-
-    /**
-     * Gets the description component of this tag.
-     *
-     * @return string
-     */
-    public function getDescription()
-    {
-        return $this->description;
-    }
-
-    /**
-     * Sets the description component of this tag.
-     * 
-     * @param string $description The new description component of this tag.
-     * 
-     * @return $this
-     */
-    public function setDescription($description)
-    {
-        $this->content = null;
-        $this->parsedDescription = null;
-        $this->description = trim($description);
-
-        return $this;
-    }
-
-    /**
-     * Gets the parsed text of this description.
-     * 
-     * @return array An array of strings and tag objects, in the order they
-     *     occur within the description.
-     */
-    public function getParsedDescription()
-    {
-        if (null === $this->parsedDescription) {
-            $description = new Description($this->description, $this->docblock);
-            $this->parsedDescription = $description->getParsedContents();
-        }
-        return $this->parsedDescription;
-    }
-
-    /**
-     * Gets the docblock this tag belongs to.
-     * 
-     * @return DocBlock The docblock this tag belongs to.
-     */
-    public function getDocBlock()
-    {
-        return $this->docblock;
-    }
-
-    /**
-     * Sets the docblock this tag belongs to.
-     * 
-     * @param DocBlock $docblock The new docblock this tag belongs to. Setting
-     *     NULL removes any association.
-     * 
-     * @return $this
-     */
-    public function setDocBlock(DocBlock $docblock = null)
-    {
-        $this->docblock = $docblock;
-
-        return $this;
-    }
-
-    /**
-     * Gets the location of the tag.
-     *
-     * @return Location The tag's location.
-     */
-    public function getLocation()
-    {
-        return $this->location;
-    }
-    
-    /**
-     * Sets the location of the tag.
-     * 
-     * @param Location $location The new location of the tag.
-     * 
-     * @return $this
-     */
-    public function setLocation(Location $location = null)
-    {
-        $this->location = $location;
-
-        return $this;
-    }
-
-    /**
-     * Builds a string representation of this object.
-     *
-     * @todo determine the exact format as used by PHP Reflection and implement it.
-     *
-     * @return void
-     * @codeCoverageIgnore Not yet implemented
-     */
-    public static function export()
-    {
-        throw new \Exception('Not yet implemented');
-    }
-
-    /**
-     * Returns the tag as a serialized string
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return "@{$this->getName()} {$this->getContent()}";
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php
deleted file mode 100644
index bacf52e..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Vasil Rangelov <boen.robot@gmail.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for an @author tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class AuthorTag extends Tag
-{
-    /**
-     * PCRE regular expression matching any valid value for the name component.
-     */
-    const REGEX_AUTHOR_NAME = '[^\<]*';
-
-    /**
-     * PCRE regular expression matching any valid value for the email component.
-     */
-    const REGEX_AUTHOR_EMAIL = '[^\>]*';
-
-    /** @var string The name of the author */
-    protected $authorName = '';
-
-    /** @var string The email of the author */
-    protected $authorEmail = '';
-    
-    public function getContent()
-    {
-        if (null === $this->content) {
-            $this->content = $this->authorName;
-            if ('' != $this->authorEmail) {
-                $this->content .= "<{$this->authorEmail}>";
-            }
-        }
-
-        return $this->content;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContent($content)
-    {
-        parent::setContent($content);
-        if (preg_match(
-            '/^(' . self::REGEX_AUTHOR_NAME .
-            ')(\<(' . self::REGEX_AUTHOR_EMAIL .
-            ')\>)?$/u',
-            $this->description,
-            $matches
-        )) {
-            $this->authorName = trim($matches[1]);
-            if (isset($matches[3])) {
-                $this->authorEmail = trim($matches[3]);
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * Gets the author's name.
-     * 
-     * @return string The author's name.
-     */
-    public function getAuthorName()
-    {
-        return $this->authorName;
-    }
-    
-    /**
-     * Sets the author's name.
-     * 
-     * @param string $authorName The new author name.
-     *     An invalid value will set an empty string.
-     * 
-     * @return $this
-     */
-    public function setAuthorName($authorName)
-    {
-        $this->content = null;
-        $this->authorName
-            = preg_match('/^' . self::REGEX_AUTHOR_NAME . '$/u', $authorName)
-            ? $authorName : '';
-
-        return $this;
-    }
-
-    /**
-     * Gets the author's email.
-     * 
-     * @return string The author's email.
-     */
-    public function getAuthorEmail()
-    {
-        return $this->authorEmail;
-    }
-    
-    /**
-     * Sets the author's email.
-     * 
-     * @param string $authorEmail The new author email.
-     *     An invalid value will set an empty string.
-     * 
-     * @return $this
-     */
-    public function setAuthorEmail($authorEmail)
-    {
-        $this->authorEmail
-            = preg_match('/^' . self::REGEX_AUTHOR_EMAIL . '$/u', $authorEmail)
-            ? $authorEmail : '';
-
-        $this->content = null;
-        return $this;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/CoversTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/CoversTag.php
deleted file mode 100644
index bd31b56..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/CoversTag.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @covers tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class CoversTag extends SeeTag
-{
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTag.php
deleted file mode 100644
index 7226316..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTag.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Vasil Rangelov <boen.robot@gmail.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag\VersionTag;
-
-/**
- * Reflection class for a @deprecated tag in a Docblock.
- *
- * @author  Vasil Rangelov <boen.robot@gmail.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class DeprecatedTag extends VersionTag
-{
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ExampleTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ExampleTag.php
deleted file mode 100644
index 0e163ea..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ExampleTag.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Vasil Rangelov <boen.robot@gmail.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @example tag in a Docblock.
- *
- * @author  Vasil Rangelov <boen.robot@gmail.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class ExampleTag extends SourceTag
-{
-    /** 
-     * @var string Path to a file to use as an example.
-     *     May also be an absolute URI.
-     */
-    protected $filePath = '';
-
-    /**
-     * @var bool Whether the file path component represents an URI.
-     *     This determines how the file portion appears at {@link getContent()}.
-     */
-    protected $isURI = false;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        if (null === $this->content) {
-            $filePath = '';
-            if ($this->isURI) {
-                if (false === strpos($this->filePath, ':')) {
-                    $filePath = str_replace(
-                        '%2F',
-                        '/',
-                        rawurlencode($this->filePath)
-                    );
-                } else {
-                    $filePath = $this->filePath;
-                }
-            } else {
-                $filePath = '"' . $this->filePath . '"';
-            }
-
-            $this->content = $filePath . ' ' . parent::getContent();
-        }
-
-        return $this->content;
-    }
-    /**
-     * {@inheritdoc}
-     */
-    public function setContent($content)
-    {
-        Tag::setContent($content);
-        if (preg_match(
-            '/^
-                # File component
-                (?:
-                    # File path in quotes
-                    \"([^\"]+)\"
-                    |
-                    # File URI
-                    (\S+)
-                )
-                # Remaining content (parsed by SourceTag)
-                (?:\s+(.*))?
-            $/sux',
-            $this->description,
-            $matches
-        )) {
-            if ('' !== $matches[1]) {
-                $this->setFilePath($matches[1]);
-            } else {
-                $this->setFileURI($matches[2]);
-            }
-
-            if (isset($matches[3])) {
-                parent::setContent($matches[3]);
-            } else {
-                $this->setDescription('');
-            }
-            $this->content = $content;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Returns the file path.
-     *
-     * @return string Path to a file to use as an example.
-     *     May also be an absolute URI.
-     */
-    public function getFilePath()
-    {
-        return $this->filePath;
-    }
-    
-    /**
-     * Sets the file path.
-     * 
-     * @param string $filePath The new file path to use for the example.
-     * 
-     * @return $this
-     */
-    public function setFilePath($filePath)
-    {
-        $this->isURI = false;
-        $this->filePath = trim($filePath);
-
-        $this->content = null;
-        return $this;
-    }
-    
-    /**
-     * Sets the file path as an URI.
-     * 
-     * This function is equivalent to {@link setFilePath()}, except that it
-     * convers an URI to a file path before that.
-     * 
-     * There is no getFileURI(), as {@link getFilePath()} is compatible.
-     * 
-     * @param type $uri The new file URI to use as an example.
-     */
-    public function setFileURI($uri)
-    {
-        $this->isURI = true;
-        if (false === strpos($uri, ':')) {
-            //Relative URL
-            $this->filePath = rawurldecode(
-                str_replace(array('/', '\\'), '%2F', $uri)
-            );
-        } else {
-            //Absolute URL or URI.
-            $this->filePath = $uri;
-        }
-
-        $this->content = null;
-        return $this;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/LinkTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/LinkTag.php
deleted file mode 100644
index f79f25d..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/LinkTag.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Ben Selby <benmatselby@gmail.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @link tag in a Docblock.
- *
- * @author  Ben Selby <benmatselby@gmail.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class LinkTag extends Tag
-{
-    /** @var string */
-    protected $link = '';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        if (null === $this->content) {
-            $this->content = "{$this->link} {$this->description}";
-        }
-
-        return $this->content;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContent($content)
-    {
-        parent::setContent($content);
-        $parts = preg_split('/\s+/Su', $this->description, 2);
-
-        $this->link = $parts[0];
-
-        $this->setDescription(isset($parts[1]) ? $parts[1] : $parts[0]);
-
-        $this->content = $content;
-        return $this;
-    }
-
-    /**
-    * Gets the link
-    *
-    * @return string
-    */
-    public function getLink()
-    {
-        return $this->link;
-    }
-
-    /**
-    * Sets the link
-    *
-    * @param string $link The link
-    *
-    * @return $this
-    */
-    public function setLink($link)
-    {
-        $this->link = $link;
-
-        $this->content = null;
-        return $this;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/MethodTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/MethodTag.php
deleted file mode 100644
index 7a5ce79..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/MethodTag.php
+++ /dev/null
@@ -1,209 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @method in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class MethodTag extends ReturnTag
-{
-
-    /** @var string */
-    protected $method_name = '';
-
-    /** @var string */
-    protected $arguments = '';
-    
-    /** @var bool */
-    protected $isStatic = false;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        if (null === $this->content) {
-            $this->content = '';
-            if ($this->isStatic) {
-                $this->content .= 'static ';
-            }
-            $this->content .= $this->type .
-                " {$this->method_name}({$this->arguments}) " .
-                $this->description;
-        }
-
-        return $this->content;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContent($content)
-    {
-        Tag::setContent($content);
-        // 1. none or more whitespace
-        // 2. optionally the keyword "static" followed by whitespace
-        // 3. optionally a word with underscores followed by whitespace : as
-        //    type for the return value
-        // 4. then optionally a word with underscores followed by () and
-        //    whitespace : as method name as used by phpDocumentor
-        // 5. then a word with underscores, followed by ( and any character
-        //    until a ) and whitespace : as method name with signature
-        // 6. any remaining text : as description
-        if (preg_match(
-            '/^
-                # Static keyword
-                # Declates a static method ONLY if type is also present
-                (?:
-                    (static)
-                    \s+
-                )?
-                # Return type
-                (?:
-                    ([\w\|_\\\\]+)
-                    \s+
-                )?
-                # Legacy method name (not captured)
-                (?:
-                    [\w_]+\(\)\s+
-                )?
-                # Method name
-                ([\w\|_\\\\]+)
-                # Arguments
-                \(([^\)]*)\)
-                \s*
-                # Description
-                (.*)
-            $/sux',
-            $this->description,
-            $matches
-        )) {
-            list(
-                ,
-                $static,
-                $this->type,
-                $this->method_name,
-                $this->arguments,
-                $this->description
-            ) = $matches;
-            if ($static) {
-                if (!$this->type) {
-                    $this->type = 'static';
-                } else {
-                    $this->isStatic = true;
-                }
-            } else {
-                if (!$this->type) {
-                    $this->type = 'void';
-                }
-            }
-            $this->parsedDescription = null;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sets the name of this method.
-     *
-     * @param string $method_name The name of the method.
-     *
-     * @return $this
-     */
-    public function setMethodName($method_name)
-    {
-        $this->method_name = $method_name;
-
-        $this->content = null;
-        return $this;
-    }
-
-    /**
-     * Retrieves the method name.
-     *
-     * @return string
-     */
-    public function getMethodName()
-    {
-        return $this->method_name;
-    }
-
-    /**
-     * Sets the arguments for this method.
-     *
-     * @param string $arguments A comma-separated arguments line.
-     *
-     * @return void
-     */
-    public function setArguments($arguments)
-    {
-        $this->arguments = $arguments;
-
-        $this->content = null;
-        return $this;
-    }
-
-    /**
-     * Returns an array containing each argument as array of type and name.
-     *
-     * Please note that the argument sub-array may only contain 1 element if no
-     * type was specified.
-     *
-     * @return string[]
-     */
-    public function getArguments()
-    {
-        if (empty($this->arguments)) {
-            return array();
-        }
-
-        $arguments = explode(',', $this->arguments);
-        foreach ($arguments as $key => $value) {
-            $arguments[$key] = explode(' ', trim($value));
-        }
-
-        return $arguments;
-    }
-    
-    /**
-     * Checks whether the method tag describes a static method or not.
-     * 
-     * @return bool TRUE if the method declaration is for a static method, FALSE
-     *     otherwise.
-     */
-    public function isStatic()
-    {
-        return $this->isStatic;
-    }
-    
-    /**
-     * Sets a new value for whether the method is static or not.
-     * 
-     * @param bool $isStatic The new value to set.
-     * 
-     * @return $this
-     */
-    public function setIsStatic($isStatic)
-    {
-        $this->isStatic = $isStatic;
-
-        $this->content = null;
-        return $this;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php
deleted file mode 100644
index 9bc0270..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @param tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class ParamTag extends ReturnTag
-{
-    /** @var string */
-    protected $variableName = '';
-
-    /** @var bool determines whether this is a variadic argument */
-    protected $isVariadic = false;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        if (null === $this->content) {
-            $this->content
-                = "{$this->type} {$this->variableName} {$this->description}";
-        }
-        return $this->content;
-    }
-    /**
-     * {@inheritdoc}
-     */
-    public function setContent($content)
-    {
-        Tag::setContent($content);
-        $parts = preg_split(
-            '/(\s+)/Su',
-            $this->description,
-            3,
-            PREG_SPLIT_DELIM_CAPTURE
-        );
-
-        // if the first item that is encountered is not a variable; it is a type
-        if (isset($parts[0])
-            && (strlen($parts[0]) > 0)
-            && ($parts[0][0] !== '$')
-        ) {
-            $this->type = array_shift($parts);
-            array_shift($parts);
-        }
-
-        // if the next item starts with a $ or ...$ it must be the variable name
-        if (isset($parts[0])
-            && (strlen($parts[0]) > 0)
-            && ($parts[0][0] == '$' || substr($parts[0], 0, 4) === '...$')
-        ) {
-            $this->variableName = array_shift($parts);
-            array_shift($parts);
-
-            if (substr($this->variableName, 0, 3) === '...') {
-                $this->isVariadic = true;
-                $this->variableName = substr($this->variableName, 3);
-            }
-        }
-
-        $this->setDescription(implode('', $parts));
-
-        $this->content = $content;
-        return $this;
-    }
-
-    /**
-     * Returns the variable's name.
-     *
-     * @return string
-     */
-    public function getVariableName()
-    {
-        return $this->variableName;
-    }
-
-    /**
-     * Sets the variable's name.
-     *
-     * @param string $name The new name for this variable.
-     *
-     * @return $this
-     */
-    public function setVariableName($name)
-    {
-        $this->variableName = $name;
-
-        $this->content = null;
-        return $this;
-    }
-
-    /**
-     * Returns whether this tag is variadic.
-     *
-     * @return boolean
-     */
-    public function isVariadic()
-    {
-        return $this->isVariadic;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyReadTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyReadTag.php
deleted file mode 100644
index 3340602..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyReadTag.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @property-read tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class PropertyReadTag extends PropertyTag
-{
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyTag.php
deleted file mode 100644
index 288ecff..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyTag.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @property tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class PropertyTag extends ParamTag
-{
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyWriteTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyWriteTag.php
deleted file mode 100644
index ec4e866..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyWriteTag.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @property-write tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class PropertyWriteTag extends PropertyTag
-{
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ReturnTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ReturnTag.php
deleted file mode 100644
index 9293db9..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ReturnTag.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag;
-use phpDocumentor\Reflection\DocBlock\Type\Collection;
-
-/**
- * Reflection class for a @return tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class ReturnTag extends Tag
-{
-    /** @var string The raw type component. */
-    protected $type = '';
-    
-    /** @var Collection The parsed type component. */
-    protected $types = null;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        if (null === $this->content) {
-            $this->content = "{$this->type} {$this->description}";
-        }
-
-        return $this->content;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContent($content)
-    {
-        parent::setContent($content);
-
-        $parts = preg_split('/\s+/Su', $this->description, 2);
-
-        // any output is considered a type
-        $this->type = $parts[0];
-        $this->types = null;
-
-        $this->setDescription(isset($parts[1]) ? $parts[1] : '');
-
-        $this->content = $content;
-        return $this;
-    }
-
-    /**
-     * Returns the unique types of the variable.
-     *
-     * @return string[]
-     */
-    public function getTypes()
-    {
-        return $this->getTypesCollection()->getArrayCopy();
-    }
-
-    /**
-     * Returns the type section of the variable.
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        return (string) $this->getTypesCollection();
-    }
-
-    /**
-     * Returns the type collection.
-     * 
-     * @return void
-     */
-    protected function getTypesCollection()
-    {
-        if (null === $this->types) {
-            $this->types = new Collection(
-                array($this->type),
-                $this->docblock ? $this->docblock->getContext() : null
-            );
-        }
-        return $this->types;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SeeTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SeeTag.php
deleted file mode 100644
index 4f5f22c..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SeeTag.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @see tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class SeeTag extends Tag
-{
-    /** @var string */
-    protected $refers = null;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        if (null === $this->content) {
-            $this->content = "{$this->refers} {$this->description}";
-        }
-        return $this->content;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContent($content)
-    {
-        parent::setContent($content);
-        $parts = preg_split('/\s+/Su', $this->description, 2);
-
-        // any output is considered a type
-        $this->refers = $parts[0];
-
-        $this->setDescription(isset($parts[1]) ? $parts[1] : '');
-
-        $this->content = $content;
-        return $this;
-    }
-
-    /**
-     * Gets the structural element this tag refers to.
-     *
-     * @return string
-     */
-    public function getReference()
-    {
-        return $this->refers;
-    }
-
-    /**
-     * Sets the structural element this tag refers to.
-     * 
-     * @param string $refers The new type this tag refers to.
-     * 
-     * @return $this
-     */
-    public function setReference($refers)
-    {
-        $this->refers = $refers;
-
-        $this->content = null;
-        return $this;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SinceTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SinceTag.php
deleted file mode 100644
index ba009c4..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SinceTag.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Vasil Rangelov <boen.robot@gmail.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag\VersionTag;
-
-/**
- * Reflection class for a @since tag in a Docblock.
- *
- * @author  Vasil Rangelov <boen.robot@gmail.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class SinceTag extends VersionTag
-{
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php
deleted file mode 100644
index 3400220..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Vasil Rangelov <boen.robot@gmail.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @source tag in a Docblock.
- *
- * @author  Vasil Rangelov <boen.robot@gmail.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class SourceTag extends Tag
-{
-    /**
-     * @var int The starting line, relative to the structural element's
-     *     location.
-     */
-    protected $startingLine = 1;
-
-    /** 
-     * @var int|null The number of lines, relative to the starting line. NULL
-     *     means "to the end".
-     */
-    protected $lineCount = null;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContent()
-    {
-        if (null === $this->content) {
-            $this->content
-                = "{$this->startingLine} {$this->lineCount} {$this->description}";
-        }
-
-        return $this->content;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContent($content)
-    {
-        parent::setContent($content);
-        if (preg_match(
-            '/^
-                # Starting line
-                ([1-9]\d*)
-                \s*
-                # Number of lines
-                (?:
-                    ((?1))
-                    \s+
-                )?
-                # Description
-                (.*)
-            $/sux',
-            $this->description,
-            $matches
-        )) {
-            $this->startingLine = (int)$matches[1];
-            if (isset($matches[2]) && '' !== $matches[2]) {
-                $this->lineCount = (int)$matches[2];
-            }
-            $this->setDescription($matches[3]);
-            $this->content = $content;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Gets the starting line.
-     *
-     * @return int The starting line, relative to the structural element's
-     *     location.
-     */
-    public function getStartingLine()
-    {
-        return $this->startingLine;
-    }
-
-    /**
-     * Sets the starting line.
-     * 
-     * @param int $startingLine The new starting line, relative to the
-     *     structural element's location.
-     * 
-     * @return $this
-     */
-    public function setStartingLine($startingLine)
-    {
-        $this->startingLine = $startingLine;
-
-        $this->content = null;
-        return $this;
-    }
-
-    /**
-     * Returns the number of lines.
-     *
-     * @return int|null The number of lines, relative to the starting line. NULL
-     *     means "to the end".
-     */
-    public function getLineCount()
-    {
-        return $this->lineCount;
-    }
-
-    /**
-     * Sets the number of lines.
-     * 
-     * @param int|null $lineCount The new number of lines, relative to the
-     *     starting line. NULL means "to the end".
-     * 
-     * @return $this
-     */
-    public function setLineCount($lineCount)
-    {
-        $this->lineCount = $lineCount;
-
-        $this->content = null;
-        return $this;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTag.php
deleted file mode 100644
index 58ee44a..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTag.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @throws tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class ThrowsTag extends ReturnTag
-{
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/UsesTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/UsesTag.php
deleted file mode 100644
index da0d663..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/UsesTag.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @uses tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class UsesTag extends SeeTag
-{
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VarTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VarTag.php
deleted file mode 100644
index 236b2c8..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VarTag.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @var tag in a Docblock.
- *
- * @author  Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class VarTag extends ParamTag
-{
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VersionTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VersionTag.php
deleted file mode 100644
index 260f698..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VersionTag.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Vasil Rangelov <boen.robot@gmail.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Tag;
-
-use phpDocumentor\Reflection\DocBlock\Tag;
-
-/**
- * Reflection class for a @version tag in a Docblock.
- *
- * @author  Vasil Rangelov <boen.robot@gmail.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link    http://phpdoc.org
- */
-class VersionTag extends Tag
-{
-    /**
-     * PCRE regular expression matching a version vector.
-     * Assumes the "x" modifier.
-     */
-    const REGEX_VECTOR = '(?:
-        # Normal release vectors.
-        \d\S*
-        |
-        # VCS version vectors. Per PHPCS, they are expected to
-        # follow the form of the VCS name, followed by ":", followed
-        # by the version vector itself.
-        # By convention, popular VCSes like CVS, SVN and GIT use "$"
-        # around the actual version vector.
-        [^\s\:]+\:\s*\$[^\$]+\$
-    )';
-
-    /** @var string The version vector. */
-    protected $version = '';
-    
-    public function getContent()
-    {
-        if (null === $this->content) {
-            $this->content = "{$this->version} {$this->description}";
-        }
-
-        return $this->content;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContent($content)
-    {
-        parent::setContent($content);
-
-        if (preg_match(
-            '/^
-                # The version vector
-                (' . self::REGEX_VECTOR . ')
-                \s*
-                # The description
-                (.+)?
-            $/sux',
-            $this->description,
-            $matches
-        )) {
-            $this->version = $matches[1];
-            $this->setDescription(isset($matches[2]) ? $matches[2] : '');
-            $this->content = $content;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Gets the version section of the tag.
-     *
-     * @return string The version section of the tag.
-     */
-    public function getVersion()
-    {
-        return $this->version;
-    }
-    
-    /**
-     * Sets the version section of the tag.
-     * 
-     * @param string $version The new version section of the tag.
-     *     An invalid value will set an empty string.
-     * 
-     * @return $this
-     */
-    public function setVersion($version)
-    {
-        $this->version
-            = preg_match('/^' . self::REGEX_VECTOR . '$/ux', $version)
-            ? $version
-            : '';
-
-        $this->content = null;
-        return $this;
-    }
-}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Type/Collection.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Type/Collection.php
deleted file mode 100644
index 90ead3f..0000000
--- a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Type/Collection.php
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-/**
- * phpDocumentor
- *
- * PHP Version 5.3
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-
-namespace phpDocumentor\Reflection\DocBlock\Type;
-
-use phpDocumentor\Reflection\DocBlock\Context;
-
-/**
- * Collection
- *
- * @author    Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license   http://www.opensource.org/licenses/mit-license.php MIT
- * @link      http://phpdoc.org
- */
-class Collection extends \ArrayObject
-{
-    /** @var string Definition of the OR operator for types */
-    const OPERATOR_OR = '|';
-
-    /** @var string Definition of the ARRAY operator for types */
-    const OPERATOR_ARRAY = '[]';
-
-    /** @var string Definition of the NAMESPACE operator in PHP */
-    const OPERATOR_NAMESPACE = '\\';
-
-    /** @var string[] List of recognized keywords */
-    protected static $keywords = array(
-        'string', 'int', 'integer', 'bool', 'boolean', 'float', 'double',
-        'object', 'mixed', 'array', 'resource', 'void', 'null', 'scalar',
-        'callback', 'callable', 'false', 'true', 'self', '$this', 'static'
-    );
-
-    /**
-     * Current invoking location.
-     *
-     * This is used to prepend to type with a relative location.
-     * May also be 'default' or 'global', in which case they are ignored.
-     *
-     * @var Context
-     */
-    protected $context = null;
-
-    /**
-     * Registers the namespace and aliases; uses that to add and expand the
-     * given types.
-     *
-     * @param string[] $types    Array containing a list of types to add to this
-     *     container.
-     * @param Context  $location The current invoking location.
-     */
-    public function __construct(
-        array $types = array(),
-        Context $context = null
-    ) {
-        $this->context = null === $context ? new Context() : $context;
-
-        foreach ($types as $type) {
-            $this->add($type);
-        }
-    }
-
-    /**
-     * Returns the current invoking location.
-     *
-     * @return Context
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-
-    /**
-     * Adds a new type to the collection and expands it if it contains a
-     * relative namespace.
-     *
-     * If a class in the type contains a relative namespace than this collection
-     * will try to expand that into a FQCN.
-     *
-     * @param string $type A 'Type' as defined in the phpDocumentor
-     *     documentation.
-     *
-     * @throws \InvalidArgumentException if a non-string argument is passed.
-     *
-     * @see http://phpdoc.org/docs/latest/for-users/types.html for the
-     *     definition of a type.
-     *
-     * @return void
-     */
-    public function add($type)
-    {
-        if (!is_string($type)) {
-            throw new \InvalidArgumentException(
-                'A type should be represented by a string, received: '
-                .var_export($type, true)
-            );
-        }
-
-        // separate the type by the OR operator
-        $type_parts = explode(self::OPERATOR_OR, $type);
-        foreach ($type_parts as $part) {
-            $expanded_type = $this->expand($part);
-            if ($expanded_type) {
-                $this[] = $expanded_type;
-            }
-        }
-    }
-    
-    /**
-     * Returns a string representation of the collection.
-     * 
-     * @return string The resolved types across the collection, separated with
-     *     {@link self::OPERATOR_OR}.
-     */
-    public function __toString()
-    {
-        return implode(self::OPERATOR_OR, $this->getArrayCopy());
-    }
-
-    /**
-     * Analyzes the given type and returns the FQCN variant.
-     *
-     * When a type is provided this method checks whether it is not a keyword or
-     * Fully Qualified Class Name. If so it will use the given namespace and
-     * aliases to expand the type to a FQCN representation.
-     *
-     * This method only works as expected if the namespace and aliases are set;
-     * no dynamic reflection is being performed here.
-     *
-     * @param string $type The relative or absolute type.
-     *
-     * @uses getNamespace to determine with what to prefix the type name.
-     * @uses getNamespaceAliases to check whether the first part of the relative
-     *     type name should not be replaced with another namespace.
-     *
-     * @return string
-     */
-    protected function expand($type)
-    {
-        $type = trim($type);
-        if (!$type) {
-            return '';
-        }
-
-        if ($this->isTypeAnArray($type)) {
-            return $this->expand(substr($type, 0, -2)) . self::OPERATOR_ARRAY;
-        }
-
-        if ($this->isRelativeType($type) && !$this->isTypeAKeyword($type)) {
-            $type_parts = explode(self::OPERATOR_NAMESPACE, $type, 2);
-
-            $namespace_aliases = $this->context->getNamespaceAliases();
-            // if the first segment is not an alias; prepend namespace name and
-            // return
-            if (!isset($namespace_aliases[$type_parts[0]])) {
-                $namespace = $this->context->getNamespace();
-                if ('' !== $namespace) {
-                    $namespace .= self::OPERATOR_NAMESPACE;
-                }
-                return self::OPERATOR_NAMESPACE . $namespace . $type;
-            }
-
-            $type_parts[0] = $namespace_aliases[$type_parts[0]];
-            $type = implode(self::OPERATOR_NAMESPACE, $type_parts);
-        }
-
-        return $type;
-    }
-
-    /**
-     * Detects whether the given type represents an array.
-     *
-     * @param string $type A relative or absolute type as defined in the
-     *     phpDocumentor documentation.
-     *
-     * @return bool
-     */
-    protected function isTypeAnArray($type)
-    {
-        return substr($type, -2) === self::OPERATOR_ARRAY;
-    }
-
-    /**
-     * Detects whether the given type represents a PHPDoc keyword.
-     *
-     * @param string $type A relative or absolute type as defined in the
-     *     phpDocumentor documentation.
-     *
-     * @return bool
-     */
-    protected function isTypeAKeyword($type)
-    {
-        return in_array(strtolower($type), static::$keywords, true);
-    }
-
-    /**
-     * Detects whether the given type represents a relative or absolute path.
-     *
-     * This method will detect keywords as being absolute; even though they are
-     * not preceeded by a namespace separator.
-     *
-     * @param string $type A relative or absolute type as defined in the
-     *     phpDocumentor documentation.
-     *
-     * @return bool
-     */
-    protected function isRelativeType($type)
-    {
-        return ($type[0] !== self::OPERATOR_NAMESPACE)
-            || $this->isTypeAKeyword($type);
-    }
-}
diff --git a/vendor/phpspec/prophecy/.gitignore b/vendor/phpspec/prophecy/.gitignore
deleted file mode 100644
index c50c8c4..0000000
--- a/vendor/phpspec/prophecy/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.tgz
-*.phar
-bin
-vendor
diff --git a/vendor/phpspec/prophecy/.travis.yml b/vendor/phpspec/prophecy/.travis.yml
deleted file mode 100644
index 004e612..0000000
--- a/vendor/phpspec/prophecy/.travis.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-language: php
-
-php: [5.3, 5.4, 5.5, 5.6, 7, hhvm]
-
-sudo: false
-
-cache:
-  directories:
-    - $HOME/.composer/cache
-
-branches:
-  except:
-    - /^bugfix\/.*$/
-    - /^feature\/.*$/
-    - /^optimization\/.*$/
-
-before_script: travis_retry composer install --no-interaction
-
-script: vendor/bin/phpspec run -fpretty -v
diff --git a/vendor/phpspec/prophecy/CHANGES.md b/vendor/phpspec/prophecy/CHANGES.md
deleted file mode 100644
index c293f0d..0000000
--- a/vendor/phpspec/prophecy/CHANGES.md
+++ /dev/null
@@ -1,122 +0,0 @@
-1.5.0 / 2015-04-27
-==================
-
-  * Add support for PHP7 scalar type hints (thanks @trowski)
-  * Add support for PHP7 return types (thanks @trowski)
-  * Update internal test suite to support PHP7
-
-1.4.1 / 2015-04-27
-==================
-
-  * Fixed bug in closure-based argument tokens (#181)
-
-1.4.0 / 2015-03-27
-==================
-
-  * Fixed errors in return type phpdocs (thanks @sobit)
-  * Fixed stringifying of hash containing one value (thanks @avant1)
-  * Improved clarity of method call expectation exception (thanks @dantleech)
-  * Add ability to specify which argument is returned in willReturnArgument (thanks @coderbyheart)
-  * Add more information to MethodNotFound exceptions (thanks @ciaranmcnulty)
-  * Support for mocking classes with methods that return references (thanks @edsonmedina)
-  * Improved object comparison (thanks @whatthejeff)
-  * Adopted '^' in composer dependencies (thanks @GrahamCampbell)
-  * Fixed non-typehinted arguments being treated as optional (thanks @whatthejeff)
-  * Magic methods are now filtered for keywords (thanks @seagoj)
-  * More readable errors for failure when expecting single calls (thanks @dantleech)
-
-1.3.1 / 2014-11-17
-==================
-
-  * Fix the edge case when failed predictions weren't recorded for `getCheckedPredictions()`
-
-1.3.0 / 2014-11-14
-==================
-
-  * Add a way to get checked predictions with `MethodProphecy::getCheckedPredictions()`
-  * Fix HHVM compatibility
-  * Remove dead code (thanks @stof)
-  * Add support for DirectoryIterators (thanks @shanethehat)
-
-1.2.0 / 2014-07-18
-==================
-
-  * Added support for doubling magic methods documented in the class phpdoc (thanks @armetiz)
-  * Fixed a segfault appearing in some cases (thanks @dmoreaulf)
-  * Fixed the doubling of methods with typehints on non-existent classes (thanks @gquemener)
-  * Added support for internal classes using keywords as method names (thanks @milan)
-  * Added IdenticalValueToken and Argument::is (thanks @florianv)
-  * Removed the usage of scalar typehints in HHVM as HHVM 3 does not support them anymore in PHP code (thanks @whatthejeff)
-
-1.1.2 / 2014-01-24
-==================
-
-  * Spy automatically promotes spied method call to an expected one
-
-1.1.1 / 2014-01-15
-==================
-
-  * Added support for HHVM
-
-1.1.0 / 2014-01-01
-==================
-
-  * Changed the generated class names to use a static counter instead of a random number
-  * Added a clss patch for ReflectionClass::newInstance to make its argument optional consistently (thanks @docteurklein)
-  * Fixed mirroring of classes with typehints on non-existent classes (thanks @docteurklein)
-  * Fixed the support of array callables in CallbackPromise and CallbackPrediction (thanks @ciaranmcnulty)
-  * Added support for properties in ObjectStateToken (thanks @adrienbrault)
-  * Added support for mocking classes with a final constructor (thanks @ciaranmcnulty)
-  * Added ArrayEveryEntryToken and Argument::withEveryEntry() (thanks @adrienbrault)
-  * Added an exception when trying to prophesize on a final method instead of ignoring silently (thanks @docteurklein)
-  * Added StringContainToken and Argument::containingString() (thanks @peterjmit)
-  * Added ``shouldNotHaveBeenCalled`` on the MethodProphecy (thanks @ciaranmcnulty)
-  * Fixed the comparison of objects in ExactValuetoken (thanks @sstok)
-  * Deprecated ``shouldNotBeenCalled`` in favor of ``shouldNotHaveBeenCalled``
-
-1.0.4 / 2013-08-10
-==================
-
-  * Better randomness for generated class names (thanks @sstok)
-  * Add support for interfaces into TypeToken and Argument::type() (thanks @sstok)
-  * Add support for old-style (method name === class name) constructors (thanks @l310 for report)
-
-1.0.3 / 2013-07-04
-==================
-
-  * Support callable typehints (thanks @stof)
-  * Do not attempt to autoload arrays when generating code (thanks @MarcoDeBortoli)
-  * New ArrayEntryToken (thanks @kagux)
-
-1.0.2 / 2013-05-19
-==================
-
-  * Logical `AND` token added (thanks @kagux)
-  * Logical `NOT` token added (thanks @kagux)
-  * Add support for setting custom constructor arguments
-  * Properly stringify hashes
-  * Record calls that throw exceptions
-  * Migrate spec suite to PhpSpec 2.0
-
-1.0.1 / 2013-04-30
-==================
-
-  * Fix broken UnexpectedCallException message
-  * Trim AggregateException message
-
-1.0.0 / 2013-04-29
-==================
-
-  * Improve exception messages
-
-1.0.0-BETA2 / 2013-04-03
-========================
-
-  * Add more debug information to CallTimes and Call prediction exception messages
-  * Fix MethodNotFoundException wrong namespace (thanks @gunnarlium)
-  * Fix some typos in the exception messages (thanks @pborreli)
-
-1.0.0-BETA1 / 2013-03-25
-========================
-
-  * Initial release
diff --git a/vendor/phpspec/prophecy/CONTRIBUTING.md b/vendor/phpspec/prophecy/CONTRIBUTING.md
deleted file mode 100644
index 3674aac..0000000
--- a/vendor/phpspec/prophecy/CONTRIBUTING.md
+++ /dev/null
@@ -1,21 +0,0 @@
-Contributing
-------------
-
-Prophecy is an open source, community-driven project. If you'd like to contribute,
-feel free to do this, but remember to follow this few simple rules:
-
-- Make your feature addition or bug fix,
-- Add either specs or examples for any changes you're making (bugfixes or additions)
-  (please look into `spec/` folder for some examples). This is important so we don't break
-  it in a future version unintentionally,
-- Commit your code, but do not mess with `CHANGES.md`,
-
-Running tests
--------------
-
-Make sure that you don't break anything with your changes by running:
-
-```bash
-$> composer install --dev --prefer-dist
-$> vendor/bin/phpspec run
-```
diff --git a/vendor/phpspec/prophecy/LICENSE b/vendor/phpspec/prophecy/LICENSE
deleted file mode 100644
index c8b3647..0000000
--- a/vendor/phpspec/prophecy/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-Copyright (c) 2013 Konstantin Kudryashov <ever.zet@gmail.com>
-                   Marcello Duarte <marcello.duarte@gmail.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.
diff --git a/vendor/phpspec/prophecy/README.md b/vendor/phpspec/prophecy/README.md
deleted file mode 100644
index 17e57c3..0000000
--- a/vendor/phpspec/prophecy/README.md
+++ /dev/null
@@ -1,390 +0,0 @@
-# Prophecy
-
-[![Build Status](https://travis-ci.org/phpspec/prophecy.svg?branch=master)](https://travis-ci.org/phpspec/prophecy)
-
-Prophecy is a highly opinionated yet very powerful and flexible PHP object mocking
-framework. Though initially it was created to fulfil phpspec2 needs, it is flexible
-enough to be used inside any testing framework out there with minimal effort.
-
-## A simple example
-
-```php
-<?php
-
-class UserTest extends PHPUnit_Framework_TestCase
-{
-    private $prophet;
-
-    public function testPasswordHashing()
-    {
-        $hasher = $this->prophet->prophesize('App\Security\Hasher');
-        $user   = new App\Entity\User($hasher->reveal());
-
-        $hasher->generateHash($user, 'qwerty')->willReturn('hashed_pass');
-
-        $user->setPassword('qwerty');
-
-        $this->assertEquals('hashed_pass', $user->getPassword());
-    }
-
-    protected function setup()
-    {
-        $this->prophet = new \Prophecy\Prophet;
-    }
-
-    protected function tearDown()
-    {
-        $this->prophet->checkPredictions();
-    }
-}
-```
-
-## Installation
-
-### Prerequisites
-
-Prophecy requires PHP 5.3.3 or greater.
-
-### Setup through composer
-
-First, add Prophecy to the list of dependencies inside your `composer.json`:
-
-```json
-{
-    "require-dev": {
-        "phpspec/prophecy": "~1.0"
-    }
-}
-```
-
-Then simply install it with composer:
-
-```bash
-$> composer install --prefer-dist
-```
-
-You can read more about Composer on its [official webpage](http://getcomposer.org).
-
-## How to use it
-
-First of all, in Prophecy every word has a logical meaning, even the name of the library
-itself (Prophecy). When you start feeling that, you'll become very fluid with this
-tool.
-
-For example, Prophecy has been named that way because it concentrates on describing the future
-behavior of objects with very limited knowledge about them. But as with any other prophecy,
-those object prophecies can't create themselves - there should be a Prophet:
-
-```php
-$prophet = new Prophecy\Prophet;
-```
-
-The Prophet creates prophecies by *prophesizing* them:
-
-```php
-$prophecy = $prophet->prophesize();
-```
-
-The result of the `prophesize()` method call is a new object of class `ObjectProphecy`. Yes,
-that's your specific object prophecy, which describes how your object would behave
-in the near future. But first, you need to specify which object you're talking about,
-right?
-
-```php
-$prophecy->willExtend('stdClass');
-$prophecy->willImplement('SessionHandlerInterface');
-```
-
-There are 2 interesting calls - `willExtend` and `willImplement`. The first one tells
-object prophecy that our object should extend specific class, the second one says that
-it should implement some interface. Obviously, objects in PHP can implement multiple
-interfaces, but extend only one parent class.
-
-### Dummies
-
-Ok, now we have our object prophecy. What can we do with it? First of all, we can get
-our object *dummy* by revealing its prophecy:
-
-```php
-$dummy = $prophecy->reveal();
-```
-
-The `$dummy` variable now holds a special dummy object. Dummy objects are objects that extend
-and/or implement preset classes/interfaces by overriding all their public methods. The key
-point about dummies is that they do not hold any logic - they just do nothing. Any method
-of the dummy will always return `null` and the dummy will never throw any exceptions.
-Dummy is your friend if you don't care about the actual behavior of this double and just need
-a token object to satisfy a method typehint.
-
-You need to understand one thing - a dummy is not a prophecy. Your object prophecy is still
-assigned to `$prophecy` variable and in order to manipulate with your expectations, you
-should work with it. `$dummy` is a dummy - a simple php object that tries to fulfil your
-prophecy.
-
-### Stubs
-
-Ok, now we know how to create basic prophecies and reveal dummies from them. That's
-awesome if we don't care about our _doubles_ (objects that reflect originals)
-interactions. If we do, we need to use *stubs* or *mocks*.
-
-A stub is an object double, which doesn't have any expectations about the object behavior,
-but when put in specific environment, behaves in specific way. Ok, I know, it's cryptic,
-but bear with me for a minute. Simply put, a stub is a dummy, which depending on the called
-method signature does different things (has logic). To create stubs in Prophecy:
-
-```php
-$prophecy->read('123')->willReturn('value');
-```
-
-Oh wow. We've just made an arbitrary call on the object prophecy? Yes, we did. And this
-call returned us a new object instance of class `MethodProphecy`. Yep, that's a specific
-method with arguments prophecy. Method prophecies give you the ability to create method
-promises or predictions. We'll talk about method predictions later in the _Mocks_ section.
-
-#### Promises
-
-Promises are logical blocks, that represent your fictional methods in prophecy terms
-and they are handled by the `MethodProphecy::will(PromiseInterface $promise)` method.
-As a matter of fact, the call that we made earlier (`willReturn('value')`) is a simple
-shortcut to:
-
-```php
-$prophecy->read('123')->will(new Prophecy\Promise\ReturnPromise(array('value')));
-```
-
-This promise will cause any call to our double's `read()` method with exactly one
-argument - `'123'` to always return `'value'`. But that's only for this
-promise, there's plenty others you can use:
-
-- `ReturnPromise` or `->willReturn(1)` - returns a value from a method call
-- `ReturnArgumentPromise` or `->willReturnArgument($index)` - returns the nth method argument from call
-- `ThrowPromise` or `->willThrow` - causes the method to throw specific exception
-- `CallbackPromise` or `->will($callback)` - gives you a quick way to define your own custom logic
-
-Keep in mind, that you can always add even more promises by implementing
-`Prophecy\Promise\PromiseInterface`.
-
-#### Method prophecies idempotency
-
-Prophecy enforces same method prophecies and, as a consequence, same promises and
-predictions for the same method calls with the same arguments. This means:
-
-```php
-$methodProphecy1 = $prophecy->read('123');
-$methodProphecy2 = $prophecy->read('123');
-$methodProphecy3 = $prophecy->read('321');
-
-$methodProphecy1 === $methodProphecy2;
-$methodProphecy1 !== $methodProphecy3;
-```
-
-That's interesting, right? Now you might ask me how would you define more complex
-behaviors where some method call changes behavior of others. In PHPUnit or Mockery
-you do that by predicting how many times your method will be called. In Prophecy,
-you'll use promises for that:
-
-```php
-$user->getName()->willReturn(null);
-
-// For PHP 5.4
-$user->setName('everzet')->will(function () {
-    $this->getName()->willReturn('everzet');
-});
-
-// For PHP 5.3
-$user->setName('everzet')->will(function ($args, $user) {
-    $user->getName()->willReturn('everzet');
-});
-
-// Or
-$user->setName('everzet')->will(function ($args) use ($user) {
-    $user->getName()->willReturn('everzet');
-});
-```
-
-And now it doesn't matter how many times or in which order your methods are called.
-What matters is their behaviors and how well you faked it.
-
-#### Arguments wildcarding
-
-The previous example is awesome (at least I hope it is for you), but that's not
-optimal enough. We hardcoded `'everzet'` in our expectation. Isn't there a better
-way? In fact there is, but it involves understanding what this `'everzet'`
-actually is.
-
-You see, even if method arguments used during method prophecy creation look
-like simple method arguments, in reality they are not. They are argument token
-wildcards.  As a matter of fact, `->setName('everzet')` looks like a simple call just
-because Prophecy automatically transforms it under the hood into:
-
-```php
-$user->setName(new Prophecy\Argument\Token\ExactValueToken('everzet'));
-```
-
-Those argument tokens are simple PHP classes, that implement
-`Prophecy\Argument\Token\TokenInterface` and tell Prophecy how to compare real arguments
-with your expectations. And yes, those classnames are damn big. That's why there's a
-shortcut class `Prophecy\Argument`, which you can use to create tokens like that:
-
-```php
-use Prophecy\Argument;
-
-$user->setName(Argument::exact('everzet'));
-```
-
-`ExactValueToken` is not very useful in our case as it forced us to hardcode the username.
-That's why Prophecy comes bundled with a bunch of other tokens:
-
-- `IdenticalValueToken` or `Argument::is($value)` - checks that the argument is identical to a specific value
-- `ExactValueToken` or `Argument::exact($value)` - checks that the argument matches a specific value
-- `TypeToken` or `Argument::type($typeOrClass)` - checks that the argument matches a specific type or
-  classname
-- `ObjectStateToken` or `Argument::which($method, $value)` - checks that the argument method returns
-  a specific value
-- `CallbackToken` or `Argument::that(callback)` - checks that the argument matches a custom callback
-- `AnyValueToken` or `Argument::any()` - matches any argument
-- `AnyValuesToken` or `Argument::cetera()` - matches any arguments to the rest of the signature
-- `StringContainsToken` or `Argument::containingString($value)` - checks that the argument contains a specific string value
-
-And you can add even more by implementing `TokenInterface` with your own custom classes.
-
-So, let's refactor our initial `{set,get}Name()` logic with argument tokens:
-
-```php
-use Prophecy\Argument;
-
-$user->getName()->willReturn(null);
-
-// For PHP 5.4
-$user->setName(Argument::type('string'))->will(function ($args) {
-    $this->getName()->willReturn($args[0]);
-});
-
-// For PHP 5.3
-$user->setName(Argument::type('string'))->will(function ($args, $user) {
-    $user->getName()->willReturn($args[0]);
-});
-
-// Or
-$user->setName(Argument::type('string'))->will(function ($args) use ($user) {
-    $user->getName()->willReturn($args[0]);
-});
-```
-
-That's it. Now our `{set,get}Name()` prophecy will work with any string argument provided to it.
-We've just described how our stub object should behave, even though the original object could have
-no behavior whatsoever.
-
-One last bit about arguments now. You might ask, what happens in case of:
-
-```php
-use Prophecy\Argument;
-
-$user->getName()->willReturn(null);
-
-// For PHP 5.4
-$user->setName(Argument::type('string'))->will(function ($args) {
-    $this->getName()->willReturn($args[0]);
-});
-
-// For PHP 5.3
-$user->setName(Argument::type('string'))->will(function ($args, $user) {
-    $user->getName()->willReturn($args[0]);
-});
-
-// Or
-$user->setName(Argument::type('string'))->will(function ($args) use ($user) {
-    $user->getName()->willReturn($args[0]);
-});
-
-$user->setName(Argument::any())->will(function () {
-});
-```
-
-Nothing. Your stub will continue behaving the way it did before. That's because of how
-arguments wildcarding works. Every argument token type has a different score level, which
-wildcard then uses to calculate the final arguments match score and use the method prophecy
-promise that has the highest score. In this case, `Argument::type()` in case of success
-scores `5` and `Argument::any()` scores `3`. So the type token wins, as does the first
-`setName()` method prophecy and its promise. The simple rule of thumb - more precise token
-always wins.
-
-#### Getting stub objects
-
-Ok, now we know how to define our prophecy method promises, let's get our stub from
-it:
-
-```php
-$stub = $prophecy->reveal();
-```
-
-As you might see, the only difference between how we get dummies and stubs is that with
-stubs we describe every object conversation instead of just agreeing with `null` returns
-(object being *dummy*). As a matter of fact, after you define your first promise
-(method call), Prophecy will force you to define all the communications - it throws
-the `UnexpectedCallException` for any call you didn't describe with object prophecy before
-calling it on a stub.
-
-### Mocks
-
-Now we know how to define doubles without behavior (dummies) and doubles with behavior, but
-no expectations (stubs). What's left is doubles for which we have some expectations. These
-are called mocks and in Prophecy they look almost exactly the same as stubs, except that
-they define *predictions* instead of *promises* on method prophecies:
-
-```php
-$entityManager->flush()->shouldBeCalled();
-```
-
-#### Predictions
-
-The `shouldBeCalled()` method here assigns `CallPrediction` to our method prophecy.
-Predictions are a delayed behavior check for your prophecies. You see, during the entire lifetime
-of your doubles, Prophecy records every single call you're making against it inside your
-code. After that, Prophecy can use this collected information to check if it matches defined
-predictions. You can assign predictions to method prophecies using the
-`MethodProphecy::should(PredictionInterface $prediction)` method. As a matter of fact,
-the `shouldBeCalled()` method we used earlier is just a shortcut to:
-
-```php
-$entityManager->flush()->should(new Prophecy\Prediction\CallPrediction());
-```
-
-It checks if your method of interest (that matches both the method name and the arguments wildcard)
-was called 1 or more times. If the prediction failed then it throws an exception. When does this
-check happen? Whenever you call `checkPredictions()` on the main Prophet object:
-
-```php
-$prophet->checkPredictions();
-```
-
-In PHPUnit, you would want to put this call into the `tearDown()` method. If no predictions
-are defined, it would do nothing. So it won't harm to call it after every test.
-
-There are plenty more predictions you can play with:
-
-- `CallPrediction` or `shouldBeCalled()` - checks that the method has been called 1 or more times
-- `NoCallsPrediction` or `shouldNotBeCalled()` - checks that the method has not been called
-- `CallTimesPrediction` or `shouldBeCalledTimes($count)` - checks that the method has been called
-  `$count` times
-- `CallbackPrediction` or `should($callback)` - checks the method against your own custom callback
-
-Of course, you can always create your own custom prediction any time by implementing
-`PredictionInterface`.
-
-### Spies
-
-The last bit of awesomeness in Prophecy is out-of-the-box spies support. As I said in the previous
-section, Prophecy records every call made during the double's entire lifetime. This means
-you don't need to record predictions in order to check them. You can also do it
-manually by using the `MethodProphecy::shouldHave(PredictionInterface $prediction)` method:
-
-```php
-$em = $prophet->prophesize('Doctrine\ORM\EntityManager');
-
-$controller->createUser($em->reveal());
-
-$em->flush()->shouldHaveBeenCalled();
-```
-
-Such manipulation with doubles is called spying. And with Prophecy it just works.
diff --git a/vendor/phpspec/prophecy/composer.json b/vendor/phpspec/prophecy/composer.json
deleted file mode 100644
index 654aaad..0000000
--- a/vendor/phpspec/prophecy/composer.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-    "name":         "phpspec/prophecy",
-    "description":  "Highly opinionated mocking framework for PHP 5.3+",
-    "keywords":     ["Mock", "Stub", "Dummy", "Double", "Fake", "Spy"],
-    "homepage":     "https://github.com/phpspec/prophecy",
-    "type":         "library",
-    "license":      "MIT",
-    "authors":      [
-        {
-            "name":      "Konstantin Kudryashov",
-            "email":     "ever.zet@gmail.com",
-            "homepage":  "http://everzet.com"
-        },
-        {
-            "name":      "Marcello Duarte",
-            "email":     "marcello.duarte@gmail.com"
-        }
-    ],
-    "require": {
-        "phpdocumentor/reflection-docblock": "~2.0",
-        "sebastian/comparator":              "~1.1",
-        "doctrine/instantiator":             "^1.0.2"
-    },
-
-    "require-dev": {
-        "phpspec/phpspec": "~2.0"
-    },
-
-    "autoload": {
-        "psr-0": {
-            "Prophecy\\": "src/"
-        }
-    },
-
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.4.x-dev"
-        }
-    }
-}
diff --git a/vendor/phpspec/prophecy/composer.lock b/vendor/phpspec/prophecy/composer.lock
deleted file mode 100644
index 0c5521a..0000000
--- a/vendor/phpspec/prophecy/composer.lock
+++ /dev/null
@@ -1,731 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
-        "This file is @generated automatically"
-    ],
-    "hash": "642fa332c5fa99e1d5086035641b5a74",
-    "packages": [
-        {
-            "name": "doctrine/instantiator",
-            "version": "1.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3,<8.0-DEV"
-            },
-            "require-dev": {
-                "athletic/athletic": "~0.1.8",
-                "ext-pdo": "*",
-                "ext-phar": "*",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "~2.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com",
-                    "homepage": "http://ocramius.github.com/"
-                }
-            ],
-            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
-            "keywords": [
-                "constructor",
-                "instantiate"
-            ],
-            "time": "2015-06-14 21:17:01"
-        },
-        {
-            "name": "phpdocumentor/reflection-docblock",
-            "version": "2.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
-                "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "suggest": {
-                "dflydev/markdown": "~1.0",
-                "erusev/parsedown": "~1.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "phpDocumentor": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "mike.vanriel@naenius.com"
-                }
-            ],
-            "time": "2015-02-03 12:10:50"
-        },
-        {
-            "name": "sebastian/comparator",
-            "version": "1.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
-                "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "sebastian/diff": "~1.2",
-                "sebastian/exporter": "~1.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Provides the functionality to compare PHP values for equality",
-            "homepage": "http://www.github.com/sebastianbergmann/comparator",
-            "keywords": [
-                "comparator",
-                "compare",
-                "equality"
-            ],
-            "time": "2015-07-26 15:48:44"
-        },
-        {
-            "name": "sebastian/diff",
-            "version": "1.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
-                "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Kore Nordmann",
-                    "email": "mail@kore-nordmann.de"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                }
-            ],
-            "description": "Diff implementation",
-            "homepage": "http://www.github.com/sebastianbergmann/diff",
-            "keywords": [
-                "diff"
-            ],
-            "time": "2015-02-22 15:13:53"
-        },
-        {
-            "name": "sebastian/exporter",
-            "version": "1.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "7ae5513327cb536431847bcc0c10edba2701064e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
-                "reference": "7ae5513327cb536431847bcc0c10edba2701064e",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "sebastian/recursion-context": "~1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.2.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Volker Dusch",
-                    "email": "github@wallbash.com"
-                },
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides the functionality to export PHP variables for visualization",
-            "homepage": "http://www.github.com/sebastianbergmann/exporter",
-            "keywords": [
-                "export",
-                "exporter"
-            ],
-            "time": "2015-06-21 07:55:53"
-        },
-        {
-            "name": "sebastian/recursion-context",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/sebastianbergmann/recursion-context.git",
-                "reference": "994d4a811bafe801fb06dccbee797863ba2792ba"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
-                "reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
-                },
-                {
-                    "name": "Adam Harvey",
-                    "email": "aharvey@php.net"
-                }
-            ],
-            "description": "Provides functionality to recursively process PHP variables",
-            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
-            "time": "2015-06-21 08:04:50"
-        }
-    ],
-    "packages-dev": [
-        {
-            "name": "phpspec/php-diff",
-            "version": "v1.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpspec/php-diff.git",
-                "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/php-diff/zipball/30e103d19519fe678ae64a60d77884ef3d71b28a",
-                "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a",
-                "shasum": ""
-            },
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "Diff": "lib/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Chris Boulton",
-                    "homepage": "http://github.com/chrisboulton",
-                    "role": "Original developer"
-                }
-            ],
-            "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).",
-            "time": "2013-11-01 13:02:21"
-        },
-        {
-            "name": "phpspec/phpspec",
-            "version": "2.2.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpspec/phpspec.git",
-                "reference": "e9a40577323e67f1de2e214abf32976a0352d8f8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/phpspec/zipball/e9a40577323e67f1de2e214abf32976a0352d8f8",
-                "reference": "e9a40577323e67f1de2e214abf32976a0352d8f8",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.0.1",
-                "php": ">=5.3.3",
-                "phpspec/php-diff": "~1.0.0",
-                "phpspec/prophecy": "~1.4",
-                "sebastian/exporter": "~1.0",
-                "symfony/console": "~2.3",
-                "symfony/event-dispatcher": "~2.1",
-                "symfony/finder": "~2.1",
-                "symfony/process": "~2.1",
-                "symfony/yaml": "~2.1"
-            },
-            "require-dev": {
-                "behat/behat": "^3.0.11",
-                "bossa/phpspec2-expect": "~1.0",
-                "phpunit/phpunit": "~4.4",
-                "symfony/filesystem": "~2.1",
-                "symfony/process": "~2.1"
-            },
-            "suggest": {
-                "phpspec/nyan-formatters": "~1.0 – Adds Nyan formatters"
-            },
-            "bin": [
-                "bin/phpspec"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.2.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "PhpSpec": "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",
-                    "homepage": "http://marcelloduarte.net/"
-                }
-            ],
-            "description": "Specification-oriented BDD framework for PHP 5.3+",
-            "homepage": "http://phpspec.net/",
-            "keywords": [
-                "BDD",
-                "SpecBDD",
-                "TDD",
-                "spec",
-                "specification",
-                "testing",
-                "tests"
-            ],
-            "time": "2015-05-30 15:21:40"
-        },
-        {
-            "name": "symfony/console",
-            "version": "v2.7.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Console.git",
-                "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Console/zipball/d6cf02fe73634c96677e428f840704bfbcaec29e",
-                "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "psr/log": "~1.0",
-                "symfony/event-dispatcher": "~2.1",
-                "symfony/phpunit-bridge": "~2.7",
-                "symfony/process": "~2.1"
-            },
-            "suggest": {
-                "psr/log": "For using the console logger",
-                "symfony/event-dispatcher": "",
-                "symfony/process": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Console\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Console Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-07-28 15:18:12"
-        },
-        {
-            "name": "symfony/event-dispatcher",
-            "version": "v2.7.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/EventDispatcher.git",
-                "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/9310b5f9a87ec2ea75d20fec0b0017c77c66dac3",
-                "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "psr/log": "~1.0",
-                "symfony/config": "~2.0,>=2.0.5",
-                "symfony/dependency-injection": "~2.6",
-                "symfony/expression-language": "~2.6",
-                "symfony/phpunit-bridge": "~2.7",
-                "symfony/stopwatch": "~2.3"
-            },
-            "suggest": {
-                "symfony/dependency-injection": "",
-                "symfony/http-kernel": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\EventDispatcher\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony EventDispatcher Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-06-18 19:21:56"
-        },
-        {
-            "name": "symfony/finder",
-            "version": "v2.7.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Finder.git",
-                "reference": "ae0f363277485094edc04c9f3cbe595b183b78e4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Finder/zipball/ae0f363277485094edc04c9f3cbe595b183b78e4",
-                "reference": "ae0f363277485094edc04c9f3cbe595b183b78e4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "~2.7"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Finder\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Finder Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-07-09 16:07:40"
-        },
-        {
-            "name": "symfony/process",
-            "version": "v2.7.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Process.git",
-                "reference": "48aeb0e48600321c272955132d7606ab0a49adb3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Process/zipball/48aeb0e48600321c272955132d7606ab0a49adb3",
-                "reference": "48aeb0e48600321c272955132d7606ab0a49adb3",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "~2.7"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Process\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Process Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-07-01 11:25:50"
-        },
-        {
-            "name": "symfony/yaml",
-            "version": "v2.7.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Yaml.git",
-                "reference": "71340e996171474a53f3d29111d046be4ad8a0ff"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Yaml/zipball/71340e996171474a53f3d29111d046be4ad8a0ff",
-                "reference": "71340e996171474a53f3d29111d046be4ad8a0ff",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.9"
-            },
-            "require-dev": {
-                "symfony/phpunit-bridge": "~2.7"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.7-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Yaml\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Yaml Component",
-            "homepage": "https://symfony.com",
-            "time": "2015-07-28 14:07:07"
-        }
-    ],
-    "aliases": [],
-    "minimum-stability": "stable",
-    "stability-flags": [],
-    "prefer-stable": false,
-    "prefer-lowest": false,
-    "platform": [],
-    "platform-dev": []
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php
deleted file mode 100644
index 5d6a2da..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument\Token\TokenInterface;
-
-class ArgumentsWildcardSpec extends ObjectBehavior
-{
-    /**
-     * @param \stdClass $object
-     */
-    function it_wraps_non_token_arguments_into_ExactValueToken($object)
-    {
-        $this->beConstructedWith(array(42, 'zet', $object));
-
-        $class = get_class($object->getWrappedObject());
-        $hash  = spl_object_hash($object->getWrappedObject());
-
-        $this->__toString()->shouldReturn("exact(42), exact(\"zet\"), exact($class:$hash Object (\n    'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))");
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token1
-     * @param \Prophecy\Argument\Token\TokenInterface $token2
-     * @param \Prophecy\Argument\Token\TokenInterface $token3
-     */
-    function it_generates_string_representation_from_all_tokens_imploded($token1, $token2, $token3)
-    {
-        $token1->__toString()->willReturn('token_1');
-        $token2->__toString()->willReturn('token_2');
-        $token3->__toString()->willReturn('token_3');
-
-        $this->beConstructedWith(array($token1, $token2, $token3));
-        $this->__toString()->shouldReturn('token_1, token_2, token_3');
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token
-     */
-    function it_exposes_list_of_tokens($token)
-    {
-        $this->beConstructedWith(array($token));
-
-        $this->getTokens()->shouldReturn(array($token));
-    }
-
-    function it_returns_score_of_1_if_there_are_no_tokens_and_arguments()
-    {
-        $this->beConstructedWith(array());
-
-        $this->scoreArguments(array())->shouldReturn(1);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token1
-     * @param \Prophecy\Argument\Token\TokenInterface $token2
-     * @param \Prophecy\Argument\Token\TokenInterface $token3
-     */
-    function it_should_return_match_score_based_on_all_tokens_score($token1, $token2, $token3)
-    {
-        $token1->scoreArgument('one')->willReturn(3);
-        $token1->isLast()->willReturn(false);
-        $token2->scoreArgument(2)->willReturn(5);
-        $token2->isLast()->willReturn(false);
-        $token3->scoreArgument($obj = new \stdClass())->willReturn(10);
-        $token3->isLast()->willReturn(false);
-
-        $this->beConstructedWith(array($token1, $token2, $token3));
-        $this->scoreArguments(array('one', 2, $obj))->shouldReturn(18);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token1
-     * @param \Prophecy\Argument\Token\TokenInterface $token2
-     * @param \Prophecy\Argument\Token\TokenInterface $token3
-     */
-    function it_returns_false_if_there_is_less_arguments_than_tokens($token1, $token2, $token3)
-    {
-        $token1->scoreArgument('one')->willReturn(3);
-        $token1->isLast()->willReturn(false);
-        $token2->scoreArgument(2)->willReturn(5);
-        $token2->isLast()->willReturn(false);
-        $token3->scoreArgument(null)->willReturn(false);
-        $token3->isLast()->willReturn(false);
-
-        $this->beConstructedWith(array($token1, $token2, $token3));
-        $this->scoreArguments(array('one', 2))->shouldReturn(false);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token1
-     * @param \Prophecy\Argument\Token\TokenInterface $token2
-     * @param \Prophecy\Argument\Token\TokenInterface $token3
-     */
-    function it_returns_false_if_there_is_less_tokens_than_arguments($token1, $token2, $token3)
-    {
-        $token1->scoreArgument('one')->willReturn(3);
-        $token1->isLast()->willReturn(false);
-        $token2->scoreArgument(2)->willReturn(5);
-        $token2->isLast()->willReturn(false);
-        $token3->scoreArgument($obj = new \stdClass())->willReturn(10);
-        $token3->isLast()->willReturn(false);
-
-        $this->beConstructedWith(array($token1, $token2, $token3));
-        $this->scoreArguments(array('one', 2, $obj, 4))->shouldReturn(false);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token1
-     * @param \Prophecy\Argument\Token\TokenInterface $token2
-     * @param \Prophecy\Argument\Token\TokenInterface $token3
-     */
-    function it_should_return_false_if_one_of_the_tokens_returns_false($token1, $token2, $token3)
-    {
-        $token1->scoreArgument('one')->willReturn(3);
-        $token1->isLast()->willReturn(false);
-        $token2->scoreArgument(2)->willReturn(false);
-        $token2->isLast()->willReturn(false);
-        $token3->scoreArgument($obj = new \stdClass())->willReturn(10);
-        $token3->isLast()->willReturn(false);
-
-        $this->beConstructedWith(array($token1, $token2, $token3));
-        $this->scoreArguments(array('one', 2, $obj))->shouldReturn(false);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token1
-     * @param \Prophecy\Argument\Token\TokenInterface $token2
-     * @param \Prophecy\Argument\Token\TokenInterface $token3
-     */
-    function it_should_calculate_score_until_last_token($token1, $token2, $token3)
-    {
-        $token1->scoreArgument('one')->willReturn(3);
-        $token1->isLast()->willReturn(false);
-
-        $token2->scoreArgument(2)->willReturn(7);
-        $token2->isLast()->willReturn(true);
-
-        $token3->scoreArgument($obj = new \stdClass())->willReturn(10);
-        $token3->isLast()->willReturn(false);
-
-        $this->beConstructedWith(array($token1, $token2, $token3));
-        $this->scoreArguments(array('one', 2, $obj))->shouldReturn(10);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php
deleted file mode 100644
index a43e923..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-
-class AnyValueTokenSpec extends ObjectBehavior
-{
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_is_not_last()
-    {
-        $this->shouldNotBeLast();
-    }
-
-    function its_string_representation_is_star()
-    {
-        $this->__toString()->shouldReturn('*');
-    }
-
-    function it_scores_any_argument_as_3()
-    {
-        $this->scoreArgument(42)->shouldReturn(3);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php
deleted file mode 100644
index c29076f..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-
-class AnyValuesTokenSpec extends ObjectBehavior
-{
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_is_last()
-    {
-        $this->shouldBeLast();
-    }
-
-    function its_string_representation_is_star_with_followup()
-    {
-        $this->__toString()->shouldReturn('* [, ...]');
-    }
-
-    function it_scores_any_argument_as_2()
-    {
-        $this->scoreArgument(42)->shouldReturn(2);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php
deleted file mode 100644
index 5d040d5..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-
-class ArrayCountTokenSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith(2);
-    }
-
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_is_not_last()
-    {
-        $this->shouldNotBeLast();
-    }
-
-    function it_scores_6_if_argument_array_has_proper_count()
-    {
-        $this->scoreArgument(array(1,2))->shouldReturn(6);
-    }
-
-    /**
-     * @param \Countable $countable
-     */
-    function it_scores_6_if_argument_countable_object_has_proper_count($countable)
-    {
-        $countable->count()->willReturn(2);
-        $this->scoreArgument($countable)->shouldReturn(6);
-    }
-
-    function it_does_not_score_if_argument_is_neither_array_nor_countable_object()
-    {
-        $this->scoreArgument('string')->shouldBe(false);
-        $this->scoreArgument(5)->shouldBe(false);
-        $this->scoreArgument(new \stdClass)->shouldBe(false);
-    }
-
-    function it_does_not_score_if_argument_array_has_wrong_count()
-    {
-        $this->scoreArgument(array(1))->shouldReturn(false);
-    }
-
-    /**
-     * @param \Countable $countable
-     */
-    function it_does_not_score_if_argument_countable_object_has_wrong_count($countable)
-    {
-        $countable->count()->willReturn(3);
-        $this->scoreArgument($countable)->shouldReturn(false);
-    }
-
-    function it_has_simple_string_representation()
-    {
-        $this->__toString()->shouldBe('count(2)');
-    }
-
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php
deleted file mode 100644
index 8ff0f15..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php
+++ /dev/null
@@ -1,229 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-use Prophecy\Exception\InvalidArgumentException;
-
-class ArrayEntryTokenSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $key
-     * @param \Prophecy\Argument\Token\TokenInterface $value
-     */
-    function let($key, $value)
-    {
-        $this->beConstructedWith($key, $value);
-    }
-
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_is_not_last()
-    {
-        $this->shouldNotBeLast();
-    }
-
-    function it_holds_key_and_value($key, $value)
-    {
-        $this->getKey()->shouldBe($key);
-        $this->getValue()->shouldBe($value);
-    }
-
-    function its_string_representation_tells_that_its_an_array_containing_the_key_value_pair($key, $value)
-    {
-        $key->__toString()->willReturn('key');
-        $value->__toString()->willReturn('value');
-        $this->__toString()->shouldBe('[..., key => value, ...]');
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $key
-     * @param \stdClass                               $object
-     */
-    function it_wraps_non_token_value_into_ExactValueToken($key, $object)
-    {
-        $this->beConstructedWith($key, $object);
-        $this->getValue()->shouldHaveType('\Prophecy\Argument\Token\ExactValueToken');
-    }
-
-    /**
-     * @param \stdClass                               $object
-     * @param \Prophecy\Argument\Token\TokenInterface $value
-     */
-    function it_wraps_non_token_key_into_ExactValueToken($object, $value)
-    {
-        $this->beConstructedWith($object, $value);
-        $this->getKey()->shouldHaveType('\Prophecy\Argument\Token\ExactValueToken');
-    }
-
-    function it_scores_array_half_of_combined_scores_from_key_and_value_tokens($key, $value)
-    {
-        $key->scoreArgument('key')->willReturn(4);
-        $value->scoreArgument('value')->willReturn(6);
-        $this->scoreArgument(array('key'=>'value'))->shouldBe(5);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $key
-     * @param \Prophecy\Argument\Token\TokenInterface $value
-     * @param \Iterator                               $object
-     */
-    function it_scores_traversable_object_half_of_combined_scores_from_key_and_value_tokens($key, $value, $object)
-    {
-        $object->current()->will(function () use ($object) {
-            $object->valid()->willReturn(false);
-
-            return 'value';
-        });
-        $object->key()->willReturn('key');
-        $object->rewind()->willReturn(null);
-        $object->next()->willReturn(null);
-        $object->valid()->willReturn(true);
-        $key->scoreArgument('key')->willReturn(6);
-        $value->scoreArgument('value')->willReturn(2);
-        $this->scoreArgument($object)->shouldBe(4);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\AnyValuesToken $key
-     * @param \Prophecy\Argument\Token\TokenInterface $value
-     * @param \ArrayAccess                            $object
-     */
-    function it_throws_exception_during_scoring_of_array_accessible_object_if_key_is_not_ExactValueToken($key, $value, $object)
-    {
-        $key->__toString()->willReturn('any_token');
-        $this->beConstructedWith($key,$value);
-        $errorMessage = 'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL.
-                        'But you used `any_token`.';
-        $this->shouldThrow(new InvalidArgumentException($errorMessage))->duringScoreArgument($object);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\ExactValueToken $key
-     * @param \Prophecy\Argument\Token\TokenInterface  $value
-     * @param \ArrayAccess                             $object
-     */
-    function it_scores_array_accessible_object_half_of_combined_scores_from_key_and_value_tokens($key, $value, $object)
-    {
-        $object->offsetExists('key')->willReturn(true);
-        $object->offsetGet('key')->willReturn('value');
-        $key->getValue()->willReturn('key');
-        $key->scoreArgument('key')->willReturn(3);
-        $value->scoreArgument('value')->willReturn(1);
-        $this->scoreArgument($object)->shouldBe(2);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\AnyValuesToken $key
-     * @param \Prophecy\Argument\Token\TokenInterface $value
-     * @param \ArrayIterator                          $object
-     */
-    function it_accepts_any_key_token_type_to_score_object_that_is_both_traversable_and_array_accessible($key, $value, $object)
-    {
-        $this->beConstructedWith($key, $value);
-        $object->current()->will(function () use ($object) {
-            $object->valid()->willReturn(false);
-
-            return 'value';
-        });
-        $object->key()->willReturn('key');
-        $object->rewind()->willReturn(null);
-        $object->next()->willReturn(null);
-        $object->valid()->willReturn(true);
-        $this->shouldNotThrow(new InvalidArgumentException)->duringScoreArgument($object);
-    }
-
-    function it_does_not_score_if_argument_is_neither_array_nor_traversable_nor_array_accessible()
-    {
-        $this->scoreArgument('string')->shouldBe(false);
-        $this->scoreArgument(new \stdClass)->shouldBe(false);
-    }
-
-    function it_does_not_score_empty_array()
-    {
-        $this->scoreArgument(array())->shouldBe(false);
-    }
-
-    function it_does_not_score_array_if_key_and_value_tokens_do_not_score_same_entry($key, $value)
-    {
-        $argument = array(1 => 'foo', 2 => 'bar');
-        $key->scoreArgument(1)->willReturn(true);
-        $key->scoreArgument(2)->willReturn(false);
-        $value->scoreArgument('foo')->willReturn(false);
-        $value->scoreArgument('bar')->willReturn(true);
-        $this->scoreArgument($argument)->shouldBe(false);
-    }
-
-    /**
-     * @param \Iterator $object
-     */
-    function it_does_not_score_traversable_object_without_entries($object)
-    {
-        $object->rewind()->willReturn(null);
-        $object->next()->willReturn(null);
-        $object->valid()->willReturn(false);
-        $this->scoreArgument($object)->shouldBe(false);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $key
-     * @param \Prophecy\Argument\Token\TokenInterface $value
-     * @param \Iterator                               $object
-     */
-    function it_does_not_score_traversable_object_if_key_and_value_tokens_do_not_score_same_entry($key, $value, $object)
-    {
-        $object->current()->willReturn('foo');
-        $object->current()->will(function () use ($object) {
-            $object->valid()->willReturn(false);
-
-            return 'bar';
-        });
-        $object->key()->willReturn(1);
-        $object->key()->willReturn(2);
-        $object->rewind()->willReturn(null);
-        $object->next()->willReturn(null);
-        $object->valid()->willReturn(true);
-        $key->scoreArgument(1)->willReturn(true);
-        $key->scoreArgument(2)->willReturn(false);
-        $value->scoreArgument('foo')->willReturn(false);
-        $value->scoreArgument('bar')->willReturn(true);
-        $this->scoreArgument($object)->shouldBe(false);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\ExactValueToken $key
-     * @param \ArrayAccess                             $object
-     */
-    function it_does_not_score_array_accessible_object_if_it_has_no_offset_with_key_token_value($key, $object)
-    {
-        $object->offsetExists('key')->willReturn(false);
-        $key->getValue()->willReturn('key');
-        $this->scoreArgument($object)->shouldBe(false);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\ExactValueToken $key
-     * @param \Prophecy\Argument\Token\TokenInterface  $value
-     * @param \ArrayAccess                             $object
-     */
-    function it_does_not_score_array_accessible_object_if_key_and_value_tokens_do_not_score_same_entry($key, $value, $object)
-    {
-        $object->offsetExists('key')->willReturn(true);
-        $object->offsetGet('key')->willReturn('value');
-        $key->getValue()->willReturn('key');
-        $value->scoreArgument('value')->willReturn(false);
-        $key->scoreArgument('key')->willReturn(true);
-        $this->scoreArgument($object)->shouldBe(false);
-    }
-
-    function its_score_is_capped_at_8($key, $value)
-    {
-        $key->scoreArgument('key')->willReturn(10);
-        $value->scoreArgument('value')->willReturn(10);
-        $this->scoreArgument(array('key'=>'value'))->shouldBe(8);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php
deleted file mode 100644
index 8662e7d..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class ArrayEveryEntryTokenSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $value
-     */
-    function let($value)
-    {
-        $this->beConstructedWith($value);
-    }
-
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_is_not_last()
-    {
-        $this->shouldNotBeLast();
-    }
-
-    function it_holds_value($value)
-    {
-        $this->getValue()->shouldBe($value);
-    }
-
-    function its_string_representation_tells_that_its_an_array_containing_only_value($value)
-    {
-        $value->__toString()->willReturn('value');
-        $this->__toString()->shouldBe('[value, ..., value]');
-    }
-
-    /**
-     * @param \stdClass $stdClass
-     */
-    function it_wraps_non_token_value_into_ExactValueToken($stdClass)
-    {
-        $this->beConstructedWith($stdClass);
-        $this->getValue()->shouldHaveType('Prophecy\Argument\Token\ExactValueToken');
-    }
-
-    function it_does_not_score_if_argument_is_neither_array_nor_traversable()
-    {
-        $this->scoreArgument('string')->shouldBe(false);
-        $this->scoreArgument(new \stdClass)->shouldBe(false);
-    }
-
-    function it_does_not_score_empty_array()
-    {
-        $this->scoreArgument(array())->shouldBe(false);
-    }
-
-    /**
-     * @param \Iterator $object
-     */
-    function it_does_not_score_traversable_object_without_entries($object)
-    {
-        $object->rewind()->willReturn(null);
-        $object->next()->willReturn(null);
-        $object->valid()->willReturn(false);
-        $this->scoreArgument($object)->shouldBe(false);
-    }
-
-    function it_scores_avg_of_scores_from_value_tokens($value)
-    {
-        $value->scoreArgument('value1')->willReturn(6);
-        $value->scoreArgument('value2')->willReturn(3);
-        $this->scoreArgument(array('value1', 'value2'))->shouldBe(4.5);
-    }
-
-    function it_scores_false_if_entry_scores_false($value)
-    {
-        $value->scoreArgument('value1')->willReturn(6);
-        $value->scoreArgument('value2')->willReturn(false);
-        $this->scoreArgument(array('value1', 'value2'))->shouldBe(false);
-    }
-
-    function it_does_not_score_array_keys($value)
-    {
-        $value->scoreArgument('value')->willReturn(6);
-        $value->scoreArgument('key')->shouldNotBeCalled(0);
-        $this->scoreArgument(array('key' => 'value'))->shouldBe(6);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $value
-     * @param \Iterator                               $object
-     */
-    function it_scores_traversable_object_from_value_token($value, $object)
-    {
-        $object->current()->will(function ($args, $object) {
-            $object->valid()->willReturn(false);
-
-            return 'value';
-        });
-        $object->key()->willReturn('key');
-        $object->rewind()->willReturn(null);
-        $object->next()->willReturn(null);
-        $object->valid()->willReturn(true);
-        $value->scoreArgument('value')->willReturn(2);
-        $this->scoreArgument($object)->shouldBe(2);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php
deleted file mode 100644
index 4395bf0..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-
-class CallbackTokenSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('get_class');
-    }
-
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_is_not_last()
-    {
-        $this->shouldNotBeLast();
-    }
-
-    function it_scores_7_if_argument_matches_callback()
-    {
-        $this->beConstructedWith(function ($argument) { return 2 === $argument; });
-
-        $this->scoreArgument(2)->shouldReturn(7);
-    }
-
-    function it_does_not_scores_if_argument_does_not_match_callback()
-    {
-        $this->beConstructedWith(function ($argument) { return 2 === $argument; });
-
-        $this->scoreArgument(5)->shouldReturn(false);
-    }
-
-    function its_string_representation_should_tell_that_its_callback()
-    {
-        $this->__toString()->shouldReturn('callback()');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php
deleted file mode 100644
index 9e46e02..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-
-class ExactValueTokenSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith(42);
-    }
-
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_is_not_last()
-    {
-        $this->shouldNotBeLast();
-    }
-
-    function it_holds_value()
-    {
-        $this->getValue()->shouldReturn(42);
-    }
-
-    function it_scores_10_if_value_is_equal_to_argument()
-    {
-        $this->scoreArgument(42)->shouldReturn(10);
-        $this->scoreArgument('42')->shouldReturn(10);
-    }
-
-    function it_scores_10_if_value_is_an_object_and_equal_to_argument()
-    {
-        $value = new \DateTime();
-        $value2 = clone $value;
-
-        $this->beConstructedWith($value);
-        $this->scoreArgument($value2)->shouldReturn(10);
-    }
-
-    function it_does_not_scores_if_value_is_not_equal_to_argument()
-    {
-        $this->scoreArgument(50)->shouldReturn(false);
-        $this->scoreArgument(new \stdClass())->shouldReturn(false);
-    }
-
-    function it_does_not_scores_if_value_an_object_and_is_not_equal_to_argument()
-    {
-        $value = new ExactValueTokenFixtureB('ABC');
-        $value2 = new ExactValueTokenFixtureB('CBA');
-
-        $this->beConstructedWith($value);
-        $this->scoreArgument($value2)->shouldReturn(false);
-    }
-
-    function it_does_not_scores_if_value_type_and_is_not_equal_to_argument()
-    {
-        $this->beConstructedWith(false);
-        $this->scoreArgument(0)->shouldReturn(false);
-    }
-
-    function it_generates_proper_string_representation_for_integer()
-    {
-        $this->beConstructedWith(42);
-        $this->__toString()->shouldReturn('exact(42)');
-    }
-
-    function it_generates_proper_string_representation_for_string()
-    {
-        $this->beConstructedWith('some string');
-        $this->__toString()->shouldReturn('exact("some string")');
-    }
-
-    function it_generates_single_line_representation_for_multiline_string()
-    {
-        $this->beConstructedWith("some\nstring");
-        $this->__toString()->shouldReturn('exact("some\\nstring")');
-    }
-
-    function it_generates_proper_string_representation_for_double()
-    {
-        $this->beConstructedWith(42.3);
-        $this->__toString()->shouldReturn('exact(42.3)');
-    }
-
-    function it_generates_proper_string_representation_for_boolean_true()
-    {
-        $this->beConstructedWith(true);
-        $this->__toString()->shouldReturn('exact(true)');
-    }
-
-    function it_generates_proper_string_representation_for_boolean_false()
-    {
-        $this->beConstructedWith(false);
-        $this->__toString()->shouldReturn('exact(false)');
-    }
-
-    function it_generates_proper_string_representation_for_null()
-    {
-        $this->beConstructedWith(null);
-        $this->__toString()->shouldReturn('exact(null)');
-    }
-
-    function it_generates_proper_string_representation_for_empty_array()
-    {
-        $this->beConstructedWith(array());
-        $this->__toString()->shouldReturn('exact([])');
-    }
-
-    function it_generates_proper_string_representation_for_array()
-    {
-        $this->beConstructedWith(array('zet', 42));
-        $this->__toString()->shouldReturn('exact(["zet", 42])');
-    }
-
-    function it_generates_proper_string_representation_for_resource()
-    {
-        $resource = fopen(__FILE__, 'r');
-        $this->beConstructedWith($resource);
-        $this->__toString()->shouldReturn('exact(stream:'.$resource.')');
-    }
-
-    /**
-     * @param \stdClass $object
-     */
-    function it_generates_proper_string_representation_for_object($object)
-    {
-        $objHash = sprintf('%s:%s',
-            get_class($object->getWrappedObject()),
-            spl_object_hash($object->getWrappedObject())
-        );
-
-        $this->beConstructedWith($object);
-        $this->__toString()->shouldReturn("exact($objHash Object (\n    'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))");
-    }
-}
-
-class ExactValueTokenFixtureA
-{
-    public $errors;
-}
-
-class ExactValueTokenFixtureB extends ExactValueTokenFixtureA
-{
-    public $errors;
-    public $value = null;
-
-    public function __construct($value)
-    {
-        $this->value = $value;
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php
deleted file mode 100644
index 00c3a21..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class IdenticalValueTokenSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith(42);
-    }
-
-    function it_is_initializable()
-    {
-        $this->shouldHaveType('Prophecy\Argument\Token\IdenticalValueToken');
-    }
-
-    function it_scores_11_if_string_value_is_identical_to_argument()
-    {
-        $this->beConstructedWith('foo');
-        $this->scoreArgument('foo')->shouldReturn(11);
-    }
-
-    function it_scores_11_if_boolean_value_is_identical_to_argument()
-    {
-        $this->beConstructedWith(false);
-        $this->scoreArgument(false)->shouldReturn(11);
-    }
-
-    function it_scores_11_if_integer_value_is_identical_to_argument()
-    {
-        $this->beConstructedWith(31);
-        $this->scoreArgument(31)->shouldReturn(11);
-    }
-
-    function it_scores_11_if_float_value_is_identical_to_argument()
-    {
-        $this->beConstructedWith(31.12);
-        $this->scoreArgument(31.12)->shouldReturn(11);
-    }
-
-    function it_scores_11_if_array_value_is_identical_to_argument()
-    {
-        $this->beConstructedWith(array('foo' => 'bar'));
-        $this->scoreArgument(array('foo' => 'bar'))->shouldReturn(11);
-    }
-
-    function it_scores_11_if_object_value_is_identical_to_argument()
-    {
-        $object = new \stdClass();
-
-        $this->beConstructedWith($object);
-        $this->scoreArgument($object)->shouldReturn(11);
-    }
-
-    function it_scores_false_if_value_is_not_identical_to_argument()
-    {
-        $this->beConstructedWith(new \stdClass());
-        $this->scoreArgument('foo')->shouldReturn(false);
-    }
-
-    function it_scores_false_if_object_value_is_not_the_same_instance_than_argument()
-    {
-        $this->beConstructedWith(new \stdClass());
-        $this->scoreArgument(new \stdClass())->shouldReturn(false);
-    }
-
-    function it_scores_false_if_integer_value_is_not_identical_to_boolean_argument()
-    {
-        $this->beConstructedWith(1);
-        $this->scoreArgument(true)->shouldReturn(false);
-    }
-
-    function it_is_not_last()
-    {
-        $this->shouldNotBeLast();
-    }
-
-    function it_generates_proper_string_representation_for_integer()
-    {
-        $this->beConstructedWith(42);
-        $this->__toString()->shouldReturn('identical(42)');
-    }
-
-    function it_generates_proper_string_representation_for_string()
-    {
-        $this->beConstructedWith('some string');
-        $this->__toString()->shouldReturn('identical("some string")');
-    }
-
-    function it_generates_single_line_representation_for_multiline_string()
-    {
-        $this->beConstructedWith("some\nstring");
-        $this->__toString()->shouldReturn('identical("some\\nstring")');
-    }
-
-    function it_generates_proper_string_representation_for_double()
-    {
-        $this->beConstructedWith(42.3);
-        $this->__toString()->shouldReturn('identical(42.3)');
-    }
-
-    function it_generates_proper_string_representation_for_boolean_true()
-    {
-        $this->beConstructedWith(true);
-        $this->__toString()->shouldReturn('identical(true)');
-    }
-
-    function it_generates_proper_string_representation_for_boolean_false()
-    {
-        $this->beConstructedWith(false);
-        $this->__toString()->shouldReturn('identical(false)');
-    }
-
-    function it_generates_proper_string_representation_for_null()
-    {
-        $this->beConstructedWith(null);
-        $this->__toString()->shouldReturn('identical(null)');
-    }
-
-    function it_generates_proper_string_representation_for_empty_array()
-    {
-        $this->beConstructedWith(array());
-        $this->__toString()->shouldReturn('identical([])');
-    }
-
-    function it_generates_proper_string_representation_for_array()
-    {
-        $this->beConstructedWith(array('zet', 42));
-        $this->__toString()->shouldReturn('identical(["zet", 42])');
-    }
-
-    function it_generates_proper_string_representation_for_resource()
-    {
-        $resource = fopen(__FILE__, 'r');
-        $this->beConstructedWith($resource);
-        $this->__toString()->shouldReturn('identical(stream:'.$resource.')');
-    }
-
-    function it_generates_proper_string_representation_for_object($object)
-    {
-        $objHash = sprintf('%s:%s',
-            get_class($object->getWrappedObject()),
-            spl_object_hash($object->getWrappedObject())
-        );
-
-        $this->beConstructedWith($object);
-        $this->__toString()->shouldReturn("identical($objHash Object (\n    'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))");
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php
deleted file mode 100644
index bb5e384..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class LogicalAndTokenSpec extends ObjectBehavior
-{
-    function it_implements_TokenInterface()
-    {
-        $this->beConstructedWith(array());
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_is_not_last()
-    {
-        $this->beConstructedWith(array());
-        $this->shouldNotBeLast();
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token1
-     * @param \Prophecy\Argument\Token\TokenInterface $token2
-     * @param \Prophecy\Argument\Token\TokenInterface $token3
-     */
-    function it_generates_string_representation_from_all_tokens_imploded($token1, $token2, $token3)
-    {
-        $token1->__toString()->willReturn('token_1');
-        $token2->__toString()->willReturn('token_2');
-        $token3->__toString()->willReturn('token_3');
-
-        $this->beConstructedWith(array($token1, $token2, $token3));
-        $this->__toString()->shouldReturn('bool(token_1 AND token_2 AND token_3)');
-    }
-
-    function it_wraps_non_token_arguments_into_ExactValueToken()
-    {
-        $this->beConstructedWith(array(15, '1985'));
-        $this->__toString()->shouldReturn("bool(exact(15) AND exact(\"1985\"))");
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token1
-     * @param \Prophecy\Argument\Token\TokenInterface $token2
-     */
-    function it_scores_the_maximum_score_from_all_scores_returned_by_tokens($token1, $token2)
-    {
-        $token1->scoreArgument(1)->willReturn(10);
-        $token2->scoreArgument(1)->willReturn(5);
-        $this->beConstructedWith(array($token1, $token2));
-        $this->scoreArgument(1)->shouldReturn(10);
-    }
-
-    function it_does_not_score_if_there_are_no_arguments_or_tokens()
-    {
-        $this->beConstructedWith(array());
-        $this->scoreArgument('any')->shouldReturn(false);
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token1
-     * @param \Prophecy\Argument\Token\TokenInterface $token2
-     */
-    function it_does_not_score_if_either_of_tokens_does_not_score($token1, $token2)
-    {
-        $token1->scoreArgument(1)->willReturn(10);
-        $token1->scoreArgument(2)->willReturn(false);
-
-        $token2->scoreArgument(1)->willReturn(false);
-        $token2->scoreArgument(2)->willReturn(10);
-
-        $this->beConstructedWith(array($token1, $token2));
-
-        $this->scoreArgument(1)->shouldReturn(false);
-        $this->scoreArgument(2)->shouldReturn(false);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php
deleted file mode 100644
index 7ce7f3d..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument\Token\TokenInterface;
-
-class LogicalNotTokenSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $token
-     */
-    function let($token)
-    {
-        $this->beConstructedWith($token);
-    }
-
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_holds_originating_token($token)
-    {
-        $this->getOriginatingToken()->shouldReturn($token);
-    }
-
-    function it_has_simple_string_representation($token)
-    {
-        $token->__toString()->willReturn('value');
-        $this->__toString()->shouldBe('not(value)');
-    }
-
-    function it_wraps_non_token_argument_into_ExactValueToken()
-    {
-        $this->beConstructedWith(5);
-        $token = $this->getOriginatingToken();
-        $token->shouldhaveType('Prophecy\Argument\Token\ExactValueToken');
-        $token->getValue()->shouldBe(5);
-    }
-
-    function it_scores_4_if_preset_token_does_not_match_the_argument($token)
-    {
-        $token->scoreArgument('argument')->willReturn(false);
-        $this->scoreArgument('argument')->shouldBe(4);
-    }
-
-    function it_does_not_score_if_preset_token_matches_argument($token)
-    {
-        $token->scoreArgument('argument')->willReturn(5);
-        $this->scoreArgument('argument')->shouldBe(false);
-    }
-
-    function it_is_last_if_preset_token_is_last($token)
-    {
-        $token->isLast()->willReturn(true);
-        $this->shouldBeLast();
-    }
-
-    function it_is_not_last_if_preset_token_is_not_last($token)
-    {
-        $token->isLast()->willReturn(false);
-        $this->shouldNotBeLast();
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php
deleted file mode 100644
index a783a15..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-
-class ObjectStateTokenSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('getName', 'stdClass');
-    }
-
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_is_not_last()
-    {
-        $this->shouldNotBeLast();
-    }
-
-    /**
-     * @param \ReflectionClass $reflection
-     */
-    function it_scores_8_if_argument_object_has_specific_method_state($reflection)
-    {
-        $reflection->getName()->willReturn('stdClass');
-
-        $this->scoreArgument($reflection)->shouldReturn(8);
-    }
-
-    /**
-     * @param \stdClass $class
-     */
-    function it_scores_8_if_argument_object_has_specific_property_state($class)
-    {
-        $class->getName = 'stdClass';
-
-        $this->scoreArgument($class)->shouldReturn(8);
-    }
-
-    function it_does_not_score_if_argument_method_state_does_not_match()
-    {
-        $value = new ObjectStateTokenFixtureB('ABC');
-        $value2 = new ObjectStateTokenFixtureB('CBA');
-
-        $this->beConstructedWith('getSelf', $value);
-        $this->scoreArgument($value2)->shouldReturn(false);
-    }
-
-    /**
-     * @param \stdClass $class
-     */
-    function it_does_not_score_if_argument_property_state_does_not_match($class)
-    {
-        $class->getName = 'SplFileInfo';
-
-        $this->scoreArgument($class)->shouldReturn(false);
-    }
-
-    /**
-     * @param \spec\Prophecy\Argument\Token\ObjectStateTokenFixtureA $class
-     */
-    function it_does_not_score_if_argument_object_does_not_have_method_or_property($class)
-    {
-        $this->scoreArgument($class)->shouldReturn(false);
-    }
-
-    function it_does_not_score_if_argument_is_not_object()
-    {
-        $this->scoreArgument(42)->shouldReturn(false);
-    }
-
-    function it_has_simple_string_representation()
-    {
-        $this->__toString()->shouldReturn('state(getName(), "stdClass")');
-    }
-}
-
-class ObjectStateTokenFixtureA
-{
-    public $errors;
-}
-
-class ObjectStateTokenFixtureB extends ObjectStateTokenFixtureA
-{
-    public $errors;
-    public $value = null;
-
-    public function __construct($value)
-    {
-        $this->value = $value;
-    }
-
-    public function getSelf()
-    {
-        return $this;
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php
deleted file mode 100644
index c7fd265..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class StringContainsTokenSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('a substring');
-    }
-
-    function it_is_initializable()
-    {
-        $this->shouldHaveType('Prophecy\Argument\Token\StringContainsToken');
-    }
-
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_holds_value()
-    {
-        $this->getValue()->shouldReturn('a substring');
-    }
-
-    function it_is_not_last()
-    {
-        $this->shouldNotBeLast();
-    }
-
-    function it_scores_6_if_the_argument_contains_the_value()
-    {
-        $this->scoreArgument('Argument containing a substring')->shouldReturn(6);
-    }
-
-    function it_does_not_score_if_the_argument_does_not_contain_the_value()
-    {
-        $this->scoreArgument('Argument will not match')->shouldReturn(false);
-    }
-
-    function its_string_representation_shows_substring()
-    {
-        $this->__toString()->shouldReturn('contains("a substring")');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php
deleted file mode 100644
index ae3e26e..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Argument\Token;
-
-use PhpSpec\ObjectBehavior;
-
-class TypeTokenSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('integer');
-    }
-
-    function it_implements_TokenInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
-    }
-
-    function it_is_not_last()
-    {
-        $this->shouldNotBeLast();
-    }
-
-    function it_scores_5_if_argument_matches_simple_type()
-    {
-        $this->beConstructedWith('integer');
-
-        $this->scoreArgument(42)->shouldReturn(5);
-    }
-
-    function it_does_not_scores_if_argument_does_not_match_simple_type()
-    {
-        $this->beConstructedWith('integer');
-
-        $this->scoreArgument(42.0)->shouldReturn(false);
-    }
-
-    /**
-     * @param \ReflectionObject $object
-     */
-    function it_scores_5_if_argument_is_an_instance_of_specified_class($object)
-    {
-        $this->beConstructedWith('ReflectionClass');
-
-        $this->scoreArgument($object)->shouldReturn(5);
-    }
-
-    function it_has_simple_string_representation()
-    {
-        $this->__toString()->shouldReturn('type(integer)');
-    }
-
-    /**
-     * @param \Prophecy\Argument\Token\TokenInterface $interface
-     */
-    function it_scores_5_if_argument_is_an_instance_of_specified_interface($interface)
-    {
-        $this->beConstructedWith('Prophecy\Argument\Token\TokenInterface');
-
-        $this->scoreArgument($interface)->shouldReturn(5);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php
deleted file mode 100644
index 990aa80..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-namespace spec\Prophecy;
-
-use PhpSpec\ObjectBehavior;
-
-class ArgumentSpec extends ObjectBehavior
-{
-    function it_has_a_shortcut_for_exact_argument_token()
-    {
-        $token = $this->exact(42);
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ExactValueToken');
-        $token->getValue()->shouldReturn(42);
-    }
-
-    function it_has_a_shortcut_for_any_argument_token()
-    {
-        $token = $this->any();
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\AnyValueToken');
-    }
-
-    function it_has_a_shortcut_for_multiple_arguments_token()
-    {
-        $token = $this->cetera();
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\AnyValuesToken');
-    }
-
-    function it_has_a_shortcut_for_type_token()
-    {
-        $token = $this->type('integer');
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\TypeToken');
-    }
-
-    function it_has_a_shortcut_for_callback_token()
-    {
-        $token = $this->that('get_class');
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\CallbackToken');
-    }
-
-    function it_has_a_shortcut_for_object_state_token()
-    {
-        $token = $this->which('getName', 'everzet');
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ObjectStateToken');
-    }
-
-    function it_has_a_shortcut_for_logical_and_token()
-    {
-        $token = $this->allOf('integer', 5);
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\LogicalAndToken');
-    }
-
-    function it_has_a_shortcut_for_array_count_token()
-    {
-        $token = $this->size(5);
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayCountToken');
-    }
-
-    function it_has_a_shortcut_for_array_entry_token()
-    {
-        $token = $this->withEntry('key', 'value');
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken');
-    }
-
-    function it_has_a_shortcut_for_array_every_entry_token()
-    {
-        $token = $this->withEveryEntry('value');
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEveryEntryToken');
-    }
-
-    function it_has_a_shortcut_for_identical_value_token()
-    {
-        $token = $this->is('value');
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\IdenticalValueToken');
-    }
-
-    function it_has_a_shortcut_for_array_entry_token_matching_any_key()
-    {
-        $token = $this->containing('value');
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken');
-        $token->getKey()->shouldHaveType('Prophecy\Argument\Token\AnyValueToken');
-    }
-
-    function it_has_a_shortcut_for_array_entry_token_matching_any_value()
-    {
-        $token = $this->withKey('key');
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken');
-        $token->getValue()->shouldHaveType('Prophecy\Argument\Token\AnyValueToken');
-    }
-
-    function it_has_a_shortcut_for_logical_not_token()
-    {
-        $token = $this->not('kagux');
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\LogicalNotToken');
-    }
-
-    function it_has_a_shortcut_for_string_contains_token()
-    {
-        $token = $this->containingString('string');
-        $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\StringContainsToken');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php
deleted file mode 100644
index acf8d78..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Call;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Argument\ArgumentsWildcard;
-
-class CallCenterSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $objectProphecy
-     */
-    function let($objectProphecy)
-    {
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy    $objectProphecy
-     * @param \Prophecy\Argument\ArgumentsWildcard $wildcard
-     */
-    function it_records_calls_made_through_makeCall_method($objectProphecy, $wildcard)
-    {
-        $wildcard->scoreArguments(array(5, 2, 3))->willReturn(10);
-        $objectProphecy->getMethodProphecies()->willReturn(array());
-
-        $this->makeCall($objectProphecy, 'setValues', array(5, 2, 3));
-
-        $calls = $this->findCalls('setValues', $wildcard);
-        $calls->shouldHaveCount(1);
-
-        $calls[0]->shouldBeAnInstanceOf('Prophecy\Call\Call');
-        $calls[0]->getMethodName()->shouldReturn('setValues');
-        $calls[0]->getArguments()->shouldReturn(array(5, 2, 3));
-        $calls[0]->getReturnValue()->shouldReturn(null);
-    }
-
-    function it_returns_null_for_any_call_through_makeCall_if_no_method_prophecies_added(
-        $objectProphecy
-    )
-    {
-        $objectProphecy->getMethodProphecies()->willReturn(array());
-
-        $this->makeCall($objectProphecy, 'setValues', array(5, 2, 3))->shouldReturn(null);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy    $method1
-     * @param \Prophecy\Prophecy\MethodProphecy    $method2
-     * @param \Prophecy\Prophecy\MethodProphecy    $method3
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments1
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments2
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments3
-     * @param \Prophecy\Promise\PromiseInterface   $promise
-     */
-    function it_executes_promise_of_method_prophecy_that_matches_signature_passed_to_makeCall(
-        $objectProphecy, $method1, $method2, $method3, $arguments1, $arguments2, $arguments3,
-        $promise
-    )
-    {
-        $method1->getMethodName()->willReturn('getName');
-        $method1->getArgumentsWildcard()->willReturn($arguments1);
-        $arguments1->scoreArguments(array('world', 'everything'))->willReturn(false);
-
-        $method2->getMethodName()->willReturn('setTitle');
-        $method2->getArgumentsWildcard()->willReturn($arguments2);
-        $arguments2->scoreArguments(array('world', 'everything'))->willReturn(false);
-
-        $method3->getMethodName()->willReturn('getName');
-        $method3->getArgumentsWildcard()->willReturn($arguments3);
-        $method3->getPromise()->willReturn($promise);
-        $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200);
-
-        $objectProphecy->getMethodProphecies()->willReturn(array(
-            'method1' => array($method1),
-            'method2' => array($method2, $method3)
-        ));
-        $objectProphecy->getMethodProphecies('getName')->willReturn(array($method1, $method3));
-        $objectProphecy->reveal()->willReturn(new \stdClass());
-
-        $promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method3)->willReturn(42);
-
-        $this->makeCall($objectProphecy, 'getName', array('world', 'everything'))->shouldReturn(42);
-
-        $calls = $this->findCalls('getName', $arguments3);
-        $calls->shouldHaveCount(1);
-        $calls[0]->getReturnValue()->shouldReturn(42);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy    $method1
-     * @param \Prophecy\Prophecy\MethodProphecy    $method2
-     * @param \Prophecy\Prophecy\MethodProphecy    $method3
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments1
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments2
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments3
-     * @param \Prophecy\Promise\PromiseInterface   $promise
-     */
-    function it_executes_promise_of_method_prophecy_that_matches_with_highest_score_to_makeCall(
-        $objectProphecy, $method1, $method2, $method3, $arguments1, $arguments2, $arguments3,
-        $promise
-    )
-    {
-        $method1->getMethodName()->willReturn('getName');
-        $method1->getArgumentsWildcard()->willReturn($arguments1);
-        $arguments1->scoreArguments(array('world', 'everything'))->willReturn(50);
-
-        $method2->getMethodName()->willReturn('getName');
-        $method2->getArgumentsWildcard()->willReturn($arguments2);
-        $method2->getPromise()->willReturn($promise);
-        $arguments2->scoreArguments(array('world', 'everything'))->willReturn(300);
-
-        $method3->getMethodName()->willReturn('getName');
-        $method3->getArgumentsWildcard()->willReturn($arguments3);
-        $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200);
-
-        $objectProphecy->getMethodProphecies()->willReturn(array(
-            'method1' => array($method1),
-            'method2' => array($method2, $method3)
-        ));
-        $objectProphecy->getMethodProphecies('getName')->willReturn(array(
-            $method1, $method2, $method3
-        ));
-        $objectProphecy->reveal()->willReturn(new \stdClass());
-
-        $promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method2)
-            ->willReturn('second');
-
-        $this->makeCall($objectProphecy, 'getName', array('world', 'everything'))
-            ->shouldReturn('second');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy    $method
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments
-     */
-    function it_throws_exception_if_call_does_not_match_any_of_defined_method_prophecies(
-        $objectProphecy, $method, $arguments
-    )
-    {
-        $method->getMethodName()->willReturn('getName');
-        $method->getArgumentsWildcard()->willReturn($arguments);
-        $arguments->scoreArguments(array('world', 'everything'))->willReturn(false);
-        $arguments->__toString()->willReturn('arg1, arg2');
-
-        $objectProphecy->getMethodProphecies()->willReturn(array('method1' => array($method)));
-        $objectProphecy->getMethodProphecies('getName')->willReturn(array($method));
-
-        $this->shouldThrow('Prophecy\Exception\Call\UnexpectedCallException')
-            ->duringMakeCall($objectProphecy, 'getName', array('world', 'everything'));
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy    $method
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments
-     */
-    function it_returns_null_if_method_prophecy_that_matches_makeCall_arguments_has_no_promise(
-        $objectProphecy, $method, $arguments
-    )
-    {
-        $method->getMethodName()->willReturn('getName');
-        $method->getArgumentsWildcard()->willReturn($arguments);
-        $method->getPromise()->willReturn(null);
-        $arguments->scoreArguments(array('world', 'everything'))->willReturn(100);
-
-        $objectProphecy->getMethodProphecies()->willReturn(array($method));
-        $objectProphecy->getMethodProphecies('getName')->willReturn(array($method));
-
-        $this->makeCall($objectProphecy, 'getName', array('world', 'everything'))
-            ->shouldReturn(null);
-    }
-
-    /**
-     * @param \Prophecy\Argument\ArgumentsWildcard $wildcard
-     */
-    function it_finds_recorded_calls_by_a_method_name_and_arguments_wildcard(
-        $objectProphecy, $wildcard
-    )
-    {
-        $objectProphecy->getMethodProphecies()->willReturn(array());
-
-        $this->makeCall($objectProphecy, 'getName', array('world'));
-        $this->makeCall($objectProphecy, 'getName', array('everything'));
-        $this->makeCall($objectProphecy, 'setName', array(42));
-
-        $wildcard->scoreArguments(array('world'))->willReturn(false);
-        $wildcard->scoreArguments(array('everything'))->willReturn(10);
-
-        $calls = $this->findCalls('getName', $wildcard);
-
-        $calls->shouldHaveCount(1);
-        $calls[0]->getMethodName()->shouldReturn('getName');
-        $calls[0]->getArguments()->shouldReturn(array('everything'));
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php
deleted file mode 100644
index d1a8539..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Call;
-
-use PhpSpec\ObjectBehavior;
-
-class CallSpec extends ObjectBehavior
-{
-    /**
-     * @param \Exception $exception
-     */
-    function let($exception)
-    {
-        $this->beConstructedWith('setValues', array(5, 2), 42, $exception, 'some_file.php', 23);
-    }
-
-    function it_exposes_method_name_through_getter()
-    {
-        $this->getMethodName()->shouldReturn('setValues');
-    }
-
-    function it_exposes_arguments_through_getter()
-    {
-        $this->getArguments()->shouldReturn(array(5, 2));
-    }
-
-    function it_exposes_return_value_through_getter()
-    {
-        $this->getReturnValue()->shouldReturn(42);
-    }
-
-    function it_exposes_exception_through_getter($exception)
-    {
-        $this->getException()->shouldReturn($exception);
-    }
-
-    function it_exposes_file_and_line_through_getter()
-    {
-        $this->getFile()->shouldReturn('some_file.php');
-        $this->getLine()->shouldReturn(23);
-    }
-
-    function it_returns_shortpath_to_callPlace()
-    {
-        $this->getCallPlace()->shouldReturn('some_file.php:23');
-    }
-
-    function it_returns_unknown_as_callPlace_if_no_file_or_line_provided()
-    {
-        $this->beConstructedWith('setValues', array(), 0, null, null, null);
-
-        $this->getCallPlace()->shouldReturn('unknown');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php
deleted file mode 100644
index c174e73..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Comparator;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class ClosureComparatorSpec extends ObjectBehavior
-{
-    function it_is_comparator()
-    {
-        $this->shouldHaveType('SebastianBergmann\Comparator\Comparator');
-    }
-
-    function it_accepts_only_closures()
-    {
-        $this->accepts(123, 321)->shouldReturn(false);
-        $this->accepts('string', 'string')->shouldReturn(false);
-        $this->accepts(false, true)->shouldReturn(false);
-        $this->accepts(true, false)->shouldReturn(false);
-        $this->accepts((object)array(), (object)array())->shouldReturn(false);
-        $this->accepts(function(){}, (object)array())->shouldReturn(false);
-        $this->accepts(function(){}, (object)array())->shouldReturn(false);
-
-        $this->accepts(function(){}, function(){})->shouldReturn(true);
-    }
-
-    function it_asserts_that_all_closures_are_different()
-    {
-        $this->shouldThrow()->duringAssertEquals(function(){}, function(){});
-    }
-
-    function it_asserts_that_all_closures_are_different_even_if_its_the_same_closure()
-    {
-        $closure = function(){};
-
-        $this->shouldThrow()->duringAssertEquals($closure, $closure);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php
deleted file mode 100644
index 6b13336..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Comparator;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class FactorySpec extends ObjectBehavior
-{
-    function it_extends_Sebastian_Comparator_Factory()
-    {
-        $this->shouldHaveType('SebastianBergmann\Comparator\Factory');
-    }
-
-    function it_should_have_ClosureComparator_registered()
-    {
-        $comparator = $this->getInstance()->getComparatorFor(function(){}, function(){});
-        $comparator->shouldHaveType('Prophecy\Comparator\ClosureComparator');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php
deleted file mode 100644
index 2d7d934..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\ClassPatch;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class DisableConstructorPatchSpec extends ObjectBehavior
-{
-    function it_is_a_patch()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface');
-    }
-
-    function its_priority_is_100()
-    {
-        $this->getPriority()->shouldReturn(100);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_supports_anything($node)
-    {
-        $this->supports($node)->shouldReturn(true);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode    $class
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode   $method
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $arg1
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $arg2
-     */
-    function it_makes_all_constructor_arguments_optional($class, $method, $arg1, $arg2)
-    {
-        $class->hasMethod('__construct')->willReturn(true);
-        $class->getMethod('__construct')->willReturn($method);
-        $method->getArguments()->willReturn(array($arg1, $arg2));
-
-        $arg1->setDefault(null)->shouldBeCalled();
-        $arg2->setDefault(null)->shouldBeCalled();
-
-        $method->setCode(Argument::type('string'))->shouldBeCalled();
-
-        $this->apply($class);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $class
-     */
-    function it_creates_new_constructor_if_object_has_none($class)
-    {
-        $class->hasMethod('__construct')->willReturn(false);
-        $class->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))
-            ->shouldBeCalled();
-
-        $this->apply($class);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php
deleted file mode 100644
index 8c348b8..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\ClassPatch;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class HhvmExceptionPatchSpec extends ObjectBehavior
-{
-    function it_is_a_patch()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface');
-    }
-
-    function its_priority_is_minus_50()
-    {
-        $this->getPriority()->shouldReturn(-50);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode  $node
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $getterMethod
-     */
-    function it_uses_parent_code_for_setTraceOptions($node, $method, $getterMethod)
-    {
-        $node->hasMethod('setTraceOptions')->willReturn(true);
-        $node->getMethod('setTraceOptions')->willReturn($method);
-        $node->hasMethod('getTraceOptions')->willReturn(true);
-        $node->getMethod('getTraceOptions')->willReturn($getterMethod);
-
-        $method->useParentCode()->shouldBeCalled();
-        $getterMethod->useParentCode()->shouldBeCalled();
-
-        $this->apply($node);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php
deleted file mode 100644
index 200d961..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\ClassPatch;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-use Prophecy\Doubler\Generator\Node\MethodNode;
-
-class KeywordPatchSpec extends ObjectBehavior
-{
-    function it_is_a_patch()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface');
-    }
-
-    function its_priority_is_49()
-    {
-        $this->getPriority()->shouldReturn(49);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method1
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method2
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method3
-     */
-    function it_will_remove_echo_and_eval_methods($node, $method1, $method2, $method3)
-    {
-        $node->removeMethod('eval')->shouldBeCalled();
-        $node->removeMethod('echo')->shouldBeCalled();
-
-        $method1->getName()->willReturn('echo');
-        $method2->getName()->willReturn('eval');
-        $method3->getName()->willReturn('notKeyword');
-
-        $node->getMethods()->willReturn(array(
-            'echo' => $method1,
-            'eval' => $method2,
-            'notKeyword' => $method3,
-        ));
-
-        $this->apply($node);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php
deleted file mode 100644
index cb1d0f0..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\ClassPatch;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-use Prophecy\Doubler\Generator\Node\MethodNode;
-
-class MagicCallPatchSpec extends ObjectBehavior
-{
-    function it_is_a_patch()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface');
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_supports_anything($node)
-    {
-        $this->supports($node)->shouldReturn(true);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_discovers_api_using_phpdoc($node)
-    {
-        $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApi');
-
-        $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled();
-
-        $this->apply($node);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_ignores_existing_methods($node)
-    {
-        $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiExtended');
-
-        $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled();
-        $node->addMethod(new MethodNode('definedMethod'))->shouldNotBeCalled();
-
-        $this->apply($node);
-    }
-
-    function it_has_50_priority()
-    {
-        $this->getPriority()->shouldReturn(50);
-    }
-}
-
-/**
- * @method void undefinedMethod()
- */
-class MagicalApi
-{
-    /**
-     * @return void
-     */
-    public function definedMethod()
-    {
-
-    }
-}
-
-/**
- * @method void undefinedMethod()
- * @method void definedMethod()
- */
-class MagicalApiExtended extends MagicalApi
-{
-
-}
\ No newline at end of file
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php
deleted file mode 100644
index c460814..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\ClassPatch;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class ProphecySubjectPatchSpec extends ObjectBehavior
-{
-    function it_is_a_patch()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface');
-    }
-
-    function it_has_priority_of_0()
-    {
-        $this->getPriority()->shouldReturn(0);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_supports_any_class($node)
-    {
-        $this->supports($node)->shouldReturn(true);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_forces_class_to_implement_ProphecySubjectInterface($node)
-    {
-        $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->shouldBeCalled();
-
-        $node->addProperty('objectProphecy', 'private')->willReturn(null);
-        $node->getMethods()->willReturn(array());
-        $node->hasMethod(Argument::any())->willReturn(false);
-        $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null);
-        $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null);
-
-        $this->apply($node);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode  $node
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $constructor
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method1
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method2
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method3
-     */
-    function it_forces_all_class_methods_except_constructor_to_proxy_calls_into_prophecy_makeCall(
-        $node, $constructor, $method1, $method2, $method3
-    )
-    {
-        $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->willReturn(null);
-        $node->addProperty('objectProphecy', 'private')->willReturn(null);
-        $node->hasMethod(Argument::any())->willReturn(false);
-        $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null);
-        $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null);
-
-        $constructor->getName()->willReturn('__construct');
-        $method1->getName()->willReturn('method1');
-        $method2->getName()->willReturn('method2');
-        $method3->getName()->willReturn('method3');
-
-        $node->getMethods()->willReturn(array(
-            'method1' => $method1,
-            'method2' => $method2,
-            'method3' => $method3,
-        ));
-
-        $constructor->setCode(Argument::any())->shouldNotBeCalled();
-
-        $method1->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());')
-            ->shouldBeCalled();
-        $method2->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());')
-            ->shouldBeCalled();
-        $method3->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());')
-            ->shouldBeCalled();
-
-        $this->apply($node);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php
deleted file mode 100644
index 4116e4d..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\ClassPatch;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class ReflectionClassNewInstancePatchSpec extends ObjectBehavior
-{
-    function it_is_a_patch()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface');
-    }
-
-    function its_priority_is_50()
-    {
-        $this->getPriority()->shouldReturn(50);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $reflectionClassNode
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $anotherClassNode
-     */
-    function it_supports_ReflectionClass_only($reflectionClassNode, $anotherClassNode)
-    {
-        $reflectionClassNode->getParentClass()->willReturn('ReflectionClass');
-        $anotherClassNode->getParentClass()->willReturn('stdClass');
-
-        $this->supports($reflectionClassNode)->shouldReturn(true);
-        $this->supports($anotherClassNode)->shouldReturn(false);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode    $class
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode   $method
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $arg1
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $arg2
-     */
-    function it_makes_all_newInstance_arguments_optional($class, $method, $arg1, $arg2)
-    {
-        $class->getMethod('newInstance')->willReturn($method);
-        $method->getArguments()->willReturn(array($arg1));
-        $arg1->setDefault(null)->shouldBeCalled();
-
-        $this->apply($class);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php
deleted file mode 100644
index 37fe82f..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\ClassPatch;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class SplFileInfoPatchSpec extends ObjectBehavior
-{
-    function it_is_a_patch()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface');
-    }
-
-    function its_priority_is_50()
-    {
-        $this->getPriority()->shouldReturn(50);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_does_not_support_nodes_without_parent_class($node)
-    {
-        $node->getParentClass()->willReturn('stdClass');
-        $this->supports($node)->shouldReturn(false);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_supports_nodes_with_SplFileInfo_as_parent_class($node)
-    {
-        $node->getParentClass()->willReturn('SplFileInfo');
-        $this->supports($node)->shouldReturn(true);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_supports_nodes_with_derivative_of_SplFileInfo_as_parent_class($node)
-    {
-        $node->getParentClass()->willReturn('SplFileInfo');
-        $this->supports($node)->shouldReturn(true);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_adds_a_method_to_node_if_not_exists($node)
-    {
-        $node->hasMethod('__construct')->willReturn(false);
-        $node->addMethod(Argument::any())->shouldBeCalled();
-        $node->getParentClass()->shouldBeCalled();
-
-        $this->apply($node);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode  $node
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method
-     */
-    function it_updates_existing_method_if_found($node, $method)
-    {
-        $node->hasMethod('__construct')->willReturn(true);
-        $node->getMethod('__construct')->willReturn($method);
-        $node->getParentClass()->shouldBeCalled();
-
-        $method->useParentCode()->shouldBeCalled();
-
-        $this->apply($node);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode  $node
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method
-     */
-    function it_should_not_supply_a_file_for_a_directory_iterator($node, $method)
-    {
-        $node->hasMethod('__construct')->willReturn(true);
-        $node->getMethod('__construct')->willReturn($method);
-        $node->getParentClass()->willReturn('DirectoryIterator');
-
-        $method->setCode(Argument::that(function($value) {
-            return strpos($value, '.php') === false;
-        }))->shouldBeCalled();
-
-        $this->apply($node);
-    }
-
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php
deleted file mode 100644
index 2279b72..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\ClassPatch;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class TraversablePatchSpec extends ObjectBehavior
-{
-    function it_is_a_patch()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface');
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_supports_class_that_implements_only_Traversable($node)
-    {
-        $node->getInterfaces()->willReturn(array('Traversable'));
-
-        $this->supports($node)->shouldReturn(true);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_does_not_support_class_that_implements_Iterator($node)
-    {
-        $node->getInterfaces()->willReturn(array('Traversable', 'Iterator'));
-
-        $this->supports($node)->shouldReturn(false);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_does_not_support_class_that_implements_IteratorAggregate($node)
-    {
-        $node->getInterfaces()->willReturn(array('Traversable', 'IteratorAggregate'));
-
-        $this->supports($node)->shouldReturn(false);
-    }
-
-    function it_has_100_priority()
-    {
-        $this->getPriority()->shouldReturn(100);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_forces_node_to_implement_IteratorAggregate($node)
-    {
-        $node->addInterface('Iterator')->shouldBeCalled();
-
-        $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null);
-
-        $this->apply($node);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php
deleted file mode 100644
index a39fa87..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class DoublerSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Doubler\Generator\ClassMirror  $mirror
-     * @param \Prophecy\Doubler\Generator\ClassCreator $creator
-     * @param \Prophecy\Doubler\NameGenerator          $namer
-     */
-    function let($mirror, $creator, $namer)
-    {
-        $this->beConstructedWith($mirror, $creator, $namer);
-    }
-
-    function it_does_not_have_patches_by_default()
-    {
-        $this->getClassPatches()->shouldHaveCount(0);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $patch
-     */
-    function its_registerClassPatch_adds_a_patch_to_the_doubler($patch)
-    {
-        $this->registerClassPatch($patch);
-        $this->getClassPatches()->shouldReturn(array($patch));
-    }
-
-    /**
-     * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt1
-     * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt2
-     * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt3
-     * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt4
-     */
-    function its_getClassPatches_sorts_patches_by_priority($alt1, $alt2, $alt3, $alt4)
-    {
-        $alt1->getPriority()->willReturn(2);
-        $alt2->getPriority()->willReturn(50);
-        $alt3->getPriority()->willReturn(10);
-        $alt4->getPriority()->willReturn(0);
-
-        $this->registerClassPatch($alt1);
-        $this->registerClassPatch($alt2);
-        $this->registerClassPatch($alt3);
-        $this->registerClassPatch($alt4);
-
-        $this->getClassPatches()->shouldReturn(array($alt2, $alt3, $alt1, $alt4));
-    }
-
-    /**
-     * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt1
-     * @param \Prophecy\Doubler\ClassPatch\ClassPatchInterface $alt2
-     * @param \ReflectionClass                                 $class
-     * @param \ReflectionClass                                 $interface1
-     * @param \ReflectionClass                                 $interface2
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode       $node
-     */
-    function its_double_mirrors_alterates_and_instantiates_provided_class(
-        $mirror, $creator, $namer, $alt1, $alt2, $class, $interface1, $interface2, $node
-    )
-    {
-        $mirror->reflect($class, array($interface1, $interface2))->willReturn($node);
-        $alt1->supports($node)->willReturn(true);
-        $alt2->supports($node)->willReturn(false);
-        $alt1->getPriority()->willReturn(1);
-        $alt2->getPriority()->willReturn(2);
-        $namer->name($class, array($interface1, $interface2))->willReturn('SplStack');
-        $class->getName()->willReturn('stdClass');
-        $interface1->getName()->willReturn('ArrayAccess');
-        $interface2->getName()->willReturn('Iterator');
-
-        $alt1->apply($node)->shouldBeCalled();
-        $alt2->apply($node)->shouldNotBeCalled();
-        $creator->create('SplStack', $node)->shouldBeCalled();
-
-        $this->registerClassPatch($alt1);
-        $this->registerClassPatch($alt2);
-
-        $this->double($class, array($interface1, $interface2))
-            ->shouldReturnAnInstanceOf('SplStack');
-    }
-
-    /**
-     * @param \ReflectionClass                           $class
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_double_instantiates_a_class_with_constructor_argument($mirror, $class, $node, $namer)
-    {
-        $class->getName()->willReturn('ReflectionClass');
-        $mirror->reflect($class, array())->willReturn($node);
-        $namer->name($class, array())->willReturn('ReflectionClass');
-
-        $double = $this->double($class, array(), array('stdClass'));
-        $double->shouldBeAnInstanceOf('ReflectionClass');
-        $double->getName()->shouldReturn('stdClass');
-    }
-
-    /**
-     * @param \ReflectionClass                           $class
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function it_can_instantiate_class_with_final_constructor($mirror, $class, $node, $namer)
-    {
-        $class->getName()->willReturn('spec\Prophecy\Doubler\WithFinalConstructor');
-        $mirror->reflect($class, array())->willReturn($node);
-        $namer->name($class, array())->willReturn('spec\Prophecy\Doubler\WithFinalConstructor');
-
-        $double = $this->double($class, array());
-
-        $double->shouldBeAnInstanceOf('spec\Prophecy\Doubler\WithFinalConstructor');
-    }
-}
-
-class WithFinalConstructor
-{
-    final public function __construct() {}
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php
deleted file mode 100644
index fa65bc1..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php
+++ /dev/null
@@ -1,191 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\Generator;
-
-use PhpSpec\ObjectBehavior;
-
-class ClassCodeGeneratorSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode    $class
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode   $method1
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode   $method2
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode   $method3
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument11
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument12
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument21
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument31
-     */
-    function it_generates_proper_php_code_for_specific_ClassNode(
-        $class, $method1, $method2, $method3, $argument11, $argument12, $argument21, $argument31
-    )
-    {
-        $class->getParentClass()->willReturn('RuntimeException');
-        $class->getInterfaces()->willReturn(array(
-            'Prophecy\Doubler\Generator\MirroredInterface', 'ArrayAccess', 'ArrayIterator'
-        ));
-        $class->getProperties()->willReturn(array('name' => 'public', 'email' => 'private'));
-        $class->getMethods()->willReturn(array($method1, $method2, $method3));
-
-        $method1->getName()->willReturn('getName');
-        $method1->getVisibility()->willReturn('public');
-        $method1->returnsReference()->willReturn(false);
-        $method1->isStatic()->willReturn(true);
-        $method1->getArguments()->willReturn(array($argument11, $argument12));
-        $method1->hasReturnType()->willReturn(true);
-        $method1->getReturnType()->willReturn('string');
-        $method1->getCode()->willReturn('return $this->name;');
-
-        $method2->getName()->willReturn('getEmail');
-        $method2->getVisibility()->willReturn('protected');
-        $method2->returnsReference()->willReturn(false);
-        $method2->isStatic()->willReturn(false);
-        $method2->getArguments()->willReturn(array($argument21));
-        $method2->hasReturnType()->willReturn(false);
-        $method2->getCode()->willReturn('return $this->email;');
-
-        $method3->getName()->willReturn('getRefValue');
-        $method3->getVisibility()->willReturn('public');
-        $method3->returnsReference()->willReturn(true);
-        $method3->isStatic()->willReturn(false);
-        $method3->getArguments()->willReturn(array($argument31));
-        $method3->hasReturnType()->willReturn(false);
-        $method3->getCode()->willReturn('return $this->refValue;');
-
-        $argument11->getName()->willReturn('fullname');
-        $argument11->getTypeHint()->willReturn('array');
-        $argument11->isOptional()->willReturn(true);
-        $argument11->getDefault()->willReturn(null);
-        $argument11->isPassedByReference()->willReturn(false);
-
-        $argument12->getName()->willReturn('class');
-        $argument12->getTypeHint()->willReturn('ReflectionClass');
-        $argument12->isOptional()->willReturn(false);
-        $argument12->isPassedByReference()->willReturn(false);
-
-        $argument21->getName()->willReturn('default');
-        $argument21->getTypeHint()->willReturn(null);
-        $argument21->isOptional()->willReturn(true);
-        $argument21->getDefault()->willReturn('ever.zet@gmail.com');
-        $argument21->isPassedByReference()->willReturn(false);
-
-        $argument31->getName()->willReturn('refValue');
-        $argument31->getTypeHint()->willReturn(null);
-        $argument31->isOptional()->willReturn(false);
-        $argument31->getDefault()->willReturn();
-        $argument31->isPassedByReference()->willReturn(false);
-
-        $code = $this->generate('CustomClass', $class);
-        $expected = <<<'PHP'
-namespace  {
-class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator {
-public $name;
-private $email;
-
-public static function getName(array $fullname = NULL, \ReflectionClass $class): string {
-return $this->name;
-}
-protected  function getEmail( $default = 'ever.zet@gmail.com') {
-return $this->email;
-}
-public  function &getRefValue( $refValue) {
-return $this->refValue;
-}
-
-}
-}
-PHP;
-        $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n"));
-        $code->shouldBe($expected);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode    $class
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode   $method
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument
-     */
-    function it_overrides_properly_methods_with_args_passed_by_reference(
-        $class, $method, $argument
-    )
-    {
-        $class->getParentClass()->willReturn('RuntimeException');
-        $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface'));
-        $class->getProperties()->willReturn(array());
-        $class->getMethods()->willReturn(array($method));
-
-        $method->getName()->willReturn('getName');
-        $method->getVisibility()->willReturn('public');
-        $method->isStatic()->willReturn(false);
-        $method->getArguments()->willReturn(array($argument));
-        $method->hasReturnType()->willReturn(false);
-        $method->returnsReference()->willReturn(false);
-        $method->getCode()->willReturn('return $this->name;');
-
-        $argument->getName()->willReturn('fullname');
-        $argument->getTypeHint()->willReturn('array');
-        $argument->isOptional()->willReturn(true);
-        $argument->getDefault()->willReturn(null);
-        $argument->isPassedByReference()->willReturn(true);
-
-        $code = $this->generate('CustomClass', $class);
-        $expected =<<<'PHP'
-namespace  {
-class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface {
-
-public  function getName(array &$fullname = NULL) {
-return $this->name;
-}
-
-}
-}
-PHP;
-        $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n"));
-        $code->shouldBe($expected);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $class
-     */
-    function it_generates_empty_class_for_empty_ClassNode($class)
-    {
-        $class->getParentClass()->willReturn('stdClass');
-        $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface'));
-        $class->getProperties()->willReturn(array());
-        $class->getMethods()->willReturn(array());
-
-        $code = $this->generate('CustomClass', $class);
-        $expected =<<<'PHP'
-namespace  {
-class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface {
-
-
-}
-}
-PHP;
-        $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n"));
-        $code->shouldBe($expected);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $class
-     */
-    function it_wraps_class_in_namespace_if_it_is_namespaced($class)
-    {
-        $class->getParentClass()->willReturn('stdClass');
-        $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface'));
-        $class->getProperties()->willReturn(array());
-        $class->getMethods()->willReturn(array());
-
-        $code = $this->generate('My\Awesome\CustomClass', $class);
-        $expected =<<<'PHP'
-namespace My\Awesome {
-class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface {
-
-
-}
-}
-PHP;
-        $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n"));
-        $code->shouldBe($expected);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php
deleted file mode 100644
index c7b5700..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\Generator;
-
-use PhpSpec\ObjectBehavior;
-
-class ClassCreatorSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Doubler\Generator\ClassCodeGenerator $generator
-     */
-    function let($generator)
-    {
-        $this->beConstructedWith($generator);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $class
-     */
-    function it_evaluates_code_generated_by_ClassCodeGenerator($generator, $class)
-    {
-        $generator->generate('stdClass', $class)->shouldBeCalled()->willReturn(
-            'return 42;'
-        );
-
-        $this->create('stdClass', $class)->shouldReturn(42);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $class
-     */
-    function it_throws_an_exception_if_class_does_not_exist_after_evaluation($generator, $class)
-    {
-        $generator->generate('CustomClass', $class)->shouldBeCalled()->willReturn(
-            'return 42;'
-        );
-
-        $class->getParentClass()->willReturn('stdClass');
-        $class->getInterfaces()->willReturn(array('Interface1', 'Interface2'));
-
-        $this->shouldThrow('Prophecy\Exception\Doubler\ClassCreatorException')
-            ->duringCreate('CustomClass', $class);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassMirrorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassMirrorSpec.php
deleted file mode 100644
index 161f850..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassMirrorSpec.php
+++ /dev/null
@@ -1,610 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\Generator;
-
-use PhpSpec\ObjectBehavior;
-use I\Simply;
-
-use ReflectionClass;
-use ReflectionMethod;
-use ReflectionParameter;
-
-class ClassMirrorSpec extends ObjectBehavior
-{
-    /**
-     * @param ReflectionClass  $class
-     * @param ReflectionMethod $method1
-     * @param ReflectionMethod $method2
-     * @param ReflectionMethod $method3
-     */
-    function it_reflects_a_class_by_mirroring_all_its_public_methods(
-        $class, $method1, $method2, $method3
-    )
-    {
-        $class->getName()->willReturn('Custom\ClassName');
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(false);
-        $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array());
-        $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array(
-            $method1, $method2, $method3
-        ));
-
-        $method1->getName()->willReturn('getName');
-        $method2->getName()->willReturn('isPublic');
-        $method3->getName()->willReturn('isAbstract');
-
-        $method1->isFinal()->willReturn(false);
-        $method2->isFinal()->willReturn(false);
-        $method3->isFinal()->willReturn(false);
-
-        $method1->isProtected()->willReturn(false);
-        $method2->isProtected()->willReturn(false);
-        $method3->isProtected()->willReturn(false);
-
-        $method1->isStatic()->willReturn(false);
-        $method2->isStatic()->willReturn(false);
-        $method3->isStatic()->willReturn(false);
-
-        $method1->returnsReference()->willReturn(false);
-        $method2->returnsReference()->willReturn(false);
-        $method3->returnsReference()->willReturn(false);
-
-        $method1->getParameters()->willReturn(array());
-        $method2->getParameters()->willReturn(array());
-        $method3->getParameters()->willReturn(array());
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $method1->hasReturnType()->willReturn(false);
-            $method2->hasReturnType()->willReturn(false);
-            $method3->hasReturnType()->willReturn(false);
-        }
-
-        $classNode   = $this->reflect($class, array());
-        $classNode->shouldBeAnInstanceOf('Prophecy\Doubler\Generator\Node\ClassNode');
-        $classNode->getParentClass()->shouldReturn('Custom\ClassName');
-
-        $methodNodes = $classNode->getMethods();
-        $methodNodes->shouldHaveCount(3);
-
-        $classNode->hasMethod('getName')->shouldReturn(true);
-        $classNode->hasMethod('isPublic')->shouldReturn(true);
-        $classNode->hasMethod('isAbstract')->shouldReturn(true);
-    }
-
-    /**
-     * @param ReflectionClass     $class
-     * @param ReflectionMethod    $method
-     * @param ReflectionParameter $parameter
-     */
-    function it_changes_argument_names_if_they_are_varying($class, $method, $parameter)
-    {
-
-        $class->getName()->willReturn('Custom\ClassName');
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(false);
-        $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method));
-        $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array());
-
-        $method->getParameters()->willReturn(array($parameter));
-        $method->getName()->willReturn('methodName');
-        $method->isFinal()->willReturn(false);
-        $method->isProtected()->willReturn(false);
-        $method->isStatic()->willReturn(false);
-        $method->returnsReference()->willReturn(false);
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $method->hasReturnType()->willReturn(false);
-        }
-
-        $parameter->getName()->willReturn('...');
-        $parameter->isDefaultValueAvailable()->willReturn(true);
-        $parameter->getDefaultValue()->willReturn(null);
-        $parameter->isPassedByReference()->willReturn(false);
-        $parameter->getClass()->willReturn($class);
-
-        $classNode = $this->reflect($class, array());
-
-        $methodNodes = $classNode->getMethods();
-
-        $argumentNodes = $methodNodes['methodName']->getArguments();
-        $argumentNode = $argumentNodes[0];
-
-        $argumentNode->getName()->shouldReturn('__dot_dot_dot__');
-    }
-
-    /**
-     * @param ReflectionClass  $class
-     * @param ReflectionMethod $method
-     */
-    function it_reflects_protected_abstract_methods($class, $method)
-    {
-        $class->getName()->willReturn('Custom\ClassName');
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(false);
-        $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array($method));
-        $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array());
-
-        $method->isProtected()->willReturn(true);
-        $method->isStatic()->willReturn(false);
-        $method->getParameters()->willReturn(array());
-        $method->getName()->willReturn('innerDetail');
-        $method->returnsReference()->willReturn(false);
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $method->hasReturnType()->willReturn(false);
-        }
-
-        $classNode   = $this->reflect($class, array());
-        $classNode->shouldBeAnInstanceOf('Prophecy\Doubler\Generator\Node\ClassNode');
-        $classNode->getParentClass()->shouldReturn('Custom\ClassName');
-
-        $methodNodes = $classNode->getMethods();
-        $methodNodes->shouldHaveCount(1);
-
-        $methodNodes['innerDetail']->getVisibility()->shouldReturn('protected');
-    }
-
-    /**
-     * @param ReflectionClass  $class
-     * @param ReflectionMethod $method
-     */
-    function it_reflects_public_static_methods($class, $method)
-    {
-        $class->getName()->willReturn('Custom\ClassName');
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(false);
-        $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array($method));
-        $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array());
-
-        $method->isProtected()->willReturn(true);
-        $method->isStatic()->willReturn(true);
-        $method->getParameters()->willReturn(array());
-        $method->getName()->willReturn('innerDetail');
-        $method->returnsReference()->willReturn(false);
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $method->hasReturnType()->willReturn(false);
-        }
-
-        $classNode   = $this->reflect($class, array());
-        $classNode->shouldBeAnInstanceOf('Prophecy\Doubler\Generator\Node\ClassNode');
-        $classNode->getParentClass()->shouldReturn('Custom\ClassName');
-
-        $methodNodes = $classNode->getMethods();
-        $methodNodes->shouldHaveCount(1);
-
-        $methodNodes['innerDetail']->getVisibility()->shouldReturn('protected');
-        $methodNodes['innerDetail']->isStatic()->shouldReturn(true);
-    }
-
-    /**
-     * @param ReflectionClass     $class
-     * @param ReflectionMethod    $method
-     * @param ReflectionParameter $param1
-     * @param ReflectionParameter $param2
-     * @param ReflectionClass     $typeHint
-     * @param ReflectionParameter $param3
-     */
-    function it_properly_reads_methods_arguments_with_types(
-        $class, $method, $param1, $param2, $typeHint, $param3
-    )
-    {
-        $class->getName()->willReturn('Custom\ClassName');
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(false);
-        $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array());
-        $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method));
-
-        $method->getName()->willReturn('methodWithArgs');
-        $method->isFinal()->willReturn(false);
-        $method->isProtected()->willReturn(true);
-        $method->isStatic()->willReturn(false);
-        $method->returnsReference()->willReturn(false);
-        $method->getParameters()->willReturn(array($param1, $param2, $param3));
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $method->hasReturnType()->willReturn(false);
-        }
-
-        $param1->getName()->willReturn('arg_1');
-        $param1->isArray()->willReturn(true);
-        $param1->getClass()->willReturn(null);
-        $param1->isDefaultValueAvailable()->willReturn(true);
-        $param1->isPassedByReference()->willReturn(false);
-        $param1->allowsNull()->willReturn(false);
-        $param1->getDefaultValue()->willReturn(array());
-
-        $param2->getName()->willReturn('arg2');
-        $param2->isArray()->willReturn(false);
-        $param2->getClass()->willReturn($typeHint);
-        $param2->isDefaultValueAvailable()->willReturn(false);
-        $param2->isOptional()->willReturn(false);
-        $param2->isPassedByReference()->willReturn(false);
-        $param2->allowsNull()->willReturn(false);
-        $typeHint->getName()->willReturn('ArrayAccess');
-
-        $param3->getName()->willReturn('arg_3');
-        $param3->isArray()->willReturn(false);
-        if (version_compare(PHP_VERSION, '5.4', '>=')) {
-            $param3->isCallable()->willReturn(true);
-        }
-        $param3->getClass()->willReturn(null);
-        $param3->isOptional()->willReturn(false);
-        $param3->isDefaultValueAvailable()->willReturn(false);
-        $param3->isPassedByReference()->willReturn(false);
-        $param3->allowsNull()->willReturn(true);
-
-        $classNode   = $this->reflect($class, array());
-        $methodNodes = $classNode->getMethods();
-        $argNodes    = $methodNodes['methodWithArgs']->getArguments();
-
-        $argNodes[0]->getName()->shouldReturn('arg_1');
-        $argNodes[0]->getTypeHint()->shouldReturn('array');
-        $argNodes[0]->isOptional()->shouldReturn(true);
-        $argNodes[0]->getDefault()->shouldReturn(array());
-
-        $argNodes[1]->getName()->shouldReturn('arg2');
-        $argNodes[1]->getTypeHint()->shouldReturn('ArrayAccess');
-        $argNodes[1]->isOptional()->shouldReturn(false);
-
-        $argNodes[2]->getName()->shouldReturn('arg_3');
-        if (version_compare(PHP_VERSION, '5.4', '>=')) {
-            $argNodes[2]->getTypeHint()->shouldReturn('callable');
-            $argNodes[2]->isOptional()->shouldReturn(true);
-            $argNodes[2]->getDefault()->shouldReturn(null);
-        } else {
-            $argNodes[2]->isOptional()->shouldReturn(false);
-        }
-    }
-
-    /**
-     * @param ReflectionClass     $class
-     * @param ReflectionMethod    $method
-     * @param ReflectionParameter $param1
-     */
-    function it_marks_required_args_without_types_as_not_optional(
-        $class, $method, $param1
-    )
-    {
-        $class->getName()->willReturn('Custom\ClassName');
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(false);
-        $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array());
-        $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method));
-
-        $method->getName()->willReturn('methodWithArgs');
-        $method->isFinal()->willReturn(false);
-        $method->isProtected()->willReturn(false);
-        $method->isStatic()->willReturn(false);
-        $method->returnsReference()->willReturn(false);
-        $method->getParameters()->willReturn(array($param1));
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $method->hasReturnType()->willReturn(false);
-        }
-
-        $param1->getName()->willReturn('arg_1');
-        $param1->isArray()->willReturn(false);
-        if (version_compare(PHP_VERSION, '5.4', '>=')) {
-            $param1->isCallable()->willReturn(false);
-        }
-        $param1->getClass()->willReturn(null);
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $param1->hasType()->willReturn(false);
-        }
-
-        $param1->isDefaultValueAvailable()->willReturn(false);
-        $param1->isOptional()->willReturn(false);
-        $param1->isPassedByReference()->willReturn(false);
-        $param1->allowsNull()->willReturn(true);
-        if (defined('HHVM_VERSION')) {
-            $param1->getTypehintText()->willReturn(null);
-        }
-
-        $classNode   = $this->reflect($class, array());
-        $methodNodes = $classNode->getMethods();
-        $argNodes    = $methodNodes['methodWithArgs']->getArguments();
-
-        $argNodes[0]->isOptional()->shouldReturn(false);
-    }
-
-    /**
-     * @param ReflectionClass     $class
-     * @param ReflectionMethod    $method
-     * @param ReflectionParameter $param1
-     * @param ReflectionParameter $param2
-     * @param ReflectionClass     $typeHint
-     */
-    function it_marks_passed_by_reference_args_as_passed_by_reference(
-        $class, $method, $param1, $param2, $typeHint
-    )
-    {
-        $class->getName()->willReturn('Custom\ClassName');
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(false);
-        $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array());
-        $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method));
-
-        $method->getName()->willReturn('methodWithArgs');
-        $method->isFinal()->willReturn(false);
-        $method->isProtected()->willReturn(false);
-        $method->isStatic()->willReturn(false);
-        $method->returnsReference()->willReturn(false);
-        $method->getParameters()->willReturn(array($param1, $param2));
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $method->hasReturnType()->willReturn(false);
-        }
-
-        $param1->getName()->willReturn('arg_1');
-        $param1->isArray()->willReturn(false);
-        if (version_compare(PHP_VERSION, '5.4', '>=')) {
-            $param1->isCallable()->willReturn(false);
-        }
-        $param1->getClass()->willReturn(null);
-        $param1->isDefaultValueAvailable()->willReturn(false);
-        $param1->isOptional()->willReturn(true);
-        $param1->isPassedByReference()->willReturn(true);
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $param1->hasType()->willReturn(false);
-        }
-
-        $param1->allowsNull()->willReturn(false);
-        if (defined('HHVM_VERSION')) {
-            $param1->getTypehintText()->willReturn(null);
-        }
-
-        $param2->getName()->willReturn('arg2');
-        $param2->isArray()->willReturn(false);
-        $param2->getClass()->willReturn($typeHint);
-        $param2->isDefaultValueAvailable()->willReturn(false);
-        $param2->isOptional()->willReturn(false);
-        $param2->isPassedByReference()->willReturn(false);
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $param2->hasType()->willReturn(false);
-        }
-
-        $param2->allowsNull()->willReturn(false);
-        $typeHint->getName()->willReturn('ArrayAccess');
-
-        $classNode   = $this->reflect($class, array());
-        $methodNodes = $classNode->getMethods();
-        $argNodes    = $methodNodes['methodWithArgs']->getArguments();
-
-        $argNodes[0]->isPassedByReference()->shouldReturn(true);
-        $argNodes[1]->isPassedByReference()->shouldReturn(false);
-    }
-
-    /**
-     * @param ReflectionClass $class
-     */
-    function it_throws_an_exception_if_class_is_final($class)
-    {
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(true);
-        $class->getName()->willReturn('Custom\ClassName');
-
-        $this->shouldThrow('Prophecy\Exception\Doubler\ClassMirrorException')
-             ->duringReflect($class, array());
-    }
-
-    /**
-     * @param ReflectionClass  $class
-     * @param ReflectionMethod $method
-     */
-    function it_ignores_final_methods($class, $method)
-    {
-        $class->getName()->willReturn('Custom\ClassName');
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(false);
-        $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array());
-        $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method));
-
-        $method->isFinal()->willReturn(true);
-        $method->getName()->willReturn('finalImplementation');
-
-        $classNode = $this->reflect($class, array());
-        $classNode->getMethods()->shouldHaveCount(0);
-    }
-
-    /**
-     * @param ReflectionClass $interface
-     */
-    function it_throws_an_exception_if_interface_provided_instead_of_class($interface)
-    {
-        $interface->isInterface()->willReturn(true);
-        $interface->getName()->willReturn('Custom\ClassName');
-
-        $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')
-             ->duringReflect($interface, array());
-    }
-
-    /**
-     * @param ReflectionClass  $interface1
-     * @param ReflectionClass  $interface2
-     * @param ReflectionMethod $method1
-     * @param ReflectionMethod $method2
-     * @param ReflectionMethod $method3
-     */
-    function it_reflects_all_interfaces_methods(
-        $interface1, $interface2, $method1, $method2, $method3
-    )
-    {
-        $interface1->getName()->willReturn('MyInterface1');
-        $interface2->getName()->willReturn('MyInterface2');
-
-        $interface1->isInterface()->willReturn(true);
-        $interface2->isInterface()->willReturn(true);
-
-        $interface1->getMethods()->willReturn(array($method1));
-        $interface2->getMethods()->willReturn(array($method2, $method3));
-
-        $method1->getName()->willReturn('getName');
-        $method2->getName()->willReturn('isPublic');
-        $method3->getName()->willReturn('isAbstract');
-
-        $method1->isProtected()->willReturn(false);
-        $method2->isProtected()->willReturn(false);
-        $method3->isProtected()->willReturn(false);
-
-        $method1->returnsReference()->willReturn(false);
-        $method2->returnsReference()->willReturn(false);
-        $method3->returnsReference()->willReturn(false);
-
-        $method1->isStatic()->willReturn(false);
-        $method2->isStatic()->willReturn(false);
-        $method3->isStatic()->willReturn(false);
-
-        $method1->getParameters()->willReturn(array());
-        $method2->getParameters()->willReturn(array());
-        $method3->getParameters()->willReturn(array());
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $method1->hasReturnType()->willReturn(false);
-            $method2->hasReturnType()->willReturn(false);
-            $method3->hasReturnType()->willReturn(false);
-        }
-
-        $classNode = $this->reflect(null, array($interface1, $interface2));
-
-        $classNode->shouldBeAnInstanceOf('Prophecy\Doubler\Generator\Node\ClassNode');
-        $classNode->getParentClass()->shouldReturn('stdClass');
-        $classNode->getInterfaces()->shouldReturn(array(
-            'Prophecy\Doubler\Generator\ReflectionInterface', 'MyInterface2', 'MyInterface1',
-        ));
-
-        $methodNodes = $classNode->getMethods();
-        $methodNodes->shouldHaveCount(3);
-
-        $classNode->hasMethod('getName')->shouldReturn(true);
-        $classNode->hasMethod('isPublic')->shouldReturn(true);
-        $classNode->hasMethod('isAbstract')->shouldReturn(true);
-    }
-
-    /**
-     * @param ReflectionClass  $class
-     * @param ReflectionMethod $method1
-     * @param ReflectionMethod $method2
-     * @param ReflectionMethod $method3
-     */
-    function it_ignores_virtually_private_methods($class, $method1, $method2, $method3)
-    {
-        $class->getName()->willReturn('SomeClass');
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(false);
-        $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array());
-        $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method1, $method2, $method3));
-
-        $method1->getName()->willReturn('_getName');
-        $method2->getName()->willReturn('__toString');
-        $method3->getName()->willReturn('isAbstract');
-
-        $method1->isFinal()->willReturn(false);
-        $method2->isFinal()->willReturn(false);
-        $method3->isFinal()->willReturn(false);
-
-        $method1->isProtected()->willReturn(false);
-        $method2->isProtected()->willReturn(false);
-        $method3->isProtected()->willReturn(false);
-
-        $method1->isStatic()->willReturn(false);
-        $method2->isStatic()->willReturn(false);
-        $method3->isStatic()->willReturn(false);
-
-        $method1->returnsReference()->willReturn(false);
-        $method2->returnsReference()->willReturn(false);
-        $method3->returnsReference()->willReturn(false);
-
-        $method1->getParameters()->willReturn(array());
-        $method2->getParameters()->willReturn(array());
-        $method3->getParameters()->willReturn(array());
-
-        if (version_compare(PHP_VERSION, '7.0', '>=')) {
-            $method1->hasReturnType()->willReturn(false);
-            $method2->hasReturnType()->willReturn(false);
-            $method3->hasReturnType()->willReturn(false);
-        }
-
-        $classNode = $this->reflect($class, array());
-        $methodNodes = $classNode->getMethods();
-        $methodNodes->shouldHaveCount(2);
-
-        $classNode->hasMethod('isAbstract')->shouldReturn(true);
-    }
-
-    /**
-     * @param ReflectionClass  $class
-     * @param ReflectionMethod $method
-     */
-    function it_does_not_throw_exception_for_virtually_private_finals($class, $method)
-    {
-        $class->getName()->willReturn('SomeClass');
-        $class->isInterface()->willReturn(false);
-        $class->isFinal()->willReturn(false);
-        $class->getMethods(ReflectionMethod::IS_ABSTRACT)->willReturn(array());
-        $class->getMethods(ReflectionMethod::IS_PUBLIC)->willReturn(array($method));
-
-        $method->getName()->willReturn('__toString');
-        $method->isFinal()->willReturn(true);
-
-        $this->shouldNotThrow()->duringReflect($class, array());
-    }
-
-    /**
-     * @param ReflectionClass $class
-     */
-    function it_throws_an_exception_if_class_provided_in_interfaces_list($class)
-    {
-        $class->getName()->willReturn('MyClass');
-        $class->isInterface()->willReturn(false);
-
-        $this->shouldThrow('InvalidArgumentException')
-             ->duringReflect(null, array($class));
-    }
-
-    function it_throws_an_exception_if_not_reflection_provided_as_interface()
-    {
-        $this->shouldThrow('InvalidArgumentException')
-             ->duringReflect(null, array(null));
-    }
-
-    function it_doesnt_fail_to_typehint_nonexistent_FQCN()
-    {
-        $classNode = $this->reflect(new ReflectionClass('spec\Prophecy\Doubler\Generator\OptionalDepsClass'), array());
-        $method = $classNode->getMethod('iHaveAStrangeTypeHintedArg');
-        $arguments = $method->getArguments();
-        $arguments[0]->getTypeHint()->shouldBe('I\Simply\Am\Nonexistent');
-    }
-
-    function it_doesnt_fail_to_typehint_nonexistent_RQCN()
-    {
-        $classNode = $this->reflect(new ReflectionClass('spec\Prophecy\Doubler\Generator\OptionalDepsClass'), array());
-        $method = $classNode->getMethod('iHaveAnEvenStrangerTypeHintedArg');
-        $arguments = $method->getArguments();
-        $arguments[0]->getTypeHint()->shouldBe('I\Simply\Am\Not');
-    }
-
-    function it_doesnt_use_scalar_typehints()
-    {
-        $classNode = $this->reflect(new ReflectionClass('ReflectionMethod'), array());
-        $method = $classNode->getMethod('export');
-        $arguments = $method->getArguments();
-        $arguments[0]->getTypeHint()->shouldReturn(null);
-        $arguments[1]->getTypeHint()->shouldReturn(null);
-        $arguments[2]->getTypeHint()->shouldReturn(null);
-    }
-}
-
-class OptionalDepsClass
-{
-    public function iHaveAStrangeTypeHintedArg(\I\Simply\Am\Nonexistent $class)
-    {
-    }
-
-    public function iHaveAnEvenStrangerTypeHintedArg(Simply\Am\Not $class)
-    {
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php
deleted file mode 100644
index cea578f..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\Generator\Node;
-
-use PhpSpec\ObjectBehavior;
-
-class ArgumentNodeSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('name');
-    }
-
-    function it_is_not_be_passed_by_reference_by_default()
-    {
-        $this->shouldNotBePassedByReference();
-    }
-
-    function it_is_passed_by_reference_if_marked()
-    {
-        $this->setAsPassedByReference();
-        $this->shouldBePassedByReference();
-    }
-
-    function it_has_name_with_which_it_was_been_constructed()
-    {
-        $this->getName()->shouldReturn('name');
-    }
-
-    function it_has_no_typehint_by_default()
-    {
-        $this->getTypeHint()->shouldReturn(null);
-    }
-
-    function its_typeHint_is_mutable()
-    {
-        $this->setTypeHint('array');
-        $this->getTypeHint()->shouldReturn('array');
-    }
-
-    function it_does_not_have_default_value_by_default()
-    {
-        $this->getDefault()->shouldReturn(null);
-    }
-
-    function it_is_not_optional_by_default()
-    {
-        $this->isOptional()->shouldReturn(false);
-    }
-
-    function its_default_is_mutable()
-    {
-        $this->setDefault(array());
-        $this->getDefault()->shouldReturn(array());
-    }
-
-    function it_is_marked_as_optional_when_default_is_set()
-    {
-        $this->setDefault(null);
-        $this->isOptional()->shouldReturn(true);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php
deleted file mode 100644
index 18f0e1c..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\Generator\Node;
-
-use PhpSpec\ObjectBehavior;
-
-class ClassNodeSpec extends ObjectBehavior
-{
-    function its_parentClass_is_a_stdClass_by_default()
-    {
-        $this->getParentClass()->shouldReturn('stdClass');
-    }
-
-    function its_parentClass_is_mutable()
-    {
-        $this->setParentClass('Exception');
-        $this->getParentClass()->shouldReturn('Exception');
-    }
-
-    function its_parentClass_is_set_to_stdClass_if_user_set_null()
-    {
-        $this->setParentClass(null);
-        $this->getParentClass()->shouldReturn('stdClass');
-    }
-
-    function it_does_not_implement_any_interface_by_default()
-    {
-        $this->getInterfaces()->shouldHaveCount(0);
-    }
-
-    function its_addInterface_adds_item_to_the_list_of_implemented_interfaces()
-    {
-        $this->addInterface('MyInterface');
-        $this->getInterfaces()->shouldHaveCount(1);
-    }
-
-    function its_hasInterface_returns_true_if_class_implements_interface()
-    {
-        $this->addInterface('MyInterface');
-        $this->hasInterface('MyInterface')->shouldReturn(true);
-    }
-
-    function its_hasInterface_returns_false_if_class_does_not_implements_interface()
-    {
-        $this->hasInterface('MyInterface')->shouldReturn(false);
-    }
-
-    function it_supports_implementation_of_multiple_interfaces()
-    {
-        $this->addInterface('MyInterface');
-        $this->addInterface('MySecondInterface');
-        $this->getInterfaces()->shouldHaveCount(2);
-    }
-
-    function it_ignores_same_interfaces_added_twice()
-    {
-        $this->addInterface('MyInterface');
-        $this->addInterface('MyInterface');
-
-        $this->getInterfaces()->shouldHaveCount(1);
-        $this->getInterfaces()->shouldReturn(array('MyInterface'));
-    }
-
-    function it_does_not_have_methods_by_default()
-    {
-        $this->getMethods()->shouldHaveCount(0);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method1
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method2
-     */
-    function it_can_has_methods($method1, $method2)
-    {
-        $method1->getName()->willReturn('__construct');
-        $method2->getName()->willReturn('getName');
-
-        $this->addMethod($method1);
-        $this->addMethod($method2);
-
-        $this->getMethods()->shouldReturn(array(
-            '__construct' => $method1,
-            'getName'     => $method2
-        ));
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method
-     */
-    function its_hasMethod_returns_true_if_method_exists($method)
-    {
-        $method->getName()->willReturn('getName');
-
-        $this->addMethod($method);
-
-        $this->hasMethod('getName')->shouldReturn(true);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method
-     */
-    function its_getMethod_returns_method_by_name($method)
-    {
-        $method->getName()->willReturn('getName');
-
-        $this->addMethod($method);
-
-        $this->getMethod('getName')->shouldReturn($method);
-    }
-
-    function its_hasMethod_returns_false_if_method_does_not_exists()
-    {
-        $this->hasMethod('getName')->shouldReturn(false);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\MethodNode $method
-     */
-    function its_hasMethod_returns_false_if_method_has_been_removed($method)
-    {
-        $method->getName()->willReturn('getName');
-        $this->addMethod($method);
-        $this->removeMethod('getName');
-
-        $this->hasMethod('getName')->shouldReturn(false);
-    }
-
-
-    function it_does_not_have_properties_by_default()
-    {
-        $this->getProperties()->shouldHaveCount(0);
-    }
-
-    function it_is_able_to_have_properties()
-    {
-        $this->addProperty('title');
-        $this->addProperty('text', 'private');
-        $this->getProperties()->shouldReturn(array(
-            'title' => 'public',
-            'text'  => 'private'
-        ));
-    }
-
-    function its_addProperty_does_not_accept_unsupported_visibility()
-    {
-        $this->shouldThrow('InvalidArgumentException')->duringAddProperty('title', 'town');
-    }
-
-    function its_addProperty_lowercases_visibility_before_setting()
-    {
-        $this->addProperty('text', 'PRIVATE');
-        $this->getProperties()->shouldReturn(array('text' => 'private'));
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php
deleted file mode 100644
index d67646d..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler\Generator\Node;
-
-use PhpSpec\ObjectBehavior;
-
-class MethodNodeSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('getTitle');
-    }
-
-    function it_has_a_name()
-    {
-        $this->getName()->shouldReturn('getTitle');
-    }
-
-    function it_has_public_visibility_by_default()
-    {
-        $this->getVisibility()->shouldReturn('public');
-    }
-
-    function its_visibility_is_mutable()
-    {
-        $this->setVisibility('private');
-        $this->getVisibility()->shouldReturn('private');
-    }
-
-    function it_is_not_static_by_default()
-    {
-        $this->shouldNotBeStatic();
-    }
-
-    function it_does_not_return_a_reference_by_default()
-    {
-        $this->returnsReference()->shouldReturn(false);
-    }
-
-    function it_should_be_settable_as_returning_a_reference_through_setter()
-    {
-        $this->setReturnsReference();
-        $this->returnsReference()->shouldReturn(true);
-    } 
-
-    function it_should_be_settable_as_static_through_setter()
-    {
-        $this->setStatic();
-        $this->shouldBeStatic();
-    }
-
-    function it_accepts_only_supported_visibilities()
-    {
-        $this->shouldThrow('InvalidArgumentException')->duringSetVisibility('stealth');
-    }
-
-    function it_lowercases_visibility_before_setting_it()
-    {
-        $this->setVisibility('Public');
-        $this->getVisibility()->shouldReturn('public');
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument1
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument2
-     */
-    function its_useParentCode_causes_method_to_call_parent($argument1, $argument2)
-    {
-        $argument1->getName()->willReturn('objectName');
-        $argument2->getName()->willReturn('default');
-
-        $this->addArgument($argument1);
-        $this->addArgument($argument2);
-
-        $this->useParentCode();
-
-        $this->getCode()->shouldReturn(
-            'return parent::getTitle($objectName, $default);'
-        );
-    }
-
-    function its_code_is_mutable()
-    {
-        $this->setCode('echo "code";');
-        $this->getCode()->shouldReturn('echo "code";');
-    }
-
-    function its_reference_returning_methods_will_generate_exceptions()
-    {
-        $this->setCode('echo "code";');
-        $this->setReturnsReference();
-        $this->getCode()->shouldReturn("throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), 'getTitle');");
-    }
-
-    function its_setCode_provided_with_null_cleans_method_body()
-    {
-        $this->setCode(null);
-        $this->getCode()->shouldReturn('');
-    }
-
-    function it_is_constructable_with_code()
-    {
-        $this->beConstructedWith('getTitle', 'die();');
-        $this->getCode()->shouldReturn('die();');
-    }
-
-    function it_does_not_have_arguments_by_default()
-    {
-        $this->getArguments()->shouldHaveCount(0);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument1
-     * @param \Prophecy\Doubler\Generator\Node\ArgumentNode $argument2
-     */
-    function it_supports_adding_arguments($argument1, $argument2)
-    {
-        $this->addArgument($argument1);
-        $this->addArgument($argument2);
-
-        $this->getArguments()->shouldReturn(array($argument1, $argument2));
-    }
-
-    function it_does_not_have_return_type_by_default()
-    {
-        $this->hasReturnType()->shouldReturn(false);
-    }
-
-    function it_setReturnType_sets_return_type()
-    {
-        $returnType = 'string';
-
-        $this->setReturnType($returnType);
-
-        $this->hasReturnType()->shouldReturn(true);
-        $this->getReturnType()->shouldReturn($returnType);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php
deleted file mode 100644
index 7026126..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler;
-
-use PhpSpec\ObjectBehavior;
-
-class LazyDoubleSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Doubler\Doubler $doubler
-     */
-    function let($doubler)
-    {
-        $this->beConstructedWith($doubler);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $double
-     */
-    function it_returns_anonymous_double_instance_by_default($doubler, $double)
-    {
-        $doubler->double(null, array())->willReturn($double);
-
-        $this->getInstance()->shouldReturn($double);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $double
-     * @param \ReflectionClass                            $class
-     */
-    function it_returns_class_double_instance_if_set($doubler, $double, $class)
-    {
-        $doubler->double($class, array())->willReturn($double);
-
-        $this->setParentClass($class);
-
-        $this->getInstance()->shouldReturn($double);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $double1
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $double2
-     */
-    function it_returns_same_double_instance_if_called_2_times(
-        $doubler, $double1, $double2
-    )
-    {
-        $doubler->double(null, array())->willReturn($double1);
-        $doubler->double(null, array())->willReturn($double2);
-
-        $this->getInstance()->shouldReturn($double2);
-        $this->getInstance()->shouldReturn($double2);
-    }
-
-    function its_setParentClass_throws_ClassNotFoundException_if_class_not_found()
-    {
-        $this->shouldThrow('Prophecy\Exception\Doubler\ClassNotFoundException')
-            ->duringSetParentClass('SomeUnexistingClass');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $double
-     */
-    function its_setParentClass_throws_exception_if_prophecy_is_already_created(
-        $doubler, $double
-    )
-    {
-        $doubler->double(null, array())->willReturn($double);
-
-        $this->getInstance();
-
-        $this->shouldThrow('Prophecy\Exception\Doubler\DoubleException')
-            ->duringSetParentClass('stdClass');
-    }
-
-    function its_addInterface_throws_InterfaceNotFoundException_if_no_interface_found()
-    {
-        $this->shouldThrow('Prophecy\Exception\Doubler\InterfaceNotFoundException')
-            ->duringAddInterface('SomeUnexistingInterface');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $double
-     */
-    function its_addInterface_throws_exception_if_prophecy_is_already_created(
-        $doubler, $double
-    )
-    {
-        $doubler->double(null, array())->willReturn($double);
-
-        $this->getInstance();
-
-        $this->shouldThrow('Prophecy\Exception\Doubler\DoubleException')
-            ->duringAddInterface('ArrayAccess');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php
deleted file mode 100644
index a3e7491..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Doubler;
-
-use PhpSpec\ObjectBehavior;
-
-class NameGeneratorSpec extends ObjectBehavior
-{
-    /**
-     * @param \ReflectionClass $class
-     */
-    function its_name_generates_name_based_on_simple_class_reflection($class)
-    {
-        $class->getName()->willReturn('stdClass');
-        $this->name($class, array())->shouldStartWith('Double\stdClass\\');
-    }
-
-    /**
-     * @param \ReflectionClass $class
-     */
-    function its_name_generates_name_based_on_namespaced_class_reflection($class)
-    {
-        $class->getName()->willReturn('Some\Custom\Class');
-        $this->name($class, array())->shouldStartWith('Double\Some\Custom\Class\P');
-    }
-
-    /**
-     * @param \ReflectionClass $interface1
-     * @param \ReflectionClass $interface2
-     */
-    function its_name_generates_name_based_on_interface_shortnames($interface1, $interface2)
-    {
-        $interface1->getShortName()->willReturn('HandlerInterface');
-        $interface2->getShortName()->willReturn('LoaderInterface');
-
-        $this->name(null, array($interface1, $interface2))->shouldStartWith(
-            'Double\HandlerInterface\LoaderInterface\P'
-        );
-    }
-
-    function it_generates_proper_name_for_no_class_and_interfaces_list()
-    {
-        $this->name(null, array())->shouldStartWith('Double\stdClass\P');
-    }
-
-    /**
-     * @param \ReflectionClass $class
-     * @param \ReflectionClass $interface1
-     * @param \ReflectionClass $interface2
-     */
-    function its_name_generates_name_based_only_on_class_if_its_available(
-        $class, $interface1, $interface2
-    )
-    {
-        $class->getName()->willReturn('Some\Custom\Class');
-        $interface1->getShortName()->willReturn('HandlerInterface');
-        $interface2->getShortName()->willReturn('LoaderInterface');
-
-        $this->name($class, array($interface1, $interface2))->shouldStartWith(
-            'Double\Some\Custom\Class\P'
-        );
-    }
-
-    public function getMatchers()
-    {
-        return array(
-            'startWith' => function ($subject, $string) {
-                return 0 === strpos($subject, $string);
-            },
-        );
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php
deleted file mode 100644
index 6fd1a5c..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Call;
-
-use PhpSpec\ObjectBehavior;
-use spec\Prophecy\Exception\Prophecy\Prophecy;
-
-class UnexpectedCallExceptionSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $objectProphecy
-     */
-    function let($objectProphecy)
-    {
-        $this->beConstructedWith('msg', $objectProphecy, 'getName', array('arg1', 'arg2'));
-    }
-
-    function it_is_prophecy_exception()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ObjectProphecyException');
-    }
-
-    function it_exposes_method_name_through_getter()
-    {
-        $this->getMethodName()->shouldReturn('getName');
-    }
-
-    function it_exposes_arguments_through_getter()
-    {
-        $this->getArguments()->shouldReturn(array('arg1', 'arg2'));
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php
deleted file mode 100644
index 5824138..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Doubler;
-
-use PhpSpec\ObjectBehavior;
-use spec\Prophecy\Exception\Prophecy;
-
-class ClassCreatorExceptionSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
-     */
-    function let($node)
-    {
-        $this->beConstructedWith('', $node);
-    }
-
-    function it_is_a_prophecy_exception()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception');
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException');
-    }
-
-    function it_contains_a_reflected_node($node)
-    {
-        $this->getClassNode()->shouldReturn($node);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php
deleted file mode 100644
index 21e31a3..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Doubler;
-
-use PhpSpec\ObjectBehavior;
-
-class ClassMirrorExceptionSpec extends ObjectBehavior
-{
-    /**
-     * @param \ReflectionClass $class
-     */
-    function let($class)
-    {
-        $this->beConstructedWith('', $class);
-    }
-
-    function it_is_a_prophecy_exception()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception');
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException');
-    }
-
-    function it_contains_a_reflected_class_link($class)
-    {
-        $this->getReflectedClass()->shouldReturn($class);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php
deleted file mode 100644
index 251512b..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Doubler;
-
-use PhpSpec\ObjectBehavior;
-use spec\Prophecy\Exception\Prophecy;
-
-class ClassNotFoundExceptionSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('msg', 'CustomClass');
-    }
-
-    function it_is_a_prophecy_exception()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception');
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoubleException');
-    }
-
-    function its_getClassname_returns_classname()
-    {
-        $this->getClassname()->shouldReturn('CustomClass');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php
deleted file mode 100644
index 6fe5a19..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Doubler;
-
-use PhpSpec\ObjectBehavior;
-
-class DoubleExceptionSpec extends ObjectBehavior
-{
-    function it_is_a_double_exception()
-    {
-        $this->shouldBeAnInstanceOf('RuntimeException');
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php
deleted file mode 100644
index ad1a439..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Doubler;
-
-use PhpSpec\ObjectBehavior;
-use spec\Prophecy\Exception\Prophecy;
-
-class InterfaceNotFoundExceptionSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('msg', 'CustomInterface');
-    }
-
-    function it_extends_ClassNotFoundException()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\ClassNotFoundException');
-    }
-
-    function its_getClassname_returns_classname()
-    {
-        $this->getClassname()->shouldReturn('CustomInterface');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php
deleted file mode 100644
index a889dd7..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Doubler;
-
-use PhpSpec\ObjectBehavior;
-use spec\Prophecy\Exception\Prophecy;
-
-class MethodNotFoundExceptionSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('', 'User', 'getName', array(1, 2, 3));
-    }
-
-    function it_is_DoubleException()
-    {
-        $this->shouldHaveType('Prophecy\Exception\Doubler\DoubleException');
-    }
-
-    function it_has_MethodName()
-    {
-        $this->getMethodName()->shouldReturn('getName');
-    }
-
-    function it_has_classnamej()
-    {
-        $this->getClassname()->shouldReturn('User');
-    }
-
-    function it_has_an_arguments_list()
-    {
-        $this->getArguments()->shouldReturn(array(1, 2, 3));
-    }
-
-    function it_has_a_default_null_argument_list()
-    {
-        $this->beConstructedWith('', 'User', 'getName');
-        $this->getArguments()->shouldReturn(null);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php
deleted file mode 100644
index 22a5ebd..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Prediction;
-
-use PhpSpec\ObjectBehavior;
-
-class AggregateExceptionSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith(null);
-    }
-
-    function it_is_prediction_exception()
-    {
-        $this->shouldBeAnInstanceOf('RuntimeException');
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Prediction\PredictionException');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     */
-    function it_can_store_objectProphecy_link($object)
-    {
-        $this->setObjectProphecy($object);
-        $this->getObjectProphecy()->shouldReturn($object);
-    }
-
-    function it_should_not_have_exceptions_at_the_beginning()
-    {
-        $this->getExceptions()->shouldHaveCount(0);
-    }
-
-    /**
-     * @param \Prophecy\Exception\Prediction\PredictionException $exception
-     */
-    function it_should_append_exception_through_append_method($exception)
-    {
-        $exception->getMessage()->willReturn('Exception #1');
-
-        $this->append($exception);
-
-        $this->getExceptions()->shouldReturn(array($exception));
-    }
-
-    /**
-     * @param \Prophecy\Exception\Prediction\PredictionException $exception
-     */
-    function it_should_update_message_during_append($exception)
-    {
-        $exception->getMessage()->willReturn('Exception #1');
-
-        $this->append($exception);
-
-        $this->getMessage()->shouldReturn("  Exception #1");
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php
deleted file mode 100644
index 473f1a2..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Prediction;
-
-use PhpSpec\ObjectBehavior;
-
-class NoCallsExceptionSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $objectProphecy
-     * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy
-     */
-    function let($objectProphecy, $methodProphecy)
-    {
-        $methodProphecy->getObjectProphecy()->willReturn($objectProphecy);
-
-        $this->beConstructedWith('message', $methodProphecy);
-    }
-
-    function it_is_PredictionException()
-    {
-        $this->shouldHaveType('Prophecy\Exception\Prediction\PredictionException');
-    }
-
-    function it_extends_MethodProphecyException()
-    {
-        $this->shouldHaveType('Prophecy\Exception\Prophecy\MethodProphecyException');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php
deleted file mode 100644
index adad975..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Prediction;
-
-use PhpSpec\ObjectBehavior;
-
-class UnexpectedCallsCountExceptionSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $objectProphecy
-     * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy
-     * @param \Prophecy\Call\Call               $call1
-     * @param \Prophecy\Call\Call               $call2
-     */
-    function let($objectProphecy, $methodProphecy, $call1, $call2)
-    {
-        $methodProphecy->getObjectProphecy()->willReturn($objectProphecy);
-
-        $this->beConstructedWith('message', $methodProphecy, 5, array($call1, $call2));
-    }
-
-    function it_extends_UnexpectedCallsException()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Prediction\UnexpectedCallsException');
-    }
-
-    function it_should_expose_expectedCount_through_getter()
-    {
-        $this->getExpectedCount()->shouldReturn(5);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php
deleted file mode 100644
index c0fe24d..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Prediction;
-
-use PhpSpec\ObjectBehavior;
-
-class UnexpectedCallsExceptionSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $objectProphecy
-     * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy
-     * @param \Prophecy\Call\Call               $call1
-     * @param \Prophecy\Call\Call               $call2
-     */
-    function let($objectProphecy, $methodProphecy, $call1, $call2)
-    {
-        $methodProphecy->getObjectProphecy()->willReturn($objectProphecy);
-
-        $this->beConstructedWith('message', $methodProphecy, array($call1, $call2));
-    }
-
-    function it_is_PredictionException()
-    {
-        $this->shouldHaveType('Prophecy\Exception\Prediction\PredictionException');
-    }
-
-    function it_extends_MethodProphecyException()
-    {
-        $this->shouldHaveType('Prophecy\Exception\Prophecy\MethodProphecyException');
-    }
-
-    function it_should_expose_calls_list_through_getter($call1, $call2)
-    {
-        $this->getCalls()->shouldReturn(array($call1, $call2));
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php
deleted file mode 100644
index 97cf9e1..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Prophecy;
-
-use PhpSpec\ObjectBehavior;
-use spec\Prophecy\Exception\Prophecy;
-
-class MethodProphecyExceptionSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $objectProphecy
-     * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy
-     */
-    function let($objectProphecy, $methodProphecy)
-    {
-        $methodProphecy->getObjectProphecy()->willReturn($objectProphecy);
-
-        $this->beConstructedWith('message', $methodProphecy);
-    }
-
-    function it_extends_DoubleException()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ObjectProphecyException');
-    }
-
-    function it_holds_a_stub_reference($methodProphecy)
-    {
-        $this->getMethodProphecy()->shouldReturn($methodProphecy);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php
deleted file mode 100644
index bcacfed..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Exception\Prophecy;
-
-use PhpSpec\ObjectBehavior;
-use spec\Prophecy\Exception\Prophecy;
-
-class ObjectProphecyExceptionSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $objectProphecy
-     */
-    function let($objectProphecy)
-    {
-        $this->beConstructedWith('message', $objectProphecy);
-    }
-
-    function it_should_be_a_prophecy_exception()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ProphecyException');
-    }
-
-    function it_holds_double_reference($objectProphecy)
-    {
-        $this->getObjectProphecy()->shouldReturn($objectProphecy);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php
deleted file mode 100644
index 3da8c59..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Prediction;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class CallPredictionSpec extends ObjectBehavior
-{
-    function it_is_prediction()
-    {
-        $this->shouldHaveType('Prophecy\Prediction\PredictionInterface');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     * @param \Prophecy\Call\Call               $call
-     */
-    function it_does_nothing_if_there_is_more_than_one_call_been_made($object, $method, $call)
-    {
-        $this->check(array($call), $object, $method)->shouldReturn(null);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy    $object
-     * @param \Prophecy\Prophecy\MethodProphecy    $method
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments
-     */
-    function it_throws_NoCallsException_if_no_calls_found($object, $method, $arguments)
-    {
-        $method->getObjectProphecy()->willReturn($object);
-        $method->getMethodName()->willReturn('getName');
-        $method->getArgumentsWildcard()->willReturn($arguments);
-        $arguments->__toString()->willReturn('123');
-        $object->reveal()->willReturn(new \stdClass());
-        $object->findProphecyMethodCalls('getName', Argument::any())->willReturn(array());
-
-        $this->shouldThrow('Prophecy\Exception\Prediction\NoCallsException')
-            ->duringCheck(array(), $object, $method);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php
deleted file mode 100644
index c670892..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Prediction;
-
-use PhpSpec\ObjectBehavior;
-
-class CallTimesPredictionSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith(2);
-    }
-
-    function it_is_prediction()
-    {
-        $this->shouldHaveType('Prophecy\Prediction\PredictionInterface');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     * @param \Prophecy\Call\Call               $call1
-     * @param \Prophecy\Call\Call               $call2
-     */
-    function it_does_nothing_if_there_were_exact_amount_of_calls_being_made(
-        $object, $method, $call1, $call2
-    )
-    {
-        $this->check(array($call1, $call2), $object, $method)->shouldReturn(null);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy    $object
-     * @param \Prophecy\Prophecy\MethodProphecy    $method
-     * @param \Prophecy\Call\Call                  $call
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments
-     */
-    function it_throws_UnexpectedCallsCountException_if_calls_found(
-        $object, $method, $call, $arguments
-    )
-    {
-        $method->getObjectProphecy()->willReturn($object);
-        $method->getMethodName()->willReturn('getName');
-        $method->getArgumentsWildcard()->willReturn($arguments);
-        $arguments->__toString()->willReturn('123');
-
-        $call->getMethodName()->willReturn('getName');
-        $call->getArguments()->willReturn(array(5, 4, 'three'));
-        $call->getCallPlace()->willReturn('unknown');
-
-        $this->shouldThrow('Prophecy\Exception\Prediction\UnexpectedCallsCountException')
-            ->duringCheck(array($call), $object, $method);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php
deleted file mode 100644
index 7fe475e..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Prediction;
-
-use PhpSpec\ObjectBehavior;
-
-use RuntimeException;
-
-class CallbackPredictionSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('get_class');
-    }
-
-    function it_is_prediction()
-    {
-        $this->shouldHaveType('Prophecy\Prediction\PredictionInterface');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     * @param \Prophecy\Call\Call               $call
-     */
-    function it_proxies_call_to_callback($object, $method, $call)
-    {
-        $returnFirstCallCallback = function ($calls, $object, $method) {
-            throw new RuntimeException;
-        };
-
-        $this->beConstructedWith($returnFirstCallCallback);
-
-        $this->shouldThrow('RuntimeException')->duringCheck(array($call), $object, $method);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php
deleted file mode 100644
index a3ef9bc..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Prediction;
-
-use PhpSpec\ObjectBehavior;
-
-class NoCallsPredictionSpec extends ObjectBehavior
-{
-    function it_is_prediction()
-    {
-        $this->shouldHaveType('Prophecy\Prediction\PredictionInterface');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_does_nothing_if_there_is_no_calls_made($object, $method)
-    {
-        $this->check(array(), $object, $method)->shouldReturn(null);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy    $object
-     * @param \Prophecy\Prophecy\MethodProphecy    $method
-     * @param \Prophecy\Call\Call                  $call
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments
-     */
-    function it_throws_UnexpectedCallsException_if_calls_found($object, $method, $call, $arguments)
-    {
-        $method->getObjectProphecy()->willReturn($object);
-        $method->getMethodName()->willReturn('getName');
-        $method->getArgumentsWildcard()->willReturn($arguments);
-        $arguments->__toString()->willReturn('123');
-
-        $call->getMethodName()->willReturn('getName');
-        $call->getArguments()->willReturn(array(5, 4, 'three'));
-        $call->getCallPlace()->willReturn('unknown');
-
-        $this->shouldThrow('Prophecy\Exception\Prediction\UnexpectedCallsException')
-            ->duringCheck(array($call), $object, $method);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php
deleted file mode 100644
index 5d99b1b..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Promise;
-
-use PhpSpec\ObjectBehavior;
-
-class CallbackPromiseSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('get_class');
-    }
-
-    function it_is_promise()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_should_execute_closure_callback($object, $method)
-    {
-        $firstArgumentCallback = function ($args) {
-            return $args[0];
-        };
-
-        $this->beConstructedWith($firstArgumentCallback);
-
-        $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_should_execute_static_array_callback($object, $method)
-    {
-        $firstArgumentCallback = array('spec\Prophecy\Promise\ClassCallback', 'staticCallbackMethod');
-
-        $this->beConstructedWith($firstArgumentCallback);
-
-        $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_should_execute_instance_array_callback($object, $method)
-    {
-        $class = new ClassCallback();
-        $firstArgumentCallback = array($class, 'callbackMethod');
-
-        $this->beConstructedWith($firstArgumentCallback);
-
-        $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_should_execute_string_function_callback($object, $method)
-    {
-        $firstArgumentCallback = 'spec\Prophecy\Promise\functionCallbackFirstArgument';
-
-        $this->beConstructedWith($firstArgumentCallback);
-
-        $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one');
-    }
-
-}
-
-/**
- * Class used to test callbackpromise
- *
- * @param array
- * @return string
- */
-class ClassCallback
-{
-    /**
-     * @param array $args
-     */
-    function callbackMethod($args)
-    {
-        return $args[0];
-    }
-
-    /**
-     * @param array $args
-     */
-    static function staticCallbackMethod($args)
-    {
-        return $args[0];
-    }
-}
-
-/**
- * Callback function used to test callbackpromise
- *
- * @param array
- * @return string
- */
-function functionCallbackFirstArgument($args)
-{
-    return $args[0];
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php
deleted file mode 100644
index 4acb7bb..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Promise;
-
-use PhpSpec\ObjectBehavior;
-
-class ReturnArgumentPromiseSpec extends ObjectBehavior
-{
-    function it_is_promise()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_should_return_first_argument_if_provided($object, $method)
-    {
-        $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_should_return_null_if_no_arguments_provided($object, $method)
-    {
-        $this->execute(array(), $object, $method)->shouldReturn(null);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_should_return_nth_argument_if_provided($object, $method)
-    {
-        $this->beConstructedWith(1);
-        $this->execute(array('one', 'two'), $object, $method)->shouldReturn('two');
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php
deleted file mode 100644
index 18bfd87..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Promise;
-
-use PhpSpec\ObjectBehavior;
-
-class ReturnPromiseSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith(array(42));
-    }
-
-    function it_is_promise()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_returns_value_it_was_constructed_with($object, $method)
-    {
-        $this->execute(array(), $object, $method)->shouldReturn(42);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_always_returns_last_value_left_in_the_return_values($object, $method)
-    {
-        $this->execute(array(), $object, $method)->shouldReturn(42);
-        $this->execute(array(), $object, $method)->shouldReturn(42);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_consequently_returns_multiple_values_it_was_constructed_with($object, $method)
-    {
-        $this->beConstructedWith(array(42, 24, 12));
-
-        $this->execute(array(), $object, $method)->shouldReturn(42);
-        $this->execute(array(), $object, $method)->shouldReturn(24);
-        $this->execute(array(), $object, $method)->shouldReturn(12);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_returns_null_if_constructed_with_empty_array($object, $method)
-    {
-        $this->beConstructedWith(array());
-
-        $this->execute(array(), $object, $method)->shouldReturn(null);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php
deleted file mode 100644
index 5f44897..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Promise;
-
-use PhpSpec\ObjectBehavior;
-
-class ThrowPromiseSpec extends ObjectBehavior
-{
-    function let()
-    {
-        $this->beConstructedWith('RuntimeException');
-    }
-
-    function it_is_promise()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_instantiates_and_throws_exception_from_provided_classname($object, $method)
-    {
-        $this->beConstructedWith('InvalidArgumentException');
-
-        $this->shouldThrow('InvalidArgumentException')
-            ->duringExecute(array(), $object, $method);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_instantiates_exceptions_with_required_arguments($object, $method)
-    {
-        $this->beConstructedWith('spec\Prophecy\Promise\RequiredArgumentException');
-
-        $this->shouldThrow('spec\Prophecy\Promise\RequiredArgumentException')
-            ->duringExecute(array(), $object, $method);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $object
-     * @param \Prophecy\Prophecy\MethodProphecy $method
-     */
-    function it_throws_provided_exception($object, $method)
-    {
-        $this->beConstructedWith($exc = new \RuntimeException('Some exception'));
-
-        $this->shouldThrow($exc)->duringExecute(array(), $object, $method);
-    }
-}
-
-class RequiredArgumentException extends \Exception
-{
-    final public function __construct($message, $code) {}
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php
deleted file mode 100644
index 41ee8cd..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php
+++ /dev/null
@@ -1,384 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Prophecy;
-
-use PhpSpec\ObjectBehavior;
-
-class ClassWithFinalMethod
-{
-    final public function finalMethod() {}
-}
-
-class MethodProphecySpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Prophecy\ObjectProphecy $objectProphecy
-     * @param \ReflectionClass                  $reflection
-     */
-    function let($objectProphecy, $reflection)
-    {
-        $objectProphecy->reveal()->willReturn($reflection);
-
-        $this->beConstructedWith($objectProphecy, 'getName', null);
-    }
-
-    function it_is_initializable()
-    {
-        $this->shouldHaveType('Prophecy\Prophecy\MethodProphecy');
-    }
-
-    function its_constructor_throws_MethodNotFoundException_for_unexisting_method($objectProphecy)
-    {
-        $this->shouldThrow('Prophecy\Exception\Doubler\MethodNotFoundException')->during(
-            '__construct', array($objectProphecy, 'getUnexisting', null)
-        );
-    }
-
-    /**
-     * @param ClassWithFinalMethod $subject
-     */
-    function its_constructor_throws_MethodProphecyException_for_final_methods($objectProphecy, $subject)
-    {
-        $objectProphecy->reveal()->willReturn($subject);
-
-        $this->shouldThrow('Prophecy\Exception\Prophecy\MethodProphecyException')->during(
-            '__construct', array($objectProphecy, 'finalMethod', null)
-        );
-    }
-
-    function its_constructor_transforms_array_passed_as_3rd_argument_to_ArgumentsWildcard(
-        $objectProphecy
-    )
-    {
-        $this->beConstructedWith($objectProphecy, 'getName', array(42, 33));
-
-        $wildcard = $this->getArgumentsWildcard();
-        $wildcard->shouldNotBe(null);
-        $wildcard->__toString()->shouldReturn('exact(42), exact(33)');
-    }
-
-    function its_constructor_does_not_touch_third_argument_if_it_is_null($objectProphecy)
-    {
-        $this->beConstructedWith($objectProphecy, 'getName', null);
-
-        $wildcard = $this->getArgumentsWildcard();
-        $wildcard->shouldBe(null);
-    }
-
-    /**
-     * @param \Prophecy\Promise\PromiseInterface $promise
-     */
-    function it_records_promise_through_will_method($promise, $objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $this->will($promise);
-        $this->getPromise()->shouldReturn($promise);
-    }
-
-    /**
-     * @param \Prophecy\Promise\PromiseInterface $promise
-     */
-    function it_adds_itself_to_ObjectProphecy_during_call_to_will($objectProphecy, $promise)
-    {
-        $objectProphecy->addMethodProphecy($this)->shouldBeCalled();
-
-        $this->will($promise);
-    }
-
-    function it_adds_ReturnPromise_during_willReturn_call($objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $this->willReturn(42);
-        $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ReturnPromise');
-    }
-
-    function it_adds_ThrowPromise_during_willThrow_call($objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $this->willThrow('RuntimeException');
-        $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ThrowPromise');
-    }
-
-    function it_adds_ReturnArgumentPromise_during_willReturnArgument_call($objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $this->willReturnArgument();
-        $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ReturnArgumentPromise');
-    }
-
-    function it_adds_ReturnArgumentPromise_during_willReturnArgument_call_with_index_argument($objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $this->willReturnArgument(1);
-        $promise = $this->getPromise();
-        $promise->shouldBeAnInstanceOf('Prophecy\Promise\ReturnArgumentPromise');
-        $promise->execute(array('one', 'two'), $objectProphecy, $this)->shouldReturn('two');
-    }
-
-    function it_adds_CallbackPromise_during_will_call_with_callback_argument($objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $callback = function () {};
-
-        $this->will($callback);
-        $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\CallbackPromise');
-    }
-
-    /**
-     * @param \Prophecy\Prediction\PredictionInterface $prediction
-     */
-    function it_records_prediction_through_should_method($prediction, $objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $this->callOnWrappedObject('should', array($prediction));
-        $this->getPrediction()->shouldReturn($prediction);
-    }
-
-    function it_adds_CallbackPrediction_during_should_call_with_callback_argument($objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $callback = function () {};
-
-        $this->callOnWrappedObject('should', array($callback));
-        $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallbackPrediction');
-    }
-
-    /**
-     * @param \Prophecy\Prediction\PredictionInterface $prediction
-     */
-    function it_adds_itself_to_ObjectProphecy_during_call_to_should($objectProphecy, $prediction)
-    {
-        $objectProphecy->addMethodProphecy($this)->shouldBeCalled();
-
-        $this->callOnWrappedObject('should', array($prediction));
-    }
-
-    function it_adds_CallPrediction_during_shouldBeCalled_call($objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $this->callOnWrappedObject('shouldBeCalled', array());
-        $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallPrediction');
-    }
-
-    function it_adds_NoCallsPrediction_during_shouldNotBeCalled_call($objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $this->callOnWrappedObject('shouldNotBeCalled', array());
-        $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\NoCallsPrediction');
-    }
-
-    function it_adds_CallTimesPrediction_during_shouldBeCalledTimes_call($objectProphecy)
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $this->callOnWrappedObject('shouldBeCalledTimes', array(5));
-        $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallTimesPrediction');
-    }
-
-    /**
-     * @param \Prophecy\Argument\ArgumentsWildcard     $arguments
-     * @param \Prophecy\Prediction\PredictionInterface $prediction
-     * @param \Prophecy\Call\Call                      $call1
-     * @param \Prophecy\Call\Call                      $call2
-     */
-    function it_checks_prediction_via_shouldHave_method_call(
-        $objectProphecy, $arguments, $prediction, $call1, $call2
-    )
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-        $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled();
-        $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2));
-
-        $this->withArguments($arguments);
-        $this->callOnWrappedObject('shouldHave', array($prediction));
-    }
-
-    /**
-     * @param \Prophecy\Argument\ArgumentsWildcard     $arguments
-     * @param \Prophecy\Prediction\PredictionInterface $prediction
-     * @param \Prophecy\Call\Call                      $call1
-     * @param \Prophecy\Call\Call                      $call2
-     */
-    function it_sets_return_promise_during_shouldHave_call_if_none_was_set_before(
-        $objectProphecy, $arguments, $prediction, $call1, $call2
-    )
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-        $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled();
-        $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2));
-
-        $this->withArguments($arguments);
-        $this->callOnWrappedObject('shouldHave', array($prediction));
-
-        $this->getPromise()->shouldReturnAnInstanceOf('Prophecy\Promise\ReturnPromise');
-    }
-
-    /**
-     * @param \Prophecy\Argument\ArgumentsWildcard     $arguments
-     * @param \Prophecy\Prediction\PredictionInterface $prediction
-     * @param \Prophecy\Call\Call                      $call1
-     * @param \Prophecy\Call\Call                      $call2
-     * @param \Prophecy\Promise\PromiseInterface       $promise
-     */
-    function it_does_not_set_return_promise_during_shouldHave_call_if_it_was_set_before(
-        $objectProphecy, $arguments, $prediction, $call1, $call2, $promise
-    )
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-        $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled();
-        $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2));
-
-        $this->will($promise);
-        $this->withArguments($arguments);
-        $this->callOnWrappedObject('shouldHave', array($prediction));
-
-        $this->getPromise()->shouldReturn($promise);
-    }
-
-    /**
-     * @param \Prophecy\Argument\ArgumentsWildcard     $arguments
-     * @param \Prophecy\Prediction\PredictionInterface $prediction1
-     * @param \Prophecy\Prediction\PredictionInterface $prediction2
-     * @param \Prophecy\Call\Call                      $call1
-     * @param \Prophecy\Call\Call                      $call2
-     * @param \Prophecy\Promise\PromiseInterface       $promise
-     */
-    function it_records_checked_predictions(
-        $objectProphecy, $arguments, $prediction1, $prediction2, $call1, $call2, $promise
-    )
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-        $prediction1->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willReturn();
-        $prediction2->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willReturn();
-        $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2));
-
-        $this->will($promise);
-        $this->withArguments($arguments);
-        $this->callOnWrappedObject('shouldHave', array($prediction1));
-        $this->callOnWrappedObject('shouldHave', array($prediction2));
-
-        $this->getCheckedPredictions()->shouldReturn(array($prediction1, $prediction2));
-    }
-
-    /**
-     * @param \Prophecy\Argument\ArgumentsWildcard     $arguments
-     * @param \Prophecy\Prediction\PredictionInterface $prediction
-     * @param \Prophecy\Call\Call                      $call1
-     * @param \Prophecy\Call\Call                      $call2
-     * @param \Prophecy\Promise\PromiseInterface       $promise
-     */
-    function it_records_even_failed_checked_predictions(
-        $objectProphecy, $arguments, $prediction, $call1, $call2, $promise
-    )
-    {
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-        $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willThrow(new \RuntimeException());
-        $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2));
-
-        $this->will($promise);
-        $this->withArguments($arguments);
-
-        try {
-          $this->callOnWrappedObject('shouldHave', array($prediction));
-        } catch (\Exception $e) {}
-
-        $this->getCheckedPredictions()->shouldReturn(array($prediction));
-    }
-
-    /**
-     * @param \Prophecy\Argument\ArgumentsWildcard     $arguments
-     * @param \Prophecy\Prediction\PredictionInterface $prediction
-     * @param \Prophecy\Call\Call                      $call1
-     * @param \Prophecy\Call\Call                      $call2
-     */
-    function it_checks_prediction_via_shouldHave_method_call_with_callback(
-        $objectProphecy, $arguments, $prediction, $call1, $call2
-    )
-    {
-        $callback = function ($calls, $object, $method) {
-            throw new \RuntimeException;
-        };
-        $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2));
-
-        $this->withArguments($arguments);
-        $this->shouldThrow('RuntimeException')->duringShouldHave($callback);
-    }
-
-    function it_does_nothing_during_checkPrediction_if_no_prediction_set()
-    {
-        $this->checkPrediction()->shouldReturn(null);
-    }
-
-    /**
-     * @param \Prophecy\Argument\ArgumentsWildcard     $arguments
-     * @param \Prophecy\Prediction\PredictionInterface $prediction
-     * @param \Prophecy\Call\Call                      $call1
-     * @param \Prophecy\Call\Call                      $call2
-     */
-    function it_checks_set_prediction_during_checkPrediction(
-        $objectProphecy, $arguments, $prediction, $call1, $call2
-    )
-    {
-        $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled();
-        $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2));
-        $objectProphecy->addMethodProphecy($this)->willReturn(null);
-
-        $this->withArguments($arguments);
-        $this->callOnWrappedObject('should', array($prediction));
-        $this->checkPrediction();
-    }
-
-    function it_links_back_to_ObjectProphecy_through_getter($objectProphecy)
-    {
-        $this->getObjectProphecy()->shouldReturn($objectProphecy);
-    }
-
-    function it_has_MethodName()
-    {
-        $this->getMethodName()->shouldReturn('getName');
-    }
-
-    /**
-     * @param \Prophecy\Argument\ArgumentsWildcard $wildcard
-     */
-    function it_contains_ArgumentsWildcard_it_was_constructed_with($objectProphecy, $wildcard)
-    {
-        $this->beConstructedWith($objectProphecy, 'getName', $wildcard);
-
-        $this->getArgumentsWildcard()->shouldReturn($wildcard);
-    }
-
-    /**
-     * @param \Prophecy\Argument\ArgumentsWildcard $wildcard
-     */
-    function its_ArgumentWildcard_is_mutable_through_setter($wildcard)
-    {
-        $this->withArguments($wildcard);
-
-        $this->getArgumentsWildcard()->shouldReturn($wildcard);
-    }
-
-    function its_withArguments_transforms_passed_array_into_ArgumentsWildcard()
-    {
-        $this->withArguments(array(42, 33));
-
-        $wildcard = $this->getArgumentsWildcard();
-        $wildcard->shouldNotBe(null);
-        $wildcard->__toString()->shouldReturn('exact(42), exact(33)');
-    }
-
-    function its_withArguments_throws_exception_if_wrong_arguments_provided()
-    {
-        $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringWithArguments(42);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php
deleted file mode 100644
index 7e249d9..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php
+++ /dev/null
@@ -1,319 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Prophecy;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class ObjectProphecySpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Doubler\LazyDouble                $lazyDouble
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $double
-     */
-    function let($lazyDouble, $double)
-    {
-        $this->beConstructedWith($lazyDouble);
-
-        $lazyDouble->getInstance()->willReturn($double);
-    }
-
-    function it_implements_ProphecyInterface()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Prophecy\ProphecyInterface');
-    }
-
-    function it_sets_parentClass_during_willExtend_call($lazyDouble)
-    {
-        $lazyDouble->setParentClass('123')->shouldBeCalled();
-
-        $this->willExtend('123');
-    }
-
-    function it_adds_interface_during_willImplement_call($lazyDouble)
-    {
-        $lazyDouble->addInterface('222')->shouldBeCalled();
-
-        $this->willImplement('222');
-    }
-
-    function it_sets_constructor_arguments_during_willBeConstructedWith_call($lazyDouble)
-    {
-        $lazyDouble->setArguments(array(1, 2, 5))->shouldBeCalled();
-
-        $this->willBeConstructedWith(array(1, 2, 5));
-    }
-
-    function it_does_not_have_method_prophecies_by_default()
-    {
-        $this->getMethodProphecies()->shouldHaveCount(0);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy    $method1
-     * @param \Prophecy\Prophecy\MethodProphecy    $method2
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments
-     */
-    function it_should_get_method_prophecies_by_method_name($method1, $method2, $arguments)
-    {
-        $method1->getMethodName()->willReturn('getName');
-        $method1->getArgumentsWildcard()->willReturn($arguments);
-        $method2->getMethodName()->willReturn('setName');
-        $method2->getArgumentsWildcard()->willReturn($arguments);
-
-        $this->addMethodProphecy($method1);
-        $this->addMethodProphecy($method2);
-
-        $methods = $this->getMethodProphecies('setName');
-        $methods->shouldHaveCount(1);
-        $methods[0]->getMethodName()->shouldReturn('setName');
-    }
-
-    function it_should_return_empty_array_if_no_method_prophecies_found()
-    {
-        $methods = $this->getMethodProphecies('setName');
-        $methods->shouldHaveCount(0);
-    }
-
-    /**
-     * @param \Prophecy\Call\CallCenter $callCenter
-     */
-    function it_should_proxy_makeProphecyMethodCall_to_CallCenter($lazyDouble, $callCenter)
-    {
-        $this->beConstructedWith($lazyDouble, $callCenter);
-
-        $callCenter->makeCall($this->getWrappedObject(), 'setName', array('everzet'))->willReturn(42);
-
-        $this->makeProphecyMethodCall('setName', array('everzet'))->shouldReturn(42);
-    }
-
-    /**
-     * @param \Prophecy\Call\CallCenter            $callCenter
-     * @param \Prophecy\Prophecy\RevealerInterface $revealer
-     */
-    function it_should_reveal_arguments_and_return_values_from_callCenter(
-        $lazyDouble, $callCenter, $revealer
-    )
-    {
-        $this->beConstructedWith($lazyDouble, $callCenter, $revealer);
-
-        $revealer->reveal(array('question'))->willReturn(array('life'));
-        $revealer->reveal('answer')->willReturn(42);
-
-        $callCenter->makeCall($this->getWrappedObject(), 'setName', array('life'))->willReturn('answer');
-
-        $this->makeProphecyMethodCall('setName', array('question'))->shouldReturn(42);
-    }
-
-    /**
-     * @param \Prophecy\Call\CallCenter            $callCenter
-     * @param \Prophecy\Argument\ArgumentsWildcard $wildcard
-     * @param \Prophecy\Call\Call                  $call
-     */
-    function it_should_proxy_getProphecyMethodCalls_to_CallCenter(
-        $lazyDouble, $callCenter, $wildcard, $call
-    )
-    {
-        $this->beConstructedWith($lazyDouble, $callCenter);
-
-        $callCenter->findCalls('setName', $wildcard)->willReturn(array($call));
-
-        $this->findProphecyMethodCalls('setName', $wildcard)->shouldReturn(array($call));
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy    $methodProphecy
-     * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard
-     */
-    function its_addMethodProphecy_adds_method_prophecy(
-        $methodProphecy, $argumentsWildcard
-    )
-    {
-        $methodProphecy->getArgumentsWildcard()->willReturn($argumentsWildcard);
-        $methodProphecy->getMethodName()->willReturn('getUsername');
-
-        $this->addMethodProphecy($methodProphecy);
-
-        $this->getMethodProphecies()->shouldReturn(array(
-            'getUsername' => array($methodProphecy)
-        ));
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy    $methodProphecy1
-     * @param \Prophecy\Prophecy\MethodProphecy    $methodProphecy2
-     * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard1
-     * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard2
-     */
-    function its_addMethodProphecy_handles_prophecies_with_different_arguments(
-        $methodProphecy1, $methodProphecy2, $argumentsWildcard1, $argumentsWildcard2
-    )
-    {
-        $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1);
-        $methodProphecy1->getMethodName()->willReturn('getUsername');
-
-        $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2);
-        $methodProphecy2->getMethodName()->willReturn('getUsername');
-
-        $this->addMethodProphecy($methodProphecy1);
-        $this->addMethodProphecy($methodProphecy2);
-
-        $this->getMethodProphecies()->shouldReturn(array(
-            'getUsername' => array(
-                $methodProphecy1,
-                $methodProphecy2,
-            )
-        ));
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy    $methodProphecy1
-     * @param \Prophecy\Prophecy\MethodProphecy    $methodProphecy2
-     * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard1
-     * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard2
-     */
-    function its_addMethodProphecy_handles_prophecies_for_different_methods(
-        $methodProphecy1, $methodProphecy2, $argumentsWildcard1, $argumentsWildcard2
-    )
-    {
-        $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1);
-        $methodProphecy1->getMethodName()->willReturn('getUsername');
-
-        $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2);
-        $methodProphecy2->getMethodName()->willReturn('isUsername');
-
-        $this->addMethodProphecy($methodProphecy1);
-        $this->addMethodProphecy($methodProphecy2);
-
-        $this->getMethodProphecies()->shouldReturn(array(
-            'getUsername' => array(
-                $methodProphecy1
-            ),
-            'isUsername' => array(
-                $methodProphecy2
-            )
-        ));
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy $methodProphecy
-     */
-    function its_addMethodProphecy_throws_exception_when_method_has_no_ArgumentsWildcard(
-        $methodProphecy
-    )
-    {
-        $methodProphecy->getArgumentsWildcard()->willReturn(null);
-        $methodProphecy->getObjectProphecy()->willReturn($this);
-        $methodProphecy->getMethodName()->willReturn('getTitle');
-
-        $this->shouldThrow('Prophecy\Exception\Prophecy\MethodProphecyException')->duringAddMethodProphecy(
-            $methodProphecy
-        );
-    }
-
-    function it_returns_null_after_checkPredictions_call_if_there_is_no_method_prophecies()
-    {
-        $this->checkProphecyMethodsPredictions()->shouldReturn(null);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy    $methodProphecy1
-     * @param \Prophecy\Prophecy\MethodProphecy    $methodProphecy2
-     * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard1
-     * @param \Prophecy\Argument\ArgumentsWildcard $argumentsWildcard2
-     */
-    function it_throws_AggregateException_during_checkPredictions_if_predictions_fail(
-        $methodProphecy1, $methodProphecy2, $argumentsWildcard1, $argumentsWildcard2
-    )
-    {
-        $methodProphecy1->getMethodName()->willReturn('getName');
-        $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1);
-        $methodProphecy1->checkPrediction()
-            ->willThrow('Prophecy\Exception\Prediction\AggregateException');
-
-        $methodProphecy2->getMethodName()->willReturn('setName');
-        $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2);
-        $methodProphecy2->checkPrediction()
-            ->willThrow('Prophecy\Exception\Prediction\AggregateException');
-
-        $this->addMethodProphecy($methodProphecy1);
-        $this->addMethodProphecy($methodProphecy2);
-
-        $this->shouldThrow('Prophecy\Exception\Prediction\AggregateException')
-            ->duringCheckProphecyMethodsPredictions();
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Doubler                   $doubler
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $reflection
-     */
-    function it_returns_new_MethodProphecy_instance_for_arbitrary_call($doubler, $reflection)
-    {
-        $doubler->double(Argument::any())->willReturn($reflection);
-
-        $return = $this->getProphecy();
-        $return->shouldBeAnInstanceOf('Prophecy\Prophecy\MethodProphecy');
-        $return->getMethodName()->shouldReturn('getProphecy');
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Doubler                   $doubler
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $reflection
-     */
-    function it_returns_same_MethodProphecy_for_same_registered_signature($doubler, $reflection)
-    {
-        $doubler->double(Argument::any())->willReturn($reflection);
-
-        $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(1, 2, 3));
-        $methodProphecy2 = $this->getProphecy(1, 2, 3);
-
-        $methodProphecy2->shouldBe($methodProphecy1);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Doubler                   $doubler
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $reflection
-     */
-    function it_returns_new_MethodProphecy_for_different_signatures($doubler, $reflection)
-    {
-        $doubler->double(Argument::any())->willReturn($reflection);
-
-        $value = new ObjectProphecySpecFixtureB('ABC');
-        $value2 = new ObjectProphecySpecFixtureB('CBA');
-
-        $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(1, 2, 3, $value));
-        $methodProphecy2 = $this->getProphecy(1, 2, 3, $value2);
-
-        $methodProphecy2->shouldNotBe($methodProphecy1);
-    }
-
-    /**
-     * @param \Prophecy\Doubler\Doubler                   $doubler
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $reflection
-     */
-    function it_returns_new_MethodProphecy_for_all_callback_signatures($doubler, $reflection)
-    {
-        $doubler->double(Argument::any())->willReturn($reflection);
-
-        $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(function(){}));
-        $methodProphecy2 = $this->getProphecy(function(){});
-
-        $methodProphecy2->shouldNotBe($methodProphecy1);
-    }
-}
-
-class ObjectProphecySpecFixtureA
-{
-	public $errors;
-}
-
-class ObjectProphecySpecFixtureB extends ObjectProphecySpecFixtureA
-{
-    public $errors;
-    public $value = null;
-
-    public function __construct($value)
-    {
-        $this->value = $value;
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php
deleted file mode 100644
index 4d83d73..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Prophecy;
-
-use PhpSpec\ObjectBehavior;
-
-class RevealerSpec extends ObjectBehavior
-{
-    function it_is_revealer()
-    {
-        $this->shouldBeAnInstanceOf('Prophecy\Prophecy\RevealerInterface');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ProphecyInterface $prophecy
-     * @param \stdClass                            $object
-     */
-    function it_reveals_single_instance_of_ProphecyInterface($prophecy, $object)
-    {
-        $prophecy->reveal()->willReturn($object);
-
-        $this->reveal($prophecy)->shouldReturn($object);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ProphecyInterface $prophecy1
-     * @param \Prophecy\Prophecy\ProphecyInterface $prophecy2
-     * @param \stdClass                            $object1
-     * @param \stdClass                            $object2
-     */
-    function it_reveals_instances_of_ProphecyInterface_inside_array(
-        $prophecy1, $prophecy2, $object1, $object2
-    )
-    {
-        $prophecy1->reveal()->willReturn($object1);
-        $prophecy2->reveal()->willReturn($object2);
-
-        $this->reveal(array(
-            array('item' => $prophecy2),
-            $prophecy1
-        ))->shouldReturn(array(
-            array('item' => $object2),
-            $object1
-        ));
-    }
-
-    function it_does_not_touch_non_prophecy_interface()
-    {
-        $this->reveal(42)->shouldReturn(42);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php
deleted file mode 100644
index 74d5976..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-namespace spec\Prophecy;
-
-use PhpSpec\ObjectBehavior;
-use Prophecy\Argument;
-
-class ProphetSpec extends ObjectBehavior
-{
-    /**
-     * @param \Prophecy\Doubler\Doubler                   $doubler
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $double
-     */
-    function let($doubler, $double)
-    {
-        $doubler->double(null, array())->willReturn($double);
-
-        $this->beConstructedWith($doubler);
-    }
-
-    function it_constructs_new_prophecy_on_prophesize_call()
-    {
-        $prophecy = $this->prophesize();
-        $prophecy->shouldBeAnInstanceOf('Prophecy\Prophecy\ObjectProphecy');
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $newDouble
-     */
-    function it_constructs_new_prophecy_with_parent_class_if_specified($doubler, $newDouble)
-    {
-        $doubler->double(Argument::any(), array())->willReturn($newDouble);
-
-        $this->prophesize('Prophecy\Prophet')->reveal()->shouldReturn($newDouble);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\ProphecySubjectInterface $newDouble
-     */
-    function it_constructs_new_prophecy_with_interface_if_specified($doubler, $newDouble)
-    {
-        $doubler->double(null, Argument::any())->willReturn($newDouble);
-
-        $this->prophesize('ArrayAccess')->reveal()->shouldReturn($newDouble);
-    }
-
-    function it_exposes_all_created_prophecies_through_getter()
-    {
-        $prophecy1 = $this->prophesize();
-        $prophecy2 = $this->prophesize();
-
-        $this->getProphecies()->shouldReturn(array($prophecy1, $prophecy2));
-    }
-
-    function it_does_nothing_during_checkPredictions_call_if_no_predictions_defined()
-    {
-        $this->checkPredictions()->shouldReturn(null);
-    }
-
-    /**
-     * @param \Prophecy\Prophecy\MethodProphecy    $method1
-     * @param \Prophecy\Prophecy\MethodProphecy    $method2
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments1
-     * @param \Prophecy\Argument\ArgumentsWildcard $arguments2
-     */
-    function it_throws_AggregateException_if_defined_predictions_fail(
-        $method1, $method2, $arguments1, $arguments2
-    )
-    {
-        $method1->getMethodName()->willReturn('getName');
-        $method1->getArgumentsWildcard()->willReturn($arguments1);
-        $method1->checkPrediction()->willReturn(null);
-
-        $method2->getMethodName()->willReturn('isSet');
-        $method2->getArgumentsWildcard()->willReturn($arguments2);
-        $method2->checkPrediction()->willThrow(
-            'Prophecy\Exception\Prediction\AggregateException'
-        );
-
-        $this->prophesize()->addMethodProphecy($method1);
-        $this->prophesize()->addMethodProphecy($method2);
-
-        $this->shouldThrow('Prophecy\Exception\Prediction\AggregateException')
-            ->duringCheckPredictions();
-    }
-
-    function it_exposes_doubler_through_getter($doubler)
-    {
-        $this->getDoubler()->shouldReturn($doubler);
-    }
-}
diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php
deleted file mode 100644
index a4eef59..0000000
--- a/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-namespace spec\Prophecy\Util;
-
-use PhpSpec\ObjectBehavior;
-
-class StringUtilSpec extends ObjectBehavior
-{
-    function it_generates_proper_string_representation_for_integer()
-    {
-        $this->stringify(42)->shouldReturn('42');
-    }
-
-    function it_generates_proper_string_representation_for_string()
-    {
-        $this->stringify('some string')->shouldReturn('"some string"');
-    }
-
-    function it_generates_single_line_representation_for_multiline_string()
-    {
-        $this->stringify("some\nstring")->shouldReturn('"some\\nstring"');
-    }
-
-    function it_generates_proper_string_representation_for_double()
-    {
-        $this->stringify(42.3)->shouldReturn('42.3');
-    }
-
-    function it_generates_proper_string_representation_for_boolean_true()
-    {
-        $this->stringify(true)->shouldReturn('true');
-    }
-
-    function it_generates_proper_string_representation_for_boolean_false()
-    {
-        $this->stringify(false)->shouldReturn('false');
-    }
-
-    function it_generates_proper_string_representation_for_null()
-    {
-        $this->stringify(null)->shouldReturn('null');
-    }
-
-    function it_generates_proper_string_representation_for_empty_array()
-    {
-        $this->stringify(array())->shouldReturn('[]');
-    }
-
-    function it_generates_proper_string_representation_for_array()
-    {
-        $this->stringify(array('zet', 42))->shouldReturn('["zet", 42]');
-    }
-
-    function it_generates_proper_string_representation_for_hash_containing_one_value()
-    {
-        $this->stringify(array('ever' => 'zet'))->shouldReturn('["ever" => "zet"]');
-    }
-
-    function it_generates_proper_string_representation_for_hash()
-    {
-        $this->stringify(array('ever' => 'zet', 52 => 'hey', 'num' => 42))->shouldReturn(
-            '["ever" => "zet", 52 => "hey", "num" => 42]'
-        );
-    }
-
-    function it_generates_proper_string_representation_for_resource()
-    {
-        $resource = fopen(__FILE__, 'r');
-        $this->stringify($resource)->shouldReturn('stream:'.$resource);
-    }
-
-    /**
-     * @param \stdClass $object
-     */
-    function it_generates_proper_string_representation_for_object($object)
-    {
-        $objHash = sprintf('%s:%s',
-            get_class($object->getWrappedObject()),
-            spl_object_hash($object->getWrappedObject())
-        ) . " Object (\n    'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n)";
-
-        $this->stringify($object)->shouldReturn("$objHash");
-    }
-
-    /**
-     * @param stdClass $object
-     */
-    function it_generates_proper_string_representation_for_object_without_exporting($object)
-    {
-        $objHash = sprintf('%s:%s',
-            get_class($object->getWrappedObject()),
-            spl_object_hash($object->getWrappedObject())
-        );
-
-        $this->stringify($object, false)->shouldReturn("$objHash");
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument.php b/vendor/phpspec/prophecy/src/Prophecy/Argument.php
deleted file mode 100644
index f2b3364..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument.php
+++ /dev/null
@@ -1,198 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy;
-
-use Prophecy\Argument\Token;
-
-/**
- * Argument tokens shortcuts.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class Argument
-{
-    /**
-     * Checks that argument is exact value or object.
-     *
-     * @param mixed $value
-     *
-     * @return Token\ExactValueToken
-     */
-    public static function exact($value)
-    {
-        return new Token\ExactValueToken($value);
-    }
-
-    /**
-     * Checks that argument is of specific type or instance of specific class.
-     *
-     * @param string $type Type name (`integer`, `string`) or full class name
-     *
-     * @return Token\TypeToken
-     */
-    public static function type($type)
-    {
-        return new Token\TypeToken($type);
-    }
-
-    /**
-     * Checks that argument object has specific state.
-     *
-     * @param string $methodName
-     * @param mixed  $value
-     *
-     * @return Token\ObjectStateToken
-     */
-    public static function which($methodName, $value)
-    {
-        return new Token\ObjectStateToken($methodName, $value);
-    }
-
-    /**
-     * Checks that argument matches provided callback.
-     *
-     * @param callable $callback
-     *
-     * @return Token\CallbackToken
-     */
-    public static function that($callback)
-    {
-        return new Token\CallbackToken($callback);
-    }
-
-    /**
-     * Matches any single value.
-     *
-     * @return Token\AnyValueToken
-     */
-    public static function any()
-    {
-        return new Token\AnyValueToken;
-    }
-
-    /**
-     * Matches all values to the rest of the signature.
-     *
-     * @return Token\AnyValuesToken
-     */
-    public static function cetera()
-    {
-        return new Token\AnyValuesToken;
-    }
-
-    /**
-     * Checks that argument matches all tokens
-     *
-     * @param mixed ... a list of tokens
-     *
-     * @return Token\LogicalAndToken
-     */
-    public static function allOf()
-    {
-        return new Token\LogicalAndToken(func_get_args());
-    }
-
-    /**
-     * Checks that argument array or countable object has exact number of elements.
-     *
-     * @param integer $value array elements count
-     *
-     * @return Token\ArrayCountToken
-     */
-    public static function size($value)
-    {
-        return new Token\ArrayCountToken($value);
-    }
-
-    /**
-     * Checks that argument array contains (key, value) pair
-     *
-     * @param mixed $key   exact value or token
-     * @param mixed $value exact value or token
-     *
-     * @return Token\ArrayEntryToken
-     */
-    public static function withEntry($key, $value)
-    {
-        return new Token\ArrayEntryToken($key, $value);
-    }
-
-    /**
-     * Checks that arguments array entries all match value
-     *
-     * @param mixed $value
-     *
-     * @return Token\ArrayEveryEntryToken
-     */
-    public static function withEveryEntry($value)
-    {
-        return new Token\ArrayEveryEntryToken($value);
-    }
-
-    /**
-     * Checks that argument array contains value
-     *
-     * @param mixed $value
-     *
-     * @return Token\ArrayEntryToken
-     */
-    public static function containing($value)
-    {
-        return new Token\ArrayEntryToken(self::any(), $value);
-    }
-
-    /**
-     * Checks that argument array has key
-     *
-     * @param mixed $key exact value or token
-     *
-     * @return Token\ArrayEntryToken
-     */
-    public static function withKey($key)
-    {
-        return new Token\ArrayEntryToken($key, self::any());
-    }
-
-    /**
-     * Checks that argument does not match the value|token.
-     *
-     * @param mixed $value either exact value or argument token
-     *
-     * @return Token\LogicalNotToken
-     */
-    public static function not($value)
-    {
-        return new Token\LogicalNotToken($value);
-    }
-
-    /**
-     * @param string $value
-     *
-     * @return Token\StringContainsToken
-     */
-    public static function containingString($value)
-    {
-        return new Token\StringContainsToken($value);
-    }
-
-    /**
-     * Checks that argument is identical value.
-     *
-     * @param mixed $value
-     *
-     * @return Token\IdenticalValueToken
-     */
-    public static function is($value)
-    {
-        return new Token\IdenticalValueToken($value);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php
deleted file mode 100644
index a088f21..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument;
-
-/**
- * Arguments wildcarding.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ArgumentsWildcard
-{
-    /**
-     * @var Token\TokenInterface[]
-     */
-    private $tokens = array();
-    private $string;
-
-    /**
-     * Initializes wildcard.
-     *
-     * @param array $arguments Array of argument tokens or values
-     */
-    public function __construct(array $arguments)
-    {
-        foreach ($arguments as $argument) {
-            if (!$argument instanceof Token\TokenInterface) {
-                $argument = new Token\ExactValueToken($argument);
-            }
-
-            $this->tokens[] = $argument;
-        }
-    }
-
-    /**
-     * Calculates wildcard match score for provided arguments.
-     *
-     * @param array $arguments
-     *
-     * @return false|int False OR integer score (higher - better)
-     */
-    public function scoreArguments(array $arguments)
-    {
-        if (0 == count($arguments) && 0 == count($this->tokens)) {
-            return 1;
-        }
-
-        $arguments  = array_values($arguments);
-        $totalScore = 0;
-        foreach ($this->tokens as $i => $token) {
-            $argument = isset($arguments[$i]) ? $arguments[$i] : null;
-            if (1 >= $score = $token->scoreArgument($argument)) {
-                return false;
-            }
-
-            $totalScore += $score;
-
-            if (true === $token->isLast()) {
-                return $totalScore;
-            }
-        }
-
-        if (count($arguments) > count($this->tokens)) {
-            return false;
-        }
-
-        return $totalScore;
-    }
-
-    /**
-     * Returns string representation for wildcard.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        if (null === $this->string) {
-            $this->string = implode(', ', array_map(function ($token) {
-                return (string) $token;
-            }, $this->tokens));
-        }
-
-        return $this->string;
-    }
-
-    /**
-     * @return array
-     */
-    public function getTokens()
-    {
-        return $this->tokens;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php
deleted file mode 100644
index 5098811..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-/**
- * Any single value token.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class AnyValueToken implements TokenInterface
-{
-    /**
-     * Always scores 3 for any argument.
-     *
-     * @param $argument
-     *
-     * @return int
-     */
-    public function scoreArgument($argument)
-    {
-        return 3;
-    }
-
-    /**
-     * Returns false.
-     *
-     * @return bool
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return '*';
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php
deleted file mode 100644
index f76b17b..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-/**
- * Any values token.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class AnyValuesToken implements TokenInterface
-{
-    /**
-     * Always scores 2 for any argument.
-     *
-     * @param $argument
-     *
-     * @return int
-     */
-    public function scoreArgument($argument)
-    {
-        return 2;
-    }
-
-    /**
-     * Returns true to stop wildcard from processing other tokens.
-     *
-     * @return bool
-     */
-    public function isLast()
-    {
-        return true;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return '* [, ...]';
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php
deleted file mode 100644
index 96b4bef..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-/**
- * Array elements count token.
- *
- * @author Boris Mikhaylov <kaguxmail@gmail.com>
- */
-
-class ArrayCountToken implements TokenInterface
-{
-    private $count;
-
-    /**
-     * @param integer $value
-     */
-    public function __construct($value)
-    {
-        $this->count = $value;
-    }
-
-    /**
-     * Scores 6 when argument has preset number of elements.
-     *
-     * @param $argument
-     *
-     * @return bool|int
-     */
-    public function scoreArgument($argument)
-    {
-        return $this->isCountable($argument) && $this->hasProperCount($argument) ? 6 : false;
-    }
-
-    /**
-     * Returns false.
-     *
-     * @return boolean
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return sprintf('count(%s)', $this->count);
-    }
-
-    /**
-     * Returns true if object is either array or instance of \Countable
-     *
-     * @param $argument
-     * @return bool
-     */
-    private function isCountable($argument)
-    {
-        return (is_array($argument) || $argument instanceof \Countable);
-    }
-
-    /**
-     * Returns true if $argument has expected number of elements
-     *
-     * @param array|\Countable $argument
-     *
-     * @return bool
-     */
-    private function hasProperCount($argument)
-    {
-        return $this->count === count($argument);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php
deleted file mode 100644
index 0305fc7..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-use Prophecy\Exception\InvalidArgumentException;
-
-/**
- * Array entry token.
- *
- * @author Boris Mikhaylov <kaguxmail@gmail.com>
- */
-class ArrayEntryToken implements TokenInterface
-{
-    /** @var \Prophecy\Argument\Token\TokenInterface */
-    private $key;
-    /** @var \Prophecy\Argument\Token\TokenInterface */
-    private $value;
-
-    /**
-     * @param mixed $key   exact value or token
-     * @param mixed $value exact value or token
-     */
-    public function __construct($key, $value)
-    {
-        $this->key = $this->wrapIntoExactValueToken($key);
-        $this->value = $this->wrapIntoExactValueToken($value);
-    }
-
-    /**
-     * Scores half of combined scores from key and value tokens for same entry. Capped at 8.
-     * If argument implements \ArrayAccess without \Traversable, then key token is restricted to ExactValueToken.
-     *
-     * @param array|\ArrayAccess|\Traversable $argument
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     * @return bool|int
-     */
-    public function scoreArgument($argument)
-    {
-        if ($argument instanceof \Traversable) {
-            $argument = iterator_to_array($argument);
-        }
-
-        if ($argument instanceof \ArrayAccess) {
-            $argument = $this->convertArrayAccessToEntry($argument);
-        }
-
-        if (!is_array($argument) || empty($argument)) {
-            return false;
-        }
-
-        $keyScores = array_map(array($this->key,'scoreArgument'), array_keys($argument));
-        $valueScores = array_map(array($this->value,'scoreArgument'), $argument);
-        $scoreEntry = function ($value, $key) {
-            return $value && $key ? min(8, ($key + $value) / 2) : false;
-        };
-
-        return max(array_map($scoreEntry, $valueScores, $keyScores));
-    }
-
-    /**
-     * Returns false.
-     *
-     * @return boolean
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return sprintf('[..., %s => %s, ...]', $this->key, $this->value);
-    }
-
-    /**
-     * Returns key
-     *
-     * @return TokenInterface
-     */
-    public function getKey()
-    {
-        return $this->key;
-    }
-
-    /**
-     * Returns value
-     *
-     * @return TokenInterface
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Wraps non token $value into ExactValueToken
-     *
-     * @param $value
-     * @return TokenInterface
-     */
-    private function wrapIntoExactValueToken($value)
-    {
-        return $value instanceof TokenInterface ? $value : new ExactValueToken($value);
-    }
-
-    /**
-     * Converts instance of \ArrayAccess to key => value array entry
-     *
-     * @param \ArrayAccess $object
-     *
-     * @return array|null
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    private function convertArrayAccessToEntry(\ArrayAccess $object)
-    {
-        if (!$this->key instanceof ExactValueToken) {
-            throw new InvalidArgumentException(sprintf(
-                'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL.
-                'But you used `%s`.',
-                $this->key
-            ));
-        }
-
-        $key = $this->key->getValue();
-
-        return $object->offsetExists($key) ? array($key => $object[$key]) : array();
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php
deleted file mode 100644
index 5d41fa4..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-/**
- * Array every entry token.
- *
- * @author Adrien Brault <adrien.brault@gmail.com>
- */
-class ArrayEveryEntryToken implements TokenInterface
-{
-    /**
-     * @var TokenInterface
-     */
-    private $value;
-
-    /**
-     * @param mixed $value exact value or token
-     */
-    public function __construct($value)
-    {
-        if (!$value instanceof TokenInterface) {
-            $value = new ExactValueToken($value);
-        }
-
-        $this->value = $value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function scoreArgument($argument)
-    {
-        if (!$argument instanceof \Traversable && !is_array($argument)) {
-            return false;
-        }
-
-        $scores = array();
-        foreach ($argument as $key => $argumentEntry) {
-            $scores[] = $this->value->scoreArgument($argumentEntry);
-        }
-
-        if (empty($scores) || in_array(false, $scores, true)) {
-            return false;
-        }
-
-        return array_sum($scores) / count($scores);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        return sprintf('[%s, ..., %s]', $this->value, $this->value);
-    }
-
-    /**
-     * @return TokenInterface
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php
deleted file mode 100644
index f45ba20..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-use Prophecy\Exception\InvalidArgumentException;
-
-/**
- * Callback-verified token.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class CallbackToken implements TokenInterface
-{
-    private $callback;
-
-    /**
-     * Initializes token.
-     *
-     * @param callable $callback
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function __construct($callback)
-    {
-        if (!is_callable($callback)) {
-            throw new InvalidArgumentException(sprintf(
-                'Callable expected as an argument to CallbackToken, but got %s.',
-                gettype($callback)
-            ));
-        }
-
-        $this->callback = $callback;
-    }
-
-    /**
-     * Scores 7 if callback returns true, false otherwise.
-     *
-     * @param $argument
-     *
-     * @return bool|int
-     */
-    public function scoreArgument($argument)
-    {
-        return call_user_func($this->callback, $argument) ? 7 : false;
-    }
-
-    /**
-     * Returns false.
-     *
-     * @return bool
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return 'callback()';
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php
deleted file mode 100644
index aa960f3..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-use SebastianBergmann\Comparator\ComparisonFailure;
-use Prophecy\Comparator\Factory as ComparatorFactory;
-use Prophecy\Util\StringUtil;
-
-/**
- * Exact value token.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ExactValueToken implements TokenInterface
-{
-    private $value;
-    private $string;
-    private $util;
-    private $comparatorFactory;
-
-    /**
-     * Initializes token.
-     *
-     * @param mixed             $value
-     * @param StringUtil        $util
-     * @param ComparatorFactory $comparatorFactory
-     */
-    public function __construct($value, StringUtil $util = null, ComparatorFactory $comparatorFactory = null)
-    {
-        $this->value = $value;
-        $this->util  = $util ?: new StringUtil();
-
-        $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance();
-    }
-
-    /**
-     * Scores 10 if argument matches preset value.
-     *
-     * @param $argument
-     *
-     * @return bool|int
-     */
-    public function scoreArgument($argument)
-    {
-        if (is_object($argument) && is_object($this->value)) {
-            $comparator = $this->comparatorFactory->getComparatorFor(
-                $argument, $this->value
-            );
-
-            try {
-                $comparator->assertEquals($argument, $this->value);
-                return 10;
-            } catch (ComparisonFailure $failure) {}
-        }
-
-        // If either one is an object it should be castable to a string
-        if (is_object($argument) xor is_object($this->value)) {
-            if (is_object($argument) && !method_exists($argument, '__toString')) {
-                return false;
-            }
-
-            if (is_object($this->value) && !method_exists($this->value, '__toString')) {
-                return false;
-            }
-        } elseif (is_numeric($argument) && is_numeric($this->value)) {
-            // noop
-        } elseif (gettype($argument) !== gettype($this->value)) {
-            return false;
-        }
-
-        return $argument == $this->value ? 10 : false;
-    }
-
-    /**
-     * Returns preset value against which token checks arguments.
-     *
-     * @return mixed
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Returns false.
-     *
-     * @return bool
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        if (null === $this->string) {
-            $this->string = sprintf('exact(%s)', $this->util->stringify($this->value));
-        }
-
-        return $this->string;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php
deleted file mode 100644
index 0b6d23a..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-use Prophecy\Util\StringUtil;
-
-/**
- * Identical value token.
- *
- * @author Florian Voutzinos <florian@voutzinos.com>
- */
-class IdenticalValueToken implements TokenInterface
-{
-    private $value;
-    private $string;
-    private $util;
-
-    /**
-     * Initializes token.
-     *
-     * @param mixed      $value
-     * @param StringUtil $util
-     */
-    public function __construct($value, StringUtil $util = null)
-    {
-        $this->value = $value;
-        $this->util  = $util ?: new StringUtil();
-    }
-
-    /**
-     * Scores 11 if argument matches preset value.
-     *
-     * @param $argument
-     *
-     * @return bool|int
-     */
-    public function scoreArgument($argument)
-    {
-        return $argument === $this->value ? 11 : false;
-    }
-
-    /**
-     * Returns false.
-     *
-     * @return bool
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        if (null === $this->string) {
-            $this->string = sprintf('identical(%s)', $this->util->stringify($this->value));
-        }
-
-        return $this->string;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php
deleted file mode 100644
index 4ee1b25..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-/**
- * Logical AND token.
- *
- * @author Boris Mikhaylov <kaguxmail@gmail.com>
- */
-class LogicalAndToken implements TokenInterface
-{
-    private $tokens = array();
-
-    /**
-     * @param array $arguments exact values or tokens
-     */
-    public function __construct(array $arguments)
-    {
-        foreach ($arguments as $argument) {
-            if (!$argument instanceof TokenInterface) {
-                $argument = new ExactValueToken($argument);
-            }
-            $this->tokens[] = $argument;
-        }
-    }
-
-    /**
-     * Scores maximum score from scores returned by tokens for this argument if all of them score.
-     *
-     * @param $argument
-     *
-     * @return bool|int
-     */
-    public function scoreArgument($argument)
-    {
-        if (0 === count($this->tokens)) {
-            return false;
-        }
-
-        $maxScore = 0;
-        foreach ($this->tokens as $token) {
-            $score = $token->scoreArgument($argument);
-            if (false === $score) {
-                return false;
-            }
-            $maxScore = max($score, $maxScore);
-        }
-
-        return $maxScore;
-    }
-
-    /**
-     * Returns false.
-     *
-     * @return boolean
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return sprintf('bool(%s)', implode(' AND ', $this->tokens));
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php
deleted file mode 100644
index 623efa5..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-/**
- * Logical NOT token.
- *
- * @author Boris Mikhaylov <kaguxmail@gmail.com>
- */
-class LogicalNotToken implements TokenInterface
-{
-    /** @var \Prophecy\Argument\Token\TokenInterface  */
-    private $token;
-
-    /**
-     * @param mixed $value exact value or token
-     */
-    public function __construct($value)
-    {
-        $this->token = $value instanceof TokenInterface? $value : new ExactValueToken($value);
-    }
-
-    /**
-     * Scores 4 when preset token does not match the argument.
-     *
-     * @param $argument
-     *
-     * @return bool|int
-     */
-    public function scoreArgument($argument)
-    {
-        return false === $this->token->scoreArgument($argument) ? 4 : false;
-    }
-
-    /**
-     * Returns true if preset token is last.
-     *
-     * @return bool|int
-     */
-    public function isLast()
-    {
-        return $this->token->isLast();
-    }
-
-    /**
-     * Returns originating token.
-     *
-     * @return TokenInterface
-     */
-    public function getOriginatingToken()
-    {
-        return $this->token;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return sprintf('not(%s)', $this->token);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php
deleted file mode 100644
index 8d93bfd..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-use SebastianBergmann\Comparator\ComparisonFailure;
-use Prophecy\Comparator\Factory as ComparatorFactory;
-use Prophecy\Util\StringUtil;
-
-/**
- * Object state-checker token.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ObjectStateToken implements TokenInterface
-{
-    private $name;
-    private $value;
-    private $util;
-    private $comparatorFactory;
-
-    /**
-     * Initializes token.
-     *
-     * @param string            $methodName
-     * @param mixed             $value             Expected return value
-     * @param null|StringUtil   $util
-     * @param ComparatorFactory $comparatorFactory
-     */
-    public function __construct(
-        $methodName,
-        $value,
-        StringUtil $util = null,
-        ComparatorFactory $comparatorFactory = null
-    ) {
-        $this->name  = $methodName;
-        $this->value = $value;
-        $this->util  = $util ?: new StringUtil;
-
-        $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance();
-    }
-
-    /**
-     * Scores 8 if argument is an object, which method returns expected value.
-     *
-     * @param mixed $argument
-     *
-     * @return bool|int
-     */
-    public function scoreArgument($argument)
-    {
-        if (is_object($argument) && method_exists($argument, $this->name)) {
-            $actual = call_user_func(array($argument, $this->name));
-
-            $comparator = $this->comparatorFactory->getComparatorFor(
-                $actual, $this->value
-            );
-
-            try {
-                $comparator->assertEquals($actual, $this->value);
-                return 8;
-            } catch (ComparisonFailure $failure) {
-                return false;
-            }
-        }
-
-        if (is_object($argument) && property_exists($argument, $this->name)) {
-            return $argument->{$this->name} === $this->value ? 8 : false;
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns false.
-     *
-     * @return bool
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return sprintf('state(%s(), %s)',
-            $this->name,
-            $this->util->stringify($this->value)
-        );
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php
deleted file mode 100644
index 24ff8c2..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-/**
- * String contains token.
- *
- * @author Peter Mitchell <pete@peterjmit.com>
- */
-class StringContainsToken implements TokenInterface
-{
-    private $value;
-
-    /**
-     * Initializes token.
-     *
-     * @param string $value
-     */
-    public function __construct($value)
-    {
-        $this->value = $value;
-    }
-
-    public function scoreArgument($argument)
-    {
-        return strpos($argument, $this->value) !== false ? 6 : false;
-    }
-
-    /**
-     * Returns preset value against which token checks arguments.
-     *
-     * @return mixed
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Returns false.
-     *
-     * @return bool
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return sprintf('contains("%s")', $this->value);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php
deleted file mode 100644
index 625d3ba..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-/**
- * Argument token interface.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface TokenInterface
-{
-    /**
-     * Calculates token match score for provided argument.
-     *
-     * @param $argument
-     *
-     * @return bool|int
-     */
-    public function scoreArgument($argument);
-
-    /**
-     * Returns true if this token prevents check of other tokens (is last one).
-     *
-     * @return bool|int
-     */
-    public function isLast();
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString();
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php
deleted file mode 100644
index cb65132..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Argument\Token;
-
-use Prophecy\Exception\InvalidArgumentException;
-
-/**
- * Value type token.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class TypeToken implements TokenInterface
-{
-    private $type;
-
-    /**
-     * @param string $type
-     */
-    public function __construct($type)
-    {
-        $checker = "is_{$type}";
-        if (!function_exists($checker) && !interface_exists($type) && !class_exists($type)) {
-            throw new InvalidArgumentException(sprintf(
-                'Type or class name expected as an argument to TypeToken, but got %s.', $type
-            ));
-        }
-
-        $this->type = $type;
-    }
-
-    /**
-     * Scores 5 if argument has the same type this token was constructed with.
-     *
-     * @param $argument
-     *
-     * @return bool|int
-     */
-    public function scoreArgument($argument)
-    {
-        $checker = "is_{$this->type}";
-        if (function_exists($checker)) {
-            return call_user_func($checker, $argument) ? 5 : false;
-        }
-
-        return $argument instanceof $this->type ? 5 : false;
-    }
-
-    /**
-     * Returns false.
-     *
-     * @return bool
-     */
-    public function isLast()
-    {
-        return false;
-    }
-
-    /**
-     * Returns string representation for token.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return sprintf('type(%s)', $this->type);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php b/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php
deleted file mode 100644
index 2f3fbad..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Call;
-
-use Exception;
-
-/**
- * Call object.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class Call
-{
-    private $methodName;
-    private $arguments;
-    private $returnValue;
-    private $exception;
-    private $file;
-    private $line;
-
-    /**
-     * Initializes call.
-     *
-     * @param string      $methodName
-     * @param array       $arguments
-     * @param mixed       $returnValue
-     * @param Exception   $exception
-     * @param null|string $file
-     * @param null|int    $line
-     */
-    public function __construct($methodName, array $arguments, $returnValue,
-                                Exception $exception = null, $file, $line)
-    {
-        $this->methodName  = $methodName;
-        $this->arguments   = $arguments;
-        $this->returnValue = $returnValue;
-        $this->exception   = $exception;
-
-        if ($file) {
-            $this->file = $file;
-            $this->line = intval($line);
-        }
-    }
-
-    /**
-     * Returns called method name.
-     *
-     * @return string
-     */
-    public function getMethodName()
-    {
-        return $this->methodName;
-    }
-
-    /**
-     * Returns called method arguments.
-     *
-     * @return array
-     */
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    /**
-     * Returns called method return value.
-     *
-     * @return null|mixed
-     */
-    public function getReturnValue()
-    {
-        return $this->returnValue;
-    }
-
-    /**
-     * Returns exception that call thrown.
-     *
-     * @return null|Exception
-     */
-    public function getException()
-    {
-        return $this->exception;
-    }
-
-    /**
-     * Returns callee filename.
-     *
-     * @return string
-     */
-    public function getFile()
-    {
-        return $this->file;
-    }
-
-    /**
-     * Returns callee line number.
-     *
-     * @return int
-     */
-    public function getLine()
-    {
-        return $this->line;
-    }
-
-    /**
-     * Returns short notation for callee place.
-     *
-     * @return string
-     */
-    public function getCallPlace()
-    {
-        if (null === $this->file) {
-            return 'unknown';
-        }
-
-        return sprintf('%s:%d', $this->file, $this->line);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php b/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php
deleted file mode 100644
index 7495855..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Call;
-
-use Prophecy\Prophecy\MethodProphecy;
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Argument\ArgumentsWildcard;
-use Prophecy\Util\StringUtil;
-use Prophecy\Exception\Call\UnexpectedCallException;
-
-/**
- * Calls receiver & manager.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class CallCenter
-{
-    private $util;
-
-    /**
-     * @var Call[]
-     */
-    private $recordedCalls = array();
-
-    /**
-     * Initializes call center.
-     *
-     * @param StringUtil $util
-     */
-    public function __construct(StringUtil $util = null)
-    {
-        $this->util = $util ?: new StringUtil;
-    }
-
-    /**
-     * Makes and records specific method call for object prophecy.
-     *
-     * @param ObjectProphecy $prophecy
-     * @param string         $methodName
-     * @param array          $arguments
-     *
-     * @return mixed Returns null if no promise for prophecy found or promise return value.
-     *
-     * @throws \Prophecy\Exception\Call\UnexpectedCallException If no appropriate method prophecy found
-     */
-    public function makeCall(ObjectProphecy $prophecy, $methodName, array $arguments)
-    {
-        $backtrace = debug_backtrace();
-
-        $file = $line = null;
-        if (isset($backtrace[2]) && isset($backtrace[2]['file'])) {
-            $file = $backtrace[2]['file'];
-            $line = $backtrace[2]['line'];
-        }
-
-        // If no method prophecies defined, then it's a dummy, so we'll just return null
-        if ('__destruct' === $methodName || 0 == count($prophecy->getMethodProphecies())) {
-            $this->recordedCalls[] = new Call($methodName, $arguments, null, null, $file, $line);
-
-            return null;
-        }
-
-        // There are method prophecies, so it's a fake/stub. Searching prophecy for this call
-        $matches = array();
-        foreach ($prophecy->getMethodProphecies($methodName) as $methodProphecy) {
-            if (0 < $score = $methodProphecy->getArgumentsWildcard()->scoreArguments($arguments)) {
-                $matches[] = array($score, $methodProphecy);
-            }
-        }
-
-        // If fake/stub doesn't have method prophecy for this call - throw exception
-        if (!count($matches)) {
-            throw $this->createUnexpectedCallException($prophecy, $methodName, $arguments);
-        }
-
-        // Sort matches by their score value
-        @usort($matches, function ($match1, $match2) { return $match2[0] - $match1[0]; });
-
-        // If Highest rated method prophecy has a promise - execute it or return null instead
-        $returnValue = null;
-        $exception   = null;
-        if ($promise = $matches[0][1]->getPromise()) {
-            try {
-                $returnValue = $promise->execute($arguments, $prophecy, $matches[0][1]);
-            } catch (\Exception $e) {
-                $exception = $e;
-            }
-        }
-
-        $this->recordedCalls[] = new Call(
-            $methodName, $arguments, $returnValue, $exception, $file, $line
-        );
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-
-        return $returnValue;
-    }
-
-    /**
-     * Searches for calls by method name & arguments wildcard.
-     *
-     * @param string            $methodName
-     * @param ArgumentsWildcard $wildcard
-     *
-     * @return Call[]
-     */
-    public function findCalls($methodName, ArgumentsWildcard $wildcard)
-    {
-        return array_values(
-            array_filter($this->recordedCalls, function (Call $call) use ($methodName, $wildcard) {
-                return $methodName === $call->getMethodName()
-                    && 0 < $wildcard->scoreArguments($call->getArguments())
-                ;
-            })
-        );
-    }
-
-    private function createUnexpectedCallException(ObjectProphecy $prophecy, $methodName,
-                                                   array $arguments)
-    {
-        $classname = get_class($prophecy->reveal());
-        $argstring = implode(', ', array_map(array($this->util, 'stringify'), $arguments));
-        $expected  = implode("\n", array_map(function (MethodProphecy $methodProphecy) {
-            return sprintf('  - %s(%s)',
-                $methodProphecy->getMethodName(),
-                $methodProphecy->getArgumentsWildcard()
-            );
-        }, call_user_func_array('array_merge', $prophecy->getMethodProphecies())));
-
-        return new UnexpectedCallException(
-            sprintf(
-                "Method call:\n".
-                "  - %s(%s)\n".
-                "on %s was not expected, expected calls were:\n%s",
-
-                $methodName, $argstring, $classname, $expected
-            ),
-            $prophecy, $methodName, $arguments
-        );
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php
deleted file mode 100644
index 874e474..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Comparator;
-
-use SebastianBergmann\Comparator\Comparator;
-use SebastianBergmann\Comparator\ComparisonFailure;
-
-/**
- * Closure comparator.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-final class ClosureComparator extends Comparator
-{
-    public function accepts($expected, $actual)
-    {
-        return is_object($expected) && $expected instanceof \Closure
-            && is_object($actual) && $actual instanceof \Closure;
-    }
-
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
-    {
-        throw new ComparisonFailure(
-            $expected,
-            $actual,
-            // we don't need a diff
-            '',
-            '',
-            false,
-            'all closures are born different'
-        );
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php
deleted file mode 100644
index a7a1200..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Comparator;
-
-use SebastianBergmann\Comparator\Factory as BaseFactory;
-
-/**
- * Prophecy comparator factory.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-final class Factory extends BaseFactory
-{
-    /**
-     * @var Factory
-     */
-    private static $instance;
-
-    public function __construct()
-    {
-        parent::__construct();
-
-        $this->register(new ClosureComparator());
-    }
-
-    /**
-     * @return Factory
-     */
-    public static function getInstance()
-    {
-        if (self::$instance === null) {
-            self::$instance = new Factory;
-        }
-
-        return self::$instance;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php
deleted file mode 100644
index d6b6b1a..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler;
-
-use ReflectionClass;
-
-/**
- * Cached class doubler.
- * Prevents mirroring/creation of the same structure twice.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class CachedDoubler extends Doubler
-{
-    private $classes = array();
-
-    /**
-     * {@inheritdoc}
-     */
-    public function registerClassPatch(ClassPatch\ClassPatchInterface $patch)
-    {
-        $this->classes[] = array();
-
-        parent::registerClassPatch($patch);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function createDoubleClass(ReflectionClass $class = null, array $interfaces)
-    {
-        $classId = $this->generateClassId($class, $interfaces);
-        if (isset($this->classes[$classId])) {
-            return $this->classes[$classId];
-        }
-
-        return $this->classes[$classId] = parent::createDoubleClass($class, $interfaces);
-    }
-
-    /**
-     * @param ReflectionClass   $class
-     * @param ReflectionClass[] $interfaces
-     *
-     * @return string
-     */
-    private function generateClassId(ReflectionClass $class = null, array $interfaces)
-    {
-        $parts = array();
-        if (null !== $class) {
-            $parts[] = $class->getName();
-        }
-        foreach ($interfaces as $interface) {
-            $parts[] = $interface->getName();
-        }
-        sort($parts);
-
-        return md5(implode('', $parts));
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php
deleted file mode 100644
index d6d1968..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\ClassPatch;
-
-use Prophecy\Doubler\Generator\Node\ClassNode;
-
-/**
- * Class patch interface.
- * Class patches extend doubles functionality or help
- * Prophecy to avoid some internal PHP bugs.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface ClassPatchInterface
-{
-    /**
-     * Checks if patch supports specific class node.
-     *
-     * @param ClassNode $node
-     *
-     * @return bool
-     */
-    public function supports(ClassNode $node);
-
-    /**
-     * Applies patch to the specific class node.
-     *
-     * @param ClassNode $node
-     * @return void
-     */
-    public function apply(ClassNode $node);
-
-    /**
-     * Returns patch priority, which determines when patch will be applied.
-     *
-     * @return int Priority number (higher - earlier)
-     */
-    public function getPriority();
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php
deleted file mode 100644
index 61998fc..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\ClassPatch;
-
-use Prophecy\Doubler\Generator\Node\ClassNode;
-use Prophecy\Doubler\Generator\Node\MethodNode;
-
-/**
- * Disable constructor.
- * Makes all constructor arguments optional.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class DisableConstructorPatch implements ClassPatchInterface
-{
-    /**
-     * Checks if class has `__construct` method.
-     *
-     * @param ClassNode $node
-     *
-     * @return bool
-     */
-    public function supports(ClassNode $node)
-    {
-        return true;
-    }
-
-    /**
-     * Makes all class constructor arguments optional.
-     *
-     * @param ClassNode $node
-     */
-    public function apply(ClassNode $node)
-    {
-        if (!$node->hasMethod('__construct')) {
-            $node->addMethod(new MethodNode('__construct', ''));
-
-            return;
-        }
-
-        $constructor = $node->getMethod('__construct');
-        foreach ($constructor->getArguments() as $argument) {
-            $argument->setDefault(null);
-        }
-
-        $constructor->setCode(<<<PHP
-if (0 < func_num_args()) {
-    call_user_func_array(array('parent', '__construct'), func_get_args());
-}
-PHP
-        );
-    }
-
-    /**
-     * Returns patch priority, which determines when patch will be applied.
-     *
-     * @return int Priority number (higher - earlier)
-     */
-    public function getPriority()
-    {
-        return 100;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php
deleted file mode 100644
index fa38fc0..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\ClassPatch;
-
-use Prophecy\Doubler\Generator\Node\ClassNode;
-
-/**
- * Exception patch for HHVM to remove the stubs from special methods
- *
- * @author Christophe Coevoet <stof@notk.org>
- */
-class HhvmExceptionPatch implements ClassPatchInterface
-{
-    /**
-     * Supports exceptions on HHVM.
-     *
-     * @param ClassNode $node
-     *
-     * @return bool
-     */
-    public function supports(ClassNode $node)
-    {
-        if (!defined('HHVM_VERSION')) {
-            return false;
-        }
-
-        return 'Exception' === $node->getParentClass() || is_subclass_of($node->getParentClass(), 'Exception');
-    }
-
-    /**
-     * Removes special exception static methods from the doubled methods.
-     *
-     * @param ClassNode $node
-     *
-     * @return void
-     */
-    public function apply(ClassNode $node)
-    {
-        if ($node->hasMethod('setTraceOptions')) {
-            $node->getMethod('setTraceOptions')->useParentCode();
-        }
-        if ($node->hasMethod('getTraceOptions')) {
-            $node->getMethod('getTraceOptions')->useParentCode();
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPriority()
-    {
-        return -50;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php
deleted file mode 100644
index b0d9793..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\ClassPatch;
-
-use Prophecy\Doubler\Generator\Node\ClassNode;
-
-/**
- * Remove method functionality from the double which will clash with php keywords.
- *
- * @author Milan Magudia <milan@magudia.com>
- */
-class KeywordPatch implements ClassPatchInterface
-{
-    /**
-     * Support any class
-     *
-     * @param ClassNode $node
-     *
-     * @return boolean
-     */
-    public function supports(ClassNode $node)
-    {
-        return true;
-    }
-
-    /**
-     * Remove methods that clash with php keywords
-     *
-     * @param ClassNode $node
-     */
-    public function apply(ClassNode $node)
-    {
-        $methodNames = array_keys($node->getMethods());
-        $methodsToRemove = array_intersect($methodNames, $this->getKeywords());
-        foreach ($methodsToRemove as $methodName) {
-            $node->removeMethod($methodName);
-        }
-    }
-
-    /**
-     * Returns patch priority, which determines when patch will be applied.
-     *
-     * @return int Priority number (higher - earlier)
-     */
-    public function getPriority() {
-        return 49;
-    }
-
-    /**
-     * Returns array of php keywords.
-     *
-     * @return array
-     */
-    private function getKeywords() {
-
-        return array(
-            '__halt_compiler',
-            'abstract',
-            'and',
-            'array',
-            'as',
-            'break',
-            'callable',
-            'case',
-            'catch',
-            'class',
-            'clone',
-            'const',
-            'continue',
-            'declare',
-            'default',
-            'die',
-            'do',
-            'echo',
-            'else',
-            'elseif',
-            'empty',
-            'enddeclare',
-            'endfor',
-            'endforeach',
-            'endif',
-            'endswitch',
-            'endwhile',
-            'eval',
-            'exit',
-            'extends',
-            'final',
-            'finally',
-            'for',
-            'foreach',
-            'function',
-            'global',
-            'goto',
-            'if',
-            'implements',
-            'include',
-            'include_once',
-            'instanceof',
-            'insteadof',
-            'interface',
-            'isset',
-            'list',
-            'namespace',
-            'new',
-            'or',
-            'print',
-            'private',
-            'protected',
-            'public',
-            'require',
-            'require_once',
-            'return',
-            'static',
-            'switch',
-            'throw',
-            'trait',
-            'try',
-            'unset',
-            'use',
-            'var',
-            'while',
-            'xor',
-            'yield',
-        );
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php
deleted file mode 100644
index da45450..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\ClassPatch;
-
-use phpDocumentor\Reflection\DocBlock;
-use Prophecy\Doubler\Generator\Node\ClassNode;
-use Prophecy\Doubler\Generator\Node\MethodNode;
-
-/**
- * Discover Magical API using "@method" PHPDoc format.
- *
- * @author Thomas Tourlourat <thomas@tourlourat.com>
- */
-class MagicCallPatch implements ClassPatchInterface
-{
-    /**
-     * Support any class
-     *
-     * @param ClassNode $node
-     *
-     * @return boolean
-     */
-    public function supports(ClassNode $node)
-    {
-        return true;
-    }
-
-    /**
-     * Discover Magical API
-     *
-     * @param ClassNode $node
-     */
-    public function apply(ClassNode $node)
-    {
-        $parentClass = $node->getParentClass();
-        $reflectionClass = new \ReflectionClass($parentClass);
-
-        $phpdoc = new DocBlock($reflectionClass->getDocComment());
-
-        $tagList = $phpdoc->getTagsByName('method');
-
-        foreach($tagList as $tag) {
-            $methodName = $tag->getMethodName();
-
-            if (!$reflectionClass->hasMethod($methodName)) {
-                $methodNode = new MethodNode($tag->getMethodName());
-                $methodNode->setStatic($tag->isStatic());
-
-                $node->addMethod($methodNode);
-            }
-        }
-    }
-
-    /**
-     * Returns patch priority, which determines when patch will be applied.
-     *
-     * @return integer Priority number (higher - earlier)
-     */
-    public function getPriority()
-    {
-        return 50;
-    }
-}
-
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php
deleted file mode 100644
index ab0bb7c..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\ClassPatch;
-
-use Prophecy\Doubler\Generator\Node\ClassNode;
-use Prophecy\Doubler\Generator\Node\MethodNode;
-use Prophecy\Doubler\Generator\Node\ArgumentNode;
-
-/**
- * Add Prophecy functionality to the double.
- * This is a core class patch for Prophecy.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ProphecySubjectPatch implements ClassPatchInterface
-{
-    /**
-     * Always returns true.
-     *
-     * @param ClassNode $node
-     *
-     * @return bool
-     */
-    public function supports(ClassNode $node)
-    {
-        return true;
-    }
-
-    /**
-     * Apply Prophecy functionality to class node.
-     *
-     * @param ClassNode $node
-     */
-    public function apply(ClassNode $node)
-    {
-        $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface');
-        $node->addProperty('objectProphecy', 'private');
-
-        foreach ($node->getMethods() as $name => $method) {
-            if ('__construct' === strtolower($name)) {
-                continue;
-            }
-
-            $method->setCode(
-                'return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());'
-            );
-        }
-
-        $prophecySetter = new MethodNode('setProphecy');
-        $prophecyArgument = new ArgumentNode('prophecy');
-        $prophecyArgument->setTypeHint('Prophecy\Prophecy\ProphecyInterface');
-        $prophecySetter->addArgument($prophecyArgument);
-        $prophecySetter->setCode('$this->objectProphecy = $prophecy;');
-
-        $prophecyGetter = new MethodNode('getProphecy');
-        $prophecyGetter->setCode('return $this->objectProphecy;');
-
-        if ($node->hasMethod('__call')) {
-            $__call = $node->getMethod('__call');
-        } else {
-            $__call = new MethodNode('__call');
-            $__call->addArgument(new ArgumentNode('name'));
-            $__call->addArgument(new ArgumentNode('arguments'));
-
-            $node->addMethod($__call);
-        }
-
-        $__call->setCode(<<<PHP
-throw new \Prophecy\Exception\Doubler\MethodNotFoundException(
-    sprintf('Method `%s::%s()` not found.', get_class(\$this), func_get_arg(0)),
-    \$this->getProphecy(), func_get_arg(0)
-);
-PHP
-        );
-
-        $node->addMethod($prophecySetter);
-        $node->addMethod($prophecyGetter);
-    }
-
-    /**
-     * Returns patch priority, which determines when patch will be applied.
-     *
-     * @return int Priority number (higher - earlier)
-     */
-    public function getPriority()
-    {
-        return 0;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php
deleted file mode 100644
index 9166aee..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\ClassPatch;
-
-use Prophecy\Doubler\Generator\Node\ClassNode;
-
-/**
- * ReflectionClass::newInstance patch.
- * Makes first argument of newInstance optional, since it works but signature is misleading
- *
- * @author Florian Klein <florian.klein@free.fr>
- */
-class ReflectionClassNewInstancePatch implements ClassPatchInterface
-{
-    /**
-     * Supports ReflectionClass
-     *
-     * @param ClassNode $node
-     *
-     * @return bool
-     */
-    public function supports(ClassNode $node)
-    {
-        return 'ReflectionClass' === $node->getParentClass();
-    }
-
-    /**
-     * Updates newInstance's first argument to make it optional
-     *
-     * @param ClassNode $node
-     */
-    public function apply(ClassNode $node)
-    {
-        foreach ($node->getMethod('newInstance')->getArguments() as $argument) {
-            $argument->setDefault(null);
-        }
-    }
-
-    /**
-     * Returns patch priority, which determines when patch will be applied.
-     *
-     * @return int Priority number (higher = earlier)
-     */
-    public function getPriority()
-    {
-        return 50;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php
deleted file mode 100644
index 8401159..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\ClassPatch;
-
-use Prophecy\Doubler\Generator\Node\ClassNode;
-use Prophecy\Doubler\Generator\Node\MethodNode;
-
-/**
- * SplFileInfo patch.
- * Makes SplFileInfo and derivative classes usable with Prophecy.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class SplFileInfoPatch implements ClassPatchInterface
-{
-    /**
-     * Supports everything that extends SplFileInfo.
-     *
-     * @param ClassNode $node
-     *
-     * @return bool
-     */
-    public function supports(ClassNode $node)
-    {
-        if (null === $node->getParentClass()) {
-            return false;
-        }
-
-        return 'SplFileInfo' === $node->getParentClass()
-            || is_subclass_of($node->getParentClass(), 'SplFileInfo')
-        ;
-    }
-
-    /**
-     * Updated constructor code to call parent one with dummy file argument.
-     *
-     * @param ClassNode $node
-     */
-    public function apply(ClassNode $node)
-    {
-        if ($node->hasMethod('__construct')) {
-            $constructor = $node->getMethod('__construct');
-        } else {
-            $constructor = new MethodNode('__construct');
-            $node->addMethod($constructor);
-        }
-
-        if ($this->nodeIsDirectoryIterator($node)) {
-            $constructor->setCode('return parent::__construct("' . __DIR__ . '");');
-            return;
-        }
-
-        $constructor->useParentCode();
-    }
-
-    /**
-     * Returns patch priority, which determines when patch will be applied.
-     *
-     * @return int Priority number (higher - earlier)
-     */
-    public function getPriority()
-    {
-        return 50;
-    }
-
-    /**
-     * @param ClassNode $node
-     * @return boolean
-     */
-    private function nodeIsDirectoryIterator(ClassNode $node)
-    {
-        $parent = $node->getParentClass();
-        return 'DirectoryIterator' === $parent
-            || is_subclass_of($parent, 'DirectoryIterator');
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php
deleted file mode 100644
index eea0202..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\ClassPatch;
-
-use Prophecy\Doubler\Generator\Node\ClassNode;
-use Prophecy\Doubler\Generator\Node\MethodNode;
-
-/**
- * Traversable interface patch.
- * Forces classes that implement interfaces, that extend Traversable to also implement Iterator.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class TraversablePatch implements ClassPatchInterface
-{
-    /**
-     * Supports nodetree, that implement Traversable, but not Iterator or IteratorAggregate.
-     *
-     * @param ClassNode $node
-     *
-     * @return bool
-     */
-    public function supports(ClassNode $node)
-    {
-        if (in_array('Iterator', $node->getInterfaces())) {
-            return false;
-        }
-        if (in_array('IteratorAggregate', $node->getInterfaces())) {
-            return false;
-        }
-
-        foreach ($node->getInterfaces() as $interface) {
-            if ('Traversable' !== $interface && !is_subclass_of($interface, 'Traversable')) {
-                continue;
-            }
-            if ('Iterator' === $interface || is_subclass_of($interface, 'Iterator')) {
-                continue;
-            }
-            if ('IteratorAggregate' === $interface || is_subclass_of($interface, 'IteratorAggregate')) {
-                continue;
-            }
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Forces class to implement Iterator interface.
-     *
-     * @param ClassNode $node
-     */
-    public function apply(ClassNode $node)
-    {
-        $node->addInterface('Iterator');
-
-        $node->addMethod(new MethodNode('current'));
-        $node->addMethod(new MethodNode('key'));
-        $node->addMethod(new MethodNode('next'));
-        $node->addMethod(new MethodNode('rewind'));
-        $node->addMethod(new MethodNode('valid'));
-    }
-
-    /**
-     * Returns patch priority, which determines when patch will be applied.
-     *
-     * @return int Priority number (higher - earlier)
-     */
-    public function getPriority()
-    {
-        return 100;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php
deleted file mode 100644
index 699be3a..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler;
-
-/**
- * Core double interface.
- * All doubled classes will implement this one.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface DoubleInterface
-{
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php
deleted file mode 100644
index a378ae2..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler;
-
-use Doctrine\Instantiator\Instantiator;
-use Prophecy\Doubler\ClassPatch\ClassPatchInterface;
-use Prophecy\Doubler\Generator\ClassMirror;
-use Prophecy\Doubler\Generator\ClassCreator;
-use Prophecy\Exception\InvalidArgumentException;
-use ReflectionClass;
-
-/**
- * Cached class doubler.
- * Prevents mirroring/creation of the same structure twice.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class Doubler
-{
-    private $mirror;
-    private $creator;
-    private $namer;
-
-    /**
-     * @var ClassPatchInterface[]
-     */
-    private $patches = array();
-
-    /**
-     * @var \Doctrine\Instantiator\Instantiator
-     */
-    private $instantiator;
-
-    /**
-     * Initializes doubler.
-     *
-     * @param ClassMirror   $mirror
-     * @param ClassCreator  $creator
-     * @param NameGenerator $namer
-     */
-    public function __construct(ClassMirror $mirror = null, ClassCreator $creator = null,
-                                NameGenerator $namer = null)
-    {
-        $this->mirror  = $mirror  ?: new ClassMirror;
-        $this->creator = $creator ?: new ClassCreator;
-        $this->namer   = $namer   ?: new NameGenerator;
-    }
-
-    /**
-     * Returns list of registered class patches.
-     *
-     * @return ClassPatchInterface[]
-     */
-    public function getClassPatches()
-    {
-        return $this->patches;
-    }
-
-    /**
-     * Registers new class patch.
-     *
-     * @param ClassPatchInterface $patch
-     */
-    public function registerClassPatch(ClassPatchInterface $patch)
-    {
-        $this->patches[] = $patch;
-
-        @usort($this->patches, function (ClassPatchInterface $patch1, ClassPatchInterface $patch2) {
-            return $patch2->getPriority() - $patch1->getPriority();
-        });
-    }
-
-    /**
-     * Creates double from specific class or/and list of interfaces.
-     *
-     * @param ReflectionClass   $class
-     * @param ReflectionClass[] $interfaces Array of ReflectionClass instances
-     * @param array             $args       Constructor arguments
-     *
-     * @return DoubleInterface
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function double(ReflectionClass $class = null, array $interfaces, array $args = null)
-    {
-        foreach ($interfaces as $interface) {
-            if (!$interface instanceof ReflectionClass) {
-                throw new InvalidArgumentException(sprintf(
-                    "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n".
-                    "a second argument to `Doubler::double(...)`, but got %s.",
-                    is_object($interface) ? get_class($interface).' class' : gettype($interface)
-                ));
-            }
-        }
-
-        $classname  = $this->createDoubleClass($class, $interfaces);
-        $reflection = new ReflectionClass($classname);
-
-        if (null !== $args) {
-            return $reflection->newInstanceArgs($args);
-        }
-        if ((null === $constructor = $reflection->getConstructor())
-            || ($constructor->isPublic() && !$constructor->isFinal())) {
-            return $reflection->newInstance();
-        }
-
-        if (!$this->instantiator) {
-            $this->instantiator = new Instantiator();
-        }
-
-        return $this->instantiator->instantiate($classname);
-    }
-
-    /**
-     * Creates double class and returns its FQN.
-     *
-     * @param ReflectionClass   $class
-     * @param ReflectionClass[] $interfaces
-     *
-     * @return string
-     */
-    protected function createDoubleClass(ReflectionClass $class = null, array $interfaces)
-    {
-        $name = $this->namer->name($class, $interfaces);
-        $node = $this->mirror->reflect($class, $interfaces);
-
-        foreach ($this->patches as $patch) {
-            if ($patch->supports($node)) {
-                $patch->apply($node);
-            }
-        }
-
-        $this->creator->create($name, $node);
-
-        return $name;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php
deleted file mode 100644
index 4d474e5..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\Generator;
-
-/**
- * Class code creator.
- * Generates PHP code for specific class node tree.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ClassCodeGenerator
-{
-    /**
-     * Generates PHP code for class node.
-     *
-     * @param string         $classname
-     * @param Node\ClassNode $class
-     *
-     * @return string
-     */
-    public function generate($classname, Node\ClassNode $class)
-    {
-        $parts     = explode('\\', $classname);
-        $classname = array_pop($parts);
-        $namespace = implode('\\', $parts);
-
-        $code = sprintf("class %s extends \%s implements %s {\n",
-            $classname, $class->getParentClass(), implode(', ',
-                array_map(function ($interface) {return '\\'.$interface;}, $class->getInterfaces())
-            )
-        );
-
-        foreach ($class->getProperties() as $name => $visibility) {
-            $code .= sprintf("%s \$%s;\n", $visibility, $name);
-        }
-        $code .= "\n";
-
-        foreach ($class->getMethods() as $method) {
-            $code .= $this->generateMethod($method)."\n";
-        }
-        $code .= "\n}";
-
-        return sprintf("namespace %s {\n%s\n}", $namespace, $code);
-    }
-
-    private function generateMethod(Node\MethodNode $method)
-    {
-        $php = sprintf("%s %s function %s%s(%s)%s {\n",
-            $method->getVisibility(),
-            $method->isStatic() ? 'static' : '',
-            $method->returnsReference() ? '&':'',
-            $method->getName(),
-            implode(', ', $this->generateArguments($method->getArguments())),
-            $method->hasReturnType() ? sprintf(': %s', $method->getReturnType()) : ''
-        );
-        $php .= $method->getCode()."\n";
-
-        return $php.'}';
-    }
-
-    private function generateArguments(array $arguments)
-    {
-        return array_map(function (Node\ArgumentNode $argument) {
-            $php = '';
-
-            if ($hint = $argument->getTypeHint()) {
-                if ('array' === $hint || 'callable' === $hint) {
-                    $php .= $hint;
-                } else {
-                    $php .= '\\'.$hint;
-                }
-            }
-
-            $php .= ' '.($argument->isPassedByReference() ? '&' : '').'$'.$argument->getName();
-
-            if ($argument->isOptional()) {
-                $php .= ' = '.var_export($argument->getDefault(), true);
-            }
-
-            return $php;
-        }, $arguments);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php
deleted file mode 100644
index 882a4a4..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\Generator;
-
-use Prophecy\Exception\Doubler\ClassCreatorException;
-
-/**
- * Class creator.
- * Creates specific class in current environment.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ClassCreator
-{
-    private $generator;
-
-    /**
-     * Initializes creator.
-     *
-     * @param ClassCodeGenerator $generator
-     */
-    public function __construct(ClassCodeGenerator $generator = null)
-    {
-        $this->generator = $generator ?: new ClassCodeGenerator;
-    }
-
-    /**
-     * Creates class.
-     *
-     * @param string         $classname
-     * @param Node\ClassNode $class
-     *
-     * @return mixed
-     *
-     * @throws \Prophecy\Exception\Doubler\ClassCreatorException
-     */
-    public function create($classname, Node\ClassNode $class)
-    {
-        $code = $this->generator->generate($classname, $class);
-        $return = eval($code);
-
-        if (!class_exists($classname, false)) {
-            if (count($class->getInterfaces())) {
-                throw new ClassCreatorException(sprintf(
-                    'Could not double `%s` and implement interfaces: [%s].',
-                    $class->getParentClass(), implode(', ', $class->getInterfaces())
-                ), $class);
-            }
-
-            throw new ClassCreatorException(
-                sprintf('Could not double `%s`.', $class->getParentClass()),
-                $class
-            );
-        }
-
-        return $return;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php
deleted file mode 100644
index 6a4ebde..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php
+++ /dev/null
@@ -1,210 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\Generator;
-
-use Prophecy\Exception\InvalidArgumentException;
-use Prophecy\Exception\Doubler\ClassMirrorException;
-use ReflectionClass;
-use ReflectionMethod;
-use ReflectionParameter;
-
-/**
- * Class mirror.
- * Core doubler class. Mirrors specific class and/or interfaces into class node tree.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ClassMirror
-{
-    private static $reflectableMethods = array(
-        '__construct',
-        '__destruct',
-        '__sleep',
-        '__wakeup',
-        '__toString',
-        '__call',
-    );
-
-    /**
-     * Reflects provided arguments into class node.
-     *
-     * @param ReflectionClass   $class
-     * @param ReflectionClass[] $interfaces
-     *
-     * @return Node\ClassNode
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function reflect(ReflectionClass $class = null, array $interfaces)
-    {
-        $node = new Node\ClassNode;
-
-        if (null !== $class) {
-            if (true === $class->isInterface()) {
-                throw new InvalidArgumentException(sprintf(
-                    "Could not reflect %s as a class, because it\n".
-                    "is interface - use the second argument instead.",
-                    $class->getName()
-                ));
-            }
-
-            $this->reflectClassToNode($class, $node);
-        }
-
-        foreach ($interfaces as $interface) {
-            if (!$interface instanceof ReflectionClass) {
-                throw new InvalidArgumentException(sprintf(
-                    "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n".
-                    "a second argument to `ClassMirror::reflect(...)`, but got %s.",
-                    is_object($interface) ? get_class($interface).' class' : gettype($interface)
-                ));
-            }
-            if (false === $interface->isInterface()) {
-                throw new InvalidArgumentException(sprintf(
-                    "Could not reflect %s as an interface, because it\n".
-                    "is class - use the first argument instead.",
-                    $interface->getName()
-                ));
-            }
-
-            $this->reflectInterfaceToNode($interface, $node);
-        }
-
-        $node->addInterface('Prophecy\Doubler\Generator\ReflectionInterface');
-
-        return $node;
-    }
-
-    private function reflectClassToNode(ReflectionClass $class, Node\ClassNode $node)
-    {
-        if (true === $class->isFinal()) {
-            throw new ClassMirrorException(sprintf(
-                'Could not reflect class %s as it is marked final.', $class->getName()
-            ), $class);
-        }
-
-        $node->setParentClass($class->getName());
-
-        foreach ($class->getMethods(ReflectionMethod::IS_ABSTRACT) as $method) {
-            if (false === $method->isProtected()) {
-                continue;
-            }
-
-            $this->reflectMethodToNode($method, $node);
-        }
-
-        foreach ($class->getMethods(ReflectionMethod::IS_PUBLIC) as $method) {
-            if (0 === strpos($method->getName(), '_')
-                && !in_array($method->getName(), self::$reflectableMethods)) {
-                continue;
-            }
-
-            if (true === $method->isFinal()) {
-                continue;
-            }
-
-            $this->reflectMethodToNode($method, $node);
-        }
-    }
-
-    private function reflectInterfaceToNode(ReflectionClass $interface, Node\ClassNode $node)
-    {
-        $node->addInterface($interface->getName());
-
-        foreach ($interface->getMethods() as $method) {
-            $this->reflectMethodToNode($method, $node);
-        }
-    }
-
-    private function reflectMethodToNode(ReflectionMethod $method, Node\ClassNode $classNode)
-    {
-        $node = new Node\MethodNode($method->getName());
-
-        if (true === $method->isProtected()) {
-            $node->setVisibility('protected');
-        }
-
-        if (true === $method->isStatic()) {
-            $node->setStatic();
-        }
-
-        if (true === $method->returnsReference()) {
-            $node->setReturnsReference();
-        }
-
-        if (version_compare(PHP_VERSION, '7.0', '>=') && true === $method->hasReturnType()) {
-            $node->setReturnType((string) $method->getReturnType());
-        }
-
-        if (is_array($params = $method->getParameters()) && count($params)) {
-            foreach ($params as $param) {
-                $this->reflectArgumentToNode($param, $node);
-            }
-        }
-
-        $classNode->addMethod($node);
-    }
-
-    private function reflectArgumentToNode(ReflectionParameter $parameter, Node\MethodNode $methodNode)
-    {
-        $name = $parameter->getName() == '...' ? '__dot_dot_dot__' : $parameter->getName();
-        $node = new Node\ArgumentNode($name);
-
-        $typeHint = $this->getTypeHint($parameter);
-        $node->setTypeHint($typeHint);
-
-        if (true === $parameter->isDefaultValueAvailable()) {
-            $node->setDefault($parameter->getDefaultValue());
-        } elseif (true === $parameter->isOptional()
-              || (true === $parameter->allowsNull() && $typeHint)) {
-            $node->setDefault(null);
-        }
-
-        if (true === $parameter->isPassedByReference()) {
-            $node->setAsPassedByReference();
-        }
-
-        $methodNode->addArgument($node);
-    }
-
-    private function getTypeHint(ReflectionParameter $parameter)
-    {
-        if (null !== $className = $this->getParameterClassName($parameter)) {
-            return $className;
-        }
-
-        if (true === $parameter->isArray()) {
-            return 'array';
-        }
-
-        if (version_compare(PHP_VERSION, '5.4', '>=') && true === $parameter->isCallable()) {
-            return 'callable';
-        }
-
-        if (version_compare(PHP_VERSION, '7.0', '>=') && true === $parameter->hasType()) {
-            return (string) $parameter->getType();
-        }
-
-        return null;
-    }
-
-    private function getParameterClassName(ReflectionParameter $parameter)
-    {
-        try {
-            return $parameter->getClass() ? $parameter->getClass()->getName() : null;
-        } catch (\ReflectionException $e) {
-            preg_match('/\[\s\<\w+?>\s([\w,\\\]+)/s', $parameter, $matches);
-
-            return isset($matches[1]) ? $matches[1] : null;
-        }
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php
deleted file mode 100644
index a6c42a3..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\Generator\Node;
-
-/**
- * Argument node.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ArgumentNode
-{
-    private $name;
-    private $typeHint;
-    private $default;
-    private $optional    = false;
-    private $byReference = false;
-
-    /**
-     * @param string $name
-     */
-    public function __construct($name)
-    {
-        $this->name = $name;
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function getTypeHint()
-    {
-        return $this->typeHint;
-    }
-
-    public function setTypeHint($typeHint = null)
-    {
-        $this->typeHint = $typeHint;
-    }
-
-    public function getDefault()
-    {
-        return $this->default;
-    }
-
-    public function setDefault($default = null)
-    {
-        $this->optional = true;
-        $this->default  = $default;
-    }
-
-    public function isOptional()
-    {
-        return $this->optional;
-    }
-
-    public function setAsPassedByReference($byReference = true)
-    {
-        $this->byReference = $byReference;
-    }
-
-    public function isPassedByReference()
-    {
-        return $this->byReference;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php
deleted file mode 100644
index b38cb4e..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\Generator\Node;
-
-use Prophecy\Exception\InvalidArgumentException;
-
-/**
- * Class node.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ClassNode
-{
-    private $parentClass = 'stdClass';
-    private $interfaces  = array();
-    private $properties  = array();
-
-    /**
-     * @var MethodNode[]
-     */
-    private $methods     = array();
-
-    public function getParentClass()
-    {
-        return $this->parentClass;
-    }
-
-    /**
-     * @param string $class
-     */
-    public function setParentClass($class)
-    {
-        $this->parentClass = $class ?: 'stdClass';
-    }
-
-    /**
-     * @return string[]
-     */
-    public function getInterfaces()
-    {
-        return $this->interfaces;
-    }
-
-    /**
-     * @param string $interface
-     */
-    public function addInterface($interface)
-    {
-        if ($this->hasInterface($interface)) {
-            return;
-        }
-
-        array_unshift($this->interfaces, $interface);
-    }
-
-    /**
-     * @param string $interface
-     *
-     * @return bool
-     */
-    public function hasInterface($interface)
-    {
-        return in_array($interface, $this->interfaces);
-    }
-
-    public function getProperties()
-    {
-        return $this->properties;
-    }
-
-    public function addProperty($name, $visibility = 'public')
-    {
-        $visibility = strtolower($visibility);
-
-        if (!in_array($visibility, array('public', 'private', 'protected'))) {
-            throw new InvalidArgumentException(sprintf(
-                '`%s` property visibility is not supported.', $visibility
-            ));
-        }
-
-        $this->properties[$name] = $visibility;
-    }
-
-    /**
-     * @return MethodNode[]
-     */
-    public function getMethods()
-    {
-        return $this->methods;
-    }
-
-    public function addMethod(MethodNode $method)
-    {
-        $this->methods[$method->getName()] = $method;
-    }
-
-    public function removeMethod($name)
-    {
-        unset($this->methods[$name]);
-    }
-
-    /**
-     * @param string $name
-     *
-     * @return MethodNode|null
-     */
-    public function getMethod($name)
-    {
-        return $this->hasMethod($name) ? $this->methods[$name] : null;
-    }
-
-    /**
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function hasMethod($name)
-    {
-        return isset($this->methods[$name]);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php
deleted file mode 100644
index eb95352..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\Generator\Node;
-
-use Prophecy\Exception\InvalidArgumentException;
-
-/**
- * Method node.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class MethodNode
-{
-    private $name;
-    private $code;
-    private $visibility = 'public';
-    private $static = false;
-    private $returnsReference = false;
-    private $returnType;
-
-    /**
-     * @var ArgumentNode[]
-     */
-    private $arguments = array();
-
-    /**
-     * @param string $name
-     * @param string $code
-     */
-    public function __construct($name, $code = null)
-    {
-        $this->name = $name;
-        $this->code = $code;
-    }
-
-    public function getVisibility()
-    {
-        return $this->visibility;
-    }
-
-    /**
-     * @param string $visibility
-     */
-    public function setVisibility($visibility)
-    {
-        $visibility = strtolower($visibility);
-
-        if (!in_array($visibility, array('public', 'private', 'protected'))) {
-            throw new InvalidArgumentException(sprintf(
-                '`%s` method visibility is not supported.', $visibility
-            ));
-        }
-
-        $this->visibility = $visibility;
-    }
-
-    public function isStatic()
-    {
-        return $this->static;
-    }
-
-    public function setStatic($static = true)
-    {
-        $this->static = (bool) $static;
-    }
-
-    public function returnsReference()
-    {
-        return $this->returnsReference;
-    }
-
-    public function setReturnsReference()
-    {
-        $this->returnsReference = true;
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function addArgument(ArgumentNode $argument)
-    {
-        $this->arguments[] = $argument;
-    }
-
-    /**
-     * @return ArgumentNode[]
-     */
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function hasReturnType()
-    {
-        return null !== $this->returnType;
-    }
-
-    /**
-     * @param string $type
-     */
-    public function setReturnType($type = null)
-    {
-        switch ($type) {
-            case '':
-                $this->returnType = null;
-                break;
-
-            case 'string';
-            case 'float':
-            case 'int':
-            case 'bool':
-            case 'array':
-            case 'callable':
-                $this->returnType = $type;
-                break;
-
-            case 'double':
-            case 'real':
-                $this->returnType = 'float';
-                break;
-
-            case 'boolean':
-                $this->returnType = 'bool';
-                break;
-
-            case 'integer':
-                $this->returnType = 'int';
-                break;
-
-            default:
-                $this->returnType = '\\' . ltrim($type, '\\');
-        }
-    }
-
-    public function getReturnType()
-    {
-        return $this->returnType;
-    }
-
-    /**
-     * @param string $code
-     */
-    public function setCode($code)
-    {
-        $this->code = $code;
-    }
-
-    public function getCode()
-    {
-        if ($this->returnsReference)
-        {
-            return "throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), '{$this->name}');";
-        }
-
-        return (string) $this->code;
-    }
-
-    public function useParentCode()
-    {
-        $this->code = sprintf(
-            'return parent::%s(%s);', $this->getName(), implode(', ',
-                array_map(function (ArgumentNode $arg) { return '$'.$arg->getName(); }, $this->arguments)
-            )
-        );
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php
deleted file mode 100644
index d720b15..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler\Generator;
-
-/**
- * Reflection interface.
- * All reflected classes implement this interface.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface ReflectionInterface
-{
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php
deleted file mode 100644
index 8a99c4c..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler;
-
-use Prophecy\Exception\Doubler\DoubleException;
-use Prophecy\Exception\Doubler\ClassNotFoundException;
-use Prophecy\Exception\Doubler\InterfaceNotFoundException;
-use ReflectionClass;
-
-/**
- * Lazy double.
- * Gives simple interface to describe double before creating it.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class LazyDouble
-{
-    private $doubler;
-    private $class;
-    private $interfaces = array();
-    private $arguments  = null;
-    private $double;
-
-    /**
-     * Initializes lazy double.
-     *
-     * @param Doubler $doubler
-     */
-    public function __construct(Doubler $doubler)
-    {
-        $this->doubler = $doubler;
-    }
-
-    /**
-     * Tells doubler to use specific class as parent one for double.
-     *
-     * @param string|ReflectionClass $class
-     *
-     * @throws \Prophecy\Exception\Doubler\ClassNotFoundException
-     * @throws \Prophecy\Exception\Doubler\DoubleException
-     */
-    public function setParentClass($class)
-    {
-        if (null !== $this->double) {
-            throw new DoubleException('Can not extend class with already instantiated double.');
-        }
-
-        if (!$class instanceof ReflectionClass) {
-            if (!class_exists($class)) {
-                throw new ClassNotFoundException(sprintf('Class %s not found.', $class), $class);
-            }
-
-            $class = new ReflectionClass($class);
-        }
-
-        $this->class = $class;
-    }
-
-    /**
-     * Tells doubler to implement specific interface with double.
-     *
-     * @param string|ReflectionClass $interface
-     *
-     * @throws \Prophecy\Exception\Doubler\InterfaceNotFoundException
-     * @throws \Prophecy\Exception\Doubler\DoubleException
-     */
-    public function addInterface($interface)
-    {
-        if (null !== $this->double) {
-            throw new DoubleException(
-                'Can not implement interface with already instantiated double.'
-            );
-        }
-
-        if (!$interface instanceof ReflectionClass) {
-            if (!interface_exists($interface)) {
-                throw new InterfaceNotFoundException(
-                    sprintf('Interface %s not found.', $interface),
-                    $interface
-                );
-            }
-
-            $interface = new ReflectionClass($interface);
-        }
-
-        $this->interfaces[] = $interface;
-    }
-
-    /**
-     * Sets constructor arguments.
-     *
-     * @param array $arguments
-     */
-    public function setArguments(array $arguments = null)
-    {
-        $this->arguments = $arguments;
-    }
-
-    /**
-     * Creates double instance or returns already created one.
-     *
-     * @return DoubleInterface
-     */
-    public function getInstance()
-    {
-        if (null === $this->double) {
-            if (null !== $this->arguments) {
-                return $this->double = $this->doubler->double(
-                    $this->class, $this->interfaces, $this->arguments
-                );
-            }
-
-            $this->double = $this->doubler->double($this->class, $this->interfaces);
-        }
-
-        return $this->double;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php
deleted file mode 100644
index d67ec6a..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Doubler;
-
-use ReflectionClass;
-
-/**
- * Name generator.
- * Generates classname for double.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class NameGenerator
-{
-    private static $counter = 1;
-
-    /**
-     * Generates name.
-     *
-     * @param ReflectionClass   $class
-     * @param ReflectionClass[] $interfaces
-     *
-     * @return string
-     */
-    public function name(ReflectionClass $class = null, array $interfaces)
-    {
-        $parts = array();
-
-        if (null !== $class) {
-            $parts[] = $class->getName();
-        } else {
-            foreach ($interfaces as $interface) {
-                $parts[] = $interface->getShortName();
-            }
-        }
-
-        if (!count($parts)) {
-            $parts[] = 'stdClass';
-        }
-
-        return sprintf('Double\%s\P%d', implode('\\', $parts), self::$counter++);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php
deleted file mode 100644
index 48ed225..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Call;
-
-use Prophecy\Exception\Prophecy\ObjectProphecyException;
-use Prophecy\Prophecy\ObjectProphecy;
-
-class UnexpectedCallException extends ObjectProphecyException
-{
-    private $methodName;
-    private $arguments;
-
-    public function __construct($message, ObjectProphecy $objectProphecy,
-                                $methodName, array $arguments)
-    {
-        parent::__construct($message, $objectProphecy);
-
-        $this->methodName = $methodName;
-        $this->arguments = $arguments;
-    }
-
-    public function getMethodName()
-    {
-        return $this->methodName;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php
deleted file mode 100644
index 822918a..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Doubler;
-
-use Prophecy\Doubler\Generator\Node\ClassNode;
-
-class ClassCreatorException extends \RuntimeException implements DoublerException
-{
-    private $node;
-
-    public function __construct($message, ClassNode $node)
-    {
-        parent::__construct($message);
-
-        $this->node = $node;
-    }
-
-    public function getClassNode()
-    {
-        return $this->node;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php
deleted file mode 100644
index 8fc53b8..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Doubler;
-
-use ReflectionClass;
-
-class ClassMirrorException extends \RuntimeException implements DoublerException
-{
-    private $class;
-
-    public function __construct($message, ReflectionClass $class)
-    {
-        parent::__construct($message);
-
-        $this->class = $class;
-    }
-
-    public function getReflectedClass()
-    {
-        return $this->class;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php
deleted file mode 100644
index 5bc826d..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Doubler;
-
-class ClassNotFoundException extends DoubleException
-{
-    private $classname;
-
-    /**
-     * @param string $message
-     * @param string $classname
-     */
-    public function __construct($message, $classname)
-    {
-        parent::__construct($message);
-
-        $this->classname = $classname;
-    }
-
-    public function getClassname()
-    {
-        return $this->classname;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php
deleted file mode 100644
index 6642a58..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Doubler;
-
-use RuntimeException;
-
-class DoubleException extends RuntimeException implements DoublerException
-{
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php
deleted file mode 100644
index 9d6be17..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Doubler;
-
-use Prophecy\Exception\Exception;
-
-interface DoublerException extends Exception
-{
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php
deleted file mode 100644
index e344dea..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Doubler;
-
-class InterfaceNotFoundException extends ClassNotFoundException
-{
-    public function getInterfaceName()
-    {
-        return $this->getClassname();
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php
deleted file mode 100644
index b113941..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Doubler;
-
-class MethodNotFoundException extends DoubleException
-{
-    /**
-     * @var string
-     */
-    private $classname;
-
-    /**
-     * @var string
-     */
-    private $methodName;
-
-    /**
-     * @var array
-     */
-    private $arguments;
-
-    /**
-     * @param string $message
-     * @param string $classname
-     * @param string $methodName
-     * @param null|Argument\ArgumentsWildcard|array $arguments
-     */
-    public function __construct($message, $classname, $methodName, $arguments = null)
-    {
-        parent::__construct($message);
-
-        $this->classname  = $classname;
-        $this->methodName = $methodName;
-        $this->arguments = $arguments;
-    }
-
-    public function getClassname()
-    {
-        return $this->classname;
-    }
-
-    public function getMethodName()
-    {
-        return $this->methodName;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php
deleted file mode 100644
index 6303049..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Doubler;
-
-class ReturnByReferenceException extends DoubleException
-{
-    private $classname;
-    private $methodName;
-
-    /**
-     * @param string $message
-     * @param string $classname
-     * @param string $methodName
-     */
-    public function __construct($message, $classname, $methodName)
-    {
-        parent::__construct($message);
-
-        $this->classname  = $classname;
-        $this->methodName = $methodName;
-    }
-
-    public function getClassname()
-    {
-        return $this->classname;
-    }
-
-    public function getMethodName()
-    {
-        return $this->methodName;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php
deleted file mode 100644
index ac9fe4d..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception;
-
-/**
- * Core Prophecy exception interface.
- * All Prophecy exceptions implement it.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface Exception
-{
-    /**
-     * @return string
-     */
-    public function getMessage();
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php
deleted file mode 100644
index bc91c69..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception;
-
-class InvalidArgumentException extends \InvalidArgumentException implements Exception
-{
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php
deleted file mode 100644
index 44b598a..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Prediction;
-
-use Prophecy\Prophecy\ObjectProphecy;
-
-class AggregateException extends \RuntimeException implements PredictionException
-{
-    private $exceptions = array();
-    private $objectProphecy;
-
-    public function append(PredictionException $exception)
-    {
-        $message = $exception->getMessage();
-        $message = '  '.strtr($message, array("\n" => "\n  "))."\n";
-
-        $this->message      = rtrim($this->message.$message);
-        $this->exceptions[] = $exception;
-    }
-
-    /**
-     * @return PredictionException[]
-     */
-    public function getExceptions()
-    {
-        return $this->exceptions;
-    }
-
-    public function setObjectProphecy(ObjectProphecy $objectProphecy)
-    {
-        $this->objectProphecy = $objectProphecy;
-    }
-
-    /**
-     * @return ObjectProphecy
-     */
-    public function getObjectProphecy()
-    {
-        return $this->objectProphecy;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php
deleted file mode 100644
index bbbbc3d..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Prediction;
-
-use RuntimeException;
-
-/**
- * Basic failed prediction exception.
- * Use it for custom prediction failures.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class FailedPredictionException extends RuntimeException implements PredictionException
-{
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php
deleted file mode 100644
index 05ea4aa..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Prediction;
-
-use Prophecy\Exception\Prophecy\MethodProphecyException;
-
-class NoCallsException extends MethodProphecyException implements PredictionException
-{
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php
deleted file mode 100644
index 2596b1e..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Prediction;
-
-use Prophecy\Exception\Exception;
-
-interface PredictionException extends Exception
-{
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php
deleted file mode 100644
index 9d90543..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Prediction;
-
-use Prophecy\Prophecy\MethodProphecy;
-
-class UnexpectedCallsCountException extends UnexpectedCallsException
-{
-    private $expectedCount;
-
-    public function __construct($message, MethodProphecy $methodProphecy, $count, array $calls)
-    {
-        parent::__construct($message, $methodProphecy, $calls);
-
-        $this->expectedCount = intval($count);
-    }
-
-    public function getExpectedCount()
-    {
-        return $this->expectedCount;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php
deleted file mode 100644
index 7a99c2d..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Prediction;
-
-use Prophecy\Prophecy\MethodProphecy;
-use Prophecy\Exception\Prophecy\MethodProphecyException;
-
-class UnexpectedCallsException extends MethodProphecyException implements PredictionException
-{
-    private $calls = array();
-
-    public function __construct($message, MethodProphecy $methodProphecy, array $calls)
-    {
-        parent::__construct($message, $methodProphecy);
-
-        $this->calls = $calls;
-    }
-
-    public function getCalls()
-    {
-        return $this->calls;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php
deleted file mode 100644
index 1b03eaf..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Prophecy;
-
-use Prophecy\Prophecy\MethodProphecy;
-
-class MethodProphecyException extends ObjectProphecyException
-{
-    private $methodProphecy;
-
-    public function __construct($message, MethodProphecy $methodProphecy)
-    {
-        parent::__construct($message, $methodProphecy->getObjectProphecy());
-
-        $this->methodProphecy = $methodProphecy;
-    }
-
-    /**
-     * @return MethodProphecy
-     */
-    public function getMethodProphecy()
-    {
-        return $this->methodProphecy;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php
deleted file mode 100644
index e345402..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Prophecy;
-
-use Prophecy\Prophecy\ObjectProphecy;
-
-class ObjectProphecyException extends \RuntimeException implements ProphecyException
-{
-    private $objectProphecy;
-
-    public function __construct($message, ObjectProphecy $objectProphecy)
-    {
-        parent::__construct($message);
-
-        $this->objectProphecy = $objectProphecy;
-    }
-
-    /**
-     * @return ObjectProphecy
-     */
-    public function getObjectProphecy()
-    {
-        return $this->objectProphecy;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php
deleted file mode 100644
index 9157332..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Exception\Prophecy;
-
-use Prophecy\Exception\Exception;
-
-interface ProphecyException extends Exception
-{
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php
deleted file mode 100644
index b478736..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prediction;
-
-use Prophecy\Call\Call;
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\MethodProphecy;
-use Prophecy\Argument\ArgumentsWildcard;
-use Prophecy\Argument\Token\AnyValuesToken;
-use Prophecy\Util\StringUtil;
-use Prophecy\Exception\Prediction\NoCallsException;
-
-/**
- * Call prediction.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class CallPrediction implements PredictionInterface
-{
-    private $util;
-
-    /**
-     * Initializes prediction.
-     *
-     * @param StringUtil $util
-     */
-    public function __construct(StringUtil $util = null)
-    {
-        $this->util = $util ?: new StringUtil;
-    }
-
-    /**
-     * Tests that there was at least one call.
-     *
-     * @param Call[]         $calls
-     * @param ObjectProphecy $object
-     * @param MethodProphecy $method
-     *
-     * @throws \Prophecy\Exception\Prediction\NoCallsException
-     */
-    public function check(array $calls, ObjectProphecy $object, MethodProphecy $method)
-    {
-        if (count($calls)) {
-            return;
-        }
-
-        $methodCalls = $object->findProphecyMethodCalls(
-            $method->getMethodName(),
-            new ArgumentsWildcard(array(new AnyValuesToken))
-        );
-
-        if (count($methodCalls)) {
-            throw new NoCallsException(sprintf(
-                "No calls have been made that match:\n".
-                "  %s->%s(%s)\n".
-                "but expected at least one.\n".
-                "Recorded `%s(...)` calls:\n%s",
-
-                get_class($object->reveal()),
-                $method->getMethodName(),
-                $method->getArgumentsWildcard(),
-                $method->getMethodName(),
-                $this->util->stringifyCalls($methodCalls)
-            ), $method);
-        }
-
-        throw new NoCallsException(sprintf(
-            "No calls have been made that match:\n".
-            "  %s->%s(%s)\n".
-            "but expected at least one.",
-
-            get_class($object->reveal()),
-            $method->getMethodName(),
-            $method->getArgumentsWildcard()
-        ), $method);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php
deleted file mode 100644
index 31c6c57..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prediction;
-
-use Prophecy\Call\Call;
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\MethodProphecy;
-use Prophecy\Argument\ArgumentsWildcard;
-use Prophecy\Argument\Token\AnyValuesToken;
-use Prophecy\Util\StringUtil;
-use Prophecy\Exception\Prediction\UnexpectedCallsCountException;
-
-/**
- * Prediction interface.
- * Predictions are logical test blocks, tied to `should...` keyword.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class CallTimesPrediction implements PredictionInterface
-{
-    private $times;
-    private $util;
-
-    /**
-     * Initializes prediction.
-     *
-     * @param int        $times
-     * @param StringUtil $util
-     */
-    public function __construct($times, StringUtil $util = null)
-    {
-        $this->times = intval($times);
-        $this->util  = $util ?: new StringUtil;
-    }
-
-    /**
-     * Tests that there was exact amount of calls made.
-     *
-     * @param Call[]         $calls
-     * @param ObjectProphecy $object
-     * @param MethodProphecy $method
-     *
-     * @throws \Prophecy\Exception\Prediction\UnexpectedCallsCountException
-     */
-    public function check(array $calls, ObjectProphecy $object, MethodProphecy $method)
-    {
-        if ($this->times == count($calls)) {
-            return;
-        }
-
-        $methodCalls = $object->findProphecyMethodCalls(
-            $method->getMethodName(),
-            new ArgumentsWildcard(array(new AnyValuesToken))
-        );
-
-        if (count($calls)) {
-            $message = sprintf(
-                "Expected exactly %d calls that match:\n".
-                "  %s->%s(%s)\n".
-                "but %d were made:\n%s",
-
-                $this->times,
-                get_class($object->reveal()),
-                $method->getMethodName(),
-                $method->getArgumentsWildcard(),
-                count($calls),
-                $this->util->stringifyCalls($calls)
-            );
-        } elseif (count($methodCalls)) {
-            $message = sprintf(
-                "Expected exactly %d calls that match:\n".
-                "  %s->%s(%s)\n".
-                "but none were made.\n".
-                "Recorded `%s(...)` calls:\n%s",
-
-                $this->times,
-                get_class($object->reveal()),
-                $method->getMethodName(),
-                $method->getArgumentsWildcard(),
-                $method->getMethodName(),
-                $this->util->stringifyCalls($methodCalls)
-            );
-        } else {
-            $message = sprintf(
-                "Expected exactly %d calls that match:\n".
-                "  %s->%s(%s)\n".
-                "but none were made.",
-
-                $this->times,
-                get_class($object->reveal()),
-                $method->getMethodName(),
-                $method->getArgumentsWildcard()
-            );
-        }
-
-        throw new UnexpectedCallsCountException($message, $method, $this->times, $calls);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php
deleted file mode 100644
index 44bc782..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prediction;
-
-use Prophecy\Call\Call;
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\MethodProphecy;
-use Prophecy\Exception\InvalidArgumentException;
-use Closure;
-
-/**
- * Callback prediction.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class CallbackPrediction implements PredictionInterface
-{
-    private $callback;
-
-    /**
-     * Initializes callback prediction.
-     *
-     * @param callable $callback Custom callback
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function __construct($callback)
-    {
-        if (!is_callable($callback)) {
-            throw new InvalidArgumentException(sprintf(
-                'Callable expected as an argument to CallbackPrediction, but got %s.',
-                gettype($callback)
-            ));
-        }
-
-        $this->callback = $callback;
-    }
-
-    /**
-     * Executes preset callback.
-     *
-     * @param Call[]         $calls
-     * @param ObjectProphecy $object
-     * @param MethodProphecy $method
-     */
-    public function check(array $calls, ObjectProphecy $object, MethodProphecy $method)
-    {
-        $callback = $this->callback;
-
-        if ($callback instanceof Closure && method_exists('Closure', 'bind')) {
-            $callback = Closure::bind($callback, $object);
-        }
-
-        call_user_func($callback, $calls, $object, $method);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php
deleted file mode 100644
index 46ac5bf..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prediction;
-
-use Prophecy\Call\Call;
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\MethodProphecy;
-use Prophecy\Util\StringUtil;
-use Prophecy\Exception\Prediction\UnexpectedCallsException;
-
-/**
- * No calls prediction.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class NoCallsPrediction implements PredictionInterface
-{
-    private $util;
-
-    /**
-     * Initializes prediction.
-     *
-     * @param null|StringUtil $util
-     */
-    public function __construct(StringUtil $util = null)
-    {
-        $this->util = $util ?: new StringUtil;
-    }
-
-    /**
-     * Tests that there were no calls made.
-     *
-     * @param Call[]         $calls
-     * @param ObjectProphecy $object
-     * @param MethodProphecy $method
-     *
-     * @throws \Prophecy\Exception\Prediction\UnexpectedCallsException
-     */
-    public function check(array $calls, ObjectProphecy $object, MethodProphecy $method)
-    {
-        if (!count($calls)) {
-            return;
-        }
-
-        $verb = count($calls) === 1 ? 'was' : 'were';
-
-        throw new UnexpectedCallsException(sprintf(
-            "No calls expected that match:\n".
-            "  %s->%s(%s)\n".
-            "but %d %s made:\n%s",
-            get_class($object->reveal()),
-            $method->getMethodName(),
-            $method->getArgumentsWildcard(),
-            count($calls),
-            $verb,
-            $this->util->stringifyCalls($calls)
-        ), $method, $calls);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php
deleted file mode 100644
index f7fb06a..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prediction;
-
-use Prophecy\Call\Call;
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\MethodProphecy;
-
-/**
- * Prediction interface.
- * Predictions are logical test blocks, tied to `should...` keyword.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface PredictionInterface
-{
-    /**
-     * Tests that double fulfilled prediction.
-     *
-     * @param Call[]        $calls
-     * @param ObjectProphecy $object
-     * @param MethodProphecy $method
-     *
-     * @throws object
-     * @return void
-     */
-    public function check(array $calls, ObjectProphecy $object, MethodProphecy $method);
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php
deleted file mode 100644
index 5f406bf..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Promise;
-
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\MethodProphecy;
-use Prophecy\Exception\InvalidArgumentException;
-use Closure;
-
-/**
- * Callback promise.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class CallbackPromise implements PromiseInterface
-{
-    private $callback;
-
-    /**
-     * Initializes callback promise.
-     *
-     * @param callable $callback Custom callback
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function __construct($callback)
-    {
-        if (!is_callable($callback)) {
-            throw new InvalidArgumentException(sprintf(
-                'Callable expected as an argument to CallbackPromise, but got %s.',
-                gettype($callback)
-            ));
-        }
-
-        $this->callback = $callback;
-    }
-
-    /**
-     * Evaluates promise callback.
-     *
-     * @param array          $args
-     * @param ObjectProphecy $object
-     * @param MethodProphecy $method
-     *
-     * @return mixed
-     */
-    public function execute(array $args, ObjectProphecy $object, MethodProphecy $method)
-    {
-        $callback = $this->callback;
-
-        if ($callback instanceof Closure && method_exists('Closure', 'bind')) {
-            $callback = Closure::bind($callback, $object);
-        }
-
-        return call_user_func($callback, $args, $object, $method);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php
deleted file mode 100644
index 382537b..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Promise;
-
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\MethodProphecy;
-
-/**
- * Promise interface.
- * Promises are logical blocks, tied to `will...` keyword.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface PromiseInterface
-{
-    /**
-     * Evaluates promise.
-     *
-     * @param array          $args
-     * @param ObjectProphecy $object
-     * @param MethodProphecy $method
-     *
-     * @return mixed
-     */
-    public function execute(array $args, ObjectProphecy $object, MethodProphecy $method);
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php
deleted file mode 100644
index a06724b..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Promise;
-
-use Prophecy\Exception\InvalidArgumentException;
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\MethodProphecy;
-
-/**
- * Return argument promise.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ReturnArgumentPromise implements PromiseInterface
-{
-    /**
-     * @var int
-     */
-    private $index;
-
-    /**
-     * Initializes callback promise.
-     *
-     * @param int $index The zero-indexed number of the argument to return
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function __construct($index = 0)
-    {
-        if (!is_int($index) || $index < 0) {
-            throw new InvalidArgumentException(
-                'Zero-based index expected as argument to ReturnArgumentPromise, but got %s.',
-                $index
-            );
-        }
-        $this->index = $index;
-    }
-
-    /**
-     * Returns nth argument if has one, null otherwise.
-     *
-     * @param array          $args
-     * @param ObjectProphecy $object
-     * @param MethodProphecy $method
-     *
-     * @return null|mixed
-     */
-    public function execute(array $args, ObjectProphecy $object, MethodProphecy $method)
-    {
-        return count($args) > $this->index ? $args[$this->index] : null;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php
deleted file mode 100644
index c7d5ac5..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Promise;
-
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\MethodProphecy;
-
-/**
- * Return promise.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ReturnPromise implements PromiseInterface
-{
-    private $returnValues = array();
-
-    /**
-     * Initializes promise.
-     *
-     * @param array $returnValues Array of values
-     */
-    public function __construct(array $returnValues)
-    {
-        $this->returnValues = $returnValues;
-    }
-
-    /**
-     * Returns saved values one by one until last one, then continuously returns last value.
-     *
-     * @param array          $args
-     * @param ObjectProphecy $object
-     * @param MethodProphecy $method
-     *
-     * @return mixed
-     */
-    public function execute(array $args, ObjectProphecy $object, MethodProphecy $method)
-    {
-        $value = array_shift($this->returnValues);
-
-        if (!count($this->returnValues)) {
-            $this->returnValues[] = $value;
-        }
-
-        return $value;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php
deleted file mode 100644
index 8007330..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Promise;
-
-use Doctrine\Instantiator\Instantiator;
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\MethodProphecy;
-use Prophecy\Exception\InvalidArgumentException;
-use ReflectionClass;
-
-/**
- * Throw promise.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ThrowPromise implements PromiseInterface
-{
-    private $exception;
-
-    /**
-     * @var \Doctrine\Instantiator\Instantiator
-     */
-    private $instantiator;
-
-    /**
-     * Initializes promise.
-     *
-     * @param string|\Exception $exception Exception class name or instance
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function __construct($exception)
-    {
-        if (is_string($exception)) {
-            if (!class_exists($exception)
-             && 'Exception' !== $exception
-             && !is_subclass_of($exception, 'Exception')) {
-                throw new InvalidArgumentException(sprintf(
-                    'Exception class or instance expected as argument to ThrowPromise, but got %s.',
-                    gettype($exception)
-                ));
-            }
-        } elseif (!$exception instanceof \Exception) {
-            throw new InvalidArgumentException(sprintf(
-                'Exception class or instance expected as argument to ThrowPromise, but got %s.',
-                gettype($exception)
-            ));
-        }
-
-        $this->exception = $exception;
-    }
-
-    /**
-     * Throws predefined exception.
-     *
-     * @param array          $args
-     * @param ObjectProphecy $object
-     * @param MethodProphecy $method
-     *
-     * @throws object
-     */
-    public function execute(array $args, ObjectProphecy $object, MethodProphecy $method)
-    {
-        if (is_string($this->exception)) {
-            $classname   = $this->exception;
-            $reflection  = new ReflectionClass($classname);
-            $constructor = $reflection->getConstructor();
-
-            if ($constructor->isPublic() && 0 == $constructor->getNumberOfRequiredParameters()) {
-                throw $reflection->newInstance();
-            }
-
-            if (!$this->instantiator) {
-                $this->instantiator = new Instantiator();
-            }
-
-            throw $this->instantiator->instantiate($classname);
-        }
-
-        throw $this->exception;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php
deleted file mode 100644
index 426df32..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php
+++ /dev/null
@@ -1,437 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prophecy;
-
-use Prophecy\Argument;
-use Prophecy\Prophet;
-use Prophecy\Promise;
-use Prophecy\Prediction;
-use Prophecy\Exception\Doubler\MethodNotFoundException;
-use Prophecy\Exception\InvalidArgumentException;
-use Prophecy\Exception\Prophecy\MethodProphecyException;
-
-/**
- * Method prophecy.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class MethodProphecy
-{
-    private $objectProphecy;
-    private $methodName;
-    private $argumentsWildcard;
-    private $promise;
-    private $prediction;
-    private $checkedPredictions = array();
-    private $bound = false;
-
-    /**
-     * Initializes method prophecy.
-     *
-     * @param ObjectProphecy                        $objectProphecy
-     * @param string                                $methodName
-     * @param null|Argument\ArgumentsWildcard|array $arguments
-     *
-     * @throws \Prophecy\Exception\Doubler\MethodNotFoundException If method not found
-     */
-    public function __construct(ObjectProphecy $objectProphecy, $methodName, $arguments = null)
-    {
-        $double = $objectProphecy->reveal();
-        if (!method_exists($double, $methodName)) {
-            throw new MethodNotFoundException(sprintf(
-                'Method `%s::%s()` is not defined.', get_class($double), $methodName
-            ), get_class($double), $methodName, $arguments);
-        }
-
-        $this->objectProphecy = $objectProphecy;
-        $this->methodName     = $methodName;
-
-        $reflectedMethod = new \ReflectionMethod($double, $methodName);
-        if ($reflectedMethod->isFinal()) {
-            throw new MethodProphecyException(sprintf(
-                "Can not add prophecy for a method `%s::%s()`\n".
-                "as it is a final method.",
-                get_class($double),
-                $methodName
-            ), $this);
-        }
-
-        if (null !== $arguments) {
-            $this->withArguments($arguments);
-        }
-
-        if (version_compare(PHP_VERSION, '7.0', '>=') && true === $reflectedMethod->hasReturnType()) {
-            $type = (string) $reflectedMethod->getReturnType();
-            $this->will(function () use ($type) {
-                switch ($type) {
-                    case 'string': return '';
-                    case 'float':  return 0.0;
-                    case 'int':    return 0;
-                    case 'bool':   return false;
-                    case 'array':  return array();
-
-                    case 'callable':
-                    case 'Closure':
-                        return function () {};
-
-                    case 'Traversable':
-                    case 'Generator':
-                        // Remove eval() when minimum version >=5.5
-                        $generator = eval('return function () { yield; };');
-                        return $generator();
-
-                    default:
-                        $prophet = new Prophet;
-                        return $prophet->prophesize($type)->reveal();
-                }
-            });
-        }
-    }
-
-    /**
-     * Sets argument wildcard.
-     *
-     * @param array|Argument\ArgumentsWildcard $arguments
-     *
-     * @return $this
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function withArguments($arguments)
-    {
-        if (is_array($arguments)) {
-            $arguments = new Argument\ArgumentsWildcard($arguments);
-        }
-
-        if (!$arguments instanceof Argument\ArgumentsWildcard) {
-            throw new InvalidArgumentException(sprintf(
-                "Either an array or an instance of ArgumentsWildcard expected as\n".
-                'a `MethodProphecy::withArguments()` argument, but got %s.',
-                gettype($arguments)
-            ));
-        }
-
-        $this->argumentsWildcard = $arguments;
-
-        return $this;
-    }
-
-    /**
-     * Sets custom promise to the prophecy.
-     *
-     * @param callable|Promise\PromiseInterface $promise
-     *
-     * @return $this
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function will($promise)
-    {
-        if (is_callable($promise)) {
-            $promise = new Promise\CallbackPromise($promise);
-        }
-
-        if (!$promise instanceof Promise\PromiseInterface) {
-            throw new InvalidArgumentException(sprintf(
-                'Expected callable or instance of PromiseInterface, but got %s.',
-                gettype($promise)
-            ));
-        }
-
-        $this->bindToObjectProphecy();
-        $this->promise = $promise;
-
-        return $this;
-    }
-
-    /**
-     * Sets return promise to the prophecy.
-     *
-     * @see Prophecy\Promise\ReturnPromise
-     *
-     * @return $this
-     */
-    public function willReturn()
-    {
-        return $this->will(new Promise\ReturnPromise(func_get_args()));
-    }
-
-    /**
-     * Sets return argument promise to the prophecy.
-     *
-     * @param int $index The zero-indexed number of the argument to return
-     *
-     * @see Prophecy\Promise\ReturnArgumentPromise
-     *
-     * @return $this
-     */
-    public function willReturnArgument($index = 0)
-    {
-        return $this->will(new Promise\ReturnArgumentPromise($index));
-    }
-
-    /**
-     * Sets throw promise to the prophecy.
-     *
-     * @see Prophecy\Promise\ThrowPromise
-     *
-     * @param string|\Exception $exception Exception class or instance
-     *
-     * @return $this
-     */
-    public function willThrow($exception)
-    {
-        return $this->will(new Promise\ThrowPromise($exception));
-    }
-
-    /**
-     * Sets custom prediction to the prophecy.
-     *
-     * @param callable|Prediction\PredictionInterface $prediction
-     *
-     * @return $this
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function should($prediction)
-    {
-        if (is_callable($prediction)) {
-            $prediction = new Prediction\CallbackPrediction($prediction);
-        }
-
-        if (!$prediction instanceof Prediction\PredictionInterface) {
-            throw new InvalidArgumentException(sprintf(
-                'Expected callable or instance of PredictionInterface, but got %s.',
-                gettype($prediction)
-            ));
-        }
-
-        $this->bindToObjectProphecy();
-        $this->prediction = $prediction;
-
-        return $this;
-    }
-
-    /**
-     * Sets call prediction to the prophecy.
-     *
-     * @see Prophecy\Prediction\CallPrediction
-     *
-     * @return $this
-     */
-    public function shouldBeCalled()
-    {
-        return $this->should(new Prediction\CallPrediction);
-    }
-
-    /**
-     * Sets no calls prediction to the prophecy.
-     *
-     * @see Prophecy\Prediction\NoCallsPrediction
-     *
-     * @return $this
-     */
-    public function shouldNotBeCalled()
-    {
-        return $this->should(new Prediction\NoCallsPrediction);
-    }
-
-    /**
-     * Sets call times prediction to the prophecy.
-     *
-     * @see Prophecy\Prediction\CallTimesPrediction
-     *
-     * @param $count
-     *
-     * @return $this
-     */
-    public function shouldBeCalledTimes($count)
-    {
-        return $this->should(new Prediction\CallTimesPrediction($count));
-    }
-
-    /**
-     * Checks provided prediction immediately.
-     *
-     * @param callable|Prediction\PredictionInterface $prediction
-     *
-     * @return $this
-     *
-     * @throws \Prophecy\Exception\InvalidArgumentException
-     */
-    public function shouldHave($prediction)
-    {
-        if (is_callable($prediction)) {
-            $prediction = new Prediction\CallbackPrediction($prediction);
-        }
-
-        if (!$prediction instanceof Prediction\PredictionInterface) {
-            throw new InvalidArgumentException(sprintf(
-                'Expected callable or instance of PredictionInterface, but got %s.',
-                gettype($prediction)
-            ));
-        }
-
-        if (null === $this->promise) {
-            $this->willReturn();
-        }
-
-        $calls = $this->getObjectProphecy()->findProphecyMethodCalls(
-            $this->getMethodName(),
-            $this->getArgumentsWildcard()
-        );
-
-        try {
-            $prediction->check($calls, $this->getObjectProphecy(), $this);
-            $this->checkedPredictions[] = $prediction;
-        } catch (\Exception $e) {
-            $this->checkedPredictions[] = $prediction;
-
-            throw $e;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Checks call prediction.
-     *
-     * @see Prophecy\Prediction\CallPrediction
-     *
-     * @return $this
-     */
-    public function shouldHaveBeenCalled()
-    {
-        return $this->shouldHave(new Prediction\CallPrediction);
-    }
-
-    /**
-     * Checks no calls prediction.
-     *
-     * @see Prophecy\Prediction\NoCallsPrediction
-     *
-     * @return $this
-     */
-    public function shouldNotHaveBeenCalled()
-    {
-        return $this->shouldHave(new Prediction\NoCallsPrediction);
-    }
-
-    /**
-     * Checks no calls prediction.
-     *
-     * @see Prophecy\Prediction\NoCallsPrediction
-     * @deprecated
-     *
-     * @return $this
-     */
-    public function shouldNotBeenCalled()
-    {
-        return $this->shouldNotHaveBeenCalled();
-    }
-
-    /**
-     * Checks call times prediction.
-     *
-     * @see Prophecy\Prediction\CallTimesPrediction
-     *
-     * @param int $count
-     *
-     * @return $this
-     */
-    public function shouldHaveBeenCalledTimes($count)
-    {
-        return $this->shouldHave(new Prediction\CallTimesPrediction($count));
-    }
-
-    /**
-     * Checks currently registered [with should(...)] prediction.
-     */
-    public function checkPrediction()
-    {
-        if (null === $this->prediction) {
-            return;
-        }
-
-        $this->shouldHave($this->prediction);
-    }
-
-    /**
-     * Returns currently registered promise.
-     *
-     * @return null|Promise\PromiseInterface
-     */
-    public function getPromise()
-    {
-        return $this->promise;
-    }
-
-    /**
-     * Returns currently registered prediction.
-     *
-     * @return null|Prediction\PredictionInterface
-     */
-    public function getPrediction()
-    {
-        return $this->prediction;
-    }
-
-    /**
-     * Returns predictions that were checked on this object.
-     *
-     * @return Prediction\PredictionInterface[]
-     */
-    public function getCheckedPredictions()
-    {
-        return $this->checkedPredictions;
-    }
-
-    /**
-     * Returns object prophecy this method prophecy is tied to.
-     *
-     * @return ObjectProphecy
-     */
-    public function getObjectProphecy()
-    {
-        return $this->objectProphecy;
-    }
-
-    /**
-     * Returns method name.
-     *
-     * @return string
-     */
-    public function getMethodName()
-    {
-        return $this->methodName;
-    }
-
-    /**
-     * Returns arguments wildcard.
-     *
-     * @return Argument\ArgumentsWildcard
-     */
-    public function getArgumentsWildcard()
-    {
-        return $this->argumentsWildcard;
-    }
-
-    private function bindToObjectProphecy()
-    {
-        if ($this->bound) {
-            return;
-        }
-
-        $this->getObjectProphecy()->addMethodProphecy($this);
-        $this->bound = true;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php
deleted file mode 100644
index 43dba46..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php
+++ /dev/null
@@ -1,279 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prophecy;
-
-use SebastianBergmann\Comparator\ComparisonFailure;
-use Prophecy\Comparator\Factory as ComparatorFactory;
-use Prophecy\Call\Call;
-use Prophecy\Doubler\LazyDouble;
-use Prophecy\Argument\ArgumentsWildcard;
-use Prophecy\Call\CallCenter;
-use Prophecy\Exception\Prophecy\ObjectProphecyException;
-use Prophecy\Exception\Prophecy\MethodProphecyException;
-use Prophecy\Exception\Prediction\AggregateException;
-use Prophecy\Exception\Prediction\PredictionException;
-
-/**
- * Object prophecy.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ObjectProphecy implements ProphecyInterface
-{
-    private $lazyDouble;
-    private $callCenter;
-    private $revealer;
-    private $comparatorFactory;
-
-    /**
-     * @var MethodProphecy[][]
-     */
-    private $methodProphecies = array();
-
-    /**
-     * Initializes object prophecy.
-     *
-     * @param LazyDouble        $lazyDouble
-     * @param CallCenter        $callCenter
-     * @param RevealerInterface $revealer
-     * @param ComparatorFactory $comparatorFactory
-     */
-    public function __construct(
-        LazyDouble $lazyDouble,
-        CallCenter $callCenter = null,
-        RevealerInterface $revealer = null,
-        ComparatorFactory $comparatorFactory = null
-    ) {
-        $this->lazyDouble = $lazyDouble;
-        $this->callCenter = $callCenter ?: new CallCenter;
-        $this->revealer   = $revealer ?: new Revealer;
-
-        $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance();
-    }
-
-    /**
-     * Forces double to extend specific class.
-     *
-     * @param string $class
-     *
-     * @return $this
-     */
-    public function willExtend($class)
-    {
-        $this->lazyDouble->setParentClass($class);
-
-        return $this;
-    }
-
-    /**
-     * Forces double to implement specific interface.
-     *
-     * @param string $interface
-     *
-     * @return $this
-     */
-    public function willImplement($interface)
-    {
-        $this->lazyDouble->addInterface($interface);
-
-        return $this;
-    }
-
-    /**
-     * Sets constructor arguments.
-     *
-     * @param array $arguments
-     *
-     * @return $this
-     */
-    public function willBeConstructedWith(array $arguments = null)
-    {
-        $this->lazyDouble->setArguments($arguments);
-
-        return $this;
-    }
-
-    /**
-     * Reveals double.
-     *
-     * @return object
-     *
-     * @throws \Prophecy\Exception\Prophecy\ObjectProphecyException If double doesn't implement needed interface
-     */
-    public function reveal()
-    {
-        $double = $this->lazyDouble->getInstance();
-
-        if (null === $double || !$double instanceof ProphecySubjectInterface) {
-            throw new ObjectProphecyException(
-                "Generated double must implement ProphecySubjectInterface, but it does not.\n".
-                'It seems you have wrongly configured doubler without required ClassPatch.',
-                $this
-            );
-        }
-
-        $double->setProphecy($this);
-
-        return $double;
-    }
-
-    /**
-     * Adds method prophecy to object prophecy.
-     *
-     * @param MethodProphecy $methodProphecy
-     *
-     * @throws \Prophecy\Exception\Prophecy\MethodProphecyException If method prophecy doesn't
-     *                                                              have arguments wildcard
-     */
-    public function addMethodProphecy(MethodProphecy $methodProphecy)
-    {
-        $argumentsWildcard = $methodProphecy->getArgumentsWildcard();
-        if (null === $argumentsWildcard) {
-            throw new MethodProphecyException(sprintf(
-                "Can not add prophecy for a method `%s::%s()`\n".
-                "as you did not specify arguments wildcard for it.",
-                get_class($this->reveal()),
-                $methodProphecy->getMethodName()
-            ), $methodProphecy);
-        }
-
-        $methodName = $methodProphecy->getMethodName();
-
-        if (!isset($this->methodProphecies[$methodName])) {
-            $this->methodProphecies[$methodName] = array();
-        }
-
-        $this->methodProphecies[$methodName][] = $methodProphecy;
-    }
-
-    /**
-     * Returns either all or related to single method prophecies.
-     *
-     * @param null|string $methodName
-     *
-     * @return MethodProphecy[]
-     */
-    public function getMethodProphecies($methodName = null)
-    {
-        if (null === $methodName) {
-            return $this->methodProphecies;
-        }
-
-        if (!isset($this->methodProphecies[$methodName])) {
-            return array();
-        }
-
-        return $this->methodProphecies[$methodName];
-    }
-
-    /**
-     * Makes specific method call.
-     *
-     * @param string $methodName
-     * @param array  $arguments
-     *
-     * @return mixed
-     */
-    public function makeProphecyMethodCall($methodName, array $arguments)
-    {
-        $arguments = $this->revealer->reveal($arguments);
-        $return    = $this->callCenter->makeCall($this, $methodName, $arguments);
-
-        return $this->revealer->reveal($return);
-    }
-
-    /**
-     * Finds calls by method name & arguments wildcard.
-     *
-     * @param string            $methodName
-     * @param ArgumentsWildcard $wildcard
-     *
-     * @return Call[]
-     */
-    public function findProphecyMethodCalls($methodName, ArgumentsWildcard $wildcard)
-    {
-        return $this->callCenter->findCalls($methodName, $wildcard);
-    }
-
-    /**
-     * Checks that registered method predictions do not fail.
-     *
-     * @throws \Prophecy\Exception\Prediction\AggregateException If any of registered predictions fail
-     */
-    public function checkProphecyMethodsPredictions()
-    {
-        $exception = new AggregateException(sprintf("%s:\n", get_class($this->reveal())));
-        $exception->setObjectProphecy($this);
-
-        foreach ($this->methodProphecies as $prophecies) {
-            foreach ($prophecies as $prophecy) {
-                try {
-                    $prophecy->checkPrediction();
-                } catch (PredictionException $e) {
-                    $exception->append($e);
-                }
-            }
-        }
-
-        if (count($exception->getExceptions())) {
-            throw $exception;
-        }
-    }
-
-    /**
-     * Creates new method prophecy using specified method name and arguments.
-     *
-     * @param string $methodName
-     * @param array  $arguments
-     *
-     * @return MethodProphecy
-     */
-    public function __call($methodName, array $arguments)
-    {
-        $arguments = new ArgumentsWildcard($this->revealer->reveal($arguments));
-
-        foreach ($this->getMethodProphecies($methodName) as $prophecy) {
-            $argumentsWildcard = $prophecy->getArgumentsWildcard();
-            $comparator = $this->comparatorFactory->getComparatorFor(
-                $argumentsWildcard, $arguments
-            );
-
-            try {
-                $comparator->assertEquals($argumentsWildcard, $arguments);
-                return $prophecy;
-            } catch (ComparisonFailure $failure) {}
-        }
-
-        return new MethodProphecy($this, $methodName, $arguments);
-    }
-
-    /**
-     * Tries to get property value from double.
-     *
-     * @param string $name
-     */
-    public function __get($name)
-    {
-        return $this->reveal()->$name;
-    }
-
-    /**
-     * Tries to set property value to double.
-     *
-     * @param string $name
-     * @param string $value
-     */
-    public function __set($name, $value)
-    {
-        $this->reveal()->$name = $this->revealer->reveal($value);
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php
deleted file mode 100644
index 462f15a..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prophecy;
-
-/**
- * Core Prophecy interface.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface ProphecyInterface
-{
-    /**
-     * Reveals prophecy object (double) .
-     *
-     * @return object
-     */
-    public function reveal();
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php
deleted file mode 100644
index 2d83958..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prophecy;
-
-/**
- * Controllable doubles interface.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface ProphecySubjectInterface
-{
-    /**
-     * Sets subject prophecy.
-     *
-     * @param ProphecyInterface $prophecy
-     */
-    public function setProphecy(ProphecyInterface $prophecy);
-
-    /**
-     * Returns subject prophecy.
-     *
-     * @return ProphecyInterface
-     */
-    public function getProphecy();
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php
deleted file mode 100644
index 60ecdac..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prophecy;
-
-/**
- * Basic prophecies revealer.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class Revealer implements RevealerInterface
-{
-    /**
-     * Unwraps value(s).
-     *
-     * @param mixed $value
-     *
-     * @return mixed
-     */
-    public function reveal($value)
-    {
-        if (is_array($value)) {
-            return array_map(array($this, __FUNCTION__), $value);
-        }
-
-        if (!is_object($value)) {
-            return $value;
-        }
-
-        if ($value instanceof ProphecyInterface) {
-            $value = $value->reveal();
-        }
-
-        return $value;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php
deleted file mode 100644
index ffc82bb..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Prophecy;
-
-/**
- * Prophecies revealer interface.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface RevealerInterface
-{
-    /**
-     * Unwraps value(s).
-     *
-     * @param mixed $value
-     *
-     * @return mixed
-     */
-    public function reveal($value);
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophet.php b/vendor/phpspec/prophecy/src/Prophecy/Prophet.php
deleted file mode 100644
index ac64923..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Prophet.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy;
-
-use Prophecy\Doubler\Doubler;
-use Prophecy\Doubler\LazyDouble;
-use Prophecy\Doubler\ClassPatch;
-use Prophecy\Prophecy\ObjectProphecy;
-use Prophecy\Prophecy\RevealerInterface;
-use Prophecy\Prophecy\Revealer;
-use Prophecy\Call\CallCenter;
-use Prophecy\Util\StringUtil;
-use Prophecy\Exception\Prediction\PredictionException;
-use Prophecy\Exception\Prediction\AggregateException;
-
-/**
- * Prophet creates prophecies.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class Prophet
-{
-    private $doubler;
-    private $revealer;
-    private $util;
-
-    /**
-     * @var ObjectProphecy[]
-     */
-    private $prophecies = array();
-
-    /**
-     * Initializes Prophet.
-     *
-     * @param null|Doubler           $doubler
-     * @param null|RevealerInterface $revealer
-     * @param null|StringUtil        $util
-     */
-    public function __construct(Doubler $doubler = null, RevealerInterface $revealer = null,
-                                StringUtil $util = null)
-    {
-        if (null === $doubler) {
-            $doubler = new Doubler;
-            $doubler->registerClassPatch(new ClassPatch\SplFileInfoPatch);
-            $doubler->registerClassPatch(new ClassPatch\TraversablePatch);
-            $doubler->registerClassPatch(new ClassPatch\DisableConstructorPatch);
-            $doubler->registerClassPatch(new ClassPatch\ProphecySubjectPatch);
-            $doubler->registerClassPatch(new ClassPatch\ReflectionClassNewInstancePatch);
-            $doubler->registerClassPatch(new ClassPatch\HhvmExceptionPatch());
-            $doubler->registerClassPatch(new ClassPatch\MagicCallPatch);
-            $doubler->registerClassPatch(new ClassPatch\KeywordPatch);
-        }
-
-        $this->doubler  = $doubler;
-        $this->revealer = $revealer ?: new Revealer;
-        $this->util     = $util ?: new StringUtil;
-    }
-
-    /**
-     * Creates new object prophecy.
-     *
-     * @param null|string $classOrInterface Class or interface name
-     *
-     * @return ObjectProphecy
-     */
-    public function prophesize($classOrInterface = null)
-    {
-        $this->prophecies[] = $prophecy = new ObjectProphecy(
-            new LazyDouble($this->doubler),
-            new CallCenter($this->util),
-            $this->revealer
-        );
-
-        if ($classOrInterface && class_exists($classOrInterface)) {
-            return $prophecy->willExtend($classOrInterface);
-        }
-
-        if ($classOrInterface && interface_exists($classOrInterface)) {
-            return $prophecy->willImplement($classOrInterface);
-        }
-
-        return $prophecy;
-    }
-
-    /**
-     * Returns all created object prophecies.
-     *
-     * @return ObjectProphecy[]
-     */
-    public function getProphecies()
-    {
-        return $this->prophecies;
-    }
-
-    /**
-     * Returns Doubler instance assigned to this Prophet.
-     *
-     * @return Doubler
-     */
-    public function getDoubler()
-    {
-        return $this->doubler;
-    }
-
-    /**
-     * Checks all predictions defined by prophecies of this Prophet.
-     *
-     * @throws Exception\Prediction\AggregateException If any prediction fails
-     */
-    public function checkPredictions()
-    {
-        $exception = new AggregateException("Some predictions failed:\n");
-        foreach ($this->prophecies as $prophecy) {
-            try {
-                $prophecy->checkProphecyMethodsPredictions();
-            } catch (PredictionException $e) {
-                $exception->append($e);
-            }
-        }
-
-        if (count($exception->getExceptions())) {
-            throw $exception;
-        }
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php b/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php
deleted file mode 100644
index 54d3832..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php
+++ /dev/null
@@ -1,185 +0,0 @@
-<?php
-
-namespace Prophecy\Util;
-
-use Prophecy\Prophecy\ProphecyInterface;
-use SplObjectStorage;
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Exporting utility.
- *
- * This class is derived from the PHPUnit testing framework.
- *
- * @author  Sebastiaan Stok <s.stok@rollerscapes.net
- * @author  Sebastian Bergmann <sebastian@phpunit.de>
- * @license http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License>
- */
-class ExportUtil
-{
-    /**
-     * Exports a value into a string.
-     *
-     * The output of this method is similar to the output of print_r(), but
-     * improved in various aspects:
-     *
-     *  - NULL is rendered as "null" (instead of "")
-     *  - true is rendered as "true" (instead of "1")
-     *  - FALSE is rendered as "false" (instead of "")
-     *  - Strings are always quoted with single quotes
-     *  - Carriage returns and newlines are normalized to \n
-     *  - Recursion and repeated rendering is treated properly
-     *
-     * @param  mixed   $value       The value to export
-     * @param  integer $indentation The indentation level of the 2nd+ line
-     *
-     * @return string
-     */
-    public static function export($value, $indentation = 0)
-    {
-        return static::recursiveExport($value, $indentation);
-    }
-
-    /**
-     * Converts an object to an array containing all of its private, protected
-     * and public properties.
-     *
-     * @param  object $object
-     *
-     * @return array
-     */
-    public static function toArray($object)
-    {
-        $array = array();
-
-        foreach ((array) $object as $key => $value) {
-            // properties are transformed to keys in the following way:
-
-            // private   $property => "\0Classname\0property"
-            // protected $property => "\0*\0property"
-            // public    $property => "property"
-
-            if (preg_match('/^\0.+\0(.+)$/', $key, $matches)) {
-                $key = $matches[1];
-            }
-
-            $array[$key] = $value;
-        }
-
-        // Some internal classes like SplObjectStorage don't work with the
-        // above (fast) mechanism nor with reflection
-        // Format the output similarly to print_r() in this case
-        if ($object instanceof SplObjectStorage) {
-            foreach ($object as $key => $value) {
-                $array[spl_object_hash($value)] = array(
-                    'obj' => $value,
-                    'inf' => $object->getInfo(),
-                );
-            }
-        }
-
-        return $array;
-    }
-
-    /**
-     * Recursive implementation of export.
-     *
-     * @param  mixed   $value            The value to export
-     * @param  integer $indentation      The indentation level of the 2nd+ line
-     * @param  array   $processedObjects Contains all objects that were already
-     *                                   rendered
-     *
-     * @return string
-     */
-    protected static function recursiveExport($value, $indentation, &$processedObjects = array())
-    {
-        if ($value === null) {
-            return 'null';
-        }
-
-        if ($value === true) {
-            return 'true';
-        }
-
-        if ($value === false) {
-            return 'false';
-        }
-
-        if (is_string($value)) {
-            // Match for most non printable chars somewhat taking multibyte chars into account
-            if (preg_match('/[^\x09-\x0d\x20-\xff]/', $value)) {
-                return 'Binary String: 0x' . bin2hex($value);
-            }
-
-            return "'" . str_replace(array("\r\n", "\n\r", "\r"), array("\n", "\n", "\n"), $value) . "'";
-        }
-
-        $origValue = $value;
-
-        if (is_object($value)) {
-            if ($value instanceof ProphecyInterface) {
-                return sprintf('%s Object (*Prophecy*)', get_class($value));
-            } elseif (in_array($value, $processedObjects, true)) {
-                return sprintf('%s Object (*RECURSION*)', get_class($value));
-            }
-
-            $processedObjects[] = $value;
-
-            // Convert object to array
-            $value = self::toArray($value);
-        }
-
-        if (is_array($value)) {
-            $whitespace = str_repeat('    ', $indentation);
-
-            // There seems to be no other way to check arrays for recursion
-            // http://www.php.net/manual/en/language.types.array.php#73936
-            preg_match_all('/\n            \[(\w+)\] => Array\s+\*RECURSION\*/', print_r($value, true), $matches);
-            $recursiveKeys = array_unique($matches[1]);
-
-            // Convert to valid array keys
-            // Numeric integer strings are automatically converted to integers
-            // by PHP
-            foreach ($recursiveKeys as $key => $recursiveKey) {
-                if ((string) (integer) $recursiveKey === $recursiveKey) {
-                    $recursiveKeys[$key] = (integer) $recursiveKey;
-                }
-            }
-
-            $content = '';
-
-            foreach ($value as $key => $val) {
-                if (in_array($key, $recursiveKeys, true)) {
-                    $val = 'Array (*RECURSION*)';
-                } else {
-                    $val = self::recursiveExport($val, $indentation + 1, $processedObjects);
-                }
-
-                $content .= $whitespace . '    ' . self::export($key) . ' => ' . $val . "\n";
-            }
-
-            if (strlen($content) > 0) {
-                $content = "\n" . $content . $whitespace;
-            }
-
-            return sprintf(
-                "%s (%s)",
-                is_object($origValue) ? sprintf('%s:%s', get_class($origValue), spl_object_hash($origValue)) . ' Object' : 'Array', $content
-            );
-        }
-
-        if (is_double($value) && (double)(integer) $value === $value) {
-            return $value . '.0';
-        }
-
-        return (string) $value;
-    }
-}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php b/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php
deleted file mode 100644
index bb90156..0000000
--- a/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-/*
- * This file is part of the Prophecy.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *     Marcello Duarte <marcello.duarte@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Prophecy\Util;
-
-use Prophecy\Call\Call;
-
-/**
- * String utility.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class StringUtil
-{
-    /**
-     * Stringifies any provided value.
-     *
-     * @param mixed   $value
-     * @param boolean $exportObject
-     *
-     * @return string
-     */
-    public function stringify($value, $exportObject = true)
-    {
-        if (is_array($value)) {
-            if (range(0, count($value) - 1) === array_keys($value)) {
-                return '['.implode(', ', array_map(array($this, __FUNCTION__), $value)).']';
-            }
-
-            $stringify = array($this, __FUNCTION__);
-
-            return '['.implode(', ', array_map(function ($item, $key) use ($stringify) {
-                return (is_integer($key) ? $key : '"'.$key.'"').
-                    ' => '.call_user_func($stringify, $item);
-            }, $value, array_keys($value))).']';
-        }
-        if (is_resource($value)) {
-            return get_resource_type($value).':'.$value;
-        }
-        if (is_object($value)) {
-            return $exportObject ? ExportUtil::export($value) : sprintf('%s:%s', get_class($value), spl_object_hash($value));
-        }
-        if (true === $value || false === $value) {
-            return $value ? 'true' : 'false';
-        }
-        if (is_string($value)) {
-            $str = sprintf('"%s"', str_replace("\n", '\\n', $value));
-
-            if (50 <= strlen($str)) {
-                return substr($str, 0, 50).'"...';
-            }
-
-            return $str;
-        }
-        if (null === $value) {
-            return 'null';
-        }
-
-        return (string) $value;
-    }
-
-    /**
-     * Stringifies provided array of calls.
-     *
-     * @param Call[] $calls Array of Call instances
-     *
-     * @return string
-     */
-    public function stringifyCalls(array $calls)
-    {
-        $self = $this;
-
-        return implode(PHP_EOL, array_map(function (Call $call) use ($self) {
-            return sprintf('  - %s(%s) @ %s',
-                $call->getMethodName(),
-                implode(', ', array_map(array($self, 'stringify'), $call->getArguments())),
-                str_replace(GETCWD().DIRECTORY_SEPARATOR, '', $call->getCallPlace())
-            );
-        }, $calls));
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/.gitattributes b/vendor/phpunit/php-code-coverage/.gitattributes
deleted file mode 100644
index 461090b..0000000
--- a/vendor/phpunit/php-code-coverage/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.php diff=php
diff --git a/vendor/phpunit/php-code-coverage/.gitignore b/vendor/phpunit/php-code-coverage/.gitignore
deleted file mode 100644
index b386531..0000000
--- a/vendor/phpunit/php-code-coverage/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-build/api
-build/code-browser
-build/coverage
-build/logs
-build/pdepend
-cache.properties
-phpunit.xml
-/vendor
-/composer.lock
-/composer.phar
-/.idea
diff --git a/vendor/phpunit/php-code-coverage/.travis.yml b/vendor/phpunit/php-code-coverage/.travis.yml
deleted file mode 100644
index ad88a08..0000000
--- a/vendor/phpunit/php-code-coverage/.travis.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-language: php
-
-php:
-    - 5.3.3
-    - 5.3
-    - 5.4
-    - 5.5
-    - 5.6
-
-before_script:
-    - COMPOSER_ROOT_VERSION=dev-master composer install --prefer-source
-
-script: vendor/bin/phpunit --configuration ./build/travis-ci.xml
-
-notifications:
-  email: false
-  irc:
-    channels:
-      - "irc.freenode.org#phpunit"
-    use_notice: true
diff --git a/vendor/phpunit/php-code-coverage/CONTRIBUTING.md b/vendor/phpunit/php-code-coverage/CONTRIBUTING.md
deleted file mode 100644
index 40dbc25..0000000
--- a/vendor/phpunit/php-code-coverage/CONTRIBUTING.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Pull Requests for bug fixes should be made against the current release branch (2.0).
-
-Pull Requests for new features should be made against master.
-
-For further notes please refer to [https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md)
diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md b/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md
deleted file mode 100644
index 353b6f6..0000000
--- a/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# Changes in PHP_CodeCoverage 2.2
-
-All notable changes of the PHP_CodeCoverage 2.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
-
-## [2.2.4] - 2015-10-06
-
-### Fixed
-
-* Fixed [#391](https://github.com/sebastianbergmann/php-code-coverage/pull/391): Missing `</abbr>` tag
-
-## [2.2.3] - 2015-09-14
-
-### Fixed
-
-* Fixed [#368](https://github.com/sebastianbergmann/php-code-coverage/pull/368): Blacklists and whitelists are not merged when merging data sets
-* Fixed [#370](https://github.com/sebastianbergmann/php-code-coverage/issues/370): Confusing statistics for source file that declares a class without methods
-* Fixed [#372](https://github.com/sebastianbergmann/php-code-coverage/pull/372): Nested classes and functions are not handled correctly
-* Fixed [#382](https://github.com/sebastianbergmann/php-code-coverage/issues/382): Crap4J report generates incorrect XML logfile
-
-## [2.2.2] - 2015-08-04
-
-### Added
-
-* Reintroduced the `PHP_CodeCoverage_Driver_HHVM` driver as an extension of `PHP_CodeCoverage_Driver_Xdebug` that does not use `xdebug_start_code_coverage()` with options not supported by HHVM
-
-### Changed
-
-* Bumped required version of `sebastian/environment` to 1.3.2 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365)
-
-## [2.2.1] - 2015-08-02
-
-### Changed
-
-* Bumped required version of `sebastian/environment` to 1.3.1 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365)
-
-## [2.2.0] - 2015-08-01
-
-### Added
-
-* Added a driver for PHPDBG (requires PHP 7)
-* Added `PHP_CodeCoverage::setDisableIgnoredLines()` to disable the ignoring of lines using annotations such as `@codeCoverageIgnore`
-
-### Changed
-
-* Annotating a method with `@deprecated` now has the same effect as annotating it with `@codeCoverageIgnore`
-
-### Removed
-
-* The dedicated driver for HHVM, `PHP_CodeCoverage_Driver_HHVM` has been removed
-
-[2.2.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.3...2.2.4
-[2.2.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.2...2.2.3
-[2.2.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.1...2.2.2
-[2.2.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.0...2.2.1
-[2.2.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.1...2.2.0
-
diff --git a/vendor/phpunit/php-code-coverage/LICENSE b/vendor/phpunit/php-code-coverage/LICENSE
deleted file mode 100644
index fcfa37e..0000000
--- a/vendor/phpunit/php-code-coverage/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-PHP_CodeCoverage
-
-Copyright (c) 2009-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-code-coverage/README.md b/vendor/phpunit/php-code-coverage/README.md
deleted file mode 100644
index 4411d7f..0000000
--- a/vendor/phpunit/php-code-coverage/README.md
+++ /dev/null
@@ -1,50 +0,0 @@
-[![Latest Stable Version](https://poser.pugx.org/phpunit/php-code-coverage/v/stable.png)](https://packagist.org/packages/phpunit/php-code-coverage)
-[![Build Status](https://travis-ci.org/sebastianbergmann/php-code-coverage.svg?branch=master)](https://travis-ci.org/sebastianbergmann/php-code-coverage)
-
-# PHP_CodeCoverage
-
-**PHP_CodeCoverage** is a library that provides collection, processing, and rendering functionality for PHP code coverage information.
-
-## Requirements
-
-PHP 5.3.3 is required but using the latest version of PHP is highly recommended
-
-### PHP 5
-
-[Xdebug](http://xdebug.org/) is the only source of raw code coverage data supported for PHP 5. Version 2.1.3 of Xdebug is required but using the latest version is highly recommended.
-
-### PHP 7
-
-[phpdbg](http://phpdbg.com/docs) is currently the only source of raw code coverage data supported for PHP 7. Once Xdebug has been updated for PHP 7 it, too, will be supported.
-
-### HHVM
-
-A version of HHVM that implements the Xdebug API for code coverage (`xdebug_*_code_coverage()`) is required.
-
-## Installation
-
-To add PHP_CodeCoverage as a local, per-project dependency to your project, simply add a dependency on `phpunit/php-code-coverage` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on PHP_CodeCoverage 2.0:
-
-    {
-        "require": {
-            "phpunit/php-code-coverage": "^2"
-        }
-    }
-
-## Using the PHP_CodeCoverage API
-
-```php
-<?php
-$coverage = new PHP_CodeCoverage;
-$coverage->start('<name of test>');
-
-// ...
-
-$coverage->stop();
-
-$writer = new PHP_CodeCoverage_Report_Clover;
-$writer->process($coverage, '/tmp/clover.xml');
-
-$writer = new PHP_CodeCoverage_Report_HTML;
-$writer->process($coverage, '/tmp/code-coverage-report');
-```
diff --git a/vendor/phpunit/php-code-coverage/build.xml b/vendor/phpunit/php-code-coverage/build.xml
deleted file mode 100644
index c335d15..0000000
--- a/vendor/phpunit/php-code-coverage/build.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="PHP_CodeCoverage">
- <target name="clean" description="Cleanup build artifacts">
-  <delete dir="${basedir}/vendor"/>
-  <delete file="${basedir}/composer.lock"/>
-
-  <delete>
-   <fileset dir="${basedir}/build">
-    <include name="**/*.phar" />
-   </fileset>
-  </delete>
- </target>
-
- <target name="composer" depends="clean" description="Install dependencies with Composer">
-  <tstamp>
-   <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/>
-  </tstamp>
-  <delete>
-   <fileset dir="${basedir}">
-    <include name="composer.phar" />
-    <date datetime="${thirty.days.ago}" when="before"/>
-   </fileset>
-  </delete>
-
-  <get src="https://getcomposer.org/composer.phar" dest="${basedir}/composer.phar" skipexisting="true"/>
-
-  <exec executable="php">
-   <arg value="composer.phar"/>
-   <arg value="install"/>
-  </exec>
- </target>
-
- <target name="phpcs" description="Find coding standard violations using PHP_CodeSniffer">
-  <exec executable="phpcs">
-   <arg value="--standard=PSR2" />
-   <arg value="--extensions=php" />
-   <arg path="${basedir}/src" />
-   <arg path="${basedir}/tests" />
-  </exec>
- </target>
-</project>
diff --git a/vendor/phpunit/php-code-coverage/build/travis-ci.xml b/vendor/phpunit/php-code-coverage/build/travis-ci.xml
deleted file mode 100644
index 15e879fa..0000000
--- a/vendor/phpunit/php-code-coverage/build/travis-ci.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         colors="true">
-  <testsuites>
-    <testsuite name="PHP_CodeCoverage">
-      <directory suffix="Test.php">../tests/PHP</directory>
-    </testsuite>
-  </testsuites>
-
-  <logging>
-    <log type="coverage-text" target="php://stdout"/>
-  </logging>
-
-  <filter>
-    <whitelist addUncoveredFilesFromWhitelist="true">
-      <directory suffix=".php">../src</directory>
-    </whitelist>
-  </filter>
-</phpunit>
diff --git a/vendor/phpunit/php-code-coverage/composer.json b/vendor/phpunit/php-code-coverage/composer.json
deleted file mode 100644
index 55f9fd0..0000000
--- a/vendor/phpunit/php-code-coverage/composer.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-    "name": "phpunit/php-code-coverage",
-    "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
-    "type": "library",
-    "keywords": [
-        "coverage",
-        "testing",
-        "xunit"
-    ],
-    "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sb@sebastian-bergmann.de",
-            "role": "lead"
-        }
-    ],
-    "support": {
-        "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
-        "irc": "irc://irc.freenode.net/phpunit"
-    },
-    "require": {
-        "php": ">=5.3.3",
-        "phpunit/php-file-iterator": "~1.3",
-        "phpunit/php-token-stream": "~1.3",
-        "phpunit/php-text-template": "~1.2",
-        "sebastian/environment": "^1.3.2",
-        "sebastian/version": "~1.0"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4",
-        "ext-xdebug": ">=2.1.4"
-    },
-    "suggest": {
-        "ext-dom": "*",
-        "ext-xdebug": ">=2.2.1",
-        "ext-xmlwriter": "*"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.2.x-dev"
-        }
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/phpunit.xml.dist b/vendor/phpunit/php-code-coverage/phpunit.xml.dist
deleted file mode 100644
index f5fa606..0000000
--- a/vendor/phpunit/php-code-coverage/phpunit.xml.dist
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         bootstrap="vendor/autoload.php">
-  <testsuites>
-    <testsuite name="PHP_CodeCoverage">
-      <directory suffix="Test.php">tests/PHP</directory>
-    </testsuite>
-  </testsuites>
-
-  <logging>
-    <log type="coverage-html" target="build/coverage"/>
-    <log type="coverage-clover" target="build/logs/clover.xml"/>
-    <log type="junit" target="build/logs/junit.xml" logIncompleteSkipped="false"/>
-  </logging>
-
-  <filter>
-    <whitelist addUncoveredFilesFromWhitelist="true">
-      <directory suffix=".php">src</directory>
-    </whitelist>
-  </filter>
-</phpunit>
-
diff --git a/vendor/phpunit/php-code-coverage/scripts/auto_append.php b/vendor/phpunit/php-code-coverage/scripts/auto_append.php
deleted file mode 100644
index 6cd768d..0000000
--- a/vendor/phpunit/php-code-coverage/scripts/auto_append.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-$coverage->stop();
-
-$writer = new PHP_CodeCoverage_Report_HTML;
-$writer->process($coverage, '/tmp/coverage');
diff --git a/vendor/phpunit/php-code-coverage/scripts/auto_prepend.php b/vendor/phpunit/php-code-coverage/scripts/auto_prepend.php
deleted file mode 100644
index 7a8887a..0000000
--- a/vendor/phpunit/php-code-coverage/scripts/auto_prepend.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-require_once 'PHP/CodeCoverage/Autoload.php';
-
-$coverage = new PHP_CodeCoverage;
-$filter   = $coverage->filter();
-
-$filter->addFileToBlacklist(__FILE__);
-$filter->addFileToBlacklist(dirname(__FILE__) . '/auto_append.php');
-
-$coverage->start($_SERVER['SCRIPT_FILENAME']);
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage.php
deleted file mode 100644
index 88326f0..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage.php
+++ /dev/null
@@ -1,920 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-use SebastianBergmann\Environment\Runtime;
-
-/**
- * Provides collection functionality for PHP code coverage information.
- *
- * @since Class available since Release 1.0.0
- */
-class PHP_CodeCoverage
-{
-    /**
-     * @var PHP_CodeCoverage_Driver
-     */
-    private $driver;
-
-    /**
-     * @var PHP_CodeCoverage_Filter
-     */
-    private $filter;
-
-    /**
-     * @var bool
-     */
-    private $cacheTokens = false;
-
-    /**
-     * @var bool
-     */
-    private $checkForUnintentionallyCoveredCode = false;
-
-    /**
-     * @var bool
-     */
-    private $forceCoversAnnotation = false;
-
-    /**
-     * @var bool
-     */
-    private $mapTestClassNameToCoveredClassName = false;
-
-    /**
-     * @var bool
-     */
-    private $addUncoveredFilesFromWhitelist = true;
-
-    /**
-     * @var bool
-     */
-    private $processUncoveredFilesFromWhitelist = false;
-
-    /**
-     * @var mixed
-     */
-    private $currentId;
-
-    /**
-     * Code coverage data.
-     *
-     * @var array
-     */
-    private $data = array();
-
-    /**
-     * @var array
-     */
-    private $ignoredLines = array();
-
-    /**
-     * @var bool
-     */
-    private $disableIgnoredLines = false;
-
-    /**
-     * Test data.
-     *
-     * @var array
-     */
-    private $tests = array();
-
-    /**
-     * Constructor.
-     *
-     * @param  PHP_CodeCoverage_Driver    $driver
-     * @param  PHP_CodeCoverage_Filter    $filter
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function __construct(PHP_CodeCoverage_Driver $driver = null, PHP_CodeCoverage_Filter $filter = null)
-    {
-        if ($driver === null) {
-            $driver = $this->selectDriver();
-        }
-
-        if ($filter === null) {
-            $filter = new PHP_CodeCoverage_Filter;
-        }
-
-        $this->driver = $driver;
-        $this->filter = $filter;
-    }
-
-    /**
-     * Returns the PHP_CodeCoverage_Report_Node_* object graph
-     * for this PHP_CodeCoverage object.
-     *
-     * @return PHP_CodeCoverage_Report_Node_Directory
-     * @since  Method available since Release 1.1.0
-     */
-    public function getReport()
-    {
-        $factory = new PHP_CodeCoverage_Report_Factory;
-
-        return $factory->create($this);
-    }
-
-    /**
-     * Clears collected code coverage data.
-     */
-    public function clear()
-    {
-        $this->currentId = null;
-        $this->data      = array();
-        $this->tests     = array();
-    }
-
-    /**
-     * Returns the PHP_CodeCoverage_Filter used.
-     *
-     * @return PHP_CodeCoverage_Filter
-     */
-    public function filter()
-    {
-        return $this->filter;
-    }
-
-    /**
-     * Returns the collected code coverage data.
-     * Set $raw = true to bypass all filters.
-     *
-     * @param  bool  $raw
-     * @return array
-     * @since  Method available since Release 1.1.0
-     */
-    public function getData($raw = false)
-    {
-        if (!$raw && $this->addUncoveredFilesFromWhitelist) {
-            $this->addUncoveredFilesFromWhitelist();
-        }
-
-        // We need to apply the blacklist filter a second time
-        // when no whitelist is used.
-        if (!$raw && !$this->filter->hasWhitelist()) {
-            $this->applyListsFilter($this->data);
-        }
-
-        return $this->data;
-    }
-
-    /**
-     * Sets the coverage data.
-     *
-     * @param array $data
-     * @since Method available since Release 2.0.0
-     */
-    public function setData(array $data)
-    {
-        $this->data = $data;
-    }
-
-    /**
-     * Returns the test data.
-     *
-     * @return array
-     * @since  Method available since Release 1.1.0
-     */
-    public function getTests()
-    {
-        return $this->tests;
-    }
-
-    /**
-     * Sets the test data.
-     *
-     * @param array $tests
-     * @since Method available since Release 2.0.0
-     */
-    public function setTests(array $tests)
-    {
-        $this->tests = $tests;
-    }
-
-    /**
-     * Start collection of code coverage information.
-     *
-     * @param  mixed                      $id
-     * @param  bool                       $clear
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function start($id, $clear = false)
-    {
-        if (!is_bool($clear)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'boolean'
-            );
-        }
-
-        if ($clear) {
-            $this->clear();
-        }
-
-        $this->currentId = $id;
-
-        $this->driver->start();
-    }
-
-    /**
-     * Stop collection of code coverage information.
-     *
-     * @param  bool                       $append
-     * @param  mixed                      $linesToBeCovered
-     * @param  array                      $linesToBeUsed
-     * @return array
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function stop($append = true, $linesToBeCovered = array(), array $linesToBeUsed = array())
-    {
-        if (!is_bool($append)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'boolean'
-            );
-        }
-
-        if (!is_array($linesToBeCovered) && $linesToBeCovered !== false) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                2,
-                'array or false'
-            );
-        }
-
-        $data = $this->driver->stop();
-        $this->append($data, null, $append, $linesToBeCovered, $linesToBeUsed);
-
-        $this->currentId = null;
-
-        return $data;
-    }
-
-    /**
-     * Appends code coverage data.
-     *
-     * @param  array                      $data
-     * @param  mixed                      $id
-     * @param  bool                       $append
-     * @param  mixed                      $linesToBeCovered
-     * @param  array                      $linesToBeUsed
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function append(array $data, $id = null, $append = true, $linesToBeCovered = array(), array $linesToBeUsed = array())
-    {
-        if ($id === null) {
-            $id = $this->currentId;
-        }
-
-        if ($id === null) {
-            throw new PHP_CodeCoverage_Exception;
-        }
-
-        $this->applyListsFilter($data);
-        $this->applyIgnoredLinesFilter($data);
-        $this->initializeFilesThatAreSeenTheFirstTime($data);
-
-        if (!$append) {
-            return;
-        }
-
-        if ($id != 'UNCOVERED_FILES_FROM_WHITELIST') {
-            $this->applyCoversAnnotationFilter(
-                $data,
-                $linesToBeCovered,
-                $linesToBeUsed
-            );
-        }
-
-        if (empty($data)) {
-            return;
-        }
-
-        $size   = 'unknown';
-        $status = null;
-
-        if ($id instanceof PHPUnit_Framework_TestCase) {
-            $_size = $id->getSize();
-
-            if ($_size == PHPUnit_Util_Test::SMALL) {
-                $size = 'small';
-            } elseif ($_size == PHPUnit_Util_Test::MEDIUM) {
-                $size = 'medium';
-            } elseif ($_size == PHPUnit_Util_Test::LARGE) {
-                $size = 'large';
-            }
-
-            $status = $id->getStatus();
-            $id     = get_class($id) . '::' . $id->getName();
-        } elseif ($id instanceof PHPUnit_Extensions_PhptTestCase) {
-            $size = 'large';
-            $id   = $id->getName();
-        }
-
-        $this->tests[$id] = array('size' => $size, 'status' => $status);
-
-        foreach ($data as $file => $lines) {
-            if (!$this->filter->isFile($file)) {
-                continue;
-            }
-
-            foreach ($lines as $k => $v) {
-                if ($v == PHP_CodeCoverage_Driver::LINE_EXECUTED) {
-                    if (empty($this->data[$file][$k]) || !in_array($id, $this->data[$file][$k])) {
-                        $this->data[$file][$k][] = $id;
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Merges the data from another instance of PHP_CodeCoverage.
-     *
-     * @param PHP_CodeCoverage $that
-     */
-    public function merge(PHP_CodeCoverage $that)
-    {
-        $this->filter->setBlacklistedFiles(
-            array_merge($this->filter->getBlacklistedFiles(), $that->filter()->getBlacklistedFiles())
-        );
-
-        $this->filter->setWhitelistedFiles(
-            array_merge($this->filter->getWhitelistedFiles(), $that->filter()->getWhitelistedFiles())
-        );
-
-        foreach ($that->data as $file => $lines) {
-            if (!isset($this->data[$file])) {
-                if (!$this->filter->isFiltered($file)) {
-                    $this->data[$file] = $lines;
-                }
-
-                continue;
-            }
-
-            foreach ($lines as $line => $data) {
-                if ($data !== null) {
-                    if (!isset($this->data[$file][$line])) {
-                        $this->data[$file][$line] = $data;
-                    } else {
-                        $this->data[$file][$line] = array_unique(
-                            array_merge($this->data[$file][$line], $data)
-                        );
-                    }
-                }
-            }
-        }
-
-        $this->tests = array_merge($this->tests, $that->getTests());
-
-    }
-
-    /**
-     * @param  bool                       $flag
-     * @throws PHP_CodeCoverage_Exception
-     * @since  Method available since Release 1.1.0
-     */
-    public function setCacheTokens($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'boolean'
-            );
-        }
-
-        $this->cacheTokens = $flag;
-    }
-
-    /**
-     * @since Method available since Release 1.1.0
-     */
-    public function getCacheTokens()
-    {
-        return $this->cacheTokens;
-    }
-
-    /**
-     * @param  bool                       $flag
-     * @throws PHP_CodeCoverage_Exception
-     * @since  Method available since Release 2.0.0
-     */
-    public function setCheckForUnintentionallyCoveredCode($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'boolean'
-            );
-        }
-
-        $this->checkForUnintentionallyCoveredCode = $flag;
-    }
-
-    /**
-     * @param  bool                       $flag
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function setForceCoversAnnotation($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'boolean'
-            );
-        }
-
-        $this->forceCoversAnnotation = $flag;
-    }
-
-    /**
-     * @param  bool                       $flag
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function setMapTestClassNameToCoveredClassName($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'boolean'
-            );
-        }
-
-        $this->mapTestClassNameToCoveredClassName = $flag;
-    }
-
-    /**
-     * @param  bool                       $flag
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function setAddUncoveredFilesFromWhitelist($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'boolean'
-            );
-        }
-
-        $this->addUncoveredFilesFromWhitelist = $flag;
-    }
-
-    /**
-     * @param  bool                       $flag
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function setProcessUncoveredFilesFromWhitelist($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'boolean'
-            );
-        }
-
-        $this->processUncoveredFilesFromWhitelist = $flag;
-    }
-
-    /**
-     * @param  bool                       $flag
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function setDisableIgnoredLines($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'boolean'
-            );
-        }
-
-        $this->disableIgnoredLines = $flag;
-    }
-
-    /**
-     * Applies the @covers annotation filtering.
-     *
-     * @param  array                                                 $data
-     * @param  mixed                                                 $linesToBeCovered
-     * @param  array                                                 $linesToBeUsed
-     * @throws PHP_CodeCoverage_Exception_UnintentionallyCoveredCode
-     */
-    private function applyCoversAnnotationFilter(array &$data, $linesToBeCovered, array $linesToBeUsed)
-    {
-        if ($linesToBeCovered === false ||
-            ($this->forceCoversAnnotation && empty($linesToBeCovered))) {
-            $data = array();
-
-            return;
-        }
-
-        if (empty($linesToBeCovered)) {
-            return;
-        }
-
-        if ($this->checkForUnintentionallyCoveredCode) {
-            $this->performUnintentionallyCoveredCodeCheck(
-                $data,
-                $linesToBeCovered,
-                $linesToBeUsed
-            );
-        }
-
-        $data = array_intersect_key($data, $linesToBeCovered);
-
-        foreach (array_keys($data) as $filename) {
-            $_linesToBeCovered = array_flip($linesToBeCovered[$filename]);
-
-            $data[$filename] = array_intersect_key(
-                $data[$filename],
-                $_linesToBeCovered
-            );
-        }
-    }
-
-    /**
-     * Applies the blacklist/whitelist filtering.
-     *
-     * @param array $data
-     */
-    private function applyListsFilter(array &$data)
-    {
-        foreach (array_keys($data) as $filename) {
-            if ($this->filter->isFiltered($filename)) {
-                unset($data[$filename]);
-            }
-        }
-    }
-
-    /**
-     * Applies the "ignored lines" filtering.
-     *
-     * @param array $data
-     */
-    private function applyIgnoredLinesFilter(array &$data)
-    {
-        foreach (array_keys($data) as $filename) {
-            if (!$this->filter->isFile($filename)) {
-                continue;
-            }
-
-            foreach ($this->getLinesToBeIgnored($filename) as $line) {
-                unset($data[$filename][$line]);
-            }
-        }
-    }
-
-    /**
-     * @param array $data
-     * @since Method available since Release 1.1.0
-     */
-    private function initializeFilesThatAreSeenTheFirstTime(array $data)
-    {
-        foreach ($data as $file => $lines) {
-            if ($this->filter->isFile($file) && !isset($this->data[$file])) {
-                $this->data[$file] = array();
-
-                foreach ($lines as $k => $v) {
-                    $this->data[$file][$k] = $v == -2 ? null : array();
-                }
-            }
-        }
-    }
-
-    /**
-     * Processes whitelisted files that are not covered.
-     */
-    private function addUncoveredFilesFromWhitelist()
-    {
-        $data           = array();
-        $uncoveredFiles = array_diff(
-            $this->filter->getWhitelist(),
-            array_keys($this->data)
-        );
-
-        foreach ($uncoveredFiles as $uncoveredFile) {
-            if (!file_exists($uncoveredFile)) {
-                continue;
-            }
-
-            if ($this->processUncoveredFilesFromWhitelist) {
-                $this->processUncoveredFileFromWhitelist(
-                    $uncoveredFile,
-                    $data,
-                    $uncoveredFiles
-                );
-            } else {
-                $data[$uncoveredFile] = array();
-
-                $lines = count(file($uncoveredFile));
-
-                for ($i = 1; $i <= $lines; $i++) {
-                    $data[$uncoveredFile][$i] = PHP_CodeCoverage_Driver::LINE_NOT_EXECUTED;
-                }
-            }
-        }
-
-        $this->append($data, 'UNCOVERED_FILES_FROM_WHITELIST');
-    }
-
-    /**
-     * @param string $uncoveredFile
-     * @param array  $data
-     * @param array  $uncoveredFiles
-     */
-    private function processUncoveredFileFromWhitelist($uncoveredFile, array &$data, array $uncoveredFiles)
-    {
-        $this->driver->start();
-        include_once $uncoveredFile;
-        $coverage = $this->driver->stop();
-
-        foreach ($coverage as $file => $fileCoverage) {
-            if (!isset($data[$file]) &&
-                in_array($file, $uncoveredFiles)) {
-                foreach (array_keys($fileCoverage) as $key) {
-                    if ($fileCoverage[$key] == PHP_CodeCoverage_Driver::LINE_EXECUTED) {
-                        $fileCoverage[$key] = PHP_CodeCoverage_Driver::LINE_NOT_EXECUTED;
-                    }
-                }
-
-                $data[$file] = $fileCoverage;
-            }
-        }
-    }
-
-    /**
-     * Returns the lines of a source file that should be ignored.
-     *
-     * @param  string                     $filename
-     * @return array
-     * @throws PHP_CodeCoverage_Exception
-     * @since  Method available since Release 2.0.0
-     */
-    private function getLinesToBeIgnored($filename)
-    {
-        if (!is_string($filename)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'string'
-            );
-        }
-
-        if (!isset($this->ignoredLines[$filename])) {
-            $this->ignoredLines[$filename] = array();
-
-            if ($this->disableIgnoredLines) {
-                return $this->ignoredLines[$filename];
-            }
-
-            $ignore   = false;
-            $stop     = false;
-            $lines    = file($filename);
-            $numLines = count($lines);
-
-            foreach ($lines as $index => $line) {
-                if (!trim($line)) {
-                    $this->ignoredLines[$filename][] = $index + 1;
-                }
-            }
-
-            if ($this->cacheTokens) {
-                $tokens = PHP_Token_Stream_CachingFactory::get($filename);
-            } else {
-                $tokens = new PHP_Token_Stream($filename);
-            }
-
-            $classes = array_merge($tokens->getClasses(), $tokens->getTraits());
-            $tokens  = $tokens->tokens();
-
-            foreach ($tokens as $token) {
-                switch (get_class($token)) {
-                    case 'PHP_Token_COMMENT':
-                    case 'PHP_Token_DOC_COMMENT':
-                        $_token = trim($token);
-                        $_line  = trim($lines[$token->getLine() - 1]);
-
-                        if ($_token == '// @codeCoverageIgnore' ||
-                            $_token == '//@codeCoverageIgnore') {
-                            $ignore = true;
-                            $stop   = true;
-                        } elseif ($_token == '// @codeCoverageIgnoreStart' ||
-                            $_token == '//@codeCoverageIgnoreStart') {
-                            $ignore = true;
-                        } elseif ($_token == '// @codeCoverageIgnoreEnd' ||
-                            $_token == '//@codeCoverageIgnoreEnd') {
-                            $stop = true;
-                        }
-
-                        if (!$ignore) {
-                            $start = $token->getLine();
-                            $end   = $start + substr_count($token, "\n");
-
-                            // Do not ignore the first line when there is a token
-                            // before the comment
-                            if (0 !== strpos($_token, $_line)) {
-                                $start++;
-                            }
-
-                            for ($i = $start; $i < $end; $i++) {
-                                $this->ignoredLines[$filename][] = $i;
-                            }
-
-                            // A DOC_COMMENT token or a COMMENT token starting with "/*"
-                            // does not contain the final \n character in its text
-                            if (isset($lines[$i-1]) && 0 === strpos($_token, '/*') && '*/' === substr(trim($lines[$i-1]), -2)) {
-                                $this->ignoredLines[$filename][] = $i;
-                            }
-                        }
-                        break;
-
-                    case 'PHP_Token_INTERFACE':
-                    case 'PHP_Token_TRAIT':
-                    case 'PHP_Token_CLASS':
-                    case 'PHP_Token_FUNCTION':
-                        $docblock = $token->getDocblock();
-
-                        $this->ignoredLines[$filename][] = $token->getLine();
-
-                        if (strpos($docblock, '@codeCoverageIgnore') || strpos($docblock, '@deprecated')) {
-                            $endLine = $token->getEndLine();
-
-                            for ($i = $token->getLine(); $i <= $endLine; $i++) {
-                                $this->ignoredLines[$filename][] = $i;
-                            }
-                        } elseif ($token instanceof PHP_Token_INTERFACE ||
-                            $token instanceof PHP_Token_TRAIT ||
-                            $token instanceof PHP_Token_CLASS) {
-                            if (empty($classes[$token->getName()]['methods'])) {
-                                for ($i = $token->getLine();
-                                     $i <= $token->getEndLine();
-                                     $i++) {
-                                    $this->ignoredLines[$filename][] = $i;
-                                }
-                            } else {
-                                $firstMethod = array_shift(
-                                    $classes[$token->getName()]['methods']
-                                );
-
-                                do {
-                                    $lastMethod = array_pop(
-                                        $classes[$token->getName()]['methods']
-                                    );
-                                } while ($lastMethod !== null &&
-                                    substr($lastMethod['signature'], 0, 18) == 'anonymous function');
-
-                                if ($lastMethod === null) {
-                                    $lastMethod = $firstMethod;
-                                }
-
-                                for ($i = $token->getLine();
-                                     $i < $firstMethod['startLine'];
-                                     $i++) {
-                                    $this->ignoredLines[$filename][] = $i;
-                                }
-
-                                for ($i = $token->getEndLine();
-                                     $i > $lastMethod['endLine'];
-                                     $i--) {
-                                    $this->ignoredLines[$filename][] = $i;
-                                }
-                            }
-                        }
-                        break;
-
-                    case 'PHP_Token_NAMESPACE':
-                        $this->ignoredLines[$filename][] = $token->getEndLine();
-
-                    // Intentional fallthrough
-                    case 'PHP_Token_OPEN_TAG':
-                    case 'PHP_Token_CLOSE_TAG':
-                    case 'PHP_Token_USE':
-                        $this->ignoredLines[$filename][] = $token->getLine();
-                        break;
-                }
-
-                if ($ignore) {
-                    $this->ignoredLines[$filename][] = $token->getLine();
-
-                    if ($stop) {
-                        $ignore = false;
-                        $stop   = false;
-                    }
-                }
-            }
-
-            $this->ignoredLines[$filename][] = $numLines + 1;
-
-            $this->ignoredLines[$filename] = array_unique(
-                $this->ignoredLines[$filename]
-            );
-
-            sort($this->ignoredLines[$filename]);
-        }
-
-        return $this->ignoredLines[$filename];
-    }
-
-    /**
-     * @param  array                                                 $data
-     * @param  array                                                 $linesToBeCovered
-     * @param  array                                                 $linesToBeUsed
-     * @throws PHP_CodeCoverage_Exception_UnintentionallyCoveredCode
-     * @since Method available since Release 2.0.0
-     */
-    private function performUnintentionallyCoveredCodeCheck(array &$data, array $linesToBeCovered, array $linesToBeUsed)
-    {
-        $allowedLines = $this->getAllowedLines(
-            $linesToBeCovered,
-            $linesToBeUsed
-        );
-
-        $message = '';
-
-        foreach ($data as $file => $_data) {
-            foreach ($_data as $line => $flag) {
-                if ($flag == 1 &&
-                    (!isset($allowedLines[$file]) ||
-                        !isset($allowedLines[$file][$line]))) {
-                    $message .= sprintf(
-                        '- %s:%d' . PHP_EOL,
-                        $file,
-                        $line
-                    );
-                }
-            }
-        }
-
-        if (!empty($message)) {
-            throw new PHP_CodeCoverage_Exception_UnintentionallyCoveredCode(
-                $message
-            );
-        }
-    }
-
-    /**
-     * @param  array $linesToBeCovered
-     * @param  array $linesToBeUsed
-     * @return array
-     * @since Method available since Release 2.0.0
-     */
-    private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed)
-    {
-        $allowedLines = array();
-
-        foreach (array_keys($linesToBeCovered) as $file) {
-            if (!isset($allowedLines[$file])) {
-                $allowedLines[$file] = array();
-            }
-
-            $allowedLines[$file] = array_merge(
-                $allowedLines[$file],
-                $linesToBeCovered[$file]
-            );
-        }
-
-        foreach (array_keys($linesToBeUsed) as $file) {
-            if (!isset($allowedLines[$file])) {
-                $allowedLines[$file] = array();
-            }
-
-            $allowedLines[$file] = array_merge(
-                $allowedLines[$file],
-                $linesToBeUsed[$file]
-            );
-        }
-
-        foreach (array_keys($allowedLines) as $file) {
-            $allowedLines[$file] = array_flip(
-                array_unique($allowedLines[$file])
-            );
-        }
-
-        return $allowedLines;
-    }
-
-    /**
-     * @return PHP_CodeCoverage_Driver
-     * @throws PHP_CodeCoverage_Exception
-     */
-    private function selectDriver()
-    {
-        $runtime = new Runtime;
-
-        if (!$runtime->canCollectCodeCoverage()) {
-            throw new PHP_CodeCoverage_Exception('No code coverage driver available');
-        }
-
-        if ($runtime->isHHVM()) {
-            return new PHP_CodeCoverage_Driver_HHVM;
-        } elseif ($runtime->isPHPDBG()) {
-            return new PHP_CodeCoverage_Driver_PHPDBG;
-        } else {
-            return new PHP_CodeCoverage_Driver_Xdebug;
-        }
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver.php
deleted file mode 100644
index 8635ace..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Interface for code coverage drivers.
- *
- * @since Class available since Release 1.0.0
- */
-interface PHP_CodeCoverage_Driver
-{
-    /**
-     * @var int
-     * @see http://xdebug.org/docs/code_coverage
-     */
-    const LINE_EXECUTED = 1;
-
-    /**
-     * @var int
-     * @see http://xdebug.org/docs/code_coverage
-     */
-    const LINE_NOT_EXECUTED = -1;
-
-    /**
-     * @var int
-     * @see http://xdebug.org/docs/code_coverage
-     */
-    const LINE_NOT_EXECUTABLE = -2;
-
-    /**
-     * Start collection of code coverage information.
-     */
-    public function start();
-
-    /**
-     * Stop collection of code coverage information.
-     *
-     * @return array
-     */
-    public function stop();
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php
deleted file mode 100644
index a9d8f0c..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Driver for HHVM's code coverage functionality.
- *
- * @since Class available since Release 2.2.2
- * @codeCoverageIgnore
- */
-class PHP_CodeCoverage_Driver_HHVM extends PHP_CodeCoverage_Driver_Xdebug
-{
-    /**
-     * Start collection of code coverage information.
-     */
-    public function start()
-    {
-        xdebug_start_code_coverage();
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php
deleted file mode 100644
index f3eb621..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Driver for PHPDBG's code coverage functionality.
- *
- * @since Class available since Release 2.2.0
- * @codeCoverageIgnore
- */
-class PHP_CodeCoverage_Driver_PHPDBG implements PHP_CodeCoverage_Driver
-{
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {
-        if (PHP_SAPI !== 'phpdbg') {
-            throw new PHP_CodeCoverage_Exception(
-                'This driver requires the PHPDBG SAPI'
-            );
-        }
-
-        if (!function_exists('phpdbg_start_oplog')) {
-            throw new PHP_CodeCoverage_Exception(
-                'This build of PHPDBG does not support code coverage'
-            );
-        }
-    }
-
-    /**
-     * Start collection of code coverage information.
-     */
-    public function start()
-    {
-        phpdbg_start_oplog();
-    }
-
-    /**
-     * Stop collection of code coverage information.
-     *
-     * @return array
-     */
-    public function stop()
-    {
-        static $fetchedLines = array();
-
-        $dbgData = phpdbg_end_oplog();
-
-        if ($fetchedLines == array()) {
-            $sourceLines = phpdbg_get_executable();
-        } else {
-            $newFiles = array_diff(
-                get_included_files(),
-                array_keys($fetchedLines)
-            );
-
-            if ($newFiles) {
-                $sourceLines = phpdbg_get_executable(
-                    array('files' => $newFiles)
-                );
-            } else {
-                $sourceLines = array();
-            }
-        }
-
-        foreach ($sourceLines as $file => $lines) {
-            foreach ($lines as $lineNo => $numExecuted) {
-                $sourceLines[$file][$lineNo] = self::LINE_NOT_EXECUTED;
-            }
-        }
-
-        $fetchedLines = array_merge($fetchedLines, $sourceLines);
-
-        return $this->detectExecutedLines($fetchedLines, $dbgData);
-    }
-
-    /**
-     * Convert phpdbg based data into the format CodeCoverage expects
-     *
-     * @param  array $sourceLines
-     * @param  array $dbgData
-     * @return array
-     */
-    private function detectExecutedLines(array $sourceLines, array $dbgData)
-    {
-        foreach ($dbgData as $file => $coveredLines) {
-            foreach ($coveredLines as $lineNo => $numExecuted) {
-                // phpdbg also reports $lineNo=0 when e.g. exceptions get thrown.
-                // make sure we only mark lines executed which are actually executable.
-                if (isset($sourceLines[$file][$lineNo])) {
-                    $sourceLines[$file][$lineNo] = self::LINE_EXECUTED;
-                }
-            }
-        }
-
-        return $sourceLines;
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php
deleted file mode 100644
index 0cd7b9a..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Driver for Xdebug's code coverage functionality.
- *
- * @since Class available since Release 1.0.0
- * @codeCoverageIgnore
- */
-class PHP_CodeCoverage_Driver_Xdebug implements PHP_CodeCoverage_Driver
-{
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {
-        if (!extension_loaded('xdebug')) {
-            throw new PHP_CodeCoverage_Exception('This driver requires Xdebug');
-        }
-
-        if (version_compare(phpversion('xdebug'), '2.2.0-dev', '>=') &&
-            !ini_get('xdebug.coverage_enable')) {
-            throw new PHP_CodeCoverage_Exception(
-                'xdebug.coverage_enable=On has to be set in php.ini'
-            );
-        }
-    }
-
-    /**
-     * Start collection of code coverage information.
-     */
-    public function start()
-    {
-        xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
-    }
-
-    /**
-     * Stop collection of code coverage information.
-     *
-     * @return array
-     */
-    public function stop()
-    {
-        $data = xdebug_get_code_coverage();
-        xdebug_stop_code_coverage();
-
-        return $this->cleanup($data);
-    }
-
-    /**
-     * @param  array $data
-     * @return array
-     * @since Method available since Release 2.0.0
-     */
-    private function cleanup(array $data)
-    {
-        foreach (array_keys($data) as $file) {
-            unset($data[$file][0]);
-
-            if ($file != 'xdebug://debug-eval' && file_exists($file)) {
-                $numLines = $this->getNumberOfLinesInFile($file);
-
-                foreach (array_keys($data[$file]) as $line) {
-                    if (isset($data[$file][$line]) && $line > $numLines) {
-                        unset($data[$file][$line]);
-                    }
-                }
-            }
-        }
-
-        return $data;
-    }
-
-    /**
-     * @param  string $file
-     * @return int
-     * @since Method available since Release 2.0.0
-     */
-    private function getNumberOfLinesInFile($file)
-    {
-        $buffer = file_get_contents($file);
-        $lines  = substr_count($buffer, "\n");
-
-        if (substr($buffer, -1) !== "\n") {
-            $lines++;
-        }
-
-        return $lines;
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception.php
deleted file mode 100644
index bded3c0..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Exception class for PHP_CodeCoverage component.
- *
- * @since Class available since Release 1.1.0
- */
-class PHP_CodeCoverage_Exception extends RuntimeException
-{
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php
deleted file mode 100644
index 463785e..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Exception that is raised when code is unintentionally covered.
- *
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Exception_UnintentionallyCoveredCode extends PHP_CodeCoverage_Exception
-{
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php
deleted file mode 100644
index bb4a251..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php
+++ /dev/null
@@ -1,293 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Filter for blacklisting and whitelisting of code coverage information.
- *
- * @since Class available since Release 1.0.0
- */
-class PHP_CodeCoverage_Filter
-{
-    /**
-     * Source files that are blacklisted.
-     *
-     * @var array
-     */
-    private $blacklistedFiles = array();
-
-    /**
-     * Source files that are whitelisted.
-     *
-     * @var array
-     */
-    private $whitelistedFiles = array();
-
-    /**
-     * Adds a directory to the blacklist (recursively).
-     *
-     * @param string $directory
-     * @param string $suffix
-     * @param string $prefix
-     */
-    public function addDirectoryToBlacklist($directory, $suffix = '.php', $prefix = '')
-    {
-        $facade = new File_Iterator_Facade;
-        $files  = $facade->getFilesAsArray($directory, $suffix, $prefix);
-
-        foreach ($files as $file) {
-            $this->addFileToBlacklist($file);
-        }
-    }
-
-    /**
-     * Adds a file to the blacklist.
-     *
-     * @param string $filename
-     */
-    public function addFileToBlacklist($filename)
-    {
-        $this->blacklistedFiles[realpath($filename)] = true;
-    }
-
-    /**
-     * Adds files to the blacklist.
-     *
-     * @param array $files
-     */
-    public function addFilesToBlacklist(array $files)
-    {
-        foreach ($files as $file) {
-            $this->addFileToBlacklist($file);
-        }
-    }
-
-    /**
-     * Removes a directory from the blacklist (recursively).
-     *
-     * @param string $directory
-     * @param string $suffix
-     * @param string $prefix
-     */
-    public function removeDirectoryFromBlacklist($directory, $suffix = '.php', $prefix = '')
-    {
-        $facade = new File_Iterator_Facade;
-        $files  = $facade->getFilesAsArray($directory, $suffix, $prefix);
-
-        foreach ($files as $file) {
-            $this->removeFileFromBlacklist($file);
-        }
-    }
-
-    /**
-     * Removes a file from the blacklist.
-     *
-     * @param string $filename
-     */
-    public function removeFileFromBlacklist($filename)
-    {
-        $filename = realpath($filename);
-
-        if (isset($this->blacklistedFiles[$filename])) {
-            unset($this->blacklistedFiles[$filename]);
-        }
-    }
-
-    /**
-     * Adds a directory to the whitelist (recursively).
-     *
-     * @param string $directory
-     * @param string $suffix
-     * @param string $prefix
-     */
-    public function addDirectoryToWhitelist($directory, $suffix = '.php', $prefix = '')
-    {
-        $facade = new File_Iterator_Facade;
-        $files  = $facade->getFilesAsArray($directory, $suffix, $prefix);
-
-        foreach ($files as $file) {
-            $this->addFileToWhitelist($file);
-        }
-    }
-
-    /**
-     * Adds a file to the whitelist.
-     *
-     * @param string $filename
-     */
-    public function addFileToWhitelist($filename)
-    {
-        $this->whitelistedFiles[realpath($filename)] = true;
-    }
-
-    /**
-     * Adds files to the whitelist.
-     *
-     * @param array $files
-     */
-    public function addFilesToWhitelist(array $files)
-    {
-        foreach ($files as $file) {
-            $this->addFileToWhitelist($file);
-        }
-    }
-
-    /**
-     * Removes a directory from the whitelist (recursively).
-     *
-     * @param string $directory
-     * @param string $suffix
-     * @param string $prefix
-     */
-    public function removeDirectoryFromWhitelist($directory, $suffix = '.php', $prefix = '')
-    {
-        $facade = new File_Iterator_Facade;
-        $files  = $facade->getFilesAsArray($directory, $suffix, $prefix);
-
-        foreach ($files as $file) {
-            $this->removeFileFromWhitelist($file);
-        }
-    }
-
-    /**
-     * Removes a file from the whitelist.
-     *
-     * @param string $filename
-     */
-    public function removeFileFromWhitelist($filename)
-    {
-        $filename = realpath($filename);
-
-        if (isset($this->whitelistedFiles[$filename])) {
-            unset($this->whitelistedFiles[$filename]);
-        }
-    }
-
-    /**
-     * Checks whether a filename is a real filename.
-     *
-     * @param  string $filename
-     * @return bool
-     */
-    public function isFile($filename)
-    {
-        if ($filename == '-' ||
-            strpos($filename, 'vfs://') === 0 ||
-            strpos($filename, 'xdebug://debug-eval') !== false ||
-            strpos($filename, 'eval()\'d code') !== false ||
-            strpos($filename, 'runtime-created function') !== false ||
-            strpos($filename, 'runkit created function') !== false ||
-            strpos($filename, 'assert code') !== false ||
-            strpos($filename, 'regexp code') !== false) {
-            return false;
-        }
-
-        return file_exists($filename);
-    }
-
-    /**
-     * Checks whether or not a file is filtered.
-     *
-     * When the whitelist is empty (default), blacklisting is used.
-     * When the whitelist is not empty, whitelisting is used.
-     *
-     * @param  string                     $filename
-     * @return bool
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function isFiltered($filename)
-    {
-        if (!$this->isFile($filename)) {
-            return true;
-        }
-
-        $filename = realpath($filename);
-
-        if (!empty($this->whitelistedFiles)) {
-            return !isset($this->whitelistedFiles[$filename]);
-        }
-
-        return isset($this->blacklistedFiles[$filename]);
-    }
-
-    /**
-     * Returns the list of blacklisted files.
-     *
-     * @return array
-     */
-    public function getBlacklist()
-    {
-        return array_keys($this->blacklistedFiles);
-    }
-
-    /**
-     * Returns the list of whitelisted files.
-     *
-     * @return array
-     */
-    public function getWhitelist()
-    {
-        return array_keys($this->whitelistedFiles);
-    }
-
-    /**
-     * Returns whether this filter has a whitelist.
-     *
-     * @return bool
-     * @since  Method available since Release 1.1.0
-     */
-    public function hasWhitelist()
-    {
-        return !empty($this->whitelistedFiles);
-    }
-
-    /**
-     * Returns the blacklisted files.
-     *
-     * @return array
-     * @since Method available since Release 2.0.0
-     */
-    public function getBlacklistedFiles()
-    {
-        return $this->blacklistedFiles;
-    }
-
-    /**
-     * Sets the blacklisted files.
-     *
-     * @param array $blacklistedFiles
-     * @since Method available since Release 2.0.0
-     */
-    public function setBlacklistedFiles($blacklistedFiles)
-    {
-        $this->blacklistedFiles = $blacklistedFiles;
-    }
-
-    /**
-     * Returns the whitelisted files.
-     *
-     * @return array
-     * @since Method available since Release 2.0.0
-     */
-    public function getWhitelistedFiles()
-    {
-        return $this->whitelistedFiles;
-    }
-
-    /**
-     * Sets the whitelisted files.
-     *
-     * @param array $whitelistedFiles
-     * @since Method available since Release 2.0.0
-     */
-    public function setWhitelistedFiles($whitelistedFiles)
-    {
-        $this->whitelistedFiles = $whitelistedFiles;
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php
deleted file mode 100644
index c0ea8d8..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php
+++ /dev/null
@@ -1,284 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Generates a Clover XML logfile from an PHP_CodeCoverage object.
- *
- * @since Class available since Release 1.0.0
- */
-class PHP_CodeCoverage_Report_Clover
-{
-    /**
-     * @param  PHP_CodeCoverage $coverage
-     * @param  string           $target
-     * @param  string           $name
-     * @return string
-     */
-    public function process(PHP_CodeCoverage $coverage, $target = null, $name = null)
-    {
-        $xmlDocument               = new DOMDocument('1.0', 'UTF-8');
-        $xmlDocument->formatOutput = true;
-
-        $xmlCoverage = $xmlDocument->createElement('coverage');
-        $xmlCoverage->setAttribute('generated', (int) $_SERVER['REQUEST_TIME']);
-        $xmlDocument->appendChild($xmlCoverage);
-
-        $xmlProject = $xmlDocument->createElement('project');
-        $xmlProject->setAttribute('timestamp', (int) $_SERVER['REQUEST_TIME']);
-
-        if (is_string($name)) {
-            $xmlProject->setAttribute('name', $name);
-        }
-
-        $xmlCoverage->appendChild($xmlProject);
-
-        $packages = array();
-        $report   = $coverage->getReport();
-        unset($coverage);
-
-        foreach ($report as $item) {
-            $namespace = 'global';
-
-            if (!$item instanceof PHP_CodeCoverage_Report_Node_File) {
-                continue;
-            }
-
-            $xmlFile = $xmlDocument->createElement('file');
-            $xmlFile->setAttribute('name', $item->getPath());
-
-            $classes  = $item->getClassesAndTraits();
-            $coverage = $item->getCoverageData();
-            $lines    = array();
-
-            foreach ($classes as $className => $class) {
-                $classStatements        = 0;
-                $coveredClassStatements = 0;
-                $coveredMethods         = 0;
-                $classMethods           = 0;
-
-                foreach ($class['methods'] as $methodName => $method) {
-                    if ($method['executableLines']  == 0) {
-                        continue;
-                    }
-
-                    $classMethods++;
-                    $classStatements        += $method['executableLines'];
-                    $coveredClassStatements += $method['executedLines'];
-                    if ($method['coverage'] == 100) {
-                        $coveredMethods++;
-                    }
-
-                    $methodCount = 0;
-                    for ($i  = $method['startLine'];
-                         $i <= $method['endLine'];
-                         $i++) {
-                        if (isset($coverage[$i]) && ($coverage[$i] !== null)) {
-                            $methodCount = max($methodCount, count($coverage[$i]));
-                        }
-                    }
-
-                    $lines[$method['startLine']] = array(
-                        'count' => $methodCount,
-                        'crap'  => $method['crap'],
-                        'type'  => 'method',
-                        'name'  => $methodName
-                    );
-                }
-
-                if (!empty($class['package']['namespace'])) {
-                    $namespace = $class['package']['namespace'];
-                }
-
-                $xmlClass = $xmlDocument->createElement('class');
-                $xmlClass->setAttribute('name', $className);
-                $xmlClass->setAttribute('namespace', $namespace);
-
-                if (!empty($class['package']['fullPackage'])) {
-                    $xmlClass->setAttribute(
-                        'fullPackage',
-                        $class['package']['fullPackage']
-                    );
-                }
-
-                if (!empty($class['package']['category'])) {
-                    $xmlClass->setAttribute(
-                        'category',
-                        $class['package']['category']
-                    );
-                }
-
-                if (!empty($class['package']['package'])) {
-                    $xmlClass->setAttribute(
-                        'package',
-                        $class['package']['package']
-                    );
-                }
-
-                if (!empty($class['package']['subpackage'])) {
-                    $xmlClass->setAttribute(
-                        'subpackage',
-                        $class['package']['subpackage']
-                    );
-                }
-
-                $xmlFile->appendChild($xmlClass);
-
-                $xmlMetrics = $xmlDocument->createElement('metrics');
-                $xmlMetrics->setAttribute('methods', $classMethods);
-                $xmlMetrics->setAttribute('coveredmethods', $coveredMethods);
-                $xmlMetrics->setAttribute('conditionals', 0);
-                $xmlMetrics->setAttribute('coveredconditionals', 0);
-                $xmlMetrics->setAttribute('statements', $classStatements);
-                $xmlMetrics->setAttribute(
-                    'coveredstatements',
-                    $coveredClassStatements
-                );
-                $xmlMetrics->setAttribute(
-                    'elements',
-                    $classMethods +
-                    $classStatements
-                    /* + conditionals */
-                );
-                $xmlMetrics->setAttribute(
-                    'coveredelements',
-                    $coveredMethods +
-                    $coveredClassStatements
-                    /* + coveredconditionals */
-                );
-                $xmlClass->appendChild($xmlMetrics);
-            }
-
-            foreach ($coverage as $line => $data) {
-                if ($data === null || isset($lines[$line])) {
-                    continue;
-                }
-
-                $lines[$line] = array(
-                    'count' => count($data), 'type' => 'stmt'
-                );
-            }
-
-            ksort($lines);
-
-            foreach ($lines as $line => $data) {
-                $xmlLine = $xmlDocument->createElement('line');
-                $xmlLine->setAttribute('num', $line);
-                $xmlLine->setAttribute('type', $data['type']);
-
-                if (isset($data['name'])) {
-                    $xmlLine->setAttribute('name', $data['name']);
-                }
-
-                if (isset($data['crap'])) {
-                    $xmlLine->setAttribute('crap', $data['crap']);
-                }
-
-                $xmlLine->setAttribute('count', $data['count']);
-                $xmlFile->appendChild($xmlLine);
-            }
-
-            $linesOfCode = $item->getLinesOfCode();
-
-            $xmlMetrics = $xmlDocument->createElement('metrics');
-            $xmlMetrics->setAttribute('loc', $linesOfCode['loc']);
-            $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']);
-            $xmlMetrics->setAttribute('classes', $item->getNumClassesAndTraits());
-            $xmlMetrics->setAttribute('methods', $item->getNumMethods());
-            $xmlMetrics->setAttribute(
-                'coveredmethods',
-                $item->getNumTestedMethods()
-            );
-            $xmlMetrics->setAttribute('conditionals', 0);
-            $xmlMetrics->setAttribute('coveredconditionals', 0);
-            $xmlMetrics->setAttribute(
-                'statements',
-                $item->getNumExecutableLines()
-            );
-            $xmlMetrics->setAttribute(
-                'coveredstatements',
-                $item->getNumExecutedLines()
-            );
-            $xmlMetrics->setAttribute(
-                'elements',
-                $item->getNumMethods() + $item->getNumExecutableLines()
-                /* + conditionals */
-            );
-            $xmlMetrics->setAttribute(
-                'coveredelements',
-                $item->getNumTestedMethods() + $item->getNumExecutedLines()
-                /* + coveredconditionals */
-            );
-            $xmlFile->appendChild($xmlMetrics);
-
-            if ($namespace == 'global') {
-                $xmlProject->appendChild($xmlFile);
-            } else {
-                if (!isset($packages[$namespace])) {
-                    $packages[$namespace] = $xmlDocument->createElement(
-                        'package'
-                    );
-
-                    $packages[$namespace]->setAttribute('name', $namespace);
-                    $xmlProject->appendChild($packages[$namespace]);
-                }
-
-                $packages[$namespace]->appendChild($xmlFile);
-            }
-        }
-
-        $linesOfCode = $report->getLinesOfCode();
-
-        $xmlMetrics = $xmlDocument->createElement('metrics');
-        $xmlMetrics->setAttribute('files', count($report));
-        $xmlMetrics->setAttribute('loc', $linesOfCode['loc']);
-        $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']);
-        $xmlMetrics->setAttribute(
-            'classes',
-            $report->getNumClassesAndTraits()
-        );
-        $xmlMetrics->setAttribute('methods', $report->getNumMethods());
-        $xmlMetrics->setAttribute(
-            'coveredmethods',
-            $report->getNumTestedMethods()
-        );
-        $xmlMetrics->setAttribute('conditionals', 0);
-        $xmlMetrics->setAttribute('coveredconditionals', 0);
-        $xmlMetrics->setAttribute(
-            'statements',
-            $report->getNumExecutableLines()
-        );
-        $xmlMetrics->setAttribute(
-            'coveredstatements',
-            $report->getNumExecutedLines()
-        );
-        $xmlMetrics->setAttribute(
-            'elements',
-            $report->getNumMethods() + $report->getNumExecutableLines()
-            /* + conditionals */
-        );
-        $xmlMetrics->setAttribute(
-            'coveredelements',
-            $report->getNumTestedMethods() + $report->getNumExecutedLines()
-            /* + coveredconditionals */
-        );
-
-        $xmlProject->appendChild($xmlMetrics);
-
-        if ($target !== null) {
-            if (!is_dir(dirname($target))) {
-                mkdir(dirname($target), 0777, true);
-            }
-
-            return $xmlDocument->save($target);
-        } else {
-            return $xmlDocument->saveXML();
-        }
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php
deleted file mode 100644
index c006ea6..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_Crap4j
-{
-    /**
-     * @var int
-     */
-    private $threshold;
-
-    /**
-     * @param int $threshold
-     */
-    public function __construct($threshold = 30)
-    {
-        if (!is_int($threshold)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'integer'
-            );
-        }
-
-        $this->threshold = $threshold;
-    }
-
-    /**
-     * @param  PHP_CodeCoverage $coverage
-     * @param  string           $target
-     * @param  string           $name
-     * @return string
-     */
-    public function process(PHP_CodeCoverage $coverage, $target = null, $name = null)
-    {
-        $document               = new DOMDocument('1.0', 'UTF-8');
-        $document->formatOutput = true;
-
-        $root = $document->createElement('crap_result');
-        $document->appendChild($root);
-
-        $project = $document->createElement('project', is_string($name) ? $name : '');
-        $root->appendChild($project);
-        $root->appendChild($document->createElement('timestamp', date('Y-m-d H:i:s', (int) $_SERVER['REQUEST_TIME'])));
-
-        $stats       = $document->createElement('stats');
-        $methodsNode = $document->createElement('methods');
-
-        $report = $coverage->getReport();
-        unset($coverage);
-
-        $fullMethodCount     = 0;
-        $fullCrapMethodCount = 0;
-        $fullCrapLoad        = 0;
-        $fullCrap            = 0;
-
-        foreach ($report as $item) {
-            $namespace = 'global';
-
-            if (!$item instanceof PHP_CodeCoverage_Report_Node_File) {
-                continue;
-            }
-
-            $file = $document->createElement('file');
-            $file->setAttribute('name', $item->getPath());
-
-            $classes = $item->getClassesAndTraits();
-
-            foreach ($classes as $className => $class) {
-                foreach ($class['methods'] as $methodName => $method) {
-                    $crapLoad = $this->getCrapLoad($method['crap'], $method['ccn'], $method['coverage']);
-
-                    $fullCrap     += $method['crap'];
-                    $fullCrapLoad += $crapLoad;
-                    $fullMethodCount++;
-
-                    if ($method['crap'] >= $this->threshold) {
-                        $fullCrapMethodCount++;
-                    }
-
-                    $methodNode = $document->createElement('method');
-
-                    if (!empty($class['package']['namespace'])) {
-                        $namespace = $class['package']['namespace'];
-                    }
-
-                    $methodNode->appendChild($document->createElement('package', $namespace));
-                    $methodNode->appendChild($document->createElement('className', $className));
-                    $methodNode->appendChild($document->createElement('methodName', $methodName));
-                    $methodNode->appendChild($document->createElement('methodSignature', htmlspecialchars($method['signature'])));
-                    $methodNode->appendChild($document->createElement('fullMethod', htmlspecialchars($method['signature'])));
-                    $methodNode->appendChild($document->createElement('crap', $this->roundValue($method['crap'])));
-                    $methodNode->appendChild($document->createElement('complexity', $method['ccn']));
-                    $methodNode->appendChild($document->createElement('coverage', $this->roundValue($method['coverage'])));
-                    $methodNode->appendChild($document->createElement('crapLoad', round($crapLoad)));
-
-                    $methodsNode->appendChild($methodNode);
-                }
-            }
-        }
-
-        $stats->appendChild($document->createElement('name', 'Method Crap Stats'));
-        $stats->appendChild($document->createElement('methodCount', $fullMethodCount));
-        $stats->appendChild($document->createElement('crapMethodCount', $fullCrapMethodCount));
-        $stats->appendChild($document->createElement('crapLoad', round($fullCrapLoad)));
-        $stats->appendChild($document->createElement('totalCrap', $fullCrap));
-
-        if ($fullMethodCount > 0) {
-            $crapMethodPercent = $this->roundValue((100 * $fullCrapMethodCount) / $fullMethodCount);
-        } else {
-            $crapMethodPercent = 0;
-        }
-
-        $stats->appendChild($document->createElement('crapMethodPercent', $crapMethodPercent));
-
-        $root->appendChild($stats);
-        $root->appendChild($methodsNode);
-
-        if ($target !== null) {
-            if (!is_dir(dirname($target))) {
-                mkdir(dirname($target), 0777, true);
-            }
-
-            return $document->save($target);
-        } else {
-            return $document->saveXML();
-        }
-    }
-
-    /**
-     * @param  float $crapValue
-     * @param  int   $cyclomaticComplexity
-     * @param  float $coveragePercent
-     * @return float
-     */
-    private function getCrapLoad($crapValue, $cyclomaticComplexity, $coveragePercent)
-    {
-        $crapLoad = 0;
-
-        if ($crapValue >= $this->threshold) {
-            $crapLoad += $cyclomaticComplexity * (1.0 - $coveragePercent / 100);
-            $crapLoad += $cyclomaticComplexity / $this->threshold;
-        }
-
-        return $crapLoad;
-    }
-
-    /**
-     * @param  float $value
-     * @return float
-     */
-    private function roundValue($value)
-    {
-        return round($value, 2);
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php
deleted file mode 100644
index b28964e..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php
+++ /dev/null
@@ -1,242 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Factory for PHP_CodeCoverage_Report_Node_* object graphs.
- *
- * @since Class available since Release 1.1.0
- */
-class PHP_CodeCoverage_Report_Factory
-{
-    /**
-     * @param  PHP_CodeCoverage                       $coverage
-     * @return PHP_CodeCoverage_Report_Node_Directory
-     */
-    public function create(PHP_CodeCoverage $coverage)
-    {
-        $files      = $coverage->getData();
-        $commonPath = $this->reducePaths($files);
-        $root       = new PHP_CodeCoverage_Report_Node_Directory(
-            $commonPath,
-            null
-        );
-
-        $this->addItems(
-            $root,
-            $this->buildDirectoryStructure($files),
-            $coverage->getTests(),
-            $coverage->getCacheTokens()
-        );
-
-        return $root;
-    }
-
-    /**
-     * @param PHP_CodeCoverage_Report_Node_Directory $root
-     * @param array                                  $items
-     * @param array                                  $tests
-     * @param bool                                   $cacheTokens
-     */
-    private function addItems(PHP_CodeCoverage_Report_Node_Directory $root, array $items, array $tests, $cacheTokens)
-    {
-        foreach ($items as $key => $value) {
-            if (substr($key, -2) == '/f') {
-                $key = substr($key, 0, -2);
-
-                if (file_exists($root->getPath() . DIRECTORY_SEPARATOR . $key)) {
-                    $root->addFile($key, $value, $tests, $cacheTokens);
-                }
-            } else {
-                $child = $root->addDirectory($key);
-                $this->addItems($child, $value, $tests, $cacheTokens);
-            }
-        }
-    }
-
-    /**
-     * Builds an array representation of the directory structure.
-     *
-     * For instance,
-     *
-     * <code>
-     * Array
-     * (
-     *     [Money.php] => Array
-     *         (
-     *             ...
-     *         )
-     *
-     *     [MoneyBag.php] => Array
-     *         (
-     *             ...
-     *         )
-     * )
-     * </code>
-     *
-     * is transformed into
-     *
-     * <code>
-     * Array
-     * (
-     *     [.] => Array
-     *         (
-     *             [Money.php] => Array
-     *                 (
-     *                     ...
-     *                 )
-     *
-     *             [MoneyBag.php] => Array
-     *                 (
-     *                     ...
-     *                 )
-     *         )
-     * )
-     * </code>
-     *
-     * @param  array $files
-     * @return array
-     */
-    private function buildDirectoryStructure($files)
-    {
-        $result = array();
-
-        foreach ($files as $path => $file) {
-            $path    = explode('/', $path);
-            $pointer = &$result;
-            $max     = count($path);
-
-            for ($i = 0; $i < $max; $i++) {
-                if ($i == ($max - 1)) {
-                    $type = '/f';
-                } else {
-                    $type = '';
-                }
-
-                $pointer = &$pointer[$path[$i] . $type];
-            }
-
-            $pointer = $file;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Reduces the paths by cutting the longest common start path.
-     *
-     * For instance,
-     *
-     * <code>
-     * Array
-     * (
-     *     [/home/sb/Money/Money.php] => Array
-     *         (
-     *             ...
-     *         )
-     *
-     *     [/home/sb/Money/MoneyBag.php] => Array
-     *         (
-     *             ...
-     *         )
-     * )
-     * </code>
-     *
-     * is reduced to
-     *
-     * <code>
-     * Array
-     * (
-     *     [Money.php] => Array
-     *         (
-     *             ...
-     *         )
-     *
-     *     [MoneyBag.php] => Array
-     *         (
-     *             ...
-     *         )
-     * )
-     * </code>
-     *
-     * @param  array  $files
-     * @return string
-     */
-    private function reducePaths(&$files)
-    {
-        if (empty($files)) {
-            return '.';
-        }
-
-        $commonPath = '';
-        $paths      = array_keys($files);
-
-        if (count($files) == 1) {
-            $commonPath                 = dirname($paths[0]) . '/';
-            $files[basename($paths[0])] = $files[$paths[0]];
-
-            unset($files[$paths[0]]);
-
-            return $commonPath;
-        }
-
-        $max = count($paths);
-
-        for ($i = 0; $i < $max; $i++) {
-            // strip phar:// prefixes
-            if (strpos($paths[$i], 'phar://') === 0) {
-                $paths[$i] = substr($paths[$i], 7);
-                $paths[$i] = strtr($paths[$i], '/', DIRECTORY_SEPARATOR);
-            }
-            $paths[$i] = explode(DIRECTORY_SEPARATOR, $paths[$i]);
-
-            if (empty($paths[$i][0])) {
-                $paths[$i][0] = DIRECTORY_SEPARATOR;
-            }
-        }
-
-        $done = false;
-        $max  = count($paths);
-
-        while (!$done) {
-            for ($i = 0; $i < $max - 1; $i++) {
-                if (!isset($paths[$i][0]) ||
-                    !isset($paths[$i+1][0]) ||
-                    $paths[$i][0] != $paths[$i+1][0]) {
-                    $done = true;
-                    break;
-                }
-            }
-
-            if (!$done) {
-                $commonPath .= $paths[0][0];
-
-                if ($paths[0][0] != DIRECTORY_SEPARATOR) {
-                    $commonPath .= DIRECTORY_SEPARATOR;
-                }
-
-                for ($i = 0; $i < $max; $i++) {
-                    array_shift($paths[$i]);
-                }
-            }
-        }
-
-        $original = array_keys($files);
-        $max      = count($original);
-
-        for ($i = 0; $i < $max; $i++) {
-            $files[implode('/', $paths[$i])] = $files[$original[$i]];
-            unset($files[$original[$i]]);
-        }
-
-        ksort($files);
-
-        return substr($commonPath, 0, -1);
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php
deleted file mode 100644
index 80916ef..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Generates an HTML report from an PHP_CodeCoverage object.
- *
- * @since Class available since Release 1.0.0
- */
-class PHP_CodeCoverage_Report_HTML
-{
-    /**
-     * @var string
-     */
-    private $templatePath;
-
-    /**
-     * @var string
-     */
-    private $generator;
-
-    /**
-     * @var int
-     */
-    private $lowUpperBound;
-
-    /**
-     * @var int
-     */
-    private $highLowerBound;
-
-    /**
-     * Constructor.
-     *
-     * @param int    $lowUpperBound
-     * @param int    $highLowerBound
-     * @param string $generator
-     */
-    public function __construct($lowUpperBound = 50, $highLowerBound = 90, $generator = '')
-    {
-        $this->generator      = $generator;
-        $this->highLowerBound = $highLowerBound;
-        $this->lowUpperBound  = $lowUpperBound;
-
-        $this->templatePath = sprintf(
-            '%s%sHTML%sRenderer%sTemplate%s',
-            dirname(__FILE__),
-            DIRECTORY_SEPARATOR,
-            DIRECTORY_SEPARATOR,
-            DIRECTORY_SEPARATOR,
-            DIRECTORY_SEPARATOR
-        );
-    }
-
-    /**
-     * @param PHP_CodeCoverage $coverage
-     * @param string           $target
-     */
-    public function process(PHP_CodeCoverage $coverage, $target)
-    {
-        $target = $this->getDirectory($target);
-        $report = $coverage->getReport();
-        unset($coverage);
-
-        if (!isset($_SERVER['REQUEST_TIME'])) {
-            $_SERVER['REQUEST_TIME'] = time();
-        }
-
-        $date = date('D M j G:i:s T Y', $_SERVER['REQUEST_TIME']);
-
-        $dashboard = new PHP_CodeCoverage_Report_HTML_Renderer_Dashboard(
-            $this->templatePath,
-            $this->generator,
-            $date,
-            $this->lowUpperBound,
-            $this->highLowerBound
-        );
-
-        $directory = new PHP_CodeCoverage_Report_HTML_Renderer_Directory(
-            $this->templatePath,
-            $this->generator,
-            $date,
-            $this->lowUpperBound,
-            $this->highLowerBound
-        );
-
-        $file = new PHP_CodeCoverage_Report_HTML_Renderer_File(
-            $this->templatePath,
-            $this->generator,
-            $date,
-            $this->lowUpperBound,
-            $this->highLowerBound
-        );
-
-        $directory->render($report, $target . 'index.html');
-        $dashboard->render($report, $target . 'dashboard.html');
-
-        foreach ($report as $node) {
-            $id = $node->getId();
-
-            if ($node instanceof PHP_CodeCoverage_Report_Node_Directory) {
-                if (!file_exists($target . $id)) {
-                    mkdir($target . $id, 0777, true);
-                }
-
-                $directory->render($node, $target . $id . '/index.html');
-                $dashboard->render($node, $target . $id . '/dashboard.html');
-            } else {
-                $dir = dirname($target . $id);
-
-                if (!file_exists($dir)) {
-                    mkdir($dir, 0777, true);
-                }
-
-                $file->render($node, $target . $id . '.html');
-            }
-        }
-
-        $this->copyFiles($target);
-    }
-
-    /**
-     * @param string $target
-     */
-    private function copyFiles($target)
-    {
-        $dir = $this->getDirectory($target . 'css');
-        copy($this->templatePath . 'css/bootstrap.min.css', $dir . 'bootstrap.min.css');
-        copy($this->templatePath . 'css/nv.d3.min.css', $dir . 'nv.d3.min.css');
-        copy($this->templatePath . 'css/style.css', $dir . 'style.css');
-
-        $dir = $this->getDirectory($target . 'fonts');
-        copy($this->templatePath . 'fonts/glyphicons-halflings-regular.eot', $dir . 'glyphicons-halflings-regular.eot');
-        copy($this->templatePath . 'fonts/glyphicons-halflings-regular.svg', $dir . 'glyphicons-halflings-regular.svg');
-        copy($this->templatePath . 'fonts/glyphicons-halflings-regular.ttf', $dir . 'glyphicons-halflings-regular.ttf');
-        copy($this->templatePath . 'fonts/glyphicons-halflings-regular.woff', $dir . 'glyphicons-halflings-regular.woff');
-        copy($this->templatePath . 'fonts/glyphicons-halflings-regular.woff2', $dir . 'glyphicons-halflings-regular.woff2');
-
-        $dir = $this->getDirectory($target . 'js');
-        copy($this->templatePath . 'js/bootstrap.min.js', $dir . 'bootstrap.min.js');
-        copy($this->templatePath . 'js/d3.min.js', $dir . 'd3.min.js');
-        copy($this->templatePath . 'js/holder.min.js', $dir . 'holder.min.js');
-        copy($this->templatePath . 'js/html5shiv.min.js', $dir . 'html5shiv.min.js');
-        copy($this->templatePath . 'js/jquery.min.js', $dir . 'jquery.min.js');
-        copy($this->templatePath . 'js/nv.d3.min.js', $dir . 'nv.d3.min.js');
-        copy($this->templatePath . 'js/respond.min.js', $dir . 'respond.min.js');
-    }
-
-    /**
-     * @param  string                     $directory
-     * @return string
-     * @throws PHP_CodeCoverage_Exception
-     * @since  Method available since Release 1.2.0
-     */
-    private function getDirectory($directory)
-    {
-        if (substr($directory, -1, 1) != DIRECTORY_SEPARATOR) {
-            $directory .= DIRECTORY_SEPARATOR;
-        }
-
-        if (is_dir($directory)) {
-            return $directory;
-        }
-
-        if (@mkdir($directory, 0777, true)) {
-            return $directory;
-        }
-
-        throw new PHP_CodeCoverage_Exception(
-            sprintf(
-                'Directory "%s" does not exist.',
-                $directory
-            )
-        );
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php
deleted file mode 100644
index 51aa15e..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-use SebastianBergmann\Environment\Runtime;
-
-/**
- * Base class for PHP_CodeCoverage_Report_Node renderers.
- *
- * @since Class available since Release 1.1.0
- */
-abstract class PHP_CodeCoverage_Report_HTML_Renderer
-{
-    /**
-     * @var string
-     */
-    protected $templatePath;
-
-    /**
-     * @var string
-     */
-    protected $generator;
-
-    /**
-     * @var string
-     */
-    protected $date;
-
-    /**
-     * @var int
-     */
-    protected $lowUpperBound;
-
-    /**
-     * @var int
-     */
-    protected $highLowerBound;
-
-    /**
-     * @var string
-     */
-    protected $version;
-
-    /**
-     * Constructor.
-     *
-     * @param string $templatePath
-     * @param string $generator
-     * @param string $date
-     * @param int    $lowUpperBound
-     * @param int    $highLowerBound
-     */
-    public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound)
-    {
-        $version = new SebastianBergmann\Version('2.2.4', dirname(dirname(dirname(dirname(__DIR__)))));
-
-        $this->templatePath   = $templatePath;
-        $this->generator      = $generator;
-        $this->date           = $date;
-        $this->lowUpperBound  = $lowUpperBound;
-        $this->highLowerBound = $highLowerBound;
-        $this->version        = $version->getVersion();
-    }
-
-    /**
-     * @param  Text_Template $template
-     * @param  array         $data
-     * @return string
-     */
-    protected function renderItemTemplate(Text_Template $template, array $data)
-    {
-        $numSeparator  = '&nbsp;/&nbsp;';
-
-        if (isset($data['numClasses']) && $data['numClasses'] > 0) {
-            $classesLevel = $this->getColorLevel($data['testedClassesPercent']);
-
-            $classesNumber = $data['numTestedClasses'] . $numSeparator .
-                $data['numClasses'];
-
-            $classesBar = $this->getCoverageBar(
-                $data['testedClassesPercent']
-            );
-        } else {
-            $classesLevel  = 'success';
-            $classesNumber = '0' . $numSeparator . '0';
-            $classesBar    = $this->getCoverageBar(100);
-        }
-
-        if ($data['numMethods'] > 0) {
-            $methodsLevel = $this->getColorLevel($data['testedMethodsPercent']);
-
-            $methodsNumber = $data['numTestedMethods'] . $numSeparator .
-                $data['numMethods'];
-
-            $methodsBar = $this->getCoverageBar(
-                $data['testedMethodsPercent']
-            );
-        } else {
-            $methodsLevel                         = 'success';
-            $methodsNumber                        = '0' . $numSeparator . '0';
-            $methodsBar                           = $this->getCoverageBar(100);
-            $data['testedMethodsPercentAsString'] = '100.00%';
-        }
-
-        if ($data['numExecutableLines'] > 0) {
-            $linesLevel = $this->getColorLevel($data['linesExecutedPercent']);
-
-            $linesNumber = $data['numExecutedLines'] . $numSeparator .
-                $data['numExecutableLines'];
-
-            $linesBar = $this->getCoverageBar(
-                $data['linesExecutedPercent']
-            );
-        } else {
-            $linesLevel                           = 'success';
-            $linesNumber                          = '0' . $numSeparator . '0';
-            $linesBar                             = $this->getCoverageBar(100);
-            $data['linesExecutedPercentAsString'] = '100.00%';
-        }
-
-        $template->setVar(
-            array(
-                'icon'                   => isset($data['icon']) ? $data['icon'] : '',
-                'crap'                   => isset($data['crap']) ? $data['crap'] : '',
-                'name'                   => $data['name'],
-                'lines_bar'              => $linesBar,
-                'lines_executed_percent' => $data['linesExecutedPercentAsString'],
-                'lines_level'            => $linesLevel,
-                'lines_number'           => $linesNumber,
-                'methods_bar'            => $methodsBar,
-                'methods_tested_percent' => $data['testedMethodsPercentAsString'],
-                'methods_level'          => $methodsLevel,
-                'methods_number'         => $methodsNumber,
-                'classes_bar'            => $classesBar,
-                'classes_tested_percent' => isset($data['testedClassesPercentAsString']) ? $data['testedClassesPercentAsString'] : '',
-                'classes_level'          => $classesLevel,
-                'classes_number'         => $classesNumber
-            )
-        );
-
-        return $template->render();
-    }
-
-    /**
-     * @param Text_Template                $template
-     * @param PHP_CodeCoverage_Report_Node $node
-     */
-    protected function setCommonTemplateVariables(Text_Template $template, PHP_CodeCoverage_Report_Node $node)
-    {
-        $runtime = new Runtime;
-
-        $template->setVar(
-            array(
-                'id'               => $node->getId(),
-                'full_path'        => $node->getPath(),
-                'path_to_root'     => $this->getPathToRoot($node),
-                'breadcrumbs'      => $this->getBreadcrumbs($node),
-                'date'             => $this->date,
-                'version'          => $this->version,
-                'runtime_name'     => $runtime->getName(),
-                'runtime_version'  => $runtime->getVersion(),
-                'runtime_link'     => $runtime->getVendorUrl(),
-                'generator'        => $this->generator,
-                'low_upper_bound'  => $this->lowUpperBound,
-                'high_lower_bound' => $this->highLowerBound
-            )
-        );
-    }
-
-    protected function getBreadcrumbs(PHP_CodeCoverage_Report_Node $node)
-    {
-        $breadcrumbs = '';
-        $path        = $node->getPathAsArray();
-        $pathToRoot  = array();
-        $max         = count($path);
-
-        if ($node instanceof PHP_CodeCoverage_Report_Node_File) {
-            $max--;
-        }
-
-        for ($i = 0; $i < $max; $i++) {
-            $pathToRoot[] = str_repeat('../', $i);
-        }
-
-        foreach ($path as $step) {
-            if ($step !== $node) {
-                $breadcrumbs .= $this->getInactiveBreadcrumb(
-                    $step,
-                    array_pop($pathToRoot)
-                );
-            } else {
-                $breadcrumbs .= $this->getActiveBreadcrumb($step);
-            }
-        }
-
-        return $breadcrumbs;
-    }
-
-    protected function getActiveBreadcrumb(PHP_CodeCoverage_Report_Node $node)
-    {
-        $buffer = sprintf(
-            '        <li class="active">%s</li>' . "\n",
-            $node->getName()
-        );
-
-        if ($node instanceof PHP_CodeCoverage_Report_Node_Directory) {
-            $buffer .= '        <li>(<a href="dashboard.html">Dashboard</a>)</li>' . "\n";
-        }
-
-        return $buffer;
-    }
-
-    protected function getInactiveBreadcrumb(PHP_CodeCoverage_Report_Node $node, $pathToRoot)
-    {
-        return sprintf(
-            '        <li><a href="%sindex.html">%s</a></li>' . "\n",
-            $pathToRoot,
-            $node->getName()
-        );
-    }
-
-    protected function getPathToRoot(PHP_CodeCoverage_Report_Node $node)
-    {
-        $id    = $node->getId();
-        $depth = substr_count($id, '/');
-
-        if ($id != 'index' &&
-            $node instanceof PHP_CodeCoverage_Report_Node_Directory) {
-            $depth++;
-        }
-
-        return str_repeat('../', $depth);
-    }
-
-    protected function getCoverageBar($percent)
-    {
-        $level = $this->getColorLevel($percent);
-
-        $template = new Text_Template(
-            $this->templatePath . 'coverage_bar.html',
-            '{{',
-            '}}'
-        );
-
-        $template->setVar(array('level' => $level, 'percent' => sprintf('%.2F', $percent)));
-
-        return $template->render();
-    }
-
-    /**
-     * @param  int    $percent
-     * @return string
-     */
-    protected function getColorLevel($percent)
-    {
-        if ($percent <= $this->lowUpperBound) {
-            return 'danger';
-        } elseif ($percent > $this->lowUpperBound &&
-            $percent <  $this->highLowerBound) {
-            return 'warning';
-        } else {
-            return 'success';
-        }
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php
deleted file mode 100644
index f648097..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php
+++ /dev/null
@@ -1,295 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Renders the dashboard for a PHP_CodeCoverage_Report_Node_Directory node.
- *
- * @since Class available since Release 1.1.0
- */
-class PHP_CodeCoverage_Report_HTML_Renderer_Dashboard extends PHP_CodeCoverage_Report_HTML_Renderer
-{
-    /**
-     * @param PHP_CodeCoverage_Report_Node_Directory $node
-     * @param string                                 $file
-     */
-    public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file)
-    {
-        $classes  = $node->getClassesAndTraits();
-        $template = new Text_Template(
-            $this->templatePath . 'dashboard.html',
-            '{{',
-            '}}'
-        );
-
-        $this->setCommonTemplateVariables($template, $node);
-
-        $baseLink             = $node->getId() . '/';
-        $complexity           = $this->complexity($classes, $baseLink);
-        $coverageDistribution = $this->coverageDistribution($classes);
-        $insufficientCoverage = $this->insufficientCoverage($classes, $baseLink);
-        $projectRisks         = $this->projectRisks($classes, $baseLink);
-
-        $template->setVar(
-            array(
-                'insufficient_coverage_classes' => $insufficientCoverage['class'],
-                'insufficient_coverage_methods' => $insufficientCoverage['method'],
-                'project_risks_classes'         => $projectRisks['class'],
-                'project_risks_methods'         => $projectRisks['method'],
-                'complexity_class'              => $complexity['class'],
-                'complexity_method'             => $complexity['method'],
-                'class_coverage_distribution'   => $coverageDistribution['class'],
-                'method_coverage_distribution'  => $coverageDistribution['method']
-            )
-        );
-
-        $template->renderTo($file);
-    }
-
-    /**
-     * Returns the data for the Class/Method Complexity charts.
-     *
-     * @param  array  $classes
-     * @param  string $baseLink
-     * @return array
-     */
-    protected function complexity(array $classes, $baseLink)
-    {
-        $result = array('class' => array(), 'method' => array());
-
-        foreach ($classes as $className => $class) {
-            foreach ($class['methods'] as $methodName => $method) {
-                if ($className != '*') {
-                    $methodName = $className . '::' . $methodName;
-                }
-
-                $result['method'][] = array(
-                    $method['coverage'],
-                    $method['ccn'],
-                    sprintf(
-                        '<a href="%s">%s</a>',
-                        str_replace($baseLink, '', $method['link']),
-                        $methodName
-                    )
-                );
-            }
-
-            $result['class'][] = array(
-                $class['coverage'],
-                $class['ccn'],
-                sprintf(
-                    '<a href="%s">%s</a>',
-                    str_replace($baseLink, '', $class['link']),
-                    $className
-                )
-            );
-        }
-
-        return array(
-            'class'  => json_encode($result['class']),
-            'method' => json_encode($result['method'])
-        );
-    }
-
-    /**
-     * Returns the data for the Class / Method Coverage Distribution chart.
-     *
-     * @param  array $classes
-     * @return array
-     */
-    protected function coverageDistribution(array $classes)
-    {
-        $result = array(
-            'class' => array(
-                '0%'      => 0,
-                '0-10%'   => 0,
-                '10-20%'  => 0,
-                '20-30%'  => 0,
-                '30-40%'  => 0,
-                '40-50%'  => 0,
-                '50-60%'  => 0,
-                '60-70%'  => 0,
-                '70-80%'  => 0,
-                '80-90%'  => 0,
-                '90-100%' => 0,
-                '100%'    => 0
-            ),
-            'method' => array(
-                '0%'      => 0,
-                '0-10%'   => 0,
-                '10-20%'  => 0,
-                '20-30%'  => 0,
-                '30-40%'  => 0,
-                '40-50%'  => 0,
-                '50-60%'  => 0,
-                '60-70%'  => 0,
-                '70-80%'  => 0,
-                '80-90%'  => 0,
-                '90-100%' => 0,
-                '100%'    => 0
-            )
-        );
-
-        foreach ($classes as $class) {
-            foreach ($class['methods'] as $methodName => $method) {
-                if ($method['coverage'] == 0) {
-                    $result['method']['0%']++;
-                } elseif ($method['coverage'] == 100) {
-                    $result['method']['100%']++;
-                } else {
-                    $key = floor($method['coverage'] / 10) * 10;
-                    $key = $key . '-' . ($key + 10) . '%';
-                    $result['method'][$key]++;
-                }
-            }
-
-            if ($class['coverage'] == 0) {
-                $result['class']['0%']++;
-            } elseif ($class['coverage'] == 100) {
-                $result['class']['100%']++;
-            } else {
-                $key = floor($class['coverage'] / 10) * 10;
-                $key = $key . '-' . ($key + 10) . '%';
-                $result['class'][$key]++;
-            }
-        }
-
-        return array(
-            'class'  => json_encode(array_values($result['class'])),
-            'method' => json_encode(array_values($result['method']))
-        );
-    }
-
-    /**
-     * Returns the classes / methods with insufficient coverage.
-     *
-     * @param  array  $classes
-     * @param  string $baseLink
-     * @return array
-     */
-    protected function insufficientCoverage(array $classes, $baseLink)
-    {
-        $leastTestedClasses = array();
-        $leastTestedMethods = array();
-        $result             = array('class' => '', 'method' => '');
-
-        foreach ($classes as $className => $class) {
-            foreach ($class['methods'] as $methodName => $method) {
-                if ($method['coverage'] < $this->highLowerBound) {
-                    if ($className != '*') {
-                        $key = $className . '::' . $methodName;
-                    } else {
-                        $key = $methodName;
-                    }
-
-                    $leastTestedMethods[$key] = $method['coverage'];
-                }
-            }
-
-            if ($class['coverage'] < $this->highLowerBound) {
-                $leastTestedClasses[$className] = $class['coverage'];
-            }
-        }
-
-        asort($leastTestedClasses);
-        asort($leastTestedMethods);
-
-        foreach ($leastTestedClasses as $className => $coverage) {
-            $result['class'] .= sprintf(
-                '       <tr><td><a href="%s">%s</a></td><td class="text-right">%d%%</td></tr>' . "\n",
-                str_replace($baseLink, '', $classes[$className]['link']),
-                $className,
-                $coverage
-            );
-        }
-
-        foreach ($leastTestedMethods as $methodName => $coverage) {
-            list($class, $method) = explode('::', $methodName);
-
-            $result['method'] .= sprintf(
-                '       <tr><td><a href="%s"><abbr title="%s">%s</abbr></a></td><td class="text-right">%d%%</td></tr>' . "\n",
-                str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']),
-                $methodName,
-                $method,
-                $coverage
-            );
-        }
-
-        return $result;
-    }
-
-    /**
-     * Returns the project risks according to the CRAP index.
-     *
-     * @param  array  $classes
-     * @param  string $baseLink
-     * @return array
-     */
-    protected function projectRisks(array $classes, $baseLink)
-    {
-        $classRisks  = array();
-        $methodRisks = array();
-        $result      = array('class' => '', 'method' => '');
-
-        foreach ($classes as $className => $class) {
-            foreach ($class['methods'] as $methodName => $method) {
-                if ($method['coverage'] < $this->highLowerBound &&
-                    $method['ccn'] > 1) {
-                    if ($className != '*') {
-                        $key = $className . '::' . $methodName;
-                    } else {
-                        $key = $methodName;
-                    }
-
-                    $methodRisks[$key] = $method['crap'];
-                }
-            }
-
-            if ($class['coverage'] < $this->highLowerBound &&
-                $class['ccn'] > count($class['methods'])) {
-                $classRisks[$className] = $class['crap'];
-            }
-        }
-
-        arsort($classRisks);
-        arsort($methodRisks);
-
-        foreach ($classRisks as $className => $crap) {
-            $result['class'] .= sprintf(
-                '       <tr><td><a href="%s">%s</a></td><td class="text-right">%d</td></tr>' . "\n",
-                str_replace($baseLink, '', $classes[$className]['link']),
-                $className,
-                $crap
-            );
-        }
-
-        foreach ($methodRisks as $methodName => $crap) {
-            list($class, $method) = explode('::', $methodName);
-
-            $result['method'] .= sprintf(
-                '       <tr><td><a href="%s"><abbr title="%s">%s</abbr></a></td><td class="text-right">%d</td></tr>' . "\n",
-                str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']),
-                $methodName,
-                $method,
-                $crap
-            );
-        }
-
-        return $result;
-    }
-
-    protected function getActiveBreadcrumb(PHP_CodeCoverage_Report_Node $node)
-    {
-        return sprintf(
-            '        <li><a href="index.html">%s</a></li>' . "\n" .
-            '        <li class="active">(Dashboard)</li>' . "\n",
-            $node->getName()
-        );
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php
deleted file mode 100644
index 4415c52..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Renders a PHP_CodeCoverage_Report_Node_Directory node.
- *
- * @since Class available since Release 1.1.0
- */
-class PHP_CodeCoverage_Report_HTML_Renderer_Directory extends PHP_CodeCoverage_Report_HTML_Renderer
-{
-    /**
-     * @param PHP_CodeCoverage_Report_Node_Directory $node
-     * @param string                                 $file
-     */
-    public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file)
-    {
-        $template = new Text_Template($this->templatePath . 'directory.html', '{{', '}}');
-
-        $this->setCommonTemplateVariables($template, $node);
-
-        $items = $this->renderItem($node, true);
-
-        foreach ($node->getDirectories() as $item) {
-            $items .= $this->renderItem($item);
-        }
-
-        foreach ($node->getFiles() as $item) {
-            $items .= $this->renderItem($item);
-        }
-
-        $template->setVar(
-            array(
-                'id'    => $node->getId(),
-                'items' => $items
-            )
-        );
-
-        $template->renderTo($file);
-    }
-
-    /**
-     * @param  PHP_CodeCoverage_Report_Node $item
-     * @param  bool                         $total
-     * @return string
-     */
-    protected function renderItem(PHP_CodeCoverage_Report_Node $item, $total = false)
-    {
-        $data = array(
-            'numClasses'                   => $item->getNumClassesAndTraits(),
-            'numTestedClasses'             => $item->getNumTestedClassesAndTraits(),
-            'numMethods'                   => $item->getNumMethods(),
-            'numTestedMethods'             => $item->getNumTestedMethods(),
-            'linesExecutedPercent'         => $item->getLineExecutedPercent(false),
-            'linesExecutedPercentAsString' => $item->getLineExecutedPercent(),
-            'numExecutedLines'             => $item->getNumExecutedLines(),
-            'numExecutableLines'           => $item->getNumExecutableLines(),
-            'testedMethodsPercent'         => $item->getTestedMethodsPercent(false),
-            'testedMethodsPercentAsString' => $item->getTestedMethodsPercent(),
-            'testedClassesPercent'         => $item->getTestedClassesAndTraitsPercent(false),
-            'testedClassesPercentAsString' => $item->getTestedClassesAndTraitsPercent()
-        );
-
-        if ($total) {
-            $data['name'] = 'Total';
-        } else {
-            if ($item instanceof PHP_CodeCoverage_Report_Node_Directory) {
-                $data['name'] = sprintf(
-                    '<a href="%s/index.html">%s</a>',
-                    $item->getName(),
-                    $item->getName()
-                );
-
-                $data['icon'] = '<span class="glyphicon glyphicon-folder-open"></span> ';
-            } else {
-                $data['name'] = sprintf(
-                    '<a href="%s.html">%s</a>',
-                    $item->getName(),
-                    $item->getName()
-                );
-
-                $data['icon'] = '<span class="glyphicon glyphicon-file"></span> ';
-            }
-        }
-
-        return $this->renderItemTemplate(
-            new Text_Template($this->templatePath . 'directory_item.html', '{{', '}}'),
-            $data
-        );
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php
deleted file mode 100644
index d52345d..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php
+++ /dev/null
@@ -1,556 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-// @codeCoverageIgnoreStart
-if (!defined('T_TRAIT')) {
-    define('T_TRAIT', 1001);
-}
-
-if (!defined('T_INSTEADOF')) {
-    define('T_INSTEADOF', 1002);
-}
-
-if (!defined('T_CALLABLE')) {
-    define('T_CALLABLE', 1003);
-}
-
-if (!defined('T_FINALLY')) {
-    define('T_FINALLY', 1004);
-}
-
-if (!defined('T_YIELD')) {
-    define('T_YIELD', 1005);
-}
-// @codeCoverageIgnoreEnd
-
-/**
- * Renders a PHP_CodeCoverage_Report_Node_File node.
- *
- * @since Class available since Release 1.1.0
- */
-class PHP_CodeCoverage_Report_HTML_Renderer_File extends PHP_CodeCoverage_Report_HTML_Renderer
-{
-    /**
-     * @var int
-     */
-    private $htmlspecialcharsFlags;
-
-    /**
-     * Constructor.
-     *
-     * @param string $templatePath
-     * @param string $generator
-     * @param string $date
-     * @param int    $lowUpperBound
-     * @param int    $highLowerBound
-     */
-    public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound)
-    {
-        parent::__construct(
-            $templatePath,
-            $generator,
-            $date,
-            $lowUpperBound,
-            $highLowerBound
-        );
-
-        $this->htmlspecialcharsFlags = ENT_COMPAT;
-
-        if (PHP_VERSION_ID >= 50400 && defined('ENT_SUBSTITUTE')) {
-            $this->htmlspecialcharsFlags = $this->htmlspecialcharsFlags | ENT_HTML401 | ENT_SUBSTITUTE;
-        }
-    }
-
-    /**
-     * @param PHP_CodeCoverage_Report_Node_File $node
-     * @param string                            $file
-     */
-    public function render(PHP_CodeCoverage_Report_Node_File $node, $file)
-    {
-        $template = new Text_Template($this->templatePath . 'file.html', '{{', '}}');
-
-        $template->setVar(
-            array(
-                'items' => $this->renderItems($node),
-                'lines' => $this->renderSource($node)
-            )
-        );
-
-        $this->setCommonTemplateVariables($template, $node);
-
-        $template->renderTo($file);
-    }
-
-    /**
-     * @param  PHP_CodeCoverage_Report_Node_File $node
-     * @return string
-     */
-    protected function renderItems(PHP_CodeCoverage_Report_Node_File $node)
-    {
-        $template = new Text_Template($this->templatePath . 'file_item.html', '{{', '}}');
-
-        $methodItemTemplate = new Text_Template(
-            $this->templatePath . 'method_item.html',
-            '{{',
-            '}}'
-        );
-
-        $items = $this->renderItemTemplate(
-            $template,
-            array(
-                'name'                         => 'Total',
-                'numClasses'                   => $node->getNumClassesAndTraits(),
-                'numTestedClasses'             => $node->getNumTestedClassesAndTraits(),
-                'numMethods'                   => $node->getNumMethods(),
-                'numTestedMethods'             => $node->getNumTestedMethods(),
-                'linesExecutedPercent'         => $node->getLineExecutedPercent(false),
-                'linesExecutedPercentAsString' => $node->getLineExecutedPercent(),
-                'numExecutedLines'             => $node->getNumExecutedLines(),
-                'numExecutableLines'           => $node->getNumExecutableLines(),
-                'testedMethodsPercent'         => $node->getTestedMethodsPercent(false),
-                'testedMethodsPercentAsString' => $node->getTestedMethodsPercent(),
-                'testedClassesPercent'         => $node->getTestedClassesAndTraitsPercent(false),
-                'testedClassesPercentAsString' => $node->getTestedClassesAndTraitsPercent(),
-                'crap'                         => '<abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr>'
-            )
-        );
-
-        $items .= $this->renderFunctionItems(
-            $node->getFunctions(),
-            $methodItemTemplate
-        );
-
-        $items .= $this->renderTraitOrClassItems(
-            $node->getTraits(),
-            $template,
-            $methodItemTemplate
-        );
-
-        $items .= $this->renderTraitOrClassItems(
-            $node->getClasses(),
-            $template,
-            $methodItemTemplate
-        );
-
-        return $items;
-    }
-
-    /**
-     * @param  array         $items
-     * @param  Text_Template $template
-     * @param  Text_Template $methodItemTemplate
-     * @return string
-     */
-    protected function renderTraitOrClassItems(array $items, Text_Template $template, Text_Template $methodItemTemplate)
-    {
-        if (empty($items)) {
-            return '';
-        }
-
-        $buffer = '';
-
-        foreach ($items as $name => $item) {
-            $numMethods       = count($item['methods']);
-            $numTestedMethods = 0;
-
-            foreach ($item['methods'] as $method) {
-                if ($method['executedLines'] == $method['executableLines']) {
-                    $numTestedMethods++;
-                }
-            }
-
-            $buffer .= $this->renderItemTemplate(
-                $template,
-                array(
-                    'name'                         => $name,
-                    'numClasses'                   => 1,
-                    'numTestedClasses'             => $numTestedMethods == $numMethods ? 1 : 0,
-                    'numMethods'                   => $numMethods,
-                    'numTestedMethods'             => $numTestedMethods,
-                    'linesExecutedPercent'         => PHP_CodeCoverage_Util::percent(
-                        $item['executedLines'],
-                        $item['executableLines'],
-                        false
-                    ),
-                    'linesExecutedPercentAsString' => PHP_CodeCoverage_Util::percent(
-                        $item['executedLines'],
-                        $item['executableLines'],
-                        true
-                    ),
-                    'numExecutedLines'             => $item['executedLines'],
-                    'numExecutableLines'           => $item['executableLines'],
-                    'testedMethodsPercent'         => PHP_CodeCoverage_Util::percent(
-                        $numTestedMethods,
-                        $numMethods,
-                        false
-                    ),
-                    'testedMethodsPercentAsString' => PHP_CodeCoverage_Util::percent(
-                        $numTestedMethods,
-                        $numMethods,
-                        true
-                    ),
-                    'testedClassesPercent'         => PHP_CodeCoverage_Util::percent(
-                        $numTestedMethods == $numMethods ? 1 : 0,
-                        1,
-                        false
-                    ),
-                    'testedClassesPercentAsString' => PHP_CodeCoverage_Util::percent(
-                        $numTestedMethods == $numMethods ? 1 : 0,
-                        1,
-                        true
-                    ),
-                    'crap'                         => $item['crap']
-                )
-            );
-
-            foreach ($item['methods'] as $method) {
-                $buffer .= $this->renderFunctionOrMethodItem(
-                    $methodItemTemplate,
-                    $method,
-                    '&nbsp;'
-                );
-            }
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * @param  array         $functions
-     * @param  Text_Template $template
-     * @return string
-     */
-    protected function renderFunctionItems(array $functions, Text_Template $template)
-    {
-        if (empty($functions)) {
-            return '';
-        }
-
-        $buffer = '';
-
-        foreach ($functions as $function) {
-            $buffer .= $this->renderFunctionOrMethodItem(
-                $template,
-                $function
-            );
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * @param  Text_Template $template
-     * @return string
-     */
-    protected function renderFunctionOrMethodItem(Text_Template $template, array $item, $indent = '')
-    {
-        $numTestedItems = $item['executedLines'] == $item['executableLines'] ? 1 : 0;
-
-        return $this->renderItemTemplate(
-            $template,
-            array(
-                'name'                         => sprintf(
-                    '%s<a href="#%d"><abbr title="%s">%s</abbr></a>',
-                    $indent,
-                    $item['startLine'],
-                    htmlspecialchars($item['signature']),
-                    isset($item['functionName']) ? $item['functionName'] : $item['methodName']
-                ),
-                'numMethods'                   => 1,
-                'numTestedMethods'             => $numTestedItems,
-                'linesExecutedPercent'         => PHP_CodeCoverage_Util::percent(
-                    $item['executedLines'],
-                    $item['executableLines'],
-                    false
-                ),
-                'linesExecutedPercentAsString' => PHP_CodeCoverage_Util::percent(
-                    $item['executedLines'],
-                    $item['executableLines'],
-                    true
-                ),
-                'numExecutedLines'             => $item['executedLines'],
-                'numExecutableLines'           => $item['executableLines'],
-                'testedMethodsPercent'         => PHP_CodeCoverage_Util::percent(
-                    $numTestedItems,
-                    1,
-                    false
-                ),
-                'testedMethodsPercentAsString' => PHP_CodeCoverage_Util::percent(
-                    $numTestedItems,
-                    1,
-                    true
-                ),
-                'crap'                         => $item['crap']
-            )
-        );
-    }
-
-    /**
-     * @param  PHP_CodeCoverage_Report_Node_File $node
-     * @return string
-     */
-    protected function renderSource(PHP_CodeCoverage_Report_Node_File $node)
-    {
-        $coverageData = $node->getCoverageData();
-        $testData     = $node->getTestData();
-        $codeLines    = $this->loadFile($node->getPath());
-        $lines        = '';
-        $i            = 1;
-
-        foreach ($codeLines as $line) {
-            $trClass        = '';
-            $popoverContent = '';
-            $popoverTitle   = '';
-
-            if (array_key_exists($i, $coverageData)) {
-                $numTests = count($coverageData[$i]);
-
-                if ($coverageData[$i] === null) {
-                    $trClass = ' class="warning"';
-                } elseif ($numTests == 0) {
-                    $trClass = ' class="danger"';
-                } else {
-                    $lineCss        = 'covered-by-large-tests';
-                    $popoverContent = '<ul>';
-
-                    if ($numTests > 1) {
-                        $popoverTitle = $numTests . ' tests cover line ' . $i;
-                    } else {
-                        $popoverTitle = '1 test covers line ' . $i;
-                    }
-
-                    foreach ($coverageData[$i] as $test) {
-                        if ($lineCss == 'covered-by-large-tests' && $testData[$test]['size'] == 'medium') {
-                            $lineCss = 'covered-by-medium-tests';
-                        } elseif ($testData[$test]['size'] == 'small') {
-                            $lineCss = 'covered-by-small-tests';
-                        }
-
-                        switch ($testData[$test]['status']) {
-                            case 0:
-                                switch ($testData[$test]['size']) {
-                                    case 'small':
-                                        $testCSS = ' class="covered-by-small-tests"';
-                                        break;
-
-                                    case 'medium':
-                                        $testCSS = ' class="covered-by-medium-tests"';
-                                        break;
-
-                                    default:
-                                        $testCSS = ' class="covered-by-large-tests"';
-                                        break;
-                                }
-                                break;
-
-                            case 1:
-                            case 2:
-                                $testCSS = ' class="warning"';
-                                break;
-
-                            case 3:
-                                $testCSS = ' class="danger"';
-                                break;
-
-                            case 4:
-                                $testCSS = ' class="danger"';
-                                break;
-
-                            default:
-                                $testCSS = '';
-                        }
-
-                        $popoverContent .= sprintf(
-                            '<li%s>%s</li>',
-                            $testCSS,
-                            htmlspecialchars($test)
-                        );
-                    }
-
-                    $popoverContent .= '</ul>';
-                    $trClass         = ' class="' . $lineCss . ' popin"';
-                }
-            }
-
-            if (!empty($popoverTitle)) {
-                $popover = sprintf(
-                    ' data-title="%s" data-content="%s" data-placement="bottom" data-html="true"',
-                    $popoverTitle,
-                    htmlspecialchars($popoverContent)
-                );
-            } else {
-                $popover = '';
-            }
-
-            $lines .= sprintf(
-                '     <tr%s%s><td><div align="right"><a name="%d"></a><a href="#%d">%d</a></div></td><td class="codeLine">%s</td></tr>' . "\n",
-                $trClass,
-                $popover,
-                $i,
-                $i,
-                $i,
-                $line
-            );
-
-            $i++;
-        }
-
-        return $lines;
-    }
-
-    /**
-     * @param  string $file
-     * @return array
-     */
-    protected function loadFile($file)
-    {
-        $buffer              = file_get_contents($file);
-        $tokens              = token_get_all($buffer);
-        $result              = array('');
-        $i                   = 0;
-        $stringFlag          = false;
-        $fileEndsWithNewLine = substr($buffer, -1) == "\n";
-
-        unset($buffer);
-
-        foreach ($tokens as $j => $token) {
-            if (is_string($token)) {
-                if ($token === '"' && $tokens[$j - 1] !== '\\') {
-                    $result[$i] .= sprintf(
-                        '<span class="string">%s</span>',
-                        htmlspecialchars($token)
-                    );
-
-                    $stringFlag = !$stringFlag;
-                } else {
-                    $result[$i] .= sprintf(
-                        '<span class="keyword">%s</span>',
-                        htmlspecialchars($token)
-                    );
-                }
-
-                continue;
-            }
-
-            list($token, $value) = $token;
-
-            $value = str_replace(
-                array("\t", ' '),
-                array('&nbsp;&nbsp;&nbsp;&nbsp;', '&nbsp;'),
-                htmlspecialchars($value, $this->htmlspecialcharsFlags)
-            );
-
-            if ($value === "\n") {
-                $result[++$i] = '';
-            } else {
-                $lines = explode("\n", $value);
-
-                foreach ($lines as $jj => $line) {
-                    $line = trim($line);
-
-                    if ($line !== '') {
-                        if ($stringFlag) {
-                            $colour = 'string';
-                        } else {
-                            switch ($token) {
-                                case T_INLINE_HTML:
-                                    $colour = 'html';
-                                    break;
-
-                                case T_COMMENT:
-                                case T_DOC_COMMENT:
-                                    $colour = 'comment';
-                                    break;
-
-                                case T_ABSTRACT:
-                                case T_ARRAY:
-                                case T_AS:
-                                case T_BREAK:
-                                case T_CALLABLE:
-                                case T_CASE:
-                                case T_CATCH:
-                                case T_CLASS:
-                                case T_CLONE:
-                                case T_CONTINUE:
-                                case T_DEFAULT:
-                                case T_ECHO:
-                                case T_ELSE:
-                                case T_ELSEIF:
-                                case T_EMPTY:
-                                case T_ENDDECLARE:
-                                case T_ENDFOR:
-                                case T_ENDFOREACH:
-                                case T_ENDIF:
-                                case T_ENDSWITCH:
-                                case T_ENDWHILE:
-                                case T_EXIT:
-                                case T_EXTENDS:
-                                case T_FINAL:
-                                case T_FINALLY:
-                                case T_FOREACH:
-                                case T_FUNCTION:
-                                case T_GLOBAL:
-                                case T_IF:
-                                case T_IMPLEMENTS:
-                                case T_INCLUDE:
-                                case T_INCLUDE_ONCE:
-                                case T_INSTANCEOF:
-                                case T_INSTEADOF:
-                                case T_INTERFACE:
-                                case T_ISSET:
-                                case T_LOGICAL_AND:
-                                case T_LOGICAL_OR:
-                                case T_LOGICAL_XOR:
-                                case T_NAMESPACE:
-                                case T_NEW:
-                                case T_PRIVATE:
-                                case T_PROTECTED:
-                                case T_PUBLIC:
-                                case T_REQUIRE:
-                                case T_REQUIRE_ONCE:
-                                case T_RETURN:
-                                case T_STATIC:
-                                case T_THROW:
-                                case T_TRAIT:
-                                case T_TRY:
-                                case T_UNSET:
-                                case T_USE:
-                                case T_VAR:
-                                case T_WHILE:
-                                case T_YIELD:
-                                    $colour = 'keyword';
-                                    break;
-
-                                default:
-                                    $colour = 'default';
-                            }
-                        }
-
-                        $result[$i] .= sprintf(
-                            '<span class="%s">%s</span>',
-                            $colour,
-                            $line
-                        );
-                    }
-
-                    if (isset($lines[$jj + 1])) {
-                        $result[++$i] = '';
-                    }
-                }
-            }
-        }
-
-        if ($fileEndsWithNewLine) {
-            unset($result[count($result)-1]);
-        }
-
-        return $result;
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/coverage_bar.html.dist b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/coverage_bar.html.dist
deleted file mode 100644
index 5a09c35..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/coverage_bar.html.dist
+++ /dev/null
@@ -1,5 +0,0 @@
-       <div class="progress">
-         <div class="progress-bar progress-bar-{{level}}" role="progressbar" aria-valuenow="{{percent}}" aria-valuemin="0" aria-valuemax="100" style="width: {{percent}}%">
-           <span class="sr-only">{{percent}}% covered ({{level}})</span>
-         </div>
-       </div>
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css
deleted file mode 100644
index cd1c616..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
- * Bootstrap v3.3.4 (http://getbootstrap.com)
- * Copyright 2011-2015 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px \9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px)and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px)and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px)and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.min.css b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.min.css
deleted file mode 100644
index 7a6f7fe..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.nvd3 .nv-axis{pointer-events:none;opacity:1}.nvd3 .nv-axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{fill:none;stroke:#e5e5e5;shape-rendering:crispEdges}.nvd3 .nv-axis .zero line,.nvd3 .nv-axis line.zero{stroke-opacity:.75}.nvd3 .nv-axis .nv-axisMaxMin text{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-axis.nv-disabled{opacity:0}.nvd3 .nv-bars rect{fill-opacity:.75;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-bars rect.hover{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:rgba(0,0,0,0)}.nvd3 .nv-bars .hover text{fill:rgba(0,0,0,1)}.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect,.nvd3 .nv-discretebar .nv-groups rect{stroke-opacity:0;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover{fill-opacity:1}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:rgba(0,0,0,1);stroke:rgba(0,0,0,0)}.nvd3 .nv-boxplot circle{fill-opacity:.5}.nvd3 .nv-boxplot circle:hover{fill-opacity:1}.nvd3 .nv-boxplot rect:hover{fill-opacity:1}.nvd3 line.nv-boxplot-median{stroke:#000}.nv-boxplot-tick:hover{stroke-width:2.5px}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-measure:hover{fill-opacity:1}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-candlestickBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect{stroke:#d62728;fill:#d62728}.with-transitions .nv-candlestickBar .nv-ticks .nv-tick{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-candlestickBar .nv-ticks line{stroke:#333}.nvd3 .nv-legend .nv-disabled rect{}.nvd3 .nv-check-box .nv-box{fill-opacity:0;stroke-width:2}.nvd3 .nv-check-box .nv-check{fill-opacity:0;stroke-width:4}.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3.nv-linePlusBar .nv-bar rect:hover{fill-opacity:1}.nvd3 .nv-groups path.nv-line{fill:none}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point{fill-opacity:0;stroke-opacity:0}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.with-transitions .nvd3 .nv-groups .nv-point{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-scatter .nv-groups .nv-point.hover,.nvd3 .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}svg.nvd3-svg{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;display:block;width:100%;height:100%}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nvd3 text{font:400 12px Arial}.nvd3 .title{font:700 14px Arial}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .extent{fill-opacity:.125;shape-rendering:crispEdges}.nv-brush .resize path{fill:#eee;stroke:#666}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .nv-disabled circle{fill-opacity:0}.nvd3 .nv-brush .extent{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3 .background path{fill:none;stroke:#EEE;stroke-opacity:.4;shape-rendering:crispEdges}.nvd3 .foreground path{fill:none;stroke-opacity:.7}.nvd3 .nv-parallelCoordinates-brush .extent{fill:#fff;fill-opacity:.6;stroke:gray;shape-rendering:crispEdges}.nvd3 .nv-parallelCoordinates .hover{fill-opacity:1;stroke-width:3px}.nvd3 .missingValuesline line{fill:none;stroke:#000;stroke-width:1;stroke-opacity:1;stroke-dasharray:5,5}.nvd3.nv-pie path{stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-pie .nv-pie-title{font-size:24px;fill:rgba(19,196,249,.59)}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3.nv-pie path{stroke:#fff;stroke-width:1px;stroke-opacity:1}.nvd3.nv-pie .hover path{fill-opacity:.7}.nvd3.nv-pie .nv-label{pointer-events:none}.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3 .nv-scatter .nv-point.hover{fill-opacity:1}.nv-noninteractive{pointer-events:none}.nv-distx,.nv-disty{pointer-events:none}.nvd3.nv-sparkline path{fill:none}.nvd3.nv-sparklineplus g.nv-hoverValue{pointer-events:none}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3 .nv-hoverArea{fill-opacity:0;stroke-opacity:0}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvtooltip{position:absolute;background-color:rgba(255,255,255,1);color:rgba(0,0,0,1);padding:1px;border:1px solid rgba(0,0,0,.2);z-index:10000;display:block;font-family:Arial;font-size:13px;text-align:left;pointer-events:none;white-space:nowrap;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nvtooltip{background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.5);border-radius:4px}.nvtooltip.with-transitions,.with-transitions .nvtooltip{transition:opacity 50ms linear;-moz-transition:opacity 50ms linear;-webkit-transition:opacity 50ms linear;transition-delay:200ms;-moz-transition-delay:200ms;-webkit-transition-delay:200ms}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{margin:0;padding:4px 14px;line-height:18px;font-weight:400;background-color:rgba(247,247,247,.75);color:rgba(0,0,0,1);text-align:center;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.nvtooltip p{margin:0;padding:5px 14px;text-align:center}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.key{font-weight:400}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{width:8px;height:8px;vertical-align:middle}.nvtooltip table td.legend-color-guide div{width:12px;height:12px;border:1px solid #999}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{pointer-events:none;display:none}.nvd3 .nv-interactiveGuideLine{pointer-events:none}.nvd3 line.nv-guideline{stroke:#ccc}
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/style.css b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/style.css
deleted file mode 100644
index 824fb31..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/style.css
+++ /dev/null
@@ -1,122 +0,0 @@
-body {
- padding-top: 10px;
-}
-
-.popover {
- max-width: none;
-}
-
-.glyphicon {
- margin-right:.25em;
-}
-
-.table-bordered>thead>tr>td {
- border-bottom-width: 1px;
-}
-
-.table tbody>tr>td, .table thead>tr>td {
- padding-top: 3px;
- padding-bottom: 3px;
-}
-
-.table-condensed tbody>tr>td {
- padding-top: 0;
- padding-bottom: 0;
-}
-
-.table .progress {
- margin-bottom: inherit;
-}
-
-.table-borderless th, .table-borderless td {
- border: 0 !important;
-}
-
-.table tbody tr.covered-by-large-tests, li.covered-by-large-tests, tr.success, td.success, li.success, span.success {
- background-color: #dff0d8;
-}
-
-.table tbody tr.covered-by-medium-tests, li.covered-by-medium-tests {
- background-color: #c3e3b5;
-}
-
-.table tbody tr.covered-by-small-tests, li.covered-by-small-tests {
- background-color: #99cb84;
-}
-
-.table tbody tr.danger, .table tbody td.danger, li.danger, span.danger {
- background-color: #f2dede;
-}
-
-.table tbody td.warning, li.warning, span.warning {
- background-color: #fcf8e3;
-}
-
-.table tbody td.info {
- background-color: #d9edf7;
-}
-
-td.big {
- width: 117px;
-}
-
-td.small {
-}
-
-td.codeLine {
- font-family: monospace;
- white-space: pre;
-}
-
-td span.comment {
- color: #888a85;
-}
-
-td span.default {
- color: #2e3436;
-}
-
-td span.html {
- color: #888a85;
-}
-
-td span.keyword {
- color: #2e3436;
- font-weight: bold;
-}
-
-pre span.string {
- color: #2e3436;
-}
-
-span.success, span.warning, span.danger {
- margin-right: 2px;
- padding-left: 10px;
- padding-right: 10px;
- text-align: center;
-}
-
-#classCoverageDistribution, #classComplexity {
- height: 200px;
- width: 475px;
-}
-
-#toplink {
- position: fixed;
- left: 5px;
- bottom: 5px;
- outline: 0;
-}
-
-svg text {
- font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;
- font-size: 11px;
- color: #666;
- fill: #666;
-}
-
-.scrollbox {
- height:245px;
- overflow-x:hidden;
- overflow-y:scroll;
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist
deleted file mode 100644
index ed18988..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist
+++ /dev/null
@@ -1,284 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
-  <meta charset="UTF-8">
-  <title>Dashboard for {{full_path}}</title>
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  <link href="{{path_to_root}}css/bootstrap.min.css" rel="stylesheet">
-  <link href="{{path_to_root}}css/nv.d3.min.css" rel="stylesheet">
-  <link href="{{path_to_root}}css/style.css" rel="stylesheet">
-  <!--[if lt IE 9]>
-  <script src="{{path_to_root}}js/html5shiv.min.js"></script>
-  <script src="{{path_to_root}}js/respond.min.js"></script>
-  <![endif]-->
- </head>
- <body>
-  <header>
-   <div class="container">
-    <div class="row">
-     <div class="col-md-12">
-      <ol class="breadcrumb">
-{{breadcrumbs}}
-      </ol>
-     </div>
-    </div>
-   </div>
-  </header>
-  <div class="container">
-   <div class="row">
-    <div class="col-md-12">
-     <h2>Classes</h2>
-    </div>
-   </div>
-   <div class="row">
-    <div class="col-md-6">
-     <h3>Coverage Distribution</h3>
-     <div id="classCoverageDistribution" style="height: 300px;">
-       <svg></svg>
-     </div>
-    </div>
-    <div class="col-md-6">
-     <h3>Complexity</h3>
-     <div id="classComplexity" style="height: 300px;">
-       <svg></svg>
-     </div>
-    </div>
-   </div>
-   <div class="row">
-    <div class="col-md-6">
-     <h3>Insufficient Coverage</h3>
-     <div class="scrollbox">
-      <table class="table">
-       <thead>
-        <tr>
-         <th>Class</th>
-         <th class="text-right">Coverage</th>
-        </tr>
-       </thead>
-       <tbody>
-{{insufficient_coverage_classes}}
-       </tbody>
-      </table>
-     </div>
-    </div>
-    <div class="col-md-6">
-     <h3>Project Risks</h3>
-     <div class="scrollbox">
-      <table class="table">
-       <thead>
-        <tr>
-         <th>Class</th>
-         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
-        </tr>
-       </thead>
-       <tbody>
-{{project_risks_classes}}
-       </tbody>
-      </table>
-     </div>
-    </div>
-   </div>
-   <div class="row">
-    <div class="col-md-12">
-     <h2>Methods</h2>
-    </div>
-   </div>
-   <div class="row">
-    <div class="col-md-6">
-     <h3>Coverage Distribution</h3>
-     <div id="methodCoverageDistribution" style="height: 300px;">
-       <svg></svg>
-     </div>
-    </div>
-    <div class="col-md-6">
-     <h3>Complexity</h3>
-     <div id="methodComplexity" style="height: 300px;">
-       <svg></svg>
-     </div>
-    </div>
-   </div>
-   <div class="row">
-    <div class="col-md-6">
-     <h3>Insufficient Coverage</h3>
-     <div class="scrollbox">
-      <table class="table">
-       <thead>
-        <tr>
-         <th>Method</th>
-         <th class="text-right">Coverage</th>
-        </tr>
-       </thead>
-       <tbody>
-{{insufficient_coverage_methods}}
-       </tbody>
-      </table>
-     </div>
-    </div>
-    <div class="col-md-6">
-     <h3>Project Risks</h3>
-     <div class="scrollbox">
-      <table class="table">
-       <thead>
-        <tr>
-         <th>Method</th>
-         <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
-        </tr>
-       </thead>
-       <tbody>
-{{project_risks_methods}}
-       </tbody>
-      </table>
-     </div>
-    </div>
-   </div>
-   <footer>
-    <hr/>
-    <p>
-     <small>Generated by <a href="http://github.com/sebastianbergmann/php-code-coverage" target="_top">PHP_CodeCoverage {{version}}</a> using <a href="{{runtime_link}}" target="_top">{{runtime_name}} {{runtime_version}}</a>{{generator}} at {{date}}.</small>
-    </p>
-   </footer>
-  </div>
-  <script src="{{path_to_root}}js/jquery.min.js" type="text/javascript"></script>
-  <script src="{{path_to_root}}js/bootstrap.min.js" type="text/javascript"></script>
-  <script src="{{path_to_root}}js/holder.min.js" type="text/javascript"></script>
-  <script src="{{path_to_root}}js/d3.min.js" type="text/javascript"></script>
-  <script src="{{path_to_root}}js/nv.d3.min.js" type="text/javascript"></script>
-  <script type="text/javascript">
-$(document).ready(function() {
-  nv.addGraph(function() {
-    var chart = nv.models.multiBarChart();
-    chart.tooltips(false)
-      .showControls(false)
-      .showLegend(false)
-      .reduceXTicks(false)
-      .staggerLabels(true)
-      .yAxis.tickFormat(d3.format('d'));
-
-    d3.select('#classCoverageDistribution svg')
-      .datum(getCoverageDistributionData({{class_coverage_distribution}}, "Class Coverage"))
-      .transition().duration(500).call(chart);
-
-    nv.utils.windowResize(chart.update);
-
-    return chart;
-  });
-
-  nv.addGraph(function() {
-    var chart = nv.models.multiBarChart();
-    chart.tooltips(false)
-      .showControls(false)
-      .showLegend(false)
-      .reduceXTicks(false)
-      .staggerLabels(true)
-      .yAxis.tickFormat(d3.format('d'));
-
-    d3.select('#methodCoverageDistribution svg')
-      .datum(getCoverageDistributionData({{method_coverage_distribution}}, "Method Coverage"))
-      .transition().duration(500).call(chart);
-
-    nv.utils.windowResize(chart.update);
-
-    return chart;
-  });
-
-  function getCoverageDistributionData(data, label) {
-    var labels = [
-      '0%',
-      '0-10%',
-      '10-20%',
-      '20-30%',
-      '30-40%',
-      '40-50%',
-      '50-60%',
-      '60-70%',
-      '70-80%',
-      '80-90%',
-      '90-100%',
-      '100%'
-    ];
-    var values = [];
-    $.each(labels, function(key) {
-      values.push({x: labels[key], y: data[key]});
-    });
-
-    return [
-      {
-        key: label,
-        values: values,
-        color: "#4572A7"
-      }
-    ];
-  }
-  nv.addGraph(function() {
-    var chart = nv.models.scatterChart()
-      .showDistX(true)
-      .showDistY(true)
-      .showLegend(false)
-      .forceX([0, 100]);
-    chart.tooltipContent(function(key, y, e, graph) {
-      return '<p>' + graph.point.class + '</p>';
-    });
-
-    chart.xAxis.axisLabel('Code Coverage (in percent)');
-    chart.yAxis.axisLabel('Cyclomatic Complexity');
-
-    d3.select('#classComplexity svg')
-      .datum(getComplexityData({{complexity_class}}, 'Class Complexity'))
-      .transition()
-      .duration(500)
-      .call(chart);
-
-    nv.utils.windowResize(chart.update);
-
-    return chart;
-  });
-
-  nv.addGraph(function() {
-    var chart = nv.models.scatterChart()
-      .showDistX(true)
-      .showDistY(true)
-      .showLegend(false)
-      .forceX([0, 100]);
-    chart.tooltipContent(function(key, y, e, graph) {
-      return '<p>' + graph.point.class + '</p>';
-    });
-
-    chart.xAxis.axisLabel('Code Coverage (in percent)');
-    chart.yAxis.axisLabel('Method Complexity');
-
-    d3.select('#methodComplexity svg')
-      .datum(getComplexityData({{complexity_method}}, 'Method Complexity'))
-      .transition()
-      .duration(500)
-      .call(chart);
-
-    nv.utils.windowResize(chart.update);
-
-    return chart;
-  });
-
-  function getComplexityData(data, label) {
-    var values = [];
-    $.each(data, function(key) {
-      var value = Math.round(data[key][0]*100) / 100;
-      values.push({
-        x: value,
-        y: data[key][1],
-        class: data[key][2],
-        size: 0.05,
-        shape: 'diamond'
-      });
-    });
-
-    return [
-      {
-        key: label,
-        values: values,
-        color: "#4572A7"
-      }
-    ];
-  }
-});
-  </script>
- </body>
-</html>
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist
deleted file mode 100644
index efe743f..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
-  <meta charset="UTF-8">
-  <title>Code Coverage for {{full_path}}</title>
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  <link href="{{path_to_root}}css/bootstrap.min.css" rel="stylesheet">
-  <link href="{{path_to_root}}css/style.css" rel="stylesheet">
-  <!--[if lt IE 9]>
-  <script src="{{path_to_root}}js/html5shiv.min.js"></script>
-  <script src="{{path_to_root}}js/respond.min.js"></script>
-  <![endif]-->
- </head>
- <body>
-  <header>
-   <div class="container">
-    <div class="row">
-     <div class="col-md-12">
-      <ol class="breadcrumb">
-{{breadcrumbs}}
-      </ol>
-     </div>
-    </div>
-   </div>
-  </header>
-  <div class="container">
-   <table class="table table-bordered">
-    <thead>
-     <tr>
-      <td>&nbsp;</td>
-      <td colspan="9"><div align="center"><strong>Code Coverage</strong></div></td>
-     </tr>
-     <tr>
-      <td>&nbsp;</td>
-      <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
-      <td colspan="3"><div align="center"><strong>Functions and Methods</strong></div></td>
-      <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
-     </tr>
-    </thead>
-    <tbody>
-{{items}}
-    </tbody>
-   </table>
-   <footer>
-    <hr/>
-    <h4>Legend</h4>
-    <p>
-     <span class="danger"><strong>Low</strong>: 0% to {{low_upper_bound}}%</span>
-     <span class="warning"><strong>Medium</strong>: {{low_upper_bound}}% to {{high_lower_bound}}%</span>
-     <span class="success"><strong>High</strong>: {{high_lower_bound}}% to 100%</span>
-    </p>
-    <p>
-     <small>Generated by <a href="http://github.com/sebastianbergmann/php-code-coverage" target="_top">PHP_CodeCoverage {{version}}</a> using <a href="{{runtime_link}}" target="_top">{{runtime_name}} {{runtime_version}}</a>{{generator}} at {{date}}.</small>
-    </p>
-   </footer>
-  </div>
-  <script src="{{path_to_root}}js/jquery.min.js" type="text/javascript"></script>
-  <script src="{{path_to_root}}js/bootstrap.min.js" type="text/javascript"></script>
-  <script src="{{path_to_root}}js/holder.min.js" type="text/javascript"></script>
- </body>
-</html>
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist
deleted file mode 100644
index 78dbb35..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist
+++ /dev/null
@@ -1,13 +0,0 @@
-     <tr>
-      <td class="{{lines_level}}">{{icon}}{{name}}</td>
-      <td class="{{lines_level}} big">{{lines_bar}}</td>
-      <td class="{{lines_level}} small"><div align="right">{{lines_executed_percent}}</div></td>
-      <td class="{{lines_level}} small"><div align="right">{{lines_number}}</div></td>
-      <td class="{{methods_level}} big">{{methods_bar}}</td>
-      <td class="{{methods_level}} small"><div align="right">{{methods_tested_percent}}</div></td>
-      <td class="{{methods_level}} small"><div align="right">{{methods_number}}</div></td>
-      <td class="{{classes_level}} big">{{classes_bar}}</td>
-      <td class="{{classes_level}} small"><div align="right">{{classes_tested_percent}}</div></td>
-      <td class="{{classes_level}} small"><div align="right">{{classes_number}}</div></td>
-     </tr>
-
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist
deleted file mode 100644
index 59a0684..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
-  <meta charset="UTF-8">
-  <title>Code Coverage for {{full_path}}</title>
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  <link href="{{path_to_root}}css/bootstrap.min.css" rel="stylesheet">
-  <link href="{{path_to_root}}css/style.css" rel="stylesheet">
-  <!--[if lt IE 9]>
-  <script src="{{path_to_root}}js/html5shiv.min.js"></script>
-  <script src="{{path_to_root}}js/respond.min.js"></script>
-  <![endif]-->
- </head>
- <body>
-  <header>
-   <div class="container">
-    <div class="row">
-     <div class="col-md-12">
-      <ol class="breadcrumb">
-{{breadcrumbs}}
-      </ol>
-     </div>
-    </div>
-   </div>
-  </header>
-  <div class="container">
-   <table class="table table-bordered">
-    <thead>
-     <tr>
-      <td>&nbsp;</td>
-      <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
-     </tr>
-     <tr>
-      <td>&nbsp;</td>
-      <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
-      <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
-      <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
-     </tr>
-    </thead>
-    <tbody>
-{{items}}
-    </tbody>
-   </table>
-   <table id="code" class="table table-borderless table-condensed">
-    <tbody>
-{{lines}}
-    </tbody>
-   </table>
-   <footer>
-    <hr/>
-    <h4>Legend</h4>
-    <p>
-     <span class="success"><strong>Executed</strong></span>
-     <span class="danger"><strong>Not Executed</strong></span>
-     <span class="warning"><strong>Dead Code</strong></span>
-    </p>
-    <p>
-     <small>Generated by <a href="http://github.com/sebastianbergmann/php-code-coverage" target="_top">PHP_CodeCoverage {{version}}</a> using <a href="{{runtime_link}}" target="_top">{{runtime_name}} {{runtime_version}}</a>{{generator}} at {{date}}.</small>
-    </p>
-    <a title="Back to the top" id="toplink" href="#"><span class="glyphicon glyphicon-arrow-up"></span></a>
-   </footer>
-  </div>
-  <script src="{{path_to_root}}js/jquery.min.js" type="text/javascript"></script>
-  <script src="{{path_to_root}}js/bootstrap.min.js" type="text/javascript"></script>
-  <script src="{{path_to_root}}js/holder.min.js" type="text/javascript"></script>
-  <script type="text/javascript">
-  $(function() {
-   var $window   = $(window)
-     , $top_link = $('#toplink')
-     , $body     = $('body, html')
-     , offset    = $('#code').offset().top;
-
-   $top_link.hide().click(function(event) {
-    event.preventDefault();
-    $body.animate({scrollTop:0}, 800);
-   });
-
-   $window.scroll(function() {
-    if($window.scrollTop() > offset) {
-     $top_link.fadeIn();
-    } else {
-     $top_link.fadeOut();
-    }
-   }).scroll();
-
-   $('.popin').popover({trigger: 'hover'});
-  });
-  </script>
- </body>
-</html>
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist
deleted file mode 100644
index 756fdd6..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist
+++ /dev/null
@@ -1,14 +0,0 @@
-     <tr>
-      <td class="{{classes_level}}">{{name}}</td>
-      <td class="{{classes_level}} big">{{classes_bar}}</td>
-      <td class="{{classes_level}} small"><div align="right">{{classes_tested_percent}}</div></td>
-      <td class="{{classes_level}} small"><div align="right">{{classes_number}}</div></td>
-      <td class="{{methods_level}} big">{{methods_bar}}</td>
-      <td class="{{methods_level}} small"><div align="right">{{methods_tested_percent}}</div></td>
-      <td class="{{methods_level}} small"><div align="right">{{methods_number}}</div></td>
-      <td class="{{methods_level}} small">{{crap}}</td>
-      <td class="{{lines_level}} big">{{lines_bar}}</td>
-      <td class="{{lines_level}} small"><div align="right">{{lines_executed_percent}}</div></td>
-      <td class="{{lines_level}} small"><div align="right">{{lines_number}}</div></td>
-     </tr>
-
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.eot b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.eot
deleted file mode 100644
index b93a4953fff68df523aa7656497ee339d6026d64..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 20127
zcma%hV{j!vx9y2-`@~L8?1^pLwlPU2wr$&<*tR|KBoo`2;LUg6eW-eW-tKDb)vH%`
z^`A!Vd<6hNSRMcX|Cb;E|1qflDggj6Kmr)xA10^t-vIc3*Z+F{r%|K(GyE^?|I{=9
zNq`(c8=wS`0!RZy0g3<xfGPm^&oc(t0WAJyYk&j565#r82r@tgVE(V|{tq<<xco!B
z02==gmw&z10LOnkAb<tH1OWX@JOI9bn*UMykN1D0R{xl80Mq~Cd;ISaOaQKbJU)Q^
zKV{p0n*ZTg{L}i+{3Za_e=Uyx%G?09e;&`jxw-$pR}TDt)(rrNs7n5?o%-LK0RgDo
z0?1<k<naI!SC})WF>{M(8^tv41d}oRU?8#IBFtJy*9zAN5dcxqGlMZGL>GG%R#)4J
zDJ2;)4*E1pyHia%>lMv3X7Q`UoFyoB@|xvh^)kOE3)IL&0(G&i;g08s>c%~pHkN&6
z($7!kyv|A2DsV2mq-5Ku)D#$Kn$CzqD-wm5Q*OtEOEZe^&T$<q%?GPI*ug?*jFCZ7
zl1X3>xIb0NUL<TDAlC~xMcGnHsPe)Gh+nESIamgk2)5Ql^6QPK&XkQ+!qk}`TYc#I
zf~KwkK>}$)W)Ck`6oter6KcQG9Zcy>lXip)%e&!lQgtQ*N`#abOlytt!&i3fo)cKV
zP0BWmLxS1gQv(r_r|?9>rR0ZeEJPx;Vi|h1!Eo*dohr<W65y|5+tpvz!HDS=Q}DgN
z;O&E^rmV416<Hj_N10HwLk^Lwyhx2j;kDE@F*S-tuqy|n(-6~PPF09Xvxq56At8OG
z4-2Gj5=K^(f;q@WOp+9uP|<!09J~a(Y%m)hsl;TbWEvvuQ7(qWx_eKYE@rH9B(V+`
zF8+p6+N8}}{zS_o7#)%b=2DFYa}JT{_i@;_#xxEDZ)+D4Lz{Pv;LE}#`N2bQP*W;6
z(wPX2S3Zb<sNz$mW_!uE^K&d`O<hkRPv<3DnX$`Y*)_qR>&^lJgqJZns>&vexP@fs
zkPv93Nyw$-kM5Mw^{@wPU47Y1dSkiHyl3dtHLwV&6Tm1iv{ve;sYA}Z&kmH802s9Z
zyJEn+cfl7yFu#1^#DbtP7k&aR06|n{LnYFYEphKd@dJEq@)s#S)UA&8VJY@S2+{~>
z(4?M();zvayyd^j`@4>xCqH|Au>Sfzb$mEOcD7e4z8pPVRTiMUWiw;|gXHw7LS#U<
zsT(}Z5SJ)CRMXloh$qPnK77w_)ctHmgh}QAe<2S{DU^`!uwptCoq!Owz$u6bF)vnb
zL`bM$%>baN7l#)vtS3y6h*2?xC<XQJNpZVS!tVtuR(<D$%K=CTVlwa)G)}qDJup|w
z!YRUAk-}+0)MFG#RuE2vlb~4*bP&)ex6`$^%6ySxf}MiQja9&+C4)UgIK)TIHVp>k
z>w+s)@`O4(4_<t2L?B1i*y6fuRi+P?QZCG2j9(btWTetUT@0Q|8XO(SqEH6LSB!2L
z<;M1lya0G`cm9UEex~so>I{L-!+b%)NZcQ&ND=2lyP+xI#9OzsiY8$c)ys-MI?TG6
zEP6f=vuLo!G>J7F4v|s#lJ+7A`^nEQScH3e?B_jC&{<S@1dd<&?JtuP@v(wA>sj>m
zYD?!1z4nDG_Afi$!J(<{>z{~Q)$SaXWjj~%ZvF152Hd^VoG14rFykR=_TO)mCn&K$
z-TfZ!vMBvnToyBoKRkD{3=&=qD|L!vb#jf1f}2338z)e)g>7#NPe!FoaY*jY{f)<G
z+9IWTnFJO0p&^rK`xODpSZARax-jN9(N|ZWyg~(MGSuQYzXBQR*+_`oO>Bf>ohk-K
z4{>fVS}ZCicCqgLuYR_fYx2;*-4k>kffuywghn?15s1dIOOYfl+XLf5w?wtU2Og*f
z%X5x`H55F6g1>m~%F`655-W1wFJtY>>qNSdVT`M`1Mlh!5Q6#3j={n5#za;!X&^OJ
zgq;d4UJV-F>gg?c3Y?d=kvn3e<VW2IarGgIy4I@#ozBH$Q(a($^uvXS?@=l>V)Jb^
zO5vg0G0yN0%}xy#(6oTDSVw8l=_*2k;zTP?+N=*18H5wp`s90K-C67q{W3d8vQGmr
zhpW^>1HEQV2TG#8_P_0q91h8QgHT~8=-Ij5snJ3cj?Jn5_66uV=*pq(j}yHn<uy|J
zh=_`9%JG63kQPJ-Et!mF@={HFp+sB-S+XTFvdzD^x19Lbj{TXx=?FGKvX;|1-3-zU
zl2DyEls20Izb)isO0?xrx(b1`<I3ZDSNBd*<5l=jC`?Re`XCFaI(ny#9KlP!NYbU=
z^;IWB5he_V3}{Xdl1>f$<x%N5|7+dpJoB>Ft;5VVC?bz%9X31asJeQF2jEa47H#j`
zk<KNJ>&uxf3t?g!tltVP|B#G_UfDD}`<#B#iY^i>oDd-LGF}A@Fno~dR72c&hs6bR
z2F}9(i8+PR%R|~FV$;Ke^Q_E_B<teU&M|M>c;$)xN4Ti>Lgg4vaip!%M<tZtx+eW>
z06oxAF_*)LH57w|gCW3SwoEHwjO{}}U=pKhjKSZ{u!K<P`9nrZXY)DCi*vvJQDx`q
za_kyA2Qus4JQ%8kM3_Gd%I1O+cF3~V6=ZM1u9*Ea+iXPId}M`kd7I1T0d7Zx)Wa&?
z{PLQlHM^=&Y!og~I(XQ;5lJScjK~IrV<F7J6v`iM&M1#EkRsHYX8V%Dip>?1zm1q?
zXyA6y@)}_sONiJopF}_}(~}d4FDyp|(@w}Vb;Fl5bZL%{1`}gdw#i{KMjp2@Fb9pg
ziO|u7qP{$kxH$qh8%L+)AvwZNgUT6^zsZq-MRyZid{D?t`f|KzSAD~C?WT3d0rO`0
z=qQ6{)&UXXuHY{9g|P7l_nd-%eh}4%VVaK#Nik*tOu9lBM$<%FS@`NwGEbP0&;Xbo
zObCq=y%a`jSJmx_uTLa{@2@}^&F<l?4N8$IoqA~y`|!rgD24&AtvbWWlPF%K!I`Fp
zMCDiMrV(MWM2!hiB6=^)Er#O8q+%t)I4l3iuF$d;cBXqGAn?Z0Z*?MZRuh=zmPo~-
z_rOvv7sERj79T<uPMWCHIto@agn)X&#=QQyY*6wt){yHQ7~yFoEezd#C<dQF+u)2-
zEIMy-5P*TYpqPxY25dY9J+f-E^3<^@G(=jU{U&hQ3#o`a)dOUR&JT?mTRlBfHE<p|
zO&J|*26{JJ28qC1saVtkQ1WW^G58Smr^%f>4c%z6oe-TN&idjv+8E|$FHOvBqg5hT
zMB=7SHq`_-E?5g=()*!V>rIa&LcX(RU}aLm*38U_V$C_g4)7GrW5$GnvTwJZdBmy6
z*X)wi3=R8L=esOhY0a&eH`^fSpUHV8h$J1|o^3fKO<edeL`~4AS}?bGhbI@wd%7ob
z;HUsAzX8f<5Tcj`x1L`~p_%qxb{Gobu+`2Hh*bfnN@EZ$w1F5i32YXO9vreTkznl=
zRv&F3;kE3d@_Cys2UVvUxUU=oDO~U>|9QzaiKu>yZ9wmRkW?HTkc<*v7i*ylJ#u#j
zD1-n&{B`04oG>0Jn{5PKP*4Qsz{~`VVA3578gA+JUkiPc$Iq!^K|}*p_z3(-c&5z@
zKxmdNpp2&wg&%xL<cX5MdFnpzW;X?cI|~qZbhDWm)F_t}i=(x><xZ|=$k6lbFWo~R
z1yEA-t+BaHz`?1Zi{N`F<t?_rS*zpAEN-Lg7L9qKTVj|Ih7gOmTvLqTlA1e51SXNm
zeA`1UhC`&)%k?V^ii%`|O+coBH9$HjP#Fy1CjYhyW0DPZC>3xZNzG-5Xt7jnI@{?c
z25=M>-VF|;an2Os$Nn%HgQz7m(ujC}Ii0Oesa(y#8>D+P*_m^X##E|h$M6tJr%#=P
zWP*)Px>7z`E~U^2LNCNiy%Z7!!6RI%6fF@#ZY3z`CK91}^J<kz;gXvl4j_QvxfXmA
ze1j4n*Hru_ge<*I;p<wHXN`XVFAk2bTG~Vl5{?nXF6K!!HeqOu6_U-movw7Gx`O<C
zM~<jbZlSC}oXeAQr_Y8Tq)(9YogPgPY{6ELohD$98O2Fj5_M2=J84FuR#dyoS!A-|
z*c)!)9^dk4^<2$Ks79AAMW;%o-!%g7j{1(Pnwwy1tca#dUTE1+4y#<A6VSeCR)wQ`
zCEFu?oS$y=05cpTr}VLe+YU$GFp$#&tfXaK<ia*q3-&+6KDQP!)!Ru(yh0c}7za6=
ziFP^Nq3))g21c{b{ESQRdZN3Xnpa8jUP0DA2r&uofBU7TtM^7^s}7#&aUnGsvE`fu
z>$F!EB0YF1je9<lP78|=Z6bmMhpLsL)Tz)Cn&pP#eF?{kB>hJKU7!S5MnXV{+#K;y
zF~s*H%p@vj&-ru7#(F2L+_;IH46X(z{~HTfcThqD%b{>~u@lSc<+f5#xgt9L7$gSK
ziDJ6D*R%4&YeUB@yu@4+&70MBNTnjRyqMRd+@&lU#rV%0t3OmouhC`mkN}pL>tXin
zY*p)mt=}$EGT2E<4Q>E2`6)gZ`QJhGDNpI}bZL9}m+R>q?l`OzFjW?)Y)P`fUH(_4
zCb?sm1=DD0+Q5v}BW#0n5;Nm(@RTEa3(Y17H2H67La+>ptQHJ@WMy2xRQT$|7l`8c
zYHCxYw2o-rI?(fR2-%}pbs$I%w_&LPYE{4bo}vRoAW>3!SY_zH3`ofx3F1PsQ?&iq
z*BRG>?<6%z=x#`NhlEq{K~&rU7Kc7Y-90aRnoj~rVoKae)L$3^z*Utppk?I`)CX&&
zZ^@Go<Q-E-9qdDk;`1UZ+I6D_?B@62xgSC03f%4S8VtH3(P3D_6<1>9fm&fN`b`XY
zt0xE5aw4t@qTg_k=!-5LXU+_~DlW?53!afv6W(k@FPPX-`nA!FBMp7b!ODbL1zh58
z*69I}P_-?qSLKj}JW7gP!la}K@M}L>v?rDD!DY-tu+onu9kLoJz20M4urX_xf2dfZ
zORd9Zp&28_ff=wdMpXi%IiTTNegC}~RLkdYjA39kWqlA?jO~o1`*B&85Hd%VPkYZT
z48MPe62;TOq#c%H(`wX5(Bu>nlh4Fbd*Npasdhh?oRy8a;NB2(eb}6DgwXtx=n}fE
zx67rYw=(s0r?EsPjaya}^Qc-_UT5|*@|$Q}*|>V3O~USkIe6a0_>vd~6kHuP8=m}_
zo2IGKbv;yA+TBtlCpnw)8hDn&eq?26gN$Bh;SdxaS04Fsaih_Cfb98s39xbv)=mS0
z6M<@pM2#pe32w*lYSWG>DYqB95XhgAA)*9dOxHr{t)er0Xugoy)!Vz#2C3FaUMzYl
zCxy{igFB901*<tiyD63(hW(uERHv;@J~7F`;-e`O5Ld!(Fl>R2*F4>grPF}+G`;Yh
zGi@nRjWyG3mR(BVOeBPOF=_&}2IWT%)pqdNAcL{eP`L*^FDv#Rzq<iCP<KO7gjv}{
z^5ElYuo)cUV9?9{6e*c7eWVK@LCOKKaBR<2_;6r+GhH1i-~$};rNpE_D*2ZJ=O+cz
zyj}kfz8;}sw88^SYgzvxpkB>l5U&Suq_X%JfR_lC!S|y|xd5mQ0{0!G#9hV46S~A`
z0B!{yI-4FZEtol5)mNWXcX(`x&Pc*&gh4k{w%0S#EI>rqqlH2xv7mR=9XNCI$V#NG
z4wb-@u{PfQP;tTbzK>(DF(~bKp3;L1-A*HS!VB)Ae>Acnvde15Anb`h;I&0)aZBS6
z55ZS7mL5Wp!LCt45^{2_70<L`Ib`SKM1Oi<HkO)Y>YiI_Py=X{I3>$Px5Ez0ahLQ+
z9EWUWSyzA|+g-Axp*Lx-M{!ReQO07EG7r4^)K(xbj@%ZU=0tBC5shl)1a!ifM5OkF
z0<aV&1|hwix;hV`l{C+KeqEjnn@aQGS~k&rcJ^K626yC8@~#qf$xT7;xJLzv3M&rA
z)MirFFpng+&}hRJHKQ6_3l{ABCJLmIrj8g#cem2@!i;W7Q+}Wr^IrTp((?iq1h?Cq
z7Z^k%ps^N^e})9!YkyNa0;x`m&~<4yTQHl1+dFNY1CE<&_PZ=1v!ch(qU_a1lHd~T
zC&a1>w2xQ-<+r-h1fi7B6waX15|*GGqfva)S)dVcgea`lQ~SQ$KXPR+(3Tn2I2R<0
z9tK`L*pa^+*n%>tZPiqt{_`%v?Bb7CR-!GhMON_Fbs0$#|H}G?rW|{q5fQhvw!FxI
zs-5ZK>hAbnCS#ZQVi5K0X3PjL1JRdQO+&)*!oRCqB{wen60P6!7bGiWn@vD|+E@Xq
zb!!_WiU^I|@1M}Hz6fN-m04x=><rLlCfwyIrOU}U)<7QivZH0Rm_-}Sg~$eCMDR*Z
zx`cVPn__}6Q+CU!>Exm{b@>UCW|c8<K+|Vc^j#>vC`aNbt<B+h3ox;kC6?34Wa#|Y
zXq?n@d6k6MUBqn%SYLX5^>A@KCHujh^2RWZC}iYhL^<*Z93chIBJYU&w>$CGZDR<q
ztx<5t>cHuIgF&oyesDZ#&mA;?wxx4Cm#c0V$xYG?9OL(Smh}#fFuX(K;otJmvRP{h
ze^f-qv;)HKC7geB92_@3a9@M<H_?qNxE&=>GijS(hNNVd%-rZ;%@F_f7?Fjinbe1(
zn#jQ*jKZTqE+AUTEd3y6t>*=;AO##cmdwU4gc2&rT8l`rtKW2JF<`_M#p>cj+)yCG
zgKF)y8jrfxTjGO&ccm8RU>qn|HxQ7Z#sUo$q)P5H%8iBF$({0Ya51-rA@!I<SEC1_
zHUdTwrTB3a?*}j?j1(f*^9G0kG<5JX4@l|rR&H;`Qa2VcYZ3UxZL+D>t#NHN8MxqK
zrYyl_&=}WVfQ?+ykV4*@F6)=u_~3BebR2G2>>mKaEBPm<p!ix>SW3(qYGGXj??m3L
zHec{@jWCsSD8`xUy0pqT?Sw0oD?AUK*WxZn#D>-$`eI+IT)6ki>ic}W)t$V32^ITD
zR497@LO}S|re%A+#vdv-?fXsQGVnP?QB_d0cGE+U84Q=aM=XrOwGFN3`Lpl@P0fL$
zKN1PqOwojH*($uaQFh8_)H#>Acl&UBSZ>!2W1Dinei`R4dJGX$;~60X=|SG6#jci}
z&t4*dVDR*;+6Y(G{KGj1B2!qjvDYOyPC}%hnPbJ@g(4yBJrViG1#$$X75y+Ul1{%x
zBAuD}Q@w?MFNqF-m39FGpq7RGI?%Bvyyig&oGv)lR>d<`Bqh=p>urib5DE;u$c|$J
zwim~nPb19t?LJZsm{<(Iyyt@~H!a4yywmHKW&=1r5+oj*Fx6c89heW@(2R`i!Uiy*
zp)=`Vr8sR!)KChE-6SEIy<Vn-l!RzPhNVxOkQU85Nng*5JUtkAg)b6wP&$wmih=Au
zKs;dHW6q)pI2VT$E`W=7aAbKSJnb;$l%#?edH=)1)avHvVH)345mJ;(*l$Ed1MA<a
z72%vbZD4`I;B-RS=m{iM`7(#1x>i(dvG3<1KoVt>kGV=zZiG<Y+hj@$zd#Q#=4iVE
z)x-IdMbP%iC;0pg$QUoVt(A;lO{-jJjH=;buR+E#0Eulb^`hidN&<0Z-tju^RGPcG
z(C4$AS6l7m-h>7LGonH1+~yOK-`g0)r#+O|Q>)a`I2FVW%wr3lhO(P{ksNQuR!G_d
zeTx(M!%brW_vS9?IF>bzZ2A3mWX-MEaOk^V|4d38{1D|KOlZSjBKrj7Fgf^>JyL0k
zLoI$adZJ0T+8i_Idsuj}C;6jgx9LY#Ukh;!8eJ^B1N}q=Gn4onF*a2vY7~`x$r@rJ
z`*hi&Z2lazgu{&nz>gjd>#eq*IFlXed(%$s5!HR<!{AgXHWD~USVRvxKdGTp>XKNm
zDZld+DwDI`O6hyn2uJ)F^{^;ESf9sjJ)wMSKD~R=DqPBHyP!?cGAvL<1|7K-(=?VO
zGcKcF1spUa+ki<qEk7@%dE~%eGpEl!oK*hA!YE+isq^GFdJ#{KfWIULzmRCaF}4(*
z-$*W)k94bSp|#5~htGbQ<~v1feWKv$%wM~TX}E><`6K#@QxOTsd847N8WSWztG~?~
z!gUJn>z0O=_)VCE|56hkT~n5xXTp}Ucx$Ii%bQ{5;-a4~I2e|{l9ur#*ghd*hSqO=
z)GD@ev^w&5%k}YYB~!A%3*XbPPU-N6&3Lp1LxyP@|C<{qcn&?l54+zyMk&I3YDT|E
z{lXH-e?C{huu<@~li+73lMOk&k)3s7Asn$t6!PtXJV!RkA`qdo4|OC_a?vR!kE_}k
zK5R9KB%V@R7gt@9=TGL{=#r2gl!@3G;k-6sXp&E4u20DgvbY$iE**Xqj3TyxK>3AU
z!b9}NXuINqt>Htt6fXIy5mj7oZ{A&$XJ&thR5ySE{mkxq_YooME#VCHm2+3D!f`{)
zvR^WSjy_h4v^|!RJV-RaIT2Ctv=)UMMn@fAgjQV$2G+4?&dGA8vK35c-8r<daDqE-
zlIJCF%-7v?-xOAOA*Z$Wv;j3$ldn=}pR52aU>)z9Qqa=%k(FU)?iec14<^olkOU3p
zF-6`zHiDKPafKK<gsO-HjX!gIc-J@mlI}lqM!qAHMA?>^USUU+D01>C&Wh{{q?>5m
zGQp|z*+#>IIo=|ae8CtrN@@t~uLFOeT{}vX(IY*;>wAU=u1Qo4c+a&R);$^VCr>;!
zv4L{`lHgc9$BeM)pQ#XA_(Q#=_i<x#Kw|T_b{oltLKCCP2b6F_+)lx3b*Vc?@JD8p
z>SZL4>L~8Hx}NmOC$&*Q*bq|9Aq}rWgFnMDl~d*;7c44GipcpH9PWaBy-G$*MI^F0
z?Tdxir1D<2ui+Q#^c4?uKvq=p>)lq56<F6-{L-8bs~8_dC8J3p4CdV*Iq;6IOvBJh
z^E(Ti1wkp{O6qebTnBYm)da^xs3^-TV5tGhoGrFBA^b?UK`APfD~Y+F8!rz@iSNu3
zFO1o9o^S3!%nw&2bpBxHF!V{IaC(n}+(HqYMb(3!l`YX-ru;2?$oSZD;K6*RvAS8r
zf1jgZer>=Eb|N^qz~w7rsZu)@E4$;~snz+wIxi+980O6M#RmtgLYh@|2}9BiHSpTs
zacjGKvwkUwR3lwTSsCHlwb&*(onU;)$yvdhikonn|B44JMgs*&Lo!jn`6AE>XvBiO
z*LKNX3FVz9yLcsnmL!cRVO_qv=yIM#X|u&}#f%_?Tj0>8)8P_0r0!AjWNw;S44tst
zv+NXY1{zRLf9OYMr6H-z?4CF$Y%MdbpFIN@a-LEnmkcOF>h16cH_;A|e)pJTuCJ4O
zY7!4FxT4>4aFT8a92}84>q0&?46h>&0Vv0p>u~k&qd5$C1A6Q$I4V(5X~6{15;PD@
ze6!s9xh#^QI`J+%8*=^(-!P!@9%~buBmN2VSAp@TOo6}C?az+ALP8~&a0FWZk*F5N
z^8P8IREnN`N0i@>O0?{i-FoFShYbUB`D7O4HB`Im2{yzXmyrg$k>cY6A@>bf7i3n0
z5y&cf2#`zctT>dz+hNF&+d3g;2)U!#vsb-%LC+pqKRTiiSn#FH#e!bVwR1nAf*TG^
z!RKcCy$P>?Sfq6n<%M{T0I8?p@HlgwC!<R%oqdMv88ghhaN5z;w29c{kLz0?InueY
zuDv#J^DHLyGoyzt8(sCID)#E6<WCYlz7uC1Xvs8QhV{45h-M4rLYe7xw;{g462-zX
zIV>HoWO>~mT+X<{Ylm+$Vtj9};H3$EB}P2wR$3y!TO#$iY8eO-!}+F&jMu4%E6S>m
zB(N4w9O@2=<`WNJay5PwP8javDp~o~xkSbd4t4t8)<Wt_Xc73S;VOmD#Fsb|nTsJs
z59;v?-{=r}I{BDxTN)Iz2&5m`sG^%wjY0*@1I`W29gtM7#wwIQTHvQhS2gB?6J62R
zJXy=)7L1!%o4(?3j6J3Pc%v5LFvsR9gKoej%77dCetZylr9&mT=u=p$Kn1Z^C3ySy
z3|Tg>9jqu@bHmJHq=MV~Pt|(TghCA}fhMS?s-{klV>~=VrT$nsp7mf{?cze~KKOD4
z_1Y!F)*7^W+BBTt1R2h4f1X4Oy2%?=IMhZU8c{qk3xI1=!na*Sg<=A$?K=Y=GUR9@
zQ(ylIm4Lgm>pt#%p`zHxok%vx_=8Fap1|?OM02|N%X-g5_#S~sT@A!x&8k#wVI2lo
z1Uyj{tDQRpb*>c}mjU^gYA9{7mNhFAlM=wZkXcA#MHXWMEs^3>p9X)Oa?dx7b%N*y
zLz@K^%1JaArjgri;8ptNHwz1<0y8tcURSbHsm=26^@CYJ3hwMaE<khA9_uuFNLm1L
zw+Fp#304~-S;vdG5Nug~K2qs}yD1rrg&9Fcvifn@KphT~L22BKMX?U^9@?Ph`>vC7
z3Wi-@AaXIQ)%F6#i@%M>?Mw7$6(kW@?et@wbk-APcvMCC{>iew#vkZej8%9h0JSc?
zCb~K|!9cBU+))^q*co(E^9jRl7gR4Jihyqa(Z(P&ID#TPyysVNL7(^;?Gan!OU>au
zN}miBc&XX-M$mSv%3xs)bh>Jq9#aD_l|zO?I+p4_5qI0Ms*OZyyxA`sXcyiy>-{YN
zA70%HmibZYcHW&YOHk6S&PQ+$rJ3(utuUra3V0~@=_~QZy&nc~)AS>v&<6$gErZC3
zcbC=eVkV4Vu0#}E*r=&{X)<H<fOshUJUO>Kgq|8MGCh(wsH4geLj@#8EGYa})K2;n
z{1~=ghoz=9TSCxgzr5x3@sQZZ0FZ+t{?klSI_IZa16pSx6*;=O%n!uXVZ@1IL;JEV
zfOS&yyfE9dtS*^jmgt6>jQDOIJM5Gx#Y2eAcC3l^lmoJ{o0T>IHpEC<k{}Rs{I@x*
zb<od>TbfYgPI4#LZq0<d#zAXFmb<Y9lgw&{$vCxBQ~RnTL=zZ7D-RwUE3~Z#wraN%
z_E{llZ?GrX#>PKqnPC<SBsRloBYG4ZO7Eeh-Bv2C$rMVb@bcKn3t2`<&0ke8{h|+|
z29&HD`tAtGV2ZA(;c{wT$(NWY+fHTL0b7Km+3IMcIX(?D)PQ;HB*^`ex$kl}K>D}_
zyKxz;(`fE0z~nA1s?d{X2!#ZP8wUHzFSOoTWQrk%;wCnBV_3D%3@EC|u$Ao)tO|AO
z$4&aa!wbf}rbNc<V}`mLC?8U0y^+E9xuE>P{6=ajgg(`p5kTeu$ji20`zw)X1SH*x
zN?T36{d9TY*S896Ijc^!35LLUByY4QO=ARCQ#MMCjudFc7s!z%P$6DESz%zZ#>H|i
zw3Mc@v4~{Eke;FWs`5i@ifeYPh-Sb#vCa#qJPL|&quSKF%sp8*n#t?vIE7kFWjNFh
zJC@u^bRQ^?ra|%39Ux^Dn4I}QICyDKF0mpe+Bk}!lFlqS^WpYm&xwIYxUoS-rJ)N9
z1Tz*6Rl9;x`4lwS1cgW^H_M*)Dt*DX*W?ArBf?-t|1~ge&S}xM0K;U9Ibf{okZHf~
z#4v4qc6s6Zgm8iKch5VMbQc~_V-ZviirnKCi*ouN^c_2lo&-M;YSA>W>>^5tlXObg
zacX$k0=9Tf$Eg+#9k6yV(R5-&F{=DHP8!yvSQ`Y~XRnUx@{O$-bGCksk~3&qH^dqX
zkf+ZZ?Nv5u>LBM@2?k%k&_aUb5Xjqf#!&7%zN#VZwmv65ezo^Y4S#(ed0yUn4tFOB
zh1f1SJ6_s?a{)u6VdwUC!Hv=8`%T9(^c`2hc9nt$(q{Dm2X)dK49ba+KEheQ;7^0)
ziFKw$%EHy_B1)M>=yK^=Z$U-LT36yX<F=`VawpD(xy$9hZLKdS9NJ`Zn_|f^uS`)c
z-Rl}C$-9t=SeW=txVx%`NS&LLwx4tQT@F-lQnBqQ-sOH}Jc&bP@MTU&SQLci>>EKT
zvD8IAom2&2?bTmX@_PBR4W|p?6?LQ+&UMzXxqHC5VHzf@Eb1u)kwyfy+NOM8Wa2y@
zNNDL0PE$F;yFyf^jy&RGwDXQwYw6yz>OMWvJt98X@;yr<mIFkh{a&op3>!*RQDBE-
zE*l*u=($Zi1}0-Y4lGaK?J$yQjgb<Bq)i+tJ7(x$;ieC4!=clV5G5IPlSyhAR$E4=
z$1c&+)JfppzZ*VSL$xH3n1^iI1K%)!-^sJU%xwj7WT8t7w6499b3QQ%J+gW)4)JMb
z8GVT`4`(VvLA^xbTV6K2V_8Mv*?gDDUBYV!P-qg?Dq*YIhGKXu$p#?E9&(-}opTbz
zZ#J#VgX+|T3gSW)eF}>+*ljUvNQ!;QYAoCq@>70=sJ{o{^21^?zT@r~hhf&O;Qiq+
ziGQQLG*D@5;LZ%09mwMiE4Q{IPUx-emo*;a6#DrmWr(zY27d@ezre)Z1BGZdo&pXn
z+);gOFelKDmnjq#8dL7CTiVH)dHOqWi~uE|NM^QI3EqxE6+_n>IW67~UB#J==QOGF
zp_S)c8TJ}uiaEiaER}MyB(grNn=2m&0yztA=!%3xUREyuG_jmadN*D&1nxvjZ6^+2
zORi7iX1iPi$tKasppaR9$a3IUmrrX)m*)fg1>H+$KpqeB*G>AQV((-G{}h=qItj|d
zz~{5@{?&Dab6;0c7!!%Se>w($RmlG7Jlv_zV3Ru8b2rugY0MVPOOYGlokI7%nhIy&
z-B&wE=lh2dtD!F?noD{z^O1~Tq4MhxvchzuT_oF3-t4YyA*MJ*n&+1X3<j>~6quEN
z@m~aEp=b2~mP+}TUP^FmkRS_PDMA{B<dV*k52^3iWFIaXBr1MC#nA4rRMbI6g1e0>
zaSy(P=$T~R!yc^Ye0*pl5xcpm_JWI;@-di+nruhqZ4gy7cq-)I&s&Bt3BkgT(Zdjf
zTvvv0)8xzntEtp4iXm}~cT+pi5k{w{(Z@l2XU9lHr4Vy~3ycA_T?V(QS{qwt?v|}k
z_ST!s;C4!jyV5)^6xC#v!o<DVtBeh%T7qnQl{H-3DV=+H*Qr*Tk6W^hU(ZD0kJnpt
z6l*<^aakgBhlA+xpS}v`t7iyV?zu_V<U{&GBzBLYIuzDQe~f#6w^zD>*uS%a-jQ6<
z)>o?z7=+zNNtIz1*F_HJ(w@=`E+T|9TqhC(g7kKDc8z~?RbKQ)LRMn7A1p*PcX2YR
zUAr{);~c7I#3Ssv<0i-Woj0&Z4a!u|@Xt2J1>N-|ED<3$o2V?OwL4oQ%$@!zLamVz
zB)K&Ik^~GOmDAa143{I4?XUk1<3-k{<%?&OID&>Ud%z*Rkt*)mko0RwC2=qFf-^OV
z=d@47?tY=A;=2VAh0mF(3x;!#X!%{|vn;U2XW{(nu5b&8kOr)Kop3-5_xnK5oO_3y
z!EaIb{r%D{7zwtGgFVri4_!yUIGwR(xEV3YWSI_+E}Gdl>TINWsIrfj+7DE?xp+5^
zlr3pM-Cbse*WGKOd3+*Qen^*uHk)+EpH-{u@i%y}Z!YSid<}~kA*IRSk|nf+I1N=2
zIKi+&ej%Al-M5`cP^XU>9A(m7G>58>o|}j0ZWbMg&x`*$B9j#Rnyo0#=BMLdo%=ks
zLa3(2EinQLXQ(3zDe7Bce%Oszu%?8PO648TNst4SMFvj=+{b%)ELyB!0`B?9R6<HO
z0ZCx8TWpL$G_aCzv{2o6N{#z3g%x>aO{i-63|s@|raSQGL~s)9R#J#duFaTSZ2M{X
z1?YuM*a!!|jP^QJ(hAisJuPOM`8Y-Hzl~%d@latwj}t&0{DNNC+zJARnuQfiN`HQ#
z?boY_2?*q;Qk)LUB)s8(Lz5elaW56p&fDH*AWAq7Zrbeq1!?FBGYHCnFgRu5y1jwD
zc|yBz+UW|X`zDsc{W~8m<GsO<mO_1`^L`RbrG?Z6Us2*=^_x$`JV{a_LYEsuJtJYL
ziPBF7dm}M2=6vrP;RB?Z6!7)Zvt4B!$rUPf{RA&_8%VD|7)NrR9*=&gO*sOzLhB*~
z^{cR)lY*pt9GGm(POd`WZo!H=s$8fLl_}-xnV5A+4*BbLUMGLAzH|i9_k(p_(`_J-
zjFFqtuzWuLa;BGl;mNUQM^&@rL--@GcC@@A*GDUdTjOrweNe5I+671K_l#WVI|@LM
z6mSs@4|l^kTD;Gvy}KaDi)#o4AD~D*LX@4{{bfG+FoqQ?-6%VkN)4{7vy<hZ9gNX|
zQxtE>$sh@VVnZD$lLnKlq@Hg^;ky!}ZuPdKNi2BI70;hrpvaA4+Q_+K)I@|)q1N-H
zrycZU`*YUW``Qi^`bDX-j7j^&bO+-Xg$cz2#i##($uyW{Nl&{DK{=lLWV<rkzZltE
zVX#Q@q!0kD+4jwZ#haJNHLSu>3|=<&si||2)l=8^8_z+Vho-#5LB0EqQ3v5U#*DF7
zxT)1j^`m+lW}p$>WSIG1eZ>L|YR-@Feu!YNWiw*IZYh03mq+2QVtQ}1ezRJM?0PA<
z;mK(J5@N8>u@<6Y$QAHWNE};rR|)U_&bv8dsnsza7{=zD1VBcxrALqnOf-qW(zzTn
zTAp|pEo#FsQ$~*$j|~Q;$Zy&Liu9OM;VF@#_&*nL!N2hH!Q6l*OeTxq!l>dEc{;Hw
zCQni{iN%jHU*C;?M-VUaXxf0FEJ_G=C8)C-wD!DvhY+qQ#FT3}Th8;GgV&AV94F`D
ztT6=w_Xm8)*)dBnDkZd~UWL|W=Gl<gto;(*wC9U9tZbpA!j<N3*HCbtKUlby_Vyr4
z!?d@=(#f`*(ud3VsGC{9IRi#5(w*FK!J}~s9(p0ap?ykZJBp1cTUR*jPbbAP&K)BP
zDUly$`B#Sn(aWroZGbyL&=Dg67A>u!$hc|1w7_7l!3MAt95oIp4Xp{M%clu&TXehO
z+L-1#{mjkpTF@?|w1P98OCky~S%@OR&o75P<Wn%&Jm$EVDF7;}E<;f25{W=vmcPFf
zmJVk81ZR1bRmlb|#0}DPdayCjq(27hQh>&ZHvC}Y=(2_{ib(-Al_7aZ^U?s34#H}=
zGfFi5%KnFVCKtdO^>Htpb07#BeCXMDO8U}crpe1Gm`>Q=6qB4i=nLoLZ%p$TY=OcP
z)r}Et-Ed??u~f09d3Nx3bS@ja!fV(Dfa5lXxRs#;8?Y8G+Qvz+iv7fiRkL3liip})
z&G0u8RdEC9c$$rdU53=<QkS9aMArWJ!P8{(D~hr9YfM2Q0nl|;=ukHlQj%<P$wYfa
z?$=heR#}yGJkpA2LI#>MH`p!Jn|DHjhOxHK$tW_pw9wCTf0Eo<){HoN=zG!!Gq4z4
z7PwGh)V<N7ESN6`*^`^Q73fj(wcMs7=5Iu(yJo@Q_F?W?yk3)SdLai+cM6GrKPrjs
za_NJm=uOAmRL5F_{*Yjb_BZNY?)kCB%$WE8;A{ZK>NPXW-cE#MtofE`-$9~nmmj}m
zlzZscQ2+Jq%gaB9rMgVJkbhup0Ggpb)&L01T=%>n7-?v@I8!Q(p&+!fd+Y^Pu9l+u
zek(_$^HYFVRRIFt@0Fp52g5Q#I`tC3li`;UtDLP*rA{-#Yoa5qp{cD)QYhldihWe+
zG~zuaqLY~$-1sjh2lkbXCX;lq+p~!2Z=76cvuQe*Fl>IFwpUBP+d^<W!tp~MwxCaj
zHBQw{tTF&?2^15<bHvmlCS|A$khwaGVZw*2lw&_pOQz;LcFj@Ysq%CZ)?t&74A|dB
z4WL~cZpG-0G^KuK)}aNOTySm-Lt#QyW&mN^>&E4BGc<j4bbw_-4Ttv5`+q&kCfaBq
z#Rl}~m+g*DG5=zM=t?z8cf%Vr>{m#l%Kuo6#{XGoRyFc%Hqhf|%nYd<;yiC>tyEyk
z4I+a<QbTvlzlVm5v2!^bF)s*0Cw+t*kzz%N#&QZ42CimT6ySz~?+nd>`(%%Ie=-*n
z-{mg=j&t12)LH3R?@-B1tEb7FLMePI1HK0`Ae@#)KcS%!Qt9p4_fmBl5zhO10n401
zBSfnfJ;?_r{%R)hh}BBNSl=$BiAKbuWrNGQUZ)+0=Mt&5!X*D@yGCSaMNY&@`;^a4
z;v=%D_!K!WXV1!3%4P-M*s%V2b#2jF2bk!)#2GLVuGKd#vNpRMyg`kstw0GQ8@^k^
zuqK5uR<>FeRZ#3{%!|4X!hh7hgirQ@Mwg%%ez8pF!N$xhMNQN((yS(F2-OfduxxKE
zxY#7O(VGfNuLv-ImAw5+h@gwn%!ER;*Q+001;W7W^waWT%@(T+5k!c3A-j)a8y11t
zx4~rSN0s$M8HEOzkcWW4YbKK9GQez2XJ|Nq?TFy;jmGbg;`m&%U4hIiarKmdTHt#l
zL=H;ZHE?fYxKQQXKnC+K!TAU}r086{4m}r()-QaFmU(qWhJlc$eas&y<Oz%^3FaFm
z1?*33BSANpZbOjV<(WE=T(DuY)_XOR{Jho+f)Z}g61HjnqKKN*8E0S?ATVoi0{#On
zGn@2R)R+{|FLX_EYm8{*=&UqzSkXCnZ)vWGS!9t02v^*;nhYk{U}PXVkPhlRc3UH{
zA-5Xc>?=H9EYQy8N$8^bni9TpD<bzO7YS=tCt}zYcl)|7!PRQIoif~D7yjeqW#(B3
zmpkmPyyRt85TQV!liLz!S@Olwr9!I#6DL45xU1kD`j8+MN!ST75vIA5J=~k_se^q#
zaC@(uVW_ra*o|Fs!(sX4Ik6k-(M%QP2;-Z@Rf=+&=pE`Dv8K9?k1Fg2pF%vW*HO>p
zkA^WRs?KgYgjxX4T6?`SMs$`s3vlut(YU~f2F+id(Rf_)$BIMibk9lACI~LA+i7xn
z%-+=DHV*0TCTJp~-|$VZ@g2vmd*|2QXV;HeTzt530KyK>v&253N1l}bP_J#UjLy4)
zBJili9#-ey8Kj(dxmW^ctorxd;te|xo)%46l%5qE-YhAjP`Cc03vT)vV&GAV%#Cgb
zX~2}uWNvh`2<*AuxuJpq>SyNtZwzuU)r@@dqC@v=Ocd(HnnzytN+M&|Qi#f4Q8D=h
ziE<3ziFW%+!yy(q{il8H44g^5{_+pH60Mx5Z*FgC_3hKxmeJ+wVuX?T#ZfOOD3E4C
zRJsj#wA@3uvwZwHKKGN{{Ag+8^cs?S4N@6(Wkd$CkoCst(Z&hp+l=ffZ?2m%%ffI3
zdV7coR`R+*dPbNx=*ivWeNJK=Iy_vKd`-_Hng{l?hmp=|T3U&epbmgXXWs9ySE|=G
zeQ|^ioL}tve<e`!rDYCFUej_ysJ2z(4AIN3g4xGaB0&Y<^`&A^@AOml<{gmBP!-y6
z!IsbSiZ8eH@;)gbXcV?N4*>N{s72_&h+F+W;G}?;?_s@h5>DX(rp#eaZ!E=NivgLI
zWykLKev+}sHH41NCRm7W>K+_qdoJ8x9o5Cf!)|qLtF7Izxk*p|fX8UqEY)_sI_45O
zL2u>x=r5xLE%s|d%MO>zU%KV6QKFiEeo12g#bhei4!Hm+`~Fo~4h|BJ)%ENxy9)Up
zOxupSf1QZWun=)gF{L0YWJ<(r0?$bPFANrmphJ>kG`&7E+RgrWQi}ZS#-CQJ*i#8j
zM_A0?w@4Mq@xvk^>QSvEU|VYQoVI=TaOrsLTa`RZfe8{9F~mM{L+C`9YP9?Okn<Y+
zQ`?h`EW57j4Qxm_DjacY`kEKG93n7#6{CBssPbH&1L2KSo|Htm*KD+0p<wD8e>Lw|
zmkvz>cS6`pF0FYeLdY%>u&XpPj5$*iYkj=m7wMzHqzZ5SG~$i_^f@QEPEC+<2nf-{
zE7W+n%)q$!5@2pBuXMxhUSi*%F>e_g!$T-_`ovjBh(3jK9Q^~OR{)}!0}vdTE^M+m
z9QWsA?xG>EW;U~5gEuKR)Ubfi&YWnXV;3H6Zt^NE725*`;lpSK4HS1sN?{~9a4JkD
z%}23oAovytUKfRN87XTH2c=kq1)O<qRzRUy={bH%*8V=pA##jg=-EE6(Lotu<IYEm
zZ71>5(fH_M3M-o{{@&~KD`~TRot-gqg7Q2U2o-iiF}K>m?CokhmO<lc^{s0_OssMw
zc*3nzZ5WN~$;I6TzaKlN9W+6*SX5vHzSUyIfdtNx5K}gB*a}Ei-T%?Pusx0i{k6zW
zVCCXrjNT1#YIkZ%s$(OfAJ`FBR*66B?{y$nkK6iXlBVVr@2#yGM6%0i_(U5#>DaLB
z1p6(6JYGntNOg(s!(>ZU&lzDf+Ur)^Lirm%*}Z>T)9)fAZ9>k(kvnM;ab$ptA=hoh
zVgsVaveXbMpm{|4*d<0>?l_JUFOO8A3xNLQOh%nVXjYI6X8h?a@6kDe5-m&;M0xqx
z+1U$s>(P9P)f0!{z%M@E7|9nn#IWgEx6A6JNJ(7dk`%6$3@!C!l;JK-p2?gg+W|d-
ziEzgk$w7k48NMqg$CM*4O~Abj3+_yUKTyK1p6GDsGEs;}=E_q>^LI-~pym$qhXPJf
z2`!PJDp4l(TTm#|n@bN!j;-FFOM__eLl!6{*}z=)UAcGYloj?bv!-XY1TA6Xz;82J
zLRaF{8ayzGa|}c--}|^xh)xgX>6R(sZD|Z|qX50gu=d`gEwHqC@WYU7{%<5VOnf9+
zB<I4+b1=sZ53G|-kvYcPViY)E5R#f6q2$x?f020VY)3|@p~2oGrySSwa~uPN4nC&g
zX!I>@FX?|UL%`8EIAe!*UdYl|6wRz6Y>(#8x92$#y}wMeE|ZM2X*c}dKJ^4NIf;Fm
zNwzq%QcO?$NR-7`su!*$dlIKo2y(N;qgH@1|8QNo$0wbyyJ2^}$iZ>M{BhBjTdMjK
z>gPEzgX4;g3$rU?jvDeOq`X=>)zdt|jk1Lv3u~bjHI=EGLfIR&+K3ldcc4D&Um&04
z3^F*}WaxR(ZyaB>DlmF_UP@+Q*h$&nsOB#gwLt{1#F4i-{A5J@`>B9@{^i?g_Ce&O
z<<}_We-RUFU&&MHa1#t56u<quT+%|#XvIpRJ?co{{tU0{tvlHG=;UJAM%ZgS1Wk*<
zbzK}T;?L5YLE4NLu9J0u#X!J<y<O?uV#gKBNVOZ@7SW<kFyslWRX@_C90;+zxGfEz
zb5V;-W-;gzJ|=>_oM(Ljn7djja!T|gcxSoR=)@?owC*NkDarpBj=W4}=i1@)@L|C)
zQKA+o<(pMVp*Su(`zBC0l1yTa$MRfQ#uby|$mlOM<xEsq_18&vqMDMD7Zoz%Fkm7A
z3)Py9=vTp8h$K)n9Uvzc$sVOT&zol^a%bZk8R4Y8^rZSJmY_uRt<`DC1F!?x#33tZ
ze&XW>s=G`4J|?apMzKei%jZql#gP@IkOaOjB7MJM=@1j(&!jNnyVkn5;4lvro1!vq
ztXiV8HYj5%)r1PPpIOj)f!><jg)vV+x8*ZL<Q!-CP7F3VXp#~OA}`YkX&1&s!htsT
z^$c2`mPAtTVX<qUk`r6!8Vb=Uc23%M)2;P#-xg0%R+ozayS`Bp$+go_wMt83+CODc
z2B}|cG;*tiKwHPYIq{X<`rJQAk*7&QC@O%H3Z553ow$9gREC4~b(*v-N%(bN;Y@mL
zsmAcMVly_+3OO{6?K&3Aei;$vMv!82h}`Bdn#~L=J)xK(4o*51?I7`(&5m9X))pa;
zLPfmH5<-xa-W%$*L{V<;N$-)VdNT!&jA&vHrEgBjjo5UU0If7Vhz3vkcHNAY5aT+C
zc5euR<}4<-qaBP_Zef)X2|HW=07DGXb>pc^3#LvfZ(hz}C@-3R(Cx7R427*Fwd!XO
z4~j&IkPHcBm0h_|iG;ZNrYdJ4HI!$rSyo&sibmwIgm1|J#g6%>=ML1r!kcEhm(XY&
zD@mIJt;!O%WP7CE&wwE3?1-dt;RTHdm~LvP7K`ccWXkZ0kfFa2S;wGtx_a}S2lslw
z$<4^Jg-n#Ypc(3t2N67Juasu=h)j&UNTPNDil4MQMTlnI81kY46uMH5B^U{~nmc6+
z9>(lGhhvRK9ITfpAD!XQ&BPphL3p8B4PVBN0NF6U49;ZA0Tr75AgGw7(S=Yio+xg_
zepZ*?V#KD;sHH+15ix&yCs0eSB-Z%D%uujlXvT#V$Rz@$+w!u#3GIo*AwMI#Bm^oO
zLr1e}k5W~G0xaO!C%Mb{sarxWZ4%Dn9vG`KHmPC9GWZwOOm11XJp#o0-P-${3m4g(
z6~)X9FXw%Xm~&99tj>a-ri})ZcnsfJtc10F@t9xF5vq6E)X!iUXHq-ohlO`gQdS&k
zZl})3k||u)!_=nNlvMbz%AuIr89l#I$;rG}qvDGiK?xTd5HzMQkw*p$YvFLGyQM!J
zNC^gD!kP{A84nGosi~@MLKqWQNacfs7O$dkZtm4-BZ~iA8xWZPkTK!Hp<LTap+x4*
zUK;Ha0;Jc=$HCCwcHw+aadnOZR281fO)q}D^z9=|qH9;-;e${xK|?9elJ8=LaM<65
zE6;>A5zr!9Z&+icfAJ1)NWkTd!-9`NWU>9uXXUr;`Js#NbKFgrNhTcY4GNv*71}}T
zFJh?>=EcbUd2<|fiL+H=wMw8hbX6?+_cl4XnCB#ddwdG><R|vBc*yG=?!<`t>bki*
zt*&6Dy&EIPluL@A3_;R%)shA-tDQA1!Tw4ffBRyy;2n)vm_JV06(4O<t|JggQ(KZT
zsYO62-6u^^mX>r&QAOKNZB5f(MVC}&_!B>098R{Simr!UG}?CW1Ah+X+0#~0`X)od
zLYablwmFxN21L))!_zc`IfzWi<Gu||u|EiUx`=l}NMzvxMP68pmmwjICH*y4{3)P@
z%y44Q*AVc4<$z9@nMeRAeVJ+>`5>MxPe(Dm<mb5oz44!o-XIzF2v`EK`q7j%sCMv2
zL>jjO1}HHt7TJtAW+VXHt!aKZk>y6PoMsbDXRJnov;D~Ur~2R_7(Xr)aa%wJwZh<i
zvMmaF%EvU)a6S{Gh%whrx@S36i|iv5oL=QhR4YK<CK74@mwN~dH00RX{_e6r+#l%j
z7OK<7e3kn;@H(@8>S3gr7IGgt%@;`jpL@gyc6bGCVx!9CE7NgIbUNZ!Ur1RHror0~
zr(j$^yM4j`#c2KxSP61;(Tk^pe7b~}LWj~SZC=MEpdKf;B@on9=?_n|R|0q;Y*1_@
z>nGq>)&q!;u-8H)WCwtL<LrD$x{Fa((5#4K!l=^|krt6e2?!PZN=Rmwt*1$d&$Q{J
zCgeI0rGg+wn3iR*eck$cFmbQ~E3GYxr&dJb(4{lgPt?n#^<GT#&j{om5`|wE6bW}}
ze{Pav1oDZnak%Fz$PD1ZH8xBo#FnqUG6u>&7F4vbnnfSAlK1mwnRq2&gZrEr!b1MA
z(3%vAbh3aU-IX`d7b@q`-WiT6eitu}ZH9x#d&qx}?CtDuAXak%5<-P!{a`V=$|XmJ
zUn@4lX6#ulB@a=&-9HG)a>KkH=jE7>&S&N~0X0zD=Q=t|7w;kuh#cU=NN7gBGbQTT
z;?<kJaO{>bdSt8V&IIi}<ThZP?O{MP;s77svl-cIdCj)d-BZGJap1Ull?cz;BdUt4
zMAS0={#2iyI>sDTzA0dkU}Z-Qvg;RDe8v>468p3*&hbG<I%;HTx8<Z&Ih@Xrl%AO4
zEZ252P#-|8MJE+L5IXho^0!PtBR61%3tAJ8RP$~a8%~<+5(4Lyh@;kvSLVbDc4PRn
z?4(9&{Rpo>T1I3hi9hh~Z(!H}{+>eUyF)H&gdrX=k$aB%J6I<Mis<6rrEG;E4zw&M
zYsQ6$FFc_^cwkYGT9ds?4^G_w2+$2L@}W#bXUf0JW}7J?EgbIp`jFFailmTZXuEyM
z?LcqfTM!s>;6+^^kn1mL+E+?A!A}@xV(Qa@M%HD5C@+-4Mb4lI=Xp=@9+^x+jhtOc
zYgF2aVa(uSR*n(O)e6tf3JEg2xs#dJfhEmi1iOmDYWk|wXNHU?g23^IGKB&yHnsm7
zm_+;p?YpA#N*7vXCkeN2LTNG`{QDa#U3fcFz7SB)83=<8rF)|udrEbrZL$o6W?oDR
zQx!178Ih9B#D9Ko$H(jD{4MME&<|6%MPu|TfOc#E0B}!j^MMpV69D#h2`vsEQ{(?c
zJ3Lh!3&=yS5fWL~;1wCZ?)%nmK`Eqgcu)O6rD^3%ijcxL50^z?OI(LaVDvfL0#zjZ
z2?cPvC$QCzpxpt5jMFp05OxhK0F!Q<m=7hVYzR||ecS~Bi9y8}>`rPhDi5)y=-0C}
zIM~ku&S@pl1&0=jl+rlS<4`riV~LC-#pqNde@44MB(j%)On$0Ko(@q?4`1?4149Z_
zZi!5aU@2vM$dHR6WSZpj+VboK+>u-CbNi7*lw4K^ZxxM#24_Yc`<w`lM<_9<AjZra
zPf9|W$q@ib+eT6)aN(T>jvb9NPVi75L+MlM^U~`;a7`4H0L|TYK>%hfEfXLsu1JGM
zbh|8{wuc7ucV+`Ys1kqxsj`dajwyM;^X^`)#<+a~$WFy8b2t_RS{8yNYKKlnv+>vB
zX(QTf$kqrJ;%I@EwEs{cIcH@Z3|#^S@M+5jsP<^`@8^I4_8MlBb`~cE^n+{{;qW2q
z=p1=&+fUo%T{GhVX@;56kH8K_%?X=;$OTYqW1L*)hzelm^$*?_K;9JyIWhsn4SK(|
zSmXLTUE8VQX{se#8#Rj*lz`xHtT<61V~fb;WZUpu(M)f#<N`ZtP}(nwt@v*JXMv*g
zTjkPmLef!CJNB3?7*>;I+2_zR+)y5Jv?l`CxAinx|EY!`IJ*x9_gf_k&Gx2alL!hK
zUWj1T_pk|?iv}4EP#PZvYD_-LpzU!NfcL<ZIyO_4myXe0OU}<Cprr_|XIrM73FXg`
zNRt~K9+=_-Laa5&Rt6kJaobEvjFnh>L%fK&r$W8O1KH9c2&GV~N#T$kaXGvAOl)|T
zuF9%6(i=Y3q?X%VK-D2YIY<MPA*$`<$Z)_O$(a?^Bnjd_-qk6atAX5(s0D1W1}`G9
zl)%h^mai+5Kwy1+I$Zaauh0oNm3mQUQ=`8aEAo=0zrm72grj|c8&W!-^+^6zMgm-+
zSpJe{_P`h~;t1=21VLIQ5n~@Q5Y=~VMN|L<mJfGW44?>FPH3f|g$TrXW->&^Ab`WT
z7>Oo!u1u40?jAJ8H<j_H`^tLy@LZ5-N)dU$=t?bXuTI1>y`bv}qb<AzbCJ<X7c~}%
z50@S(*;X)_P8TrUWZGQQn`AI#Eve&0+FNaAqg<m^ZNYdEveME+t5Q5DV5-rT<{g7@
zG+rSFooLii=nDW~qWOU#YzUJee#V*XI!cGhpz&<{SF!$pIm@`rT3A99J?qG9DPU@z
z9jawkO0(cqfU^RIM<K3r*yl0SKgPT>gs8)cF0&qeVjD?e+3Ggn1Im>K77ZSpbU*08
zfZkIFcv?y)!*B{|>nx@cE{KoutP+seQU?bCGE`tS0GKUO3PN~t=2u7q_6$l;uw^4c
zVu^f{uaqsZ{*a-N?2B8ngrLS8<WR!m{e>E&s6}Xtv9rR9C^b`@q8*iH)pFz<!x=AK
zf6E-O(MiUN4a^nRWR%`TBl@CGu2cFmmpRkBUAPvyvw&qDg1_6Y)ycUoITv4yV(Mk5
z=Dtmg6tsakVjdG2BV~=LD3YcTEr=j6ou|^*Qem;+#vOz?`MQ>f1|kCfiLw6u{Z%aC
z!X^5CzF6qofFJgkl<Rtc72CagCpKF^gmhb1CH>JV3oc|Qc2XdFl+y5M9*P8}A>Kh{
zWRgRwMSZ(?Jw;m%0etU5BsWT-Dj-5F;Q$OQJrQd+lv`i6>MhVo^p*^w6{~=fhe|bN
z*37oV0kji)4an^%3ABbg5RC;CS50@PV5_hKfXjYx+(DqQdKC^JIEMo6X66$qDdLRc
z!YJPSKnbY`#Ht6`g@xGzJmKzz<St<)P9XB^ZWQT2VtTE^8HdQx8o;%`J{lUpkn0!&
z^d*IdfCW?sDnD#zV!vee5Xd}&#I@u4z;`)LVXVayyf`~NUMeM>n|abYbP+_Q(v?~~
z96%cd{E0BCsH^0HaWt{y(Cuto4VE7jhB1Z??#UaU(*R&Eo+J`UN+8mcb51F|I|n*J
zJCZ3R*OdyeS9hWkc_mA7-br>3Tw=CX2bl(=TpVt#WP8Bg^vE_9bP&6ccAf3lFMgr`
z{3=h@?Ftb$RTe&@IQtiJf<Z$(x)W;Yibdk0Eou)O=h)|ox2XJhbM7gDjm$)%o0c)W
z!;CM_%5jr$Dk{vl7{DX~*^!MCEDILf;SGbcLK^kRyl}+&4r>V;O&4fzh)e1>7seG;
z=%mA4@c7{aXeJnhEg2J@Bm;=)j=O=cl#^NNkQ<{r;Bm|8Hg}bJ-S^g4`|itx)~!LN
zXtL}?f1Hs6UQ+f0-X6&TBCW=A4>bU0{rv8C4T!(wD-h>VCK4YJk`6C9$by!fxOYw-
zV#n+0{E(0ttq<e;u-JNg<=7mR)Baf(#XbsMPDR?mv12UXo+AuGM*TW4&Dbw3MHmyv
zzQ)3g$Jc}F5k_3<jP&G5r+akl<UzYyi9?xB4hK@h8+B`?3~Bn5^eKgTbZcatPPir(
zn|7xaL9v;L3{V1l&DQSp%TOnp^O8OS$m-yD0^r7mU@qJQ<RvUSI@G_}IuDMi8mq0p
z?O{gor*9fmQL7Mrb|ducn%AQOk@nhAYv{%&-E+j$)7Bpd*!L2Cg%7pf&3ZLxA5Fwj
z%8~}*Sw2G<h3E&$jhO(1=)P&U%mN)4Rk5JcPDUdUN*FM8j0Mg^@Z|6~Ym*2e3TCV6
z?5B1NxqE*aMe#2m&+Fz%OG!n`J`B2Ww|QiS6U=1^3d+6`ls$U%hB`nu)=J>_#16B}
ze8$E#X9o{B!0vbq#WUwmv5Xz6{(!^~+}sBW{xctdNHL4^vDk!0E}(g|W_q;jR|ZK<
z8w>H-8G{%R#%f!E7cO_^B?yFRKLOH)RT9GJsb+kAKq~}WIF)NRLwKZ^Q;>!2MNa|}
z-mh?=B;*&D{Nd-mQRcfVnHkChI=DRHU4ga%xJ%+QkBd|-d9uRI76@BT(bjsjwS+r)
zvx=lGNLv1?SzZ;P)Gnn>04fO7Culg*?LmbEF0fATG8S@)oJ>NT3pYAXa*vX!eUTDF
ziBrp(QyDqr0ZMTr?4uG_Nqs6f%S0g?h`1vO5fo=5S&u#wI2d4+3hWiolEU!=3_oFo
zfie<EEFWI+<HRR}kMBRY{{xT?Ubu+n1E+3-XyZ@DlC1|CziB+t8LH;pSr1_{$txb2
z{LD6Cutu@sVLZ$sgxfHzi88%ifnz%FWxPwItQ=UFSeRQ?XX#H8uXPtSY1Da8V^-Nz
zx}G&3QUOW&pFuYAPt>?+4W#`;1dd#X@g9Yj<53S<6OB!TM8w8})7k-$&q5(smc%;r
z(BlXkTp`C47+%4JA{2X}MIaPbVF!35P#p;u7+fR*46{T+LR8+<Ms(<(ewo92Plp}^
z0K5%%0PpyoHDM$82Vjt^Jp>j25oduCfDzDv6R-hU{TVVo9fz?^N3ShMt!t0NsH)pB
zRK8-S{Dn*y3b|k^*?_B70<2gHt==l7c&cT>r`C#{S}J2;s#d{M)ncW(#Y$C*lByLQ
z&?+{dR7*gpdT~(1;<m}fXp@S^XBCFbD&Le<rzooSQB^d8r#S^ok_xS36-~w}kc?Ej
z7^zYrQY=EF$c06)iin^U556ixd{lb)^l<R>M(FfF==3z`^eW)=5a9RqvF-)2?S-(G
zhS;p(u~_qBum*q}On@$#08}ynd0+spzyVco0%G6;<-i5&016cV5UKzhQ~)fX03|>L
z8ej+HzzgVr6_5ZUpa4HW0Ca!=r1%*}Oo;2no&Zz8DfR)L!@r<<lmB!F&$32&71xdc
zAQ}KMGyqI!0F2N8;eY{y00CwIf0+QV$OUD<C@ujha0p9)KwJUh;0%`lShxaZKm`>5
z2viSZpmvo5XqXyAz{Ms7`7kX>fnr1gi4X~7KpznRT0{Xc5Cfz@43PjBMBoH@z_{~(
z(Wd}IPJ9hH+%)Fc)0!hrV+(A;76rhtI|YHbEDeERV~Ya>SQg^IvlazFkSK(KG9&{q
zkPIR~EeQaaBmwA<20}m<i2yt#0ML*D!NB+q2RLvyLxH9o41nNb1p??O7J)#e3I!NY
z1wlX)g#bnj0Jty$0KoMI0Cb7`0i50h9gE~g7Om;jPg0kO>BO?)N$(z1@p)5?%}rM|
zGF()~Z&Kx@OIDRI$d0T8;JX@vj3^2%pd_+@l9~a4lntZ;AvUIjqIZbuNTR6@hNJoV
zk4F;ut)LN4ARuyn2M6F~eg-e#UH%2P;8uPGFW^vq1vj8mdIayFOZo(tphk8C7hpT~
z1Fv8?b_LNR3QD9J+!v=p%}#<WkmT3SAH~zHvL~<r009F5U;qFWp(o;x5Q1O?TufB{
c@Yw=E7;q9obAc&xg(1}n;wTCO(gbOOU|30r`2YX_

diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.svg b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.svg
deleted file mode 100644
index 94fb549..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.svg
+++ /dev/null
@@ -1,288 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
-<font-face units-per-em="1200" ascent="960" descent="-240" />
-<missing-glyph horiz-adv-x="500" />
-<glyph horiz-adv-x="0" />
-<glyph horiz-adv-x="400" />
-<glyph unicode=" " />
-<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
-<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xa0;" />
-<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
-<glyph unicode="&#x2000;" horiz-adv-x="650" />
-<glyph unicode="&#x2001;" horiz-adv-x="1300" />
-<glyph unicode="&#x2002;" horiz-adv-x="650" />
-<glyph unicode="&#x2003;" horiz-adv-x="1300" />
-<glyph unicode="&#x2004;" horiz-adv-x="433" />
-<glyph unicode="&#x2005;" horiz-adv-x="325" />
-<glyph unicode="&#x2006;" horiz-adv-x="216" />
-<glyph unicode="&#x2007;" horiz-adv-x="216" />
-<glyph unicode="&#x2008;" horiz-adv-x="162" />
-<glyph unicode="&#x2009;" horiz-adv-x="260" />
-<glyph unicode="&#x200a;" horiz-adv-x="72" />
-<glyph unicode="&#x202f;" horiz-adv-x="260" />
-<glyph unicode="&#x205f;" horiz-adv-x="325" />
-<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
-<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
-<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
-<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
-<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
-<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
-<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
-<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
-<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
-<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
-<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
-<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
-<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
-<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
-<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
-<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
-<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
-<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
-<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
-<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
-<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
-<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
-<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
-<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
-<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
-<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
-<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
-<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
-<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
-<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
-<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
-<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
-<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
-<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
-<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
-<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
-<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
-<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
-<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
-<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
-<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
-<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
-<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
-<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
-<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
-<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
-<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
-<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
-<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
-<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
-<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
-<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
-<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
-<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
-<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
-<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
-<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
-<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
-<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
-<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
-<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
-<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
-<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
-<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
-<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
-<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
-<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
-<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
-<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
-<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
-<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
-<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
-<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
-<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
-<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
-<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
-<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
-<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
-<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
-<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
-<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
-<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
-<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
-<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
-<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
-<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
-<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
-<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
-<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
-<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
-<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
-<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
-<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
-<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
-<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
-<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
-<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
-<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
-<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
-<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
-<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
-<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
-<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
-<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
-<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
-<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
-<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
-<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
-<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
-<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
-<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
-<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
-<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
-<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
-<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
-<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
-<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
-<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
-<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
-<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
-<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
-<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
-<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
-<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
-<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
-<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
-<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
-<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
-<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
-<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
-<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
-<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
-<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
-<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
-<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
-<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
-<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
-<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
-<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
-<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
-<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
-<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
-<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
-<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
-<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
-<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
-<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
-<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
-<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
-<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
-<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
-<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
-<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
-<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
-<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
-<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
-<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
-<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
-<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
-<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
-<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
-<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
-<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
-<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
-<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
-<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
-<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
-<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
-<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
-<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
-<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
-<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
-<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
-<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
-<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
-<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
-<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
-<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
-<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
-<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
-<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
-<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
-<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
-<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
-<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
-<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
-<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
-<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
-<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
-<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
-<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
-<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
-<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
-<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
-<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
-<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
-<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
-</font>
-</defs></svg> 
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.ttf b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.ttf
deleted file mode 100644
index 1413fc6..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.ttf
+++ /dev/null
@@ -1,772 +0,0 @@
-       pFFTMm*      GDEFD       OS/2gk  8   `cmapڭ    rcvt  (     gasp      glyf}]o    headM/     6hhea
-D     $hmtx `    tlocao    0maxpj       name,    post5    
-webfTP  T          =    vu    vs                           Z   2                          UKWN @     {                         ,   
-       h     ,  
-      h @  (   +   
- / _  "#%&&'	'	)9IY`iy	)9FIYiy	!'9IY`     *     / _  "#%&&'	' 0@P`bp 0@HP`p 	!#0@P`fbߵiY!     
- |vpjdc]WQKED                                                                                                                     5              *   +                            
-      /   /      _   _                       "  "     #  #     %  %     &  &     &  &     '	  '	     '  '              	   !       &     )   0  0  9   :  @  I   D  P  Y   N  `  `   X  b  i   Y  p  y   a       k       u    	   }            )     0  9     @  F     H  I     P  Y     `  i     p  y                                  	  	                   !  !     #  '     0  9     @  I     P  Y  	  `  `                 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           (      (  h    . /< 2< 2  /< 2< 23!%3#(@ (  d dLL [  27>32+&/#"&/.=/&6?#"&'&546?>;'.?654676X&
-j
-
-j
-)"&
-j
-
-j
-)L
-j
-)"&
-j
-
-j
-)"&
-j
-        LL #  32!2#!+"&5!"&=463!46^^L^^     p  @L E  32!2+!2++"&=!"&?>;5!"&?>;&'&6;22?69
-
-x
-}
-x
-}
-x
-}
-x
-v
-L
-ddl
-   d  ;  2#4.#"!!!!32>53#"'.'#7367#73>76p<#4@9+820{dd	09B49@4#bkv$Bdpd>uhi-K0!.O2d22dJtB+"0J+ku0wd/5dW%   {  L > G  !2+!2++"&=!"&?>;5!"&?>;4632654&#^CjB00BjC 
-x
-
-
-
-x
-u
-x
-u@--@$?2O*$$*P2@%d
-d
-BVT@   L   !2#!"&=46        % A  +32!546;5467.=#"&=!54&'.467>=2cQQc22cQQc2A7  7AA7  7Ad[##[[##[dd<c2<2c<<c2<2c<d               1  ,A   2632#!"&5467&546n,,.xxOqUBAwaxyrPEk      d     32!546;'&>76!' 	
-Pԇ
-	 $
-op	zy#%**%$	p       dL   # 7  !2"'&6&546	6'&4#!"&7622?62~
-
-
-
-
-\l
-
-lL
-7
-
-&
-
-
-
-
-l    	     2'7'	&c_"fn&\`tfjpO          32!546;!22&&     L   %6.676.67646p'0SFO$WOHBXAO$WOHB"7Q)mr	*`)nq&*    	  )   2"'#'".4>"2>4&ȶNN;)wdNNrVVVVNdy%:MNȶ[VVV  d XD   >.54>0{xuX6Cy>>xC8ZvxyDH-Sv@9yUUy9@vS-H    ^{   62!2'%&7%&63 ao  ^{  "  62!2'%&7%&63#7'7#'JJN aod⋌       &  2##!"&=467%>="&=46X|>&	f	
-
-	f	&>|.hK
-
-]
-
-]
-
-Kh.|       L   # ' + / 3 7 G K O S W  !2#!"&54635)"3!2654&33535!3535!35!"3!2654&35!3535!35~
-
-
-Ud
-
-&
-sdd dd d
-
-&
-d dd dL
-
-
-
-ddd
-
-
-^
-ddddddddddd
-
-
-^
-ddddddddd      LL   / ?  !2#!"&546)2#!"&546!2#!"&546)2#!"&5462pmppmpLpppp  	    LL   / ? O _ o    32+"&=46!32+"&=46!32+"&=4632+"&=46!32+"&=46!32+"&=4632+"&=46!32+"&=46!32+"&=462Lpp     L   / ? O _  32+"&=46)2#!"&=4632+"&=46)2#!"&=4632+"&=46)2#!"&=462DDDLpp     & ,    	62"'&4?622;;  n nBB #  	"'	"/&47	&4?62	62;    % I   2"'#".4>"2>4&3232++"&=#"&=46;546ĳMN,mwbMMoXXXX
-K
-
-K
-
-K
-
-KMbyl+MMĳMXXX#
-K
-
-K
-
-K
-
-K
-     % 5   2"'#".4>"2>4&!2#!"&=46ĳMN,mwbMMoXXXXX^
-
-
-Mbyl+MMĳMXXX
-
-
-
-        -  32+"&5465".5472>54&&dd[֛[ҧg|rr|p>ٸu֛[[u'>7xtrrtx  d     / ?  32+"&54632+"&54632+"&54632+"&=46
-
-
-ޖ
-
-
-ޖ
-
-
-ޖ
-
-
-
-
-
-~
-p
-
-
-
-
->
-
-
-
-
-
-
-       G O  27'#"/&/&'7'&/&54?6?'6776?6"264X!)&1-=+PP08,2&+!)&1-<,PP/:-1&+x~~~P09,1&+"(&1,=,QQ09-0&* !(&0-=,P~~~  d     ! % ) - 1  !2!2!5463!546!5#!"&53333333,);
-
-;),,;)D);dddddddd;)d
-KK
-d);ddd);;) dDDDD       62++"&5!+"&5#"&l`
-
-
-
-
-
-j`
-
-
-w
-
-?
-  d      3!#!"&5463#"&=X;),Rp);vLp      0   2".4>"2>4&3232+"&546֛[[֛[[rrrr|2
-
-
-
-[֛[[֛;rrr
-
-2
-
-^
-          )#!3333))p,p,     d    /  3232"'&6;4632#!"&546;2!546&&T2
-
-
-
-2
->p
-
-
-^
-
-
-      1   2".4>"2>4&3232"'&6;46֛[[֛[[rrrr|
-
-&
-[֛[[֛;rrr
-
-        1   2".4>"2>4&%++"&5#"&762֛[[֛[[rrrr
-
-
-
-&[֛[[֛;rrr
-
-          9  !2#!"&'&547>!";2;26?>;26'.
-
-W
-
-&
-
-&
-
-W
-tW
->
-
-
-
-      '   2".4>"2>4&&546֛[[֛[[rrrr[֛[[֛;rrr]$    (  76#!"&?&#"2>53".4>32
-mtrrr[֛[[u$
-Lrrrtu֛[[֛[        5  76#!"&?&#"#4>323#"'&5463!232>ntr[u[uh
-ntr$Krtu֛[u֛[v
-hLr   
- d     / ? O _ o     !2#!"&546!"3!2654&32+"&=463!2#!"&=4632+"&=463!2#!"&=4632+"&=463!2#!"&=4632+"&=463!2#!"&=46}
-
-
-
-
-R
-2
-
-2
-
-
->
-2
-
-2
-
-
->
-2
-
-2
-
-
->
-2
-
-2
-
-
->
-
-
-
-~
-
-
-
-R
-d
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-
-2
-        L  #  54&#!"#"3!2654&#!546;2uSRvd);;));;) SuvR;));;)X);  d  LL 	 7  32#462#".'.#"#"'&5>763276}2
-d!C@1?*'),GUKx;(.9)-EgPL
-3
-0[;P$97WW       ! 1 A   2+"&54. +"&54>32+"&546!32+"&546ޣc
-2
-
-2
-c*`ct
-
-,rr
-
-,tޣ44       G  9  %6'%&+"&546;2762"/"/&4?'&4?62A		
-
-Xx"xx"xx"ww".
-
-
-^
-x"xx"ww"xx"       r  /  %6'%&+"&546;2%3"/.7654'&6?6A		
-
-
-`Z	HN.
-
-
-^
-d		g~j       b  1 K  3#"/.7654&'&6?6%6'%&+"&546;2%3"/.7654'&6?6D@
-	*o;7	*		
-
-
-`Z	HN	iT	"ZG	!
-
-
-^
-d		g~j         	    ! % - ; ? C G K O  3#!#!#3!##5!!!!#53#533!3533##5#535#5!!#53#53#53!5!ddpddX,,ddddDdddd,D,ddddddd,dddXd,,d,,ddddddddd,dddddd    	             #  7#3#3#3#3#3!5!#53#53#53ddddddd,,dddd,Pdd[[[[[     
-    	"'463&"260V
-C;S;;S;V0
-;;T;;       
-   !  	"'463!"/	&"260V
-08D;S;;S;V0
-V08;;T;;     d   &  !2&54&#!"3!2#!"&54?6,9K@
-
-D@
-
-
-
-K|@
-
-@
-
-J
-
-    L 
-  !2	46 >>C          E U  !"3!26?6'.#"#!"&/.+";26=463!2;2654&!"3!26/.6DN9
-
->SV
-N
-
-N
-
-
-
-
-
-
-
-
-&
-X
-&
-l		l-
-p				
-v
-
-
-
-
-
-
-
-
-
-
-       dL  ! ) 1  3232#!"&546;>35"264$2"&48]4$);;));;)	'3]dϾV<<V<L);;;));;)X);E5+ddF<V<<V     5     #  	!526/!3!567>?!(%	
-_5,Ry:"	*28T2*BBW-ޑY".BB%Z     d   ' 2 ;  #!5>54.'52%32654.+32654&+50;*7Xml0);!9uc>--Ni*S>vPR}^3:R.CuN7Y3(;	G)IsC3[:+	1aJ);4ePZ     o   !56764.'&'5mSB	,J95(1(aaR@	9       % /  #4.+!52>5#"#!#3'3#72&2p"&2KK}}KK} dd	R ,১   ! % /  #4.+!52>5#"#!5!'7!5L2&2p"&2C১  vdd	 ,}KK}}KK     L   / ?  !2#!"&=46!2#!"&=46!2#!"&=46!2#!"&=462X LLdddddddd     L   / ?  !2#!"&=46!2#!"&=46!2#!"&=46!2#!"&=46DLDLLdddddddd     L   / ?  5463!2#!"&5463!2#!"&5463!2#!"&5463!2#!"&Xp Ldddddddd      L   / ?  !2#!"&=46!2#!"&=46!2#!"&=46!2#!"&=462LLLLLdddddddd     L   / ? O _ o   32+"&=46)2#!"&=4632+"&=46)2#!"&=4632+"&=46)2#!"&=4632+"&=46)2#!"&=462ddA ddA ddA ddA Ldddddddddddddddd    L   # * : J  !#;2+"&=46!2#!"&=465#535!2#!"&=46!2#!"&=46dddd,XLdddd}KdKdddd       L   # * : J  32+"&=46#3!2#!"&=463#'7!2#!"&=46!2#!"&=462ddgdd/ȧ,XLddLdddK}}dddd           !2#!"&546	K,,,,,,v,,,D,,     L     !2#!"&5467'2"&4,XJ*J%pNNpNLd>tNoOOo      6    2.'&54>"264usFE66	!^Xm)<Dsxusm?>!fhHuXyHÂ          2".4>"֛[[֛[[Ktrr[֛[[֛oVrr   u   5  .54>6?6&'.'&76#&*IOWN>%3Vp}?T|J$?LWPI)(!1		) HuwsuEG^F&:cYEvsxv!K:%A'#"
-A)Y       l  * /  7>%!2!"3!26=7#!"&546	7l
-l27);;));Ȼp87cs*
-s;));;)2c     L  6  !#"3!2657#!"&546&'5&>75>^i4);;));ȹpS9dTX
-.9I@F*L6;));;)g	0!;bA4
-        L  5  !2!"3!26=7#!"&546	62"/&4?622^^<C);;));ȹpeeoL;));;)Eۥ3eeo    
- 
- ;  	62+3546&=#32"'&6;5#'&47635#"&>
-
-
-Ȫ
-
-
-
-ȯ
-
-ȭ
-
-
-
-ȭ
-	
-
-    L   326'+"&546d0dLJJ       L #  3266''+"&5462d00dLJJJJ     3   ''&47660J*J     36   &546.2   d    32+"&546!32+"&546      dL   #!"&5463!2L         3   46&5&5460d * ;   O #  72#"&5&5&5464646dd12N:	9		>	=  ,  L   32+"&5&54646Rdd0L;;   d H    	#!"&762!2#!"&=46		*9Hdd  uJ   		u`((&    ;(J   	'	7(a#aa     3   2".4>#"#";;26=326=4&+54&֛[[֛[[}dd[֛[[֛dd           2".4>!"3!26=4&֛[[֛[[E[֛[[֛~dd     3   2".4>"'&"2?2?64/764/֛[[֛[[	xx				xx				xx				xx		[֛[[֛	xx				xx				xx				xx		     $   2".4>'&"2764/&"֛[[֛[[Tw[֛[[֛1Uw        ; K   2".4>";7>32";2>54.#";26=4&֛[[֛[[?<B2!(#"3D<:
-
-
-[֛[[֛/O2*(8\6/H*	
-
-
-
-       >   2".4>#";26=4&#";#"3!26=4&+4&֛[[֛[[
-
-
-
-
-
-KK
-
-^
-
-K[֛[[֛V
-
-
-
-
-2
-
-2
-
-2
-
-      / _  3232++"&=.'#"&=46;>7546+"&=32+546;2>7#"&=46;.
-g
-
-g
-
-g
-
-g
-
-Df
-
-fD
-
-Df
-
-f
-g
-
-g
-
-g
-
-g
-ͨ
-
-fD
-
-Df
-
-fD
-
-Df      ?   2".4>"2>4&"/"/&4?'&4?62762֛[[֛[[rrrr@||@||@||@||[֛[[֛;rrrZ@||@||@||@||        0   2".4>"2>4&"/&4?62762֛[[֛[[rrrrjjO[֛[[֛;rrr}jjO        !   2".4>"&32>54֛[[֛[[KtrAKihstr[֛[[֛;rtxiKA>rts      S   6!2#!'&4'
-&F
-
-&       S   	&5!"&=463!46
-&U&U
-##
-      ]   	#!+"&5!"&762
-
-&&
-     ]   32!2"'&63!46&#
-U&U
-#
-&     ]   	&5>746
-^$,[~UU&U
-#$DuMiqF
-       +  !2/"/&4?'&6!"&546762R,^j^!^j^^j^P,^j^    I Igg  +  #!"&546762!2/"/&4?'&6j^^,^j^`j^,^^j^         /   2".4>#";2676&#";26=4&֛[[֛[[:#6#:1
-
-
-[֛[[֛.
-
-
-
-         I U a h o  276?67632;2+"!#!54&+"&=46;2654?67>;26/.'&;26!"&5)#!	&0
-=
-
-2
-pp
-2
-
-=	
-
-
-353
-
-
-X
-
-v	v
-!{,	
-2
-
-,ԯ
-
-2
-0y
-
-
-
-
-
-r
-w
-        + I  6.'&&&547>7>'.>7>&67>7>7>-BlabD8=3*U 	:1'Ra\{%&=>8\tYR-!q[Fak[)ȕX1"@&J<7_?3J5%#/D	&/q!!6ROg58<'([@1%@_U2  ] r O  .>7'&767>.'&'.'&>77>.'&>'
-'8GB 
-
-	`H >JS>H7'+"	NA
-5M[`/Pg!;('2"&"IbYCe\D9$886#1%)*J7gG:  8G\au9hoK$]54<<E"5cQ8	.@AU!UhQ)     jF  ? Q   2".4>&"&5476&2>76&'&6?6&'&'.{nO9:On{{nO:9On{FZ2Z__Z2Z#		%8-#,-"F-I\b\I*I\b\I--I\b\I*I\b\I9>||;7Es1$F^D10E^E$1u$/D0"%,I       ' ; L  !#7.54>327377>76&'&%7.5476&6?'&'.P[vY,9On{R=A &/l'PjR.Mv&6QFZ*HLh5)k|#		%8-,-"xatzbI\b\I-yRU4Zrnc1?1FrEs1<QA9n;7p$/D0V,I        (  '6#!"&%!546;2!32+"&/&6Z8%%
-Y
-
-YCh:#6#:d*! GDK
-
-K    d  (   2'%/&=47&=4674L|XkddkX>1)]@		@])1ES>       L  ' + / 3 7 ; ? C G K O S W [ _ c  3232!546;546;2!546#!"&5353353353353353533533533533535335335335335Rd22ddddddddddd|ddddddddd|ddddddddd2222pdddddddddddddddddddddddddddddd      w  % 7  &=#!"&=46;3546'#"&=463!&=#'73546oXz#z*dXzdM*z       L   !2#!#"&546d);;)d);;L;));,;)X);    d  L 	  ?  32!546!32!546".5!2>&54=(LffL(,'6B6'p)IjV\>((>\VjI),	+'%!	!%'*    L   	'L'a'    M   	7	Maa'a    Q d_  )  !232"/&6;!%+!!"&5#"&?62**p&      0  32!2#!!2+"&=!"&=#"&/#"&468^&d,!02**6%%+*2222	
-*        L    !53463!2!!P;),);DPdd);;)     L    3463!2!!;),*:,P, pX);;)dD E  k   +32"/&6;#"&?62{**Y    Dk   &=!/&4?6!546X`)		)		        	   !  .#!"!"3!26=4&53353$`$-);;));;ddd-(d;)d);;)d);dddd    dL  # 1   2"&54%##"+"&'=454>;%".=4>7i**d]&/T7"LRQ)2(    J  f , 5  3232#"./.46;7>7'&6327"&)^Sz?vdjO9t\U>/v?zS$24517F8%M)(
-()GM~ 1==      7'''7'7'7'77 N괴N--N괴N-N--N괴N--N괴    d ! - =  32!2+"&/#"&54?>335!7532+"&5462(<H(<,F=-7`1dd>2vddQ,}Q,d-!2$'$(ddw}        L   0 <  32#!+"&/&546;632+"&546!#35'!5X,<(<(21`7-=|dd_dd22L!-d,Qv,Q($'$dddԯ}w    dO  7 G  %6!2+#!"&5467!>;26&#!*.'&?'32+"&546dknT.TlnTj:d%8
-	VOddip&yLN(%
-H	YS(22S    dO  6 F  #!"&'#"&463!'&6?6*#!32!7%32+"&546njUmlT.UnJ	
-%&jPddO(SNLy&pd(Y    a  L  7 G   2#!"&/&?>454&/!7%.!2#!"&=46ސNS(%
-	p&y22SY(nTjknT.T8
-	Vd%dd    - I  !26=4&#!""&5&/&7>3!2766=467%'^NLy&p(S22(SYLddjTnlT.TnkV	
-8%d     %   2".4>%&!"3!7%64֛[[֛[[
-
-[֛[[֛9
-
-
-
-&      %   2".4>6=!26=4&#!54&֛[[֛[[%
-
-[֛[[֛&
-
-
-
-       %   2".4>&";;265326֛[[֛[[K&
-
-
-
-[֛[[֛@
-
-      %   2".4>#"#"276&+4&֛[[֛[[
-
-&
-[֛[[֛
-
-          2".4>%&277>7.'.'"'&65.'6.'&767>'&>7>7&72267.'4>&'?6.'.'>72>՛\\՛\\d+:
-=?1	""/?9#hu!$0E.(,3)(	 	
-*!A7,8!?*
-
-\՛\\՛	'"r"v	G
-	.&*
-r$> #1	
-% *
-	'"	$g2(	%
-          67'"/&47&6PM<;+oX"O\e~Y+"n+We    `   # ' 7 ;  !2#!"&=46#3!2#!"&=46!!!2#!"&=46!!d);;));;);;));;);;));;,;)d);;)d);dd;)d);;)d);dd;)d);;)d);dd    d  L    !2#!"&46!|;**D      d   %  32!2!5#!463!54635#!"&=);,);;),;);));;)d;)pdd);d);dddD);;)         + A W  !2"/&546)2/"/&4?'&6#!"&54676276#!"&?'&4?622,^j^5,^j^/j^^^^j^j^,^j^&j^,^^^j          # ; C K   2".4>"2>4&$2"&4$2#"'"&546?&542"&4$2"&4ݟ__ݠ^^oooo--  - L-  73H3)z	-  - -  - _ݠ^^ݟWooo -!!-  -!
-$33$ 1~ -  -  -  -  Z [  %676&'&#" 3276'.#"&47 7>32#"&'&6767632'."[v_"A0?! -	Y7J3$$)G"#A.,=#(wnkV8@Fv"0DG([kPHNg8B*[eb2!5(7>B3$$')M"#!7)/c#*xnfL@9NDH7!$W]B$&    d XD  D  >.54>"".#"2>767>54&0{xuX6Cy>>xC8Zvxy#!?2-*!')-?"CoA23:+1!"3)@+)?jDH-Sv@9yUUy9@vS-H-&65&&56&oM8J41<*.0(@	)*D*2Om  9w  .   2&/7'/&477"/&4?BB8"._{iBBi
-	BBBBBB7._BB^*k"5._{jBBFi	BBBBBB77/_             2#!"&54>! "264d:;));<f>XV==V=.2G);;)3-D=V==V        	"/''!'&462*$3,#**#4$*    ' 	 2 @ K  #.'#5&'.'3'.54>75>4.&ER<,3'@"<P7(dW(WJ.BN0 2Uh:**&	h)1"37N,?iB$.,-<d>MOW(kVMbO/9X6FpH*M6&+	 4C4%    d f J  2#4.#"3#>36327#".'>7>'#53&'.>761T^'<;%T)-6"b "S5268 jt&'V7	0$ݦ
--$aPN(?",9J0*	d2>2
-""
-7Gd/9+DAL!X        32"/&6;3+##"&?62*Ȗ*,|       %  #5##!32"/&6;3353!57#5!ddd,*dc,dd|ddd        ! %  32"/&6;33!57#5!#5##!35*X,ddd,d,ddPddd    L      32"/&6;3##53#5#!35*Xdddd,d,dPdd     L      32"/&6;3#5#!35##53*d,ddd,ddd            32"/&6;3#53!5!!5!!5!*d,dpd,         32"/&6;3!5!!5!!5!#53* dpd,d,     LL    !2#!"&546!"3!2654&^pg);;));;Lp;));;));        LL   +  !2#!"&546!"3!2654&&546^pd);;));;oLp;));;));$        LL   +  !2#!"&546!"3!2654&!2"/&6^pg);;));;$Lp;));;));       LL   +  !2#!"&546!"3!2654&#!"&?62^pg);;));;p$Lp;));;));        L  5  !2#!"&=463!2654&#!"&=46&=#"&=46;546&p);;)>DLpd;));d&
-
-     #  %2"+'&7>?!"'&76 6763	,			P''
-K		
-S#	nnV/       L  5  !2#!"3!2#!"&546&=#"&=46;546^>);;)pDLd;));d&
-
-       1  !2/"/&47'&6#"3!26=7#!"&5463!m)8m);;));Ȼp,pm)8m;));;)֥       #   2".4>"2>4&2"&4ٝ]]ٝ]]qqqq{rrr]ٝ]]ٝGqqqsrrr      L   #  3232"'&6;46!2!54635
-'	gdV^|d22       L   #  	++"&=#"&7>!2!54635Gz
-"'gdM !d22     LK   "  	62"'&4?62!2!54635qgdq#d22     L 	  # '  762'&476#"&?'7!2!54635*MMК=gdML*Л:d22       L   # '  /'7'&6"/&4?!2!54635^WЛԛL*MgdКԚPM*MXd22      %	!	q3gq       dL    +!#"&546;!3#53LDdddp,     E   /  '&"!#"&546;!3#53"/&4?6262L_		Ȗdddj\jO)_		p,j[jO)       >  '.!#"&546;!3#53"/"/&4?'&4?62762Lg%dddFF))FF))gp,F))FF))F        /  !"!#"&546;!3#533232"/&6;546Ldddd*p,           /  '&"!#"&546;!3#53++"&=#"&?62L*ndddd*pp,    L 	    !2!546#!"&5!52LPdL&    }    - 1 ;  &=!5!546#"&=46;#5376!!/&4#5;2+p/22ddpddd33*ȖdȖ*yd     d    Q  %6+"&5.546%2+"&5.54>323<>3234>^%"%
-"
-d	d	1t5gD>?1)A..@^^  d  L 3  "!5265!3!52>54&/5!"!4&#5"2pKKp"2KKL8
-88%v%88
-x88%v%8       LL     $ ( 4  !2#5'!7!!2#!"&546!55%!5#!!'!73wipdw%,);;));;),p,ddibbd;));;));dfdd    &  767>".'.7.wfw3.1LOefx;JwF21vev/ 5Cc;J|sU@       L # A   2/.=& &=>2#!"&=46754>ud?,		1;ftpR&mm&L!(("
-
-""""'$+ 
-
-222/2!         '  !'3353353!2+!7#"&46!2!546LJLP*dd*22    d  L 	    #"!4&#"!4&!46;2d);,;gd);,;;)d);L;));;)D););;)      L    % )  !2#!"&546!#3!535#!#33||D|,dddL||||Dddd,ddd,     L    % )  !2#!"&546!#5##3353#33||D|dddddddddL||||Dddd,   L    #  !2#!"&546!#3!!#3!!||D|,,L||||Dddd     L      !2#!"&546!-||D|,L||||D,     L      )  !2#!"&546!!!#";32654&#||D|dDd&96))69&L||||DdVAAT,TAAV     L    % )  !2#!"&546!#3!535#!##53#53||D|,ddddL||||Dddd,dd   L     # '  !2#!"&546!3!3##5335#53||D|DdXddd,ddL||||Dpdd   L    " &  !2#!"&546!#575#5!##53#53||D|d,ddddL||||Dp2Ȗddd    	 	   %   2".4>"2>4&!!!'57!۞^^۞^^qqqql,dd,^۞^^۞Lqqqddd     	 	   ' +   2".4>"2>4&#'##!35۞^^۞^^qqqql2dddd,^۞^^۞Lqqqd2d2ddddd  A   6  2632+54&#!"#"&5467&54>3232"/&6;46n,,.xxPpVAbz
-
-&
-AwasOEkdb
-
-    A  3  2632&"#"&5467&54>++"&5#"&76762n,+.yxZ%	OqVAb
-
-
-
-AwaxchsOEkdc
-
-    d  Lm   %5!33	33!#"!54&#Ԫ2dd,,Md22     y  7 /  2#"'2!54635#"&547.546324&546X^Y{;2	iJ7--7Ji/9iJqYZ=gJi22iJX5Jit    '   * B J b {  "&'&7>2"3276767>/&'&"327>7>/&'&&"267"327>76&/&"327>76&/&oOOoSSoOOoS=y"$GF`	Pu"Q9	ccccVQ:	Pu"GF`	y"$ooSWWSo++oSWW"y	`FG#uP	:Q#cccc:Q#uP	$`FG#"y	    d       "  !#5!!463!#53'353!"&5+,
-?,dԢdu
-
- 
-
-
-     d   	    !  !	463!#5##5#7!"&=)+5,
-?,>dԪ
-|
- ^G
-|d
-77
-P             #3!#732!!34>3!!ddԢ!,d!s, d,+$d$+pp       LL  2 9  3232#!"&=46;54652#!"'74633!265#535d22s);;);)X>,>XL2dd2;));FD);>XXԢd  d  L  6 =  3232#!"&=46;54652#3#!"&54633!265#535d22s);!);;)X>,>XL2dd2;)$+;) );>XXԢd          	#!"&762#";2676&35} ,, }@D:#6#:&77&P'L.dd    	    LL   / ? O _ o    32+"&=4632+"&=46!32+"&=4632+"&=46!32+"&=46!32+"&=4632+"&=46!32+"&=46!32+"&=46
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-L
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-         ) 3  3#!2!&/&63!5#5353!2+!7#"&46!2!546dd^>1B)(()B1>^dd>JLPdO7S33S7Odd|*dd*22         + 5   2#4!!2!'&63!&54!2+!%5#"&46!2!5460P9<:H)"Z"
-)HJLP;))%&!!&**22        $ .   2"&432!65463!2+!7#"&46!2!546jjj."+''+#JLPjjj9:LkkL:9r*dd*22        , 6  2"&5477'632!65463!2+!7#"&46!2!546X/[3oo"o"."+''+#JLPk6NooN>Qo
-9:LkkL:9r*dd*22         " ,  !!.54>7!2+!7#"&46!2!546X,%??M<=BmJJLP9fQ?HSTTvK~*dd*22      )   2!546754!2#3#3#3#!"&546/R;.6p6.d6\uSpSuu;)N\6226\N)G6.dddddSuuSSu   dLL  / 3  !2#!"&546!2#!"/!"&4?!"&=46!'|
-
-%XW&
-dDdLD
-2
-%XX%
-2
-ddd        L  # - 7  !2#4&+"#4&+"#546!2!46+"&=!+"&= Sud;));d;));du);P;ddLuS);;));;)Su;),);2222         	!&4762	!2!546  'YV/ |UYY(n0U22       !  /  .#!"3!26=326!546;546;33232!'p'q*}20/222,2          "  !#!5463!#5!#!"&5463!#5,
-
-w,,
-v
-
-w, 
-O,T
-
-
-
-  dG F V  32676'&7>++"&?+"'+"&?&/.=46;67'&6;6#";26=4&KjIC
-
-
-)V=>8'"d1*)"dT,|-otE
-
-
-GAkI
-! "%,=?W7|&F@Je5&2WO_e_
-2
-
-2
- ~ 	 $ 4 < R b  %6%32!2&'&#!"&=46#";2654&'&"2647>?&/&6%?6'.'.. +jCHf7"	*:>XXP* @--@- -?0!3P/|)(	)f!%=&*x"62&CX>>X83D-@--@ۂ
-# =I+E(	//}X&+	5!H	     d  9 Q ` o  322#+"&=#+"&=#"&=46;#"&=46;546;23546!2>574.#!2>574.#q
-Oh ..40:*"6-@#
-
-d
-
-
-
-KK
-
-
-
-d))k))
-m!mJ.M-(2N-;]<*K
-
-KK
-
-K
-
-X
-
-K
-
-KK
-
-"p
-"      ) ,  !2#!"&'.546"!7.#Vz$RR(z }VG+0 )IU!zV`3BBWwvXZ3Vz&--%,(1#        32#!"&546+"&=ۖgT)>)TH66g)TT)g66         33#!"&546+"&=`T)>)TH66B)TT)g66         	%'5754&>?'	%5%Ndd/\^^<ǔȖ
-(Ab   d      2"&4$2"&4$2"&4|XX|X|XX|X|XX|X X|XX|XX|XX|XX|XX|      L      2"&42"&42"&4|XX|XX|XX|XX|XX|XLX|XX|X|XX|X|XX|    d dLL   /  !2#!"&=46!2#!"&=46!2#!"&=46}
-
-J
-
-
-
-J
-
-
-
-J
-L
-
-
-
-p
-
-
-
-p
-
-
-
-          / 3  !2#!"&546!"3!2654&!2#!"&546!5^);;)X);;G;));;)X);d,d     d dL ;  !2+32+32+32#!"&46;5#"&46;5#"&46;5#"&46222222222222L********   ,       *  .62"&%#462"&%#46"&=32W??WW??||||||*(CBB||||԰||||Ӑ    B  76+2+"47&"+".543#"&'&676/!'.6E*'?)
-T0I'*L
-#3{,#
-n6F82 *<SC#
-(#((#         % C  #4.+!52>5#"#!#4.+3#525#"#5!2&2p"&2D
-d2d
- dd	R ,
-W22
-        L    0  5"'./#!5"&?!##!"&=463!2E	1;E%=!'y,2 "
-#	22+."A2Vdd       G J  !2#!"&546#"3!26=4&#"'&?!#"3!26=4&'"'&'#&#2LFF&	7
-
-?
-99gLR 2222$         # '  !5!!2#!"&546)2#!"&546!PpmpG,Ld|pd,        # '  !2#!"&546!2#!"&546!!5!2pmpG,P|pd,d       d ' +  !235463!23##!"&=##!"&546!2dddpdp,d ,          '  3#3!2#!"&546!!2#!"&546dddpG,|dpd,p     d  L ' +  32+!2#!"&5463!5#"&546;53!X|^d,Lpdpdd,           '  !#3!2#!"&546!!2#!"&546ddvpG,|dpd,p  , 0o   	#"&54632a5*    A 2~   	6'&4O**{))*     2A~   !2"'&6d)***     2,~o   	#!"&762{))*a**       (  
-  5-5!5!Lc        d  1  #3!35#5!34>;!5".5323!,P2&d2"d&2dd,dd dd	& ,      L % 1  #4.+!52>5#"#!#3!35#5! 2&d2p"d&2 ,, dd	& ,dd,dd    frJ   32	+"'&476
-0
-
-)
-J00		  > fJ   32+"&7	&6S
-)
-
-0
-J	))	   f Jr    "'&=46	4	))	w
-
-)
-
-0    f>J   	'	&=4762j	00	)
-
-0
-
-    =  :  #463267>"&#""'./.>'&6|Vd&O"(P3G*+*3M,:IG79_7&%*>7F1||5KmCKG\JBktl$#?hI7           !2+&5#"&546!5X,p	ddd     L    !2%!#4675'=DXDddQ,[u}4]dd    Mo__<     vs    vsQ               Q                 (         d     p          E              H    E   d {            	 d           & n    d  d  d  d        d   d                 d      5 d  !                   u       
-         , d ;                     I      ] d       d  Q     E    J        a          d       d 9   ' d                                                d d        d 	 	 d y ' d d     d              d       d      d d   d,               d  ,A 2 2      > f f      * * * *   NNNNNNNNNNNNNN"~Fn2b\r bb	6			
-(
-L
-
-0X*^h(T*v
-8|t*<6`R.j(h6h^2Dl.vb F !2!v!"@""##"#8#z##$$0$^$$%4%`%&&~&'P''(4(p())*&*J*+
-+z,,h,,---.(.f..//F/~//0>0011`112$2^223"3>3h344`445,556>6|677N7788B889
-9J99::l::;;<<P<<=2=>:>>?(?n??@H@@AA~BBBCCBCvCCDD`DDEZEFFtFFG6GvGGHH2HNHjHHII8I^IIJJ.JR                 @ .                   	   j   	  ( |  	     	  L   	  8   	  x6  	  6  	    	 	   	  $  	  $4  	  $X  	  |  	  0  	 www.glyphicons.com C o p y r i g h t      2 0 1 4   b y   J a n   K o v a r i k .   A l l   r i g h t s   r e s e r v e d . G L Y P H I C O N S   H a l f l i n g s R e g u l a r 1 . 0 0 9 ; U K W N ; G L Y P H I C O N S H a l f l i n g s - R e g u l a r G L Y P H I C O N S   H a l f l i n g s   R e g u l a r V e r s i o n   1 . 0 0 9 ; P S   0 0 1 . 0 0 9 ; h o t c o n v   1 . 0 . 7 0 ; m a k e o t f . l i b 2 . 5 . 5 8 3 2 9 G L Y P H I C O N S H a l f l i n g s - R e g u l a r J a n   K o v a r i k J a n   K o v a r i k w w w . g l y p h i c o n s . c o m w w w . g l y p h i c o n s . c o m w w w . g l y p h i c o n s . c o m W e b f o n t   1 . 0 W e d   O c t   2 9   0 6 : 3 6 : 0 7   2 0 1 4 F o n t   S q u i r r e l          2                          	
-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 	
-glyph1glyph2uni00A0uni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni202Funi205FEurouni20BDuni231Buni25FCuni2601uni26FAuni2709uni270FuniE001uniE002uniE003uniE005uniE006uniE007uniE008uniE009uniE010uniE011uniE012uniE013uniE014uniE015uniE016uniE017uniE018uniE019uniE020uniE021uniE022uniE023uniE024uniE025uniE026uniE027uniE028uniE029uniE030uniE031uniE032uniE033uniE034uniE035uniE036uniE037uniE038uniE039uniE040uniE041uniE042uniE043uniE044uniE045uniE046uniE047uniE048uniE049uniE050uniE051uniE052uniE053uniE054uniE055uniE056uniE057uniE058uniE059uniE060uniE062uniE063uniE064uniE065uniE066uniE067uniE068uniE069uniE070uniE071uniE072uniE073uniE074uniE075uniE076uniE077uniE078uniE079uniE080uniE081uniE082uniE083uniE084uniE085uniE086uniE087uniE088uniE089uniE090uniE091uniE092uniE093uniE094uniE095uniE096uniE097uniE101uniE102uniE103uniE104uniE105uniE106uniE107uniE108uniE109uniE110uniE111uniE112uniE113uniE114uniE115uniE116uniE117uniE118uniE119uniE120uniE121uniE122uniE123uniE124uniE125uniE126uniE127uniE128uniE129uniE130uniE131uniE132uniE133uniE134uniE135uniE136uniE137uniE138uniE139uniE140uniE141uniE142uniE143uniE144uniE145uniE146uniE148uniE149uniE150uniE151uniE152uniE153uniE154uniE155uniE156uniE157uniE158uniE159uniE160uniE161uniE162uniE163uniE164uniE165uniE166uniE167uniE168uniE169uniE170uniE171uniE172uniE173uniE174uniE175uniE176uniE177uniE178uniE179uniE180uniE181uniE182uniE183uniE184uniE185uniE186uniE187uniE188uniE189uniE190uniE191uniE192uniE193uniE194uniE195uniE197uniE198uniE199uniE200uniE201uniE202uniE203uniE204uniE205uniE206uniE209uniE210uniE211uniE212uniE213uniE214uniE215uniE216uniE218uniE219uniE221uniE223uniE224uniE225uniE226uniE227uniE230uniE231uniE232uniE233uniE234uniE235uniE236uniE237uniE238uniE239uniE240uniE241uniE242uniE243uniE244uniE245uniE246uniE247uniE248uniE249uniE250uniE251uniE252uniE253uniE254uniE255uniE256uniE257uniE258uniE259uniE260uniF8FFu1F511u1F6AA    TP  
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.woff b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.woff
deleted file mode 100644
index 9e612858f802245ddcbf59788a0db942224bab35..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 23424
zcmY&eV{m0%u#Iioo_J#0nb?@vwry)-+qNe*Z>))v8{5gt_uj9!t5)^yb-JtjRGrhi
zYInOUNJxNyf_yKX01)K=WP|Si>HqEj|B{eUl?MR<)%<1&{(~)D+NPwKxWqT-@~snp
zg9KCz1VTZDiS?UH`PRk1VPM{29cgT9=<v;Lf`EYagMdIet=H@a8oRlWfPg?`f7?L(
zFKED?%?+Ku?I7~Mb(sI~^#uZMZsTe8&6R_I$YX<mq!jz=4cJ?l8k&HBDD{8auziCA
zQl4qm;+y>D?!Wc_@}qzggFv;gb@2cJQAYWWtpEZ7?y@jSVqjx${B5UV@SO|wH<<0;
z{><1KdVI%Ki}>~<`46C0AggwUwx-|QcU;iiZ{NZu`ur>hd*|<W)sXtmhXDixZoaeV
zklo$X=sQ21?>Hb(|6veERq<PbegkBRzi{?HIp-GW`hU_n&12ozz{J4dAGi@L6pDe-
z_ud2pJc-_b2pj}b3Pc9vzvpJBX4(Dy6a52IgD!!AfuwLEKN$^~jn+XAz)Mg9U?T~E
zgqNfL`tz^91n&aBz=T}M5SD}tB`7H25Mn@BQsEK4gL$l9qzGE52osF@rxjbO42^t7
z#@g=mu(37N%+Vt`PAJL-lQ=FQENF`3={3?oV6ei1hBKA`DuVTzgGk7b#0j#++TdzR
zI(97e!~g}_G7m33x=^Ssom?;fl4q}a+^;UP-1|ZzG9$*2kpk7p8YI9lAxj<90CjKp
zE8u&KGi5Zv=157hgKP@$c2&H4zuKcOmHoZD%?+qY(Kf~v8|7crq{Nr<WvZ$ts)Fb$
z8!IcdkQ`H>xu=b@5Bab=rqptGxd{QJg!4*-i_$sES~)AB46}Fjg|ea#e@?J}z%CUJ
zOsLWRQR1#<tB|QIEY)&I*ZbudHp)E;$><nb=BbXZ4tHi(jj=+TGtb?X^faOKFyozE
zS@PKF)~8;5xRSNpTm4ugp<(oc@Q3%7K-)@eyP?m1z&l;rf%%J4?;rfzsBU`M+aNyb
z*@?y5Vm{LN@ggUHmiuxx_Dtj5rsol#BM~=pjyHqe<HcvPas11*o_#i9ZJ%`X+7&6Y
z4F}#7CrnT%)O76bs<&03Bs~CBL9-lPzgZEx+oS+S$-gV~5q;R39w5(FZ(Km5B%*l&
z(rrr`BO68!fN#?(kC!s6W?du1@vWLl$02}9k4Iw`sS*azt|mzMLd*ov1C_X-Z_DEc
zA>ng^sD)A4FDuY!iUhzlgfJh(J@BRqd&P#v2B`+saBx>m+M&q7vk-75$NH%T5pi%m
z5FX?`2-5l53=a&GkC9^NZCLpN5(DMKMwwab$FDIs?q>4!!xBS}75gX_5;(luk;3Vl
zLCLd5a_8`Iyz}K}+#RMwu6DVk3O_-}n>aE!4NaD*sQn`GxY?cHe!Bl9n?u&g6?aKm
z-P8z&;Q3gr;h`YIxX%z^o&GZZg1=>_+hP2$$-DnL_?7?3^!WAsY4I7|@K;aL<>OTK
zByfjl2PA$T83*LM9(;espx-qB%wv7H2i6CFsfAg<9V>Pj*OpwX)l?^mQfr$*OPPS$
z=`mzTYs{*(UW^ij1U8UfXjNoY7GK*+YHht(2oKE&tfZuvAyoN(;_OF>-J6AMmS5fB
z<XKU7YH10@@&WJhj71Cj$=TP(r@q<cW{2}t$FbdUw)ad2!elcuLPw0X5toDsPadV*
zO3EPF>^sY6wea&&${+!}@R1f$5oC-2J>J-A${@r(dRzc`wnK>a7~8{Y-scc|ETOI8
zjtNY%Y2!PI;8-@a=O}+{ap1Ewk0@T`C`q!|=KceX9gK8wtOtIC96}-^7)v23Mu;MH
zhKyLGOQMujfRG$p(s`(2*nP4EH7*J57^=|%t(#PwCcW7U%e=8Jb>p6~<TTQ9e?y3C
zdb|J>>RAlY4a*t<yx)M!`#-^(n~+nSXHt)XXPCd>s=pl}_J{->@kKzxH|8XQ5{t=E
zV&o`$D#ZHdv&iZWFa)(~o<E{GN9+27JE4iktONzQ1b)q{Sex30G?of$HMKN~8KD%g
zA+E{L7XRV>Bh-Osl{~CS0hfM7?PyWUWsr5oYlsyC1cwULoQ4|Y5RHA2*rN+EnFPnu
z`Y_&Yz*#550YJwDy@brZU>0pWV^RxRjL221@2ABq)AtA%Cz?+FG(}Yh?^v)1Lnh%D
zeM{{3&-4#F9rZhS@DT0E(WRkrG!jC<!Dwf@j`RqVrLtHFoIyn_L9bxbWrgS*Z9wMu
z#p1&N;H{ZGv&zD_N*zbkas>#5?OFjZv*xQjUP~XsaxL2rqRKvPW$zHqHr8Urp2Z)L
z+)EvQeoeJ8c6A#Iy9>3lxiH3=@86uiTbnnJJJoypZ7gco_*Hv<E!$|Yb^#x+eGvv(
zIp;Wt3|Xgi12|CZQBu5wnkbr4Z_o<}@wU&ThE&G4r6LGOs?2M%<}Vu1j2>KOH97B?
zWiwp>+r}*Zf9b3ImxwvjL~h~j<<3shN8$k-$V1p|96I!=N6VBqmb==Bec|*;HUg?)
z4!5#R*(#Fe)w%+RH#y{8&%%!|<UeDoR>fQ5JcFzUE;-yVYR^&Ek55AXb{^w|@j|&G
z|6C-+*On%j;W|f8mj?;679?!qY86c{(s1-PI2Wahoclf%1*8%JAvRh1(0)5Vu37Iz
z`JY?RW@qKr+FMmBC{TC7k@}fv-k8t6iO}4K-i3WkF!Lc=D`<I4n3h#nG>nuD)v#Na
zA|R*no51fkUN3^rmI;tty#IK284*2Zu!kG13<C=xWI7mp_-$=}wb|<b)!OZRv-HEP
z{%b~I$E(4`VZ#-glOe-5)a2pflY1Bz-1#4je?)~T9!X4-E;pkTTM{XAe2I!K$wY&{
zHEYHdnV_WuXSOaFHmg_J8USFkT|e)_-*FkL@p7z7`X=kCplNBVHgHbdYiIA4b&ia%
zF^b30NW{}~a)`)^H3EMpr)@2a^C3(yt-t3eigT2)odQdx2zf*pafN9pF#;@+u4LZa
z7x<*Yxq9&rRf5M3B$p^s`skXsITAn=Zo(y=33sGRSGWuaK?&Ne`Pj#q{feF+D~&z+
zEyT)MiaBL7L|^V76c6eAiTxZof6@zS20aGf%dzLc3HH8OA(-=u{w4pJ6%*OO;uayC
zzR4O{sz+f(78K2km*}=(W9{c=$lUj4eqLf#^t$Qwnbo?bEXMO?j$N^G)CbdGe8!P9
zJnZQX@k)7bzDG0I8w{~ZPTf4?D$;UGe$M~$TSzciU_@dS=0n{mhB=qm5O0^X+E9+o
z1x?ef8>!$OlxJAt@zLU`kvsazO25TpJLbK&;M8kw*0)*14kpf*)3<d6yUQxMZe%8t
zXy(eYN2(&WrmwSg<nK0tWy!~|3-Ib)_FW|=FVb)tUsL?PQ@qp22p>;GiDh;C(F}$-
z1;!=OBkW#ctacN=je*Pr)lnGzX=OwgNZjTpVbFxqb;8kTc@X&L2XR0A7oc!Mf2?u9
zcctQLCCr+tYip<jrMK$>a_k=;1ETIpHt!Jeo;iy^xqBES^Ct6-+wHi%2g&)?7N^Yy
zUrMIu){Jk)luDa@7We5U!$$3XFNbyRT!YPIbMKj5$IEpTX1IOtVP~(UPO2-+9ZFi6
z-$3<|{Xb#@tABt0M0s1TVCWKwveDy^S!!@4$s|DAqhsEv--Z}Dl)t%0G>U#ycJ7cy
z^8%;|pg32=7~MJmqlC-x07Sd!2YX^|2D`?y;-$a!rZ3R5ia{v1QI_^>gi(HSS_e%2
zUbdg^zjMBBiLr8eSI^BqXM6HKKg#@-w`a**w(}RMe%XWl3MipvBODo*hi?+ykYq)z
ziqy4goZw0@VIUY65+L7DaM5q=KWFd$;W3S!Zi>sOzpEF#(*3V-27N;^pDRoMh~(ZD
zJLZXIam0lM7U#)119Hm947W)p3$%V`0Tv+*n=&ybF&}h~FA}7hEpA&1Y!BiYIb~~D
z$TSo9#3ee02e^%*@4|*+=Nq6&JG5>zX4k5f?)z*#pI-G(+j|jye%13CUdcSP;rNlY
z#Q!X%zHf|V)GWIcEz-=fW6AahfxI~y7w7i|PK6H@@twdgH>D_R@>&OtKl}%MuAQ7I
zcpFmV^~w~8$4@zzh~P~+?B~%L@EM3x(^KXJSg<wVEvJN(*DSLK{@lLZ^>c6I=;)B6
zpRco2LKIlURPE*XUmZ^|1vb?w*ZfF}EXvY13I4af+()bAI5V?BRbFp`Sb{8GRJHd*
z4S2s%4A)<beb5!5W2AL1ws>6Uc=PK%4@PbJ<{1R6+2THMk0c+kif**#ZGE)w6WsqH
z`r^DL&r8|OEAumm^qyrryd(HQ9olv$ltnVGB{aY?_76Uk%6p;e)2DTvF(;t=Q+|8b
zqfT(u5@BP);6;jmRAEV057E*2d^wx@*aL1GqWU|$6h5%O@cQtVtC^isd%gD7PZ_Io
z_BDP5w(2*)Mu&JxS@X%%ByH_@+l>y07jIc~!@;Raw)q_;9oy@*U#mCnc7%t85qa4?
z%_Vr5tkN^}(^>`EFhag;!MpRh!&bKnveQZAJ4)gEJo1@wHtT$Gs6IpznN$Lk-$NcM
z3ReVC&qcXvfGX$I0nfkS$a|Pm%x+lq{WweNc;K>a1M@EAVWs2IBcQPi<R5t!qadV8
z`@w2vB^p<`Z$u8twt230^FDUXk@KFGRjk|Wy)IU*vs&-S4^@ur^QOw}{f&PX2ZUtx
z2^VHiFLv0j^tM_qTCdnm{?$%kSnzz+Rz#c}<%d@@&Y%vBngG@bQjNu*$QIzHiMtlr
z%<!I8J_+!}g1P;40riIDVp#J58>EJNt}+Ea8~WiapASoMvo(&PdUO}AfC~>ZGzq<X
zA{wc(2{B`w8<FdY#fUA=!$2hWfZJFFh^biG^FRul&;5HGQt3HYB*8-U;tAm`ZDrW?
zLGzSCAtG}^Y%BI&AQbV|jc8`aQkJs}$KZGr4&D`BKH5)pk?++zISItrK-zIx+|7D6
zd{(|~knMc?H%TN~Ttm8w#&X{*x_x0Tx_urTbWQT(rM-zoT(XUHVI3m?V@uQP4J|db
z_OkbMEz8a;6}80;ZBwYhBLn3A0_Q%9Xo7*<Qa^td-Q$KXkb<^$rXNS+J!!v~e_27-
z?B(DtKu5zrraAfXQ`1kqTCnO1=JFF~4jJA+&eXD+hsTX=d50Jrj6yJ)U-=XHF8z-o
z1o@Y7@sl2x7U<!Ygv?%s5eyX!wKt`l=(%|REJ0yS<TOH?s9B)is6Iv13lr}2%hiI}
zPUW^d?_dD#I&an8I8t^fY)SnDOhO39OTDNje$JA5dr5!UH92rZ)87wX;yQSp&mZg<
zmgmz=w6D&%v&B;c-vM3DEvl$Gev##x*ndtU#f^N2I}99-3HZpRE^$`D%!0A_ujaQb
zI5z(Mh2X@IN1#BF?<;^jK#~(MAEc`h<3P$Nghud=)(&&|-qnC?^x{5VK>Wjd)4no(
ziLi#e3lOU~sI*XPH&n&J0cWfoh*}eWEEZW%vX?YK!$?w}htY|GALx3;YZoo=JCF4@
zdiaA-uq!*L5;Yg)z-_`MciiIwDAAR3-snC4V+<n|J*V*n#h?&wg+C8sg$z312~u%3
zz$RVnQhlm*2c)>KA>&V%Ak;p{1u>{Lw$NFj)Yn0Ms2*kxUZ)OTddbiJM}PK!DM}Ot
zczn?EZXhx3wyu6i{QMz_Ht%b?K&-@5r;8b076YDir`KXF0&2i9NQ~#JYaq*}Ylb}^
z<{{6xy&;dQ;|@k_(31PDr!}}W$zF7Jv@f%um0M$#=8ygpu%j(VU-d5JtQwT714#<!
z&vm@KPB=l<TMpuv%DS+RW~~WnEOz5WiaSxW4<ph#&0;zqiCMt1ekX<hrb8#^mBYaW
zJA2vi7UWJVhfbeu%Rejgz>f0z+Cm$F9J<FFP&8OfSp_OMl7>jGr_G!~NS@L9P;C1?
z;Ij2YVYuv}tzU+HugU=f9b1Wbx3418+xj$RKD;$gf$0j_A&c;-OhoF*z@DhEW@d9o
zbQBjqEQnn2aG?N9{bmD^A#Um6SDKsm0g{g_<4^dJjg_l_HXdDMk!p`oFv8+@_v_9>
zq;#WkQ!GNGfLT7f8m60H@$tu?p;o_It#TApmE`xnZr|_|cb3XXE)N^buLE`9R=Qbg
zXJu}6r07me2HU<)S7m?@GzrQDTE3UH?FXM7V+-lT#l}P(U>Fvnyw8T7RTeP`R579m
zj=Y>qDw1h-;|mX-)cSXCc$?hr;43LQt)7z$1QG^pyclQ1Bd!jbzsVEgIg~u9b38;>
zfsRa%U`l%did6HzPRd;TK{_EW;n^Ivp-%pu0%9G-z@Au{Ry+EqEcqW=z-#6;-!{WA
z;l+xC6Zke>dl+(R1q7B^Hu~HmrG~Kt575mzve>x*cL-shl+zqp6yuGX)DDGm`cid!
znlnZY=+a5*xQ=$qM}5$N+o!^(TqTFHDdyCcL8NM4VY@2gnNXF|D?5a558Lb*Yfm4)
z_;0%2EF7k{)i(tTvS`l5he^KvW%l&-suPwpIlWB_Za1Hfa$@J!emrcyPpTKKM@NqL
z?X_SqHt#DucWm<3Lp}W|&YyQE27zbGP55=HtZmB(k*WZA79f##?TweCt{%5yuc+Kx
zgfSrIZI*Y57FOD9l@H0nzq<E4Q@_YK<1;`>Ou|Bhrm&^m_RK6^Z<^N($=DDxyyPLA
z+J)E(gs9AfaO`5qk$IGGY+_*tEk0n_wrM}n4G#So>8Dw6#K7tx@g;U`8hN_R<bPv^
zP6}0b!dly7dCc=KnICM>;^Uw9JLRUgOQ?PTMr<oQ9o~>4YD5H7=ryv)bPtl=<&4&%
z*w6k|D-%Tg*F~sh0Ns(h&mOQ_Qf{`#_XU44(VDY8b})RFpLykg10uxUztD>gswTH}
z&&xgt>zc(+=GdM2gIQ%3V4AGxPFW0*l0YsbA|nFZpN~ih4u-P!{39d@_MN)DC%d1w
z7>SaUs-g@Hp7xqZ3Tn)e<dV~D-0@M0u`KSW@qBLlIFNKze0?;|tm!<F9_5{TDKnUY
zJB8#(%G(di5;`|v12#{)=^Bhy!6zu5lq~#Rj8QgnK?%W-bqS8Lq9_xGRU?MD1Z_M>
z7x^sC`xJ{V<3YrmbB{h9i5rdancCEyL=9ZOJXoVHo@$$-%Za<Y<=Dws@<HVOn84kp
zy7czzAj#&D?|uHYH^U!oq7C#CS4C-HKPWUJ-r}5;#IkR`+-?7IMg|O#r^#PS@coAT
z<xl(XMO(JUH%Fc8@Q;tlw>Nm-75Z-Ry9Z%!^+STWyv~To>{^T&MW0-;$3yc9L2mhq
z;ZbQ5LGNM+aN628)Cs16>p55^T^*8$Dw&ss_~4G5Go63gW^CY+0+Z07f2WB4Dh0^q
z-|6QgV8__5>~&z1gq0FxDWr`OzmR}3aJmCA^d_eufde7;d|OCrKdnaM>4(M%4<dMy
z`?Qi<9Ebh#nVT{&VVFv66RU??kcC8}u+l^~F(m>V`PxpCJc~UhEuddx9)@)9qe_|i
z)0EA%&P@_&9&o#9eqZCUCbh?`j!zgih5sJ%c4(7_#|Xt#r7MVL&Q+^PQEg3MBW;4T
zG^4-*<N;_j_KF=#ltp<I^9_IU8#T_ulQ_w;P&0IS=TATWkvf^^ks|nDnb@T^ShFUW
ztuyr~q)6&!?68RQ-V8G+#+EoOhWE-6A7rk5HfHxAG?Sknf`kY=i0}11&e`cz`MCO{
zQd*rofIJ{OtoMr$=gf?H!$EPT16>8L%s|A}R%*eGdx&i}B1He(mLygTmIAc^G(9Si
zK7e{Ngoq>r-r-zhyyg<ieAPsqNv@SQwQ@xsNn5Vw2I}E18CcU&C?((>K)*9cj8_%g
z)`>ANlipCdzw(raeqP-+ldhy<kGNs8`S#*G-e>Uv_VOht+!w*>Sh+Z7(7(l=9~_Vk
ztsM|g1xW`?)?|@m2jyAgC_IB`Mtz(O`mwgP15`lPb2V+VihV#29>y=H6ujE#rdnK`
zH`EaHzABs~teIrh`ScxMz}FC**_Ii?^EbL(n90b(F0r0PMQ70UkL}tv;*4~bKCiYm
zqngRuGy`^c_*M6{*_~%7FmOMquOEZXAg1^kM`)0ZrFqgC>C%R<qRBgHG)$UB@XBA@
zshx3_1QSr};A7TJ_s8FNBrzB>JvQSo_OAA(WF3{euE}GaeA?tu5kF@#62mM$a051I
zNhE>u>!gFE8g#Jj95BqHQS%|>DOj71MZ?EYfM+MiJcX?>*}vKfGaBfQFZ3f^Q-R1#
znhyK1*RvO@nHb|^i4Ep_0s{lZwCNa;Ix<{E5cUReguJf+72QRZIc%`9-Vy)D<o;c>
zWKhb?FbluyDTgT^naN%l2|rm}oO6D0=3kfXO2L{tqj(kDqjbl(pYz9DykeZlk4iW5
zER`)vqJxx(NOa;so@buE!389-YLbEi@6rZG0#GBsC+Z0fzT6+d7deYVU;dy!rPXiE
zmu73@Jr&~K{-9MVQD}&`)e>yLNWr>Yh8CXae9XqfvVQ&eC_;#zpoaMxZ0GpZz7xjx
z`t_Q-F?u=vr<JfY4KbWG<xAz}usjoo`>RPaj3r<9&t6K=+egimiJ8D4gh-rUYvaVy
zG($v+3zk5sMuOhjxkH7bQ}(5{PD3Mg?!@8PkK&w>n7tO8FmAmoF30_#^B~c(Q_`4L
zYWOoDVSnK|1=p{+@`Fk^Qb81Xf89_S`RSTzv(a4ID%71nll%{Wad$!CKfeTKkyC?n
zCkMKHU#*nz_(tO$M)UP&Zf<GNy8?Xs8hUzIu0nqFC9@Ka{&R$vXnbN*?hR?iwv-x*
zPrH;>J#*q(0Gr!E(l5(ce<3xut+_i8XrK8?Xr7_oeHz(bZ?~8q5q~$Rah{5@@7SMN
zx9PnJ-5?^xeW2m?yC_7A#<rjP_en{9P5bFL68vgKu`Lv^loBE5&?9+BtYGMUT06bd
zXEt*_Sdl_o?{!kSnxeJB_xVtFwR-bF`2MlsSO1bZtN)M(j%)mHVUj4b&G~L_`|PNv
zb05EL`!%-lV_>WK*B@oIy*Y@iC1n7lYKj&m7vV;KP4TVll=II)$39dOJ^czLRU>L>
z68P*PFMN+WXxdAu=Hyt3g$l(GTeTVOZYw3KY|W0Fk-$S_`@9`K=60)bEy?Z%tT+Iq
z7f>%M9P)FGg3EY$ood+v<G?d-tNS5y+I=S1dlJZvs-NC{^w-&Jr{gfwR>$pdsXvG?
zd2q3abeu-}LfAQWY@=*+#`CX8RChoA`=1!hS1x5dOF)rGjX4KFg!iPHZE2E=rv|A}
zro(8h38LLFljl^>?nJkc+wdY&MOOlVa@6>vBki#gKhNVv+%Add{g6#-@Z$k*ps}0Y
zQ=8$)+Nm||)mVz^aa4b-Vpg=1daRaOU)8@BY4j<Xy)*mrZf+Eqj^RX06GbC^vLKT|
zpteFBLq#626+?=M@k2|V@k{2aN?cRlCum?`TP_u}%3Y{AVZHbKwm{q2d`D~XsJSyD
zl=xk@5@i0e1=0fu$jfj1+lTA1h#%78*$MuUCU^B9>S>=5n#6abG@(F2`=k-eQ9@u#
zxfNFHv=z2w@{p1dzSOgHokX1AUGT0DY4jQI@YMw)EWQ~q5wmR$KQ}Y;(HPMSQCwzu
zdli|G?bj(>++CP)yQ4s6YfpDc3KqPmquQSxg%*EnTWumWugbDW5ef%8j-rT#3rJu?
z)5n;4b2c*;2LIW%LmvUu6t1~di~}0&Svy}QX#ER|hDFZwl!~zUP&}B1o<!gKVHBj1
z!0%hK_{Iy`*BgY<Qck8#<-rH4Lg1;Qj-hq2OvPXM$(Gkmg`0T7B6Gm*>KAxIzt~so
zb!GaJYOb#&qRUjEI1xe_`@<o~iP+Rf(GIMHq*yg6%vf7Mu<-aQ)$}%3o$R+x;;~W%
zCQ~RFyB5g)F1k-t!#^TN>7qv_-LggQ$JE8+{ryT4%ldwC5ete+{G3C#g@^oxfY3#F
zcLlj(l2G8>tC<5XWV|6_DZQZ7ow?MD8EZ9mM2oV~WoV-uoExmbwpzc6eMV}%J_{3l
zW(4t2a-o}XRlU|NSiYn!*nR(Sc>*@TuU*(S77gfCi7+WR%2b;4#RiyxWR3(u5BIdf
zo@#g4wQjtG3T$PqdX$2z8Zi|QP~I^*9iC+(!;?qkyk&Q7v>DLJGjS44q|%yBz}}>i
z&Ve%^6>xY<=Pi9WlwpWB%K10Iz`*#gS^YqMeV9$4qFchMFO}(%y}xs2Hn_E}s4=*3
z+lAeCKtS}9E{l(P=PBI;rsYVG-gw}-_x;KwUefIB@V%RLA&}WU2XCL_?hZHoR<7ED
zY}4#P_MmX(_G_lqfp=+iX|!*)RdLCr-1w`4rB_@bI&<E#m-6fJX?!@HMojcz?@FV(
zEwb`K9p)6DH8Vt-HX;X2^%28zP(BOT@+<+Oy5Uv8eD=4p<t0n4?tw(5<&#sr?h6zV
z!&Zb?gM&8<%??jXTdmMb1(#@6)m(rk*#aUo^iqOs4-#{`NA;|yExPzdS?_q~O>Uz#
z!>9C3&LdoB$r+O#n);WTPi;V52OhNeKfW6_NLn<EDp2Lr=qOaId}Ifx9lEG?H#PEN
zbI74Vx*PNK+cvB53_AWmzs=zCb5!9-mCcW#<QbIdOJM|=ASw5QpF+P}oobETGwNf<
z0{kapJo<fgf(@=YJA0C%pNqB2CMVFcToi3AV3#1!n@Z&vX@98&`Sz6*SUYY~uWq>w
zpFTuLC^@aPy~ZGUPZr;)=-p|b$-R8htO)JXy{ecE5a|b{{&0O%H2rN&9(VHxmvNly
zbY?sVk}@^{aw)%#J}|UW=ucLWs%%j)^n7S%8D1Woi$UT}VuU6@Sd6zc2+t_2IMBxd
zb4R#ykMr8s5gKy=v+opw6;4R&&46$V+OOpDZwp3iR0Osqpjx))joB*iX+diVl?E~Q
zc|$qmb#T#7Kcal042LUNAoPTPUxF-iGFw>ZFnUqU@y$&s8%h-HGD`EoNBbe#S>Y-4
zlkeAP>6<Z7QQ9XL^<-l?vhbA^VVM{w_AGyBxGo2D4xc6Tl~BnC{PHYDLP{4>2k~-N
zHQqXXyN6<L3Gg$i2mMBKaSbx<i~TEhvQ{`W#&P&}*M*bY-+RuxoiU+jyjZtu*2#d`
z4;V{mY|5$$TfD^8s7AA{v{=Q~S8RRnPkT2vB+qp-b$~mY>7hGD6CxQIq_zoepU&j0
zYO&}<4cS^2sp!;5))(aAD!KmUED#QGr48DVlwbyft31WlS2yU<1>#VMp?>D1BCFfB
z_JJ-kxTB{OLI}5XcPHXUo}x~->VP%of!G_N-(3Snvq`*gX3u0GR&}*fFwHo3-vIw0
zeiWskq3ZT9hTg^je{sC^@+z<IC+@jyb5}hL&*c9&Uv=C+8r5MFr<BeiUxikY7v-2j
z#^Wp1Woo#;-OnJd6+u?>3FAd}KNhbpE5RO+lsLgv$;1igG7pRwI|;BO7o($2>mS(E
z$CO@qYf5i=Zh6-xB=U8@mR7Yjk%OUp;_MMBfe_v1A(Hqk6!D})x%JNl838^ZA13Xu
zz}LyD@X2;5o1P61Rc$%jcUnJ>`;6r{h5yrEbnbM$$ntA@P2IS1PyW^RyG0$S2tUlh
z8?E(McS?7}X3n<sX7)_F=$tGzECOdx`5F$56$H6$2HeHDocU>AAJs2u_n{^05)*D7
zW{Y>o99!I9&KQdzgtG(k@BT|J*;{Pt*b|?A_})e98pXCbMWbhBZ$t&YbNQOwN^=F)
z_yIb_az2Pyya2530n@Y@<KMNVgC+@Hh^eD5>s>s>n?L79;U-O9oPY$==~f1gXro5Y
z*3~JaenSl_I}1*&dpYD?i8s<7w%~sEojqq~iFnaYyLgM#so%_ZZ^WTV0`R*H@{m2+
zja4MX^|#>xS9YQo{@F1I)!%<Q9x6E+JCnjAm>RhM{4ZUapHTKgLZLcn$ehRq(emb8
z9<w{<)uy~=x}G;ZX+CDl#T7`~iRBx5XO`@><&Nx*RLcS#)SdTxcURrJhxPM2IBP%I
zf1bWu&uRf{60-?Gclb5(IFI*!%tU*7d`i!l@>TaHzYQqH4_Y*6!Wy0d-B#Lz7Rg3l
zqKsvXUk9@6iKV6#!bDy5n&j9MYpcKm!vG7z*2&4G*Yl}iccl*@WqKZWQSJCgQSj+d
ze&}E1mAs^hP}>`{BJ6lv<q%AGiq()8hz}1^1ex;^<jj#cc=g{s#0iIU-+2jVmxWDS
zd7qq)5u4+Paaui>*>0-ft<;P@`u&VFI~P3qRtufE11+|#Y6|RJccqo27Wzr}Tp|DH
z`G4^v)_8}R24X3}=6X&@Uqu;hKEQV^-)VKnBzI*|Iskecw~l?+R|WKO*~(1LrpdJ?
z0!JKnCe<|m*WR>m+Qm+NKNH<_ye<gDWD0Fl@Ho4<!fm=u&SGgDO!cbo+8PUwfWk+V
z)@b~#GtD0d4#K=39kiev5hj=8h(Nljd<HunOw<O@9z?#m(rb)ZnCBDPu~!uM>fIml
z+x32qzkNRrhR^IhT#yCiYU{3oq196nC3ePkB)f%7X1G^Ibog$ZnYu4(HyHUiFB`6x
zo$ty-8pknmO|B9|(5TzoHG|%><C<pr4&IxzPg{!KcQqRSE~Tvrur~GxUa*ce)ipeE
zWgS=NE-mtVKb)JH#~V9~Hf<heFWK%N<`blD%sTD$A|XGR=J%4vWJQ9B3q;($v$3~e
zpgG#}?8+2jU@b$OcWYMF>s#7)CM(i=M7Nl=@GyDi-*ng6ahK(&-_4h(lyUN-oOa$`
zo+P;<GhFDlQ-b}GJ)A97b8DT!@21D?+G`33xflj&^Ajw)WxefL*Yy?uny35myNvN;
zJu2^EIk(I5BXd2N-yKn?<jAHF(>C4d@m^p9J4c~rbi$rq9nhGxayFjhg+Rqa{l#`Y
z!(P6K7fK3T;y!VZhGiC#)|pl$QX?a)a9$(4l(usVSH>2&5pIu5ALn*CqBt)9$yAl;
z-{fOmgu><7Y<XFolPQk)mb~-4Wz2OqAihGXbfUWv<O@$JoEd1wcAoD{S1ZgFTS^!t
z+_d^VD?_*`AXb~e&yM8k-n#rSNZe`F1hkVx1o46tWKB^*u4Iztzf9jS`;huL0efN_
zw(C5^O4iFb>J5k>*0Q~>lq72!XFX6P5Z{vW&zLsraKq5H%Z26}$OKDMv=sim;K<Yz
zr-(K#w$yhGyI)R05r<FcNBPUs!f8{%L|!+M;WNfIk0#<kNVlmop1dan3IH7GPG0zR
zbu5#oKma)07cl(sMbhFbgIx|mM?)DnP$;1oA~OW0kph!a5>?vsoVs(JNbgTU8-M%+
zN(+7Xl}`BDl=KDkUHM9fLlV)gN&PqbyX)$86!Wv!y+r*~kAyjFUKPDWL3A)m$@ir9
zjJ;uQV9#3$*`Dqo1Cy5*;^8DQcid^Td=CivAP+D;gl4b7*xa9IQ-R|lY5tIpiM~9-
z%Hm9*vDV@_1FfiR|Kqh_5Ml0sm?abD>@peo(cnhiSWs$uy&$RYcd+m`6%X9<SS+iH
zB{MTIilfs+m}FIm`WFe<b<`1NL(_5%pWxy`61V?hXOmI!N62_Zv-n^jPyCieqxTv3
zu0_=zb8f!dMp?R&UxGJe1qNBBRLXVmj-(R6+9rkXoo6CT-@FKe>FN%?<F{pFRdeJu
z{9WJNuwr(Se^zX7t-vqF<$J*yv&MnYO_uaKBS^eIab7YX1r1^(=OyZJp!PzX%0e7b
zeEpxGl+qFvtIR-KD}KZT9sfArU;dGM3-23I#q69NU-%A?w~!T{F+*-_Lil`8wsSSR
zeW-s?xK)R5p&SHb*TI!J314$wOF*NT7qT*&*Og`^+jXq)LaOJ8#&*`Gy)1X0+KiH$
zU-5JNg0Goq-9^C#_ZqHXSIP}b7@(P=L?LSJk~7{IhyH9xAy{$zEDuPUgJ_RJae#PE
zOqO-BK*KnjogIL_)Jz3RACJUY?ZEW~+1H$~{2k_o%Y(uIH3R6z`K|NdGL!=5lV$Vc
z*(&fGI7OherXM4x!s0w3{b4Ax#6<l}lTU2>w}s~Q=3!pJzbN~iJ}bbM*PPi@!E0eN
zhKcuT=kAsz8TQo76CMO+FW#hr6da({mqpGK2K4T|xv9SNIXZ}a=4_K5pbz1HE6T}9
zbApW~m0C`q)S^F}B9Kw5!eT)Bj_h9vlCX8%VRvMOg8PJ*>PU>%yt-hyGOhjg<ke2;
z7Th2%k_wZpW!A{?Dn2nLFJ4=lqYa4jV<d3;8-+Dg@?%0IvOWsDfrv_`J~>!2pZR4{
z=VR_*?Hw|aai##~+^H>3p$W@6Zi`o4^iO2Iy=FPdEAI58Ebc~*%1#sh8KzUKOVHs(
z<3$LMSCFP|!>fmF^oESZR|c|2JI3|gucuLq4R(||_!8L@gHU8hUQZKn2S#z@EVf3?
zTroZd&}JK(mJLe>#x8xL)jfx$6`okcHP?8i%dW?F%nZh=VJ)32CmY;^y5C1^?V0;M
z<3!e8GZcPej-h&-Osc>6PU2f4x=XhA*<_K*D6U6R)4xbEx~{3*ldB#N+7QEXD^v=I
z+i^L+V7_2ld}O2b-(#bmv*PyZI4|U#<t4E{c3+Oa>Q5|22a(-VLOTZc3!9ns1RI-?
zA<~h|tPH0y*bO1#EMrsWN>4yJM7vq<?d%8sAQUGrndP7J-=xw$nCMSpe7!xoUBNp3
zGTsNoHNSmE+wi-t?Vjri@)nrwy)cL`f%zSrKknks+ReH>FZr?uw$H8*P<CaW^*(*P
zrk<ZDEOj-RoW=I>hiHRQg1U9YoscX-G|gck+SSRX<zu*#%uOZJ$&`iwbI4f^EJ9pa
z@T8p1=V0x-K77AYupaOqRJ8Y8`CFqe-OG4O?Pk+3)K=lIg7Aj+5B{LP8{|uD9bb*L
z=JkjZ*a>!(e7@~eeUEw+POsT;=W9J&=EV`cUc{PIg_#TQVGnZsQbCs7#Q-)<h~+VJ
z%O_$A%X$-T2gv^1iV6X%A*e(F(fO?hnMA3<=C!;L;mUog>v#BicxLw#Fb?#)8TYbu
zN)5R=MI1i7FHhF|X}xEl=sW~`-kf;fOR^h1yjthSw?%#F{HqrY2$q>7!nbw~nZ8q9
z<TlAz0DCai`eopoTgUXKr$&x3a%Yszt2{+eo;=r&?LuF;Zj%RNLHAg=LM|in10Rm2
zxd6;k(nHtRPkOmYqHW7fNcCybHEd(KrX46#z77Z9Q1dkPl|2ZTAjBY-ol(B)e&98T
zgr-$?X`Ytyy13^aY2fa`@Y1*X*i2)xR`@;KF^;++G5hoP)3auvu~w3;5+L|E0eJ^s
zgZRj(m;s_<P67c5tRN5r2qBB}z`g`y!oX~V8oXD2oDd8#khWZ&toq|9@%NQ>h{vY!
z<QL?e6`jG`+hK%nypIRco?pA%s6+zYx(b~=Fi(E95-40VeV5w!L2#*>%i=H!!P&wh
z7_E%pB7l5)*VU>_O-S~d5Z!+;f{pQ4e86*&);?G<9*Q$J<tS(vm9lEGpTY@s(2ek+
z8c`{)@2$sFJY{r$73(<V2UKiNm)(n(&DNp1&6b1{q_xZVGIdKSwV*O`Z3q;#cCe`U
zk~C47tS5LEB&@mN%p)_=XY@OEf&MPgH{St5oHz7A*3o-mSC#2S@XC^m@?vD0WoA3+
z%jkw-8_?@Gk~M`p*@7Cp@q?r=ifcr#f5J(+ee*SCy-59!ceTk_CH8c7hwjNA;pzKD
zr8zf+A(f>EJ!ZxY;Oj5&@^eg0Zs!iLCAR`2K?MSFzjX;kHD6)^`&=EZOIdW>L#O`J
z<!j^{WZ{m%sbn?E@W3)ou>f~$M4}JiV}v6B-e{NUBGF<D@nTna4Fj(s(L&KkX*F3!
zglkC}q4NM*a2HP+ijp5<SToUO6J4Q%w}VEJFwp|MQ|{cP2x=Zt1r&nh4>gj-*H%NG
zfY0X(@|S8?V)drF;2OQcpDl2LV=~=%gGx?_$fbSsi@%J~taHcMTLLpjNF8FkjnjyM
zW;4sSf6RHaa~LijL#EJ0W2m!BmQP(f=%Km_N@hsBFw%q#7{Er?y1V~UEPEih87B`~
zv$jE%>Ug9&=o+sZVZL7^+sp)PSrS;ZIJac4S-M>#V;T--4FXZ*>CI7w%583<{>tb6
zOZ8gZ#B0jplyTbzto2VOs)s9U%trre`m=RlKf{I_Nwdxn(xNG%zaVNurEYiMV3*g|
z``3;{j7`UyfFrjlEbIJN{0db|r>|LA@=vX9CHFZYiexnkn$b%8Rvw0TZOQIXa;oTI
zv@j;ZP+#~|!J(aBz9S{wL7W%Dr1H)G-XUNt9-lP?ijJ-XEj1e*CI~-Xz@4(Xg;UoG
z{uzBf-U+(SHe}6oG%;A*93Zb=oE>uTb^%qsL>|bQf?7_6=KIiPU`I|r;YcZ!YG7y~
zQu@UldAwz$^|uoz3mz1;An-WVBtefSh-pv<`n&TU3oM!hrEI?l@v8A4#^$4t&~T32
zl*J=1q~h+60sNc43>0aVvhzyfjshgPYZoQ(<inR$cERK&%N~SSiy;WaiBTgdl;Bz@
zMx7h{4w6)@f3=XUfD<5b*Di$-gK~XeKu8qdfa(KL$OL~#uI0n&gFVreVt1RX*+{5+
z#8$4WWjNT2me=PpYKo4u#73>OOh>LbUIoblb@1z~zp?))n?^)q6WGuDh}gMUaA9|X
z3qq-XlcNl<s-dSKro}45AbD<^IA@6tvSaLv-;sRc5uLj-i(AB^*}0)lznJ6A48b01
zt^mDP9!TqxILrO*cRjO@t^fSYOWb`|vQ*V4*6V-Ii_hT$&15AhsiGo@jvJCCnY0);
z)Gbzh<7K3LRm`L**mLt1MLc+MqqaWkz{2JV0hUf-(7U6vlP$%@`2fR-Dt+r$66q)X
zh2sR=$#8zbejz`}<A~Y#k!TUpiD??3amyj(E}M)o)o#H-j|LmgBHBXsF9$ok?Wh84
zoxjF*=Hw;;!?a%bcJVG|FBP7@_uu_xpir_`+UDHcZX;}|^THjvjdPRUJ+HO3O$%_*
zsal`RIk@07Cuvh)iE1gNnn7n}$9q`Da-o@9CupmsX{@4y;aIQ1WV^7X(Rcx&McA%o
zqa*mh{MZ+m6i(RP#X)4DdX;+iKAzev_!HbYetk>dy5==T4rq*~g@XVY!9sYZjo#R7
zr{n)r5^S{9+$+8l7IVB*3_k5%-TBY@C%`P@&tZf>82sm#nfw7L%92>nN$663yW!yt
zhS>EfLcE_Z)gv-Y^<SaxB6gHmR|E)iyYeg|g|R}ujv8tMcq*gC>h1;xj(<<JyurkO
zku;yk5>4nD4GY{C-nWUgQc9cMmH{qpa!uEznrGF^?bbJHApScQ$j>$JZHAX80DdXu
z--AMgrA0$Otdd#N9#!cg2Z~N8&lj1d+wDh+^ZObWJ$J)_h(&2#msu>q0B$DEERy{1
zCJN{7M@%#E@8pda`@u!v@{gcT3bA*>g*xYLXlbb&o@1vX*x+l}Voys6o~^_7>#GB|
z*r!R%kA9k%J`?m>1tMHB9x$ZRe0$r~ui<kO`4q0h1q9yWTy1Vw;6%l{l&HBbZk8-0
z4ijBu+y@{d)|{@F;ZFKw{xPkg5F+CDU-3fF>}X}jOC)9LH=Po*2SLdtf3^4?VKn<h
zHzQbKiZ9a#y^bZOa6n&Wk$r`rPcR^1TWQZWl`R8PvM?r?^F}g*>u2ox&mV~0oDgi`
z;9d}P$g~9%ThTK8s}5o<m&w0gVXSc39p)SfaC_U5P2<JPm~s|o1ZFngBTt(DrBI%x
z4kDX}YqUJKdxxsso$;8{1MQ;f+HD&9TGSGCQS)Y9GN_l)t8XY5-si=Gs(k<5;!fvW
zxE8*OW}N`jlcqPjb~+szeAOl~e_-nyQAfun)m7Qku$%99s}G7SNoRK-D2Tt?3bf7l
z_f&iauzO~DnLmd4z7qW{*#v(VPN`62cvfV3MGioX->w2V4?(-lU*ed8ro|}mU}pk%
z;bqB0bx3AOk<0Joeh}Vl@_7Po&C`Cg>>gff>e<EyzTH_%h@VP9GTpHG^0d?A+RMpT
z+TYf8aiHmG?aSY>7fu41U3Ic{JQu1W%+!Gvz3GDO2ixKd;KF6UEw8F_cDAh08gB>@
zaRH2Q96sBJ>`4aXvrF0xPtI<C%^cGg^K!B-fX;2xnF2UCh5PH@z5cKKOHR==RLnzf
zSmET?(5QuFJxq~ag0rPdFM7)-DQc6Kkb_;fb-^S9@$f%6aPJ=U;g7Zr?Ox#q(-JyY
zKvu&Cw@3?z3?xc$8o*T2<9qK!(D=t1JD`+Ta(zAy-y-Frq_L?(ciWSU*N3cXEeC5N
zwIavKBghMD()mO&Qc6^H#jRYCBJ}jZ#?v?4($m6CK2G!{)QNVBe9)sd3#Jc(VH2H^
z=FWxE%(d%&VjzHKBh>WoA1pPsRQtU~xDtnEfTJnl{A9u5pR^K8=UdNq%T8F$)FbN>
zgK+_(BF#D>R>kK!M#OT~=@@}3yAYqm33?{Bv?2iBr|-aRK0@uapzuXI)wE0=R@m^7
zQ`wLBn(M*wg!mgmQT1d!@3<2z>~rmDW)KG0*B4>_R6LjiI0^9QT8gtDDT|Lclxppm
z+OeL6H3QpearJAB%1ellZ6d*)wBQ(hPbE=%?y6i^uf%`RXm*JW*WQ%>&J+=V(=qf{
zri~yItvTZbII+7S0>4Q0U9@>HnMP$X>8TqAfD(vAh};2P{QK)ik`a6$W$n<S7xQ?o
z_{n4xoeaH~jS^3HDy+veci7_+aLh^-n?E!YG6S#O$LPEC_>G<{bR2U<qLrkRpb!v0
z%U*eD$^H(<WG-@VF0k%r-g68(2_6$K`r1T6sUwW?8=<u8q_-5ITGbK36tV>fd!^iE
z#1K58$gW!xpeYHeehuhQCXZ9p%N8m<Fx1W4{1&odf~Dg9N*_P3FP{`cbE*_n{Eco>
zB+l~T_u-Ycr!U><XH<{<R0eR`Jn1$qaE<CV>!?xu!!*6rNxq37{`DhMMfY6NpD3Jw
zkYQDstvt30Hc_SaZuuMP2YrdW@HsPMbf^Y9lI<9$bnMil2X7`Ba-DGLbzgqP>mxwe
zf1&JkDH54D3nLar2KjJ3z`*R+rUABq4;>>4Kjc2i<Dy@)!kC&Aw;NA8e)mD}M7}y*
zi5fe;hrp`ef1|wy(>QEj7pVLcZYZ~pteAG4rm1{><Ecc%k1Tki@ADmF<}mEh$<1ax
zS8dQ&w8<!Cd38+}XJ1#f6|D`7AJ6+Fsr$rBs%wDxJx&tw*&5k&wN_-uj!ur;28wi0
zO+Qvl)mUZbXZm|~oa;LAHy_>PQy<rI@3u-En9*i_l~-?$0z#b@Vco$oFcZc}d3oKO
zD*z%H@Hm`{0l9tDx7KHebXBjGPA%mTPf<pnOy#m~KL9BjL-WcR=L#f{u~T2e78Ilg
z(JT)-B~I|YWyGa#aWq+mx~dt<5RI9)@9nr`in)T{m4a6g9DZqFJ{0ZDQ&w4XPvcfW
z)Zgnax(EnBgW0T@l}fNuwENi8sV_h5iwfdBoer10OP+L`!QRkj>=!QiV5G|tVk)53
zP?Azw+N)Yq3zZ`dW7Q9Bq@Y*jSK0<1f`HM;_>GH57pf_S%Ounz_yhTY8lplQSM`xx
zU{r-Deqs+*I~sLI$Oq`>i`J1kJ(+yNOYy$<j89}LeB{DsRRYsqux%gkK#X#@e^U8%
z#M!7}cTMHu<FLh@jarvDc8P_@QfzNdoQi_n+%?2AM>_>R3Jfi680<|^u#J@aY%Q>O
zqfI~sCbk#3--^zMkV&Yj0D(R^rK}+_npgPr_4^kYuG=pO%$C_7v{s@<a9Q#wuB)t?
z#;9BrH!k(Q*;IUj?T<*@HX2{0em!6debb4D8+OTu+|0s%`KdJcokszE{b|_{ztw|2
zP8WR(1+AaeXov%C!=7CsT*LuDx^}pAS;||)2N$TDO}r&-q#K7;nWjNxk~onpjleeK
zUPThfcj0^+;uf%68trL0i1;=y3B3G^4+!l>-{M-P@RL3^<`kO@b=YdKMuccfO1ZW#
zeRYE%D~CMAgPlo?T!O6?b|pOZv{iMWb;sN=jF%=?$Iz_5zH?K;aFGU^8l7u%zHgiy
z%)~y|k;Es-7YX69AMj^epGX#&^c@pp+lc}kKc`5CjPN4Z$$e58$Yn*J?81%`0~A)D
zPg-db*pj-t4-G9>ImW4IMi*v#9z^9V<wSEy0;H<_ip{R`3n$&`z?qY&+x1%E`|f!X
zF^6qcbMj~^Y|&mU__An*YVWv%D)nfhgB<CJl`_02TU%zkuVLq-ifv^5t4@48WjUK6
z<1pI%d1Hq!eHx}*)cFId$Vc5Z{|e7mEOmtuWJf&C8D27?iS2&%o3DCSW(Dy{q!vBU
z<@J%bdvlGuCbxSa3MmV6=PD4kiAVQdnmr=bOicK#q7Xa-!xi^j8Y6rBUZPWqHJ^kK
zO^AmTc89bc5I+T$XZ64^_c1Pnu-4Kq8TW>D9h@9t;3jMAUVxt=oor+16yHf{lT|G4
zya6{4#BxFw!!~UTRwXXawKU4iz$$GMY6=Z8VM{2@0{=5A0+A#p6$aT3ubRyWMWPq9
zCEH5(Il0v4e4=Yxg(tDglfYAy!UpC>&^4=x7#6_S&Ktds)a8^`^tp6RnRd{KImB^o
z2n=t#>iKx<*evmvoE{+fH#@WXGWs$)Uxr<sPjul^54Bff9y%ZVHz+5}qAbDf+|fnm
zNd{_kS$6bt11Qz5?-m)?lU>tf?r>AaxV0?kf0o@oDboJ6z0cgP@A$;k>SK1UqC?Q_
zk_I?j74;}uNXhOf_5ZxQSgB4otDEb9JJrX1kq`-o%T>g%M5~xXf!2_4P~K64tKgXq
z&KHZ0@!cPvUJG<f9>4kw-0;tPo$zJrU-Nop>Uo65Pm|yaNvKjhi7V1g98;^N1~V3%
zTR>yWa+X2FJ_wpPwz3i^6AGwOa_VMS-&`*KoKgF2&oR10Jn6{!pvVG@n=Jk@vjNuY
zL~P7aDGhg~O9G^!bHi$8?G9v9Gp0cmekYkK;(q=47;~gI>h-kx-c<vM%*#w&fX{!h
zF%L>eM{ml$#8KI$4ltyja<rI2qq{$AR1|U_tFD)9Y-d_jShjldAw-)(k${x89fc)V
z^uj$O=9MXT2cL+;^v%uZ%TIiT&+A8q@<LEWivxLuc7cEhkMJup7#M4iRHWn;gs)|%
z*`|SUEl(kbPZ=F^TZ)n%ySX6erWcgVc`2wiVw2VTP%;PP;UMWPi0k}AaIl!DD+>qP
zki^cyDERloAb)dcDBU4na9C(pfD{P@eBGA}0|Rb)p{ISqi60=^FUEdF!ok{Gs;vb)
zfj9(#1QA64w*ud^Y<WE?99td@r;1MVEDo>sN5&PeiI>c`VioE8h)e}W%S9NMA55Gs
zrWL6l+@3CKd@8(UQLTwe12SGWMqRn+j)QZRj*g)Xua)%ayzpqs{pD(WWESJYL3{M$
z%qkpM`jFoqLYVv6{IbCkL?fEiJj$VG=$taup&RL9e{s(Sgse2xVJlw0h74EXJKt<N
zv_^nt|CWo1^pEn7x}Dzrxu#9#iylF>2<mjN(C1_G037wJ*c!9$6Ya%e(y$WXL!EqA
z8HVt{2cY#I$^(s5lIv2_V)0(hY4lKgWN5U}$n%K8Jg_QsDR2~!MLCfAxETJK@puD+
zRpJ+#PBP2wu|C*%vKJ>eX|dx<CQ&quy2)IJEnV9z;^O>z{->0)3W`JN7Bv!rLvRZc
z0tAOZ2yVe4g9iq826qXAg`f!*+}(o1;1FDb>kKexumFS40KvK0yH1_@Z=LgWZ+}(Y
zwYsa;OLz6tTA%gS=>8$=Z7pLh>|K2QElL)E=Q*(n*H`8R`8={-@4mTD-SWBOYRxV?
zmF(-rJB8^Wlp?319rTrh^?QEP?|Msxrv?WbJ-+id+V#F2Y4(JPJ6U9bv+U1cIIH^W
z)lg$_=g^Ma>2~Pyd_YOAv29Cb-U6DJO?NxnW7~QP*SmYi*vdUVuW#LWQ_u0`hymZi
zaQS3Nb^4`ro$>0G%zbXmr5|D|iq0R<;S@?kr0j5Ruq87-Z1>crx%EzVZ9#U;{?}ti
zW2W%*9MQg3Nbh%Ti6LhDd|-aFSgXoPG`mHlUU1iCHr>ru>DX?W_#13(`u*!Plu2OP
z6jk=2>BC0l)aw<WV`x+C!_sw{a5i*Q67F^#P-aA<I@z6VbJW-5&rwZfvvRk3_cA8b
z-o}<6m7#V@uDa<CVdlJ4d|5@tUf!yN<DjY-Ylj}w8VTHcITO{giPiM2=!{`C)-kgy
z4M#`;s$Hx(F&Ry_6@hE&#+WZxZsYohII;=<B$l#U>;HCmxoYD1i4b%m$1`DYC_^L~
zIEAnFcHvad=-aO3(_MI=9#`z6-9*_!&$?<%meb5;jG<wc(D1r`!k7AFaq^l6-TVCr
zn@T;NWtk;qx(I~IDg2;{VNza#Y9hnvC&&D^iJtYTc_&lLexMB!uC87mR>d5Qp=MGf
z6BD{%`L#TAOq%z%@*ib95Ey7NbUF=BlszVk3Iu3imD&*91N-ij%hW?W@~2TtdHTfP
z#n0@Xd7X8Dyu36n{k#PwQ~T~X7mAO^cNV+z<<Rr{6qP*fL{*O`It}aSc#<7ICz`zH
zfdvuUP1@TR@FL!bPH1@um7aB~aO<rmJ%*b)*b*mqm<2+)la8vi-b#-P?L4aM?FRQw
z!SL2{$6_lC;MwX~JFGU~u@(2B?<Z2dhI@qhN$Or_U*}$DGND-zz*x~AawYee{HE;I
zGAb(xm0Nq$##BQLFEgd@aqT*NJhB}}du8b8cj%ob49sgx?Oi-i5sJpioR>HO@3X-#
z_@rAn$k~(l@kciCC;&Qd*fWRI>=;fL{UPlciNDWyj$bX<#r^(r;EE8wwUVQm&7~QY
zCXRj!**r^xybAEPq>h3W$uvI1j=yNIyzkE_D7fpGw)OV{U*Uwm{xB;mEg2(|y|ICd
zMdQVqzMb-=XM6|E-a9kNh)^9lY`-DjhhHD1w5lufRcy+QLgJ47!fFn<KQi>e86#F;
zX{ufroVBEZJOY?rDo!;Te6aOZ^1SO!dYRxQ*2njyA~dCWawn)>!*k7~>8Ikt<J9hI
zLTxVl%^kbxFjaJKz4UwX+jy29ohPH6;RO0%T`A|oSHWhqWuNJ8tYd1Xp}S%w!~<wT
zHSeF;1&d?WDhsdZgTM&TfZ@=Pp`{?gU%*=Eo2o<UfasbP*Vgmv1Y;j}@b2Fxb@=4D
zWq$ckb3BOYn%N0MW}!64?YGvuPD`}=WgRB1BPo(kSV>&e*0>>V5ZbO|*1+2LFOqVe
zXHb!aMk03^h%&9L8GMy7UDI2Kev>V@(R}*Iu6x+!Hn4~D@wj`P%#Hdbf(lK{+DD7f
zJ&(v*mhn_e(R$^5L#bM^^Q@-!*b!l|+Xrb(q*MRFJYnrE7*xko!SJOy9LngR2|q5k
zY`Ioiu+YBfzF{Labszk-E#*BYQk>$()=xWEGZRKwY)*UxP}0dGuPLZOk<u~1pRF`m
zxYnI*6_BmyuVfiETJ#r=!}C__TJ(hS&_}hqJq6T(xXbQJ?{M?GH1d;1)n-8$1pDWw
zJw5OAAMQDHK*ksFYeeo`fz$TbpGy<)Wsk%<#FfYFVTT9*sy=H-wkS^x;7&PL{erf!
zzf{M*8sv9&hkoBZuv}-Nb}O!f7}9<9ZL1vRNUZ5T^4kV6WRoRqMQo_+AH>NJDI9Hy
zFjfwiK6RjhH#rHW#B0(MW}i%V`943<6@Z*Nd^JEP5uZonXm=u%AM>{H^U@&Jy*i0s
za_Da^xI6pMtXzHc{e~_ZcnKP*;=YL2Z^RmzDl{dJTk7*}E_h*NvgnhnxVKB59Duh~
zqouS_WoOR*{UvUw_K#OWz;gMracr%8>QQ&V*jv!8)ho;U8}9~8EU{N<=Z_gR%IpMT
zbkePUG_a<Uo93~%MM1nso9|UdE|j>fm=#|iIfFmdqkpLMGxY5D$`?I}&T7>TexU@v
zkBx09kG)O;09ckj#(_Uov6vv{{HOcr-%H#DUQ@*GzF8Zh{iSM13%fuB%>wjdU@3Nf
zlnYE!GTyNrqes|;nLFXfWU*Wg-9wmr=NBd$nCk+H?iwNvcd0Wab^3CT9a`>3V~oWI
z9=<ivyrYLX+hLVmYbCVC7nx>_H+N-Q=M<NIna#%7G#cG5P!5#|H6`sbgz{jBdvfcF
z%F@i>Q(io4u4mpdQ;k&5FXnKV5M7R`@WJ9h(GrAirO#XXOU{qQpk^B^Vd=Dt{wiqT
zg-#j9J~@o%H2;W9mg)o6@*Vo;BSs2*4HAHpDk02mndAsov08R_48zJZ@J)s7+hyCo
zy*0L#y)?AqZt-wX%+_Vx`8*A95OLHvs1$k~{h-_N<KA7r(+uvizi3XCB3#4TpjNrJ
zvai45nQG0Co%wk~tYgN!u~~y2n6k!jjXBHc$+Gq4hqTzEj>_vov_gHJE=`X>L?5K+
zD?u59=mjtImMvd1GsDytuYp{Iy<NXRrLZ4s+5CA`p}CBZMPL-T31R=B$JFH(h7Qq$
zc5;cO7Li&TJM=S4-dTKdpeXu!TD{GoUj}7yzx4mPG(VBO;Kq@rcXv?}P$X>UkW&?h
zF>$#`n$~bZ)KN0B$<p$VcVWI@lvp&2*7))!ZYjjYh^fBV(ceia`pW>XGeMYh&`;g8
zo_2-koaO6+8O!+L>SpIQbG(i;QW9UJi{Ecewlo?s&D!^>i$|#jaW}#HJuxt|W48=?
zb^Y&O$a1s5ddr8DIt!sD!t=y1g(d4GR(s;s-HfV$GXl&m;+sAAxB^rk(3_NjE$p#L
z*t4em?tA0d+XwRxN^OQwzbDZMuSE0J1)Ky{mq)^t4bnSl*)s>zNM@mMdtd78&ebHN
z`!(|lE5q-p+TsRaNnMXwALaN5QIZ2IUi^Z22tsN5>nvIO+YU}Q*xh6}ee6@rR~<&1
z(PB4z>9ZBUMXZwSMmd9-aKKsmJeJq^G|#JclOh*xf0?^e0(`40nsg1z)(48;4}B_(
zGwPI)yo|{oX{dVDL-5-aMGr;~vU1cPtJP5JM(sswz&Q`e<@0?y{YhsO9YK8EYJA;L
z>7oG_Mts+(wCBC*Md82#XdKw&J*IizR?9k^rf1r{Ot-&>V^ke{9nI9zavlcNkIJtN
z7T>?o|4rENk-?|lewZ(EfdR;%BUrzKJ^UkCpsM)EA9QHBVV8trT&*O(9?FO{MLTFL
z=5P0H+T6C^jAuX0k4U;~GM!x`!X2N~3_n?qXY$HI>x@(DHEy&Q3ucT1R6fj28wX!I
zC=&d$@bJ_v^%?W2Ngl}e8ww`b%BrN-PzGH;$@B2Ky1?%GMkm#~Okj(-Admyy;qya|
zOi7<TIqKLJIjsT6%xMurCppK$`tFA>3kr_pwt?5Nj<kh;AkqM0FqJNvpLG2%nBiEz
zf%ifK$Kw|EzR5(&`uXcro~^V8i}*)jhx5-t$rA$`c)ZqIf9DQr!qkCRbJWjUI$JZJ
zm$fJ9L9f6?UO=_r2e^Rac$+nqbYU6z^YgMBa7iN^LoJ4qw_S?6p!J<$X}7t17(?2t
zcE?oZJ$Jvt+q&PyLJYNC4pJ6B2Qde+jOF0Lu$QB|%Hl8GeqMD>3p=&H>81!w#>Agj
z(QXx{j0r=pTl>micAI_5vUw<3`Sht?Z}-j2Wx~<RLz32QGv22&J{94fr~V)YDG95g
zjef+~vo?CO%A&z(jqgjVppWOfXF_a0rF&LK$Mau_gV9Ob!+u&!{<c^Y1J5Po?`a)A
zQzS-wDNMkxF(uva11Qd*)ipedF7L8cQx?g7Pl*j{fhk~H=G{iXJB{lDwggu}3W3aA
zqf(*0b}y=rmt<QkiQ35c+=PEj9}{Iru7J~e%e$QIlUdUy@-hWEOf@ncen^;YeTZ*X
zH+U;(?Wy8Xl+h@nkoL^sjJj(5zUISeV;JWYIiaB7RDchD*VdjmbXj9)pN{CA%vsJg
zciJ6y-i)!8uXW&CN8ViTMaOYPM$w1*SL53`0@H8hO>F8DKCUQrsXl2?W8hur42(F_
zsSJ)_36&x6A|YkY6c<2a94SXbv~d>4CC4nkDPvf9Z5Fys^6^5r0j5=E>Cgy_Dk@tS
z%?c}9!qB?t6t8(XMH%le8UeNWp@Nsma~Ql+^3Bo%_npMryeQJz4V=BAqE~T?dejng
z3ge<X@Z7g2fW4F?C!aagtvam=!RFFVpJA`q1dy-E%du?YwT%+fTkMY4<03TZ)j<Oe
zuSu|TMbn$JCNKw9K<+@tJ({pU#md3G(`)NO28!Z^`B|&xuS!YWO}}^8(&l&<H`8f(
zO-EXMeXU|crFs+^NzF_IZ*xCTMAZi{Y<c;sK84v<>{fjCHoNAfYBvsfq;G%VL|j7t
z`X0sy1EEgpyD;)tS1x+fnv-?C@glP0{RCW}Ma?3qpoq_&IJAYOy3G#s`rsh5=3>`K
zkj``<PxYPrnJ%66XZ%$jT_UO;S&LzWfo&581S_54ry#ectge+aWQh>=;|*x5HSjZC
zXNvPLh372q;=+6ja|SC!R-`JcL}}wwskajjTUGTpL(1zkN-p?BA2lmf<wk(A{@fWd
zR@`1h3RtSO<YT(S4xL@1hiEAxTBBzva~C*l--DU9m2vX&A2fTNg49@_4&`2Bzy8!U
z)6qtF$FpZMEKdNYC;O-#lGOq92InNM@``qD2YvzcS>+J3WsB7!k`0Brx8^cLTF9<g
z@nKD{&MQpkhV&mNuFe;7?=GL>h)r+LZ$vsZo}`OpOs)?c6$hclR!R#MAeh|_DY|9r
zy+_3c%IO9h9X?ksp?an&>Lw;QeQ`T-Ku6HaK~H?E9-Z5$cZu{YU;1+-6B$|JD;%!^
zt(4l>F8}a-UkC4YtOxFHckhl4VK<o_&-lD0mk1#hZYAraLBA)XZd9SwQ&Pgn$a!)D
z;&eLCGu8&`Ky;&{YdGM4YZMiZi$_@v^1aVdy+K+*Qo!QYDDtW4@Os*LbJ00k{m)5`
zoRKnSu)novfL2Ts{!-4+5Y{b=o+LpM;89G7S{vXl;M_l=ND-Rc5qgt=ci7TpEo=mH
zL6*Xt9up_3hU63OR>r6P$P_O*U!)IDory%}Wz`YeFx6TO{y2Y${SBm?H9cTWV=WWJ
z`_*CGso!ZN>l@~_jkeXtV}<eU5O#LliK7g)klc(Z=e{4*h!dp)V6v<*N!NnT1w~8K
za~UIar=<m6R+`}h>fczfA{TUkyeD>)i3|NFGcCsBmK3HXp&ol_@GVs7PIpfULy!hi
zs+%KYgS%(n7_z_}6<X(k(VFudPeVYWZh9|epL*7btD&ckkCMALmGw(owKL=w(~r63
zOyHtRRzRvkW>)hblk~W#LZ@&2)fwm6xkFP%&Ju|MFWbNiTwy{{g-pV1RK`L&=RE2D
z4|g;~vd<LODHcrO&uLo^tGtrbwh8*iCTXkJcd4-eXXU0I?k1m)6`j}QSOp%!d{k#o
zIrMoZ12w1s%;qprCkWS}WH>8x<?cZds#+JB{z{||9jq*<HT!M-cBcH=;7~J2uQ_26
zvZro;_+w%PUpNkSI<TD8&2%vNAnp4avGA`e@UKhI+!{F{Jx<Cv<%&v?&9%YQ4BL2T
zaOOpQFMay>d|teYS%w!IlT4W$&FTrk-hcTADX!P?*f1YWEIRwq$Ys%^(Z9w&HT$>}
zsMD#6Df=uJrX!JHP7<>Or;e_Cf=}`!`qR=i8fBj)$6Lxx{HRzd8Tnzd0p>kSps{OG
zKJkml>bUj8$u|F=``l(-aMxWBC@CGZ#FXClQZ<4|&%jN}Tkg#q8z)=>Ly{$i0`rjU
zv<vjl^OND_&nt8%K_DY<c$hBE?ht3o;zMF?PraCx<3H?R+3c+lcVP-`!*=iR^+4=@
zjAXY+K30oPt-hFFYy6`C$csm;r=3u|c~FmFo6B7|^>t|QddO&i=91e?h3>s~i;+6{
z8X4i6a1wDLrSuE#W(zhan+U*Zq+8p3a))JFVF4ffaV51K^YgTs<ELvmzH15OGhhY8
zrA_+PnYK;aeddV!Pi3^WYTGZ2*J)4~@C%)8#kRVzSG2!MszRFau_EOo^?}G1$p^yr
zk#PoR%ZY0-+cfohw#0i(2hnkZfA7b9`g0$EfREag|7IgZEqyUPIUSL{ls?ZdY2jlv
zX?1Mzw~@8iav*U46179*NN~X0%-qa(h<B)RSSGS9k|=WNp6TA~=CbwUXG!l)zfkxA
zNej9!)gKN9qFfwPo;8s*!hnDPngF9Kp{ukrX|iXeI3(#zb*h?bb?@D>o~3;Y*NmM;
zx8T?y-N0uyWY(8=me-HUC9xtABvX5~%yg+Cp&XF$Bq=OcK6T*D7eZ2EmIoCFWm{$S
z1PNw8HDpe5hHeCusN8kdeb&f2#=3M^A~7YwJ7FRrhq*)PG9x?JIAaC<n&nyz&js(6
zJeGWn+?QRH9iX#RFkV(w>{MV}5}<q?f|v9)L^XT#O^Q+lTLo@~KU5xyfaaECe?QTB
zEU+ll%CA@S4EasNBgDg3P3g>g#7R$-Ly%)4=IUkRCGOR|XTMjn&okRmFjaO^YF5^*
z@)#MCBOBezD)*xQNxydlUyN?dW{fS(s-T`gv*0BEnk}<MqB*2*JFz@&Ut*5R*2h-J
z)_1&Q{C@mZhFSfyIyZ=2gNVh5&AtuX!f!}*i1VjIDopYKYu?w1#R<cS5`I@F1PQbP
z*(_N34x08$O$DXg^I;Q5K8>`BdmrbmPO8q8y(X$AA}*RH%I7Av!~84pudHb&%Q5-j
zt?=6x(iR?<^_7X0v6Ys#VAL}dKk^hcjI=|EY;kPcZ_w<*H`_*|N7SacaM1ERD@6ab
zg`!iTm7$URV+lpW_{V$ruR&A>jrX68k4x2wo$45}&wf7o<|o(@B!u-L@bKyQBAGwy
z4#}UrRAu>^>Vb6k2-th^>WjvP;Nl|i3WrjWv3ISkj{m{eAcQIW^_ndxSX@|8T(ASJ
z?_<Q%GX;J*nopDj?vlGTW3<2Bi-14h9Ft?$MJo-;vYeHFBv>$fcP2u*6uOBk-{d>^
z0vWlfGQMvysI%R=iE|A+!!Nw?C917EU*_$`;;)px?s83CRd3i_jBN)k#nR5t$dJ(+
z_sP;wG@Ad)^(3LRj7q}0b2O(b`|i0~5SYb%Sjk^*5ISZ-Ab+}DGu$-X1n^TF1Ndw_
zF|e*1)cI2%`TR&AW~XpqpFb!=3cHbS>np9hYD_Mr5}y5Y<hjKC>`SY^r7isA2Q4(z
zazRQEqWDKT2zIEbjSYdCPi1ZOGz80Nsl}gxO^<!<`)h}k*WrLKhVC9A^uqPrAX2rJ
zk_X_<UKVZj#SZ`e5i&Jvd|AuDABtCTp9RP@piFO@ZU#$^j4fEyi5WR4tQO|sRzdLJ
z86FxwO1hlidA6EQ5OI;XPTXTa$K&JwxgTfPhh!ZPwc^HMC{@|JRTI?xh^Ptzlf~Qj
z4+amGs<?A`M~9~Ge+{a1r{l~f$XZHt1Ik1~ki({=W}#a+O?yAslpyDBa!(JThcKg+
z`7_G`o=!47FD0IvP768*p<&Vtm`CtC?;Dj`fo;v%1qH|i1@RjM=o$pEJq4&d1&L7t
zjHm`Qe8@BW2ApUJb#%iMo6qv$oT6Alh&RB*5@4ncFm(r*OBC@so8*msJq8zql&b-+
z5<*+q@YE4P>DWMY0AV<2K&OL{&^6#@L1?lXu#6xSMh%3^5c*}oM6DQGY#(a^@z<&D
zF(43I9e&5`h|A$5!+UFuOH0>F3$shBV4`0#M4RSB8=6F0ZgIbq<2LQ$Hh^(kAJu=!
zt8ZGXTacD{(3W{V1$j_{Jc)Ka7<N6;sXR!iJaN-JXwp2f^gSr_JqZ^)=odUOg+0iG
zJ@H#S=vq9neLbjrJ&FH#F#bWI5hI@wqj2Jp)bXe%8c1>t6u}ho`4kF+4@t_0!mCBn
z)}o%eA}L)_L?=jw6BIfll7tb3n}?*yLt&XADa=rW>qz=_6s9ziOd5sXjil>FVFx3r
zf>Feewk0v#W9>Gp4GacTRr>Sd2T6dWi-{YX`v!D)kCWzG5xQB=?es5ON(%nkwUhNl
zV>@xkWWWv*N+{e$(SrExvN6BXzU(Hxlx27{VYHf+LpIbTO+Yu(ltMk<<mdQtfilQ%
z#zERxP>;)3A(LU@ytVYFkYvTa79idMtUFhfxx?P!)2F`prNWW#Fub#l>N2s@nh&n_
zA4{#}|AIs9|A4P0ZF%fy=hDN!t#ifH<)4u2kirK~JUpjQ-J+~cXOZI&dI<edX<Pe$
z<5K%Sv8eq|W{$&;<^B}h+C6HiudVR>ts;P}UeXslP6zKvpEKSN-$y>kJ^nw2tC9bv
zo(|lT@?vZ!{_l|d^8Yh)eEBh*5ABh<!=o}_%`M5uz0&2FvS#W)djCI>+Lzjw+?V)o
z#P<J#52aEke-8d*<DbLpV99;)|DC457DTn))TG@GiB9R>-W7361>E(Y4;@`sv;VKn
G`u_lkUM?>H

diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.woff2
deleted file mode 100644
index 64539b54c3751a6d9adb44c8e3a45ba5a73b77f0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 18028
zcmV(~K+nH-Pew8T0RR9107h&84*&oF0I^&E07eM_0Rl|`00000000000000000000
z0000#Mn+Uk92y`7U;vDA2m}!b3WBL5f#qcZHUcCAhI9*rFaQJ~1&1OBl~F%;WnyLq
z8)b|&?3j;$^FW}&KmNW53flIFARDZ7_Wz%hpoWaWlgHTHEHf()GI0&dMi#DFPaEt6
zCO)z0v0~C~q&0zBj^;=tv8q{$8JxX)>_`b}WQGgXi46R*CHJ}6r+;}OrvwA{_SY+o
zK)H-vy{l!P`+NG*`*x6^PGgHH4!dsolgU4RKj@I8Xz~F6o?quCX&=VQ$Q{w01;M0?
zKe|5r<z7o5`*yS~8)MszG41q#5{WWPpy7G9^(-fD<g4HS2Pp6}MR#f7LIoFspeCvR
z3+c{Ov}|bDFijfL*xJ&DWaU}da`Er7tg~)(Y2IDkd3AD?w7jnSneG!-SaWI)p`xDU
zXH9Mys?(WBfmfBO!_){Max(NjX;ffVH@MAGD6y!?&l=$WE1+*S^Cx4)$U?A><_7CD
z=eO3*x!r$<gNx(8nyyp{U13{MWIQu>aX2iFh3;}xNfx0v;SwB<Fg``NKlv&}sOOia
zl_SskHz$qk-Tj7B2@DHwWBbat?O%&GCL=1*D=EFRpwKHcVF9o~HnwAo=XtT&qlRWE
zVi`v1=H&nBv?M!wAX!1fF?LWbbVvCAjN!ns70n|1u$9{ZL&9b)AXkF-t^%6Wna*`f
z*04(m<0Gx@4&<!XDochu+x!F|DAC{R)c4o_TK-_!s|@9}TbCv3Sp`&zta~M|$%-V1
ztq`DddvEXU8JrjLh=Ul_yYF^%B5>fGG+@Z;->Hhvq<wD;VB@ph6#6G_6lL5#3gkx~
zHFE%Z^IuN$3X)Ju)24Q9Ro)B9zI%GT-16@8|DPH7fB1}tA~RrY4U!xKmRBRxkiA|Q
zKr4+b2V=R(Yj3HIK~EcS6>fF4r__4$mU>Dl_1w;-9`~5rF~@!3;r~xP-hZvOfOx)A
z#>8O3N{L{naf215f>m=bzbp7_(ssu&cx)Qo-{)!)Yz3A@Z0uZaM2yJ8#<s6khOy@V
z&}wI!ds<}Wi3oZ(j|&tv|KA}5cx}QpZ^By#9KFAF@B1dVuQA$!NDxA6LE`KPadPU;
zQjo+AqqndYk0@McX!H;i$Tx}X(u#SHJ%&iNTJu#<Xz9=-I1o~2(*?vBfO^7b&8^8!
zI*Z@{F?FmY+=Z{Cp`Jcc{axky6qgRBtRkQEW;eW-3-wE{UVkT;s_VTolPg6pyu@CK
zSyeS%s7^u`F5b$ErP4Ux#VgLuk2sI{EPRQ3O?-?&iV@{?VSLbGh?0Noj@91Fh1H!U
z01AI>OGlzm?JO5gbrj~@)NB4@?>KE(K-$w}{};@dKY#K3+Vi64S<@!Z{(I{7l=!p9
z&kjG^P~0f46i13(w!hED<gesU<d5XH<k#ev<OXsrxsqH=M#%^{mn<fylX>Jga;*Eb
z`!n|++@H8VaKG<9>VDh(y89J#=;Z$ei=GnD5TesW#|Wf)^D+9NKN4J3H5PF_t=V+Z
zdeo8*h9+8&Zfc?>>1|E4B7MAx)^uy$L>szyXre7W|81fjy+RZ1>Gd}@@${~PCOXo)
z$#HZd3)V3@lNGG%(3PyIbvyJTOJAWcN@Uh!FqUkx^&BuAvc)G}0~SKI`8ZZXw$*xP
zum-ZdtPciTAUn$XWb6vrS=JX~f5?M%9S(=QsdYP?K%Odn0S0-Ad<-tBtS3W06I^FK
z8}d2eR_n!(uK~APZ-#tl@SycxkRJ@5wmypdWV{MFt<T5%<QMMP#rTv8Dn)!jr4End
z8!An$TjN_QZBN_|-%;s$96wO$ZrvL{QYl%F!EaP1Th9SiDvOmh5WrK}3{64{{_F&y
zrSMy`6AG<_-)~t&XssC4d+gCHeK9;{jV1y%Xrvg1Cy#-D2g;>YBUY#g-Vv?5AEBj1
z`$T^tRKca*sn7<ZK}0!&|7AkCI;jT+6~rYE0#BU5AkxqT6Y+wF*hUg{if$klH$Np(
z14lF>gt%s@XUD-t>bij-4q-ilku9^;QJ3Mpc`HJ_EX4TGGQ-Og)`c~qm51<|gp7D@
zp#>Grssv^#A)&M8>ulnDM_5t#Al`#jaFpZ<#YJ@>!a$w@kEZ1<@PGs#L~kxOSz7jj
zEhb?;W)eS}0IQQuk4~JT30>4rFJ3!b+77}>$_>v#2FFEnN^%(ls*o80pv0Q>#t#%H
z@`Yy-FXQ9ULKh{Up&oA_A4B!(x^9&>i`+T|eD!&QOLVd(_avv-bFX~4^><K+`NUjl
zUA`n*5<n{f%?!4-)qpuLcwM`4xUD6=$ki+M2U1n6MQw*G7TmC^qdRw?b*#WSFG;)w
z)HldC)uy>o{%mzzrg_i~SBnr%DeE|i+^}|8?kaV(Z32{`vA^l!sp15>Z72z52FgXf
z^8ZITvJ9eXBT1~iQjW|Q`Fac^ak$^N-vI^*geh5|*CdMz;n16gV_zk|Z7q8tFfCvU
zJK^Pptnn0Rc~<r0!CgppAqmePbR1#5Tubl85FQ4lTg)+g8UrHdY9Ka1?3OcBFeRlE
zzYpoom?Fp2nZ{a4hDYQEn^Tkbje;(-5yZ};a0h|L)2vg*F=grd*^|WBo1OU#S-~Fv
zcDpzl2xPHbu|lC2Y@t*8{!%Fh(i78$=lQReu7C@B0!fO~hV;@Uos_RW`!LXs+NQHy
z@F$dGXT35dG@wzAM4<{W&5|=hvLeY%j@6DPfZK{_NfpP!+NaV|XArkdMWmsrp|+Y0
zNxjY}2dUoGHC2{GT?~El9hnDW?KmWthwM10KJ(#NAOW%mXq6&t9<|PZ;%Xe7E+vTD
zfEY+f$1Mv<nx@^jBQcU4Ljg4P-dWxOH-zo(t`hB8-Ik$N3~vY;K2XYCp*Fv_2blJm
zPc;8GW*QB>egGIAK}uv<M%BWA$}X1PZ}r3ec_|6TIBdoXwlXq~Ws001rqVG;8=+eP
zbcwJ)A;^UcGF*T_xCk`{#MzU|C0f_+{M&2Zk_ZN2^_{NVK>99VZm2WLPezQQ5K<`f
zg{8Ll|GioPYfNheMj-7-S87=w4N0WxHP`1V6Y)0M&SkYzVrwp>yfsEF7wj&T0!}dB
z)R~gGfP9pOR;GY_e0~K^^oJ-3AT+m~?Al!{>>5gNe17?OWz)$)sMH*xuQiB>FT2{i
zQ>6U_<n)x#cJkNUc|V)^vL|15d~)i9%UIk7`0hyQQOX6dwG{=#lR`i}3*A_(-}<aV
z6Bs$mG_#ni!&Ir*LWx4DW1y|U7^_H;P@~Q(g7S%hUz3y7SxDI<tR$+-%3z@EM);%g
zLObKN!YkVml!Zc2Qm{14ydZQ0tvYlF^&(mmMY>8}Ay~r4li;jzG+$&?S12{)+<*k9
z<^SX#xY|jvlvTxt(m~C7{y<eW|86c<M_B#9!3F3@>{3g>7TX#o2q$xQO|fc<%8r<e
zu{@uYv6wTaDS(!pU?WCA5)2p&Mj+Ip;0XTMc8zb%VkCGB2k$Gg;JkJFCbWHte9BlD
zCR^F6kT^z*ExAP|FFuMd7tu$>E@A3=UW(o?gVg?gDV!0q6O!{MlX$6-Bu_m&0ms66
znWS&zr{O_4O&{2uCLQvA?xC5vGZ}KV1v6)#oTewgIMSnBur0PtM0&{R5t#UEy3I9)
z`LVP?3f;o}sz*7g<a{wL*dZXtI5+zcTbzINq%3Vx?sa^oH8-vb96eb6k)$k`VM?dj
z8y1_mUUalhn>5qdTxJl^gk3>;8%SOPH@B)rmFOJ)m6?PlYa$y=RX%;}KId{m<ya`&
zf~xC+0#uqMzpD#MstCV?tz>9R#2=LNwosF@OTivgMqxpRGe}5=LtAn?VVl6VWCFLD
z7l#^^H8jY~42hR)OoVF#YDW(md!g(&pJ;yMj|UBAQa}UH?ED@%ci=*(q~Opn>kE2Q
z_4Kgf|0kEA6ary41A;)^Ku(*nirvP!Y>{FZYBLXLP6QL~vRL+uMlZ?jWukMV*(dsn
zL~~KA@jU)(UeoOz^4Gkw{fJsYQ%|UA7i79qO5=DOPBcWlv%pK!A+)*F`3WJ}t9FU3
zXhC4xMV7Z%5RjDs0=&vC4WdvD?Zi5tg4@xg8-GLUI>N$N&3aS4bHrp%3_1u9wqL)i
z)XQLsI&{Hd&bQE!3m&D0vd!4D`l1$rt_{3NS?~lj#|$GN5RmvP(j3hzJOk=+0B*2v
z)Bw133RMUM%wu<VkMnpWWVN&K8^*s5oqf-N`_{oZG|c^)?fe5daI7j+I{GC?6;bAe
zUSXe$6^9Vy1KrCfsOM#a9`s`Ns00)gifk>_+$vbzOy?yk#kvR?xGsg-ipX4wKyXqd
zROKp5))>tNy$HByaEHK%$mqd>-{Yoj`oSBK;w>+eZ&TVcj^DyXjo{DDbZ>vS2cCWB
z(6&~GZ}kUdN(*2-nI!hvbnVy@z2E#F394OZD&Jb04}`Tgaj?MoY?1`{ejE2iud51%
zQ~J0sijw(hqr_Ckbj@pm$FAVASKY(D4BS0GYPkSMqSDONRaFH+O2+jL{hI<DV209S
z)XR~VgGa)M^-;}1&#S3{@xzwR6~@}^V}twZy;sZcsTJr0S5s{W-N3D9v%1<w%kip_
zCaGQ)_4?SD)S-wrJ3}!#J==&-iR8Kz)nLlnoRC&l|C1fmMV-bqBD82vt61QE6dSAF
z*iJKFHPeAzx_T}Ct>ltJSJT~e)TNDr(}=Xt7|UhcU9eoXl&QZRR<9WomW%&m)FT~j
zTgGd3-j}Uk%CRD;$@X)NNV9+RJbifYu>yr{Fk<C+0Z7wvVjq!VGjwL>O;p>_&njI>
zyBHh_72bW<C>;8}oGeY0gpHOxiV597j7mY<#?WMmkf5x~Kf<RrP*$<_TMcAZ<977s
zG-{sG-<y$aNL=Fg)E11z=zEyh@&Zlt<-N$5T)Lf&<pEj#+<|}`9f4puO~YVB6Jm!v
z!37dKVIz9-hLJpqcp?V#EU09HXG3YfV3A{zn-)630R_n7NwnfVYInEHeM$w$$$F=a
zUOHAT9sN4j{@RNZd%w-R1}Mm~Ligs&9Lc5wlF9RUjyxD1L}DW%Q=_4K^pa5dNOiqV
zfiDy5dvZ1fJ9kyK6XwwJ5_8s27to%QJf!DXz~EWpbJWE5-c5LQu!j^}nqmNv+H<%h
z5ssJ<c#g^_qKPkFd;?x87%*ynZQ!gsBex|=gx*awoyTyPQBBvZ@H#pgVq8NqXJ!Gg
zuwA`+(oi^5nIKiFlTl*U=ybY+9YY+wRG&TyaG*FVHfLWlmTb<UHm6AP5eOjK&H%@T
z4@jLl_YGv5Jmy2q={B>k*re(&tG_mX<3&2cON*2u%V29tsXUv{#-ijs2>EuNH-x3)
zPBpi+V6gI=wn}u164_j8xi-y(B?Au2o;UO=r6&)i5S3Mx*)*{_;u}~i4dh$`VgUS-
zMG6t*?DXDYX0D2Oj31MI!HF>|aG8rjrOPnxHu4wZl;!=NGjjDoBpXf?ntrwt^dqxm
zs(lE@*QB3NH)!`rH)5kks-D89g@UX&@DU9jvrs<xLUb7(M^4Zb6^^3tZR7!hc=SMz
zY6*prxO{uSb2$<j;JZB!{&!N@FRiO@L`rit7J5FDJBlZG-SI^R&~X)B26E|MJx3Zp
zy@feJ>Y)aI=9b4n<X@Mg2JK5FwM5CTI(2DlYHRLE7-h-ky&9}X`qiByDxrocwQ6k!
zk>Py3bfdX_U;#?zsan{G>DKob2LnhCJv8o}duQK)qP{7iaaf2=K`a-VNcfC582d4a
z>sBJA*%S|NEazDxXcGPW_uZ&d7xG`~JB!U>U(}acUSn=FqOA~(pn^!aMXRnqiL0;?
zebEZYouRv}-0r;Dq&<B?o>z9>s#Rt1<!G80gW3Q`9g34ikcEkn<~yB0GE=440i1w9
z%Vr=2{=&=rZq4E{&?AkG<{r866K366I$gg?dF2R5T^g;GEw`9Q*Nk^(b|;|+1mb*%
z#4u&?3d3JFi15;ot8Oc19^cux;^0|4tLG@q3aUT$?2-_vk$Lj@p(S^1tSf2`gC-^+
z=%QnjUZHg-onrhZ@o1lIHV_2Dq?*qAxhgUYKOD3{$4MNkw#KqGMg~{D*qK}6#+(MI
zLiJU8?@7)@l#?NnZ90q6`<!@a)Mc05$F6R?dVF0a42_U&5!rIVRk%it+OLoWl=%^V
zt}(_79f^HAArEdKM!qJXXY$(d|4@mB-2tz!8yh<&*Y>HL`0p4bB)A&sMyn|rE_9nh
z?NO*RrjET8D4s(-`nS{MrdYtv*kyCnJKbsftG2D#ia@;42!8xd?a3P(&Y?vCf9na<
zQ&Ni*1Qel&Xq{Z?=%f0<LS^x97`leNoS?M1&H-Xn(H4XTZqAYsYIOp+zQ7v^2WLR!
z_a_8#QR|eBZg?(rHeyy)Ce#d@UAa5k@2V9cLthMp76uClo{creD&Bgz9m%@;ZGciy
zb&;xZf|B4Crm;}`+FCG!wta2!yrIkn%Jpu&re1E<PjbmrrsBbowaz-9RpTeuXu#&D
zFm4Z8p>SRqQt5m|Myg+8T=GDc)@^};=tM>9IDr7hdvE9-M@@<0pqv45xZTeNecbL-
zWFQt4t`9>j8~X%lz}%We>Kzh_=`XO}!;4!OWH?=p*DOs#Nt({k^IvtBEL~Qafn)I^
zm*k{y7_bIs9YE}0B6%r`EIUH8US+MGY!KQA1fi-jCx9*}oz2k1nBsXp;4K<_&S<R|
z+!NEpcbfYC>N}}w<)!EylI_)v7}3&c)V;Cfuj*eJ2yc8LK=vugqTL><#65r6%#2e|
zdYzZ)9Uq7)A$ol&ynM!|RDHc_7?FlWqjW>8TIHc`jExt)f5W|;D%GC#$u!%B*S%Z0
zsj&;bIU2jrt_7%$=!h4Q29n*A^^AI8R|stsW%O@?i+pN0YOU`z;TVuPy!N#~F8Z29
zzZh1`FU(q31wa>kmw{$q=MY>XBprL<1)Py~5TW4mgY%rg$S=4C^0qr+*A^T)Q)Q-U
zGgRb9%MdE-&i#X3xW=I`%xDzAG95!RG9<s#0S@%P{4ssMj6|f(PFTtK{&eg=M$et?
zer_yKYB>)s?v_5+qx`7NdkQ)If5}BoEp~h}XoeK>kweAMxJ8tehagx~;Nr_WP?jXa
zJ&j7%Ef3w*XWf<k`Dtf*esPy5LFqg?XcIB9IkPk2PVCIR^-+n7<HvnNOxS;rSNY$k
z!q<-6euEMl;SCbnVwt5PhJlC8e8)6(eeUqB*8$mMnR$Q&;ETvMu%R;lTOg&_)?8$`
zEVa^()w5!O5o`IR%tYnnz9leJ+<2|7dp$e$)VGU<0VsrN2!{)e*i2Km_!HkTy_op@
zsnIk4PS0pBq&7e1Cq-WNe*ebQP_BP_b6V^hnOf6Jl*FDBLVJ=#%yjrBiM`Z%lGFDo
zwHH-yVfi&trZbO`$d`z6e!q^9z6z!R^x64FT@j!px;*Fv`gCn5ntcrW!_Q4ZK!=`N
zoJV-<2+l^+1!xdB0GlIyi1aL@Bfyw-3;j%CdMMseXt6XU(|7@G1YlJY;FZ<6E=3Wj
z<90D&lAbgUUnehHsAREwMtG=6$~8Hjj0}TB^$|Sk>?V*nR)|IOMrX;$*$e23m?QN`
zk>sC^GE=h6?*Cr~596s_QE@>Nnr?{EU+_^G=LZr#V&0fEXQ3IWtrM{=t^qJ62Sp=e
zrrc>bzX^6yFV!^v7;>J9>j;`qH<hDH19MMT1+`8y)sG%_MO<QWhJX7}-!&K#jas?d
zy;gZO2VIR5z1H^NXfFwADaHGprj9Kyw6No$Yqd_S(T={z#2gbNW$Y;;P#5j-{0Iqq
z{Yz6(ka&r*xSggxVdEyX?Y53QVJz#Wj2B2nNYC=~i46iAU6ds(WkjB{Reo2yZ2cFH
z1KOLbJ7d1#n3MMhVE&yyAfdi+kxdP<3vBD^E`m_9S2y(rq1mIzE*dZNSDYg|SM_8n
zmO6SnMKXq{pYHbK`f8yE_&F1K$=pH5Q;<_Q=ykx1w&1KgW?4A9Z6Hh0ujuU5gw(c)
z&7nRlgcqO=4PWSIrL^%aZQ)})*BEYH(5EdFt~HS|W2m{IuJL*etT$vJP@H=66XgN5
z8Q}8pvQ~ulll!Gl9Z+^=yi)!QQl!(y;INZ9hFT3RpTQp9WD<t=u9}FyLz|lM^T%K;
z_F;6vJrfj%Yd?0P?KC4$4d|po%oYftn%JedFIyM&26HYvVHGfC#(R&nCXS+Z{t)t^
zVSWJ}WdR7#^Eiv>DQ4uc92eVe6nO@c>H=ouLQot``E~KLNqMqJ7(G+?GWO9Ol+q$w
z!^kMv!n{vF?RqLnxVk{a_Ar;^sw0@=+~6!4&;SCh^u<XeQK8Ry4Gm-T(Vj*P>tT=I
zo&$CwvhNOjQpenw2`5*a6Gos6cs~*TD`8H9P4=#jOU_`%L<QahFX*>!W;$57NjN%4
z39(61ZC#s7^tv`_4j}wMRT9rgDo*XtZwN-L;Qc$6v8kKkhmRrxSDkUAzGPgJ?}~_t
zk<g7QLp>woGS4=6lsD`=RL|8L3O9L()N)lmEn-M15fRC{dhZ}7eYV%O-R^gsAp{q4
z!C1}_T8gy^v@SZ5R&Li5JMJy+K8iZw3LOGA0pN1~y@w7RRl#F()ii6Y5mr~Mdy@Kz
z@FT4cm^I&#Fu_9I<Lt*^+@1e0b(+y4E>X(HAFP{XLbRALqm&)>m_we>a`hfv?eE|t
z?YdDp2yAhj-~vuw^wzVDuj%w?exOcOT(ls(F*ceCe(C5HlN{lcQ;}|mRPqFDqLEzw
zR7ldY+M6xe$$qLwekmk{Z&5cME$gpC?-8)f0m$rqaS|mj9ATNJvvyCgs(f2<G?s#j
zlCyq7V=W|3+#5GMRv3jyMSve^Et#Ab=u*f=lMF{rP2hXbA~Thc4Er=Whg%hdYCNEj
z;kX^FSJSNv%HwF&_?QB}Y>{r;2E!oy$k<WRsM?7~2V-%l??892FJ&Nc|D((m<^gBU
z9InVbh@;KM5Dz*apz7ga>5{jik#(;S>do<#m0wVcU<}>)VtYmF9O0%(C>GDzPgh6X
z9OkQLMR~y7=|MtaU!LDPPY7O)L{X#SC+M|v^X2CZ?$GS>U_|aC(VA(mIvCNk+biD|
zSpj>gd(v>_Cbq>~-x^Y3o|?eHmuC?E&z>;<!5?S(?^O9r&S^X+pEvdora!<1(g^2R
zF}c9cL+{oKVWq$6?rtz|xpFbl44EDmFIBCjiJb-Y3(jwkFAqQImExJNVfoWvtZ)_T
zk4V<B4M+9tw4kQKIG^34KQl&&Fz^SMfZ1Rr!}rgT#M3;D3P+k<)V-V;IAUzgk0mWE
z!YO?vo&!phIu^NE0<F?&&>Ij`%{$Pm$hI}bl0Kd`9KD~AchY+goL1?igDxf$qxL9<
z4sW@sD)nwWr`T>e2B8MQN|p*DVTT8)3(%AZ&D|@Zh6`cJFT4G^y6`(UdPLY-&bJYJ
z*L06f2~BX9qX}u)nrpmHP<M#fk<GgBNMKYA_9QYh8<vJ<9@F-~(AqGXdLPEfJFTIn
zp64R)U5xUof+~(#vZUz{EaXw4SAp0Y;12Y-Y*XpA#>G#La#tiZ23<>`R@u8k;ueM6
znuSTY7>XEc+I-(VvL?Y>)adHo(cZ;1I7QP^q%hu#M{BEd8&mG_!EWR7ZV_&E<NEPM
zcuS4Ye{%Gqtc-n!er+G|*<cWkM>GO;d(hGGJzX|tqyYEg2-m0zLT}a{COi$9!?9yK
zGN7&yP$a|0gL`dPUt=4d^}?zrLN?HfKP0_gdRvb}1D73Hx!tXq>7{DWPV;^X{-)cm
zFa^H5oBDL3uLk<C+v0>aFDWgFF@HL6Bt+_^g~*o*t`Hgy3M?nHhWvTp^|AQDc9_H<
zg>IaSMzd7c(Sey;1SespO=8YUUArZaCc~}}tZZX80w%)fNpMExki-qB+;8xVX@dr;
z#L52S6*aM-_$P9x<jdu9ktlJz@92>FuIui;dN#qZ_MYy^C^hrY;YAMg;K`!ZpKKFc
z9feHsool)`tFSS}Su|cL0%F;h!lpR+ym|P>kE-O`3QnHbJ%gJ$dQ_HPTT~>6WNX41
zoDEUpX-g&Hh&GP3ko<AA>F4##?q*MX1K`@=W6(Gxm1=2Tb{hn8{sJyhQBoq}S>bZT
zisRz-xDBYoYxt6--g2M1yh{#<qP09xNr@s6w?MS->QWFCISux}4==r|7+fYdS$%DZ
zXVQu{yPO<)Hn=TK`E@;l!09aY{!TMbT)H-l!(l{0j=SEj@JwW0a_h-2F0MZNpyucb
zPPb+4&j?a!6Z<r#zSSW!Qu(5~6_6s0G^U8i@%ox>nPTB>$t`(XSf-}`&+#rI#`GB>
zl=$3HORwccTnA2%>$Nmz)u7j%_ywoGri1UXVNRxSf(<@vDLKKxFo;5pTI$R~a|-sQ
zd5Rfwj+$k1t0{J`qOL^q>vZUHc7a^`cKKVa{66z?wMuQAfdZBaVVv@-wamPmes$d!
z>gv^xx<0jXO<J6=m}BiiJow`eU@2UA*K~Z_jqm?*Cp?B28V2;3;6C}+*8byL=EIJc
z@2%))H|zSX{#wNl1dKR;V_`{wA-N5-aN?q$&CIR<EVd6v!|e;ZYX_h;K*-tj_Xr#R
zVD!mpcMXWrZqS|`IB=hKzaZzy6X`0CowC9wPYMg&9n}1avJ{}*L0iZ!p`>z;7HIQS
z4RBIFD?7{o^IQ=sNQ-k!ao*<ZRhqeGmf|{bY%Roxqzv&YHX(&*=PS#s1OR(zw~6*G
zAZll^YspPb$=6UL<F@2FynT_exO*?%>+V*|-^I2=UF?{d>bE9avsWbAs{sRE-y`7r
zxVAKA9amvo4T}ZAHSF-{y1GqUHlDp4DO9I3mz5h8n|}P-9nKD|$r9AS3gbF1AX=2B
zyaK3TbKYqv%~JHKQH8v+%zQ8UVEGDZY|mb>Oe3JD_Z{+Pq%HB+J1s*y6JOlk`6~H)
zKt)YMZ*RkbU!<JI!}T{8zEt+(a&daxMztju*ROn;npHenq}*@86I)b4J&uF~&?iJt
zN?o)&ELAxfueHiio3Ybyik@o*@icyb9qQo*!QuvA1&u?hUYT)4qQ$O|oMH`uQ%7^!
z_}}e+S%sZ4PL@FquF`ewt{)}v@KZ#Df*{vuY6%Mec{@2I-?T|VsMToX1VvAe%n^j)
zvdeu6s1|35v#f;_moF<I`PGAy?=_uDS;`<l<OfIk_>GPHzJltmW-=6zqO=5;S)jz{
zFSx?ryqSMxgx|Nhv3z#kFBTuTBHsViaOHs5e&vXZ@l@mVI37<+^KvTE51!pB4Tggq
zz!NlRY2ZLno0&6bA|KHPYO<dkI`ky_l{+0el>MY;;LZG&_lzuLy{@i$&B(}_*~Zk2
z>bkQ7u&Ww%CFh{aqkT{HCbPbRX&EvPRp=}WKmyHc>S_-qbwAr0<20vEoJ(!?-ucjE
zKQ+nSlRL^VnOX0h+WcjGb6WI(8;7bsMaHXDb6ynPoOXMlf9nLKre;w*#E_whR#5!!
z!^%_+X3eJVKc$fMZP;+xP$~e(CIP1R&{2m+iTQhDoC8Yl@kLM=Wily_cu>7C1wjVU
z-^~I0P06ZSNVaN~A`#cSBH2L&tk6R%dU1(u1XdAx;g+5S^Hn9-L$v@p7C<o$=Hu{J
zxrz+#TM>CF&PqV{Z?R$}4EJi36+u2JP7l(@fYfP!=e#76LGy^f>~vs0%s*x@X8`|5
zGd6JOHsQ=feES4Vo8%1P_7F5qjiIm#oRT0kO1(<jgC4I6wQ2{Xo|wjm0krd64efBC
zGt(LP9FC(njlia=(c_lTukVx-yR9~Gt`YfGKRT==f^$Uqz)t!SwGPI)kuvX+Zjvmv
zgh<^_T!LG;_|>?Z_Dk6<DV?iVez|GsZJ9q9|E_~n&^oZp@ZP#r)@50Y)8mRQBV<Zt
zDX+2G&swV0HIzU2B)jGgp<HCCR~bCFxw$OKhJS{dJFnQcxWhHg&GJ*Y)wr*`8kbb7
zRF?6Y&IrteW+;JBSq`vvJy8vQL|A_+2fW`8-8lH@zNvF93Bm{k%c!o-fCV)*0t~GU
zSfWy;Y#>oX&j=Xd8Klk(;gk3S(ZFnc^8Gc=d;8O-R9tlGyp=2I@1teAZpGWUi;}`n
zbJOS_Z2L16nVtDnPpMn{+wR9&yU9~C<-ncppPee`>@1k7hTl5Fn_3_KzQ)u{iJPp3
z)df?Xo%9ta%(dp@DhKuQj4D8=_!*ra#Ib&OXKrsYvAG%H7Kq|43WbayvsbeeimSa=
z8~{7ya9ZUAIgLLPeuNmSB&#-`Je0Lja)M$}I41KHb7dQq$wgwX+EElNxBgyyLbA2*
z=c1VJR%EPJEw(7!UE?4w@94{pI3E%(acEYd8*Wmr^R7|IM2RZ-RVXSkXy-8$!(iB*
zQA`qh2Ze!EY6}Zs7vRz&nr|L60NlIgnO3L*Yz2k2Ivfen?drnVzzu3)1V&-t5S~S?
zw#=Sdh>K@2vA25su*@>npw&7A%|Uh9T1jR$mV*H@)pU0&2#Se`7iJlOr$mp79`DKM
z5vr*XLrg7w6lc4&S{So1KGKBqcuJ!E|HVFB?vTOjQHi)g+FwJqX@Y3q(qa#6T@3{q
zhc@2T-W}XD9x4u+LCdce$*}x!Sc#+rH-sCz6j}0EE`Tk*irUq<m0`(;!&c&G7p#_P
zOJ|kT&v8z(QpAQ%C~^@e!Ck!ICE1vSkA<!Djfg-q)Xjj-!hve17Fw+LN`@{UJN)Br
zZQc5>)y^za`}^1gFnF)C!yf_l_}I<6qfbT$Gc&Eyr?!QwJR~RE4!gKVmqjbI+I^*^
z&hz^7r-dgm@Mbfc#{JTH&^6sJCZt-NTpChB^fzQ}?etydyf~+)!d%V$0faN(f`rJb
zm_YaJZ@>Fg>Ay2&bzTx3w^u-lsulc{mX4-nH*A(32O&b^EWmSu<mNHl&EF)N<Qwv@
z+ghjNCfO8{=RX6l;$%bV;UJwTS<t3aZ9alZA|`Nj-rR_)P~(S$140`CMywS0w4K@n
zvEbSGG>k{#HJk}_ULC}SB(L7`YAs>opp9o5UcnB^kVB*rmW6{s0&~_>J!_#<Q!IQA
zfO6pF51Khiw-3ES&zJ|$tcLa{0mAHdM*u;#&JjS6&2$71z|3e-)lO=LCK!MP<y1Y+
z19)^hGF`6{P@#NOEe8oq!=8hZ$>+cEWib@v-Ms`?!&=3fDot`oH9v&$f<52>{n2l*
z1FRzJ#yQbTHO}}wt0!y8Eh-0<gy=!05)T$dd<p&_-XL+(loOF(KU||XB_8&Ud`&j6
zW~wWblPi)_Dt+fy0AJi)GpeZiwq|YIuGrGcv(nscAa@~_m+trFF56NgiRrAWJI3uF
z`lhjQpmFmzF^U1!<RrqC-I>*|Um3vjX-nWH>`JN5tWB<ptoGg-$7O92<yOQsP=C)b
zJ`}#bAW@wa=e0GehF6uTNUcd|*Ba&dCiyhdjY(|NMK^uobI9q$ZChi=zU%>_gnW%;
zUJ0V?_a#+!=>ahhrbGvmvObe8=v1uI8#gNHJ#>RwxL>E^pT05Br8+$@a9aDC1~$@*
zicSQCbQcr=DCHM*?G7Hsovk|{$3oIwvymi#YoXeVfWj{Gd#XmnDgzQPRUKNAAI44y
z{1WG&rhIR4ipmvBmq$BZ*5tmPIZmhhWgq|TcuR{6lA)+vhj(cH`0;+B^72{&a7ff*
zkrIo|<cYW*47-TiTWhvB;>pd-Yxm+VVptC@QNCDk0=Re%Sz%ta7y{5Dn9(EapBS0r
zLbDKeZepar5%cAcb<^;m>1{QhMzRmRem=+0I3ERot-)gb`i|sII^A#^Gz+x>TW5A&
z3PQcpM$lDy`zb%1yf!e8&_>D02RN950KzW>GN6n@2so&Wu09x@PB=&IkIf|zZ1W}P
zAKf*&Mo5@@G=w&290aG1@3=IMCB^|G4L7*xn;r3v&HBrD4D)Zg+)f~Ls$7*P-^i#B
z4X7ac=0&58j^@2EBZCs}YPe3rqgL<Jxn$r!S8QWfkb&3miwnf<3dO#?*0r^D`z@0O
zyL}HbgfghMrA1DVzkMTz<h8XjNM2zx@b$YHrE<H$adW4nu!w{$k5e-y$OIJc^n_-#
z?T4cd%<Il(cWf@2Jy-ZR<%BHt;L>AA1L3Y}o?}$%u~)7Rk=LLFbAdSy@-Uw6lv?0K
z&P@@M`o2Rll3GoYjotf@WNNjHbe|R?IKVn*?Rzf9v9QoFMq)ODF~>L}26@z`KA82t
z43e!^z&WGqAk$Ww8j6bc3$I|;5^BHwt`?e)zf|&+l#!8uJV_Cwy-n1yS0^Q{W*a8B
zTzTYL>tt&I&9vzGQUrO?YIm6C1r>eyh|qw~-&;7s7u1achP$K3VnXd8sV8J7ZTxTh
z5+^*J5%_#X)XL2@>h(Gmv$@)fZ@ikR$v(2Rax89xscFEi!3_;ORI0dBxw)S{r50qf
zg&_a*>2Xe{s@)7OX9O!C?^6fD8tc3bQTq9}fxhbx2@QeaO9Ej+2m!u~+u%Q6?Tgz{
zjYS}bleKcVhW~1$?t*AO^p!=Xkkgwx6OTik*R3~yg^L`wUU9Dq#$Z*iW%?s6pO_f8
zJ8w#u#Eaw7=8n{zJ}C>w{enA6XYHfUf7h)!Qaev)?V=yW{b@-z`hAz;I7^|DoFChP
z1aYQnkGauh*ps6x*_S77@z1wwGmF8ky9fMbM$dr*`vsot4uvqWn)0vTRwJqH#&D%g
zL3(0dP>%Oj&vm5Re%>*4x|h<Em3JO)$O&GXE=ft3p^9G|#?0DwWLK`p_K)+<TTv{{
z-sme#4+Oqqf)?$*$pWS2gvP{&alHNwIjdG2eeVgB&W~2ncQkQT<TEB}+r+U*Sz^2(
z{JDq=6~A;9bd6M;^@ummf%1~8*<luPLU&L(KPlUFmFbIAFWF(Em5xC%IhGNzYpP8O
zT+`%G-QRPYJlIrWo{iAsK!Q9!P2vkE5P#|jye^?ECnY~D$0dPb9DZfa1?v)yz@3g&
z;g&G9%`bXU)%GaSxc!s&q+yw?s&G0kHmhpF|71o$Tvo0$rpbSM(^6^d{uv91%{b|=
z$*Kl!b^WeJ@0d+rhNnHIz4cl+;iLmd<L-)VhjV!~YbEu}d>1J2X*mK5BH1?Nx_#7(
zepgF`+n)rHXj!RiipusEq!X81;QQBXlTvLDj=Qub(ha&D=BDx3@-V*d!D9PeXUY?l
zwZ0<4=iY!sUj4G>zTS+eYX7knN-8Oynl=NdwHS*nSz_5}*5LQ@=?Yr?uj$`C1m2OR
zK`f5SD2|;=BhU#Ama<P~$VvhmI_^8ZNrt}1AvOV7X(sz*+2GbCZLT;rBdYe9QGvD6
z)XZ03krf;EL7R4cKP%`*;hM_&31edpDiHr|`}C4$VA4K?4)t-d*ee|SqdnPMHN?%7
zx3<>TKe9QaSHQ_DUj1*cUPa*JICFt1<&S3P3zsrs^yUE;tx=x^cmW!Jq!+hohv_B>
zPDMT<UQS`;VV^r@irLILT~0+N33M1<u)sr18hR(<Wra9eQt=0KCN|yzvNvA<AN<3k
zV|hxRkue$##Qs23TChJ;07NqT3L1xe)KK-*%TLpc>0D&08dC4x@cTD<NY(g*?y)&(
z$O8b2Q6sg#wt{+cv-4vv@-+5_NBvTr6Ex1qad@WizC1F1SdwV9_ihN`8RHq?sk5jC
z#WILtbwaI9L(u>$o1$x%So1Ir(G3_AVQMvQ13un~sP(cEWi$2%5q93E7t{3VJf%K?
zuwSyDke~<K40T94pahUuQl0-LemUU;AvE^<Z_y9Yyr$?J0su3Gy5f{LKemD(&L1%W
zWEvyy)Y1GLmYP8(i-d%GK_O{23yX~H+%H&Rou8u`;RWM|q&*T>7KuB2?*#DV8YzJw
z&}SCDexnUPD!%4|y~7}VzvJ4ch)WT4%sw@ItwoNt(C*RP)h?&~^g##vnhR0!HvIYx
z0td2yz9=>t3JNySl*TszmfH6`Ir;ft@RdWs3}!J88UE|gj_GMQ6$ZYphUL2~4OY7}
zB*33_bjkRf_@l;Y!7MIdb~bVe;-m78Pz|pdy=O*3kjak63UnLt!{^!!Ljg0rJD3a~
z1Q;y5Z^MF<=Hr}rd<hCKOY==|sWDSuzL8iiX7^T&s)i%HRX)g)$n}ULLiX`pwGBZP
z9gmSoR&T(}(1y>oz>yRczx+p3RxxgJE2GX&Si)14B@2t21j4hnnP#U?T3g#+{W+Zb
z5s^@>->~-}4|_*!5pIzMCEp|3+i1XKcfUxW`8|ezAh>y{WiRcjSG*asw6;Ef(k#>V
ztguN?EGkV_mGFdq!n#W)<7E}1#EZN8O$O|}qdoE|7K?F4zo1jL-v}E8v?9qz(d$&2
zMwyK&xlC9rXo_2xw7Qe0caC?o?Pc*-QAOE!+UvRuKjG+;dk|jQhDDBe?`XT7Y5lte
zqSu0t5`;>Wv%|nhj|ZiE^IqA_lZu7OWh!2Y(627zb=r7Ends}wVk7Q5o09a@ojhH7
zU0m&h*8+j4e|OqWyJ&B`V`y=>MVO;K9=hk^6EsmVAGkLT{oUtR{JqSRY{Qi{kKw1k
z6s;0SMPJOLp!som|A`*q3t0wIj-=bG8a#MC)MHcMSQU98Juv$?$CvYX)(n`P^!`5|
zv3q@@|G@6wMqh;d;m4qvdibx2Yjml}vG9mDv&!0ne02M#D`Bo}xIB0VWh8>>WtNZQ
z$&ISlJX;*ORQIO;k62qA{^6P%3!Z=Y1EbmY02{w^yB$`;%!{kur&XTGDiO2cjA)lr
zsY^XZWy^DSAaz;kZ_VG?uWnJR7qdN18$~)>(kOoybY0~QYu9||K#|$Mby{3GduV~N
zk9H7$7=RSo+?CUYF502`b76ytBy}sFak&|HIwRvB=0D|S`c#QCJ<t@a2hh9FA+>Pq
zP)uOWI)#(n&{6|C4A^G~%B~BY21aOMoz9RuuM`Ip%oBz+NoAlb7?#`E^}7xXo!4S?
zFg8I~G%!@nXi8&aJSGFcZAxQf;0m}942=i#p-&teLvE{AKm7Sl2f}Io?!IqbC|J;h
z`=5LFOnU5?^w~SV@YwNZx$k_(kLNxZ<T-w9G;`)wdHJoGV2amO-<vG?pZ@XJ#Uo$J
zb+q{_L}lvg?U~@|P1*dSegkN;ajNUGhmyA=S^CQ6@p}9uJKGF3&96BmwaXxSvK>DE
z3cf08^-rIT_>A$}B%IJBPcN^)4;90BQtiEi!gT#+EqyAUZ|}*b_}R>SGloq&6?opL
zuT_+lwQMgg6!Cso$BwUA;k-1NcrzyE>(_X$B0HocjY~=Pk~Q08+N}(|%HjO_i+*=o
z%G6C6A30Ch<0UlG;Zdj@ed!rfUY_i9mYwK8(aYuzcUzlTJ1yPz|Bb-9b33A9zRh<?
zEh+^J@0OOsX>Gl>Ny-Q<wjX~nWiOR}_^4D)POdKUaI)X<DM%#y>#JAq-+qtI@B@&w
z$;PJbyiW=!py@g2hAi0)U1v=;avka`gd@8LC4=BEbNqL&K^UAQ5%r95#x%<j2Twi<
zWI28Jof9kY(Ikv>^qRB%KLaqMnG|6xKAm}sx!Q<xJn;TKhAi-lV_zy<;)6u(yxe`r
zG8s+nu+7X=I2SJx?KI|R<|o>wo}J=2C;NROi$mfADui4)y(3wVA3k~{j^_5%H)C6K
zlYAm1eY**HZOj($)xfKIQFtIVw<YDEZ~5huBx;6h(9UoYDe-u{#QQBex`xo0d_SF-
zZ{zr8r-x@oa=@P7G8Gz%Q<2A7_lyD&aeZ-!inR%aZ-5;iEO&XuPoZbZ6OcnjG1hFD
z=btAA?MyXPGxhQ_`_b@us-{heIodKJbCj6!H57FlM3sv+z|<{D?1@zfhGGSCy3ZI2
zt4}F|%ocaJQVlIK<}Wp7+&rp6QOq<JYmAuckgc6Zxd{^=DJ9>$4&yvz9>(Crs>Gh{
zya6-FG7Dgi92#K)64=9Csj5?Zqe~_9TwSI!2quAwa1w-*uC5!}xY`?tltb0Hq740<
zsq2QelPveZ4chr$=~U3!+c&>xyfvA1`)owOqj=i4wjY=A1577Gwg&Ko7;?il9r|_*
z8P&IDV_g2D{in5OLFxsO!kx3AhO$5aKeoM|!q|VokqMlYM@HtsRuMtBY%I35#5$+G
zpp|JOeoj^U=95HLemB04Yqv{a8X<^K9G2`&ShM_6&Bi1n?o?@MXsDj9Z*A3>#XK%J
zRc*&SlFl>l)9DyRQ{*%Z+^e1XpH?0@vhpXrnPPU*d%vOhKkimm-u<I9o!2{*RVUW0
zkpjTAF;dx9>3c%Q^v3RKp9kx@A2dS?QfS=iigGr7m><)YkV=%LA5h@Uj@9=~ABPMJ
z1UE;F&;Ttg5Kc^Qy!1SuvbNEqdgu3*l`=>s5_}dUv$B%BJbMiWrrMm7OXOdi=GOmh
zZBvXXK7VqO&zojI2Om9};zCB5i|<210I{iwiGznGCx=FT89=Ef)5!lB1cZ6lbz<Vs
z!O6)(KPRgm>gDn07*he}G&w7m!;|E(L-?+<?McI~@TA!vj4RjYnCoT*FH)-pRq74Q
z67E9_umMJOIut_@Dx-Z2hEzHqy0(3L!ra}x0phZ^)OD)P*BAJetYupvu9iOfKMRY*
z59R&ZxVR$6O$s<?dV};ZTu5t!)CO9!I>cz@0<9Z<nFBx*sw*AzBdboG>I~LqYQE<f
zdA084i)nAbA%sHr3I6f)x0A6_C#f|)+7km{+VWc=8p6a>7>HnPA436}oeN2Y(VfG6
zxNZuMK3Crm^Z_AFeHc~CVRrSl0W^?+Gbteu1g8NGYa3(8f*P{(ZT>%!jtSl6WbYVv
zmE(37t0C8vJ6O-5+o*lL9XRcFbd~GSBGbGh3~R!67g&l)7n!kJlWd)~TUy<jO~Zhv
z@xvBaLkBZ#>Xus#!&G6sR%(l(h1$xyrR5j_jM1zj#giA&@(Xl26@n<9>folx!92bQ
z24h<Dc4e3SQJcr^RE3|QaY*5jX?vj3>570+<)4!$!IQ(5yOU|4_E6aN@4v0+{Kx~Z
z;q7fp%0cHziuI%!kB~w}g9@V+1wDz0wFlzX2UOvOy|&;e;t!lAR8tV2KQHgtfk8Uf
zw;rs!(4JPODERk4ckd5I2Vq|0rd@@Mwd8MID%0^fITjYIQom^q;qhP8@|eJx{?5xX
zc1@Fj*kDknlk{c-rnCloQ3hGh7OU+@e<M~mcEvZ$(y*X$K0x5}s~CQD$(YxML3psk
zFM|TBc-aWBLjK@0qr{-u^ogBxgUZ2q9fo2sjGh*5M_>fO3>fkRMcM>J?AeVP<Ux|u
zIt<28*boJGNgvZU&+HIxSJU@0MMOMk7(|dJT9}B#3C^H5%`@R9`pq2cDNIDmG&|fk
z=;qP1KP0X0%WFW{10wdnB1|TJr}_3V9m=|9t1&c+%CUUz+SxZxbB`X)efq{sF+1tq
zKf-%4B#;+_1Fv@}nSe1EebC@A=zceZ+9L=HMG!TLs$d<`aVBpK$8UGu%?r!ZUz3ID
zw2G?KI8ia%8jnZwySwx2`P0dY`Re&F893$F0%*A8SHESTm@B%nT<YZ$)QN^ti`2>&
zlfzX%cdp=N+4S#E*%^=BQ+N`A7C}|k%$|QUn0yI6S3$MS-NjO!4hm55uyju)Q6e!}
z*OVO@A#-mfC9Pha6ng((Xl^V7{d+&u+yx)_B1{~t7d5e8L^i4J>;x<7@5;+l7-Gge
zf#9diXJ$&v^rbN5V(ee%q0xBMEgS6%qZm7hNUP%G;^J44I!BmI@M*+FWz0!+s;+iQ
zU4CuI+27bvNK8v>?7PZnVxB=heJ&_ymE0nN^W#-rqB%+JXkYGDuRw>JM_LdtLkiq*
z6%%3&^BX$jnM@2bjiGc-DymKly)wVkA-pq;jSWL#7_*moZZ4I|-N}o8SK?sIv)p|c
zu~9-B%tMc=!)YMFp*SiC0>kfnH8+X5>;+FFVN{~a9YVdIg1uGkZ~kegFy{^PU(4{(
z`CbY`XmVA3esai686Yw8djCEyF7`bfB^F1)nwv+AqYLZ&Zy=eFhYT2uMd@{sP_qS4
zbJ&>PxajjZt?&c<1^!T|pLHfX=E^FJ>-l_XCZzvRV%x}@u(FtF(mS+Umw<d2c`9Rr
zR+?yr(!A0r|CD~t7GFV?aaA(6z5nz_Nm0i$V6I-ucK$u?K&%hkODCkY(1+;DS|bQF
zb4mg|54xl}b6Ewc=m`{a+NEN`d1?%=>$e+IA74e>gCdTqi;6&=euAIpxd=Y3I5xWR
zBhGoT+T`V1@91OlQ}2YO*~P4ukd*TBBdt?Plt)_ou6Y@Db`ss+Q~A-48s>?eaJYA2
zRGOa8^~Em}EFTmKIVVbMb|ob)hJJ7ITg>yHAn2i|{2ZJU!cwt9YNDT0=*WO7Bq#Xj
zg@FjEaKoolrF8%c;49|`IT&25?O$dq<?{UbIQ0;9Tr9TA6pzz%=H>8kp3#la9&6aH
z6G|{>^C(>yP7#Dr$aeFyS0Ai_$ILhL43#*mgEl(c*4?Ae;tRL&S7Vc}Szl>B`mBuI
zB9Y%xp%CZwlH!3V(`6W4-ZuETssvI&B~_O;CbULfl)X1V%(H7VSPf`_Ka9ak@8A=z
z1l|B1QKT}NLI`WVTRd;2En5u{0CRqy9PTi$ja^inu){LJ&E&6W%JJPw#&PaTxpt?k
zpC~gjN*22Q8tpGHR|tg~ye#9a8N<%odhZJnk7Oh=(PKfhYfzLAxdE36r<6<oD}e5;
zMPsE4+rk0d2jE*#p84SO^!fW~`j-|(WExf+!}WMlI2oGcLeMqZ%ofC97d<+nflE=C
zww(j#(;Qr&ut3IEyIwm>a?A;rO&ELp_Y?8Pdw(PT^Fxn!eG_|LEbSYoBrsBA|6Fgr
zt5LntyusI{Q2fdy=>ditS;}^B;I2MD4=(>7fWt0Jp~y=?VvfvzHvQhj6dyIef46J$
zl4Xu7U9v_NJV?uBBC0!kcTS0UcrV7+<p(Ba=Bk7*SXvlcpQJatnzmyl-^GA6y=0YH
zU!Qp*(5v5`qcU7GH`fZ53mR)&#Os~1d`1FKAc~R?v^F@3sPXWHk(`{v@BF<NgpL1h
zOYj$ZQX-EI8H4?Ypq8IMFE`LLGMYNju;D(Aux0jFNCc@>@~is?Fi+jrr@l3XwD|uG
zr26jUWiv>Ju48Y<K5Q0UFt#$Wh-3Y^huuiZIhuP~4SRD>^#qn7r9mwIH-<mOw=)2D
z<iCzV917q@YTEy}IJiO<?It)?BnA;jg`vU#wb|e4BpbC^HJE}Jh7S%#;t@=RHEzf3
zve@!5mXtmM3~}?iGNYp|t2UDZWtZs+?hWj`+Vz*5E0~r*FRY^QnYC-}Vte5CD38TA
z2heFf8>Pv6Y|V|V-GZ&+&gQ?S?-`&ts{@5GXPqbmyZjUACC&oVXfNwUX0}ba(v978
zp8z!v9~8Zx8qB<QXT5I&+92wF0pO{dS4(N<h_+P+tKZn8-IlF)tWr~gMeIiH-&7y0
zvL&hwU_I>@7>oFPDm^iR@+yw`79YF)w^OHB_N;&&x7c3l^3!)IY#)}x)@D(iNaOm9
zC=^*!{`7<aJO;!0Q_GA?kGJMA-q_;pS6#JcnV+|?H`ki8UM3IyaP&Y_Cob&3B{Pk)
zm4w3$nw_t--`?`O5&1RGdSO&%Hqq;;K{ebNOqKIk%%SGD!F=%uOt^n7pXHX$w+HIP
z8dL)o*Jpb{DXQ+Ru13)nl`bL_X#5zH`D&t|K|2sG@Zx^L{-A|#-X*Z;4E;wV8qs|w
zT>={3*S=%iU=KsPXh=DDZcc``Ss>057i{pdW8M@4q+Ba@Tt%OytH!4>rbIbQw^-pR
zGGYNPzw@n=PV@)b7yVbFr;glF*Qq3>F9oBN5PUXt!?2mdGcpv^o1?Thp`jP10G2Yi
z(c93td3F3SW!Le5DUwdub!aDKoVLU6g!O?Ret21l$qOC;kdd@L#M&baVu&JZGt&<6
z!VCkvgRaav6QDW2x}tUy4~Y5(B+#Ej-8vM?DM-1?J_*&PntI3E96M!`WL#<&Z5n2u
z<QPxSVI}f8nvsYEV@sQO)6fswrNtp@sU=8(-b8Mb5P$r8S==I%7kh4B)_n@!DLI2Z
z4PP(&9*0`aDCzk=7Hs;qt@l};2A|ee_lp|_XHg@k->o`P!~vBT$YOT~gU9#PB)%JZ
zcd_u<u8SkTyW@XV6qrAJ#qjS(2-MC6glNGYe|r3T`ER-;ck$QHoSn3~1RN=RR%nUZ
zKf8<#6k1k~H@+pG{73t5FQeCnhxF-1&my@?)3Sx2>=m^LYzC!pH#W`yA1!(fA;D~b
zG#73@l)NNd;n#XrKXZEfab;@kQRnOFU2Th-1m<4mJzlj9<frYer6HiQx@?8?NJ2Do
zObcl_ecl~1qF&eiOVBk0#ZN-|Dd_D_4Xx*PUVf?)>b3pv-GF$elX7ib9!uILM_$ke
zHIGB*&=5=;ynQA{y7H93%i^d)T}y@(p>8vVhJ4L)M{0Q*@D^+SPp`EW+G6E%+`Z;u
zS3goV@Dic7vc5`?!pCN4<JvL_48+Q8LQ@>4Ts@*{)zwy)9?B||AM{zKlN4T}qQRL2
zgv+{K8bv7w)#xge16;kI1fU87!W4pX)N&|cq8&i^1r`W|Hg4366r(?-ecEJ9u&Eaw
zrhyikXQB>C9d>cpPGiu=VU3Z-u4|0V_iap!_J3o+K_R5EXk@sfu~zHwwYkpncVh!R
zqNe7Cmf_|Wmeq4#(mIO&(wCK@b4(x0?W1Qtk(`$?+$uCJCGZm_%k?l32vuShgDFMa
ztc`{$8DhB9)&?~(m&EUc=LzI1=qo#zjy#2{hLT_*aj<618qQ7mD#k2ZFGou&69;=2
z1j7=Su8k}{L*h&mfs7jg^PN&9C1Z@U!p6gXk&-7xM~{X<iLOVw!aav*!V=`4l#Z}C
z96Cuv>`nqH#aGO`;Xy_zbz^rYacIq0AH%4!Oh93TzJ820%ur)8OyeS@K?sF1V(iFO
z37Nnqj1z#1{|v7=_CX`lQA|$<1gtuNMHGNJYp1D_k;WQk-b+T6VmUK(x=bWviOZ~T
z|4e%SpuaWLWD?qN2%`S*`P;BQBw(B__wTD6epvGdJ+>DBq2oV<pcqb&6wR<4FA$2v
z5~)nCP^#1#txj(+n#>lf&F*lz+#avb4<LeKI6+c0!*aYJO0uGAzkT?h&<)eF9oO@N
zFp85j%ZswAo3`tRahjKP+mG|QpZEJg2u4s0CrFBBSdJG&Nmf)%H%!ZRT+a`}C{EHW
zFUqQJ+O8kQX<pWCKhEoZ-tYH^5fsA-lA;-w;{{QY6;;y>)3P1c^Mf#olQheVvZ|Z5
z>xXfgmv!5Z^SYn+_x}K5B%G^sRwiez&z9|f!E!#oJlT2k<v)*-8Izce`)2-oo#(W-
zoudGWwGo@1CGNHF$IO1;TKoQC#d=r1zr6R{_1!X`9kp|Iknh0E@*R+w*=1K9s{o0$
zk>COV0000$L_|bHBqAarB4TD{W@grX1CUr72@caw0faEd7-K|4L_|cawbojjHdpd6
zI6~Iv5J?-Q4*&oF000000FV;^004t70Z6Qk1Xl<E0000001Beth!e-qIiLWEb%ZLV
zlu{~6UVVTb6vR4Bl(ZyCk|ase4n~5DnVFfHdC{Mq``+`wUsuh>{X9oJ{sRC2(cs?-

diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/bootstrap.min.js b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/bootstrap.min.js
deleted file mode 100644
index c8f82e5..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/bootstrap.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Bootstrap v3.3.4 (http://getbootstrap.com)
- * Copyright 2011-2015 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){
-var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/d3.min.js b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/d3.min.js
deleted file mode 100644
index 34d5513..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/d3.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function r(n){return null===n?0/0:+n}function u(n){return!isNaN(n)}function i(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function c(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function l(){this._=Object.create(null)}function s(n){return(n+="")===pa||n[0]===va?va+n:n}function f(n){return(n+="")[0]===va?n.slice(1):n}function h(n){return s(n)in this._}function g(n){return(n=s(n))in this._&&delete this._[n]}function p(){var n=[];for(var t in this._)n.push(f(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function m(){this._=Object.create(null)}function y(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=da.length;r>e;++e){var u=da[e]+t;if(u in n)return u}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new l;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function S(){ta.event.preventDefault()}function k(){for(var n,t=ta.event;n=t.sourceEvent;)t=n;return t}function E(n){for(var t=new _,e=0,r=arguments.length;++e<r;)t[arguments[e]]=w(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=ta.event;u.target=n,ta.event=u,t[u.type].apply(e,r)}finally{ta.event=i}}},t}function A(n){return ya(n,_a),n}function N(n){return"function"==typeof n?n:function(){return Ma(n,this)}}function C(n){return"function"==typeof n?n:function(){return xa(n,this)}}function z(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ta.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?i:u}function q(n){return n.trim().replace(/\s+/g," ")}function L(n){return new RegExp("(?:^|\\s+)"+ta.requote(n)+"(?:\\s+|$)","g")}function T(n){return(n+"").trim().split(/^|\s+/)}function R(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=T(n).map(D);var u=n.length;return"function"==typeof t?r:e}function D(n){var t=L(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(u)||e.setAttribute("class",q(u+" "+n))):e.setAttribute("class",q(u.replace(t," ")))}}function P(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?i:u}function U(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?u:r}function j(n){function t(){var t=this.ownerDocument,e=this.namespaceURI;return e?t.createElementNS(e,n):t.createElement(n)}function e(){return this.ownerDocument.createElementNS(n.space,n.local)}return"function"==typeof n?n:(n=ta.ns.qualify(n)).local?e:t}function F(){var n=this.parentNode;n&&n.removeChild(this)}function H(n){return{__data__:n}}function O(n){return function(){return ba(this,n)}}function I(n){return arguments.length||(n=e),function(t,e){return t&&e?n(t.__data__,e.__data__):!t-!e}}function Y(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function Z(n){return ya(n,Sa),n}function V(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function X(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=c(t,ra(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp("^__on([^.]+)"+ta.requote(n)+"$");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),c=$;a>0&&(n=n.slice(0,a));var l=ka.get(n);return l&&(n=l,c=B),a?t?u:r:t?b:i}function $(n,t){return function(e){var r=ta.event;ta.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ta.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Aa,u="click"+r,i=ta.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ea&&(Ea="onselectstart"in e?!1:x(e.style,"userSelect")),Ea){var o=n(e).style,a=o[Ea];o[Ea]="none"}return function(n){if(i.on(r,null),Ea&&(o[Ea]=a),n){var t=function(){i.on(u,null)};i.on(u,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var u=r.createSVGPoint();if(0>Na){var i=t(n);if(i.scrollX||i.scrollY){r=ta.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Na=!(o.f||o.e),r.remove()}}return Na?(u.x=e.pageX,u.y=e.pageY):(u.x=e.clientX,u.y=e.clientY),u=u.matrixTransform(n.getScreenCTM().inverse()),[u.x,u.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ta.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nt(n){return n>1?0:-1>n?qa:Math.acos(n)}function tt(n){return n>1?Ra:-1>n?-Ra:Math.asin(n)}function et(n){return((n=Math.exp(n))-1/n)/2}function rt(n){return((n=Math.exp(n))+1/n)/2}function ut(n){return((n=Math.exp(2*n))-1)/(n+1)}function it(n){return(n=Math.sin(n/2))*n}function ot(){}function at(n,t,e){return this instanceof at?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof at?new at(n.h,n.s,n.l):bt(""+n,_t,at):new at(n,t,e)}function ct(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new mt(u(n+120),u(n),u(n-120))}function lt(n,t,e){return this instanceof lt?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof lt?new lt(n.h,n.c,n.l):n instanceof ft?gt(n.l,n.a,n.b):gt((n=wt((n=ta.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new lt(n,t,e)}function st(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new ft(e,Math.cos(n*=Da)*t,Math.sin(n)*t)}function ft(n,t,e){return this instanceof ft?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof ft?new ft(n.l,n.a,n.b):n instanceof lt?st(n.h,n.c,n.l):wt((n=mt(n)).r,n.g,n.b):new ft(n,t,e)}function ht(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=pt(u)*Xa,r=pt(r)*$a,i=pt(i)*Ba,new mt(dt(3.2404542*u-1.5371385*r-.4985314*i),dt(-.969266*u+1.8760108*r+.041556*i),dt(.0556434*u-.2040259*r+1.0572252*i))}function gt(n,t,e){return n>0?new lt(Math.atan2(e,t)*Pa,Math.sqrt(t*t+e*e),n):new lt(0/0,0/0,n)}function pt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vt(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function dt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mt(n,t,e){return this instanceof mt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mt?new mt(n.r,n.g,n.b):bt(""+n,mt,ct):new mt(n,t,e)}function yt(n){return new mt(n>>16,n>>8&255,255&n)}function Mt(n){return yt(n)+""}function xt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function bt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(kt(u[0]),kt(u[1]),kt(u[2]))}return(i=Ga.get(n.toLowerCase()))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function _t(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new at(r,u,c)}function wt(n,t,e){n=St(n),t=St(t),e=St(e);var r=vt((.4124564*n+.3575761*t+.1804375*e)/Xa),u=vt((.2126729*n+.7151522*t+.072175*e)/$a),i=vt((.0193339*n+.119192*t+.9503041*e)/Ba);return ft(116*u-16,500*(r-u),200*(u-i))}function St(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function kt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Et(n){return"function"==typeof n?n:function(){return n}}function At(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Nt(t,e,n,r)}}function Nt(n,t,e,r){function u(){var n,t=c.status;if(!t&&zt(c)||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return void o.error.call(i,r)}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=ta.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!this.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=ta.event;ta.event=n;try{o.progress.call(i,c)}finally{ta.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ra(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},ta.rebind(i,o,"on"),null==r?i:i.get(Ct(r))}function Ct(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function zt(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qt(){var n=Lt(),t=Tt()-n;t>24?(isFinite(t)&&(clearTimeout(tc),tc=setTimeout(qt,t)),nc=0):(nc=1,rc(qt))}function Lt(){var n=Date.now();for(ec=Ka;ec;)n>=ec.t&&(ec.f=ec.c(n-ec.t)),ec=ec.n;return n}function Tt(){for(var n,t=Ka,e=1/0;t;)t.f?t=n?n.n=t.n:Ka=t.n:(t.t<e&&(e=t.t),t=(n=t).n);return Qa=n,e}function Rt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Dt(n,t){var e=Math.pow(10,3*ga(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Pt(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],o=0,a=r[0],c=0;u>0&&a>0&&(c+a+1>t&&(a=Math.max(1,t-c)),i.push(n.substring(u-=a,u+a)),!((c+=a+1)>t));)a=r[o=(o+1)%r.length];return i.reverse().join(e)}:y;return function(n){var e=ic.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",c=e[4]||"",l=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=oc.get(g)||Ut;var M=l&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>p){var c=ta.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!l&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===o?u+n+k:">"===o?k+u+n:"^"===o?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function Ut(n){return n+""}function jt(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ft(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new cc(e-1)),1),e}function i(n,e){return t(n=new cc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{cc=jt;var r=new jt;return r._=n,o(r,t,e)}finally{cc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Ht(n);return c.floor=c,c.round=Ht(r),c.ceil=Ht(u),c.offset=Ht(i),c.range=a,n}function Ht(n){return function(t,e){try{cc=jt;var r=new jt;return r._=t,n(r,e)._}finally{cc=Date}}}function Ot(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(c,a)),null!=(u=sc[e=n.charAt(++a)])&&(e=n.charAt(++a)),(i=N[e])&&(e=i(t,null==u?"e"===e?" ":"0":u)),o.push(e),c=a+1);return o.push(n.slice(c,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},u=e(r,n,t,0);if(u!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var i=null!=r.Z&&cc!==jt,o=new(i?jt:cc);return"j"in r?o.setFullYear(r.y,0,r.j):"w"in r&&("W"in r||"U"in r)?(o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(r.Z/100|0),r.M+r.Z%100,r.S,r.L),i?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var u,i,o,a=0,c=t.length,l=e.length;c>a;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=C[o in sc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.slice(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,N.c.toString(),t,r)}function c(n,t,r){return e(n,N.x.toString(),t,r)}function l(n,t,r){return e(n,N.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{cc=jt;var t=new cc;return t._=n,r(t)}finally{cc=Date}}var r=t(n);return e.parse=function(n){try{cc=jt;var t=r.parse(n);return t&&t._}finally{cc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ae;var M=ta.map(),x=Yt(v),b=Zt(v),_=Yt(d),w=Zt(d),S=Yt(m),k=Zt(m),E=Yt(y),A=Zt(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var N={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return It(n.getDate(),t,2)},e:function(n,t){return It(n.getDate(),t,2)},H:function(n,t){return It(n.getHours(),t,2)},I:function(n,t){return It(n.getHours()%12||12,t,2)},j:function(n,t){return It(1+ac.dayOfYear(n),t,3)},L:function(n,t){return It(n.getMilliseconds(),t,3)},m:function(n,t){return It(n.getMonth()+1,t,2)},M:function(n,t){return It(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return It(n.getSeconds(),t,2)},U:function(n,t){return It(ac.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return It(ac.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return It(n.getFullYear()%100,t,2)},Y:function(n,t){return It(n.getFullYear()%1e4,t,4)},Z:ie,"%":function(){return"%"}},C={a:r,A:u,b:i,B:o,c:a,d:Qt,e:Qt,H:te,I:te,j:ne,L:ue,m:Kt,M:ee,p:s,S:re,U:Xt,w:Vt,W:$t,x:c,X:l,y:Wt,Y:Bt,Z:Jt,"%":oe};return t}function It(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Yt(n){return new RegExp("^(?:"+n.map(ta.requote).join("|")+")","i")}function Zt(n){for(var t=new l,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Vt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Xt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function $t(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Bt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Wt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.y=Gt(+r[0]),e+r[0].length):-1}function Jt(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Gt(n){return n+(n>68?1900:2e3)}function Kt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Qt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function ne(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function te(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ee(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function re(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ue(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ie(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=ga(t)/60|0,u=ga(t)%60;return e+It(r,"0",2)+It(u,"0",2)}function oe(n,t,e){hc.lastIndex=0;var r=hc.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ae(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function ce(){}function le(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function se(n,t){n&&dc.hasOwnProperty(n.type)&&dc[n.type](n,t)}function fe(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function he(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)fe(n[e],t,1);t.polygonEnd()}function ge(){function n(n,t){n*=Da,t=t*Da/2+qa/4;var e=n-r,o=e>=0?1:-1,a=o*e,c=Math.cos(t),l=Math.sin(t),s=i*l,f=u*c+s*Math.cos(a),h=s*o*Math.sin(a);yc.add(Math.atan2(h,f)),r=n,u=c,i=l}var t,e,r,u,i;Mc.point=function(o,a){Mc.point=n,r=(t=o)*Da,u=Math.cos(a=(e=a)*Da/2+qa/4),i=Math.sin(a)},Mc.lineEnd=function(){n(t,e)}}function pe(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function ve(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function de(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function me(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ye(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function Me(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function xe(n){return[Math.atan2(n[1],n[0]),tt(n[2])]}function be(n,t){return ga(n[0]-t[0])<Ca&&ga(n[1]-t[1])<Ca}function _e(n,t){n*=Da;var e=Math.cos(t*=Da);we(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function we(n,t,e){++xc,_c+=(n-_c)/xc,wc+=(t-wc)/xc,Sc+=(e-Sc)/xc}function Se(){function n(n,u){n*=Da;var i=Math.cos(u*=Da),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),l=Math.atan2(Math.sqrt((l=e*c-r*a)*l+(l=r*o-t*c)*l+(l=t*a-e*o)*l),t*o+e*a+r*c);bc+=l,kc+=l*(t+(t=o)),Ec+=l*(e+(e=a)),Ac+=l*(r+(r=c)),we(t,e,r)}var t,e,r;qc.point=function(u,i){u*=Da;var o=Math.cos(i*=Da);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),qc.point=n,we(t,e,r)}}function ke(){qc.point=_e}function Ee(){function n(n,t){n*=Da;var e=Math.cos(t*=Da),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),l=u*c-i*a,s=i*o-r*c,f=r*a-u*o,h=Math.sqrt(l*l+s*s+f*f),g=r*o+u*a+i*c,p=h&&-nt(g)/h,v=Math.atan2(h,g);Nc+=p*l,Cc+=p*s,zc+=p*f,bc+=v,kc+=v*(r+(r=o)),Ec+=v*(u+(u=a)),Ac+=v*(i+(i=c)),we(r,u,i)}var t,e,r,u,i;qc.point=function(o,a){t=o,e=a,qc.point=n,o*=Da;var c=Math.cos(a*=Da);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),we(r,u,i)},qc.lineEnd=function(){n(t,e),qc.lineEnd=ke,qc.point=_e}}function Ae(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function Ne(){return!0}function Ce(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(be(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return void u.lineEnd()}var c=new qe(e,n,null,!0),l=new qe(e,null,c,!1);c.o=l,i.push(c),o.push(l),c=new qe(r,n,null,!1),l=new qe(r,null,c,!0),c.o=l,i.push(c),o.push(l)}}),o.sort(t),ze(i),ze(o),i.length){for(var a=0,c=e,l=o.length;l>a;++a)o[a].e=c=!c;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,l=s.length;l>a;++a)u.point((f=s[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var a=s.length-1;a>=0;--a)u.point((f=s[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function ze(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.n=e=n[r],e.p=u,u=e;u.n=e=n[0],e.p=u}}function qe(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Le(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);d.point(e[0],e[1])}function c(){y.point=a,d.lineStart()}function l(){y.point=o,d.lineEnd()}function s(n,t){v.push([n,t]);var e=u(n,t);x.point(e[0],e[1])}function f(){x.lineStart(),v=[]}function h(){s(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),p.push(v),v=null,r)if(1&t){n=e[0];var u,r=n.length-1,o=-1;if(r>0){for(b||(i.polygonStart(),b=!0),i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);i.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Te))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:l,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=l,g=ta.merge(g);var n=Fe(m,p);g.length?(b||(i.polygonStart(),b=!0),Ce(g,De,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=Re(),x=t(M),b=!1;return y}}function Te(n){return n.length>1}function Re(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function De(n,t){return((n=n.x)[0]<0?n[1]-Ra-Ca:Ra-n[1])-((t=t.x)[0]<0?t[1]-Ra-Ca:Ra-t[1])}function Pe(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?qa:-qa,c=ga(i-e);ga(c-qa)<Ca?(n.point(e,r=(r+o)/2>0?Ra:-Ra),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=qa&&(ga(e-u)<Ca&&(e-=u*Ca),ga(i-a)<Ca&&(i-=a*Ca),r=Ue(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function Ue(n,t,e,r){var u,i,o=Math.sin(n-e);return ga(o)>Ca?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function je(n,t,e,r){var u;if(null==n)u=e*Ra,r.point(-qa,u),r.point(0,u),r.point(qa,u),r.point(qa,0),r.point(qa,-u),r.point(0,-u),r.point(-qa,-u),r.point(-qa,0),r.point(-qa,u);else if(ga(n[0]-t[0])>Ca){var i=n[0]<t[0]?qa:-qa;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function Fe(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;yc.reset();for(var a=0,c=t.length;c>a;++a){var l=t[a],s=l.length;if(s)for(var f=l[0],h=f[0],g=f[1]/2+qa/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=l[d];var m=n[0],y=n[1]/2+qa/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>qa,k=p*M;if(yc.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*La:b,S^h>=e^m>=e){var E=de(pe(f),pe(n));Me(E);var A=de(u,E);Me(A);var N=(S^b>=0?-1:1)*tt(A[2]);(r>N||r===N&&(E[0]||E[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Ca>i||Ca>i&&0>yc)^1&o}function He(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,l,s;return{lineStart:function(){l=c=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?qa:-qa),h):0;if(!e&&(l=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(be(e,g)||be(p,g))&&(p[0]+=Ca,p[1]+=Ca,v=t(p[0],p[1]))),v!==c)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&be(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return s|(l&&c)<<1}}}function r(n,t,e){var r=pe(n),u=pe(t),o=[1,0,0],a=de(r,u),c=ve(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=i*c/s,h=-i*l/s,g=de(o,a),p=ye(o,f),v=ye(a,h);me(p,v);var d=g,m=ve(p,d),y=ve(d,d),M=m*m-y*(ve(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=ye(d,(-m-x)/y);if(me(b,p),b=xe(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=ga(A-qa)<Ca,C=N||Ca>A;if(!N&&k>E&&(_=k,k=E,E=_),C?N?k+E>0^b[1]<(ga(b[0]-w)<Ca?k:E):k<=b[1]&&b[1]<=E:A>qa^(w<=b[0]&&b[0]<=S)){var z=ye(d,(-m+x)/y);return me(z,p),[b,xe(z)]}}}function u(t,e){var r=o?n:qa-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=ga(i)>Ca,c=gr(n,6*Da);return Le(t,e,c,o?[0,-n]:[-qa,n-qa])}function Oe(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,l=o.y,s=a.x,f=a.y,h=0,g=1,p=s-c,v=f-l;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-l,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-l,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:l+h*v}),1>g&&(u.b={x:c+g*p,y:l+g*v}),u}}}}}}function Ie(n,t,e,r){function u(r,u){return ga(r[0]-n)<Ca?u>0?0:3:ga(r[0]-e)<Ca?u>0?2:1:ga(r[1]-t)<Ca?u>0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&Q(l,i,n)>0&&++t:i[1]<=r&&Q(l,i,n)<0&&--t,l=i;return 0!==t}function l(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&a.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=0/0}function g(){v&&(p(y,M),x&&w&&A.rejoin(),v.push(A.buffer())),C.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Tc,Math.min(Tc,n)),t=Math.max(-Tc,Math.min(Tc,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};N(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,E=a,A=Re(),N=Oe(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=ta.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),l(null,null,1,a),a.lineEnd()),u&&Ce(v,i,t,l,a),a.polygonEnd()),v=d=m=null}};return C}}function Ye(n){var t=0,e=qa/3,r=ir(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*qa/180,e=n[1]*qa/180):[t/qa*180,e/qa*180]},u}function Ze(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,tt((i-(n*n+e*e)*u*u)/(2*u))]},e}function Ve(){function n(n,t){Dc+=u*n-r*t,r=n,u=t}var t,e,r,u;Hc.point=function(i,o){Hc.point=n,t=r=i,e=u=o},Hc.lineEnd=function(){n(t,e)}}function Xe(n,t){Pc>n&&(Pc=n),n>jc&&(jc=n),Uc>t&&(Uc=t),t>Fc&&(Fc=t)}function $e(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=Be(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=Be(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Be(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function We(n,t){_c+=n,wc+=t,++Sc}function Je(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);kc+=o*(t+n)/2,Ec+=o*(e+r)/2,Ac+=o,We(t=n,e=r)}var t,e;Ic.point=function(r,u){Ic.point=n,We(t=r,e=u)}}function Ge(){Ic.point=We}function Ke(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);kc+=o*(r+n)/2,Ec+=o*(u+t)/2,Ac+=o,o=u*n-r*t,Nc+=o*(r+n),Cc+=o*(u+t),zc+=3*o,We(r=n,u=t)}var t,e,r,u;Ic.point=function(i,o){Ic.point=n,We(t=r=i,e=u=o)},Ic.lineEnd=function(){n(t,e)}}function Qe(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,La)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function nr(n){function t(n){return(a?r:e)(n)}function e(t){return rr(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=0/0,S.point=i,t.lineStart()}function i(e,r){var i=pe([e,r]),o=n(e,r);u(M,x,y,b,_,w,M=o[0],x=o[1],y=e,b=i[0],_=i[1],w=i[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=l,S.lineEnd=s}function l(n,t){i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c
-},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,l,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=a+g,_=c+p,w=l+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),E=ga(ga(w)-1)<Ca||ga(r-h)<Ca?(r+h)/2:Math.atan2(_,b),A=n(E,k),N=A[0],C=A[1],z=N-t,q=C-e,L=M*z-y*q;(L*L/x>i||ga((y*z+M*q)/x-.5)>.3||o>a*g+c*p+l*v)&&(u(t,e,r,a,c,l,N,C,E,b/=S,_/=S,w,d,m),m.point(N,C),u(N,C,E,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Da),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function tr(n){var t=nr(function(t,e){return n([t*Pa,e*Pa])});return function(n){return or(t(n))}}function er(n){this.stream=n}function rr(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ur(n){return ir(function(){return n})()}function ir(n){function t(n){return n=a(n[0]*Da,n[1]*Da),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Pa,n[1]*Pa]}function r(){a=Ae(o=lr(m,M,x),i);var n=i(v,d);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=nr(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,M=0,x=0,b=Lc,_=y,w=null,S=null;return t.stream=function(n){return s&&(s.valid=!1),s=or(b(o,f(_(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Lc):He((w=+n)*Da),u()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Ie(n[0][0],n[0][1],n[1][0],n[1][1]):y,u()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Da,d=n[1]%360*Da,r()):[v*Pa,d*Pa]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Da,M=n[1]%360*Da,x=n.length>2?n[2]%360*Da:0,r()):[m*Pa,M*Pa,x*Pa]},ta.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function or(n){return rr(n,function(t,e){n.point(t*Da,e*Da)})}function ar(n,t){return[n,t]}function cr(n,t){return[n>qa?n-La:-qa>n?n+La:n,t]}function lr(n,t,e){return n?t||e?Ae(fr(n),hr(t,e)):fr(n):t||e?hr(t,e):cr}function sr(n){return function(t,e){return t+=n,[t>qa?t-La:-qa>t?t+La:t,e]}}function fr(n){var t=sr(n);return t.invert=sr(-n),t}function hr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),tt(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),tt(s*r-a*u)]},e}function gr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=pr(e,u),i=pr(e,i),(o>0?i>u:u>i)&&(u+=o*La)):(u=n+o*La,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=xe([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function pr(n,t){var e=pe(t);e[0]-=n,Me(e);var r=nt(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ca)%(2*Math.PI)}function vr(n,t,e){var r=ta.range(n,t-Ca,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function dr(n,t,e){var r=ta.range(n,t-Ca,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function mr(n){return n.source}function yr(n){return n.target}function Mr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(it(r-t)+u*o*it(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Pa,Math.atan2(o,Math.sqrt(r*r+u*u))*Pa]}:function(){return[n*Pa,t*Pa]};return p.distance=h,p}function xr(){function n(n,u){var i=Math.sin(u*=Da),o=Math.cos(u),a=ga((n*=Da)-t),c=Math.cos(a);Yc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Zc.point=function(u,i){t=u*Da,e=Math.sin(i*=Da),r=Math.cos(i),Zc.point=n},Zc.lineEnd=function(){Zc.point=Zc.lineEnd=b}}function br(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function _r(n,t){function e(n,t){o>0?-Ra+Ca>t&&(t=-Ra+Ca):t>Ra-Ca&&(t=Ra-Ca);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(qa/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-Ra]},e):Sr}function wr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return ga(u)<Ca?ar:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-K(u)*Math.sqrt(n*n+e*e)]},e)}function Sr(n,t){return[n,Math.log(Math.tan(qa/4+t/2))]}function kr(n){var t,e=ur(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=qa*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Er(n,t){return[Math.log(Math.tan(qa/4+t/2)),-n]}function Ar(n){return n[0]}function Nr(n){return n[1]}function Cr(n){for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function zr(n,t){return n[0]-t[0]||n[1]-t[1]}function qr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Lr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function Tr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Rr(){tu(this),this.edge=this.site=this.circle=null}function Dr(n){var t=el.pop()||new Rr;return t.site=n,t}function Pr(n){Xr(n),Qc.remove(n),el.push(n),tu(n)}function Ur(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Pr(n);for(var c=i;c.circle&&ga(e-c.circle.x)<Ca&&ga(r-c.circle.cy)<Ca;)i=c.P,a.unshift(c),Pr(c),c=i;a.unshift(c),Xr(c);for(var l=o;l.circle&&ga(e-l.circle.x)<Ca&&ga(r-l.circle.cy)<Ca;)o=l.N,a.push(l),Pr(l),l=o;a.push(l),Xr(l);var s,f=a.length;for(s=1;f>s;++s)l=a[s],c=a[s-1],Kr(l.edge,c.site,l.site,u);c=a[0],l=a[f-1],l.edge=Jr(c.site,l.site,null,u),Vr(c),Vr(l)}function jr(n){for(var t,e,r,u,i=n.x,o=n.y,a=Qc._;a;)if(r=Fr(a,o)-i,r>Ca)a=a.L;else{if(u=i-Hr(a,o),!(u>Ca)){r>-Ca?(t=a.P,e=a):u>-Ca?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Dr(n);if(Qc.insert(t,c),t||e){if(t===e)return Xr(t),e=Dr(t.site),Qc.insert(c,e),c.edge=e.edge=Jr(t.site,c.site),Vr(t),void Vr(e);if(!e)return void(c.edge=Jr(t.site,c.site));Xr(t),Xr(e);var l=t.site,s=l.x,f=l.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};Kr(e.edge,l,p,x),c.edge=Jr(l,n,null,x),e.edge=Jr(n,p,null,x),Vr(t),Vr(e)}}function Fr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,l=c-t;if(!l)return a;var s=a-r,f=1/i-1/l,h=s/l;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*l)-c+l/2+u-i/2)))/f+r:(r+a)/2}function Hr(n,t){var e=n.N;if(e)return Fr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Or(n){this.site=n,this.edges=[]}function Ir(n){for(var t,e,r,u,i,o,a,c,l,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=Kc,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)s=a[o].end(),r=s.x,u=s.y,l=a[++o%c].start(),t=l.x,e=l.y,(ga(r-t)>Ca||ga(u-e)>Ca)&&(a.splice(o,0,new Qr(Gr(i.site,s,ga(r-f)<Ca&&p-u>Ca?{x:f,y:ga(t-f)<Ca?e:p}:ga(u-p)<Ca&&h-r>Ca?{x:ga(e-p)<Ca?t:h,y:p}:ga(r-h)<Ca&&u-g>Ca?{x:h,y:ga(t-h)<Ca?e:g}:ga(u-g)<Ca&&r-f>Ca?{x:ga(e-g)<Ca?t:f,y:g}:null),i.site,null)),++c)}function Yr(n,t){return t.angle-n.angle}function Zr(){tu(this),this.x=this.y=this.arc=this.site=this.cy=null}function Vr(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,u=n.site,i=e.site;if(r!==i){var o=u.x,a=u.y,c=r.x-o,l=r.y-a,s=i.x-o,f=i.y-a,h=2*(c*f-l*s);if(!(h>=-za)){var g=c*c+l*l,p=s*s+f*f,v=(f*g-l*p)/h,d=(c*p-s*g)/h,f=d+a,m=rl.pop()||new Zr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=tl._;M;)if(m.y<M.y||m.y===M.y&&m.x<=M.x){if(!M.L){y=M.P;break}M=M.L}else{if(!M.R){y=M;break}M=M.R}tl.insert(y,m),y||(nl=m)}}}}function Xr(n){var t=n.circle;t&&(t.P||(nl=t.N),tl.remove(t),rl.push(t),tu(t),n.circle=null)}function $r(n){for(var t,e=Gc,r=Oe(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Br(t,n)||!r(t)||ga(t.a.x-t.b.x)<Ca&&ga(t.a.y-t.b.y)<Ca)&&(t.a=t.b=null,e.splice(u,1))}function Br(n,t){var e=n.b;if(e)return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],l=t[1][1],s=n.l,f=n.r,h=s.x,g=s.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;if(v===g){if(o>d||d>=a)return;if(h>p){if(i){if(i.y>=l)return}else i={x:d,y:c};e={x:d,y:l}}else{if(i){if(i.y<c)return}else i={x:d,y:l};e={x:d,y:c}}}else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)if(h>p){if(i){if(i.y>=l)return}else i={x:(c-u)/r,y:c};e={x:(l-u)/r,y:l}}else{if(i){if(i.y<c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else if(v>g){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.x<o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}return n.a=i,n.b=e,!0}function Wr(n,t){this.l=n,this.r=t,this.a=this.b=null}function Jr(n,t,e,r){var u=new Wr(n,t);return Gc.push(u),e&&Kr(u,n,t,e),r&&Kr(u,t,n,r),Kc[n.i].edges.push(new Qr(u,n,t)),Kc[t.i].edges.push(new Qr(u,t,n)),u}function Gr(n,t,e){var r=new Wr(n,null);return r.a=t,r.b=e,Gc.push(r),r}function Kr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function Qr(n,t,e){var r=n.a,u=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(u.x-r.x,r.y-u.y):Math.atan2(r.x-u.x,u.y-r.y)}function nu(){this._=null}function tu(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function eu(n,t){var e=t,r=t.R,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function ru(n,t){var e=t,r=t.L,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function uu(n){for(;n.L;)n=n.L;return n}function iu(n,t){var e,r,u,i=n.sort(ou).pop();for(Gc=[],Kc=new Array(n.length),Qc=new nu,tl=new nu;;)if(u=nl,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(Kc[i.i]=new Or(i),jr(i),e=i.x,r=i.y),i=n.pop();else{if(!u)break;Ur(u.arc)}t&&($r(t),Ir(t));var o={cells:Kc,edges:Gc};return Qc=tl=Gc=Kc=null,o}function ou(n,t){return t.y-n.y||t.x-n.x}function au(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function cu(n){return n.x}function lu(n){return n.y}function su(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function fu(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&fu(n,c[0],e,r,o,a),c[1]&&fu(n,c[1],o,r,u,a),c[2]&&fu(n,c[2],e,a,o,i),c[3]&&fu(n,c[3],o,a,u,i)}}function hu(n,t,e,r,u,i,o){var a,c=1/0;return function l(n,s,f,h,g){if(!(s>i||f>o||r>h||u>g)){if(p=n.point){var p,v=t-n.x,d=e-n.y,m=v*v+d*d;if(c>m){var y=Math.sqrt(c=m);r=t-y,u=e-y,i=t+y,o=e+y,a=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:l(n,s,f,x,b);break;case 1:l(n,x,f,h,b);break;case 2:l(n,s,b,x,g);break;case 3:l(n,x,b,h,g)}}}(n,r,u,i,o),a}function gu(n,t){n=ta.rgb(n),t=ta.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+xt(Math.round(e+i*n))+xt(Math.round(r+o*n))+xt(Math.round(u+a*n))}}function pu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=mu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function vu(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function du(n,t){var e,r,u,i=il.lastIndex=ol.lastIndex=0,o=-1,a=[],c=[];for(n+="",t+="";(e=il.exec(n))&&(r=ol.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:vu(e,r)})),i=ol.lastIndex;return i<t.length&&(u=t.slice(i),a[o]?a[o]+=u:a[++o]=u),a.length<2?c[0]?(t=c[0].x,function(n){return t(n)+""}):function(){return t}:(t=c.length,function(n){for(var e,r=0;t>r;++r)a[(e=c[r]).i]=e.x(n);return a.join("")})}function mu(n,t){for(var e,r=ta.interpolators.length;--r>=0&&!(e=ta.interpolators[r](n,t)););return e}function yu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(mu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function Mu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function xu(n){return function(t){return 1-n(1-t)}}function bu(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function _u(n){return n*n}function wu(n){return n*n*n}function Su(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function ku(n){return function(t){return Math.pow(t,n)}}function Eu(n){return 1-Math.cos(n*Ra)}function Au(n){return Math.pow(2,10*(n-1))}function Nu(n){return 1-Math.sqrt(1-n*n)}function Cu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/La*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*La/t)}}function zu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function qu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Lu(n,t){n=ta.hcl(n),t=ta.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return st(e+i*n,r+o*n,u+a*n)+""}}function Tu(n,t){n=ta.hsl(n),t=ta.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ct(e+i*n,r+o*n,u+a*n)+""}}function Ru(n,t){n=ta.lab(n),t=ta.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ht(e+i*n,r+o*n,u+a*n)+""}}function Du(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Pu(n){var t=[n.a,n.b],e=[n.c,n.d],r=ju(t),u=Uu(t,e),i=ju(Fu(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Pa,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*Pa:0}function Uu(n,t){return n[0]*t[0]+n[1]*t[1]}function ju(n){var t=Math.sqrt(Uu(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Fu(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Hu(n,t){var e,r=[],u=[],i=ta.transform(n),o=ta.transform(t),a=i.translate,c=o.translate,l=i.rotate,s=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push("translate(",null,",",null,")"),u.push({i:1,x:vu(a[0],c[0])},{i:3,x:vu(a[1],c[1])})):r.push(c[0]||c[1]?"translate("+c+")":""),l!=s?(l-s>180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:vu(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:vu(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:vu(g[0],p[0])},{i:e-2,x:vu(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join("")}}function Ou(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Iu(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Yu(n){for(var t=n.source,e=n.target,r=Vu(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function Zu(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Vu(n,t){if(n===t)return n;for(var e=Zu(n),r=Zu(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function Xu(n){n.fixed|=2}function $u(n){n.fixed&=-7}function Bu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Wu(n){n.fixed&=-5}function Ju(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Ju(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var l=t*e[n.point.index];n.charge+=n.pointCharge=l,r+=l*n.point.x,u+=l*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function Gu(n,t){return ta.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=ri,n}function Ku(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(u=n.children)&&(r=u.length))for(var r,u;--r>=0;)e.push(u[r])}function Qu(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++o<u;)e.push(i[o]);for(;null!=(n=r.pop());)t(n)}function ni(n){return n.children}function ti(n){return n.value}function ei(n,t){return t.value-n.value}function ri(n){return ta.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function ui(n){return n.x}function ii(n){return n.y}function oi(n,t,e){n.y0=t,n.y=e}function ai(n){return ta.range(n.length)}function ci(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function li(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function si(n){return n.reduce(fi,0)}function fi(n,t){return n+t[1]}function hi(n,t){return gi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function gi(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function pi(n){return[ta.min(n),ta.max(n)]}function vi(n,t){return n.value-t.value}function di(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function mi(n,t){n._pack_next=t,t._pack_prev=n}function yi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Mi(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(xi),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],wi(r,u,i),t(i),di(r,i),r._pack_prev=i,di(i,u),u=r._pack_next,o=3;l>o;o++){wi(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(yi(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!yi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?mi(r,u=a):mi(r=c,u),o--):(di(r,i),u=i,t(i))}var m=(s+f)/2,y=(h+g)/2,M=0;for(o=0;l>o;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(bi)}}function xi(n){n._pack_next=n._pack_prev=n}function bi(n){delete n._pack_next,delete n._pack_prev}function _i(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)_i(u[i],t,e,r)}function wi(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),l=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+l*i,e.y=n.y+c*i-l*u}else e.x=n.x+r,e.y=n.y}function Si(n,t){return n.parent==t.parent?1:2}function ki(n){var t=n.children;return t.length?t[0]:n.t}function Ei(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ai(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Ni(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Ci(n,t,e){return n.a.parent===t.parent?n.a:e}function zi(n){return 1+ta.max(n,function(n){return n.y})}function qi(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Li(n){var t=n.children;return t&&t.length?Li(t[0]):n}function Ti(n){var t,e=n.children;return e&&(t=e.length)?Ti(e[t-1]):n}function Ri(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Di(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Pi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Ui(n){return n.rangeExtent?n.rangeExtent():Pi(n.range())}function ji(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Fi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Hi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:ml}function Oi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=ta.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Ii(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?Oi:ji,c=r?Iu:Ou;return o=u(n,t,c,e),a=u(t,n,c,mu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Du)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Xi(n,t)},i.tickFormat=function(t,e){return $i(n,t,e)},i.nice=function(t){return Zi(n,t),u()},i.copy=function(){return Ii(n,t,e,r)},u()}function Yi(n,t){return ta.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Zi(n,t){return Fi(n,Hi(Vi(n,t)[2]))}function Vi(n,t){null==t&&(t=10);var e=Pi(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Xi(n,t){return ta.range.apply(ta,Vi(n,t))}function $i(n,t,e){var r=Vi(n,t);if(e){var u=ic.exec(e);if(u.shift(),"s"===u[8]){var i=ta.formatPrefix(Math.max(ga(r[0]),ga(r[1])));return u[7]||(u[7]="."+Bi(i.scale(r[2]))),u[8]="f",e=ta.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Wi(u[8],r)),e=u.join("")}else e=",."+Bi(r[2])+"f";return ta.format(e)}function Bi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Wi(n,t){var e=Bi(t[2]);return n in yl?Math.abs(e-Bi(Math.max(ga(t[0]),ga(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Ji(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Fi(r.map(u),e?Math:xl);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=Pi(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++<s;)for(var h=f-1;h>0;h--)o.push(i(l)*h);for(l=0;o[l]<a;l++);for(s=o.length;o[s-1]>c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return Ml;arguments.length<2?t=Ml:"function"!=typeof t&&(t=ta.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return Ji(n.copy(),t,e,r)},Yi(o,n)}function Gi(n,t,e){function r(t){return n(u(t))}var u=Ki(t),i=Ki(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Xi(e,n)},r.tickFormat=function(n,t){return $i(e,n,t)},r.nice=function(n){return r.domain(Zi(e,n))},r.exponent=function(o){return arguments.length?(u=Ki(t=o),i=Ki(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Gi(n.copy(),t,e)},Yi(r,n)}function Ki(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function Qi(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return ta.range(n.length).map(function(n){return t+e*n})}var u,i,o;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new l;for(var i,o=-1,a=r.length;++o<a;)u.has(i=r[o])||u.set(i,n.push(i));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(i=n,o=0,t={t:"range",a:arguments},e):i},e.rangePoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=(c+l)/2,0):(l-c)/(n.length-1+a);return i=r(c+s*a/2,s),o=0,t={t:"rangePoints",a:arguments},e},e.rangeRoundPoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=l=Math.round((c+l)/2),0):(l-c)/(n.length-1+a)|0;return i=r(c+Math.round(s*a/2+(l-c-(n.length-1+a)*s)/2),s),o=0,t={t:"rangeRoundPoints",a:arguments},e},e.rangeBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=(f-s)/(n.length-a+2*c);return i=r(s+h*c,h),l&&i.reverse(),o=h*(1-a),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=Math.floor((f-s)/(n.length-a+2*c));return i=r(s+Math.round((f-s-(n.length-a)*h)/2),h),l&&i.reverse(),o=Math.round(h*(1-a)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Pi(t.a[0])},e.copy=function(){return Qi(n,t)},e.domain(n)}function no(n,t){function i(){var e=0,r=t.length;for(a=[];++e<r;)a[e-1]=ta.quantile(n,e/r);return o}function o(n){return isNaN(n=+n)?void 0:t[ta.bisect(a,n)]}var a;return o.domain=function(t){return arguments.length?(n=t.map(r).filter(u).sort(e),i()):n},o.range=function(n){return arguments.length?(t=n,i()):t},o.quantiles=function(){return a},o.invertExtent=function(e){return e=t.indexOf(e),0>e?[0/0,0/0]:[e>0?a[e-1]:n[0],e<a.length?a[e]:n[n.length-1]]},o.copy=function(){return no(n,t)},i()}function to(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return to(n,t,e)},u()}function eo(n,t){function e(e){return e>=e?t[ta.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return eo(n,t)},e}function ro(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Xi(n,t)},t.tickFormat=function(t,e){return $i(n,t,e)},t.copy=function(){return ro(n)},t}function uo(){return 0}function io(n){return n.innerRadius}function oo(n){return n.outerRadius}function ao(n){return n.startAngle}function co(n){return n.endAngle}function lo(n){return n&&n.padAngle}function so(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function fo(n,t,e,r,u){var i=n[0]-t[0],o=n[1]-t[1],a=(u?r:-r)/Math.sqrt(i*i+o*o),c=a*o,l=-a*i,s=n[0]+c,f=n[1]+l,h=t[0]+c,g=t[1]+l,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(M*M*y-x*x),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,E=_-p,A=w-v,N=S-p,C=k-v;return E*E+A*A>N*N+C*C&&(_=S,w=k),[[_-c,w-l],[_*e/M,w*e/M]]}function ho(n){function t(t){function o(){l.push("M",i(n(s),a))}for(var c,l=[],s=[],f=-1,h=t.length,g=Et(e),p=Et(r);++f<h;)u.call(this,c=t[f],f)?s.push([+g.call(this,c,f),+p.call(this,c,f)]):s.length&&(o(),s=[]);return s.length&&o(),l.length?l.join(""):null}var e=Ar,r=Nr,u=Ne,i=go,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?i=n:(i=El.get(n)||go).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function go(n){return n.join("L")}function po(n){return go(n)+"Z"}function vo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&u.push("H",r[0]),u.join("")}function mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("V",(r=n[t])[1],"H",r[0]);return u.join("")}function yo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r=n[t])[0],"V",r[1]);return u.join("")}function Mo(n,t){return n.length<4?go(n):n[1]+_o(n.slice(1,-1),wo(n,t))}function xo(n,t){return n.length<3?go(n):n[0]+_o((n.push(n[0]),n),wo([n[n.length-2]].concat(n,[n[1]]),t))}function bo(n,t){return n.length<3?go(n):n[0]+_o(n,wo(n,t))}function _o(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return go(n);var e=n.length!=t.length,r="",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+="Q"+(i[0]-2*o[0]/3)+","+(i[1]-2*o[1]/3)+","+i[0]+","+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l<t.length;l++,c++)i=n[c],a=t[l],r+="S"+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1]}if(e){var s=n[c];r+="Q"+(i[0]+2*a[0]/3)+","+(i[1]+2*a[1]/3)+","+s[0]+","+s[1]}return r}function wo(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function So(n){if(n.length<3)return go(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,",",i,"L",No(Cl,o),",",No(Cl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),Co(c,o,a);return n.pop(),c.push("L",r),c.join("")}function ko(n){if(n.length<4)return go(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(No(Cl,i)+","+No(Cl,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),Co(e,i,o);return e.join("")}function Eo(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[No(Cl,o),",",No(Cl,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),Co(t,o,a);return t.join("")}function Ao(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,l=-1;++l<=e;)r=n[l],u=l/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return So(n)}function No(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function Co(n,t,e){n.push("C",No(Al,t),",",No(Al,e),",",No(Nl,t),",",No(Nl,e),",",No(Cl,t),",",No(Cl,e))}function zo(n,t){return(t[1]-n[1])/(t[0]-n[0])}function qo(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=zo(u,i);++t<e;)r[t]=(o+(o=zo(u=i,i=n[t+1])))/2;return r[t]=o,r}function Lo(n){for(var t,e,r,u,i=[],o=qo(n),a=-1,c=n.length-1;++a<c;)t=zo(n[a],n[a+1]),ga(t)<Ca?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function To(n){return n.length<3?go(n):n[0]+_o(n,Lo(n))}function Ro(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]-Ra,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Do(n){function t(t){function c(){v.push("M",a(n(m),f),s,l(n(d.reverse()),f),"Z")}for(var h,g,p,v=[],d=[],m=[],y=-1,M=t.length,x=Et(e),b=Et(u),_=e===r?function(){return g}:Et(r),w=u===i?function(){return p}:Et(i);++y<M;)o.call(this,h=t[y],y)?(d.push([g=+x.call(this,h,y),p=+b.call(this,h,y)]),m.push([+_.call(this,h,y),+w.call(this,h,y)])):d.length&&(c(),d=[],m=[]);return d.length&&c(),v.length?v.join(""):null}var e=Ar,r=Ar,u=0,i=Nr,o=Ne,a=go,c=a.key,l=a,s="L",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r
-},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c="function"==typeof n?a=n:(a=El.get(n)||go).key,l=a.reverse||a,s=a.closed?"M":"L",t):c},t.tension=function(n){return arguments.length?(f=n,t):f},t}function Po(n){return n.radius}function Uo(n){return[n.x,n.y]}function jo(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-Ra;return[e*Math.cos(r),e*Math.sin(r)]}}function Fo(){return 64}function Ho(){return"circle"}function Oo(n){var t=Math.sqrt(n/qa);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Io(n){return function(){var t,e;(t=this[n])&&(e=t[t.active])&&(--t.count?delete t[t.active]:delete this[n],t.active+=.5,e.event&&e.event.interrupt.call(this,this.__data__,e.index))}}function Yo(n,t,e){return ya(n,Pl),n.namespace=t,n.id=e,n}function Zo(n,t,e,r){var u=n.id,i=n.namespace;return Y(n,"function"==typeof e?function(n,o,a){n[i][u].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[i][u].tween.set(t,e)}))}function Vo(n){return null==n&&(n=""),function(){this.textContent=n}}function Xo(n){return null==n?"__transition__":"__transition_"+n+"__"}function $o(n,t,e,r,u){var i=n[e]||(n[e]={active:0,count:0}),o=i[r];if(!o){var a=u.time;o=i[r]={tween:new l,time:a,delay:u.delay,duration:u.duration,ease:u.ease,index:t},u=null,++i.count,ta.timer(function(u){function c(e){if(i.active>r)return s();var u=i[i.active];u&&(--i.count,delete i[i.active],u.event&&u.event.interrupt.call(n,n.__data__,u.index)),i.active=r,o.event&&o.event.start.call(n,n.__data__,t),o.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&v.push(r)}),h=o.ease,f=o.duration,ta.timer(function(){return p.c=l(e||1)?Ne:l,1},0,a)}function l(e){if(i.active!==r)return 1;for(var u=e/f,a=h(u),c=v.length;c>0;)v[--c].call(n,a);return u>=1?(o.event&&o.event.end.call(n,n.__data__,t),s()):void 0}function s(){return--i.count?delete i[r]:delete n[e],1}var f,h,g=o.delay,p=ec,v=[];return p.t=g+a,u>=g?c(u-g):void(p.c=c)},0,a)}}function Bo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function Wo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Jo(n){return n.toISOString()}function Go(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=ta.bisect(Vl,u);return i==Vl.length?[t.year,Vi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Vl[i-1]<Vl[i]/u?i-1:i]:[Bl,Vi(n,e)[2]]}return r.invert=function(t){return Ko(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(Ko)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,Ko(+e+1),t).length}var i=r.domain(),o=Pi(i),a=null==n?u(o,10):"number"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Fi(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=Ko(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Ko(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Pi(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Ko(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Go(n.copy(),t,e)},Yi(r,n)}function Ko(n){return new Date(n)}function Qo(n){return JSON.parse(n.responseText)}function na(n){var t=ua.createRange();return t.selectNode(ua.body),t.createContextualFragment(n.responseText)}var ta={version:"3.5.5"},ea=[].slice,ra=function(n){return ea.call(n)},ua=this.document;if(ua)try{ra(ua.documentElement.childNodes)[0].nodeType}catch(ia){ra=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),ua)try{ua.createElement("DIV").style.setProperty("opacity",0,"")}catch(oa){var aa=this.Element.prototype,ca=aa.setAttribute,la=aa.setAttributeNS,sa=this.CSSStyleDeclaration.prototype,fa=sa.setProperty;aa.setAttribute=function(n,t){ca.call(this,n,t+"")},aa.setAttributeNS=function(n,t,e){la.call(this,n,t,e+"")},sa.setProperty=function(n,t,e){fa.call(this,n,t+"",e)}}ta.ascending=e,ta.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},ta.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},ta.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},ta.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o;)if(null!=(r=n[i])&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},ta.sum=function(n,t){var e,r=0,i=n.length,o=-1;if(1===arguments.length)for(;++o<i;)u(e=+n[o])&&(r+=e);else for(;++o<i;)u(e=+t.call(n,n[o],o))&&(r+=e);return r},ta.mean=function(n,t){var e,i=0,o=n.length,a=-1,c=o;if(1===arguments.length)for(;++a<o;)u(e=r(n[a]))?i+=e:--c;else for(;++a<o;)u(e=r(t.call(n,n[a],a)))?i+=e:--c;return c?i/c:void 0},ta.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},ta.median=function(n,t){var i,o=[],a=n.length,c=-1;if(1===arguments.length)for(;++c<a;)u(i=r(n[c]))&&o.push(i);else for(;++c<a;)u(i=r(t.call(n,n[c],c)))&&o.push(i);return o.length?ta.quantile(o.sort(e),.5):void 0},ta.variance=function(n,t){var e,i,o=n.length,a=0,c=0,l=-1,s=0;if(1===arguments.length)for(;++l<o;)u(e=r(n[l]))&&(i=e-a,a+=i/++s,c+=i*(e-a));else for(;++l<o;)u(e=r(t.call(n,n[l],l)))&&(i=e-a,a+=i/++s,c+=i*(e-a));return s>1?c/(s-1):void 0},ta.deviation=function(){var n=ta.variance.apply(this,arguments);return n?Math.sqrt(n):n};var ha=i(e);ta.bisectLeft=ha.left,ta.bisect=ta.bisectRight=ha.right,ta.bisector=function(n){return i(1===n.length?function(t,r){return e(n(t),r)}:n)},ta.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=Math.random()*i--|0,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},ta.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ta.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},ta.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=ta.min(arguments,o),e=new Array(t);++n<t;)for(var r,u=-1,i=e[n]=new Array(r);++u<r;)i[u]=arguments[u][n];return e},ta.transpose=function(n){return ta.zip.apply(ta,n)},ta.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ta.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ta.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ta.merge=function(n){for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;for(e=new Array(o);--u>=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var ga=Math.abs;ta.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,u=[],i=a(ga(e)),o=-1;if(n*=i,t*=i,e*=i,0>e)for(;(r=n+e*++o)>t;)u.push(r/i);else for(;(r=n+e*++o)<t;)u.push(r/i);return u},ta.map=function(n,t){var e=new l;if(n instanceof l)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,u=-1,i=n.length;if(1===arguments.length)for(;++u<i;)e.set(u,n[u]);else for(;++u<i;)e.set(t.call(n,r=n[u],u),r)}else for(var o in n)e.set(o,n[o]);return e};var pa="__proto__",va="\x00";c(l,{has:h,get:function(n){return this._[s(n)]},set:function(n,t){return this._[s(n)]=t},remove:g,keys:p,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:f(t),value:this._[t]});return n},size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t),this._[t])}}),ta.nest=function(){function n(t,o,a){if(a>=i.length)return r?r.call(u,o):e?o.sort(e):o;for(var c,s,f,h,g=-1,p=o.length,v=i[a++],d=new l;++g<p;)(h=d.get(c=v(s=o[g])))?h.push(s):d.set(c,[s]);return t?(s=t(),f=function(e,r){s.set(e,n(t,r,a))}):(s={},f=function(e,r){s[e]=n(t,r,a)}),d.forEach(f),s}function t(n,e){if(e>=i.length)return n;var r=[],u=o[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],o=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(ta.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return o[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},ta.set=function(n){var t=new m;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},c(m,{has:h,add:function(n){return this._[s(n+="")]=!0,n},remove:g,values:p,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t))}}),ta.behavior={},ta.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=M(n,t,t[e]);return n};var da=["webkit","ms","moz","Moz","o","O"];ta.dispatch=function(){for(var n=new _,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=w(n);return n},_.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ta.event=null,ta.requote=function(n){return n.replace(ma,"\\$&")};var ma=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ya={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},Ma=function(n,t){return t.querySelector(n)},xa=function(n,t){return t.querySelectorAll(n)},ba=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(ba=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(Ma=function(n,t){return Sizzle(n,t)[0]||null},xa=Sizzle,ba=Sizzle.matchesSelector),ta.selection=function(){return ta.select(ua.documentElement)};var _a=ta.selection.prototype=[];_a.select=function(n){var t,e,r,u,i=[];n=N(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,l=r.length;++c<l;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&"__data__"in u&&(e.__data__=u.__data__)):t.push(null)}return A(i)},_a.selectAll=function(n){var t,e,r=[];n=C(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=ra(n.call(e,e.__data__,a,u))),t.parentNode=e);return A(r)};var wa={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};ta.ns={prefix:wa,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&(e=n.slice(0,t),n=n.slice(t+1)),wa.hasOwnProperty(e)?{space:wa[e],local:n}:n}},_a.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ta.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},_a.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute("class");++u<r;)if(!L(n[u]).test(t))return!1;return!0}for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},_a.style=function(n,e,r){var u=arguments.length;if(3>u){if("string"!=typeof n){2>u&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>u){var i=this.node();return t(i).getComputedStyle(i,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},_a.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},_a.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},_a.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},_a.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},_a.insert=function(n,t){return n=j(n),t=N(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},_a.remove=function(){return this.each(F)},_a.data=function(n,t){function e(n,e){var r,u,i,o=n.length,f=e.length,h=Math.min(o,f),g=new Array(f),p=new Array(f),v=new Array(o);if(t){var d,m=new l,y=new Array(o);for(r=-1;++r<o;)m.has(d=t.call(u=n[r],u.__data__,r))?v[r]=u:m.set(d,u),y[r]=d;for(r=-1;++r<f;)(u=m.get(d=t.call(e,i=e[r],r)))?u!==!0&&(g[r]=u,u.__data__=i):p[r]=H(i),m.set(d,!0);for(r=-1;++r<o;)m.get(y[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)u=n[r],i=e[r],u?(u.__data__=i,g[r]=u):p[r]=H(i);for(;f>r;++r)p[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,a.push(p),c.push(g),s.push(v)}var r,u,i=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++i<o;)(u=r[i])&&(n[i]=u.__data__);return n}var a=Z([]),c=A([]),s=A([]);if("function"==typeof n)for(;++i<o;)e(r=this[i],n.call(r,r.parentNode.__data__,i));else for(;++i<o;)e(r=this[i],n);return c.enter=function(){return a},c.exit=function(){return s},c},_a.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},_a.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=O(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return A(u)},_a.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},_a.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},_a.each=function(n){return Y(this,function(t,e,r){n.call(t,t.__data__,e,r)})},_a.call=function(n){var t=ra(arguments);return n.apply(t[0]=this,t),this},_a.empty=function(){return!this.node()},_a.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},_a.size=function(){var n=0;return Y(this,function(){++n}),n};var Sa=[];ta.selection.enter=Z,ta.selection.enter.prototype=Sa,Sa.append=_a.append,Sa.empty=_a.empty,Sa.node=_a.node,Sa.call=_a.call,Sa.size=_a.size,Sa.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var l=-1,s=u.length;++l<s;)(i=u[l])?(t.push(r[l]=e=n.call(u.parentNode,i.__data__,l,a)),e.__data__=i.__data__):t.push(null)}return A(o)},Sa.insert=function(n,t){return arguments.length<2&&(t=V(this)),_a.insert.call(this,n,t)},ta.select=function(t){var e;return"string"==typeof t?(e=[Ma(t,ua)],e.parentNode=ua.documentElement):(e=[t],e.parentNode=n(t)),A([e])},ta.selectAll=function(n){var t;return"string"==typeof n?(t=ra(xa(n,ua)),t.parentNode=ua.documentElement):(t=n,t.parentNode=null),A([t])},_a.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var ka=ta.map({mouseenter:"mouseover",mouseleave:"mouseout"});ua&&ka.forEach(function(n){"on"+n in ua&&ka.remove(n)});var Ea,Aa=0;ta.mouse=function(n){return J(n,k())};var Na=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ta.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return J(n,r)},ta.behavior.drag=function(){function n(){this.on("mousedown.drag",i).on("touchstart.drag",o)}function e(n,t,e,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&ta.event.target===f),g({type:"dragend"}))}var l,s=this,f=ta.event.target,h=s.parentNode,g=r.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=ta.select(e(f)).on(i+d,a).on(o+d,c),y=W(f),M=t(h,v);u?(l=u.apply(s,arguments),l=[l.x-M[0],l.y-M[1]]):l=[0,0],g({type:"dragstart"})}}var r=E(n,"drag","dragstart","dragend"),u=null,i=e(b,ta.mouse,t,"mousemove","mouseup"),o=e(G,ta.touch,y,"touchmove","touchend");return n.origin=function(t){return arguments.length?(u=t,n):u},ta.rebind(n,r,"on")},ta.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?ra(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Ca=1e-6,za=Ca*Ca,qa=Math.PI,La=2*qa,Ta=La-Ca,Ra=qa/2,Da=qa/180,Pa=180/qa,Ua=Math.SQRT2,ja=2,Fa=4;ta.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=rt(v),o=i/(ja*h)*(e*ut(Ua*t+v)-et(v));return[r+o*l,u+o*s,i*e/rt(Ua*t+v)]}return[r+n*l,u+n*s,i*Math.exp(Ua*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+Fa*f)/(2*i*ja*h),p=(c*c-i*i-Fa*f)/(2*c*ja*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Ua;return e.duration=1e3*y,e},ta.behavior.zoom=function(){function n(n){n.on(q,f).on(Oa+".zoom",g).on("dblclick.zoom",p).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function u(n){k.k=Math.max(N[0],Math.min(N[1],n))}function i(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},u(Math.pow(2,o)),i(d=e,r),t=ta.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function c(n){z++||n({type:"zoomstart"})}function l(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function s(n){--z||n({type:"zoomend"}),d=null}function f(){function n(){f=1,i(ta.mouse(u),g),l(a)}function r(){h.on(L,null).on(T,null),p(f&&ta.event.target===o),s(a)}var u=this,o=ta.event.target,a=D.of(u,arguments),f=0,h=ta.select(t(u)).on(L,n).on(T,r),g=e(ta.mouse(u)),p=W(u);Dl.call(u),c(a)}function h(){function n(){var n=ta.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ta.event.target;ta.select(t).on(x,r).on(b,a),_.push(t);for(var e=ta.event.changedTouches,u=0,i=e.length;i>u;++u)d[e[u].identifier]=null;var c=n(),l=Date.now();if(1===c.length){if(500>l-M){var s=c[0];o(p,s,d[s.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=l}else if(c.length>1){var s=c[0],f=c[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function r(){var n,t,e,r,o=ta.touches(p);Dl.call(p);for(var a=0,c=o.length;c>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],u(f*g)}M=null,i(n,t),l(v)}function a(){if(ta.event.touches.length){for(var t=ta.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}ta.selectAll(_).on(y,null),w.on(q,f).on(R,h),E(),s(v)}var g,p=this,v=D.of(p,arguments),d={},m=0,y=".zoom-"+ta.event.changedTouches[0].identifier,x="touchmove"+y,b="touchend"+y,_=[],w=ta.select(p),E=W(p);t(),c(v),w.on(q,null).on(R,t)}function g(){var n=D.of(this,arguments);y?clearTimeout(y):(v=e(d=m||ta.mouse(this)),Dl.call(this),c(n)),y=setTimeout(function(){y=null,s(n)},50),S(),u(Math.pow(2,.002*Ha())*k.k),i(d,v),l(n)}function p(){var n=ta.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ta.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,m,y,M,x,b,_,w,k={x:0,y:0,k:1},A=[960,500],N=Ia,C=250,z=0,q="mousedown.zoom",L="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=E(n,"zoomstart","zoom","zoomend");return Oa||(Oa="onwheel"in ua?(Ha=function(){return-ta.event.deltaY*(ta.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ua?(Ha=function(){return ta.event.wheelDelta},"mousewheel"):(Ha=function(){return-ta.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Tl?ta.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},c(n)}).tween("zoom:zoom",function(){var e=A[0],r=A[1],u=d?d[0]:e/2,i=d?d[1]:r/2,o=ta.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:u-r[0]*a,y:i-r[1]*a,k:a},l(n)}}).each("interrupt.zoom",function(){s(n)}).each("end.zoom",function(){s(n)}):(this.__chart__=k,c(n),l(n),s(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:+t},a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(N=null==t?Ia:[+t[0],+t[1]],n):N},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(A=t&&[+t[0],+t[1]],n):A},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ta.rebind(n,D,"on")};var Ha,Oa,Ia=[0,1/0];ta.color=ot,ot.prototype.toString=function(){return this.rgb()+""},ta.hsl=at;var Ya=at.prototype=new ot;Ya.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,this.l/n)},Ya.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,n*this.l)},Ya.rgb=function(){return ct(this.h,this.s,this.l)},ta.hcl=lt;var Za=lt.prototype=new ot;Za.brighter=function(n){return new lt(this.h,this.c,Math.min(100,this.l+Va*(arguments.length?n:1)))},Za.darker=function(n){return new lt(this.h,this.c,Math.max(0,this.l-Va*(arguments.length?n:1)))},Za.rgb=function(){return st(this.h,this.c,this.l).rgb()},ta.lab=ft;var Va=18,Xa=.95047,$a=1,Ba=1.08883,Wa=ft.prototype=new ot;Wa.brighter=function(n){return new ft(Math.min(100,this.l+Va*(arguments.length?n:1)),this.a,this.b)},Wa.darker=function(n){return new ft(Math.max(0,this.l-Va*(arguments.length?n:1)),this.a,this.b)},Wa.rgb=function(){return ht(this.l,this.a,this.b)},ta.rgb=mt;var Ja=mt.prototype=new ot;Ja.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new mt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mt(u,u,u)},Ja.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mt(n*this.r,n*this.g,n*this.b)},Ja.hsl=function(){return _t(this.r,this.g,this.b)},Ja.toString=function(){return"#"+xt(this.r)+xt(this.g)+xt(this.b)};var Ga=ta.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Ga.forEach(function(n,t){Ga.set(n,yt(t))}),ta.functor=Et,ta.xhr=At(y),ta.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=Nt(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=l)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++<l;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}s=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++s):10===r&&(u=!0),n.slice(t+1,e).replace(/""/g,'"')}for(;l>s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==c)continue;return n.slice(t,s-a)}return n.slice(t)}for(var r,u,i={},o={},a=[],l=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,f++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new m,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},ta.csv=ta.dsv(",","text/csv"),ta.tsv=ta.dsv("	","text/tab-separated-values");var Ka,Qa,nc,tc,ec,rc=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ta.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};Qa?Qa.n=i:Ka=i,Qa=i,nc||(tc=clearTimeout(tc),nc=1,rc(qt))},ta.timer.flush=function(){Lt(),Tt()},ta.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var uc=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Dt);ta.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=ta.round(n,Rt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),uc[8+e/3]};var ic=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,oc=ta.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ta.round(n,Rt(n,t))).toFixed(Math.max(0,Math.min(20,Rt(n*(1+1e-15),t))))}}),ac=ta.time={},cc=Date;jt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){lc.setUTCDate.apply(this._,arguments)},setDay:function(){lc.setUTCDay.apply(this._,arguments)},setFullYear:function(){lc.setUTCFullYear.apply(this._,arguments)},setHours:function(){lc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){lc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){lc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){lc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){lc.setUTCSeconds.apply(this._,arguments)},setTime:function(){lc.setTime.apply(this._,arguments)}};var lc=Date.prototype;ac.year=Ft(function(n){return n=ac.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ac.years=ac.year.range,ac.years.utc=ac.year.utc.range,ac.day=Ft(function(n){var t=new cc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ac.days=ac.day.range,ac.days.utc=ac.day.utc.range,ac.dayOfYear=function(n){var t=ac.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ac[n]=Ft(function(n){return(n=ac.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ac.year(n).getDay();return Math.floor((ac.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ac[n+"s"]=e.range,ac[n+"s"].utc=e.utc.range,ac[n+"OfYear"]=function(n){var e=ac.year(n).getDay();return Math.floor((ac.dayOfYear(n)+(e+t)%7)/7)}}),ac.week=ac.sunday,ac.weeks=ac.sunday.range,ac.weeks.utc=ac.sunday.utc.range,ac.weekOfYear=ac.sundayOfYear;var sc={"-":"",_:" ",0:"0"},fc=/^\s*\d+/,hc=/^%/;ta.locale=function(n){return{numberFormat:Pt(n),timeFormat:Ot(n)}};var gc=ta.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ta.format=gc.numberFormat,ta.geo={},ce.prototype={s:0,t:0,add:function(n){le(n,this.t,pc),le(pc.s,this.s,this),this.s?this.t+=pc.t:this.s=pc.t
-},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var pc=new ce;ta.geo.stream=function(n,t){n&&vc.hasOwnProperty(n.type)?vc[n.type](n,t):se(n,t)};var vc={Feature:function(n,t){se(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)se(e[r].geometry,t)}},dc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){fe(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)fe(e[r],t,0)},Polygon:function(n,t){he(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)he(e[r],t)},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)se(e[r],t)}};ta.geo.area=function(n){return mc=0,ta.geo.stream(n,Mc),mc};var mc,yc=new ce,Mc={sphere:function(){mc+=4*qa},point:b,lineStart:b,lineEnd:b,polygonStart:function(){yc.reset(),Mc.lineStart=ge},polygonEnd:function(){var n=2*yc;mc+=0>n?4*qa+n:n,Mc.lineStart=Mc.lineEnd=Mc.point=b}};ta.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=pe([t*Da,e*Da]);if(m){var u=de(m,r),i=[u[1],-u[0],0],o=de(i,u);Me(o),o=xe(o);var c=t-p,l=c>0?1:-1,v=o[0]*Pa*l,d=ga(c)>180;if(d^(v>l*p&&l*t>v)){var y=o[1]*Pa;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>l*p&&l*t>v)){var y=-o[1]*Pa;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=ga(r)>180?r+(r>0?360:-360):r}else v=n,d=e;Mc.point(n,e),t(n,e)}function i(){Mc.lineStart()}function o(){u(v,d),Mc.lineEnd(),ga(y)>Ca&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var s,f,h,g,p,v,d,m,y,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=u,b.lineStart=i,b.lineEnd=o,y=0,Mc.polygonStart()},polygonEnd:function(){Mc.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>yc?(s=-(h=180),f=-(g=90)):y>Ca?g=90:-Ca>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],ta.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),ta.geo.centroid=function(n){xc=bc=_c=wc=Sc=kc=Ec=Ac=Nc=Cc=zc=0,ta.geo.stream(n,qc);var t=Nc,e=Cc,r=zc,u=t*t+e*e+r*r;return za>u&&(t=kc,e=Ec,r=Ac,Ca>bc&&(t=_c,e=wc,r=Sc),u=t*t+e*e+r*r,za>u)?[0/0,0/0]:[Math.atan2(e,t)*Pa,tt(r/Math.sqrt(u))*Pa]};var xc,bc,_c,wc,Sc,kc,Ec,Ac,Nc,Cc,zc,qc={sphere:b,point:_e,lineStart:Se,lineEnd:ke,polygonStart:function(){qc.lineStart=Ee},polygonEnd:function(){qc.lineStart=Se}},Lc=Le(Ne,Pe,je,[-qa,-qa/2]),Tc=1e9;ta.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Ie(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ta.geo.conicEqualArea=function(){return Ye(Ze)}).raw=Ze,ta.geo.albers=function(){return ta.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ta.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=ta.geo.albers(),o=ta.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ta.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Ca,f+.12*l+Ca],[s-.214*l-Ca,f+.234*l-Ca]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Ca,f+.166*l+Ca],[s-.115*l-Ca,f+.234*l-Ca]]).stream(c).point,n},n.scale(1070)};var Rc,Dc,Pc,Uc,jc,Fc,Hc={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Dc=0,Hc.lineStart=Ve},polygonEnd:function(){Hc.lineStart=Hc.lineEnd=Hc.point=b,Rc+=ga(Dc/2)}},Oc={point:Xe,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Ic={point:We,lineStart:Je,lineEnd:Ge,polygonStart:function(){Ic.lineStart=Ke},polygonEnd:function(){Ic.point=We,Ic.lineStart=Je,Ic.lineEnd=Ge}};ta.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),ta.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Rc=0,ta.geo.stream(n,u(Hc)),Rc},n.centroid=function(n){return _c=wc=Sc=kc=Ec=Ac=Nc=Cc=zc=0,ta.geo.stream(n,u(Ic)),zc?[Nc/zc,Cc/zc]:Ac?[kc/Ac,Ec/Ac]:Sc?[_c/Sc,wc/Sc]:[0/0,0/0]},n.bounds=function(n){return jc=Fc=-(Pc=Uc=1/0),ta.geo.stream(n,u(Oc)),[[Pc,Uc],[jc,Fc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||tr(n):y,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new $e:new Qe(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(ta.geo.albersUsa()).context(null)},ta.geo.transform=function(n){return{stream:function(t){var e=new er(t);for(var r in n)e[r]=n[r];return e}}},er.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ta.geo.projection=ur,ta.geo.projectionMutator=ir,(ta.geo.equirectangular=function(){return ur(ar)}).raw=ar.invert=ar,ta.geo.rotation=function(n){function t(t){return t=n(t[0]*Da,t[1]*Da),t[0]*=Pa,t[1]*=Pa,t}return n=lr(n[0]%360*Da,n[1]*Da,n.length>2?n[2]*Da:0),t.invert=function(t){return t=n.invert(t[0]*Da,t[1]*Da),t[0]*=Pa,t[1]*=Pa,t},t},cr.invert=ar,ta.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=lr(-n[0]*Da,-n[1]*Da,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Pa,n[1]*=Pa}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=gr((t=+r)*Da,u*Da),n):t},n.precision=function(r){return arguments.length?(e=gr(t*Da,(u=+r)*Da),n):u},n.angle(90)},ta.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Da,u=n[1]*Da,i=t[1]*Da,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},ta.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ta.range(Math.ceil(i/d)*d,u,d).map(h).concat(ta.range(Math.ceil(l/m)*m,c,m).map(g)).concat(ta.range(Math.ceil(r/p)*p,e,p).filter(function(n){return ga(n%d)>Ca}).map(s)).concat(ta.range(Math.ceil(a/v)*v,o,v).filter(function(n){return ga(n%m)>Ca}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=vr(a,o,90),f=dr(r,e,y),h=vr(l,c,90),g=dr(i,u,y),n):y},n.majorExtent([[-180,-90+Ca],[180,90-Ca]]).minorExtent([[-180,-80-Ca],[180,80+Ca]])},ta.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=mr,u=yr;return n.distance=function(){return ta.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},ta.geo.interpolate=function(n,t){return Mr(n[0]*Da,n[1]*Da,t[0]*Da,t[1]*Da)},ta.geo.length=function(n){return Yc=0,ta.geo.stream(n,Zc),Yc};var Yc,Zc={sphere:b,point:b,lineStart:xr,lineEnd:b,polygonStart:b,polygonEnd:b},Vc=br(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ta.geo.azimuthalEqualArea=function(){return ur(Vc)}).raw=Vc;var Xc=br(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},y);(ta.geo.azimuthalEquidistant=function(){return ur(Xc)}).raw=Xc,(ta.geo.conicConformal=function(){return Ye(_r)}).raw=_r,(ta.geo.conicEquidistant=function(){return Ye(wr)}).raw=wr;var $c=br(function(n){return 1/n},Math.atan);(ta.geo.gnomonic=function(){return ur($c)}).raw=$c,Sr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ra]},(ta.geo.mercator=function(){return kr(Sr)}).raw=Sr;var Bc=br(function(){return 1},Math.asin);(ta.geo.orthographic=function(){return ur(Bc)}).raw=Bc;var Wc=br(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ta.geo.stereographic=function(){return ur(Wc)}).raw=Wc,Er.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ra]},(ta.geo.transverseMercator=function(){var n=kr(Er),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Er,ta.geom={},ta.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=Et(e),i=Et(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(zr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var l=Cr(a),s=Cr(c),f=s[0]===l[0],h=s[s.length-1]===l[l.length-1],g=[];for(t=l.length-1;t>=0;--t)g.push(n[a[l[t]][2]]);for(t=+f;t<s.length-h;++t)g.push(n[a[s[t]][2]]);return g}var e=Ar,r=Nr;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},ta.geom.polygon=function(n){return ya(n,Jc),n};var Jc=ta.geom.polygon.prototype=[];Jc.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},Jc.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},Jc.clip=function(n){for(var t,e,r,u,i,o,a=Tr(n),c=-1,l=this.length-Tr(this),s=this[l-1];++c<l;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],qr(o,s,u)?(qr(i,s,u)||n.push(Lr(i,o,s,u)),n.push(o)):qr(i,s,u)&&n.push(Lr(i,o,s,u)),i=o;a&&n.push(n[0]),s=u}return n};var Gc,Kc,Qc,nl,tl,el=[],rl=[];Or.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Yr),t.length},Qr.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},nu.prototype={insert:function(n,t){var e,r,u;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=uu(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(u=r.R,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.R&&(eu(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ru(this,r))):(u=r.L,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.L&&(ru(this,e),n=e,e=n.U),e.C=!1,r.C=!0,eu(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,u=n.U,i=n.L,o=n.R;if(e=i?o?uu(o):i:o,u?u.L===n?u.L=e:u.R=e:this._=e,i&&o?(r=e.C,e.C=n.C,e.L=i,i.U=e,e!==o?(u=e.U,e.U=n.U,n=e.R,u.L=n,e.R=o,o.U=e):(e.U=u,u=e,n=e.R)):(r=n.C,n=e),n&&(n.U=u),!r){if(n&&n.C)return void(n.C=!1);do{if(n===this._)break;if(n===u.L){if(t=u.R,t.C&&(t.C=!1,u.C=!0,eu(this,u),t=u.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,ru(this,t),t=u.R),t.C=u.C,u.C=t.R.C=!1,eu(this,u),n=this._;break}}else if(t=u.L,t.C&&(t.C=!1,u.C=!0,ru(this,u),t=u.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,eu(this,t),t=u.L),t.C=u.C,u.C=t.L.C=!1,ru(this,u),n=this._;break}t.C=!0,n=u,u=u.U}while(!n.C);n&&(n.C=!1)}}},ta.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],u=a[0][1],i=a[1][0],o=a[1][1];return iu(e(n),a).cells.forEach(function(e,a){var c=e.edges,l=e.site,s=t[a]=c.length?c.map(function(n){var t=n.start();return[t.x,t.y]}):l.x>=r&&l.x<=i&&l.y>=u&&l.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];s.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Ca)*Ca,y:Math.round(o(n,t)/Ca)*Ca,i:t}})}var r=Ar,u=Nr,i=r,o=u,a=ul;return n?t(n):(t.links=function(n){return iu(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return iu(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Yr),c=-1,l=a.length,s=a[l-1].edge,f=s.l===o?s.r:s.l;++c<l;)u=s,i=f,s=a[c].edge,f=s.l===o?s.r:s.l,r<i.i&&r<f.i&&au(o,i,f)<0&&t.push([n[r],n[i.i],n[f.i]])}),t},t.x=function(n){return arguments.length?(i=Et(r=n),t):r},t.y=function(n){return arguments.length?(o=Et(u=n),t):u},t.clipExtent=function(n){return arguments.length?(a=null==n?ul:n,t):a===ul?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===ul?null:a&&a[1]},t)};var ul=[[-1e6,-1e6],[1e6,1e6]];ta.geom.delaunay=function(n){return ta.geom.voronoi().triangles(n)},ta.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,s=n.y;if(null!=c)if(ga(c-e)+ga(s-r)<.01)l(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,l(n,f,c,s,u,i,o,a),l(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else l(n,t,e,r,u,i,o,a)}function l(n,t,e,r,u,o,a,c){var l=.5*(u+a),s=.5*(o+c),f=e>=l,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=su()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,v,d,m,y,M=Et(a),x=Et(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.x<v&&(v=s.x),s.y<d&&(d=s.y),s.x>m&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=su();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){fu(n,k,v,d,m,y)},k.find=function(n){return hu(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g<p;)i(k,n[g],f[g],h[g],v,d,m,y);--g}else n.forEach(k.add);return f=h=n=s=null,k}var o,a=Ar,c=Nr;return(o=arguments.length)?(a=cu,c=lu,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},ta.interpolateRgb=gu,ta.interpolateObject=pu,ta.interpolateNumber=vu,ta.interpolateString=du;var il=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ol=new RegExp(il.source,"g");ta.interpolate=mu,ta.interpolators=[function(n,t){var e=typeof t;return("string"===e?Ga.has(t)||/^(#|rgb\(|hsl\()/.test(t)?gu:du:t instanceof ot?gu:Array.isArray(t)?yu:"object"===e&&isNaN(t)?pu:vu)(n,t)}],ta.interpolateArray=yu;var al=function(){return y},cl=ta.map({linear:al,poly:ku,quad:function(){return _u},cubic:function(){return wu},sin:function(){return Eu},exp:function(){return Au},circle:function(){return Nu},elastic:Cu,back:zu,bounce:function(){return qu}}),ll=ta.map({"in":y,out:xu,"in-out":bu,"out-in":function(n){return bu(xu(n))}});ta.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=cl.get(e)||al,r=ll.get(r)||y,Mu(r(e.apply(null,ea.call(arguments,1))))},ta.interpolateHcl=Lu,ta.interpolateHsl=Tu,ta.interpolateLab=Ru,ta.interpolateRound=Du,ta.transform=function(n){var t=ua.createElementNS(ta.ns.prefix.svg,"g");return(ta.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Pu(e?e.matrix:sl)})(n)},Pu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var sl={a:1,b:0,c:0,d:1,e:0,f:0};ta.interpolateTransform=Hu,ta.layout={},ta.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Yu(n[e]));return t}},ta.layout.chord=function(){function n(){var n,l,f,h,g,p={},v=[],d=ta.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(l=0,g=-1;++g<i;)l+=u[h][g];v.push(l),m.push(ta.range(i)),n+=l}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(La-s*i)/n,l=0,h=-1;++h<i;){for(f=l,g=-1;++g<i;){var y=d[h],M=m[y][g],x=u[y][M],b=l,_=l+=x*n;p[y+"-"+M]={index:y,subindex:M,startAngle:b,endAngle:_,value:x}}r[y]={index:y,startAngle:f,endAngle:l,value:(l-f)/n},l+=s}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+"-"+g],S=p[g+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,l={},s=0;return l.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,l):u},l.padding=function(n){return arguments.length?(s=n,e=r=null,l):s},l.sortGroups=function(n){return arguments.length?(o=n,e=r=null,l):o},l.sortSubgroups=function(n){return arguments.length?(a=n,e=null,l):a},l.sortChords=function(n){return arguments.length?(c=n,e&&t(),l):c},l.chords=function(){return e||n(),e},l.groups=function(){return r||n(),r},l},ta.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=u-e,c=i*i+o*o;if(c>a*a/d){if(p>c){var l=t.charge/c;n.px-=i*l,n.py-=o*l}return!0}if(t.point&&c&&p>c){var l=t.pointCharge/c;n.px-=i*l,n.py-=o*l}}return!t.charge}}function t(n){n.px=ta.event.x,n.py=ta.event.y,a.resume()}var e,r,u,i,o,a={},c=ta.dispatch("start","tick","end"),l=[1,1],s=.9,f=fl,h=hl,g=-30,p=gl,v=.1,d=.64,m=[],M=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,y,x,b=m.length,_=M.length;for(e=0;_>e;++e)a=M[e],f=a.source,h=a.target,y=h.x-f.x,x=h.y-f.y,(p=y*y+x*x)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,y*=p,x*=p,h.x-=y*(d=f.weight/(h.weight+f.weight)),h.y-=x*d,f.x+=y*(d=1-d),f.y+=x*d);if((d=r*v)&&(y=l[0]/2,x=l[1]/2,e=-1,d))for(;++e<b;)a=m[e],a.x+=(y-a.x)*d,a.y+=(x-a.y)*d;if(g)for(Ju(t=ta.geom.quadtree(m),r,o),e=-1;++e<b;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<b;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*s,a.y-=(a.py-(a.py=a.y))*s);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(M=n,a):M},a.size=function(n){return arguments.length?(l=n,a):l},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(s=+n,a):s},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),ta.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;s>a;++a){var u=M[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,l=o.length;++a<l;)if(!isNaN(i=o[a][n]))return i;return Math.random()*r}var t,e,r,c=m.length,s=M.length,p=l[0],v=l[1];for(t=0;c>t;++t)(r=m[t]).index=t,r.weight=0;for(t=0;s>t;++t)r=M[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;s>t;++t)u[t]=+f.call(this,M[t],t);else for(t=0;s>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;s>t;++t)i[t]=+h.call(this,M[t],t);else for(t=0;s>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=ta.behavior.drag().origin(y).on("dragstart.force",Xu).on("drag.force",t).on("dragend.force",$u)),arguments.length?void this.on("mouseover.force",Bu).on("mouseout.force",Wu).call(e):e},ta.rebind(a,c,"on")};var fl=20,hl=1,gl=1/0;ta.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(l=e.call(n,i,i.depth))&&(c=l.length)){for(var c,l,s;--c>=0;)o.push(s=l[c]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=l}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return Qu(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=ei,e=ni,r=ti;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Ku(t,function(n){n.children&&(n.value=0)}),Qu(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ta.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,l=-1;for(r=t.value?r/t.value:0;++l<o;)n(a=i[l],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=ta.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},Gu(e,r)},ta.layout.pie=function(){function n(o){var a,c=o.length,l=o.map(function(e,r){return+t.call(n,e,r)}),s=+("function"==typeof r?r.apply(this,arguments):r),f=("function"==typeof u?u.apply(this,arguments):u)-s,h=Math.min(Math.abs(f)/c,+("function"==typeof i?i.apply(this,arguments):i)),g=h*(0>f?-1:1),p=(f-c*g)/ta.sum(l),v=ta.range(c),d=[];return null!=e&&v.sort(e===pl?function(n,t){return l[t]-l[n]}:function(n,t){return e(o[n],o[t])}),v.forEach(function(n){d[n]={data:o[n],value:a=l[n],startAngle:s,endAngle:s+=a*p+g,padAngle:h}}),d}var t=Number,e=pl,r=0,u=La,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var pl={};ta.layout.stack=function(){function n(a,c){if(!(h=a.length))return a;var l=a.map(function(e,r){return t.call(n,e,r)}),s=l.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,s,c);l=ta.permute(l,f),s=ta.permute(s,f);var h,g,p,v,d=r.call(n,s,c),m=l[0].length;for(p=0;m>p;++p)for(u.call(n,l[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,l[g][p],v+=s[g-1][p][1],s[g][p][1]);return a}var t=y,e=ai,r=ci,u=oi,i=ui,o=ii;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:vl.get(t)||ai,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:dl.get(t)||ci,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var vl=ta.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(li),i=n.map(si),o=ta.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return ta.range(n.length).reverse()},"default":ai}),dl=ta.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:ci});ta.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=l[i],a>=s[0]&&a<=s[1]&&(o=c[ta.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=pi,u=hi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Et(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return gi(n,t)}:Et(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ta.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,Qu(a,function(n){n.r=+s(n.value)}),Qu(a,Mi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;Qu(a,function(n){n.r+=f}),Qu(a,Mi),Qu(a,function(n){n.r-=f})}return _i(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=ta.layout.hierarchy().sort(vi),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Gu(n,e)},ta.layout.tree=function(){function n(n,u){var s=o.call(this,n,u),f=s[0],h=t(f);if(Qu(h,e),h.parent.m=-h.z,Ku(h,r),l)Ku(f,i);else{var g=f,p=f,v=f;Ku(f,function(n){n.x<g.x&&(g=n),n.x>p.x&&(p=n),n.depth>v.depth&&(v=n)});var d=a(g,p)/2-g.x,m=c[0]/(p.x+a(p,g)/2+d),y=c[1]/(v.depth||1);Ku(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,o=0,a=i.length;a>o;++o)r.push((i[o]=u={_:i[o],parent:t,children:(u=i[o].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Ni(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+a(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,o=t,c=u.parent.children[0],l=u.m,s=i.m,f=o.m,h=c.m;o=Ei(o),u=ki(u),o&&u;)c=ki(c),i=Ei(i),i.a=n,r=o.z+f-u.z-l+a(o._,u._),r>0&&(Ai(Ci(o,n,e),n,r),l+=r,s+=r),f+=o.m,l+=u.m,h+=c.m,s+=i.m;o&&!Ei(i)&&(i.t=o,i.m+=f-s),u&&!ki(c)&&(c.t=u,c.m+=l-h,e=n)}return e}function i(n){n.x*=c[0],n.y=n.depth*c[1]}var o=ta.layout.hierarchy().sort(null).value(null),a=Si,c=[1,1],l=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(l=null==(c=t)?i:null,n):l?null:c},n.nodeSize=function(t){return arguments.length?(l=null==(c=t)?null:i,n):l?c:null},Gu(n,o)},ta.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;Qu(c,function(n){var t=n.children;t&&t.length?(n.x=qi(t),n.y=zi(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Li(c),f=Ti(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return Qu(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=ta.layout.hierarchy().sort(null).value(null),e=Si,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Gu(n,t)},ta.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,v))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,v,l,!1),v=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++i<o;)u=n[i],u.x=a,u.y=l,u.dy=s,a+=u.dx=Math.min(e.x+e.dx-a,s?c(u.area/s):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=s,e.dy-=s}else{for((r||s>e.dx)&&(s=e.dx);++i<o;)u=n[i],u.x=a,u.y=l,u.dx=s,l+=u.dy=Math.min(e.y+e.dy-l,s?c(u.area/s):0);u.z=!1,u.dy+=e.y+e.dy-l,e.x+=s,e.dx-=s}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=l[0],i.dy=l[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=ta.layout.hierarchy(),c=Math.round,l=[1,1],s=null,f=Ri,h=!1,g="squarify",p=.5*(1+Math.sqrt(5));
-return i.size=function(n){return arguments.length?(l=n,i):l},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Ri(t):Di(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Di(t,n)}if(!arguments.length)return s;var r;return f=null==(s=n)?Ri:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+"",i):g},Gu(i,a)},ta.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=ta.random.normal.apply(ta,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ta.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ta.scale={};var ml={floor:y,ceil:y};ta.scale.linear=function(){return Ii([0,1],[0,1],mu,!1)};var yl={s:1,g:1,p:1,r:1,e:1};ta.scale.log=function(){return Ji(ta.scale.linear().domain([0,1]),10,!0,[1,10])};var Ml=ta.format(".0e"),xl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ta.scale.pow=function(){return Gi(ta.scale.linear(),1,[0,1])},ta.scale.sqrt=function(){return ta.scale.pow().exponent(.5)},ta.scale.ordinal=function(){return Qi([],{t:"range",a:[[]]})},ta.scale.category10=function(){return ta.scale.ordinal().range(bl)},ta.scale.category20=function(){return ta.scale.ordinal().range(_l)},ta.scale.category20b=function(){return ta.scale.ordinal().range(wl)},ta.scale.category20c=function(){return ta.scale.ordinal().range(Sl)};var bl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(Mt),_l=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(Mt),wl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(Mt),Sl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(Mt);ta.scale.quantile=function(){return no([],[])},ta.scale.quantize=function(){return to(0,1,[0,1])},ta.scale.threshold=function(){return eo([.5],[0,1])},ta.scale.identity=function(){return ro([0,1])},ta.svg={},ta.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),s=o.apply(this,arguments)-Ra,f=a.apply(this,arguments)-Ra,h=Math.abs(f-s),g=s>f?0:1;if(n>l&&(p=l,l=n,n=p),h>=Ta)return t(l,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,E=0,A=0,N=[];if((m=(+c.apply(this,arguments)||0)/2)&&(d=i===kl?Math.sqrt(n*n+l*l):+i.apply(this,arguments),g||(A*=-1),l&&(A=tt(d/l*Math.sin(m))),n&&(E=tt(d/n*Math.sin(m)))),l){y=l*Math.cos(s+A),M=l*Math.sin(s+A),x=l*Math.cos(f-A),b=l*Math.sin(f-A);var C=Math.abs(f-s-2*A)<=qa?0:1;if(A&&so(y,M,x,b)===g^C){var z=(s+f)/2;y=l*Math.cos(z),M=l*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-E),w=n*Math.sin(f-E),S=n*Math.cos(s+E),k=n*Math.sin(s+E);var q=Math.abs(s-f+2*E)<=qa?0:1;if(E&&so(_,w,S,k)===1-g^q){var L=(s+f)/2;_=n*Math.cos(L),w=n*Math.sin(L),S=k=null}}else _=w=0;if((p=Math.min(Math.abs(l-n)/2,+u.apply(this,arguments)))>.001){v=l>n^g?0:1;var T=null==S?[_,w]:null==x?[y,M]:Lr([y,M],[S,k],[x,b],[_,w]),R=y-T[0],D=M-T[1],P=x-T[0],U=b-T[1],j=1/Math.sin(Math.acos((R*P+D*U)/(Math.sqrt(R*R+D*D)*Math.sqrt(P*P+U*U)))/2),F=Math.sqrt(T[0]*T[0]+T[1]*T[1]);if(null!=x){var H=Math.min(p,(l-F)/(j+1)),O=fo(null==S?[_,w]:[S,k],[y,M],l,H,g),I=fo([x,b],[_,w],l,H,g);p===H?N.push("M",O[0],"A",H,",",H," 0 0,",v," ",O[1],"A",l,",",l," 0 ",1-g^so(O[1][0],O[1][1],I[1][0],I[1][1]),",",g," ",I[1],"A",H,",",H," 0 0,",v," ",I[0]):N.push("M",O[0],"A",H,",",H," 0 1,",v," ",I[0])}else N.push("M",y,",",M);if(null!=S){var Y=Math.min(p,(n-F)/(j-1)),Z=fo([y,M],[S,k],n,-Y,g),V=fo([_,w],null==x?[y,M]:[x,b],n,-Y,g);p===Y?N.push("L",V[0],"A",Y,",",Y," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^so(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",Y,",",Y," 0 0,",v," ",Z[0]):N.push("L",V[0],"A",Y,",",Y," 0 0,",v," ",Z[0])}else N.push("L",_,",",w)}else N.push("M",y,",",M),null!=x&&N.push("A",l,",",l," 0 ",C,",",g," ",x,",",b),N.push("L",_,",",w),null!=S&&N.push("A",n,",",n," 0 ",q,",",1-g," ",S,",",k);return N.push("Z"),N.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=io,r=oo,u=uo,i=kl,o=ao,a=co,c=lo;return n.innerRadius=function(t){return arguments.length?(e=Et(t),n):e},n.outerRadius=function(t){return arguments.length?(r=Et(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=Et(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==kl?kl:Et(t),n):i},n.startAngle=function(t){return arguments.length?(o=Et(t),n):o},n.endAngle=function(t){return arguments.length?(a=Et(t),n):a},n.padAngle=function(t){return arguments.length?(c=Et(t),n):c},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Ra;return[Math.cos(t)*n,Math.sin(t)*n]},n};var kl="auto";ta.svg.line=function(){return ho(y)};var El=ta.map({linear:go,"linear-closed":po,step:vo,"step-before":mo,"step-after":yo,basis:So,"basis-open":ko,"basis-closed":Eo,bundle:Ao,cardinal:bo,"cardinal-open":Mo,"cardinal-closed":xo,monotone:To});El.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Al=[0,2/3,1/3,0],Nl=[0,1/3,2/3,0],Cl=[0,1/6,2/3,1/6];ta.svg.line.radial=function(){var n=ho(Ro);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},mo.reverse=yo,yo.reverse=mo,ta.svg.area=function(){return Do(y)},ta.svg.area.radial=function(){var n=Do(Ro);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ta.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)-Ra,s=l.call(n,u,r)-Ra;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>qa)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=mr,o=yr,a=Po,c=ao,l=co;return n.radius=function(t){return arguments.length?(a=Et(t),n):a},n.source=function(t){return arguments.length?(i=Et(t),n):i},n.target=function(t){return arguments.length?(o=Et(t),n):o},n.startAngle=function(t){return arguments.length?(c=Et(t),n):c},n.endAngle=function(t){return arguments.length?(l=Et(t),n):l},n},ta.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=mr,e=yr,r=Uo;return n.source=function(e){return arguments.length?(t=Et(e),n):t},n.target=function(t){return arguments.length?(e=Et(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ta.svg.diagonal.radial=function(){var n=ta.svg.diagonal(),t=Uo,e=n.projection;return n.projection=function(n){return arguments.length?e(jo(t=n)):t},n},ta.svg.symbol=function(){function n(n,r){return(zl.get(t.call(this,n,r))||Oo)(e.call(this,n,r))}var t=Ho,e=Fo;return n.type=function(e){return arguments.length?(t=Et(e),n):t},n.size=function(t){return arguments.length?(e=Et(t),n):e},n};var zl=ta.map({circle:Oo,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ll)),e=t*Ll;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/ql),e=t*ql/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/ql),e=t*ql/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ta.svg.symbolTypes=zl.keys();var ql=Math.sqrt(3),Ll=Math.tan(30*Da);_a.transition=function(n){for(var t,e,r=Tl||++Ul,u=Xo(n),i=[],o=Rl||{time:Date.now(),ease:Su,delay:0,duration:250},a=-1,c=this.length;++a<c;){i.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(e=l[s])&&$o(e,s,u,r,o),t.push(e)}return Yo(i,u,r)},_a.interrupt=function(n){return this.each(null==n?Dl:Io(Xo(n)))};var Tl,Rl,Dl=Io(Xo()),Pl=[],Ul=0;Pl.call=_a.call,Pl.empty=_a.empty,Pl.node=_a.node,Pl.size=_a.size,ta.transition=function(n,t){return n&&n.transition?Tl?n.transition(t):n:ta.selection().transition(n)},ta.transition.prototype=Pl,Pl.select=function(n){var t,e,r,u=this.id,i=this.namespace,o=[];n=N(n);for(var a=-1,c=this.length;++a<c;){o.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(r=l[s])&&(e=n.call(r,r.__data__,s,a))?("__data__"in r&&(e.__data__=r.__data__),$o(e,s,i,u,r[i][u]),t.push(e)):t.push(null)}return Yo(o,i,u)},Pl.selectAll=function(n){var t,e,r,u,i,o=this.id,a=this.namespace,c=[];n=C(n);for(var l=-1,s=this.length;++l<s;)for(var f=this[l],h=-1,g=f.length;++h<g;)if(r=f[h]){i=r[a][o],e=n.call(r,r.__data__,h,l),c.push(t=[]);for(var p=-1,v=e.length;++p<v;)(u=e[p])&&$o(u,p,a,o,i),t.push(u)}return Yo(c,a,o)},Pl.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=O(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Yo(u,this.namespace,this.id)},Pl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Pl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Hu:mu,a=ta.ns.qualify(n);return Zo(this,"attr."+n,t,a.local?i:u)},Pl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=ta.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Pl.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+="",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=mu(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var o=arguments.length;if(3>o){if("string"!=typeof n){2>o&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Zo(this,"style."+n,e,i)},Pl.styleTween=function(n,e,r){function u(u,i){var o=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,u)},Pl.text=function(n){return Zo(this,"text",n,Vo)},Pl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Pl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ta.ease.apply(ta,arguments)),Y(this,function(r){r[e][t].ease=n}))},Pl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Pl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Pl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Rl,i=Tl;try{Tl=e,Y(this,function(t,u,i){Rl=t[r][e],n.call(t,t.__data__,u,i)})}finally{Rl=u,Tl=i}}else Y(this,function(u){var i=u[r][e];(i.event||(i.event=ta.dispatch("start","end","interrupt"))).on(n,t)});return this},Pl.transition=function(){for(var n,t,e,r,u=this.id,i=++Ul,o=this.namespace,a=[],c=0,l=this.length;l>c;c++){a.push(n=[]);for(var t=this[c],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[o][u],$o(e,s,o,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Yo(a,o,i)},ta.svg.axis=function(){function n(n){n.each(function(){var n,l=ta.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):y:t,p=l.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Ca),d=ta.transition(p.exit()).style("opacity",Ca).remove(),m=ta.transition(p.order()).style("opacity",1),M=Math.max(u,0)+o,x=Ui(f),b=l.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),ta.transition(b));v.append("line"),v.append("text");var w,S,k,E,A=v.select("line"),N=m.select("line"),C=p.select("text").text(g),z=v.select("text"),q=m.select("text"),L="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=Bo,w="x",k="y",S="x2",E="y2",C.attr("dy",0>L?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+L*i+"V0H"+x[1]+"V"+L*i)):(n=Wo,w="y",k="x",S="y2",E="x2",C.attr("dy",".32em").style("text-anchor",0>L?"end":"start"),_.attr("d","M"+L*i+","+x[0]+"H0V"+x[1]+"H"+L*i)),A.attr(E,L*u),z.attr(k,L*M),N.attr(S,0).attr(E,L*u),q.attr(w,0).attr(k,L*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=ta.scale.linear(),r=jl,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Fl?t+"":jl,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var jl="bottom",Fl={top:1,right:1,bottom:1,left:1};ta.svg.brush=function(){function n(t){t.each(function(){var t=ta.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),o=t.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=t.selectAll(".resize").data(v,y);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Hl[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var c,f=ta.transition(t),h=ta.transition(o);l&&(c=Ui(l),h.attr("x",c[0]).attr("width",c[1]-c[0]),r(f)),s&&(c=Ui(s),h.attr("y",c[0]).attr("height",c[1]-c[0]),u(f)),e(f)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function u(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==ta.event.keyCode&&(C||(M=null,q[0]-=f[1],q[1]-=h[1],C=2),S())}function v(){32==ta.event.keyCode&&2==C&&(q[0]+=f[1],q[1]+=h[1],C=0,S())}function d(){var n=ta.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(ta.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),q[0]=f[+(n[0]<M[0])],q[1]=h[+(n[1]<M[1])]):M=null),A&&m(n,l,0)&&(r(k),t=!0),N&&m(n,s,1)&&(u(k),t=!0),t&&(e(k),w({type:"brush",mode:C?"move":"resize"}))}function m(n,t,e){var r,u,i=Ui(t),c=i[0],l=i[1],s=q[e],v=e?h:f,d=v[1]-v[0];return C&&(c-=s,l-=d+s),r=(e?p:g)?Math.max(c,Math.min(l,n[e])):n[e],C?u=(r+=s)+d:(M&&(s=Math.max(c,Math.min(l,2*M[e]-r))),r>s?(u=r,r=s):u=s),v[0]!=r||v[1]!=u?(e?a=null:o=null,v[0]=r,v[1]=u,!0):void 0}function y(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ta.select("body").style("cursor",null),L.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=ta.select(ta.event.target),w=c.of(b,arguments),k=ta.select(b),E=_.datum(),A=!/^(n|s)$/.test(E)&&l,N=!/^(e|w)$/.test(E)&&s,C=_.classed("extent"),z=W(b),q=ta.mouse(b),L=ta.select(t(b)).on("keydown.brush",i).on("keyup.brush",v);if(ta.event.changedTouches?L.on("touchmove.brush",d).on("touchend.brush",y):L.on("mousemove.brush",d).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),C)q[0]=f[0]-q[0],q[1]=h[0]-q[1];else if(E){var T=+/w$/.test(E),R=+/^n/.test(E);x=[f[1-T]-q[0],h[1-R]-q[1]],q[0]=f[T],q[1]=h[R]}else ta.event.altKey&&(M=q.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ta.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var o,a,c=E(n,"brushstart","brush","brushend"),l=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,v=Ol[0];return n.event=function(n){n.each(function(){var n=c.of(this,arguments),t={x:f,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Tl?ta.select(this).transition().each("start.brush",function(){o=e.i,a=e.j,f=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=yu(f,t.x),r=yu(h,t.y);return o=a=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){o=t.i,a=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(l=t,v=Ol[!l<<1|!s],n):l},n.y=function(t){return arguments.length?(s=t,v=Ol[!l<<1|!s],n):s},n.clamp=function(t){return arguments.length?(l&&s?(g=!!t[0],p=!!t[1]):l?g=!!t:s&&(p=!!t),n):l&&s?[g,p]:l?g:s?p:null},n.extent=function(t){var e,r,u,i,c;return arguments.length?(l&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),o=[e,r],l.invert&&(e=l(e),r=l(r)),e>r&&(c=e,e=r,r=c),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],l&&(u=u[1],i=i[1]),a=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(c=u,u=i,i=c),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(l&&(o?(e=o[0],r=o[1]):(e=f[0],r=f[1],l.invert&&(e=l.invert(e),r=l.invert(r)),e>r&&(c=e,e=r,r=c))),s&&(a?(u=a[0],i=a[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(c=u,u=i,i=c))),l&&s?[[e,u],[r,i]]:l?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!l&&f[0]==f[1]||!!s&&h[0]==h[1]},ta.rebind(n,c,"on")};var Hl={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Ol=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Il=ac.format=gc.timeFormat,Yl=Il.utc,Zl=Yl("%Y-%m-%dT%H:%M:%S.%LZ");Il.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Jo:Zl,Jo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Jo.toString=Zl.toString,ac.second=Ft(function(n){return new cc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ac.seconds=ac.second.range,ac.seconds.utc=ac.second.utc.range,ac.minute=Ft(function(n){return new cc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ac.minutes=ac.minute.range,ac.minutes.utc=ac.minute.utc.range,ac.hour=Ft(function(n){var t=n.getTimezoneOffset()/60;return new cc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ac.hours=ac.hour.range,ac.hours.utc=ac.hour.utc.range,ac.month=Ft(function(n){return n=ac.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ac.months=ac.month.range,ac.months.utc=ac.month.utc.range;var Vl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Xl=[[ac.second,1],[ac.second,5],[ac.second,15],[ac.second,30],[ac.minute,1],[ac.minute,5],[ac.minute,15],[ac.minute,30],[ac.hour,1],[ac.hour,3],[ac.hour,6],[ac.hour,12],[ac.day,1],[ac.day,2],[ac.week,1],[ac.month,1],[ac.month,3],[ac.year,1]],$l=Il.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",Ne]]),Bl={range:function(n,t,e){return ta.range(Math.ceil(n/e)*e,+t,e).map(Ko)},floor:y,ceil:y};Xl.year=ac.year,ac.scale=function(){return Go(ta.scale.linear(),Xl,$l)};var Wl=Xl.map(function(n){return[n[0].utc,n[1]]}),Jl=Yl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",Ne]]);Wl.year=ac.year.utc,ac.scale.utc=function(){return Go(ta.scale.linear(),Wl,Jl)},ta.text=At(function(n){return n.responseText}),ta.json=function(n,t){return Nt(n,"application/json",Qo,t)},ta.html=function(n,t){return Nt(n,"text/html",na,t)},ta.xml=At(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(ta):"object"==typeof module&&module.exports&&(module.exports=ta),this.d3=ta}();
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/holder.min.js b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/holder.min.js
deleted file mode 100644
index 6bfc844..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/holder.min.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/*!
-
-Holder - client side image placeholders
-Version 2.7.1+6hydf
-© 2015 Ivan Malopinsky - http://imsky.co
-
-Site:     http://holderjs.com
-Issues:   https://github.com/imsky/holder/issues
-License:  http://opensource.org/licenses/MIT
-
-*/
-!function(a){if(a.document){var b=a.document;b.querySelectorAll||(b.querySelectorAll=function(c){var d,e=b.createElement("style"),f=[];for(b.documentElement.firstChild.appendChild(e),b._qsa=[],e.styleSheet.cssText=c+"{x-qsa:expression(document._qsa && document._qsa.push(this))}",a.scrollBy(0,0),e.parentNode.removeChild(e);b._qsa.length;)d=b._qsa.shift(),d.style.removeAttribute("x-qsa"),f.push(d);return b._qsa=null,f}),b.querySelector||(b.querySelector=function(a){var c=b.querySelectorAll(a);return c.length?c[0]:null}),b.getElementsByClassName||(b.getElementsByClassName=function(a){return a=String(a).replace(/^|\s+/g,"."),b.querySelectorAll(a)}),Object.keys||(Object.keys=function(a){if(a!==Object(a))throw TypeError("Object.keys called on non-object");var b,c=[];for(b in a)Object.prototype.hasOwnProperty.call(a,b)&&c.push(b);return c}),function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.atob=a.atob||function(a){a=String(a);var c,d=0,e=[],f=0,g=0;if(a=a.replace(/\s/g,""),a.length%4===0&&(a=a.replace(/=+$/,"")),a.length%4===1)throw Error("InvalidCharacterError");if(/[^+/0-9A-Za-z]/.test(a))throw Error("InvalidCharacterError");for(;d<a.length;)c=b.indexOf(a.charAt(d)),f=f<<6|c,g+=6,24===g&&(e.push(String.fromCharCode(f>>16&255)),e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f)),g=0,f=0),d+=1;return 12===g?(f>>=4,e.push(String.fromCharCode(255&f))):18===g&&(f>>=2,e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f))),e.join("")},a.btoa=a.btoa||function(a){a=String(a);var c,d,e,f,g,h,i,j=0,k=[];if(/[^\x00-\xFF]/.test(a))throw Error("InvalidCharacterError");for(;j<a.length;)c=a.charCodeAt(j++),d=a.charCodeAt(j++),e=a.charCodeAt(j++),f=c>>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,j===a.length+2?(h=64,i=64):j===a.length+1&&(i=64),k.push(b.charAt(f),b.charAt(g),b.charAt(h),b.charAt(i));return k.join("")}}(a),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(a){var b=this.__proto__||this.constructor.prototype;return a in this&&(!(a in b)||b[a]!==this[a])}),function(){if("performance"in a==!1&&(a.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in a.performance==!1){var b=Date.now();performance.timing&&performance.timing.navigationStart&&(b=performance.timing.navigationStart),a.performance.now=function(){return Date.now()-b}}}(),a.requestAnimationFrame||(a.webkitRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return webkitRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=webkitCancelAnimationFrame}(a):a.mozRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return mozRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=mozCancelAnimationFrame}(a):!function(a){a.requestAnimationFrame=function(b){return a.setTimeout(b,1e3/60)},a.cancelAnimationFrame=a.clearTimeout}(a))}}(this),function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):"object"==typeof exports?exports.Holder=b():a.Holder=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){(function(b){function d(a,b,c,d){var f=e(c.substr(c.lastIndexOf(a.domain)),a);f&&h({mode:null,el:d,flags:f,engineSettings:b})}function e(a,b){var c={theme:B(J.settings.themes.gray,null),stylesheets:b.stylesheets,instanceOptions:b};return a.match(/([\d]+p?)x([\d]+p?)(?:\?|$)/)?f(a,c):g(a,c)}function f(a,b){var c=a.split("?"),d=c[0].split("/");b.holderURL=a;var e=d[1],f=e.match(/([\d]+p?)x([\d]+p?)/);if(!f)return!1;if(b.fluid=-1!==e.indexOf("p"),b.dimensions={width:f[1].replace("p","%"),height:f[2].replace("p","%")},2===c.length){var g=A.parse(c[1]);if(g.bg&&(b.theme.background=(-1===g.bg.indexOf("#")?"#":"")+g.bg),g.fg&&(b.theme.foreground=(-1===g.fg.indexOf("#")?"#":"")+g.fg),g.theme&&b.instanceOptions.themes.hasOwnProperty(g.theme)&&(b.theme=B(b.instanceOptions.themes[g.theme],null)),g.text&&(b.text=g.text),g.textmode&&(b.textmode=g.textmode),g.size&&(b.size=g.size),g.font&&(b.font=g.font),g.align&&(b.align=g.align),b.nowrap=z.truthy(g.nowrap),b.auto=z.truthy(g.auto),z.truthy(g.random)){J.vars.cache.themeKeys=J.vars.cache.themeKeys||Object.keys(b.instanceOptions.themes);var h=J.vars.cache.themeKeys[0|Math.random()*J.vars.cache.themeKeys.length];b.theme=B(b.instanceOptions.themes[h],null)}}return b}function g(a,b){var c=!1,d=String.fromCharCode(11),e=a.replace(/([^\\])\//g,"$1"+d).split(d),f=/%[0-9a-f]{2}/gi,g=b.instanceOptions;b.holderURL=[];for(var h=e.length,i=0;h>i;i++){var j=e[i];if(j.match(f))try{j=decodeURIComponent(j)}catch(k){j=e[i]}var l=!1;if(J.flags.dimensions.match(j))c=!0,b.dimensions=J.flags.dimensions.output(j),l=!0;else if(J.flags.fluid.match(j))c=!0,b.dimensions=J.flags.fluid.output(j),b.fluid=!0,l=!0;else if(J.flags.textmode.match(j))b.textmode=J.flags.textmode.output(j),l=!0;else if(J.flags.colors.match(j)){var m=J.flags.colors.output(j);b.theme=B(b.theme,m),l=!0}else if(g.themes[j])g.themes.hasOwnProperty(j)&&(b.theme=B(g.themes[j],null)),l=!0;else if(J.flags.font.match(j))b.font=J.flags.font.output(j),l=!0;else if(J.flags.auto.match(j))b.auto=!0,l=!0;else if(J.flags.text.match(j))b.text=J.flags.text.output(j),l=!0;else if(J.flags.size.match(j))b.size=J.flags.size.output(j),l=!0;else if(J.flags.random.match(j)){null==J.vars.cache.themeKeys&&(J.vars.cache.themeKeys=Object.keys(g.themes));var n=J.vars.cache.themeKeys[0|Math.random()*J.vars.cache.themeKeys.length];b.theme=B(g.themes[n],null),l=!0}l&&b.holderURL.push(j)}return b.holderURL.unshift(g.domain),b.holderURL=b.holderURL.join("/"),c?b:!1}function h(a){var b=a.mode,c=a.el,d=a.flags,e=a.engineSettings,f=d.dimensions,g=d.theme,h=f.width+"x"+f.height;if(b=null==b?d.fluid?"fluid":"image":b,null!=d.text&&(g.text=d.text,"object"===c.nodeName.toLowerCase())){for(var j=g.text.split("\\n"),k=0;k<j.length;k++)j[k]=z.encodeHtmlEntity(j[k]);g.text=j.join("\\n")}var n=d.holderURL,o=B(e,null);if(d.font&&(g.font=d.font,!o.noFontFallback&&"img"===c.nodeName.toLowerCase()&&J.setup.supportsCanvas&&"svg"===o.renderer&&(o=B(o,{renderer:"canvas"}))),d.font&&"canvas"==o.renderer&&(o.reRender=!0),"background"==b)null==c.getAttribute("data-background-src")&&r(c,{"data-background-src":n});else{var p={};p[J.vars.dataAttr]=n,r(c,p)}d.theme=g,c.holderData={flags:d,engineSettings:o},("image"==b||"fluid"==b)&&r(c,{alt:g.text?g.text+" ["+h+"]":h});var q={mode:b,el:c,holderSettings:{dimensions:f,theme:g,flags:d},engineSettings:o};"image"==b?("html"!=o.renderer&&d.auto||(c.style.width=f.width+"px",c.style.height=f.height+"px"),"html"==o.renderer?c.style.backgroundColor=g.background:(i(q),"exact"==d.textmode&&(c.holderData.resizeUpdate=!0,J.vars.resizableImages.push(c),l(c)))):"background"==b&&"html"!=o.renderer?i(q):"fluid"==b&&(c.holderData.resizeUpdate=!0,"%"==f.height.slice(-1)?c.style.height=f.height:null!=d.auto&&d.auto||(c.style.height=f.height+"px"),"%"==f.width.slice(-1)?c.style.width=f.width:null!=d.auto&&d.auto||(c.style.width=f.width+"px"),("inline"==c.style.display||""===c.style.display||"none"==c.style.display)&&(c.style.display="block"),m(c),"html"==o.renderer?c.style.backgroundColor=g.background:(J.vars.resizableImages.push(c),l(c)))}function i(a){function c(){var b=null;switch(h.renderer){case"canvas":b=L(k,a);break;case"svg":b=M(k,a);break;default:throw"Holder: invalid renderer: "+h.renderer}return b}var d=null,e=a.mode,f=a.holderSettings,g=a.el,h=a.engineSettings;switch(h.renderer){case"svg":if(!J.setup.supportsSVG)return;break;case"canvas":if(!J.setup.supportsCanvas)return;break;default:return}var i={width:f.dimensions.width,height:f.dimensions.height,theme:f.theme,flags:f.flags},k=j(i);if(d=c(),null==d)throw"Holder: couldn't render placeholder";"background"==e?(g.style.backgroundImage="url("+d+")",g.style.backgroundSize=i.width+"px "+i.height+"px"):("img"===g.nodeName.toLowerCase()?r(g,{src:d}):"object"===g.nodeName.toLowerCase()&&(r(g,{data:d}),r(g,{type:"image/svg+xml"})),h.reRender&&b.setTimeout(function(){var a=c();if(null==a)throw"Holder: couldn't render placeholder";"img"===g.nodeName.toLowerCase()?r(g,{src:a}):"object"===g.nodeName.toLowerCase()&&(r(g,{data:a}),r(g,{type:"image/svg+xml"}))},100)),r(g,{"data-holder-rendered":!0})}function j(a){function b(a,b,c,d){b.width=c,b.height=d,a.width=Math.max(a.width,b.width),a.height+=b.height}var c=J.defaults.size;switch(parseFloat(a.theme.size)?c=a.theme.size:parseFloat(a.flags.size)&&(c=a.flags.size),a.font={family:a.theme.font?a.theme.font:"Arial, Helvetica, Open Sans, sans-serif",size:k(a.width,a.height,c),units:a.theme.units?a.theme.units:J.defaults.units,weight:a.theme.fontweight?a.theme.fontweight:"bold"},a.text=a.theme.text||Math.floor(a.width)+"x"+Math.floor(a.height),a.noWrap=a.theme.nowrap||a.flags.nowrap,a.align=a.theme.align||a.flags.align||"center",a.flags.textmode){case"literal":a.text=a.flags.dimensions.width+"x"+a.flags.dimensions.height;break;case"exact":if(!a.flags.exactDimensions)break;a.text=Math.floor(a.flags.exactDimensions.width)+"x"+Math.floor(a.flags.exactDimensions.height)}var d=new y({width:a.width,height:a.height}),e=d.Shape,f=new e.Rect("holderBg",{fill:a.theme.background});f.resize(a.width,a.height),d.root.add(f);var g=new e.Group("holderTextGroup",{text:a.text,align:a.align,font:a.font,fill:a.theme.foreground});g.moveTo(null,null,1),d.root.add(g);var h=g.textPositionData=K(d);if(!h)throw"Holder: staging fallback not supported yet.";g.properties.leading=h.boundingBox.height;var i=null,j=null,l=a.width*J.setup.lineWrapRatio,m=l;if(h.lineCount>1){var n,o=0,p=0,q=0;j=new e.Group("line"+q),("left"===a.align||"right"===a.align)&&(m=a.width*(1-2*(1-J.setup.lineWrapRatio)));for(var r=0;r<h.words.length;r++){var s=h.words[r];i=new e.Text(s.text);var t="\\n"==s.text;!a.noWrap&&(o+s.width>=m||t===!0)&&(b(g,j,o,g.properties.leading),g.add(j),o=0,p+=g.properties.leading,q+=1,j=new e.Group("line"+q),j.y=p),t!==!0&&(i.moveTo(o,0),o+=h.spaceWidth+s.width,j.add(i))}if(b(g,j,o,g.properties.leading),g.add(j),"left"===a.align)g.moveTo(a.width-l,null,null);else if("right"===a.align){for(n in g.children)j=g.children[n],j.moveTo(a.width-j.width,null,null);g.moveTo(0-(a.width-l),null,null)}else{for(n in g.children)j=g.children[n],j.moveTo((g.width-j.width)/2,null,null);g.moveTo((a.width-g.width)/2,null,null)}g.moveTo(null,(a.height-g.height)/2,null),(a.height-g.height)/2<0&&g.moveTo(null,0,null)}else i=new e.Text(a.text),j=new e.Group("line0"),j.add(i),g.add(j),"left"===a.align?g.moveTo(a.width-l,null,null):"right"===a.align?g.moveTo(0-(a.width-l),null,null):g.moveTo((a.width-h.boundingBox.width)/2,null,null),g.moveTo(null,(a.height-h.boundingBox.height)/2,null);return d}function k(a,b,c){var d=parseInt(a,10),e=parseInt(b,10),f=Math.max(d,e),g=Math.min(d,e),h=.8*Math.min(g,f*J.defaults.scale);return Math.round(Math.max(c,h))}function l(a){var b;b=null==a||null==a.nodeType?J.vars.resizableImages:[a];for(var c=0,d=b.length;d>c;c++){var e=b[c];if(e.holderData){var f=e.holderData.flags,g=D(e);if(g){if(!e.holderData.resizeUpdate)continue;if(f.fluid&&f.auto){var h=e.holderData.fluidConfig;switch(h.mode){case"width":g.height=g.width/h.ratio;break;case"height":g.width=g.height*h.ratio}}var j={mode:"image",holderSettings:{dimensions:g,theme:f.theme,flags:f},el:e,engineSettings:e.holderData.engineSettings};"exact"==f.textmode&&(f.exactDimensions=g,j.holderSettings.dimensions=f.dimensions),i(j)}else p(e)}}}function m(a){if(a.holderData){var b=D(a);if(b){var c=a.holderData.flags,d={fluidHeight:"%"==c.dimensions.height.slice(-1),fluidWidth:"%"==c.dimensions.width.slice(-1),mode:null,initialDimensions:b};d.fluidWidth&&!d.fluidHeight?(d.mode="width",d.ratio=d.initialDimensions.width/parseFloat(c.dimensions.height)):!d.fluidWidth&&d.fluidHeight&&(d.mode="height",d.ratio=parseFloat(c.dimensions.width)/d.initialDimensions.height),a.holderData.fluidConfig=d}else p(a)}}function n(){for(var a,c=[],d=Object.keys(J.vars.invisibleImages),e=0,f=d.length;f>e;e++)a=J.vars.invisibleImages[d[e]],D(a)&&"img"==a.nodeName.toLowerCase()&&(c.push(a),delete J.vars.invisibleImages[d[e]]);c.length&&I.run({images:c}),b.requestAnimationFrame(n)}function o(){J.vars.visibilityCheckStarted||(b.requestAnimationFrame(n),J.vars.visibilityCheckStarted=!0)}function p(a){a.holderData.invisibleId||(J.vars.invisibleId+=1,J.vars.invisibleImages["i"+J.vars.invisibleId]=a,a.holderData.invisibleId=J.vars.invisibleId)}function q(a,b){return null==b?document.createElement(a):document.createElementNS(b,a)}function r(a,b){for(var c in b)a.setAttribute(c,b[c])}function s(a,b,c){var d,e;null==a?(a=q("svg",E),d=q("defs",E),e=q("style",E),r(e,{type:"text/css"}),d.appendChild(e),a.appendChild(d)):e=a.querySelector("style"),a.webkitMatchesSelector&&a.setAttribute("xmlns",E);for(var f=0;f<a.childNodes.length;f++)a.childNodes[f].nodeType===F&&a.removeChild(a.childNodes[f]);for(;e.childNodes.length;)e.removeChild(e.childNodes[0]);return r(a,{width:b,height:c,viewBox:"0 0 "+b+" "+c,preserveAspectRatio:"none"}),a}function t(a,c){if(b.XMLSerializer){var d=new XMLSerializer,e="",f=c.stylesheets;if(c.svgXMLStylesheet){for(var g=u(),h=f.length-1;h>=0;h--){var i=g.createProcessingInstruction("xml-stylesheet",'href="'+f[h]+'" rel="stylesheet"');g.insertBefore(i,g.firstChild)}g.removeChild(g.documentElement),e=d.serializeToString(g)}var j=d.serializeToString(a);return j=j.replace(/\&amp;(\#[0-9]{2,}\;)/g,"&$1"),e+j}}function u(){return b.DOMParser?(new DOMParser).parseFromString("<xml />","application/xml"):void 0}function v(a){J.vars.debounceTimer||a.call(this),J.vars.debounceTimer&&b.clearTimeout(J.vars.debounceTimer),J.vars.debounceTimer=b.setTimeout(function(){J.vars.debounceTimer=null,a.call(this)},J.setup.debounce)}function w(){v(function(){l(null)})}var x=c(1),y=c(2),z=c(3),A=c(4),B=z.extend,C=z.getNodeArray,D=z.dimensionCheck,E="http://www.w3.org/2000/svg",F=8,G="2.7.1",H="\nCreated with Holder.js "+G+".\nLearn more at http://holderjs.com\n(c) 2012-2015 Ivan Malopinsky - http://imsky.co\n",I={version:G,addTheme:function(a,b){return null!=a&&null!=b&&(J.settings.themes[a]=b),delete J.vars.cache.themeKeys,this},addImage:function(a,b){var c=document.querySelectorAll(b);if(c.length)for(var d=0,e=c.length;e>d;d++){var f=q("img"),g={};g[J.vars.dataAttr]=a,r(f,g),c[d].appendChild(f)}return this},setResizeUpdate:function(a,b){a.holderData&&(a.holderData.resizeUpdate=!!b,a.holderData.resizeUpdate&&l(a))},run:function(a){a=a||{};var c={},f=B(J.settings,a);J.vars.preempted=!0,J.vars.dataAttr=f.dataAttr||J.vars.dataAttr,c.renderer=f.renderer?f.renderer:J.setup.renderer,-1===J.setup.renderers.join(",").indexOf(c.renderer)&&(c.renderer=J.setup.supportsSVG?"svg":J.setup.supportsCanvas?"canvas":"html");var g=C(f.images),i=C(f.bgnodes),j=C(f.stylenodes),k=C(f.objects);c.stylesheets=[],c.svgXMLStylesheet=!0,c.noFontFallback=f.noFontFallback?f.noFontFallback:!1;for(var l=0;l<j.length;l++){var m=j[l];if(m.attributes.rel&&m.attributes.href&&"stylesheet"==m.attributes.rel.value){var n=m.attributes.href.value,o=q("a");o.href=n;var p=o.protocol+"//"+o.host+o.pathname+o.search;c.stylesheets.push(p)}}for(l=0;l<i.length;l++)if(b.getComputedStyle){var r=b.getComputedStyle(i[l],null).getPropertyValue("background-image"),s=i[l].getAttribute("data-background-src"),t=null;t=null==s?r:s;var u=null,v="?"+f.domain+"/";if(0===t.indexOf(v))u=t.slice(1);else if(-1!=t.indexOf(v)){var w=t.substr(t.indexOf(v)).slice(1),x=w.match(/([^\"]*)"?\)/);null!=x&&(u=x[1])}if(null!=u){var y=e(u,f);y&&h({mode:"background",el:i[l],flags:y,engineSettings:c})}}for(l=0;l<k.length;l++){var A=k[l],D={};try{D.data=A.getAttribute("data"),D.dataSrc=A.getAttribute(J.vars.dataAttr)}catch(E){}var F=null!=D.data&&0===D.data.indexOf(f.domain),G=null!=D.dataSrc&&0===D.dataSrc.indexOf(f.domain);F?d(f,c,D.data,A):G&&d(f,c,D.dataSrc,A)}for(l=0;l<g.length;l++){var H=g[l],I={};try{I.src=H.getAttribute("src"),I.dataSrc=H.getAttribute(J.vars.dataAttr),I.rendered=H.getAttribute("data-holder-rendered")}catch(E){}var K=null!=I.src,L=null!=I.dataSrc&&0===I.dataSrc.indexOf(f.domain),M=null!=I.rendered&&"true"==I.rendered;K?0===I.src.indexOf(f.domain)?d(f,c,I.src,H):L&&(M?d(f,c,I.dataSrc,H):!function(a,b,c,e,f){z.imageExists(a,function(a){a||d(b,c,e,f)})}(I.src,f,c,I.dataSrc,H)):L&&d(f,c,I.dataSrc,H)}return this}},J={settings:{domain:"holder.js",images:"img",objects:"object",bgnodes:"body .holderjs",stylenodes:"head link.holderjs",stylesheets:[],themes:{gray:{background:"#EEEEEE",foreground:"#AAAAAA"},social:{background:"#3a5a97",foreground:"#FFFFFF"},industrial:{background:"#434A52",foreground:"#C2F200"},sky:{background:"#0D8FDB",foreground:"#FFFFFF"},vine:{background:"#39DBAC",foreground:"#1E292C"},lava:{background:"#F8591A",foreground:"#1C2846"}}},defaults:{size:10,units:"pt",scale:1/16},flags:{dimensions:{regex:/^(\d+)x(\d+)$/,output:function(a){var b=this.regex.exec(a);return{width:+b[1],height:+b[2]}}},fluid:{regex:/^([0-9]+%?)x([0-9]+%?)$/,output:function(a){var b=this.regex.exec(a);return{width:b[1],height:b[2]}}},colors:{regex:/(?:#|\^)([0-9a-f]{3,})\:(?:#|\^)([0-9a-f]{3,})/i,output:function(a){var b=this.regex.exec(a);return{foreground:"#"+b[2],background:"#"+b[1]}}},text:{regex:/text\:(.*)/,output:function(a){return this.regex.exec(a)[1].replace("\\/","/")}},font:{regex:/font\:(.*)/,output:function(a){return this.regex.exec(a)[1]}},auto:{regex:/^auto$/},textmode:{regex:/textmode\:(.*)/,output:function(a){return this.regex.exec(a)[1]}},random:{regex:/^random$/},size:{regex:/size\:(\d+)/,output:function(a){return this.regex.exec(a)[1]}}}},K=function(){var a=null,b=null,c=null;return function(d){var e=d.root;if(J.setup.supportsSVG){var f=!1,g=function(a){return document.createTextNode(a)};(null==a||a.parentNode!==document.body)&&(f=!0),a=s(a,e.properties.width,e.properties.height),a.style.display="block",f&&(b=q("text",E),c=g(null),r(b,{x:0}),b.appendChild(c),a.appendChild(b),document.body.appendChild(a),a.style.visibility="hidden",a.style.position="absolute",a.style.top="-100%",a.style.left="-100%");var h=e.children.holderTextGroup,i=h.properties;r(b,{y:i.font.size,style:z.cssProps({"font-weight":i.font.weight,"font-size":i.font.size+i.font.units,"font-family":i.font.family})}),c.nodeValue=i.text;var j=b.getBBox(),k=Math.ceil(j.width/(e.properties.width*J.setup.lineWrapRatio)),l=i.text.split(" "),m=i.text.match(/\\n/g);k+=null==m?0:m.length,c.nodeValue=i.text.replace(/[ ]+/g,"");var n=b.getComputedTextLength(),o=j.width-n,p=Math.round(o/Math.max(1,l.length-1)),t=[];if(k>1){c.nodeValue="";for(var u=0;u<l.length;u++)if(0!==l[u].length){c.nodeValue=z.decodeHtmlEntity(l[u]);var v=b.getBBox();t.push({text:l[u],width:v.width})}}return a.style.display="none",{spaceWidth:p,lineCount:k,boundingBox:j,words:t}}return!1}}(),L=function(){var a=q("canvas"),b=null;return function(c){null==b&&(b=a.getContext("2d"));var d=c.root;a.width=J.dpr(d.properties.width),a.height=J.dpr(d.properties.height),b.textBaseline="middle",b.fillStyle=d.children.holderBg.properties.fill,b.fillRect(0,0,J.dpr(d.children.holderBg.width),J.dpr(d.children.holderBg.height));{var e=d.children.holderTextGroup;e.properties}b.font=e.properties.font.weight+" "+J.dpr(e.properties.font.size)+e.properties.font.units+" "+e.properties.font.family+", monospace",b.fillStyle=e.properties.fill;for(var f in e.children){var g=e.children[f];for(var h in g.children){var i=g.children[h],j=J.dpr(e.x+g.x+i.x),k=J.dpr(e.y+g.y+i.y+e.properties.leading/2);b.fillText(i.properties.text,j,k)}}return a.toDataURL("image/png")}}(),M=function(){if(b.XMLSerializer){var a=u(),c=s(null,0,0),d=q("rect",E);return c.appendChild(d),function(b,e){var f=b.root;s(c,f.properties.width,f.properties.height);for(var g=c.querySelectorAll("g"),h=0;h<g.length;h++)g[h].parentNode.removeChild(g[h]);var i=e.holderSettings.flags.holderURL,j="holder_"+(Number(new Date)+32768+(0|32768*Math.random())).toString(16),k=q("g",E),l=f.children.holderTextGroup,m=l.properties,n=q("g",E),o=l.textPositionData,p="#"+j+" text { "+z.cssProps({fill:m.fill,"font-weight":m.font.weight,"font-family":m.font.family+", monospace","font-size":m.font.size+m.font.units})+" } ",u=a.createComment("\nSource URL: "+i+H),v=a.createCDATASection(p),w=c.querySelector("style");r(k,{id:j}),c.insertBefore(u,c.firstChild),w.appendChild(v),k.appendChild(d),k.appendChild(n),c.appendChild(k),r(d,{width:f.children.holderBg.width,height:f.children.holderBg.height,fill:f.children.holderBg.properties.fill}),l.y+=.8*o.boundingBox.height;for(var x in l.children){var y=l.children[x];for(var A in y.children){var B=y.children[A],C=l.x+y.x+B.x,D=l.y+y.y+B.y,F=q("text",E),G=document.createTextNode(null);r(F,{x:C,y:D}),G.nodeValue=B.properties.text,F.appendChild(G),n.appendChild(F)}}var I=N(t(c,e.engineSettings),"background"===e.mode);return I}}}(),N=function(){var a="data:image/svg+xml;charset=UTF-8,",b="data:image/svg+xml;charset=UTF-8;base64,";return function(c,d){return d?b+btoa(unescape(encodeURIComponent(c))):a+encodeURIComponent(c)}}();for(var O in J.flags)J.flags.hasOwnProperty(O)&&(J.flags[O].match=function(a){return a.match(this.regex)});J.setup={renderer:"html",debounce:100,ratio:1,supportsCanvas:!1,supportsSVG:!1,lineWrapRatio:.9,renderers:["html","canvas","svg"]},J.dpr=function(a){return a*J.setup.ratio},J.vars={preempted:!1,resizableImages:[],invisibleImages:{},invisibleId:0,visibilityCheckStarted:!1,debounceTimer:null,cache:{},dataAttr:"data-src"},function(){var a=1,c=1,d=q("canvas"),e=null;d.getContext&&-1!=d.toDataURL("image/png").indexOf("data:image/png")&&(J.setup.renderer="canvas",e=d.getContext("2d"),J.setup.supportsCanvas=!0),J.setup.supportsCanvas&&(a=b.devicePixelRatio||1,c=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),J.setup.ratio=a/c,document.createElementNS&&document.createElementNS(E,"svg").createSVGRect&&(J.setup.renderer="svg",J.setup.supportsSVG=!0)}(),o(),x&&x(function(){J.vars.preempted||I.run(),b.addEventListener?(b.addEventListener("resize",w,!1),b.addEventListener("orientationchange",w,!1)):b.attachEvent("onresize",w),"object"==typeof b.Turbolinks&&b.document.addEventListener("page:change",function(){I.run()})}),a.exports=I}).call(b,function(){return this}())},function(a){function b(a){function b(a){if(!v){if(!g.body)return e(b);for(v=!0;a=w.shift();)e(a)}}function c(a){(t||a.type===i||g[m]===l)&&(d(),b())}function d(){t?(g[s](q,c,j),a[s](i,c,j)):(g[o](r,c),a[o](k,c))}function e(a,b){setTimeout(a,+b>=0?b:1)}function f(a){v?e(a):w.push(a)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function y(){document.removeEventListener("DOMContentLoaded",y,!1),document.readyState="complete"},!1),document.readyState="loading");var g=a.document,h=g.documentElement,i="load",j=!1,k="on"+i,l="complete",m="readyState",n="attachEvent",o="detachEvent",p="addEventListener",q="DOMContentLoaded",r="onreadystatechange",s="removeEventListener",t=p in g,u=j,v=j,w=[];if(g[m]===l)e(b);else if(t)g[p](q,c,j),a[p](i,c,j);else{g[n](r,c),a[n](k,c);try{u=null==a.frameElement&&h}catch(x){}u&&u.doScroll&&!function z(){if(!v){try{u.doScroll("left")}catch(a){return e(z,50)}d(),b()}}()}return f.version="1.4.0",f.isReady=function(){return v},f}a.exports="undefined"!=typeof window&&b(window)},function(a,b,c){var d=c(5),e=function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}var c=1,e=d.defclass({constructor:function(a){c++,this.parent=null,this.children={},this.id=c,this.name="n"+c,null!=a&&(this.name=a),this.x=0,this.y=0,this.z=0,this.width=0,this.height=0},resize:function(a,b){null!=a&&(this.width=a),null!=b&&(this.height=b)},moveTo:function(a,b,c){this.x=null!=a?a:this.x,this.y=null!=b?b:this.y,this.z=null!=c?c:this.z},add:function(a){var b=a.name;if(null!=this.children[b])throw"SceneGraph: child with that name already exists: "+b;this.children[b]=a,a.parent=this}}),f=d(e,function(b){this.constructor=function(){b.constructor.call(this,"root"),this.properties=a}}),g=d(e,function(a){function c(c,d){if(a.constructor.call(this,c),this.properties={fill:"#000"},null!=d)b(this.properties,d);else if(null!=c&&"string"!=typeof c)throw"SceneGraph: invalid node name"}this.Group=d.extend(this,{constructor:c,type:"group"}),this.Rect=d.extend(this,{constructor:c,type:"rect"}),this.Text=d.extend(this,{constructor:function(a){c.call(this),this.properties.text=a},type:"text"})}),h=new f;return this.Shape=g,this.root=h,this};a.exports=e},function(a,b){(function(a){b.extend=function(a,b){var c={};for(var d in a)a.hasOwnProperty(d)&&(c[d]=a[d]);if(null!=b)for(var e in b)b.hasOwnProperty(e)&&(c[e]=b[e]);return c},b.cssProps=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c+":"+a[c]);return b.join(";")},b.encodeHtmlEntity=function(a){for(var b=[],c=0,d=a.length-1;d>=0;d--)c=a.charCodeAt(d),b.unshift(c>128?["&#",c,";"].join(""):a[d]);return b.join("")},b.getNodeArray=function(b){var c=null;return"string"==typeof b?c=document.querySelectorAll(b):a.NodeList&&b instanceof a.NodeList?c=b:a.Node&&b instanceof a.Node?c=[b]:a.HTMLCollection&&b instanceof a.HTMLCollection?c=b:b instanceof Array?c=b:null===b&&(c=[]),c},b.imageExists=function(a,b){var c=new Image;c.onerror=function(){b.call(this,!1)},c.onload=function(){b.call(this,!0)},c.src=a},b.decodeHtmlEntity=function(a){return a.replace(/&#(\d+);/g,function(a,b){return String.fromCharCode(b)})},b.dimensionCheck=function(a){var b={height:a.clientHeight,width:a.clientWidth};return b.height&&b.width?b:!1},b.truthy=function(a){return"string"==typeof a?"true"===a||"yes"===a||"1"===a||"on"===a||"✓"===a:!!a}}).call(b,function(){return this}())},function(a,b,c){var d=encodeURIComponent,e=decodeURIComponent,f=c(6),g=c(7),h=/(\w+)\[(\d+)\]/,i=/\w+\.\w+/;b.parse=function(a){if("string"!=typeof a)return{};if(a=f(a),""===a)return{};"?"===a.charAt(0)&&(a=a.slice(1));for(var b={},c=a.split("&"),d=0;d<c.length;d++){var g,j,k,l=c[d].split("="),m=e(l[0]);if(g=h.exec(m))b[g[1]]=b[g[1]]||[],b[g[1]][g[2]]=e(l[1]);else if(g=i.test(m)){for(g=m.split("."),j=b;g.length;)if(k=g.shift(),k.length){if(j[k]){if(j[k]&&"object"!=typeof j[k])break}else j[k]={};g.length||(j[k]=e(l[1])),j=j[k]}}else b[l[0]]=null==l[1]?"":e(l[1])}return b},b.stringify=function(a){if(!a)return"";var b=[];for(var c in a){var e=a[c];if("array"!=g(e))b.push(d(c)+"="+d(a[c]));else for(var f=0;f<e.length;++f)b.push(d(c+"["+f+"]")+"="+d(e[f]))}return b.join("&")}},function(a){var b=function(){},c=Array.prototype.slice,d=function(a,d){var e=b.prototype="function"==typeof a?a.prototype:a,f=new b,g=d.apply(f,c.call(arguments,2).concat(e));if("object"==typeof g)for(var h in g)f[h]=g[h];if(!f.hasOwnProperty("constructor"))return f;var i=f.constructor;return i.prototype=f,i};d.defclass=function(a){var b=a.constructor;return b.prototype=a,b},d.extend=function(a,b){return d(a,function(a){return this.uber=a,b})},a.exports=d},function(a,b){function c(a){return a.replace(/^\s*|\s*$/g,"")}b=a.exports=c,b.left=function(a){return a.replace(/^\s*/,"")},b.right=function(a){return a.replace(/\s*$/,"")}},function(a){var b=Object.prototype.toString;a.exports=function(a){switch(b.call(a)){case"[object Date]":return"date";case"[object RegExp]":return"regexp";case"[object Arguments]":return"arguments";case"[object Array]":return"array";case"[object Error]":return"error"}return null===a?"null":void 0===a?"undefined":a!==a?"nan":a&&1===a.nodeType?"element":(a=a.valueOf?a.valueOf():Object.prototype.valueOf.apply(a),typeof a)}}])}),function(a,b){b&&(Holder=a.Holder)}(this,"undefined"!=typeof Meteor&&"undefined"!=typeof Package);
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/html5shiv.min.js b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/html5shiv.min.js
deleted file mode 100644
index d4c731a..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/html5shiv.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
-* @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
-*/
-!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document);
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/jquery.min.js b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/jquery.min.js
deleted file mode 100644
index 0f60b7b..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/jquery.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;
-
-return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){
-return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/nv.d3.min.js b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/nv.d3.min.js
deleted file mode 100644
index 61d35d3..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/nv.d3.min.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/* nvd3 version 1.8.1 (https://github.com/novus/nvd3) 2015-06-17 */
-!function(){var a={};a.dev=!1,a.tooltip=a.tooltip||{},a.utils=a.utils||{},a.models=a.models||{},a.charts={},a.logs={},a.dom={},a.dispatch=d3.dispatch("render_start","render_end"),Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d&&a?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),a.dev&&(a.dispatch.on("render_start",function(){a.logs.startTime=+new Date}),a.dispatch.on("render_end",function(){a.logs.endTime=+new Date,a.logs.totalTime=a.logs.endTime-a.logs.startTime,a.log("total",a.logs.totalTime)})),a.log=function(){if(a.dev&&window.console&&console.log&&console.log.apply)console.log.apply(console,arguments);else if(a.dev&&window.console&&"function"==typeof console.log&&Function.prototype.bind){var b=Function.prototype.bind.call(console.log,console);b.apply(console,arguments)}return arguments[arguments.length-1]},a.deprecated=function(a,b){console&&console.warn&&console.warn("nvd3 warning: `"+a+"` has been deprecated. ",b||"")},a.render=function(b){b=b||1,a.render.active=!0,a.dispatch.render_start();var c=function(){for(var d,e,f=0;b>f&&(e=a.render.queue[f]);f++)d=e.generate(),typeof e.callback==typeof Function&&e.callback(d);a.render.queue.splice(0,f),a.render.queue.length?setTimeout(c):(a.dispatch.render_end(),a.render.active=!1)};setTimeout(c)},a.render.active=!1,a.render.queue=[],a.addGraph=function(b){typeof arguments[0]==typeof Function&&(b={generate:arguments[0],callback:arguments[1]}),a.render.queue.push(b),a.render.active||a.render()},"undefined"!=typeof module&&"undefined"!=typeof exports&&(module.exports=a),"undefined"!=typeof window&&(window.nv=a),a.dom.write=function(a){return void 0!==window.fastdom?fastdom.write(a):a()},a.dom.read=function(a){return void 0!==window.fastdom?fastdom.read(a):a()},a.interactiveGuideline=function(){"use strict";function b(l){l.each(function(l){function m(){var a=d3.mouse(this),d=a[0],e=a[1],i=!0,j=!1;if(k&&(d=d3.event.offsetX,e=d3.event.offsetY,"svg"!==d3.event.target.tagName&&(i=!1),d3.event.target.className.baseVal.match("nv-legend")&&(j=!0)),i&&(d-=f.left,e-=f.top),0>d||0>e||d>o||e>p||d3.event.relatedTarget&&void 0===d3.event.relatedTarget.ownerSVGElement||j){if(k&&d3.event.relatedTarget&&void 0===d3.event.relatedTarget.ownerSVGElement&&(void 0===d3.event.relatedTarget.className||d3.event.relatedTarget.className.match(c.nvPointerEventsClass)))return;return h.elementMouseout({mouseX:d,mouseY:e}),b.renderGuideLine(null),void c.hidden(!0)}c.hidden(!1);var l=g.invert(d);h.elementMousemove({mouseX:d,mouseY:e,pointXValue:l}),"dblclick"===d3.event.type&&h.elementDblclick({mouseX:d,mouseY:e,pointXValue:l}),"click"===d3.event.type&&h.elementClick({mouseX:d,mouseY:e,pointXValue:l})}var n=d3.select(this),o=d||960,p=e||400,q=n.selectAll("g.nv-wrap.nv-interactiveLineLayer").data([l]),r=q.enter().append("g").attr("class"," nv-wrap nv-interactiveLineLayer");r.append("g").attr("class","nv-interactiveGuideLine"),j&&(j.on("touchmove",m).on("mousemove",m,!0).on("mouseout",m,!0).on("dblclick",m).on("click",m),b.guideLine=null,b.renderGuideLine=function(c){i&&(b.guideLine&&b.guideLine.attr("x1")===c||a.dom.write(function(){var b=q.select(".nv-interactiveGuideLine").selectAll("line").data(null!=c?[a.utils.NaNtoZero(c)]:[],String);b.enter().append("line").attr("class","nv-guideline").attr("x1",function(a){return a}).attr("x2",function(a){return a}).attr("y1",p).attr("y2",0),b.exit().remove()}))})})}var c=a.models.tooltip();c.duration(0).hideDelay(0)._isInteractiveLayer(!0).hidden(!1);var d=null,e=null,f={left:0,top:0},g=d3.scale.linear(),h=d3.dispatch("elementMousemove","elementMouseout","elementClick","elementDblclick"),i=!0,j=null,k="ActiveXObject"in window;return b.dispatch=h,b.tooltip=c,b.margin=function(a){return arguments.length?(f.top="undefined"!=typeof a.top?a.top:f.top,f.left="undefined"!=typeof a.left?a.left:f.left,b):f},b.width=function(a){return arguments.length?(d=a,b):d},b.height=function(a){return arguments.length?(e=a,b):e},b.xScale=function(a){return arguments.length?(g=a,b):g},b.showGuideLine=function(a){return arguments.length?(i=a,b):i},b.svgContainer=function(a){return arguments.length?(j=a,b):j},b},a.interactiveBisect=function(a,b,c){"use strict";if(!(a instanceof Array))return null;var d;d="function"!=typeof c?function(a){return a.x}:c;var e=function(a,b){return d(a)-b},f=d3.bisector(e).left,g=d3.max([0,f(a,b)-1]),h=d(a[g]);if("undefined"==typeof h&&(h=g),h===b)return g;var i=d3.min([g+1,a.length-1]),j=d(a[i]);return"undefined"==typeof j&&(j=i),Math.abs(j-b)>=Math.abs(h-b)?g:i},a.nearestValueIndex=function(a,b,c){"use strict";var d=1/0,e=null;return a.forEach(function(a,f){var g=Math.abs(b-a);null!=a&&d>=g&&c>g&&(d=g,e=f)}),e},function(){"use strict";a.models.tooltip=function(){function b(){if(k){var a=d3.select(k);"svg"!==a.node().tagName&&(a=a.select("svg"));var b=a.node()?a.attr("viewBox"):null;if(b){b=b.split(" ");var c=parseInt(a.style("width"),10)/b[2];p.left=p.left*c,p.top=p.top*c}}}function c(){if(!n){var a;a=k?k:document.body,n=d3.select(a).append("div").attr("class","nvtooltip "+(j?j:"xy-tooltip")).attr("id",v),n.style("top",0).style("left",0),n.style("opacity",0),n.selectAll("div, table, td, tr").classed(w,!0),n.classed(w,!0),o=n.node()}}function d(){if(r&&B(e)){b();var f=p.left,g=null!==i?i:p.top;return a.dom.write(function(){c();var b=A(e);b&&(o.innerHTML=b),k&&u?a.dom.read(function(){var a=k.getElementsByTagName("svg")[0],b={left:0,top:0};if(a){var c=a.getBoundingClientRect(),d=k.getBoundingClientRect(),e=c.top;if(0>e){var i=k.getBoundingClientRect();e=Math.abs(e)>i.height?0:e}b.top=Math.abs(e-d.top),b.left=Math.abs(c.left-d.left)}f+=k.offsetLeft+b.left-2*k.scrollLeft,g+=k.offsetTop+b.top-2*k.scrollTop,h&&h>0&&(g=Math.floor(g/h)*h),C([f,g])}):C([f,g])}),d}}var e=null,f="w",g=25,h=0,i=null,j=null,k=null,l=!0,m=400,n=null,o=null,p={left:null,top:null},q={left:0,top:0},r=!0,s=100,t=!0,u=!1,v="nvtooltip-"+Math.floor(1e5*Math.random()),w="nv-pointer-events-none",x=function(a){return a},y=function(a){return a},z=function(a){return a},A=function(a){if(null===a)return"";var b=d3.select(document.createElement("table"));if(t){var c=b.selectAll("thead").data([a]).enter().append("thead");c.append("tr").append("td").attr("colspan",3).append("strong").classed("x-value",!0).html(y(a.value))}var d=b.selectAll("tbody").data([a]).enter().append("tbody"),e=d.selectAll("tr").data(function(a){return a.series}).enter().append("tr").classed("highlight",function(a){return a.highlight});e.append("td").classed("legend-color-guide",!0).append("div").style("background-color",function(a){return a.color}),e.append("td").classed("key",!0).html(function(a,b){return z(a.key,b)}),e.append("td").classed("value",!0).html(function(a,b){return x(a.value,b)}),e.selectAll("td").each(function(a){if(a.highlight){var b=d3.scale.linear().domain([0,1]).range(["#fff",a.color]),c=.6;d3.select(this).style("border-bottom-color",b(c)).style("border-top-color",b(c))}});var f=b.node().outerHTML;return void 0!==a.footer&&(f+="<div class='footer'>"+a.footer+"</div>"),f},B=function(a){if(a&&a.series){if(a.series instanceof Array)return!!a.series.length;if(a.series instanceof Object)return a.series=[a.series],!0}return!1},C=function(b){o&&a.dom.read(function(){var c,d,e=parseInt(o.offsetHeight,10),h=parseInt(o.offsetWidth,10),i=a.utils.windowSize().width,j=a.utils.windowSize().height,k=window.pageYOffset,p=window.pageXOffset;j=window.innerWidth>=document.body.scrollWidth?j:j-16,i=window.innerHeight>=document.body.scrollHeight?i:i-16;var r,t,u=function(a){var b=d;do isNaN(a.offsetTop)||(b+=a.offsetTop),a=a.offsetParent;while(a);return b},v=function(a){var b=c;do isNaN(a.offsetLeft)||(b+=a.offsetLeft),a=a.offsetParent;while(a);return b};switch(f){case"e":c=b[0]-h-g,d=b[1]-e/2,r=v(o),t=u(o),p>r&&(c=b[0]+g>p?b[0]+g:p-r+c),k>t&&(d=k-t+d),t+e>k+j&&(d=k+j-t+d-e);break;case"w":c=b[0]+g,d=b[1]-e/2,r=v(o),t=u(o),r+h>i&&(c=b[0]-h-g),k>t&&(d=k+5),t+e>k+j&&(d=k+j-t+d-e);break;case"n":c=b[0]-h/2-5,d=b[1]+g,r=v(o),t=u(o),p>r&&(c=p+5),r+h>i&&(c=c-h/2+5),t+e>k+j&&(d=k+j-t+d-e);break;case"s":c=b[0]-h/2,d=b[1]-e-g,r=v(o),t=u(o),p>r&&(c=p+5),r+h>i&&(c=c-h/2+5),k>t&&(d=k);break;case"none":c=b[0],d=b[1]-g,r=v(o),t=u(o)}c-=q.left,d-=q.top;var w=o.getBoundingClientRect(),k=window.pageYOffset||document.documentElement.scrollTop,p=window.pageXOffset||document.documentElement.scrollLeft,x="translate("+(w.left+p)+"px, "+(w.top+k)+"px)",y="translate("+c+"px, "+d+"px)",z=d3.interpolateString(x,y),A=n.style("opacity")<.1;l?n.transition().delay(m).duration(0).style("opacity",0):n.interrupt().transition().duration(A?0:s).styleTween("transform",function(){return z},"important").style("-webkit-transform",y).style("opacity",1)})};return d.nvPointerEventsClass=w,d.options=a.utils.optionsFunc.bind(d),d._options=Object.create({},{duration:{get:function(){return s},set:function(a){s=a}},gravity:{get:function(){return f},set:function(a){f=a}},distance:{get:function(){return g},set:function(a){g=a}},snapDistance:{get:function(){return h},set:function(a){h=a}},classes:{get:function(){return j},set:function(a){j=a}},chartContainer:{get:function(){return k},set:function(a){k=a}},fixedTop:{get:function(){return i},set:function(a){i=a}},enabled:{get:function(){return r},set:function(a){r=a}},hideDelay:{get:function(){return m},set:function(a){m=a}},contentGenerator:{get:function(){return A},set:function(a){A=a}},valueFormatter:{get:function(){return x},set:function(a){x=a}},headerFormatter:{get:function(){return y},set:function(a){y=a}},keyFormatter:{get:function(){return z},set:function(a){z=a}},headerEnabled:{get:function(){return t},set:function(a){t=a}},_isInteractiveLayer:{get:function(){return u},set:function(a){u=!!a}},position:{get:function(){return p},set:function(a){p.left=void 0!==a.left?a.left:p.left,p.top=void 0!==a.top?a.top:p.top}},offset:{get:function(){return q},set:function(a){q.left=void 0!==a.left?a.left:q.left,q.top=void 0!==a.top?a.top:q.top}},hidden:{get:function(){return l},set:function(a){l!=a&&(l=!!a,d())}},data:{get:function(){return e},set:function(a){a.point&&(a.value=a.point.x,a.series=a.series||{},a.series.value=a.point.y,a.series.color=a.point.color||a.series.color),e=a}},tooltipElem:{get:function(){return o},set:function(){}},id:{get:function(){return v},set:function(){}}}),a.utils.initOptions(d),d}}(),a.utils.windowSize=function(){var a={width:640,height:480};return window.innerWidth&&window.innerHeight?(a.width=window.innerWidth,a.height=window.innerHeight,a):"CSS1Compat"==document.compatMode&&document.documentElement&&document.documentElement.offsetWidth?(a.width=document.documentElement.offsetWidth,a.height=document.documentElement.offsetHeight,a):document.body&&document.body.offsetWidth?(a.width=document.body.offsetWidth,a.height=document.body.offsetHeight,a):a},a.utils.windowResize=function(b){return window.addEventListener?window.addEventListener("resize",b):a.log("ERROR: Failed to bind to window.resize with: ",b),{callback:b,clear:function(){window.removeEventListener("resize",b)}}},a.utils.getColor=function(b){if(void 0===b)return a.utils.defaultColor();if(Array.isArray(b)){var c=d3.scale.ordinal().range(b);return function(a,b){var d=void 0===b?a:b;return a.color||c(d)}}return b},a.utils.defaultColor=function(){return a.utils.getColor(d3.scale.category20().range())},a.utils.customTheme=function(a,b,c){b=b||function(a){return a.key},c=c||d3.scale.category20().range();var d=c.length;return function(e){var f=b(e);return"function"==typeof a[f]?a[f]():void 0!==a[f]?a[f]:(d||(d=c.length),d-=1,c[d])}},a.utils.pjax=function(b,c){var d=function(d){d3.html(d,function(d){var e=d3.select(c).node();e.parentNode.replaceChild(d3.select(d).select(c).node(),e),a.utils.pjax(b,c)})};d3.selectAll(b).on("click",function(){history.pushState(this.href,this.textContent,this.href),d(this.href),d3.event.preventDefault()}),d3.select(window).on("popstate",function(){d3.event.state&&d(d3.event.state)})},a.utils.calcApproxTextWidth=function(a){if("function"==typeof a.style&&"function"==typeof a.text){var b=parseInt(a.style("font-size").replace("px",""),10),c=a.text().length;return c*b*.5}return 0},a.utils.NaNtoZero=function(a){return"number"!=typeof a||isNaN(a)||null===a||1/0===a||a===-1/0?0:a},d3.selection.prototype.watchTransition=function(a){var b=[this].concat([].slice.call(arguments,1));return a.transition.apply(a,b)},a.utils.renderWatch=function(b,c){if(!(this instanceof a.utils.renderWatch))return new a.utils.renderWatch(b,c);var d=void 0!==c?c:250,e=[],f=this;this.models=function(a){return a=[].slice.call(arguments,0),a.forEach(function(a){a.__rendered=!1,function(a){a.dispatch.on("renderEnd",function(){a.__rendered=!0,f.renderEnd("model")})}(a),e.indexOf(a)<0&&e.push(a)}),this},this.reset=function(a){void 0!==a&&(d=a),e=[]},this.transition=function(a,b,c){if(b=arguments.length>1?[].slice.call(arguments,1):[],c=b.length>1?b.pop():void 0!==d?d:250,a.__rendered=!1,e.indexOf(a)<0&&e.push(a),0===c)return a.__rendered=!0,a.delay=function(){return this},a.duration=function(){return this},a;a.__rendered=0===a.length?!0:a.every(function(a){return!a.length})?!0:!1;var g=0;return a.transition().duration(c).each(function(){++g}).each("end",function(){0===--g&&(a.__rendered=!0,f.renderEnd.apply(this,b))})},this.renderEnd=function(){e.every(function(a){return a.__rendered})&&(e.forEach(function(a){a.__rendered=!1}),b.renderEnd.apply(this,arguments))}},a.utils.deepExtend=function(b){var c=arguments.length>1?[].slice.call(arguments,1):[];c.forEach(function(c){for(var d in c){var e=b[d]instanceof Array,f="object"==typeof b[d],g="object"==typeof c[d];f&&!e&&g?a.utils.deepExtend(b[d],c[d]):b[d]=c[d]}})},a.utils.state=function(){if(!(this instanceof a.utils.state))return new a.utils.state;var b={},c=function(){},d=function(){return{}},e=null,f=null;this.dispatch=d3.dispatch("change","set"),this.dispatch.on("set",function(a){c(a,!0)}),this.getter=function(a){return d=a,this},this.setter=function(a,b){return b||(b=function(){}),c=function(c,d){a(c),d&&b()},this},this.init=function(b){e=e||{},a.utils.deepExtend(e,b)};var g=function(){var a=d();if(JSON.stringify(a)===JSON.stringify(b))return!1;for(var c in a)void 0===b[c]&&(b[c]={}),b[c]=a[c],f=!0;return!0};this.update=function(){e&&(c(e,!1),e=null),g.call(this)&&this.dispatch.change(b)}},a.utils.optionsFunc=function(a){return a&&d3.map(a).forEach(function(a,b){"function"==typeof this[a]&&this[a](b)}.bind(this)),this},a.utils.calcTicksX=function(b,c){var d=1,e=0;for(e;e<c.length;e+=1){var f=c[e]&&c[e].values?c[e].values.length:0;d=f>d?f:d}return a.log("Requested number of ticks: ",b),a.log("Calculated max values to be: ",d),b=b>d?b=d-1:b,b=1>b?1:b,b=Math.floor(b),a.log("Calculating tick count as: ",b),b},a.utils.calcTicksY=function(b,c){return a.utils.calcTicksX(b,c)},a.utils.initOption=function(a,b){a._calls&&a._calls[b]?a[b]=a._calls[b]:(a[b]=function(c){return arguments.length?(a._overrides[b]=!0,a._options[b]=c,a):a._options[b]},a["_"+b]=function(c){return arguments.length?(a._overrides[b]||(a._options[b]=c),a):a._options[b]})},a.utils.initOptions=function(b){b._overrides=b._overrides||{};var c=Object.getOwnPropertyNames(b._options||{}),d=Object.getOwnPropertyNames(b._calls||{});c=c.concat(d);for(var e in c)a.utils.initOption(b,c[e])},a.utils.inheritOptionsD3=function(a,b,c){a._d3options=c.concat(a._d3options||[]),c.unshift(b),c.unshift(a),d3.rebind.apply(this,c)},a.utils.arrayUnique=function(a){return a.sort().filter(function(b,c){return!c||b!=a[c-1]})},a.utils.symbolMap=d3.map(),a.utils.symbol=function(){function b(b,e){var f=c.call(this,b,e),g=d.call(this,b,e);return-1!==d3.svg.symbolTypes.indexOf(f)?d3.svg.symbol().type(f).size(g)():a.utils.symbolMap.get(f)(g)}var c,d=64;return b.type=function(a){return arguments.length?(c=d3.functor(a),b):c},b.size=function(a){return arguments.length?(d=d3.functor(a),b):d},b},a.utils.inheritOptions=function(b,c){var d=Object.getOwnPropertyNames(c._options||{}),e=Object.getOwnPropertyNames(c._calls||{}),f=c._inherited||[],g=c._d3options||[],h=d.concat(e).concat(f).concat(g);h.unshift(c),h.unshift(b),d3.rebind.apply(this,h),b._inherited=a.utils.arrayUnique(d.concat(e).concat(f).concat(d).concat(b._inherited||[])),b._d3options=a.utils.arrayUnique(g.concat(b._d3options||[]))},a.utils.initSVG=function(a){a.classed({"nvd3-svg":!0})},a.utils.sanitizeHeight=function(a,b){return a||parseInt(b.style("height"),10)||400},a.utils.sanitizeWidth=function(a,b){return a||parseInt(b.style("width"),10)||960},a.utils.availableHeight=function(b,c,d){return a.utils.sanitizeHeight(b,c)-d.top-d.bottom},a.utils.availableWidth=function(b,c,d){return a.utils.sanitizeWidth(b,c)-d.left-d.right},a.utils.noData=function(b,c){var d=b.options(),e=d.margin(),f=d.noData(),g=null==f?["No Data Available."]:[f],h=a.utils.availableHeight(d.height(),c,e),i=a.utils.availableWidth(d.width(),c,e),j=e.left+i/2,k=e.top+h/2;c.selectAll("g").remove();var l=c.selectAll(".nv-noData").data(g);l.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),l.attr("x",j).attr("y",k).text(function(a){return a})},a.models.axis=function(){"use strict";function b(g){return s.reset(),g.each(function(b){var g=d3.select(this);a.utils.initSVG(g);var p=g.selectAll("g.nv-wrap.nv-axis").data([b]),q=p.enter().append("g").attr("class","nvd3 nv-wrap nv-axis"),t=(q.append("g"),p.select("g"));null!==n?c.ticks(n):("top"==c.orient()||"bottom"==c.orient())&&c.ticks(Math.abs(d.range()[1]-d.range()[0])/100),t.watchTransition(s,"axis").call(c),r=r||c.scale();var u=c.tickFormat();null==u&&(u=r.tickFormat());var v=t.selectAll("text.nv-axislabel").data([h||null]);v.exit().remove();var w,x,y;switch(c.orient()){case"top":v.enter().append("text").attr("class","nv-axislabel"),y=d.range().length<2?0:2===d.range().length?d.range()[1]:d.range()[d.range().length-1]+(d.range()[1]-d.range()[0]),v.attr("text-anchor","middle").attr("y",0).attr("x",y/2),i&&(x=p.selectAll("g.nv-axisMaxMin").data(d.domain()),x.enter().append("g").attr("class",function(a,b){return["nv-axisMaxMin","nv-axisMaxMin-x",0==b?"nv-axisMin-x":"nv-axisMax-x"].join(" ")}).append("text"),x.exit().remove(),x.attr("transform",function(b){return"translate("+a.utils.NaNtoZero(d(b))+",0)"}).select("text").attr("dy","-0.5em").attr("y",-c.tickPadding()).attr("text-anchor","middle").text(function(a){var b=u(a);return(""+b).match("NaN")?"":b}),x.watchTransition(s,"min-max top").attr("transform",function(b,c){return"translate("+a.utils.NaNtoZero(d.range()[c])+",0)"}));break;case"bottom":w=o+36;var z=30,A=0,B=t.selectAll("g").select("text"),C="";if(j%360){B.each(function(){var a=this.getBoundingClientRect(),b=a.width;A=a.height,b>z&&(z=b)}),C="rotate("+j+" 0,"+(A/2+c.tickPadding())+")";var D=Math.abs(Math.sin(j*Math.PI/180));w=(D?D*z:z)+30,B.attr("transform",C).style("text-anchor",j%360>0?"start":"end")}v.enter().append("text").attr("class","nv-axislabel"),y=d.range().length<2?0:2===d.range().length?d.range()[1]:d.range()[d.range().length-1]+(d.range()[1]-d.range()[0]),v.attr("text-anchor","middle").attr("y",w).attr("x",y/2),i&&(x=p.selectAll("g.nv-axisMaxMin").data([d.domain()[0],d.domain()[d.domain().length-1]]),x.enter().append("g").attr("class",function(a,b){return["nv-axisMaxMin","nv-axisMaxMin-x",0==b?"nv-axisMin-x":"nv-axisMax-x"].join(" ")}).append("text"),x.exit().remove(),x.attr("transform",function(b){return"translate("+a.utils.NaNtoZero(d(b)+(m?d.rangeBand()/2:0))+",0)"}).select("text").attr("dy",".71em").attr("y",c.tickPadding()).attr("transform",C).style("text-anchor",j?j%360>0?"start":"end":"middle").text(function(a){var b=u(a);return(""+b).match("NaN")?"":b}),x.watchTransition(s,"min-max bottom").attr("transform",function(b){return"translate("+a.utils.NaNtoZero(d(b)+(m?d.rangeBand()/2:0))+",0)"})),l&&B.attr("transform",function(a,b){return"translate(0,"+(b%2==0?"0":"12")+")"});break;case"right":v.enter().append("text").attr("class","nv-axislabel"),v.style("text-anchor",k?"middle":"begin").attr("transform",k?"rotate(90)":"").attr("y",k?-Math.max(e.right,f)+12:-10).attr("x",k?d3.max(d.range())/2:c.tickPadding()),i&&(x=p.selectAll("g.nv-axisMaxMin").data(d.domain()),x.enter().append("g").attr("class",function(a,b){return["nv-axisMaxMin","nv-axisMaxMin-y",0==b?"nv-axisMin-y":"nv-axisMax-y"].join(" ")}).append("text").style("opacity",0),x.exit().remove(),x.attr("transform",function(b){return"translate(0,"+a.utils.NaNtoZero(d(b))+")"}).select("text").attr("dy",".32em").attr("y",0).attr("x",c.tickPadding()).style("text-anchor","start").text(function(a){var b=u(a);return(""+b).match("NaN")?"":b}),x.watchTransition(s,"min-max right").attr("transform",function(b,c){return"translate(0,"+a.utils.NaNtoZero(d.range()[c])+")"}).select("text").style("opacity",1));break;case"left":v.enter().append("text").attr("class","nv-axislabel"),v.style("text-anchor",k?"middle":"end").attr("transform",k?"rotate(-90)":"").attr("y",k?-Math.max(e.left,f)+25-(o||0):-10).attr("x",k?-d3.max(d.range())/2:-c.tickPadding()),i&&(x=p.selectAll("g.nv-axisMaxMin").data(d.domain()),x.enter().append("g").attr("class",function(a,b){return["nv-axisMaxMin","nv-axisMaxMin-y",0==b?"nv-axisMin-y":"nv-axisMax-y"].join(" ")}).append("text").style("opacity",0),x.exit().remove(),x.attr("transform",function(b){return"translate(0,"+a.utils.NaNtoZero(r(b))+")"}).select("text").attr("dy",".32em").attr("y",0).attr("x",-c.tickPadding()).attr("text-anchor","end").text(function(a){var b=u(a);return(""+b).match("NaN")?"":b}),x.watchTransition(s,"min-max right").attr("transform",function(b,c){return"translate(0,"+a.utils.NaNtoZero(d.range()[c])+")"}).select("text").style("opacity",1))}if(v.text(function(a){return a}),!i||"left"!==c.orient()&&"right"!==c.orient()||(t.selectAll("g").each(function(a){d3.select(this).select("text").attr("opacity",1),(d(a)<d.range()[1]+10||d(a)>d.range()[0]-10)&&((a>1e-10||-1e-10>a)&&d3.select(this).attr("opacity",0),d3.select(this).select("text").attr("opacity",0))}),d.domain()[0]==d.domain()[1]&&0==d.domain()[0]&&p.selectAll("g.nv-axisMaxMin").style("opacity",function(a,b){return b?0:1})),i&&("top"===c.orient()||"bottom"===c.orient())){var E=[];p.selectAll("g.nv-axisMaxMin").each(function(a,b){try{E.push(b?d(a)-this.getBoundingClientRect().width-4:d(a)+this.getBoundingClientRect().width+4)}catch(c){E.push(b?d(a)-4:d(a)+4)}}),t.selectAll("g").each(function(a){(d(a)<E[0]||d(a)>E[1])&&(a>1e-10||-1e-10>a?d3.select(this).remove():d3.select(this).select("text").remove())})}t.selectAll(".tick").filter(function(a){return!parseFloat(Math.round(1e5*a)/1e6)&&void 0!==a}).classed("zero",!0),r=d.copy()}),s.renderEnd("axis immediate"),b}var c=d3.svg.axis(),d=d3.scale.linear(),e={top:0,right:0,bottom:0,left:0},f=75,g=60,h=null,i=!0,j=0,k=!0,l=!1,m=!1,n=null,o=0,p=250,q=d3.dispatch("renderEnd");c.scale(d).orient("bottom").tickFormat(function(a){return a});var r,s=a.utils.renderWatch(q,p);return b.axis=c,b.dispatch=q,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{axisLabelDistance:{get:function(){return o},set:function(a){o=a}},staggerLabels:{get:function(){return l},set:function(a){l=a}},rotateLabels:{get:function(){return j},set:function(a){j=a}},rotateYLabel:{get:function(){return k},set:function(a){k=a}},showMaxMin:{get:function(){return i},set:function(a){i=a}},axisLabel:{get:function(){return h},set:function(a){h=a}},height:{get:function(){return g},set:function(a){g=a}},ticks:{get:function(){return n},set:function(a){n=a}},width:{get:function(){return f},set:function(a){f=a}},margin:{get:function(){return e},set:function(a){e.top=void 0!==a.top?a.top:e.top,e.right=void 0!==a.right?a.right:e.right,e.bottom=void 0!==a.bottom?a.bottom:e.bottom,e.left=void 0!==a.left?a.left:e.left}},duration:{get:function(){return p},set:function(a){p=a,s.reset(p)}},scale:{get:function(){return d},set:function(e){d=e,c.scale(d),m="function"==typeof d.rangeBands,a.utils.inheritOptionsD3(b,d,["domain","range","rangeBand","rangeBands"])}}}),a.utils.initOptions(b),a.utils.inheritOptionsD3(b,c,["orient","tickValues","tickSubdivide","tickSize","tickPadding","tickFormat"]),a.utils.inheritOptionsD3(b,d,["domain","range","rangeBand","rangeBands"]),b},a.models.boxPlot=function(){"use strict";function b(l){return v.reset(),l.each(function(b){var l=j-i.left-i.right,p=k-i.top-i.bottom;r=d3.select(this),a.utils.initSVG(r),m.domain(c||b.map(function(a,b){return o(a,b)})).rangeBands(e||[0,l],.1);var w=[];if(!d){var x=d3.min(b.map(function(a){var b=[];return b.push(a.values.Q1),a.values.hasOwnProperty("whisker_low")&&null!==a.values.whisker_low&&b.push(a.values.whisker_low),a.values.hasOwnProperty("outliers")&&null!==a.values.outliers&&(b=b.concat(a.values.outliers)),d3.min(b)})),y=d3.max(b.map(function(a){var b=[];return b.push(a.values.Q3),a.values.hasOwnProperty("whisker_high")&&null!==a.values.whisker_high&&b.push(a.values.whisker_high),a.values.hasOwnProperty("outliers")&&null!==a.values.outliers&&(b=b.concat(a.values.outliers)),d3.max(b)}));w=[x,y]}n.domain(d||w),n.range(f||[p,0]),g=g||m,h=h||n.copy().range([n(0),n(0)]);{var z=r.selectAll("g.nv-wrap").data([b]);z.enter().append("g").attr("class","nvd3 nv-wrap")}z.attr("transform","translate("+i.left+","+i.top+")");var A=z.selectAll(".nv-boxplot").data(function(a){return a}),B=A.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6);A.attr("class","nv-boxplot").attr("transform",function(a,b){return"translate("+(m(o(a,b))+.05*m.rangeBand())+", 0)"}).classed("hover",function(a){return a.hover}),A.watchTransition(v,"nv-boxplot: boxplots").style("stroke-opacity",1).style("fill-opacity",.75).delay(function(a,c){return c*t/b.length}).attr("transform",function(a,b){return"translate("+(m(o(a,b))+.05*m.rangeBand())+", 0)"}),A.exit().remove(),B.each(function(a,b){var c=d3.select(this);["low","high"].forEach(function(d){a.values.hasOwnProperty("whisker_"+d)&&null!==a.values["whisker_"+d]&&(c.append("line").style("stroke",a.color?a.color:q(a,b)).attr("class","nv-boxplot-whisker nv-boxplot-"+d),c.append("line").style("stroke",a.color?a.color:q(a,b)).attr("class","nv-boxplot-tick nv-boxplot-"+d))})});var C=A.selectAll(".nv-boxplot-outlier").data(function(a){return a.values.hasOwnProperty("outliers")&&null!==a.values.outliers?a.values.outliers:[]});C.enter().append("circle").style("fill",function(a,b,c){return q(a,c)}).style("stroke",function(a,b,c){return q(a,c)}).on("mouseover",function(a,b,c){d3.select(this).classed("hover",!0),s.elementMouseover({series:{key:a,color:q(a,c)},e:d3.event})}).on("mouseout",function(a,b,c){d3.select(this).classed("hover",!1),s.elementMouseout({series:{key:a,color:q(a,c)},e:d3.event})}).on("mousemove",function(){s.elementMousemove({e:d3.event})}),C.attr("class","nv-boxplot-outlier"),C.watchTransition(v,"nv-boxplot: nv-boxplot-outlier").attr("cx",.45*m.rangeBand()).attr("cy",function(a){return n(a)}).attr("r","3"),C.exit().remove();var D=function(){return null===u?.9*m.rangeBand():Math.min(75,.9*m.rangeBand())},E=function(){return.45*m.rangeBand()-D()/2},F=function(){return.45*m.rangeBand()+D()/2};["low","high"].forEach(function(a){var b="low"===a?"Q1":"Q3";A.select("line.nv-boxplot-whisker.nv-boxplot-"+a).watchTransition(v,"nv-boxplot: boxplots").attr("x1",.45*m.rangeBand()).attr("y1",function(b){return n(b.values["whisker_"+a])}).attr("x2",.45*m.rangeBand()).attr("y2",function(a){return n(a.values[b])}),A.select("line.nv-boxplot-tick.nv-boxplot-"+a).watchTransition(v,"nv-boxplot: boxplots").attr("x1",E).attr("y1",function(b){return n(b.values["whisker_"+a])}).attr("x2",F).attr("y2",function(b){return n(b.values["whisker_"+a])})}),["low","high"].forEach(function(a){B.selectAll(".nv-boxplot-"+a).on("mouseover",function(b,c,d){d3.select(this).classed("hover",!0),s.elementMouseover({series:{key:b.values["whisker_"+a],color:q(b,d)},e:d3.event})}).on("mouseout",function(b,c,d){d3.select(this).classed("hover",!1),s.elementMouseout({series:{key:b.values["whisker_"+a],color:q(b,d)},e:d3.event})}).on("mousemove",function(){s.elementMousemove({e:d3.event})})}),B.append("rect").attr("class","nv-boxplot-box").on("mouseover",function(a,b){d3.select(this).classed("hover",!0),s.elementMouseover({key:a.label,value:a.label,series:[{key:"Q3",value:a.values.Q3,color:a.color||q(a,b)},{key:"Q2",value:a.values.Q2,color:a.color||q(a,b)},{key:"Q1",value:a.values.Q1,color:a.color||q(a,b)}],data:a,index:b,e:d3.event})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),s.elementMouseout({key:a.label,value:a.label,series:[{key:"Q3",value:a.values.Q3,color:a.color||q(a,b)},{key:"Q2",value:a.values.Q2,color:a.color||q(a,b)},{key:"Q1",value:a.values.Q1,color:a.color||q(a,b)}],data:a,index:b,e:d3.event})}).on("mousemove",function(){s.elementMousemove({e:d3.event})}),A.select("rect.nv-boxplot-box").watchTransition(v,"nv-boxplot: boxes").attr("y",function(a){return n(a.values.Q3)}).attr("width",D).attr("x",E).attr("height",function(a){return Math.abs(n(a.values.Q3)-n(a.values.Q1))||1}).style("fill",function(a,b){return a.color||q(a,b)}).style("stroke",function(a,b){return a.color||q(a,b)}),B.append("line").attr("class","nv-boxplot-median"),A.select("line.nv-boxplot-median").watchTransition(v,"nv-boxplot: boxplots line").attr("x1",E).attr("y1",function(a){return n(a.values.Q2)}).attr("x2",F).attr("y2",function(a){return n(a.values.Q2)}),g=m.copy(),h=n.copy()}),v.renderEnd("nv-boxplot immediate"),b}var c,d,e,f,g,h,i={top:0,right:0,bottom:0,left:0},j=960,k=500,l=Math.floor(1e4*Math.random()),m=d3.scale.ordinal(),n=d3.scale.linear(),o=function(a){return a.x},p=function(a){return a.y},q=a.utils.defaultColor(),r=null,s=d3.dispatch("elementMouseover","elementMouseout","elementMousemove","renderEnd"),t=250,u=null,v=a.utils.renderWatch(s,t);return b.dispatch=s,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return j},set:function(a){j=a}},height:{get:function(){return k},set:function(a){k=a}},maxBoxWidth:{get:function(){return u},set:function(a){u=a}},x:{get:function(){return o},set:function(a){o=a}},y:{get:function(){return p},set:function(a){p=a}},xScale:{get:function(){return m},set:function(a){m=a}},yScale:{get:function(){return n},set:function(a){n=a}},xDomain:{get:function(){return c},set:function(a){c=a}},yDomain:{get:function(){return d},set:function(a){d=a}},xRange:{get:function(){return e},set:function(a){e=a}},yRange:{get:function(){return f},set:function(a){f=a}},id:{get:function(){return l},set:function(a){l=a}},margin:{get:function(){return i},set:function(a){i.top=void 0!==a.top?a.top:i.top,i.right=void 0!==a.right?a.right:i.right,i.bottom=void 0!==a.bottom?a.bottom:i.bottom,i.left=void 0!==a.left?a.left:i.left}},color:{get:function(){return q},set:function(b){q=a.utils.getColor(b)}},duration:{get:function(){return t},set:function(a){t=a,v.reset(t)}}}),a.utils.initOptions(b),b},a.models.boxPlotChart=function(){"use strict";function b(k){return t.reset(),t.models(e),l&&t.models(f),m&&t.models(g),k.each(function(k){var p=d3.select(this);a.utils.initSVG(p);var t=(i||parseInt(p.style("width"))||960)-h.left-h.right,u=(j||parseInt(p.style("height"))||400)-h.top-h.bottom;if(b.update=function(){r.beforeUpdate(),p.transition().duration(s).call(b)},b.container=this,!(k&&k.length&&k.filter(function(a){return a.values.hasOwnProperty("Q1")&&a.values.hasOwnProperty("Q2")&&a.values.hasOwnProperty("Q3")}).length)){var v=p.selectAll(".nv-noData").data([q]);return v.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),v.attr("x",h.left+t/2).attr("y",h.top+u/2).text(function(a){return a}),b}p.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale().clamp(!0);var w=p.selectAll("g.nv-wrap.nv-boxPlotWithAxes").data([k]),x=w.enter().append("g").attr("class","nvd3 nv-wrap nv-boxPlotWithAxes").append("g"),y=x.append("defs"),z=w.select("g");
-x.append("g").attr("class","nv-x nv-axis"),x.append("g").attr("class","nv-y nv-axis").append("g").attr("class","nv-zeroLine").append("line"),x.append("g").attr("class","nv-barsWrap"),z.attr("transform","translate("+h.left+","+h.top+")"),n&&z.select(".nv-y.nv-axis").attr("transform","translate("+t+",0)"),e.width(t).height(u);var A=z.select(".nv-barsWrap").datum(k.filter(function(a){return!a.disabled}));if(A.transition().call(e),y.append("clipPath").attr("id","nv-x-label-clip-"+e.id()).append("rect"),z.select("#nv-x-label-clip-"+e.id()+" rect").attr("width",c.rangeBand()*(o?2:1)).attr("height",16).attr("x",-c.rangeBand()/(o?1:2)),l){f.scale(c).ticks(a.utils.calcTicksX(t/100,k)).tickSize(-u,0),z.select(".nv-x.nv-axis").attr("transform","translate(0,"+d.range()[0]+")"),z.select(".nv-x.nv-axis").call(f);var B=z.select(".nv-x.nv-axis").selectAll("g");o&&B.selectAll("text").attr("transform",function(a,b,c){return"translate(0,"+(c%2==0?"5":"17")+")"})}m&&(g.scale(d).ticks(Math.floor(u/36)).tickSize(-t,0),z.select(".nv-y.nv-axis").call(g)),z.select(".nv-zeroLine line").attr("x1",0).attr("x2",t).attr("y1",d(0)).attr("y2",d(0))}),t.renderEnd("nv-boxplot chart immediate"),b}var c,d,e=a.models.boxPlot(),f=a.models.axis(),g=a.models.axis(),h={top:15,right:10,bottom:50,left:60},i=null,j=null,k=a.utils.getColor(),l=!0,m=!0,n=!1,o=!1,p=a.models.tooltip(),q="No Data Available.",r=d3.dispatch("tooltipShow","tooltipHide","beforeUpdate","renderEnd"),s=250;f.orient("bottom").showMaxMin(!1).tickFormat(function(a){return a}),g.orient(n?"right":"left").tickFormat(d3.format(",.1f")),p.duration(0);var t=a.utils.renderWatch(r,s);return e.dispatch.on("elementMouseover.tooltip",function(a){p.data(a).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(a){p.data(a).hidden(!0)}),e.dispatch.on("elementMousemove.tooltip",function(){p.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=r,b.boxplot=e,b.xAxis=f,b.yAxis=g,b.tooltip=p,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return i},set:function(a){i=a}},height:{get:function(){return j},set:function(a){j=a}},staggerLabels:{get:function(){return o},set:function(a){o=a}},showXAxis:{get:function(){return l},set:function(a){l=a}},showYAxis:{get:function(){return m},set:function(a){m=a}},tooltips:{get:function(){return tooltips},set:function(a){tooltips=a}},tooltipContent:{get:function(){return p},set:function(a){p=a}},noData:{get:function(){return q},set:function(a){q=a}},margin:{get:function(){return h},set:function(a){h.top=void 0!==a.top?a.top:h.top,h.right=void 0!==a.right?a.right:h.right,h.bottom=void 0!==a.bottom?a.bottom:h.bottom,h.left=void 0!==a.left?a.left:h.left}},duration:{get:function(){return s},set:function(a){s=a,t.reset(s),e.duration(s),f.duration(s),g.duration(s)}},color:{get:function(){return k},set:function(b){k=a.utils.getColor(b),e.color(k)}},rightAlignYAxis:{get:function(){return n},set:function(a){n=a,g.orient(a?"right":"left")}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.bullet=function(){"use strict";function b(d){return d.each(function(b,d){var p=m-c.left-c.right,s=n-c.top-c.bottom;o=d3.select(this),a.utils.initSVG(o);{var t=f.call(this,b,d).slice().sort(d3.descending),u=g.call(this,b,d).slice().sort(d3.descending),v=h.call(this,b,d).slice().sort(d3.descending),w=i.call(this,b,d).slice(),x=j.call(this,b,d).slice(),y=k.call(this,b,d).slice(),z=d3.scale.linear().domain(d3.extent(d3.merge([l,t]))).range(e?[p,0]:[0,p]);this.__chart__||d3.scale.linear().domain([0,1/0]).range(z.range())}this.__chart__=z;var A=d3.min(t),B=d3.max(t),C=t[1],D=o.selectAll("g.nv-wrap.nv-bullet").data([b]),E=D.enter().append("g").attr("class","nvd3 nv-wrap nv-bullet"),F=E.append("g"),G=D.select("g");F.append("rect").attr("class","nv-range nv-rangeMax"),F.append("rect").attr("class","nv-range nv-rangeAvg"),F.append("rect").attr("class","nv-range nv-rangeMin"),F.append("rect").attr("class","nv-measure"),D.attr("transform","translate("+c.left+","+c.top+")");var H=function(a){return Math.abs(z(a)-z(0))},I=function(a){return z(0>a?a:0)};G.select("rect.nv-rangeMax").attr("height",s).attr("width",H(B>0?B:A)).attr("x",I(B>0?B:A)).datum(B>0?B:A),G.select("rect.nv-rangeAvg").attr("height",s).attr("width",H(C)).attr("x",I(C)).datum(C),G.select("rect.nv-rangeMin").attr("height",s).attr("width",H(B)).attr("x",I(B)).attr("width",H(B>0?A:B)).attr("x",I(B>0?A:B)).datum(B>0?A:B),G.select("rect.nv-measure").style("fill",q).attr("height",s/3).attr("y",s/3).attr("width",0>v?z(0)-z(v[0]):z(v[0])-z(0)).attr("x",I(v)).on("mouseover",function(){r.elementMouseover({value:v[0],label:y[0]||"Current",color:d3.select(this).style("fill")})}).on("mousemove",function(){r.elementMousemove({value:v[0],label:y[0]||"Current",color:d3.select(this).style("fill")})}).on("mouseout",function(){r.elementMouseout({value:v[0],label:y[0]||"Current",color:d3.select(this).style("fill")})});var J=s/6,K=u.map(function(a,b){return{value:a,label:x[b]}});F.selectAll("path.nv-markerTriangle").data(K).enter().append("path").attr("class","nv-markerTriangle").attr("transform",function(a){return"translate("+z(a.value)+","+s/2+")"}).attr("d","M0,"+J+"L"+J+","+-J+" "+-J+","+-J+"Z").on("mouseover",function(a){r.elementMouseover({value:a.value,label:a.label||"Previous",color:d3.select(this).style("fill"),pos:[z(a.value),s/2]})}).on("mousemove",function(a){r.elementMousemove({value:a.value,label:a.label||"Previous",color:d3.select(this).style("fill")})}).on("mouseout",function(a){r.elementMouseout({value:a.value,label:a.label||"Previous",color:d3.select(this).style("fill")})}),D.selectAll(".nv-range").on("mouseover",function(a,b){var c=w[b]||(b?1==b?"Mean":"Minimum":"Maximum");r.elementMouseover({value:a,label:c,color:d3.select(this).style("fill")})}).on("mousemove",function(){r.elementMousemove({value:v[0],label:y[0]||"Previous",color:d3.select(this).style("fill")})}).on("mouseout",function(a,b){var c=w[b]||(b?1==b?"Mean":"Minimum":"Maximum");r.elementMouseout({value:a,label:c,color:d3.select(this).style("fill")})})}),b}var c={top:0,right:0,bottom:0,left:0},d="left",e=!1,f=function(a){return a.ranges},g=function(a){return a.markers?a.markers:[0]},h=function(a){return a.measures},i=function(a){return a.rangeLabels?a.rangeLabels:[]},j=function(a){return a.markerLabels?a.markerLabels:[]},k=function(a){return a.measureLabels?a.measureLabels:[]},l=[0],m=380,n=30,o=null,p=null,q=a.utils.getColor(["#1f77b4"]),r=d3.dispatch("elementMouseover","elementMouseout","elementMousemove");return b.dispatch=r,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{ranges:{get:function(){return f},set:function(a){f=a}},markers:{get:function(){return g},set:function(a){g=a}},measures:{get:function(){return h},set:function(a){h=a}},forceX:{get:function(){return l},set:function(a){l=a}},width:{get:function(){return m},set:function(a){m=a}},height:{get:function(){return n},set:function(a){n=a}},tickFormat:{get:function(){return p},set:function(a){p=a}},margin:{get:function(){return c},set:function(a){c.top=void 0!==a.top?a.top:c.top,c.right=void 0!==a.right?a.right:c.right,c.bottom=void 0!==a.bottom?a.bottom:c.bottom,c.left=void 0!==a.left?a.left:c.left}},orient:{get:function(){return d},set:function(a){d=a,e="right"==d||"bottom"==d}},color:{get:function(){return q},set:function(b){q=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.bulletChart=function(){"use strict";function b(d){return d.each(function(e,o){var p=d3.select(this);a.utils.initSVG(p);var q=a.utils.availableWidth(k,p,g),r=l-g.top-g.bottom;if(b.update=function(){b(d)},b.container=this,!e||!h.call(this,e,o))return a.utils.noData(b,p),b;p.selectAll(".nv-noData").remove();var s=h.call(this,e,o).slice().sort(d3.descending),t=i.call(this,e,o).slice().sort(d3.descending),u=j.call(this,e,o).slice().sort(d3.descending),v=p.selectAll("g.nv-wrap.nv-bulletChart").data([e]),w=v.enter().append("g").attr("class","nvd3 nv-wrap nv-bulletChart"),x=w.append("g"),y=v.select("g");x.append("g").attr("class","nv-bulletWrap"),x.append("g").attr("class","nv-titles"),v.attr("transform","translate("+g.left+","+g.top+")");var z=d3.scale.linear().domain([0,Math.max(s[0],t[0],u[0])]).range(f?[q,0]:[0,q]),A=this.__chart__||d3.scale.linear().domain([0,1/0]).range(z.range());this.__chart__=z;var B=x.select(".nv-titles").append("g").attr("text-anchor","end").attr("transform","translate(-6,"+(l-g.top-g.bottom)/2+")");B.append("text").attr("class","nv-title").text(function(a){return a.title}),B.append("text").attr("class","nv-subtitle").attr("dy","1em").text(function(a){return a.subtitle}),c.width(q).height(r);var C=y.select(".nv-bulletWrap");d3.transition(C).call(c);var D=m||z.tickFormat(q/100),E=y.selectAll("g.nv-tick").data(z.ticks(n?n:q/50),function(a){return this.textContent||D(a)}),F=E.enter().append("g").attr("class","nv-tick").attr("transform",function(a){return"translate("+A(a)+",0)"}).style("opacity",1e-6);F.append("line").attr("y1",r).attr("y2",7*r/6),F.append("text").attr("text-anchor","middle").attr("dy","1em").attr("y",7*r/6).text(D);var G=d3.transition(E).attr("transform",function(a){return"translate("+z(a)+",0)"}).style("opacity",1);G.select("line").attr("y1",r).attr("y2",7*r/6),G.select("text").attr("y",7*r/6),d3.transition(E.exit()).attr("transform",function(a){return"translate("+z(a)+",0)"}).style("opacity",1e-6).remove()}),d3.timer.flush(),b}var c=a.models.bullet(),d=a.models.tooltip(),e="left",f=!1,g={top:5,right:40,bottom:20,left:120},h=function(a){return a.ranges},i=function(a){return a.markers?a.markers:[0]},j=function(a){return a.measures},k=null,l=55,m=null,n=null,o=null,p=d3.dispatch("tooltipShow","tooltipHide");return d.duration(0).headerEnabled(!1),c.dispatch.on("elementMouseover.tooltip",function(a){a.series={key:a.label,value:a.value,color:a.color},d.data(a).hidden(!1)}),c.dispatch.on("elementMouseout.tooltip",function(){d.hidden(!0)}),c.dispatch.on("elementMousemove.tooltip",function(){d.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.bullet=c,b.dispatch=p,b.tooltip=d,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{ranges:{get:function(){return h},set:function(a){h=a}},markers:{get:function(){return i},set:function(a){i=a}},measures:{get:function(){return j},set:function(a){j=a}},width:{get:function(){return k},set:function(a){k=a}},height:{get:function(){return l},set:function(a){l=a}},tickFormat:{get:function(){return m},set:function(a){m=a}},ticks:{get:function(){return n},set:function(a){n=a}},noData:{get:function(){return o},set:function(a){o=a}},tooltips:{get:function(){return d.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),d.enabled(!!b)}},tooltipContent:{get:function(){return d.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),d.contentGenerator(b)}},margin:{get:function(){return g},set:function(a){g.top=void 0!==a.top?a.top:g.top,g.right=void 0!==a.right?a.right:g.right,g.bottom=void 0!==a.bottom?a.bottom:g.bottom,g.left=void 0!==a.left?a.left:g.left}},orient:{get:function(){return e},set:function(a){e=a,f="right"==e||"bottom"==e}}}),a.utils.inheritOptions(b,c),a.utils.initOptions(b),b},a.models.candlestickBar=function(){"use strict";function b(x){return x.each(function(b){c=d3.select(this);var x=a.utils.availableWidth(i,c,h),y=a.utils.availableHeight(j,c,h);a.utils.initSVG(c);var A=x/b[0].values.length*.45;l.domain(d||d3.extent(b[0].values.map(n).concat(t))),l.range(v?f||[.5*x/b[0].values.length,x*(b[0].values.length-.5)/b[0].values.length]:f||[5+A/2,x-A/2-5]),m.domain(e||[d3.min(b[0].values.map(s).concat(u)),d3.max(b[0].values.map(r).concat(u))]).range(g||[y,0]),l.domain()[0]===l.domain()[1]&&l.domain(l.domain()[0]?[l.domain()[0]-.01*l.domain()[0],l.domain()[1]+.01*l.domain()[1]]:[-1,1]),m.domain()[0]===m.domain()[1]&&m.domain(m.domain()[0]?[m.domain()[0]+.01*m.domain()[0],m.domain()[1]-.01*m.domain()[1]]:[-1,1]);var B=d3.select(this).selectAll("g.nv-wrap.nv-candlestickBar").data([b[0].values]),C=B.enter().append("g").attr("class","nvd3 nv-wrap nv-candlestickBar"),D=C.append("defs"),E=C.append("g"),F=B.select("g");E.append("g").attr("class","nv-ticks"),B.attr("transform","translate("+h.left+","+h.top+")"),c.on("click",function(a,b){z.chartClick({data:a,index:b,pos:d3.event,id:k})}),D.append("clipPath").attr("id","nv-chart-clip-path-"+k).append("rect"),B.select("#nv-chart-clip-path-"+k+" rect").attr("width",x).attr("height",y),F.attr("clip-path",w?"url(#nv-chart-clip-path-"+k+")":"");var G=B.select(".nv-ticks").selectAll(".nv-tick").data(function(a){return a});G.exit().remove();{var H=G.enter().append("g").attr("class",function(a,b,c){return(p(a,b)>q(a,b)?"nv-tick negative":"nv-tick positive")+" nv-tick-"+c+"-"+b});H.append("line").attr("class","nv-candlestick-lines").attr("transform",function(a,b){return"translate("+l(n(a,b))+",0)"}).attr("x1",0).attr("y1",function(a,b){return m(r(a,b))}).attr("x2",0).attr("y2",function(a,b){return m(s(a,b))}),H.append("rect").attr("class","nv-candlestick-rects nv-bars").attr("transform",function(a,b){return"translate("+(l(n(a,b))-A/2)+","+(m(o(a,b))-(p(a,b)>q(a,b)?m(q(a,b))-m(p(a,b)):0))+")"}).attr("x",0).attr("y",0).attr("width",A).attr("height",function(a,b){var c=p(a,b),d=q(a,b);return c>d?m(d)-m(c):m(c)-m(d)})}c.selectAll(".nv-candlestick-lines").transition().attr("transform",function(a,b){return"translate("+l(n(a,b))+",0)"}).attr("x1",0).attr("y1",function(a,b){return m(r(a,b))}).attr("x2",0).attr("y2",function(a,b){return m(s(a,b))}),c.selectAll(".nv-candlestick-rects").transition().attr("transform",function(a,b){return"translate("+(l(n(a,b))-A/2)+","+(m(o(a,b))-(p(a,b)>q(a,b)?m(q(a,b))-m(p(a,b)):0))+")"}).attr("x",0).attr("y",0).attr("width",A).attr("height",function(a,b){var c=p(a,b),d=q(a,b);return c>d?m(d)-m(c):m(c)-m(d)})}),b}var c,d,e,f,g,h={top:0,right:0,bottom:0,left:0},i=null,j=null,k=Math.floor(1e4*Math.random()),l=d3.scale.linear(),m=d3.scale.linear(),n=function(a){return a.x},o=function(a){return a.y},p=function(a){return a.open},q=function(a){return a.close},r=function(a){return a.high},s=function(a){return a.low},t=[],u=[],v=!1,w=!0,x=a.utils.defaultColor(),y=!1,z=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState","renderEnd","chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove");return b.highlightPoint=function(a,d){b.clearHighlights(),c.select(".nv-candlestickBar .nv-tick-0-"+a).classed("hover",d)},b.clearHighlights=function(){c.select(".nv-candlestickBar .nv-tick.hover").classed("hover",!1)},b.dispatch=z,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return i},set:function(a){i=a}},height:{get:function(){return j},set:function(a){j=a}},xScale:{get:function(){return l},set:function(a){l=a}},yScale:{get:function(){return m},set:function(a){m=a}},xDomain:{get:function(){return d},set:function(a){d=a}},yDomain:{get:function(){return e},set:function(a){e=a}},xRange:{get:function(){return f},set:function(a){f=a}},yRange:{get:function(){return g},set:function(a){g=a}},forceX:{get:function(){return t},set:function(a){t=a}},forceY:{get:function(){return u},set:function(a){u=a}},padData:{get:function(){return v},set:function(a){v=a}},clipEdge:{get:function(){return w},set:function(a){w=a}},id:{get:function(){return k},set:function(a){k=a}},interactive:{get:function(){return y},set:function(a){y=a}},x:{get:function(){return n},set:function(a){n=a}},y:{get:function(){return o},set:function(a){o=a}},open:{get:function(){return p()},set:function(a){p=a}},close:{get:function(){return q()},set:function(a){q=a}},high:{get:function(){return r},set:function(a){r=a}},low:{get:function(){return s},set:function(a){s=a}},margin:{get:function(){return h},set:function(a){h.top=void 0!=a.top?a.top:h.top,h.right=void 0!=a.right?a.right:h.right,h.bottom=void 0!=a.bottom?a.bottom:h.bottom,h.left=void 0!=a.left?a.left:h.left}},color:{get:function(){return x},set:function(b){x=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.cumulativeLineChart=function(){"use strict";function b(l){return H.reset(),H.models(f),r&&H.models(g),s&&H.models(h),l.each(function(l){function A(){d3.select(b.container).style("cursor","ew-resize")}function E(){G.x=d3.event.x,G.i=Math.round(F.invert(G.x)),K()}function H(){d3.select(b.container).style("cursor","auto"),y.index=G.i,C.stateChange(y)}function K(){bb.data([G]);var a=b.duration();b.duration(0),b.update(),b.duration(a)}var L=d3.select(this);a.utils.initSVG(L),L.classed("nv-chart-"+x,!0);var M=this,N=a.utils.availableWidth(o,L,m),O=a.utils.availableHeight(p,L,m);if(b.update=function(){0===D?L.call(b):L.transition().duration(D).call(b)},b.container=this,y.setter(J(l),b.update).getter(I(l)).update(),y.disabled=l.map(function(a){return!!a.disabled}),!z){var P;z={};for(P in y)z[P]=y[P]instanceof Array?y[P].slice(0):y[P]}var Q=d3.behavior.drag().on("dragstart",A).on("drag",E).on("dragend",H);if(!(l&&l.length&&l.filter(function(a){return a.values.length}).length))return a.utils.noData(b,L),b;if(L.selectAll(".nv-noData").remove(),d=f.xScale(),e=f.yScale(),w)f.yDomain(null);else{var R=l.filter(function(a){return!a.disabled}).map(function(a){var b=d3.extent(a.values,f.y());return b[0]<-.95&&(b[0]=-.95),[(b[0]-b[1])/(1+b[1]),(b[1]-b[0])/(1+b[0])]}),S=[d3.min(R,function(a){return a[0]}),d3.max(R,function(a){return a[1]})];f.yDomain(S)}F.domain([0,l[0].values.length-1]).range([0,N]).clamp(!0);var l=c(G.i,l),T=v?"none":"all",U=L.selectAll("g.nv-wrap.nv-cumulativeLine").data([l]),V=U.enter().append("g").attr("class","nvd3 nv-wrap nv-cumulativeLine").append("g"),W=U.select("g");if(V.append("g").attr("class","nv-interactive"),V.append("g").attr("class","nv-x nv-axis").style("pointer-events","none"),V.append("g").attr("class","nv-y nv-axis"),V.append("g").attr("class","nv-background"),V.append("g").attr("class","nv-linesWrap").style("pointer-events",T),V.append("g").attr("class","nv-avgLinesWrap").style("pointer-events","none"),V.append("g").attr("class","nv-legendWrap"),V.append("g").attr("class","nv-controlsWrap"),q&&(i.width(N),W.select(".nv-legendWrap").datum(l).call(i),m.top!=i.height()&&(m.top=i.height(),O=a.utils.availableHeight(p,L,m)),W.select(".nv-legendWrap").attr("transform","translate(0,"+-m.top+")")),u){var X=[{key:"Re-scale y-axis",disabled:!w}];j.width(140).color(["#444","#444","#444"]).rightAlign(!1).margin({top:5,right:0,bottom:5,left:20}),W.select(".nv-controlsWrap").datum(X).attr("transform","translate(0,"+-m.top+")").call(j)}U.attr("transform","translate("+m.left+","+m.top+")"),t&&W.select(".nv-y.nv-axis").attr("transform","translate("+N+",0)");var Y=l.filter(function(a){return a.tempDisabled});U.select(".tempDisabled").remove(),Y.length&&U.append("text").attr("class","tempDisabled").attr("x",N/2).attr("y","-.71em").style("text-anchor","end").text(Y.map(function(a){return a.key}).join(", ")+" values cannot be calculated for this time period."),v&&(k.width(N).height(O).margin({left:m.left,top:m.top}).svgContainer(L).xScale(d),U.select(".nv-interactive").call(k)),V.select(".nv-background").append("rect"),W.select(".nv-background rect").attr("width",N).attr("height",O),f.y(function(a){return a.display.y}).width(N).height(O).color(l.map(function(a,b){return a.color||n(a,b)}).filter(function(a,b){return!l[b].disabled&&!l[b].tempDisabled}));var Z=W.select(".nv-linesWrap").datum(l.filter(function(a){return!a.disabled&&!a.tempDisabled}));Z.call(f),l.forEach(function(a,b){a.seriesIndex=b});var $=l.filter(function(a){return!a.disabled&&!!B(a)}),_=W.select(".nv-avgLinesWrap").selectAll("line").data($,function(a){return a.key}),ab=function(a){var b=e(B(a));return 0>b?0:b>O?O:b};_.enter().append("line").style("stroke-width",2).style("stroke-dasharray","10,10").style("stroke",function(a){return f.color()(a,a.seriesIndex)}).attr("x1",0).attr("x2",N).attr("y1",ab).attr("y2",ab),_.style("stroke-opacity",function(a){var b=e(B(a));return 0>b||b>O?0:1}).attr("x1",0).attr("x2",N).attr("y1",ab).attr("y2",ab),_.exit().remove();var bb=Z.selectAll(".nv-indexLine").data([G]);bb.enter().append("rect").attr("class","nv-indexLine").attr("width",3).attr("x",-2).attr("fill","red").attr("fill-opacity",.5).style("pointer-events","all").call(Q),bb.attr("transform",function(a){return"translate("+F(a.i)+",0)"}).attr("height",O),r&&(g.scale(d)._ticks(a.utils.calcTicksX(N/70,l)).tickSize(-O,0),W.select(".nv-x.nv-axis").attr("transform","translate(0,"+e.range()[0]+")"),W.select(".nv-x.nv-axis").call(g)),s&&(h.scale(e)._ticks(a.utils.calcTicksY(O/36,l)).tickSize(-N,0),W.select(".nv-y.nv-axis").call(h)),W.select(".nv-background rect").on("click",function(){G.x=d3.mouse(this)[0],G.i=Math.round(F.invert(G.x)),y.index=G.i,C.stateChange(y),K()}),f.dispatch.on("elementClick",function(a){G.i=a.pointIndex,G.x=F(G.i),y.index=G.i,C.stateChange(y),K()}),j.dispatch.on("legendClick",function(a){a.disabled=!a.disabled,w=!a.disabled,y.rescaleY=w,C.stateChange(y),b.update()}),i.dispatch.on("stateChange",function(a){for(var c in a)y[c]=a[c];C.stateChange(y),b.update()}),k.dispatch.on("elementMousemove",function(c){f.clearHighlights();var d,e,i,j=[];if(l.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(g,h){e=a.interactiveBisect(g.values,c.pointXValue,b.x()),f.highlightPoint(h,e,!0);var k=g.values[e];"undefined"!=typeof k&&("undefined"==typeof d&&(d=k),"undefined"==typeof i&&(i=b.xScale()(b.x()(k,e))),j.push({key:g.key,value:b.y()(k,e),color:n(g,g.seriesIndex)}))}),j.length>2){var o=b.yScale().invert(c.mouseY),p=Math.abs(b.yScale().domain()[0]-b.yScale().domain()[1]),q=.03*p,r=a.nearestValueIndex(j.map(function(a){return a.value}),o,q);null!==r&&(j[r].highlight=!0)}var s=g.tickFormat()(b.x()(d,e),e);k.tooltip.position({left:i+m.left,top:c.mouseY+m.top}).chartContainer(M.parentNode).valueFormatter(function(a){return h.tickFormat()(a)}).data({value:s,series:j})(),k.renderGuideLine(i)}),k.dispatch.on("elementMouseout",function(){f.clearHighlights()}),C.on("changeState",function(a){"undefined"!=typeof a.disabled&&(l.forEach(function(b,c){b.disabled=a.disabled[c]}),y.disabled=a.disabled),"undefined"!=typeof a.index&&(G.i=a.index,G.x=F(G.i),y.index=a.index,bb.data([G])),"undefined"!=typeof a.rescaleY&&(w=a.rescaleY),b.update()})}),H.renderEnd("cumulativeLineChart immediate"),b}function c(a,b){return K||(K=f.y()),b.map(function(b){if(!b.values)return b;var c=b.values[a];if(null==c)return b;var d=K(c,a);return-.95>d&&!E?(b.tempDisabled=!0,b):(b.tempDisabled=!1,b.values=b.values.map(function(a,b){return a.display={y:(K(a,b)-d)/(1+d)},a}),b)})}var d,e,f=a.models.line(),g=a.models.axis(),h=a.models.axis(),i=a.models.legend(),j=a.models.legend(),k=a.interactiveGuideline(),l=a.models.tooltip(),m={top:30,right:30,bottom:50,left:60},n=a.utils.defaultColor(),o=null,p=null,q=!0,r=!0,s=!0,t=!1,u=!0,v=!1,w=!0,x=f.id(),y=a.utils.state(),z=null,A=null,B=function(a){return a.average},C=d3.dispatch("stateChange","changeState","renderEnd"),D=250,E=!1;y.index=0,y.rescaleY=w,g.orient("bottom").tickPadding(7),h.orient(t?"right":"left"),l.valueFormatter(function(a,b){return h.tickFormat()(a,b)}).headerFormatter(function(a,b){return g.tickFormat()(a,b)}),j.updateState(!1);var F=d3.scale.linear(),G={i:0,x:0},H=a.utils.renderWatch(C,D),I=function(a){return function(){return{active:a.map(function(a){return!a.disabled}),index:G.i,rescaleY:w}}},J=function(a){return function(b){void 0!==b.index&&(G.i=b.index),void 0!==b.rescaleY&&(w=b.rescaleY),void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};f.dispatch.on("elementMouseover.tooltip",function(a){var c={x:b.x()(a.point),y:b.y()(a.point),color:a.point.color};a.point=c,l.data(a).position(a.pos).hidden(!1)}),f.dispatch.on("elementMouseout.tooltip",function(){l.hidden(!0)});var K=null;return b.dispatch=C,b.lines=f,b.legend=i,b.controls=j,b.xAxis=g,b.yAxis=h,b.interactiveLayer=k,b.state=y,b.tooltip=l,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return o},set:function(a){o=a}},height:{get:function(){return p},set:function(a){p=a}},rescaleY:{get:function(){return w},set:function(a){w=a}},showControls:{get:function(){return u},set:function(a){u=a}},showLegend:{get:function(){return q},set:function(a){q=a}},average:{get:function(){return B},set:function(a){B=a}},defaultState:{get:function(){return z},set:function(a){z=a}},noData:{get:function(){return A},set:function(a){A=a}},showXAxis:{get:function(){return r},set:function(a){r=a}},showYAxis:{get:function(){return s},set:function(a){s=a}},noErrorCheck:{get:function(){return E},set:function(a){E=a}},tooltips:{get:function(){return l.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),l.enabled(!!b)}},tooltipContent:{get:function(){return l.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),l.contentGenerator(b)}},margin:{get:function(){return m},set:function(a){m.top=void 0!==a.top?a.top:m.top,m.right=void 0!==a.right?a.right:m.right,m.bottom=void 0!==a.bottom?a.bottom:m.bottom,m.left=void 0!==a.left?a.left:m.left}},color:{get:function(){return n},set:function(b){n=a.utils.getColor(b),i.color(n)}},useInteractiveGuideline:{get:function(){return v},set:function(a){v=a,a===!0&&(b.interactive(!1),b.useVoronoi(!1))}},rightAlignYAxis:{get:function(){return t},set:function(a){t=a,h.orient(a?"right":"left")}},duration:{get:function(){return D},set:function(a){D=a,f.duration(D),g.duration(D),h.duration(D),H.reset(D)}}}),a.utils.inheritOptions(b,f),a.utils.initOptions(b),b},a.models.discreteBar=function(){"use strict";function b(m){return y.reset(),m.each(function(b){var m=k-j.left-j.right,x=l-j.top-j.bottom;c=d3.select(this),a.utils.initSVG(c),b.forEach(function(a,b){a.values.forEach(function(a){a.series=b})});var z=d&&e?[]:b.map(function(a){return a.values.map(function(a,b){return{x:p(a,b),y:q(a,b),y0:a.y0}})});n.domain(d||d3.merge(z).map(function(a){return a.x})).rangeBands(f||[0,m],.1),o.domain(e||d3.extent(d3.merge(z).map(function(a){return a.y}).concat(r))),o.range(t?g||[x-(o.domain()[0]<0?12:0),o.domain()[1]>0?12:0]:g||[x,0]),h=h||n,i=i||o.copy().range([o(0),o(0)]);{var A=c.selectAll("g.nv-wrap.nv-discretebar").data([b]),B=A.enter().append("g").attr("class","nvd3 nv-wrap nv-discretebar"),C=B.append("g");A.select("g")}C.append("g").attr("class","nv-groups"),A.attr("transform","translate("+j.left+","+j.top+")");var D=A.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a){return a.key});D.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),D.exit().watchTransition(y,"discreteBar: exit groups").style("stroke-opacity",1e-6).style("fill-opacity",1e-6).remove(),D.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}),D.watchTransition(y,"discreteBar: groups").style("stroke-opacity",1).style("fill-opacity",.75);var E=D.selectAll("g.nv-bar").data(function(a){return a.values});E.exit().remove();var F=E.enter().append("g").attr("transform",function(a,b){return"translate("+(n(p(a,b))+.05*n.rangeBand())+", "+o(0)+")"}).on("mouseover",function(a,b){d3.select(this).classed("hover",!0),v.elementMouseover({data:a,index:b,color:d3.select(this).style("fill")})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),v.elementMouseout({data:a,index:b,color:d3.select(this).style("fill")})}).on("mousemove",function(a,b){v.elementMousemove({data:a,index:b,color:d3.select(this).style("fill")})}).on("click",function(a,b){v.elementClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()}).on("dblclick",function(a,b){v.elementDblClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()});F.append("rect").attr("height",0).attr("width",.9*n.rangeBand()/b.length),t?(F.append("text").attr("text-anchor","middle"),E.select("text").text(function(a,b){return u(q(a,b))}).watchTransition(y,"discreteBar: bars text").attr("x",.9*n.rangeBand()/2).attr("y",function(a,b){return q(a,b)<0?o(q(a,b))-o(0)+12:-4})):E.selectAll("text").remove(),E.attr("class",function(a,b){return q(a,b)<0?"nv-bar negative":"nv-bar positive"}).style("fill",function(a,b){return a.color||s(a,b)}).style("stroke",function(a,b){return a.color||s(a,b)}).select("rect").attr("class",w).watchTransition(y,"discreteBar: bars rect").attr("width",.9*n.rangeBand()/b.length),E.watchTransition(y,"discreteBar: bars").attr("transform",function(a,b){var c=n(p(a,b))+.05*n.rangeBand(),d=q(a,b)<0?o(0):o(0)-o(q(a,b))<1?o(0)-1:o(q(a,b));return"translate("+c+", "+d+")"}).select("rect").attr("height",function(a,b){return Math.max(Math.abs(o(q(a,b))-o(e&&e[0]||0))||1)}),h=n.copy(),i=o.copy()}),y.renderEnd("discreteBar immediate"),b}var c,d,e,f,g,h,i,j={top:0,right:0,bottom:0,left:0},k=960,l=500,m=Math.floor(1e4*Math.random()),n=d3.scale.ordinal(),o=d3.scale.linear(),p=function(a){return a.x},q=function(a){return a.y},r=[0],s=a.utils.defaultColor(),t=!1,u=d3.format(",.2f"),v=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove","renderEnd"),w="discreteBar",x=250,y=a.utils.renderWatch(v,x);return b.dispatch=v,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return k},set:function(a){k=a}},height:{get:function(){return l},set:function(a){l=a}},forceY:{get:function(){return r},set:function(a){r=a}},showValues:{get:function(){return t},set:function(a){t=a}},x:{get:function(){return p},set:function(a){p=a}},y:{get:function(){return q},set:function(a){q=a}},xScale:{get:function(){return n},set:function(a){n=a}},yScale:{get:function(){return o},set:function(a){o=a}},xDomain:{get:function(){return d},set:function(a){d=a}},yDomain:{get:function(){return e},set:function(a){e=a}},xRange:{get:function(){return f},set:function(a){f=a}},yRange:{get:function(){return g},set:function(a){g=a}},valueFormat:{get:function(){return u},set:function(a){u=a}},id:{get:function(){return m},set:function(a){m=a}},rectClass:{get:function(){return w},set:function(a){w=a}},margin:{get:function(){return j},set:function(a){j.top=void 0!==a.top?a.top:j.top,j.right=void 0!==a.right?a.right:j.right,j.bottom=void 0!==a.bottom?a.bottom:j.bottom,j.left=void 0!==a.left?a.left:j.left}},color:{get:function(){return s},set:function(b){s=a.utils.getColor(b)}},duration:{get:function(){return x},set:function(a){x=a,y.reset(x)}}}),a.utils.initOptions(b),b},a.models.discreteBarChart=function(){"use strict";function b(h){return t.reset(),t.models(e),m&&t.models(f),n&&t.models(g),h.each(function(h){var l=d3.select(this);a.utils.initSVG(l);var q=a.utils.availableWidth(j,l,i),t=a.utils.availableHeight(k,l,i);if(b.update=function(){r.beforeUpdate(),l.transition().duration(s).call(b)},b.container=this,!(h&&h.length&&h.filter(function(a){return a.values.length}).length))return a.utils.noData(b,l),b;l.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale().clamp(!0);var u=l.selectAll("g.nv-wrap.nv-discreteBarWithAxes").data([h]),v=u.enter().append("g").attr("class","nvd3 nv-wrap nv-discreteBarWithAxes").append("g"),w=v.append("defs"),x=u.select("g");v.append("g").attr("class","nv-x nv-axis"),v.append("g").attr("class","nv-y nv-axis").append("g").attr("class","nv-zeroLine").append("line"),v.append("g").attr("class","nv-barsWrap"),x.attr("transform","translate("+i.left+","+i.top+")"),o&&x.select(".nv-y.nv-axis").attr("transform","translate("+q+",0)"),e.width(q).height(t);var y=x.select(".nv-barsWrap").datum(h.filter(function(a){return!a.disabled}));if(y.transition().call(e),w.append("clipPath").attr("id","nv-x-label-clip-"+e.id()).append("rect"),x.select("#nv-x-label-clip-"+e.id()+" rect").attr("width",c.rangeBand()*(p?2:1)).attr("height",16).attr("x",-c.rangeBand()/(p?1:2)),m){f.scale(c)._ticks(a.utils.calcTicksX(q/100,h)).tickSize(-t,0),x.select(".nv-x.nv-axis").attr("transform","translate(0,"+(d.range()[0]+(e.showValues()&&d.domain()[0]<0?16:0))+")"),x.select(".nv-x.nv-axis").call(f);
-var z=x.select(".nv-x.nv-axis").selectAll("g");p&&z.selectAll("text").attr("transform",function(a,b,c){return"translate(0,"+(c%2==0?"5":"17")+")"})}n&&(g.scale(d)._ticks(a.utils.calcTicksY(t/36,h)).tickSize(-q,0),x.select(".nv-y.nv-axis").call(g)),x.select(".nv-zeroLine line").attr("x1",0).attr("x2",q).attr("y1",d(0)).attr("y2",d(0))}),t.renderEnd("discreteBar chart immediate"),b}var c,d,e=a.models.discreteBar(),f=a.models.axis(),g=a.models.axis(),h=a.models.tooltip(),i={top:15,right:10,bottom:50,left:60},j=null,k=null,l=a.utils.getColor(),m=!0,n=!0,o=!1,p=!1,q=null,r=d3.dispatch("beforeUpdate","renderEnd"),s=250;f.orient("bottom").showMaxMin(!1).tickFormat(function(a){return a}),g.orient(o?"right":"left").tickFormat(d3.format(",.1f")),h.duration(0).headerEnabled(!1).valueFormatter(function(a,b){return g.tickFormat()(a,b)}).keyFormatter(function(a,b){return f.tickFormat()(a,b)});var t=a.utils.renderWatch(r,s);return e.dispatch.on("elementMouseover.tooltip",function(a){a.series={key:b.x()(a.data),value:b.y()(a.data),color:a.color},h.data(a).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(){h.hidden(!0)}),e.dispatch.on("elementMousemove.tooltip",function(){h.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=r,b.discretebar=e,b.xAxis=f,b.yAxis=g,b.tooltip=h,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return j},set:function(a){j=a}},height:{get:function(){return k},set:function(a){k=a}},staggerLabels:{get:function(){return p},set:function(a){p=a}},showXAxis:{get:function(){return m},set:function(a){m=a}},showYAxis:{get:function(){return n},set:function(a){n=a}},noData:{get:function(){return q},set:function(a){q=a}},tooltips:{get:function(){return h.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),h.enabled(!!b)}},tooltipContent:{get:function(){return h.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),h.contentGenerator(b)}},margin:{get:function(){return i},set:function(a){i.top=void 0!==a.top?a.top:i.top,i.right=void 0!==a.right?a.right:i.right,i.bottom=void 0!==a.bottom?a.bottom:i.bottom,i.left=void 0!==a.left?a.left:i.left}},duration:{get:function(){return s},set:function(a){s=a,t.reset(s),e.duration(s),f.duration(s),g.duration(s)}},color:{get:function(){return l},set:function(b){l=a.utils.getColor(b),e.color(l)}},rightAlignYAxis:{get:function(){return o},set:function(a){o=a,g.orient(a?"right":"left")}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.distribution=function(){"use strict";function b(k){return m.reset(),k.each(function(b){var k=(e-("x"===g?d.left+d.right:d.top+d.bottom),"x"==g?"y":"x"),l=d3.select(this);a.utils.initSVG(l),c=c||j;var n=l.selectAll("g.nv-distribution").data([b]),o=n.enter().append("g").attr("class","nvd3 nv-distribution"),p=(o.append("g"),n.select("g"));n.attr("transform","translate("+d.left+","+d.top+")");var q=p.selectAll("g.nv-dist").data(function(a){return a},function(a){return a.key});q.enter().append("g"),q.attr("class",function(a,b){return"nv-dist nv-series-"+b}).style("stroke",function(a,b){return i(a,b)});var r=q.selectAll("line.nv-dist"+g).data(function(a){return a.values});r.enter().append("line").attr(g+"1",function(a,b){return c(h(a,b))}).attr(g+"2",function(a,b){return c(h(a,b))}),m.transition(q.exit().selectAll("line.nv-dist"+g),"dist exit").attr(g+"1",function(a,b){return j(h(a,b))}).attr(g+"2",function(a,b){return j(h(a,b))}).style("stroke-opacity",0).remove(),r.attr("class",function(a,b){return"nv-dist"+g+" nv-dist"+g+"-"+b}).attr(k+"1",0).attr(k+"2",f),m.transition(r,"dist").attr(g+"1",function(a,b){return j(h(a,b))}).attr(g+"2",function(a,b){return j(h(a,b))}),c=j.copy()}),m.renderEnd("distribution immediate"),b}var c,d={top:0,right:0,bottom:0,left:0},e=400,f=8,g="x",h=function(a){return a[g]},i=a.utils.defaultColor(),j=d3.scale.linear(),k=250,l=d3.dispatch("renderEnd"),m=a.utils.renderWatch(l,k);return b.options=a.utils.optionsFunc.bind(b),b.dispatch=l,b.margin=function(a){return arguments.length?(d.top="undefined"!=typeof a.top?a.top:d.top,d.right="undefined"!=typeof a.right?a.right:d.right,d.bottom="undefined"!=typeof a.bottom?a.bottom:d.bottom,d.left="undefined"!=typeof a.left?a.left:d.left,b):d},b.width=function(a){return arguments.length?(e=a,b):e},b.axis=function(a){return arguments.length?(g=a,b):g},b.size=function(a){return arguments.length?(f=a,b):f},b.getData=function(a){return arguments.length?(h=d3.functor(a),b):h},b.scale=function(a){return arguments.length?(j=a,b):j},b.color=function(c){return arguments.length?(i=a.utils.getColor(c),b):i},b.duration=function(a){return arguments.length?(k=a,m.reset(k),b):k},b},a.models.furiousLegend=function(){"use strict";function b(p){function q(a,b){return"furious"!=o?"#000":m?a.disengaged?g(a,b):"#fff":m?void 0:a.disabled?g(a,b):"#fff"}function r(a,b){return m&&"furious"==o?a.disengaged?"#fff":g(a,b):a.disabled?"#fff":g(a,b)}return p.each(function(b){var p=d-c.left-c.right,s=d3.select(this);a.utils.initSVG(s);var t=s.selectAll("g.nv-legend").data([b]),u=(t.enter().append("g").attr("class","nvd3 nv-legend").append("g"),t.select("g"));t.attr("transform","translate("+c.left+","+c.top+")");var v,w=u.selectAll(".nv-series").data(function(a){return"furious"!=o?a:a.filter(function(a){return m?!0:!a.disengaged})}),x=w.enter().append("g").attr("class","nv-series");if("classic"==o)x.append("circle").style("stroke-width",2).attr("class","nv-legend-symbol").attr("r",5),v=w.select("circle");else if("furious"==o){x.append("rect").style("stroke-width",2).attr("class","nv-legend-symbol").attr("rx",3).attr("ry",3),v=w.select("rect"),x.append("g").attr("class","nv-check-box").property("innerHTML",'<path d="M0.5,5 L22.5,5 L22.5,26.5 L0.5,26.5 L0.5,5 Z" class="nv-box"></path><path d="M5.5,12.8618467 L11.9185089,19.2803556 L31,0.198864511" class="nv-check"></path>').attr("transform","translate(-10,-8)scale(0.5)");var y=w.select(".nv-check-box");y.each(function(a,b){d3.select(this).selectAll("path").attr("stroke",q(a,b))})}x.append("text").attr("text-anchor","start").attr("class","nv-legend-text").attr("dy",".32em").attr("dx","8");var z=w.select("text.nv-legend-text");w.on("mouseover",function(a,b){n.legendMouseover(a,b)}).on("mouseout",function(a,b){n.legendMouseout(a,b)}).on("click",function(a,b){n.legendClick(a,b);var c=w.data();if(k){if("classic"==o)l?(c.forEach(function(a){a.disabled=!0}),a.disabled=!1):(a.disabled=!a.disabled,c.every(function(a){return a.disabled})&&c.forEach(function(a){a.disabled=!1}));else if("furious"==o)if(m)a.disengaged=!a.disengaged,a.userDisabled=void 0==a.userDisabled?!!a.disabled:a.userDisabled,a.disabled=a.disengaged||a.userDisabled;else if(!m){a.disabled=!a.disabled,a.userDisabled=a.disabled;var d=c.filter(function(a){return!a.disengaged});d.every(function(a){return a.userDisabled})&&c.forEach(function(a){a.disabled=a.userDisabled=!1})}n.stateChange({disabled:c.map(function(a){return!!a.disabled}),disengaged:c.map(function(a){return!!a.disengaged})})}}).on("dblclick",function(a,b){if(("furious"!=o||!m)&&(n.legendDblclick(a,b),k)){var c=w.data();c.forEach(function(a){a.disabled=!0,"furious"==o&&(a.userDisabled=a.disabled)}),a.disabled=!1,"furious"==o&&(a.userDisabled=a.disabled),n.stateChange({disabled:c.map(function(a){return!!a.disabled})})}}),w.classed("nv-disabled",function(a){return a.userDisabled}),w.exit().remove(),z.attr("fill",q).text(f);var A;switch(o){case"furious":A=23;break;case"classic":A=20}if(h){var B=[];w.each(function(){var b,c=d3.select(this).select("text");try{if(b=c.node().getComputedTextLength(),0>=b)throw Error()}catch(d){b=a.utils.calcApproxTextWidth(c)}B.push(b+i)});for(var C=0,D=0,E=[];p>D&&C<B.length;)E[C]=B[C],D+=B[C++];for(0===C&&(C=1);D>p&&C>1;){E=[],C--;for(var F=0;F<B.length;F++)B[F]>(E[F%C]||0)&&(E[F%C]=B[F]);D=E.reduce(function(a,b){return a+b})}for(var G=[],H=0,I=0;C>H;H++)G[H]=I,I+=E[H];w.attr("transform",function(a,b){return"translate("+G[b%C]+","+(5+Math.floor(b/C)*A)+")"}),j?u.attr("transform","translate("+(d-c.right-D)+","+c.top+")"):u.attr("transform","translate(0,"+c.top+")"),e=c.top+c.bottom+Math.ceil(B.length/C)*A}else{var J,K=5,L=5,M=0;w.attr("transform",function(){var a=d3.select(this).select("text").node().getComputedTextLength()+i;return J=L,d<c.left+c.right+J+a&&(L=J=5,K+=A),L+=a,L>M&&(M=L),"translate("+J+","+K+")"}),u.attr("transform","translate("+(d-c.right-M)+","+c.top+")"),e=c.top+c.bottom+K+15}"furious"==o&&v.attr("width",function(a,b){return z[0][b].getComputedTextLength()+27}).attr("height",18).attr("y",-9).attr("x",-15),v.style("fill",r).style("stroke",function(a,b){return a.color||g(a,b)})}),b}var c={top:5,right:0,bottom:5,left:0},d=400,e=20,f=function(a){return a.key},g=a.utils.getColor(),h=!0,i=28,j=!0,k=!0,l=!1,m=!1,n=d3.dispatch("legendClick","legendDblclick","legendMouseover","legendMouseout","stateChange"),o="classic";return b.dispatch=n,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return d},set:function(a){d=a}},height:{get:function(){return e},set:function(a){e=a}},key:{get:function(){return f},set:function(a){f=a}},align:{get:function(){return h},set:function(a){h=a}},rightAlign:{get:function(){return j},set:function(a){j=a}},padding:{get:function(){return i},set:function(a){i=a}},updateState:{get:function(){return k},set:function(a){k=a}},radioButtonMode:{get:function(){return l},set:function(a){l=a}},expanded:{get:function(){return m},set:function(a){m=a}},vers:{get:function(){return o},set:function(a){o=a}},margin:{get:function(){return c},set:function(a){c.top=void 0!==a.top?a.top:c.top,c.right=void 0!==a.right?a.right:c.right,c.bottom=void 0!==a.bottom?a.bottom:c.bottom,c.left=void 0!==a.left?a.left:c.left}},color:{get:function(){return g},set:function(b){g=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.historicalBar=function(){"use strict";function b(x){return x.each(function(b){w.reset(),k=d3.select(this);var x=a.utils.availableWidth(h,k,g),y=a.utils.availableHeight(i,k,g);a.utils.initSVG(k),l.domain(c||d3.extent(b[0].values.map(n).concat(p))),l.range(r?e||[.5*x/b[0].values.length,x*(b[0].values.length-.5)/b[0].values.length]:e||[0,x]),m.domain(d||d3.extent(b[0].values.map(o).concat(q))).range(f||[y,0]),l.domain()[0]===l.domain()[1]&&l.domain(l.domain()[0]?[l.domain()[0]-.01*l.domain()[0],l.domain()[1]+.01*l.domain()[1]]:[-1,1]),m.domain()[0]===m.domain()[1]&&m.domain(m.domain()[0]?[m.domain()[0]+.01*m.domain()[0],m.domain()[1]-.01*m.domain()[1]]:[-1,1]);var z=k.selectAll("g.nv-wrap.nv-historicalBar-"+j).data([b[0].values]),A=z.enter().append("g").attr("class","nvd3 nv-wrap nv-historicalBar-"+j),B=A.append("defs"),C=A.append("g"),D=z.select("g");C.append("g").attr("class","nv-bars"),z.attr("transform","translate("+g.left+","+g.top+")"),k.on("click",function(a,b){u.chartClick({data:a,index:b,pos:d3.event,id:j})}),B.append("clipPath").attr("id","nv-chart-clip-path-"+j).append("rect"),z.select("#nv-chart-clip-path-"+j+" rect").attr("width",x).attr("height",y),D.attr("clip-path",s?"url(#nv-chart-clip-path-"+j+")":"");var E=z.select(".nv-bars").selectAll(".nv-bar").data(function(a){return a},function(a,b){return n(a,b)});E.exit().remove(),E.enter().append("rect").attr("x",0).attr("y",function(b,c){return a.utils.NaNtoZero(m(Math.max(0,o(b,c))))}).attr("height",function(b,c){return a.utils.NaNtoZero(Math.abs(m(o(b,c))-m(0)))}).attr("transform",function(a,c){return"translate("+(l(n(a,c))-x/b[0].values.length*.45)+",0)"}).on("mouseover",function(a,b){v&&(d3.select(this).classed("hover",!0),u.elementMouseover({data:a,index:b,color:d3.select(this).style("fill")}))}).on("mouseout",function(a,b){v&&(d3.select(this).classed("hover",!1),u.elementMouseout({data:a,index:b,color:d3.select(this).style("fill")}))}).on("mousemove",function(a,b){v&&u.elementMousemove({data:a,index:b,color:d3.select(this).style("fill")})}).on("click",function(a,b){v&&(u.elementClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation())}).on("dblclick",function(a,b){v&&(u.elementDblClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation())}),E.attr("fill",function(a,b){return t(a,b)}).attr("class",function(a,b,c){return(o(a,b)<0?"nv-bar negative":"nv-bar positive")+" nv-bar-"+c+"-"+b}).watchTransition(w,"bars").attr("transform",function(a,c){return"translate("+(l(n(a,c))-x/b[0].values.length*.45)+",0)"}).attr("width",x/b[0].values.length*.9),E.watchTransition(w,"bars").attr("y",function(b,c){var d=o(b,c)<0?m(0):m(0)-m(o(b,c))<1?m(0)-1:m(o(b,c));return a.utils.NaNtoZero(d)}).attr("height",function(b,c){return a.utils.NaNtoZero(Math.max(Math.abs(m(o(b,c))-m(0)),1))})}),w.renderEnd("historicalBar immediate"),b}var c,d,e,f,g={top:0,right:0,bottom:0,left:0},h=null,i=null,j=Math.floor(1e4*Math.random()),k=null,l=d3.scale.linear(),m=d3.scale.linear(),n=function(a){return a.x},o=function(a){return a.y},p=[],q=[0],r=!1,s=!0,t=a.utils.defaultColor(),u=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove","renderEnd"),v=!0,w=a.utils.renderWatch(u,0);return b.highlightPoint=function(a,b){k.select(".nv-bars .nv-bar-0-"+a).classed("hover",b)},b.clearHighlights=function(){k.select(".nv-bars .nv-bar.hover").classed("hover",!1)},b.dispatch=u,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return h},set:function(a){h=a}},height:{get:function(){return i},set:function(a){i=a}},forceX:{get:function(){return p},set:function(a){p=a}},forceY:{get:function(){return q},set:function(a){q=a}},padData:{get:function(){return r},set:function(a){r=a}},x:{get:function(){return n},set:function(a){n=a}},y:{get:function(){return o},set:function(a){o=a}},xScale:{get:function(){return l},set:function(a){l=a}},yScale:{get:function(){return m},set:function(a){m=a}},xDomain:{get:function(){return c},set:function(a){c=a}},yDomain:{get:function(){return d},set:function(a){d=a}},xRange:{get:function(){return e},set:function(a){e=a}},yRange:{get:function(){return f},set:function(a){f=a}},clipEdge:{get:function(){return s},set:function(a){s=a}},id:{get:function(){return j},set:function(a){j=a}},interactive:{get:function(){return v},set:function(a){v=a}},margin:{get:function(){return g},set:function(a){g.top=void 0!==a.top?a.top:g.top,g.right=void 0!==a.right?a.right:g.right,g.bottom=void 0!==a.bottom?a.bottom:g.bottom,g.left=void 0!==a.left?a.left:g.left}},color:{get:function(){return t},set:function(b){t=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.historicalBarChart=function(b){"use strict";function c(b){return b.each(function(k){z.reset(),z.models(f),q&&z.models(g),r&&z.models(h);var w=d3.select(this),A=this;a.utils.initSVG(w);var B=a.utils.availableWidth(n,w,l),C=a.utils.availableHeight(o,w,l);if(c.update=function(){w.transition().duration(y).call(c)},c.container=this,u.disabled=k.map(function(a){return!!a.disabled}),!v){var D;v={};for(D in u)v[D]=u[D]instanceof Array?u[D].slice(0):u[D]}if(!(k&&k.length&&k.filter(function(a){return a.values.length}).length))return a.utils.noData(c,w),c;w.selectAll(".nv-noData").remove(),d=f.xScale(),e=f.yScale();var E=w.selectAll("g.nv-wrap.nv-historicalBarChart").data([k]),F=E.enter().append("g").attr("class","nvd3 nv-wrap nv-historicalBarChart").append("g"),G=E.select("g");F.append("g").attr("class","nv-x nv-axis"),F.append("g").attr("class","nv-y nv-axis"),F.append("g").attr("class","nv-barsWrap"),F.append("g").attr("class","nv-legendWrap"),F.append("g").attr("class","nv-interactive"),p&&(i.width(B),G.select(".nv-legendWrap").datum(k).call(i),l.top!=i.height()&&(l.top=i.height(),C=a.utils.availableHeight(o,w,l)),E.select(".nv-legendWrap").attr("transform","translate(0,"+-l.top+")")),E.attr("transform","translate("+l.left+","+l.top+")"),s&&G.select(".nv-y.nv-axis").attr("transform","translate("+B+",0)"),t&&(j.width(B).height(C).margin({left:l.left,top:l.top}).svgContainer(w).xScale(d),E.select(".nv-interactive").call(j)),f.width(B).height(C).color(k.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!k[b].disabled}));var H=G.select(".nv-barsWrap").datum(k.filter(function(a){return!a.disabled}));H.transition().call(f),q&&(g.scale(d)._ticks(a.utils.calcTicksX(B/100,k)).tickSize(-C,0),G.select(".nv-x.nv-axis").attr("transform","translate(0,"+e.range()[0]+")"),G.select(".nv-x.nv-axis").transition().call(g)),r&&(h.scale(e)._ticks(a.utils.calcTicksY(C/36,k)).tickSize(-B,0),G.select(".nv-y.nv-axis").transition().call(h)),j.dispatch.on("elementMousemove",function(b){f.clearHighlights();var d,e,i,n=[];k.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(g){e=a.interactiveBisect(g.values,b.pointXValue,c.x()),f.highlightPoint(e,!0);var h=g.values[e];void 0!==h&&(void 0===d&&(d=h),void 0===i&&(i=c.xScale()(c.x()(h,e))),n.push({key:g.key,value:c.y()(h,e),color:m(g,g.seriesIndex),data:g.values[e]}))});var o=g.tickFormat()(c.x()(d,e));j.tooltip.position({left:i+l.left,top:b.mouseY+l.top}).chartContainer(A.parentNode).valueFormatter(function(a){return h.tickFormat()(a)}).data({value:o,index:e,series:n})(),j.renderGuideLine(i)}),j.dispatch.on("elementMouseout",function(){x.tooltipHide(),f.clearHighlights()}),i.dispatch.on("legendClick",function(a){a.disabled=!a.disabled,k.filter(function(a){return!a.disabled}).length||k.map(function(a){return a.disabled=!1,E.selectAll(".nv-series").classed("disabled",!1),a}),u.disabled=k.map(function(a){return!!a.disabled}),x.stateChange(u),b.transition().call(c)}),i.dispatch.on("legendDblclick",function(a){k.forEach(function(a){a.disabled=!0}),a.disabled=!1,u.disabled=k.map(function(a){return!!a.disabled}),x.stateChange(u),c.update()}),x.on("changeState",function(a){"undefined"!=typeof a.disabled&&(k.forEach(function(b,c){b.disabled=a.disabled[c]}),u.disabled=a.disabled),c.update()})}),z.renderEnd("historicalBarChart immediate"),c}var d,e,f=b||a.models.historicalBar(),g=a.models.axis(),h=a.models.axis(),i=a.models.legend(),j=a.interactiveGuideline(),k=a.models.tooltip(),l={top:30,right:90,bottom:50,left:90},m=a.utils.defaultColor(),n=null,o=null,p=!1,q=!0,r=!0,s=!1,t=!1,u={},v=null,w=null,x=d3.dispatch("tooltipHide","stateChange","changeState","renderEnd"),y=250;g.orient("bottom").tickPadding(7),h.orient(s?"right":"left"),k.duration(0).headerEnabled(!1).valueFormatter(function(a,b){return h.tickFormat()(a,b)}).headerFormatter(function(a,b){return g.tickFormat()(a,b)});var z=a.utils.renderWatch(x,0);return f.dispatch.on("elementMouseover.tooltip",function(a){a.series={key:c.x()(a.data),value:c.y()(a.data),color:a.color},k.data(a).hidden(!1)}),f.dispatch.on("elementMouseout.tooltip",function(){k.hidden(!0)}),f.dispatch.on("elementMousemove.tooltip",function(){k.position({top:d3.event.pageY,left:d3.event.pageX})()}),c.dispatch=x,c.bars=f,c.legend=i,c.xAxis=g,c.yAxis=h,c.interactiveLayer=j,c.tooltip=k,c.options=a.utils.optionsFunc.bind(c),c._options=Object.create({},{width:{get:function(){return n},set:function(a){n=a}},height:{get:function(){return o},set:function(a){o=a}},showLegend:{get:function(){return p},set:function(a){p=a}},showXAxis:{get:function(){return q},set:function(a){q=a}},showYAxis:{get:function(){return r},set:function(a){r=a}},defaultState:{get:function(){return v},set:function(a){v=a}},noData:{get:function(){return w},set:function(a){w=a}},tooltips:{get:function(){return k.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),k.enabled(!!b)}},tooltipContent:{get:function(){return k.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),k.contentGenerator(b)}},margin:{get:function(){return l},set:function(a){l.top=void 0!==a.top?a.top:l.top,l.right=void 0!==a.right?a.right:l.right,l.bottom=void 0!==a.bottom?a.bottom:l.bottom,l.left=void 0!==a.left?a.left:l.left}},color:{get:function(){return m},set:function(b){m=a.utils.getColor(b),i.color(m),f.color(m)}},duration:{get:function(){return y},set:function(a){y=a,z.reset(y),h.duration(y),g.duration(y)}},rightAlignYAxis:{get:function(){return s},set:function(a){s=a,h.orient(a?"right":"left")}},useInteractiveGuideline:{get:function(){return t},set:function(a){t=a,a===!0&&c.interactive(!1)}}}),a.utils.inheritOptions(c,f),a.utils.initOptions(c),c},a.models.ohlcBarChart=function(){var b=a.models.historicalBarChart(a.models.ohlcBar());return b.useInteractiveGuideline(!0),b.interactiveLayer.tooltip.contentGenerator(function(a){var c=a.series[0].data,d=c.open<c.close?"2ca02c":"d62728";return'<h3 style="color: #'+d+'">'+a.value+"</h3><table><tr><td>open:</td><td>"+b.yAxis.tickFormat()(c.open)+"</td></tr><tr><td>close:</td><td>"+b.yAxis.tickFormat()(c.close)+"</td></tr><tr><td>high</td><td>"+b.yAxis.tickFormat()(c.high)+"</td></tr><tr><td>low:</td><td>"+b.yAxis.tickFormat()(c.low)+"</td></tr></table>"}),b},a.models.candlestickBarChart=function(){var b=a.models.historicalBarChart(a.models.candlestickBar());return b.useInteractiveGuideline(!0),b.interactiveLayer.tooltip.contentGenerator(function(a){var c=a.series[0].data,d=c.open<c.close?"2ca02c":"d62728";return'<h3 style="color: #'+d+'">'+a.value+"</h3><table><tr><td>open:</td><td>"+b.yAxis.tickFormat()(c.open)+"</td></tr><tr><td>close:</td><td>"+b.yAxis.tickFormat()(c.close)+"</td></tr><tr><td>high</td><td>"+b.yAxis.tickFormat()(c.high)+"</td></tr><tr><td>low:</td><td>"+b.yAxis.tickFormat()(c.low)+"</td></tr></table>"}),b},a.models.legend=function(){"use strict";function b(p){function q(a,b){return"furious"!=o?"#000":m?a.disengaged?"#000":"#fff":m?void 0:(a.color||(a.color=g(a,b)),a.disabled?a.color:"#fff")}function r(a,b){return m&&"furious"==o&&a.disengaged?"#eee":a.color||g(a,b)}function s(a){return m&&"furious"==o?1:a.disabled?0:1}return p.each(function(b){var g=d-c.left-c.right,p=d3.select(this);a.utils.initSVG(p);var t=p.selectAll("g.nv-legend").data([b]),u=t.enter().append("g").attr("class","nvd3 nv-legend").append("g"),v=t.select("g");t.attr("transform","translate("+c.left+","+c.top+")");var w,x,y=v.selectAll(".nv-series").data(function(a){return"furious"!=o?a:a.filter(function(a){return m?!0:!a.disengaged})}),z=y.enter().append("g").attr("class","nv-series");switch(o){case"furious":x=23;break;case"classic":x=20}if("classic"==o)z.append("circle").style("stroke-width",2).attr("class","nv-legend-symbol").attr("r",5),w=y.select("circle");else if("furious"==o){z.append("rect").style("stroke-width",2).attr("class","nv-legend-symbol").attr("rx",3).attr("ry",3),w=y.select(".nv-legend-symbol"),z.append("g").attr("class","nv-check-box").property("innerHTML",'<path d="M0.5,5 L22.5,5 L22.5,26.5 L0.5,26.5 L0.5,5 Z" class="nv-box"></path><path d="M5.5,12.8618467 L11.9185089,19.2803556 L31,0.198864511" class="nv-check"></path>').attr("transform","translate(-10,-8)scale(0.5)");var A=y.select(".nv-check-box");A.each(function(a,b){d3.select(this).selectAll("path").attr("stroke",q(a,b))})}z.append("text").attr("text-anchor","start").attr("class","nv-legend-text").attr("dy",".32em").attr("dx","8");var B=y.select("text.nv-legend-text");y.on("mouseover",function(a,b){n.legendMouseover(a,b)}).on("mouseout",function(a,b){n.legendMouseout(a,b)}).on("click",function(a,b){n.legendClick(a,b);var c=y.data();if(k){if("classic"==o)l?(c.forEach(function(a){a.disabled=!0}),a.disabled=!1):(a.disabled=!a.disabled,c.every(function(a){return a.disabled})&&c.forEach(function(a){a.disabled=!1}));else if("furious"==o)if(m)a.disengaged=!a.disengaged,a.userDisabled=void 0==a.userDisabled?!!a.disabled:a.userDisabled,a.disabled=a.disengaged||a.userDisabled;else if(!m){a.disabled=!a.disabled,a.userDisabled=a.disabled;var d=c.filter(function(a){return!a.disengaged});d.every(function(a){return a.userDisabled})&&c.forEach(function(a){a.disabled=a.userDisabled=!1})}n.stateChange({disabled:c.map(function(a){return!!a.disabled}),disengaged:c.map(function(a){return!!a.disengaged})})}}).on("dblclick",function(a,b){if(("furious"!=o||!m)&&(n.legendDblclick(a,b),k)){var c=y.data();c.forEach(function(a){a.disabled=!0,"furious"==o&&(a.userDisabled=a.disabled)}),a.disabled=!1,"furious"==o&&(a.userDisabled=a.disabled),n.stateChange({disabled:c.map(function(a){return!!a.disabled})})}}),y.classed("nv-disabled",function(a){return a.userDisabled}),y.exit().remove(),B.attr("fill",q).text(f);var C=0;if(h){var D=[];y.each(function(){var b,c=d3.select(this).select("text");try{if(b=c.node().getComputedTextLength(),0>=b)throw Error()}catch(d){b=a.utils.calcApproxTextWidth(c)}D.push(b+i)});var E=0,F=[];for(C=0;g>C&&E<D.length;)F[E]=D[E],C+=D[E++];for(0===E&&(E=1);C>g&&E>1;){F=[],E--;for(var G=0;G<D.length;G++)D[G]>(F[G%E]||0)&&(F[G%E]=D[G]);C=F.reduce(function(a,b){return a+b})}for(var H=[],I=0,J=0;E>I;I++)H[I]=J,J+=F[I];y.attr("transform",function(a,b){return"translate("+H[b%E]+","+(5+Math.floor(b/E)*x)+")"}),j?v.attr("transform","translate("+(d-c.right-C)+","+c.top+")"):v.attr("transform","translate(0,"+c.top+")"),e=c.top+c.bottom+Math.ceil(D.length/E)*x}else{var K,L=5,M=5,N=0;y.attr("transform",function(){var a=d3.select(this).select("text").node().getComputedTextLength()+i;return K=M,d<c.left+c.right+K+a&&(M=K=5,L+=x),M+=a,M>N&&(N=M),K+N>C&&(C=K+N),"translate("+K+","+L+")"}),v.attr("transform","translate("+(d-c.right-N)+","+c.top+")"),e=c.top+c.bottom+L+15}if("furious"==o){w.attr("width",function(a,b){return B[0][b].getComputedTextLength()+27}).attr("height",18).attr("y",-9).attr("x",-15),u.insert("rect",":first-child").attr("class","nv-legend-bg").attr("fill","#eee").attr("opacity",0);var O=v.select(".nv-legend-bg");O.transition().duration(300).attr("x",-x).attr("width",C+x-12).attr("height",e+10).attr("y",-c.top-10).attr("opacity",m?1:0)}w.style("fill",r).style("fill-opacity",s).style("stroke",r)}),b}var c={top:5,right:0,bottom:5,left:0},d=400,e=20,f=function(a){return a.key},g=a.utils.getColor(),h=!0,i=32,j=!0,k=!0,l=!1,m=!1,n=d3.dispatch("legendClick","legendDblclick","legendMouseover","legendMouseout","stateChange"),o="classic";return b.dispatch=n,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return d},set:function(a){d=a}},height:{get:function(){return e},set:function(a){e=a}},key:{get:function(){return f},set:function(a){f=a}},align:{get:function(){return h},set:function(a){h=a}},rightAlign:{get:function(){return j},set:function(a){j=a}},padding:{get:function(){return i},set:function(a){i=a}},updateState:{get:function(){return k},set:function(a){k=a}},radioButtonMode:{get:function(){return l},set:function(a){l=a}},expanded:{get:function(){return m},set:function(a){m=a}},vers:{get:function(){return o},set:function(a){o=a}},margin:{get:function(){return c},set:function(a){c.top=void 0!==a.top?a.top:c.top,c.right=void 0!==a.right?a.right:c.right,c.bottom=void 0!==a.bottom?a.bottom:c.bottom,c.left=void 0!==a.left?a.left:c.left}},color:{get:function(){return g},set:function(b){g=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.line=function(){"use strict";function b(r){return v.reset(),v.models(e),r.each(function(b){i=d3.select(this);var r=a.utils.availableWidth(g,i,f),s=a.utils.availableHeight(h,i,f);a.utils.initSVG(i),c=e.xScale(),d=e.yScale(),t=t||c,u=u||d;var w=i.selectAll("g.nv-wrap.nv-line").data([b]),x=w.enter().append("g").attr("class","nvd3 nv-wrap nv-line"),y=x.append("defs"),z=x.append("g"),A=w.select("g");z.append("g").attr("class","nv-groups"),z.append("g").attr("class","nv-scatterWrap"),w.attr("transform","translate("+f.left+","+f.top+")"),e.width(r).height(s);var B=w.select(".nv-scatterWrap");B.call(e),y.append("clipPath").attr("id","nv-edge-clip-"+e.id()).append("rect"),w.select("#nv-edge-clip-"+e.id()+" rect").attr("width",r).attr("height",s>0?s:0),A.attr("clip-path",p?"url(#nv-edge-clip-"+e.id()+")":""),B.attr("clip-path",p?"url(#nv-edge-clip-"+e.id()+")":"");var C=w.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a){return a.key});C.enter().append("g").style("stroke-opacity",1e-6).style("stroke-width",function(a){return a.strokeWidth||j}).style("fill-opacity",1e-6),C.exit().remove(),C.attr("class",function(a,b){return(a.classed||"")+" nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}).style("fill",function(a,b){return k(a,b)}).style("stroke",function(a,b){return k(a,b)}),C.watchTransition(v,"line: groups").style("stroke-opacity",1).style("fill-opacity",function(a){return a.fillOpacity||.5});var D=C.selectAll("path.nv-area").data(function(a){return o(a)?[a]:[]});D.enter().append("path").attr("class","nv-area").attr("d",function(b){return d3.svg.area().interpolate(q).defined(n).x(function(b,c){return a.utils.NaNtoZero(t(l(b,c)))}).y0(function(b,c){return a.utils.NaNtoZero(u(m(b,c)))}).y1(function(){return u(d.domain()[0]<=0?d.domain()[1]>=0?0:d.domain()[1]:d.domain()[0])}).apply(this,[b.values])}),C.exit().selectAll("path.nv-area").remove(),D.watchTransition(v,"line: areaPaths").attr("d",function(b){return d3.svg.area().interpolate(q).defined(n).x(function(b,d){return a.utils.NaNtoZero(c(l(b,d)))}).y0(function(b,c){return a.utils.NaNtoZero(d(m(b,c)))}).y1(function(){return d(d.domain()[0]<=0?d.domain()[1]>=0?0:d.domain()[1]:d.domain()[0])}).apply(this,[b.values])});var E=C.selectAll("path.nv-line").data(function(a){return[a.values]});E.enter().append("path").attr("class","nv-line").attr("d",d3.svg.line().interpolate(q).defined(n).x(function(b,c){return a.utils.NaNtoZero(t(l(b,c)))}).y(function(b,c){return a.utils.NaNtoZero(u(m(b,c)))})),E.watchTransition(v,"line: linePaths").attr("d",d3.svg.line().interpolate(q).defined(n).x(function(b,d){return a.utils.NaNtoZero(c(l(b,d)))}).y(function(b,c){return a.utils.NaNtoZero(d(m(b,c)))})),t=c.copy(),u=d.copy()}),v.renderEnd("line immediate"),b}var c,d,e=a.models.scatter(),f={top:0,right:0,bottom:0,left:0},g=960,h=500,i=null,j=1.5,k=a.utils.defaultColor(),l=function(a){return a.x},m=function(a){return a.y},n=function(a,b){return!isNaN(m(a,b))&&null!==m(a,b)},o=function(a){return a.area},p=!1,q="linear",r=250,s=d3.dispatch("elementClick","elementMouseover","elementMouseout","renderEnd");e.pointSize(16).pointDomain([16,256]);var t,u,v=a.utils.renderWatch(s,r);return b.dispatch=s,b.scatter=e,e.dispatch.on("elementClick",function(){s.elementClick.apply(this,arguments)}),e.dispatch.on("elementMouseover",function(){s.elementMouseover.apply(this,arguments)}),e.dispatch.on("elementMouseout",function(){s.elementMouseout.apply(this,arguments)}),b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return g},set:function(a){g=a}},height:{get:function(){return h},set:function(a){h=a}},defined:{get:function(){return n},set:function(a){n=a}},interpolate:{get:function(){return q},set:function(a){q=a}},clipEdge:{get:function(){return p},set:function(a){p=a}},margin:{get:function(){return f},set:function(a){f.top=void 0!==a.top?a.top:f.top,f.right=void 0!==a.right?a.right:f.right,f.bottom=void 0!==a.bottom?a.bottom:f.bottom,f.left=void 0!==a.left?a.left:f.left}},duration:{get:function(){return r},set:function(a){r=a,v.reset(r),e.duration(r)}},isArea:{get:function(){return o},set:function(a){o=d3.functor(a)}},x:{get:function(){return l},set:function(a){l=a,e.x(a)}},y:{get:function(){return m},set:function(a){m=a,e.y(a)}},color:{get:function(){return k},set:function(b){k=a.utils.getColor(b),e.color(k)}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.lineChart=function(){"use strict";function b(j){return y.reset(),y.models(e),p&&y.models(f),q&&y.models(g),j.each(function(j){var v=d3.select(this),y=this;a.utils.initSVG(v);var B=a.utils.availableWidth(m,v,k),C=a.utils.availableHeight(n,v,k);if(b.update=function(){0===x?v.call(b):v.transition().duration(x).call(b)},b.container=this,t.setter(A(j),b.update).getter(z(j)).update(),t.disabled=j.map(function(a){return!!a.disabled}),!u){var D;u={};for(D in t)u[D]=t[D]instanceof Array?t[D].slice(0):t[D]
-}if(!(j&&j.length&&j.filter(function(a){return a.values.length}).length))return a.utils.noData(b,v),b;v.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale();var E=v.selectAll("g.nv-wrap.nv-lineChart").data([j]),F=E.enter().append("g").attr("class","nvd3 nv-wrap nv-lineChart").append("g"),G=E.select("g");F.append("rect").style("opacity",0),F.append("g").attr("class","nv-x nv-axis"),F.append("g").attr("class","nv-y nv-axis"),F.append("g").attr("class","nv-linesWrap"),F.append("g").attr("class","nv-legendWrap"),F.append("g").attr("class","nv-interactive"),G.select("rect").attr("width",B).attr("height",C>0?C:0),o&&(h.width(B),G.select(".nv-legendWrap").datum(j).call(h),k.top!=h.height()&&(k.top=h.height(),C=a.utils.availableHeight(n,v,k)),E.select(".nv-legendWrap").attr("transform","translate(0,"+-k.top+")")),E.attr("transform","translate("+k.left+","+k.top+")"),r&&G.select(".nv-y.nv-axis").attr("transform","translate("+B+",0)"),s&&(i.width(B).height(C).margin({left:k.left,top:k.top}).svgContainer(v).xScale(c),E.select(".nv-interactive").call(i)),e.width(B).height(C).color(j.map(function(a,b){return a.color||l(a,b)}).filter(function(a,b){return!j[b].disabled}));var H=G.select(".nv-linesWrap").datum(j.filter(function(a){return!a.disabled}));H.call(e),p&&(f.scale(c)._ticks(a.utils.calcTicksX(B/100,j)).tickSize(-C,0),G.select(".nv-x.nv-axis").attr("transform","translate(0,"+d.range()[0]+")"),G.select(".nv-x.nv-axis").call(f)),q&&(g.scale(d)._ticks(a.utils.calcTicksY(C/36,j)).tickSize(-B,0),G.select(".nv-y.nv-axis").call(g)),h.dispatch.on("stateChange",function(a){for(var c in a)t[c]=a[c];w.stateChange(t),b.update()}),i.dispatch.on("elementMousemove",function(c){e.clearHighlights();var d,h,m,n=[];if(j.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(f,g){h=a.interactiveBisect(f.values,c.pointXValue,b.x());var i=f.values[h],j=b.y()(i,h);null!=j&&e.highlightPoint(g,h,!0),void 0!==i&&(void 0===d&&(d=i),void 0===m&&(m=b.xScale()(b.x()(i,h))),n.push({key:f.key,value:j,color:l(f,f.seriesIndex)}))}),n.length>2){var o=b.yScale().invert(c.mouseY),p=Math.abs(b.yScale().domain()[0]-b.yScale().domain()[1]),q=.03*p,r=a.nearestValueIndex(n.map(function(a){return a.value}),o,q);null!==r&&(n[r].highlight=!0)}var s=f.tickFormat()(b.x()(d,h));i.tooltip.position({left:c.mouseX+k.left,top:c.mouseY+k.top}).chartContainer(y.parentNode).valueFormatter(function(a){return null==a?"N/A":g.tickFormat()(a)}).data({value:s,index:h,series:n})(),i.renderGuideLine(m)}),i.dispatch.on("elementClick",function(c){var d,f=[];j.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(e){var g=a.interactiveBisect(e.values,c.pointXValue,b.x()),h=e.values[g];if("undefined"!=typeof h){"undefined"==typeof d&&(d=b.xScale()(b.x()(h,g)));var i=b.yScale()(b.y()(h,g));f.push({point:h,pointIndex:g,pos:[d,i],seriesIndex:e.seriesIndex,series:e})}}),e.dispatch.elementClick(f)}),i.dispatch.on("elementMouseout",function(){e.clearHighlights()}),w.on("changeState",function(a){"undefined"!=typeof a.disabled&&j.length===a.disabled.length&&(j.forEach(function(b,c){b.disabled=a.disabled[c]}),t.disabled=a.disabled),b.update()})}),y.renderEnd("lineChart immediate"),b}var c,d,e=a.models.line(),f=a.models.axis(),g=a.models.axis(),h=a.models.legend(),i=a.interactiveGuideline(),j=a.models.tooltip(),k={top:30,right:20,bottom:50,left:60},l=a.utils.defaultColor(),m=null,n=null,o=!0,p=!0,q=!0,r=!1,s=!1,t=a.utils.state(),u=null,v=null,w=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState","renderEnd"),x=250;f.orient("bottom").tickPadding(7),g.orient(r?"right":"left"),j.valueFormatter(function(a,b){return g.tickFormat()(a,b)}).headerFormatter(function(a,b){return f.tickFormat()(a,b)});var y=a.utils.renderWatch(w,x),z=function(a){return function(){return{active:a.map(function(a){return!a.disabled})}}},A=function(a){return function(b){void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return e.dispatch.on("elementMouseover.tooltip",function(a){j.data(a).position(a.pos).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(){j.hidden(!0)}),b.dispatch=w,b.lines=e,b.legend=h,b.xAxis=f,b.yAxis=g,b.interactiveLayer=i,b.tooltip=j,b.dispatch=w,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return m},set:function(a){m=a}},height:{get:function(){return n},set:function(a){n=a}},showLegend:{get:function(){return o},set:function(a){o=a}},showXAxis:{get:function(){return p},set:function(a){p=a}},showYAxis:{get:function(){return q},set:function(a){q=a}},defaultState:{get:function(){return u},set:function(a){u=a}},noData:{get:function(){return v},set:function(a){v=a}},tooltips:{get:function(){return j.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),j.enabled(!!b)}},tooltipContent:{get:function(){return j.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),j.contentGenerator(b)}},margin:{get:function(){return k},set:function(a){k.top=void 0!==a.top?a.top:k.top,k.right=void 0!==a.right?a.right:k.right,k.bottom=void 0!==a.bottom?a.bottom:k.bottom,k.left=void 0!==a.left?a.left:k.left}},duration:{get:function(){return x},set:function(a){x=a,y.reset(x),e.duration(x),f.duration(x),g.duration(x)}},color:{get:function(){return l},set:function(b){l=a.utils.getColor(b),h.color(l),e.color(l)}},rightAlignYAxis:{get:function(){return r},set:function(a){r=a,g.orient(r?"right":"left")}},useInteractiveGuideline:{get:function(){return s},set:function(a){s=a,s&&(e.interactive(!1),e.useVoronoi(!1))}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.linePlusBarChart=function(){"use strict";function b(v){return v.each(function(v){function J(a){var b=+("e"==a),c=b?1:-1,d=X/3;return"M"+.5*c+","+d+"A6,6 0 0 "+b+" "+6.5*c+","+(d+6)+"V"+(2*d-6)+"A6,6 0 0 "+b+" "+.5*c+","+2*d+"ZM"+2.5*c+","+(d+8)+"V"+(2*d-8)+"M"+4.5*c+","+(d+8)+"V"+(2*d-8)}function S(){u.empty()||u.extent(I),kb.data([u.empty()?e.domain():I]).each(function(a){var b=e(a[0])-e.range()[0],c=e.range()[1]-e(a[1]);d3.select(this).select(".left").attr("width",0>b?0:b),d3.select(this).select(".right").attr("x",e(a[1])).attr("width",0>c?0:c)})}function T(){I=u.empty()?null:u.extent(),c=u.empty()?e.domain():u.extent(),K.brush({extent:c,brush:u}),S(),l.width(V).height(W).color(v.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!v[b].disabled&&v[b].bar})),j.width(V).height(W).color(v.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!v[b].disabled&&!v[b].bar}));var b=db.select(".nv-focus .nv-barsWrap").datum(Z.length?Z.map(function(a){return{key:a.key,values:a.values.filter(function(a,b){return l.x()(a,b)>=c[0]&&l.x()(a,b)<=c[1]})}}):[{values:[]}]),h=db.select(".nv-focus .nv-linesWrap").datum($[0].disabled?[{values:[]}]:$.map(function(a){return{area:a.area,fillOpacity:a.fillOpacity,key:a.key,values:a.values.filter(function(a,b){return j.x()(a,b)>=c[0]&&j.x()(a,b)<=c[1]})}}));d=Z.length?l.xScale():j.xScale(),n.scale(d)._ticks(a.utils.calcTicksX(V/100,v)).tickSize(-W,0),n.domain([Math.ceil(c[0]),Math.floor(c[1])]),db.select(".nv-x.nv-axis").transition().duration(L).call(n),b.transition().duration(L).call(l),h.transition().duration(L).call(j),db.select(".nv-focus .nv-x.nv-axis").attr("transform","translate(0,"+f.range()[0]+")"),p.scale(f)._ticks(a.utils.calcTicksY(W/36,v)).tickSize(-V,0),q.scale(g)._ticks(a.utils.calcTicksY(W/36,v)).tickSize(Z.length?0:-V,0),db.select(".nv-focus .nv-y1.nv-axis").style("opacity",Z.length?1:0),db.select(".nv-focus .nv-y2.nv-axis").style("opacity",$.length&&!$[0].disabled?1:0).attr("transform","translate("+d.range()[1]+",0)"),db.select(".nv-focus .nv-y1.nv-axis").transition().duration(L).call(p),db.select(".nv-focus .nv-y2.nv-axis").transition().duration(L).call(q)}var U=d3.select(this);a.utils.initSVG(U);var V=a.utils.availableWidth(y,U,w),W=a.utils.availableHeight(z,U,w)-(E?H:0),X=H-x.top-x.bottom;if(b.update=function(){U.transition().duration(L).call(b)},b.container=this,M.setter(R(v),b.update).getter(Q(v)).update(),M.disabled=v.map(function(a){return!!a.disabled}),!N){var Y;N={};for(Y in M)N[Y]=M[Y]instanceof Array?M[Y].slice(0):M[Y]}if(!(v&&v.length&&v.filter(function(a){return a.values.length}).length))return a.utils.noData(b,U),b;U.selectAll(".nv-noData").remove();var Z=v.filter(function(a){return!a.disabled&&a.bar}),$=v.filter(function(a){return!a.bar});d=l.xScale(),e=o.scale(),f=l.yScale(),g=j.yScale(),h=m.yScale(),i=k.yScale();var _=v.filter(function(a){return!a.disabled&&a.bar}).map(function(a){return a.values.map(function(a,b){return{x:A(a,b),y:B(a,b)}})}),ab=v.filter(function(a){return!a.disabled&&!a.bar}).map(function(a){return a.values.map(function(a,b){return{x:A(a,b),y:B(a,b)}})});d.range([0,V]),e.domain(d3.extent(d3.merge(_.concat(ab)),function(a){return a.x})).range([0,V]);var bb=U.selectAll("g.nv-wrap.nv-linePlusBar").data([v]),cb=bb.enter().append("g").attr("class","nvd3 nv-wrap nv-linePlusBar").append("g"),db=bb.select("g");cb.append("g").attr("class","nv-legendWrap");var eb=cb.append("g").attr("class","nv-focus");eb.append("g").attr("class","nv-x nv-axis"),eb.append("g").attr("class","nv-y1 nv-axis"),eb.append("g").attr("class","nv-y2 nv-axis"),eb.append("g").attr("class","nv-barsWrap"),eb.append("g").attr("class","nv-linesWrap");var fb=cb.append("g").attr("class","nv-context");if(fb.append("g").attr("class","nv-x nv-axis"),fb.append("g").attr("class","nv-y1 nv-axis"),fb.append("g").attr("class","nv-y2 nv-axis"),fb.append("g").attr("class","nv-barsWrap"),fb.append("g").attr("class","nv-linesWrap"),fb.append("g").attr("class","nv-brushBackground"),fb.append("g").attr("class","nv-x nv-brush"),D){var gb=t.align()?V/2:V,hb=t.align()?gb:0;t.width(gb),db.select(".nv-legendWrap").datum(v.map(function(a){return a.originalKey=void 0===a.originalKey?a.key:a.originalKey,a.key=a.originalKey+(a.bar?O:P),a})).call(t),w.top!=t.height()&&(w.top=t.height(),W=a.utils.availableHeight(z,U,w)-H),db.select(".nv-legendWrap").attr("transform","translate("+hb+","+-w.top+")")}bb.attr("transform","translate("+w.left+","+w.top+")"),db.select(".nv-context").style("display",E?"initial":"none"),m.width(V).height(X).color(v.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!v[b].disabled&&v[b].bar})),k.width(V).height(X).color(v.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!v[b].disabled&&!v[b].bar}));var ib=db.select(".nv-context .nv-barsWrap").datum(Z.length?Z:[{values:[]}]),jb=db.select(".nv-context .nv-linesWrap").datum($[0].disabled?[{values:[]}]:$);db.select(".nv-context").attr("transform","translate(0,"+(W+w.bottom+x.top)+")"),ib.transition().call(m),jb.transition().call(k),G&&(o._ticks(a.utils.calcTicksX(V/100,v)).tickSize(-X,0),db.select(".nv-context .nv-x.nv-axis").attr("transform","translate(0,"+h.range()[0]+")"),db.select(".nv-context .nv-x.nv-axis").transition().call(o)),F&&(r.scale(h)._ticks(X/36).tickSize(-V,0),s.scale(i)._ticks(X/36).tickSize(Z.length?0:-V,0),db.select(".nv-context .nv-y3.nv-axis").style("opacity",Z.length?1:0).attr("transform","translate(0,"+e.range()[0]+")"),db.select(".nv-context .nv-y2.nv-axis").style("opacity",$.length?1:0).attr("transform","translate("+e.range()[1]+",0)"),db.select(".nv-context .nv-y1.nv-axis").transition().call(r),db.select(".nv-context .nv-y2.nv-axis").transition().call(s)),u.x(e).on("brush",T),I&&u.extent(I);var kb=db.select(".nv-brushBackground").selectAll("g").data([I||u.extent()]),lb=kb.enter().append("g");lb.append("rect").attr("class","left").attr("x",0).attr("y",0).attr("height",X),lb.append("rect").attr("class","right").attr("x",0).attr("y",0).attr("height",X);var mb=db.select(".nv-x.nv-brush").call(u);mb.selectAll("rect").attr("height",X),mb.selectAll(".resize").append("path").attr("d",J),t.dispatch.on("stateChange",function(a){for(var c in a)M[c]=a[c];K.stateChange(M),b.update()}),K.on("changeState",function(a){"undefined"!=typeof a.disabled&&(v.forEach(function(b,c){b.disabled=a.disabled[c]}),M.disabled=a.disabled),b.update()}),T()}),b}var c,d,e,f,g,h,i,j=a.models.line(),k=a.models.line(),l=a.models.historicalBar(),m=a.models.historicalBar(),n=a.models.axis(),o=a.models.axis(),p=a.models.axis(),q=a.models.axis(),r=a.models.axis(),s=a.models.axis(),t=a.models.legend(),u=d3.svg.brush(),v=a.models.tooltip(),w={top:30,right:30,bottom:30,left:60},x={top:0,right:30,bottom:20,left:60},y=null,z=null,A=function(a){return a.x},B=function(a){return a.y},C=a.utils.defaultColor(),D=!0,E=!0,F=!1,G=!0,H=50,I=null,J=null,K=d3.dispatch("brush","stateChange","changeState"),L=0,M=a.utils.state(),N=null,O=" (left axis)",P=" (right axis)";j.clipEdge(!0),k.interactive(!1),k.pointActive(function(){return!1}),n.orient("bottom").tickPadding(5),p.orient("left"),q.orient("right"),o.orient("bottom").tickPadding(5),r.orient("left"),s.orient("right"),v.headerEnabled(!0).headerFormatter(function(a,b){return n.tickFormat()(a,b)});var Q=function(a){return function(){return{active:a.map(function(a){return!a.disabled})}}},R=function(a){return function(b){void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return j.dispatch.on("elementMouseover.tooltip",function(a){v.duration(100).valueFormatter(function(a,b){return q.tickFormat()(a,b)}).data(a).position(a.pos).hidden(!1)}),j.dispatch.on("elementMouseout.tooltip",function(){v.hidden(!0)}),l.dispatch.on("elementMouseover.tooltip",function(a){a.value=b.x()(a.data),a.series={value:b.y()(a.data),color:a.color},v.duration(0).valueFormatter(function(a,b){return p.tickFormat()(a,b)}).data(a).hidden(!1)}),l.dispatch.on("elementMouseout.tooltip",function(){v.hidden(!0)}),l.dispatch.on("elementMousemove.tooltip",function(){v.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=K,b.legend=t,b.lines=j,b.lines2=k,b.bars=l,b.bars2=m,b.xAxis=n,b.x2Axis=o,b.y1Axis=p,b.y2Axis=q,b.y3Axis=r,b.y4Axis=s,b.tooltip=v,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return y},set:function(a){y=a}},height:{get:function(){return z},set:function(a){z=a}},showLegend:{get:function(){return D},set:function(a){D=a}},brushExtent:{get:function(){return I},set:function(a){I=a}},noData:{get:function(){return J},set:function(a){J=a}},focusEnable:{get:function(){return E},set:function(a){E=a}},focusHeight:{get:function(){return H},set:function(a){H=a}},focusShowAxisX:{get:function(){return G},set:function(a){G=a}},focusShowAxisY:{get:function(){return F},set:function(a){F=a}},legendLeftAxisHint:{get:function(){return O},set:function(a){O=a}},legendRightAxisHint:{get:function(){return P},set:function(a){P=a}},tooltips:{get:function(){return v.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),v.enabled(!!b)}},tooltipContent:{get:function(){return v.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),v.contentGenerator(b)}},margin:{get:function(){return w},set:function(a){w.top=void 0!==a.top?a.top:w.top,w.right=void 0!==a.right?a.right:w.right,w.bottom=void 0!==a.bottom?a.bottom:w.bottom,w.left=void 0!==a.left?a.left:w.left}},focusMargin:{get:function(){return x},set:function(a){x.top=void 0!==a.top?a.top:x.top,x.right=void 0!==a.right?a.right:x.right,x.bottom=void 0!==a.bottom?a.bottom:x.bottom,x.left=void 0!==a.left?a.left:x.left}},duration:{get:function(){return L},set:function(a){L=a}},color:{get:function(){return C},set:function(b){C=a.utils.getColor(b),t.color(C)}},x:{get:function(){return A},set:function(a){A=a,j.x(a),k.x(a),l.x(a),m.x(a)}},y:{get:function(){return B},set:function(a){B=a,j.y(a),k.y(a),l.y(a),m.y(a)}}}),a.utils.inheritOptions(b,j),a.utils.initOptions(b),b},a.models.lineWithFocusChart=function(){"use strict";function b(o){return o.each(function(o){function z(a){var b=+("e"==a),c=b?1:-1,d=M/3;return"M"+.5*c+","+d+"A6,6 0 0 "+b+" "+6.5*c+","+(d+6)+"V"+(2*d-6)+"A6,6 0 0 "+b+" "+.5*c+","+2*d+"ZM"+2.5*c+","+(d+8)+"V"+(2*d-8)+"M"+4.5*c+","+(d+8)+"V"+(2*d-8)}function G(){n.empty()||n.extent(y),U.data([n.empty()?e.domain():y]).each(function(a){var b=e(a[0])-c.range()[0],d=K-e(a[1]);d3.select(this).select(".left").attr("width",0>b?0:b),d3.select(this).select(".right").attr("x",e(a[1])).attr("width",0>d?0:d)})}function H(){y=n.empty()?null:n.extent();var a=n.empty()?e.domain():n.extent();if(!(Math.abs(a[0]-a[1])<=1)){A.brush({extent:a,brush:n}),G();var b=Q.select(".nv-focus .nv-linesWrap").datum(o.filter(function(a){return!a.disabled}).map(function(b){return{key:b.key,area:b.area,values:b.values.filter(function(b,c){return g.x()(b,c)>=a[0]&&g.x()(b,c)<=a[1]})}}));b.transition().duration(B).call(g),Q.select(".nv-focus .nv-x.nv-axis").transition().duration(B).call(i),Q.select(".nv-focus .nv-y.nv-axis").transition().duration(B).call(j)}}var I=d3.select(this),J=this;a.utils.initSVG(I);var K=a.utils.availableWidth(t,I,q),L=a.utils.availableHeight(u,I,q)-v,M=v-r.top-r.bottom;if(b.update=function(){I.transition().duration(B).call(b)},b.container=this,C.setter(F(o),b.update).getter(E(o)).update(),C.disabled=o.map(function(a){return!!a.disabled}),!D){var N;D={};for(N in C)D[N]=C[N]instanceof Array?C[N].slice(0):C[N]}if(!(o&&o.length&&o.filter(function(a){return a.values.length}).length))return a.utils.noData(b,I),b;I.selectAll(".nv-noData").remove(),c=g.xScale(),d=g.yScale(),e=h.xScale(),f=h.yScale();var O=I.selectAll("g.nv-wrap.nv-lineWithFocusChart").data([o]),P=O.enter().append("g").attr("class","nvd3 nv-wrap nv-lineWithFocusChart").append("g"),Q=O.select("g");P.append("g").attr("class","nv-legendWrap");var R=P.append("g").attr("class","nv-focus");R.append("g").attr("class","nv-x nv-axis"),R.append("g").attr("class","nv-y nv-axis"),R.append("g").attr("class","nv-linesWrap"),R.append("g").attr("class","nv-interactive");var S=P.append("g").attr("class","nv-context");S.append("g").attr("class","nv-x nv-axis"),S.append("g").attr("class","nv-y nv-axis"),S.append("g").attr("class","nv-linesWrap"),S.append("g").attr("class","nv-brushBackground"),S.append("g").attr("class","nv-x nv-brush"),x&&(m.width(K),Q.select(".nv-legendWrap").datum(o).call(m),q.top!=m.height()&&(q.top=m.height(),L=a.utils.availableHeight(u,I,q)-v),Q.select(".nv-legendWrap").attr("transform","translate(0,"+-q.top+")")),O.attr("transform","translate("+q.left+","+q.top+")"),w&&(p.width(K).height(L).margin({left:q.left,top:q.top}).svgContainer(I).xScale(c),O.select(".nv-interactive").call(p)),g.width(K).height(L).color(o.map(function(a,b){return a.color||s(a,b)}).filter(function(a,b){return!o[b].disabled})),h.defined(g.defined()).width(K).height(M).color(o.map(function(a,b){return a.color||s(a,b)}).filter(function(a,b){return!o[b].disabled})),Q.select(".nv-context").attr("transform","translate(0,"+(L+q.bottom+r.top)+")");var T=Q.select(".nv-context .nv-linesWrap").datum(o.filter(function(a){return!a.disabled}));d3.transition(T).call(h),i.scale(c)._ticks(a.utils.calcTicksX(K/100,o)).tickSize(-L,0),j.scale(d)._ticks(a.utils.calcTicksY(L/36,o)).tickSize(-K,0),Q.select(".nv-focus .nv-x.nv-axis").attr("transform","translate(0,"+L+")"),n.x(e).on("brush",function(){H()}),y&&n.extent(y);var U=Q.select(".nv-brushBackground").selectAll("g").data([y||n.extent()]),V=U.enter().append("g");V.append("rect").attr("class","left").attr("x",0).attr("y",0).attr("height",M),V.append("rect").attr("class","right").attr("x",0).attr("y",0).attr("height",M);var W=Q.select(".nv-x.nv-brush").call(n);W.selectAll("rect").attr("height",M),W.selectAll(".resize").append("path").attr("d",z),H(),k.scale(e)._ticks(a.utils.calcTicksX(K/100,o)).tickSize(-M,0),Q.select(".nv-context .nv-x.nv-axis").attr("transform","translate(0,"+f.range()[0]+")"),d3.transition(Q.select(".nv-context .nv-x.nv-axis")).call(k),l.scale(f)._ticks(a.utils.calcTicksY(M/36,o)).tickSize(-K,0),d3.transition(Q.select(".nv-context .nv-y.nv-axis")).call(l),Q.select(".nv-context .nv-x.nv-axis").attr("transform","translate(0,"+f.range()[0]+")"),m.dispatch.on("stateChange",function(a){for(var c in a)C[c]=a[c];A.stateChange(C),b.update()}),p.dispatch.on("elementMousemove",function(c){g.clearHighlights();var d,f,h,k=[];if(o.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(i,j){var l=n.empty()?e.domain():n.extent(),m=i.values.filter(function(a,b){return g.x()(a,b)>=l[0]&&g.x()(a,b)<=l[1]});f=a.interactiveBisect(m,c.pointXValue,g.x());var o=m[f],p=b.y()(o,f);null!=p&&g.highlightPoint(j,f,!0),void 0!==o&&(void 0===d&&(d=o),void 0===h&&(h=b.xScale()(b.x()(o,f))),k.push({key:i.key,value:b.y()(o,f),color:s(i,i.seriesIndex)}))}),k.length>2){var l=b.yScale().invert(c.mouseY),m=Math.abs(b.yScale().domain()[0]-b.yScale().domain()[1]),r=.03*m,t=a.nearestValueIndex(k.map(function(a){return a.value}),l,r);null!==t&&(k[t].highlight=!0)}var u=i.tickFormat()(b.x()(d,f));p.tooltip.position({left:c.mouseX+q.left,top:c.mouseY+q.top}).chartContainer(J.parentNode).valueFormatter(function(a){return null==a?"N/A":j.tickFormat()(a)}).data({value:u,index:f,series:k})(),p.renderGuideLine(h)}),p.dispatch.on("elementMouseout",function(){g.clearHighlights()}),A.on("changeState",function(a){"undefined"!=typeof a.disabled&&o.forEach(function(b,c){b.disabled=a.disabled[c]}),b.update()})}),b}var c,d,e,f,g=a.models.line(),h=a.models.line(),i=a.models.axis(),j=a.models.axis(),k=a.models.axis(),l=a.models.axis(),m=a.models.legend(),n=d3.svg.brush(),o=a.models.tooltip(),p=a.interactiveGuideline(),q={top:30,right:30,bottom:30,left:60},r={top:0,right:30,bottom:20,left:60},s=a.utils.defaultColor(),t=null,u=null,v=50,w=!1,x=!0,y=null,z=null,A=d3.dispatch("brush","stateChange","changeState"),B=250,C=a.utils.state(),D=null;g.clipEdge(!0).duration(0),h.interactive(!1),h.pointActive(function(){return!1}),i.orient("bottom").tickPadding(5),j.orient("left"),k.orient("bottom").tickPadding(5),l.orient("left"),o.valueFormatter(function(a,b){return j.tickFormat()(a,b)}).headerFormatter(function(a,b){return i.tickFormat()(a,b)});var E=function(a){return function(){return{active:a.map(function(a){return!a.disabled})}}},F=function(a){return function(b){void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return g.dispatch.on("elementMouseover.tooltip",function(a){o.data(a).position(a.pos).hidden(!1)}),g.dispatch.on("elementMouseout.tooltip",function(){o.hidden(!0)}),b.dispatch=A,b.legend=m,b.lines=g,b.lines2=h,b.xAxis=i,b.yAxis=j,b.x2Axis=k,b.y2Axis=l,b.interactiveLayer=p,b.tooltip=o,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return t},set:function(a){t=a}},height:{get:function(){return u},set:function(a){u=a}},focusHeight:{get:function(){return v},set:function(a){v=a}},showLegend:{get:function(){return x},set:function(a){x=a}},brushExtent:{get:function(){return y},set:function(a){y=a}},defaultState:{get:function(){return D},set:function(a){D=a}},noData:{get:function(){return z},set:function(a){z=a}},tooltips:{get:function(){return o.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),o.enabled(!!b)}},tooltipContent:{get:function(){return o.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),o.contentGenerator(b)}},margin:{get:function(){return q},set:function(a){q.top=void 0!==a.top?a.top:q.top,q.right=void 0!==a.right?a.right:q.right,q.bottom=void 0!==a.bottom?a.bottom:q.bottom,q.left=void 0!==a.left?a.left:q.left}},focusMargin:{get:function(){return r},set:function(a){r.top=void 0!==a.top?a.top:r.top,r.right=void 0!==a.right?a.right:r.right,r.bottom=void 0!==a.bottom?a.bottom:r.bottom,r.left=void 0!==a.left?a.left:r.left}},color:{get:function(){return s},set:function(b){s=a.utils.getColor(b),m.color(s)}},interpolate:{get:function(){return g.interpolate()},set:function(a){g.interpolate(a),h.interpolate(a)}},xTickFormat:{get:function(){return i.tickFormat()},set:function(a){i.tickFormat(a),k.tickFormat(a)}},yTickFormat:{get:function(){return j.tickFormat()},set:function(a){j.tickFormat(a),l.tickFormat(a)}},duration:{get:function(){return B},set:function(a){B=a,j.duration(B),l.duration(B),i.duration(B),k.duration(B)}},x:{get:function(){return g.x()},set:function(a){g.x(a),h.x(a)}},y:{get:function(){return g.y()},set:function(a){g.y(a),h.y(a)}},useInteractiveGuideline:{get:function(){return w},set:function(a){w=a,w&&(g.interactive(!1),g.useVoronoi(!1))}}}),a.utils.inheritOptions(b,g),a.utils.initOptions(b),b},a.models.multiBar=function(){"use strict";function b(G){return E.reset(),G.each(function(b){var G=k-j.left-j.right,H=l-j.top-j.bottom;p=d3.select(this),a.utils.initSVG(p);var I=0;if(z&&b.length&&(z=[{values:b[0].values.map(function(a){return{x:a.x,y:0,series:a.series,size:.01}})}]),v){var J=d3.layout.stack().offset(w).values(function(a){return a.values}).y(r)(!b.length&&z?z:b);J.forEach(function(a,c){a.nonStackable?(b[c].nonStackableSeries=I++,J[c]=b[c]):c>0&&J[c-1].nonStackable&&J[c].values.map(function(a,b){a.y0-=J[c-1].values[b].y,a.y1=a.y0+a.y})}),b=J}b.forEach(function(a,b){a.values.forEach(function(c){c.series=b,c.key=a.key})}),v&&b[0].values.map(function(a,c){var d=0,e=0;b.map(function(a,f){if(!b[f].nonStackable){var g=a.values[c];g.size=Math.abs(g.y),g.y<0?(g.y1=e,e-=g.size):(g.y1=g.size+d,d+=g.size)}})});var K=d&&e?[]:b.map(function(a,b){return a.values.map(function(a,c){return{x:q(a,c),y:r(a,c),y0:a.y0,y1:a.y1,idx:b,yErr:s(a,c)}})});m.domain(d||d3.merge(K).map(function(a){return a.x})).rangeBands(f||[0,G],C),n.domain(e||d3.extent(d3.merge(d3.merge(K).map(function(a){var c=a.y;v&&!b[a.idx].nonStackable&&(c=a.y>0?a.y1:a.y1+a.y);var d=a.yErr;return d?d.length?[c+d[0],c+d[1]]:(d=Math.abs(d),[c-d,c+d]):[c]})).concat(t))).range(g||[H,0]),m.domain()[0]===m.domain()[1]&&m.domain(m.domain()[0]?[m.domain()[0]-.01*m.domain()[0],m.domain()[1]+.01*m.domain()[1]]:[-1,1]),n.domain()[0]===n.domain()[1]&&n.domain(n.domain()[0]?[n.domain()[0]+.01*n.domain()[0],n.domain()[1]-.01*n.domain()[1]]:[-1,1]),h=h||m,i=i||n;var L=p.selectAll("g.nv-wrap.nv-multibar").data([b]),M=L.enter().append("g").attr("class","nvd3 nv-wrap nv-multibar"),N=M.append("defs"),O=M.append("g"),P=L.select("g");O.append("g").attr("class","nv-groups"),L.attr("transform","translate("+j.left+","+j.top+")"),N.append("clipPath").attr("id","nv-edge-clip-"+o).append("rect"),L.select("#nv-edge-clip-"+o+" rect").attr("width",G).attr("height",H),P.attr("clip-path",u?"url(#nv-edge-clip-"+o+")":"");var Q=L.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a,b){return b});Q.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6);var R=E.transition(Q.exit().selectAll("g.nv-bar"),"multibarExit",Math.min(100,B)).attr("y",function(a){var c=i(0)||0;return v&&b[a.series]&&!b[a.series].nonStackable&&(c=i(a.y0)),c}).attr("height",0).remove();R.delay&&R.delay(function(a,b){var c=b*(B/(F+1))-b;return c}),Q.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}).style("fill",function(a,b){return x(a,b)}).style("stroke",function(a,b){return x(a,b)}),Q.style("stroke-opacity",1).style("fill-opacity",.75);var S=Q.selectAll("g.nv-bar").data(function(a){return z&&!b.length?z.values:a.values});S.exit().remove();var T=S.enter().append("g").attr("class",function(a,b){return r(a,b)<0?"nv-bar negative":"nv-bar positive"}).attr("transform",function(a,c,d){var e=v&&!b[d].nonStackable?0:d*m.rangeBand()/b.length,f=i(v&&!b[d].nonStackable?a.y0:0)||0;return"translate("+e+","+f+")"});T.append("rect").attr("height",0).attr("width",function(a,c,d){return m.rangeBand()/(v&&!b[d].nonStackable?1:b.length)}).style("fill",function(a,b,c){return x(a,c,b)}).style("stroke",function(a,b,c){return x(a,c,b)}),S.on("mouseover",function(a,b){d3.select(this).classed("hover",!0),D.elementMouseover({data:a,index:b,color:d3.select(this).style("fill")})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),D.elementMouseout({data:a,index:b,color:d3.select(this).style("fill")})}).on("mousemove",function(a,b){D.elementMousemove({data:a,index:b,color:d3.select(this).style("fill")})}).on("click",function(a,b){D.elementClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()}).on("dblclick",function(a,b){D.elementDblClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()}),s(b[0].values[0],0)&&(T.append("polyline"),S.select("polyline").attr("fill","none").attr("stroke",function(a,b,c){return y(a,c,b)}).attr("points",function(a,c){var d=s(a,c),e=.8*m.rangeBand()/(2*(v?1:b.length));d=d.length?d:[-Math.abs(d),Math.abs(d)],d=d.map(function(a){return n(a)-n(0)});var f=[[-e,d[0]],[e,d[0]],[0,d[0]],[0,d[1]],[-e,d[1]],[e,d[1]]];return f.map(function(a){return a.join(",")}).join(" ")}).attr("transform",function(a,c){var d=m.rangeBand()/(2*(v?1:b.length)),e=r(a,c)<0?n(r(a,c))-n(0):0;return"translate("+d+", "+e+")"})),S.attr("class",function(a,b){return r(a,b)<0?"nv-bar negative":"nv-bar positive"}),A&&(c||(c=b.map(function(){return!0})),S.select("rect").style("fill",function(a,b,d){return d3.rgb(A(a,b)).darker(c.map(function(a,b){return b}).filter(function(a,b){return!c[b]})[d]).toString()}).style("stroke",function(a,b,d){return d3.rgb(A(a,b)).darker(c.map(function(a,b){return b}).filter(function(a,b){return!c[b]})[d]).toString()}));var U=S.watchTransition(E,"multibar",Math.min(250,B)).delay(function(a,c){return c*B/b[0].values.length});v?U.attr("transform",function(a,c,d){var e=0;e=b[d].nonStackable?r(a,c)<0?n(0):n(0)-n(r(a,c))<-1?n(0)-1:n(r(a,c))||0:n(a.y1);var f=0;b[d].nonStackable&&(f=a.series*m.rangeBand()/b.length,b.length!==I&&(f=b[d].nonStackableSeries*m.rangeBand()/(2*I)));var g=f+m(q(a,c));return"translate("+g+","+e+")"}).select("rect").attr("height",function(a,c,d){return b[d].nonStackable?Math.max(Math.abs(n(r(a,c))-n(0)),1)||0:Math.max(Math.abs(n(a.y+a.y0)-n(a.y0)),1)}).attr("width",function(a,c,d){if(b[d].nonStackable){var e=m.rangeBand()/I;return b.length!==I&&(e=m.rangeBand()/(2*I)),e}return m.rangeBand()}):U.attr("transform",function(a,c){var d=a.series*m.rangeBand()/b.length+m(q(a,c)),e=r(a,c)<0?n(0):n(0)-n(r(a,c))<1?n(0)-1:n(r(a,c))||0;return"translate("+d+","+e+")"}).select("rect").attr("width",m.rangeBand()/b.length).attr("height",function(a,b){return Math.max(Math.abs(n(r(a,b))-n(0)),1)||0}),h=m.copy(),i=n.copy(),b[0]&&b[0].values&&(F=b[0].values.length)}),E.renderEnd("multibar immediate"),b}var c,d,e,f,g,h,i,j={top:0,right:0,bottom:0,left:0},k=960,l=500,m=d3.scale.ordinal(),n=d3.scale.linear(),o=Math.floor(1e4*Math.random()),p=null,q=function(a){return a.x},r=function(a){return a.y},s=function(a){return a.yErr},t=[0],u=!0,v=!1,w="zero",x=a.utils.defaultColor(),y=a.utils.defaultColor(),z=!1,A=null,B=500,C=.1,D=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove","renderEnd"),E=a.utils.renderWatch(D,B),F=0;return b.dispatch=D,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return k},set:function(a){k=a}},height:{get:function(){return l},set:function(a){l=a}},x:{get:function(){return q},set:function(a){q=a}},y:{get:function(){return r},set:function(a){r=a}},yErr:{get:function(){return s},set:function(a){s=a}},xScale:{get:function(){return m},set:function(a){m=a}},yScale:{get:function(){return n},set:function(a){n=a}},xDomain:{get:function(){return d},set:function(a){d=a}},yDomain:{get:function(){return e},set:function(a){e=a}},xRange:{get:function(){return f},set:function(a){f=a}},yRange:{get:function(){return g},set:function(a){g=a}},forceY:{get:function(){return t},set:function(a){t=a}},stacked:{get:function(){return v},set:function(a){v=a}},stackOffset:{get:function(){return w},set:function(a){w=a}},clipEdge:{get:function(){return u},set:function(a){u=a}},disabled:{get:function(){return c},set:function(a){c=a}},id:{get:function(){return o},set:function(a){o=a}},hideable:{get:function(){return z
-},set:function(a){z=a}},groupSpacing:{get:function(){return C},set:function(a){C=a}},margin:{get:function(){return j},set:function(a){j.top=void 0!==a.top?a.top:j.top,j.right=void 0!==a.right?a.right:j.right,j.bottom=void 0!==a.bottom?a.bottom:j.bottom,j.left=void 0!==a.left?a.left:j.left}},duration:{get:function(){return B},set:function(a){B=a,E.reset(B)}},color:{get:function(){return x},set:function(b){x=a.utils.getColor(b)}},barColor:{get:function(){return A},set:function(b){A=b?a.utils.getColor(b):null}},errorBarColor:{get:function(){return y},set:function(b){y=b?a.utils.getColor(b):null}}}),a.utils.initOptions(b),b},a.models.multiBarChart=function(){"use strict";function b(j){return D.reset(),D.models(e),r&&D.models(f),s&&D.models(g),j.each(function(j){var z=d3.select(this);a.utils.initSVG(z);var D=a.utils.availableWidth(l,z,k),H=a.utils.availableHeight(m,z,k);if(b.update=function(){0===C?z.call(b):z.transition().duration(C).call(b)},b.container=this,x.setter(G(j),b.update).getter(F(j)).update(),x.disabled=j.map(function(a){return!!a.disabled}),!y){var I;y={};for(I in x)y[I]=x[I]instanceof Array?x[I].slice(0):x[I]}if(!(j&&j.length&&j.filter(function(a){return a.values.length}).length))return a.utils.noData(b,z),b;z.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale();var J=z.selectAll("g.nv-wrap.nv-multiBarWithLegend").data([j]),K=J.enter().append("g").attr("class","nvd3 nv-wrap nv-multiBarWithLegend").append("g"),L=J.select("g");if(K.append("g").attr("class","nv-x nv-axis"),K.append("g").attr("class","nv-y nv-axis"),K.append("g").attr("class","nv-barsWrap"),K.append("g").attr("class","nv-legendWrap"),K.append("g").attr("class","nv-controlsWrap"),q&&(h.width(D-B()),L.select(".nv-legendWrap").datum(j).call(h),k.top!=h.height()&&(k.top=h.height(),H=a.utils.availableHeight(m,z,k)),L.select(".nv-legendWrap").attr("transform","translate("+B()+","+-k.top+")")),o){var M=[{key:p.grouped||"Grouped",disabled:e.stacked()},{key:p.stacked||"Stacked",disabled:!e.stacked()}];i.width(B()).color(["#444","#444","#444"]),L.select(".nv-controlsWrap").datum(M).attr("transform","translate(0,"+-k.top+")").call(i)}J.attr("transform","translate("+k.left+","+k.top+")"),t&&L.select(".nv-y.nv-axis").attr("transform","translate("+D+",0)"),e.disabled(j.map(function(a){return a.disabled})).width(D).height(H).color(j.map(function(a,b){return a.color||n(a,b)}).filter(function(a,b){return!j[b].disabled}));var N=L.select(".nv-barsWrap").datum(j.filter(function(a){return!a.disabled}));if(N.call(e),r){f.scale(c)._ticks(a.utils.calcTicksX(D/100,j)).tickSize(-H,0),L.select(".nv-x.nv-axis").attr("transform","translate(0,"+d.range()[0]+")"),L.select(".nv-x.nv-axis").call(f);var O=L.select(".nv-x.nv-axis > g").selectAll("g");if(O.selectAll("line, text").style("opacity",1),v){var P=function(a,b){return"translate("+a+","+b+")"},Q=5,R=17;O.selectAll("text").attr("transform",function(a,b,c){return P(0,c%2==0?Q:R)});var S=d3.selectAll(".nv-x.nv-axis .nv-wrap g g text")[0].length;L.selectAll(".nv-x.nv-axis .nv-axisMaxMin text").attr("transform",function(a,b){return P(0,0===b||S%2!==0?R:Q)})}u&&O.filter(function(a,b){return b%Math.ceil(j[0].values.length/(D/100))!==0}).selectAll("text, line").style("opacity",0),w&&O.selectAll(".tick text").attr("transform","rotate("+w+" 0,0)").style("text-anchor",w>0?"start":"end"),L.select(".nv-x.nv-axis").selectAll("g.nv-axisMaxMin text").style("opacity",1)}s&&(g.scale(d)._ticks(a.utils.calcTicksY(H/36,j)).tickSize(-D,0),L.select(".nv-y.nv-axis").call(g)),h.dispatch.on("stateChange",function(a){for(var c in a)x[c]=a[c];A.stateChange(x),b.update()}),i.dispatch.on("legendClick",function(a){if(a.disabled){switch(M=M.map(function(a){return a.disabled=!0,a}),a.disabled=!1,a.key){case"Grouped":case p.grouped:e.stacked(!1);break;case"Stacked":case p.stacked:e.stacked(!0)}x.stacked=e.stacked(),A.stateChange(x),b.update()}}),A.on("changeState",function(a){"undefined"!=typeof a.disabled&&(j.forEach(function(b,c){b.disabled=a.disabled[c]}),x.disabled=a.disabled),"undefined"!=typeof a.stacked&&(e.stacked(a.stacked),x.stacked=a.stacked,E=a.stacked),b.update()})}),D.renderEnd("multibarchart immediate"),b}var c,d,e=a.models.multiBar(),f=a.models.axis(),g=a.models.axis(),h=a.models.legend(),i=a.models.legend(),j=a.models.tooltip(),k={top:30,right:20,bottom:50,left:60},l=null,m=null,n=a.utils.defaultColor(),o=!0,p={},q=!0,r=!0,s=!0,t=!1,u=!0,v=!1,w=0,x=a.utils.state(),y=null,z=null,A=d3.dispatch("stateChange","changeState","renderEnd"),B=function(){return o?180:0},C=250;x.stacked=!1,e.stacked(!1),f.orient("bottom").tickPadding(7).showMaxMin(!1).tickFormat(function(a){return a}),g.orient(t?"right":"left").tickFormat(d3.format(",.1f")),j.duration(0).valueFormatter(function(a,b){return g.tickFormat()(a,b)}).headerFormatter(function(a,b){return f.tickFormat()(a,b)}),i.updateState(!1);var D=a.utils.renderWatch(A),E=!1,F=function(a){return function(){return{active:a.map(function(a){return!a.disabled}),stacked:E}}},G=function(a){return function(b){void 0!==b.stacked&&(E=b.stacked),void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return e.dispatch.on("elementMouseover.tooltip",function(a){a.value=b.x()(a.data),a.series={key:a.data.key,value:b.y()(a.data),color:a.color},j.data(a).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(){j.hidden(!0)}),e.dispatch.on("elementMousemove.tooltip",function(){j.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=A,b.multibar=e,b.legend=h,b.controls=i,b.xAxis=f,b.yAxis=g,b.state=x,b.tooltip=j,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return l},set:function(a){l=a}},height:{get:function(){return m},set:function(a){m=a}},showLegend:{get:function(){return q},set:function(a){q=a}},showControls:{get:function(){return o},set:function(a){o=a}},controlLabels:{get:function(){return p},set:function(a){p=a}},showXAxis:{get:function(){return r},set:function(a){r=a}},showYAxis:{get:function(){return s},set:function(a){s=a}},defaultState:{get:function(){return y},set:function(a){y=a}},noData:{get:function(){return z},set:function(a){z=a}},reduceXTicks:{get:function(){return u},set:function(a){u=a}},rotateLabels:{get:function(){return w},set:function(a){w=a}},staggerLabels:{get:function(){return v},set:function(a){v=a}},tooltips:{get:function(){return j.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),j.enabled(!!b)}},tooltipContent:{get:function(){return j.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),j.contentGenerator(b)}},margin:{get:function(){return k},set:function(a){k.top=void 0!==a.top?a.top:k.top,k.right=void 0!==a.right?a.right:k.right,k.bottom=void 0!==a.bottom?a.bottom:k.bottom,k.left=void 0!==a.left?a.left:k.left}},duration:{get:function(){return C},set:function(a){C=a,e.duration(C),f.duration(C),g.duration(C),D.reset(C)}},color:{get:function(){return n},set:function(b){n=a.utils.getColor(b),h.color(n)}},rightAlignYAxis:{get:function(){return t},set:function(a){t=a,g.orient(t?"right":"left")}},barColor:{get:function(){return e.barColor},set:function(a){e.barColor(a),h.color(function(a,b){return d3.rgb("#ccc").darker(1.5*b).toString()})}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.multiBarHorizontal=function(){"use strict";function b(m){return F.reset(),m.each(function(b){var m=k-j.left-j.right,D=l-j.top-j.bottom;n=d3.select(this),a.utils.initSVG(n),x&&(b=d3.layout.stack().offset("zero").values(function(a){return a.values}).y(r)(b)),b.forEach(function(a,b){a.values.forEach(function(c){c.series=b,c.key=a.key})}),x&&b[0].values.map(function(a,c){var d=0,e=0;b.map(function(a){var b=a.values[c];b.size=Math.abs(b.y),b.y<0?(b.y1=e-b.size,e-=b.size):(b.y1=d,d+=b.size)})});var G=d&&e?[]:b.map(function(a){return a.values.map(function(a,b){return{x:q(a,b),y:r(a,b),y0:a.y0,y1:a.y1,yErr:s(a,b)}})});o.domain(d||d3.merge(G).map(function(a){return a.x})).rangeBands(f||[0,D],B),p.domain(e||d3.extent(d3.merge(d3.merge(G).map(function(a){var b=a.y;x&&(b=a.y>0?a.y1+a.y:a.y1);var c=a.yErr;return c?c.length?[b+c[0],b+c[1]]:(c=Math.abs(c),[b-c,b+c]):[b]})).concat(t))),p.range(y&&!x?g||[p.domain()[0]<0?A:0,m-(p.domain()[1]>0?A:0)]:g||[0,m]),h=h||o,i=i||d3.scale.linear().domain(p.domain()).range([p(0),p(0)]);{var H=d3.select(this).selectAll("g.nv-wrap.nv-multibarHorizontal").data([b]),I=H.enter().append("g").attr("class","nvd3 nv-wrap nv-multibarHorizontal"),J=(I.append("defs"),I.append("g"));H.select("g")}J.append("g").attr("class","nv-groups"),H.attr("transform","translate("+j.left+","+j.top+")");var K=H.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a,b){return b});K.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),K.exit().watchTransition(F,"multibarhorizontal: exit groups").style("stroke-opacity",1e-6).style("fill-opacity",1e-6).remove(),K.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}).style("fill",function(a,b){return u(a,b)}).style("stroke",function(a,b){return u(a,b)}),K.watchTransition(F,"multibarhorizontal: groups").style("stroke-opacity",1).style("fill-opacity",.75);var L=K.selectAll("g.nv-bar").data(function(a){return a.values});L.exit().remove();var M=L.enter().append("g").attr("transform",function(a,c,d){return"translate("+i(x?a.y0:0)+","+(x?0:d*o.rangeBand()/b.length+o(q(a,c)))+")"});M.append("rect").attr("width",0).attr("height",o.rangeBand()/(x?1:b.length)),L.on("mouseover",function(a,b){d3.select(this).classed("hover",!0),E.elementMouseover({data:a,index:b,color:d3.select(this).style("fill")})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),E.elementMouseout({data:a,index:b,color:d3.select(this).style("fill")})}).on("mouseout",function(a,b){E.elementMouseout({data:a,index:b,color:d3.select(this).style("fill")})}).on("mousemove",function(a,b){E.elementMousemove({data:a,index:b,color:d3.select(this).style("fill")})}).on("click",function(a,b){E.elementClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()}).on("dblclick",function(a,b){E.elementDblClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()}),s(b[0].values[0],0)&&(M.append("polyline"),L.select("polyline").attr("fill","none").attr("stroke",function(a,b,c){return w(a,c,b)}).attr("points",function(a,c){var d=s(a,c),e=.8*o.rangeBand()/(2*(x?1:b.length));d=d.length?d:[-Math.abs(d),Math.abs(d)],d=d.map(function(a){return p(a)-p(0)});var f=[[d[0],-e],[d[0],e],[d[0],0],[d[1],0],[d[1],-e],[d[1],e]];return f.map(function(a){return a.join(",")}).join(" ")}).attr("transform",function(a,c){var d=o.rangeBand()/(2*(x?1:b.length));return"translate("+(r(a,c)<0?0:p(r(a,c))-p(0))+", "+d+")"})),M.append("text"),y&&!x?(L.select("text").attr("text-anchor",function(a,b){return r(a,b)<0?"end":"start"}).attr("y",o.rangeBand()/(2*b.length)).attr("dy",".32em").text(function(a,b){var c=C(r(a,b)),d=s(a,b);return void 0===d?c:d.length?c+"+"+C(Math.abs(d[1]))+"-"+C(Math.abs(d[0])):c+"±"+C(Math.abs(d))}),L.watchTransition(F,"multibarhorizontal: bars").select("text").attr("x",function(a,b){return r(a,b)<0?-4:p(r(a,b))-p(0)+4})):L.selectAll("text").text(""),z&&!x?(M.append("text").classed("nv-bar-label",!0),L.select("text.nv-bar-label").attr("text-anchor",function(a,b){return r(a,b)<0?"start":"end"}).attr("y",o.rangeBand()/(2*b.length)).attr("dy",".32em").text(function(a,b){return q(a,b)}),L.watchTransition(F,"multibarhorizontal: bars").select("text.nv-bar-label").attr("x",function(a,b){return r(a,b)<0?p(0)-p(r(a,b))+4:-4})):L.selectAll("text.nv-bar-label").text(""),L.attr("class",function(a,b){return r(a,b)<0?"nv-bar negative":"nv-bar positive"}),v&&(c||(c=b.map(function(){return!0})),L.style("fill",function(a,b,d){return d3.rgb(v(a,b)).darker(c.map(function(a,b){return b}).filter(function(a,b){return!c[b]})[d]).toString()}).style("stroke",function(a,b,d){return d3.rgb(v(a,b)).darker(c.map(function(a,b){return b}).filter(function(a,b){return!c[b]})[d]).toString()})),x?L.watchTransition(F,"multibarhorizontal: bars").attr("transform",function(a,b){return"translate("+p(a.y1)+","+o(q(a,b))+")"}).select("rect").attr("width",function(a,b){return Math.abs(p(r(a,b)+a.y0)-p(a.y0))}).attr("height",o.rangeBand()):L.watchTransition(F,"multibarhorizontal: bars").attr("transform",function(a,c){return"translate("+p(r(a,c)<0?r(a,c):0)+","+(a.series*o.rangeBand()/b.length+o(q(a,c)))+")"}).select("rect").attr("height",o.rangeBand()/b.length).attr("width",function(a,b){return Math.max(Math.abs(p(r(a,b))-p(0)),1)}),h=o.copy(),i=p.copy()}),F.renderEnd("multibarHorizontal immediate"),b}var c,d,e,f,g,h,i,j={top:0,right:0,bottom:0,left:0},k=960,l=500,m=Math.floor(1e4*Math.random()),n=null,o=d3.scale.ordinal(),p=d3.scale.linear(),q=function(a){return a.x},r=function(a){return a.y},s=function(a){return a.yErr},t=[0],u=a.utils.defaultColor(),v=null,w=a.utils.defaultColor(),x=!1,y=!1,z=!1,A=60,B=.1,C=d3.format(",.2f"),D=250,E=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove","renderEnd"),F=a.utils.renderWatch(E,D);return b.dispatch=E,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return k},set:function(a){k=a}},height:{get:function(){return l},set:function(a){l=a}},x:{get:function(){return q},set:function(a){q=a}},y:{get:function(){return r},set:function(a){r=a}},yErr:{get:function(){return s},set:function(a){s=a}},xScale:{get:function(){return o},set:function(a){o=a}},yScale:{get:function(){return p},set:function(a){p=a}},xDomain:{get:function(){return d},set:function(a){d=a}},yDomain:{get:function(){return e},set:function(a){e=a}},xRange:{get:function(){return f},set:function(a){f=a}},yRange:{get:function(){return g},set:function(a){g=a}},forceY:{get:function(){return t},set:function(a){t=a}},stacked:{get:function(){return x},set:function(a){x=a}},showValues:{get:function(){return y},set:function(a){y=a}},disabled:{get:function(){return c},set:function(a){c=a}},id:{get:function(){return m},set:function(a){m=a}},valueFormat:{get:function(){return C},set:function(a){C=a}},valuePadding:{get:function(){return A},set:function(a){A=a}},groupSpacing:{get:function(){return B},set:function(a){B=a}},margin:{get:function(){return j},set:function(a){j.top=void 0!==a.top?a.top:j.top,j.right=void 0!==a.right?a.right:j.right,j.bottom=void 0!==a.bottom?a.bottom:j.bottom,j.left=void 0!==a.left?a.left:j.left}},duration:{get:function(){return D},set:function(a){D=a,F.reset(D)}},color:{get:function(){return u},set:function(b){u=a.utils.getColor(b)}},barColor:{get:function(){return v},set:function(b){v=b?a.utils.getColor(b):null}},errorBarColor:{get:function(){return w},set:function(b){w=b?a.utils.getColor(b):null}}}),a.utils.initOptions(b),b},a.models.multiBarHorizontalChart=function(){"use strict";function b(j){return C.reset(),C.models(e),r&&C.models(f),s&&C.models(g),j.each(function(j){var w=d3.select(this);a.utils.initSVG(w);var C=a.utils.availableWidth(l,w,k),D=a.utils.availableHeight(m,w,k);if(b.update=function(){w.transition().duration(z).call(b)},b.container=this,t=e.stacked(),u.setter(B(j),b.update).getter(A(j)).update(),u.disabled=j.map(function(a){return!!a.disabled}),!v){var E;v={};for(E in u)v[E]=u[E]instanceof Array?u[E].slice(0):u[E]}if(!(j&&j.length&&j.filter(function(a){return a.values.length}).length))return a.utils.noData(b,w),b;w.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale();var F=w.selectAll("g.nv-wrap.nv-multiBarHorizontalChart").data([j]),G=F.enter().append("g").attr("class","nvd3 nv-wrap nv-multiBarHorizontalChart").append("g"),H=F.select("g");if(G.append("g").attr("class","nv-x nv-axis"),G.append("g").attr("class","nv-y nv-axis").append("g").attr("class","nv-zeroLine").append("line"),G.append("g").attr("class","nv-barsWrap"),G.append("g").attr("class","nv-legendWrap"),G.append("g").attr("class","nv-controlsWrap"),q&&(h.width(C-y()),H.select(".nv-legendWrap").datum(j).call(h),k.top!=h.height()&&(k.top=h.height(),D=a.utils.availableHeight(m,w,k)),H.select(".nv-legendWrap").attr("transform","translate("+y()+","+-k.top+")")),o){var I=[{key:p.grouped||"Grouped",disabled:e.stacked()},{key:p.stacked||"Stacked",disabled:!e.stacked()}];i.width(y()).color(["#444","#444","#444"]),H.select(".nv-controlsWrap").datum(I).attr("transform","translate(0,"+-k.top+")").call(i)}F.attr("transform","translate("+k.left+","+k.top+")"),e.disabled(j.map(function(a){return a.disabled})).width(C).height(D).color(j.map(function(a,b){return a.color||n(a,b)}).filter(function(a,b){return!j[b].disabled}));var J=H.select(".nv-barsWrap").datum(j.filter(function(a){return!a.disabled}));if(J.transition().call(e),r){f.scale(c)._ticks(a.utils.calcTicksY(D/24,j)).tickSize(-C,0),H.select(".nv-x.nv-axis").call(f);var K=H.select(".nv-x.nv-axis").selectAll("g");K.selectAll("line, text")}s&&(g.scale(d)._ticks(a.utils.calcTicksX(C/100,j)).tickSize(-D,0),H.select(".nv-y.nv-axis").attr("transform","translate(0,"+D+")"),H.select(".nv-y.nv-axis").call(g)),H.select(".nv-zeroLine line").attr("x1",d(0)).attr("x2",d(0)).attr("y1",0).attr("y2",-D),h.dispatch.on("stateChange",function(a){for(var c in a)u[c]=a[c];x.stateChange(u),b.update()}),i.dispatch.on("legendClick",function(a){if(a.disabled){switch(I=I.map(function(a){return a.disabled=!0,a}),a.disabled=!1,a.key){case"Grouped":e.stacked(!1);break;case"Stacked":e.stacked(!0)}u.stacked=e.stacked(),x.stateChange(u),t=e.stacked(),b.update()}}),x.on("changeState",function(a){"undefined"!=typeof a.disabled&&(j.forEach(function(b,c){b.disabled=a.disabled[c]}),u.disabled=a.disabled),"undefined"!=typeof a.stacked&&(e.stacked(a.stacked),u.stacked=a.stacked,t=a.stacked),b.update()})}),C.renderEnd("multibar horizontal chart immediate"),b}var c,d,e=a.models.multiBarHorizontal(),f=a.models.axis(),g=a.models.axis(),h=a.models.legend().height(30),i=a.models.legend().height(30),j=a.models.tooltip(),k={top:30,right:20,bottom:50,left:60},l=null,m=null,n=a.utils.defaultColor(),o=!0,p={},q=!0,r=!0,s=!0,t=!1,u=a.utils.state(),v=null,w=null,x=d3.dispatch("stateChange","changeState","renderEnd"),y=function(){return o?180:0},z=250;u.stacked=!1,e.stacked(t),f.orient("left").tickPadding(5).showMaxMin(!1).tickFormat(function(a){return a}),g.orient("bottom").tickFormat(d3.format(",.1f")),j.duration(0).valueFormatter(function(a,b){return g.tickFormat()(a,b)}).headerFormatter(function(a,b){return f.tickFormat()(a,b)}),i.updateState(!1);var A=function(a){return function(){return{active:a.map(function(a){return!a.disabled}),stacked:t}}},B=function(a){return function(b){void 0!==b.stacked&&(t=b.stacked),void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}},C=a.utils.renderWatch(x,z);return e.dispatch.on("elementMouseover.tooltip",function(a){a.value=b.x()(a.data),a.series={key:a.data.key,value:b.y()(a.data),color:a.color},j.data(a).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(){j.hidden(!0)}),e.dispatch.on("elementMousemove.tooltip",function(){j.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=x,b.multibar=e,b.legend=h,b.controls=i,b.xAxis=f,b.yAxis=g,b.state=u,b.tooltip=j,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return l},set:function(a){l=a}},height:{get:function(){return m},set:function(a){m=a}},showLegend:{get:function(){return q},set:function(a){q=a}},showControls:{get:function(){return o},set:function(a){o=a}},controlLabels:{get:function(){return p},set:function(a){p=a}},showXAxis:{get:function(){return r},set:function(a){r=a}},showYAxis:{get:function(){return s},set:function(a){s=a}},defaultState:{get:function(){return v},set:function(a){v=a}},noData:{get:function(){return w},set:function(a){w=a}},tooltips:{get:function(){return j.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),j.enabled(!!b)}},tooltipContent:{get:function(){return j.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),j.contentGenerator(b)}},margin:{get:function(){return k},set:function(a){k.top=void 0!==a.top?a.top:k.top,k.right=void 0!==a.right?a.right:k.right,k.bottom=void 0!==a.bottom?a.bottom:k.bottom,k.left=void 0!==a.left?a.left:k.left}},duration:{get:function(){return z},set:function(a){z=a,C.reset(z),e.duration(z),f.duration(z),g.duration(z)}},color:{get:function(){return n},set:function(b){n=a.utils.getColor(b),h.color(n)}},barColor:{get:function(){return e.barColor},set:function(a){e.barColor(a),h.color(function(a,b){return d3.rgb("#ccc").darker(1.5*b).toString()})}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.multiChart=function(){"use strict";function b(j){return j.each(function(j){function k(a){var b=2===j[a.seriesIndex].yAxis?B:A;a.value=a.point.x,a.series={value:a.point.y,color:a.point.color},D.duration(100).valueFormatter(function(a,c){return b.tickFormat()(a,c)}).data(a).position(a.pos).hidden(!1)}function l(a){var b=2===j[a.seriesIndex].yAxis?B:A;a.value=a.point.x,a.series={value:a.point.y,color:a.point.color},D.duration(100).valueFormatter(function(a,c){return b.tickFormat()(a,c)}).data(a).position(a.pos).hidden(!1)}function n(a){var b=2===j[a.seriesIndex].yAxis?B:A;a.point.x=x.x()(a.point),a.point.y=x.y()(a.point),D.duration(100).valueFormatter(function(a,c){return b.tickFormat()(a,c)}).data(a).position(a.pos).hidden(!1)}function E(a){var b=2===j[a.data.series].yAxis?B:A;a.value=v.x()(a.data),a.series={value:v.y()(a.data),color:a.color},D.duration(0).valueFormatter(function(a,c){return b.tickFormat()(a,c)}).data(a).hidden(!1)}var F=d3.select(this);a.utils.initSVG(F),b.update=function(){F.transition().call(b)},b.container=this;var G=a.utils.availableWidth(g,F,e),H=a.utils.availableHeight(h,F,e),I=j.filter(function(a){return"line"==a.type&&1==a.yAxis}),J=j.filter(function(a){return"line"==a.type&&2==a.yAxis}),K=j.filter(function(a){return"scatter"==a.type&&1==a.yAxis}),L=j.filter(function(a){return"scatter"==a.type&&2==a.yAxis}),M=j.filter(function(a){return"bar"==a.type&&1==a.yAxis}),N=j.filter(function(a){return"bar"==a.type&&2==a.yAxis}),O=j.filter(function(a){return"area"==a.type&&1==a.yAxis}),P=j.filter(function(a){return"area"==a.type&&2==a.yAxis});if(!(j&&j.length&&j.filter(function(a){return a.values.length}).length))return a.utils.noData(b,F),b;F.selectAll(".nv-noData").remove();var Q=j.filter(function(a){return!a.disabled&&1==a.yAxis}).map(function(a){return a.values.map(function(a){return{x:a.x,y:a.y}})}),R=j.filter(function(a){return!a.disabled&&2==a.yAxis}).map(function(a){return a.values.map(function(a){return{x:a.x,y:a.y}})});o.domain(d3.extent(d3.merge(Q.concat(R)),function(a){return a.x})).range([0,G]);var S=F.selectAll("g.wrap.multiChart").data([j]),T=S.enter().append("g").attr("class","wrap nvd3 multiChart").append("g");T.append("g").attr("class","nv-x nv-axis"),T.append("g").attr("class","nv-y1 nv-axis"),T.append("g").attr("class","nv-y2 nv-axis"),T.append("g").attr("class","lines1Wrap"),T.append("g").attr("class","lines2Wrap"),T.append("g").attr("class","scatters1Wrap"),T.append("g").attr("class","scatters2Wrap"),T.append("g").attr("class","bars1Wrap"),T.append("g").attr("class","bars2Wrap"),T.append("g").attr("class","stack1Wrap"),T.append("g").attr("class","stack2Wrap"),T.append("g").attr("class","legendWrap");var U=S.select("g"),V=j.map(function(a,b){return j[b].color||f(a,b)});if(i){var W=C.align()?G/2:G,X=C.align()?W:0;C.width(W),C.color(V),U.select(".legendWrap").datum(j.map(function(a){return a.originalKey=void 0===a.originalKey?a.key:a.originalKey,a.key=a.originalKey+(1==a.yAxis?"":" (right axis)"),a})).call(C),e.top!=C.height()&&(e.top=C.height(),H=a.utils.availableHeight(h,F,e)),U.select(".legendWrap").attr("transform","translate("+X+","+-e.top+")")}r.width(G).height(H).interpolate(m).color(V.filter(function(a,b){return!j[b].disabled&&1==j[b].yAxis&&"line"==j[b].type})),s.width(G).height(H).interpolate(m).color(V.filter(function(a,b){return!j[b].disabled&&2==j[b].yAxis&&"line"==j[b].type})),t.width(G).height(H).color(V.filter(function(a,b){return!j[b].disabled&&1==j[b].yAxis&&"scatter"==j[b].type})),u.width(G).height(H).color(V.filter(function(a,b){return!j[b].disabled&&2==j[b].yAxis&&"scatter"==j[b].type})),v.width(G).height(H).color(V.filter(function(a,b){return!j[b].disabled&&1==j[b].yAxis&&"bar"==j[b].type})),w.width(G).height(H).color(V.filter(function(a,b){return!j[b].disabled&&2==j[b].yAxis&&"bar"==j[b].type})),x.width(G).height(H).color(V.filter(function(a,b){return!j[b].disabled&&1==j[b].yAxis&&"area"==j[b].type})),y.width(G).height(H).color(V.filter(function(a,b){return!j[b].disabled&&2==j[b].yAxis&&"area"==j[b].type})),U.attr("transform","translate("+e.left+","+e.top+")");var Y=U.select(".lines1Wrap").datum(I.filter(function(a){return!a.disabled})),Z=U.select(".scatters1Wrap").datum(K.filter(function(a){return!a.disabled})),$=U.select(".bars1Wrap").datum(M.filter(function(a){return!a.disabled})),_=U.select(".stack1Wrap").datum(O.filter(function(a){return!a.disabled})),ab=U.select(".lines2Wrap").datum(J.filter(function(a){return!a.disabled})),bb=U.select(".scatters2Wrap").datum(L.filter(function(a){return!a.disabled})),cb=U.select(".bars2Wrap").datum(N.filter(function(a){return!a.disabled})),db=U.select(".stack2Wrap").datum(P.filter(function(a){return!a.disabled})),eb=O.length?O.map(function(a){return a.values}).reduce(function(a,b){return a.map(function(a,c){return{x:a.x,y:a.y+b[c].y}})}).concat([{x:0,y:0}]):[],fb=P.length?P.map(function(a){return a.values}).reduce(function(a,b){return a.map(function(a,c){return{x:a.x,y:a.y+b[c].y}})}).concat([{x:0,y:0}]):[];p.domain(c||d3.extent(d3.merge(Q).concat(eb),function(a){return a.y})).range([0,H]),q.domain(d||d3.extent(d3.merge(R).concat(fb),function(a){return a.y})).range([0,H]),r.yDomain(p.domain()),t.yDomain(p.domain()),v.yDomain(p.domain()),x.yDomain(p.domain()),s.yDomain(q.domain()),u.yDomain(q.domain()),w.yDomain(q.domain()),y.yDomain(q.domain()),O.length&&d3.transition(_).call(x),P.length&&d3.transition(db).call(y),M.length&&d3.transition($).call(v),N.length&&d3.transition(cb).call(w),I.length&&d3.transition(Y).call(r),J.length&&d3.transition(ab).call(s),K.length&&d3.transition(Z).call(t),L.length&&d3.transition(bb).call(u),z._ticks(a.utils.calcTicksX(G/100,j)).tickSize(-H,0),U.select(".nv-x.nv-axis").attr("transform","translate(0,"+H+")"),d3.transition(U.select(".nv-x.nv-axis")).call(z),A._ticks(a.utils.calcTicksY(H/36,j)).tickSize(-G,0),d3.transition(U.select(".nv-y1.nv-axis")).call(A),B._ticks(a.utils.calcTicksY(H/36,j)).tickSize(-G,0),d3.transition(U.select(".nv-y2.nv-axis")).call(B),U.select(".nv-y1.nv-axis").classed("nv-disabled",Q.length?!1:!0).attr("transform","translate("+o.range()[0]+",0)"),U.select(".nv-y2.nv-axis").classed("nv-disabled",R.length?!1:!0).attr("transform","translate("+o.range()[1]+",0)"),C.dispatch.on("stateChange",function(){b.update()}),r.dispatch.on("elementMouseover.tooltip",k),s.dispatch.on("elementMouseover.tooltip",k),r.dispatch.on("elementMouseout.tooltip",function(){D.hidden(!0)}),s.dispatch.on("elementMouseout.tooltip",function(){D.hidden(!0)}),t.dispatch.on("elementMouseover.tooltip",l),u.dispatch.on("elementMouseover.tooltip",l),t.dispatch.on("elementMouseout.tooltip",function(){D.hidden(!0)}),u.dispatch.on("elementMouseout.tooltip",function(){D.hidden(!0)}),x.dispatch.on("elementMouseover.tooltip",n),y.dispatch.on("elementMouseover.tooltip",n),x.dispatch.on("elementMouseout.tooltip",function(){D.hidden(!0)}),y.dispatch.on("elementMouseout.tooltip",function(){D.hidden(!0)}),v.dispatch.on("elementMouseover.tooltip",E),w.dispatch.on("elementMouseover.tooltip",E),v.dispatch.on("elementMouseout.tooltip",function(){D.hidden(!0)}),w.dispatch.on("elementMouseout.tooltip",function(){D.hidden(!0)}),v.dispatch.on("elementMousemove.tooltip",function(){D.position({top:d3.event.pageY,left:d3.event.pageX})()}),w.dispatch.on("elementMousemove.tooltip",function(){D.position({top:d3.event.pageY,left:d3.event.pageX})()})}),b}var c,d,e={top:30,right:20,bottom:50,left:60},f=a.utils.defaultColor(),g=null,h=null,i=!0,j=null,k=function(a){return a.x},l=function(a){return a.y},m="monotone",n=!0,o=d3.scale.linear(),p=d3.scale.linear(),q=d3.scale.linear(),r=a.models.line().yScale(p),s=a.models.line().yScale(q),t=a.models.scatter().yScale(p),u=a.models.scatter().yScale(q),v=a.models.multiBar().stacked(!1).yScale(p),w=a.models.multiBar().stacked(!1).yScale(q),x=a.models.stackedArea().yScale(p),y=a.models.stackedArea().yScale(q),z=a.models.axis().scale(o).orient("bottom").tickPadding(5),A=a.models.axis().scale(p).orient("left"),B=a.models.axis().scale(q).orient("right"),C=a.models.legend().height(30),D=a.models.tooltip(),E=d3.dispatch();return b.dispatch=E,b.lines1=r,b.lines2=s,b.scatters1=t,b.scatters2=u,b.bars1=v,b.bars2=w,b.stack1=x,b.stack2=y,b.xAxis=z,b.yAxis1=A,b.yAxis2=B,b.tooltip=D,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return g},set:function(a){g=a}},height:{get:function(){return h},set:function(a){h=a}},showLegend:{get:function(){return i},set:function(a){i=a}},yDomain1:{get:function(){return c},set:function(a){c=a}},yDomain2:{get:function(){return d},set:function(a){d=a}},noData:{get:function(){return j},set:function(a){j=a}},interpolate:{get:function(){return m},set:function(a){m=a}},tooltips:{get:function(){return D.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),D.enabled(!!b)}},tooltipContent:{get:function(){return D.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),D.contentGenerator(b)}},margin:{get:function(){return e},set:function(a){e.top=void 0!==a.top?a.top:e.top,e.right=void 0!==a.right?a.right:e.right,e.bottom=void 0!==a.bottom?a.bottom:e.bottom,e.left=void 0!==a.left?a.left:e.left}},color:{get:function(){return f},set:function(b){f=a.utils.getColor(b)}},x:{get:function(){return k},set:function(a){k=a,r.x(a),s.x(a),t.x(a),u.x(a),v.x(a),w.x(a),x.x(a),y.x(a)}},y:{get:function(){return l},set:function(a){l=a,r.y(a),s.y(a),t.y(a),u.y(a),x.y(a),y.y(a),v.y(a),w.y(a)}},useVoronoi:{get:function(){return n},set:function(a){n=a,r.useVoronoi(a),s.useVoronoi(a),x.useVoronoi(a),y.useVoronoi(a)}}}),a.utils.initOptions(b),b},a.models.ohlcBar=function(){"use strict";function b(y){return y.each(function(b){k=d3.select(this);var y=a.utils.availableWidth(h,k,g),A=a.utils.availableHeight(i,k,g);a.utils.initSVG(k);var B=y/b[0].values.length*.9;l.domain(c||d3.extent(b[0].values.map(n).concat(t))),l.range(v?e||[.5*y/b[0].values.length,y*(b[0].values.length-.5)/b[0].values.length]:e||[5+B/2,y-B/2-5]),m.domain(d||[d3.min(b[0].values.map(s).concat(u)),d3.max(b[0].values.map(r).concat(u))]).range(f||[A,0]),l.domain()[0]===l.domain()[1]&&l.domain(l.domain()[0]?[l.domain()[0]-.01*l.domain()[0],l.domain()[1]+.01*l.domain()[1]]:[-1,1]),m.domain()[0]===m.domain()[1]&&m.domain(m.domain()[0]?[m.domain()[0]+.01*m.domain()[0],m.domain()[1]-.01*m.domain()[1]]:[-1,1]);var C=d3.select(this).selectAll("g.nv-wrap.nv-ohlcBar").data([b[0].values]),D=C.enter().append("g").attr("class","nvd3 nv-wrap nv-ohlcBar"),E=D.append("defs"),F=D.append("g"),G=C.select("g");F.append("g").attr("class","nv-ticks"),C.attr("transform","translate("+g.left+","+g.top+")"),k.on("click",function(a,b){z.chartClick({data:a,index:b,pos:d3.event,id:j})}),E.append("clipPath").attr("id","nv-chart-clip-path-"+j).append("rect"),C.select("#nv-chart-clip-path-"+j+" rect").attr("width",y).attr("height",A),G.attr("clip-path",w?"url(#nv-chart-clip-path-"+j+")":"");var H=C.select(".nv-ticks").selectAll(".nv-tick").data(function(a){return a});H.exit().remove(),H.enter().append("path").attr("class",function(a,b,c){return(p(a,b)>q(a,b)?"nv-tick negative":"nv-tick positive")+" nv-tick-"+c+"-"+b
-}).attr("d",function(a,b){return"m0,0l0,"+(m(p(a,b))-m(r(a,b)))+"l"+-B/2+",0l"+B/2+",0l0,"+(m(s(a,b))-m(p(a,b)))+"l0,"+(m(q(a,b))-m(s(a,b)))+"l"+B/2+",0l"+-B/2+",0z"}).attr("transform",function(a,b){return"translate("+l(n(a,b))+","+m(r(a,b))+")"}).attr("fill",function(){return x[0]}).attr("stroke",function(){return x[0]}).attr("x",0).attr("y",function(a,b){return m(Math.max(0,o(a,b)))}).attr("height",function(a,b){return Math.abs(m(o(a,b))-m(0))}),H.attr("class",function(a,b,c){return(p(a,b)>q(a,b)?"nv-tick negative":"nv-tick positive")+" nv-tick-"+c+"-"+b}),d3.transition(H).attr("transform",function(a,b){return"translate("+l(n(a,b))+","+m(r(a,b))+")"}).attr("d",function(a,c){var d=y/b[0].values.length*.9;return"m0,0l0,"+(m(p(a,c))-m(r(a,c)))+"l"+-d/2+",0l"+d/2+",0l0,"+(m(s(a,c))-m(p(a,c)))+"l0,"+(m(q(a,c))-m(s(a,c)))+"l"+d/2+",0l"+-d/2+",0z"})}),b}var c,d,e,f,g={top:0,right:0,bottom:0,left:0},h=null,i=null,j=Math.floor(1e4*Math.random()),k=null,l=d3.scale.linear(),m=d3.scale.linear(),n=function(a){return a.x},o=function(a){return a.y},p=function(a){return a.open},q=function(a){return a.close},r=function(a){return a.high},s=function(a){return a.low},t=[],u=[],v=!1,w=!0,x=a.utils.defaultColor(),y=!1,z=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState","renderEnd","chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove");return b.highlightPoint=function(a,c){b.clearHighlights(),k.select(".nv-ohlcBar .nv-tick-0-"+a).classed("hover",c)},b.clearHighlights=function(){k.select(".nv-ohlcBar .nv-tick.hover").classed("hover",!1)},b.dispatch=z,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return h},set:function(a){h=a}},height:{get:function(){return i},set:function(a){i=a}},xScale:{get:function(){return l},set:function(a){l=a}},yScale:{get:function(){return m},set:function(a){m=a}},xDomain:{get:function(){return c},set:function(a){c=a}},yDomain:{get:function(){return d},set:function(a){d=a}},xRange:{get:function(){return e},set:function(a){e=a}},yRange:{get:function(){return f},set:function(a){f=a}},forceX:{get:function(){return t},set:function(a){t=a}},forceY:{get:function(){return u},set:function(a){u=a}},padData:{get:function(){return v},set:function(a){v=a}},clipEdge:{get:function(){return w},set:function(a){w=a}},id:{get:function(){return j},set:function(a){j=a}},interactive:{get:function(){return y},set:function(a){y=a}},x:{get:function(){return n},set:function(a){n=a}},y:{get:function(){return o},set:function(a){o=a}},open:{get:function(){return p()},set:function(a){p=a}},close:{get:function(){return q()},set:function(a){q=a}},high:{get:function(){return r},set:function(a){r=a}},low:{get:function(){return s},set:function(a){s=a}},margin:{get:function(){return g},set:function(a){g.top=void 0!=a.top?a.top:g.top,g.right=void 0!=a.right?a.right:g.right,g.bottom=void 0!=a.bottom?a.bottom:g.bottom,g.left=void 0!=a.left?a.left:g.left}},color:{get:function(){return x},set:function(b){x=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.parallelCoordinates=function(){"use strict";function b(p){return p.each(function(b){function p(a){return F(h.map(function(b){if(isNaN(a[b])||isNaN(parseFloat(a[b]))){var c=g[b].domain(),d=g[b].range(),e=c[0]-(c[1]-c[0])/9;if(J.indexOf(b)<0){var h=d3.scale.linear().domain([e,c[1]]).range([x-12,d[1]]);g[b].brush.y(h),J.push(b)}return[f(b),g[b](e)]}return J.length>0?(D.style("display","inline"),E.style("display","inline")):(D.style("display","none"),E.style("display","none")),[f(b),g[b](a[b])]}))}function q(){var a=h.filter(function(a){return!g[a].brush.empty()}),b=a.map(function(a){return g[a].brush.extent()});k=[],a.forEach(function(a,c){k[c]={dimension:a,extent:b[c]}}),l=[],M.style("display",function(c){var d=a.every(function(a,d){return isNaN(c[a])&&b[d][0]==g[a].brush.y().domain()[0]?!0:b[d][0]<=c[a]&&c[a]<=b[d][1]});return d&&l.push(c),d?null:"none"}),o.brush({filters:k,active:l})}function r(a){m[a]=this.parentNode.__origin__=f(a),L.attr("visibility","hidden")}function s(a){m[a]=Math.min(w,Math.max(0,this.parentNode.__origin__+=d3.event.x)),M.attr("d",p),h.sort(function(a,b){return u(a)-u(b)}),f.domain(h),N.attr("transform",function(a){return"translate("+u(a)+")"})}function t(a){delete this.parentNode.__origin__,delete m[a],d3.select(this.parentNode).attr("transform","translate("+f(a)+")"),M.attr("d",p),L.attr("d",p).attr("visibility",null)}function u(a){var b=m[a];return null==b?f(a):b}var v=d3.select(this),w=a.utils.availableWidth(d,v,c),x=a.utils.availableHeight(e,v,c);a.utils.initSVG(v),l=b,f.rangePoints([0,w],1).domain(h);var y={};h.forEach(function(a){var c=d3.extent(b,function(b){return+b[a]});return y[a]=!1,void 0===c[0]&&(y[a]=!0,c[0]=0,c[1]=0),c[0]===c[1]&&(c[0]=c[0]-1,c[1]=c[1]+1),g[a]=d3.scale.linear().domain(c).range([.9*(x-12),0]),g[a].brush=d3.svg.brush().y(g[a]).on("brush",q),"name"!=a});var z=v.selectAll("g.nv-wrap.nv-parallelCoordinates").data([b]),A=z.enter().append("g").attr("class","nvd3 nv-wrap nv-parallelCoordinates"),B=A.append("g"),C=z.select("g");B.append("g").attr("class","nv-parallelCoordinates background"),B.append("g").attr("class","nv-parallelCoordinates foreground"),B.append("g").attr("class","nv-parallelCoordinates missingValuesline"),z.attr("transform","translate("+c.left+","+c.top+")");var D,E,F=d3.svg.line().interpolate("cardinal").tension(n),G=d3.svg.axis().orient("left"),H=d3.behavior.drag().on("dragstart",r).on("drag",s).on("dragend",t),I=f.range()[1]-f.range()[0],J=[],K=[0+I/2,x-12,w-I/2,x-12];D=z.select(".missingValuesline").selectAll("line").data([K]),D.enter().append("line"),D.exit().remove(),D.attr("x1",function(a){return a[0]}).attr("y1",function(a){return a[1]}).attr("x2",function(a){return a[2]}).attr("y2",function(a){return a[3]}),E=z.select(".missingValuesline").selectAll("text").data(["undefined values"]),E.append("text").data(["undefined values"]),E.enter().append("text"),E.exit().remove(),E.attr("y",x).attr("x",w-92-I/2).text(function(a){return a});var L=z.select(".background").selectAll("path").data(b);L.enter().append("path"),L.exit().remove(),L.attr("d",p);var M=z.select(".foreground").selectAll("path").data(b);M.enter().append("path"),M.exit().remove(),M.attr("d",p).attr("stroke",j),M.on("mouseover",function(a,b){d3.select(this).classed("hover",!0),o.elementMouseover({label:a.name,data:a.data,index:b,pos:[d3.mouse(this.parentNode)[0],d3.mouse(this.parentNode)[1]]})}),M.on("mouseout",function(a,b){d3.select(this).classed("hover",!1),o.elementMouseout({label:a.name,data:a.data,index:b})});var N=C.selectAll(".dimension").data(h),O=N.enter().append("g").attr("class","nv-parallelCoordinates dimension");O.append("g").attr("class","nv-parallelCoordinates nv-axis"),O.append("g").attr("class","nv-parallelCoordinates-brush"),O.append("text").attr("class","nv-parallelCoordinates nv-label"),N.attr("transform",function(a){return"translate("+f(a)+",0)"}),N.exit().remove(),N.select(".nv-label").style("cursor","move").attr("dy","-1em").attr("text-anchor","middle").text(String).on("mouseover",function(a){o.elementMouseover({dim:a,pos:[d3.mouse(this.parentNode.parentNode)[0],d3.mouse(this.parentNode.parentNode)[1]]})}).on("mouseout",function(a){o.elementMouseout({dim:a})}).call(H),N.select(".nv-axis").each(function(a,b){d3.select(this).call(G.scale(g[a]).tickFormat(d3.format(i[b])))}),N.select(".nv-parallelCoordinates-brush").each(function(a){d3.select(this).call(g[a].brush)}).selectAll("rect").attr("x",-8).attr("width",16)}),b}var c={top:30,right:0,bottom:10,left:0},d=null,e=null,f=d3.scale.ordinal(),g={},h=[],i=[],j=a.utils.defaultColor(),k=[],l=[],m=[],n=1,o=d3.dispatch("brush","elementMouseover","elementMouseout");return b.dispatch=o,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return d},set:function(a){d=a}},height:{get:function(){return e},set:function(a){e=a}},dimensionNames:{get:function(){return h},set:function(a){h=a}},dimensionFormats:{get:function(){return i},set:function(a){i=a}},lineTension:{get:function(){return n},set:function(a){n=a}},dimensions:{get:function(){return h},set:function(b){a.deprecated("dimensions","use dimensionNames instead"),h=b}},margin:{get:function(){return c},set:function(a){c.top=void 0!==a.top?a.top:c.top,c.right=void 0!==a.right?a.right:c.right,c.bottom=void 0!==a.bottom?a.bottom:c.bottom,c.left=void 0!==a.left?a.left:c.left}},color:{get:function(){return j},set:function(b){j=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.pie=function(){"use strict";function b(E){return D.reset(),E.each(function(b){function E(a,b){a.endAngle=isNaN(a.endAngle)?0:a.endAngle,a.startAngle=isNaN(a.startAngle)?0:a.startAngle,p||(a.innerRadius=0);var c=d3.interpolate(this._current,a);return this._current=c(0),function(a){return B[b](c(a))}}var F=d-c.left-c.right,G=e-c.top-c.bottom,H=Math.min(F,G)/2,I=[],J=[];if(i=d3.select(this),0===z.length)for(var K=H-H/5,L=y*H,M=0;M<b[0].length;M++)I.push(K),J.push(L);else I=z.map(function(a){return(a.outer-a.outer/5)*H}),J=z.map(function(a){return(a.inner-a.inner/5)*H}),y=d3.min(z.map(function(a){return a.inner-a.inner/5}));a.utils.initSVG(i);var N=i.selectAll(".nv-wrap.nv-pie").data(b),O=N.enter().append("g").attr("class","nvd3 nv-wrap nv-pie nv-chart-"+h),P=O.append("g"),Q=N.select("g"),R=P.append("g").attr("class","nv-pie");P.append("g").attr("class","nv-pieLabels"),N.attr("transform","translate("+c.left+","+c.top+")"),Q.select(".nv-pie").attr("transform","translate("+F/2+","+G/2+")"),Q.select(".nv-pieLabels").attr("transform","translate("+F/2+","+G/2+")"),i.on("click",function(a,b){A.chartClick({data:a,index:b,pos:d3.event,id:h})}),B=[],C=[];for(var M=0;M<b[0].length;M++){var S=d3.svg.arc().outerRadius(I[M]),T=d3.svg.arc().outerRadius(I[M]+5);u!==!1&&(S.startAngle(u),T.startAngle(u)),w!==!1&&(S.endAngle(w),T.endAngle(w)),p&&(S.innerRadius(J[M]),T.innerRadius(J[M])),S.cornerRadius&&x&&(S.cornerRadius(x),T.cornerRadius(x)),B.push(S),C.push(T)}var U=d3.layout.pie().sort(null).value(function(a){return a.disabled?0:g(a)});U.padAngle&&v&&U.padAngle(v),p&&q&&(R.append("text").attr("class","nv-pie-title"),N.select(".nv-pie-title").style("text-anchor","middle").text(function(){return q}).style("font-size",Math.min(F,G)*y*2/(q.length+2)+"px").attr("dy","0.35em").attr("transform",function(){return"translate(0, "+s+")"}));var V=N.select(".nv-pie").selectAll(".nv-slice").data(U),W=N.select(".nv-pieLabels").selectAll(".nv-label").data(U);V.exit().remove(),W.exit().remove();var X=V.enter().append("g");X.attr("class","nv-slice"),X.on("mouseover",function(a,b){d3.select(this).classed("hover",!0),r&&d3.select(this).select("path").transition().duration(70).attr("d",C[b]),A.elementMouseover({data:a.data,index:b,color:d3.select(this).style("fill")})}),X.on("mouseout",function(a,b){d3.select(this).classed("hover",!1),r&&d3.select(this).select("path").transition().duration(50).attr("d",B[b]),A.elementMouseout({data:a.data,index:b})}),X.on("mousemove",function(a,b){A.elementMousemove({data:a.data,index:b})}),X.on("click",function(a,b){A.elementClick({data:a.data,index:b,color:d3.select(this).style("fill")})}),X.on("dblclick",function(a,b){A.elementDblClick({data:a.data,index:b,color:d3.select(this).style("fill")})}),V.attr("fill",function(a,b){return j(a.data,b)}),V.attr("stroke",function(a,b){return j(a.data,b)});X.append("path").each(function(a){this._current=a});if(V.select("path").transition().attr("d",function(a,b){return B[b](a)}).attrTween("d",E),l){for(var Y=[],M=0;M<b[0].length;M++)Y.push(B[M]),m?p&&(Y[M]=d3.svg.arc().outerRadius(B[M].outerRadius()),u!==!1&&Y[M].startAngle(u),w!==!1&&Y[M].endAngle(w)):p||Y[M].innerRadius(0);W.enter().append("g").classed("nv-label",!0).each(function(a){var b=d3.select(this);b.attr("transform",function(a,b){if(t){a.outerRadius=I[b]+10,a.innerRadius=I[b]+15;var c=(a.startAngle+a.endAngle)/2*(180/Math.PI);return(a.startAngle+a.endAngle)/2<Math.PI?c-=90:c+=90,"translate("+Y[b].centroid(a)+") rotate("+c+")"}return a.outerRadius=H+10,a.innerRadius=H+15,"translate("+Y[b].centroid(a)+")"}),b.append("rect").style("stroke","#fff").style("fill","#fff").attr("rx",3).attr("ry",3),b.append("text").style("text-anchor",t?(a.startAngle+a.endAngle)/2<Math.PI?"start":"end":"middle").style("fill","#000")});var Z={},$=14,_=140,ab=function(a){return Math.floor(a[0]/_)*_+","+Math.floor(a[1]/$)*$};W.watchTransition(D,"pie labels").attr("transform",function(a,b){if(t){a.outerRadius=I[b]+10,a.innerRadius=I[b]+15;var c=(a.startAngle+a.endAngle)/2*(180/Math.PI);return(a.startAngle+a.endAngle)/2<Math.PI?c-=90:c+=90,"translate("+Y[b].centroid(a)+") rotate("+c+")"}a.outerRadius=H+10,a.innerRadius=H+15;var d=Y[b].centroid(a);if(a.value){var e=ab(d);Z[e]&&(d[1]-=$),Z[ab(d)]=!0}return"translate("+d+")"}),W.select(".nv-label text").style("text-anchor",function(a){return t?(a.startAngle+a.endAngle)/2<Math.PI?"start":"end":"middle"}).text(function(a,b){var c=(a.endAngle-a.startAngle)/(2*Math.PI),d="";if(!a.value||o>c)return"";if("function"==typeof n)d=n(a,b,{key:f(a.data),value:g(a.data),percent:k(c)});else switch(n){case"key":d=f(a.data);break;case"value":d=k(g(a.data));break;case"percent":d=d3.format("%")(c)}return d})}}),D.renderEnd("pie immediate"),b}var c={top:0,right:0,bottom:0,left:0},d=500,e=500,f=function(a){return a.x},g=function(a){return a.y},h=Math.floor(1e4*Math.random()),i=null,j=a.utils.defaultColor(),k=d3.format(",.2f"),l=!0,m=!1,n="key",o=.02,p=!1,q=!1,r=!0,s=0,t=!1,u=!1,v=!1,w=!1,x=0,y=.5,z=[],A=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove","renderEnd"),B=[],C=[],D=a.utils.renderWatch(A);return b.dispatch=A,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{arcsRadius:{get:function(){return z},set:function(a){z=a}},width:{get:function(){return d},set:function(a){d=a}},height:{get:function(){return e},set:function(a){e=a}},showLabels:{get:function(){return l},set:function(a){l=a}},title:{get:function(){return q},set:function(a){q=a}},titleOffset:{get:function(){return s},set:function(a){s=a}},labelThreshold:{get:function(){return o},set:function(a){o=a}},valueFormat:{get:function(){return k},set:function(a){k=a}},x:{get:function(){return f},set:function(a){f=a}},id:{get:function(){return h},set:function(a){h=a}},endAngle:{get:function(){return w},set:function(a){w=a}},startAngle:{get:function(){return u},set:function(a){u=a}},padAngle:{get:function(){return v},set:function(a){v=a}},cornerRadius:{get:function(){return x},set:function(a){x=a}},donutRatio:{get:function(){return y},set:function(a){y=a}},labelsOutside:{get:function(){return m},set:function(a){m=a}},labelSunbeamLayout:{get:function(){return t},set:function(a){t=a}},donut:{get:function(){return p},set:function(a){p=a}},growOnHover:{get:function(){return r},set:function(a){r=a}},pieLabelsOutside:{get:function(){return m},set:function(b){m=b,a.deprecated("pieLabelsOutside","use labelsOutside instead")}},donutLabelsOutside:{get:function(){return m},set:function(b){m=b,a.deprecated("donutLabelsOutside","use labelsOutside instead")}},labelFormat:{get:function(){return k},set:function(b){k=b,a.deprecated("labelFormat","use valueFormat instead")}},margin:{get:function(){return c},set:function(a){c.top="undefined"!=typeof a.top?a.top:c.top,c.right="undefined"!=typeof a.right?a.right:c.right,c.bottom="undefined"!=typeof a.bottom?a.bottom:c.bottom,c.left="undefined"!=typeof a.left?a.left:c.left}},y:{get:function(){return g},set:function(a){g=d3.functor(a)}},color:{get:function(){return j},set:function(b){j=a.utils.getColor(b)}},labelType:{get:function(){return n},set:function(a){n=a||"key"}}}),a.utils.initOptions(b),b},a.models.pieChart=function(){"use strict";function b(e){return q.reset(),q.models(c),e.each(function(e){var k=d3.select(this);a.utils.initSVG(k);var n=a.utils.availableWidth(g,k,f),o=a.utils.availableHeight(h,k,f);if(b.update=function(){k.transition().call(b)},b.container=this,l.setter(s(e),b.update).getter(r(e)).update(),l.disabled=e.map(function(a){return!!a.disabled}),!m){var q;m={};for(q in l)m[q]=l[q]instanceof Array?l[q].slice(0):l[q]}if(!e||!e.length)return a.utils.noData(b,k),b;k.selectAll(".nv-noData").remove();var t=k.selectAll("g.nv-wrap.nv-pieChart").data([e]),u=t.enter().append("g").attr("class","nvd3 nv-wrap nv-pieChart").append("g"),v=t.select("g");if(u.append("g").attr("class","nv-pieWrap"),u.append("g").attr("class","nv-legendWrap"),i)if("top"===j)d.width(n).key(c.x()),t.select(".nv-legendWrap").datum(e).call(d),f.top!=d.height()&&(f.top=d.height(),o=a.utils.availableHeight(h,k,f)),t.select(".nv-legendWrap").attr("transform","translate(0,"+-f.top+")");else if("right"===j){var w=a.models.legend().width();w>n/2&&(w=n/2),d.height(o).key(c.x()),d.width(w),n-=d.width(),t.select(".nv-legendWrap").datum(e).call(d).attr("transform","translate("+n+",0)")}t.attr("transform","translate("+f.left+","+f.top+")"),c.width(n).height(o);var x=v.select(".nv-pieWrap").datum([e]);d3.transition(x).call(c),d.dispatch.on("stateChange",function(a){for(var c in a)l[c]=a[c];p.stateChange(l),b.update()}),p.on("changeState",function(a){"undefined"!=typeof a.disabled&&(e.forEach(function(b,c){b.disabled=a.disabled[c]}),l.disabled=a.disabled),b.update()})}),q.renderEnd("pieChart immediate"),b}var c=a.models.pie(),d=a.models.legend(),e=a.models.tooltip(),f={top:30,right:20,bottom:20,left:20},g=null,h=null,i=!0,j="top",k=a.utils.defaultColor(),l=a.utils.state(),m=null,n=null,o=250,p=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState","renderEnd");e.headerEnabled(!1).duration(0).valueFormatter(function(a,b){return c.valueFormat()(a,b)});var q=a.utils.renderWatch(p),r=function(a){return function(){return{active:a.map(function(a){return!a.disabled})}}},s=function(a){return function(b){void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return c.dispatch.on("elementMouseover.tooltip",function(a){a.series={key:b.x()(a.data),value:b.y()(a.data),color:a.color},e.data(a).hidden(!1)}),c.dispatch.on("elementMouseout.tooltip",function(){e.hidden(!0)}),c.dispatch.on("elementMousemove.tooltip",function(){e.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.legend=d,b.dispatch=p,b.pie=c,b.tooltip=e,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{noData:{get:function(){return n},set:function(a){n=a}},showLegend:{get:function(){return i},set:function(a){i=a}},legendPosition:{get:function(){return j},set:function(a){j=a}},defaultState:{get:function(){return m},set:function(a){m=a}},tooltips:{get:function(){return e.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),e.enabled(!!b)}},tooltipContent:{get:function(){return e.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),e.contentGenerator(b)}},color:{get:function(){return k},set:function(a){k=a,d.color(k),c.color(k)}},duration:{get:function(){return o},set:function(a){o=a,q.reset(o)}},margin:{get:function(){return f},set:function(a){f.top=void 0!==a.top?a.top:f.top,f.right=void 0!==a.right?a.right:f.right,f.bottom=void 0!==a.bottom?a.bottom:f.bottom,f.left=void 0!==a.left?a.left:f.left}}}),a.utils.inheritOptions(b,c),a.utils.initOptions(b),b},a.models.scatter=function(){"use strict";function b(N){return P.reset(),N.each(function(b){function N(){if(O=!1,!w)return!1;if(M===!0){var a=d3.merge(b.map(function(a,b){return a.values.map(function(a,c){var d=p(a,c),e=q(a,c);return[m(d)+1e-4*Math.random(),n(e)+1e-4*Math.random(),b,c,a]}).filter(function(a,b){return x(a[4],b)})}));if(0==a.length)return!1;a.length<3&&(a.push([m.range()[0]-20,n.range()[0]-20,null,null]),a.push([m.range()[1]+20,n.range()[1]+20,null,null]),a.push([m.range()[0]-20,n.range()[0]+20,null,null]),a.push([m.range()[1]+20,n.range()[1]-20,null,null]));var c=d3.geom.polygon([[-10,-10],[-10,i+10],[h+10,i+10],[h+10,-10]]),d=d3.geom.voronoi(a).map(function(b,d){return{data:c.clip(b),series:a[d][2],point:a[d][3]}});U.select(".nv-point-paths").selectAll("path").remove();var e=U.select(".nv-point-paths").selectAll("path").data(d),f=e.enter().append("svg:path").attr("d",function(a){return a&&a.data&&0!==a.data.length?"M"+a.data.join(",")+"Z":"M 0 0"}).attr("id",function(a,b){return"nv-path-"+b}).attr("clip-path",function(a,b){return"url(#nv-clip-"+k+"-"+b+")"});C&&f.style("fill",d3.rgb(230,230,230)).style("fill-opacity",.4).style("stroke-opacity",1).style("stroke",d3.rgb(200,200,200)),B&&(U.select(".nv-point-clips").selectAll("clipPath").remove(),U.select(".nv-point-clips").selectAll("clipPath").data(a).enter().append("svg:clipPath").attr("id",function(a,b){return"nv-clip-"+k+"-"+b}).append("svg:circle").attr("cx",function(a){return a[0]}).attr("cy",function(a){return a[1]}).attr("r",D));var o=function(a,c){if(O)return 0;var d=b[a.series];if(void 0!==d){var e=d.values[a.point];e.color=j(d,a.series),e.x=p(e),e.y=q(e);var f=l.node().getBoundingClientRect(),h=window.pageYOffset||document.documentElement.scrollTop,i=window.pageXOffset||document.documentElement.scrollLeft,k={left:m(p(e,a.point))+f.left+i+g.left+10,top:n(q(e,a.point))+f.top+h+g.top+10};c({point:e,series:d,pos:k,seriesIndex:a.series,pointIndex:a.point})}};e.on("click",function(a){o(a,L.elementClick)}).on("dblclick",function(a){o(a,L.elementDblClick)}).on("mouseover",function(a){o(a,L.elementMouseover)}).on("mouseout",function(a){o(a,L.elementMouseout)})}else U.select(".nv-groups").selectAll(".nv-group").selectAll(".nv-point").on("click",function(a,c){if(O||!b[a.series])return 0;var d=b[a.series],e=d.values[c];L.elementClick({point:e,series:d,pos:[m(p(e,c))+g.left,n(q(e,c))+g.top],seriesIndex:a.series,pointIndex:c})}).on("dblclick",function(a,c){if(O||!b[a.series])return 0;var d=b[a.series],e=d.values[c];L.elementDblClick({point:e,series:d,pos:[m(p(e,c))+g.left,n(q(e,c))+g.top],seriesIndex:a.series,pointIndex:c})}).on("mouseover",function(a,c){if(O||!b[a.series])return 0;var d=b[a.series],e=d.values[c];L.elementMouseover({point:e,series:d,pos:[m(p(e,c))+g.left,n(q(e,c))+g.top],seriesIndex:a.series,pointIndex:c,color:j(a,c)})}).on("mouseout",function(a,c){if(O||!b[a.series])return 0;var d=b[a.series],e=d.values[c];L.elementMouseout({point:e,series:d,seriesIndex:a.series,pointIndex:c,color:j(a,c)})})}l=d3.select(this);var R=a.utils.availableWidth(h,l,g),S=a.utils.availableHeight(i,l,g);a.utils.initSVG(l),b.forEach(function(a,b){a.values.forEach(function(a){a.series=b})});var T=E&&F&&I?[]:d3.merge(b.map(function(a){return a.values.map(function(a,b){return{x:p(a,b),y:q(a,b),size:r(a,b)}})}));m.domain(E||d3.extent(T.map(function(a){return a.x}).concat(t))),m.range(y&&b[0]?G||[(R*z+R)/(2*b[0].values.length),R-R*(1+z)/(2*b[0].values.length)]:G||[0,R]),n.domain(F||d3.extent(T.map(function(a){return a.y}).concat(u))).range(H||[S,0]),o.domain(I||d3.extent(T.map(function(a){return a.size}).concat(v))).range(J||Q),K=m.domain()[0]===m.domain()[1]||n.domain()[0]===n.domain()[1],m.domain()[0]===m.domain()[1]&&m.domain(m.domain()[0]?[m.domain()[0]-.01*m.domain()[0],m.domain()[1]+.01*m.domain()[1]]:[-1,1]),n.domain()[0]===n.domain()[1]&&n.domain(n.domain()[0]?[n.domain()[0]-.01*n.domain()[0],n.domain()[1]+.01*n.domain()[1]]:[-1,1]),isNaN(m.domain()[0])&&m.domain([-1,1]),isNaN(n.domain()[0])&&n.domain([-1,1]),c=c||m,d=d||n,e=e||o;var U=l.selectAll("g.nv-wrap.nv-scatter").data([b]),V=U.enter().append("g").attr("class","nvd3 nv-wrap nv-scatter nv-chart-"+k),W=V.append("defs"),X=V.append("g"),Y=U.select("g");U.classed("nv-single-point",K),X.append("g").attr("class","nv-groups"),X.append("g").attr("class","nv-point-paths"),V.append("g").attr("class","nv-point-clips"),U.attr("transform","translate("+g.left+","+g.top+")"),W.append("clipPath").attr("id","nv-edge-clip-"+k).append("rect"),U.select("#nv-edge-clip-"+k+" rect").attr("width",R).attr("height",S>0?S:0),Y.attr("clip-path",A?"url(#nv-edge-clip-"+k+")":""),O=!0;var Z=U.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a){return a.key});Z.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),Z.exit().remove(),Z.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}),Z.watchTransition(P,"scatter: groups").style("fill",function(a,b){return j(a,b)}).style("stroke",function(a,b){return j(a,b)}).style("stroke-opacity",1).style("fill-opacity",.5);var $=Z.selectAll("path.nv-point").data(function(a){return a.values.map(function(a,b){return[a,b]}).filter(function(a,b){return x(a[0],b)})});$.enter().append("path").style("fill",function(a){return a.color}).style("stroke",function(a){return a.color}).attr("transform",function(a){return"translate("+c(p(a[0],a[1]))+","+d(q(a[0],a[1]))+")"}).attr("d",a.utils.symbol().type(function(a){return s(a[0])}).size(function(a){return o(r(a[0],a[1]))})),$.exit().remove(),Z.exit().selectAll("path.nv-point").watchTransition(P,"scatter exit").attr("transform",function(a){return"translate("+m(p(a[0],a[1]))+","+n(q(a[0],a[1]))+")"}).remove(),$.each(function(a){d3.select(this).classed("nv-point",!0).classed("nv-point-"+a[1],!0).classed("nv-noninteractive",!w).classed("hover",!1)}),$.watchTransition(P,"scatter points").attr("transform",function(a){return"translate("+m(p(a[0],a[1]))+","+n(q(a[0],a[1]))+")"}).attr("d",a.utils.symbol().type(function(a){return s(a[0])}).size(function(a){return o(r(a[0],a[1]))})),clearTimeout(f),f=setTimeout(N,300),c=m.copy(),d=n.copy(),e=o.copy()}),P.renderEnd("scatter immediate"),b}var c,d,e,f,g={top:0,right:0,bottom:0,left:0},h=null,i=null,j=a.utils.defaultColor(),k=Math.floor(1e5*Math.random()),l=null,m=d3.scale.linear(),n=d3.scale.linear(),o=d3.scale.linear(),p=function(a){return a.x},q=function(a){return a.y},r=function(a){return a.size||1},s=function(a){return a.shape||"circle"},t=[],u=[],v=[],w=!0,x=function(a){return!a.notActive},y=!1,z=.1,A=!1,B=!0,C=!1,D=function(){return 25},E=null,F=null,G=null,H=null,I=null,J=null,K=!1,L=d3.dispatch("elementClick","elementDblClick","elementMouseover","elementMouseout","renderEnd"),M=!0,N=250,O=!1,P=a.utils.renderWatch(L,N),Q=[16,256];return b.dispatch=L,b.options=a.utils.optionsFunc.bind(b),b._calls=new function(){this.clearHighlights=function(){return a.dom.write(function(){l.selectAll(".nv-point.hover").classed("hover",!1)}),null},this.highlightPoint=function(b,c,d){a.dom.write(function(){l.select(" .nv-series-"+b+" .nv-point-"+c).classed("hover",d)})}},L.on("elementMouseover.point",function(a){w&&b._calls.highlightPoint(a.seriesIndex,a.pointIndex,!0)}),L.on("elementMouseout.point",function(a){w&&b._calls.highlightPoint(a.seriesIndex,a.pointIndex,!1)}),b._options=Object.create({},{width:{get:function(){return h},set:function(a){h=a}},height:{get:function(){return i},set:function(a){i=a}},xScale:{get:function(){return m},set:function(a){m=a}},yScale:{get:function(){return n},set:function(a){n=a}},pointScale:{get:function(){return o},set:function(a){o=a}},xDomain:{get:function(){return E},set:function(a){E=a}},yDomain:{get:function(){return F},set:function(a){F=a}},pointDomain:{get:function(){return I},set:function(a){I=a}},xRange:{get:function(){return G},set:function(a){G=a}},yRange:{get:function(){return H},set:function(a){H=a}},pointRange:{get:function(){return J},set:function(a){J=a}},forceX:{get:function(){return t},set:function(a){t=a}},forceY:{get:function(){return u},set:function(a){u=a}},forcePoint:{get:function(){return v},set:function(a){v=a}},interactive:{get:function(){return w},set:function(a){w=a}},pointActive:{get:function(){return x},set:function(a){x=a}},padDataOuter:{get:function(){return z},set:function(a){z=a}},padData:{get:function(){return y},set:function(a){y=a}},clipEdge:{get:function(){return A},set:function(a){A=a}},clipVoronoi:{get:function(){return B},set:function(a){B=a}},clipRadius:{get:function(){return D},set:function(a){D=a}},showVoronoi:{get:function(){return C},set:function(a){C=a}},id:{get:function(){return k},set:function(a){k=a}},x:{get:function(){return p},set:function(a){p=d3.functor(a)}},y:{get:function(){return q},set:function(a){q=d3.functor(a)}},pointSize:{get:function(){return r},set:function(a){r=d3.functor(a)}},pointShape:{get:function(){return s},set:function(a){s=d3.functor(a)}},margin:{get:function(){return g},set:function(a){g.top=void 0!==a.top?a.top:g.top,g.right=void 0!==a.right?a.right:g.right,g.bottom=void 0!==a.bottom?a.bottom:g.bottom,g.left=void 0!==a.left?a.left:g.left}},duration:{get:function(){return N},set:function(a){N=a,P.reset(N)}},color:{get:function(){return j},set:function(b){j=a.utils.getColor(b)}},useVoronoi:{get:function(){return M},set:function(a){M=a,M===!1&&(B=!1)}}}),a.utils.initOptions(b),b},a.models.scatterChart=function(){"use strict";function b(z){return D.reset(),D.models(c),t&&D.models(d),u&&D.models(e),q&&D.models(g),r&&D.models(h),z.each(function(z){m=d3.select(this),a.utils.initSVG(m);var G=a.utils.availableWidth(k,m,j),H=a.utils.availableHeight(l,m,j);if(b.update=function(){0===A?m.call(b):m.transition().duration(A).call(b)},b.container=this,w.setter(F(z),b.update).getter(E(z)).update(),w.disabled=z.map(function(a){return!!a.disabled}),!x){var I;x={};for(I in w)x[I]=w[I]instanceof Array?w[I].slice(0):w[I]}if(!(z&&z.length&&z.filter(function(a){return a.values.length}).length))return a.utils.noData(b,m),D.renderEnd("scatter immediate"),b;m.selectAll(".nv-noData").remove(),o=c.xScale(),p=c.yScale();var J=m.selectAll("g.nv-wrap.nv-scatterChart").data([z]),K=J.enter().append("g").attr("class","nvd3 nv-wrap nv-scatterChart nv-chart-"+c.id()),L=K.append("g"),M=J.select("g");if(L.append("rect").attr("class","nvd3 nv-background").style("pointer-events","none"),L.append("g").attr("class","nv-x nv-axis"),L.append("g").attr("class","nv-y nv-axis"),L.append("g").attr("class","nv-scatterWrap"),L.append("g").attr("class","nv-regressionLinesWrap"),L.append("g").attr("class","nv-distWrap"),L.append("g").attr("class","nv-legendWrap"),v&&M.select(".nv-y.nv-axis").attr("transform","translate("+G+",0)"),s){var N=G;f.width(N),J.select(".nv-legendWrap").datum(z).call(f),j.top!=f.height()&&(j.top=f.height(),H=a.utils.availableHeight(l,m,j)),J.select(".nv-legendWrap").attr("transform","translate(0,"+-j.top+")")}J.attr("transform","translate("+j.left+","+j.top+")"),c.width(G).height(H).color(z.map(function(a,b){return a.color=a.color||n(a,b),a.color}).filter(function(a,b){return!z[b].disabled})),J.select(".nv-scatterWrap").datum(z.filter(function(a){return!a.disabled})).call(c),J.select(".nv-regressionLinesWrap").attr("clip-path","url(#nv-edge-clip-"+c.id()+")");var O=J.select(".nv-regressionLinesWrap").selectAll(".nv-regLines").data(function(a){return a});O.enter().append("g").attr("class","nv-regLines");var P=O.selectAll(".nv-regLine").data(function(a){return[a]});P.enter().append("line").attr("class","nv-regLine").style("stroke-opacity",0),P.filter(function(a){return a.intercept&&a.slope}).watchTransition(D,"scatterPlusLineChart: regline").attr("x1",o.range()[0]).attr("x2",o.range()[1]).attr("y1",function(a){return p(o.domain()[0]*a.slope+a.intercept)}).attr("y2",function(a){return p(o.domain()[1]*a.slope+a.intercept)}).style("stroke",function(a,b,c){return n(a,c)}).style("stroke-opacity",function(a){return a.disabled||"undefined"==typeof a.slope||"undefined"==typeof a.intercept?0:1}),t&&(d.scale(o)._ticks(a.utils.calcTicksX(G/100,z)).tickSize(-H,0),M.select(".nv-x.nv-axis").attr("transform","translate(0,"+p.range()[0]+")").call(d)),u&&(e.scale(p)._ticks(a.utils.calcTicksY(H/36,z)).tickSize(-G,0),M.select(".nv-y.nv-axis").call(e)),q&&(g.getData(c.x()).scale(o).width(G).color(z.map(function(a,b){return a.color||n(a,b)}).filter(function(a,b){return!z[b].disabled})),L.select(".nv-distWrap").append("g").attr("class","nv-distributionX"),M.select(".nv-distributionX").attr("transform","translate(0,"+p.range()[0]+")").datum(z.filter(function(a){return!a.disabled})).call(g)),r&&(h.getData(c.y()).scale(p).width(H).color(z.map(function(a,b){return a.color||n(a,b)
-}).filter(function(a,b){return!z[b].disabled})),L.select(".nv-distWrap").append("g").attr("class","nv-distributionY"),M.select(".nv-distributionY").attr("transform","translate("+(v?G:-h.size())+",0)").datum(z.filter(function(a){return!a.disabled})).call(h)),f.dispatch.on("stateChange",function(a){for(var c in a)w[c]=a[c];y.stateChange(w),b.update()}),y.on("changeState",function(a){"undefined"!=typeof a.disabled&&(z.forEach(function(b,c){b.disabled=a.disabled[c]}),w.disabled=a.disabled),b.update()}),c.dispatch.on("elementMouseout.tooltip",function(a){i.hidden(!0),m.select(".nv-chart-"+c.id()+" .nv-series-"+a.seriesIndex+" .nv-distx-"+a.pointIndex).attr("y1",0),m.select(".nv-chart-"+c.id()+" .nv-series-"+a.seriesIndex+" .nv-disty-"+a.pointIndex).attr("x2",h.size())}),c.dispatch.on("elementMouseover.tooltip",function(a){m.select(".nv-series-"+a.seriesIndex+" .nv-distx-"+a.pointIndex).attr("y1",a.pos.top-H-j.top),m.select(".nv-series-"+a.seriesIndex+" .nv-disty-"+a.pointIndex).attr("x2",a.pos.left+g.size()-j.left),i.position(a.pos).data(a).hidden(!1)}),B=o.copy(),C=p.copy()}),D.renderEnd("scatter with line immediate"),b}var c=a.models.scatter(),d=a.models.axis(),e=a.models.axis(),f=a.models.legend(),g=a.models.distribution(),h=a.models.distribution(),i=a.models.tooltip(),j={top:30,right:20,bottom:50,left:75},k=null,l=null,m=null,n=a.utils.defaultColor(),o=c.xScale(),p=c.yScale(),q=!1,r=!1,s=!0,t=!0,u=!0,v=!1,w=a.utils.state(),x=null,y=d3.dispatch("stateChange","changeState","renderEnd"),z=null,A=250;c.xScale(o).yScale(p),d.orient("bottom").tickPadding(10),e.orient(v?"right":"left").tickPadding(10),g.axis("x"),h.axis("y"),i.headerFormatter(function(a,b){return d.tickFormat()(a,b)}).valueFormatter(function(a,b){return e.tickFormat()(a,b)});var B,C,D=a.utils.renderWatch(y,A),E=function(a){return function(){return{active:a.map(function(a){return!a.disabled})}}},F=function(a){return function(b){void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return b.dispatch=y,b.scatter=c,b.legend=f,b.xAxis=d,b.yAxis=e,b.distX=g,b.distY=h,b.tooltip=i,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return k},set:function(a){k=a}},height:{get:function(){return l},set:function(a){l=a}},container:{get:function(){return m},set:function(a){m=a}},showDistX:{get:function(){return q},set:function(a){q=a}},showDistY:{get:function(){return r},set:function(a){r=a}},showLegend:{get:function(){return s},set:function(a){s=a}},showXAxis:{get:function(){return t},set:function(a){t=a}},showYAxis:{get:function(){return u},set:function(a){u=a}},defaultState:{get:function(){return x},set:function(a){x=a}},noData:{get:function(){return z},set:function(a){z=a}},duration:{get:function(){return A},set:function(a){A=a}},tooltips:{get:function(){return i.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),i.enabled(!!b)}},tooltipContent:{get:function(){return i.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),i.contentGenerator(b)}},tooltipXContent:{get:function(){return i.contentGenerator()},set:function(){a.deprecated("tooltipContent","This option is removed, put values into main tooltip.")}},tooltipYContent:{get:function(){return i.contentGenerator()},set:function(){a.deprecated("tooltipContent","This option is removed, put values into main tooltip.")}},margin:{get:function(){return j},set:function(a){j.top=void 0!==a.top?a.top:j.top,j.right=void 0!==a.right?a.right:j.right,j.bottom=void 0!==a.bottom?a.bottom:j.bottom,j.left=void 0!==a.left?a.left:j.left}},rightAlignYAxis:{get:function(){return v},set:function(a){v=a,e.orient(a?"right":"left")}},color:{get:function(){return n},set:function(b){n=a.utils.getColor(b),f.color(n),g.color(n),h.color(n)}}}),a.utils.inheritOptions(b,c),a.utils.initOptions(b),b},a.models.sparkline=function(){"use strict";function b(k){return k.each(function(b){var k=h-g.left-g.right,q=i-g.top-g.bottom;j=d3.select(this),a.utils.initSVG(j),l.domain(c||d3.extent(b,n)).range(e||[0,k]),m.domain(d||d3.extent(b,o)).range(f||[q,0]);{var r=j.selectAll("g.nv-wrap.nv-sparkline").data([b]),s=r.enter().append("g").attr("class","nvd3 nv-wrap nv-sparkline");s.append("g"),r.select("g")}r.attr("transform","translate("+g.left+","+g.top+")");var t=r.selectAll("path").data(function(a){return[a]});t.enter().append("path"),t.exit().remove(),t.style("stroke",function(a,b){return a.color||p(a,b)}).attr("d",d3.svg.line().x(function(a,b){return l(n(a,b))}).y(function(a,b){return m(o(a,b))}));var u=r.selectAll("circle.nv-point").data(function(a){function b(b){if(-1!=b){var c=a[b];return c.pointIndex=b,c}return null}var c=a.map(function(a,b){return o(a,b)}),d=b(c.lastIndexOf(m.domain()[1])),e=b(c.indexOf(m.domain()[0])),f=b(c.length-1);return[e,d,f].filter(function(a){return null!=a})});u.enter().append("circle"),u.exit().remove(),u.attr("cx",function(a){return l(n(a,a.pointIndex))}).attr("cy",function(a){return m(o(a,a.pointIndex))}).attr("r",2).attr("class",function(a){return n(a,a.pointIndex)==l.domain()[1]?"nv-point nv-currentValue":o(a,a.pointIndex)==m.domain()[0]?"nv-point nv-minValue":"nv-point nv-maxValue"})}),b}var c,d,e,f,g={top:2,right:0,bottom:2,left:0},h=400,i=32,j=null,k=!0,l=d3.scale.linear(),m=d3.scale.linear(),n=function(a){return a.x},o=function(a){return a.y},p=a.utils.getColor(["#000"]);return b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return h},set:function(a){h=a}},height:{get:function(){return i},set:function(a){i=a}},xDomain:{get:function(){return c},set:function(a){c=a}},yDomain:{get:function(){return d},set:function(a){d=a}},xRange:{get:function(){return e},set:function(a){e=a}},yRange:{get:function(){return f},set:function(a){f=a}},xScale:{get:function(){return l},set:function(a){l=a}},yScale:{get:function(){return m},set:function(a){m=a}},animate:{get:function(){return k},set:function(a){k=a}},x:{get:function(){return n},set:function(a){n=d3.functor(a)}},y:{get:function(){return o},set:function(a){o=d3.functor(a)}},margin:{get:function(){return g},set:function(a){g.top=void 0!==a.top?a.top:g.top,g.right=void 0!==a.right?a.right:g.right,g.bottom=void 0!==a.bottom?a.bottom:g.bottom,g.left=void 0!==a.left?a.left:g.left}},color:{get:function(){return p},set:function(b){p=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.sparklinePlus=function(){"use strict";function b(p){return p.each(function(p){function q(){if(!j){var a=z.selectAll(".nv-hoverValue").data(i),b=a.enter().append("g").attr("class","nv-hoverValue").style("stroke-opacity",0).style("fill-opacity",0);a.exit().transition().duration(250).style("stroke-opacity",0).style("fill-opacity",0).remove(),a.attr("transform",function(a){return"translate("+c(e.x()(p[a],a))+",0)"}).transition().duration(250).style("stroke-opacity",1).style("fill-opacity",1),i.length&&(b.append("line").attr("x1",0).attr("y1",-f.top).attr("x2",0).attr("y2",u),b.append("text").attr("class","nv-xValue").attr("x",-6).attr("y",-f.top).attr("text-anchor","end").attr("dy",".9em"),z.select(".nv-hoverValue .nv-xValue").text(k(e.x()(p[i[0]],i[0]))),b.append("text").attr("class","nv-yValue").attr("x",6).attr("y",-f.top).attr("text-anchor","start").attr("dy",".9em"),z.select(".nv-hoverValue .nv-yValue").text(l(e.y()(p[i[0]],i[0]))))}}function r(){function a(a,b){for(var c=Math.abs(e.x()(a[0],0)-b),d=0,f=0;f<a.length;f++)Math.abs(e.x()(a[f],f)-b)<c&&(c=Math.abs(e.x()(a[f],f)-b),d=f);return d}if(!j){var b=d3.mouse(this)[0]-f.left;i=[a(p,Math.round(c.invert(b)))],q()}}var s=d3.select(this);a.utils.initSVG(s);var t=a.utils.availableWidth(g,s,f),u=a.utils.availableHeight(h,s,f);if(b.update=function(){s.call(b)},b.container=this,!p||!p.length)return a.utils.noData(b,s),b;s.selectAll(".nv-noData").remove();var v=e.y()(p[p.length-1],p.length-1);c=e.xScale(),d=e.yScale();var w=s.selectAll("g.nv-wrap.nv-sparklineplus").data([p]),x=w.enter().append("g").attr("class","nvd3 nv-wrap nv-sparklineplus"),y=x.append("g"),z=w.select("g");y.append("g").attr("class","nv-sparklineWrap"),y.append("g").attr("class","nv-valueWrap"),y.append("g").attr("class","nv-hoverArea"),w.attr("transform","translate("+f.left+","+f.top+")");var A=z.select(".nv-sparklineWrap");if(e.width(t).height(u),A.call(e),m){var B=z.select(".nv-valueWrap"),C=B.selectAll(".nv-currentValue").data([v]);C.enter().append("text").attr("class","nv-currentValue").attr("dx",o?-8:8).attr("dy",".9em").style("text-anchor",o?"end":"start"),C.attr("x",t+(o?f.right:0)).attr("y",n?function(a){return d(a)}:0).style("fill",e.color()(p[p.length-1],p.length-1)).text(l(v))}y.select(".nv-hoverArea").append("rect").on("mousemove",r).on("click",function(){j=!j}).on("mouseout",function(){i=[],q()}),z.select(".nv-hoverArea rect").attr("transform",function(){return"translate("+-f.left+","+-f.top+")"}).attr("width",t+f.left+f.right).attr("height",u+f.top)}),b}var c,d,e=a.models.sparkline(),f={top:15,right:100,bottom:10,left:50},g=null,h=null,i=[],j=!1,k=d3.format(",r"),l=d3.format(",.2f"),m=!0,n=!0,o=!1,p=null;return b.sparkline=e,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return g},set:function(a){g=a}},height:{get:function(){return h},set:function(a){h=a}},xTickFormat:{get:function(){return k},set:function(a){k=a}},yTickFormat:{get:function(){return l},set:function(a){l=a}},showLastValue:{get:function(){return m},set:function(a){m=a}},alignValue:{get:function(){return n},set:function(a){n=a}},rightAlignValue:{get:function(){return o},set:function(a){o=a}},noData:{get:function(){return p},set:function(a){p=a}},margin:{get:function(){return f},set:function(a){f.top=void 0!==a.top?a.top:f.top,f.right=void 0!==a.right?a.right:f.right,f.bottom=void 0!==a.bottom?a.bottom:f.bottom,f.left=void 0!==a.left?a.left:f.left}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.stackedArea=function(){"use strict";function b(m){return u.reset(),u.models(r),m.each(function(m){var s=f-e.left-e.right,v=g-e.top-e.bottom;j=d3.select(this),a.utils.initSVG(j),c=r.xScale(),d=r.yScale();var w=m;m.forEach(function(a,b){a.seriesIndex=b,a.values=a.values.map(function(a,c){return a.index=c,a.seriesIndex=b,a})});var x=m.filter(function(a){return!a.disabled});m=d3.layout.stack().order(o).offset(n).values(function(a){return a.values}).x(k).y(l).out(function(a,b,c){a.display={y:c,y0:b}})(x);var y=j.selectAll("g.nv-wrap.nv-stackedarea").data([m]),z=y.enter().append("g").attr("class","nvd3 nv-wrap nv-stackedarea"),A=z.append("defs"),B=z.append("g"),C=y.select("g");B.append("g").attr("class","nv-areaWrap"),B.append("g").attr("class","nv-scatterWrap"),y.attr("transform","translate("+e.left+","+e.top+")"),0==r.forceY().length&&r.forceY().push(0),r.width(s).height(v).x(k).y(function(a){return a.display.y+a.display.y0}).forceY([0]).color(m.map(function(a){return a.color||h(a,a.seriesIndex)}));var D=C.select(".nv-scatterWrap").datum(m);D.call(r),A.append("clipPath").attr("id","nv-edge-clip-"+i).append("rect"),y.select("#nv-edge-clip-"+i+" rect").attr("width",s).attr("height",v),C.attr("clip-path",q?"url(#nv-edge-clip-"+i+")":"");var E=d3.svg.area().x(function(a,b){return c(k(a,b))}).y0(function(a){return d(a.display.y0)}).y1(function(a){return d(a.display.y+a.display.y0)}).interpolate(p),F=d3.svg.area().x(function(a,b){return c(k(a,b))}).y0(function(a){return d(a.display.y0)}).y1(function(a){return d(a.display.y0)}),G=C.select(".nv-areaWrap").selectAll("path.nv-area").data(function(a){return a});G.enter().append("path").attr("class",function(a,b){return"nv-area nv-area-"+b}).attr("d",function(a){return F(a.values,a.seriesIndex)}).on("mouseover",function(a){d3.select(this).classed("hover",!0),t.areaMouseover({point:a,series:a.key,pos:[d3.event.pageX,d3.event.pageY],seriesIndex:a.seriesIndex})}).on("mouseout",function(a){d3.select(this).classed("hover",!1),t.areaMouseout({point:a,series:a.key,pos:[d3.event.pageX,d3.event.pageY],seriesIndex:a.seriesIndex})}).on("click",function(a){d3.select(this).classed("hover",!1),t.areaClick({point:a,series:a.key,pos:[d3.event.pageX,d3.event.pageY],seriesIndex:a.seriesIndex})}),G.exit().remove(),G.style("fill",function(a){return a.color||h(a,a.seriesIndex)}).style("stroke",function(a){return a.color||h(a,a.seriesIndex)}),G.watchTransition(u,"stackedArea path").attr("d",function(a,b){return E(a.values,b)}),r.dispatch.on("elementMouseover.area",function(a){C.select(".nv-chart-"+i+" .nv-area-"+a.seriesIndex).classed("hover",!0)}),r.dispatch.on("elementMouseout.area",function(a){C.select(".nv-chart-"+i+" .nv-area-"+a.seriesIndex).classed("hover",!1)}),b.d3_stackedOffset_stackPercent=function(a){var b,c,d,e=a.length,f=a[0].length,g=[];for(c=0;f>c;++c){for(b=0,d=0;b<w.length;b++)d+=l(w[b].values[c]);if(d)for(b=0;e>b;b++)a[b][c][1]/=d;else for(b=0;e>b;b++)a[b][c][1]=0}for(c=0;f>c;++c)g[c]=0;return g}}),u.renderEnd("stackedArea immediate"),b}var c,d,e={top:0,right:0,bottom:0,left:0},f=960,g=500,h=a.utils.defaultColor(),i=Math.floor(1e5*Math.random()),j=null,k=function(a){return a.x},l=function(a){return a.y},m="stack",n="zero",o="default",p="linear",q=!1,r=a.models.scatter(),s=250,t=d3.dispatch("areaClick","areaMouseover","areaMouseout","renderEnd","elementClick","elementMouseover","elementMouseout");r.pointSize(2.2).pointDomain([2.2,2.2]);var u=a.utils.renderWatch(t,s);return b.dispatch=t,b.scatter=r,r.dispatch.on("elementClick",function(){t.elementClick.apply(this,arguments)}),r.dispatch.on("elementMouseover",function(){t.elementMouseover.apply(this,arguments)}),r.dispatch.on("elementMouseout",function(){t.elementMouseout.apply(this,arguments)}),b.interpolate=function(a){return arguments.length?(p=a,b):p},b.duration=function(a){return arguments.length?(s=a,u.reset(s),r.duration(s),b):s},b.dispatch=t,b.scatter=r,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return f},set:function(a){f=a}},height:{get:function(){return g},set:function(a){g=a}},clipEdge:{get:function(){return q},set:function(a){q=a}},offset:{get:function(){return n},set:function(a){n=a}},order:{get:function(){return o},set:function(a){o=a}},interpolate:{get:function(){return p},set:function(a){p=a}},x:{get:function(){return k},set:function(a){k=d3.functor(a)}},y:{get:function(){return l},set:function(a){l=d3.functor(a)}},margin:{get:function(){return e},set:function(a){e.top=void 0!==a.top?a.top:e.top,e.right=void 0!==a.right?a.right:e.right,e.bottom=void 0!==a.bottom?a.bottom:e.bottom,e.left=void 0!==a.left?a.left:e.left}},color:{get:function(){return h},set:function(b){h=a.utils.getColor(b)}},style:{get:function(){return m},set:function(a){switch(m=a){case"stack":b.offset("zero"),b.order("default");break;case"stream":b.offset("wiggle"),b.order("inside-out");break;case"stream-center":b.offset("silhouette"),b.order("inside-out");break;case"expand":b.offset("expand"),b.order("default");break;case"stack_percent":b.offset(b.d3_stackedOffset_stackPercent),b.order("default")}}},duration:{get:function(){return s},set:function(a){s=a,u.reset(s),r.duration(s)}}}),a.utils.inheritOptions(b,r),a.utils.initOptions(b),b},a.models.stackedAreaChart=function(){"use strict";function b(k){return F.reset(),F.models(e),r&&F.models(f),s&&F.models(g),k.each(function(k){var x=d3.select(this),F=this;a.utils.initSVG(x);var K=a.utils.availableWidth(m,x,l),L=a.utils.availableHeight(n,x,l);if(b.update=function(){x.transition().duration(C).call(b)},b.container=this,v.setter(I(k),b.update).getter(H(k)).update(),v.disabled=k.map(function(a){return!!a.disabled}),!w){var M;w={};for(M in v)w[M]=v[M]instanceof Array?v[M].slice(0):v[M]}if(!(k&&k.length&&k.filter(function(a){return a.values.length}).length))return a.utils.noData(b,x),b;x.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale();var N=x.selectAll("g.nv-wrap.nv-stackedAreaChart").data([k]),O=N.enter().append("g").attr("class","nvd3 nv-wrap nv-stackedAreaChart").append("g"),P=N.select("g");if(O.append("rect").style("opacity",0),O.append("g").attr("class","nv-x nv-axis"),O.append("g").attr("class","nv-y nv-axis"),O.append("g").attr("class","nv-stackedWrap"),O.append("g").attr("class","nv-legendWrap"),O.append("g").attr("class","nv-controlsWrap"),O.append("g").attr("class","nv-interactive"),P.select("rect").attr("width",K).attr("height",L),q){var Q=p?K-z:K;h.width(Q),P.select(".nv-legendWrap").datum(k).call(h),l.top!=h.height()&&(l.top=h.height(),L=a.utils.availableHeight(n,x,l)),P.select(".nv-legendWrap").attr("transform","translate("+(K-Q)+","+-l.top+")")}if(p){var R=[{key:B.stacked||"Stacked",metaKey:"Stacked",disabled:"stack"!=e.style(),style:"stack"},{key:B.stream||"Stream",metaKey:"Stream",disabled:"stream"!=e.style(),style:"stream"},{key:B.expanded||"Expanded",metaKey:"Expanded",disabled:"expand"!=e.style(),style:"expand"},{key:B.stack_percent||"Stack %",metaKey:"Stack_Percent",disabled:"stack_percent"!=e.style(),style:"stack_percent"}];z=A.length/3*260,R=R.filter(function(a){return-1!==A.indexOf(a.metaKey)}),i.width(z).color(["#444","#444","#444"]),P.select(".nv-controlsWrap").datum(R).call(i),l.top!=Math.max(i.height(),h.height())&&(l.top=Math.max(i.height(),h.height()),L=a.utils.availableHeight(n,x,l)),P.select(".nv-controlsWrap").attr("transform","translate(0,"+-l.top+")")}N.attr("transform","translate("+l.left+","+l.top+")"),t&&P.select(".nv-y.nv-axis").attr("transform","translate("+K+",0)"),u&&(j.width(K).height(L).margin({left:l.left,top:l.top}).svgContainer(x).xScale(c),N.select(".nv-interactive").call(j)),e.width(K).height(L);var S=P.select(".nv-stackedWrap").datum(k);if(S.transition().call(e),r&&(f.scale(c)._ticks(a.utils.calcTicksX(K/100,k)).tickSize(-L,0),P.select(".nv-x.nv-axis").attr("transform","translate(0,"+L+")"),P.select(".nv-x.nv-axis").transition().duration(0).call(f)),s){var T;if(T="wiggle"===e.offset()?0:a.utils.calcTicksY(L/36,k),g.scale(d)._ticks(T).tickSize(-K,0),"expand"===e.style()||"stack_percent"===e.style()){var U=g.tickFormat();D&&U===J||(D=U),g.tickFormat(J)}else D&&(g.tickFormat(D),D=null);P.select(".nv-y.nv-axis").transition().duration(0).call(g)}e.dispatch.on("areaClick.toggle",function(a){k.forEach(1===k.filter(function(a){return!a.disabled}).length?function(a){a.disabled=!1}:function(b,c){b.disabled=c!=a.seriesIndex}),v.disabled=k.map(function(a){return!!a.disabled}),y.stateChange(v),b.update()}),h.dispatch.on("stateChange",function(a){for(var c in a)v[c]=a[c];y.stateChange(v),b.update()}),i.dispatch.on("legendClick",function(a){a.disabled&&(R=R.map(function(a){return a.disabled=!0,a}),a.disabled=!1,e.style(a.style),v.style=e.style(),y.stateChange(v),b.update())}),j.dispatch.on("elementMousemove",function(c){e.clearHighlights();var d,g,h,i=[];if(k.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(f,j){g=a.interactiveBisect(f.values,c.pointXValue,b.x());var k=f.values[g],l=b.y()(k,g);if(null!=l&&e.highlightPoint(j,g,!0),"undefined"!=typeof k){"undefined"==typeof d&&(d=k),"undefined"==typeof h&&(h=b.xScale()(b.x()(k,g)));var m="expand"==e.style()?k.display.y:b.y()(k,g);i.push({key:f.key,value:m,color:o(f,f.seriesIndex),stackedValue:k.display})}}),i.reverse(),i.length>2){var m=b.yScale().invert(c.mouseY),n=null;i.forEach(function(a,b){m=Math.abs(m);var c=Math.abs(a.stackedValue.y0),d=Math.abs(a.stackedValue.y);return m>=c&&d+c>=m?void(n=b):void 0}),null!=n&&(i[n].highlight=!0)}var p=f.tickFormat()(b.x()(d,g)),q=j.tooltip.valueFormatter();"expand"===e.style()||"stack_percent"===e.style()?(E||(E=q),q=d3.format(".1%")):E&&(q=E,E=null),j.tooltip.position({left:h+l.left,top:c.mouseY+l.top}).chartContainer(F.parentNode).valueFormatter(q).data({value:p,series:i})(),j.renderGuideLine(h)}),j.dispatch.on("elementMouseout",function(){e.clearHighlights()}),y.on("changeState",function(a){"undefined"!=typeof a.disabled&&k.length===a.disabled.length&&(k.forEach(function(b,c){b.disabled=a.disabled[c]}),v.disabled=a.disabled),"undefined"!=typeof a.style&&(e.style(a.style),G=a.style),b.update()})}),F.renderEnd("stacked Area chart immediate"),b}var c,d,e=a.models.stackedArea(),f=a.models.axis(),g=a.models.axis(),h=a.models.legend(),i=a.models.legend(),j=a.interactiveGuideline(),k=a.models.tooltip(),l={top:30,right:25,bottom:50,left:60},m=null,n=null,o=a.utils.defaultColor(),p=!0,q=!0,r=!0,s=!0,t=!1,u=!1,v=a.utils.state(),w=null,x=null,y=d3.dispatch("stateChange","changeState","renderEnd"),z=250,A=["Stacked","Stream","Expanded"],B={},C=250;v.style=e.style(),f.orient("bottom").tickPadding(7),g.orient(t?"right":"left"),k.headerFormatter(function(a,b){return f.tickFormat()(a,b)}).valueFormatter(function(a,b){return g.tickFormat()(a,b)}),j.tooltip.headerFormatter(function(a,b){return f.tickFormat()(a,b)}).valueFormatter(function(a,b){return g.tickFormat()(a,b)});var D=null,E=null;i.updateState(!1);var F=a.utils.renderWatch(y),G=e.style(),H=function(a){return function(){return{active:a.map(function(a){return!a.disabled}),style:e.style()}}},I=function(a){return function(b){void 0!==b.style&&(G=b.style),void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}},J=d3.format("%");return e.dispatch.on("elementMouseover.tooltip",function(a){a.point.x=e.x()(a.point),a.point.y=e.y()(a.point),k.data(a).position(a.pos).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(){k.hidden(!0)}),b.dispatch=y,b.stacked=e,b.legend=h,b.controls=i,b.xAxis=f,b.yAxis=g,b.interactiveLayer=j,b.tooltip=k,b.dispatch=y,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return m},set:function(a){m=a}},height:{get:function(){return n},set:function(a){n=a}},showLegend:{get:function(){return q},set:function(a){q=a}},showXAxis:{get:function(){return r},set:function(a){r=a}},showYAxis:{get:function(){return s},set:function(a){s=a}},defaultState:{get:function(){return w},set:function(a){w=a}},noData:{get:function(){return x},set:function(a){x=a}},showControls:{get:function(){return p},set:function(a){p=a}},controlLabels:{get:function(){return B},set:function(a){B=a}},controlOptions:{get:function(){return A},set:function(a){A=a}},tooltips:{get:function(){return k.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),k.enabled(!!b)}},tooltipContent:{get:function(){return k.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),k.contentGenerator(b)}},margin:{get:function(){return l},set:function(a){l.top=void 0!==a.top?a.top:l.top,l.right=void 0!==a.right?a.right:l.right,l.bottom=void 0!==a.bottom?a.bottom:l.bottom,l.left=void 0!==a.left?a.left:l.left}},duration:{get:function(){return C},set:function(a){C=a,F.reset(C),e.duration(C),f.duration(C),g.duration(C)}},color:{get:function(){return o},set:function(b){o=a.utils.getColor(b),h.color(o),e.color(o)}},rightAlignYAxis:{get:function(){return t},set:function(a){t=a,g.orient(t?"right":"left")}},useInteractiveGuideline:{get:function(){return u},set:function(a){u=!!a,b.interactive(!a),b.useVoronoi(!a),e.scatter.interactive(!a)}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.sunburst=function(){"use strict";function b(u){return t.reset(),u.each(function(b){function t(a){a.x0=a.x,a.dx0=a.dx}function u(a){var b=d3.interpolate(p.domain(),[a.x,a.x+a.dx]),c=d3.interpolate(q.domain(),[a.y,1]),d=d3.interpolate(q.range(),[a.y?20:0,y]);return function(a,e){return e?function(){return s(a)}:function(e){return p.domain(b(e)),q.domain(c(e)).range(d(e)),s(a)}}}l=d3.select(this);var v,w=a.utils.availableWidth(g,l,f),x=a.utils.availableHeight(h,l,f),y=Math.min(w,x)/2;a.utils.initSVG(l);var z=l.selectAll(".nv-wrap.nv-sunburst").data(b),A=z.enter().append("g").attr("class","nvd3 nv-wrap nv-sunburst nv-chart-"+k),B=A.selectAll("nv-sunburst");z.attr("transform","translate("+w/2+","+x/2+")"),l.on("click",function(a,b){o.chartClick({data:a,index:b,pos:d3.event,id:k})}),q.range([0,y]),c=c||b,e=b[0],r.value(j[i]||j.count),v=B.data(r.nodes).enter().append("path").attr("d",s).style("fill",function(a){return m((a.children?a:a.parent).name)}).style("stroke","#FFF").on("click",function(a){d!==c&&c!==a&&(d=c),c=a,v.transition().duration(n).attrTween("d",u(a))}).each(t).on("dblclick",function(a){d.parent==a&&v.transition().duration(n).attrTween("d",u(e))}).each(t).on("mouseover",function(a){d3.select(this).classed("hover",!0).style("opacity",.8),o.elementMouseover({data:a,color:d3.select(this).style("fill")})}).on("mouseout",function(a){d3.select(this).classed("hover",!1).style("opacity",1),o.elementMouseout({data:a})}).on("mousemove",function(a){o.elementMousemove({data:a})})}),t.renderEnd("sunburst immediate"),b}var c,d,e,f={top:0,right:0,bottom:0,left:0},g=null,h=null,i="count",j={count:function(){return 1},size:function(a){return a.size}},k=Math.floor(1e4*Math.random()),l=null,m=a.utils.defaultColor(),n=500,o=d3.dispatch("chartClick","elementClick","elementDblClick","elementMousemove","elementMouseover","elementMouseout","renderEnd"),p=d3.scale.linear().range([0,2*Math.PI]),q=d3.scale.sqrt(),r=d3.layout.partition().sort(null).value(function(){return 1}),s=d3.svg.arc().startAngle(function(a){return Math.max(0,Math.min(2*Math.PI,p(a.x)))}).endAngle(function(a){return Math.max(0,Math.min(2*Math.PI,p(a.x+a.dx)))}).innerRadius(function(a){return Math.max(0,q(a.y))}).outerRadius(function(a){return Math.max(0,q(a.y+a.dy))}),t=a.utils.renderWatch(o);return b.dispatch=o,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return g},set:function(a){g=a}},height:{get:function(){return h},set:function(a){h=a}},mode:{get:function(){return i},set:function(a){i=a}},id:{get:function(){return k},set:function(a){k=a}},duration:{get:function(){return n},set:function(a){n=a}},margin:{get:function(){return f},set:function(a){f.top=void 0!=a.top?a.top:f.top,f.right=void 0!=a.right?a.right:f.right,f.bottom=void 0!=a.bottom?a.bottom:f.bottom,f.left=void 0!=a.left?a.left:f.left}},color:{get:function(){return m},set:function(b){m=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.sunburstChart=function(){"use strict";function b(d){return m.reset(),m.models(c),d.each(function(d){var h=d3.select(this);a.utils.initSVG(h);var i=a.utils.availableWidth(f,h,e),j=a.utils.availableHeight(g,h,e);if(b.update=function(){0===k?h.call(b):h.transition().duration(k).call(b)},b.container=this,!d||!d.length)return a.utils.noData(b,h),b;h.selectAll(".nv-noData").remove();var l=h.selectAll("g.nv-wrap.nv-sunburstChart").data(d),m=l.enter().append("g").attr("class","nvd3 nv-wrap nv-sunburstChart").append("g"),n=l.select("g");m.append("g").attr("class","nv-sunburstWrap"),l.attr("transform","translate("+e.left+","+e.top+")"),c.width(i).height(j);var o=n.select(".nv-sunburstWrap").datum(d);d3.transition(o).call(c)}),m.renderEnd("sunburstChart immediate"),b}var c=a.models.sunburst(),d=a.models.tooltip(),e={top:30,right:20,bottom:20,left:20},f=null,g=null,h=a.utils.defaultColor(),i=(Math.round(1e5*Math.random()),null),j=null,k=250,l=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState","renderEnd"),m=a.utils.renderWatch(l);return d.headerEnabled(!1).duration(0).valueFormatter(function(a){return a}),c.dispatch.on("elementMouseover.tooltip",function(a){a.series={key:a.data.name,value:a.data.size,color:a.color},d.data(a).hidden(!1)}),c.dispatch.on("elementMouseout.tooltip",function(){d.hidden(!0)}),c.dispatch.on("elementMousemove.tooltip",function(){d.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=l,b.sunburst=c,b.tooltip=d,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{noData:{get:function(){return j},set:function(a){j=a}},defaultState:{get:function(){return i},set:function(a){i=a}},color:{get:function(){return h},set:function(a){h=a,c.color(h)}},duration:{get:function(){return k},set:function(a){k=a,m.reset(k),c.duration(k)}},margin:{get:function(){return e},set:function(a){e.top=void 0!==a.top?a.top:e.top,e.right=void 0!==a.right?a.right:e.right,e.bottom=void 0!==a.bottom?a.bottom:e.bottom,e.left=void 0!==a.left?a.left:e.left}}}),a.utils.inheritOptions(b,c),a.utils.initOptions(b),b},a.version="1.8.1"}();
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/respond.min.js b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/respond.min.js
deleted file mode 100644
index 80a7b69..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/respond.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
- * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
- *  */
-
-!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/method_item.html.dist b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/method_item.html.dist
deleted file mode 100644
index 4bb0e42..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/method_item.html.dist
+++ /dev/null
@@ -1,11 +0,0 @@
-     <tr>
-      <td class="{{methods_level}}" colspan="4">{{name}}</td>
-      <td class="{{methods_level}} big">{{methods_bar}}</td>
-      <td class="{{methods_level}} small"><div align="right">{{methods_tested_percent}}</div></td>
-      <td class="{{methods_level}} small"><div align="right">{{methods_number}}</div></td>
-      <td class="{{methods_level}} small">{{crap}}</td>
-      <td class="{{lines_level}} big">{{lines_bar}}</td>
-      <td class="{{lines_level}} small"><div align="right">{{lines_executed_percent}}</div></td>
-      <td class="{{lines_level}} small"><div align="right">{{lines_number}}</div></td>
-     </tr>
-
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php
deleted file mode 100644
index c57f744..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php
+++ /dev/null
@@ -1,339 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Base class for nodes in the code coverage information tree.
- *
- * @since Class available since Release 1.1.0
- */
-abstract class PHP_CodeCoverage_Report_Node implements Countable
-{
-    /**
-     * @var string
-     */
-    protected $name;
-
-    /**
-     * @var string
-     */
-    protected $path;
-
-    /**
-     * @var array
-     */
-    protected $pathArray;
-
-    /**
-     * @var PHP_CodeCoverage_Report_Node
-     */
-    protected $parent;
-
-    /**
-     * @var string
-     */
-    protected $id;
-
-    /**
-     * Constructor.
-     *
-     * @param string                       $name
-     * @param PHP_CodeCoverage_Report_Node $parent
-     */
-    public function __construct($name, PHP_CodeCoverage_Report_Node $parent = null)
-    {
-        if (substr($name, -1) == '/') {
-            $name = substr($name, 0, -1);
-        }
-
-        $this->name   = $name;
-        $this->parent = $parent;
-    }
-
-    /**
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * @return string
-     */
-    public function getId()
-    {
-        if ($this->id === null) {
-            $parent = $this->getParent();
-
-            if ($parent === null) {
-                $this->id = 'index';
-            } else {
-                $parentId = $parent->getId();
-
-                if ($parentId == 'index') {
-                    $this->id = str_replace(':', '_', $this->name);
-                } else {
-                    $this->id = $parentId . '/' . $this->name;
-                }
-            }
-        }
-
-        return $this->id;
-    }
-
-    /**
-     * @return string
-     */
-    public function getPath()
-    {
-        if ($this->path === null) {
-            if ($this->parent === null || $this->parent->getPath() === null || $this->parent->getPath() === false) {
-                $this->path = $this->name;
-            } else {
-                $this->path = $this->parent->getPath() . '/' . $this->name;
-            }
-        }
-
-        return $this->path;
-    }
-
-    /**
-     * @return array
-     */
-    public function getPathAsArray()
-    {
-        if ($this->pathArray === null) {
-            if ($this->parent === null) {
-                $this->pathArray = array();
-            } else {
-                $this->pathArray = $this->parent->getPathAsArray();
-            }
-
-            $this->pathArray[] = $this;
-        }
-
-        return $this->pathArray;
-    }
-
-    /**
-     * @return PHP_CodeCoverage_Report_Node
-     */
-    public function getParent()
-    {
-        return $this->parent;
-    }
-
-    /**
-     * Returns the percentage of classes that has been tested.
-     *
-     * @param  bool $asString
-     * @return int
-     */
-    public function getTestedClassesPercent($asString = true)
-    {
-        return PHP_CodeCoverage_Util::percent(
-            $this->getNumTestedClasses(),
-            $this->getNumClasses(),
-            $asString
-        );
-    }
-
-    /**
-     * Returns the percentage of traits that has been tested.
-     *
-     * @param  bool $asString
-     * @return int
-     */
-    public function getTestedTraitsPercent($asString = true)
-    {
-        return PHP_CodeCoverage_Util::percent(
-            $this->getNumTestedTraits(),
-            $this->getNumTraits(),
-            $asString
-        );
-    }
-
-    /**
-     * Returns the percentage of traits that has been tested.
-     *
-     * @param  bool $asString
-     * @return int
-     * @since  Method available since Release 1.2.0
-     */
-    public function getTestedClassesAndTraitsPercent($asString = true)
-    {
-        return PHP_CodeCoverage_Util::percent(
-            $this->getNumTestedClassesAndTraits(),
-            $this->getNumClassesAndTraits(),
-            $asString
-        );
-    }
-
-    /**
-     * Returns the percentage of methods that has been tested.
-     *
-     * @param  bool $asString
-     * @return int
-     */
-    public function getTestedMethodsPercent($asString = true)
-    {
-        return PHP_CodeCoverage_Util::percent(
-            $this->getNumTestedMethods(),
-            $this->getNumMethods(),
-            $asString
-        );
-    }
-
-    /**
-     * Returns the percentage of executed lines.
-     *
-     * @param  bool $asString
-     * @return int
-     */
-    public function getLineExecutedPercent($asString = true)
-    {
-        return PHP_CodeCoverage_Util::percent(
-            $this->getNumExecutedLines(),
-            $this->getNumExecutableLines(),
-            $asString
-        );
-    }
-
-    /**
-     * Returns the number of classes and traits.
-     *
-     * @return int
-     * @since  Method available since Release 1.2.0
-     */
-    public function getNumClassesAndTraits()
-    {
-        return $this->getNumClasses() + $this->getNumTraits();
-    }
-
-    /**
-     * Returns the number of tested classes and traits.
-     *
-     * @return int
-     * @since  Method available since Release 1.2.0
-     */
-    public function getNumTestedClassesAndTraits()
-    {
-        return $this->getNumTestedClasses() + $this->getNumTestedTraits();
-    }
-
-    /**
-     * Returns the classes and traits of this node.
-     *
-     * @return array
-     * @since  Method available since Release 1.2.0
-     */
-    public function getClassesAndTraits()
-    {
-        return array_merge($this->getClasses(), $this->getTraits());
-    }
-
-    /**
-     * Returns the classes of this node.
-     *
-     * @return array
-     */
-    abstract public function getClasses();
-
-    /**
-     * Returns the traits of this node.
-     *
-     * @return array
-     */
-    abstract public function getTraits();
-
-    /**
-     * Returns the functions of this node.
-     *
-     * @return array
-     */
-    abstract public function getFunctions();
-
-    /**
-     * Returns the LOC/CLOC/NCLOC of this node.
-     *
-     * @return array
-     */
-    abstract public function getLinesOfCode();
-
-    /**
-     * Returns the number of executable lines.
-     *
-     * @return int
-     */
-    abstract public function getNumExecutableLines();
-
-    /**
-     * Returns the number of executed lines.
-     *
-     * @return int
-     */
-    abstract public function getNumExecutedLines();
-
-    /**
-     * Returns the number of classes.
-     *
-     * @return int
-     */
-    abstract public function getNumClasses();
-
-    /**
-     * Returns the number of tested classes.
-     *
-     * @return int
-     */
-    abstract public function getNumTestedClasses();
-
-    /**
-     * Returns the number of traits.
-     *
-     * @return int
-     */
-    abstract public function getNumTraits();
-
-    /**
-     * Returns the number of tested traits.
-     *
-     * @return int
-     */
-    abstract public function getNumTestedTraits();
-
-    /**
-     * Returns the number of methods.
-     *
-     * @return int
-     */
-    abstract public function getNumMethods();
-
-    /**
-     * Returns the number of tested methods.
-     *
-     * @return int
-     */
-    abstract public function getNumTestedMethods();
-
-    /**
-     * Returns the number of functions.
-     *
-     * @return int
-     */
-    abstract public function getNumFunctions();
-
-    /**
-     * Returns the number of tested functions.
-     *
-     * @return int
-     */
-    abstract public function getNumTestedFunctions();
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php
deleted file mode 100644
index dd71ecb..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php
+++ /dev/null
@@ -1,478 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Represents a directory in the code coverage information tree.
- *
- * @since Class available since Release 1.1.0
- */
-class PHP_CodeCoverage_Report_Node_Directory extends PHP_CodeCoverage_Report_Node implements IteratorAggregate
-{
-    /**
-     * @var PHP_CodeCoverage_Report_Node[]
-     */
-    protected $children = array();
-
-    /**
-     * @var PHP_CodeCoverage_Report_Node_Directory[]
-     */
-    protected $directories = array();
-
-    /**
-     * @var PHP_CodeCoverage_Report_Node_File[]
-     */
-    protected $files = array();
-
-    /**
-     * @var array
-     */
-    protected $classes;
-
-    /**
-     * @var array
-     */
-    protected $traits;
-
-    /**
-     * @var array
-     */
-    protected $functions;
-
-    /**
-     * @var array
-     */
-    protected $linesOfCode = null;
-
-    /**
-     * @var int
-     */
-    protected $numFiles = -1;
-
-    /**
-     * @var int
-     */
-    protected $numExecutableLines = -1;
-
-    /**
-     * @var int
-     */
-    protected $numExecutedLines = -1;
-
-    /**
-     * @var int
-     */
-    protected $numClasses = -1;
-
-    /**
-     * @var int
-     */
-    protected $numTestedClasses = -1;
-
-    /**
-     * @var int
-     */
-    protected $numTraits = -1;
-
-    /**
-     * @var int
-     */
-    protected $numTestedTraits = -1;
-
-    /**
-     * @var int
-     */
-    protected $numMethods = -1;
-
-    /**
-     * @var int
-     */
-    protected $numTestedMethods = -1;
-
-    /**
-     * @var int
-     */
-    protected $numFunctions = -1;
-
-    /**
-     * @var int
-     */
-    protected $numTestedFunctions = -1;
-
-    /**
-     * Returns the number of files in/under this node.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        if ($this->numFiles == -1) {
-            $this->numFiles = 0;
-
-            foreach ($this->children as $child) {
-                $this->numFiles += count($child);
-            }
-        }
-
-        return $this->numFiles;
-    }
-
-    /**
-     * Returns an iterator for this node.
-     *
-     * @return RecursiveIteratorIterator
-     */
-    public function getIterator()
-    {
-        return new RecursiveIteratorIterator(
-            new PHP_CodeCoverage_Report_Node_Iterator($this),
-            RecursiveIteratorIterator::SELF_FIRST
-        );
-    }
-
-    /**
-     * Adds a new directory.
-     *
-     * @param  string                                 $name
-     * @return PHP_CodeCoverage_Report_Node_Directory
-     */
-    public function addDirectory($name)
-    {
-        $directory = new self($name, $this);
-
-        $this->children[]    = $directory;
-        $this->directories[] = &$this->children[count($this->children) - 1];
-
-        return $directory;
-    }
-
-    /**
-     * Adds a new file.
-     *
-     * @param  string                            $name
-     * @param  array                             $coverageData
-     * @param  array                             $testData
-     * @param  bool                              $cacheTokens
-     * @return PHP_CodeCoverage_Report_Node_File
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function addFile($name, array $coverageData, array $testData, $cacheTokens)
-    {
-        $file = new PHP_CodeCoverage_Report_Node_File(
-            $name,
-            $this,
-            $coverageData,
-            $testData,
-            $cacheTokens
-        );
-
-        $this->children[] = $file;
-        $this->files[]    = &$this->children[count($this->children) - 1];
-
-        $this->numExecutableLines = -1;
-        $this->numExecutedLines   = -1;
-
-        return $file;
-    }
-
-    /**
-     * Returns the directories in this directory.
-     *
-     * @return array
-     */
-    public function getDirectories()
-    {
-        return $this->directories;
-    }
-
-    /**
-     * Returns the files in this directory.
-     *
-     * @return array
-     */
-    public function getFiles()
-    {
-        return $this->files;
-    }
-
-    /**
-     * Returns the child nodes of this node.
-     *
-     * @return array
-     */
-    public function getChildNodes()
-    {
-        return $this->children;
-    }
-
-    /**
-     * Returns the classes of this node.
-     *
-     * @return array
-     */
-    public function getClasses()
-    {
-        if ($this->classes === null) {
-            $this->classes = array();
-
-            foreach ($this->children as $child) {
-                $this->classes = array_merge(
-                    $this->classes,
-                    $child->getClasses()
-                );
-            }
-        }
-
-        return $this->classes;
-    }
-
-    /**
-     * Returns the traits of this node.
-     *
-     * @return array
-     */
-    public function getTraits()
-    {
-        if ($this->traits === null) {
-            $this->traits = array();
-
-            foreach ($this->children as $child) {
-                $this->traits = array_merge(
-                    $this->traits,
-                    $child->getTraits()
-                );
-            }
-        }
-
-        return $this->traits;
-    }
-
-    /**
-     * Returns the functions of this node.
-     *
-     * @return array
-     */
-    public function getFunctions()
-    {
-        if ($this->functions === null) {
-            $this->functions = array();
-
-            foreach ($this->children as $child) {
-                $this->functions = array_merge(
-                    $this->functions,
-                    $child->getFunctions()
-                );
-            }
-        }
-
-        return $this->functions;
-    }
-
-    /**
-     * Returns the LOC/CLOC/NCLOC of this node.
-     *
-     * @return array
-     */
-    public function getLinesOfCode()
-    {
-        if ($this->linesOfCode === null) {
-            $this->linesOfCode = array('loc' => 0, 'cloc' => 0, 'ncloc' => 0);
-
-            foreach ($this->children as $child) {
-                $linesOfCode = $child->getLinesOfCode();
-
-                $this->linesOfCode['loc']   += $linesOfCode['loc'];
-                $this->linesOfCode['cloc']  += $linesOfCode['cloc'];
-                $this->linesOfCode['ncloc'] += $linesOfCode['ncloc'];
-            }
-        }
-
-        return $this->linesOfCode;
-    }
-
-    /**
-     * Returns the number of executable lines.
-     *
-     * @return int
-     */
-    public function getNumExecutableLines()
-    {
-        if ($this->numExecutableLines == -1) {
-            $this->numExecutableLines = 0;
-
-            foreach ($this->children as $child) {
-                $this->numExecutableLines += $child->getNumExecutableLines();
-            }
-        }
-
-        return $this->numExecutableLines;
-    }
-
-    /**
-     * Returns the number of executed lines.
-     *
-     * @return int
-     */
-    public function getNumExecutedLines()
-    {
-        if ($this->numExecutedLines == -1) {
-            $this->numExecutedLines = 0;
-
-            foreach ($this->children as $child) {
-                $this->numExecutedLines += $child->getNumExecutedLines();
-            }
-        }
-
-        return $this->numExecutedLines;
-    }
-
-    /**
-     * Returns the number of classes.
-     *
-     * @return int
-     */
-    public function getNumClasses()
-    {
-        if ($this->numClasses == -1) {
-            $this->numClasses = 0;
-
-            foreach ($this->children as $child) {
-                $this->numClasses += $child->getNumClasses();
-            }
-        }
-
-        return $this->numClasses;
-    }
-
-    /**
-     * Returns the number of tested classes.
-     *
-     * @return int
-     */
-    public function getNumTestedClasses()
-    {
-        if ($this->numTestedClasses == -1) {
-            $this->numTestedClasses = 0;
-
-            foreach ($this->children as $child) {
-                $this->numTestedClasses += $child->getNumTestedClasses();
-            }
-        }
-
-        return $this->numTestedClasses;
-    }
-
-    /**
-     * Returns the number of traits.
-     *
-     * @return int
-     */
-    public function getNumTraits()
-    {
-        if ($this->numTraits == -1) {
-            $this->numTraits = 0;
-
-            foreach ($this->children as $child) {
-                $this->numTraits += $child->getNumTraits();
-            }
-        }
-
-        return $this->numTraits;
-    }
-
-    /**
-     * Returns the number of tested traits.
-     *
-     * @return int
-     */
-    public function getNumTestedTraits()
-    {
-        if ($this->numTestedTraits == -1) {
-            $this->numTestedTraits = 0;
-
-            foreach ($this->children as $child) {
-                $this->numTestedTraits += $child->getNumTestedTraits();
-            }
-        }
-
-        return $this->numTestedTraits;
-    }
-
-    /**
-     * Returns the number of methods.
-     *
-     * @return int
-     */
-    public function getNumMethods()
-    {
-        if ($this->numMethods == -1) {
-            $this->numMethods = 0;
-
-            foreach ($this->children as $child) {
-                $this->numMethods += $child->getNumMethods();
-            }
-        }
-
-        return $this->numMethods;
-    }
-
-    /**
-     * Returns the number of tested methods.
-     *
-     * @return int
-     */
-    public function getNumTestedMethods()
-    {
-        if ($this->numTestedMethods == -1) {
-            $this->numTestedMethods = 0;
-
-            foreach ($this->children as $child) {
-                $this->numTestedMethods += $child->getNumTestedMethods();
-            }
-        }
-
-        return $this->numTestedMethods;
-    }
-
-    /**
-     * Returns the number of functions.
-     *
-     * @return int
-     */
-    public function getNumFunctions()
-    {
-        if ($this->numFunctions == -1) {
-            $this->numFunctions = 0;
-
-            foreach ($this->children as $child) {
-                $this->numFunctions += $child->getNumFunctions();
-            }
-        }
-
-        return $this->numFunctions;
-    }
-
-    /**
-     * Returns the number of tested functions.
-     *
-     * @return int
-     */
-    public function getNumTestedFunctions()
-    {
-        if ($this->numTestedFunctions == -1) {
-            $this->numTestedFunctions = 0;
-
-            foreach ($this->children as $child) {
-                $this->numTestedFunctions += $child->getNumTestedFunctions();
-            }
-        }
-
-        return $this->numTestedFunctions;
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php
deleted file mode 100644
index 32e43a6..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php
+++ /dev/null
@@ -1,679 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Represents a file in the code coverage information tree.
- *
- * @since Class available since Release 1.1.0
- */
-class PHP_CodeCoverage_Report_Node_File extends PHP_CodeCoverage_Report_Node
-{
-    /**
-     * @var array
-     */
-    protected $coverageData;
-
-    /**
-     * @var array
-     */
-    protected $testData;
-
-    /**
-     * @var int
-     */
-    protected $numExecutableLines = 0;
-
-    /**
-     * @var int
-     */
-    protected $numExecutedLines = 0;
-
-    /**
-     * @var array
-     */
-    protected $classes = array();
-
-    /**
-     * @var array
-     */
-    protected $traits = array();
-
-    /**
-     * @var array
-     */
-    protected $functions = array();
-
-    /**
-     * @var array
-     */
-    protected $linesOfCode = array();
-
-    /**
-     * @var int
-     */
-    protected $numTestedTraits = 0;
-
-    /**
-     * @var int
-     */
-    protected $numTestedClasses = 0;
-
-    /**
-     * @var int
-     */
-    protected $numMethods = null;
-
-    /**
-     * @var int
-     */
-    protected $numTestedMethods = null;
-
-    /**
-     * @var int
-     */
-    protected $numTestedFunctions = null;
-
-    /**
-     * @var array
-     */
-    protected $startLines = array();
-
-    /**
-     * @var array
-     */
-    protected $endLines = array();
-
-    /**
-     * @var bool
-     */
-    protected $cacheTokens;
-
-    /**
-     * Constructor.
-     *
-     * @param  string                       $name
-     * @param  PHP_CodeCoverage_Report_Node $parent
-     * @param  array                        $coverageData
-     * @param  array                        $testData
-     * @param  bool                         $cacheTokens
-     * @throws PHP_CodeCoverage_Exception
-     */
-    public function __construct($name, PHP_CodeCoverage_Report_Node $parent, array $coverageData, array $testData, $cacheTokens)
-    {
-        if (!is_bool($cacheTokens)) {
-            throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
-                1,
-                'boolean'
-            );
-        }
-
-        parent::__construct($name, $parent);
-
-        $this->coverageData = $coverageData;
-        $this->testData     = $testData;
-        $this->cacheTokens  = $cacheTokens;
-
-        $this->calculateStatistics();
-    }
-
-    /**
-     * Returns the number of files in/under this node.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return 1;
-    }
-
-    /**
-     * Returns the code coverage data of this node.
-     *
-     * @return array
-     */
-    public function getCoverageData()
-    {
-        return $this->coverageData;
-    }
-
-    /**
-     * Returns the test data of this node.
-     *
-     * @return array
-     */
-    public function getTestData()
-    {
-        return $this->testData;
-    }
-
-    /**
-     * Returns the classes of this node.
-     *
-     * @return array
-     */
-    public function getClasses()
-    {
-        return $this->classes;
-    }
-
-    /**
-     * Returns the traits of this node.
-     *
-     * @return array
-     */
-    public function getTraits()
-    {
-        return $this->traits;
-    }
-
-    /**
-     * Returns the functions of this node.
-     *
-     * @return array
-     */
-    public function getFunctions()
-    {
-        return $this->functions;
-    }
-
-    /**
-     * Returns the LOC/CLOC/NCLOC of this node.
-     *
-     * @return array
-     */
-    public function getLinesOfCode()
-    {
-        return $this->linesOfCode;
-    }
-
-    /**
-     * Returns the number of executable lines.
-     *
-     * @return int
-     */
-    public function getNumExecutableLines()
-    {
-        return $this->numExecutableLines;
-    }
-
-    /**
-     * Returns the number of executed lines.
-     *
-     * @return int
-     */
-    public function getNumExecutedLines()
-    {
-        return $this->numExecutedLines;
-    }
-
-    /**
-     * Returns the number of classes.
-     *
-     * @return int
-     */
-    public function getNumClasses()
-    {
-        return count($this->classes);
-    }
-
-    /**
-     * Returns the number of tested classes.
-     *
-     * @return int
-     */
-    public function getNumTestedClasses()
-    {
-        return $this->numTestedClasses;
-    }
-
-    /**
-     * Returns the number of traits.
-     *
-     * @return int
-     */
-    public function getNumTraits()
-    {
-        return count($this->traits);
-    }
-
-    /**
-     * Returns the number of tested traits.
-     *
-     * @return int
-     */
-    public function getNumTestedTraits()
-    {
-        return $this->numTestedTraits;
-    }
-
-    /**
-     * Returns the number of methods.
-     *
-     * @return int
-     */
-    public function getNumMethods()
-    {
-        if ($this->numMethods === null) {
-            $this->numMethods = 0;
-
-            foreach ($this->classes as $class) {
-                foreach ($class['methods'] as $method) {
-                    if ($method['executableLines'] > 0) {
-                        $this->numMethods++;
-                    }
-                }
-            }
-
-            foreach ($this->traits as $trait) {
-                foreach ($trait['methods'] as $method) {
-                    if ($method['executableLines'] > 0) {
-                        $this->numMethods++;
-                    }
-                }
-            }
-        }
-
-        return $this->numMethods;
-    }
-
-    /**
-     * Returns the number of tested methods.
-     *
-     * @return int
-     */
-    public function getNumTestedMethods()
-    {
-        if ($this->numTestedMethods === null) {
-            $this->numTestedMethods = 0;
-
-            foreach ($this->classes as $class) {
-                foreach ($class['methods'] as $method) {
-                    if ($method['executableLines'] > 0 &&
-                        $method['coverage'] == 100) {
-                        $this->numTestedMethods++;
-                    }
-                }
-            }
-
-            foreach ($this->traits as $trait) {
-                foreach ($trait['methods'] as $method) {
-                    if ($method['executableLines'] > 0 &&
-                        $method['coverage'] == 100) {
-                        $this->numTestedMethods++;
-                    }
-                }
-            }
-        }
-
-        return $this->numTestedMethods;
-    }
-
-    /**
-     * Returns the number of functions.
-     *
-     * @return int
-     */
-    public function getNumFunctions()
-    {
-        return count($this->functions);
-    }
-
-    /**
-     * Returns the number of tested functions.
-     *
-     * @return int
-     */
-    public function getNumTestedFunctions()
-    {
-        if ($this->numTestedFunctions === null) {
-            $this->numTestedFunctions = 0;
-
-            foreach ($this->functions as $function) {
-                if ($function['executableLines'] > 0 &&
-                    $function['coverage'] == 100) {
-                    $this->numTestedFunctions++;
-                }
-            }
-        }
-
-        return $this->numTestedFunctions;
-    }
-
-    /**
-     * Calculates coverage statistics for the file.
-     */
-    protected function calculateStatistics()
-    {
-        $classStack = $functionStack = array();
-
-        if ($this->cacheTokens) {
-            $tokens = PHP_Token_Stream_CachingFactory::get($this->getPath());
-        } else {
-            $tokens = new PHP_Token_Stream($this->getPath());
-        }
-
-        $this->processClasses($tokens);
-        $this->processTraits($tokens);
-        $this->processFunctions($tokens);
-        $this->linesOfCode = $tokens->getLinesOfCode();
-        unset($tokens);
-
-        for ($lineNumber = 1; $lineNumber <= $this->linesOfCode['loc']; $lineNumber++) {
-            if (isset($this->startLines[$lineNumber])) {
-                // Start line of a class.
-                if (isset($this->startLines[$lineNumber]['className'])) {
-                    if (isset($currentClass)) {
-                        $classStack[] = &$currentClass;
-                    }
-
-                    $currentClass = &$this->startLines[$lineNumber];
-                } // Start line of a trait.
-                elseif (isset($this->startLines[$lineNumber]['traitName'])) {
-                    $currentTrait = &$this->startLines[$lineNumber];
-                } // Start line of a method.
-                elseif (isset($this->startLines[$lineNumber]['methodName'])) {
-                    $currentMethod = &$this->startLines[$lineNumber];
-                } // Start line of a function.
-                elseif (isset($this->startLines[$lineNumber]['functionName'])) {
-                    if (isset($currentFunction)) {
-                        $functionStack[] = &$currentFunction;
-                    }
-
-                    $currentFunction = &$this->startLines[$lineNumber];
-                }
-            }
-
-            if (isset($this->coverageData[$lineNumber])) {
-                if (isset($currentClass)) {
-                    $currentClass['executableLines']++;
-                }
-
-                if (isset($currentTrait)) {
-                    $currentTrait['executableLines']++;
-                }
-
-                if (isset($currentMethod)) {
-                    $currentMethod['executableLines']++;
-                }
-
-                if (isset($currentFunction)) {
-                    $currentFunction['executableLines']++;
-                }
-
-                $this->numExecutableLines++;
-
-                if (count($this->coverageData[$lineNumber]) > 0) {
-                    if (isset($currentClass)) {
-                        $currentClass['executedLines']++;
-                    }
-
-                    if (isset($currentTrait)) {
-                        $currentTrait['executedLines']++;
-                    }
-
-                    if (isset($currentMethod)) {
-                        $currentMethod['executedLines']++;
-                    }
-
-                    if (isset($currentFunction)) {
-                        $currentFunction['executedLines']++;
-                    }
-
-                    $this->numExecutedLines++;
-                }
-            }
-
-            if (isset($this->endLines[$lineNumber])) {
-                // End line of a class.
-                if (isset($this->endLines[$lineNumber]['className'])) {
-                    unset($currentClass);
-
-                    if ($classStack) {
-                        end($classStack);
-                        $key          = key($classStack);
-                        $currentClass = &$classStack[$key];
-                        unset($classStack[$key]);
-                    }
-                } // End line of a trait.
-                elseif (isset($this->endLines[$lineNumber]['traitName'])) {
-                    unset($currentTrait);
-                } // End line of a method.
-                elseif (isset($this->endLines[$lineNumber]['methodName'])) {
-                    unset($currentMethod);
-                } // End line of a function.
-                elseif (isset($this->endLines[$lineNumber]['functionName'])) {
-                    unset($currentFunction);
-
-                    if ($functionStack) {
-                        end($functionStack);
-                        $key             = key($functionStack);
-                        $currentFunction = &$functionStack[$key];
-                        unset($functionStack[$key]);
-                    }
-                }
-            }
-        }
-
-        foreach ($this->traits as &$trait) {
-            foreach ($trait['methods'] as &$method) {
-                if ($method['executableLines'] > 0) {
-                    $method['coverage'] = ($method['executedLines'] /
-                            $method['executableLines']) * 100;
-                } else {
-                    $method['coverage'] = 100;
-                }
-
-                $method['crap'] = $this->crap(
-                    $method['ccn'],
-                    $method['coverage']
-                );
-
-                $trait['ccn'] += $method['ccn'];
-            }
-
-            if ($trait['executableLines'] > 0) {
-                $trait['coverage'] = ($trait['executedLines'] /
-                        $trait['executableLines']) * 100;
-            } else {
-                $trait['coverage'] = 100;
-            }
-
-            if ($trait['coverage'] == 100) {
-                $this->numTestedClasses++;
-            }
-
-            $trait['crap'] = $this->crap(
-                $trait['ccn'],
-                $trait['coverage']
-            );
-        }
-
-        foreach ($this->classes as &$class) {
-            foreach ($class['methods'] as &$method) {
-                if ($method['executableLines'] > 0) {
-                    $method['coverage'] = ($method['executedLines'] /
-                            $method['executableLines']) * 100;
-                } else {
-                    $method['coverage'] = 100;
-                }
-
-                $method['crap'] = $this->crap(
-                    $method['ccn'],
-                    $method['coverage']
-                );
-
-                $class['ccn'] += $method['ccn'];
-            }
-
-            if ($class['executableLines'] > 0) {
-                $class['coverage'] = ($class['executedLines'] /
-                        $class['executableLines']) * 100;
-            } else {
-                $class['coverage'] = 100;
-            }
-
-            if ($class['coverage'] == 100) {
-                $this->numTestedClasses++;
-            }
-
-            $class['crap'] = $this->crap(
-                $class['ccn'],
-                $class['coverage']
-            );
-        }
-    }
-
-    /**
-     * @param PHP_Token_Stream $tokens
-     */
-    protected function processClasses(PHP_Token_Stream $tokens)
-    {
-        $classes = $tokens->getClasses();
-        unset($tokens);
-
-        $link = $this->getId() . '.html#';
-
-        foreach ($classes as $className => $class) {
-            $this->classes[$className] = array(
-                'className'       => $className,
-                'methods'         => array(),
-                'startLine'       => $class['startLine'],
-                'executableLines' => 0,
-                'executedLines'   => 0,
-                'ccn'             => 0,
-                'coverage'        => 0,
-                'crap'            => 0,
-                'package'         => $class['package'],
-                'link'            => $link . $class['startLine']
-            );
-
-            $this->startLines[$class['startLine']] = &$this->classes[$className];
-            $this->endLines[$class['endLine']]     = &$this->classes[$className];
-
-            foreach ($class['methods'] as $methodName => $method) {
-                $this->classes[$className]['methods'][$methodName] = array(
-                    'methodName'      => $methodName,
-                    'signature'       => $method['signature'],
-                    'startLine'       => $method['startLine'],
-                    'endLine'         => $method['endLine'],
-                    'executableLines' => 0,
-                    'executedLines'   => 0,
-                    'ccn'             => $method['ccn'],
-                    'coverage'        => 0,
-                    'crap'            => 0,
-                    'link'            => $link . $method['startLine']
-                );
-
-                $this->startLines[$method['startLine']] = &$this->classes[$className]['methods'][$methodName];
-                $this->endLines[$method['endLine']]     = &$this->classes[$className]['methods'][$methodName];
-            }
-        }
-    }
-
-    /**
-     * @param PHP_Token_Stream $tokens
-     */
-    protected function processTraits(PHP_Token_Stream $tokens)
-    {
-        $traits = $tokens->getTraits();
-        unset($tokens);
-
-        $link = $this->getId() . '.html#';
-
-        foreach ($traits as $traitName => $trait) {
-            $this->traits[$traitName] = array(
-                'traitName'       => $traitName,
-                'methods'         => array(),
-                'startLine'       => $trait['startLine'],
-                'executableLines' => 0,
-                'executedLines'   => 0,
-                'ccn'             => 0,
-                'coverage'        => 0,
-                'crap'            => 0,
-                'package'         => $trait['package'],
-                'link'            => $link . $trait['startLine']
-            );
-
-            $this->startLines[$trait['startLine']] = &$this->traits[$traitName];
-            $this->endLines[$trait['endLine']]     = &$this->traits[$traitName];
-
-            foreach ($trait['methods'] as $methodName => $method) {
-                $this->traits[$traitName]['methods'][$methodName] = array(
-                    'methodName'      => $methodName,
-                    'signature'       => $method['signature'],
-                    'startLine'       => $method['startLine'],
-                    'endLine'         => $method['endLine'],
-                    'executableLines' => 0,
-                    'executedLines'   => 0,
-                    'ccn'             => $method['ccn'],
-                    'coverage'        => 0,
-                    'crap'            => 0,
-                    'link'            => $link . $method['startLine']
-                );
-
-                $this->startLines[$method['startLine']] = &$this->traits[$traitName]['methods'][$methodName];
-                $this->endLines[$method['endLine']]     = &$this->traits[$traitName]['methods'][$methodName];
-            }
-        }
-    }
-
-    /**
-     * @param PHP_Token_Stream $tokens
-     */
-    protected function processFunctions(PHP_Token_Stream $tokens)
-    {
-        $functions = $tokens->getFunctions();
-        unset($tokens);
-
-        $link = $this->getId() . '.html#';
-
-        foreach ($functions as $functionName => $function) {
-            $this->functions[$functionName] = array(
-                'functionName'    => $functionName,
-                'signature'       => $function['signature'],
-                'startLine'       => $function['startLine'],
-                'executableLines' => 0,
-                'executedLines'   => 0,
-                'ccn'             => $function['ccn'],
-                'coverage'        => 0,
-                'crap'            => 0,
-                'link'            => $link . $function['startLine']
-            );
-
-            $this->startLines[$function['startLine']] = &$this->functions[$functionName];
-            $this->endLines[$function['endLine']]     = &$this->functions[$functionName];
-        }
-    }
-
-    /**
-     * Calculates the Change Risk Anti-Patterns (CRAP) index for a unit of code
-     * based on its cyclomatic complexity and percentage of code coverage.
-     *
-     * @param  int    $ccn
-     * @param  float  $coverage
-     * @return string
-     * @since  Method available since Release 1.2.0
-     */
-    protected function crap($ccn, $coverage)
-    {
-        if ($coverage == 0) {
-            return (string) (pow($ccn, 2) + $ccn);
-        }
-
-        if ($coverage >= 95) {
-            return (string) $ccn;
-        }
-
-        return sprintf(
-            '%01.2F',
-            pow($ccn, 2) * pow(1 - $coverage/100, 3) + $ccn
-        );
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php
deleted file mode 100644
index f468b6b..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Recursive iterator for PHP_CodeCoverage_Report_Node object graphs.
- *
- * @since Class available since Release 1.1.0
- */
-class PHP_CodeCoverage_Report_Node_Iterator implements RecursiveIterator
-{
-    /**
-     * @var int
-     */
-    protected $position;
-
-    /**
-     * @var PHP_CodeCoverage_Report_Node[]
-     */
-    protected $nodes;
-
-    /**
-     * Constructor.
-     *
-     * @param PHP_CodeCoverage_Report_Node_Directory $node
-     */
-    public function __construct(PHP_CodeCoverage_Report_Node_Directory $node)
-    {
-        $this->nodes = $node->getChildNodes();
-    }
-
-    /**
-     * Rewinds the Iterator to the first element.
-     */
-    public function rewind()
-    {
-        $this->position = 0;
-    }
-
-    /**
-     * Checks if there is a current element after calls to rewind() or next().
-     *
-     * @return bool
-     */
-    public function valid()
-    {
-        return $this->position < count($this->nodes);
-    }
-
-    /**
-     * Returns the key of the current element.
-     *
-     * @return int
-     */
-    public function key()
-    {
-        return $this->position;
-    }
-
-    /**
-     * Returns the current element.
-     *
-     * @return PHPUnit_Framework_Test
-     */
-    public function current()
-    {
-        return $this->valid() ? $this->nodes[$this->position] : null;
-    }
-
-    /**
-     * Moves forward to next element.
-     */
-    public function next()
-    {
-        $this->position++;
-    }
-
-    /**
-     * Returns the sub iterator for the current element.
-     *
-     * @return PHP_CodeCoverage_Report_Node_Iterator
-     */
-    public function getChildren()
-    {
-        return new self(
-            $this->nodes[$this->position]
-        );
-    }
-
-    /**
-     * Checks whether the current element has children.
-     *
-     * @return bool
-     */
-    public function hasChildren()
-    {
-        return $this->nodes[$this->position] instanceof PHP_CodeCoverage_Report_Node_Directory;
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php
deleted file mode 100644
index f4e5a0f..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Uses var_export() to write a PHP_CodeCoverage object to a file.
- *
- * @since Class available since Release 1.1.0
- */
-class PHP_CodeCoverage_Report_PHP
-{
-    /**
-     * @param  PHP_CodeCoverage $coverage
-     * @param  string           $target
-     * @return string
-     */
-    public function process(PHP_CodeCoverage $coverage, $target = null)
-    {
-        $filter = $coverage->filter();
-
-        $output = sprintf(
-            '<?php
-$coverage = new PHP_CodeCoverage;
-$coverage->setData(%s);
-$coverage->setTests(%s);
-
-$filter = $coverage->filter();
-$filter->setBlacklistedFiles(%s);
-$filter->setWhitelistedFiles(%s);
-
-return $coverage;',
-            var_export($coverage->getData(true), 1),
-            var_export($coverage->getTests(), 1),
-            var_export($filter->getBlacklistedFiles(), 1),
-            var_export($filter->getWhitelistedFiles(), 1)
-        );
-
-        if ($target !== null) {
-            return file_put_contents($target, $output);
-        } else {
-            return $output;
-        }
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php
deleted file mode 100644
index 7dc2545..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php
+++ /dev/null
@@ -1,246 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Generates human readable output from an PHP_CodeCoverage object.
- *
- * The output gets put into a text file our written to the CLI.
- *
- * @since Class available since Release 1.1.0
- */
-class PHP_CodeCoverage_Report_Text
-{
-    protected $lowUpperBound;
-    protected $highLowerBound;
-    protected $showUncoveredFiles;
-    protected $showOnlySummary;
-
-    protected $colors = array(
-        'green'  => "\x1b[30;42m",
-        'yellow' => "\x1b[30;43m",
-        'red'    => "\x1b[37;41m",
-        'header' => "\x1b[1;37;40m",
-        'reset'  => "\x1b[0m",
-        'eol'    => "\x1b[2K",
-    );
-
-    public function __construct($lowUpperBound, $highLowerBound, $showUncoveredFiles, $showOnlySummary)
-    {
-        $this->lowUpperBound      = $lowUpperBound;
-        $this->highLowerBound     = $highLowerBound;
-        $this->showUncoveredFiles = $showUncoveredFiles;
-        $this->showOnlySummary    = $showOnlySummary;
-    }
-
-    /**
-     * @param  PHP_CodeCoverage $coverage
-     * @param  bool             $showColors
-     * @return string
-     */
-    public function process(PHP_CodeCoverage $coverage, $showColors = false)
-    {
-        $output = PHP_EOL . PHP_EOL;
-        $report = $coverage->getReport();
-        unset($coverage);
-
-        $colors = array(
-            'header'  => '',
-            'classes' => '',
-            'methods' => '',
-            'lines'   => '',
-            'reset'   => '',
-            'eol'     => ''
-        );
-
-        if ($showColors) {
-            $colors['classes'] = $this->getCoverageColor(
-                $report->getNumTestedClassesAndTraits(),
-                $report->getNumClassesAndTraits()
-            );
-            $colors['methods'] = $this->getCoverageColor(
-                $report->getNumTestedMethods(),
-                $report->getNumMethods()
-            );
-            $colors['lines']   = $this->getCoverageColor(
-                $report->getNumExecutedLines(),
-                $report->getNumExecutableLines()
-            );
-            $colors['reset']   = $this->colors['reset'];
-            $colors['header']  = $this->colors['header'];
-            $colors['eol']     = $this->colors['eol'];
-        }
-
-        $classes = sprintf(
-            '  Classes: %6s (%d/%d)',
-            PHP_CodeCoverage_Util::percent(
-                $report->getNumTestedClassesAndTraits(),
-                $report->getNumClassesAndTraits(),
-                true
-            ),
-            $report->getNumTestedClassesAndTraits(),
-            $report->getNumClassesAndTraits()
-        );
-
-        $methods = sprintf(
-            '  Methods: %6s (%d/%d)',
-            PHP_CodeCoverage_Util::percent(
-                $report->getNumTestedMethods(),
-                $report->getNumMethods(),
-                true
-            ),
-            $report->getNumTestedMethods(),
-            $report->getNumMethods()
-        );
-
-        $lines = sprintf(
-            '  Lines:   %6s (%d/%d)',
-            PHP_CodeCoverage_Util::percent(
-                $report->getNumExecutedLines(),
-                $report->getNumExecutableLines(),
-                true
-            ),
-            $report->getNumExecutedLines(),
-            $report->getNumExecutableLines()
-        );
-
-        $padding = max(array_map('strlen', array($classes, $methods, $lines)));
-
-        if ($this->showOnlySummary) {
-            $title   = 'Code Coverage Report Summary:';
-            $padding = max($padding, strlen($title));
-
-            $output .= $this->format($colors['header'], $padding, $title);
-        } else {
-            $date  = date('  Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);
-            $title = 'Code Coverage Report:';
-
-            $output .= $this->format($colors['header'], $padding, $title);
-            $output .= $this->format($colors['header'], $padding, $date);
-            $output .= $this->format($colors['header'], $padding, '');
-            $output .= $this->format($colors['header'], $padding, ' Summary:');
-        }
-
-        $output .= $this->format($colors['classes'], $padding, $classes);
-        $output .= $this->format($colors['methods'], $padding, $methods);
-        $output .= $this->format($colors['lines'], $padding, $lines);
-
-        if ($this->showOnlySummary) {
-            return $output . PHP_EOL;
-        }
-
-        $classCoverage = array();
-
-        foreach ($report as $item) {
-            if (!$item instanceof PHP_CodeCoverage_Report_Node_File) {
-                continue;
-            }
-
-            $classes  = $item->getClassesAndTraits();
-
-            foreach ($classes as $className => $class) {
-                $classStatements        = 0;
-                $coveredClassStatements = 0;
-                $coveredMethods         = 0;
-                $classMethods           = 0;
-
-                foreach ($class['methods'] as $method) {
-                    if ($method['executableLines'] == 0) {
-                        continue;
-                    }
-
-                    $classMethods++;
-                    $classStatements        += $method['executableLines'];
-                    $coveredClassStatements += $method['executedLines'];
-                    if ($method['coverage'] == 100) {
-                        $coveredMethods++;
-                    }
-                }
-
-                if (!empty($class['package']['namespace'])) {
-                    $namespace = '\\' . $class['package']['namespace'] . '::';
-                } elseif (!empty($class['package']['fullPackage'])) {
-                    $namespace = '@' . $class['package']['fullPackage'] . '::';
-                } else {
-                    $namespace = '';
-                }
-
-                $classCoverage[$namespace . $className] = array(
-                    'namespace'         => $namespace,
-                    'className '        => $className,
-                    'methodsCovered'    => $coveredMethods,
-                    'methodCount'       => $classMethods,
-                    'statementsCovered' => $coveredClassStatements,
-                    'statementCount'    => $classStatements,
-                );
-            }
-        }
-
-        ksort($classCoverage);
-
-        $methodColor = '';
-        $linesColor  = '';
-        $resetColor  = '';
-
-        foreach ($classCoverage as $fullQualifiedPath => $classInfo) {
-            if ($classInfo['statementsCovered'] != 0 ||
-                $this->showUncoveredFiles) {
-                if ($showColors) {
-                    $methodColor = $this->getCoverageColor($classInfo['methodsCovered'], $classInfo['methodCount']);
-                    $linesColor  = $this->getCoverageColor($classInfo['statementsCovered'], $classInfo['statementCount']);
-                    $resetColor  = $colors['reset'];
-                }
-
-                $output .= PHP_EOL . $fullQualifiedPath . PHP_EOL
-                    . '  ' . $methodColor . 'Methods: ' . $this->printCoverageCounts($classInfo['methodsCovered'], $classInfo['methodCount'], 2) . $resetColor . ' '
-                    . '  ' . $linesColor  . 'Lines: ' . $this->printCoverageCounts($classInfo['statementsCovered'], $classInfo['statementCount'], 3) . $resetColor
-                ;
-            }
-        }
-
-        return $output . PHP_EOL;
-    }
-
-    protected function getCoverageColor($numberOfCoveredElements, $totalNumberOfElements)
-    {
-        $coverage = PHP_CodeCoverage_Util::percent(
-            $numberOfCoveredElements,
-            $totalNumberOfElements
-        );
-
-        if ($coverage >= $this->highLowerBound) {
-            return $this->colors['green'];
-        } elseif ($coverage > $this->lowUpperBound) {
-            return $this->colors['yellow'];
-        }
-
-        return $this->colors['red'];
-    }
-
-    protected function printCoverageCounts($numberOfCoveredElements, $totalNumberOfElements, $presicion)
-    {
-        $format = '%' . $presicion . 's';
-
-        return PHP_CodeCoverage_Util::percent(
-            $numberOfCoveredElements,
-            $totalNumberOfElements,
-            true,
-            true
-        ) .
-        ' (' . sprintf($format, $numberOfCoveredElements) . '/' .
-        sprintf($format, $totalNumberOfElements) . ')';
-    }
-
-    private function format($color, $padding, $string)
-    {
-        $reset = $color ? $this->colors['reset'] : '';
-
-        return $color . str_pad($string, $padding) . $reset . PHP_EOL;
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php
deleted file mode 100644
index 5177b2b..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML
-{
-    /**
-     * @var string
-     */
-    private $target;
-
-    /**
-     * @var PHP_CodeCoverage_Report_XML_Project
-     */
-    private $project;
-
-    public function process(PHP_CodeCoverage $coverage, $target)
-    {
-        if (substr($target, -1, 1) != DIRECTORY_SEPARATOR) {
-            $target .= DIRECTORY_SEPARATOR;
-        }
-
-        $this->target = $target;
-        $this->initTargetDirectory($target);
-
-        $report = $coverage->getReport();
-
-        $this->project = new PHP_CodeCoverage_Report_XML_Project(
-            $coverage->getReport()->getName()
-        );
-
-        $this->processTests($coverage->getTests());
-        $this->processDirectory($report, $this->project);
-
-        $index                     = $this->project->asDom();
-        $index->formatOutput       = true;
-        $index->preserveWhiteSpace = false;
-        $index->save($target . '/index.xml');
-    }
-
-    private function initTargetDirectory($dir)
-    {
-        if (file_exists($dir)) {
-            if (!is_dir($dir)) {
-                throw new PHP_CodeCoverage_Exception(
-                    "'$dir' exists but is not a directory."
-                );
-            }
-
-            if (!is_writable($dir)) {
-                throw new PHP_CodeCoverage_Exception(
-                    "'$dir' exists but is not writable."
-                );
-            }
-        } elseif (!@mkdir($dir, 0777, true)) {
-            throw new PHP_CodeCoverage_Exception(
-                "'$dir' could not be created."
-            );
-        }
-    }
-
-    private function processDirectory(PHP_CodeCoverage_Report_Node_Directory $directory, PHP_CodeCoverage_Report_XML_Node $context)
-    {
-        $dirObject = $context->addDirectory($directory->getName());
-
-        $this->setTotals($directory, $dirObject->getTotals());
-
-        foreach ($directory as $node) {
-            if ($node instanceof PHP_CodeCoverage_Report_Node_Directory) {
-                $this->processDirectory($node, $dirObject);
-                continue;
-            }
-
-            if ($node instanceof PHP_CodeCoverage_Report_Node_File) {
-                $this->processFile($node, $dirObject);
-                continue;
-            }
-
-            throw new PHP_CodeCoverage_Exception(
-                'Unknown node type for XML report'
-            );
-        }
-    }
-
-    private function processFile(PHP_CodeCoverage_Report_Node_File $file, PHP_CodeCoverage_Report_XML_Directory $context)
-    {
-        $fileObject = $context->addFile(
-            $file->getName(),
-            $file->getId() . '.xml'
-        );
-
-        $this->setTotals($file, $fileObject->getTotals());
-
-        $fileReport = new PHP_CodeCoverage_Report_XML_File_Report(
-            $file->getName()
-        );
-
-        $this->setTotals($file, $fileReport->getTotals());
-
-        foreach ($file->getClassesAndTraits() as $unit) {
-            $this->processUnit($unit, $fileReport);
-        }
-
-        foreach ($file->getFunctions() as $function) {
-            $this->processFunction($function, $fileReport);
-        }
-
-        foreach ($file->getCoverageData() as $line => $tests) {
-            if (!is_array($tests) || count($tests) == 0) {
-                continue;
-            }
-
-            $coverage = $fileReport->getLineCoverage($line);
-
-            foreach ($tests as $test) {
-                $coverage->addTest($test);
-            }
-
-            $coverage->finalize();
-        }
-
-        $this->initTargetDirectory(
-            $this->target . dirname($file->getId()) . '/'
-        );
-
-        $fileDom                     = $fileReport->asDom();
-        $fileDom->formatOutput       = true;
-        $fileDom->preserveWhiteSpace = false;
-        $fileDom->save($this->target . $file->getId() . '.xml');
-    }
-
-    private function processUnit($unit, PHP_CodeCoverage_Report_XML_File_Report $report)
-    {
-        if (isset($unit['className'])) {
-            $unitObject = $report->getClassObject($unit['className']);
-        } else {
-            $unitObject = $report->getTraitObject($unit['traitName']);
-        }
-
-        $unitObject->setLines(
-            $unit['startLine'],
-            $unit['executableLines'],
-            $unit['executedLines']
-        );
-
-        $unitObject->setCrap($unit['crap']);
-
-        $unitObject->setPackage(
-            $unit['package']['fullPackage'],
-            $unit['package']['package'],
-            $unit['package']['subpackage'],
-            $unit['package']['category']
-        );
-
-        $unitObject->setNamespace($unit['package']['namespace']);
-
-        foreach ($unit['methods'] as $method) {
-            $methodObject = $unitObject->addMethod($method['methodName']);
-            $methodObject->setSignature($method['signature']);
-            $methodObject->setLines($method['startLine'], $method['endLine']);
-            $methodObject->setCrap($method['crap']);
-            $methodObject->setTotals(
-                $method['executableLines'],
-                $method['executedLines'],
-                $method['coverage']
-            );
-        }
-    }
-
-    private function processFunction($function, PHP_CodeCoverage_Report_XML_File_Report $report)
-    {
-        $functionObject = $report->getFunctionObject($function['functionName']);
-
-        $functionObject->setSignature($function['signature']);
-        $functionObject->setLines($function['startLine']);
-        $functionObject->setCrap($function['crap']);
-        $functionObject->setTotals($function['executableLines'], $function['executedLines'], $function['coverage']);
-    }
-
-    private function processTests(array $tests)
-    {
-        $testsObject = $this->project->getTests();
-
-        foreach ($tests as $test => $result) {
-            if ($test == 'UNCOVERED_FILES_FROM_WHITELIST') {
-                continue;
-            }
-
-            $testsObject->addTest($test, $result);
-        }
-    }
-
-    private function setTotals(PHP_CodeCoverage_Report_Node $node, PHP_CodeCoverage_Report_XML_Totals $totals)
-    {
-        $loc = $node->getLinesOfCode();
-
-        $totals->setNumLines(
-            $loc['loc'],
-            $loc['cloc'],
-            $loc['ncloc'],
-            $node->getNumExecutableLines(),
-            $node->getNumExecutedLines()
-        );
-
-        $totals->setNumClasses(
-            $node->getNumClasses(),
-            $node->getNumTestedClasses()
-        );
-
-        $totals->setNumTraits(
-            $node->getNumTraits(),
-            $node->getNumTestedTraits()
-        );
-
-        $totals->setNumMethods(
-            $node->getNumMethods(),
-            $node->getNumTestedMethods()
-        );
-
-        $totals->setNumFunctions(
-            $node->getNumFunctions(),
-            $node->getNumTestedFunctions()
-        );
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php
deleted file mode 100644
index 8e292b5..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML_Directory extends PHP_CodeCoverage_Report_XML_Node
-{
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php
deleted file mode 100644
index 3c72bab..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML_File
-{
-    /**
-     * @var DOMDocument
-     */
-    protected $dom;
-
-    /**
-     * @var DOMElement
-     */
-    protected $contextNode;
-
-    public function __construct(DOMElement $context)
-    {
-        $this->dom         = $context->ownerDocument;
-        $this->contextNode = $context;
-    }
-
-    public function getTotals()
-    {
-        $totalsContainer = $this->contextNode->firstChild;
-
-        if (!$totalsContainer) {
-            $totalsContainer = $this->contextNode->appendChild(
-                $this->dom->createElementNS(
-                    'http://schema.phpunit.de/coverage/1.0',
-                    'totals'
-                )
-            );
-        }
-
-        return new PHP_CodeCoverage_Report_XML_Totals($totalsContainer);
-    }
-
-    public function getLineCoverage($line)
-    {
-        $coverage = $this->contextNode->getElementsByTagNameNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'coverage'
-        )->item(0);
-
-        if (!$coverage) {
-            $coverage = $this->contextNode->appendChild(
-                $this->dom->createElementNS(
-                    'http://schema.phpunit.de/coverage/1.0',
-                    'coverage'
-                )
-            );
-        }
-
-        $lineNode = $coverage->appendChild(
-            $this->dom->createElementNS(
-                'http://schema.phpunit.de/coverage/1.0',
-                'line'
-            )
-        );
-
-        return new PHP_CodeCoverage_Report_XML_File_Coverage($lineNode, $line);
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php
deleted file mode 100644
index 29a4e2b..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML_File_Coverage
-{
-    /**
-     * @var XMLWriter
-     */
-    private $writer;
-
-    /**
-     * @var DOMElement
-     */
-    private $contextNode;
-
-    /**
-     * @var bool
-     */
-    private $finalized = false;
-
-    public function __construct(DOMElement $context, $line)
-    {
-        $this->contextNode = $context;
-
-        $this->writer = new XMLWriter();
-        $this->writer->openMemory();
-        $this->writer->startElementNs(null, $context->nodeName, 'http://schema.phpunit.de/coverage/1.0');
-        $this->writer->writeAttribute('nr', $line);
-    }
-
-    public function addTest($test)
-    {
-        if ($this->finalized) {
-            throw new PHP_CodeCoverage_Exception('Coverage Report already finalized');
-        }
-
-        $this->writer->startElement('covered');
-        $this->writer->writeAttribute('by', $test);
-        $this->writer->endElement();
-    }
-
-    public function finalize()
-    {
-        $this->writer->endElement();
-
-        $fragment = $this->contextNode->ownerDocument->createDocumentFragment();
-        $fragment->appendXML($this->writer->outputMemory());
-
-        $this->contextNode->parentNode->replaceChild(
-            $fragment,
-            $this->contextNode
-        );
-
-        $this->finalized = true;
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php
deleted file mode 100644
index 917628f..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML_File_Method
-{
-    /**
-     * @var DOMElement
-     */
-    private $contextNode;
-
-    public function __construct(DOMElement $context, $name)
-    {
-        $this->contextNode = $context;
-
-        $this->setName($name);
-    }
-
-    private function setName($name)
-    {
-        $this->contextNode->setAttribute('name', $name);
-    }
-
-    public function setSignature($signature)
-    {
-        $this->contextNode->setAttribute('signature', $signature);
-    }
-
-    public function setLines($start, $end = null)
-    {
-        $this->contextNode->setAttribute('start', $start);
-
-        if ($end !== null) {
-            $this->contextNode->setAttribute('end', $end);
-        }
-    }
-
-    public function setTotals($executable, $executed, $coverage)
-    {
-        $this->contextNode->setAttribute('executable', $executable);
-        $this->contextNode->setAttribute('executed', $executed);
-        $this->contextNode->setAttribute('coverage', $coverage);
-    }
-
-    public function setCrap($crap)
-    {
-        $this->contextNode->setAttribute('crap', $crap);
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php
deleted file mode 100644
index a6fe7ec..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML_File_Report extends PHP_CodeCoverage_Report_XML_File
-{
-    public function __construct($name)
-    {
-        $this->dom = new DOMDocument;
-        $this->dom->loadXML('<?xml version="1.0" ?><phpunit xmlns="http://schema.phpunit.de/coverage/1.0"><file /></phpunit>');
-
-        $this->contextNode = $this->dom->getElementsByTagNameNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'file'
-        )->item(0);
-
-        $this->setName($name);
-    }
-
-    private function setName($name)
-    {
-        $this->contextNode->setAttribute('name', $name);
-    }
-
-    public function asDom()
-    {
-        return $this->dom;
-    }
-
-    public function getFunctionObject($name)
-    {
-        $node = $this->contextNode->appendChild(
-            $this->dom->createElementNS(
-                'http://schema.phpunit.de/coverage/1.0',
-                'function'
-            )
-        );
-
-        return new PHP_CodeCoverage_Report_XML_File_Method($node, $name);
-    }
-
-    public function getClassObject($name)
-    {
-        return $this->getUnitObject('class', $name);
-    }
-
-    public function getTraitObject($name)
-    {
-        return $this->getUnitObject('trait', $name);
-    }
-
-    private function getUnitObject($tagName, $name)
-    {
-        $node = $this->contextNode->appendChild(
-            $this->dom->createElementNS(
-                'http://schema.phpunit.de/coverage/1.0',
-                $tagName
-            )
-        );
-
-        return new PHP_CodeCoverage_Report_XML_File_Unit($node, $name);
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php
deleted file mode 100644
index 769d9da..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML_File_Unit
-{
-    /**
-     * @var DOMElement
-     */
-    private $contextNode;
-
-    public function __construct(DOMElement $context, $name)
-    {
-        $this->contextNode = $context;
-
-        $this->setName($name);
-    }
-
-    private function setName($name)
-    {
-        $this->contextNode->setAttribute('name', $name);
-    }
-
-    public function setLines($start, $executable, $executed)
-    {
-        $this->contextNode->setAttribute('start', $start);
-        $this->contextNode->setAttribute('executable', $executable);
-        $this->contextNode->setAttribute('executed', $executed);
-    }
-
-    public function setCrap($crap)
-    {
-        $this->contextNode->setAttribute('crap', $crap);
-    }
-
-    public function setPackage($full, $package, $sub, $category)
-    {
-        $node = $this->contextNode->getElementsByTagNameNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'package'
-        )->item(0);
-
-        if (!$node) {
-            $node = $this->contextNode->appendChild(
-                $this->contextNode->ownerDocument->createElementNS(
-                    'http://schema.phpunit.de/coverage/1.0',
-                    'package'
-                )
-            );
-        }
-
-        $node->setAttribute('full', $full);
-        $node->setAttribute('name', $package);
-        $node->setAttribute('sub', $sub);
-        $node->setAttribute('category', $category);
-    }
-
-    public function setNamespace($namespace)
-    {
-        $node = $this->contextNode->getElementsByTagNameNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'namespace'
-        )->item(0);
-
-        if (!$node) {
-            $node = $this->contextNode->appendChild(
-                $this->contextNode->ownerDocument->createElementNS(
-                    'http://schema.phpunit.de/coverage/1.0',
-                    'namespace'
-                )
-            );
-        }
-
-        $node->setAttribute('name', $namespace);
-    }
-
-    public function addMethod($name)
-    {
-        $node = $this->contextNode->appendChild(
-            $this->contextNode->ownerDocument->createElementNS(
-                'http://schema.phpunit.de/coverage/1.0',
-                'method'
-            )
-        );
-
-        return new PHP_CodeCoverage_Report_XML_File_Method($node, $name);
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php
deleted file mode 100644
index 43dda57..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML_Node
-{
-    /**
-     * @var DOMDocument
-     */
-    private $dom;
-
-    /**
-     * @var DOMElement
-     */
-    private $contextNode;
-
-    public function __construct(DOMElement $context)
-    {
-        $this->setContextNode($context);
-    }
-
-    protected function setContextNode(DOMElement $context)
-    {
-        $this->dom         = $context->ownerDocument;
-        $this->contextNode = $context;
-    }
-
-    public function getDom()
-    {
-        return $this->dom;
-    }
-
-    protected function getContextNode()
-    {
-        return $this->contextNode;
-    }
-
-    public function getTotals()
-    {
-        $totalsContainer = $this->getContextNode()->firstChild;
-
-        if (!$totalsContainer) {
-            $totalsContainer = $this->getContextNode()->appendChild(
-                $this->dom->createElementNS(
-                    'http://schema.phpunit.de/coverage/1.0',
-                    'totals'
-                )
-            );
-        }
-
-        return new PHP_CodeCoverage_Report_XML_Totals($totalsContainer);
-    }
-
-    public function addDirectory($name)
-    {
-        $dirNode = $this->getDom()->createElementNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'directory'
-        );
-
-        $dirNode->setAttribute('name', $name);
-        $this->getContextNode()->appendChild($dirNode);
-
-        return new PHP_CodeCoverage_Report_XML_Directory($dirNode);
-    }
-
-    public function addFile($name, $href)
-    {
-        $fileNode = $this->getDom()->createElementNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'file'
-        );
-
-        $fileNode->setAttribute('name', $name);
-        $fileNode->setAttribute('href', $href);
-        $this->getContextNode()->appendChild($fileNode);
-
-        return new PHP_CodeCoverage_Report_XML_File($fileNode);
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php
deleted file mode 100644
index b8dae04..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML_Project extends PHP_CodeCoverage_Report_XML_Node
-{
-    public function __construct($name)
-    {
-        $this->init();
-        $this->setProjectName($name);
-    }
-
-    private function init()
-    {
-        $dom = new DOMDocument;
-        $dom->loadXML('<?xml version="1.0" ?><phpunit xmlns="http://schema.phpunit.de/coverage/1.0"><project/></phpunit>');
-
-        $this->setContextNode(
-            $dom->getElementsByTagNameNS(
-                'http://schema.phpunit.de/coverage/1.0',
-                'project'
-            )->item(0)
-        );
-    }
-
-    private function setProjectName($name)
-    {
-        $this->getContextNode()->setAttribute('name', $name);
-    }
-
-    public function getTests()
-    {
-        $testsNode = $this->getContextNode()->getElementsByTagNameNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'tests'
-        )->item(0);
-
-        if (!$testsNode) {
-            $testsNode = $this->getContextNode()->appendChild(
-                $this->getDom()->createElementNS(
-                    'http://schema.phpunit.de/coverage/1.0',
-                    'tests'
-                )
-            );
-        }
-
-        return new PHP_CodeCoverage_Report_XML_Tests($testsNode);
-    }
-
-    public function asDom()
-    {
-        return $this->getDom();
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php
deleted file mode 100644
index 4621467..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML_Tests
-{
-    private $contextNode;
-
-    private $codeMap = array(
-        0 => 'PASSED',     // PHPUnit_Runner_BaseTestRunner::STATUS_PASSED
-        1 => 'SKIPPED',    // PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED
-        2 => 'INCOMPLETE', // PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE
-        3 => 'FAILURE',    // PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE
-        4 => 'ERROR',      // PHPUnit_Runner_BaseTestRunner::STATUS_ERROR
-        5 => 'RISKY'       // PHPUnit_Runner_BaseTestRunner::STATUS_RISKY
-    );
-
-    public function __construct(DOMElement $context)
-    {
-        $this->contextNode = $context;
-    }
-
-    public function addTest($test, array $result)
-    {
-        $node = $this->contextNode->appendChild(
-            $this->contextNode->ownerDocument->createElementNS(
-                'http://schema.phpunit.de/coverage/1.0',
-                'test'
-            )
-        );
-        $node->setAttribute('name', $test);
-        $node->setAttribute('size', $result['size']);
-        $node->setAttribute('result', (int) $result['status']);
-        $node->setAttribute('status', $this->codeMap[(int) $result['status']]);
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php
deleted file mode 100644
index d6073d9..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * @since Class available since Release 2.0.0
- */
-class PHP_CodeCoverage_Report_XML_Totals
-{
-    /**
-     * @var DOMNode
-     */
-    private $container;
-
-    /**
-     * @var DOMElement
-     */
-    private $linesNode;
-
-    /**
-     * @var DOMElement
-     */
-    private $methodsNode;
-
-    /**
-     * @var DOMElement
-     */
-    private $functionsNode;
-
-    /**
-     * @var DOMElement
-     */
-    private $classesNode;
-
-    /**
-     * @var DOMElement
-     */
-    private $traitsNode;
-
-    public function __construct(DOMElement $container)
-    {
-        $this->container = $container;
-        $dom             = $container->ownerDocument;
-
-        $this->linesNode = $dom->createElementNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'lines'
-        );
-
-        $this->methodsNode = $dom->createElementNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'methods'
-        );
-
-        $this->functionsNode = $dom->createElementNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'functions'
-        );
-
-        $this->classesNode = $dom->createElementNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'classes'
-        );
-
-        $this->traitsNode = $dom->createElementNS(
-            'http://schema.phpunit.de/coverage/1.0',
-            'traits'
-        );
-
-        $container->appendChild($this->linesNode);
-        $container->appendChild($this->methodsNode);
-        $container->appendChild($this->functionsNode);
-        $container->appendChild($this->classesNode);
-        $container->appendChild($this->traitsNode);
-    }
-
-    public function getContainer()
-    {
-        return $this->container;
-    }
-
-    public function setNumLines($loc, $cloc, $ncloc, $executable, $executed)
-    {
-        $this->linesNode->setAttribute('total', $loc);
-        $this->linesNode->setAttribute('comments', $cloc);
-        $this->linesNode->setAttribute('code', $ncloc);
-        $this->linesNode->setAttribute('executable', $executable);
-        $this->linesNode->setAttribute('executed', $executed);
-        $this->linesNode->setAttribute(
-            'percent',
-            PHP_CodeCoverage_Util::percent($executed, $executable, true)
-        );
-    }
-
-    public function setNumClasses($count, $tested)
-    {
-        $this->classesNode->setAttribute('count', $count);
-        $this->classesNode->setAttribute('tested', $tested);
-        $this->classesNode->setAttribute(
-            'percent',
-            PHP_CodeCoverage_Util::percent($tested, $count, true)
-        );
-    }
-
-    public function setNumTraits($count, $tested)
-    {
-        $this->traitsNode->setAttribute('count', $count);
-        $this->traitsNode->setAttribute('tested', $tested);
-        $this->traitsNode->setAttribute(
-            'percent',
-            PHP_CodeCoverage_Util::percent($tested, $count, true)
-        );
-    }
-
-    public function setNumMethods($count, $tested)
-    {
-        $this->methodsNode->setAttribute('count', $count);
-        $this->methodsNode->setAttribute('tested', $tested);
-        $this->methodsNode->setAttribute(
-            'percent',
-            PHP_CodeCoverage_Util::percent($tested, $count, true)
-        );
-    }
-
-    public function setNumFunctions($count, $tested)
-    {
-        $this->functionsNode->setAttribute('count', $count);
-        $this->functionsNode->setAttribute('tested', $tested);
-        $this->functionsNode->setAttribute(
-            'percent',
-            PHP_CodeCoverage_Util::percent($tested, $count, true)
-        );
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Util.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Util.php
deleted file mode 100644
index eadb3c9..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Util.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Utility methods.
- *
- * @since Class available since Release 1.0.0
- */
-class PHP_CodeCoverage_Util
-{
-    /**
-     * @param  float $a
-     * @param  float $b
-     * @return float ($a / $b) * 100
-     */
-    public static function percent($a, $b, $asString = false, $fixedWidth = false)
-    {
-        if ($asString && $b == 0) {
-            return '';
-        }
-
-        if ($b > 0) {
-            $percent = ($a / $b) * 100;
-        } else {
-            $percent = 100;
-        }
-
-        if ($asString) {
-            if ($fixedWidth) {
-                return sprintf('%6.2F%%', $percent);
-            }
-
-            return sprintf('%01.2F%%', $percent);
-        } else {
-            return $percent;
-        }
-    }
-}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php
deleted file mode 100644
index d66e499..0000000
--- a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_CodeCoverage 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.
- */
-
-/**
- * Factory for PHP_CodeCoverage_Exception objects that are used to describe
- * invalid arguments passed to a function or method.
- *
- * @since Class available since Release 1.2.0
- */
-class PHP_CodeCoverage_Util_InvalidArgumentHelper
-{
-    /**
-     * @param int    $argument
-     * @param string $type
-     * @param mixed  $value
-     */
-    public static function factory($argument, $type, $value = null)
-    {
-        $stack = debug_backtrace(false);
-
-        return new PHP_CodeCoverage_Exception(
-            sprintf(
-                'Argument #%d%sof %s::%s() must be a %s',
-                $argument,
-                $value !== null ? ' (' . gettype($value) . '#' . $value . ')' : ' (No Value) ',
-                $stack[1]['class'],
-                $stack[1]['function'],
-                $type
-            )
-        );
-    }
-}
diff --git a/vendor/phpunit/php-file-iterator/.gitattributes b/vendor/phpunit/php-file-iterator/.gitattributes
deleted file mode 100644
index 461090b..0000000
--- a/vendor/phpunit/php-file-iterator/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.php diff=php
diff --git a/vendor/phpunit/php-file-iterator/.gitignore b/vendor/phpunit/php-file-iterator/.gitignore
deleted file mode 100644
index a741983..0000000
--- a/vendor/phpunit/php-file-iterator/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-build/api
-build/code-browser
-build/coverage
-build/logs
-build/pdepend
-cache.properties
-phpunit.xml
diff --git a/vendor/phpunit/php-file-iterator/ChangeLog.md b/vendor/phpunit/php-file-iterator/ChangeLog.md
deleted file mode 100644
index fa77ced..0000000
--- a/vendor/phpunit/php-file-iterator/ChangeLog.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
-
-## [1.4.0] - 2015-04-02
-
-### Added
-
-* [Added support for wildcards (glob) in exclude](https://github.com/sebastianbergmann/php-file-iterator/pull/23)
-
diff --git a/vendor/phpunit/php-file-iterator/LICENSE b/vendor/phpunit/php-file-iterator/LICENSE
deleted file mode 100644
index 6cccbbb..0000000
--- a/vendor/phpunit/php-file-iterator/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-File_Iterator
-
-Copyright (c) 2009-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-file-iterator/README.md b/vendor/phpunit/php-file-iterator/README.md
deleted file mode 100644
index ef28388..0000000
--- a/vendor/phpunit/php-file-iterator/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# File_Iterator
-
-## Installation
-
-To add File_Iterator as a local, per-project dependency to your project, simply add a dependency on `phpunit/php-file-iterator` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on File_Iterator 1.4:
-
-    {
-        "require": {
-            "phpunit/php-file-iterator": "~1.4"
-        }
-    }
-
diff --git a/vendor/phpunit/php-file-iterator/composer.json b/vendor/phpunit/php-file-iterator/composer.json
deleted file mode 100644
index c652794..0000000
--- a/vendor/phpunit/php-file-iterator/composer.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-    "name": "phpunit/php-file-iterator",
-    "description": "FilterIterator implementation that filters files based on a list of suffixes.",
-    "type": "library",
-    "keywords": [
-        "iterator",
-        "filesystem"
-    ],
-    "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sb@sebastian-bergmann.de",
-            "role": "lead"
-        }
-    ],
-    "support": {
-        "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
-        "irc": "irc://irc.freenode.net/phpunit"
-    },
-    "require": {
-        "php": ">=5.3.3"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.4.x-dev"
-        }
-    }
-}
-
diff --git a/vendor/phpunit/php-file-iterator/src/Facade.php b/vendor/phpunit/php-file-iterator/src/Facade.php
deleted file mode 100644
index 902a0af..0000000
--- a/vendor/phpunit/php-file-iterator/src/Facade.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/*
- * This file is part of the File_Iterator 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.
- */
-
-/**
- * Façade implementation that uses File_Iterator_Factory to create a
- * File_Iterator that operates on an AppendIterator that contains an
- * RecursiveDirectoryIterator for each given path. The list of unique
- * files is returned as an array.
- *
- * @since     Class available since Release 1.3.0
- */
-class File_Iterator_Facade
-{
-    /**
-     * @param  array|string $paths
-     * @param  array|string $suffixes
-     * @param  array|string $prefixes
-     * @param  array        $exclude
-     * @param  bool         $commonPath
-     * @return array
-     */
-    public function getFilesAsArray($paths, $suffixes = '', $prefixes = '', array $exclude = array(), $commonPath = FALSE)
-    {
-        if (is_string($paths)) {
-            $paths = array($paths);
-        }
-
-        $factory  = new File_Iterator_Factory;
-        $iterator = $factory->getFileIterator(
-          $paths, $suffixes, $prefixes, $exclude
-        );
-
-        $files = array();
-
-        foreach ($iterator as $file) {
-            $file = $file->getRealPath();
-
-            if ($file) {
-                $files[] = $file;
-            }
-        }
-
-        foreach ($paths as $path) {
-            if (is_file($path)) {
-                $files[] = realpath($path);
-            }
-        }
-
-        $files = array_unique($files);
-        sort($files);
-
-        if ($commonPath) {
-            return array(
-              'commonPath' => $this->getCommonPath($files),
-              'files'      => $files
-            );
-        } else {
-            return $files;
-        }
-    }
-
-    /**
-     * Returns the common path of a set of files.
-     *
-     * @param  array  $files
-     * @return string
-     */
-    protected function getCommonPath(array $files)
-    {
-        $count = count($files);
-
-        if ($count == 0) {
-            return '';
-        }
-
-        if ($count == 1) {
-            return dirname($files[0]) . DIRECTORY_SEPARATOR;
-        }
-
-        $_files = array();
-
-        foreach ($files as $file) {
-            $_files[] = $_fileParts = explode(DIRECTORY_SEPARATOR, $file);
-
-            if (empty($_fileParts[0])) {
-                $_fileParts[0] = DIRECTORY_SEPARATOR;
-            }
-        }
-
-        $common = '';
-        $done   = FALSE;
-        $j      = 0;
-        $count--;
-
-        while (!$done) {
-            for ($i = 0; $i < $count; $i++) {
-                if ($_files[$i][$j] != $_files[$i+1][$j]) {
-                    $done = TRUE;
-                    break;
-                }
-            }
-
-            if (!$done) {
-                $common .= $_files[0][$j];
-
-                if ($j > 0) {
-                    $common .= DIRECTORY_SEPARATOR;
-                }
-            }
-
-            $j++;
-        }
-
-        return DIRECTORY_SEPARATOR . $common;
-    }
-}
diff --git a/vendor/phpunit/php-file-iterator/src/Factory.php b/vendor/phpunit/php-file-iterator/src/Factory.php
deleted file mode 100644
index 19c93ad..0000000
--- a/vendor/phpunit/php-file-iterator/src/Factory.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/*
- * This file is part of the File_Iterator 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.
- */
-
-/**
- * Factory Method implementation that creates a File_Iterator that operates on
- * an AppendIterator that contains an RecursiveDirectoryIterator for each given
- * path.
- *
- * @since     Class available since Release 1.1.0
- */
-class File_Iterator_Factory
-{
-    /**
-     * @param  array|string   $paths
-     * @param  array|string   $suffixes
-     * @param  array|string   $prefixes
-     * @param  array          $exclude
-     * @return AppendIterator
-     */
-    public function getFileIterator($paths, $suffixes = '', $prefixes = '', array $exclude = array())
-    {
-        if (is_string($paths)) {
-            $paths = array($paths);
-        }
-
-        $paths   = $this->getPathsAfterResolvingWildcards($paths);
-        $exclude = $this->getPathsAfterResolvingWildcards($exclude);
-
-        if (is_string($prefixes)) {
-            if ($prefixes != '') {
-                $prefixes = array($prefixes);
-            } else {
-                $prefixes = array();
-            }
-        }
-
-        if (is_string($suffixes)) {
-            if ($suffixes != '') {
-                $suffixes = array($suffixes);
-            } else {
-                $suffixes = array();
-            }
-        }
-
-        $iterator = new AppendIterator;
-
-        foreach ($paths as $path) {
-            if (is_dir($path)) {
-                $iterator->append(
-                  new File_Iterator(
-                    new RecursiveIteratorIterator(
-                      new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::FOLLOW_SYMLINKS)
-                    ),
-                    $suffixes,
-                    $prefixes,
-                    $exclude,
-                    $path
-                  )
-                );
-            }
-        }
-
-        return $iterator;
-    }
-
-    /**
-     * @param  array $paths
-     * @return array
-     */
-    protected function getPathsAfterResolvingWildcards(array $paths)
-    {
-        $_paths = array();
-
-        foreach ($paths as $path) {
-            if ($locals = glob($path, GLOB_ONLYDIR)) {
-                $_paths = array_merge($_paths, $locals);
-            } else {
-                $_paths[] = $path;
-            }
-        }
-
-        return $_paths;
-    }
-}
diff --git a/vendor/phpunit/php-file-iterator/src/Iterator.php b/vendor/phpunit/php-file-iterator/src/Iterator.php
deleted file mode 100644
index 1607c06..0000000
--- a/vendor/phpunit/php-file-iterator/src/Iterator.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-/*
- * This file is part of the File_Iterator 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.
- */
-
-/**
- * FilterIterator implementation that filters files based on prefix(es) and/or
- * suffix(es). Hidden files and files from hidden directories are also filtered.
- *
- * @since     Class available since Release 1.0.0
- */
-class File_Iterator extends FilterIterator
-{
-    const PREFIX = 0;
-    const SUFFIX = 1;
-
-    /**
-     * @var array
-     */
-    protected $suffixes = array();
-
-    /**
-     * @var array
-     */
-    protected $prefixes = array();
-
-    /**
-     * @var array
-     */
-    protected $exclude = array();
-
-    /**
-     * @var string
-     */
-    protected $basepath;
-
-    /**
-     * @param Iterator $iterator
-     * @param array    $suffixes
-     * @param array    $prefixes
-     * @param array    $exclude
-     * @param string   $basepath
-     */
-    public function __construct(Iterator $iterator, array $suffixes = array(), array $prefixes = array(), array $exclude = array(), $basepath = NULL)
-    {
-        $exclude = array_filter(array_map('realpath', $exclude));
-
-        if ($basepath !== NULL) {
-            $basepath = realpath($basepath);
-        }
-
-        if ($basepath === FALSE) {
-            $basepath = NULL;
-        } else {
-            foreach ($exclude as &$_exclude) {
-                $_exclude = str_replace($basepath, '', $_exclude);
-            }
-        }
-
-        $this->prefixes = $prefixes;
-        $this->suffixes = $suffixes;
-        $this->exclude  = $exclude;
-        $this->basepath = $basepath;
-
-        parent::__construct($iterator);
-    }
-
-    /**
-     * @return bool
-     */
-    public function accept()
-    {
-        $current  = $this->getInnerIterator()->current();
-        $filename = $current->getFilename();
-        $realpath = $current->getRealPath();
-
-        if ($this->basepath !== NULL) {
-            $realpath = str_replace($this->basepath, '', $realpath);
-        }
-
-        // Filter files in hidden directories.
-        if (preg_match('=/\.[^/]*/=', $realpath)) {
-            return FALSE;
-        }
-
-        return $this->acceptPath($realpath) &&
-               $this->acceptPrefix($filename) &&
-               $this->acceptSuffix($filename);
-    }
-
-    /**
-     * @param  string $path
-     * @return bool
-     * @since  Method available since Release 1.1.0
-     */
-    protected function acceptPath($path)
-    {
-        foreach ($this->exclude as $exclude) {
-            if (strpos($path, $exclude) === 0) {
-                return FALSE;
-            }
-        }
-
-        return TRUE;
-    }
-
-    /**
-     * @param  string $filename
-     * @return bool
-     * @since  Method available since Release 1.1.0
-     */
-    protected function acceptPrefix($filename)
-    {
-        return $this->acceptSubString($filename, $this->prefixes, self::PREFIX);
-    }
-
-    /**
-     * @param  string $filename
-     * @return bool
-     * @since  Method available since Release 1.1.0
-     */
-    protected function acceptSuffix($filename)
-    {
-        return $this->acceptSubString($filename, $this->suffixes, self::SUFFIX);
-    }
-
-    /**
-     * @param  string $filename
-     * @param  array  $subString
-     * @param  int    $type
-     * @return bool
-     * @since  Method available since Release 1.1.0
-     */
-    protected function acceptSubString($filename, array $subStrings, $type)
-    {
-        if (empty($subStrings)) {
-            return TRUE;
-        }
-
-        $matched = FALSE;
-
-        foreach ($subStrings as $string) {
-            if (($type == self::PREFIX && strpos($filename, $string) === 0) ||
-                ($type == self::SUFFIX &&
-                 substr($filename, -1 * strlen($string)) == $string)) {
-                $matched = TRUE;
-                break;
-            }
-        }
-
-        return $matched;
-    }
-}
diff --git a/vendor/phpunit/php-text-template/.gitattributes b/vendor/phpunit/php-text-template/.gitattributes
deleted file mode 100644
index 461090b..0000000
--- a/vendor/phpunit/php-text-template/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.php diff=php
diff --git a/vendor/phpunit/php-text-template/.gitignore b/vendor/phpunit/php-text-template/.gitignore
deleted file mode 100644
index c599212..0000000
--- a/vendor/phpunit/php-text-template/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/composer.lock
-/composer.phar
-/.idea
-/vendor
-
diff --git a/vendor/phpunit/php-text-template/LICENSE b/vendor/phpunit/php-text-template/LICENSE
deleted file mode 100644
index 9f9a32d..0000000
--- a/vendor/phpunit/php-text-template/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-Text_Template
-
-Copyright (c) 2009-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-text-template/README.md b/vendor/phpunit/php-text-template/README.md
deleted file mode 100644
index ec8f593..0000000
--- a/vendor/phpunit/php-text-template/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Text_Template
-
-## Installation
-
-## Installation
-
-To add this package as a local, per-project dependency to your project, simply add a dependency on `phpunit/php-text-template` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on Text_Template:
-
-    {
-        "require": {
-            "phpunit/php-text-template": "~1.2"
-        }
-    }
-
diff --git a/vendor/phpunit/php-text-template/composer.json b/vendor/phpunit/php-text-template/composer.json
deleted file mode 100644
index a5779c8..0000000
--- a/vendor/phpunit/php-text-template/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "name": "phpunit/php-text-template",
-    "description": "Simple template engine.",
-    "type": "library",
-    "keywords": [
-        "template"
-    ],
-    "homepage": "https://github.com/sebastianbergmann/php-text-template/",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sebastian@phpunit.de",
-            "role": "lead"
-        }
-    ],
-    "support": {
-        "issues": "https://github.com/sebastianbergmann/php-text-template/issues"
-    },
-    "require": {
-        "php": ">=5.3.3"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    }
-}
-
diff --git a/vendor/phpunit/php-text-template/src/Template.php b/vendor/phpunit/php-text-template/src/Template.php
deleted file mode 100644
index 9eb39ad..0000000
--- a/vendor/phpunit/php-text-template/src/Template.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-/*
- * This file is part of the Text_Template 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.
- */
-
-/**
- * A simple template engine.
- *
- * @since Class available since Release 1.0.0
- */
-class Text_Template
-{
-    /**
-     * @var string
-     */
-    protected $template = '';
-
-    /**
-     * @var string
-     */
-    protected $openDelimiter = '{';
-
-    /**
-     * @var string
-     */
-    protected $closeDelimiter = '}';
-
-    /**
-     * @var array
-     */
-    protected $values = array();
-
-    /**
-     * Constructor.
-     *
-     * @param  string                   $file
-     * @throws InvalidArgumentException
-     */
-    public function __construct($file = '', $openDelimiter = '{', $closeDelimiter = '}')
-    {
-        $this->setFile($file);
-        $this->openDelimiter  = $openDelimiter;
-        $this->closeDelimiter = $closeDelimiter;
-    }
-
-    /**
-     * Sets the template file.
-     *
-     * @param  string                   $file
-     * @throws InvalidArgumentException
-     */
-    public function setFile($file)
-    {
-        $distFile = $file . '.dist';
-
-        if (file_exists($file)) {
-            $this->template = file_get_contents($file);
-        }
-
-        else if (file_exists($distFile)) {
-            $this->template = file_get_contents($distFile);
-        }
-
-        else {
-            throw new InvalidArgumentException(
-              'Template file could not be loaded.'
-            );
-        }
-    }
-
-    /**
-     * Sets one or more template variables.
-     *
-     * @param array $values
-     * @param bool  $merge
-     */
-    public function setVar(array $values, $merge = TRUE)
-    {
-        if (!$merge || empty($this->values)) {
-            $this->values = $values;
-        } else {
-            $this->values = array_merge($this->values, $values);
-        }
-    }
-
-    /**
-     * Renders the template and returns the result.
-     *
-     * @return string
-     */
-    public function render()
-    {
-        $keys = array();
-
-        foreach ($this->values as $key => $value) {
-            $keys[] = $this->openDelimiter . $key . $this->closeDelimiter;
-        }
-
-        return str_replace($keys, $this->values, $this->template);
-    }
-
-    /**
-     * Renders the template and writes the result to a file.
-     *
-     * @param string $target
-     */
-    public function renderTo($target)
-    {
-        $fp = @fopen($target, 'wt');
-
-        if ($fp) {
-            fwrite($fp, $this->render());
-            fclose($fp);
-        } else {
-            $error = error_get_last();
-
-            throw new RuntimeException(
-              sprintf(
-                'Could not write to %s: %s',
-                $target,
-                substr(
-                  $error['message'],
-                  strpos($error['message'], ':') + 2
-                )
-              )
-            );
-        }
-    }
-}
-
diff --git a/vendor/phpunit/php-timer/.gitattributes b/vendor/phpunit/php-timer/.gitattributes
deleted file mode 100644
index 461090b..0000000
--- a/vendor/phpunit/php-timer/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.php diff=php
diff --git a/vendor/phpunit/php-timer/.gitignore b/vendor/phpunit/php-timer/.gitignore
deleted file mode 100644
index a741983..0000000
--- a/vendor/phpunit/php-timer/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-build/api
-build/code-browser
-build/coverage
-build/logs
-build/pdepend
-cache.properties
-phpunit.xml
diff --git a/vendor/phpunit/php-timer/.travis.yml b/vendor/phpunit/php-timer/.travis.yml
deleted file mode 100644
index 1563ea3..0000000
--- a/vendor/phpunit/php-timer/.travis.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-language: php
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-script:
-  - phpunit --bootstrap src/Timer.php tests
-
-notifications:
-  email: false
-  webhooks:
-    urls:
-      - https://webhooks.gitter.im/e/6668f52f3dd4e3f81960
-    on_success: always
-    on_failure: always
-    on_start: false
-
diff --git a/vendor/phpunit/php-timer/LICENSE b/vendor/phpunit/php-timer/LICENSE
deleted file mode 100644
index 16c4599..0000000
--- a/vendor/phpunit/php-timer/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-PHP_Timer
-
-Copyright (c) 2010-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-timer/README.md b/vendor/phpunit/php-timer/README.md
deleted file mode 100644
index 61e2cca..0000000
--- a/vendor/phpunit/php-timer/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-[![Build Status](https://travis-ci.org/sebastianbergmann/php-timer.svg?branch=master)](https://travis-ci.org/sebastianbergmann/php-timer)
-
-# PHP_Timer
-
-Utility class for timing things, factored out of PHPUnit into a stand-alone component.
-
-## Installation
-
-To add this package as a local, per-project dependency to your project, simply add a dependency on `phpunit/php-timer` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on PHP_Timer:
-
-    {
-        "require": {
-            "phpunit/php-timer": "~1.0"
-        }
-    }
-
-## Usage
-
-### Basic Timing
-
-```php
-PHP_Timer::start();
-
-$timer->start();
-
-// ...
-
-$time = PHP_Timer::stop();
-var_dump($time);
-
-print PHP_Timer::secondsToTimeString($time);
-```
-
-The code above yields the output below:
-
-    double(1.0967254638672E-5)
-    0 ms
-
-### Resource Consumption Since PHP Startup
-
-```php
-print PHP_Timer::resourceUsage();
-```
-
-The code above yields the output below:
-
-    Time: 0 ms, Memory: 0.50Mb
diff --git a/vendor/phpunit/php-timer/composer.json b/vendor/phpunit/php-timer/composer.json
deleted file mode 100644
index 4adc8db..0000000
--- a/vendor/phpunit/php-timer/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "name": "phpunit/php-timer",
-    "description": "Utility class for timing",
-    "type": "library",
-    "keywords": [
-        "timer"
-    ],
-    "homepage": "https://github.com/sebastianbergmann/php-timer/",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sb@sebastian-bergmann.de",
-            "role": "lead"
-        }
-    ],
-    "support": {
-        "issues": "https://github.com/sebastianbergmann/php-timer/issues",
-        "irc": "irc://irc.freenode.net/phpunit"
-    },
-    "require": {
-        "php": ">=5.3.3"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    }
-}
diff --git a/vendor/phpunit/php-timer/src/Timer.php b/vendor/phpunit/php-timer/src/Timer.php
deleted file mode 100644
index 19fec73..0000000
--- a/vendor/phpunit/php-timer/src/Timer.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_Timer 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.
- */
-
-/**
- * Utility class for timing.
- *
- * @since      Class available since Release 1.0.0
- */
-class PHP_Timer
-{
-    /**
-     * @var array
-     */
-    private static $times = array(
-      'hour'   => 3600000,
-      'minute' => 60000,
-      'second' => 1000
-    );
-
-    /**
-     * @var array
-     */
-    private static $startTimes = array();
-
-    /**
-     * @var float
-     */
-    public static $requestTime;
-
-    /**
-     * Starts the timer.
-     */
-    public static function start()
-    {
-        array_push(self::$startTimes, microtime(true));
-    }
-
-    /**
-     * Stops the timer and returns the elapsed time.
-     *
-     * @return float
-     */
-    public static function stop()
-    {
-        return microtime(true) - array_pop(self::$startTimes);
-    }
-
-    /**
-     * Formats the elapsed time as a string.
-     *
-     * @param  float  $time
-     * @return string
-     */
-    public static function secondsToTimeString($time)
-    {
-        $ms = round($time * 1000);
-
-        foreach (self::$times as $unit => $value) {
-            if ($ms >= $value) {
-                $time = floor($ms / $value * 100.0) / 100.0;
-
-                return $time . ' ' . ($time == 1 ? $unit : $unit . 's');
-            }
-        }
-
-        return $ms . ' ms';
-    }
-
-    /**
-     * Formats the elapsed time since the start of the request as a string.
-     *
-     * @return string
-     */
-    public static function timeSinceStartOfRequest()
-    {
-        return self::secondsToTimeString(microtime(true) - self::$requestTime);
-    }
-
-    /**
-     * Returns the resources (time, memory) of the request as a string.
-     *
-     * @return string
-     */
-    public static function resourceUsage()
-    {
-        return sprintf(
-            'Time: %s, Memory: %4.2fMb',
-            self::timeSinceStartOfRequest(),
-            memory_get_peak_usage(true) / 1048576
-        );
-    }
-}
-
-if (isset($_SERVER['REQUEST_TIME_FLOAT'])) {
-    PHP_Timer::$requestTime = $_SERVER['REQUEST_TIME_FLOAT'];
-} elseif (isset($_SERVER['REQUEST_TIME'])) {
-    PHP_Timer::$requestTime = $_SERVER['REQUEST_TIME'];
-} else {
-    PHP_Timer::$requestTime = microtime(true);
-}
diff --git a/vendor/phpunit/php-token-stream/.gitattributes b/vendor/phpunit/php-token-stream/.gitattributes
deleted file mode 100644
index 461090b..0000000
--- a/vendor/phpunit/php-token-stream/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.php diff=php
diff --git a/vendor/phpunit/php-token-stream/.gitignore b/vendor/phpunit/php-token-stream/.gitignore
deleted file mode 100644
index 103eecf..0000000
--- a/vendor/phpunit/php-token-stream/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/.idea
-/composer.lock
-/composer.phar
-/vendor
diff --git a/vendor/phpunit/php-token-stream/.travis.yml b/vendor/phpunit/php-token-stream/.travis.yml
deleted file mode 100644
index 11dedef..0000000
--- a/vendor/phpunit/php-token-stream/.travis.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-language: php
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-matrix:
-  allow_failures:
-    - php: hhvm
-
-sudo: false
-
-before_install:
-  - composer self-update
-
-install:
-  - travis_retry composer install --no-interaction --prefer-source
-
-script:
-  - ./vendor/bin/phpunit --configuration ./build/phpunit.xml
-
-notifications:
-  email: false
-  webhooks:
-    urls:
-      - https://webhooks.gitter.im/e/6668f52f3dd4e3f81960
-    on_success: always
-    on_failure: always
-    on_start: false
-
diff --git a/vendor/phpunit/php-token-stream/LICENSE b/vendor/phpunit/php-token-stream/LICENSE
deleted file mode 100644
index 6a176fa..0000000
--- a/vendor/phpunit/php-token-stream/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-PHP_TokenStream
-
-Copyright (c) 2009-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-token-stream/README.md b/vendor/phpunit/php-token-stream/README.md
deleted file mode 100644
index 31d4b24..0000000
--- a/vendor/phpunit/php-token-stream/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-[![Build Status](https://travis-ci.org/sebastianbergmann/php-token-stream.svg?branch=master)](https://travis-ci.org/sebastianbergmann/php-token-stream)
-
-# PHP_TokenStream
-
-## Installation
-
-To add this package as a local, per-project dependency to your project, simply add a dependency on `phpunit/php-token-stream` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on PHP_TokenStream:
-
-    {
-        "require": {
-            "phpunit/php-token-stream": "~1.2"
-        }
-    }
diff --git a/vendor/phpunit/php-token-stream/build.xml b/vendor/phpunit/php-token-stream/build.xml
deleted file mode 100644
index f02f4b5..0000000
--- a/vendor/phpunit/php-token-stream/build.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="php-token-stream">
- <target name="clean" description="Cleanup build artifacts">
-  <delete dir="${basedir}/vendor"/>
-  <delete file="${basedir}/composer.lock"/>
- </target>
-
- <target name="composer" depends="clean" description="Install dependencies with Composer">
-  <tstamp>
-   <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/>
-  </tstamp>
-  <delete>
-   <fileset dir="${basedir}">
-    <include name="composer.phar" />
-    <date datetime="${thirty.days.ago}" when="before"/>
-   </fileset>
-  </delete>
-
-  <get src="https://getcomposer.org/composer.phar" dest="${basedir}/composer.phar" skipexisting="true"/>
-
-  <exec executable="php">
-   <arg value="composer.phar"/>
-   <arg value="install"/>
-  </exec>
- </target>
-
- <target name="phpunit" description="Run unit tests with PHPUnit">
-  <exec executable="${basedir}/vendor/bin/phpunit" failonerror="true">
-   <arg value="--configuration"/>
-   <arg path="${basedir}/build/phpunit.xml"/>
-  </exec>
- </target>
-</project>
diff --git a/vendor/phpunit/php-token-stream/build/phpunit.xml b/vendor/phpunit/php-token-stream/build/phpunit.xml
deleted file mode 100644
index 139586d..0000000
--- a/vendor/phpunit/php-token-stream/build/phpunit.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         bootstrap="../tests/bootstrap.php"
-         verbode="true">
-  <testsuites>
-    <testsuite name="php-token-stream">
-      <directory suffix="Test.php">../tests</directory>
-    </testsuite>
-  </testsuites>
-
-  <filter>
-    <whitelist addUncoveredFilesFromWhitelist="true">
-      <directory suffix=".php">../src</directory>
-    </whitelist>
-  </filter>
-</phpunit>
diff --git a/vendor/phpunit/php-token-stream/composer.json b/vendor/phpunit/php-token-stream/composer.json
deleted file mode 100644
index dfde729..0000000
--- a/vendor/phpunit/php-token-stream/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-    "name": "phpunit/php-token-stream",
-    "description": "Wrapper around PHP's tokenizer extension.",
-    "type": "library",
-    "keywords": ["tokenizer"],
-    "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sebastian@phpunit.de"
-        }
-    ],
-    "support": {
-        "issues": "https://github.com/sebastianbergmann/php-token-stream/issues"
-    },
-    "require": {
-        "php": ">=5.3.3",
-        "ext-tokenizer": "*"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.2"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.4-dev"
-        }
-    }
-}
diff --git a/vendor/phpunit/php-token-stream/src/Token.php b/vendor/phpunit/php-token-stream/src/Token.php
deleted file mode 100644
index 85c1846..0000000
--- a/vendor/phpunit/php-token-stream/src/Token.php
+++ /dev/null
@@ -1,846 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_TokenStream 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.
- */
-
-/**
- * A PHP token.
- *
- * @author    Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright Sebastian Bergmann <sebastian@phpunit.de>
- * @license   http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link      http://github.com/sebastianbergmann/php-token-stream/tree
- * @since     Class available since Release 1.0.0
- */
-abstract class PHP_Token
-{
-    /**
-     * @var string
-     */
-    protected $text;
-
-    /**
-     * @var integer
-     */
-    protected $line;
-
-    /**
-     * @var PHP_Token_Stream
-     */
-    protected $tokenStream;
-
-    /**
-     * @var integer
-     */
-    protected $id;
-
-    /**
-     * Constructor.
-     *
-     * @param string           $text
-     * @param integer          $line
-     * @param PHP_Token_Stream $tokenStream
-     * @param integer          $id
-     */
-    public function __construct($text, $line, PHP_Token_Stream $tokenStream, $id)
-    {
-        $this->text        = $text;
-        $this->line        = $line;
-        $this->tokenStream = $tokenStream;
-        $this->id          = $id;
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        return $this->text;
-    }
-
-    /**
-     * @return integer
-     */
-    public function getLine()
-    {
-        return $this->line;
-    }
-}
-
-abstract class PHP_TokenWithScope extends PHP_Token
-{
-    /**
-     * @var integer
-     */
-    protected $endTokenId;
-
-    /**
-     * Get the docblock for this token
-     *
-     * This method will fetch the docblock belonging to the current token. The
-     * docblock must be placed on the line directly above the token to be
-     * recognized.
-     *
-     * @return string|null Returns the docblock as a string if found
-     */
-    public function getDocblock()
-    {
-        $tokens            = $this->tokenStream->tokens();
-        $currentLineNumber = $tokens[$this->id]->getLine();
-        $prevLineNumber    = $currentLineNumber - 1;
-
-        for ($i = $this->id - 1; $i; $i--) {
-            if (!isset($tokens[$i])) {
-                return;
-            }
-
-            if ($tokens[$i] instanceof PHP_Token_FUNCTION ||
-                $tokens[$i] instanceof PHP_Token_CLASS ||
-                $tokens[$i] instanceof PHP_Token_TRAIT) {
-                // Some other trait, class or function, no docblock can be
-                // used for the current token
-                break;
-            }
-
-            $line = $tokens[$i]->getLine();
-
-            if ($line == $currentLineNumber ||
-                ($line == $prevLineNumber &&
-                 $tokens[$i] instanceof PHP_Token_WHITESPACE)) {
-                continue;
-            }
-
-            if ($line < $currentLineNumber &&
-                !$tokens[$i] instanceof PHP_Token_DOC_COMMENT) {
-                break;
-            }
-
-            return (string)$tokens[$i];
-        }
-    }
-
-    /**
-     * @return integer
-     */
-    public function getEndTokenId()
-    {
-        $block  = 0;
-        $i      = $this->id;
-        $tokens = $this->tokenStream->tokens();
-
-        while ($this->endTokenId === null && isset($tokens[$i])) {
-            if ($tokens[$i] instanceof PHP_Token_OPEN_CURLY ||
-                $tokens[$i] instanceof PHP_Token_CURLY_OPEN) {
-                $block++;
-            } elseif ($tokens[$i] instanceof PHP_Token_CLOSE_CURLY) {
-                $block--;
-
-                if ($block === 0) {
-                    $this->endTokenId = $i;
-                }
-            } elseif (($this instanceof PHP_Token_FUNCTION ||
-                $this instanceof PHP_Token_NAMESPACE) &&
-                $tokens[$i] instanceof PHP_Token_SEMICOLON) {
-                if ($block === 0) {
-                    $this->endTokenId = $i;
-                }
-            }
-
-            $i++;
-        }
-
-        if ($this->endTokenId === null) {
-            $this->endTokenId = $this->id;
-        }
-
-        return $this->endTokenId;
-    }
-
-    /**
-     * @return integer
-     */
-    public function getEndLine()
-    {
-        return $this->tokenStream[$this->getEndTokenId()]->getLine();
-    }
-}
-
-abstract class PHP_TokenWithScopeAndVisibility extends PHP_TokenWithScope
-{
-    /**
-     * @return string
-     */
-    public function getVisibility()
-    {
-        $tokens = $this->tokenStream->tokens();
-
-        for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) {
-            if (isset($tokens[$i]) &&
-               ($tokens[$i] instanceof PHP_Token_PRIVATE ||
-                $tokens[$i] instanceof PHP_Token_PROTECTED ||
-                $tokens[$i] instanceof PHP_Token_PUBLIC)) {
-                return strtolower(
-                    str_replace('PHP_Token_', '', get_class($tokens[$i]))
-                );
-            }
-            if (isset($tokens[$i]) &&
-              !($tokens[$i] instanceof PHP_Token_STATIC ||
-                $tokens[$i] instanceof PHP_Token_FINAL ||
-                $tokens[$i] instanceof PHP_Token_ABSTRACT)) {
-                // no keywords; stop visibility search
-                break;
-            }
-        }
-    }
-
-    /**
-     * @return string
-     */
-    public function getKeywords()
-    {
-        $keywords = array();
-        $tokens   = $this->tokenStream->tokens();
-
-        for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) {
-            if (isset($tokens[$i]) &&
-               ($tokens[$i] instanceof PHP_Token_PRIVATE ||
-                $tokens[$i] instanceof PHP_Token_PROTECTED ||
-                $tokens[$i] instanceof PHP_Token_PUBLIC)) {
-                continue;
-            }
-
-            if (isset($tokens[$i]) &&
-               ($tokens[$i] instanceof PHP_Token_STATIC ||
-                $tokens[$i] instanceof PHP_Token_FINAL ||
-                $tokens[$i] instanceof PHP_Token_ABSTRACT)) {
-                $keywords[] = strtolower(
-                    str_replace('PHP_Token_', '', get_class($tokens[$i]))
-                );
-            }
-        }
-
-        return implode(',', $keywords);
-    }
-}
-
-abstract class PHP_Token_Includes extends PHP_Token
-{
-    /**
-     * @var string
-     */
-    protected $name;
-
-    /**
-     * @var string
-     */
-    protected $type;
-
-    /**
-     * @return string
-     */
-    public function getName()
-    {
-        if ($this->name === null) {
-            $this->process();
-        }
-
-        return $this->name;
-    }
-
-    /**
-     * @return string
-     */
-    public function getType()
-    {
-        if ($this->type === null) {
-            $this->process();
-        }
-
-        return $this->type;
-    }
-
-    private function process()
-    {
-        $tokens = $this->tokenStream->tokens();
-
-        if ($tokens[$this->id+2] instanceof PHP_Token_CONSTANT_ENCAPSED_STRING) {
-            $this->name = trim($tokens[$this->id+2], "'\"");
-            $this->type = strtolower(
-                str_replace('PHP_Token_', '', get_class($tokens[$this->id]))
-            );
-        }
-    }
-}
-
-
-class PHP_Token_FUNCTION extends PHP_TokenWithScopeAndVisibility
-{
-    /**
-     * @var array
-     */
-    protected $arguments;
-
-    /**
-     * @var integer
-     */
-    protected $ccn;
-
-    /**
-     * @var string
-     */
-    protected $name;
-
-    /**
-     * @var string
-     */
-    protected $signature;
-
-    /**
-     * @return array
-     */
-    public function getArguments()
-    {
-        if ($this->arguments !== null) {
-            return $this->arguments;
-        }
-
-        $this->arguments = array();
-        $tokens          = $this->tokenStream->tokens();
-        $typeDeclaration = null;
-
-        // Search for first token inside brackets
-        $i = $this->id + 2;
-
-        while (!$tokens[$i-1] instanceof PHP_Token_OPEN_BRACKET) {
-            $i++;
-        }
-
-        while (!$tokens[$i] instanceof PHP_Token_CLOSE_BRACKET) {
-            if ($tokens[$i] instanceof PHP_Token_STRING) {
-                $typeDeclaration = (string)$tokens[$i];
-            } elseif ($tokens[$i] instanceof PHP_Token_VARIABLE) {
-                $this->arguments[(string)$tokens[$i]] = $typeDeclaration;
-                $typeDeclaration                      = null;
-            }
-
-            $i++;
-        }
-
-        return $this->arguments;
-    }
-
-    /**
-     * @return string
-     */
-    public function getName()
-    {
-        if ($this->name !== null) {
-            return $this->name;
-        }
-
-        $tokens = $this->tokenStream->tokens();
-
-        for ($i = $this->id + 1; $i < count($tokens); $i++) {
-            if ($tokens[$i] instanceof PHP_Token_STRING) {
-                $this->name = (string)$tokens[$i];
-                break;
-            } elseif ($tokens[$i] instanceof PHP_Token_AMPERSAND &&
-                     $tokens[$i+1] instanceof PHP_Token_STRING) {
-                $this->name = (string)$tokens[$i+1];
-                break;
-            } elseif ($tokens[$i] instanceof PHP_Token_OPEN_BRACKET) {
-                $this->name = 'anonymous function';
-                break;
-            }
-        }
-
-        if ($this->name != 'anonymous function') {
-            for ($i = $this->id; $i; --$i) {
-                if ($tokens[$i] instanceof PHP_Token_NAMESPACE) {
-                    $this->name = $tokens[$i]->getName() . '\\' . $this->name;
-                    break;
-                }
-
-                if ($tokens[$i] instanceof PHP_Token_INTERFACE) {
-                    break;
-                }
-            }
-        }
-
-        return $this->name;
-    }
-
-    /**
-     * @return integer
-     */
-    public function getCCN()
-    {
-        if ($this->ccn !== null) {
-            return $this->ccn;
-        }
-
-        $this->ccn = 1;
-        $end       = $this->getEndTokenId();
-        $tokens    = $this->tokenStream->tokens();
-
-        for ($i = $this->id; $i <= $end; $i++) {
-            switch (get_class($tokens[$i])) {
-                case 'PHP_Token_IF':
-                case 'PHP_Token_ELSEIF':
-                case 'PHP_Token_FOR':
-                case 'PHP_Token_FOREACH':
-                case 'PHP_Token_WHILE':
-                case 'PHP_Token_CASE':
-                case 'PHP_Token_CATCH':
-                case 'PHP_Token_BOOLEAN_AND':
-                case 'PHP_Token_LOGICAL_AND':
-                case 'PHP_Token_BOOLEAN_OR':
-                case 'PHP_Token_LOGICAL_OR':
-                case 'PHP_Token_QUESTION_MARK':
-                    $this->ccn++;
-                    break;
-            }
-        }
-
-        return $this->ccn;
-    }
-
-    /**
-     * @return string
-     */
-    public function getSignature()
-    {
-        if ($this->signature !== null) {
-            return $this->signature;
-        }
-
-        if ($this->getName() == 'anonymous function') {
-            $this->signature = 'anonymous function';
-            $i               = $this->id + 1;
-        } else {
-            $this->signature = '';
-            $i               = $this->id + 2;
-        }
-
-        $tokens = $this->tokenStream->tokens();
-
-        while (isset($tokens[$i]) &&
-               !$tokens[$i] instanceof PHP_Token_OPEN_CURLY &&
-               !$tokens[$i] instanceof PHP_Token_SEMICOLON) {
-            $this->signature .= $tokens[$i++];
-        }
-
-        $this->signature = trim($this->signature);
-
-        return $this->signature;
-    }
-}
-
-class PHP_Token_INTERFACE extends PHP_TokenWithScopeAndVisibility
-{
-    /**
-     * @var array
-     */
-    protected $interfaces;
-
-    /**
-     * @return string
-     */
-    public function getName()
-    {
-        return (string)$this->tokenStream[$this->id + 2];
-    }
-
-    /**
-     * @return boolean
-     */
-    public function hasParent()
-    {
-        return $this->tokenStream[$this->id + 4] instanceof PHP_Token_EXTENDS;
-    }
-
-    /**
-     * @return array
-     */
-    public function getPackage()
-    {
-        $className  = $this->getName();
-        $docComment = $this->getDocblock();
-
-        $result = array(
-            'namespace'   => '',
-            'fullPackage' => '',
-            'category'    => '',
-            'package'     => '',
-            'subpackage'  => ''
-        );
-
-        for ($i = $this->id; $i; --$i) {
-            if ($this->tokenStream[$i] instanceof PHP_Token_NAMESPACE) {
-                $result['namespace'] = $this->tokenStream[$i]->getName();
-                break;
-            }
-        }
-
-        if (preg_match('/@category[\s]+([\.\w]+)/', $docComment, $matches)) {
-            $result['category'] = $matches[1];
-        }
-
-        if (preg_match('/@package[\s]+([\.\w]+)/', $docComment, $matches)) {
-            $result['package']     = $matches[1];
-            $result['fullPackage'] = $matches[1];
-        }
-
-        if (preg_match('/@subpackage[\s]+([\.\w]+)/', $docComment, $matches)) {
-            $result['subpackage']   = $matches[1];
-            $result['fullPackage'] .= '.' . $matches[1];
-        }
-
-        if (empty($result['fullPackage'])) {
-            $result['fullPackage'] = $this->arrayToName(
-                explode('_', str_replace('\\', '_', $className)),
-                '.'
-            );
-        }
-
-        return $result;
-    }
-
-    /**
-     * @param  array  $parts
-     * @param  string $join
-     * @return string
-     */
-    protected function arrayToName(array $parts, $join = '\\')
-    {
-        $result = '';
-
-        if (count($parts) > 1) {
-            array_pop($parts);
-
-            $result = join($join, $parts);
-        }
-
-        return $result;
-    }
-
-    /**
-     * @return boolean|string
-     */
-    public function getParent()
-    {
-        if (!$this->hasParent()) {
-            return false;
-        }
-
-        $i         = $this->id + 6;
-        $tokens    = $this->tokenStream->tokens();
-        $className = (string)$tokens[$i];
-
-        while (isset($tokens[$i+1]) &&
-               !$tokens[$i+1] instanceof PHP_Token_WHITESPACE) {
-            $className .= (string)$tokens[++$i];
-        }
-
-        return $className;
-    }
-
-    /**
-     * @return boolean
-     */
-    public function hasInterfaces()
-    {
-        return (isset($this->tokenStream[$this->id + 4]) &&
-                $this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) ||
-               (isset($this->tokenStream[$this->id + 8]) &&
-                $this->tokenStream[$this->id + 8] instanceof PHP_Token_IMPLEMENTS);
-    }
-
-    /**
-     * @return array|boolean
-     */
-    public function getInterfaces()
-    {
-        if ($this->interfaces !== null) {
-            return $this->interfaces;
-        }
-
-        if (!$this->hasInterfaces()) {
-            return ($this->interfaces = false);
-        }
-
-        if ($this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) {
-            $i = $this->id + 3;
-        } else {
-            $i = $this->id + 7;
-        }
-
-        $tokens = $this->tokenStream->tokens();
-
-        while (!$tokens[$i+1] instanceof PHP_Token_OPEN_CURLY) {
-            $i++;
-
-            if ($tokens[$i] instanceof PHP_Token_STRING) {
-                $this->interfaces[] = (string)$tokens[$i];
-            }
-        }
-
-        return $this->interfaces;
-    }
-}
-
-class PHP_Token_ABSTRACT extends PHP_Token {}
-class PHP_Token_AMPERSAND extends PHP_Token {}
-class PHP_Token_AND_EQUAL extends PHP_Token {}
-class PHP_Token_ARRAY extends PHP_Token {}
-class PHP_Token_ARRAY_CAST extends PHP_Token {}
-class PHP_Token_AS extends PHP_Token {}
-class PHP_Token_AT extends PHP_Token {}
-class PHP_Token_BACKTICK extends PHP_Token {}
-class PHP_Token_BAD_CHARACTER extends PHP_Token {}
-class PHP_Token_BOOLEAN_AND extends PHP_Token {}
-class PHP_Token_BOOLEAN_OR extends PHP_Token {}
-class PHP_Token_BOOL_CAST extends PHP_Token {}
-class PHP_Token_BREAK extends PHP_Token {}
-class PHP_Token_CARET extends PHP_Token {}
-class PHP_Token_CASE extends PHP_Token {}
-class PHP_Token_CATCH extends PHP_Token {}
-class PHP_Token_CHARACTER extends PHP_Token {}
-
-class PHP_Token_CLASS extends PHP_Token_INTERFACE
-{
-    /**
-     * @return string
-     */
-    public function getName()
-    {
-        $next = $this->tokenStream[$this->id + 1];
-
-        if ($next instanceof PHP_Token_WHITESPACE) {
-            $next = $this->tokenStream[$this->id + 2];
-        }
-
-        if ($next instanceof PHP_Token_STRING) {
-            return (string) $next;
-        }
-
-        if ($next instanceof PHP_Token_OPEN_CURLY ||
-            $next instanceof PHP_Token_EXTENDS ||
-            $next instanceof PHP_Token_IMPLEMENTS) {
-            return 'anonymous class';
-        }
-    }
-}
-
-class PHP_Token_CLASS_C extends PHP_Token {}
-class PHP_Token_CLASS_NAME_CONSTANT extends PHP_Token {}
-class PHP_Token_CLONE extends PHP_Token {}
-class PHP_Token_CLOSE_BRACKET extends PHP_Token {}
-class PHP_Token_CLOSE_CURLY extends PHP_Token {}
-class PHP_Token_CLOSE_SQUARE extends PHP_Token {}
-class PHP_Token_CLOSE_TAG extends PHP_Token {}
-class PHP_Token_COLON extends PHP_Token {}
-class PHP_Token_COMMA extends PHP_Token {}
-class PHP_Token_COMMENT extends PHP_Token {}
-class PHP_Token_CONCAT_EQUAL extends PHP_Token {}
-class PHP_Token_CONST extends PHP_Token {}
-class PHP_Token_CONSTANT_ENCAPSED_STRING extends PHP_Token {}
-class PHP_Token_CONTINUE extends PHP_Token {}
-class PHP_Token_CURLY_OPEN extends PHP_Token {}
-class PHP_Token_DEC extends PHP_Token {}
-class PHP_Token_DECLARE extends PHP_Token {}
-class PHP_Token_DEFAULT extends PHP_Token {}
-class PHP_Token_DIV extends PHP_Token {}
-class PHP_Token_DIV_EQUAL extends PHP_Token {}
-class PHP_Token_DNUMBER extends PHP_Token {}
-class PHP_Token_DO extends PHP_Token {}
-class PHP_Token_DOC_COMMENT extends PHP_Token {}
-class PHP_Token_DOLLAR extends PHP_Token {}
-class PHP_Token_DOLLAR_OPEN_CURLY_BRACES extends PHP_Token {}
-class PHP_Token_DOT extends PHP_Token {}
-class PHP_Token_DOUBLE_ARROW extends PHP_Token {}
-class PHP_Token_DOUBLE_CAST extends PHP_Token {}
-class PHP_Token_DOUBLE_COLON extends PHP_Token {}
-class PHP_Token_DOUBLE_QUOTES extends PHP_Token {}
-class PHP_Token_ECHO extends PHP_Token {}
-class PHP_Token_ELSE extends PHP_Token {}
-class PHP_Token_ELSEIF extends PHP_Token {}
-class PHP_Token_EMPTY extends PHP_Token {}
-class PHP_Token_ENCAPSED_AND_WHITESPACE extends PHP_Token {}
-class PHP_Token_ENDDECLARE extends PHP_Token {}
-class PHP_Token_ENDFOR extends PHP_Token {}
-class PHP_Token_ENDFOREACH extends PHP_Token {}
-class PHP_Token_ENDIF extends PHP_Token {}
-class PHP_Token_ENDSWITCH extends PHP_Token {}
-class PHP_Token_ENDWHILE extends PHP_Token {}
-class PHP_Token_END_HEREDOC extends PHP_Token {}
-class PHP_Token_EQUAL extends PHP_Token {}
-class PHP_Token_EVAL extends PHP_Token {}
-class PHP_Token_EXCLAMATION_MARK extends PHP_Token {}
-class PHP_Token_EXIT extends PHP_Token {}
-class PHP_Token_EXTENDS extends PHP_Token {}
-class PHP_Token_FILE extends PHP_Token {}
-class PHP_Token_FINAL extends PHP_Token {}
-class PHP_Token_FOR extends PHP_Token {}
-class PHP_Token_FOREACH extends PHP_Token {}
-class PHP_Token_FUNC_C extends PHP_Token {}
-class PHP_Token_GLOBAL extends PHP_Token {}
-class PHP_Token_GT extends PHP_Token {}
-class PHP_Token_IF extends PHP_Token {}
-class PHP_Token_IMPLEMENTS extends PHP_Token {}
-class PHP_Token_INC extends PHP_Token {}
-class PHP_Token_INCLUDE extends PHP_Token_Includes {}
-class PHP_Token_INCLUDE_ONCE extends PHP_Token_Includes {}
-class PHP_Token_INLINE_HTML extends PHP_Token {}
-class PHP_Token_INSTANCEOF extends PHP_Token {}
-class PHP_Token_INT_CAST extends PHP_Token {}
-class PHP_Token_ISSET extends PHP_Token {}
-class PHP_Token_IS_EQUAL extends PHP_Token {}
-class PHP_Token_IS_GREATER_OR_EQUAL extends PHP_Token {}
-class PHP_Token_IS_IDENTICAL extends PHP_Token {}
-class PHP_Token_IS_NOT_EQUAL extends PHP_Token {}
-class PHP_Token_IS_NOT_IDENTICAL extends PHP_Token {}
-class PHP_Token_IS_SMALLER_OR_EQUAL extends PHP_Token {}
-class PHP_Token_LINE extends PHP_Token {}
-class PHP_Token_LIST extends PHP_Token {}
-class PHP_Token_LNUMBER extends PHP_Token {}
-class PHP_Token_LOGICAL_AND extends PHP_Token {}
-class PHP_Token_LOGICAL_OR extends PHP_Token {}
-class PHP_Token_LOGICAL_XOR extends PHP_Token {}
-class PHP_Token_LT extends PHP_Token {}
-class PHP_Token_METHOD_C extends PHP_Token {}
-class PHP_Token_MINUS extends PHP_Token {}
-class PHP_Token_MINUS_EQUAL extends PHP_Token {}
-class PHP_Token_MOD_EQUAL extends PHP_Token {}
-class PHP_Token_MULT extends PHP_Token {}
-class PHP_Token_MUL_EQUAL extends PHP_Token {}
-class PHP_Token_NEW extends PHP_Token {}
-class PHP_Token_NUM_STRING extends PHP_Token {}
-class PHP_Token_OBJECT_CAST extends PHP_Token {}
-class PHP_Token_OBJECT_OPERATOR extends PHP_Token {}
-class PHP_Token_OPEN_BRACKET extends PHP_Token {}
-class PHP_Token_OPEN_CURLY extends PHP_Token {}
-class PHP_Token_OPEN_SQUARE extends PHP_Token {}
-class PHP_Token_OPEN_TAG extends PHP_Token {}
-class PHP_Token_OPEN_TAG_WITH_ECHO extends PHP_Token {}
-class PHP_Token_OR_EQUAL extends PHP_Token {}
-class PHP_Token_PAAMAYIM_NEKUDOTAYIM extends PHP_Token {}
-class PHP_Token_PERCENT extends PHP_Token {}
-class PHP_Token_PIPE extends PHP_Token {}
-class PHP_Token_PLUS extends PHP_Token {}
-class PHP_Token_PLUS_EQUAL extends PHP_Token {}
-class PHP_Token_PRINT extends PHP_Token {}
-class PHP_Token_PRIVATE extends PHP_Token {}
-class PHP_Token_PROTECTED extends PHP_Token {}
-class PHP_Token_PUBLIC extends PHP_Token {}
-class PHP_Token_QUESTION_MARK extends PHP_Token {}
-class PHP_Token_REQUIRE extends PHP_Token_Includes {}
-class PHP_Token_REQUIRE_ONCE extends PHP_Token_Includes {}
-class PHP_Token_RETURN extends PHP_Token {}
-class PHP_Token_SEMICOLON extends PHP_Token {}
-class PHP_Token_SL extends PHP_Token {}
-class PHP_Token_SL_EQUAL extends PHP_Token {}
-class PHP_Token_SR extends PHP_Token {}
-class PHP_Token_SR_EQUAL extends PHP_Token {}
-class PHP_Token_START_HEREDOC extends PHP_Token {}
-class PHP_Token_STATIC extends PHP_Token {}
-class PHP_Token_STRING extends PHP_Token {}
-class PHP_Token_STRING_CAST extends PHP_Token {}
-class PHP_Token_STRING_VARNAME extends PHP_Token {}
-class PHP_Token_SWITCH extends PHP_Token {}
-class PHP_Token_THROW extends PHP_Token {}
-class PHP_Token_TILDE extends PHP_Token {}
-class PHP_Token_TRY extends PHP_Token {}
-class PHP_Token_UNSET extends PHP_Token {}
-class PHP_Token_UNSET_CAST extends PHP_Token {}
-class PHP_Token_USE extends PHP_Token {}
-class PHP_Token_VAR extends PHP_Token {}
-class PHP_Token_VARIABLE extends PHP_Token {}
-class PHP_Token_WHILE extends PHP_Token {}
-class PHP_Token_WHITESPACE extends PHP_Token {}
-class PHP_Token_XOR_EQUAL extends PHP_Token {}
-
-// Tokens introduced in PHP 5.1
-class PHP_Token_HALT_COMPILER extends PHP_Token {}
-
-// Tokens introduced in PHP 5.3
-class PHP_Token_DIR extends PHP_Token {}
-class PHP_Token_GOTO extends PHP_Token {}
-
-class PHP_Token_NAMESPACE extends PHP_TokenWithScope
-{
-    /**
-     * @return string
-     */
-    public function getName()
-    {
-        $tokens    = $this->tokenStream->tokens();
-        $namespace = (string)$tokens[$this->id+2];
-
-        for ($i = $this->id + 3;; $i += 2) {
-            if (isset($tokens[$i]) &&
-                $tokens[$i] instanceof PHP_Token_NS_SEPARATOR) {
-                $namespace .= '\\' . $tokens[$i+1];
-            } else {
-                break;
-            }
-        }
-
-        return $namespace;
-    }
-}
-
-class PHP_Token_NS_C extends PHP_Token {}
-class PHP_Token_NS_SEPARATOR extends PHP_Token {}
-
-// Tokens introduced in PHP 5.4
-class PHP_Token_CALLABLE extends PHP_Token {}
-class PHP_Token_INSTEADOF extends PHP_Token {}
-class PHP_Token_TRAIT extends PHP_Token_INTERFACE {}
-class PHP_Token_TRAIT_C extends PHP_Token {}
-
-// Tokens introduced in PHP 5.5
-class PHP_Token_FINALLY extends PHP_Token {}
-class PHP_Token_YIELD extends PHP_Token {}
-
-// Tokens introduced in PHP 5.6
-class PHP_Token_ELLIPSIS extends PHP_Token {}
-class PHP_Token_POW extends PHP_Token {}
-class PHP_Token_POW_EQUAL extends PHP_Token {}
-
-// Tokens introduced in PHP 7.0
-class PHP_Token_COALESCE extends PHP_Token {}
-class PHP_Token_SPACESHIP extends PHP_Token {}
-class PHP_Token_YIELD_FROM extends PHP_Token {}
-
-// Tokens introduced in HackLang / HHVM
-class PHP_Token_ASYNC extends PHP_Token {}
-class PHP_Token_AWAIT extends PHP_Token {}
-class PHP_Token_COMPILER_HALT_OFFSET extends PHP_Token {}
-class PHP_Token_ENUM extends PHP_Token {}
-class PHP_Token_EQUALS extends PHP_Token {}
-class PHP_Token_IN extends PHP_Token {}
-class PHP_Token_JOIN extends PHP_Token {}
-class PHP_Token_LAMBDA_ARROW extends PHP_Token {}
-class PHP_Token_LAMBDA_CP extends PHP_Token {}
-class PHP_Token_LAMBDA_OP extends PHP_Token {}
-class PHP_Token_ONUMBER extends PHP_Token {}
-class PHP_Token_SHAPE extends PHP_Token {}
-class PHP_Token_TYPE extends PHP_Token {}
-class PHP_Token_TYPELIST_GT extends PHP_Token {}
-class PHP_Token_TYPELIST_LT extends PHP_Token {}
-class PHP_Token_WHERE extends PHP_Token {}
-class PHP_Token_XHP_ATTRIBUTE extends PHP_Token {}
-class PHP_Token_XHP_CATEGORY extends PHP_Token {}
-class PHP_Token_XHP_CATEGORY_LABEL extends PHP_Token {}
-class PHP_Token_XHP_CHILDREN extends PHP_Token {}
-class PHP_Token_XHP_LABEL extends PHP_Token {}
-class PHP_Token_XHP_REQUIRED extends PHP_Token {}
-class PHP_Token_XHP_TAG_GT extends PHP_Token {}
-class PHP_Token_XHP_TAG_LT extends PHP_Token {}
-class PHP_Token_XHP_TEXT extends PHP_Token {}
diff --git a/vendor/phpunit/php-token-stream/src/Token/Stream.php b/vendor/phpunit/php-token-stream/src/Token/Stream.php
deleted file mode 100644
index 59a9c29..0000000
--- a/vendor/phpunit/php-token-stream/src/Token/Stream.php
+++ /dev/null
@@ -1,606 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_TokenStream 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.
- */
-
-/**
- * A stream of PHP tokens.
- *
- * @author    Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright Sebastian Bergmann <sebastian@phpunit.de>
- * @license   http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link      http://github.com/sebastianbergmann/php-token-stream/tree
- * @since     Class available since Release 1.0.0
- */
-class PHP_Token_Stream implements ArrayAccess, Countable, SeekableIterator
-{
-    /**
-     * @var array
-     */
-    protected static $customTokens = array(
-        '(' => 'PHP_Token_OPEN_BRACKET',
-        ')' => 'PHP_Token_CLOSE_BRACKET',
-        '[' => 'PHP_Token_OPEN_SQUARE',
-        ']' => 'PHP_Token_CLOSE_SQUARE',
-        '{' => 'PHP_Token_OPEN_CURLY',
-        '}' => 'PHP_Token_CLOSE_CURLY',
-        ';' => 'PHP_Token_SEMICOLON',
-        '.' => 'PHP_Token_DOT',
-        ',' => 'PHP_Token_COMMA',
-        '=' => 'PHP_Token_EQUAL',
-        '<' => 'PHP_Token_LT',
-        '>' => 'PHP_Token_GT',
-        '+' => 'PHP_Token_PLUS',
-        '-' => 'PHP_Token_MINUS',
-        '*' => 'PHP_Token_MULT',
-        '/' => 'PHP_Token_DIV',
-        '?' => 'PHP_Token_QUESTION_MARK',
-        '!' => 'PHP_Token_EXCLAMATION_MARK',
-        ':' => 'PHP_Token_COLON',
-        '"' => 'PHP_Token_DOUBLE_QUOTES',
-        '@' => 'PHP_Token_AT',
-        '&' => 'PHP_Token_AMPERSAND',
-        '%' => 'PHP_Token_PERCENT',
-        '|' => 'PHP_Token_PIPE',
-        '$' => 'PHP_Token_DOLLAR',
-        '^' => 'PHP_Token_CARET',
-        '~' => 'PHP_Token_TILDE',
-        '`' => 'PHP_Token_BACKTICK'
-    );
-
-    /**
-     * @var string
-     */
-    protected $filename;
-
-    /**
-     * @var array
-     */
-    protected $tokens = array();
-
-    /**
-     * @var integer
-     */
-    protected $position = 0;
-
-    /**
-     * @var array
-     */
-    protected $linesOfCode = array('loc' => 0, 'cloc' => 0, 'ncloc' => 0);
-
-    /**
-     * @var array
-     */
-    protected $classes;
-
-    /**
-     * @var array
-     */
-    protected $functions;
-
-    /**
-     * @var array
-     */
-    protected $includes;
-
-    /**
-     * @var array
-     */
-    protected $interfaces;
-
-    /**
-     * @var array
-     */
-    protected $traits;
-
-    /**
-     * @var array
-     */
-    protected $lineToFunctionMap = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $sourceCode
-     */
-    public function __construct($sourceCode)
-    {
-        if (is_file($sourceCode)) {
-            $this->filename = $sourceCode;
-            $sourceCode     = file_get_contents($sourceCode);
-        }
-
-        $this->scan($sourceCode);
-    }
-
-    /**
-     * Destructor.
-     */
-    public function __destruct()
-    {
-        $this->tokens = array();
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        $buffer = '';
-
-        foreach ($this as $token) {
-            $buffer .= $token;
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * @return string
-     * @since  Method available since Release 1.1.0
-     */
-    public function getFilename()
-    {
-        return $this->filename;
-    }
-
-    /**
-     * Scans the source for sequences of characters and converts them into a
-     * stream of tokens.
-     *
-     * @param string $sourceCode
-     */
-    protected function scan($sourceCode)
-    {
-        $line      = 1;
-        $tokens    = token_get_all($sourceCode);
-        $numTokens = count($tokens);
-
-        $lastNonWhitespaceTokenWasDoubleColon = false;
-
-        for ($i = 0; $i < $numTokens; ++$i) {
-            $token = $tokens[$i];
-            unset($tokens[$i]);
-
-            if (is_array($token)) {
-                $name = substr(token_name($token[0]), 2);
-                $text = $token[1];
-
-                if ($lastNonWhitespaceTokenWasDoubleColon && $name == 'CLASS') {
-                    $name = 'CLASS_NAME_CONSTANT';
-                }
-
-                $tokenClass = 'PHP_Token_' . $name;
-            } else {
-                $text       = $token;
-                $tokenClass = self::$customTokens[$token];
-            }
-
-            $this->tokens[] = new $tokenClass($text, $line, $this, $i);
-            $lines          = substr_count($text, "\n");
-            $line          += $lines;
-
-            if ($tokenClass == 'PHP_Token_HALT_COMPILER') {
-                break;
-            } elseif ($tokenClass == 'PHP_Token_COMMENT' ||
-                $tokenClass == 'PHP_Token_DOC_COMMENT') {
-                $this->linesOfCode['cloc'] += $lines + 1;
-            }
-
-            if ($name == 'DOUBLE_COLON') {
-                $lastNonWhitespaceTokenWasDoubleColon = true;
-            } elseif ($name != 'WHITESPACE') {
-                $lastNonWhitespaceTokenWasDoubleColon = false;
-            }
-        }
-
-        $this->linesOfCode['loc']   = substr_count($sourceCode, "\n");
-        $this->linesOfCode['ncloc'] = $this->linesOfCode['loc'] -
-                                      $this->linesOfCode['cloc'];
-    }
-
-    /**
-     * @return integer
-     */
-    public function count()
-    {
-        return count($this->tokens);
-    }
-
-    /**
-     * @return PHP_Token[]
-     */
-    public function tokens()
-    {
-        return $this->tokens;
-    }
-
-    /**
-     * @return array
-     */
-    public function getClasses()
-    {
-        if ($this->classes !== null) {
-            return $this->classes;
-        }
-
-        $this->parse();
-
-        return $this->classes;
-    }
-
-    /**
-     * @return array
-     */
-    public function getFunctions()
-    {
-        if ($this->functions !== null) {
-            return $this->functions;
-        }
-
-        $this->parse();
-
-        return $this->functions;
-    }
-
-    /**
-     * @return array
-     */
-    public function getInterfaces()
-    {
-        if ($this->interfaces !== null) {
-            return $this->interfaces;
-        }
-
-        $this->parse();
-
-        return $this->interfaces;
-    }
-
-    /**
-     * @return array
-     * @since  Method available since Release 1.1.0
-     */
-    public function getTraits()
-    {
-        if ($this->traits !== null) {
-            return $this->traits;
-        }
-
-        $this->parse();
-
-        return $this->traits;
-    }
-
-    /**
-     * Gets the names of all files that have been included
-     * using include(), include_once(), require() or require_once().
-     *
-     * Parameter $categorize set to TRUE causing this function to return a
-     * multi-dimensional array with categories in the keys of the first dimension
-     * and constants and their values in the second dimension.
-     *
-     * Parameter $category allow to filter following specific inclusion type
-     *
-     * @param bool   $categorize OPTIONAL
-     * @param string $category   OPTIONAL Either 'require_once', 'require',
-     *                                           'include_once', 'include'.
-     * @return array
-     * @since  Method available since Release 1.1.0
-     */
-    public function getIncludes($categorize = false, $category = null)
-    {
-        if ($this->includes === null) {
-            $this->includes = array(
-              'require_once' => array(),
-              'require'      => array(),
-              'include_once' => array(),
-              'include'      => array()
-            );
-
-            foreach ($this->tokens as $token) {
-                switch (get_class($token)) {
-                    case 'PHP_Token_REQUIRE_ONCE':
-                    case 'PHP_Token_REQUIRE':
-                    case 'PHP_Token_INCLUDE_ONCE':
-                    case 'PHP_Token_INCLUDE':
-                        $this->includes[$token->getType()][] = $token->getName();
-                        break;
-                }
-            }
-        }
-
-        if (isset($this->includes[$category])) {
-            $includes = $this->includes[$category];
-        } elseif ($categorize === false) {
-            $includes = array_merge(
-                $this->includes['require_once'],
-                $this->includes['require'],
-                $this->includes['include_once'],
-                $this->includes['include']
-            );
-        } else {
-            $includes = $this->includes;
-        }
-
-        return $includes;
-    }
-
-    /**
-     * Returns the name of the function or method a line belongs to.
-     *
-     * @return string or null if the line is not in a function or method
-     * @since  Method available since Release 1.2.0
-     */
-    public function getFunctionForLine($line)
-    {
-        $this->parse();
-
-        if (isset($this->lineToFunctionMap[$line])) {
-            return $this->lineToFunctionMap[$line];
-        }
-    }
-
-    protected function parse()
-    {
-        $this->interfaces = array();
-        $this->classes    = array();
-        $this->traits     = array();
-        $this->functions  = array();
-        $class            = array();
-        $classEndLine     = array();
-        $trait            = false;
-        $traitEndLine     = false;
-        $interface        = false;
-        $interfaceEndLine = false;
-
-        foreach ($this->tokens as $token) {
-            switch (get_class($token)) {
-                case 'PHP_Token_HALT_COMPILER':
-                    return;
-
-                case 'PHP_Token_INTERFACE':
-                    $interface        = $token->getName();
-                    $interfaceEndLine = $token->getEndLine();
-
-                    $this->interfaces[$interface] = array(
-                      'methods'   => array(),
-                      'parent'    => $token->getParent(),
-                      'keywords'  => $token->getKeywords(),
-                      'docblock'  => $token->getDocblock(),
-                      'startLine' => $token->getLine(),
-                      'endLine'   => $interfaceEndLine,
-                      'package'   => $token->getPackage(),
-                      'file'      => $this->filename
-                    );
-                    break;
-
-                case 'PHP_Token_CLASS':
-                case 'PHP_Token_TRAIT':
-                    $tmp = array(
-                      'methods'   => array(),
-                      'parent'    => $token->getParent(),
-                      'interfaces'=> $token->getInterfaces(),
-                      'keywords'  => $token->getKeywords(),
-                      'docblock'  => $token->getDocblock(),
-                      'startLine' => $token->getLine(),
-                      'endLine'   => $token->getEndLine(),
-                      'package'   => $token->getPackage(),
-                      'file'      => $this->filename
-                    );
-
-                    if ($token instanceof PHP_Token_CLASS) {
-                        $class[]        = $token->getName();
-                        $classEndLine[] = $token->getEndLine();
-
-                        if ($class[count($class)-1] != 'anonymous class') {
-                            $this->classes[$class[count($class)-1]] = $tmp;
-                        }
-                    } else {
-                        $trait                = $token->getName();
-                        $traitEndLine         = $token->getEndLine();
-                        $this->traits[$trait] = $tmp;
-                    }
-                    break;
-
-                case 'PHP_Token_FUNCTION':
-                    $name = $token->getName();
-                    $tmp  = array(
-                      'docblock'  => $token->getDocblock(),
-                      'keywords'  => $token->getKeywords(),
-                      'visibility'=> $token->getVisibility(),
-                      'signature' => $token->getSignature(),
-                      'startLine' => $token->getLine(),
-                      'endLine'   => $token->getEndLine(),
-                      'ccn'       => $token->getCCN(),
-                      'file'      => $this->filename
-                    );
-
-                    if (empty($class) &&
-                        $trait === false &&
-                        $interface === false) {
-                        $this->functions[$name] = $tmp;
-
-                        $this->addFunctionToMap(
-                            $name,
-                            $tmp['startLine'],
-                            $tmp['endLine']
-                        );
-                    } elseif (!empty($class) && $class[count($class)-1] != 'anonymous class') {
-                        $this->classes[$class[count($class)-1]]['methods'][$name] = $tmp;
-
-                        $this->addFunctionToMap(
-                            $class[count($class)-1] . '::' . $name,
-                            $tmp['startLine'],
-                            $tmp['endLine']
-                        );
-                    } elseif ($trait !== false) {
-                        $this->traits[$trait]['methods'][$name] = $tmp;
-
-                        $this->addFunctionToMap(
-                            $trait . '::' . $name,
-                            $tmp['startLine'],
-                            $tmp['endLine']
-                        );
-                    } else {
-                        $this->interfaces[$interface]['methods'][$name] = $tmp;
-                    }
-                    break;
-
-                case 'PHP_Token_CLOSE_CURLY':
-                    if (!empty($classEndLine) &&
-                        $classEndLine[count($classEndLine)-1] == $token->getLine()) {
-                        array_pop($classEndLine);
-                        array_pop($class);
-                    } elseif ($traitEndLine !== false &&
-                        $traitEndLine == $token->getLine()) {
-                        $trait        = false;
-                        $traitEndLine = false;
-                    } elseif ($interfaceEndLine !== false &&
-                        $interfaceEndLine == $token->getLine()) {
-                        $interface        = false;
-                        $interfaceEndLine = false;
-                    }
-                    break;
-            }
-        }
-    }
-
-    /**
-     * @return array
-     */
-    public function getLinesOfCode()
-    {
-        return $this->linesOfCode;
-    }
-
-    /**
-     */
-    public function rewind()
-    {
-        $this->position = 0;
-    }
-
-    /**
-     * @return boolean
-     */
-    public function valid()
-    {
-        return isset($this->tokens[$this->position]);
-    }
-
-    /**
-     * @return integer
-     */
-    public function key()
-    {
-        return $this->position;
-    }
-
-    /**
-     * @return PHP_Token
-     */
-    public function current()
-    {
-        return $this->tokens[$this->position];
-    }
-
-    /**
-     */
-    public function next()
-    {
-        $this->position++;
-    }
-
-    /**
-     * @param  integer $offset
-     * @return boolean
-     */
-    public function offsetExists($offset)
-    {
-        return isset($this->tokens[$offset]);
-    }
-
-    /**
-     * @param  integer $offset
-     * @return mixed
-     * @throws OutOfBoundsException
-     */
-    public function offsetGet($offset)
-    {
-        if (!$this->offsetExists($offset)) {
-            throw new OutOfBoundsException(
-                sprintf(
-                    'No token at position "%s"',
-                    $offset
-                )
-            );
-        }
-
-        return $this->tokens[$offset];
-    }
-
-    /**
-     * @param integer $offset
-     * @param mixed   $value
-     */
-    public function offsetSet($offset, $value)
-    {
-        $this->tokens[$offset] = $value;
-    }
-
-    /**
-     * @param  integer $offset
-     * @throws OutOfBoundsException
-     */
-    public function offsetUnset($offset)
-    {
-        if (!$this->offsetExists($offset)) {
-            throw new OutOfBoundsException(
-                sprintf(
-                    'No token at position "%s"',
-                    $offset
-                )
-            );
-        }
-
-        unset($this->tokens[$offset]);
-    }
-
-    /**
-     * Seek to an absolute position.
-     *
-     * @param  integer $position
-     * @throws OutOfBoundsException
-     */
-    public function seek($position)
-    {
-        $this->position = $position;
-
-        if (!$this->valid()) {
-            throw new OutOfBoundsException(
-                sprintf(
-                    'No token at position "%s"',
-                    $this->position
-                )
-            );
-        }
-    }
-
-    /**
-     * @param string  $name
-     * @param integer $startLine
-     * @param integer $endLine
-     */
-    private function addFunctionToMap($name, $startLine, $endLine)
-    {
-        for ($line = $startLine; $line <= $endLine; $line++) {
-            $this->lineToFunctionMap[$line] = $name;
-        }
-    }
-}
diff --git a/vendor/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php b/vendor/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php
deleted file mode 100644
index b41b25f..0000000
--- a/vendor/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/*
- * This file is part of the PHP_TokenStream 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.
- */
-
-/**
- * A caching factory for token stream objects.
- *
- * @author    Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright Sebastian Bergmann <sebastian@phpunit.de>
- * @license   http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link      http://github.com/sebastianbergmann/php-token-stream/tree
- * @since     Class available since Release 1.0.0
- */
-class PHP_Token_Stream_CachingFactory
-{
-    /**
-     * @var array
-     */
-    protected static $cache = array();
-
-    /**
-     * @param  string $filename
-     * @return PHP_Token_Stream
-     */
-    public static function get($filename)
-    {
-        if (!isset(self::$cache[$filename])) {
-            self::$cache[$filename] = new PHP_Token_Stream($filename);
-        }
-
-        return self::$cache[$filename];
-    }
-
-    /**
-     * @param string $filename
-     */
-    public static function clear($filename = null)
-    {
-        if (is_string($filename)) {
-            unset(self::$cache[$filename]);
-        } else {
-            self::$cache = array();
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/.gitattributes b/vendor/phpunit/phpunit-mock-objects/.gitattributes
deleted file mode 100644
index 461090b..0000000
--- a/vendor/phpunit/phpunit-mock-objects/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.php diff=php
diff --git a/vendor/phpunit/phpunit-mock-objects/.gitignore b/vendor/phpunit/phpunit-mock-objects/.gitignore
deleted file mode 100644
index b17f73f..0000000
--- a/vendor/phpunit/phpunit-mock-objects/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-build/coverage
-build/logs
-cache.properties
-phpunit.xml
-/vendor
-/composer.lock
-/composer.phar
-/.idea
diff --git a/vendor/phpunit/phpunit-mock-objects/.travis.yml b/vendor/phpunit/phpunit-mock-objects/.travis.yml
deleted file mode 100644
index 127bb65..0000000
--- a/vendor/phpunit/phpunit-mock-objects/.travis.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-language: php
-
-before_script:
-  - composer self-update
-  - composer install --no-interaction --prefer-source --dev
-
-script: ./vendor/bin/phpunit --configuration ./build/travis-ci.xml
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-notifications:
-  email: false
-  webhooks:
-    urls:
-      - https://webhooks.gitter.im/e/6668f52f3dd4e3f81960
-    on_success: always
-    on_failure: always
-    on_start: false
-
diff --git a/vendor/phpunit/phpunit-mock-objects/CONTRIBUTING.md b/vendor/phpunit/phpunit-mock-objects/CONTRIBUTING.md
deleted file mode 100644
index b290539..0000000
--- a/vendor/phpunit/phpunit-mock-objects/CONTRIBUTING.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Pull Requests for bug fixes should be made against the current release branch (1.2). 
-
-Pull Requests for new features should be made against master.
-
-For further notes please refer to [https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md)
diff --git a/vendor/phpunit/phpunit-mock-objects/LICENSE b/vendor/phpunit/phpunit-mock-objects/LICENSE
deleted file mode 100644
index 3705d2b..0000000
--- a/vendor/phpunit/phpunit-mock-objects/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-PHPUnit_MockObject
-
-Copyright (c) 2002-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/phpunit-mock-objects/README.md b/vendor/phpunit/phpunit-mock-objects/README.md
deleted file mode 100644
index 5222da7..0000000
--- a/vendor/phpunit/phpunit-mock-objects/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-[![Build Status](https://img.shields.io/travis/sebastianbergmann/phpunit-mock-objects/2.3.svg?style=flat-square)](https://travis-ci.org/sebastianbergmann/phpunit-mock-objects)
-[![Latest Stable Version](https://img.shields.io/packagist/v/phpunit/phpunit-mock-objects.svg?style=flat-square)](https://packagist.org/packages/phpunit/phpunit-mock-objects)
-
-# PHPUnit_MockObject
-
-**PHPUnit_MockObject** is the default mock object library for PHPUnit.
-
-## Requirements
-
-* PHP 5.3.3 is required but using the latest version of PHP is highly recommended
-
-## Installation
-
-To add PHPUnit_MockObject as a local, per-project dependency to your project, simply add a dependency on `phpunit/phpunit-mock-objects` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on PHPUnit_MockObject 2.3:
-
-    {
-        "require": {
-            "phpunit/phpunit-mock-objects": "2.3.*"
-        }
-    }
-
diff --git a/vendor/phpunit/phpunit-mock-objects/build.xml b/vendor/phpunit/phpunit-mock-objects/build.xml
deleted file mode 100644
index c93503e..0000000
--- a/vendor/phpunit/phpunit-mock-objects/build.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="PHPUnit_MockObjects">
- <target name="clean" description="Cleanup build artifacts">
-  <delete dir="${basedir}/vendor"/>
-  <delete file="${basedir}/composer.lock"/>
-
-  <delete>
-   <fileset dir="${basedir}/build">
-    <include name="**/*.phar" />
-   </fileset>
-  </delete>
- </target>
-
- <target name="composer" depends="clean" description="Install dependencies with Composer">
-  <tstamp>
-   <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/>
-  </tstamp>
-  <delete>
-   <fileset dir="${basedir}">
-    <include name="composer.phar" />
-    <date datetime="${thirty.days.ago}" when="before"/>
-   </fileset>
-  </delete>
-
-  <get src="https://getcomposer.org/composer.phar" dest="${basedir}/composer.phar" skipexisting="true"/>
-
-  <exec executable="php">
-   <arg value="composer.phar"/>
-   <arg value="install"/>
-  </exec>
- </target>
-
- <target name="phpcs" description="Find coding standard violations using PHP_CodeSniffer">
-  <exec executable="phpcs">
-   <arg value="--standard=PSR2" />
-   <arg value="--extensions=php" />
-   <arg path="${basedir}/src" />
-   <arg path="${basedir}/tests" />
-  </exec>
- </target>
-</project>
-
diff --git a/vendor/phpunit/phpunit-mock-objects/build/travis-ci.xml b/vendor/phpunit/phpunit-mock-objects/build/travis-ci.xml
deleted file mode 100644
index b8498fb..0000000
--- a/vendor/phpunit/phpunit-mock-objects/build/travis-ci.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.2/phpunit.xsd"
-         bootstrap="../tests/bootstrap.php"
-         backupGlobals="false"
-         verbose="true">
-  <testsuite name="PHPUnit Mock Objects">
-    <directory suffix="Test.php">../tests</directory>
-    <directory suffix=".phpt">../tests</directory>
-  </testsuite>
-</phpunit>
-
diff --git a/vendor/phpunit/phpunit-mock-objects/composer.json b/vendor/phpunit/phpunit-mock-objects/composer.json
deleted file mode 100644
index 12fb934..0000000
--- a/vendor/phpunit/phpunit-mock-objects/composer.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-    "name": "phpunit/phpunit-mock-objects",
-    "description": "Mock Object library for PHPUnit",
-    "type": "library",
-    "keywords": [
-        "xunit",
-        "mock"
-    ],
-    "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sb@sebastian-bergmann.de",
-            "role": "lead"
-        }
-    ],
-    "support": {
-        "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
-        "irc": "irc://irc.freenode.net/phpunit"
-    },
-    "require": {
-        "php": ">=5.3.3",
-        "phpunit/php-text-template": "~1.2",
-        "doctrine/instantiator": "^1.0.2",
-        "sebastian/exporter": "~1.2"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.4"
-    },
-    "suggest": {
-        "ext-soap": "*"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "autoload-dev": {
-        "classmap": [
-            "tests/_fixture/"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.3.x-dev"
-        }
-    }
-}
-
diff --git a/vendor/phpunit/phpunit-mock-objects/phpunit.xml.dist b/vendor/phpunit/phpunit-mock-objects/phpunit.xml.dist
deleted file mode 100644
index e2186ea..0000000
--- a/vendor/phpunit/phpunit-mock-objects/phpunit.xml.dist
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.2/phpunit.xsd"
-         bootstrap="tests/bootstrap.php"
-         backupGlobals="false"
-         verbose="true">
-  <testsuite name="PHPUnit Mock Objects">
-    <directory suffix="Test.php">tests</directory>
-    <directory suffix=".phpt">tests</directory>
-  </testsuite>
-
-  <logging>
-    <log type="coverage-html" target="build/coverage"/>
-  </logging>
-
-  <filter>
-    <whitelist processUncoveredFilesFromWhitelist="true">
-      <directory suffix=".php">src</directory>
-    </whitelist>
-  </filter>
-</phpunit>
-
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php
deleted file mode 100644
index 6f369a1..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Builder interface for unique identifiers.
- *
- * Defines the interface for recording unique identifiers. The identifiers
- * can be used to define the invocation order of expectations. The expectation
- * is recorded using id() and then defined in order using
- * PHPUnit_Framework_MockObject_Builder_Match::after().
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Builder_Identity
-{
-    /**
-     * Sets the identification of the expectation to $id.
-     *
-     * @note The identifier is unique per mock object.
-     * @param string $id Unique identifiation of expectation.
-     */
-    public function id($id);
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php
deleted file mode 100644
index 865c6b2..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php
+++ /dev/null
@@ -1,255 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Builder for mocked or stubbed invocations.
- *
- * Provides methods for building expectations without having to resort to
- * instantiating the various matchers manually. These methods also form a
- * more natural way of reading the expectation. This class should be together
- * with the test case PHPUnit_Framework_MockObject_TestCase.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Builder_InvocationMocker implements PHPUnit_Framework_MockObject_Builder_MethodNameMatch
-{
-    /**
-     * @var PHPUnit_Framework_MockObject_Stub_MatcherCollection
-     */
-    protected $collection;
-
-    /**
-     * @var PHPUnit_Framework_MockObject_Matcher
-     */
-    protected $matcher;
-
-    /**
-     * @param PHPUnit_Framework_MockObject_Stub_MatcherCollection $collection
-     * @param PHPUnit_Framework_MockObject_Matcher_Invocation     $invocationMatcher
-     */
-    public function __construct(PHPUnit_Framework_MockObject_Stub_MatcherCollection $collection, PHPUnit_Framework_MockObject_Matcher_Invocation $invocationMatcher)
-    {
-        $this->collection = $collection;
-        $this->matcher    = new PHPUnit_Framework_MockObject_Matcher(
-            $invocationMatcher
-        );
-
-        $this->collection->addMatcher($this->matcher);
-    }
-
-    /**
-     * @return PHPUnit_Framework_MockObject_Matcher
-     */
-    public function getMatcher()
-    {
-        return $this->matcher;
-    }
-
-    /**
-     * @param  mixed                                                 $id
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function id($id)
-    {
-        $this->collection->registerId($id, $this);
-
-        return $this;
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Stub                     $stub
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function will(PHPUnit_Framework_MockObject_Stub $stub)
-    {
-        $this->matcher->stub = $stub;
-
-        return $this;
-    }
-
-    /**
-     * @param  mixed                                                 $value
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function willReturn($value)
-    {
-        $stub = new PHPUnit_Framework_MockObject_Stub_Return(
-            $value
-        );
-
-        return $this->will($stub);
-    }
-
-    /**
-     * @param  array                                                 $valueMap
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function willReturnMap(array $valueMap)
-    {
-        $stub = new PHPUnit_Framework_MockObject_Stub_ReturnValueMap(
-            $valueMap
-        );
-
-        return $this->will($stub);
-    }
-
-    /**
-     * @param  mixed                                                 $argumentIndex
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function willReturnArgument($argumentIndex)
-    {
-        $stub = new PHPUnit_Framework_MockObject_Stub_ReturnArgument(
-            $argumentIndex
-        );
-
-        return $this->will($stub);
-    }
-
-    /**
-     * @param  callable                                              $callback
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function willReturnCallback($callback)
-    {
-        $stub = new PHPUnit_Framework_MockObject_Stub_ReturnCallback(
-            $callback
-        );
-
-        return $this->will($stub);
-    }
-
-    /**
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function willReturnSelf()
-    {
-        $stub = new PHPUnit_Framework_MockObject_Stub_ReturnSelf();
-
-        return $this->will($stub);
-    }
-
-    /**
-     * @param  mixed                                                 $value, ...
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function willReturnOnConsecutiveCalls()
-    {
-        $args = func_get_args();
-
-        $stub = new PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls($args);
-
-        return $this->will($stub);
-    }
-
-    /**
-     * @param  Exception                                             $exception
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function willThrowException(Exception $exception)
-    {
-        $stub = new PHPUnit_Framework_MockObject_Stub_Exception($exception);
-
-        return $this->will($stub);
-    }
-
-    /**
-     * @param  mixed                                                 $id
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function after($id)
-    {
-        $this->matcher->afterMatchBuilderId = $id;
-
-        return $this;
-    }
-
-    /**
-     * Validate that a parameters matcher can be defined, throw exceptions otherwise.
-     *
-     * @throws PHPUnit_Framework_Exception
-     */
-    private function canDefineParameters()
-    {
-        if ($this->matcher->methodNameMatcher === null) {
-            throw new PHPUnit_Framework_Exception(
-                'Method name matcher is not defined, cannot define parameter ' .
-                ' matcher without one'
-            );
-        }
-
-        if ($this->matcher->parametersMatcher !== null) {
-            throw new PHPUnit_Framework_Exception(
-                'Parameter matcher is already defined, cannot redefine'
-            );
-        }
-    }
-
-    /**
-     * @param  mixed                                                 $argument, ...
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function with()
-    {
-        $args = func_get_args();
-
-        $this->canDefineParameters();
-
-        $this->matcher->parametersMatcher = new PHPUnit_Framework_MockObject_Matcher_Parameters($args);
-
-        return $this;
-    }
-
-    /**
-     * @param  mixed ...$argument
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function withConsecutive()
-    {
-
-        $args = func_get_args();
-
-        $this->canDefineParameters();
-
-        $this->matcher->parametersMatcher =
-          new PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters($args);
-
-        return $this;
-    }
-
-    /**
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function withAnyParameters()
-    {
-        $this->canDefineParameters();
-
-        $this->matcher->parametersMatcher = new PHPUnit_Framework_MockObject_Matcher_AnyParameters;
-
-        return $this;
-    }
-
-    /**
-     * @param  PHPUnit_Framework_Constraint|string                   $constraint
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function method($constraint)
-    {
-        if ($this->matcher->methodNameMatcher !== null) {
-            throw new PHPUnit_Framework_Exception(
-                'Method name matcher is already defined, cannot redefine'
-            );
-        }
-
-        $this->matcher->methodNameMatcher = new PHPUnit_Framework_MockObject_Matcher_MethodName($constraint);
-
-        return $this;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php
deleted file mode 100644
index 1cbd040..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Builder interface for invocation order matches.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Builder_Match extends PHPUnit_Framework_MockObject_Builder_Stub
-{
-    /**
-     * Defines the expectation which must occur before the current is valid.
-     *
-     * @param  string                                    $id The identification of the expectation that should
-     *                                                       occur before this one.
-     * @return PHPUnit_Framework_MockObject_Builder_Stub
-     */
-    public function after($id);
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php
deleted file mode 100644
index 96bfb1e..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Builder interface for matcher of method names.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Builder_MethodNameMatch extends PHPUnit_Framework_MockObject_Builder_ParametersMatch
-{
-    /**
-     * Adds a new method name match and returns the parameter match object for
-     * further matching possibilities.
-     *
-     * @param  PHPUnit_Framework_Constraint                         $name
-     *                                                                    Constraint for matching method, if a string is passed it will use
-     *                                                                    the PHPUnit_Framework_Constraint_IsEqual.
-     * @return PHPUnit_Framework_MockObject_Builder_ParametersMatch
-     */
-    public function method($name);
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php
deleted file mode 100644
index 831156b..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Interface for builders which can register builders with a given identification.
- *
- * This interface relates to PHPUnit_Framework_MockObject_Builder_Identity.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Builder_Namespace
-{
-    /**
-     * Looks up the match builder with identification $id and returns it.
-     *
-     * @param  string                                     $id The identifiction of the match builder.
-     * @return PHPUnit_Framework_MockObject_Builder_Match
-     */
-    public function lookupId($id);
-
-    /**
-     * Registers the match builder $builder with the identification $id. The
-     * builder can later be looked up using lookupId() to figure out if it
-     * has been invoked.
-     *
-     * @param string                                     $id
-     *                                                            The identification of the match builder.
-     * @param PHPUnit_Framework_MockObject_Builder_Match $builder
-     *                                                            The builder which is being registered.
-     */
-    public function registerId($id, PHPUnit_Framework_MockObject_Builder_Match $builder);
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php
deleted file mode 100644
index 79d96f2..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Builder interface for parameter matchers.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Builder_ParametersMatch extends PHPUnit_Framework_MockObject_Builder_Match
-{
-    /**
-     * Sets the parameters to match for, each parameter to this funtion will
-     * be part of match. To perform specific matches or constraints create a
-     * new PHPUnit_Framework_Constraint and use it for the parameter.
-     * If the parameter value is not a constraint it will use the
-     * PHPUnit_Framework_Constraint_IsEqual for the value.
-     *
-     * Some examples:
-     * <code>
-     * // match first parameter with value 2
-     * $b->with(2);
-     * // match first parameter with value 'smock' and second identical to 42
-     * $b->with('smock', new PHPUnit_Framework_Constraint_IsEqual(42));
-     * </code>
-     *
-     * @return PHPUnit_Framework_MockObject_Builder_ParametersMatch
-     */
-    public function with();
-
-    /**
-     * Sets a matcher which allows any kind of parameters.
-     *
-     * Some examples:
-     * <code>
-     * // match any number of parameters
-     * $b->withAnyParamers();
-     * </code>
-     *
-     * @return PHPUnit_Framework_MockObject_Matcher_AnyParameters
-     */
-    public function withAnyParameters();
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php
deleted file mode 100644
index cc96bac..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Builder interface for stubs which are actions replacing an invocation.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Builder_Stub extends PHPUnit_Framework_MockObject_Builder_Identity
-{
-    /**
-     * Stubs the matching method with the stub object $stub. Any invocations of
-     * the matched method will now be handled by the stub instead.
-     *
-     * @param  PHPUnit_Framework_MockObject_Stub             $stub The stub object.
-     * @return PHPUnit_Framework_MockObject_Builder_Identity
-     */
-    public function will(PHPUnit_Framework_MockObject_Stub $stub);
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php
deleted file mode 100644
index 736784b..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * @since Class available since Release 2.0.6
- */
-class PHPUnit_Framework_MockObject_BadMethodCallException extends BadMethodCallException implements PHPUnit_Framework_MockObject_Exception
-{
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php
deleted file mode 100644
index bc8c81d..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Interface for exceptions used by PHPUnit_MockObject.
- *
- * @since Interface available since Release 2.0.6
- */
-interface PHPUnit_Framework_MockObject_Exception
-{
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php
deleted file mode 100644
index 1e9b6f1..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * @since Class available since Release 2.0.6
- */
-class PHPUnit_Framework_MockObject_RuntimeException extends RuntimeException implements PHPUnit_Framework_MockObject_Exception
-{
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php
deleted file mode 100644
index 3df3abb..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php
+++ /dev/null
@@ -1,1120 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-use Doctrine\Instantiator\Instantiator;
-use Doctrine\Instantiator\Exception\InvalidArgumentException as InstantiatorInvalidArgumentException;
-use Doctrine\Instantiator\Exception\UnexpectedValueException as InstantiatorUnexpectedValueException;
-
-if (!function_exists('trait_exists')) {
-    function trait_exists($traitname, $autoload = true)
-    {
-        return false;
-    }
-}
-
-/**
- * Mock Object Code Generator
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Generator
-{
-    /**
-     * @var array
-     */
-    private static $cache = array();
-
-    /**
-     * @var array
-     */
-    protected $blacklistedMethodNames = array(
-      '__CLASS__'       => true,
-      '__DIR__'         => true,
-      '__FILE__'        => true,
-      '__FUNCTION__'    => true,
-      '__LINE__'        => true,
-      '__METHOD__'      => true,
-      '__NAMESPACE__'   => true,
-      '__TRAIT__'       => true,
-      '__clone'         => true,
-      '__halt_compiler' => true,
-      'abstract'        => true,
-      'and'             => true,
-      'array'           => true,
-      'as'              => true,
-      'break'           => true,
-      'callable'        => true,
-      'case'            => true,
-      'catch'           => true,
-      'class'           => true,
-      'clone'           => true,
-      'const'           => true,
-      'continue'        => true,
-      'declare'         => true,
-      'default'         => true,
-      'die'             => true,
-      'do'              => true,
-      'echo'            => true,
-      'else'            => true,
-      'elseif'          => true,
-      'empty'           => true,
-      'enddeclare'      => true,
-      'endfor'          => true,
-      'endforeach'      => true,
-      'endif'           => true,
-      'endswitch'       => true,
-      'endwhile'        => true,
-      'eval'            => true,
-      'exit'            => true,
-      'expects'         => true,
-      'extends'         => true,
-      'final'           => true,
-      'for'             => true,
-      'foreach'         => true,
-      'function'        => true,
-      'global'          => true,
-      'goto'            => true,
-      'if'              => true,
-      'implements'      => true,
-      'include'         => true,
-      'include_once'    => true,
-      'instanceof'      => true,
-      'insteadof'       => true,
-      'interface'       => true,
-      'isset'           => true,
-      'list'            => true,
-      'namespace'       => true,
-      'new'             => true,
-      'or'              => true,
-      'print'           => true,
-      'private'         => true,
-      'protected'       => true,
-      'public'          => true,
-      'require'         => true,
-      'require_once'    => true,
-      'return'          => true,
-      'static'          => true,
-      'switch'          => true,
-      'throw'           => true,
-      'trait'           => true,
-      'try'             => true,
-      'unset'           => true,
-      'use'             => true,
-      'var'             => true,
-      'while'           => true,
-      'xor'             => true
-    );
-
-    /**
-     * Returns a mock object for the specified class.
-     *
-     * @param  array|string                                  $type
-     * @param  array                                         $methods
-     * @param  array                                         $arguments
-     * @param  string                                        $mockClassName
-     * @param  bool                                          $callOriginalConstructor
-     * @param  bool                                          $callOriginalClone
-     * @param  bool                                          $callAutoload
-     * @param  bool                                          $cloneArguments
-     * @param  bool                                          $callOriginalMethods
-     * @param  object                                        $proxyTarget
-     * @return object
-     * @throws InvalidArgumentException
-     * @throws PHPUnit_Framework_Exception
-     * @throws PHPUnit_Framework_MockObject_RuntimeException
-     * @since  Method available since Release 1.0.0
-     */
-    public function getMock($type, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = true, $callOriginalMethods = false, $proxyTarget = null)
-    {
-        if (!is_array($type) && !is_string($type)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'array or string');
-        }
-
-        if (!is_string($mockClassName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(4, 'string');
-        }
-
-        if (!is_array($methods) && !is_null($methods)) {
-            throw new InvalidArgumentException;
-        }
-
-        if ($type === 'Traversable' || $type === '\\Traversable') {
-            $type = 'Iterator';
-        }
-
-        if (is_array($type)) {
-            $type = array_unique(array_map(
-                function ($type) {
-                    if ($type === 'Traversable' ||
-                      $type === '\\Traversable' ||
-                      $type === '\\Iterator') {
-                        return 'Iterator';
-                    }
-
-                    return $type;
-                },
-                $type
-            ));
-        }
-
-        if (null !== $methods) {
-            foreach ($methods as $method) {
-                if (!preg_match('~[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*~', $method)) {
-                    throw new PHPUnit_Framework_Exception(
-                        sprintf(
-                            'Cannot stub or mock method with invalid name "%s"',
-                            $method
-                        )
-                    );
-                }
-            }
-
-            if ($methods != array_unique($methods)) {
-                throw new PHPUnit_Framework_MockObject_RuntimeException(
-                    sprintf(
-                        'Cannot stub or mock using a method list that contains duplicates: "%s"',
-                        implode(', ', $methods)
-                    )
-                );
-            }
-        }
-
-        if ($mockClassName != '' && class_exists($mockClassName, false)) {
-            $reflect = new ReflectionClass($mockClassName);
-
-            if (!$reflect->implementsInterface('PHPUnit_Framework_MockObject_MockObject')) {
-                throw new PHPUnit_Framework_MockObject_RuntimeException(
-                    sprintf(
-                        'Class "%s" already exists.',
-                        $mockClassName
-                    )
-                );
-            }
-        }
-
-        $mock = $this->generate(
-            $type,
-            $methods,
-            $mockClassName,
-            $callOriginalClone,
-            $callAutoload,
-            $cloneArguments,
-            $callOriginalMethods
-        );
-
-        return $this->getObject(
-            $mock['code'],
-            $mock['mockClassName'],
-            $type,
-            $callOriginalConstructor,
-            $callAutoload,
-            $arguments,
-            $callOriginalMethods,
-            $proxyTarget
-        );
-    }
-
-    /**
-     * @param  string       $code
-     * @param  string       $className
-     * @param  array|string $type
-     * @param  bool         $callOriginalConstructor
-     * @param  bool         $callAutoload
-     * @param  array        $arguments
-     * @param  bool         $callOriginalMethods
-     * @param  object       $proxyTarget
-     * @return object
-     */
-    protected function getObject($code, $className, $type = '', $callOriginalConstructor = false, $callAutoload = false, array $arguments = array(), $callOriginalMethods = false, $proxyTarget = null)
-    {
-        $this->evalClass($code, $className);
-
-        if ($callOriginalConstructor &&
-            is_string($type) &&
-            !interface_exists($type, $callAutoload)) {
-            if (count($arguments) == 0) {
-                $object = new $className;
-            } else {
-                $class  = new ReflectionClass($className);
-                $object = $class->newInstanceArgs($arguments);
-            }
-        } else {
-            try {
-                $instantiator = new Instantiator;
-                $object       = $instantiator->instantiate($className);
-            } catch (InstantiatorUnexpectedValueException $exception) {
-                if ($exception->getPrevious()) {
-                    $exception = $exception->getPrevious();
-                }
-
-                throw new PHPUnit_Framework_MockObject_RuntimeException(
-                    $exception->getMessage()
-                );
-            } catch (InstantiatorInvalidArgumentException $exception) {
-                throw new PHPUnit_Framework_MockObject_RuntimeException(
-                    $exception->getMessage()
-                );
-            }
-        }
-
-        if ($callOriginalMethods) {
-            if (!is_object($proxyTarget)) {
-                if (count($arguments) == 0) {
-                    $proxyTarget = new $type;
-                } else {
-                    $class       = new ReflectionClass($type);
-                    $proxyTarget = $class->newInstanceArgs($arguments);
-                }
-            }
-
-            $object->__phpunit_setOriginalObject($proxyTarget);
-        }
-
-        return $object;
-    }
-
-    /**
-     * @param string $code
-     * @param string $className
-     */
-    protected function evalClass($code, $className)
-    {
-        if (!class_exists($className, false)) {
-            eval($code);
-        }
-    }
-
-    /**
-     * Returns a mock object for the specified abstract class with all abstract
-     * methods of the class mocked. Concrete methods to mock can be specified with
-     * the last parameter
-     *
-     * @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 object
-     * @since  Method available since Release 1.0.0
-     * @throws PHPUnit_Framework_MockObject_RuntimeException
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function getMockForAbstractClass($originalClassName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = array(), $cloneArguments = true)
-    {
-        if (!is_string($originalClassName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($mockClassName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(3, 'string');
-        }
-
-        if (class_exists($originalClassName, $callAutoload) ||
-            interface_exists($originalClassName, $callAutoload)) {
-            $reflector = new ReflectionClass($originalClassName);
-            $methods   = $mockedMethods;
-
-            foreach ($reflector->getMethods() as $method) {
-                if ($method->isAbstract() && !in_array($method->getName(), $methods)) {
-                    $methods[] = $method->getName();
-                }
-            }
-
-            if (empty($methods)) {
-                $methods = null;
-            }
-
-            return $this->getMock(
-                $originalClassName,
-                $methods,
-                $arguments,
-                $mockClassName,
-                $callOriginalConstructor,
-                $callOriginalClone,
-                $callAutoload,
-                $cloneArguments
-            );
-        } else {
-            throw new PHPUnit_Framework_MockObject_RuntimeException(
-                sprintf('Class "%s" does not exist.', $originalClassName)
-            );
-        }
-    }
-
-    /**
-     * Returns a mock object for the specified trait with all abstract methods
-     * 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
-     * @return object
-     * @since  Method available since Release 1.2.3
-     * @throws PHPUnit_Framework_MockObject_RuntimeException
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function getMockForTrait($traitName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = array(), $cloneArguments = true)
-    {
-        if (!is_string($traitName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($mockClassName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(3, 'string');
-        }
-
-        if (!trait_exists($traitName, $callAutoload)) {
-            throw new PHPUnit_Framework_MockObject_RuntimeException(
-                sprintf(
-                    'Trait "%s" does not exist.',
-                    $traitName
-                )
-            );
-        }
-
-        $className = $this->generateClassName(
-            $traitName,
-            '',
-            'Trait_'
-        );
-
-        $templateDir   = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Generator' .
-                         DIRECTORY_SEPARATOR;
-        $classTemplate = new Text_Template(
-            $templateDir . 'trait_class.tpl'
-        );
-
-        $classTemplate->setVar(
-            array(
-            'prologue'   => 'abstract ',
-            'class_name' => $className['className'],
-            'trait_name' => $traitName
-            )
-        );
-
-        $this->evalClass(
-            $classTemplate->render(),
-            $className['className']
-        );
-
-        return $this->getMockForAbstractClass($className['className'], $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $mockedMethods, $cloneArguments);
-    }
-
-    /**
-     * 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
-     * @return object
-     * @since  Method available since Release 1.1.0
-     * @throws PHPUnit_Framework_MockObject_RuntimeException
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function getObjectForTrait($traitName, array $arguments = array(), $traitClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true)
-    {
-        if (!is_string($traitName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($traitClassName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(3, 'string');
-        }
-
-        if (!trait_exists($traitName, $callAutoload)) {
-            throw new PHPUnit_Framework_MockObject_RuntimeException(
-                sprintf(
-                    'Trait "%s" does not exist.',
-                    $traitName
-                )
-            );
-        }
-
-        $className = $this->generateClassName(
-            $traitName,
-            $traitClassName,
-            'Trait_'
-        );
-
-        $templateDir   = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Generator' .
-                         DIRECTORY_SEPARATOR;
-        $classTemplate = new Text_Template(
-            $templateDir . 'trait_class.tpl'
-        );
-
-        $classTemplate->setVar(
-            array(
-            'prologue'   => '',
-            'class_name' => $className['className'],
-            'trait_name' => $traitName
-            )
-        );
-
-        return $this->getObject(
-            $classTemplate->render(),
-            $className['className']
-        );
-    }
-
-    /**
-     * @param  array|string $type
-     * @param  array        $methods
-     * @param  string       $mockClassName
-     * @param  bool         $callOriginalClone
-     * @param  bool         $callAutoload
-     * @param  bool         $cloneArguments
-     * @param  bool         $callOriginalMethods
-     * @return array
-     */
-    public function generate($type, array $methods = null, $mockClassName = '', $callOriginalClone = true, $callAutoload = true, $cloneArguments = true, $callOriginalMethods = false)
-    {
-        if (is_array($type)) {
-            sort($type);
-        }
-
-        if ($mockClassName == '') {
-            $key = md5(
-                is_array($type) ? implode('_', $type) : $type .
-                serialize($methods) .
-                serialize($callOriginalClone) .
-                serialize($cloneArguments) .
-                serialize($callOriginalMethods)
-            );
-
-            if (isset(self::$cache[$key])) {
-                return self::$cache[$key];
-            }
-        }
-
-        $mock = $this->generateMock(
-            $type,
-            $methods,
-            $mockClassName,
-            $callOriginalClone,
-            $callAutoload,
-            $cloneArguments,
-            $callOriginalMethods
-        );
-
-        if (isset($key)) {
-            self::$cache[$key] = $mock;
-        }
-
-        return $mock;
-    }
-
-    /**
-     * @param  string                                        $wsdlFile
-     * @param  string                                        $className
-     * @param  array                                         $methods
-     * @param  array                                         $options
-     * @return string
-     * @throws PHPUnit_Framework_MockObject_RuntimeException
-     */
-    public function generateClassFromWsdl($wsdlFile, $className, array $methods = array(), array $options = array())
-    {
-        if (!extension_loaded('soap')) {
-            throw new PHPUnit_Framework_MockObject_RuntimeException(
-                'The SOAP extension is required to generate a mock object from WSDL.'
-            );
-        }
-
-        $options  = array_merge($options, array('cache_wsdl' => WSDL_CACHE_NONE));
-        $client   = new SoapClient($wsdlFile, $options);
-        $_methods = array_unique($client->__getFunctions());
-        unset($client);
-
-        sort($_methods);
-
-        $templateDir    = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Generator' . DIRECTORY_SEPARATOR;
-        $methodTemplate = new Text_Template($templateDir . 'wsdl_method.tpl');
-        $methodsBuffer  = '';
-
-        foreach ($_methods as $method) {
-            $nameStart = strpos($method, ' ') + 1;
-            $nameEnd   = strpos($method, '(');
-            $name      = substr($method, $nameStart, $nameEnd - $nameStart);
-
-            if (empty($methods) || in_array($name, $methods)) {
-                $args    = explode(
-                    ',',
-                    substr(
-                        $method,
-                        $nameEnd + 1,
-                        strpos($method, ')') - $nameEnd - 1
-                    )
-                );
-                $numArgs = count($args);
-
-                for ($i = 0; $i < $numArgs; $i++) {
-                    $args[$i] = substr($args[$i], strpos($args[$i], '$'));
-                }
-
-                $methodTemplate->setVar(
-                    array(
-                        'method_name' => $name,
-                        'arguments'   => implode(', ', $args)
-                    )
-                );
-
-                $methodsBuffer .= $methodTemplate->render();
-            }
-        }
-
-        $optionsBuffer = 'array(';
-
-        foreach ($options as $key => $value) {
-            $optionsBuffer .= $key . ' => ' . $value;
-        }
-
-        $optionsBuffer .= ')';
-
-        $classTemplate = new Text_Template($templateDir . 'wsdl_class.tpl');
-        $namespace     = '';
-
-        if (strpos($className, '\\') !== false) {
-            $parts     = explode('\\', $className);
-            $className = array_pop($parts);
-            $namespace = 'namespace ' . implode('\\', $parts) . ';' . "\n\n";
-        }
-
-        $classTemplate->setVar(
-            array(
-                'namespace'  => $namespace,
-                'class_name' => $className,
-                'wsdl'       => $wsdlFile,
-                'options'    => $optionsBuffer,
-                'methods'    => $methodsBuffer
-            )
-        );
-
-        return $classTemplate->render();
-    }
-
-    /**
-     * @param  array|string                $type
-     * @param  array|null                  $methods
-     * @param  string                      $mockClassName
-     * @param  bool                        $callOriginalClone
-     * @param  bool                        $callAutoload
-     * @param  bool                        $cloneArguments
-     * @param  bool                        $callOriginalMethods
-     * @return array
-     * @throws PHPUnit_Framework_Exception
-     */
-    protected function generateMock($type, $methods, $mockClassName, $callOriginalClone, $callAutoload, $cloneArguments, $callOriginalMethods)
-    {
-        $templateDir   = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Generator' .
-                         DIRECTORY_SEPARATOR;
-        $classTemplate = new Text_Template(
-            $templateDir . 'mocked_class.tpl'
-        );
-
-        $additionalInterfaces = array();
-        $cloneTemplate        = '';
-        $isClass              = false;
-        $isInterface          = false;
-
-        $mockClassName = $this->generateClassName(
-            $type,
-            $mockClassName,
-            'Mock_'
-        );
-
-        if (is_array($type)) {
-            foreach ($type as $_type) {
-                if (!interface_exists($_type, $callAutoload)) {
-                    throw new PHPUnit_Framework_Exception(
-                        sprintf(
-                            'Interface "%s" does not exist.',
-                            $_type
-                        )
-                    );
-                }
-
-                $additionalInterfaces[] = $_type;
-
-                foreach ($this->getClassMethods($_type) as $method) {
-                    if (in_array($method, $methods)) {
-                        throw new PHPUnit_Framework_Exception(
-                            sprintf(
-                                'Duplicate method "%s" not allowed.',
-                                $method
-                            )
-                        );
-                    }
-
-                    $methods[] = $method;
-                }
-            }
-        }
-
-        if (class_exists($mockClassName['fullClassName'], $callAutoload)) {
-            $isClass = true;
-        } else {
-            if (interface_exists($mockClassName['fullClassName'], $callAutoload)) {
-                $isInterface = true;
-            }
-        }
-
-        if (!class_exists($mockClassName['fullClassName'], $callAutoload) &&
-            !interface_exists($mockClassName['fullClassName'], $callAutoload)) {
-            $prologue = 'class ' . $mockClassName['originalClassName'] . "\n{\n}\n\n";
-
-            if (!empty($mockClassName['namespaceName'])) {
-                $prologue = 'namespace ' . $mockClassName['namespaceName'] .
-                            " {\n\n" . $prologue . "}\n\n" .
-                            "namespace {\n\n";
-
-                $epilogue = "\n\n}";
-            }
-
-            $cloneTemplate = new Text_Template(
-                $templateDir . 'mocked_clone.tpl'
-            );
-        } else {
-            $class = new ReflectionClass($mockClassName['fullClassName']);
-
-            if ($class->isFinal()) {
-                throw new PHPUnit_Framework_Exception(
-                    sprintf(
-                        'Class "%s" is declared "final" and cannot be mocked.',
-                        $mockClassName['fullClassName']
-                    )
-                );
-            }
-
-            if ($class->hasMethod('__clone')) {
-                $cloneMethod = $class->getMethod('__clone');
-
-                if (!$cloneMethod->isFinal()) {
-                    if ($callOriginalClone && !$isInterface) {
-                        $cloneTemplate = new Text_Template(
-                            $templateDir . 'unmocked_clone.tpl'
-                        );
-                    } else {
-                        $cloneTemplate = new Text_Template(
-                            $templateDir . 'mocked_clone.tpl'
-                        );
-                    }
-                }
-            } else {
-                $cloneTemplate = new Text_Template(
-                    $templateDir . 'mocked_clone.tpl'
-                );
-            }
-        }
-
-        if (is_object($cloneTemplate)) {
-            $cloneTemplate = $cloneTemplate->render();
-        }
-
-        if (is_array($methods) && empty($methods) &&
-            ($isClass || $isInterface)) {
-            $methods = $this->getClassMethods($mockClassName['fullClassName']);
-        }
-
-        if (!is_array($methods)) {
-            $methods = array();
-        }
-
-        $mockedMethods = '';
-
-        if (isset($class)) {
-            // https://github.com/sebastianbergmann/phpunit-mock-objects/issues/103
-            if ($isInterface && $class->implementsInterface('Traversable') &&
-                !$class->implementsInterface('Iterator') &&
-                !$class->implementsInterface('IteratorAggregate')) {
-                $additionalInterfaces[] = 'Iterator';
-                $methods                = array_merge($methods, $this->getClassMethods('Iterator'));
-            }
-
-            foreach ($methods as $methodName) {
-                try {
-                    $method = $class->getMethod($methodName);
-
-                    if ($this->canMockMethod($method)) {
-                        $mockedMethods .= $this->generateMockedMethodDefinitionFromExisting(
-                            $templateDir,
-                            $method,
-                            $cloneArguments,
-                            $callOriginalMethods
-                        );
-                    }
-                } catch (ReflectionException $e) {
-                    $mockedMethods .= $this->generateMockedMethodDefinition(
-                        $templateDir,
-                        $mockClassName['fullClassName'],
-                        $methodName,
-                        $cloneArguments
-                    );
-                }
-            }
-        } else {
-            foreach ($methods as $methodName) {
-                $mockedMethods .= $this->generateMockedMethodDefinition(
-                    $templateDir,
-                    $mockClassName['fullClassName'],
-                    $methodName,
-                    $cloneArguments
-                );
-            }
-        }
-
-        $method = '';
-
-        if (!in_array('method', $methods)) {
-            $methodTemplate = new Text_Template(
-                $templateDir . 'mocked_class_method.tpl'
-            );
-
-            $method = $methodTemplate->render();
-        }
-
-        $classTemplate->setVar(
-            array(
-            'prologue'          => isset($prologue) ? $prologue : '',
-            'epilogue'          => isset($epilogue) ? $epilogue : '',
-            'class_declaration' => $this->generateMockClassDeclaration(
-                $mockClassName,
-                $isInterface,
-                $additionalInterfaces
-            ),
-            'clone'             => $cloneTemplate,
-            'mock_class_name'   => $mockClassName['className'],
-            'mocked_methods'    => $mockedMethods,
-            'method'            => $method
-            )
-        );
-
-        return array(
-          'code'          => $classTemplate->render(),
-          'mockClassName' => $mockClassName['className']
-        );
-    }
-
-    /**
-     * @param  array|string $type
-     * @param  string       $className
-     * @param  string       $prefix
-     * @return array
-     */
-    protected function generateClassName($type, $className, $prefix)
-    {
-        if (is_array($type)) {
-            $type = implode('_', $type);
-        }
-
-        if ($type[0] == '\\') {
-            $type = substr($type, 1);
-        }
-
-        $classNameParts = explode('\\', $type);
-
-        if (count($classNameParts) > 1) {
-            $type          = array_pop($classNameParts);
-            $namespaceName = implode('\\', $classNameParts);
-            $fullClassName = $namespaceName . '\\' . $type;
-        } else {
-            $namespaceName = '';
-            $fullClassName = $type;
-        }
-
-        if ($className == '') {
-            do {
-                $className = $prefix . $type . '_' .
-                             substr(md5(microtime()), 0, 8);
-            } while (class_exists($className, false));
-        }
-
-        return array(
-          'className'         => $className,
-          'originalClassName' => $type,
-          'fullClassName'     => $fullClassName,
-          'namespaceName'     => $namespaceName
-        );
-    }
-
-    /**
-     * @param  array $mockClassName
-     * @param  bool  $isInterface
-     * @param  array $additionalInterfaces
-     * @return array
-     */
-    protected function generateMockClassDeclaration(array $mockClassName, $isInterface, array $additionalInterfaces = array())
-    {
-        $buffer = 'class ';
-
-        $additionalInterfaces[] = 'PHPUnit_Framework_MockObject_MockObject';
-        $interfaces             = implode(', ', $additionalInterfaces);
-
-        if ($isInterface) {
-            $buffer .= sprintf(
-                '%s implements %s',
-                $mockClassName['className'],
-                $interfaces
-            );
-
-            if (!in_array($mockClassName['originalClassName'], $additionalInterfaces)) {
-                $buffer .= ', ';
-
-                if (!empty($mockClassName['namespaceName'])) {
-                    $buffer .= $mockClassName['namespaceName'] . '\\';
-                }
-
-                $buffer .= $mockClassName['originalClassName'];
-            }
-        } else {
-            $buffer .= sprintf(
-                '%s extends %s%s implements %s',
-                $mockClassName['className'],
-                !empty($mockClassName['namespaceName']) ? $mockClassName['namespaceName'] . '\\' : '',
-                $mockClassName['originalClassName'],
-                $interfaces
-            );
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * @param  string           $templateDir
-     * @param  ReflectionMethod $method
-     * @param  bool             $cloneArguments
-     * @param  bool             $callOriginalMethods
-     * @return string
-     */
-    protected function generateMockedMethodDefinitionFromExisting($templateDir, ReflectionMethod $method, $cloneArguments, $callOriginalMethods)
-    {
-        if ($method->isPrivate()) {
-            $modifier = 'private';
-        } elseif ($method->isProtected()) {
-            $modifier = 'protected';
-        } else {
-            $modifier = 'public';
-        }
-
-        if ($method->isStatic()) {
-            $modifier .= ' static';
-        }
-
-        if ($method->returnsReference()) {
-            $reference = '&';
-        } else {
-            $reference = '';
-        }
-
-        return $this->generateMockedMethodDefinition(
-            $templateDir,
-            $method->getDeclaringClass()->getName(),
-            $method->getName(),
-            $cloneArguments,
-            $modifier,
-            $this->getMethodParameters($method),
-            $this->getMethodParameters($method, true),
-            $reference,
-            $callOriginalMethods,
-            $method->isStatic()
-        );
-    }
-
-    /**
-     * @param  string $templateDir
-     * @param  string $className
-     * @param  string $methodName
-     * @param  bool   $cloneArguments
-     * @param  string $modifier
-     * @param  string $arguments_decl
-     * @param  string $arguments_call
-     * @param  string $reference
-     * @param  bool   $callOriginalMethods
-     * @param  bool   $static
-     * @return string
-     */
-    protected function generateMockedMethodDefinition($templateDir, $className, $methodName, $cloneArguments = true, $modifier = 'public', $arguments_decl = '', $arguments_call = '', $reference = '', $callOriginalMethods = false, $static = false)
-    {
-        if ($static) {
-            $templateFile = 'mocked_static_method.tpl';
-        } else {
-            $templateFile = sprintf(
-                '%s_method.tpl',
-                $callOriginalMethods ? 'proxied' : 'mocked'
-            );
-        }
-
-        $template = new Text_Template($templateDir . $templateFile);
-
-        $template->setVar(
-            array(
-            'arguments_decl'  => $arguments_decl,
-            'arguments_call'  => $arguments_call,
-            'arguments_count' => !empty($arguments_call) ? count(explode(',', $arguments_call)) : 0,
-            'class_name'      => $className,
-            'method_name'     => $methodName,
-            'modifier'        => $modifier,
-            'reference'       => $reference,
-            'clone_arguments' => $cloneArguments ? 'TRUE' : 'FALSE'
-            )
-        );
-
-        return $template->render();
-    }
-
-    /**
-     * @param  ReflectionMethod $method
-     * @return bool
-     */
-    protected function canMockMethod(ReflectionMethod $method)
-    {
-        if ($method->isConstructor() ||
-            $method->isFinal() ||
-            $method->isPrivate() ||
-            isset($this->blacklistedMethodNames[$method->getName()])) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns the parameters of a function or method.
-     *
-     * @param  ReflectionMethod                              $method
-     * @param  bool                                          $forCall
-     * @return string
-     * @throws PHPUnit_Framework_MockObject_RuntimeException
-     * @since  Method available since Release 2.0.0
-     */
-    protected function getMethodParameters(ReflectionMethod $method, $forCall = false)
-    {
-        $parameters = array();
-
-        foreach ($method->getParameters() as $i => $parameter) {
-            $name = '$' . $parameter->getName();
-
-            /* Note: PHP extensions may use empty names for reference arguments
-             * or "..." for methods taking a variable number of arguments.
-             */
-            if ($name === '$' || $name === '$...') {
-                $name = '$arg' . $i;
-            }
-
-            if ($this->isVariadic($parameter)) {
-                if ($forCall) {
-                    continue;
-                } else {
-                    $name = '...' . $name;
-                }
-            }
-
-            $default         = '';
-            $reference       = '';
-            $typeDeclaration = '';
-
-            if (!$forCall) {
-                if ($this->hasType($parameter)) {
-                    $typeDeclaration = (string) $parameter->getType() . ' ';
-                } elseif ($parameter->isArray()) {
-                    $typeDeclaration = 'array ';
-                } elseif ((defined('HHVM_VERSION') || version_compare(PHP_VERSION, '5.4.0', '>='))
-                          && $parameter->isCallable()) {
-                    $typeDeclaration = 'callable ';
-                } else {
-                    try {
-                        $class = $parameter->getClass();
-                    } catch (ReflectionException $e) {
-                        throw new PHPUnit_Framework_MockObject_RuntimeException(
-                            sprintf(
-                                'Cannot mock %s::%s() because a class or ' .
-                                'interface used in the signature is not loaded',
-                                $method->getDeclaringClass()->getName(),
-                                $method->getName()
-                            ),
-                            0,
-                            $e
-                        );
-                    }
-
-                    if ($class !== null) {
-                        $typeDeclaration = $class->getName() . ' ';
-                    }
-                }
-
-                if (!$this->isVariadic($parameter)) {
-                    if ($parameter->isDefaultValueAvailable()) {
-                        $value   = $parameter->getDefaultValue();
-                        $default = ' = ' . var_export($value, true);
-                    } elseif ($parameter->isOptional()) {
-                        $default = ' = null';
-                    }
-                }
-            }
-
-            if ($parameter->isPassedByReference()) {
-                $reference = '&';
-            }
-
-            $parameters[] = $typeDeclaration . $reference . $name . $default;
-        }
-
-        return implode(', ', $parameters);
-    }
-
-    /**
-     * @param  ReflectionParameter $parameter
-     * @return bool
-     * @since  Method available since Release 2.2.1
-     */
-    private function isVariadic(ReflectionParameter $parameter)
-    {
-        return method_exists('ReflectionParameter', 'isVariadic') && $parameter->isVariadic();
-    }
-
-    /**
-     * @param  ReflectionParameter $parameter
-     * @return bool
-     * @since  Method available since Release 2.3.4
-     */
-    private function hasType(ReflectionParameter $parameter)
-    {
-        return method_exists('ReflectionParameter', 'hasType') && $parameter->hasType();
-    }
-
-    /**
-     * @param  string $className
-     * @return array
-     * @since  Method available since Release 2.3.2
-     */
-    private function getClassMethods($className)
-    {
-        $class   = new ReflectionClass($className);
-        $methods = array();
-
-        foreach ($class->getMethods() as $method) {
-            if (($method->isPublic() || $method->isAbstract()) && !in_array($method->getName(), $methods)) {
-                $methods[] = $method->getName();
-            }
-        }
-
-        return $methods;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class.tpl.dist b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class.tpl.dist
deleted file mode 100644
index a9a94cd..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class.tpl.dist
+++ /dev/null
@@ -1,36 +0,0 @@
-{prologue}{class_declaration}
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-{clone}{mocked_methods}
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-{method}
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}{epilogue}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class_method.tpl.dist b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class_method.tpl.dist
deleted file mode 100644
index 9e29c0d..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class_method.tpl.dist
+++ /dev/null
@@ -1,7 +0,0 @@
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_clone.tpl.dist b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_clone.tpl.dist
deleted file mode 100644
index bd846de..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_clone.tpl.dist
+++ /dev/null
@@ -1,4 +0,0 @@
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_method.tpl.dist b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_method.tpl.dist
deleted file mode 100644
index e2f55d9..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_method.tpl.dist
+++ /dev/null
@@ -1,22 +0,0 @@
-
-    {modifier} function {reference}{method_name}({arguments_decl})
-    {
-        $arguments = array({arguments_call});
-        $count     = func_num_args();
-
-        if ($count > {arguments_count}) {
-            $_arguments = func_get_args();
-
-            for ($i = {arguments_count}; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            '{class_name}', '{method_name}', $arguments, $this, {clone_arguments}
-          )
-        );
-
-        return $result;
-    }
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_static_method.tpl.dist b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_static_method.tpl.dist
deleted file mode 100644
index 5454b2f..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_static_method.tpl.dist
+++ /dev/null
@@ -1,5 +0,0 @@
-
-    {modifier} function {reference}{method_name}({arguments_decl})
-    {
-        throw new PHPUnit_Framework_MockObject_BadMethodCallException;
-    }
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/proxied_method.tpl.dist b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/proxied_method.tpl.dist
deleted file mode 100644
index 15e89bd..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/proxied_method.tpl.dist
+++ /dev/null
@@ -1,22 +0,0 @@
-
-    {modifier} function {reference}{method_name}({arguments_decl})
-    {
-        $arguments = array({arguments_call});
-        $count     = func_num_args();
-
-        if ($count > {arguments_count}) {
-            $_arguments = func_get_args();
-
-            for ($i = {arguments_count}; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            '{class_name}', '{method_name}', $arguments, $this, {clone_arguments}
-          )
-        );
-
-        return call_user_func_array(array($this->__phpunit_originalObject, "{method_name}"), $arguments);
-    }
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/trait_class.tpl.dist b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/trait_class.tpl.dist
deleted file mode 100644
index 4143b0f..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/trait_class.tpl.dist
+++ /dev/null
@@ -1,4 +0,0 @@
-{prologue}class {class_name}
-{
-    use {trait_name};
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/unmocked_clone.tpl.dist b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/unmocked_clone.tpl.dist
deleted file mode 100644
index fa0e70a..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/unmocked_clone.tpl.dist
+++ /dev/null
@@ -1,5 +0,0 @@
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-        parent::__clone();
-    }
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/wsdl_class.tpl.dist b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/wsdl_class.tpl.dist
deleted file mode 100644
index cc69fd3..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/wsdl_class.tpl.dist
+++ /dev/null
@@ -1,7 +0,0 @@
-{namespace}class {class_name} extends \SoapClient
-{
-    public function __construct($wsdl, array $options)
-    {
-        parent::__construct('{wsdl}', $options);
-    }
-{methods}}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/wsdl_method.tpl.dist b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/wsdl_method.tpl.dist
deleted file mode 100644
index bb16e76..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/wsdl_method.tpl.dist
+++ /dev/null
@@ -1,4 +0,0 @@
-
-    public function {method_name}({arguments})
-    {
-    }
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php
deleted file mode 100644
index 055707d..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Interface for invocations.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Invocation
-{
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php
deleted file mode 100644
index 575c13c..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Represents a non-static invocation.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Invocation_Object extends PHPUnit_Framework_MockObject_Invocation_Static
-{
-    /**
-     * @var object
-     */
-    public $object;
-
-    /**
-     * @param string $className
-     * @param string $methodname
-     * @param array  $parameters
-     * @param object $object
-     * @param object $cloneObjects
-     */
-    public function __construct($className, $methodName, array $parameters, $object, $cloneObjects = false)
-    {
-        parent::__construct($className, $methodName, $parameters, $cloneObjects);
-        $this->object = $object;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php
deleted file mode 100644
index 3d295e5..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-use SebastianBergmann\Exporter\Exporter;
-
-/**
- * Represents a static invocation.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Invocation_Static implements PHPUnit_Framework_MockObject_Invocation, PHPUnit_Framework_SelfDescribing
-{
-    /**
-     * @var array
-     */
-    protected static $uncloneableExtensions = array(
-      'mysqli'    => true,
-      'SQLite'    => true,
-      'sqlite3'   => true,
-      'tidy'      => true,
-      'xmlwriter' => true,
-      'xsl'       => true
-    );
-
-    /**
-     * @var array
-     */
-    protected static $uncloneableClasses = array(
-      'Closure',
-      'COMPersistHelper',
-      'IteratorIterator',
-      'RecursiveIteratorIterator',
-      'SplFileObject',
-      'PDORow',
-      'ZipArchive'
-    );
-
-    /**
-     * @var string
-     */
-    public $className;
-
-    /**
-     * @var string
-     */
-    public $methodName;
-
-    /**
-     * @var array
-     */
-    public $parameters;
-
-    /**
-     * @param string $className
-     * @param string $methodname
-     * @param array  $parameters
-     * @param bool   $cloneObjects
-     */
-    public function __construct($className, $methodName, array $parameters, $cloneObjects = false)
-    {
-        $this->className  = $className;
-        $this->methodName = $methodName;
-        $this->parameters = $parameters;
-
-        if (!$cloneObjects) {
-            return;
-        }
-
-        foreach ($this->parameters as $key => $value) {
-            if (is_object($value)) {
-                $this->parameters[$key] = $this->cloneObject($value);
-            }
-        }
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        $exporter = new Exporter;
-
-        return sprintf(
-            '%s::%s(%s)',
-            $this->className,
-            $this->methodName,
-            implode(
-                ', ',
-                array_map(
-                    array($exporter, 'shortenedExport'),
-                    $this->parameters
-                )
-            )
-        );
-    }
-
-    /**
-     * @param  object $original
-     * @return object
-     */
-    protected function cloneObject($original)
-    {
-        $cloneable = null;
-        $object    = new ReflectionObject($original);
-
-        // Check the blacklist before asking PHP reflection to work around
-        // https://bugs.php.net/bug.php?id=53967
-        if ($object->isInternal() &&
-            isset(self::$uncloneableExtensions[$object->getExtensionName()])) {
-            $cloneable = false;
-        }
-
-        if ($cloneable === null) {
-            foreach (self::$uncloneableClasses as $class) {
-                if ($original instanceof $class) {
-                    $cloneable = false;
-                    break;
-                }
-            }
-        }
-
-        if ($cloneable === null && method_exists($object, 'isCloneable')) {
-            $cloneable = $object->isCloneable();
-        }
-
-        if ($cloneable === null && $object->hasMethod('__clone')) {
-            $method    = $object->getMethod('__clone');
-            $cloneable = $method->isPublic();
-        }
-
-        if ($cloneable === null) {
-            $cloneable = true;
-        }
-
-        if ($cloneable) {
-            try {
-                return clone $original;
-            } catch (Exception $e) {
-                return $original;
-            }
-        } else {
-            return $original;
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php
deleted file mode 100644
index 4bec5d6..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Mocker for invocations which are sent from
- * PHPUnit_Framework_MockObject_MockObject objects.
- *
- * Keeps track of all expectations and stubs as well as registering
- * identifications for builders.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_InvocationMocker implements PHPUnit_Framework_MockObject_Stub_MatcherCollection, PHPUnit_Framework_MockObject_Invokable, PHPUnit_Framework_MockObject_Builder_Namespace
-{
-    /**
-     * @var PHPUnit_Framework_MockObject_Matcher_Invocation[]
-     */
-    protected $matchers = array();
-
-    /**
-     * @var PHPUnit_Framework_MockObject_Builder_Match[]
-     */
-    protected $builderMap = array();
-
-    /**
-     * @param PHPUnit_Framework_MockObject_Matcher_Invocation $matcher
-     */
-    public function addMatcher(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        $this->matchers[] = $matcher;
-    }
-
-    /**
-     * @since Method available since Release 1.1.0
-     */
-    public function hasMatchers()
-    {
-        foreach ($this->matchers as $matcher) {
-            if ($matcher->hasMatchers()) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * @param  mixed     $id
-     * @return bool|null
-     */
-    public function lookupId($id)
-    {
-        if (isset($this->builderMap[$id])) {
-            return $this->builderMap[$id];
-        }
-
-        return;
-    }
-
-    /**
-     * @param  mixed                                      $id
-     * @param  PHPUnit_Framework_MockObject_Builder_Match $builder
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function registerId($id, PHPUnit_Framework_MockObject_Builder_Match $builder)
-    {
-        if (isset($this->builderMap[$id])) {
-            throw new PHPUnit_Framework_Exception(
-                'Match builder with id <' . $id . '> is already registered.'
-            );
-        }
-
-        $this->builderMap[$id] = $builder;
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Matcher_Invocation       $matcher
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return new PHPUnit_Framework_MockObject_Builder_InvocationMocker(
-            $this,
-            $matcher
-        );
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     * @return mixed
-     */
-    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        $exception      = null;
-        $hasReturnValue = false;
-
-        if (strtolower($invocation->methodName) == '__tostring') {
-            $returnValue = '';
-        } else {
-            $returnValue = null;
-        }
-
-        foreach ($this->matchers as $match) {
-            try {
-                if ($match->matches($invocation)) {
-                    $value = $match->invoked($invocation);
-
-                    if (!$hasReturnValue) {
-                        $returnValue    = $value;
-                        $hasReturnValue = true;
-                    }
-                }
-            } catch (Exception $e) {
-                $exception = $e;
-            }
-        }
-
-        if ($exception !== null) {
-            throw $exception;
-        }
-
-        return $returnValue;
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     * @return bool
-     */
-    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        foreach ($this->matchers as $matcher) {
-            if (!$matcher->matches($invocation)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * @return bool
-     */
-    public function verify()
-    {
-        foreach ($this->matchers as $matcher) {
-            $matcher->verify();
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php
deleted file mode 100644
index b5699a0..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Interface for classes which can be invoked.
- *
- * The invocation will be taken from a mock object and passed to an object
- * of this class.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Invokable extends PHPUnit_Framework_MockObject_Verifiable
-{
-    /**
-     * Invokes the invocation object $invocation so that it can be checked for
-     * expectations or matched against stubs.
-     *
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     *                                                             The invocation object passed from mock object.
-     * @return object
-     */
-    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation);
-
-    /**
-     * Checks if the invocation matches.
-     *
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     *                                                             The invocation object passed from mock object.
-     * @return bool
-     */
-    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation);
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php
deleted file mode 100644
index da3bcde..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Main matcher which defines a full expectation using method, parameter and
- * invocation matchers.
- * This matcher encapsulates all the other matchers and allows the builder to
- * set the specific matchers when the appropriate methods are called (once(),
- * where() etc.).
- *
- * All properties are public so that they can easily be accessed by the builder.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Matcher implements PHPUnit_Framework_MockObject_Matcher_Invocation
-{
-    /**
-     * @var PHPUnit_Framework_MockObject_Matcher_Invocation
-     */
-    public $invocationMatcher;
-
-    /**
-     * @var mixed
-     */
-    public $afterMatchBuilderId = null;
-
-    /**
-     * @var bool
-     */
-    public $afterMatchBuilderIsInvoked = false;
-
-    /**
-     * @var PHPUnit_Framework_MockObject_Matcher_MethodName
-     */
-    public $methodNameMatcher = null;
-
-    /**
-     * @var PHPUnit_Framework_MockObject_Matcher_Parameters
-     */
-    public $parametersMatcher = null;
-
-    /**
-     * @var PHPUnit_Framework_MockObject_Stub
-     */
-    public $stub = null;
-
-    /**
-     * @param PHPUnit_Framework_MockObject_Matcher_Invocation $invocationMatcher
-     */
-    public function __construct(PHPUnit_Framework_MockObject_Matcher_Invocation $invocationMatcher)
-    {
-        $this->invocationMatcher = $invocationMatcher;
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        $list = array();
-
-        if ($this->invocationMatcher !== null) {
-            $list[] = $this->invocationMatcher->toString();
-        }
-
-        if ($this->methodNameMatcher !== null) {
-            $list[] = 'where ' . $this->methodNameMatcher->toString();
-        }
-
-        if ($this->parametersMatcher !== null) {
-            $list[] = 'and ' . $this->parametersMatcher->toString();
-        }
-
-        if ($this->afterMatchBuilderId !== null) {
-            $list[] = 'after ' . $this->afterMatchBuilderId;
-        }
-
-        if ($this->stub !== null) {
-            $list[] = 'will ' . $this->stub->toString();
-        }
-
-        return implode(' ', $list);
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     * @return mixed
-     */
-    public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        if ($this->invocationMatcher === null) {
-            throw new PHPUnit_Framework_Exception(
-                'No invocation matcher is set'
-            );
-        }
-
-        if ($this->methodNameMatcher === null) {
-            throw new PHPUnit_Framework_Exception('No method matcher is set');
-        }
-
-        if ($this->afterMatchBuilderId !== null) {
-            $builder = $invocation->object
-                                  ->__phpunit_getInvocationMocker()
-                                  ->lookupId($this->afterMatchBuilderId);
-
-            if (!$builder) {
-                throw new PHPUnit_Framework_Exception(
-                    sprintf(
-                        'No builder found for match builder identification <%s>',
-                        $this->afterMatchBuilderId
-                    )
-                );
-            }
-
-            $matcher = $builder->getMatcher();
-
-            if ($matcher && $matcher->invocationMatcher->hasBeenInvoked()) {
-                $this->afterMatchBuilderIsInvoked = true;
-            }
-        }
-
-        $this->invocationMatcher->invoked($invocation);
-
-        try {
-            if ($this->parametersMatcher !== null &&
-                !$this->parametersMatcher->matches($invocation)) {
-                $this->parametersMatcher->verify();
-            }
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                sprintf(
-                    "Expectation failed for %s when %s\n%s",
-                    $this->methodNameMatcher->toString(),
-                    $this->invocationMatcher->toString(),
-                    $e->getMessage()
-                ),
-                $e->getComparisonFailure()
-            );
-        }
-
-        if ($this->stub) {
-            return $this->stub->invoke($invocation);
-        }
-
-        return;
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     * @return bool
-     */
-    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        if ($this->afterMatchBuilderId !== null) {
-            $builder = $invocation->object
-                                  ->__phpunit_getInvocationMocker()
-                                  ->lookupId($this->afterMatchBuilderId);
-
-            if (!$builder) {
-                throw new PHPUnit_Framework_Exception(
-                    sprintf(
-                        'No builder found for match builder identification <%s>',
-                        $this->afterMatchBuilderId
-                    )
-                );
-            }
-
-            $matcher = $builder->getMatcher();
-
-            if (!$matcher) {
-                return false;
-            }
-
-            if (!$matcher->invocationMatcher->hasBeenInvoked()) {
-                return false;
-            }
-        }
-
-        if ($this->invocationMatcher === null) {
-            throw new PHPUnit_Framework_Exception(
-                'No invocation matcher is set'
-            );
-        }
-
-        if ($this->methodNameMatcher === null) {
-            throw new PHPUnit_Framework_Exception('No method matcher is set');
-        }
-
-        if (!$this->invocationMatcher->matches($invocation)) {
-            return false;
-        }
-
-        try {
-            if (!$this->methodNameMatcher->matches($invocation)) {
-                return false;
-            }
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                sprintf(
-                    "Expectation failed for %s when %s\n%s",
-                    $this->methodNameMatcher->toString(),
-                    $this->invocationMatcher->toString(),
-                    $e->getMessage()
-                ),
-                $e->getComparisonFailure()
-            );
-        }
-
-        return true;
-    }
-
-    /**
-     * @throws PHPUnit_Framework_Exception
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function verify()
-    {
-        if ($this->invocationMatcher === null) {
-            throw new PHPUnit_Framework_Exception(
-                'No invocation matcher is set'
-            );
-        }
-
-        if ($this->methodNameMatcher === null) {
-            throw new PHPUnit_Framework_Exception('No method matcher is set');
-        }
-
-        try {
-            $this->invocationMatcher->verify();
-
-            if ($this->parametersMatcher === null) {
-                $this->parametersMatcher = new PHPUnit_Framework_MockObject_Matcher_AnyParameters;
-            }
-
-            $invocationIsAny   = get_class($this->invocationMatcher) === 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount';
-            $invocationIsNever = get_class($this->invocationMatcher) === 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' && $this->invocationMatcher->isNever();
-            if (!$invocationIsAny && !$invocationIsNever) {
-                $this->parametersMatcher->verify();
-            }
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                sprintf(
-                    "Expectation failed for %s when %s.\n%s",
-                    $this->methodNameMatcher->toString(),
-                    $this->invocationMatcher->toString(),
-                    PHPUnit_Framework_TestFailure::exceptionToString($e)
-                )
-            );
-        }
-    }
-
-    /**
-     * @since Method available since Release 1.2.4
-     */
-    public function hasMatchers()
-    {
-        if ($this->invocationMatcher !== null &&
-            !$this->invocationMatcher instanceof PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount) {
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php
deleted file mode 100644
index 480f1fd..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which checks if a method has been invoked zero or more
- * times. This matcher will always match.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount extends PHPUnit_Framework_MockObject_Matcher_InvokedRecorder
-{
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'invoked zero or more times';
-    }
-
-    /**
-     */
-    public function verify()
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php
deleted file mode 100644
index 482a14f..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which allows any parameters to a method.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Matcher_AnyParameters extends PHPUnit_Framework_MockObject_Matcher_StatelessInvocation
-{
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'with any parameters';
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     * @return bool
-     */
-    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        return true;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php
deleted file mode 100644
index adf74bb..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which looks for sets of specific parameters in the invocations.
- *
- * Checks the parameters of the incoming invocations, the parameter list is
- * checked against the defined constraints in $parameters. If the constraint
- * is met it will return true in matches().
- *
- * It takes a list of match groups and and increases a call index after each invocation.
- * So the first invocation uses the first group of constraints, the second the next and so on.
- */
-class PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters extends PHPUnit_Framework_MockObject_Matcher_StatelessInvocation
-{
-    /**
-     * @var array
-     */
-    private $_parameterGroups = array();
-
-    /**
-     * @var array
-     */
-    private $_invocations = array();
-
-    /**
-     * @param array $parameterGroups
-     */
-    public function __construct(array $parameterGroups)
-    {
-        foreach ($parameterGroups as $index => $parameters) {
-            foreach ($parameters as $parameter) {
-                if (!($parameter instanceof \PHPUnit_Framework_Constraint)) {
-                    $parameter = new \PHPUnit_Framework_Constraint_IsEqual($parameter);
-                }
-                $this->_parameterGroups[$index][] = $parameter;
-            }
-        }
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        $text = 'with consecutive parameters';
-
-        return $text;
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     * @return bool
-     */
-    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        $this->_invocations[] = $invocation;
-        $callIndex            = count($this->_invocations) - 1;
-        $this->verifyInvocation($invocation, $callIndex);
-
-        return false;
-    }
-
-    public function verify()
-    {
-        foreach ($this->_invocations as $callIndex => $invocation) {
-            $this->verifyInvocation($invocation, $callIndex);
-        }
-    }
-
-    /**
-     * Verify a single invocation
-     *
-     * @param  PHPUnit_Framework_MockObject_Invocation      $invocation
-     * @param  int                                          $callIndex
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    private function verifyInvocation(PHPUnit_Framework_MockObject_Invocation $invocation, $callIndex)
-    {
-
-        if (isset($this->_parameterGroups[$callIndex])) {
-            $parameters = $this->_parameterGroups[$callIndex];
-        } else {
-          // no parameter assertion for this call index
-            return;
-        }
-
-        if ($invocation === null) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                'Mocked method does not exist.'
-            );
-        }
-
-        if (count($invocation->parameters) < count($parameters)) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                sprintf(
-                    'Parameter count for invocation %s is too low.',
-                    $invocation->toString()
-                )
-            );
-        }
-
-        foreach ($parameters as $i => $parameter) {
-            $parameter->evaluate(
-                $invocation->parameters[$i],
-                sprintf(
-                    'Parameter %s for invocation #%d %s does not match expected ' .
-                    'value.',
-                    $i,
-                    $callIndex,
-                    $invocation->toString()
-                )
-            );
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php
deleted file mode 100644
index cbe428c..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Interface for classes which matches an invocation based on its
- * method name, argument, order or call count.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Matcher_Invocation extends PHPUnit_Framework_SelfDescribing, PHPUnit_Framework_MockObject_Verifiable
-{
-    /**
-     * Registers the invocation $invocation in the object as being invoked.
-     * This will only occur after matches() returns true which means the
-     * current invocation is the correct one.
-     *
-     * The matcher can store information from the invocation which can later
-     * be checked in verify(), or it can check the values directly and throw
-     * and exception if an expectation is not met.
-     *
-     * If the matcher is a stub it will also have a return value.
-     *
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     *                                                             Object containing information on a mocked or stubbed method which
-     *                                                             was invoked.
-     * @return mixed
-     */
-    public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation);
-
-    /**
-     * Checks if the invocation $invocation matches the current rules. If it does
-     * the matcher will get the invoked() method called which should check if an
-     * expectation is met.
-     *
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     *                                                             Object containing information on a mocked or stubbed method which
-     *                                                             was invoked.
-     * @return bool
-     */
-    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation);
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php
deleted file mode 100644
index 1b17089..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which checks if a method was invoked at a certain index.
- *
- * If the expected index number does not match the current invocation index it
- * will not match which means it skips all method and parameter matching. Only
- * once the index is reached will the method and parameter start matching and
- * verifying.
- *
- * If the index is never reached it will throw an exception in index.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex implements PHPUnit_Framework_MockObject_Matcher_Invocation
-{
-    /**
-     * @var int
-     */
-    protected $sequenceIndex;
-
-    /**
-     * @var int
-     */
-    protected $currentIndex = -1;
-
-    /**
-     * @param int $sequenceIndex
-     */
-    public function __construct($sequenceIndex)
-    {
-        $this->sequenceIndex = $sequenceIndex;
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'invoked at sequence index ' . $this->sequenceIndex;
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     * @return bool
-     */
-    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        $this->currentIndex++;
-
-        return $this->currentIndex == $this->sequenceIndex;
-    }
-
-    /**
-     * @param PHPUnit_Framework_MockObject_Invocation $invocation
-     */
-    public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-    }
-
-    /**
-     * Verifies that the current expectation is valid. If everything is OK the
-     * code should just return, if not it must throw an exception.
-     *
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function verify()
-    {
-        if ($this->currentIndex < $this->sequenceIndex) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                sprintf(
-                    'The expected invocation at index %s was never reached.',
-                    $this->sequenceIndex
-                )
-            );
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php
deleted file mode 100644
index 23bf05b..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which checks if a method has been invoked at least
- * N times.
- *
- * @since Class available since Release 2.2.0
- */
-class PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount extends PHPUnit_Framework_MockObject_Matcher_InvokedRecorder
-{
-    /**
-     * @var int
-     */
-    private $requiredInvocations;
-
-    /**
-     * @param int $requiredInvocations
-     */
-    public function __construct($requiredInvocations)
-    {
-        $this->requiredInvocations = $requiredInvocations;
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'invoked at least ' . $this->requiredInvocations . ' times';
-    }
-
-    /**
-     * Verifies that the current expectation is valid. If everything is OK the
-     * code should just return, if not it must throw an exception.
-     *
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function verify()
-    {
-        $count = $this->getInvocationCount();
-
-        if ($count < $this->requiredInvocations) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                'Expected invocation at least ' . $this->requiredInvocations .
-                ' times but it occured ' . $count . ' time(s).'
-            );
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php
deleted file mode 100644
index 4df2dd1..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which checks if a method has been invoked at least one
- * time.
- *
- * If the number of invocations is 0 it will throw an exception in verify.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce extends PHPUnit_Framework_MockObject_Matcher_InvokedRecorder
-{
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'invoked at least once';
-    }
-
-    /**
-     * Verifies that the current expectation is valid. If everything is OK the
-     * code should just return, if not it must throw an exception.
-     *
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function verify()
-    {
-        $count = $this->getInvocationCount();
-
-        if ($count < 1) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                'Expected invocation at least once but it never occured.'
-            );
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php
deleted file mode 100644
index df9f124..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which checks if a method has been invoked at least
- * N times.
- *
- * @since Class available since Release 2.2.0
- */
-class PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount extends PHPUnit_Framework_MockObject_Matcher_InvokedRecorder
-{
-    /**
-     * @var int
-     */
-    private $allowedInvocations;
-
-    /**
-     * @param int $allowedInvocations
-     */
-    public function __construct($allowedInvocations)
-    {
-        $this->allowedInvocations = $allowedInvocations;
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'invoked at most ' . $this->allowedInvocations . ' times';
-    }
-
-    /**
-     * Verifies that the current expectation is valid. If everything is OK the
-     * code should just return, if not it must throw an exception.
-     *
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function verify()
-    {
-        $count = $this->getInvocationCount();
-
-        if ($count > $this->allowedInvocations) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                'Expected invocation at most ' . $this->allowedInvocations .
-                ' times but it occured ' . $count . ' time(s).'
-            );
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php
deleted file mode 100644
index d87dd35..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which checks if a method has been invoked a certain amount
- * of times.
- * If the number of invocations exceeds the value it will immediately throw an
- * exception,
- * If the number is less it will later be checked in verify() and also throw an
- * exception.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Matcher_InvokedCount extends PHPUnit_Framework_MockObject_Matcher_InvokedRecorder
-{
-    /**
-     * @var int
-     */
-    protected $expectedCount;
-
-    /**
-     * @param int $expectedCount
-     */
-    public function __construct($expectedCount)
-    {
-        $this->expectedCount = $expectedCount;
-    }
-
-    /**
-     * @return bool
-     */
-    public function isNever()
-    {
-        return $this->expectedCount == 0;
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'invoked ' . $this->expectedCount . ' time(s)';
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation      $invocation
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        parent::invoked($invocation);
-
-        $count = $this->getInvocationCount();
-
-        if ($count > $this->expectedCount) {
-            $message = $invocation->toString() . ' ';
-
-            switch ($this->expectedCount) {
-                case 0: {
-                    $message .= 'was not expected to be called.';
-                }
-                break;
-
-                case 1: {
-                    $message .= 'was not expected to be called more than once.';
-                }
-                break;
-
-                default: {
-                    $message .= sprintf(
-                        'was not expected to be called more than %d times.',
-                        $this->expectedCount
-                    );
-                    }
-            }
-
-            throw new PHPUnit_Framework_ExpectationFailedException($message);
-        }
-    }
-
-    /**
-     * Verifies that the current expectation is valid. If everything is OK the
-     * code should just return, if not it must throw an exception.
-     *
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function verify()
-    {
-        $count = $this->getInvocationCount();
-
-        if ($count !== $this->expectedCount) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                sprintf(
-                    'Method was expected to be called %d times, ' .
-                    'actually called %d times.',
-                    $this->expectedCount,
-                    $count
-                )
-            );
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php
deleted file mode 100644
index d652f2d..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Records invocations and provides convenience methods for checking them later
- * on.
- * This abstract class can be implemented by matchers which needs to check the
- * number of times an invocation has occured.
- *
- * @since Class available since Release 1.0.0
- * @abstract
- */
-abstract class PHPUnit_Framework_MockObject_Matcher_InvokedRecorder implements PHPUnit_Framework_MockObject_Matcher_Invocation
-{
-    /**
-     * @var PHPUnit_Framework_MockObject_Invocation[]
-     */
-    protected $invocations = array();
-
-    /**
-     * @return int
-     */
-    public function getInvocationCount()
-    {
-        return count($this->invocations);
-    }
-
-    /**
-     * @return PHPUnit_Framework_MockObject_Invocation[]
-     */
-    public function getInvocations()
-    {
-        return $this->invocations;
-    }
-
-    /**
-     * @return bool
-     */
-    public function hasBeenInvoked()
-    {
-        return count($this->invocations) > 0;
-    }
-
-    /**
-     * @param PHPUnit_Framework_MockObject_Invocation $invocation
-     */
-    public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        $this->invocations[] = $invocation;
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     * @return bool
-     */
-    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        return true;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php
deleted file mode 100644
index 1e32c7b..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which looks for a specific method name in the invocations.
- *
- * Checks the method name all incoming invocations, the name is checked against
- * the defined constraint $constraint. If the constraint is met it will return
- * true in matches().
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Matcher_MethodName extends PHPUnit_Framework_MockObject_Matcher_StatelessInvocation
-{
-    /**
-     * @var PHPUnit_Framework_Constraint
-     */
-    protected $constraint;
-
-    /**
-     * @param  PHPUnit_Framework_Constraint|string
-     * @throws PHPUnit_Framework_Constraint
-     */
-    public function __construct($constraint)
-    {
-        if (!$constraint instanceof PHPUnit_Framework_Constraint) {
-            if (!is_string($constraint)) {
-                throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-            }
-
-            $constraint = new PHPUnit_Framework_Constraint_IsEqual(
-                $constraint,
-                0,
-                10,
-                false,
-                true
-            );
-        }
-
-        $this->constraint = $constraint;
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'method name ' . $this->constraint->toString();
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     * @return bool
-     */
-    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        return $this->constraint->evaluate($invocation->methodName, '', true);
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php
deleted file mode 100644
index cd8aa85..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which looks for specific parameters in the invocations.
- *
- * Checks the parameters of all incoming invocations, the parameter list is
- * checked against the defined constraints in $parameters. If the constraint
- * is met it will return true in matches().
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Matcher_Parameters extends PHPUnit_Framework_MockObject_Matcher_StatelessInvocation
-{
-    /**
-     * @var PHPUnit_Framework_Constraint[]
-     */
-    protected $parameters = array();
-
-    /**
-     * @var PHPUnit_Framework_MockObject_Invocation
-     */
-    protected $invocation;
-
-    /**
-     * @param array $parameters
-     */
-    public function __construct(array $parameters)
-    {
-        foreach ($parameters as $parameter) {
-            if (!($parameter instanceof PHPUnit_Framework_Constraint)) {
-                $parameter = new PHPUnit_Framework_Constraint_IsEqual(
-                    $parameter
-                );
-            }
-
-            $this->parameters[] = $parameter;
-        }
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        $text = 'with parameter';
-
-        foreach ($this->parameters as $index => $parameter) {
-            if ($index > 0) {
-                $text .= ' and';
-            }
-
-            $text .= ' ' . $index . ' ' . $parameter->toString();
-        }
-
-        return $text;
-    }
-
-    /**
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     * @return bool
-     */
-    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        $this->invocation = $invocation;
-
-        return $this->verify();
-    }
-
-    /**
-     * Checks if the invocation $invocation matches the current rules. If it
-     * does the matcher will get the invoked() method called which should check
-     * if an expectation is met.
-     *
-     * @param  PHPUnit_Framework_MockObject_Invocation      $invocation
-     *                                                                  Object containing information on a mocked or stubbed method which
-     *                                                                  was invoked.
-     * @return bool
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function verify()
-    {
-        if ($this->invocation === null) {
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                'Mocked method does not exist.'
-            );
-        }
-
-        if (count($this->invocation->parameters) < count($this->parameters)) {
-            $message = 'Parameter count for invocation %s is too low.';
-
-            // The user called `->with($this->anything())`, but may have meant
-            // `->withAnyParameters()`.
-            //
-            // @see https://github.com/sebastianbergmann/phpunit-mock-objects/issues/199
-            if (count($this->parameters) === 1 &&
-                get_class($this->parameters[0]) === 'PHPUnit_Framework_Constraint_IsAnything') {
-                $message .= "\nTo allow 0 or more parameters with any value, omit ->with() or use ->withAnyParameters() instead.";
-            }
-
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                sprintf($message, $this->invocation->toString())
-            );
-        }
-
-        foreach ($this->parameters as $i => $parameter) {
-            $parameter->evaluate(
-                $this->invocation->parameters[$i],
-                sprintf(
-                    'Parameter %s for invocation %s does not match expected ' .
-                    'value.',
-                    $i,
-                    $this->invocation->toString()
-                )
-            );
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php
deleted file mode 100644
index c2e263a..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Invocation matcher which does not care about previous state from earlier
- * invocations.
- *
- * This abstract class can be implemented by matchers which does not care about
- * state but only the current run-time value of the invocation itself.
- *
- * @since Class available since Release 1.0.0
- * @abstract
- */
-abstract class PHPUnit_Framework_MockObject_Matcher_StatelessInvocation implements PHPUnit_Framework_MockObject_Matcher_Invocation
-{
-    /**
-     * Registers the invocation $invocation in the object as being invoked.
-     * This will only occur after matches() returns true which means the
-     * current invocation is the correct one.
-     *
-     * The matcher can store information from the invocation which can later
-     * be checked in verify(), or it can check the values directly and throw
-     * and exception if an expectation is not met.
-     *
-     * If the matcher is a stub it will also have a return value.
-     *
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     *                                                             Object containing information on a mocked or stubbed method which
-     *                                                             was invoked.
-     * @return mixed
-     */
-    public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-    }
-
-    /**
-     * Checks if the invocation $invocation matches the current rules. If it does
-     * the matcher will get the invoked() method called which should check if an
-     * expectation is met.
-     *
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     *                                                             Object containing information on a mocked or stubbed method which
-     *                                                             was invoked.
-     * @return bool
-     */
-    public function verify()
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php
deleted file mode 100644
index 9f8a380..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php
+++ /dev/null
@@ -1,322 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Implementation of the Builder pattern for Mock objects.
- *
- * @since      File available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_MockBuilder
-{
-    /**
-     * @var PHPUnit_Framework_TestCase
-     */
-    private $testCase;
-
-    /**
-     * @var string
-     */
-    private $type;
-
-    /**
-     * @var array
-     */
-    private $methods = array();
-
-    /**
-     * @var string
-     */
-    private $mockClassName = '';
-
-    /**
-     * @var array
-     */
-    private $constructorArgs = array();
-
-    /**
-     * @var bool
-     */
-    private $originalConstructor = true;
-
-    /**
-     * @var bool
-     */
-    private $originalClone = true;
-
-    /**
-     * @var bool
-     */
-    private $autoload = true;
-
-    /**
-     * @var bool
-     */
-    private $cloneArguments = false;
-
-    /**
-     * @var bool
-     */
-    private $callOriginalMethods = false;
-
-    /**
-     * @var object
-     */
-    private $proxyTarget = null;
-
-    /**
-     * @param PHPUnit_Framework_TestCase $testCase
-     * @param array|string               $type
-     */
-    public function __construct(PHPUnit_Framework_TestCase $testCase, $type)
-    {
-        $this->testCase = $testCase;
-        $this->type     = $type;
-    }
-
-    /**
-     * Creates a mock object using a fluent interface.
-     *
-     * @return PHPUnit_Framework_MockObject_MockObject
-     */
-    public function getMock()
-    {
-        return $this->testCase->getMock(
-            $this->type,
-            $this->methods,
-            $this->constructorArgs,
-            $this->mockClassName,
-            $this->originalConstructor,
-            $this->originalClone,
-            $this->autoload,
-            $this->cloneArguments,
-            $this->callOriginalMethods,
-            $this->proxyTarget
-        );
-    }
-
-    /**
-     * Creates a mock object for an abstract class using a fluent interface.
-     *
-     * @return PHPUnit_Framework_MockObject_MockObject
-     */
-    public function getMockForAbstractClass()
-    {
-        return $this->testCase->getMockForAbstractClass(
-            $this->type,
-            $this->constructorArgs,
-            $this->mockClassName,
-            $this->originalConstructor,
-            $this->originalClone,
-            $this->autoload,
-            $this->methods,
-            $this->cloneArguments
-        );
-    }
-
-    /**
-     * Creates a mock object for a trait using a fluent interface.
-     *
-     * @return PHPUnit_Framework_MockObject_MockObject
-     */
-    public function getMockForTrait()
-    {
-        return $this->testCase->getMockForTrait(
-            $this->type,
-            $this->constructorArgs,
-            $this->mockClassName,
-            $this->originalConstructor,
-            $this->originalClone,
-            $this->autoload,
-            $this->methods,
-            $this->cloneArguments
-        );
-    }
-
-    /**
-     * Specifies the subset of methods to mock. Default is to mock all of them.
-     *
-     * @param  array|null                               $methods
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     */
-    public function setMethods($methods)
-    {
-        $this->methods = $methods;
-
-        return $this;
-    }
-
-    /**
-     * Specifies the arguments for the constructor.
-     *
-     * @param  array                                    $args
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     */
-    public function setConstructorArgs(array $args)
-    {
-        $this->constructorArgs = $args;
-
-        return $this;
-    }
-
-    /**
-     * Specifies the name for the mock class.
-     *
-     * @param  string                                   $name
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     */
-    public function setMockClassName($name)
-    {
-        $this->mockClassName = $name;
-
-        return $this;
-    }
-
-    /**
-     * Disables the invocation of the original constructor.
-     *
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     */
-    public function disableOriginalConstructor()
-    {
-        $this->originalConstructor = false;
-
-        return $this;
-    }
-
-    /**
-     * Enables the invocation of the original constructor.
-     *
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     * @since  Method available since Release 1.2.0
-     */
-    public function enableOriginalConstructor()
-    {
-        $this->originalConstructor = true;
-
-        return $this;
-    }
-
-    /**
-     * Disables the invocation of the original clone constructor.
-     *
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     */
-    public function disableOriginalClone()
-    {
-        $this->originalClone = false;
-
-        return $this;
-    }
-
-    /**
-     * Enables the invocation of the original clone constructor.
-     *
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     * @since  Method available since Release 1.2.0
-     */
-    public function enableOriginalClone()
-    {
-        $this->originalClone = true;
-
-        return $this;
-    }
-
-    /**
-     * Disables the use of class autoloading while creating the mock object.
-     *
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     */
-    public function disableAutoload()
-    {
-        $this->autoload = false;
-
-        return $this;
-    }
-
-    /**
-     * Enables the use of class autoloading while creating the mock object.
-     *
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     * @since  Method available since Release 1.2.0
-     */
-    public function enableAutoload()
-    {
-        $this->autoload = true;
-
-        return $this;
-    }
-
-    /**
-     * Disables the cloning of arguments passed to mocked methods.
-     *
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     * @since  Method available since Release 1.2.0
-     */
-    public function disableArgumentCloning()
-    {
-        $this->cloneArguments = false;
-
-        return $this;
-    }
-
-    /**
-     * Enables the cloning of arguments passed to mocked methods.
-     *
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     * @since  Method available since Release 1.2.0
-     */
-    public function enableArgumentCloning()
-    {
-        $this->cloneArguments = true;
-
-        return $this;
-    }
-
-    /**
-     * Enables the invocation of the original methods.
-     *
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     * @since  Method available since Release 2.0.0
-     */
-    public function enableProxyingToOriginalMethods()
-    {
-        $this->callOriginalMethods = true;
-
-        return $this;
-    }
-
-    /**
-     * Disables the invocation of the original methods.
-     *
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     * @since  Method available since Release 2.0.0
-     */
-    public function disableProxyingToOriginalMethods()
-    {
-        $this->callOriginalMethods = false;
-        $this->proxyTarget         = null;
-
-        return $this;
-    }
-
-    /**
-     * Sets the proxy target.
-     *
-     * @param  object                                   $object
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     * @since  Method available since Release 2.0.0
-     */
-    public function setProxyTarget($object)
-    {
-        $this->proxyTarget = $object;
-
-        return $this;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php
deleted file mode 100644
index 4f1dc0d..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Interface for all mock objects which are generated by
- * PHPUnit_Framework_MockObject_MockBuilder.
- *
- * @method PHPUnit_Framework_MockObject_Builder_InvocationMocker method($constraint)
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_MockObject /*extends PHPUnit_Framework_MockObject_Verifiable*/
-{
-    /**
-     * Registers a new expectation in the mock object and returns the match
-     * object which can be infused with further details.
-     *
-     * @param  PHPUnit_Framework_MockObject_Matcher_Invocation       $matcher
-     * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
-     */
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher);
-
-    /**
-     * @return PHPUnit_Framework_MockObject_InvocationMocker
-     * @since  Method available since Release 2.0.0
-     */
-    public function __phpunit_setOriginalObject($originalObject);
-
-    /**
-     * @return PHPUnit_Framework_MockObject_InvocationMocker
-     */
-    public function __phpunit_getInvocationMocker();
-
-    /**
-     * Verifies that the current expectation is valid. If everything is OK the
-     * code should just return, if not it must throw an exception.
-     *
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function __phpunit_verify();
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php
deleted file mode 100644
index 1414bcc..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * An object that stubs the process of a normal method for a mock object.
- *
- * The stub object will replace the code for the stubbed method and return a
- * specific value instead of the original value.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Stub extends PHPUnit_Framework_SelfDescribing
-{
-    /**
-     * Fakes the processing of the invocation $invocation by returning a
-     * specific value.
-     *
-     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
-     *                                                             The invocation which was mocked and matched by the current method
-     *                                                             and argument matchers.
-     * @return mixed
-     */
-    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation);
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php
deleted file mode 100644
index afc353d..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-use SebastianBergmann\Exporter\Exporter;
-
-/**
- * Stubs a method by returning a user-defined stack of values.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls implements PHPUnit_Framework_MockObject_Stub
-{
-    protected $stack;
-    protected $value;
-
-    public function __construct($stack)
-    {
-        $this->stack = $stack;
-    }
-
-    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        $this->value = array_shift($this->stack);
-
-        if ($this->value instanceof PHPUnit_Framework_MockObject_Stub) {
-            $this->value = $this->value->invoke($invocation);
-        }
-
-        return $this->value;
-    }
-
-    public function toString()
-    {
-        $exporter = new Exporter;
-
-        return sprintf(
-            'return user-specified value %s',
-            $exporter->export($this->value)
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php
deleted file mode 100644
index 7f9359c..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-use SebastianBergmann\Exporter\Exporter;
-
-/**
- * Stubs a method by raising a user-defined exception.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Stub_Exception implements PHPUnit_Framework_MockObject_Stub
-{
-    protected $exception;
-
-    public function __construct(Exception $exception)
-    {
-        $this->exception = $exception;
-    }
-
-    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        throw $this->exception;
-    }
-
-    public function toString()
-    {
-        $exporter = new Exporter;
-
-        return sprintf(
-            'raise user-specified exception %s',
-            $exporter->export($this->exception)
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php
deleted file mode 100644
index 07a2877..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Stubs a method by returning a user-defined value.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Stub_MatcherCollection
-{
-    /**
-     * Adds a new matcher to the collection which can be used as an expectation
-     * or a stub.
-     *
-     * @param PHPUnit_Framework_MockObject_Matcher_Invocation $matcher
-     *                                                                 Matcher for invocations to mock objects.
-     */
-    public function addMatcher(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher);
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php
deleted file mode 100644
index 630504f..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-use SebastianBergmann\Exporter\Exporter;
-
-/**
- * Stubs a method by returning a user-defined value.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Stub_Return implements PHPUnit_Framework_MockObject_Stub
-{
-    protected $value;
-
-    public function __construct($value)
-    {
-        $this->value = $value;
-    }
-
-    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        return $this->value;
-    }
-
-    public function toString()
-    {
-        $exporter = new Exporter;
-
-        return sprintf(
-            'return user-specified value %s',
-            $exporter->export($this->value)
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php
deleted file mode 100644
index fb79f4e..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Stubs a method by returning an argument that was passed to the mocked method.
- *
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Stub_ReturnArgument extends PHPUnit_Framework_MockObject_Stub_Return
-{
-    protected $argumentIndex;
-
-    public function __construct($argumentIndex)
-    {
-        $this->argumentIndex = $argumentIndex;
-    }
-
-    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        if (isset($invocation->parameters[$this->argumentIndex])) {
-            return $invocation->parameters[$this->argumentIndex];
-        } else {
-            return;
-        }
-    }
-
-    public function toString()
-    {
-        return sprintf('return argument #%d', $this->argumentIndex);
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php
deleted file mode 100644
index 601b354..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * @since Class available since Release 1.0.0
- */
-class PHPUnit_Framework_MockObject_Stub_ReturnCallback implements PHPUnit_Framework_MockObject_Stub
-{
-    protected $callback;
-
-    public function __construct($callback)
-    {
-        $this->callback = $callback;
-    }
-
-    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        return call_user_func_array($this->callback, $invocation->parameters);
-    }
-
-    public function toString()
-    {
-        if (is_array($this->callback)) {
-            if (is_object($this->callback[0])) {
-                $class = get_class($this->callback[0]);
-                $type  = '->';
-            } else {
-                $class = $this->callback[0];
-                $type  = '::';
-            }
-
-            return sprintf(
-                'return result of user defined callback %s%s%s() with the ' .
-                'passed arguments',
-                $class,
-                $type,
-                $this->callback[1]
-            );
-        } else {
-            return 'return result of user defined callback ' . $this->callback .
-                   ' with the passed arguments';
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php
deleted file mode 100644
index 582ab16..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Stubs a method by returning the current object.
- *
- * @since Class available since Release 1.1.0
- */
-class PHPUnit_Framework_MockObject_Stub_ReturnSelf implements PHPUnit_Framework_MockObject_Stub
-{
-    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        if (!$invocation instanceof PHPUnit_Framework_MockObject_Invocation_Object) {
-            throw new PHPUnit_Framework_Exception(
-                'The current object can only be returned when mocking an ' .
-                'object, not a static class.'
-            );
-        }
-
-        return $invocation->object;
-    }
-
-    public function toString()
-    {
-        return 'return the current object';
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php
deleted file mode 100644
index 25ba4d1..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Stubs a method by returning a value from a map.
- *
- * @since Class available since Release 1.1.0
- */
-class PHPUnit_Framework_MockObject_Stub_ReturnValueMap implements PHPUnit_Framework_MockObject_Stub
-{
-    protected $valueMap;
-
-    public function __construct(array $valueMap)
-    {
-        $this->valueMap = $valueMap;
-    }
-
-    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation)
-    {
-        $parameterCount = count($invocation->parameters);
-
-        foreach ($this->valueMap as $map) {
-            if (!is_array($map) || $parameterCount != count($map) - 1) {
-                continue;
-            }
-
-            $return = array_pop($map);
-            if ($invocation->parameters === $map) {
-                return $return;
-            }
-        }
-
-        return;
-    }
-
-    public function toString()
-    {
-        return 'return value from a map';
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php
deleted file mode 100644
index c19dfb3..0000000
--- a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * Interface for classes which must verify a given expectation.
- *
- * @since Interface available since Release 1.0.0
- */
-interface PHPUnit_Framework_MockObject_Verifiable
-{
-    /**
-     * Verifies that the current expectation is valid. If everything is OK the
-     * code should just return, if not it must throw an exception.
-     *
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function verify();
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php b/vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php
deleted file mode 100644
index 51bd20c..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-class Framework_MockObject_GeneratorTest extends PHPUnit_Framework_TestCase
-{
-    /**
-     * @var PHPUnit_Framework_MockObject_Generator
-     */
-    protected $generator;
-
-    protected function setUp()
-    {
-        $this->generator = new PHPUnit_Framework_MockObject_Generator;
-    }
-
-    /**
-     * @covers PHPUnit_Framework_MockObject_Generator::getMock
-     * @expectedException PHPUnit_Framework_Exception
-     */
-    public function testGetMockFailsWhenInvalidFunctionNameIsPassedInAsAFunctionToMock()
-    {
-        $this->generator->getMock('StdClass', array(0));
-    }
-
-    /**
-     * @covers PHPUnit_Framework_MockObject_Generator::getMock
-     */
-    public function testGetMockCanCreateNonExistingFunctions()
-    {
-        $mock = $this->generator->getMock('StdClass', array('testFunction'));
-        $this->assertTrue(method_exists($mock, 'testFunction'));
-    }
-
-    /**
-     * @covers PHPUnit_Framework_MockObject_Generator::getMock
-     * @expectedException PHPUnit_Framework_MockObject_RuntimeException
-     * @expectedExceptionMessage duplicates: "foo, foo"
-     */
-    public function testGetMockGeneratorFails()
-    {
-        $mock = $this->generator->getMock('StdClass', array('foo', 'foo'));
-    }
-
-    /**
-     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
-     */
-    public function testGetMockForAbstractClassDoesNotFailWhenFakingInterfaces()
-    {
-        $mock = $this->generator->getMockForAbstractClass('Countable');
-        $this->assertTrue(method_exists($mock, 'count'));
-    }
-
-    /**
-     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
-     */
-    public function testGetMockForAbstractClassStubbingAbstractClass()
-    {
-        $mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass');
-        $this->assertTrue(method_exists($mock, 'doSomething'));
-    }
-
-    /**
-     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
-     */
-    public function testGetMockForAbstractClassWithNonExistentMethods()
-    {
-        $mock = $this->generator->getMockForAbstractClass(
-            'AbstractMockTestClass',
-            array(),
-            '',
-            true,
-            true,
-            true,
-            array('nonexistentMethod')
-        );
-
-        $this->assertTrue(method_exists($mock, 'nonexistentMethod'));
-        $this->assertTrue(method_exists($mock, 'doSomething'));
-    }
-
-    /**
-     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
-     */
-    public function testGetMockForAbstractClassShouldCreateStubsOnlyForAbstractMethodWhenNoMethodsWereInformed()
-    {
-        $mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass');
-
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->willReturn('testing');
-
-        $this->assertEquals('testing', $mock->doSomething());
-        $this->assertEquals(1, $mock->returnAnything());
-    }
-
-    /**
-     * @dataProvider getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider
-     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
-     * @expectedException PHPUnit_Framework_Exception
-     */
-    public function testGetMockForAbstractClassExpectingInvalidArgumentException($className, $mockClassName)
-    {
-        $mock = $this->generator->getMockForAbstractClass($className, array(), $mockClassName);
-    }
-
-    /**
-     * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
-     * @expectedException PHPUnit_Framework_MockObject_RuntimeException
-     */
-    public function testGetMockForAbstractClassAbstractClassDoesNotExist()
-    {
-        $mock = $this->generator->getMockForAbstractClass('Tux');
-    }
-
-    /**
-     * Dataprovider for test "testGetMockForAbstractClassExpectingInvalidArgumentException"
-     */
-    public static function getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider()
-    {
-        return array(
-            'className not a string' => array(array(), ''),
-            'mockClassName not a string' => array('Countable', new StdClass),
-        );
-    }
-
-    /**
-     * @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait
-     * @requires PHP 5.4.0
-     */
-    public function testGetMockForTraitWithNonExistentMethodsAndNonAbstractMethods()
-    {
-        $mock = $this->generator->getMockForTrait(
-            'AbstractTrait',
-            array(),
-            '',
-            true,
-            true,
-            true,
-            array('nonexistentMethod')
-        );
-
-        $this->assertTrue(method_exists($mock, 'nonexistentMethod'));
-        $this->assertTrue(method_exists($mock, 'doSomething'));
-        $this->assertTrue($mock->mockableMethod());
-        $this->assertTrue($mock->anotherMockableMethod());
-    }
-
-    /**
-     * @covers   PHPUnit_Framework_MockObject_Generator::getMockForTrait
-     * @requires PHP 5.4.0
-     */
-    public function testGetMockForTraitStubbingAbstractMethod()
-    {
-        $mock = $this->generator->getMockForTrait('AbstractTrait');
-        $this->assertTrue(method_exists($mock, 'doSomething'));
-    }
-
-    /**
-     * @requires PHP 5.4.0
-     */
-    public function testGetMockForSingletonWithReflectionSuccess()
-    {
-        // Probably, this should be moved to tests/autoload.php
-        require_once __DIR__ . '/_fixture/SingletonClass.php';
-
-        $mock = $this->generator->getMock('SingletonClass', array('doSomething'), array(), '', false);
-        $this->assertInstanceOf('SingletonClass', $mock);
-    }
-
-    /**
-     * Same as "testGetMockForSingletonWithReflectionSuccess", but we expect
-     * warning for PHP < 5.4.0 since PHPUnit will try to execute private __wakeup
-     * on unserialize
-     */
-    public function testGetMockForSingletonWithUnserializeFail()
-    {
-        if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
-            $this->markTestSkipped('Only for PHP < 5.4.0');
-        }
-
-        $this->setExpectedException('PHPUnit_Framework_MockObject_RuntimeException');
-
-        // Probably, this should be moved to tests/autoload.php
-        require_once __DIR__ . '/_fixture/SingletonClass.php';
-
-        $mock = $this->generator->getMock('SingletonClass', array('doSomething'), array(), '', false);
-    }
-
-    /**
-     * ReflectionClass::getMethods for SoapClient on PHP 5.3 produces PHP Fatal Error
-     * @runInSeparateProcess
-     */
-    public function testGetMockForSoapClientReflectionMethodsDuplication()
-    {
-        if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
-            $this->markTestSkipped('Only for PHP < 5.4.0');
-        }
-
-        $mock = $this->generator->getMock('SoapClient', array(), array(), '', false);
-        $this->assertInstanceOf('SoapClient', $mock);
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockBuilderTest.php b/vendor/phpunit/phpunit-mock-objects/tests/MockBuilderTest.php
deleted file mode 100644
index ef4a0cc..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockBuilderTest.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * @since      File available since Release 1.0.0
- */
-class Framework_MockBuilderTest extends PHPUnit_Framework_TestCase
-{
-    public function testMockBuilderRequiresClassName()
-    {
-        $spec = $this->getMockBuilder('Mockable');
-        $mock = $spec->getMock();
-        $this->assertTrue($mock instanceof Mockable);
-    }
-
-    public function testByDefaultMocksAllMethods()
-    {
-        $spec = $this->getMockBuilder('Mockable');
-        $mock = $spec->getMock();
-        $this->assertNull($mock->mockableMethod());
-        $this->assertNull($mock->anotherMockableMethod());
-    }
-
-    public function testMethodsToMockCanBeSpecified()
-    {
-        $spec = $this->getMockBuilder('Mockable');
-        $spec->setMethods(array('mockableMethod'));
-        $mock = $spec->getMock();
-        $this->assertNull($mock->mockableMethod());
-        $this->assertTrue($mock->anotherMockableMethod());
-    }
-
-    public function testByDefaultDoesNotPassArgumentsToTheConstructor()
-    {
-        $spec = $this->getMockBuilder('Mockable');
-        $mock = $spec->getMock();
-        $this->assertEquals(array(null, null), $mock->constructorArgs);
-    }
-
-    public function testMockClassNameCanBeSpecified()
-    {
-        $spec = $this->getMockBuilder('Mockable');
-        $spec->setMockClassName('ACustomClassName');
-        $mock = $spec->getMock();
-        $this->assertTrue($mock instanceof ACustomClassName);
-    }
-
-    public function testConstructorArgumentsCanBeSpecified()
-    {
-        $spec = $this->getMockBuilder('Mockable');
-        $spec->setConstructorArgs($expected = array(23, 42));
-        $mock = $spec->getMock();
-        $this->assertEquals($expected, $mock->constructorArgs);
-    }
-
-    public function testOriginalConstructorCanBeDisabled()
-    {
-        $spec = $this->getMockBuilder('Mockable');
-        $spec->disableOriginalConstructor();
-        $mock = $spec->getMock();
-        $this->assertNull($mock->constructorArgs);
-    }
-
-    public function testByDefaultOriginalCloneIsPreserved()
-    {
-        $spec = $this->getMockBuilder('Mockable');
-        $mock = $spec->getMock();
-        $cloned = clone $mock;
-        $this->assertTrue($cloned->cloned);
-    }
-
-    public function testOriginalCloneCanBeDisabled()
-    {
-        $spec = $this->getMockBuilder('Mockable');
-        $spec->disableOriginalClone();
-        $mock = $spec->getMock();
-        $mock->cloned = false;
-        $cloned = clone $mock;
-        $this->assertFalse($cloned->cloned);
-    }
-
-    public function testCallingAutoloadCanBeDisabled()
-    {
-        // it is not clear to me how to test this nor the difference
-        // between calling it or not
-        $this->markTestIncomplete();
-    }
-
-    public function testProvidesAFluentInterface()
-    {
-        $spec = $this->getMockBuilder('Mockable')
-                     ->setMethods(array('mockableMethod'))
-                     ->setConstructorArgs(array())
-                     ->setMockClassName('DummyClassName')
-                     ->disableOriginalConstructor()
-                     ->disableOriginalClone()
-                     ->disableAutoload();
-        $this->assertTrue($spec instanceof PHPUnit_Framework_MockObject_MockBuilder);
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/232.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/232.phpt
deleted file mode 100644
index 3426e89..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/232.phpt
+++ /dev/null
@@ -1,129 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE)
---SKIPIF--
-<?php
-if (version_compare(PHP_VERSION, '5.4.0', '<')) print 'skip: PHP >= 5.4.0 required';
-?>
---FILE--
-<?php
-trait BaseTrait
-{
-    protected function hello()
-    {
-        return 'hello';
-    }
-}
-
-trait ChildTrait
-{
-    use BaseTrait
-    {
-        hello as private hi;
-    }
-
-    protected function hello()
-    {
-        return 'hi';
-    }
-
-    protected function world()
-    {
-        return $this->hi();
-    }
-}
-
-class Foo
-{
-    use ChildTrait;
-
-    public function speak()
-    {
-        return $this->world();
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function speak()
-    {
-        $arguments = array();
-        $count     = func_num_args();
-
-        if ($count > 0) {
-            $_arguments = func_get_args();
-
-            for ($i = 0; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'speak', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
-
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/ObjectTest.php b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/ObjectTest.php
deleted file mode 100644
index a957491..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/ObjectTest.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-class Framework_MockObject_Invocation_ObjectTest extends PHPUnit_Framework_TestCase
-{
-    public function testConstructorRequiresClassAndMethodAndParametersAndObject()
-    {
-        new PHPUnit_Framework_MockObject_Invocation_Object(
-            'FooClass',
-            'FooMethod',
-            array('an_argument'),
-        new StdClass
-        );
-    }
-
-    public function testAllowToGetClassNameSetInConstructor()
-    {
-        $invocation = new PHPUnit_Framework_MockObject_Invocation_Object(
-            'FooClass',
-            'FooMethod',
-            array('an_argument'),
-            new StdClass
-        );
-
-        $this->assertSame('FooClass', $invocation->className);
-    }
-
-    public function testAllowToGetMethodNameSetInConstructor()
-    {
-        $invocation = new PHPUnit_Framework_MockObject_Invocation_Object(
-            'FooClass',
-            'FooMethod',
-            array('an_argument'),
-            new StdClass
-        );
-
-        $this->assertSame('FooMethod', $invocation->methodName);
-    }
-
-    public function testAllowToGetObjectSetInConstructor()
-    {
-        $expectedObject = new StdClass;
-
-        $invocation = new PHPUnit_Framework_MockObject_Invocation_Object(
-            'FooClass',
-            'FooMethod',
-            array('an_argument'),
-            $expectedObject
-        );
-
-        $this->assertSame($expectedObject, $invocation->object);
-    }
-
-    public function testAllowToGetMethodParametersSetInConstructor()
-    {
-        $expectedParameters = array(
-          'foo', 5, array('a', 'b'), new StdClass, null, false
-        );
-
-        $invocation = new PHPUnit_Framework_MockObject_Invocation_Object(
-            'FooClass',
-            'FooMethod',
-            $expectedParameters,
-            new StdClass
-        );
-
-        $this->assertSame($expectedParameters, $invocation->parameters);
-    }
-
-    public function testConstructorAllowToSetFlagCloneObjectsInParameters()
-    {
-        $parameters   = array(new StdClass);
-        $cloneObjects = true;
-
-        $invocation = new PHPUnit_Framework_MockObject_Invocation_Object(
-            'FooClass',
-            'FooMethod',
-            $parameters,
-            new StdClass,
-            $cloneObjects
-        );
-
-        $this->assertEquals($parameters, $invocation->parameters);
-        $this->assertNotSame($parameters, $invocation->parameters);
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/StaticTest.php b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/StaticTest.php
deleted file mode 100644
index b965da1..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/StaticTest.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-class Framework_MockObject_Invocation_StaticTest extends PHPUnit_Framework_TestCase
-{
-    public function testConstructorRequiresClassAndMethodAndParameters()
-    {
-        new PHPUnit_Framework_MockObject_Invocation_Static('FooClass', 'FooMethod', array('an_argument'));
-    }
-
-    public function testAllowToGetClassNameSetInConstructor()
-    {
-        $invocation = new PHPUnit_Framework_MockObject_Invocation_Static('FooClass', 'FooMethod', array('an_argument'));
-
-        $this->assertSame('FooClass', $invocation->className);
-    }
-
-    public function testAllowToGetMethodNameSetInConstructor()
-    {
-        $invocation = new PHPUnit_Framework_MockObject_Invocation_Static('FooClass', 'FooMethod', array('an_argument'));
-
-        $this->assertSame('FooMethod', $invocation->methodName);
-    }
-
-    public function testAllowToGetMethodParametersSetInConstructor()
-    {
-        $expectedParameters = array(
-          'foo', 5, array('a', 'b'), new StdClass, null, false
-        );
-
-        $invocation = new PHPUnit_Framework_MockObject_Invocation_Static(
-            'FooClass',
-            'FooMethod',
-            $expectedParameters
-        );
-
-        $this->assertSame($expectedParameters, $invocation->parameters);
-    }
-
-    public function testConstructorAllowToSetFlagCloneObjectsInParameters()
-    {
-        $parameters = array(new StdClass);
-        $cloneObjects = true;
-
-        $invocation = new PHPUnit_Framework_MockObject_Invocation_Static(
-            'FooClass',
-            'FooMethod',
-            $parameters,
-            $cloneObjects
-        );
-
-        $this->assertEquals($parameters, $invocation->parameters);
-        $this->assertNotSame($parameters, $invocation->parameters);
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Matcher/ConsecutiveParametersTest.php b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Matcher/ConsecutiveParametersTest.php
deleted file mode 100644
index ae26b76..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/Matcher/ConsecutiveParametersTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-class Framework_MockObject_Matcher_ConsecutiveParametersTest extends PHPUnit_Framework_TestCase
-{
-    public function testIntegration()
-    {
-        $mock = $this->getMock('stdClass', array('foo'));
-        $mock
-            ->expects($this->any())
-            ->method('foo')
-            ->withConsecutive(
-                array('bar'),
-                array(21, 42)
-            );
-        $mock->foo('bar');
-        $mock->foo(21, 42);
-    }
-
-    public function testIntegrationWithLessAssertionsThenMethodCalls()
-    {
-        $mock = $this->getMock('stdClass', array('foo'));
-        $mock
-            ->expects($this->any())
-            ->method('foo')
-            ->withConsecutive(
-                array('bar')
-            );
-        $mock->foo('bar');
-        $mock->foo(21, 42);
-    }
-
-    public function testIntegrationExpectingException()
-    {
-        $mock = $this->getMock('stdClass', array('foo'));
-        $mock
-            ->expects($this->any())
-            ->method('foo')
-            ->withConsecutive(
-                array('bar'),
-                array(21, 42)
-            );
-        $mock->foo('bar');
-        $this->setExpectedException('PHPUnit_Framework_ExpectationFailedException');
-        $mock->foo('invalid');
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/abstract_class.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/abstract_class.phpt
deleted file mode 100644
index 72450c5..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/abstract_class.phpt
+++ /dev/null
@@ -1,143 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-abstract class Foo
-{
-    public function one()
-    {
-    }
-
-    abstract public function two();
-
-    abstract protected function three();
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function one()
-    {
-        $arguments = array();
-        $count     = func_num_args();
-
-        if ($count > 0) {
-            $_arguments = func_get_args();
-
-            for ($i = 0; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'one', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function two()
-    {
-        $arguments = array();
-        $count     = func_num_args();
-
-        if ($count > 0) {
-            $_arguments = func_get_args();
-
-            for ($i = 0; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'two', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    protected function three()
-    {
-        $arguments = array();
-        $count     = func_num_args();
-
-        if ($count > 0) {
-            $_arguments = func_get_args();
-
-            for ($i = 0; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'three', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class.phpt
deleted file mode 100644
index 2e40328..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class.phpt
+++ /dev/null
@@ -1,121 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-class Foo
-{
-    public function bar(Foo $foo)
-    {
-    }
-
-    public function baz(Foo $foo)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function bar(Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'bar', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function baz(Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'baz', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_clone.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_clone.phpt
deleted file mode 100644
index 0f91a98..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_clone.phpt
+++ /dev/null
@@ -1,73 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE)
---FILE--
-<?php
-class Foo
-{
-    public function __clone()
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-        parent::__clone();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_constructor.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_constructor.phpt
deleted file mode 100644
index 6f037ee..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_call_parent_constructor.phpt
+++ /dev/null
@@ -1,72 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE)
---FILE--
-<?php
-class Foo
-{
-    public function __construct()
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_clone.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_clone.phpt
deleted file mode 100644
index dc82938..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_clone.phpt
+++ /dev/null
@@ -1,72 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', FALSE)
---FILE--
-<?php
-class Foo
-{
-    public function __clone()
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  FALSE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_constructor.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_constructor.phpt
deleted file mode 100644
index 6f037ee..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_dont_call_parent_constructor.phpt
+++ /dev/null
@@ -1,72 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE)
---FILE--
-<?php
-class Foo
-{
-    public function __construct()
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_call_parent_constructor.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_call_parent_constructor.phpt
deleted file mode 100644
index cfc43d8..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_call_parent_constructor.phpt
+++ /dev/null
@@ -1,77 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE)
---FILE--
-<?php
-interface IFoo
-{
-    public function __construct($bar);
-}
-
-class Foo implements IFoo
-{
-    public function __construct($bar)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_dont_call_parent_constructor.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_dont_call_parent_constructor.phpt
deleted file mode 100644
index cfc43d8..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_implementing_interface_dont_call_parent_constructor.phpt
+++ /dev/null
@@ -1,77 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE)
---FILE--
-<?php
-interface IFoo
-{
-    public function __construct($bar);
-}
-
-class Foo implements IFoo
-{
-    public function __construct($bar)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_partial.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_partial.phpt
deleted file mode 100644
index b8332ae..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_partial.phpt
+++ /dev/null
@@ -1,99 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array('bar'), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-class Foo
-{
-    public function bar(Foo $foo)
-    {
-    }
-
-    public function baz(Foo $foo)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array('bar'),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function bar(Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'bar', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_named_method.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_named_method.phpt
deleted file mode 100644
index 6e1ddf6..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_named_method.phpt
+++ /dev/null
@@ -1,88 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-class Foo
-{
-    public function method()
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function method()
-    {
-        $arguments = array();
-        $count     = func_num_args();
-
-        if ($count > 0) {
-            $_arguments = func_get_args();
-
-            for ($i = 0; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'method', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_with_variadic_arguments.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_with_variadic_arguments.phpt
deleted file mode 100644
index 8fb9a3c..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_method_with_variadic_arguments.phpt
+++ /dev/null
@@ -1,99 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('ClassWithMethodWithVariadicArguments', array(), 'MockFoo', TRUE, TRUE)
---SKIPIF--
-<?php
-if (version_compare(PHP_VERSION, '5.6.0', '<')) print 'skip: PHP >= 5.6.0 required';
-?>
---FILE--
-<?php
-class ClassWithMethodWithVariadicArguments
-{
-    public function methodWithVariadicArguments($a, ...$parameters)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'ClassWithMethodWithVariadicArguments',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends ClassWithMethodWithVariadicArguments implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function methodWithVariadicArguments($a, ...$parameters)
-    {
-        $arguments = array($a);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'ClassWithMethodWithVariadicArguments', 'methodWithVariadicArguments', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/interface.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/interface.phpt
deleted file mode 100644
index 2d38209..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/interface.phpt
+++ /dev/null
@@ -1,93 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-interface Foo
-{
-    public function bar(Foo $foo);
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo implements PHPUnit_Framework_MockObject_MockObject, Foo
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function bar(Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'bar', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/invocation_object_clone_object.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/invocation_object_clone_object.phpt
deleted file mode 100644
index 87a979e..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/invocation_object_clone_object.phpt
+++ /dev/null
@@ -1,122 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE, TRUE)
---FILE--
-<?php
-class Foo
-{
-    public function bar(Foo $foo)
-    {
-    }
-
-    public function baz(Foo $foo)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function bar(Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'bar', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function baz(Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'baz', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class.phpt
deleted file mode 100644
index e30bddc..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class.phpt
+++ /dev/null
@@ -1,123 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-namespace NS;
-
-class Foo
-{
-    public function bar(Foo $foo)
-    {
-    }
-
-    public function baz(Foo $foo)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new \PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NS\Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function bar(NS\Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'NS\Foo', 'bar', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function baz(NS\Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'NS\Foo', 'baz', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_clone.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_clone.phpt
deleted file mode 100644
index 3dee9c9..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_clone.phpt
+++ /dev/null
@@ -1,75 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE)
---FILE--
-<?php
-namespace NS;
-
-class Foo
-{
-    public function __clone()
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new \PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NS\Foo',
-  array(),
-  'MockFoo',
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-        parent::__clone();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_constructor.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_constructor.phpt
deleted file mode 100644
index 105a372..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_call_parent_constructor.phpt
+++ /dev/null
@@ -1,74 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE)
---FILE--
-<?php
-namespace NS;
-
-class Foo
-{
-    public function __construct()
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new \PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NS\Foo',
-  array(),
-  'MockFoo',
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_clone.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_clone.phpt
deleted file mode 100644
index 1de9253..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_clone.phpt
+++ /dev/null
@@ -1,74 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', FALSE)
---FILE--
-<?php
-namespace NS;
-
-class Foo
-{
-    public function __clone()
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new \PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NS\Foo',
-  array(),
-  'MockFoo',
-  FALSE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_constructor.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_constructor.phpt
deleted file mode 100644
index 105a372..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_dont_call_parent_constructor.phpt
+++ /dev/null
@@ -1,74 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE)
---FILE--
-<?php
-namespace NS;
-
-class Foo
-{
-    public function __construct()
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new \PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NS\Foo',
-  array(),
-  'MockFoo',
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_call_parent_constructor.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_call_parent_constructor.phpt
deleted file mode 100644
index 6b9f6bc..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_call_parent_constructor.phpt
+++ /dev/null
@@ -1,79 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE)
---FILE--
-<?php
-namespace NS;
-
-interface IFoo
-{
-    public function __construct($bar);
-}
-
-class Foo implements IFoo
-{
-    public function __construct($bar)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new \PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NS\Foo',
-  array(),
-  'MockFoo',
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt
deleted file mode 100644
index 6b9f6bc..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt
+++ /dev/null
@@ -1,79 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE)
---FILE--
-<?php
-namespace NS;
-
-interface IFoo
-{
-    public function __construct($bar);
-}
-
-class Foo implements IFoo
-{
-    public function __construct($bar)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new \PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NS\Foo',
-  array(),
-  'MockFoo',
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_partial.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_partial.phpt
deleted file mode 100644
index 86fee1c..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_class_partial.phpt
+++ /dev/null
@@ -1,101 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array('bar'), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-namespace NS;
-
-class Foo
-{
-    public function bar(Foo $foo)
-    {
-    }
-
-    public function baz(Foo $foo)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new \PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NS\Foo',
-  array('bar'),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function bar(NS\Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'NS\Foo', 'bar', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_interface.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_interface.phpt
deleted file mode 100644
index 8048646..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/namespaced_interface.phpt
+++ /dev/null
@@ -1,95 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-namespace NS;
-
-interface Foo
-{
-    public function bar(Foo $foo);
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new \PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NS\Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo implements PHPUnit_Framework_MockObject_MockObject, NS\Foo
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function bar(NS\Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'NS\Foo', 'bar', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class.phpt
deleted file mode 100644
index 8c01de0..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class.phpt
+++ /dev/null
@@ -1,70 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('NonExistentClass', array(), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NonExistentClass',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class NonExistentClass
-{
-}
-
-class MockFoo extends NonExistentClass implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace.phpt
deleted file mode 100644
index 7868977..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace.phpt
+++ /dev/null
@@ -1,78 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'NS\Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-namespace NS {
-
-class Foo
-{
-}
-
-}
-
-namespace {
-
-class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
-
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace_starting_with_separator.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace_starting_with_separator.phpt
deleted file mode 100644
index b59d1dd..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/nonexistent_class_with_namespace_starting_with_separator.phpt
+++ /dev/null
@@ -1,78 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE)
---FILE--
-<?php
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  '\NS\Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-namespace NS {
-
-class Foo
-{
-}
-
-}
-
-namespace {
-
-class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
-
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/proxy.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/proxy.phpt
deleted file mode 100644
index f31bf3f..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/proxy.phpt
+++ /dev/null
@@ -1,117 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', NULL, 'ProxyFoo', TRUE, TRUE, TRUE, TRUE)
---FILE--
-<?php
-class Foo
-{
-    public function bar(Foo $foo)
-    {
-    }
-
-    public function baz(Foo $foo)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo', array(), 'ProxyFoo', TRUE, TRUE, TRUE, TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class ProxyFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function bar(Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'bar', $arguments, $this, TRUE
-          )
-        );
-
-        return call_user_func_array(array($this->__phpunit_originalObject, "bar"), $arguments);
-    }
-
-    public function baz(Foo $foo)
-    {
-        $arguments = array($foo);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'baz', $arguments, $this, TRUE
-          )
-        );
-
-        return call_user_func_array(array($this->__phpunit_originalObject, "baz"), $arguments);
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/scalar_type_declarations.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/scalar_type_declarations.phpt
deleted file mode 100644
index 3ad84db..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/scalar_type_declarations.phpt
+++ /dev/null
@@ -1,99 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generate('Foo', array(), 'MockFoo', TRUE, TRUE)
---SKIPIF--
-<?php
-if (!method_exists('ReflectionParameter', 'hasType')) print 'skip: PHP >= 7.0.0 required';
-?>
---FILE--
-<?php
-class Foo
-{
-    public function bar(string $baz)
-    {
-    }
-}
-
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-$mock = $generator->generate(
-  'Foo',
-  array(),
-  'MockFoo',
-  TRUE,
-  TRUE
-);
-
-print $mock['code'];
-?>
---EXPECTF--
-class MockFoo extends Foo implements PHPUnit_Framework_MockObject_MockObject
-{
-    private $__phpunit_invocationMocker;
-    private $__phpunit_originalObject;
-
-    public function __clone()
-    {
-        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
-    }
-
-    public function bar(string $baz)
-    {
-        $arguments = array($baz);
-        $count     = func_num_args();
-
-        if ($count > 1) {
-            $_arguments = func_get_args();
-
-            for ($i = 1; $i < $count; $i++) {
-                $arguments[] = $_arguments[$i];
-            }
-        }
-
-        $result = $this->__phpunit_getInvocationMocker()->invoke(
-          new PHPUnit_Framework_MockObject_Invocation_Object(
-            'Foo', 'bar', $arguments, $this, TRUE
-          )
-        );
-
-        return $result;
-    }
-
-    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
-    {
-        return $this->__phpunit_getInvocationMocker()->expects($matcher);
-    }
-
-    public function method()
-    {
-        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-        $expects = $this->expects($any);
-        return call_user_func_array(array($expects, 'method'), func_get_args());
-    }
-
-    public function __phpunit_setOriginalObject($originalObject)
-    {
-        $this->__phpunit_originalObject = $originalObject;
-    }
-
-    public function __phpunit_getInvocationMocker()
-    {
-        if ($this->__phpunit_invocationMocker === NULL) {
-            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker;
-        }
-
-        return $this->__phpunit_invocationMocker;
-    }
-
-    public function __phpunit_hasMatchers()
-    {
-        return $this->__phpunit_getInvocationMocker()->hasMatchers();
-    }
-
-    public function __phpunit_verify()
-    {
-        $this->__phpunit_getInvocationMocker()->verify();
-        $this->__phpunit_invocationMocker = NULL;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class.phpt
deleted file mode 100644
index 06b255f..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class.phpt
+++ /dev/null
@@ -1,37 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generateClassFromWsdl('GoogleSearch.wsdl', 'GoogleSearch')
---SKIPIF--
-<?php
-if (!extension_loaded('soap')) echo 'skip: SOAP extension is required';
-?>
---FILE--
-<?php
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-print $generator->generateClassFromWsdl(
-  dirname(dirname(__FILE__)) . '/_fixture/GoogleSearch.wsdl',
-  'GoogleSearch'
-);
-?>
---EXPECTF--
-class GoogleSearch extends \SoapClient
-{
-    public function __construct($wsdl, array $options)
-    {
-        parent::__construct('%s/GoogleSearch.wsdl', $options);
-    }
-
-    public function doGoogleSearch($key, $q, $start, $maxResults, $filter, $restrict, $safeSearch, $lr, $ie, $oe)
-    {
-    }
-
-    public function doGetCachedPage($key, $url)
-    {
-    }
-
-    public function doSpellingSuggestion($key, $phrase)
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_namespace.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_namespace.phpt
deleted file mode 100644
index 9460e6b..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_namespace.phpt
+++ /dev/null
@@ -1,39 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generateClassFromWsdl('GoogleSearch.wsdl', 'GoogleSearch')
---SKIPIF--
-<?php
-if (!extension_loaded('soap')) echo 'skip: SOAP extension is required';
-?>
---FILE--
-<?php
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-print $generator->generateClassFromWsdl(
-  dirname(dirname(__FILE__)) . '/_fixture/GoogleSearch.wsdl',
-  'My\\Space\\GoogleSearch'
-);
-?>
---EXPECTF--
-namespace My\Space;
-
-class GoogleSearch extends \SoapClient
-{
-    public function __construct($wsdl, array $options)
-    {
-        parent::__construct('%s/GoogleSearch.wsdl', $options);
-    }
-
-    public function doGoogleSearch($key, $q, $start, $maxResults, $filter, $restrict, $safeSearch, $lr, $ie, $oe)
-    {
-    }
-
-    public function doGetCachedPage($key, $url)
-    {
-    }
-
-    public function doSpellingSuggestion($key, $phrase)
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_partial.phpt b/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_partial.phpt
deleted file mode 100644
index fc814bd..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObject/wsdl_class_partial.phpt
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-PHPUnit_Framework_MockObject_Generator::generateClassFromWsdl('GoogleSearch.wsdl', 'GoogleSearch', array('doGoogleSearch'))
---SKIPIF--
-<?php
-if (!extension_loaded('soap')) echo 'skip: SOAP extension is required';
-?>
---FILE--
-<?php
-require __DIR__ . '/../../vendor/autoload.php';
-
-$generator = new PHPUnit_Framework_MockObject_Generator;
-
-print $generator->generateClassFromWsdl(
-  dirname(dirname(__FILE__)) . '/_fixture/GoogleSearch.wsdl',
-  'GoogleSearch',
-  array('doGoogleSearch')
-);
-?>
---EXPECTF--
-class GoogleSearch extends \SoapClient
-{
-    public function __construct($wsdl, array $options)
-    {
-        parent::__construct('%s/GoogleSearch.wsdl', $options);
-    }
-
-    public function doGoogleSearch($key, $q, $start, $maxResults, $filter, $restrict, $safeSearch, $lr, $ie, $oe)
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/MockObjectTest.php b/vendor/phpunit/phpunit-mock-objects/tests/MockObjectTest.php
deleted file mode 100644
index 802c133..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/MockObjectTest.php
+++ /dev/null
@@ -1,842 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- *
- *
- * @since      Class available since Release 3.0.0
- */
-class Framework_MockObjectTest extends PHPUnit_Framework_TestCase
-{
-    public function testMockedMethodIsNeverCalled()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->never())
-             ->method('doSomething');
-    }
-
-    public function testMockedMethodIsNeverCalledWithParameter()
-    {
-        $mock = $this->getMock('SomeClass');
-        $mock->expects($this->never())
-            ->method('doSomething')
-            ->with('someArg');
-    }
-
-    public function testMockedMethodIsNotCalledWhenExpectsAnyWithParameter()
-    {
-        $mock = $this->getMock('SomeClass');
-        $mock->expects($this->any())
-             ->method('doSomethingElse')
-             ->with('someArg');
-    }
-
-    public function testMockedMethodIsNotCalledWhenMethodSpecifiedDirectlyWithParameter()
-    {
-        $mock = $this->getMock('SomeClass');
-        $mock->method('doSomethingElse')
-            ->with('someArg');
-    }
-
-    public function testMockedMethodIsCalledAtLeastOnce()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->atLeastOnce())
-             ->method('doSomething');
-
-        $mock->doSomething();
-    }
-
-    public function testMockedMethodIsCalledAtLeastOnce2()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->atLeastOnce())
-             ->method('doSomething');
-
-        $mock->doSomething();
-        $mock->doSomething();
-    }
-
-    public function testMockedMethodIsCalledAtLeastTwice()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->atLeast(2))
-             ->method('doSomething');
-
-        $mock->doSomething();
-        $mock->doSomething();
-    }
-
-    public function testMockedMethodIsCalledAtLeastTwice2()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->atLeast(2))
-             ->method('doSomething');
-
-        $mock->doSomething();
-        $mock->doSomething();
-        $mock->doSomething();
-    }
-
-    public function testMockedMethodIsCalledAtMostTwice()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->atMost(2))
-             ->method('doSomething');
-
-        $mock->doSomething();
-        $mock->doSomething();
-    }
-
-    public function testMockedMethodIsCalledAtMosttTwice2()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->atMost(2))
-             ->method('doSomething');
-
-        $mock->doSomething();
-    }
-
-    public function testMockedMethodIsCalledOnce()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->once())
-             ->method('doSomething');
-
-        $mock->doSomething();
-    }
-
-    public function testMockedMethodIsCalledOnceWithParameter()
-    {
-        $mock = $this->getMock('SomeClass');
-        $mock->expects($this->once())
-             ->method('doSomethingElse')
-             ->with($this->equalTo('something'));
-
-        $mock->doSomethingElse('something');
-    }
-
-    public function testMockedMethodIsCalledExactly()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->exactly(2))
-             ->method('doSomething');
-
-        $mock->doSomething();
-        $mock->doSomething();
-    }
-
-    public function testStubbedException()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->will($this->throwException(new Exception));
-
-        try {
-            $mock->doSomething();
-        } catch (Exception $e) {
-            return;
-        }
-
-        $this->fail();
-    }
-
-    public function testStubbedWillThrowException()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->willThrowException(new Exception);
-
-        try {
-            $mock->doSomething();
-        } catch (Exception $e) {
-            return;
-        }
-
-        $this->fail();
-    }
-
-    public function testStubbedReturnValue()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->will($this->returnValue('something'));
-
-        $this->assertEquals('something', $mock->doSomething());
-
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->willReturn('something');
-
-        $this->assertEquals('something', $mock->doSomething());
-    }
-
-    public function testStubbedReturnValueMap()
-    {
-        $map = array(
-            array('a', 'b', 'c', 'd'),
-            array('e', 'f', 'g', 'h')
-        );
-
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->will($this->returnValueMap($map));
-
-        $this->assertEquals('d', $mock->doSomething('a', 'b', 'c'));
-        $this->assertEquals('h', $mock->doSomething('e', 'f', 'g'));
-        $this->assertEquals(null, $mock->doSomething('foo', 'bar'));
-
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->willReturnMap($map);
-
-        $this->assertEquals('d', $mock->doSomething('a', 'b', 'c'));
-        $this->assertEquals('h', $mock->doSomething('e', 'f', 'g'));
-        $this->assertEquals(null, $mock->doSomething('foo', 'bar'));
-    }
-
-    public function testStubbedReturnArgument()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->will($this->returnArgument(1));
-
-        $this->assertEquals('b', $mock->doSomething('a', 'b'));
-
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->willReturnArgument(1);
-
-        $this->assertEquals('b', $mock->doSomething('a', 'b'));
-    }
-
-    public function testFunctionCallback()
-    {
-        $mock = $this->getMock('SomeClass', array('doSomething'), array(), '', false);
-        $mock->expects($this->once())
-             ->method('doSomething')
-             ->will($this->returnCallback('functionCallback'));
-
-        $this->assertEquals('pass', $mock->doSomething('foo', 'bar'));
-
-        $mock = $this->getMock('SomeClass', array('doSomething'), array(), '', false);
-        $mock->expects($this->once())
-             ->method('doSomething')
-             ->willReturnCallback('functionCallback');
-
-        $this->assertEquals('pass', $mock->doSomething('foo', 'bar'));
-    }
-
-    public function testStubbedReturnSelf()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->will($this->returnSelf());
-
-        $this->assertEquals($mock, $mock->doSomething());
-
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->willReturnSelf();
-
-        $this->assertEquals($mock, $mock->doSomething());
-    }
-
-    public function testStubbedReturnOnConsecutiveCalls()
-    {
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->will($this->onConsecutiveCalls('a', 'b', 'c'));
-
-        $this->assertEquals('a', $mock->doSomething());
-        $this->assertEquals('b', $mock->doSomething());
-        $this->assertEquals('c', $mock->doSomething());
-
-        $mock = $this->getMock('AnInterface');
-        $mock->expects($this->any())
-             ->method('doSomething')
-             ->willReturnOnConsecutiveCalls('a', 'b', 'c');
-
-        $this->assertEquals('a', $mock->doSomething());
-        $this->assertEquals('b', $mock->doSomething());
-        $this->assertEquals('c', $mock->doSomething());
-    }
-
-    public function testStaticMethodCallback()
-    {
-        $mock = $this->getMock('SomeClass', array('doSomething'), array(), '', false);
-        $mock->expects($this->once())
-             ->method('doSomething')
-             ->will($this->returnCallback(array('MethodCallback', 'staticCallback')));
-
-        $this->assertEquals('pass', $mock->doSomething('foo', 'bar'));
-    }
-
-    public function testPublicMethodCallback()
-    {
-        $mock = $this->getMock('SomeClass', array('doSomething'), array(), '', false);
-        $mock->expects($this->once())
-             ->method('doSomething')
-             ->will($this->returnCallback(array(new MethodCallback, 'nonStaticCallback')));
-
-        $this->assertEquals('pass', $mock->doSomething('foo', 'bar'));
-    }
-
-    public function testMockClassOnlyGeneratedOnce()
-    {
-        $mock1 = $this->getMock('AnInterface');
-        $mock2 = $this->getMock('AnInterface');
-
-        $this->assertEquals(get_class($mock1), get_class($mock2));
-    }
-
-    public function testMockClassDifferentForPartialMocks()
-    {
-        $mock1 = $this->getMock('PartialMockTestClass');
-        $mock2 = $this->getMock('PartialMockTestClass', array('doSomething'));
-        $mock3 = $this->getMock('PartialMockTestClass', array('doSomething'));
-        $mock4 = $this->getMock('PartialMockTestClass', array('doAnotherThing'));
-        $mock5 = $this->getMock('PartialMockTestClass', array('doAnotherThing'));
-
-        $this->assertNotEquals(get_class($mock1), get_class($mock2));
-        $this->assertNotEquals(get_class($mock1), get_class($mock3));
-        $this->assertNotEquals(get_class($mock1), get_class($mock4));
-        $this->assertNotEquals(get_class($mock1), get_class($mock5));
-        $this->assertEquals(get_class($mock2), get_class($mock3));
-        $this->assertNotEquals(get_class($mock2), get_class($mock4));
-        $this->assertNotEquals(get_class($mock2), get_class($mock5));
-        $this->assertEquals(get_class($mock4), get_class($mock5));
-    }
-
-    public function testMockClassStoreOverrulable()
-    {
-        $mock1 = $this->getMock('PartialMockTestClass');
-        $mock2 = $this->getMock('PartialMockTestClass', array(), array(), 'MyMockClassNameForPartialMockTestClass1');
-        $mock3 = $this->getMock('PartialMockTestClass');
-        $mock4 = $this->getMock('PartialMockTestClass', array('doSomething'), array(), 'AnotherMockClassNameForPartialMockTestClass');
-        $mock5 = $this->getMock('PartialMockTestClass', array(), array(), 'MyMockClassNameForPartialMockTestClass2');
-
-        $this->assertNotEquals(get_class($mock1), get_class($mock2));
-        $this->assertEquals(get_class($mock1), get_class($mock3));
-        $this->assertNotEquals(get_class($mock1), get_class($mock4));
-        $this->assertNotEquals(get_class($mock2), get_class($mock3));
-        $this->assertNotEquals(get_class($mock2), get_class($mock4));
-        $this->assertNotEquals(get_class($mock2), get_class($mock5));
-        $this->assertNotEquals(get_class($mock3), get_class($mock4));
-        $this->assertNotEquals(get_class($mock3), get_class($mock5));
-        $this->assertNotEquals(get_class($mock4), get_class($mock5));
-    }
-
-    /**
-     * @covers PHPUnit_Framework_MockObject_Generator::getMock
-     */
-    public function testGetMockWithFixedClassNameCanProduceTheSameMockTwice()
-    {
-        $mock = $this->getMockBuilder('StdClass')->setMockClassName('FixedName')->getMock();
-        $mock = $this->getMockBuilder('StdClass')->setMockClassName('FixedName')->getMock();
-        $this->assertInstanceOf('StdClass', $mock);
-    }
-
-    public function testOriginalConstructorSettingConsidered()
-    {
-        $mock1 = $this->getMock('PartialMockTestClass');
-        $mock2 = $this->getMock('PartialMockTestClass', array(), array(), '', false);
-
-        $this->assertTrue($mock1->constructorCalled);
-        $this->assertFalse($mock2->constructorCalled);
-    }
-
-    public function testOriginalCloneSettingConsidered()
-    {
-        $mock1 = $this->getMock('PartialMockTestClass');
-        $mock2 = $this->getMock('PartialMockTestClass', array(), array(), '', true, false);
-
-        $this->assertNotEquals(get_class($mock1), get_class($mock2));
-    }
-
-    public function testGetMockForAbstractClass()
-    {
-        $mock = $this->getMock('AbstractMockTestClass');
-        $mock->expects($this->never())
-             ->method('doSomething');
-    }
-
-    public function traversableProvider()
-    {
-        return array(
-          array('Traversable'),
-          array('\Traversable'),
-          array('TraversableMockTestInterface'),
-          array(array('Traversable')),
-          array(array('Iterator','Traversable')),
-          array(array('\Iterator','\Traversable'))
-        );
-    }
-
-    /**
-     * @dataProvider traversableProvider
-     */
-    public function testGetMockForTraversable($type)
-    {
-        $mock = $this->getMock($type);
-        $this->assertInstanceOf('Traversable', $mock);
-    }
-
-    public function testMultipleInterfacesCanBeMockedInSingleObject()
-    {
-        $mock = $this->getMock(array('AnInterface', 'AnotherInterface'));
-        $this->assertInstanceOf('AnInterface', $mock);
-        $this->assertInstanceOf('AnotherInterface', $mock);
-    }
-
-    /**
-     * @requires PHP 5.4.0
-     */
-    public function testGetMockForTrait()
-    {
-        $mock = $this->getMockForTrait('AbstractTrait');
-        $mock->expects($this->never())->method('doSomething');
-
-        $parent = get_parent_class($mock);
-        $traits = class_uses($parent, false);
-
-        $this->assertContains('AbstractTrait', $traits);
-    }
-
-    public function testClonedMockObjectShouldStillEqualTheOriginal()
-    {
-        $a = $this->getMock('stdClass');
-        $b = clone $a;
-        $this->assertEquals($a, $b);
-    }
-
-    public function testMockObjectsConstructedIndepentantlyShouldBeEqual()
-    {
-        $a = $this->getMock('stdClass');
-        $b = $this->getMock('stdClass');
-        $this->assertEquals($a, $b);
-    }
-
-    public function testMockObjectsConstructedIndepentantlyShouldNotBeTheSame()
-    {
-        $a = $this->getMock('stdClass');
-        $b = $this->getMock('stdClass');
-        $this->assertNotSame($a, $b);
-    }
-
-    public function testClonedMockObjectCanBeUsedInPlaceOfOriginalOne()
-    {
-        $x = $this->getMock('stdClass');
-        $y = clone $x;
-
-        $mock = $this->getMock('stdClass', array('foo'));
-        $mock->expects($this->once())->method('foo')->with($this->equalTo($x));
-        $mock->foo($y);
-    }
-
-    public function testClonedMockObjectIsNotIdenticalToOriginalOne()
-    {
-        $x = $this->getMock('stdClass');
-        $y = clone $x;
-
-        $mock = $this->getMock('stdClass', array('foo'));
-        $mock->expects($this->once())->method('foo')->with($this->logicalNot($this->identicalTo($x)));
-        $mock->foo($y);
-    }
-
-    public function testObjectMethodCallWithArgumentCloningEnabled()
-    {
-        $expectedObject = new StdClass;
-
-        $mock = $this->getMockBuilder('SomeClass')
-                     ->setMethods(array('doSomethingElse'))
-                     ->enableArgumentCloning()
-                     ->getMock();
-
-        $actualArguments = array();
-
-        $mock->expects($this->any())
-        ->method('doSomethingElse')
-        ->will($this->returnCallback(function () use (&$actualArguments) {
-            $actualArguments = func_get_args();
-        }));
-
-        $mock->doSomethingElse($expectedObject);
-
-        $this->assertEquals(1, count($actualArguments));
-        $this->assertEquals($expectedObject, $actualArguments[0]);
-        $this->assertNotSame($expectedObject, $actualArguments[0]);
-    }
-
-    public function testObjectMethodCallWithArgumentCloningDisabled()
-    {
-        $expectedObject = new StdClass;
-
-        $mock = $this->getMockBuilder('SomeClass')
-                     ->setMethods(array('doSomethingElse'))
-                     ->disableArgumentCloning()
-                     ->getMock();
-
-        $actualArguments = array();
-
-        $mock->expects($this->any())
-        ->method('doSomethingElse')
-        ->will($this->returnCallback(function () use (&$actualArguments) {
-            $actualArguments = func_get_args();
-        }));
-
-        $mock->doSomethingElse($expectedObject);
-
-        $this->assertEquals(1, count($actualArguments));
-        $this->assertSame($expectedObject, $actualArguments[0]);
-    }
-
-    public function testArgumentCloningOptionGeneratesUniqueMock()
-    {
-        $mockWithCloning = $this->getMockBuilder('SomeClass')
-                                ->setMethods(array('doSomethingElse'))
-                                ->enableArgumentCloning()
-                                ->getMock();
-
-        $mockWithoutCloning = $this->getMockBuilder('SomeClass')
-                                   ->setMethods(array('doSomethingElse'))
-                                   ->disableArgumentCloning()
-                                   ->getMock();
-
-        $this->assertNotEquals($mockWithCloning, $mockWithoutCloning);
-    }
-
-    public function testVerificationOfMethodNameFailsWithoutParameters()
-    {
-        $mock = $this->getMock('SomeClass', array('right', 'wrong'), array(), '', true, true, true);
-        $mock->expects($this->once())
-             ->method('right');
-
-        $mock->wrong();
-        try {
-            $mock->__phpunit_verify();
-            $this->fail('Expected exception');
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            $this->assertSame(
-                "Expectation failed for method name is equal to <string:right> when invoked 1 time(s).\n"
-                . "Method was expected to be called 1 times, actually called 0 times.\n",
-                $e->getMessage()
-            );
-        }
-
-        $this->resetMockObjects();
-    }
-
-    public function testVerificationOfMethodNameFailsWithParameters()
-    {
-        $mock = $this->getMock('SomeClass', array('right', 'wrong'), array(), '', true, true, true);
-        $mock->expects($this->once())
-             ->method('right');
-
-        $mock->wrong();
-        try {
-            $mock->__phpunit_verify();
-            $this->fail('Expected exception');
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            $this->assertSame(
-                "Expectation failed for method name is equal to <string:right> when invoked 1 time(s).\n"
-                . "Method was expected to be called 1 times, actually called 0 times.\n",
-                $e->getMessage()
-            );
-        }
-
-        $this->resetMockObjects();
-    }
-
-    public function testVerificationOfMethodNameFailsWithWrongParameters()
-    {
-        $mock = $this->getMock('SomeClass', array('right', 'wrong'), array(), '', true, true, true);
-        $mock->expects($this->once())
-             ->method('right')
-             ->with(array('first', 'second'));
-
-        try {
-            $mock->right(array('second'));
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            $this->assertSame(
-                "Expectation failed for method name is equal to <string:right> when invoked 1 time(s)\n"
-                . "Parameter 0 for invocation SomeClass::right(Array (...)) does not match expected value.\n"
-                . "Failed asserting that two arrays are equal.",
-                $e->getMessage()
-            );
-        }
-
-        try {
-            $mock->__phpunit_verify();
-            $this->fail('Expected exception');
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            $this->assertSame(
-                "Expectation failed for method name is equal to <string:right> when invoked 1 time(s).\n"
-                . "Parameter 0 for invocation SomeClass::right(Array (...)) does not match expected value.\n"
-                . "Failed asserting that two arrays are equal.\n"
-                . "--- Expected\n"
-                . "+++ Actual\n"
-                . "@@ @@\n"
-                . " Array (\n"
-                . "-    0 => 'first'\n"
-                . "-    1 => 'second'\n"
-                . "+    0 => 'second'\n"
-                . " )\n",
-                $e->getMessage()
-            );
-        }
-
-        $this->resetMockObjects();
-    }
-
-    public function testVerificationOfNeverFailsWithEmptyParameters()
-    {
-        $mock = $this->getMock('SomeClass', array('right', 'wrong'), array(), '', true, true, true);
-        $mock->expects($this->never())
-             ->method('right')
-             ->with();
-
-        try {
-            $mock->right();
-            $this->fail('Expected exception');
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            $this->assertSame(
-                'SomeClass::right() was not expected to be called.',
-                $e->getMessage()
-            );
-        }
-
-        $this->resetMockObjects();
-    }
-
-    public function testVerificationOfNeverFailsWithAnyParameters()
-    {
-        $mock = $this->getMock('SomeClass', array('right', 'wrong'), array(), '', true, true, true);
-        $mock->expects($this->never())
-             ->method('right')
-             ->withAnyParameters();
-
-        try {
-            $mock->right();
-            $this->fail('Expected exception');
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            $this->assertSame(
-                'SomeClass::right() was not expected to be called.',
-                $e->getMessage()
-            );
-        }
-
-        $this->resetMockObjects();
-    }
-
-    /**
-     * @ticket 199
-     */
-    public function testWithAnythingInsteadOfWithAnyParameters()
-    {
-        $mock = $this->getMock('SomeClass', array('right'), array(), '', true, true, true);
-        $mock->expects($this->once())
-             ->method('right')
-             ->with($this->anything());
-
-        try {
-            $mock->right();
-            $this->fail('Expected exception');
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            $this->assertSame(
-                "Expectation failed for method name is equal to <string:right> when invoked 1 time(s)\n" .
-                "Parameter count for invocation SomeClass::right() is too low.\n" .
-                "To allow 0 or more parameters with any value, omit ->with() or use ->withAnyParameters() instead.",
-                $e->getMessage()
-            );
-        }
-
-        $this->resetMockObjects();
-    }
-
-    /**
-     * See https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81
-     */
-    public function testMockArgumentsPassedByReference()
-    {
-        $foo = $this->getMockBuilder('MethodCallbackByReference')
-                    ->setMethods(array('bar'))
-                    ->disableOriginalConstructor()
-                    ->disableArgumentCloning()
-                    ->getMock();
-
-        $foo->expects($this->any())
-            ->method('bar')
-            ->will($this->returnCallback(array($foo, 'callback')));
-
-        $a = $b = $c = 0;
-
-        $foo->bar($a, $b, $c);
-
-        $this->assertEquals(1, $b);
-    }
-
-    /**
-     * See https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81
-     */
-    public function testMockArgumentsPassedByReference2()
-    {
-        $foo = $this->getMockBuilder('MethodCallbackByReference')
-                    ->disableOriginalConstructor()
-                    ->disableArgumentCloning()
-                    ->getMock();
-
-        $foo->expects($this->any())
-            ->method('bar')
-            ->will($this->returnCallback(
-                function (&$a, &$b, $c) {
-                    $b = 1;
-                }
-            ));
-
-        $a = $b = $c = 0;
-
-        $foo->bar($a, $b, $c);
-
-        $this->assertEquals(1, $b);
-    }
-
-    /**
-     * https://github.com/sebastianbergmann/phpunit-mock-objects/issues/116
-     */
-    public function testMockArgumentsPassedByReference3()
-    {
-        $foo = $this->getMockBuilder('MethodCallbackByReference')
-                    ->setMethods(array('bar'))
-                    ->disableOriginalConstructor()
-                    ->disableArgumentCloning()
-                    ->getMock();
-
-        $a = new stdClass();
-        $b = $c = 0;
-
-        $foo->expects($this->any())
-            ->method('bar')
-            ->with($a, $b, $c)
-            ->will($this->returnCallback(array($foo, 'callback')));
-
-        $foo->bar($a, $b, $c);
-    }
-
-    /**
-     * https://github.com/sebastianbergmann/phpunit/issues/796
-     */
-    public function testMockArgumentsPassedByReference4()
-    {
-        $foo = $this->getMockBuilder('MethodCallbackByReference')
-                    ->setMethods(array('bar'))
-                    ->disableOriginalConstructor()
-                    ->disableArgumentCloning()
-                    ->getMock();
-
-        $a = new stdClass();
-        $b = $c = 0;
-
-        $foo->expects($this->any())
-            ->method('bar')
-            ->with($this->isInstanceOf("stdClass"), $b, $c)
-            ->will($this->returnCallback(array($foo, 'callback')));
-
-        $foo->bar($a, $b, $c);
-    }
-
-    /**
-     * @requires extension soap
-     */
-    public function testCreateMockFromWsdl()
-    {
-        $mock = $this->getMockFromWsdl(__DIR__ . '/_fixture/GoogleSearch.wsdl', 'WsdlMock');
-        $this->assertStringStartsWith(
-            'Mock_WsdlMock_',
-            get_class($mock)
-        );
-    }
-
-    /**
-     * @requires extension soap
-     */
-    public function testCreateNamespacedMockFromWsdl()
-    {
-        $mock = $this->getMockFromWsdl(__DIR__ . '/_fixture/GoogleSearch.wsdl', 'My\\Space\\WsdlMock');
-        $this->assertStringStartsWith(
-            'Mock_WsdlMock_',
-            get_class($mock)
-        );
-    }
-
-    /**
-     * @requires extension soap
-     */
-    public function testCreateTwoMocksOfOneWsdlFile()
-    {
-        $mock = $this->getMockFromWsdl(__DIR__ . '/_fixture/GoogleSearch.wsdl');
-        $mock = $this->getMockFromWsdl(__DIR__ . '/_fixture/GoogleSearch.wsdl');
-    }
-
-    /**
-     * @see    https://github.com/sebastianbergmann/phpunit-mock-objects/issues/156
-     * @ticket 156
-     */
-    public function testInterfaceWithStaticMethodCanBeStubbed()
-    {
-        $this->assertInstanceOf(
-            'InterfaceWithStaticMethod',
-            $this->getMock('InterfaceWithStaticMethod')
-        );
-    }
-
-    /**
-     * @expectedException PHPUnit_Framework_MockObject_BadMethodCallException
-     */
-    public function testInvokingStubbedStaticMethodRaisesException()
-    {
-        $mock = $this->getMock('ClassWithStaticMethod');
-        $mock->staticMethod();
-    }
-
-    /**
-     * @see    https://github.com/sebastianbergmann/phpunit-mock-objects/issues/171
-     * @ticket 171
-     */
-    public function testStubForClassThatImplementsSerializableCanBeCreatedWithoutInvokingTheConstructor()
-    {
-        $this->assertInstanceOf(
-            'ClassThatImplementsSerializable',
-            $this->getMockBuilder('ClassThatImplementsSerializable')
-                 ->disableOriginalConstructor()
-                 ->getMock()
-        );
-    }
-
-    private function resetMockObjects()
-    {
-        $refl = new ReflectionObject($this);
-        $refl = $refl->getParentClass();
-        $prop = $refl->getProperty('mockObjects');
-        $prop->setAccessible(true);
-        $prop->setValue($this, array());
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/ProxyObjectTest.php b/vendor/phpunit/phpunit-mock-objects/tests/ProxyObjectTest.php
deleted file mode 100644
index 2dde7e4..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/ProxyObjectTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/*
- * This file is part of the PHPUnit_MockObject 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.
- */
-
-/**
- * @since      Class available since Release 2.0.0
- */
-class Framework_ProxyObjectTest extends PHPUnit_Framework_TestCase
-{
-    public function testMockedMethodIsProxiedToOriginalMethod()
-    {
-        $proxy = $this->getMockBuilder('Bar')
-                      ->enableProxyingToOriginalMethods()
-                      ->getMock();
-
-        $proxy->expects($this->once())
-              ->method('doSomethingElse');
-
-        $foo = new Foo;
-        $this->assertEquals('result', $foo->doSomething($proxy));
-    }
-
-    public function testMockedMethodWithReferenceIsProxiedToOriginalMethod()
-    {
-        $proxy = $this->getMockBuilder('MethodCallbackByReference')
-                      ->enableProxyingToOriginalMethods()
-                      ->getMock();
-        $a = $b = $c = 0;
-
-        $proxy->callback($a, $b, $c);
-
-        $this->assertEquals(1, $b);
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractMockTestClass.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractMockTestClass.php
deleted file mode 100644
index 1f2640c..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractMockTestClass.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-abstract class AbstractMockTestClass implements MockTestInterface
-{
-    abstract public function doSomething();
-
-    public function returnAnything()
-    {
-        return 1;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractTrait.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractTrait.php
deleted file mode 100644
index 52aac64..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractTrait.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-trait AbstractTrait
-{
-    abstract public function doSomething();
-
-    public function mockableMethod()
-    {
-        return true;
-    }
-
-    public function anotherMockableMethod()
-    {
-        return true;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnInterface.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnInterface.php
deleted file mode 100644
index 5b7d4cc..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnInterface.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-interface AnInterface
-{
-    public function doSomething();
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnotherInterface.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnotherInterface.php
deleted file mode 100644
index 62bff0a..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnotherInterface.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-interface AnotherInterface
-{
-    public function doSomethingElse();
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/Bar.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/Bar.php
deleted file mode 100644
index 4a4d165..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/Bar.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-class Bar
-{
-    public function doSomethingElse()
-    {
-        return 'result';
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassThatImplementsSerializable.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassThatImplementsSerializable.php
deleted file mode 100644
index 87576ca..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassThatImplementsSerializable.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-class ClassThatImplementsSerializable implements Serializable
-{
-    public function serialize()
-    {
-        return get_object_vars($this);
-    }
-
-    public function unserialize($serialized)
-    {
-        foreach (unserialize($serialized) as $key => $value) {
-            $this->{$key} = $value;
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassWithStaticMethod.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassWithStaticMethod.php
deleted file mode 100644
index 0c13c12..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassWithStaticMethod.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-class ClassWithStaticMethod
-{
-    public static function staticMethod()
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/Foo.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/Foo.php
deleted file mode 100644
index 16a9ed7..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/Foo.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-class Foo
-{
-    public function doSomething(Bar $bar)
-    {
-        return $bar->doSomethingElse();
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/FunctionCallback.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/FunctionCallback.php
deleted file mode 100644
index c12ac6c..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/FunctionCallback.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-function functionCallback()
-{
-    $args = func_get_args();
-
-    if ($args == array('foo', 'bar')) {
-        return 'pass';
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/GoogleSearch.wsdl b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/GoogleSearch.wsdl
deleted file mode 100644
index e448501..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/GoogleSearch.wsdl
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- WSDL description of the Google Web APIs.
-     The Google Web APIs are in beta release. All interfaces are subject to
-     change as we refine and extend our APIs. Please see the terms of use
-     for more information. -->
-
-<!-- Revision 2002-08-16 -->
-
-<definitions name="GoogleSearch"
-             targetNamespace="urn:GoogleSearch"
-             xmlns:typens="urn:GoogleSearch"
-             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-             xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
-             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-             xmlns="http://schemas.xmlsoap.org/wsdl/">
-
-  <!-- Types for search - result elements, directory categories -->
-
-  <types>
-    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
-                targetNamespace="urn:GoogleSearch">
-
-      <xsd:complexType name="GoogleSearchResult">
-        <xsd:all>
-          <xsd:element name="documentFiltering"           type="xsd:boolean"/>
-          <xsd:element name="searchComments"              type="xsd:string"/>
-          <xsd:element name="estimatedTotalResultsCount"  type="xsd:int"/>
-          <xsd:element name="estimateIsExact"             type="xsd:boolean"/>
-          <xsd:element name="resultElements"              type="typens:ResultElementArray"/>
-          <xsd:element name="searchQuery"                 type="xsd:string"/>
-          <xsd:element name="startIndex"                  type="xsd:int"/>
-          <xsd:element name="endIndex"                    type="xsd:int"/>
-          <xsd:element name="searchTips"                  type="xsd:string"/>
-          <xsd:element name="directoryCategories"         type="typens:DirectoryCategoryArray"/>
-          <xsd:element name="searchTime"                  type="xsd:double"/>
-        </xsd:all>
-      </xsd:complexType>
-
-      <xsd:complexType name="ResultElement">
-        <xsd:all>
-          <xsd:element name="summary" type="xsd:string"/>
-          <xsd:element name="URL" type="xsd:string"/>
-          <xsd:element name="snippet" type="xsd:string"/>
-          <xsd:element name="title" type="xsd:string"/>
-          <xsd:element name="cachedSize" type="xsd:string"/>
-          <xsd:element name="relatedInformationPresent" type="xsd:boolean"/>
-          <xsd:element name="hostName" type="xsd:string"/>
-          <xsd:element name="directoryCategory" type="typens:DirectoryCategory"/>
-          <xsd:element name="directoryTitle" type="xsd:string"/>
-        </xsd:all>
-      </xsd:complexType>
-
-      <xsd:complexType name="ResultElementArray">
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-             <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ResultElement[]"/>
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-
-      <xsd:complexType name="DirectoryCategoryArray">
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-             <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:DirectoryCategory[]"/>
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-
-      <xsd:complexType name="DirectoryCategory">
-        <xsd:all>
-          <xsd:element name="fullViewableName" type="xsd:string"/>
-          <xsd:element name="specialEncoding" type="xsd:string"/>
-        </xsd:all>
-      </xsd:complexType>
-
-    </xsd:schema>
-  </types>
-
-  <!-- Messages for Google Web APIs - cached page, search, spelling. -->
-
-  <message name="doGetCachedPage">
-    <part name="key"            type="xsd:string"/>
-    <part name="url"            type="xsd:string"/>
-  </message>
-
-  <message name="doGetCachedPageResponse">
-    <part name="return"         type="xsd:base64Binary"/>
-  </message>
-
-  <message name="doSpellingSuggestion">
-    <part name="key"            type="xsd:string"/>
-    <part name="phrase"         type="xsd:string"/>
-  </message>
-
-  <message name="doSpellingSuggestionResponse">
-    <part name="return"         type="xsd:string"/>
-  </message>
-
-  <!-- note, ie and oe are ignored by server; all traffic is UTF-8. -->
-
-  <message name="doGoogleSearch">
-    <part name="key"            type="xsd:string"/>
-    <part name="q"              type="xsd:string"/>
-    <part name="start"          type="xsd:int"/>
-    <part name="maxResults"     type="xsd:int"/>
-    <part name="filter"         type="xsd:boolean"/>
-    <part name="restrict"       type="xsd:string"/>
-    <part name="safeSearch"     type="xsd:boolean"/>
-    <part name="lr"             type="xsd:string"/>
-    <part name="ie"             type="xsd:string"/>
-    <part name="oe"             type="xsd:string"/>
-  </message>
-
-  <message name="doGoogleSearchResponse">
-    <part name="return"         type="typens:GoogleSearchResult"/>
-  </message>
-
-  <!-- Port for Google Web APIs, "GoogleSearch" -->
-
-  <portType name="GoogleSearchPort">
-
-    <operation name="doGetCachedPage">
-      <input message="typens:doGetCachedPage"/>
-      <output message="typens:doGetCachedPageResponse"/>
-    </operation>
-
-    <operation name="doSpellingSuggestion">
-      <input message="typens:doSpellingSuggestion"/>
-      <output message="typens:doSpellingSuggestionResponse"/>
-    </operation>
-
-    <operation name="doGoogleSearch">
-      <input message="typens:doGoogleSearch"/>
-      <output message="typens:doGoogleSearchResponse"/>
-    </operation>
-
-  </portType>
-
-
-  <!-- Binding for Google Web APIs - RPC, SOAP over HTTP -->
-
-  <binding name="GoogleSearchBinding" type="typens:GoogleSearchPort">
-    <soap:binding style="rpc"
-                  transport="http://schemas.xmlsoap.org/soap/http"/>
-
-    <operation name="doGetCachedPage">
-      <soap:operation soapAction="urn:GoogleSearchAction"/>
-      <input>
-        <soap:body use="encoded"
-                   namespace="urn:GoogleSearch"
-                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded"
-                   namespace="urn:GoogleSearch"
-                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-
-    <operation name="doSpellingSuggestion">
-      <soap:operation soapAction="urn:GoogleSearchAction"/>
-      <input>
-        <soap:body use="encoded"
-                   namespace="urn:GoogleSearch"
-                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded"
-                   namespace="urn:GoogleSearch"
-                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-
-    <operation name="doGoogleSearch">
-      <soap:operation soapAction="urn:GoogleSearchAction"/>
-      <input>
-        <soap:body use="encoded"
-                   namespace="urn:GoogleSearch"
-                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded"
-                   namespace="urn:GoogleSearch"
-                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-  </binding>
-
-  <!-- Endpoint for Google Web APIs -->
-  <service name="GoogleSearchService">
-    <port name="GoogleSearchPort" binding="typens:GoogleSearchBinding">
-      <soap:address location="http://api.google.com/search/beta2"/>
-    </port>
-  </service>
-
-</definitions>
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/InterfaceWithStaticMethod.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/InterfaceWithStaticMethod.php
deleted file mode 100644
index dee5f4f..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/InterfaceWithStaticMethod.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-interface InterfaceWithStaticMethod
-{
-    public static function staticMethod();
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/MethodCallback.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/MethodCallback.php
deleted file mode 100644
index f8db62e..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/MethodCallback.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-class MethodCallback
-{
-    public static function staticCallback()
-    {
-        $args = func_get_args();
-
-        if ($args == array('foo', 'bar')) {
-            return 'pass';
-        }
-    }
-
-    public function nonStaticCallback()
-    {
-        $args = func_get_args();
-
-        if ($args == array('foo', 'bar')) {
-            return 'pass';
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/MethodCallbackByReference.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/MethodCallbackByReference.php
deleted file mode 100644
index ef26f3e..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/MethodCallbackByReference.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-class MethodCallbackByReference
-{
-    public function bar(&$a, &$b, $c)
-    {
-        Legacy::bar($a, $b, $c);
-    }
-
-    public function callback(&$a, &$b, $c)
-    {
-        $b = 1;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/MockTestInterface.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/MockTestInterface.php
deleted file mode 100644
index a5f8f5f..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/MockTestInterface.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-interface MockTestInterface
-{
-    public function returnAnything();
-    public function returnAnythingElse();
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/Mockable.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/Mockable.php
deleted file mode 100644
index 3d826dd..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/Mockable.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-class Mockable
-{
-    public $constructorArgs;
-    public $cloned;
-
-    public function __construct($arg1 = null, $arg2 = null)
-    {
-        $this->constructorArgs = array($arg1, $arg2);
-    }
-
-    public function mockableMethod()
-    {
-        // something different from NULL
-        return true;
-    }
-
-    public function anotherMockableMethod()
-    {
-        // something different from NULL
-        return true;
-    }
-
-    public function __clone()
-    {
-        $this->cloned = true;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/PartialMockTestClass.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/PartialMockTestClass.php
deleted file mode 100644
index 0609993..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/PartialMockTestClass.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-class PartialMockTestClass
-{
-    public $constructorCalled = false;
-
-    public function __construct()
-    {
-        $this->constructorCalled = true;
-    }
-
-    public function doSomething()
-    {
-    }
-
-    public function doAnotherThing()
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/SingletonClass.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/SingletonClass.php
deleted file mode 100644
index e000266..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/SingletonClass.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-class SingletonClass
-{
-    public static function getInstance()
-    {
-    }
-
-    public function doSomething()
-    {
-    }
-
-    protected function __construct()
-    {
-    }
-
-    final private function __sleep()
-    {
-    }
-
-    final private function __wakeup()
-    {
-    }
-
-    final private function __clone()
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/SomeClass.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/SomeClass.php
deleted file mode 100644
index ba83b28..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/SomeClass.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-class SomeClass
-{
-    public function doSomething($a, $b)
-    {
-        return null;
-    }
-
-    public function doSomethingElse($c)
-    {
-        return null;
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/StaticMockTestClass.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/StaticMockTestClass.php
deleted file mode 100644
index ac467c9..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/StaticMockTestClass.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-class StaticMockTestClass
-{
-    public static function doSomething()
-    {
-    }
-
-    public static function doSomethingElse()
-    {
-        return static::doSomething();
-    }
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/TraversableMockTestInterface.php b/vendor/phpunit/phpunit-mock-objects/tests/_fixture/TraversableMockTestInterface.php
deleted file mode 100644
index 3467cce..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/_fixture/TraversableMockTestInterface.php
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php
-interface TraversableMockTestInterface extends Traversable
-{
-}
diff --git a/vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php b/vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php
deleted file mode 100644
index 6575b39..0000000
--- a/vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-require __DIR__ . '/_fixture/FunctionCallback.php';
-require __DIR__ . '/../vendor/autoload.php';
diff --git a/vendor/phpunit/phpunit/.gitattributes b/vendor/phpunit/phpunit/.gitattributes
deleted file mode 100644
index 821227a..0000000
--- a/vendor/phpunit/phpunit/.gitattributes
+++ /dev/null
@@ -1,3 +0,0 @@
-*.php diff=php
-composer.json merge=ours
-src/Runner/Version.php merge=ours
diff --git a/vendor/phpunit/phpunit/.gitignore b/vendor/phpunit/phpunit/.gitignore
deleted file mode 100644
index 65a2321..0000000
--- a/vendor/phpunit/phpunit/.gitignore
+++ /dev/null
@@ -1,22 +0,0 @@
-build/api
-build/code-browser
-build/coverage
-build/logs
-build/pdepend
-build/phar
-build/phpdox
-build/*.phar
-build/*.phar.asc
-tests/TextUI/*.diff
-tests/TextUI/*.exp
-tests/TextUI/*.log
-tests/TextUI/*.out
-tests/TextUI/*.php
-/bin
-/vendor
-/composer.lock
-/composer.phar
-phpunit.xml
-cache.properties
-.idea
-.ant_targets
diff --git a/vendor/phpunit/phpunit/.php_cs b/vendor/phpunit/phpunit/.php_cs
deleted file mode 100644
index 5b353d2..0000000
--- a/vendor/phpunit/phpunit/.php_cs
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-$finder = Symfony\CS\Finder\DefaultFinder::create()
-    ->files()
-    ->in('build')
-    ->in('src')
-    ->in('tests')
-    ->name('*.php')
-    ->name('*.phpt');
-
-return Symfony\CS\Config\Config::create()
-    ->level(\Symfony\CS\FixerInterface::NONE_LEVEL)
-    ->fixers(
-        array(
-            'duplicate_semicolon',
-            'empty_return',
-            'extra_empty_lines',
-            'join_function',
-            'list_commas',
-            'no_blank_lines_after_class_opening',
-            'no_empty_lines_after_phpdocs',
-            'phpdoc_indent',
-            'phpdoc_no_access',
-            'phpdoc_no_empty_return',
-            'phpdoc_no_package',
-            'phpdoc_params',
-            'phpdoc_scalar',
-            'phpdoc_to_comment',
-            'phpdoc_trim',
-            'return',
-            'self_accessor',
-            'single_quote',
-            'spaces_before_semicolon',
-            'spaces_cast',
-            'ternary_spaces',
-            'trim_array_spaces',
-            'unused_use',
-            'whitespacy_lines',
-            'align_double_arrow',
-            'align_equals',
-            'concat_with_spaces'
-        )
-    )
-    ->finder($finder);
-
diff --git a/vendor/phpunit/phpunit/.travis.yml b/vendor/phpunit/phpunit/.travis.yml
deleted file mode 100644
index 3be518e..0000000
--- a/vendor/phpunit/phpunit/.travis.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-language: php
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-matrix:
-  allow_failures:
-    - php: 7.0
-    - php: hhvm
-
-sudo: false
-
-before_install:
-  - composer self-update
-
-install:
-  - travis_retry composer install --no-interaction --prefer-source
-
-script:
-  - ./phpunit
-  - ./phpunit --configuration ./build/travis-ci-fail.xml > /dev/null; if [ $? -eq 0 ]; then echo "SHOULD FAIL"; false; else echo "fail checked"; fi;
-  - xmllint --noout --schema phpunit.xsd phpunit.xml.dist
-  - xmllint --noout --schema phpunit.xsd tests/_files/configuration.xml
-  - xmllint --noout --schema phpunit.xsd tests/_files/configuration_empty.xml
-  - xmllint --noout --schema phpunit.xsd tests/_files/configuration_xinclude.xml -xinclude
-
-notifications:
-  email: false
-  webhooks:
-    urls:
-      - https://webhooks.gitter.im/e/6668f52f3dd4e3f81960
-    on_success: always
-    on_failure: always
-    on_start: false
-
diff --git a/vendor/phpunit/phpunit/CODE_OF_CONDUCT.md b/vendor/phpunit/phpunit/CODE_OF_CONDUCT.md
deleted file mode 100644
index a4abb84..0000000
--- a/vendor/phpunit/phpunit/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Contributor Code of Conduct
-
-As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
-
-We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.
-
-Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
-
-This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org/), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
-
diff --git a/vendor/phpunit/phpunit/CONTRIBUTING.md b/vendor/phpunit/phpunit/CONTRIBUTING.md
deleted file mode 100644
index aee139f..0000000
--- a/vendor/phpunit/phpunit/CONTRIBUTING.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# Contributing to PHPUnit
-
-## Contributor Code of Conduct
-
-Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
-
-## Workflow
-
-* Fork the project.
-* Make your bug fix or feature addition.
-* Add tests for it. This is important so we don't break it in a future version unintentionally.
-* Send a pull request. Bonus points for topic branches.
-
-Please make sure that you have [set up your user name and email address](http://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) for use with Git. Strings such as `silly nick name <root@localhost>` look really stupid in the commit history of a project.
-
-Pull requests for bug fixes must be based on the current stable branch whereas pull requests for new features must be based on the current alpha branch (when `5.0` is the current stable branch, then `5.1` is the current beta branch and `5.2` is the current alpha branch).
-
-We are trying to keep backwards compatibility breaks in PHPUnit to an absolute minimum. Please take this into account when proposing changes.
-
-Due to time constraints, we are not always able to respond as quickly as we would like. Please do not take delays personal and feel free to remind us if you feel that we forgot to respond.
-
-## Coding Guidelines
-
-This project comes with a configuration file for [php-cs-fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) (`.php_cs`) that you can use to (re)format your sourcecode for compliance with this project's coding guidelines:
-
-```bash
-$ wget http://get.sensiolabs.org/php-cs-fixer.phar
-
-$ php php-cs-fixer.phar fix
-```
-
-## Using PHPUnit from a Git checkout
-
-The following commands can be used to perform the initial checkout of PHPUnit:
-
-```bash
-$ git clone git://github.com/sebastianbergmann/phpunit.git
-
-$ cd phpunit
-```
-
-Retrieve PHPUnit's dependencies using [Composer](http://getcomposer.org/):
-
-```bash
-$ wget http://getcomposer.org/composer.phar
-
-$ php composer.phar install
-```
-
-The `phpunit` script can be used to invoke the PHPUnit test runner:
-
-```bash
-$ ./phpunit --version
-```
-
-## Reporting issues
-
-Please use the most specific issue tracker to search for existing tickets and to open new tickets:
-
-* [General problems](https://github.com/sebastianbergmann/phpunit/issues)
-* [Code Coverage](https://github.com/sebastianbergmann/php-code-coverage/issues)
-* [Stub and Mock Objects](https://github.com/sebastianbergmann/phpunit-mock-objects/issues)
-* [DbUnit](https://github.com/sebastianbergmann/dbunit/issues)
-* [PHPUnit_Selenium](https://github.com/sebastianbergmann/phpunit-selenium/issues)
-* [Documentation](https://github.com/sebastianbergmann/phpunit-documentation/issues)
-* [Website](https://github.com/sebastianbergmann/phpunit-website/issues)
-
diff --git a/vendor/phpunit/phpunit/ChangeLog-4.0.md b/vendor/phpunit/phpunit/ChangeLog-4.0.md
deleted file mode 100644
index dc71b01..0000000
--- a/vendor/phpunit/phpunit/ChangeLog-4.0.md
+++ /dev/null
@@ -1,176 +0,0 @@
-# Changes in PHPUnit 4.0
-
-All notable changes of the PHPUnit 4.0 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
-
-## [4.0.20] - 2014-05-02
-
-### Fixed
-
-* Fixed [#1242](https://github.com/sebastianbergmann/phpunit/issues/1242): `--self-update` uses OpenSSL API that is deprecated in PHP 5.6
-
-## [4.0.19] - 2014-04-30
-
-### Fixed
-
-* Fixed [#1193](https://github.com/sebastianbergmann/phpunit/issues/1193): Process isolation does not work correctly when PHPUnit is used from PHAR
-* Fixed a BC break related to comparing `DOMNode` objects that was introduced in PHPUnit 4.0.18
-
-## [4.0.18] - 2014-04-29
-
-### Fixed
-
-* Fixed [#1218](https://github.com/sebastianbergmann/phpunit/issues/1218): `--self-update` destroys symlink
-
-## [4.0.17] - 2014-04-21
-
-### Changed
-
-* [Display a message that the PEAR installation method is no longer supported when PHPUnit was installed using the PEAR Installer](https://github.com/sebastianbergmann/phpunit/commit/70b02c6be0176ab8ad3d3c9ec97480556c5dd63b)
-
-## [4.0.16] - 2014-04-20
-
-### Fixed
-
-* [Fixed handling of the `--report-useless-tests`, `--strict-coverage`, `--disallow-test-output`, and `--enforce-time-limit` options](https://github.com/sebastianbergmann/phpunit/commit/38baa9670711adedfe44ef24a33b568f61f3f045)
-
-## [4.0.15] - 2014-04-16
-
-New release of PHPUnit as PHAR and PEAR package with updated dependencies
-
-## [4.0.14] - 2014-03-28
-
-New release of PHPUnit as PHAR and PEAR package with updated dependencies
-
-## [4.0.13] - 2014-03-26
-
-New release of PHPUnit as PHAR and PEAR package with updated dependencies
-
-## [4.0.12] - 2014-03-20
-
-### Changed
-
-* [Use blacklist from PHP_CodeCoverage](https://github.com/sebastianbergmann/phpunit/commit/16152ba4b8d0104ce34f60cb71b2b982ba84c898)
-
-## [4.0.11] - 2014-03-18
-
-### Fixed
-
-* [Fixed unintended autoloader invokation triggered by the `@beforeClass` and `@afterClass` annotations](https://github.com/sebastianbergmann/phpunit/commit/f12e10fddc3ccbddb652a04d9036aeb5a6d54bff)
-
-## [4.0.10] - 2014-03-18
-
-New release of PHPUnit as PHAR and PEAR package with updated dependencies (most notably a [fix](https://github.com/sebastianbergmann/phpunit-mock-objects/commit/c5e6274b8f2bf983cf883bb375cf44f99aff200e) in the mock object generator that caused a [performance regression](https://github.com/sebastianbergmann/phpunit/issues/1187))
-
-## [4.0.9] - 2014-03-17
-
-### Changed
-
-* Optimized the search for the `@before`, `@after`, `@beforeClass` and `@afterClass` annotations
-* Optimized the usage of `SebastianBergmann\Environment\Runtime::canCollectCodeCoverage()`
-
-### Fixed
-
-* The "No code coverage will be generated." message was displayed even when code coverage reporting was not requested
-
-## [4.0.8] - 2014-03-17
-
-### Fixed
-
-* Fixed [#1186](https://github.com/sebastianbergmann/phpunit/issues/1186): `@before` and `@after` methods are not called in `@dataProvider` methods
-
-## [4.0.7] - 2014-03-12
-
-### Fixed
-
-* Removed dependency on `phpunit/dbunit` in `composer.json` that was unintentionally added in PHPUnit 4.0.6
-
-## [4.0.6] - 2014-03-11
-
-New release of PHPUnit as PHAR and PEAR package with updated dependencies
-
-## [4.0.5] - 2014-03-10
-
-New release of PHPUnit as PHAR and PEAR package with updated dependencies
-
-## [4.0.4] - 2014-03-08
-
-### Fixed
-
-* Fixed stacktrace filtering when PHPUnit is used from a PHAR
-
-## [4.0.3] - 2014-03-07
-
-New release of PHPUnit as PHAR and PEAR package with updated dependencies
-
-## [4.0.2] - 2014-03-07
-
-### Fixed
-
-* Fixed an issue related to displaying PHPUnit's version number
-
-## [4.0.1] - 2014-03-07
-
-### Fixed
-
-* Fixed collection of code coverage data for tests that use a data provider
-
-## [4.0.0] - 2014-03-07
-
-### Added
-
-* Implemented #382: Added the `$options` parameter to `PHPUnit_Framework_TestCase::getMockFromWsdl()` for configuring the `SoapClient`
-* Implemented #628: Added `PHPUnit_Framework_Assert::countOf(), a shortcut to get a `PHPUnit_Framework_Constraint_Count` instance
-* Implemented #711: `coverage-text` now has an XML `showOnlySummary` option
-* Implemented #719: The `--stderr` switch now respects `--colors` and `--debug`
-* Implemented #746: Allow identity checking for non-object types in all asserts that depend on `TraversableContains`
-* Implemented #758: Show a proper stack trace when @expectedException fails due to a unexpected exception being thrown
-* Implemented #773: Recursive and repeated arrays are more gracefully when comparison differences are exported
-* Implemented #813: Added `@before`, `@after`, `@beforeClass` and `@afterClass` annotations
-* Implemented #834: Added the `@requires OS` annotation
-* Implemented #835: Printers that extend `PHPUnit_TextUI_ResultPrinter` should have similar construction
-* Implemented #838: Added a base test listener
-* Implemented #859: Added PHP label validation to attribute assertions
-* Implemented #869: Added support for the adjacent sibling selector (+) to `PHPUnit_Util_XML::findNodes()`
-* Implemented #871: Add Comparator for DateTime objects
-* Implemented #877: Added new HTML5 tags to `PHPUnit_Util_XML::findNodes()`
-* Added `--coverage-crap4j` switch to generate code coverage report in Crap4J XML format
-* `assertCount()`, `assertNotCount()`, `assertSameSize()`, and `assertNotSameSize()` now support all objects that implement the `Traversable` interface
-
-### Changed
-
-* A test will now fail in strict mode when it uses the `@covers` annotation and code that is not expected to be covered is executed
-* All relative paths in a configuration file are now resolved relative to that configuration file
-
-### Fixed
-
-* Fixed #240: XML strings are escaped by removing invalid characters
-* Fixed #261: `setUp()` and `setUpBeforeClass()` are run before filters are applied
-* Fixed #541: Excluded groups are counted towards total number of tests being executed
-* Fixed #789: PHP INI settings would not be passed to child processes
-* Fixed #806: Array references are now properly displayed in error output
-* Fixed #808: Resources are now reported as `resource(13) of type (stream)` instead of `NULL`
-* Fixed #873: PHPUnit suppresses exceptions thrown outside of test case function
-* Fixed: `phpt` test cases now use the correct php binary when executed through wrapper scripts
-
-[4.0.20]: https://github.com/sebastianbergmann/phpunit/compare/4.0.19...4.0.20
-[4.0.19]: https://github.com/sebastianbergmann/phpunit/compare/4.0.18...4.0.19
-[4.0.18]: https://github.com/sebastianbergmann/phpunit/compare/4.0.17...4.0.18
-[4.0.17]: https://github.com/sebastianbergmann/phpunit/compare/4.0.16...4.0.17
-[4.0.16]: https://github.com/sebastianbergmann/phpunit/compare/4.0.15...4.0.16
-[4.0.15]: https://github.com/sebastianbergmann/phpunit/compare/4.0.14...4.0.15
-[4.0.14]: https://github.com/sebastianbergmann/phpunit/compare/4.0.13...4.0.14
-[4.0.13]: https://github.com/sebastianbergmann/phpunit/compare/4.0.12...4.0.13
-[4.0.12]: https://github.com/sebastianbergmann/phpunit/compare/4.0.11...4.0.12
-[4.0.11]: https://github.com/sebastianbergmann/phpunit/compare/4.0.10...4.0.11
-[4.0.10]: https://github.com/sebastianbergmann/phpunit/compare/4.0.9...4.0.10
-[4.0.9]: https://github.com/sebastianbergmann/phpunit/compare/4.0.8...4.0.9
-[4.0.8]: https://github.com/sebastianbergmann/phpunit/compare/4.0.7...4.0.8
-[4.0.7]: https://github.com/sebastianbergmann/phpunit/compare/4.0.6...4.0.7
-[4.0.6]: https://github.com/sebastianbergmann/phpunit/compare/4.0.5...4.0.6
-[4.0.5]: https://github.com/sebastianbergmann/phpunit/compare/4.0.4...4.0.5
-[4.0.4]: https://github.com/sebastianbergmann/phpunit/compare/4.0.3...4.0.4
-[4.0.3]: https://github.com/sebastianbergmann/phpunit/compare/4.0.2...4.0.3
-[4.0.2]: https://github.com/sebastianbergmann/phpunit/compare/4.0.1...4.0.2
-[4.0.1]: https://github.com/sebastianbergmann/phpunit/compare/4.0.0...4.0.1
-[4.0.0]: https://github.com/sebastianbergmann/phpunit/compare/3.7...4.0.0
-
diff --git a/vendor/phpunit/phpunit/ChangeLog-4.1.md b/vendor/phpunit/phpunit/ChangeLog-4.1.md
deleted file mode 100644
index d7f10a7..0000000
--- a/vendor/phpunit/phpunit/ChangeLog-4.1.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# Changes in PHPUnit 4.1
-
-All notable changes of the PHPUnit 4.1 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
-
-## [4.1.6] - 2014-08-17
-
-### Fixed
-
-* Fixed [#1380](https://github.com/sebastianbergmann/phpunit/issues/1380): `assertMatch()` returns `Unexpected end tag : hr`
-* Fixed [#1390](https://github.com/sebastianbergmann/phpunit/issues/1390): Licensing issue with third-party components bundled in PHAR distribution
-
-## [4.1.5] - 2014-08-07
-
-### Changed
-
-* Implemented [#1330](https://github.com/sebastianbergmann/phpunit/issues/1330): Allow non-ambiguous shortened long options
-
-### Fixed
-
-* Fixed [#529](https://github.com/sebastianbergmann/phpunit/issues/529): Tests missed in execution when another test extends from it 
-* Fixed [#1149](https://github.com/sebastianbergmann/phpunit/issues/1149): Test swallows output buffer when run in a separate process
-* Fixed [#1336](https://github.com/sebastianbergmann/phpunit/issues/1336): Problem in process isolation with global variables that contain an object which contains a string which contains multiple backslashes
-* Fixed [#1337](https://github.com/sebastianbergmann/phpunit/issues/1337): Data Provider with `\` at the end of the name breaks with process isolation
-* Fixed [#1345](https://github.com/sebastianbergmann/phpunit/issues/1345): Process isolation blocks infinitely upon fatal error in child process
-* Fixed [#1354](https://github.com/sebastianbergmann/phpunit/issues/1354): PHPUnit test suite fails on Windows
-* Fixed [#1369](https://github.com/sebastianbergmann/phpunit/issues/1369): Performance of `TestSuite::addTestFile()` and missing documentation
-* Fixed [#1374](https://github.com/sebastianbergmann/phpunit/issues/1374): `tearDown()` is called despite unmet requirements
-
-## [4.1.4] - 2014-07-18
-
-### Fixed
-
-* Fixed [#1265](https://github.com/sebastianbergmann/phpunit/issues/1265): `PHPUnit_Runner_StandardTestSuiteLoader` could not be configured as loader
-* Fixed [#1311](https://github.com/sebastianbergmann/phpunit/issues/1311): Incomplete XML Schema for PHPUnit XML configuration file
-* Fixed [#1314](https://github.com/sebastianbergmann/phpunit/issues/1314): Bug in configuration parser
-
-## [4.1.3] - 2014-06-11
-
-New release of PHPUnit as PHP Archive (PHAR) with updated dependencies
-
-## [4.1.2] - 2014-06-07
-
-New release of PHPUnit as PHP Archive (PHAR) with updated dependencies
-
-## [4.1.1] - 2014-05-24
-
-### Added
-
-* Added `--selfupdate` alias for `--self-update`
-
-### Changed
-
-* Improved the fix for [#1133](https://github.com/sebastianbergmann/phpunit/issues/1133)
-
-### Fixed
-
-* Fixed the constructor argument for `SebastianBergmann\Version`
-
-## [4.1.0] - 2014-05-02
-
-### Changed
-
-* The code to compare PHP values for equality (in `assertEquals()`, for instance) has been factored out into a [separate component](https://github.com/sebastianbergmann/comparator)
-* [The mock object generator is now created lazily](https://github.com/sebastianbergmann/phpunit/pull/1165)
-
-[4.1.6]: https://github.com/sebastianbergmann/phpunit/compare/4.1.5...4.1.6
-[4.1.5]: https://github.com/sebastianbergmann/phpunit/compare/4.1.4...4.1.5
-[4.1.4]: https://github.com/sebastianbergmann/phpunit/compare/4.1.3...4.1.4
-[4.1.3]: https://github.com/sebastianbergmann/phpunit/compare/4.1.2...4.1.3
-[4.1.2]: https://github.com/sebastianbergmann/phpunit/compare/4.1.1...4.1.2
-[4.1.1]: https://github.com/sebastianbergmann/phpunit/compare/4.1.0...4.1.1
-[4.1.0]: https://github.com/sebastianbergmann/phpunit/compare/4.0...4.1.0
-
diff --git a/vendor/phpunit/phpunit/ChangeLog-4.2.md b/vendor/phpunit/phpunit/ChangeLog-4.2.md
deleted file mode 100644
index 0d902b7..0000000
--- a/vendor/phpunit/phpunit/ChangeLog-4.2.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# Changes in PHPUnit 4.2
-
-All notable changes of the PHPUnit 4.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
-
-## [4.2.5] - 2014-09-06
-
-New release of PHPUnit as PHP Archive (PHAR) with updated dependencies
-
-## [4.2.4] - 2014-08-31
-
-### Fixed
-
-* Fixed [#1413](https://github.com/sebastianbergmann/phpunit/issues/1413): `assertCount()` hangs in infinite loop on HHVM
-
-## [4.2.3] - 2014-08-28
-
-### Fixed
-
-* Fixed [#1403](https://github.com/sebastianbergmann/phpunit/issues/1403): `phpunit --self-update` does not work
-
-## [4.2.2] - 2014-08-18
-
-### Fixed
-
-* Fixed [#1399](https://github.com/sebastianbergmann/phpunit/issues/1399): `enforceTimeLimit` configuration option is not handled
-
-## [4.2.1] - 2014-08-17
-
-### Fixed
-
-* Fixed [#1380](https://github.com/sebastianbergmann/phpunit/issues/1380): `assertMatch()` returns `Unexpected end tag : hr`
-* Fixed [#1390](https://github.com/sebastianbergmann/phpunit/issues/1390): Licensing issue with third-party components bundled in PHAR distribution
-
-## [4.2.0] - 2014-08-08
-
-### Added
-
-* Tests annotated with `@todo` will now be reported as risky when the `--disallow-todo-tests` option is used or `beStrictAboutTodoAnnotatedTests=true` is set in the configuration file
-* The `atLeast()` and `atMost()` invocation count matchers were added
-
-### Changed
-
-* `trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);` is used now to indicate that a PHPUnit API method is deprecated; the old "system" for deprecating methods has been removed
-* The PHP Archive (PHAR) distribution of PHPUnit can now be used as a library; `include()`ing or `require()`ing it will not execute the CLI test runner
-
-### Deprecated
-
-* The `assertTag()` and `assertSelect*()` assertion methods have been deprecated in favor of the [phpunit-dom-assertions](https://github.com/phpunit/phpunit-dom-assertions) extension; these methods will be removed in PHPUnit 5.0
-
-[4.2.5]: https://github.com/sebastianbergmann/phpunit/compare/4.2.4...4.2.5
-[4.2.4]: https://github.com/sebastianbergmann/phpunit/compare/4.2.3...4.2.4
-[4.2.3]: https://github.com/sebastianbergmann/phpunit/compare/4.2.2...4.2.3
-[4.2.2]: https://github.com/sebastianbergmann/phpunit/compare/4.2.1...4.2.2
-[4.2.1]: https://github.com/sebastianbergmann/phpunit/compare/4.2.0...4.2.1
-[4.2.0]: https://github.com/sebastianbergmann/phpunit/compare/4.1...4.2.0
-
diff --git a/vendor/phpunit/phpunit/ChangeLog-4.3.md b/vendor/phpunit/phpunit/ChangeLog-4.3.md
deleted file mode 100644
index 99c2826..0000000
--- a/vendor/phpunit/phpunit/ChangeLog-4.3.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# Changes in PHPUnit 4.3
-
-All notable changes of the PHPUnit 4.3 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
-
-## [4.3.5] - 2014-11-11
-
-### Changed
-
-* Merged [#1484](https://github.com/sebastianbergmann/phpunit/issues/1484): Removed `lazymap` from blacklist as it is not longer used
-* Merged [#1489](https://github.com/sebastianbergmann/phpunit/issues/1489): Do not send output from tests in process isolation when testing output
-
-## [4.3.4] - 2014-10-22
-
-### Fixed
-
-* Fixed [#1428](https://github.com/sebastianbergmann/phpunit/issues/1428): Issue with Composer dependencies
-* Fixed [#1447](https://github.com/sebastianbergmann/phpunit/issues/1447): PHPT tests treat line endings inconsistently
-
-## [4.3.3] - 2014-10-16
-
-### Fixed
-
-* Fixed [#1471](https://github.com/sebastianbergmann/phpunit/issues/1471): Output made while test is running is printed although `expectOutputString()` is used when an assertion fails
-
-## [4.3.2] - 2014-10-16
-
-### Fixed
-
-* Fixed [#1468](https://github.com/sebastianbergmann/phpunit/issues/1468): Incomplete and `@todo` annotated tests are counted twice
-
-## [4.3.1] - 2014-10-06
-
-New release of PHPUnit as PHP Archive (PHAR) with updated dependencies
-
-## [4.3.0] - 2014-10-03
-
-### Added
-
-* Merged [#1358](https://github.com/sebastianbergmann/phpunit/issues/1358): Implement `@expectedExceptionMessageRegExp` annotation
-* Merged [#1360](https://github.com/sebastianbergmann/phpunit/issues/1360): Allow a test to identify whether it runs in isolation
-
-### Fixed
-
-* Fixed [#1216](https://github.com/sebastianbergmann/phpunit/issues/1216): Bootstrap does not have global variables set when `--bootstrap` is specified on commandline
-* Fixed [#1351](https://github.com/sebastianbergmann/phpunit/issues/1351): `TestResult` object contains serialized test class upon test failure/exception in process isolation
-* Fixed [#1437](https://github.com/sebastianbergmann/phpunit/issues/1437): Risky test messages mask failures 
-
-[4.3.5]: https://github.com/sebastianbergmann/phpunit/compare/4.3.4...4.3.5
-[4.3.4]: https://github.com/sebastianbergmann/phpunit/compare/4.3.3...4.3.4
-[4.3.3]: https://github.com/sebastianbergmann/phpunit/compare/4.3.2...4.3.3
-[4.3.2]: https://github.com/sebastianbergmann/phpunit/compare/4.3.1...4.3.2
-[4.3.1]: https://github.com/sebastianbergmann/phpunit/compare/4.3.0...4.3.1
-[4.3.0]: https://github.com/sebastianbergmann/phpunit/compare/4.2...4.3.0
-
diff --git a/vendor/phpunit/phpunit/ChangeLog-4.4.md b/vendor/phpunit/phpunit/ChangeLog-4.4.md
deleted file mode 100644
index 312af5a..0000000
--- a/vendor/phpunit/phpunit/ChangeLog-4.4.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# Changes in PHPUnit 4.4
-
-All notable changes of the PHPUnit 4.4 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
-
-## [4.4.5] - 2015-01-27
-
-### Fixed
-
-* Fixed [#1592](https://github.com/sebastianbergmann/phpunit/issues/1592): Incorrect dependency information
-
-## [4.4.4] - 2015-01-24
-
-### Fixed
-
-* Fixed [#1587](https://github.com/sebastianbergmann/phpunit/issues/1587): Class `SebastianBergmann\Exporter\Context` not found
-
-## [4.4.3] - 2015-01-24
-
-New PHAR release due to updated dependencies
-
-## [4.4.2] - 2015-01-17
-
-### Changed
-
-* Merged [#1573](https://github.com/sebastianbergmann/phpunit/issues/1573): Updates for the XSD for PHPUnit XML configuration
-
-### Fixed
-
-* Merged [#1567](https://github.com/sebastianbergmann/phpunit/issues/1567): `coverage-crap4j` missing in XSD for PHPUnit XML configuration
-* Fixed [#1570](https://github.com/sebastianbergmann/phpunit/issues/1570): Test that prints output is marked as failure and not as risky when `--disallow-test-output` is used
-* Fixed `--stderr` with `--tap` or `--testdox` options
-
-## [4.4.1] - 2014-12-28
-
-### Changed
-
-* Merged [#1528](https://github.com/sebastianbergmann/phpunit/issues/1528): Add `expectedCount()` to `toString()` return value
-
-## [4.4.0] - 2014-12-05
-
-### Added
-
-* Merged [#1371](https://github.com/sebastianbergmann/phpunit/issues/1371): Implement `assertArraySubset()` assertion
-* Merged [#1439](https://github.com/sebastianbergmann/phpunit/issues/1439): Add support for `double` to `assertInternalType()`
-
-### Changed
-
-* Merged [#1427](https://github.com/sebastianbergmann/phpunit/issues/1427): Improve failure output for tests when provided data is binary
-* Merged [#1458](https://github.com/sebastianbergmann/phpunit/issues/1458): Only enable colors when PHPUnit is run on a console (and output is not sent to a file)
-
-[4.4.5]: https://github.com/sebastianbergmann/phpunit/compare/4.4.4...4.4.5
-[4.4.4]: https://github.com/sebastianbergmann/phpunit/compare/4.4.3...4.4.4
-[4.4.3]: https://github.com/sebastianbergmann/phpunit/compare/4.4.2...4.4.3
-[4.4.2]: https://github.com/sebastianbergmann/phpunit/compare/4.4.1...4.4.2
-[4.4.1]: https://github.com/sebastianbergmann/phpunit/compare/4.4.0...4.4.1
-[4.4.0]: https://github.com/sebastianbergmann/phpunit/compare/4.3...4.4.0
-
diff --git a/vendor/phpunit/phpunit/ChangeLog-4.5.md b/vendor/phpunit/phpunit/ChangeLog-4.5.md
deleted file mode 100644
index 2313de1..0000000
--- a/vendor/phpunit/phpunit/ChangeLog-4.5.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Changes in PHPUnit 4.5
-
-All notable changes of the PHPUnit 4.5 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
-
-## [4.5.1] - 2015-03-29
-
-## [4.5.0] - 2015-02-05
-
-### Added
-
-* Added out-of-the-box support for [Prophecy](https://github.com/phpspec/prophecy)
-* Implemented [#137](https://github.com/sebastianbergmann/phpunit/issues/137): Add support for variable number of tests shown per line in default result printer
-
-### Changed
-
-* Merged [#1478](https://github.com/sebastianbergmann/phpunit/issues/1478): Improve the performance of `PHPUnit_Framework_Constraint_IsEqual` (which is used by `assertEquals()`, for instance) for the most common case
-
-### Deprecated
-
-* [Deprecated](https://github.com/sebastianbergmann/phpunit/commit/7abe7796f77b13fdf3cfc506fb987d6c2ab477f5) the `--strict` commandline option and the XML configuration's `strict` attribute
-
-### Fixed
-
-* Fixed [#1474](https://github.com/sebastianbergmann/phpunit/issues/1474): Allow the registration of custom comparators for `assertEquals()` et al. (again)
-
-[4.5.1]: https://github.com/sebastianbergmann/phpunit/compare/4.5.0...4.5.1
-[4.5.0]: https://github.com/sebastianbergmann/phpunit/compare/4.4...4.5.0
-
diff --git a/vendor/phpunit/phpunit/ChangeLog-4.6.md b/vendor/phpunit/phpunit/ChangeLog-4.6.md
deleted file mode 100644
index 3571634..0000000
--- a/vendor/phpunit/phpunit/ChangeLog-4.6.md
+++ /dev/null
@@ -1,95 +0,0 @@
-# Changes in PHPUnit 4.6
-
-All notable changes of the PHPUnit 4.6 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
-
-## [4.6.10] - 2015-06-03
-
-### Changed
-
-* Merged [#1693](https://github.com/sebastianbergmann/phpunit/pull/1693): Improved API documentation
-* Merged [#1706](https://github.com/sebastianbergmann/phpunit/pull/1706): Avoid hard-coded URI to `phpunit.xsd`
-* Merged [#1725](https://github.com/sebastianbergmann/phpunit/pull/1725): Update phpDox XSD URI
-* Merged [#1735](https://github.com/sebastianbergmann/phpunit/pull/1735): Mute `chdir()` failures in XInclude handling of XML configuration file
-* Merged [#1736](https://github.com/sebastianbergmann/phpunit/pull/1736): Verify that phar file can be overwritten before attempting self update
-
-### Fixed
-
-* Fixed [#1737](https://github.com/sebastianbergmann/phpunit/issues/1737): Confusing output from `--testdox` for empty test class
-
-## [4.6.9] - 2015-05-29
-
-### Fixed
-
-* Fixed [#1731](https://github.com/sebastianbergmann/phpunit/issues/1731): `.` after failure count has no background color when `--colors` is used
-
-## [4.6.8] - 2015-05-28
-
-New PHAR release due to updated dependencies
-
-## [4.6.7] - 2015-05-25
-
-New PHAR release due to updated dependencies
-
-## [4.6.6] - 2015-04-29
-
-### Fixed
-
-* Fixed [#1684](https://github.com/sebastianbergmann/phpunit/issues/1684): PHAR does not work on HHVM
-
-## [4.6.5] - 2015-04-29
-
-* Fixed [#1677](https://github.com/sebastianbergmann/phpunit/issues/1677): Number of risky tests not printed when there are failing tests
-* Fixed [#1688](https://github.com/sebastianbergmann/phpunit/issues/1688): Self-Update operation does not work due to outdated SSL certificate
-
-## [4.6.4] - 2015-04-11
-
-### Changed
-
-* The default list of blacklisted classes is now always passed to PHP_CodeCoverage
-
-## [4.6.3] - 2015-04-11
-
-### Changed
-
-* Updated the default list of blacklisted classes
-
-## [4.6.2] - 2015-04-07
-
-### Fixed
-
-* Fixed [#1667](https://github.com/sebastianbergmann/phpunit/issues/1667): Loading `src/Framework/Assert/Functions.php` by default causes collisions
-
-## [4.6.1] - 2015-04-03
-
-### Fixed
-
-* Fixed [#1665](https://github.com/sebastianbergmann/phpunit/issues/1665): PHPUnit 4.6.0 PHAR does not work when renamed to `phpunit`
-
-## [4.6.0] - 2015-04-03
-
-### Added
-
-* Added the `--strict-global-state` command-line option and the `beStrictAboutChangesToGlobalState` configuration setting for enabling a check that global variabes, super-global variables, and static attributes in user-defined classes are not modified during a test
-* Merged [#1527](https://github.com/sebastianbergmann/phpunit/issues/1527) and [#1529](https://github.com/sebastianbergmann/phpunit/issues/1529): Allow to define options for displaying colors
-
-### Changed
-
-* Merged [#1528](https://github.com/sebastianbergmann/phpunit/issues/1528): Improve message when `PHPUnit_Framework_Constraint_Count` is used with logical operators
-
-### Fixed
-
-* Merged [#1537](https://github.com/sebastianbergmann/phpunit/issues/1537): Fix problem of `--stderr` with `--tap` and `--testdox`
-* Fixed [#1599](https://github.com/sebastianbergmann/phpunit/issues/1599): The PHAR build of PHPUnit no longer uses an autoloader to load PHPUnit's own classes and instead statically loads all classes on startup
-
-[4.6.10]: https://github.com/sebastianbergmann/phpunit/compare/4.6.9...4.6.10
-[4.6.9]: https://github.com/sebastianbergmann/phpunit/compare/4.6.8...4.6.9
-[4.6.8]: https://github.com/sebastianbergmann/phpunit/compare/4.6.7...4.6.8
-[4.6.7]: https://github.com/sebastianbergmann/phpunit/compare/4.6.6...4.6.7
-[4.6.6]: https://github.com/sebastianbergmann/phpunit/compare/4.6.5...4.6.6
-[4.6.5]: https://github.com/sebastianbergmann/phpunit/compare/4.6.4...4.6.5
-[4.6.4]: https://github.com/sebastianbergmann/phpunit/compare/4.6.3...4.6.4
-[4.6.3]: https://github.com/sebastianbergmann/phpunit/compare/4.6.2...4.6.3
-[4.6.2]: https://github.com/sebastianbergmann/phpunit/compare/4.6.1...4.6.2
-[4.6.1]: https://github.com/sebastianbergmann/phpunit/compare/4.6.0...4.6.1
-[4.6.0]: https://github.com/sebastianbergmann/phpunit/compare/4.5...4.6.0
-
diff --git a/vendor/phpunit/phpunit/ChangeLog-4.7.md b/vendor/phpunit/phpunit/ChangeLog-4.7.md
deleted file mode 100644
index 948c127..0000000
--- a/vendor/phpunit/phpunit/ChangeLog-4.7.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# Changes in PHPUnit 4.7
-
-All notable changes of the PHPUnit 4.7 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
-
-## [4.7.7] - 2015-07-13
-
-New PHAR release due to updated dependencies
-
-## [4.7.6] - 2015-06-30
-
-### Fixed
-
-* Fixed [#1681](https://github.com/sebastianbergmann/phpunit/issues/1681): Code Coverage filter configuration is not passed to child processes
-* Fixed [#1692](https://github.com/sebastianbergmann/phpunit/issues/1692): Clean up `PHPUnit_Extensions_RepeatedTest` after refactoring
-* Fixed [#1763](https://github.com/sebastianbergmann/phpunit/issues/1763): `@before` and `@after` annotations do not work when inherited
-
-## [4.7.5] - 2015-06-21
-
-### Fixed
-
-* Fixed [#490](https://github.com/sebastianbergmann/phpunit/issues/490): Ensure that a test can only be one of `@small`, `@medium`, or `@large`.
-* Fixed [#1704](https://github.com/sebastianbergmann/phpunit/issues/1704): Output printed during test missing when using TAP
-
-## [4.7.4] - 2015-06-18
-
-### Changed
-
-* The `PHPUnit_Framework_Constraint_IsType` constraint now knows about the `real` type (which is an alias for `float`)
-* Various work on compatibility with PHP 7
-
-### Fixed
-
-* Fixed [#1749](https://github.com/sebastianbergmann/phpunit/issues/1749): `stopOnError` configuration setting does not work
-
-## [4.7.3] - 2015-06-11
-
-### Fixed
-
-* Fixed [#1317](https://github.com/sebastianbergmann/phpunit/issues/1317): JUnit XML logfiles does not contain warnings
-* Fixed an [issue](https://github.com/sebastianbergmann/php-code-coverage/issues/347) where the warning that no whitelist is used is displayed when it should not
-
-## [4.7.2] - 2015-06-06
-
-New PHAR release due to updated dependencies
-
-## [4.7.1] - 2015-06-05
-
-New PHAR release due to updated dependencies
-
-## [4.7.0] - 2015-06-05
-
-### Added
-
-* Merged [#1718](https://github.com/sebastianbergmann/phpunit/issues/1718): Support for `--INI--` section in PHPT tests
-
-### Changed
-
-* Tests not annotated with `@small`, `@medium`, or `@large` are no longer treated as being annotated with `@small`
-* In verbose mode, the test runner now prints information about the PHP runtime
-* To be consistent with the printing of PHP runtime information, the configuration file used is only printed in verbose mode
-* A warning is now printed when code coverage data is collected but no whitelist is configured
-
-[4.7.7]: https://github.com/sebastianbergmann/phpunit/compare/4.7.6...4.7.7
-[4.7.6]: https://github.com/sebastianbergmann/phpunit/compare/4.7.5...4.7.6
-[4.7.5]: https://github.com/sebastianbergmann/phpunit/compare/4.7.4...4.7.5
-[4.7.4]: https://github.com/sebastianbergmann/phpunit/compare/4.7.3...4.7.4
-[4.7.3]: https://github.com/sebastianbergmann/phpunit/compare/4.7.2...4.7.3
-[4.7.2]: https://github.com/sebastianbergmann/phpunit/compare/4.7.1...4.7.2
-[4.7.1]: https://github.com/sebastianbergmann/phpunit/compare/4.7.0...4.7.1
-[4.7.0]: https://github.com/sebastianbergmann/phpunit/compare/4.6...4.7.0
-
diff --git a/vendor/phpunit/phpunit/ChangeLog-4.8.md b/vendor/phpunit/phpunit/ChangeLog-4.8.md
deleted file mode 100644
index 9fc5845..0000000
--- a/vendor/phpunit/phpunit/ChangeLog-4.8.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# Changes in PHPUnit 4.8
-
-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.11] - 2015-10-07
-
-### Fixed
-
-* Merged [#1885](https://github.com/sebastianbergmann/phpunit/issues/1885): Fixed handling of PHP configuration settings for process isolation
-* Fixed [#1857](https://github.com/sebastianbergmann/phpunit/issues/1857): `@covers` and `@uses` should only take a single word
-* Fixed [#1879](https://github.com/sebastianbergmann/phpunit/issues/1879): `assertEqualXMLStructure()` cannot compare nodes with an ID
-* Fixed [#1898](https://github.com/sebastianbergmann/phpunit/issues/1898): `@covers` and `@uses` cannot be used for namespaced functions
-* Fixed [#1901](https://github.com/sebastianbergmann/phpunit/issues/1901): `--self-update` updates to PHPUnit 5, even on PHP < 5.6
-
-## [4.8.10] - 2015-10-01
-
-### Fixed
-
-* Merged [#1884](https://github.com/sebastianbergmann/phpunit/issues/1884): Avoid passing `Error` to `onNotSuccessfulTest()` on PHP 7
-
-## [4.8.9] - 2015-09-20
-
-### Fixed
-
-* Fixed regression introduced in PHPUnit 4.8.8
-
-## [4.8.8] - 2015-09-19
-
-### Fixed
-
-* Fixed [#1860](https://github.com/sebastianbergmann/phpunit/issues/1860): Not well-formed XML strings are always considered equal by `PHPUnit_Framework_Assert::assertXmlStringEqualsXmlString()`
-
-## [4.8.7] - 2015-09-14
-
-New PHAR release due to updated dependencies
-
-## [4.8.6] - 2015-08-24
-
-### Fixed
-
-* Fixed [#1835](https://github.com/sebastianbergmann/phpunit/issues/1835): Skipped test reported as errored since PHPUnit 4.7.4
-
-## [4.8.5] - 2015-08-19
-
-### Fixed
-
-* Fixed [#1831](https://github.com/sebastianbergmann/phpunit/issues/1831): PHAR manifest is missing
-
-## [4.8.4] - 2015-08-15
-
-### Fixed
-
-* Fixed [#1823](https://github.com/sebastianbergmann/phpunit/issues/1823): Columns attribute in XML configuration file is ignored
-
-## [4.8.3] - 2015-08-10
-
-### Changed
-
-* PHPUnit now exits early during bootstrap when an unsupported version of PHP is used
-
-## [4.8.2] - 2015-08-07
-
-### Fixed
-
-* Fixed [#1816](https://github.com/sebastianbergmann/phpunit/issues/1816): PHPUnit 4.8.1 shows "4.8.0" as version number
-
-## [4.8.1] - 2015-08-07
-
-### Fixed
-
-* Fixed [#1815](https://github.com/sebastianbergmann/phpunit/issues/1815): `phpunit --self-update` does not work in PHPUnit 4.8.0
-
-## [4.8.0] - 2015-08-07
-
-### Added
-
-* Added `--check-version` commandline switch to check whether the current version of PHPUnit is used (PHAR only)
-* Added `--no-coverage` commandline switch to ignore code coverage configuration from the configuration file
-* Implemented [#1663](https://github.com/sebastianbergmann/phpunit/issues/1663): The Crap4J report's threshold is now configurable
-* Merged [#1728](https://github.com/sebastianbergmann/phpunit/issues/1728): Implemented the `@testWith` annotation as "syntactic sugar" for data providers
-* Merged [#1739](https://github.com/sebastianbergmann/phpunit/issues/1739): Added support to the commandline test runner for using options after arguments
-
-### Changed
-
-* 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.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
-[4.8.8]: https://github.com/sebastianbergmann/phpunit/compare/4.8.7...4.8.8
-[4.8.7]: https://github.com/sebastianbergmann/phpunit/compare/4.8.6...4.8.7
-[4.8.6]: https://github.com/sebastianbergmann/phpunit/compare/4.8.5...4.8.6
-[4.8.5]: https://github.com/sebastianbergmann/phpunit/compare/4.8.4...4.8.5
-[4.8.4]: https://github.com/sebastianbergmann/phpunit/compare/4.8.3...4.8.4
-[4.8.3]: https://github.com/sebastianbergmann/phpunit/compare/4.8.2...4.8.3
-[4.8.2]: https://github.com/sebastianbergmann/phpunit/compare/4.8.1...4.8.2
-[4.8.1]: https://github.com/sebastianbergmann/phpunit/compare/4.8.0...4.8.1
-[4.8.0]: https://github.com/sebastianbergmann/phpunit/compare/4.7...4.8.0
-
diff --git a/vendor/phpunit/phpunit/LICENSE b/vendor/phpunit/phpunit/LICENSE
deleted file mode 100644
index 32ddc8e..0000000
--- a/vendor/phpunit/phpunit/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-PHPUnit
-
-Copyright (c) 2001-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/phpunit/README.md b/vendor/phpunit/phpunit/README.md
deleted file mode 100644
index d1b5f30..0000000
--- a/vendor/phpunit/phpunit/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# PHPUnit
-
-PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks.
-
-[![Latest Stable Version](https://img.shields.io/packagist/v/phpunit/phpunit.svg?style=flat-square)](https://packagist.org/packages/phpunit/phpunit)
-[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.3.3-8892BF.svg?style=flat-square)](https://php.net/)
-[![Build Status](https://img.shields.io/travis/sebastianbergmann/phpunit/4.8.svg?style=flat-square)](https://travis-ci.org/sebastianbergmann/phpunit)
-
-## Installation
-
-We distribute a [PHP Archive (PHAR)](https://php.net/phar) that has all required (as well as some optional) dependencies of PHPUnit bundled in a single file:
-
-```bash
-$ wget https://phar.phpunit.de/phpunit.phar
-
-$ chmod +x phpunit.phar
-
-$ mv phpunit.phar /usr/local/bin/phpunit
-```
-
-You can also immediately use the PHAR after you have downloaded it, of course:
-
-```bash
-$ wget https://phar.phpunit.de/phpunit.phar
-
-$ php phpunit.phar
-```
-
-Alternatively, you may use [Composer](https://getcomposer.org/) to download and install PHPUnit as well as its dependencies. Please refer to the [documentation](https://phpunit.de/documentation.html) for details on how to do this.
-
-## Contribute
-
-Please refer to [CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md) for information on how to contribute to PHPUnit and its related projects.
-
-## List of Contributors
-
-Thanks to everyone who has contributed to PHPUnit! You can find a detailed list of contributors on every PHPUnit related package on GitHub. This list shows only the major components:
-
-* [PHPUnit](https://github.com/sebastianbergmann/phpunit/graphs/contributors)
-* [PHP_CodeCoverage](https://github.com/sebastianbergmann/php-code-coverage/graphs/contributors)
-* [PHPUnit_MockObject](https://github.com/sebastianbergmann/phpunit-mock-objects/graphs/contributors)
-
-A very special thanks to everyone who has contributed to the documentation and helps maintain the translations:
-
-* [PHPUnit Documentation](https://github.com/sebastianbergmann/phpunit-documentation/graphs/contributors)
-
diff --git a/vendor/phpunit/phpunit/build.xml b/vendor/phpunit/phpunit/build.xml
deleted file mode 100644
index ef816e6..0000000
--- a/vendor/phpunit/phpunit/build.xml
+++ /dev/null
@@ -1,265 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="phpunit" default="setup">
-    <target name="setup" depends="clean,composer"/>
-
-    <target name="clean" description="Cleanup build artifacts">
-        <delete dir="${basedir}/bin"/>
-        <delete dir="${basedir}/vendor"/>
-        <delete file="${basedir}/composer.lock"/>
-        <delete dir="${basedir}/build/phar"/>
-        <delete>
-            <fileset dir="${basedir}/build">
-                <include name="**/*.phar" />
-                <include name="**/*.phar.asc" />
-            </fileset>
-        </delete>
-    </target>
-
-    <target name="composer" description="Install dependencies with Composer">
-        <tstamp>
-            <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/>
-        </tstamp>
-        <delete>
-            <fileset dir="${basedir}">
-                <include name="composer.phar" />
-                <date datetime="${thirty.days.ago}" when="before"/>
-            </fileset>
-        </delete>
-
-        <get src="https://getcomposer.org/composer.phar" dest="${basedir}/composer.phar" skipexisting="true"/>
-
-        <exec executable="php">
-            <arg value="composer.phar"/>
-            <arg value="install"/>
-        </exec>
-    </target>
-
-    <target name="signed-phar"
-            description="Create signed PHAR archive of PHPUnit and all its dependencies (release)"
-            depends="phar">
-        <exec executable="bash" outputproperty="version">
-            <arg value="-c" />
-            <arg value="${basedir}/phpunit --version | awk 'BEGIN { ORS = &quot;&quot;; } {print $2}'" />
-        </exec>
-
-        <exec executable="gpg" failonerror="true">
-            <arg value="--armor" />
-            <arg value="--detach-sign" />
-            <arg path="${basedir}/build/phpunit-${version}.phar" />
-        </exec>
-    </target>
-
-    <target name="phar"
-            description="Create PHAR archive of PHPUnit and all its dependencies (release)"
-            depends="phar-prepare">
-        <exec executable="bash" outputproperty="version">
-            <arg value="-c" />
-            <arg value="${basedir}/phpunit --version | awk 'BEGIN { ORS = &quot;&quot;; } {print $2}'" />
-        </exec>
-
-        <antcall target="phar-build">
-            <param name="version" value="${version}"/>
-        </antcall>
-    </target>
-
-    <target name="phar-alpha"
-            description="Create PHAR archive of PHPUnit and all its dependencies (alpha)"
-            depends="phar-prepare">
-        <antcall target="phar-build">
-            <param name="version" value="alpha"/>
-        </antcall>
-    </target>
-
-    <target name="phar-beta"
-            description="Create PHAR archive of PHPUnit and all its dependencies (beta)"
-            depends="phar-prepare">
-        <antcall target="phar-build">
-            <param name="version" value="beta"/>
-        </antcall>
-    </target>
-
-    <target name="phar-prepare" depends="clean,composer">
-        <mkdir dir="${basedir}/build/phar"/>
-        <copy file="${basedir}/composer.json" tofile="${basedir}/composer.json.bak"/>
-
-        <exec executable="php">
-            <arg value="composer.phar"/>
-            <arg value="require"/>
-            <arg value="phpunit/dbunit:~1.4"/>
-            <arg value="phpunit/phpunit-selenium:~1.4"/>
-            <arg value="phpunit/php-invoker:~1.1"/>
-        </exec>
-
-        <move file="${basedir}/composer.json.bak" tofile="${basedir}/composer.json"/>
-
-        <exec executable="${basedir}/build/phar-manifest.php" output="${basedir}/build/phar/manifest.txt"/>
-        <copy todir="${basedir}/build/phar" file="${basedir}/build/ca.pem" />
-
-        <copy file="${basedir}/vendor/phpunit/php-code-coverage/LICENSE" tofile="${basedir}/build/phar/php-code-coverage/LICENSE"/>
-        <copy todir="${basedir}/build/phar/php-code-coverage">
-            <fileset dir="${basedir}/vendor/phpunit/php-code-coverage/src">
-                <include name="**/*" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/phpunit/php-file-iterator/LICENSE" tofile="${basedir}/build/phar/php-file-iterator/LICENSE"/>
-        <copy todir="${basedir}/build/phar/php-file-iterator">
-            <fileset dir="${basedir}/vendor/phpunit/php-file-iterator/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/phpunit/php-text-template/LICENSE" tofile="${basedir}/build/phar/php-text-template/LICENSE"/>
-        <copy todir="${basedir}/build/phar/php-text-template">
-            <fileset dir="${basedir}/vendor/phpunit/php-text-template/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/phpunit/php-timer/LICENSE" tofile="${basedir}/build/phar/php-timer/LICENSE"/>
-        <copy todir="${basedir}/build/phar/php-timer">
-            <fileset dir="${basedir}/vendor/phpunit/php-timer/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/phpunit/php-token-stream/LICENSE" tofile="${basedir}/build/phar/php-token-stream/LICENSE"/>
-        <copy todir="${basedir}/build/phar/php-token-stream">
-            <fileset dir="${basedir}/vendor/phpunit/php-token-stream/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/phpunit/phpunit-mock-objects/LICENSE" tofile="${basedir}/build/phar/phpunit-mock-objects/LICENSE"/>
-        <copy todir="${basedir}/build/phar/phpunit-mock-objects">
-            <fileset dir="${basedir}/vendor/phpunit/phpunit-mock-objects/src">
-                <include name="**/*" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/sebastian/comparator/LICENSE" tofile="${basedir}/build/phar/sebastian-comparator/LICENSE"/>
-        <copy todir="${basedir}/build/phar/sebastian-comparator">
-            <fileset dir="${basedir}/vendor/sebastian/comparator/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/sebastian/diff/LICENSE" tofile="${basedir}/build/phar/sebastian-diff/LICENSE"/>
-        <copy todir="${basedir}/build/phar/sebastian-diff">
-            <fileset dir="${basedir}/vendor/sebastian/diff/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/sebastian/environment/LICENSE" tofile="${basedir}/build/phar/sebastian-environment/LICENSE"/>
-        <copy todir="${basedir}/build/phar/sebastian-environment">
-            <fileset dir="${basedir}/vendor/sebastian/environment/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/sebastian/exporter/LICENSE" tofile="${basedir}/build/phar/sebastian-exporter/LICENSE"/>
-        <copy todir="${basedir}/build/phar/sebastian-exporter">
-            <fileset dir="${basedir}/vendor/sebastian/exporter/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/sebastian/recursion-context/LICENSE" tofile="${basedir}/build/phar/sebastian-recursion-context/LICENSE"/>
-        <copy todir="${basedir}/build/phar/sebastian-recursion-context">
-            <fileset dir="${basedir}/vendor/sebastian/recursion-context/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/sebastian/global-state/LICENSE" tofile="${basedir}/build/phar/sebastian-global-state/LICENSE"/>
-        <copy todir="${basedir}/build/phar/sebastian-global-state">
-            <fileset dir="${basedir}/vendor/sebastian/global-state/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/sebastian/version/LICENSE" tofile="${basedir}/build/phar/sebastian-version/LICENSE"/>
-        <copy todir="${basedir}/build/phar/sebastian-version">
-            <fileset dir="${basedir}/vendor/sebastian/version/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/doctrine/instantiator/LICENSE" tofile="${basedir}/build/phar/doctrine-instantiator/LICENSE"/>
-        <copy todir="${basedir}/build/phar/doctrine-instantiator">
-            <fileset dir="${basedir}/vendor/doctrine/instantiator/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/symfony/yaml/LICENSE" tofile="${basedir}/build/phar/symfony/LICENSE"/>
-        <copy todir="${basedir}/build/phar/symfony">
-            <fileset dir="${basedir}/vendor/symfony">
-                <include name="**/*.php" />
-                <exclude name="**/Tests/**" />
-            </fileset>
-        </copy>
-
-        <copy todir="${basedir}/build/phar/dbunit">
-            <fileset dir="${basedir}/vendor/phpunit/dbunit/PHPUnit">
-                <include name="**/*.php" />
-                <exclude name="**/Autoload.*" />
-            </fileset>
-        </copy>
-
-        <copy todir="${basedir}/build/phar/php-invoker">
-            <fileset dir="${basedir}/vendor/phpunit/php-invoker/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy todir="${basedir}/build/phar/phpunit-selenium">
-            <fileset dir="${basedir}/vendor/phpunit/phpunit-selenium/PHPUnit">
-                <include name="**/*.php" />
-                <exclude name="**/Autoload.*" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/phpdocumentor/reflection-docblock/LICENSE" tofile="${basedir}/build/phar/phpdocumentor-reflection-docblock/LICENSE"/>
-        <copy todir="${basedir}/build/phar/phpdocumentor-reflection-docblock">
-            <fileset dir="${basedir}/vendor/phpdocumentor/reflection-docblock/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-
-        <copy file="${basedir}/vendor/phpspec/prophecy/LICENSE" tofile="${basedir}/build/phar/phpspec-prophecy/LICENSE"/>
-        <copy todir="${basedir}/build/phar/phpspec-prophecy">
-            <fileset dir="${basedir}/vendor/phpspec/prophecy/src">
-                <include name="**/*.php" />
-            </fileset>
-        </copy>
-    </target>
-
-    <target name="phar-build">
-        <copy todir="${basedir}/build/phar/phpunit">
-            <fileset dir="${basedir}/src">
-                <include name="**/*.php" />
-                <include name="**/*.tpl*" />
-            </fileset>
-        </copy>
-
-        <exec executable="${basedir}/build/phar-version.php" outputproperty="_version">
-            <arg value="${version}" />
-        </exec>
-
-        <exec executable="phpab">
-            <arg value="--all" />
-            <arg value="--static" />
-            <arg value="--phar" />
-            <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/phar" />
-        </exec>
-
-        <chmod file="${basedir}/build/phpunit-${_version}.phar" perm="ugo+rx"/>
-    </target>
-</project>
-
diff --git a/vendor/phpunit/phpunit/build/ca.pem b/vendor/phpunit/phpunit/build/ca.pem
deleted file mode 100644
index 20585f1..0000000
--- a/vendor/phpunit/phpunit/build/ca.pem
+++ /dev/null
@@ -1,25 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
-MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
-IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
-MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
-FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
-bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
-dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
-H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
-uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
-mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
-a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
-E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
-WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
-VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
-Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
-cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
-IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
-AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
-YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
-6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
-Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
-c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
-mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
------END CERTIFICATE-----
diff --git a/vendor/phpunit/phpunit/build/phar-autoload.php.in b/vendor/phpunit/phpunit/build/phar-autoload.php.in
deleted file mode 100644
index 165f9ba..0000000
--- a/vendor/phpunit/phpunit/build/phar-autoload.php.in
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/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_ROOT__', 'phar://___PHAR___');
-
-Phar::mapPhar('___PHAR___');
-
-___FILELIST___
-
-if ($execute) {
-    if (version_compare('5.3.3', PHP_VERSION, '>')) {
-        fwrite(
-            STDERR,
-            'This version of PHPUnit requires PHP 5.3.3; using the latest version of PHP is highly recommended.' . PHP_EOL
-        );
-
-        die(1);
-    }
-
-    if (isset($_SERVER['argv'][1]) && $_SERVER['argv'][1] == '--manifest') {
-        print file_get_contents(__PHPUNIT_PHAR_ROOT__ . '/phar/manifest.txt');
-        exit;
-    }
-
-    PHPUnit_TextUI_Command::main();
-}
-
-__HALT_COMPILER();
diff --git a/vendor/phpunit/phpunit/build/phar-manifest.php b/vendor/phpunit/phpunit/build/phar-manifest.php
deleted file mode 100755
index 474686b..0000000
--- a/vendor/phpunit/phpunit/build/phar-manifest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env php
-<?php
-print 'phpunit/phpunit: ';
-
-$tag = @exec('git describe --tags 2>&1');
-
-if (strpos($tag, '-') === false && strpos($tag, 'No names found') === false) {
-    print $tag;
-} else {
-    $branch = @exec('git rev-parse --abbrev-ref HEAD');
-    $hash   = @exec('git log -1 --format="%H"');
-    print $branch . '@' . $hash;
-}
-
-print "\n";
-
-$lock = json_decode(file_get_contents(__DIR__ . '/../composer.lock'));
-
-foreach ($lock->packages as $package) {
-    print $package->name . ': ' . $package->version;
-
-    if (!preg_match('/^[v= ]*(([0-9]+)(\\.([0-9]+)(\\.([0-9]+)(-([0-9]+))?(-?([a-zA-Z-+][a-zA-Z0-9\\.\\-:]*)?)?)?)?)$/', $package->version)) {
-        print '@' . $package->source->reference;
-    }
-
-    print "\n";
-}
diff --git a/vendor/phpunit/phpunit/build/phar-version.php b/vendor/phpunit/phpunit/build/phar-version.php
deleted file mode 100755
index 83b8746..0000000
--- a/vendor/phpunit/phpunit/build/phar-version.php
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env php
-<?php
-if (!isset($argv[1])) {
-    exit(1);
-}
-
-if ($argv[1] == 'alpha' || $argv[1] == 'beta') {
-    $version = sprintf('%s-%s', $argv[1], date('Y-m-d'));
-} else {
-    $version = $argv[1];
-}
-
-file_put_contents(
-    __DIR__ . '/phar/phpunit/Runner/Version.php',
-    str_replace(
-        'private static $pharVersion;',
-        'private static $pharVersion = "' . $version . '";',
-        file_get_contents(__DIR__ . '/phar/phpunit/Runner/Version.php')
-    )
-);
-
-print $version;
diff --git a/vendor/phpunit/phpunit/build/travis-ci-fail.xml b/vendor/phpunit/phpunit/build/travis-ci-fail.xml
deleted file mode 100644
index 4586989..0000000
--- a/vendor/phpunit/phpunit/build/travis-ci-fail.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.4/phpunit.xsd"
-         bootstrap="../tests/bootstrap.php"
-         backupGlobals="false"
-         verbose="true">
-  <testsuites>
-    <testsuite name="small">
-      <directory suffix=".phpt">../tests/Fail</directory>
-    </testsuite>
-  </testsuites>
-
-  <php>
-    <const name="PHPUNIT_TESTSUITE" value="true"/>
-  </php>
-</phpunit>
diff --git a/vendor/phpunit/phpunit/composer.json b/vendor/phpunit/phpunit/composer.json
deleted file mode 100644
index 8bff2d1..0000000
--- a/vendor/phpunit/phpunit/composer.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-    "name": "phpunit/phpunit",
-    "description": "The PHP Unit Testing framework.",
-    "type": "library",
-    "keywords": [
-        "phpunit",
-        "xunit",
-        "testing"
-    ],
-    "homepage": "https://phpunit.de/",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sebastian@phpunit.de",
-            "role": "lead"
-        }
-    ],
-    "support": {
-        "issues": "https://github.com/sebastianbergmann/phpunit/issues",
-        "irc": "irc://irc.freenode.net/phpunit"
-    },
-    "require": {
-        "php": ">=5.3.3",
-        "phpunit/php-file-iterator": "~1.4",
-        "phpunit/php-text-template": "~1.2",
-        "phpunit/php-code-coverage": "~2.1",
-        "phpunit/php-timer": ">=1.0.6",
-        "phpunit/phpunit-mock-objects": "~2.3",
-        "phpspec/prophecy": "^1.3.1",
-        "symfony/yaml": "~2.1|~3.0",
-        "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",
-        "ext-dom": "*",
-        "ext-json": "*",
-        "ext-pcre": "*",
-        "ext-reflection": "*",
-        "ext-spl": "*"
-    },
-    "suggest": {
-        "phpunit/php-invoker": "~1.1"
-    },
-    "bin": [
-        "phpunit"
-    ],
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "autoload-dev": {
-        "classmap": [
-            "tests/"
-        ],
-        "files": [
-            "src/Framework/Assert/Functions.php",
-            "tests/_files/CoveredFunction.php"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.8.x-dev"
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/phpdox.xml.dist b/vendor/phpunit/phpunit/phpdox.xml.dist
deleted file mode 100644
index b32db69..0000000
--- a/vendor/phpunit/phpunit/phpdox.xml.dist
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<phpdox xmlns="http://xml.phpdox.net/config">
- <project name="PHPUnit" source="src" workdir="build/phpdox">
-  <collector publiconly="false">
-   <include mask="*.php" />
-  </collector>
-
-  <generator output="build">
-   <enrich base="${basedir}/build/logs">
-    <source type="build" />
-    <source type="git" />
-    <source type="phploc" />
-    <source type="checkstyle" />
-    <source type="pmd" />
-   </enrich>
-
-   <build engine="html" enabled="true" output="api">
-    <file extension="html" />
-   </build>
-  </generator>
- </project>
-</phpdox>
-
diff --git a/vendor/phpunit/phpunit/phpunit b/vendor/phpunit/phpunit/phpunit
deleted file mode 100755
index 8948f6e..0000000
--- a/vendor/phpunit/phpunit/phpunit
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env php
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-if (version_compare('5.3.3', PHP_VERSION, '>')) {
-    fwrite(
-        STDERR,
-        'This version of PHPUnit requires PHP 5.3.3; using the latest version of PHP is highly recommended.' . PHP_EOL
-    );
-
-    die(1);
-}
-
-if (!ini_get('date.timezone')) {
-    ini_set('date.timezone', 'UTC');
-}
-
-foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php') as $file) {
-    if (file_exists($file)) {
-        define('PHPUNIT_COMPOSER_INSTALL', $file);
-
-        break;
-    }
-}
-
-unset($file);
-
-if (!defined('PHPUNIT_COMPOSER_INSTALL')) {
-    fwrite(STDERR,
-        'You need to set up the project dependencies using the following commands:' . PHP_EOL .
-        'wget http://getcomposer.org/composer.phar' . PHP_EOL .
-        'php composer.phar install' . PHP_EOL
-    );
-
-    die(1);
-}
-
-require PHPUNIT_COMPOSER_INSTALL;
-
-PHPUnit_TextUI_Command::main();
diff --git a/vendor/phpunit/phpunit/phpunit.xml.dist b/vendor/phpunit/phpunit/phpunit.xml.dist
deleted file mode 100644
index ad6baa8..0000000
--- a/vendor/phpunit/phpunit/phpunit.xml.dist
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="phpunit.xsd"
-         bootstrap="tests/bootstrap.php"
-         backupGlobals="false"
-         verbose="true">
-  <testsuites>
-    <testsuite name="small">
-      <directory suffix="Test.php">tests/Framework</directory>
-      <directory suffix="Test.php">tests/Extensions</directory>
-      <directory suffix="Test.php">tests/Runner</directory>
-      <directory suffix="Test.php">tests/Util</directory>
-    </testsuite>
-
-    <testsuite name="large">
-      <directory suffix=".phpt">tests/TextUI</directory>
-      <directory suffix=".phpt">tests/Regression</directory>
-    </testsuite>
-  </testsuites>
-
-  <filter>
-    <whitelist processUncoveredFilesFromWhitelist="true">
-      <directory suffix=".php">src</directory>
-      <exclude>
-       <file>src/Framework/Assert/Functions.php</file>
-      </exclude>
-    </whitelist>
-  </filter>
-
-  <php>
-    <const name="PHPUNIT_TESTSUITE" value="true"/>
-  </php>
-</phpunit>
-
diff --git a/vendor/phpunit/phpunit/phpunit.xsd b/vendor/phpunit/phpunit/phpunit.xsd
deleted file mode 100644
index 19e9743..0000000
--- a/vendor/phpunit/phpunit/phpunit.xsd
+++ /dev/null
@@ -1,261 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <xs:annotation>
-    <xs:documentation source="https://phpunit.de/manual/4.8/en/appendixes.configuration.html">
-      This Schema file defines the rules by which the XML configuration file of PHPUnit 4.8 may be structured.
-    </xs:documentation>
-    <xs:appinfo source="http://www.phpunit.de/manual/current/en/appendixes.configuration.html"/>
-  </xs:annotation>
-  <xs:element name="phpunit" type="phpUnitType">
-    <xs:annotation>
-      <xs:documentation>Root Element</xs:documentation>
-    </xs:annotation>
-  </xs:element>
-  <xs:complexType name="filtersType">
-    <xs:choice>
-      <xs:sequence>
-        <xs:element name="blacklist" type="filterType"/>
-        <xs:element name="whitelist" type="whiteListType" minOccurs="0"/>
-      </xs:sequence>
-      <xs:sequence>
-        <xs:element name="whitelist" type="whiteListType"/>
-      </xs:sequence>
-    </xs:choice>
-  </xs:complexType>
-  <xs:complexType name="filterType">
-    <xs:sequence>
-      <xs:group ref="pathGroup"/>
-      <xs:element name="exclude" maxOccurs="unbounded" minOccurs="0">
-        <xs:complexType>
-          <xs:group ref="pathGroup"/>
-        </xs:complexType>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="whiteListType">
-    <xs:complexContent>
-      <xs:extension base="filterType">
-        <xs:attribute name="addUncoveredFilesFromWhitelist" default="false" type="xs:boolean"/>
-        <xs:attribute name="processUncoveredFilesFromWhitelist" default="true" type="xs:boolean"/>
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  <xs:complexType name="groupsType">
-    <xs:choice>
-      <xs:sequence>
-        <xs:element name="include" type="groupType"/>
-        <xs:element name="exclude" type="groupType" minOccurs="0"/>
-      </xs:sequence>
-      <xs:sequence>
-        <xs:element name="exclude" type="groupType"/>
-      </xs:sequence>
-    </xs:choice>
-  </xs:complexType>
-  <xs:complexType name="groupType">
-    <xs:sequence>
-      <xs:element name="group" type="xs:string" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="listenersType">
-    <xs:sequence>
-      <xs:element name="listener" type="objectType" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="objectType">
-    <xs:sequence>
-      <xs:element name="arguments" minOccurs="0">
-        <xs:complexType>
-          <xs:group ref="argumentsGroup"/>
-        </xs:complexType>
-      </xs:element>
-    </xs:sequence>
-    <xs:attribute name="class" type="xs:string" use="required"/>
-    <xs:attribute name="file" type="xs:anyURI"/>
-  </xs:complexType>
-  <xs:complexType name="arrayType">
-    <xs:sequence>
-      <xs:element name="element" type="argumentType" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="argumentType">
-    <xs:group ref="argumentChoice"/>
-    <xs:attribute name="key" use="required"/>
-  </xs:complexType>
-  <xs:group name="argumentsGroup">
-    <xs:sequence>
-      <xs:element name="array" type="arrayType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="integer" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="double" type="xs:double" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="null" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="object" type="objectType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="file" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="directory" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:group name="argumentChoice">
-    <xs:choice>
-      <xs:element name="array" type="arrayType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="integer" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="double" type="xs:double" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="null" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="object" type="objectType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="file" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="directory" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:choice>
-  </xs:group>
-  <xs:complexType name="loggersType">
-    <xs:sequence>
-      <xs:element name="log" type="loggerType" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="loggerType">
-    <xs:attribute name="type">
-      <xs:simpleType>
-        <xs:restriction base="xs:string">
-          <xs:enumeration value="coverage-html"/>
-          <xs:enumeration value="coverage-text"/>
-          <xs:enumeration value="coverage-clover"/>
-          <xs:enumeration value="coverage-crap4j"/>
-          <xs:enumeration value="json"/>
-          <xs:enumeration value="plain"/>
-          <xs:enumeration value="tap"/>
-          <xs:enumeration value="junit"/>
-          <xs:enumeration value="testdox-html"/>
-          <xs:enumeration value="testdox-text"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="target" type="xs:anyURI"/>
-    <xs:attribute name="lowUpperBound" type="xs:nonNegativeInteger" default="35"/>
-    <xs:attribute name="highLowerBound" type="xs:nonNegativeInteger" default="70"/>
-    <xs:attribute name="logIncompleteSkipped" type="xs:boolean" default="false"/>
-    <xs:attribute name="showUncoveredFiles" type="xs:boolean" default="false"/>
-    <xs:attribute name="threshold" type="xs:nonNegativeInteger" default="30"/>
-  </xs:complexType>
-  <xs:group name="pathGroup">
-    <xs:sequence>
-      <xs:element name="directory" type="directoryFilterType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="file" type="fileFilterType" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:complexType name="directoryFilterType">
-    <xs:simpleContent>
-      <xs:extension base="xs:anyURI">
-        <xs:attribute type="xs:string" name="suffix" default="Test.php"/>
-        <xs:attributeGroup ref="phpVersionGroup"/>
-      </xs:extension>
-    </xs:simpleContent>
-  </xs:complexType>
-  <xs:complexType name="fileFilterType">
-    <xs:simpleContent>
-      <xs:extension base="xs:anyURI">
-        <xs:attributeGroup ref="phpVersionGroup"/>
-      </xs:extension>
-    </xs:simpleContent>
-  </xs:complexType>
-  <xs:attributeGroup name="phpVersionGroup">
-    <xs:attribute name="phpVersion" type="xs:string" default="5.3.0"/>
-    <xs:attribute name="phpVersionOperator" type="xs:string" default="&gt;="/>
-  </xs:attributeGroup>
-  <xs:complexType name="phpType">
-    <xs:sequence>
-      <xs:element name="includePath" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="ini" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="const" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="var" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="env" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="post" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="get" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="cookie" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="server" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="files" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="request" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="namedValueType">
-    <xs:attribute name="name" use="required" type="xs:string"/>
-    <xs:attribute name="value" use="required" type="xs:anySimpleType"/>
-  </xs:complexType>
-  <xs:complexType name="phpUnitType">
-    <xs:annotation>
-      <xs:documentation>The main type specifying the document structure</xs:documentation>
-    </xs:annotation>
-    <xs:group ref="configGroup"/>
-    <xs:attributeGroup ref="configAttributeGroup"/>
-  </xs:complexType>
-  <xs:attributeGroup name="configAttributeGroup">
-    <xs:attribute name="backupGlobals" type="xs:boolean" default="true"/>
-    <xs:attribute name="backupStaticAttributes" type="xs:boolean" default="false"/>
-    <xs:attribute name="bootstrap" type="xs:anyURI"/>
-    <xs:attribute name="cacheTokens" type="xs:boolean"/>
-    <xs:attribute name="colors" type="xs:boolean" default="false"/>
-    <xs:attribute name="columns" type="xs:integer" default="80"/>
-    <xs:attribute name="convertErrorsToExceptions" type="xs:boolean" default="true"/>
-    <xs:attribute name="convertNoticesToExceptions" type="xs:boolean" default="true"/>
-    <xs:attribute name="convertWarningsToExceptions" type="xs:boolean" default="true"/>
-    <xs:attribute name="forceCoversAnnotation" type="xs:boolean" default="false"/>
-    <xs:attribute name="mapTestClassNameToCoveredClassName" type="xs:boolean" default="false"/>
-    <xs:attribute name="printerClass" type="xs:string" default="PHPUnit_TextUI_ResultPrinter"/>
-    <xs:attribute name="printerFile" type="xs:anyURI"/>
-    <xs:attribute name="processIsolation" type="xs:boolean" default="false"/>
-    <xs:attribute name="stopOnError" type="xs:boolean" default="false"/>
-    <xs:attribute name="stopOnFailure" type="xs:boolean" default="false"/>
-    <xs:attribute name="stopOnIncomplete" type="xs:boolean" default="false"/>
-    <xs:attribute name="stopOnRisky" type="xs:boolean" default="false"/>
-    <xs:attribute name="stopOnSkipped" type="xs:boolean" default="false"/>
-    <xs:attribute name="beStrictAboutTestsThatDoNotTestAnything" type="xs:boolean" default="false"/>
-    <xs:attribute name="beStrictAboutOutputDuringTests" type="xs:boolean" default="false"/>
-    <xs:attribute name="beStrictAboutTestSize" type="xs:boolean" default="false"/>
-    <xs:attribute name="beStrictAboutTodoAnnotatedTests" type="xs:boolean" default="false"/>
-    <xs:attribute name="beStrictAboutChangesToGlobalState" type="xs:boolean" default="false"/>
-    <xs:attribute name="checkForUnintentionallyCoveredCode" type="xs:boolean" default="false"/>
-    <xs:attribute name="strict" type="xs:boolean" default="false"/>
-    <xs:attribute name="testSuiteLoaderClass" type="xs:string" default="PHPUnit_Runner_StandardTestSuiteLoader"/>
-    <xs:attribute name="testSuiteLoaderFile" type="xs:anyURI"/>
-    <xs:attribute name="timeoutForSmallTests" type="xs:integer" default="1"/>
-    <xs:attribute name="timeoutForMediumTests" type="xs:integer" default="10"/>
-    <xs:attribute name="timeoutForLargeTests" type="xs:integer" default="60"/>
-    <xs:attribute name="verbose" type="xs:boolean" default="false"/>
-    <xs:attribute name="stderr" type="xs:boolean" default="false"/>
-  </xs:attributeGroup>
-  <xs:group name="configGroup">
-    <xs:all>
-      <xs:element ref="testSuiteFacet" minOccurs="0"/>
-      <xs:element name="groups" type="groupsType" minOccurs="0"/>
-      <xs:element name="filter" type="filtersType" minOccurs="0"/>
-      <xs:element name="logging" type="loggersType" minOccurs="0"/>
-      <xs:element name="listeners" type="listenersType" minOccurs="0"/>
-      <xs:element name="php" type="phpType" minOccurs="0"/>
-      <xs:element name="selenium" type="seleniumType" minOccurs="0"/>
-    </xs:all>
-  </xs:group>
-  <xs:complexType name="seleniumType">
-    <xs:sequence>
-      <xs:element name="browser" type="browserType"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="browserType">
-    <xs:attribute name="name" type="xs:string"/>
-    <xs:attribute name="browser" type="xs:string"/>
-    <xs:attribute name="host" type="xs:anyURI"/>
-    <xs:attribute name="port" type="xs:nonNegativeInteger"/>
-    <xs:attribute name="timeout" type="xs:nonNegativeInteger"/>
-  </xs:complexType>
-  <xs:element name="testSuiteFacet" abstract="true"/>
-  <xs:element name="testsuite" type="testSuiteType" substitutionGroup="testSuiteFacet"/>
-  <xs:element name="testsuites" type="testSuitesType" substitutionGroup="testSuiteFacet"/>
-  <xs:complexType name="testSuitesType">
-    <xs:sequence>
-      <xs:element name="testsuite" type="testSuiteType" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-  <xs:complexType name="testSuiteType">
-    <xs:sequence>
-      <xs:group ref="pathGroup"/>
-      <xs:element name="exclude" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:attribute name="name" type="xs:string" use="required"/>
-  </xs:complexType>
-</xs:schema>
diff --git a/vendor/phpunit/phpunit/src/Exception.php b/vendor/phpunit/phpunit/src/Exception.php
deleted file mode 100644
index 480ec93..0000000
--- a/vendor/phpunit/phpunit/src/Exception.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Marker interface for PHPUnit exceptions.
- *
- * @since      Interface available since Release 4.0.0
- */
-interface PHPUnit_Exception
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php b/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php
deleted file mode 100644
index 1bd4f14..0000000
--- a/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * We have a TestSuite object A.
- * In TestSuite object A we have Tests tagged with @group.
- * 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>
- * $suite = new PHPUnit_Extensions_GroupTestSuite($A, array('C', 'D'));
- * </code>
- *
- * @since Class available since Release 3.3.0
- */
-class PHPUnit_Extensions_GroupTestSuite extends PHPUnit_Framework_TestSuite
-{
-    public function __construct(PHPUnit_Framework_TestSuite $suite, array $groups)
-    {
-        $groupSuites = array();
-        $name        = $suite->getName();
-
-        foreach ($groups as $group) {
-            $groupSuites[$group] = new PHPUnit_Framework_TestSuite($name . ' - ' . $group);
-            $this->addTest($groupSuites[$group]);
-        }
-
-        $tests = new RecursiveIteratorIterator(
-            new PHPUnit_Util_TestSuiteIterator($suite),
-            RecursiveIteratorIterator::LEAVES_ONLY
-        );
-
-        foreach ($tests as $test) {
-            if ($test instanceof PHPUnit_Framework_TestCase) {
-                $testGroups = PHPUnit_Util_Test::getGroups(
-                    get_class($test),
-                    $test->getName(false)
-                );
-
-                foreach ($groups as $group) {
-                    foreach ($testGroups as $testGroup) {
-                        if ($group == $testGroup) {
-                            $groupSuites[$group]->addTest($test);
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php b/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php
deleted file mode 100644
index 8ebb908..0000000
--- a/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php
+++ /dev/null
@@ -1,236 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Runner for PHPT test cases.
- *
- * @since Class available since Release 3.1.4
- */
-class PHPUnit_Extensions_PhptTestCase implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing
-{
-    /**
-     * @var string
-     */
-    private $filename;
-
-    /**
-     * @var array
-     */
-    private $settings = array(
-        'allow_url_fopen=1',
-        'auto_append_file=',
-        'auto_prepend_file=',
-        'disable_functions=',
-        'display_errors=1',
-        'docref_root=',
-        'docref_ext=.html',
-        'error_append_string=',
-        'error_prepend_string=',
-        'error_reporting=-1',
-        'html_errors=0',
-        'log_errors=0',
-        'magic_quotes_runtime=0',
-        'output_handler=',
-        'open_basedir=',
-        'output_buffering=Off',
-        'report_memleaks=0',
-        'report_zend_debug=0',
-        'safe_mode=0',
-        'track_errors=1',
-        'xdebug.default_enable=0'
-    );
-
-    /**
-     * Constructs a test case with the given filename.
-     *
-     * @param  string                      $filename
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function __construct($filename)
-    {
-        if (!is_string($filename)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_file($filename)) {
-            throw new PHPUnit_Framework_Exception(
-                sprintf(
-                    'File "%s" does not exist.',
-                    $filename
-                )
-            );
-        }
-
-        $this->filename = $filename;
-    }
-
-    /**
-     * Counts the number of test cases executed by run(TestResult result).
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return 1;
-    }
-
-    /**
-     * Runs a test and collects its result in a TestResult instance.
-     *
-     * @param  PHPUnit_Framework_TestResult $result
-     * @return PHPUnit_Framework_TestResult
-     */
-    public function run(PHPUnit_Framework_TestResult $result = null)
-    {
-        $sections = $this->parse();
-        $code     = $this->render($sections['FILE']);
-
-        if ($result === null) {
-            $result = new PHPUnit_Framework_TestResult;
-        }
-
-        $php      = PHPUnit_Util_PHP::factory();
-        $skip     = false;
-        $time     = 0;
-        $settings = $this->settings;
-
-        $result->startTest($this);
-
-        if (isset($sections['INI'])) {
-            $settings = array_merge($settings, $this->parseIniSection($sections['INI']));
-        }
-
-        if (isset($sections['SKIPIF'])) {
-            $jobResult = $php->runJob($sections['SKIPIF'], $settings);
-
-            if (!strncasecmp('skip', ltrim($jobResult['stdout']), 4)) {
-                if (preg_match('/^\s*skip\s*(.+)\s*/i', $jobResult['stdout'], $message)) {
-                    $message = substr($message[1], 2);
-                } else {
-                    $message = '';
-                }
-
-                $result->addFailure($this, new PHPUnit_Framework_SkippedTestError($message), 0);
-
-                $skip = true;
-            }
-        }
-
-        if (!$skip) {
-            PHP_Timer::start();
-            $jobResult = $php->runJob($code, $settings);
-            $time      = PHP_Timer::stop();
-
-            if (isset($sections['EXPECT'])) {
-                $assertion = 'assertEquals';
-                $expected  = $sections['EXPECT'];
-            } else {
-                $assertion = 'assertStringMatchesFormat';
-                $expected  = $sections['EXPECTF'];
-            }
-
-            $output   = preg_replace('/\r\n/', "\n", trim($jobResult['stdout']));
-            $expected = preg_replace('/\r\n/', "\n", trim($expected));
-
-            try {
-                PHPUnit_Framework_Assert::$assertion($expected, $output);
-            } catch (PHPUnit_Framework_AssertionFailedError $e) {
-                $result->addFailure($this, $e, $time);
-            } catch (Throwable $t) {
-                $result->addError($this, $t, $time);
-            } catch (Exception $e) {
-                $result->addError($this, $e, $time);
-            }
-        }
-
-        $result->endTest($this, $time);
-
-        return $result;
-    }
-
-    /**
-     * Returns the name of the test case.
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->toString();
-    }
-
-    /**
-     * Returns a string representation of the test case.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return $this->filename;
-    }
-
-    /**
-     * @return array
-     * @throws PHPUnit_Framework_Exception
-     */
-    private function parse()
-    {
-        $sections = array();
-        $section  = '';
-
-        foreach (file($this->filename) as $line) {
-            if (preg_match('/^--([_A-Z]+)--/', $line, $result)) {
-                $section            = $result[1];
-                $sections[$section] = '';
-                continue;
-            } elseif (empty($section)) {
-                throw new PHPUnit_Framework_Exception('Invalid PHPT file');
-            }
-
-            $sections[$section] .= $line;
-        }
-
-        if (!isset($sections['FILE']) ||
-            (!isset($sections['EXPECT']) && !isset($sections['EXPECTF']))) {
-            throw new PHPUnit_Framework_Exception('Invalid PHPT file');
-        }
-
-        return $sections;
-    }
-
-    /**
-     * @param  string $code
-     * @return string
-     */
-    private function render($code)
-    {
-        return str_replace(
-            array(
-            '__DIR__',
-            '__FILE__'
-            ),
-            array(
-            "'" . dirname($this->filename) . "'",
-            "'" . $this->filename . "'"
-            ),
-            $code
-        );
-    }
-
-    /**
-     * Parse --INI-- section key value pairs and return as array.
-     *
-     * @param string
-     * @return array
-     */
-    protected function parseIniSection($content)
-    {
-        return preg_split('/\n|\r/', $content, -1, PREG_SPLIT_NO_EMPTY);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php b/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php
deleted file mode 100644
index 8959cfc..0000000
--- a/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Suite for .phpt test cases.
- *
- * @since Class available since Release 3.1.4
- */
-class PHPUnit_Extensions_PhptTestSuite extends PHPUnit_Framework_TestSuite
-{
-    /**
-     * Constructs a new TestSuite for .phpt test cases.
-     *
-     * @param  string                      $directory
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function __construct($directory)
-    {
-        if (is_string($directory) && is_dir($directory)) {
-            $this->setName($directory);
-
-            $facade = new File_Iterator_Facade;
-            $files  = $facade->getFilesAsArray($directory, '.phpt');
-
-            foreach ($files as $file) {
-                $this->addTestFile($file);
-            }
-        } else {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'directory name');
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php b/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php
deleted file mode 100644
index d98afd0..0000000
--- a/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A Decorator that runs a test repeatedly.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Extensions_RepeatedTest extends PHPUnit_Extensions_TestDecorator
-{
-    /**
-     * @var bool
-     */
-    protected $processIsolation = false;
-
-    /**
-     * @var int
-     */
-    protected $timesRepeat = 1;
-
-    /**
-     * @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)
-    {
-        parent::__construct($test);
-
-        if (is_integer($timesRepeat) &&
-            $timesRepeat >= 0) {
-            $this->timesRepeat = $timesRepeat;
-        } else {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                2,
-                'positive integer'
-            );
-        }
-
-        $this->processIsolation = $processIsolation;
-    }
-
-    /**
-     * Counts the number of test cases that
-     * will be run by this test.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return $this->timesRepeat * count($this->test);
-    }
-
-    /**
-     * Runs the decorated test and collects the
-     * result in a TestResult.
-     *
-     * @param  PHPUnit_Framework_TestResult $result
-     * @return PHPUnit_Framework_TestResult
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function run(PHPUnit_Framework_TestResult $result = null)
-    {
-        if ($result === null) {
-            $result = $this->createResult();
-        }
-
-        //@codingStandardsIgnoreStart
-        for ($i = 0; $i < $this->timesRepeat && !$result->shouldStop(); $i++) {
-            //@codingStandardsIgnoreEnd
-            if ($this->test instanceof PHPUnit_Framework_TestSuite) {
-                $this->test->setRunTestInSeparateProcess($this->processIsolation);
-            }
-            $this->test->run($result);
-        }
-
-        return $result;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php b/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php
deleted file mode 100644
index 3a50988..0000000
--- a/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A Decorator for Tests.
- *
- * Use TestDecorator as the base class for defining new
- * test decorators. Test decorator subclasses can be introduced
- * to add behaviour before or after a test is run.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Extensions_TestDecorator extends PHPUnit_Framework_Assert implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing
-{
-    /**
-     * The Test to be decorated.
-     *
-     * @var object
-     */
-    protected $test = null;
-
-    /**
-     * Constructor.
-     *
-     * @param PHPUnit_Framework_Test $test
-     */
-    public function __construct(PHPUnit_Framework_Test $test)
-    {
-        $this->test = $test;
-    }
-
-    /**
-     * Returns a string representation of the test.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return $this->test->toString();
-    }
-
-    /**
-     * Runs the test and collects the
-     * result in a TestResult.
-     *
-     * @param PHPUnit_Framework_TestResult $result
-     */
-    public function basicRun(PHPUnit_Framework_TestResult $result)
-    {
-        $this->test->run($result);
-    }
-
-    /**
-     * Counts the number of test cases that
-     * will be run by this test.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return count($this->test);
-    }
-
-    /**
-     * Creates a default TestResult object.
-     *
-     * @return PHPUnit_Framework_TestResult
-     */
-    protected function createResult()
-    {
-        return new PHPUnit_Framework_TestResult;
-    }
-
-    /**
-     * Returns the test to be run.
-     *
-     * @return PHPUnit_Framework_Test
-     */
-    public function getTest()
-    {
-        return $this->test;
-    }
-
-    /**
-     * Runs the decorated test and collects the
-     * result in a TestResult.
-     *
-     * @param  PHPUnit_Framework_TestResult $result
-     * @return PHPUnit_Framework_TestResult
-     */
-    public function run(PHPUnit_Framework_TestResult $result = null)
-    {
-        if ($result === null) {
-            $result = $this->createResult();
-        }
-
-        $this->basicRun($result);
-
-        return $result;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Extensions/TicketListener.php b/vendor/phpunit/phpunit/src/Extensions/TicketListener.php
deleted file mode 100644
index 5148306..0000000
--- a/vendor/phpunit/phpunit/src/Extensions/TicketListener.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Base class for test listeners that interact with an issue tracker.
- *
- * @since Class available since Release 3.4.0
- */
-abstract class PHPUnit_Extensions_TicketListener implements PHPUnit_Framework_TestListener
-{
-    /**
-     * @var array
-     */
-    protected $ticketCounts = array();
-
-    /**
-     * @var bool
-     */
-    protected $ran = false;
-
-    /**
-     * An error occurred.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-    }
-
-    /**
-     * A failure occurred.
-     *
-     * @param PHPUnit_Framework_Test                 $test
-     * @param PHPUnit_Framework_AssertionFailedError $e
-     * @param float                                  $time
-     */
-    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
-    {
-    }
-
-    /**
-     * Incomplete test.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-    }
-
-    /**
-     * Risky test.
-     *
-     * @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)
-    {
-    }
-
-    /**
-     * Skipped test.
-     *
-     * @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)
-    {
-    }
-
-    /**
-     * A test suite started.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     * @since  Method available since Release 2.2.0
-     */
-    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)
-    {
-    }
-
-    /**
-     * A test started.
-     *
-     * @param PHPUnit_Framework_Test $test
-     */
-    public function startTest(PHPUnit_Framework_Test $test)
-    {
-        if (!$test instanceof PHPUnit_Framework_Warning) {
-            if ($this->ran) {
-                return;
-            }
-
-            $name    = $test->getName(false);
-            $tickets = PHPUnit_Util_Test::getTickets(get_class($test), $name);
-
-            foreach ($tickets as $ticket) {
-                $this->ticketCounts[$ticket][$name] = 1;
-            }
-
-            $this->ran = true;
-        }
-    }
-
-    /**
-     * A test ended.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param float                  $time
-     */
-    public function endTest(PHPUnit_Framework_Test $test, $time)
-    {
-        if (!$test instanceof PHPUnit_Framework_Warning) {
-            if ($test->getStatus() == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) {
-                $ifStatus   = array('assigned', 'new', 'reopened');
-                $newStatus  = 'closed';
-                $message    = 'Automatically closed by PHPUnit (test passed).';
-                $resolution = 'fixed';
-                $cumulative = true;
-            } elseif ($test->getStatus() == PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE) {
-                $ifStatus   = array('closed');
-                $newStatus  = 'reopened';
-                $message    = 'Automatically reopened by PHPUnit (test failed).';
-                $resolution = '';
-                $cumulative = false;
-            } else {
-                return;
-            }
-
-            $name    = $test->getName(false);
-            $tickets = PHPUnit_Util_Test::getTickets(get_class($test), $name);
-
-            foreach ($tickets as $ticket) {
-                // Remove this test from the totals (if it passed).
-                if ($test->getStatus() == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) {
-                    unset($this->ticketCounts[$ticket][$name]);
-                }
-
-                // Only close tickets if ALL referenced cases pass
-                // but reopen tickets if a single test fails.
-                if ($cumulative) {
-                    // Determine number of to-pass tests:
-                    if (count($this->ticketCounts[$ticket]) > 0) {
-                        // There exist remaining test cases with this reference.
-                        $adjustTicket = false;
-                    } else {
-                        // No remaining tickets, go ahead and adjust.
-                        $adjustTicket = true;
-                    }
-                } else {
-                    $adjustTicket = true;
-                }
-
-                $ticketInfo = $this->getTicketInfo($ticket);
-
-                if ($adjustTicket && in_array($ticketInfo['status'], $ifStatus)) {
-                    $this->updateTicket($ticket, $newStatus, $message, $resolution);
-                }
-            }
-        }
-    }
-
-    /**
-     * @param  mixed $ticketId
-     * @return mixed
-     */
-    abstract protected function getTicketInfo($ticketId = null);
-
-    /**
-     * @param string $ticketId
-     * @param string $newStatus
-     * @param string $message
-     * @param string $resolution
-     */
-    abstract protected function updateTicket($ticketId, $newStatus, $message, $resolution);
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Assert.php b/vendor/phpunit/phpunit/src/Framework/Assert.php
deleted file mode 100644
index 4da7cff..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Assert.php
+++ /dev/null
@@ -1,3021 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A set of assert methods.
- *
- * @since Class available since Release 2.0.0
- */
-abstract class PHPUnit_Framework_Assert
-{
-    /**
-     * @var int
-     */
-    private static $count = 0;
-
-    /**
-     * Asserts that an array has a specified key.
-     *
-     * @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 = '')
-    {
-        if (!(is_integer($key) || is_string($key))) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                1,
-                'integer or string'
-            );
-        }
-
-        if (!(is_array($array) || $array instanceof ArrayAccess)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                2,
-                'array or ArrayAccess'
-            );
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_ArrayHasKey($key);
-
-        self::assertThat($array, $constraint, $message);
-    }
-
-    /**
-     * Asserts that an array has a specified subset.
-     *
-     * @param array|ArrayAccess $subset
-     * @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 = '')
-    {
-        if (!is_array($subset)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                1,
-                'array or ArrayAccess'
-            );
-        }
-
-        if (!is_array($array)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                2,
-                'array or ArrayAccess'
-            );
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_ArraySubset($subset, $strict);
-
-        self::assertThat($array, $constraint, $message);
-    }
-
-    /**
-     * Asserts that an array does not have a specified key.
-     *
-     * @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 = '')
-    {
-        if (!(is_integer($key) || is_string($key))) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                1,
-                'integer or string'
-            );
-        }
-
-        if (!(is_array($array) || $array instanceof ArrayAccess)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                2,
-                'array or ArrayAccess'
-            );
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_ArrayHasKey($key)
-        );
-
-        self::assertThat($array, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a haystack contains a needle.
-     *
-     * @param mixed  $needle
-     * @param mixed  $haystack
-     * @param string $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)
-    {
-        if (is_array($haystack) ||
-            is_object($haystack) && $haystack instanceof Traversable) {
-            $constraint = new PHPUnit_Framework_Constraint_TraversableContains(
-                $needle,
-                $checkForObjectIdentity,
-                $checkForNonObjectIdentity
-            );
-        } elseif (is_string($haystack)) {
-            if (!is_string($needle)) {
-                throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                    1,
-                    'string'
-                );
-            }
-
-            $constraint = new PHPUnit_Framework_Constraint_StringContains(
-                $needle,
-                $ignoreCase
-            );
-        } else {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                2,
-                'array, traversable or string'
-            );
-        }
-
-        self::assertThat($haystack, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a haystack that is stored in a static attribute of a class
-     * or an attribute of an object contains a needle.
-     *
-     * @param mixed  $needle
-     * @param string $haystackAttributeName
-     * @param mixed  $haystackClassOrObject
-     * @param string $message
-     * @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)
-    {
-        self::assertContains(
-            $needle,
-            self::readAttribute($haystackClassOrObject, $haystackAttributeName),
-            $message,
-            $ignoreCase,
-            $checkForObjectIdentity,
-            $checkForNonObjectIdentity
-        );
-    }
-
-    /**
-     * Asserts that a haystack does not contain a needle.
-     *
-     * @param mixed  $needle
-     * @param mixed  $haystack
-     * @param string $message
-     * @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)
-    {
-        if (is_array($haystack) ||
-            is_object($haystack) && $haystack instanceof Traversable) {
-            $constraint = new PHPUnit_Framework_Constraint_Not(
-                new PHPUnit_Framework_Constraint_TraversableContains(
-                    $needle,
-                    $checkForObjectIdentity,
-                    $checkForNonObjectIdentity
-                )
-            );
-        } elseif (is_string($haystack)) {
-            if (!is_string($needle)) {
-                throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                    1,
-                    'string'
-                );
-            }
-
-            $constraint = new PHPUnit_Framework_Constraint_Not(
-                new PHPUnit_Framework_Constraint_StringContains(
-                    $needle,
-                    $ignoreCase
-                )
-            );
-        } else {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                2,
-                'array, traversable or string'
-            );
-        }
-
-        self::assertThat($haystack, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a haystack that is stored in a static attribute of a class
-     * or an attribute of an object does not contain a needle.
-     *
-     * @param mixed  $needle
-     * @param string $haystackAttributeName
-     * @param mixed  $haystackClassOrObject
-     * @param string $message
-     * @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)
-    {
-        self::assertNotContains(
-            $needle,
-            self::readAttribute($haystackClassOrObject, $haystackAttributeName),
-            $message,
-            $ignoreCase,
-            $checkForObjectIdentity,
-            $checkForNonObjectIdentity
-        );
-    }
-
-    /**
-     * Asserts that a haystack contains only values of a given type.
-     *
-     * @param string $type
-     * @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 = '')
-    {
-        if (!(is_array($haystack) ||
-            is_object($haystack) && $haystack instanceof Traversable)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                2,
-                'array or traversable'
-            );
-        }
-
-        if ($isNativeType == null) {
-            $isNativeType = PHPUnit_Util_Type::isType($type);
-        }
-
-        self::assertThat(
-            $haystack,
-            new PHPUnit_Framework_Constraint_TraversableContainsOnly(
-                $type,
-                $isNativeType
-            ),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a haystack contains only instances of a given classname
-     *
-     * @param string            $classname
-     * @param array|Traversable $haystack
-     * @param string            $message
-     */
-    public static function assertContainsOnlyInstancesOf($classname, $haystack, $message = '')
-    {
-        if (!(is_array($haystack) ||
-            is_object($haystack) && $haystack instanceof Traversable)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                2,
-                'array or traversable'
-            );
-        }
-
-        self::assertThat(
-            $haystack,
-            new PHPUnit_Framework_Constraint_TraversableContainsOnly(
-                $classname,
-                false
-            ),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a haystack that is stored in a static attribute of a class
-     * or an attribute of an object contains only values of a given type.
-     *
-     * @param string $type
-     * @param string $haystackAttributeName
-     * @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 = '')
-    {
-        self::assertContainsOnly(
-            $type,
-            self::readAttribute($haystackClassOrObject, $haystackAttributeName),
-            $isNativeType,
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a haystack does not contain only values of a given type.
-     *
-     * @param string $type
-     * @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 = '')
-    {
-        if (!(is_array($haystack) ||
-            is_object($haystack) && $haystack instanceof Traversable)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                2,
-                'array or traversable'
-            );
-        }
-
-        if ($isNativeType == null) {
-            $isNativeType = PHPUnit_Util_Type::isType($type);
-        }
-
-        self::assertThat(
-            $haystack,
-            new PHPUnit_Framework_Constraint_Not(
-                new PHPUnit_Framework_Constraint_TraversableContainsOnly(
-                    $type,
-                    $isNativeType
-                )
-            ),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a haystack that is stored in a static attribute of a class
-     * or an attribute of an object does not contain only values of a given
-     * type.
-     *
-     * @param string $type
-     * @param string $haystackAttributeName
-     * @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 = '')
-    {
-        self::assertNotContainsOnly(
-            $type,
-            self::readAttribute($haystackClassOrObject, $haystackAttributeName),
-            $isNativeType,
-            $message
-        );
-    }
-
-    /**
-     * Asserts the number of elements of an array, Countable or Traversable.
-     *
-     * @param int    $expectedCount
-     * @param mixed  $haystack
-     * @param string $message
-     */
-    public static function assertCount($expectedCount, $haystack, $message = '')
-    {
-        if (!is_int($expectedCount)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer');
-        }
-
-        if (!$haystack instanceof Countable &&
-            !$haystack instanceof Traversable &&
-            !is_array($haystack)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'countable or traversable');
-        }
-
-        self::assertThat(
-            $haystack,
-            new PHPUnit_Framework_Constraint_Count($expectedCount),
-            $message
-        );
-    }
-
-    /**
-     * Asserts the number of elements of an array, Countable or Traversable
-     * that is stored in an attribute.
-     *
-     * @param int    $expectedCount
-     * @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 = '')
-    {
-        self::assertCount(
-            $expectedCount,
-            self::readAttribute($haystackClassOrObject, $haystackAttributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts the number of elements of an array, Countable or Traversable.
-     *
-     * @param int    $expectedCount
-     * @param mixed  $haystack
-     * @param string $message
-     */
-    public static function assertNotCount($expectedCount, $haystack, $message = '')
-    {
-        if (!is_int($expectedCount)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer');
-        }
-
-        if (!$haystack instanceof Countable &&
-            !$haystack instanceof Traversable &&
-            !is_array($haystack)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'countable or traversable');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_Count($expectedCount)
-        );
-
-        self::assertThat($haystack, $constraint, $message);
-    }
-
-    /**
-     * Asserts the number of elements of an array, Countable or Traversable
-     * that is stored in an attribute.
-     *
-     * @param int    $expectedCount
-     * @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 = '')
-    {
-        self::assertNotCount(
-            $expectedCount,
-            self::readAttribute($haystackClassOrObject, $haystackAttributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that two variables are equal.
-     *
-     * @param mixed  $expected
-     * @param mixed  $actual
-     * @param string $message
-     * @param float  $delta
-     * @param int    $maxDepth
-     * @param bool   $canonicalize
-     * @param bool   $ignoreCase
-     */
-    public static function assertEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
-    {
-        $constraint = new PHPUnit_Framework_Constraint_IsEqual(
-            $expected,
-            $delta,
-            $maxDepth,
-            $canonicalize,
-            $ignoreCase
-        );
-
-        self::assertThat($actual, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a variable is equal to an attribute of an object.
-     *
-     * @param mixed  $expected
-     * @param string $actualAttributeName
-     * @param string $actualClassOrObject
-     * @param string $message
-     * @param float  $delta
-     * @param int    $maxDepth
-     * @param bool   $canonicalize
-     * @param bool   $ignoreCase
-     */
-    public static function assertAttributeEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
-    {
-        self::assertEquals(
-            $expected,
-            self::readAttribute($actualClassOrObject, $actualAttributeName),
-            $message,
-            $delta,
-            $maxDepth,
-            $canonicalize,
-            $ignoreCase
-        );
-    }
-
-    /**
-     * Asserts that two variables are not equal.
-     *
-     * @param mixed  $expected
-     * @param mixed  $actual
-     * @param string $message
-     * @param float  $delta
-     * @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)
-    {
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_IsEqual(
-                $expected,
-                $delta,
-                $maxDepth,
-                $canonicalize,
-                $ignoreCase
-            )
-        );
-
-        self::assertThat($actual, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a variable is not equal to an attribute of an object.
-     *
-     * @param mixed  $expected
-     * @param string $actualAttributeName
-     * @param string $actualClassOrObject
-     * @param string $message
-     * @param float  $delta
-     * @param int    $maxDepth
-     * @param bool   $canonicalize
-     * @param bool   $ignoreCase
-     */
-    public static function assertAttributeNotEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
-    {
-        self::assertNotEquals(
-            $expected,
-            self::readAttribute($actualClassOrObject, $actualAttributeName),
-            $message,
-            $delta,
-            $maxDepth,
-            $canonicalize,
-            $ignoreCase
-        );
-    }
-
-    /**
-     * Asserts that a variable is empty.
-     *
-     * @param  mixed                                  $actual
-     * @param  string                                 $message
-     * @throws PHPUnit_Framework_AssertionFailedError
-     */
-    public static function assertEmpty($actual, $message = '')
-    {
-        self::assertThat($actual, self::isEmpty(), $message);
-    }
-
-    /**
-     * Asserts that a static attribute of a class or an attribute of an object
-     * is empty.
-     *
-     * @param string $haystackAttributeName
-     * @param mixed  $haystackClassOrObject
-     * @param string $message
-     * @since Method available since Release 3.5.0
-     */
-    public static function assertAttributeEmpty($haystackAttributeName, $haystackClassOrObject, $message = '')
-    {
-        self::assertEmpty(
-            self::readAttribute($haystackClassOrObject, $haystackAttributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a variable is not empty.
-     *
-     * @param  mixed                                  $actual
-     * @param  string                                 $message
-     * @throws PHPUnit_Framework_AssertionFailedError
-     */
-    public static function assertNotEmpty($actual, $message = '')
-    {
-        self::assertThat($actual, self::logicalNot(self::isEmpty()), $message);
-    }
-
-    /**
-     * Asserts that a static attribute of a class or an attribute of an object
-     * is not empty.
-     *
-     * @param string $haystackAttributeName
-     * @param mixed  $haystackClassOrObject
-     * @param string $message
-     * @since Method available since Release 3.5.0
-     */
-    public static function assertAttributeNotEmpty($haystackAttributeName, $haystackClassOrObject, $message = '')
-    {
-        self::assertNotEmpty(
-            self::readAttribute($haystackClassOrObject, $haystackAttributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a value is greater than another value.
-     *
-     * @param mixed  $expected
-     * @param mixed  $actual
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertGreaterThan($expected, $actual, $message = '')
-    {
-        self::assertThat($actual, self::greaterThan($expected), $message);
-    }
-
-    /**
-     * Asserts that an attribute is greater than another value.
-     *
-     * @param mixed  $expected
-     * @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 = '')
-    {
-        self::assertGreaterThan(
-            $expected,
-            self::readAttribute($actualClassOrObject, $actualAttributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a value is greater than or equal to another value.
-     *
-     * @param mixed  $expected
-     * @param mixed  $actual
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertGreaterThanOrEqual($expected, $actual, $message = '')
-    {
-        self::assertThat(
-            $actual,
-            self::greaterThanOrEqual($expected),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that an attribute is greater than or equal to another value.
-     *
-     * @param mixed  $expected
-     * @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 = '')
-    {
-        self::assertGreaterThanOrEqual(
-            $expected,
-            self::readAttribute($actualClassOrObject, $actualAttributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a value is smaller than another value.
-     *
-     * @param mixed  $expected
-     * @param mixed  $actual
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertLessThan($expected, $actual, $message = '')
-    {
-        self::assertThat($actual, self::lessThan($expected), $message);
-    }
-
-    /**
-     * Asserts that an attribute is smaller than another value.
-     *
-     * @param mixed  $expected
-     * @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 = '')
-    {
-        self::assertLessThan(
-            $expected,
-            self::readAttribute($actualClassOrObject, $actualAttributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a value is smaller than or equal to another value.
-     *
-     * @param mixed  $expected
-     * @param mixed  $actual
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertLessThanOrEqual($expected, $actual, $message = '')
-    {
-        self::assertThat($actual, self::lessThanOrEqual($expected), $message);
-    }
-
-    /**
-     * Asserts that an attribute is smaller than or equal to another value.
-     *
-     * @param mixed  $expected
-     * @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 = '')
-    {
-        self::assertLessThanOrEqual(
-            $expected,
-            self::readAttribute($actualClassOrObject, $actualAttributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that the contents of one file is equal to the contents of another
-     * file.
-     *
-     * @param string $expected
-     * @param string $actual
-     * @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)
-    {
-        self::assertFileExists($expected, $message);
-        self::assertFileExists($actual, $message);
-
-        self::assertEquals(
-            file_get_contents($expected),
-            file_get_contents($actual),
-            $message,
-            0,
-            10,
-            $canonicalize,
-            $ignoreCase
-        );
-    }
-
-    /**
-     * Asserts that the contents of one file is not equal to the contents of
-     * another file.
-     *
-     * @param string $expected
-     * @param string $actual
-     * @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)
-    {
-        self::assertFileExists($expected, $message);
-        self::assertFileExists($actual, $message);
-
-        self::assertNotEquals(
-            file_get_contents($expected),
-            file_get_contents($actual),
-            $message,
-            0,
-            10,
-            $canonicalize,
-            $ignoreCase
-        );
-    }
-
-    /**
-     * Asserts that the contents of a string is equal
-     * to the contents of a file.
-     *
-     * @param string $expectedFile
-     * @param string $actualString
-     * @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)
-    {
-        self::assertFileExists($expectedFile, $message);
-
-        self::assertEquals(
-            file_get_contents($expectedFile),
-            $actualString,
-            $message,
-            0,
-            10,
-            $canonicalize,
-            $ignoreCase
-        );
-    }
-
-    /**
-     * Asserts that the contents of a string is not equal
-     * to the contents of a file.
-     *
-     * @param string $expectedFile
-     * @param string $actualString
-     * @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)
-    {
-        self::assertFileExists($expectedFile, $message);
-
-        self::assertNotEquals(
-            file_get_contents($expectedFile),
-            $actualString,
-            $message,
-            0,
-            10,
-            $canonicalize,
-            $ignoreCase
-        );
-    }
-
-    /**
-     * Asserts that a file exists.
-     *
-     * @param string $filename
-     * @param string $message
-     * @since  Method available since Release 3.0.0
-     */
-    public static function assertFileExists($filename, $message = '')
-    {
-        if (!is_string($filename)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_FileExists;
-
-        self::assertThat($filename, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a file does not exist.
-     *
-     * @param string $filename
-     * @param string $message
-     * @since  Method available since Release 3.0.0
-     */
-    public static function assertFileNotExists($filename, $message = '')
-    {
-        if (!is_string($filename)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_FileExists
-        );
-
-        self::assertThat($filename, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a condition is true.
-     *
-     * @param  bool                                   $condition
-     * @param  string                                 $message
-     * @throws PHPUnit_Framework_AssertionFailedError
-     */
-    public static function assertTrue($condition, $message = '')
-    {
-        self::assertThat($condition, self::isTrue(), $message);
-    }
-
-    /**
-     * Asserts that a condition is not true.
-     *
-     * @param  bool                                   $condition
-     * @param  string                                 $message
-     * @throws PHPUnit_Framework_AssertionFailedError
-     */
-    public static function assertNotTrue($condition, $message = '')
-    {
-        self::assertThat($condition, self::logicalNot(self::isTrue()), $message);
-    }
-
-    /**
-     * Asserts that a condition is false.
-     *
-     * @param  bool                                   $condition
-     * @param  string                                 $message
-     * @throws PHPUnit_Framework_AssertionFailedError
-     */
-    public static function assertFalse($condition, $message = '')
-    {
-        self::assertThat($condition, self::isFalse(), $message);
-    }
-
-    /**
-     * Asserts that a condition is not false.
-     *
-     * @param  bool                                   $condition
-     * @param  string                                 $message
-     * @throws PHPUnit_Framework_AssertionFailedError
-     */
-    public static function assertNotFalse($condition, $message = '')
-    {
-        self::assertThat($condition, self::logicalNot(self::isFalse()), $message);
-    }
-
-    /**
-     * Asserts that a variable is not null.
-     *
-     * @param mixed  $actual
-     * @param string $message
-     */
-    public static function assertNotNull($actual, $message = '')
-    {
-        self::assertThat($actual, self::logicalNot(self::isNull()), $message);
-    }
-
-    /**
-     * Asserts that a variable is null.
-     *
-     * @param mixed  $actual
-     * @param string $message
-     */
-    public static function assertNull($actual, $message = '')
-    {
-        self::assertThat($actual, self::isNull(), $message);
-    }
-
-    /**
-     * Asserts that a class has a specified attribute.
-     *
-     * @param string $attributeName
-     * @param string $className
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertClassHasAttribute($attributeName, $className, $message = '')
-    {
-        if (!is_string($attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name');
-        }
-
-        if (!is_string($className) || !class_exists($className)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className);
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_ClassHasAttribute(
-            $attributeName
-        );
-
-        self::assertThat($className, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a class does not have a specified attribute.
-     *
-     * @param string $attributeName
-     * @param string $className
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertClassNotHasAttribute($attributeName, $className, $message = '')
-    {
-        if (!is_string($attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name');
-        }
-
-        if (!is_string($className) || !class_exists($className)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className);
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_ClassHasAttribute($attributeName)
-        );
-
-        self::assertThat($className, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a class has a specified static attribute.
-     *
-     * @param string $attributeName
-     * @param string $className
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertClassHasStaticAttribute($attributeName, $className, $message = '')
-    {
-        if (!is_string($attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name');
-        }
-
-        if (!is_string($className) || !class_exists($className)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className);
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_ClassHasStaticAttribute(
-            $attributeName
-        );
-
-        self::assertThat($className, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a class does not have a specified static attribute.
-     *
-     * @param string $attributeName
-     * @param string $className
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertClassNotHasStaticAttribute($attributeName, $className, $message = '')
-    {
-        if (!is_string($attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name');
-        }
-
-        if (!is_string($className) || !class_exists($className)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'class name', $className);
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_ClassHasStaticAttribute(
-                $attributeName
-            )
-        );
-
-        self::assertThat($className, $constraint, $message);
-    }
-
-    /**
-     * Asserts that an object has a specified attribute.
-     *
-     * @param string $attributeName
-     * @param object $object
-     * @param string $message
-     * @since  Method available since Release 3.0.0
-     */
-    public static function assertObjectHasAttribute($attributeName, $object, $message = '')
-    {
-        if (!is_string($attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name');
-        }
-
-        if (!is_object($object)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'object');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_ObjectHasAttribute(
-            $attributeName
-        );
-
-        self::assertThat($object, $constraint, $message);
-    }
-
-    /**
-     * Asserts that an object does not have a specified attribute.
-     *
-     * @param string $attributeName
-     * @param object $object
-     * @param string $message
-     * @since  Method available since Release 3.0.0
-     */
-    public static function assertObjectNotHasAttribute($attributeName, $object, $message = '')
-    {
-        if (!is_string($attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'valid attribute name');
-        }
-
-        if (!is_object($object)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'object');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_ObjectHasAttribute($attributeName)
-        );
-
-        self::assertThat($object, $constraint, $message);
-    }
-
-    /**
-     * Asserts that two variables have the same type and value.
-     * Used on objects, it asserts that two variables reference
-     * the same object.
-     *
-     * @param mixed  $expected
-     * @param mixed  $actual
-     * @param string $message
-     */
-    public static function assertSame($expected, $actual, $message = '')
-    {
-        if (is_bool($expected) && is_bool($actual)) {
-            self::assertEquals($expected, $actual, $message);
-        } else {
-            $constraint = new PHPUnit_Framework_Constraint_IsIdentical(
-                $expected
-            );
-
-            self::assertThat($actual, $constraint, $message);
-        }
-    }
-
-    /**
-     * Asserts that a variable and an attribute of an object have the same type
-     * and value.
-     *
-     * @param mixed  $expected
-     * @param string $actualAttributeName
-     * @param object $actualClassOrObject
-     * @param string $message
-     */
-    public static function assertAttributeSame($expected, $actualAttributeName, $actualClassOrObject, $message = '')
-    {
-        self::assertSame(
-            $expected,
-            self::readAttribute($actualClassOrObject, $actualAttributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that two variables do not have the same type and value.
-     * Used on objects, it asserts that two variables do not reference
-     * the same object.
-     *
-     * @param mixed  $expected
-     * @param mixed  $actual
-     * @param string $message
-     */
-    public static function assertNotSame($expected, $actual, $message = '')
-    {
-        if (is_bool($expected) && is_bool($actual)) {
-            self::assertNotEquals($expected, $actual, $message);
-        } else {
-            $constraint = new PHPUnit_Framework_Constraint_Not(
-                new PHPUnit_Framework_Constraint_IsIdentical($expected)
-            );
-
-            self::assertThat($actual, $constraint, $message);
-        }
-    }
-
-    /**
-     * Asserts that a variable and an attribute of an object do not have the
-     * same type and value.
-     *
-     * @param mixed  $expected
-     * @param string $actualAttributeName
-     * @param object $actualClassOrObject
-     * @param string $message
-     */
-    public static function assertAttributeNotSame($expected, $actualAttributeName, $actualClassOrObject, $message = '')
-    {
-        self::assertNotSame(
-            $expected,
-            self::readAttribute($actualClassOrObject, $actualAttributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a variable is of a given type.
-     *
-     * @param string $expected
-     * @param mixed  $actual
-     * @param string $message
-     * @since Method available since Release 3.5.0
-     */
-    public static function assertInstanceOf($expected, $actual, $message = '')
-    {
-        if (!(is_string($expected) && (class_exists($expected) || interface_exists($expected)))) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'class or interface name');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_IsInstanceOf(
-            $expected
-        );
-
-        self::assertThat($actual, $constraint, $message);
-    }
-
-    /**
-     * Asserts that an attribute is of a given type.
-     *
-     * @param string $expected
-     * @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 = '')
-    {
-        self::assertInstanceOf(
-            $expected,
-            self::readAttribute($classOrObject, $attributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a variable is not of a given type.
-     *
-     * @param string $expected
-     * @param mixed  $actual
-     * @param string $message
-     * @since Method available since Release 3.5.0
-     */
-    public static function assertNotInstanceOf($expected, $actual, $message = '')
-    {
-        if (!(is_string($expected) && (class_exists($expected) || interface_exists($expected)))) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'class or interface name');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_IsInstanceOf($expected)
-        );
-
-        self::assertThat($actual, $constraint, $message);
-    }
-
-    /**
-     * Asserts that an attribute is of a given type.
-     *
-     * @param string $expected
-     * @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 = '')
-    {
-        self::assertNotInstanceOf(
-            $expected,
-            self::readAttribute($classOrObject, $attributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a variable is of a given type.
-     *
-     * @param string $expected
-     * @param mixed  $actual
-     * @param string $message
-     * @since Method available since Release 3.5.0
-     */
-    public static function assertInternalType($expected, $actual, $message = '')
-    {
-        if (!is_string($expected)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_IsType(
-            $expected
-        );
-
-        self::assertThat($actual, $constraint, $message);
-    }
-
-    /**
-     * Asserts that an attribute is of a given type.
-     *
-     * @param string $expected
-     * @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 = '')
-    {
-        self::assertInternalType(
-            $expected,
-            self::readAttribute($classOrObject, $attributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a variable is not of a given type.
-     *
-     * @param string $expected
-     * @param mixed  $actual
-     * @param string $message
-     * @since Method available since Release 3.5.0
-     */
-    public static function assertNotInternalType($expected, $actual, $message = '')
-    {
-        if (!is_string($expected)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_IsType($expected)
-        );
-
-        self::assertThat($actual, $constraint, $message);
-    }
-
-    /**
-     * Asserts that an attribute is of a given type.
-     *
-     * @param string $expected
-     * @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 = '')
-    {
-        self::assertNotInternalType(
-            $expected,
-            self::readAttribute($classOrObject, $attributeName),
-            $message
-        );
-    }
-
-    /**
-     * Asserts that a string matches a given regular expression.
-     *
-     * @param string $pattern
-     * @param string $string
-     * @param string $message
-     */
-    public static function assertRegExp($pattern, $string, $message = '')
-    {
-        if (!is_string($pattern)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($string)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_PCREMatch($pattern);
-
-        self::assertThat($string, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a string does not match a given regular expression.
-     *
-     * @param string $pattern
-     * @param string $string
-     * @param string $message
-     * @since  Method available since Release 2.1.0
-     */
-    public static function assertNotRegExp($pattern, $string, $message = '')
-    {
-        if (!is_string($pattern)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($string)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_PCREMatch($pattern)
-        );
-
-        self::assertThat($string, $constraint, $message);
-    }
-
-    /**
-     * Assert that the size of two arrays (or `Countable` or `Traversable` objects)
-     * is the same.
-     *
-     * @param array|Countable|Traversable $expected
-     * @param array|Countable|Traversable $actual
-     * @param string                      $message
-     */
-    public static function assertSameSize($expected, $actual, $message = '')
-    {
-        if (!$expected instanceof Countable &&
-            !$expected instanceof Traversable &&
-            !is_array($expected)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'countable or traversable');
-        }
-
-        if (!$actual instanceof Countable &&
-            !$actual instanceof Traversable &&
-            !is_array($actual)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'countable or traversable');
-        }
-
-        self::assertThat(
-            $actual,
-            new PHPUnit_Framework_Constraint_SameSize($expected),
-            $message
-        );
-    }
-
-    /**
-     * Assert that the size of two arrays (or `Countable` or `Traversable` objects)
-     * is not the same.
-     *
-     * @param array|Countable|Traversable $expected
-     * @param array|Countable|Traversable $actual
-     * @param string                      $message
-     */
-    public static function assertNotSameSize($expected, $actual, $message = '')
-    {
-        if (!$expected instanceof Countable &&
-            !$expected instanceof Traversable &&
-            !is_array($expected)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'countable or traversable');
-        }
-
-        if (!$actual instanceof Countable &&
-            !$actual instanceof Traversable &&
-            !is_array($actual)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'countable or traversable');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_SameSize($expected)
-        );
-
-        self::assertThat($actual, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a string matches a given format string.
-     *
-     * @param string $format
-     * @param string $string
-     * @param string $message
-     * @since  Method available since Release 3.5.0
-     */
-    public static function assertStringMatchesFormat($format, $string, $message = '')
-    {
-        if (!is_string($format)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($string)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_StringMatches($format);
-
-        self::assertThat($string, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a string does not match a given format string.
-     *
-     * @param string $format
-     * @param string $string
-     * @param string $message
-     * @since  Method available since Release 3.5.0
-     */
-    public static function assertStringNotMatchesFormat($format, $string, $message = '')
-    {
-        if (!is_string($format)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($string)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_StringMatches($format)
-        );
-
-        self::assertThat($string, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a string matches a given format file.
-     *
-     * @param string $formatFile
-     * @param string $string
-     * @param string $message
-     * @since  Method available since Release 3.5.0
-     */
-    public static function assertStringMatchesFormatFile($formatFile, $string, $message = '')
-    {
-        self::assertFileExists($formatFile, $message);
-
-        if (!is_string($string)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_StringMatches(
-            file_get_contents($formatFile)
-        );
-
-        self::assertThat($string, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a string does not match a given format string.
-     *
-     * @param string $formatFile
-     * @param string $string
-     * @param string $message
-     * @since  Method available since Release 3.5.0
-     */
-    public static function assertStringNotMatchesFormatFile($formatFile, $string, $message = '')
-    {
-        self::assertFileExists($formatFile, $message);
-
-        if (!is_string($string)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_StringMatches(
-                file_get_contents($formatFile)
-            )
-        );
-
-        self::assertThat($string, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a string starts with a given prefix.
-     *
-     * @param string $prefix
-     * @param string $string
-     * @param string $message
-     * @since  Method available since Release 3.4.0
-     */
-    public static function assertStringStartsWith($prefix, $string, $message = '')
-    {
-        if (!is_string($prefix)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($string)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_StringStartsWith(
-            $prefix
-        );
-
-        self::assertThat($string, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a string starts not with a given prefix.
-     *
-     * @param string $prefix
-     * @param string $string
-     * @param string $message
-     * @since  Method available since Release 3.4.0
-     */
-    public static function assertStringStartsNotWith($prefix, $string, $message = '')
-    {
-        if (!is_string($prefix)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($string)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_StringStartsWith($prefix)
-        );
-
-        self::assertThat($string, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a string ends with a given suffix.
-     *
-     * @param string $suffix
-     * @param string $string
-     * @param string $message
-     * @since  Method available since Release 3.4.0
-     */
-    public static function assertStringEndsWith($suffix, $string, $message = '')
-    {
-        if (!is_string($suffix)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($string)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_StringEndsWith($suffix);
-
-        self::assertThat($string, $constraint, $message);
-    }
-
-    /**
-     * Asserts that a string ends not with a given suffix.
-     *
-     * @param string $suffix
-     * @param string $string
-     * @param string $message
-     * @since  Method available since Release 3.4.0
-     */
-    public static function assertStringEndsNotWith($suffix, $string, $message = '')
-    {
-        if (!is_string($suffix)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!is_string($string)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        $constraint = new PHPUnit_Framework_Constraint_Not(
-            new PHPUnit_Framework_Constraint_StringEndsWith($suffix)
-        );
-
-        self::assertThat($string, $constraint, $message);
-    }
-
-    /**
-     * Asserts that two XML files are equal.
-     *
-     * @param string $expectedFile
-     * @param string $actualFile
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = '')
-    {
-        $expected = PHPUnit_Util_XML::loadFile($expectedFile);
-        $actual   = PHPUnit_Util_XML::loadFile($actualFile);
-
-        self::assertEquals($expected, $actual, $message);
-    }
-
-    /**
-     * Asserts that two XML files are not equal.
-     *
-     * @param string $expectedFile
-     * @param string $actualFile
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = '')
-    {
-        $expected = PHPUnit_Util_XML::loadFile($expectedFile);
-        $actual   = PHPUnit_Util_XML::loadFile($actualFile);
-
-        self::assertNotEquals($expected, $actual, $message);
-    }
-
-    /**
-     * Asserts that two XML documents are equal.
-     *
-     * @param string $expectedFile
-     * @param string $actualXml
-     * @param string $message
-     * @since  Method available since Release 3.3.0
-     */
-    public static function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = '')
-    {
-        $expected = PHPUnit_Util_XML::loadFile($expectedFile);
-        $actual   = PHPUnit_Util_XML::load($actualXml);
-
-        self::assertEquals($expected, $actual, $message);
-    }
-
-    /**
-     * Asserts that two XML documents are not equal.
-     *
-     * @param string $expectedFile
-     * @param string $actualXml
-     * @param string $message
-     * @since  Method available since Release 3.3.0
-     */
-    public static function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = '')
-    {
-        $expected = PHPUnit_Util_XML::loadFile($expectedFile);
-        $actual   = PHPUnit_Util_XML::load($actualXml);
-
-        self::assertNotEquals($expected, $actual, $message);
-    }
-
-    /**
-     * Asserts that two XML documents are equal.
-     *
-     * @param string $expectedXml
-     * @param string $actualXml
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = '')
-    {
-        $expected = PHPUnit_Util_XML::load($expectedXml);
-        $actual   = PHPUnit_Util_XML::load($actualXml);
-
-        self::assertEquals($expected, $actual, $message);
-    }
-
-    /**
-     * Asserts that two XML documents are not equal.
-     *
-     * @param string $expectedXml
-     * @param string $actualXml
-     * @param string $message
-     * @since  Method available since Release 3.1.0
-     */
-    public static function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = '')
-    {
-        $expected = PHPUnit_Util_XML::load($expectedXml);
-        $actual   = PHPUnit_Util_XML::load($actualXml);
-
-        self::assertNotEquals($expected, $actual, $message);
-    }
-
-    /**
-     * Asserts that a hierarchy of DOMElements matches.
-     *
-     * @param DOMElement $expectedElement
-     * @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;
-        $expectedElement = $tmp->importNode($expectedElement, true);
-
-        $tmp = new DOMDocument;
-        $actualElement= $tmp->importNode($actualElement, true);
-
-        unset($tmp);
-
-        self::assertEquals(
-            $expectedElement->tagName,
-            $actualElement->tagName,
-            $message
-        );
-
-        if ($checkAttributes) {
-            self::assertEquals(
-                $expectedElement->attributes->length,
-                $actualElement->attributes->length,
-                sprintf(
-                    '%s%sNumber of attributes on node "%s" does not match',
-                    $message,
-                    !empty($message) ? "\n" : '',
-                    $expectedElement->tagName
-                )
-            );
-
-            for ($i = 0; $i < $expectedElement->attributes->length; $i++) {
-                $expectedAttribute = $expectedElement->attributes->item($i);
-                $actualAttribute   = $actualElement->attributes->getNamedItem(
-                    $expectedAttribute->name
-                );
-
-                if (!$actualAttribute) {
-                    self::fail(
-                        sprintf(
-                            '%s%sCould not find attribute "%s" on node "%s"',
-                            $message,
-                            !empty($message) ? "\n" : '',
-                            $expectedAttribute->name,
-                            $expectedElement->tagName
-                        )
-                    );
-                }
-            }
-        }
-
-        PHPUnit_Util_XML::removeCharacterDataNodes($expectedElement);
-        PHPUnit_Util_XML::removeCharacterDataNodes($actualElement);
-
-        self::assertEquals(
-            $expectedElement->childNodes->length,
-            $actualElement->childNodes->length,
-            sprintf(
-                '%s%sNumber of child nodes of "%s" differs',
-                $message,
-                !empty($message) ? "\n" : '',
-                $expectedElement->tagName
-            )
-        );
-
-        for ($i = 0; $i < $expectedElement->childNodes->length; $i++) {
-            self::assertEqualXMLStructure(
-                $expectedElement->childNodes->item($i),
-                $actualElement->childNodes->item($i),
-                $checkAttributes,
-                $message
-            );
-        }
-    }
-
-    /**
-     * Assert the presence, absence, or count of elements in a document matching
-     * the CSS $selector, regardless of the contents of those elements.
-     *
-     * The first argument, $selector, is the CSS selector used to match
-     * the elements in the $actual document.
-     *
-     * The second argument, $count, can be either boolean or numeric.
-     * When boolean, it asserts for presence of elements matching the selector
-     * (true) or absence of elements (false).
-     * When numeric, it asserts the count of elements.
-     *
-     * assertSelectCount("#binder", true, $xml);  // any?
-     * assertSelectCount(".binder", 3, $xml);     // exactly 3?
-     *
-     * @param array          $selector
-     * @param int|bool|array $count
-     * @param mixed          $actual
-     * @param string         $message
-     * @param bool           $isHtml
-     * @since  Method available since Release 3.3.0
-     * @deprecated
-     * @codeCoverageIgnore
-     */
-    public static function assertSelectCount($selector, $count, $actual, $message = '', $isHtml = true)
-    {
-        trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
-
-        self::assertSelectEquals(
-            $selector,
-            true,
-            $count,
-            $actual,
-            $message,
-            $isHtml
-        );
-    }
-
-    /**
-     * assertSelectRegExp("#binder .name", "/Mike|Derek/", true, $xml); // any?
-     * assertSelectRegExp("#binder .name", "/Mike|Derek/", 3, $xml);    // 3?
-     *
-     * @param array          $selector
-     * @param string         $pattern
-     * @param int|bool|array $count
-     * @param mixed          $actual
-     * @param string         $message
-     * @param bool           $isHtml
-     * @since  Method available since Release 3.3.0
-     * @deprecated
-     * @codeCoverageIgnore
-     */
-    public static function assertSelectRegExp($selector, $pattern, $count, $actual, $message = '', $isHtml = true)
-    {
-        trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
-
-        self::assertSelectEquals(
-            $selector,
-            "regexp:$pattern",
-            $count,
-            $actual,
-            $message,
-            $isHtml
-        );
-    }
-
-    /**
-     * assertSelectEquals("#binder .name", "Chuck", true,  $xml);  // any?
-     * assertSelectEquals("#binder .name", "Chuck", false, $xml);  // none?
-     *
-     * @param array          $selector
-     * @param string         $content
-     * @param int|bool|array $count
-     * @param mixed          $actual
-     * @param string         $message
-     * @param bool           $isHtml
-     * @since  Method available since Release 3.3.0
-     * @deprecated
-     * @codeCoverageIgnore
-     */
-    public static function assertSelectEquals($selector, $content, $count, $actual, $message = '', $isHtml = true)
-    {
-        trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
-
-        $tags = PHPUnit_Util_XML::cssSelect(
-            $selector,
-            $content,
-            $actual,
-            $isHtml
-        );
-
-        // assert specific number of elements
-        if (is_numeric($count)) {
-            $counted = $tags ? count($tags) : 0;
-            self::assertEquals($count, $counted, $message);
-        } // assert any elements exist if true, assert no elements exist if false
-        elseif (is_bool($count)) {
-            $any = count($tags) > 0 && $tags[0] instanceof DOMNode;
-
-            if ($count) {
-                self::assertTrue($any, $message);
-            } else {
-                self::assertFalse($any, $message);
-            }
-        } // check for range number of elements
-        elseif (is_array($count) &&
-                (isset($count['>']) || isset($count['<']) ||
-                isset($count['>=']) || isset($count['<=']))) {
-            $counted = $tags ? count($tags) : 0;
-
-            if (isset($count['>'])) {
-                self::assertTrue($counted > $count['>'], $message);
-            }
-
-            if (isset($count['>='])) {
-                self::assertTrue($counted >= $count['>='], $message);
-            }
-
-            if (isset($count['<'])) {
-                self::assertTrue($counted < $count['<'], $message);
-            }
-
-            if (isset($count['<='])) {
-                self::assertTrue($counted <= $count['<='], $message);
-            }
-        } else {
-            throw new PHPUnit_Framework_Exception;
-        }
-    }
-
-    /**
-     * Evaluate an HTML or XML string and assert its structure and/or contents.
-     *
-     * The first argument ($matcher) is an associative array that specifies the
-     * match criteria for the assertion:
-     *
-     *  - `id`           : the node with the given id attribute must match the
-     *                     corresponding value.
-     *  - `tag`          : the node type must match the corresponding value.
-     *  - `attributes`   : a hash. The node's attributes must match the
-     *                     corresponding values in the hash.
-     *  - `content`      : The text content must match the given value.
-     *  - `parent`       : a hash. The node's parent must match the
-     *                     corresponding hash.
-     *  - `child`        : a hash. At least one of the node's immediate children
-     *                     must meet the criteria described by the hash.
-     *  - `ancestor`     : a hash. At least one of the node's ancestors must
-     *                     meet the criteria described by the hash.
-     *  - `descendant`   : a hash. At least one of the node's descendants must
-     *                     meet the criteria described by the hash.
-     *  - `children`     : a hash, for counting children of a node.
-     *                     Accepts the keys:
-     *    - `count`        : a number which must equal the number of children
-     *                       that match
-     *    - `less_than`    : the number of matching children must be greater
-     *                       than this number
-     *    - `greater_than` : the number of matching children must be less than
-     *                       this number
-     *    - `only`         : another hash consisting of the keys to use to match
-     *                       on the children, and only matching children will be
-     *                       counted
-     *
-     * <code>
-     * // Matcher that asserts that there is an element with an id="my_id".
-     * $matcher = array('id' => 'my_id');
-     *
-     * // Matcher that asserts that there is a "span" tag.
-     * $matcher = array('tag' => 'span');
-     *
-     * // Matcher that asserts that there is a "span" tag with the content
-     * // "Hello World".
-     * $matcher = array('tag' => 'span', 'content' => 'Hello World');
-     *
-     * // Matcher that asserts that there is a "span" tag with content matching
-     * // the regular expression pattern.
-     * $matcher = array('tag' => 'span', 'content' => 'regexp:/Try P(HP|ython)/');
-     *
-     * // Matcher that asserts that there is a "span" with an "list" class
-     * // attribute.
-     * $matcher = array(
-     *   'tag'        => 'span',
-     *   'attributes' => array('class' => 'list')
-     * );
-     *
-     * // Matcher that asserts that there is a "span" inside of a "div".
-     * $matcher = array(
-     *   'tag'    => 'span',
-     *   'parent' => array('tag' => 'div')
-     * );
-     *
-     * // Matcher that asserts that there is a "span" somewhere inside a
-     * // "table".
-     * $matcher = array(
-     *   'tag'      => 'span',
-     *   'ancestor' => array('tag' => 'table')
-     * );
-     *
-     * // Matcher that asserts that there is a "span" with at least one "em"
-     * // child.
-     * $matcher = array(
-     *   'tag'   => 'span',
-     *   'child' => array('tag' => 'em')
-     * );
-     *
-     * // Matcher that asserts that there is a "span" containing a (possibly
-     * // nested) "strong" tag.
-     * $matcher = array(
-     *   'tag'        => 'span',
-     *   'descendant' => array('tag' => 'strong')
-     * );
-     *
-     * // Matcher that asserts that there is a "span" containing 5-10 "em" tags
-     * // as immediate children.
-     * $matcher = array(
-     *   'tag'      => 'span',
-     *   'children' => array(
-     *     'less_than'    => 11,
-     *     'greater_than' => 4,
-     *     'only'         => array('tag' => 'em')
-     *   )
-     * );
-     *
-     * // Matcher that asserts that there is a "div", with an "ul" ancestor and
-     * // a "li" parent (with class="enum"), and containing a "span" descendant
-     * // that contains an element with id="my_test" and the text "Hello World".
-     * $matcher = array(
-     *   'tag'        => 'div',
-     *   'ancestor'   => array('tag' => 'ul'),
-     *   'parent'     => array(
-     *     'tag'        => 'li',
-     *     'attributes' => array('class' => 'enum')
-     *   ),
-     *   'descendant' => array(
-     *     'tag'   => 'span',
-     *     'child' => array(
-     *       'id'      => 'my_test',
-     *       'content' => 'Hello World'
-     *     )
-     *   )
-     * );
-     *
-     * // Use assertTag() to apply a $matcher to a piece of $html.
-     * $this->assertTag($matcher, $html);
-     *
-     * // Use assertTag() to apply a $matcher to a piece of $xml.
-     * $this->assertTag($matcher, $xml, '', false);
-     * </code>
-     *
-     * The second argument ($actual) is a string containing either HTML or
-     * XML text to be tested.
-     *
-     * The third argument ($message) is an optional message that will be
-     * used if the assertion fails.
-     *
-     * The fourth argument ($html) is an optional flag specifying whether
-     * to load the $actual string into a DOMDocument using the HTML or
-     * XML load strategy.  It is true by default, which assumes the HTML
-     * load strategy.  In many cases, this will be acceptable for XML as well.
-     *
-     * @param array  $matcher
-     * @param string $actual
-     * @param string $message
-     * @param bool   $isHtml
-     * @since  Method available since Release 3.3.0
-     * @deprecated
-     * @codeCoverageIgnore
-     */
-    public static function assertTag($matcher, $actual, $message = '', $isHtml = true)
-    {
-        trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
-
-        $dom     = PHPUnit_Util_XML::load($actual, $isHtml);
-        $tags    = PHPUnit_Util_XML::findNodes($dom, $matcher, $isHtml);
-        $matched = count($tags) > 0 && $tags[0] instanceof DOMNode;
-
-        self::assertTrue($matched, $message);
-    }
-
-    /**
-     * This assertion is the exact opposite of assertTag().
-     *
-     * Rather than asserting that $matcher results in a match, it asserts that
-     * $matcher does not match.
-     *
-     * @param array  $matcher
-     * @param string $actual
-     * @param string $message
-     * @param bool   $isHtml
-     * @since  Method available since Release 3.3.0
-     * @deprecated
-     * @codeCoverageIgnore
-     */
-    public static function assertNotTag($matcher, $actual, $message = '', $isHtml = true)
-    {
-        trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
-
-        $dom     = PHPUnit_Util_XML::load($actual, $isHtml);
-        $tags    = PHPUnit_Util_XML::findNodes($dom, $matcher, $isHtml);
-        $matched = count($tags) > 0 && $tags[0] instanceof DOMNode;
-
-        self::assertFalse($matched, $message);
-    }
-
-    /**
-     * Evaluates a PHPUnit_Framework_Constraint matcher object.
-     *
-     * @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 = '')
-    {
-        self::$count += count($constraint);
-
-        $constraint->evaluate($value, $message);
-    }
-
-    /**
-     * Asserts that a string is a valid JSON string.
-     *
-     * @param string $actualJson
-     * @param string $message
-     * @since  Method available since Release 3.7.20
-     */
-    public static function assertJson($actualJson, $message = '')
-    {
-        if (!is_string($actualJson)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        self::assertThat($actualJson, self::isJson(), $message);
-    }
-
-    /**
-     * Asserts that two given JSON encoded objects or arrays are equal.
-     *
-     * @param string $expectedJson
-     * @param string $actualJson
-     * @param string $message
-     */
-    public static function assertJsonStringEqualsJsonString($expectedJson, $actualJson, $message = '')
-    {
-        self::assertJson($expectedJson, $message);
-        self::assertJson($actualJson, $message);
-
-        $expected = json_decode($expectedJson);
-        $actual   = json_decode($actualJson);
-
-        self::assertEquals($expected, $actual, $message);
-    }
-
-    /**
-     * Asserts that two given JSON encoded objects or arrays are not equal.
-     *
-     * @param string $expectedJson
-     * @param string $actualJson
-     * @param string $message
-     */
-    public static function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, $message = '')
-    {
-        self::assertJson($expectedJson, $message);
-        self::assertJson($actualJson, $message);
-
-        $expected = json_decode($expectedJson);
-        $actual   = json_decode($actualJson);
-
-        self::assertNotEquals($expected, $actual, $message);
-    }
-
-    /**
-     * Asserts that the generated JSON encoded object and the content of the given file are equal.
-     *
-     * @param string $expectedFile
-     * @param string $actualJson
-     * @param string $message
-     */
-    public static function assertJsonStringEqualsJsonFile($expectedFile, $actualJson, $message = '')
-    {
-        self::assertFileExists($expectedFile, $message);
-        $expectedJson = file_get_contents($expectedFile);
-
-        self::assertJson($expectedJson, $message);
-        self::assertJson($actualJson, $message);
-
-        // call constraint
-        $constraint = new PHPUnit_Framework_Constraint_JsonMatches(
-            $expectedJson
-        );
-
-        self::assertThat($actualJson, $constraint, $message);
-    }
-
-    /**
-     * Asserts that the generated JSON encoded object and the content of the given file are not equal.
-     *
-     * @param string $expectedFile
-     * @param string $actualJson
-     * @param string $message
-     */
-    public static function assertJsonStringNotEqualsJsonFile($expectedFile, $actualJson, $message = '')
-    {
-        self::assertFileExists($expectedFile, $message);
-        $expectedJson = file_get_contents($expectedFile);
-
-        self::assertJson($expectedJson, $message);
-        self::assertJson($actualJson, $message);
-
-        // call constraint
-        $constraint = new PHPUnit_Framework_Constraint_JsonMatches(
-            $expectedJson
-        );
-
-        self::assertThat($actualJson, new PHPUnit_Framework_Constraint_Not($constraint), $message);
-    }
-
-    /**
-     * Asserts that two JSON files are not equal.
-     *
-     * @param string $expectedFile
-     * @param string $actualFile
-     * @param string $message
-     */
-    public static function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFile, $message = '')
-    {
-        self::assertFileExists($expectedFile, $message);
-        self::assertFileExists($actualFile, $message);
-
-        $actualJson   = file_get_contents($actualFile);
-        $expectedJson = file_get_contents($expectedFile);
-
-        self::assertJson($expectedJson, $message);
-        self::assertJson($actualJson, $message);
-
-        // call constraint
-        $constraintExpected = new PHPUnit_Framework_Constraint_JsonMatches(
-            $expectedJson
-        );
-
-        $constraintActual = new PHPUnit_Framework_Constraint_JsonMatches($actualJson);
-
-        self::assertThat($expectedJson, new PHPUnit_Framework_Constraint_Not($constraintActual), $message);
-        self::assertThat($actualJson, new PHPUnit_Framework_Constraint_Not($constraintExpected), $message);
-    }
-
-    /**
-     * Asserts that two JSON files are equal.
-     *
-     * @param string $expectedFile
-     * @param string $actualFile
-     * @param string $message
-     */
-    public static function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, $message = '')
-    {
-        self::assertFileExists($expectedFile, $message);
-        self::assertFileExists($actualFile, $message);
-
-        $actualJson   = file_get_contents($actualFile);
-        $expectedJson = file_get_contents($expectedFile);
-
-        self::assertJson($expectedJson, $message);
-        self::assertJson($actualJson, $message);
-
-        // call constraint
-        $constraintExpected = new PHPUnit_Framework_Constraint_JsonMatches(
-            $expectedJson
-        );
-
-        $constraintActual = new PHPUnit_Framework_Constraint_JsonMatches($actualJson);
-
-        self::assertThat($expectedJson, $constraintActual, $message);
-        self::assertThat($actualJson, $constraintExpected, $message);
-    }
-
-    /**
-     * 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()
-    {
-        $constraints = func_get_args();
-
-        $constraint = new PHPUnit_Framework_Constraint_And;
-        $constraint->setConstraints($constraints);
-
-        return $constraint;
-    }
-
-    /**
-     * 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()
-    {
-        $constraints = func_get_args();
-
-        $constraint = new PHPUnit_Framework_Constraint_Or;
-        $constraint->setConstraints($constraints);
-
-        return $constraint;
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_Not matcher object.
-     *
-     * @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)
-    {
-        return new PHPUnit_Framework_Constraint_Not($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()
-    {
-        $constraints = func_get_args();
-
-        $constraint = new PHPUnit_Framework_Constraint_Xor;
-        $constraint->setConstraints($constraints);
-
-        return $constraint;
-    }
-
-    /**
-     * 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()
-    {
-        return new PHPUnit_Framework_Constraint_IsAnything;
-    }
-
-    /**
-     * 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()
-    {
-        return new PHPUnit_Framework_Constraint_IsTrue;
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_Callback matcher object.
-     *
-     * @param  callable                              $callback
-     * @return PHPUnit_Framework_Constraint_Callback
-     */
-    public static function callback($callback)
-    {
-        return new PHPUnit_Framework_Constraint_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()
-    {
-        return new PHPUnit_Framework_Constraint_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()
-    {
-        return new PHPUnit_Framework_Constraint_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()
-    {
-        return new PHPUnit_Framework_Constraint_IsNull;
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_Attribute matcher object.
-     *
-     * @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)
-    {
-        return new PHPUnit_Framework_Constraint_Attribute(
-            $constraint,
-            $attributeName
-        );
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_TraversableContains matcher
-     * object.
-     *
-     * @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)
-    {
-        return new PHPUnit_Framework_Constraint_TraversableContains($value, $checkForObjectIdentity, $checkForNonObjectIdentity);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher
-     * object.
-     *
-     * @param  string                                               $type
-     * @return PHPUnit_Framework_Constraint_TraversableContainsOnly
-     * @since  Method available since Release 3.1.4
-     */
-    public static function containsOnly($type)
-    {
-        return new PHPUnit_Framework_Constraint_TraversableContainsOnly($type);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher
-     * object.
-     *
-     * @param  string                                               $classname
-     * @return PHPUnit_Framework_Constraint_TraversableContainsOnly
-     */
-    public static function containsOnlyInstancesOf($classname)
-    {
-        return new PHPUnit_Framework_Constraint_TraversableContainsOnly($classname, false);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_ArrayHasKey matcher object.
-     *
-     * @param  mixed                                    $key
-     * @return PHPUnit_Framework_Constraint_ArrayHasKey
-     * @since  Method available since Release 3.0.0
-     */
-    public static function arrayHasKey($key)
-    {
-        return new PHPUnit_Framework_Constraint_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
-     * @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)
-    {
-        return new PHPUnit_Framework_Constraint_IsEqual(
-            $value,
-            $delta,
-            $maxDepth,
-            $canonicalize,
-            $ignoreCase
-        );
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object
-     * 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
-     * @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)
-    {
-        return self::attribute(
-            self::equalTo(
-                $value,
-                $delta,
-                $maxDepth,
-                $canonicalize,
-                $ignoreCase
-            ),
-            $attributeName
-        );
-    }
-
-    /**
-     * 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()
-    {
-        return new PHPUnit_Framework_Constraint_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()
-    {
-        return new PHPUnit_Framework_Constraint_FileExists;
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_GreaterThan matcher object.
-     *
-     * @param  mixed                                    $value
-     * @return PHPUnit_Framework_Constraint_GreaterThan
-     * @since  Method available since Release 3.0.0
-     */
-    public static function greaterThan($value)
-    {
-        return new PHPUnit_Framework_Constraint_GreaterThan($value);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_Or matcher object that wraps
-     * a PHPUnit_Framework_Constraint_IsEqual and a
-     * PHPUnit_Framework_Constraint_GreaterThan matcher object.
-     *
-     * @param  mixed                           $value
-     * @return PHPUnit_Framework_Constraint_Or
-     * @since  Method available since Release 3.1.0
-     */
-    public static function greaterThanOrEqual($value)
-    {
-        return self::logicalOr(
-            new PHPUnit_Framework_Constraint_IsEqual($value),
-            new PHPUnit_Framework_Constraint_GreaterThan($value)
-        );
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_ClassHasAttribute matcher object.
-     *
-     * @param  string                                         $attributeName
-     * @return PHPUnit_Framework_Constraint_ClassHasAttribute
-     * @since  Method available since Release 3.1.0
-     */
-    public static function classHasAttribute($attributeName)
-    {
-        return new PHPUnit_Framework_Constraint_ClassHasAttribute(
-            $attributeName
-        );
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_ClassHasStaticAttribute matcher
-     * object.
-     *
-     * @param  string                                               $attributeName
-     * @return PHPUnit_Framework_Constraint_ClassHasStaticAttribute
-     * @since  Method available since Release 3.1.0
-     */
-    public static function classHasStaticAttribute($attributeName)
-    {
-        return new PHPUnit_Framework_Constraint_ClassHasStaticAttribute(
-            $attributeName
-        );
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_ObjectHasAttribute matcher object.
-     *
-     * @param  string                                          $attributeName
-     * @return PHPUnit_Framework_Constraint_ObjectHasAttribute
-     * @since  Method available since Release 3.0.0
-     */
-    public static function objectHasAttribute($attributeName)
-    {
-        return new PHPUnit_Framework_Constraint_ObjectHasAttribute(
-            $attributeName
-        );
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_IsIdentical matcher object.
-     *
-     * @param  mixed                                    $value
-     * @return PHPUnit_Framework_Constraint_IsIdentical
-     * @since  Method available since Release 3.0.0
-     */
-    public static function identicalTo($value)
-    {
-        return new PHPUnit_Framework_Constraint_IsIdentical($value);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_IsInstanceOf matcher object.
-     *
-     * @param  string                                    $className
-     * @return PHPUnit_Framework_Constraint_IsInstanceOf
-     * @since  Method available since Release 3.0.0
-     */
-    public static function isInstanceOf($className)
-    {
-        return new PHPUnit_Framework_Constraint_IsInstanceOf($className);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_IsType matcher object.
-     *
-     * @param  string                              $type
-     * @return PHPUnit_Framework_Constraint_IsType
-     * @since  Method available since Release 3.0.0
-     */
-    public static function isType($type)
-    {
-        return new PHPUnit_Framework_Constraint_IsType($type);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_LessThan matcher object.
-     *
-     * @param  mixed                                 $value
-     * @return PHPUnit_Framework_Constraint_LessThan
-     * @since  Method available since Release 3.0.0
-     */
-    public static function lessThan($value)
-    {
-        return new PHPUnit_Framework_Constraint_LessThan($value);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_Or matcher object that wraps
-     * a PHPUnit_Framework_Constraint_IsEqual and a
-     * PHPUnit_Framework_Constraint_LessThan matcher object.
-     *
-     * @param  mixed                           $value
-     * @return PHPUnit_Framework_Constraint_Or
-     * @since  Method available since Release 3.1.0
-     */
-    public static function lessThanOrEqual($value)
-    {
-        return self::logicalOr(
-            new PHPUnit_Framework_Constraint_IsEqual($value),
-            new PHPUnit_Framework_Constraint_LessThan($value)
-        );
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_PCREMatch matcher object.
-     *
-     * @param  string                                 $pattern
-     * @return PHPUnit_Framework_Constraint_PCREMatch
-     * @since  Method available since Release 3.0.0
-     */
-    public static function matchesRegularExpression($pattern)
-    {
-        return new PHPUnit_Framework_Constraint_PCREMatch($pattern);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_StringMatches matcher object.
-     *
-     * @param  string                                     $string
-     * @return PHPUnit_Framework_Constraint_StringMatches
-     * @since  Method available since Release 3.5.0
-     */
-    public static function matches($string)
-    {
-        return new PHPUnit_Framework_Constraint_StringMatches($string);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_StringStartsWith matcher object.
-     *
-     * @param  mixed                                         $prefix
-     * @return PHPUnit_Framework_Constraint_StringStartsWith
-     * @since  Method available since Release 3.4.0
-     */
-    public static function stringStartsWith($prefix)
-    {
-        return new PHPUnit_Framework_Constraint_StringStartsWith($prefix);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_StringContains matcher object.
-     *
-     * @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)
-    {
-        return new PHPUnit_Framework_Constraint_StringContains($string, $case);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_StringEndsWith matcher object.
-     *
-     * @param  mixed                                       $suffix
-     * @return PHPUnit_Framework_Constraint_StringEndsWith
-     * @since  Method available since Release 3.4.0
-     */
-    public static function stringEndsWith($suffix)
-    {
-        return new PHPUnit_Framework_Constraint_StringEndsWith($suffix);
-    }
-
-    /**
-     * Returns a PHPUnit_Framework_Constraint_Count matcher object.
-     *
-     * @param  int                                $count
-     * @return PHPUnit_Framework_Constraint_Count
-     */
-    public static function countOf($count)
-    {
-        return new PHPUnit_Framework_Constraint_Count($count);
-    }
-    /**
-     * Fails a test with the given message.
-     *
-     * @param  string                                 $message
-     * @throws PHPUnit_Framework_AssertionFailedError
-     */
-    public static function fail($message = '')
-    {
-        throw new PHPUnit_Framework_AssertionFailedError($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
-     * @return mixed
-     * @throws PHPUnit_Framework_Exception
-     */
-    public static function readAttribute($classOrObject, $attributeName)
-    {
-        if (!is_string($attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'valid attribute name');
-        }
-
-        if (is_string($classOrObject)) {
-            if (!class_exists($classOrObject)) {
-                throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                    1,
-                    'class name'
-                );
-            }
-
-            return self::getStaticAttribute(
-                $classOrObject,
-                $attributeName
-            );
-        } elseif (is_object($classOrObject)) {
-            return self::getObjectAttribute(
-                $classOrObject,
-                $attributeName
-            );
-        } else {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                1,
-                'class name or object'
-            );
-        }
-    }
-
-    /**
-     * Returns the value of a static attribute.
-     * This also works for attributes that are declared protected or private.
-     *
-     * @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)
-    {
-        if (!is_string($className)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (!class_exists($className)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'class name');
-        }
-
-        if (!is_string($attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'valid attribute name');
-        }
-
-        $class = new ReflectionClass($className);
-
-        while ($class) {
-            $attributes = $class->getStaticProperties();
-
-            if (array_key_exists($attributeName, $attributes)) {
-                return $attributes[$attributeName];
-            }
-
-            $class = $class->getParentClass();
-        }
-
-        throw new PHPUnit_Framework_Exception(
-            sprintf(
-                'Attribute "%s" not found in class.',
-                $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
-     * @return mixed
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 4.0.0
-     */
-    public static function getObjectAttribute($object, $attributeName)
-    {
-        if (!is_object($object)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'object');
-        }
-
-        if (!is_string($attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'string');
-        }
-
-        if (!preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'valid attribute name');
-        }
-
-        try {
-            $attribute = new ReflectionProperty($object, $attributeName);
-        } catch (ReflectionException $e) {
-            $reflector = new ReflectionObject($object);
-
-            while ($reflector = $reflector->getParentClass()) {
-                try {
-                    $attribute = $reflector->getProperty($attributeName);
-                    break;
-                } catch (ReflectionException $e) {
-                }
-            }
-        }
-
-        if (isset($attribute)) {
-            if (!$attribute || $attribute->isPublic()) {
-                return $object->$attributeName;
-            }
-
-            $attribute->setAccessible(true);
-            $value = $attribute->getValue($object);
-            $attribute->setAccessible(false);
-
-            return $value;
-        }
-
-        throw new PHPUnit_Framework_Exception(
-            sprintf(
-                'Attribute "%s" not found in object.',
-                $attributeName
-            )
-        );
-    }
-
-    /**
-     * Mark the test as incomplete.
-     *
-     * @param  string                                $message
-     * @throws PHPUnit_Framework_IncompleteTestError
-     * @since  Method available since Release 3.0.0
-     */
-    public static function markTestIncomplete($message = '')
-    {
-        throw new PHPUnit_Framework_IncompleteTestError($message);
-    }
-
-    /**
-     * Mark the test as skipped.
-     *
-     * @param  string                             $message
-     * @throws PHPUnit_Framework_SkippedTestError
-     * @since  Method available since Release 3.0.0
-     */
-    public static function markTestSkipped($message = '')
-    {
-        throw new PHPUnit_Framework_SkippedTestError($message);
-    }
-
-    /**
-     * Return the current assertion count.
-     *
-     * @return int
-     * @since  Method available since Release 3.3.3
-     */
-    public static function getCount()
-    {
-        return self::$count;
-    }
-
-    /**
-     * Reset the assertion counter.
-     *
-     * @since  Method available since Release 3.3.3
-     */
-    public static function resetCount()
-    {
-        self::$count = 0;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php b/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php
deleted file mode 100644
index 1f49e5d..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php
+++ /dev/null
@@ -1,2419 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Returns a matcher that matches when the method is executed
- * zero or more times.
- *
- * @return PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount
- * @since  Method available since Release 3.0.0
- */
-function any()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::any',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsAnything matcher object.
- *
- * @return PHPUnit_Framework_Constraint_IsAnything
- * @since  Method available since Release 3.0.0
- */
-function anything()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::anything',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_ArrayHasKey matcher object.
- *
- * @param  mixed                                    $key
- * @return PHPUnit_Framework_Constraint_ArrayHasKey
- * @since  Method available since Release 3.0.0
- */
-function arrayHasKey($key)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::arrayHasKey',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an array has a specified key.
- *
- * @param mixed             $key
- * @param array|ArrayAccess $array
- * @param string            $message
- * @since  Method available since Release 3.0.0
- */
-function assertArrayHasKey($key, $array, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertArrayHasKey',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an array has a specified subset.
- *
- * @param array|ArrayAccess $subset
- * @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 = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertArraySubset',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an array does not have a specified key.
- *
- * @param mixed             $key
- * @param array|ArrayAccess $array
- * @param string            $message
- * @since  Method available since Release 3.0.0
- */
-function assertArrayNotHasKey($key, $array, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertArrayNotHasKey',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a haystack that is stored in a static attribute of a class
- * or an attribute of an object contains a needle.
- *
- * @param mixed  $needle
- * @param string $haystackAttributeName
- * @param mixed  $haystackClassOrObject
- * @param string $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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeContains',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a haystack that is stored in a static attribute of a class
- * or an attribute of an object contains only values of a given type.
- *
- * @param string $type
- * @param string $haystackAttributeName
- * @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 = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeContainsOnly',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts the number of elements of an array, Countable or Traversable
- * that is stored in an attribute.
- *
- * @param int    $expectedCount
- * @param string $haystackAttributeName
- * @param mixed  $haystackClassOrObject
- * @param string $message
- * @since Method available since Release 3.6.0
- */
-function assertAttributeCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeCount',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a static attribute of a class or an attribute of an object
- * is empty.
- *
- * @param string $haystackAttributeName
- * @param mixed  $haystackClassOrObject
- * @param string $message
- * @since Method available since Release 3.5.0
- */
-function assertAttributeEmpty($haystackAttributeName, $haystackClassOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeEmpty',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable is equal to an attribute of an object.
- *
- * @param mixed  $expected
- * @param string $actualAttributeName
- * @param string $actualClassOrObject
- * @param string $message
- * @param float  $delta
- * @param int    $maxDepth
- * @param bool   $canonicalize
- * @param bool   $ignoreCase
- */
-function assertAttributeEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeEquals',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an attribute is greater than another value.
- *
- * @param mixed  $expected
- * @param string $actualAttributeName
- * @param string $actualClassOrObject
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertAttributeGreaterThan($expected, $actualAttributeName, $actualClassOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeGreaterThan',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an attribute is greater than or equal to another value.
- *
- * @param mixed  $expected
- * @param string $actualAttributeName
- * @param string $actualClassOrObject
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertAttributeGreaterThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeGreaterThanOrEqual',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an attribute is of a given type.
- *
- * @param string $expected
- * @param string $attributeName
- * @param mixed  $classOrObject
- * @param string $message
- * @since Method available since Release 3.5.0
- */
-function assertAttributeInstanceOf($expected, $attributeName, $classOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeInstanceOf',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an attribute is of a given type.
- *
- * @param string $expected
- * @param string $attributeName
- * @param mixed  $classOrObject
- * @param string $message
- * @since Method available since Release 3.5.0
- */
-function assertAttributeInternalType($expected, $attributeName, $classOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeInternalType',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an attribute is smaller than another value.
- *
- * @param mixed  $expected
- * @param string $actualAttributeName
- * @param string $actualClassOrObject
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertAttributeLessThan($expected, $actualAttributeName, $actualClassOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeLessThan',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an attribute is smaller than or equal to another value.
- *
- * @param mixed  $expected
- * @param string $actualAttributeName
- * @param string $actualClassOrObject
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertAttributeLessThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeLessThanOrEqual',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a haystack that is stored in a static attribute of a class
- * or an attribute of an object does not contain a needle.
- *
- * @param mixed  $needle
- * @param string $haystackAttributeName
- * @param mixed  $haystackClassOrObject
- * @param string $message
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeNotContains',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a haystack that is stored in a static attribute of a class
- * or an attribute of an object does not contain only values of a given
- * type.
- *
- * @param string $type
- * @param string $haystackAttributeName
- * @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 = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeNotContainsOnly',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts the number of elements of an array, Countable or Traversable
- * that is stored in an attribute.
- *
- * @param int    $expectedCount
- * @param string $haystackAttributeName
- * @param mixed  $haystackClassOrObject
- * @param string $message
- * @since Method available since Release 3.6.0
- */
-function assertAttributeNotCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeNotCount',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a static attribute of a class or an attribute of an object
- * is not empty.
- *
- * @param string $haystackAttributeName
- * @param mixed  $haystackClassOrObject
- * @param string $message
- * @since Method available since Release 3.5.0
- */
-function assertAttributeNotEmpty($haystackAttributeName, $haystackClassOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeNotEmpty',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable is not equal to an attribute of an object.
- *
- * @param mixed  $expected
- * @param string $actualAttributeName
- * @param string $actualClassOrObject
- * @param string $message
- * @param float  $delta
- * @param int    $maxDepth
- * @param bool   $canonicalize
- * @param bool   $ignoreCase
- */
-function assertAttributeNotEquals($expected, $actualAttributeName, $actualClassOrObject, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeNotEquals',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an attribute is of a given type.
- *
- * @param string $expected
- * @param string $attributeName
- * @param mixed  $classOrObject
- * @param string $message
- * @since Method available since Release 3.5.0
- */
-function assertAttributeNotInstanceOf($expected, $attributeName, $classOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeNotInstanceOf',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an attribute is of a given type.
- *
- * @param string $expected
- * @param string $attributeName
- * @param mixed  $classOrObject
- * @param string $message
- * @since Method available since Release 3.5.0
- */
-function assertAttributeNotInternalType($expected, $attributeName, $classOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeNotInternalType',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable and an attribute of an object do not have the
- * same type and value.
- *
- * @param mixed  $expected
- * @param string $actualAttributeName
- * @param object $actualClassOrObject
- * @param string $message
- */
-function assertAttributeNotSame($expected, $actualAttributeName, $actualClassOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeNotSame',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable and an attribute of an object have the same type
- * and value.
- *
- * @param mixed  $expected
- * @param string $actualAttributeName
- * @param object $actualClassOrObject
- * @param string $message
- */
-function assertAttributeSame($expected, $actualAttributeName, $actualClassOrObject, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertAttributeSame',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a class has a specified attribute.
- *
- * @param string $attributeName
- * @param string $className
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertClassHasAttribute($attributeName, $className, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertClassHasAttribute',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a class has a specified static attribute.
- *
- * @param string $attributeName
- * @param string $className
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertClassHasStaticAttribute($attributeName, $className, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertClassHasStaticAttribute',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a class does not have a specified attribute.
- *
- * @param string $attributeName
- * @param string $className
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertClassNotHasAttribute($attributeName, $className, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertClassNotHasAttribute',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a class does not have a specified static attribute.
- *
- * @param string $attributeName
- * @param string $className
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertClassNotHasStaticAttribute($attributeName, $className, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertClassNotHasStaticAttribute',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a haystack contains a needle.
- *
- * @param mixed  $needle
- * @param mixed  $haystack
- * @param string $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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertContains',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a haystack contains only values of a given type.
- *
- * @param string $type
- * @param mixed  $haystack
- * @param bool   $isNativeType
- * @param string $message
- * @since  Method available since Release 3.1.4
- */
-function assertContainsOnly($type, $haystack, $isNativeType = null, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertContainsOnly',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a haystack contains only instances of a given classname
- *
- * @param string            $classname
- * @param array|Traversable $haystack
- * @param string            $message
- */
-function assertContainsOnlyInstancesOf($classname, $haystack, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertContainsOnlyInstancesOf',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts the number of elements of an array, Countable or Traversable.
- *
- * @param int    $expectedCount
- * @param mixed  $haystack
- * @param string $message
- */
-function assertCount($expectedCount, $haystack, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertCount',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable is empty.
- *
- * @param  mixed                                  $actual
- * @param  string                                 $message
- * @throws PHPUnit_Framework_AssertionFailedError
- */
-function assertEmpty($actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertEmpty',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a hierarchy of DOMElements matches.
- *
- * @param DOMElement $expectedElement
- * @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 = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertEqualXMLStructure',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two variables are equal.
- *
- * @param mixed  $expected
- * @param mixed  $actual
- * @param string $message
- * @param float  $delta
- * @param int    $maxDepth
- * @param bool   $canonicalize
- * @param bool   $ignoreCase
- */
-function assertEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertEquals',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a condition is not true.
- *
- * @param  bool                                   $condition
- * @param  string                                 $message
- * @throws PHPUnit_Framework_AssertionFailedError
- */
-function assertNotTrue($condition, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotTrue',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a condition is false.
- *
- * @param  bool                                   $condition
- * @param  string                                 $message
- * @throws PHPUnit_Framework_AssertionFailedError
- */
-function assertFalse($condition, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertFalse',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that the contents of one file is equal to the contents of another
- * file.
- *
- * @param string $expected
- * @param string $actual
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertFileEquals',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a file exists.
- *
- * @param string $filename
- * @param string $message
- * @since  Method available since Release 3.0.0
- */
-function assertFileExists($filename, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertFileExists',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that the contents of one file is not equal to the contents of
- * another file.
- *
- * @param string $expected
- * @param string $actual
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertFileNotEquals',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a file does not exist.
- *
- * @param string $filename
- * @param string $message
- * @since  Method available since Release 3.0.0
- */
-function assertFileNotExists($filename, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertFileNotExists',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a value is greater than another value.
- *
- * @param mixed  $expected
- * @param mixed  $actual
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertGreaterThan($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertGreaterThan',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a value is greater than or equal to another value.
- *
- * @param mixed  $expected
- * @param mixed  $actual
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertGreaterThanOrEqual($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertGreaterThanOrEqual',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable is of a given type.
- *
- * @param string $expected
- * @param mixed  $actual
- * @param string $message
- * @since Method available since Release 3.5.0
- */
-function assertInstanceOf($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertInstanceOf',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable is of a given type.
- *
- * @param string $expected
- * @param mixed  $actual
- * @param string $message
- * @since Method available since Release 3.5.0
- */
-function assertInternalType($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertInternalType',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string is a valid JSON string.
- *
- * @param string $actualJson
- * @param string $message
- * @since  Method available since Release 3.7.20
- */
-function assertJson($actualJson, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertJson',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two JSON files are equal.
- *
- * @param string $expectedFile
- * @param string $actualFile
- * @param string $message
- */
-function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertJsonFileEqualsJsonFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two JSON files are not equal.
- *
- * @param string $expectedFile
- * @param string $actualFile
- * @param string $message
- */
-function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFile, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertJsonFileNotEqualsJsonFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that the generated JSON encoded object and the content of the given file are equal.
- *
- * @param string $expectedFile
- * @param string $actualJson
- * @param string $message
- */
-function assertJsonStringEqualsJsonFile($expectedFile, $actualJson, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertJsonStringEqualsJsonFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two given JSON encoded objects or arrays are equal.
- *
- * @param string $expectedJson
- * @param string $actualJson
- * @param string $message
- */
-function assertJsonStringEqualsJsonString($expectedJson, $actualJson, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertJsonStringEqualsJsonString',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that the generated JSON encoded object and the content of the given file are not equal.
- *
- * @param string $expectedFile
- * @param string $actualJson
- * @param string $message
- */
-function assertJsonStringNotEqualsJsonFile($expectedFile, $actualJson, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertJsonStringNotEqualsJsonFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two given JSON encoded objects or arrays are not equal.
- *
- * @param string $expectedJson
- * @param string $actualJson
- * @param string $message
- */
-function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertJsonStringNotEqualsJsonString',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a value is smaller than another value.
- *
- * @param mixed  $expected
- * @param mixed  $actual
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertLessThan($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertLessThan',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a value is smaller than or equal to another value.
- *
- * @param mixed  $expected
- * @param mixed  $actual
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertLessThanOrEqual($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertLessThanOrEqual',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a haystack does not contain a needle.
- *
- * @param mixed  $needle
- * @param mixed  $haystack
- * @param string $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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotContains',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a haystack does not contain only values of a given type.
- *
- * @param string $type
- * @param mixed  $haystack
- * @param bool   $isNativeType
- * @param string $message
- * @since  Method available since Release 3.1.4
- */
-function assertNotContainsOnly($type, $haystack, $isNativeType = null, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotContainsOnly',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts the number of elements of an array, Countable or Traversable.
- *
- * @param int    $expectedCount
- * @param mixed  $haystack
- * @param string $message
- */
-function assertNotCount($expectedCount, $haystack, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotCount',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable is not empty.
- *
- * @param  mixed                                  $actual
- * @param  string                                 $message
- * @throws PHPUnit_Framework_AssertionFailedError
- */
-function assertNotEmpty($actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotEmpty',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two variables are not equal.
- *
- * @param mixed  $expected
- * @param mixed  $actual
- * @param string $message
- * @param float  $delta
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotEquals',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable is not of a given type.
- *
- * @param string $expected
- * @param mixed  $actual
- * @param string $message
- * @since Method available since Release 3.5.0
- */
-function assertNotInstanceOf($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotInstanceOf',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable is not of a given type.
- *
- * @param string $expected
- * @param mixed  $actual
- * @param string $message
- * @since Method available since Release 3.5.0
- */
-function assertNotInternalType($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotInternalType',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a condition is not false.
- *
- * @param  bool                                   $condition
- * @param  string                                 $message
- * @throws PHPUnit_Framework_AssertionFailedError
- */
-function assertNotFalse($condition, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotFalse',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable is not null.
- *
- * @param mixed  $actual
- * @param string $message
- */
-function assertNotNull($actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotNull',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string does not match a given regular expression.
- *
- * @param string $pattern
- * @param string $string
- * @param string $message
- * @since  Method available since Release 2.1.0
- */
-function assertNotRegExp($pattern, $string, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotRegExp',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two variables do not have the same type and value.
- * Used on objects, it asserts that two variables do not reference
- * the same object.
- *
- * @param mixed  $expected
- * @param mixed  $actual
- * @param string $message
- */
-function assertNotSame($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotSame',
-        func_get_args()
-    );
-}
-
-/**
- * Assert that the size of two arrays (or `Countable` or `Traversable` objects)
- * is not the same.
- *
- * @param array|Countable|Traversable $expected
- * @param array|Countable|Traversable $actual
- * @param string                      $message
- */
-function assertNotSameSize($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotSameSize',
-        func_get_args()
-    );
-}
-
-/**
- * This assertion is the exact opposite of assertTag().
- *
- * Rather than asserting that $matcher results in a match, it asserts that
- * $matcher does not match.
- *
- * @param array  $matcher
- * @param string $actual
- * @param string $message
- * @param bool   $isHtml
- * @since  Method available since Release 3.3.0
- */
-function assertNotTag($matcher, $actual, $message = '', $isHtml = true)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNotTag',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a variable is null.
- *
- * @param mixed  $actual
- * @param string $message
- */
-function assertNull($actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertNull',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an object has a specified attribute.
- *
- * @param string $attributeName
- * @param object $object
- * @param string $message
- * @since  Method available since Release 3.0.0
- */
-function assertObjectHasAttribute($attributeName, $object, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertObjectHasAttribute',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that an object does not have a specified attribute.
- *
- * @param string $attributeName
- * @param object $object
- * @param string $message
- * @since  Method available since Release 3.0.0
- */
-function assertObjectNotHasAttribute($attributeName, $object, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertObjectNotHasAttribute',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string matches a given regular expression.
- *
- * @param string $pattern
- * @param string $string
- * @param string $message
- */
-function assertRegExp($pattern, $string, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertRegExp',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two variables have the same type and value.
- * Used on objects, it asserts that two variables reference
- * the same object.
- *
- * @param mixed  $expected
- * @param mixed  $actual
- * @param string $message
- */
-function assertSame($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertSame',
-        func_get_args()
-    );
-}
-
-/**
- * Assert that the size of two arrays (or `Countable` or `Traversable` objects)
- * is the same.
- *
- * @param array|Countable|Traversable $expected
- * @param array|Countable|Traversable $actual
- * @param string                      $message
- */
-function assertSameSize($expected, $actual, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertSameSize',
-        func_get_args()
-    );
-}
-
-/**
- * Assert the presence, absence, or count of elements in a document matching
- * the CSS $selector, regardless of the contents of those elements.
- *
- * The first argument, $selector, is the CSS selector used to match
- * the elements in the $actual document.
- *
- * The second argument, $count, can be either boolean or numeric.
- * When boolean, it asserts for presence of elements matching the selector
- * (true) or absence of elements (false).
- * When numeric, it asserts the count of elements.
- *
- * assertSelectCount("#binder", true, $xml);  // any?
- * assertSelectCount(".binder", 3, $xml); // exactly 3?
- *
- * @param array  $selector
- * @param int    $count
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertSelectCount',
-        func_get_args()
-    );
-}
-
-/**
- * assertSelectEquals("#binder .name", "Chuck", true,  $xml);  // any?
- * assertSelectEquals("#binder .name", "Chuck", false, $xml);  // none?
- *
- * @param array  $selector
- * @param string $content
- * @param int    $count
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertSelectEquals',
-        func_get_args()
-    );
-}
-
-/**
- * assertSelectRegExp("#binder .name", "/Mike|Derek/", true, $xml); // any?
- * assertSelectRegExp("#binder .name", "/Mike|Derek/", 3, $xml);// 3?
- *
- * @param array  $selector
- * @param string $pattern
- * @param int    $count
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertSelectRegExp',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string ends not with a given prefix.
- *
- * @param string $suffix
- * @param string $string
- * @param string $message
- * @since  Method available since Release 3.4.0
- */
-function assertStringEndsNotWith($suffix, $string, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertStringEndsNotWith',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string ends with a given prefix.
- *
- * @param string $suffix
- * @param string $string
- * @param string $message
- * @since  Method available since Release 3.4.0
- */
-function assertStringEndsWith($suffix, $string, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertStringEndsWith',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that the contents of a string is equal
- * to the contents of a file.
- *
- * @param string $expectedFile
- * @param string $actualString
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertStringEqualsFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string matches a given format string.
- *
- * @param string $format
- * @param string $string
- * @param string $message
- * @since  Method available since Release 3.5.0
- */
-function assertStringMatchesFormat($format, $string, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertStringMatchesFormat',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string matches a given format file.
- *
- * @param string $formatFile
- * @param string $string
- * @param string $message
- * @since  Method available since Release 3.5.0
- */
-function assertStringMatchesFormatFile($formatFile, $string, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertStringMatchesFormatFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that the contents of a string is not equal
- * to the contents of a file.
- *
- * @param string $expectedFile
- * @param string $actualString
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertStringNotEqualsFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string does not match a given format string.
- *
- * @param string $format
- * @param string $string
- * @param string $message
- * @since  Method available since Release 3.5.0
- */
-function assertStringNotMatchesFormat($format, $string, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertStringNotMatchesFormat',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string does not match a given format string.
- *
- * @param string $formatFile
- * @param string $string
- * @param string $message
- * @since  Method available since Release 3.5.0
- */
-function assertStringNotMatchesFormatFile($formatFile, $string, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertStringNotMatchesFormatFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string starts not with a given prefix.
- *
- * @param string $prefix
- * @param string $string
- * @param string $message
- * @since  Method available since Release 3.4.0
- */
-function assertStringStartsNotWith($prefix, $string, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertStringStartsNotWith',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a string starts with a given prefix.
- *
- * @param string $prefix
- * @param string $string
- * @param string $message
- * @since  Method available since Release 3.4.0
- */
-function assertStringStartsWith($prefix, $string, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertStringStartsWith',
-        func_get_args()
-    );
-}
-
-/**
- * Evaluate an HTML or XML string and assert its structure and/or contents.
- *
- * The first argument ($matcher) is an associative array that specifies the
- * match criteria for the assertion:
- *
- *  - `id`   : the node with the given id attribute must match the
- * corresponding value.
- *  - `tag`  : the node type must match the corresponding value.
- *  - `attributes`   : a hash. The node's attributes must match the
- * corresponding values in the hash.
- *  - `content`  : The text content must match the given value.
- *  - `parent`   : a hash. The node's parent must match the
- * corresponding hash.
- *  - `child`: a hash. At least one of the node's immediate children
- * must meet the criteria described by the hash.
- *  - `ancestor` : a hash. At least one of the node's ancestors must
- * meet the criteria described by the hash.
- *  - `descendant`   : a hash. At least one of the node's descendants must
- * meet the criteria described by the hash.
- *  - `children` : a hash, for counting children of a node.
- * Accepts the keys:
- *- `count`: a number which must equal the number of children
- *   that match
- *- `less_than`: the number of matching children must be greater
- *   than this number
- *- `greater_than` : the number of matching children must be less than
- *   this number
- *- `only` : another hash consisting of the keys to use to match
- *   on the children, and only matching children will be
- *   counted
- *
- * <code>
- * // Matcher that asserts that there is an element with an id="my_id".
- * $matcher = array('id' => 'my_id');
- *
- * // Matcher that asserts that there is a "span" tag.
- * $matcher = array('tag' => 'span');
- *
- * // Matcher that asserts that there is a "span" tag with the content
- * // "Hello World".
- * $matcher = array('tag' => 'span', 'content' => 'Hello World');
- *
- * // Matcher that asserts that there is a "span" tag with content matching
- * // the regular expression pattern.
- * $matcher = array('tag' => 'span', 'content' => 'regexp:/Try P(HP|ython)/');
- *
- * // Matcher that asserts that there is a "span" with an "list" class
- * // attribute.
- * $matcher = array(
- *   'tag'=> 'span',
- *   'attributes' => array('class' => 'list')
- * );
- *
- * // Matcher that asserts that there is a "span" inside of a "div".
- * $matcher = array(
- *   'tag'=> 'span',
- *   'parent' => array('tag' => 'div')
- * );
- *
- * // Matcher that asserts that there is a "span" somewhere inside a
- * // "table".
- * $matcher = array(
- *   'tag'  => 'span',
- *   'ancestor' => array('tag' => 'table')
- * );
- *
- * // Matcher that asserts that there is a "span" with at least one "em"
- * // child.
- * $matcher = array(
- *   'tag'   => 'span',
- *   'child' => array('tag' => 'em')
- * );
- *
- * // Matcher that asserts that there is a "span" containing a (possibly
- * // nested) "strong" tag.
- * $matcher = array(
- *   'tag'=> 'span',
- *   'descendant' => array('tag' => 'strong')
- * );
- *
- * // Matcher that asserts that there is a "span" containing 5-10 "em" tags
- * // as immediate children.
- * $matcher = array(
- *   'tag'  => 'span',
- *   'children' => array(
- * 'less_than'=> 11,
- * 'greater_than' => 4,
- * 'only' => array('tag' => 'em')
- *   )
- * );
- *
- * // Matcher that asserts that there is a "div", with an "ul" ancestor and
- * // a "li" parent (with class="enum"), and containing a "span" descendant
- * // that contains an element with id="my_test" and the text "Hello World".
- * $matcher = array(
- *   'tag'=> 'div',
- *   'ancestor'   => array('tag' => 'ul'),
- *   'parent' => array(
- * 'tag'=> 'li',
- * 'attributes' => array('class' => 'enum')
- *   ),
- *   'descendant' => array(
- * 'tag'   => 'span',
- * 'child' => array(
- *   'id'  => 'my_test',
- *   'content' => 'Hello World'
- * )
- *   )
- * );
- *
- * // Use assertTag() to apply a $matcher to a piece of $html.
- * $this->assertTag($matcher, $html);
- *
- * // Use assertTag() to apply a $matcher to a piece of $xml.
- * $this->assertTag($matcher, $xml, '', false);
- * </code>
- *
- * The second argument ($actual) is a string containing either HTML or
- * XML text to be tested.
- *
- * The third argument ($message) is an optional message that will be
- * used if the assertion fails.
- *
- * The fourth argument ($html) is an optional flag specifying whether
- * to load the $actual string into a DOMDocument using the HTML or
- * XML load strategy.  It is true by default, which assumes the HTML
- * load strategy.  In many cases, this will be acceptable for XML as well.
- *
- * @param array  $matcher
- * @param string $actual
- * @param string $message
- * @param bool   $isHtml
- * @since  Method available since Release 3.3.0
- */
-function assertTag($matcher, $actual, $message = '', $isHtml = true)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertTag',
-        func_get_args()
-    );
-}
-
-/**
- * Evaluates a PHPUnit_Framework_Constraint matcher object.
- *
- * @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 = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertThat',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that a condition is true.
- *
- * @param  bool                                   $condition
- * @param  string                                 $message
- * @throws PHPUnit_Framework_AssertionFailedError
- */
-function assertTrue($condition, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertTrue',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two XML files are equal.
- *
- * @param string $expectedFile
- * @param string $actualFile
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertXmlFileEqualsXmlFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two XML files are not equal.
- *
- * @param string $expectedFile
- * @param string $actualFile
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertXmlFileNotEqualsXmlFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two XML documents are equal.
- *
- * @param string $expectedFile
- * @param string $actualXml
- * @param string $message
- * @since  Method available since Release 3.3.0
- */
-function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertXmlStringEqualsXmlFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two XML documents are equal.
- *
- * @param string $expectedXml
- * @param string $actualXml
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertXmlStringEqualsXmlString',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two XML documents are not equal.
- *
- * @param string $expectedFile
- * @param string $actualXml
- * @param string $message
- * @since  Method available since Release 3.3.0
- */
-function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertXmlStringNotEqualsXmlFile',
-        func_get_args()
-    );
-}
-
-/**
- * Asserts that two XML documents are not equal.
- *
- * @param string $expectedXml
- * @param string $actualXml
- * @param string $message
- * @since  Method available since Release 3.1.0
- */
-function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = '')
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::assertXmlStringNotEqualsXmlString',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a matcher that matches when the method is executed
- * at the given $index.
- *
- * @param  int                                                 $index
- * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex
- * @since  Method available since Release 3.0.0
- */
-function at($index)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::at',
-        func_get_args()
-    );
-}
-
-/**
- * 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()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::atLeastOnce',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_Attribute matcher object.
- *
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::attribute',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object
- * 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
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::attributeEqualTo',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_Callback matcher object.
- *
- * @param  callable                              $callback
- * @return PHPUnit_Framework_Constraint_Callback
- */
-function callback($callback)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::callback',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_ClassHasAttribute matcher object.
- *
- * @param  string                                         $attributeName
- * @return PHPUnit_Framework_Constraint_ClassHasAttribute
- * @since  Method available since Release 3.1.0
- */
-function classHasAttribute($attributeName)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::classHasAttribute',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_ClassHasStaticAttribute matcher
- * object.
- *
- * @param  string                                               $attributeName
- * @return PHPUnit_Framework_Constraint_ClassHasStaticAttribute
- * @since  Method available since Release 3.1.0
- */
-function classHasStaticAttribute($attributeName)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::classHasStaticAttribute',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_TraversableContains matcher
- * object.
- *
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::contains',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher
- * object.
- *
- * @param  string                                               $type
- * @return PHPUnit_Framework_Constraint_TraversableContainsOnly
- * @since  Method available since Release 3.1.4
- */
-function containsOnly($type)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::containsOnly',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher
- * object.
- *
- * @param  string                                               $classname
- * @return PHPUnit_Framework_Constraint_TraversableContainsOnly
- */
-function containsOnlyInstancesOf($classname)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::containsOnlyInstancesOf',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object.
- *
- * @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)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::equalTo',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a matcher that matches when the method is executed
- * exactly $count times.
- *
- * @param  int                                               $count
- * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
- * @since  Method available since Release 3.0.0
- */
-function exactly($count)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::exactly',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_FileExists matcher object.
- *
- * @return PHPUnit_Framework_Constraint_FileExists
- * @since  Method available since Release 3.0.0
- */
-function fileExists()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::fileExists',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_GreaterThan matcher object.
- *
- * @param  mixed                                    $value
- * @return PHPUnit_Framework_Constraint_GreaterThan
- * @since  Method available since Release 3.0.0
- */
-function greaterThan($value)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::greaterThan',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_Or matcher object that wraps
- * a PHPUnit_Framework_Constraint_IsEqual and a
- * PHPUnit_Framework_Constraint_GreaterThan matcher object.
- *
- * @param  mixed                           $value
- * @return PHPUnit_Framework_Constraint_Or
- * @since  Method available since Release 3.1.0
- */
-function greaterThanOrEqual($value)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::greaterThanOrEqual',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsIdentical matcher object.
- *
- * @param  mixed                                    $value
- * @return PHPUnit_Framework_Constraint_IsIdentical
- * @since  Method available since Release 3.0.0
- */
-function identicalTo($value)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::identicalTo',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsEmpty matcher object.
- *
- * @return PHPUnit_Framework_Constraint_IsEmpty
- * @since  Method available since Release 3.5.0
- */
-function isEmpty()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::isEmpty',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsFalse matcher object.
- *
- * @return PHPUnit_Framework_Constraint_IsFalse
- * @since  Method available since Release 3.3.0
- */
-function isFalse()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::isFalse',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsInstanceOf matcher object.
- *
- * @param  string                                    $className
- * @return PHPUnit_Framework_Constraint_IsInstanceOf
- * @since  Method available since Release 3.0.0
- */
-function isInstanceOf($className)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::isInstanceOf',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsJson matcher object.
- *
- * @return PHPUnit_Framework_Constraint_IsJson
- * @since  Method available since Release 3.7.20
- */
-function isJson()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::isJson',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsNull matcher object.
- *
- * @return PHPUnit_Framework_Constraint_IsNull
- * @since  Method available since Release 3.3.0
- */
-function isNull()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::isNull',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsTrue matcher object.
- *
- * @return PHPUnit_Framework_Constraint_IsTrue
- * @since  Method available since Release 3.3.0
- */
-function isTrue()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::isTrue',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_IsType matcher object.
- *
- * @param  string                              $type
- * @return PHPUnit_Framework_Constraint_IsType
- * @since  Method available since Release 3.0.0
- */
-function isType($type)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::isType',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_LessThan matcher object.
- *
- * @param  mixed                                 $value
- * @return PHPUnit_Framework_Constraint_LessThan
- * @since  Method available since Release 3.0.0
- */
-function lessThan($value)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::lessThan',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_Or matcher object that wraps
- * a PHPUnit_Framework_Constraint_IsEqual and a
- * PHPUnit_Framework_Constraint_LessThan matcher object.
- *
- * @param  mixed                           $value
- * @return PHPUnit_Framework_Constraint_Or
- * @since  Method available since Release 3.1.0
- */
-function lessThanOrEqual($value)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::lessThanOrEqual',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_And matcher object.
- *
- * @return PHPUnit_Framework_Constraint_And
- * @since  Method available since Release 3.0.0
- */
-function logicalAnd()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::logicalAnd',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_Not matcher object.
- *
- * @param  PHPUnit_Framework_Constraint     $constraint
- * @return PHPUnit_Framework_Constraint_Not
- * @since  Method available since Release 3.0.0
- */
-function logicalNot(PHPUnit_Framework_Constraint $constraint)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::logicalNot',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_Or matcher object.
- *
- * @return PHPUnit_Framework_Constraint_Or
- * @since  Method available since Release 3.0.0
- */
-function logicalOr()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::logicalOr',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_Xor matcher object.
- *
- * @return PHPUnit_Framework_Constraint_Xor
- * @since  Method available since Release 3.0.0
- */
-function logicalXor()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::logicalXor',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_StringMatches matcher object.
- *
- * @param  string                                     $string
- * @return PHPUnit_Framework_Constraint_StringMatches
- * @since  Method available since Release 3.5.0
- */
-function matches($string)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::matches',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_PCREMatch matcher object.
- *
- * @param  string                                 $pattern
- * @return PHPUnit_Framework_Constraint_PCREMatch
- * @since  Method available since Release 3.0.0
- */
-function matchesRegularExpression($pattern)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::matchesRegularExpression',
-        func_get_args()
-    );
-}
-
-/**
- * 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()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::never',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_ObjectHasAttribute matcher object.
- *
- * @param  string                                          $attributeName
- * @return PHPUnit_Framework_Constraint_ObjectHasAttribute
- * @since  Method available since Release 3.0.0
- */
-function objectHasAttribute($attributeName)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::objectHasAttribute',
-        func_get_args()
-    );
-}
-
-/**
- * @param  mixed                                              $value, ...
- * @return PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls
- * @since  Method available since Release 3.0.0
- */
-function onConsecutiveCalls()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::onConsecutiveCalls',
-        func_get_args()
-    );
-}
-
-/**
- * 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()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::once',
-        func_get_args()
-    );
-}
-
-/**
- * @param  int                                              $argumentIndex
- * @return PHPUnit_Framework_MockObject_Stub_ReturnArgument
- * @since  Method available since Release 3.3.0
- */
-function returnArgument($argumentIndex)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::returnArgument',
-        func_get_args()
-    );
-}
-
-/**
- * @param  mixed                                            $callback
- * @return PHPUnit_Framework_MockObject_Stub_ReturnCallback
- * @since  Method available since Release 3.3.0
- */
-function returnCallback($callback)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::returnCallback',
-        func_get_args()
-    );
-}
-
-/**
- * Returns the current object.
- *
- * 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()
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::returnSelf',
-        func_get_args()
-    );
-}
-
-/**
- * @param  mixed                                    $value
- * @return PHPUnit_Framework_MockObject_Stub_Return
- * @since  Method available since Release 3.0.0
- */
-function returnValue($value)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::returnValue',
-        func_get_args()
-    );
-}
-
-/**
- * @param  array                                            $valueMap
- * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap
- * @since  Method available since Release 3.6.0
- */
-function returnValueMap(array $valueMap)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::returnValueMap',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_StringContains matcher object.
- *
- * @param  string                                      $string
- * @param  bool                                        $case
- * @return PHPUnit_Framework_Constraint_StringContains
- * @since  Method available since Release 3.0.0
- */
-function stringContains($string, $case = true)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::stringContains',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_StringEndsWith matcher object.
- *
- * @param  mixed                                       $suffix
- * @return PHPUnit_Framework_Constraint_StringEndsWith
- * @since  Method available since Release 3.4.0
- */
-function stringEndsWith($suffix)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::stringEndsWith',
-        func_get_args()
-    );
-}
-
-/**
- * Returns a PHPUnit_Framework_Constraint_StringStartsWith matcher object.
- *
- * @param  mixed                                         $prefix
- * @return PHPUnit_Framework_Constraint_StringStartsWith
- * @since  Method available since Release 3.4.0
- */
-function stringStartsWith($prefix)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_Assert::stringStartsWith',
-        func_get_args()
-    );
-}
-
-/**
- * @param  Exception                                   $exception
- * @return PHPUnit_Framework_MockObject_Stub_Exception
- * @since  Method available since Release 3.1.0
- */
-function throwException(Exception $exception)
-{
-    return call_user_func_array(
-        'PHPUnit_Framework_TestCase::throwException',
-        func_get_args()
-    );
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/AssertionFailedError.php b/vendor/phpunit/phpunit/src/Framework/AssertionFailedError.php
deleted file mode 100644
index b554e6c..0000000
--- a/vendor/phpunit/phpunit/src/Framework/AssertionFailedError.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Thrown when an assertion failed.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Framework_AssertionFailedError extends PHPUnit_Framework_Exception implements PHPUnit_Framework_SelfDescribing
-{
-    /**
-     * Wrapper for getMessage() which is declared as final.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return $this->getMessage();
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php b/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php
deleted file mode 100644
index bf8d062..0000000
--- a/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * 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.
- *
- * @since Class available since Release 4.0.0
- */
-abstract class PHPUnit_Framework_BaseTestListener implements PHPUnit_Framework_TestListener
-{
-    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-    }
-
-    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
-    {
-    }
-
-    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-    }
-
-    public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-    }
-
-    public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-    }
-
-    public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
-    {
-    }
-
-    public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
-    {
-    }
-
-    public function startTest(PHPUnit_Framework_Test $test)
-    {
-    }
-
-    public function endTest(PHPUnit_Framework_Test $test, $time)
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/CodeCoverageException.php b/vendor/phpunit/phpunit/src/Framework/CodeCoverageException.php
deleted file mode 100644
index b75edd7..0000000
--- a/vendor/phpunit/phpunit/src/Framework/CodeCoverageException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Framework_CodeCoverageException extends PHPUnit_Framework_Exception
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint.php b/vendor/phpunit/phpunit/src/Framework/Constraint.php
deleted file mode 100644
index 327e1a9..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-use SebastianBergmann\Exporter\Exporter;
-
-/**
- * Abstract base class for constraints. which are placed upon any value.
- *
- * @since      Interface available since Release 3.0.0
- */
-abstract class PHPUnit_Framework_Constraint implements Countable, PHPUnit_Framework_SelfDescribing
-{
-    protected $exporter;
-
-    public function __construct()
-    {
-        $this->exporter = new Exporter;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        $success = false;
-
-        if ($this->matches($other)) {
-            $success = true;
-        }
-
-        if ($returnResult) {
-            return $success;
-        }
-
-        if (!$success) {
-            $this->fail($other, $description);
-        }
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * This method can be overridden to implement the evaluation algorithm.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return false;
-    }
-
-    /**
-     * Counts the number of constraint elements.
-     *
-     * @return int
-     * @since  Method available since Release 3.4.0
-     */
-    public function count()
-    {
-        return 1;
-    }
-
-    /**
-     * 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
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    protected function fail($other, $description, SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure = null)
-    {
-        $failureDescription = sprintf(
-            'Failed asserting that %s.',
-            $this->failureDescription($other)
-        );
-
-        $additionalFailureDescription = $this->additionalFailureDescription($other);
-
-        if ($additionalFailureDescription) {
-            $failureDescription .= "\n" . $additionalFailureDescription;
-        }
-
-        if (!empty($description)) {
-            $failureDescription = $description . "\n" . $failureDescription;
-        }
-
-        throw new PHPUnit_Framework_ExpectationFailedException(
-            $failureDescription,
-            $comparisonFailure
-        );
-    }
-
-    /**
-     * Return additional failure description where needed
-     *
-     * The function can be overridden to provide additional failure
-     * information like a diff
-     *
-     * @param  mixed  $other Evaluated value or object.
-     * @return string
-     */
-    protected function additionalFailureDescription($other)
-    {
-        return '';
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * The beginning of failure messages is "Failed asserting that" in most
-     * cases. This method should return the second part of that sentence.
-     *
-     * To provide additional failure information additionalFailureDescription
-     * can be used.
-     *
-     * @param  mixed  $other Evaluated value or object.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return $this->exporter->export($other) . ' ' . $this->toString();
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/And.php b/vendor/phpunit/phpunit/src/Framework/Constraint/And.php
deleted file mode 100644
index fa38aa5..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/And.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Logical AND.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_And extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var PHPUnit_Framework_Constraint[]
-     */
-    protected $constraints = array();
-
-    /**
-     * @var PHPUnit_Framework_Constraint
-     */
-    protected $lastConstraint = null;
-
-    /**
-     * @param  PHPUnit_Framework_Constraint[] $constraints
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function setConstraints(array $constraints)
-    {
-        $this->constraints = array();
-
-        foreach ($constraints as $constraint) {
-            if (!($constraint instanceof PHPUnit_Framework_Constraint)) {
-                throw new PHPUnit_Framework_Exception(
-                    'All parameters to ' . __CLASS__ .
-                    ' must be a constraint object.'
-                );
-            }
-
-            $this->constraints[] = $constraint;
-        }
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        $success    = true;
-        $constraint = null;
-
-        foreach ($this->constraints as $constraint) {
-            if (!$constraint->evaluate($other, $description, true)) {
-                $success = false;
-                break;
-            }
-        }
-
-        if ($returnResult) {
-            return $success;
-        }
-
-        if (!$success) {
-            $this->fail($other, $description);
-        }
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        $text = '';
-
-        foreach ($this->constraints as $key => $constraint) {
-            if ($key > 0) {
-                $text .= ' and ';
-            }
-
-            $text .= $constraint->toString();
-        }
-
-        return $text;
-    }
-
-    /**
-     * Counts the number of constraint elements.
-     *
-     * @return int
-     * @since  Method available since Release 3.4.0
-     */
-    public function count()
-    {
-        $count = 0;
-
-        foreach ($this->constraints as $constraint) {
-            $count += count($constraint);
-        }
-
-        return $count;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php
deleted file mode 100644
index 84da6fb..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the array it is evaluated for has a given key.
- *
- * Uses array_key_exists() to check if the key is found in the input array, if
- * not found the evaluation fails.
- *
- * The array key is passed in the constructor.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_ArrayHasKey extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var int|string
-     */
-    protected $key;
-
-    /**
-     * @param int|string $key
-     */
-    public function __construct($key)
-    {
-        parent::__construct();
-        $this->key = $key;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        if (is_array($other)) {
-            return array_key_exists($this->key, $other);
-        }
-
-        if ($other instanceof ArrayAccess) {
-            return $other->offsetExists($this->key);
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'has the key ' . $this->exporter->export($this->key);
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return 'an array ' . $this->toString();
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php
deleted file mode 100644
index 35dbd30..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the array it is evaluated for has a specified subset.
- *
- * Uses array_replace_recursive() to check if a key value subset is part of the
- * subject array.
- *
- * @since Class available since Release 4.4.0
- */
-class PHPUnit_Framework_Constraint_ArraySubset extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var array|ArrayAccess
-     */
-    protected $subset;
-
-    /**
-     * @var bool
-     */
-    protected $strict;
-
-    /**
-     * @param array|ArrayAccess $subset
-     * @param bool              $strict Check for object identity
-     */
-    public function __construct($subset, $strict = false)
-    {
-        parent::__construct();
-        $this->strict = $strict;
-        $this->subset = $subset;
-    }
-
-    /**
-     * 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.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        $patched = array_replace_recursive($other, $this->subset);
-
-        if ($this->strict) {
-            return $other === $patched;
-        } else {
-            return $other == $patched;
-        }
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'has the subset ' . $this->exporter->export($this->subset);
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return 'an array ' . $this->toString();
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php
deleted file mode 100644
index 1252665..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 3.1.0
- */
-class PHPUnit_Framework_Constraint_Attribute extends PHPUnit_Framework_Constraint_Composite
-{
-    /**
-     * @var string
-     */
-    protected $attributeName;
-
-    /**
-     * @param PHPUnit_Framework_Constraint $constraint
-     * @param string                       $attributeName
-     */
-    public function __construct(PHPUnit_Framework_Constraint $constraint, $attributeName)
-    {
-        parent::__construct($constraint);
-
-        $this->attributeName = $attributeName;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        return parent::evaluate(
-            PHPUnit_Framework_Assert::readAttribute(
-                $other,
-                $this->attributeName
-            ),
-            $description,
-            $returnResult
-        );
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'attribute "' . $this->attributeName . '" ' .
-               $this->innerConstraint->toString();
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return $this->toString();
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php
deleted file mode 100644
index 280d6b1..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that evaluates against a specified closure.
- */
-class PHPUnit_Framework_Constraint_Callback extends PHPUnit_Framework_Constraint
-{
-    private $callback;
-
-    /**
-     * @param  callable                    $callback
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function __construct($callback)
-    {
-        if (!is_callable($callback)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                1,
-                'callable'
-            );
-        }
-
-        parent::__construct();
-
-        $this->callback = $callback;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $value. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return call_user_func($this->callback, $other);
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'is accepted by specified callback';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php
deleted file mode 100644
index 53007a0..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the class it is evaluated for has a given
- * attribute.
- *
- * The attribute name is passed in the constructor.
- *
- * @since Class available since Release 3.1.0
- */
-class PHPUnit_Framework_Constraint_ClassHasAttribute extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var string
-     */
-    protected $attributeName;
-
-    /**
-     * @param string $attributeName
-     */
-    public function __construct($attributeName)
-    {
-        parent::__construct();
-        $this->attributeName = $attributeName;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        $class = new ReflectionClass($other);
-
-        return $class->hasProperty($this->attributeName);
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return sprintf(
-            'has attribute "%s"',
-            $this->attributeName
-        );
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return sprintf(
-            '%sclass "%s" %s',
-            is_object($other) ? 'object of ' : '',
-            is_object($other) ? get_class($other) : $other,
-            $this->toString()
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php
deleted file mode 100644
index b8c7c18..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the class it is evaluated for has a given
- * static attribute.
- *
- * The attribute name is passed in the constructor.
- *
- * @since Class available since Release 3.1.0
- */
-class PHPUnit_Framework_Constraint_ClassHasStaticAttribute extends PHPUnit_Framework_Constraint_ClassHasAttribute
-{
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        $class = new ReflectionClass($other);
-
-        if ($class->hasProperty($this->attributeName)) {
-            $attribute = $class->getProperty($this->attributeName);
-
-            return $attribute->isStatic();
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     * @since  Method available since Release 3.3.0
-     */
-    public function toString()
-    {
-        return sprintf(
-            'has static attribute "%s"',
-            $this->attributeName
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php
deleted file mode 100644
index 0da9431..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 3.1.0
- */
-abstract class PHPUnit_Framework_Constraint_Composite extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var PHPUnit_Framework_Constraint
-     */
-    protected $innerConstraint;
-
-    /**
-     * @param PHPUnit_Framework_Constraint $innerConstraint
-     */
-    public function __construct(PHPUnit_Framework_Constraint $innerConstraint)
-    {
-        parent::__construct();
-        $this->innerConstraint = $innerConstraint;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        try {
-            return $this->innerConstraint->evaluate(
-                $other,
-                $description,
-                $returnResult
-            );
-        } catch (PHPUnit_Framework_ExpectationFailedException $e) {
-            $this->fail($other, $description);
-        }
-    }
-
-    /**
-     * Counts the number of constraint elements.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return count($this->innerConstraint);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php
deleted file mode 100644
index a388da9..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 3.6.0
- */
-class PHPUnit_Framework_Constraint_Count extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var int
-     */
-    protected $expectedCount = 0;
-
-    /**
-     * @param int $expected
-     */
-    public function __construct($expected)
-    {
-        parent::__construct();
-        $this->expectedCount = $expected;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return $this->expectedCount === $this->getCountOf($other);
-    }
-
-    /**
-     * @param  mixed $other
-     * @return bool
-     */
-    protected function getCountOf($other)
-    {
-        if ($other instanceof Countable || is_array($other)) {
-            return count($other);
-        } elseif ($other instanceof Traversable) {
-            if ($other instanceof IteratorAggregate) {
-                $iterator = $other->getIterator();
-            } else {
-                $iterator = $other;
-            }
-
-            $key   = $iterator->key();
-            $count = iterator_count($iterator);
-
-            // manually rewind $iterator to previous key, since iterator_count
-            // moves pointer
-            if ($key !== null) {
-                $iterator->rewind();
-                while ($iterator->valid() && $key !== $iterator->key()) {
-                    $iterator->next();
-                }
-            }
-
-            return $count;
-        }
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return sprintf(
-            'actual size %d matches expected size %d',
-            $this->getCountOf($other),
-            $this->expectedCount
-        );
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return sprintf(
-            'count matches %d',
-            $this->expectedCount
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php
deleted file mode 100644
index ab3c136..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 3.6.6
- */
-class PHPUnit_Framework_Constraint_Exception extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var string
-     */
-    protected $className;
-
-    /**
-     * @param string $className
-     */
-    public function __construct($className)
-    {
-        parent::__construct();
-        $this->className = $className;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return $other instanceof $this->className;
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        if ($other !== null) {
-            $message = '';
-            if ($other instanceof Exception) {
-                $message = '. Message was: "' . $other->getMessage() . '" at'
-                        . "\n" . $other->getTraceAsString();
-            }
-
-            return sprintf(
-                'exception of type "%s" matches expected exception "%s"%s',
-                get_class($other),
-                $this->className,
-                $message
-            );
-        }
-
-        return sprintf(
-            'exception of type "%s" is thrown',
-            $this->className
-        );
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return sprintf(
-            'exception of type "%s"',
-            $this->className
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php
deleted file mode 100644
index 100d5f5..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 3.6.6
- */
-class PHPUnit_Framework_Constraint_ExceptionCode extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var int
-     */
-    protected $expectedCode;
-
-    /**
-     * @param int $expected
-     */
-    public function __construct($expected)
-    {
-        parent::__construct();
-        $this->expectedCode = $expected;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  Exception $other
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return (string) $other->getCode() == (string) $this->expectedCode;
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return sprintf(
-            '%s is equal to expected exception code %s',
-            $this->exporter->export($other->getCode()),
-            $this->exporter->export($this->expectedCode)
-        );
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'exception code is ';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php
deleted file mode 100644
index c6d955c..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 3.6.6
- */
-class PHPUnit_Framework_Constraint_ExceptionMessage extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var int
-     */
-    protected $expectedMessage;
-
-    /**
-     * @param string $expected
-     */
-    public function __construct($expected)
-    {
-        parent::__construct();
-        $this->expectedMessage = $expected;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  Exception $other
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return strpos($other->getMessage(), $this->expectedMessage) !== false;
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return sprintf(
-            "exception message '%s' contains '%s'",
-            $other->getMessage(),
-            $this->expectedMessage
-        );
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'exception message contains ';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php
deleted file mode 100644
index 34b15f4..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 4.3.0
- */
-class PHPUnit_Framework_Constraint_ExceptionMessageRegExp extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var int
-     */
-    protected $expectedMessageRegExp;
-
-    /**
-     * @param string $expected
-     */
-    public function __construct($expected)
-    {
-        parent::__construct();
-        $this->expectedMessageRegExp = $expected;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  Exception $other
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        $match = PHPUnit_Util_Regex::pregMatchSafe($this->expectedMessageRegExp, $other->getMessage());
-
-        if (false === $match) {
-            throw new PHPUnit_Framework_Exception(
-                "Invalid expected exception message regex given: '{$this->expectedMessageRegExp}'"
-            );
-        }
-
-        return 1 === $match;
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return sprintf(
-            "exception message '%s' matches '%s'",
-            $other->getMessage(),
-            $this->expectedMessageRegExp
-        );
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return 'exception message matches ';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php b/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php
deleted file mode 100644
index 58d2a18..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that checks if the file(name) that it is evaluated for exists.
- *
- * The file path to check is passed as $other in evaluate().
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_FileExists 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.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return file_exists($other);
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return sprintf(
-            'file "%s" exists',
-            $other
-        );
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'file exists';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php b/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php
deleted file mode 100644
index 557df5d..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the value it is evaluated for is greater
- * than a given value.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_GreaterThan extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var numeric
-     */
-    protected $value;
-
-    /**
-     * @param numeric $value
-     */
-    public function __construct($value)
-    {
-        parent::__construct();
-        $this->value = $value;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return $this->value < $other;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'is greater than ' . $this->exporter->export($this->value);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php
deleted file mode 100644
index e624abb..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that accepts any input value.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_IsAnything extends PHPUnit_Framework_Constraint
-{
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        return $returnResult ? true : null;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'is anything';
-    }
-
-    /**
-     * Counts the number of constraint elements.
-     *
-     * @return int
-     * @since  Method available since Release 3.5.0
-     */
-    public function count()
-    {
-        return 0;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php
deleted file mode 100644
index f0323a6..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that checks whether a variable is empty().
- *
- * @since Class available since Release 3.5.0
- */
-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.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        if ($other instanceof Countable) {
-            return count($other) === 0;
-        }
-
-        return empty($other);
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'is empty';
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        $type = gettype($other);
-
-        return sprintf(
-            '%s %s %s',
-            $type[0] == 'a' || $type[0] == 'o' ? 'an' : 'a',
-            $type,
-            $this->toString()
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php
deleted file mode 100644
index 2cf9c69..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that checks if one value is equal to another.
- *
- * Equality is checked with PHP's == operator, the operator is explained in
- * detail at {@url http://www.php.net/manual/en/types.comparisons.php}.
- * Two values are equal if they have the same value disregarding type.
- *
- * The expected value is passed in the constructor.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_IsEqual extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var mixed
-     */
-    protected $value;
-
-    /**
-     * @var float
-     */
-    protected $delta = 0.0;
-
-    /**
-     * @var int
-     */
-    protected $maxDepth = 10;
-
-    /**
-     * @var bool
-     */
-    protected $canonicalize = false;
-
-    /**
-     * @var bool
-     */
-    protected $ignoreCase = false;
-
-    /**
-     * @var SebastianBergmann\Comparator\ComparisonFailure
-     */
-    protected $lastFailure;
-
-    /**
-     * @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)
-    {
-        parent::__construct();
-
-        if (!is_numeric($delta)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'numeric');
-        }
-
-        if (!is_int($maxDepth)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(3, 'integer');
-        }
-
-        if (!is_bool($canonicalize)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(4, 'boolean');
-        }
-
-        if (!is_bool($ignoreCase)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(5, 'boolean');
-        }
-
-        $this->value        = $value;
-        $this->delta        = $delta;
-        $this->maxDepth     = $maxDepth;
-        $this->canonicalize = $canonicalize;
-        $this->ignoreCase   = $ignoreCase;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        // If $this->value and $other are identical, they are also equal.
-        // This is the most common path and will allow us to skip
-        // initialization of all the comparators.
-        if ($this->value === $other) {
-            return true;
-        }
-
-        $comparatorFactory = SebastianBergmann\Comparator\Factory::getInstance();
-
-        try {
-            $comparator = $comparatorFactory->getComparatorFor(
-                $this->value,
-                $other
-            );
-
-            $comparator->assertEquals(
-                $this->value,
-                $other,
-                $this->delta,
-                $this->canonicalize,
-                $this->ignoreCase
-            );
-        } catch (SebastianBergmann\Comparator\ComparisonFailure $f) {
-            if ($returnResult) {
-                return false;
-            }
-
-            throw new PHPUnit_Framework_ExpectationFailedException(
-                trim($description . "\n" . $f->getMessage()),
-                $f
-            );
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        $delta = '';
-
-        if (is_string($this->value)) {
-            if (strpos($this->value, "\n") !== false) {
-                return 'is equal to <text>';
-            } else {
-                return sprintf(
-                    'is equal to <string:%s>',
-                    $this->value
-                );
-            }
-        } else {
-            if ($this->delta != 0) {
-                $delta = sprintf(
-                    ' with delta <%F>',
-                    $this->delta
-                );
-            }
-
-            return sprintf(
-                'is equal to %s%s',
-                $this->exporter->export($this->value),
-                $delta
-            );
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php
deleted file mode 100644
index 9dee329..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that accepts false.
- *
- * @since Class available since Release 3.3.0
- */
-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.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return $other === false;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'is false';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php
deleted file mode 100644
index 981f36c..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that one value is identical to another.
- *
- * Identical check is performed with PHP's === operator, the operator is
- * explained in detail at
- * {@url http://www.php.net/manual/en/types.comparisons.php}.
- * Two values are identical if they have the same value and are of the same
- * type.
- *
- * The expected value is passed in the constructor.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_IsIdentical extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var float
-     */
-    const EPSILON = 0.0000000001;
-
-    /**
-     * @var mixed
-     */
-    protected $value;
-
-    /**
-     * @param mixed $value
-     */
-    public function __construct($value)
-    {
-        parent::__construct();
-        $this->value = $value;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        if (is_double($this->value) && is_double($other) &&
-            !is_infinite($this->value) && !is_infinite($other) &&
-            !is_nan($this->value) && !is_nan($other)) {
-            $success = abs($this->value - $other) < self::EPSILON;
-        } else {
-            $success = $this->value === $other;
-        }
-
-        if ($returnResult) {
-            return $success;
-        }
-
-        if (!$success) {
-            $f = null;
-
-            // if both values are strings, make sure a diff is generated
-            if (is_string($this->value) && is_string($other)) {
-                $f = new SebastianBergmann\Comparator\ComparisonFailure(
-                    $this->value,
-                    $other,
-                    $this->value,
-                    $other
-                );
-            }
-
-            $this->fail($other, $description, $f);
-        }
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        if (is_object($this->value) && is_object($other)) {
-            return 'two variables reference the same object';
-        }
-
-        if (is_string($this->value) && is_string($other)) {
-            return 'two strings are identical';
-        }
-
-        return parent::failureDescription($other);
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        if (is_object($this->value)) {
-            return 'is identical to an object of class "' .
-                   get_class($this->value) . '"';
-        } else {
-            return 'is identical to ' .
-                   $this->exporter->export($this->value);
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php
deleted file mode 100644
index 3c70cc5..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the object it is evaluated for is an instance
- * of a given class.
- *
- * The expected class name is passed in the constructor.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_IsInstanceOf extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var string
-     */
-    protected $className;
-
-    /**
-     * @param string $className
-     */
-    public function __construct($className)
-    {
-        parent::__construct();
-        $this->className = $className;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return ($other instanceof $this->className);
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return sprintf(
-            '%s is an instance of %s "%s"',
-            $this->exporter->shortenedExport($other),
-            $this->getType(),
-            $this->className
-        );
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return sprintf(
-            'is instance of %s "%s"',
-            $this->getType(),
-            $this->className
-        );
-    }
-
-    private function getType()
-    {
-        try {
-            $reflection = new ReflectionClass($this->className);
-            if ($reflection->isInterface()) {
-                return 'interface';
-            }
-        } catch (ReflectionException $e) {
-        }
-
-        return 'class';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php
deleted file mode 100644
index 34cda56..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that a string is valid JSON.
- *
- * @since Class available since Release 3.7.20
- */
-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.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        json_decode($other);
-        if (json_last_error()) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        json_decode($other);
-        $error = PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider::determineJsonError(
-            json_last_error()
-        );
-
-        return sprintf(
-            '%s is valid JSON (%s)',
-            $this->exporter->shortenedExport($other),
-            $error
-        );
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'is valid JSON';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php
deleted file mode 100644
index dd300c2..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that accepts null.
- *
- * @since Class available since Release 3.3.0
- */
-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.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return $other === null;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'is null';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php
deleted file mode 100644
index 273adf4..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that accepts true.
- *
- * @since Class available since Release 3.3.0
- */
-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.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return $other === true;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'is true';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php
deleted file mode 100644
index b93b336..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the value it is evaluated for is of a
- * specified type.
- *
- * The expected value is passed in the constructor.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_IsType extends PHPUnit_Framework_Constraint
-{
-    const TYPE_ARRAY    = 'array';
-    const TYPE_BOOL     = 'bool';
-    const TYPE_FLOAT    = 'float';
-    const TYPE_INT      = 'int';
-    const TYPE_NULL     = 'null';
-    const TYPE_NUMERIC  = 'numeric';
-    const TYPE_OBJECT   = 'object';
-    const TYPE_RESOURCE = 'resource';
-    const TYPE_STRING   = 'string';
-    const TYPE_SCALAR   = 'scalar';
-    const TYPE_CALLABLE = 'callable';
-
-    /**
-     * @var array
-     */
-    protected $types = array(
-        'array'    => true,
-        'boolean'  => true,
-        'bool'     => true,
-        'double'   => true,
-        'float'    => true,
-        'integer'  => true,
-        'int'      => true,
-        'null'     => true,
-        'numeric'  => true,
-        'object'   => true,
-        'real'     => true,
-        'resource' => true,
-        'string'   => true,
-        'scalar'   => true,
-        'callable' => true
-    );
-
-    /**
-     * @var string
-     */
-    protected $type;
-
-    /**
-     * @param  string                      $type
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function __construct($type)
-    {
-        parent::__construct();
-
-        if (!isset($this->types[$type])) {
-            throw new PHPUnit_Framework_Exception(
-                sprintf(
-                    'Type specified for PHPUnit_Framework_Constraint_IsType <%s> ' .
-                    'is not a valid type.',
-                    $type
-                )
-            );
-        }
-
-        $this->type = $type;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        switch ($this->type) {
-            case 'numeric':
-                return is_numeric($other);
-
-            case 'integer':
-            case 'int':
-                return is_integer($other);
-
-            case 'double':
-            case 'float':
-            case 'real':
-                return is_float($other);
-
-            case 'string':
-                return is_string($other);
-
-            case 'boolean':
-            case 'bool':
-                return is_bool($other);
-
-            case 'null':
-                return is_null($other);
-
-            case 'array':
-                return is_array($other);
-
-            case 'object':
-                return is_object($other);
-
-            case 'resource':
-                return is_resource($other) || is_string(@get_resource_type($other));
-
-            case 'scalar':
-                return is_scalar($other);
-
-            case 'callable':
-                return is_callable($other);
-        }
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return sprintf(
-            'is of type "%s"',
-            $this->type
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php
deleted file mode 100644
index 5428986..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Asserts whether or not two JSON objects are equal.
- *
- * @since Class available since Release 3.7.0
- */
-class PHPUnit_Framework_Constraint_JsonMatches extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var string
-     */
-    protected $value;
-
-    /**
-     * Creates a new constraint.
-     *
-     * @param string $value
-     */
-    public function __construct($value)
-    {
-        parent::__construct();
-        $this->value = $value;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * This method can be overridden to implement the evaluation algorithm.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        $decodedOther = json_decode($other);
-        if (json_last_error()) {
-            return false;
-        }
-
-        $decodedValue = json_decode($this->value);
-        if (json_last_error()) {
-            return false;
-        }
-
-        return $decodedOther == $decodedValue;
-    }
-
-    /**
-     * Returns a string representation of the object.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return sprintf(
-            'matches JSON string "%s"',
-            $this->value
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php
deleted file mode 100644
index e8fb1fb..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Provides human readable messages for each JSON error.
- *
- * @since Class available since Release 3.7.0
- */
-class PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider
-{
-    /**
-     * Translates JSON error to a human readable string.
-     *
-     * @param  string $error
-     * @param  string $prefix
-     * @return string
-     */
-    public static function determineJsonError($error, $prefix = '')
-    {
-        switch ($error) {
-            case JSON_ERROR_NONE:
-                return;
-            case JSON_ERROR_DEPTH:
-                return $prefix . 'Maximum stack depth exceeded';
-            case JSON_ERROR_STATE_MISMATCH:
-                return $prefix . 'Underflow or the modes mismatch';
-            case JSON_ERROR_CTRL_CHAR:
-                return $prefix . 'Unexpected control character found';
-            case JSON_ERROR_SYNTAX:
-                return $prefix . 'Syntax error, malformed JSON';
-            case JSON_ERROR_UTF8:
-                return $prefix . 'Malformed UTF-8 characters, possibly incorrectly encoded';
-            default:
-                return $prefix . 'Unknown error';
-        }
-    }
-
-    /**
-     * Translates a given type to a human readable message prefix.
-     *
-     * @param  string $type
-     * @return string
-     */
-    public static function translateTypeToPrefix($type)
-    {
-        switch (strtolower($type)) {
-            case 'expected':
-                $prefix = 'Expected value JSON decode error - ';
-                break;
-            case 'actual':
-                $prefix = 'Actual value JSON decode error - ';
-                break;
-            default:
-                $prefix = '';
-                break;
-        }
-
-        return $prefix;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php b/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php
deleted file mode 100644
index a4fffe3..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the value it is evaluated for is less than
- * a given value.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_LessThan extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var numeric
-     */
-    protected $value;
-
-    /**
-     * @param numeric $value
-     */
-    public function __construct($value)
-    {
-        parent::__construct();
-        $this->value = $value;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return $this->value > $other;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'is less than ' . $this->exporter->export($this->value);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php
deleted file mode 100644
index 21bb14a..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Logical NOT.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_Not extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var PHPUnit_Framework_Constraint
-     */
-    protected $constraint;
-
-    /**
-     * @param PHPUnit_Framework_Constraint $constraint
-     */
-    public function __construct($constraint)
-    {
-        parent::__construct();
-
-        if (!($constraint instanceof PHPUnit_Framework_Constraint)) {
-            $constraint = new PHPUnit_Framework_Constraint_IsEqual($constraint);
-        }
-
-        $this->constraint = $constraint;
-    }
-
-    /**
-     * @param  string $string
-     * @return string
-     */
-    public static function negate($string)
-    {
-        return str_replace(
-            array(
-            'contains ',
-            'exists',
-            'has ',
-            'is ',
-            'are ',
-            'matches ',
-            'starts with ',
-            'ends with ',
-            'reference ',
-            'not not '
-            ),
-            array(
-            'does not contain ',
-            'does not exist',
-            'does not have ',
-            'is not ',
-            'are not ',
-            'does not match ',
-            'starts not with ',
-            'ends not with ',
-            'don\'t reference ',
-            'not '
-            ),
-            $string
-        );
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        $success = !$this->constraint->evaluate($other, $description, true);
-
-        if ($returnResult) {
-            return $success;
-        }
-
-        if (!$success) {
-            $this->fail($other, $description);
-        }
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        switch (get_class($this->constraint)) {
-            case 'PHPUnit_Framework_Constraint_And':
-            case 'PHPUnit_Framework_Constraint_Not':
-            case 'PHPUnit_Framework_Constraint_Or':
-                return 'not( ' . $this->constraint->failureDescription($other) . ' )';
-
-            default:
-                return self::negate(
-                    $this->constraint->failureDescription($other)
-                );
-        }
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        switch (get_class($this->constraint)) {
-            case 'PHPUnit_Framework_Constraint_And':
-            case 'PHPUnit_Framework_Constraint_Not':
-            case 'PHPUnit_Framework_Constraint_Or':
-                return 'not( ' . $this->constraint->toString() . ' )';
-
-            default:
-                return self::negate(
-                    $this->constraint->toString()
-                );
-        }
-    }
-
-    /**
-     * Counts the number of constraint elements.
-     *
-     * @return int
-     * @since  Method available since Release 3.4.0
-     */
-    public function count()
-    {
-        return count($this->constraint);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php
deleted file mode 100644
index 7c6453a..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the object it is evaluated for has a given
- * attribute.
- *
- * The attribute name is passed in the constructor.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_ObjectHasAttribute extends PHPUnit_Framework_Constraint_ClassHasAttribute
-{
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        $object = new ReflectionObject($other);
-
-        return $object->hasProperty($this->attributeName);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php
deleted file mode 100644
index 4a9e71a..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Logical OR.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_Or extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var PHPUnit_Framework_Constraint[]
-     */
-    protected $constraints = array();
-
-    /**
-     * @param PHPUnit_Framework_Constraint[] $constraints
-     */
-    public function setConstraints(array $constraints)
-    {
-        $this->constraints = array();
-
-        foreach ($constraints as $constraint) {
-            if (!($constraint instanceof PHPUnit_Framework_Constraint)) {
-                $constraint = new PHPUnit_Framework_Constraint_IsEqual(
-                    $constraint
-                );
-            }
-
-            $this->constraints[] = $constraint;
-        }
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        $success    = false;
-        $constraint = null;
-
-        foreach ($this->constraints as $constraint) {
-            if ($constraint->evaluate($other, $description, true)) {
-                $success = true;
-                break;
-            }
-        }
-
-        if ($returnResult) {
-            return $success;
-        }
-
-        if (!$success) {
-            $this->fail($other, $description);
-        }
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        $text = '';
-
-        foreach ($this->constraints as $key => $constraint) {
-            if ($key > 0) {
-                $text .= ' or ';
-            }
-
-            $text .= $constraint->toString();
-        }
-
-        return $text;
-    }
-
-    /**
-     * Counts the number of constraint elements.
-     *
-     * @return int
-     * @since  Method available since Release 3.4.0
-     */
-    public function count()
-    {
-        $count = 0;
-
-        foreach ($this->constraints as $constraint) {
-            $count += count($constraint);
-        }
-
-        return $count;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php b/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php
deleted file mode 100644
index 9465b10..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the string it is evaluated for matches
- * a regular expression.
- *
- * Checks a given value using the Perl Compatible Regular Expression extension
- * in PHP. The pattern is matched by executing preg_match().
- *
- * The pattern string passed in the constructor.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_PCREMatch extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var string
-     */
-    protected $pattern;
-
-    /**
-     * @param string $pattern
-     */
-    public function __construct($pattern)
-    {
-        parent::__construct();
-        $this->pattern = $pattern;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return preg_match($this->pattern, $other) > 0;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return sprintf(
-            'matches PCRE pattern "%s"',
-            $this->pattern
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php b/vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php
deleted file mode 100644
index e372c1a..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 3.6.0
- */
-class PHPUnit_Framework_Constraint_SameSize extends PHPUnit_Framework_Constraint_Count
-{
-    /**
-     * @var int
-     */
-    protected $expectedCount;
-
-    /**
-     * @param int $expected
-     */
-    public function __construct($expected)
-    {
-        parent::__construct($this->getCountOf($expected));
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php
deleted file mode 100644
index 0d3d7b5..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the string it is evaluated for contains
- * a given string.
- *
- * Uses strpos() to find the position of the string in the input, if not found
- * the evaluation fails.
- *
- * The sub-string is passed in the constructor.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_StringContains extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var string
-     */
-    protected $string;
-
-    /**
-     * @var bool
-     */
-    protected $ignoreCase;
-
-    /**
-     * @param string $string
-     * @param bool   $ignoreCase
-     */
-    public function __construct($string, $ignoreCase = false)
-    {
-        parent::__construct();
-
-        $this->string     = $string;
-        $this->ignoreCase = $ignoreCase;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        if ($this->ignoreCase) {
-            return stripos($other, $this->string) !== false;
-        } else {
-            return strpos($other, $this->string) !== false;
-        }
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        if ($this->ignoreCase) {
-            $string = strtolower($this->string);
-        } else {
-            $string = $this->string;
-        }
-
-        return sprintf(
-            'contains "%s"',
-            $string
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php b/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php
deleted file mode 100644
index 1df062c..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the string it is evaluated for ends with a given
- * suffix.
- *
- * @since Class available since Release 3.4.0
- */
-class PHPUnit_Framework_Constraint_StringEndsWith extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var string
-     */
-    protected $suffix;
-
-    /**
-     * @param string $suffix
-     */
-    public function __construct($suffix)
-    {
-        parent::__construct();
-        $this->suffix = $suffix;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return substr($other, 0 - strlen($this->suffix)) == $this->suffix;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'ends with "' . $this->suffix . '"';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringMatches.php b/vendor/phpunit/phpunit/src/Framework/Constraint/StringMatches.php
deleted file mode 100644
index af42fc1..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringMatches.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-use SebastianBergmann\Diff\Differ;
-
-/**
- * ...
- *
- * @since Class available since Release 3.5.0
- */
-class PHPUnit_Framework_Constraint_StringMatches extends PHPUnit_Framework_Constraint_PCREMatch
-{
-    /**
-     * @var string
-     */
-    protected $string;
-
-    /**
-     * @param string $string
-     */
-    public function __construct($string)
-    {
-        parent::__construct($string);
-
-        $this->pattern = $this->createPatternFromFormat(
-            preg_replace('/\r\n/', "\n", $string)
-        );
-
-        $this->string = $string;
-    }
-
-    protected function failureDescription($other)
-    {
-        return 'format description matches text';
-    }
-
-    protected function additionalFailureDescription($other)
-    {
-        $from = preg_split('(\r\n|\r|\n)', $this->string);
-        $to   = preg_split('(\r\n|\r|\n)', $other);
-
-        foreach ($from as $index => $line) {
-            if (isset($to[$index]) && $line !== $to[$index]) {
-                $line = $this->createPatternFromFormat($line);
-
-                if (preg_match($line, $to[$index]) > 0) {
-                    $from[$index] = $to[$index];
-                }
-            }
-        }
-
-        $this->string = implode("\n", $from);
-        $other        = implode("\n", $to);
-
-        $differ = new Differ("--- Expected\n+++ Actual\n");
-
-        return $differ->diff($this->string, $other);
-    }
-
-    protected function createPatternFromFormat($string)
-    {
-        $string = str_replace(
-            array(
-            '%e',
-            '%s',
-            '%S',
-            '%a',
-            '%A',
-            '%w',
-            '%i',
-            '%d',
-            '%x',
-            '%f',
-            '%c'
-            ),
-            array(
-            '\\' . DIRECTORY_SEPARATOR,
-            '[^\r\n]+',
-            '[^\r\n]*',
-            '.+',
-            '.*',
-            '\s*',
-            '[+-]?\d+',
-            '\d+',
-            '[0-9a-fA-F]+',
-            '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?',
-            '.'
-            ),
-            preg_quote($string, '/')
-        );
-
-        return '/^' . $string . '$/s';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php b/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php
deleted file mode 100644
index b373855..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the string it is evaluated for begins with a
- * given prefix.
- *
- * @since Class available since Release 3.4.0
- */
-class PHPUnit_Framework_Constraint_StringStartsWith extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var string
-     */
-    protected $prefix;
-
-    /**
-     * @param string $prefix
-     */
-    public function __construct($prefix)
-    {
-        parent::__construct();
-        $this->prefix = $prefix;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        return strpos($other, $this->prefix) === 0;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'starts with "' . $this->prefix . '"';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php
deleted file mode 100644
index 39b98d9..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the Traversable it is applied to contains
- * a given value.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_TraversableContains extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var bool
-     */
-    protected $checkForObjectIdentity;
-
-    /**
-     * @var bool
-     */
-    protected $checkForNonObjectIdentity;
-
-    /**
-     * @var mixed
-     */
-    protected $value;
-
-    /**
-     * @param  mixed                       $value
-     * @param  bool                        $checkForObjectIdentity
-     * @param  bool                        $checkForNonObjectIdentity
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function __construct($value, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
-    {
-        parent::__construct();
-
-        if (!is_bool($checkForObjectIdentity)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'boolean');
-        }
-
-        if (!is_bool($checkForNonObjectIdentity)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(3, 'boolean');
-        }
-
-        $this->checkForObjectIdentity    = $checkForObjectIdentity;
-        $this->checkForNonObjectIdentity = $checkForNonObjectIdentity;
-        $this->value                     = $value;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other. Returns true if the
-     * constraint is met, false otherwise.
-     *
-     * @param  mixed $other Value or object to evaluate.
-     * @return bool
-     */
-    protected function matches($other)
-    {
-        if ($other instanceof SplObjectStorage) {
-            return $other->contains($this->value);
-        }
-
-        if (is_object($this->value)) {
-            foreach ($other as $element) {
-                if (($this->checkForObjectIdentity &&
-                     $element === $this->value) ||
-                    (!$this->checkForObjectIdentity &&
-                     $element == $this->value)) {
-                    return true;
-                }
-            }
-        } else {
-            foreach ($other as $element) {
-                if (($this->checkForNonObjectIdentity &&
-                     $element === $this->value) ||
-                    (!$this->checkForNonObjectIdentity &&
-                     $element == $this->value)) {
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        if (is_string($this->value) && strpos($this->value, "\n") !== false) {
-            return 'contains "' . $this->value . '"';
-        } else {
-            return 'contains ' . $this->exporter->export($this->value);
-        }
-    }
-
-    /**
-     * Returns the description of the failure
-     *
-     * 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.
-     * @return string
-     */
-    protected function failureDescription($other)
-    {
-        return sprintf(
-            '%s %s',
-            is_array($other) ? 'an array' : 'a traversable',
-            $this->toString()
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php b/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php
deleted file mode 100644
index f2f76c4..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Constraint that asserts that the Traversable it is applied to contains
- * only values of a given type.
- *
- * @since Class available since Release 3.1.4
- */
-class PHPUnit_Framework_Constraint_TraversableContainsOnly extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var PHPUnit_Framework_Constraint
-     */
-    protected $constraint;
-
-    /**
-     * @var string
-     */
-    protected $type;
-
-    /**
-     * @param string $type
-     * @param bool   $isNativeType
-     */
-    public function __construct($type, $isNativeType = true)
-    {
-        parent::__construct();
-
-        if ($isNativeType) {
-            $this->constraint = new PHPUnit_Framework_Constraint_IsType($type);
-        } else {
-            $this->constraint = new PHPUnit_Framework_Constraint_IsInstanceOf(
-                $type
-            );
-        }
-
-        $this->type = $type;
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        $success = true;
-
-        foreach ($other as $item) {
-            if (!$this->constraint->evaluate($item, '', true)) {
-                $success = false;
-                break;
-            }
-        }
-
-        if ($returnResult) {
-            return $success;
-        }
-
-        if (!$success) {
-            $this->fail($other, $description);
-        }
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return 'contains only values of type "' . $this->type . '"';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php
deleted file mode 100644
index 9ce4d06..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Logical XOR.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_Constraint_Xor extends PHPUnit_Framework_Constraint
-{
-    /**
-     * @var PHPUnit_Framework_Constraint[]
-     */
-    protected $constraints = array();
-
-    /**
-     * @param PHPUnit_Framework_Constraint[] $constraints
-     */
-    public function setConstraints(array $constraints)
-    {
-        $this->constraints = array();
-
-        foreach ($constraints as $constraint) {
-            if (!($constraint instanceof PHPUnit_Framework_Constraint)) {
-                $constraint = new PHPUnit_Framework_Constraint_IsEqual(
-                    $constraint
-                );
-            }
-
-            $this->constraints[] = $constraint;
-        }
-    }
-
-    /**
-     * Evaluates the constraint for parameter $other
-     *
-     * If $returnResult is set to false (the default), an exception is thrown
-     * in case of a failure. null is returned otherwise.
-     *
-     * If $returnResult is true, the result of the evaluation is returned as
-     * 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
-     * @return mixed
-     * @throws PHPUnit_Framework_ExpectationFailedException
-     */
-    public function evaluate($other, $description = '', $returnResult = false)
-    {
-        $success    = true;
-        $lastResult = null;
-        $constraint = null;
-
-        foreach ($this->constraints as $constraint) {
-            $result = $constraint->evaluate($other, $description, true);
-
-            if ($result === $lastResult) {
-                $success = false;
-                break;
-            }
-
-            $lastResult = $result;
-        }
-
-        if ($returnResult) {
-            return $success;
-        }
-
-        if (!$success) {
-            $this->fail($other, $description);
-        }
-    }
-
-    /**
-     * Returns a string representation of the constraint.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        $text = '';
-
-        foreach ($this->constraints as $key => $constraint) {
-            if ($key > 0) {
-                $text .= ' xor ';
-            }
-
-            $text .= $constraint->toString();
-        }
-
-        return $text;
-    }
-
-    /**
-     * Counts the number of constraint elements.
-     *
-     * @return int
-     * @since  Method available since Release 3.4.0
-     */
-    public function count()
-    {
-        $count = 0;
-
-        foreach ($this->constraints as $constraint) {
-            $count += count($constraint);
-        }
-
-        return $count;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Error.php b/vendor/phpunit/phpunit/src/Framework/Error.php
deleted file mode 100644
index 9e793fd..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Error.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Wrapper for PHP errors.
- *
- * @since Class available since Release 2.2.0
- */
-class PHPUnit_Framework_Error extends PHPUnit_Framework_Exception
-{
-    /**
-     * Constructor.
-     *
-     * @param string    $message
-     * @param int       $code
-     * @param string    $file
-     * @param int       $line
-     * @param Exception $previous
-     */
-    public function __construct($message, $code, $file, $line, Exception $previous = null)
-    {
-        parent::__construct($message, $code, $previous);
-
-        $this->file  = $file;
-        $this->line  = $line;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php b/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php
deleted file mode 100644
index 2ab5598..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Wrapper for PHP deprecated errors.
- * You can disable deprecated-to-exception conversion by setting
- *
- * <code>
- * PHPUnit_Framework_Error_Deprecated::$enabled = false;
- * </code>
- *
- * @since Class available since Release 3.3.0
- */
-class PHPUnit_Framework_Error_Deprecated extends PHPUnit_Framework_Error
-{
-    public static $enabled = true;
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Notice.php b/vendor/phpunit/phpunit/src/Framework/Error/Notice.php
deleted file mode 100644
index 477ad93..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Error/Notice.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Wrapper for PHP notices.
- * You can disable notice-to-exception conversion by setting
- *
- * <code>
- * PHPUnit_Framework_Error_Notice::$enabled = false;
- * </code>
- *
- * @since Class available since Release 3.3.0
- */
-class PHPUnit_Framework_Error_Notice extends PHPUnit_Framework_Error
-{
-    public static $enabled = true;
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Warning.php b/vendor/phpunit/phpunit/src/Framework/Error/Warning.php
deleted file mode 100644
index 9240bcb..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Error/Warning.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Wrapper for PHP warnings.
- * You can disable notice-to-exception conversion by setting
- *
- * <code>
- * PHPUnit_Framework_Error_Warning::$enabled = false;
- * </code>
- *
- * @since Class available since Release 3.3.0
- */
-class PHPUnit_Framework_Error_Warning extends PHPUnit_Framework_Error
-{
-    public static $enabled = true;
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception.php b/vendor/phpunit/phpunit/src/Framework/Exception.php
deleted file mode 100644
index 4274c12..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Exception.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Base class for all PHPUnit Framework exceptions.
- *
- * Ensures that exceptions thrown during a test run do not leave stray
- * references behind.
- *
- * Every Exception contains a stack trace. Each stack frame contains the 'args'
- * of the called function. The function arguments can contain references to
- * instantiated objects. The references prevent the objects from being
- * destructed (until test results are eventually printed), so memory cannot be
- * freed up.
- *
- * With enabled process isolation, test results are serialized in the child
- * process and unserialized in the parent process. The stack trace of Exceptions
- * may contain objects that cannot be serialized or unserialized (e.g., PDO
- * connections). Unserializing user-space objects from the child process into
- * 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
-{
-    /**
-     * @var array
-     */
-    protected $serializableTrace;
-
-    public function __construct($message = '', $code = 0, Exception $previous = null)
-    {
-        parent::__construct($message, $code, $previous);
-
-        $this->serializableTrace = $this->getTrace();
-        foreach ($this->serializableTrace as $i => $call) {
-            unset($this->serializableTrace[$i]['args']);
-        }
-    }
-
-    /**
-     * Returns the serializable trace (without 'args').
-     *
-     * @return array
-     */
-    public function getSerializableTrace()
-    {
-        return $this->serializableTrace;
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        $string = PHPUnit_Framework_TestFailure::exceptionToString($this);
-
-        if ($trace = PHPUnit_Util_Filter::getFilteredStacktrace($this)) {
-            $string .= "\n" . $trace;
-        }
-
-        return $string;
-    }
-
-    public function __sleep()
-    {
-        return array_keys(get_object_vars($this));
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php b/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php
deleted file mode 100644
index fa3e9ee..0000000
--- a/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Wraps Exceptions thrown by code under test.
- *
- * Re-instantiates Exceptions thrown by user-space code to retain their original
- * class names, properties, and stack traces (but without arguments).
- *
- * Unlike PHPUnit_Framework_Exception, the complete stack of previous Exceptions
- * is processed.
- *
- * @since Class available since Release 4.3.0
- */
-class PHPUnit_Framework_ExceptionWrapper extends PHPUnit_Framework_Exception
-{
-    /**
-     * @var string
-     */
-    protected $classname;
-
-    /**
-     * @var PHPUnit_Framework_ExceptionWrapper|null
-     */
-    protected $previous;
-
-    /**
-     * @param Throwable|Exception $e
-     */
-    public function __construct($e)
-    {
-        // PDOException::getCode() is a string.
-        // @see http://php.net/manual/en/class.pdoexception.php#95812
-        parent::__construct($e->getMessage(), (int) $e->getCode());
-
-        $this->classname = get_class($e);
-        $this->file      = $e->getFile();
-        $this->line      = $e->getLine();
-
-        $this->serializableTrace = $e->getTrace();
-
-        foreach ($this->serializableTrace as $i => $call) {
-            unset($this->serializableTrace[$i]['args']);
-        }
-
-        if ($e->getPrevious()) {
-            $this->previous = new self($e->getPrevious());
-        }
-    }
-
-    /**
-     * @return string
-     */
-    public function getClassname()
-    {
-        return $this->classname;
-    }
-
-    /**
-     * @return PHPUnit_Framework_ExceptionWrapper
-     */
-    public function getPreviousWrapped()
-    {
-        return $this->previous;
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        $string = PHPUnit_Framework_TestFailure::exceptionToString($this);
-
-        if ($trace = PHPUnit_Util_Filter::getFilteredStacktrace($this)) {
-            $string .= "\n" . $trace;
-        }
-
-        if ($this->previous) {
-            $string .= "\nCaused by\n" . $this->previous;
-        }
-
-        return $string;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/ExpectationFailedException.php b/vendor/phpunit/phpunit/src/Framework/ExpectationFailedException.php
deleted file mode 100644
index 60229a9..0000000
--- a/vendor/phpunit/phpunit/src/Framework/ExpectationFailedException.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Exception for expectations which failed their check.
- *
- * The exception contains the error message and optionally a
- * SebastianBergmann\Comparator\ComparisonFailure which is used to
- * generate diff output of the failed expectations.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_ExpectationFailedException extends PHPUnit_Framework_AssertionFailedError
-{
-    /**
-     * @var SebastianBergmann\Comparator\ComparisonFailure
-     */
-    protected $comparisonFailure;
-
-    public function __construct($message, SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure = null, Exception $previous = null)
-    {
-        $this->comparisonFailure = $comparisonFailure;
-
-        parent::__construct($message, 0, $previous);
-    }
-
-    /**
-     * @return SebastianBergmann\Comparator\ComparisonFailure
-     */
-    public function getComparisonFailure()
-    {
-        return $this->comparisonFailure;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php b/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php
deleted file mode 100644
index 5735c4f..0000000
--- a/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A marker interface for marking any exception/error as result of an unit
- * test as incomplete implementation or currently not implemented.
- *
- * @since      Interface available since Release 2.0.0
- */
-interface PHPUnit_Framework_IncompleteTest
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php b/vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php
deleted file mode 100644
index b2f393e..0000000
--- a/vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * An incomplete test case
- *
- * @since Class available since Release 4.3.0
- */
-class PHPUnit_Framework_IncompleteTestCase extends PHPUnit_Framework_TestCase
-{
-    /**
-     * @var string
-     */
-    protected $message = '';
-
-    /**
-     * @var bool
-     */
-    protected $backupGlobals = false;
-
-    /**
-     * @var bool
-     */
-    protected $backupStaticAttributes = false;
-
-    /**
-     * @var bool
-     */
-    protected $runTestInSeparateProcess = false;
-
-    /**
-     * @var bool
-     */
-    protected $useErrorHandler = false;
-
-    /**
-     * @var bool
-     */
-    protected $useOutputBuffering = false;
-
-    /**
-     * @param string $className
-     * @param string $methodName
-     * @param string $message
-     */
-    public function __construct($className, $methodName, $message = '')
-    {
-        $this->message = $message;
-        parent::__construct($className . '::' . $methodName);
-    }
-
-    /**
-     * @throws PHPUnit_Framework_Exception
-     */
-    protected function runTest()
-    {
-        $this->markTestIncomplete($this->message);
-    }
-
-    /**
-     * @return string
-     */
-    public function getMessage()
-    {
-        return $this->message;
-    }
-
-    /**
-     * Returns a string representation of the test case.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return $this->getName();
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/IncompleteTestError.php b/vendor/phpunit/phpunit/src/Framework/IncompleteTestError.php
deleted file mode 100644
index 03ffd2f..0000000
--- a/vendor/phpunit/phpunit/src/Framework/IncompleteTestError.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Extension to PHPUnit_Framework_AssertionFailedError to mark the special
- * case of an incomplete test.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Framework_IncompleteTestError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_IncompleteTest
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php b/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php
deleted file mode 100644
index a363ce1..0000000
--- a/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Extension to PHPUnit_Framework_AssertionFailedError to mark the special
- * case of a test that is skipped because of an invalid @covers annotation.
- *
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Framework_InvalidCoversTargetError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_SkippedTest
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php b/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php
deleted file mode 100644
index 324c76d..0000000
--- a/vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Framework_InvalidCoversTargetException extends PHPUnit_Framework_CodeCoverageException
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/OutputError.php b/vendor/phpunit/phpunit/src/Framework/OutputError.php
deleted file mode 100644
index c3f5dcc..0000000
--- a/vendor/phpunit/phpunit/src/Framework/OutputError.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Extension to PHPUnit_Framework_AssertionFailedError to mark the special
- * case of a test that printed output.
- *
- * @since Class available since Release 3.6.0
- */
-class PHPUnit_Framework_OutputError extends PHPUnit_Framework_AssertionFailedError
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/RiskyTest.php b/vendor/phpunit/phpunit/src/Framework/RiskyTest.php
deleted file mode 100644
index 9d98b5f..0000000
--- a/vendor/phpunit/phpunit/src/Framework/RiskyTest.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A marker interface for marking any exception/error as result of an unit
- * test as risky.
- *
- * @since      Interface available since Release 4.0.0
- */
-interface PHPUnit_Framework_RiskyTest
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/RiskyTestError.php b/vendor/phpunit/phpunit/src/Framework/RiskyTestError.php
deleted file mode 100644
index 781a50c..0000000
--- a/vendor/phpunit/phpunit/src/Framework/RiskyTestError.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Extension to PHPUnit_Framework_AssertionFailedError to mark the special
- * case of a risky test.
- *
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Framework_RiskyTestError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_RiskyTest
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php b/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php
deleted file mode 100644
index efc3c47..0000000
--- a/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Interface for classes that can return a description of itself.
- *
- * @since      Interface available since Release 3.0.0
- */
-interface PHPUnit_Framework_SelfDescribing
-{
-    /**
-     * Returns a string representation of the object.
-     *
-     * @return string
-     */
-    public function toString();
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/SkippedTest.php b/vendor/phpunit/phpunit/src/Framework/SkippedTest.php
deleted file mode 100644
index 51910a9..0000000
--- a/vendor/phpunit/phpunit/src/Framework/SkippedTest.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A marker interface for marking a unit test as being skipped.
- *
- * @since      Interface available since Release 3.0.0
- */
-interface PHPUnit_Framework_SkippedTest
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php b/vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php
deleted file mode 100644
index 8a841df..0000000
--- a/vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A skipped test case
- *
- * @since Class available since Release 4.3.0
- */
-class PHPUnit_Framework_SkippedTestCase extends PHPUnit_Framework_TestCase
-{
-    /**
-     * @var string
-     */
-    protected $message = '';
-
-    /**
-     * @var bool
-     */
-    protected $backupGlobals = false;
-
-    /**
-     * @var bool
-     */
-    protected $backupStaticAttributes = false;
-
-    /**
-     * @var bool
-     */
-    protected $runTestInSeparateProcess = false;
-
-    /**
-     * @var bool
-     */
-    protected $useErrorHandler = false;
-
-    /**
-     * @var bool
-     */
-    protected $useOutputBuffering = false;
-
-    /**
-     * @param string $message
-     */
-    public function __construct($className, $methodName, $message = '')
-    {
-        $this->message = $message;
-        parent::__construct($className . '::' . $methodName);
-    }
-
-    /**
-     * @throws PHPUnit_Framework_Exception
-     */
-    protected function runTest()
-    {
-        $this->markTestSkipped($this->message);
-    }
-
-    /**
-     * @return string
-     */
-    public function getMessage()
-    {
-        return $this->message;
-    }
-
-    /**
-     * Returns a string representation of the test case.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return $this->getName();
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/SkippedTestError.php b/vendor/phpunit/phpunit/src/Framework/SkippedTestError.php
deleted file mode 100644
index d8df860..0000000
--- a/vendor/phpunit/phpunit/src/Framework/SkippedTestError.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Extension to PHPUnit_Framework_AssertionFailedError to mark the special
- * case of a skipped test.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Framework_SkippedTestError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_SkippedTest
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php b/vendor/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php
deleted file mode 100644
index a57620b..0000000
--- a/vendor/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Extension to PHPUnit_Framework_AssertionFailedError to mark the special
- * case of a skipped test suite.
- *
- * @since Class available since Release 3.1.0
- */
-class PHPUnit_Framework_SkippedTestSuiteError extends PHPUnit_Framework_AssertionFailedError implements PHPUnit_Framework_SkippedTest
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/SyntheticError.php b/vendor/phpunit/phpunit/src/Framework/SyntheticError.php
deleted file mode 100644
index 235b046..0000000
--- a/vendor/phpunit/phpunit/src/Framework/SyntheticError.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Creates a synthetic failed assertion.
- *
- * @since Class available since Release 3.5.0
- */
-class PHPUnit_Framework_SyntheticError extends PHPUnit_Framework_AssertionFailedError
-{
-    /**
-     * The synthetic file.
-     *
-     * @var string
-     */
-    protected $syntheticFile = '';
-
-    /**
-     * The synthetic line number.
-     *
-     * @var int
-     */
-    protected $syntheticLine = 0;
-
-    /**
-     * The synthetic trace.
-     *
-     * @var array
-     */
-    protected $syntheticTrace = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $message
-     * @param int    $code
-     * @param string $file
-     * @param int    $line
-     * @param array  $trace
-     */
-    public function __construct($message, $code, $file, $line, $trace)
-    {
-        parent::__construct($message, $code);
-
-        $this->syntheticFile  = $file;
-        $this->syntheticLine  = $line;
-        $this->syntheticTrace = $trace;
-    }
-
-    /**
-     * @return string
-     */
-    public function getSyntheticFile()
-    {
-        return $this->syntheticFile;
-    }
-
-    /**
-     * @return int
-     */
-    public function getSyntheticLine()
-    {
-        return $this->syntheticLine;
-    }
-
-    /**
-     * @return array
-     */
-    public function getSyntheticTrace()
-    {
-        return $this->syntheticTrace;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Test.php b/vendor/phpunit/phpunit/src/Framework/Test.php
deleted file mode 100644
index 77a25b5..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Test.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A Test can be run and collect its results.
- *
- * @since      Interface available since Release 2.0.0
- */
-interface PHPUnit_Framework_Test extends Countable
-{
-    /**
-     * Runs a test and collects its result in a TestResult instance.
-     *
-     * @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
deleted file mode 100644
index ea65fbc..0000000
--- a/vendor/phpunit/phpunit/src/Framework/TestCase.php
+++ /dev/null
@@ -1,2094 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-use SebastianBergmann\GlobalState\Snapshot;
-use SebastianBergmann\GlobalState\Restorer;
-use SebastianBergmann\GlobalState\Blacklist;
-use SebastianBergmann\Diff\Differ;
-use SebastianBergmann\Exporter\Exporter;
-use Prophecy\Exception\Prediction\PredictionException;
-use Prophecy\Prophet;
-
-/**
- * A TestCase defines the fixture to run multiple tests.
- *
- * To define a TestCase
- *
- *   1) Implement a subclass of PHPUnit_Framework_TestCase.
- *   2) Define instance variables that store the state of the fixture.
- *   3) Initialize the fixture state by overriding setUp().
- *   4) Clean-up after a test by overriding tearDown().
- *
- * Each test runs in its own fixture so there can be no side effects
- * among test runs.
- *
- * Here is an example:
- *
- * <code>
- * <?php
- * class MathTest extends PHPUnit_Framework_TestCase
- * {
- *     public $value1;
- *     public $value2;
- *
- *     protected function setUp()
- *     {
- *         $this->value1 = 2;
- *         $this->value2 = 3;
- *     }
- * }
- * ?>
- * </code>
- *
- * For each test implement a method which interacts with the fixture.
- * Verify the expected results with assertions specified by calling
- * assert with a boolean.
- *
- * <code>
- * <?php
- * public function testPass()
- * {
- *     $this->assertTrue($this->value1 + $this->value2 == 5);
- * }
- * ?>
- * </code>
- *
- * @since Class available since Release 2.0.0
- */
-abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing
-{
-    /**
-     * Enable or disable the backup and restoration of the $GLOBALS array.
-     * Overwrite this attribute in a child class of TestCase.
-     * Setting this attribute in setUp() has no effect!
-     *
-     * @var bool
-     */
-    protected $backupGlobals = null;
-
-    /**
-     * @var array
-     */
-    protected $backupGlobalsBlacklist = array();
-
-    /**
-     * Enable or disable the backup and restoration of static attributes.
-     * Overwrite this attribute in a child class of TestCase.
-     * Setting this attribute in setUp() has no effect!
-     *
-     * @var bool
-     */
-    protected $backupStaticAttributes = null;
-
-    /**
-     * @var array
-     */
-    protected $backupStaticAttributesBlacklist = array();
-
-    /**
-     * Whether or not this test is to be run in a separate PHP process.
-     *
-     * @var bool
-     */
-    protected $runTestInSeparateProcess = null;
-
-    /**
-     * Whether or not this test should preserve the global state when
-     * running in a separate PHP process.
-     *
-     * @var bool
-     */
-    protected $preserveGlobalState = true;
-
-    /**
-     * Whether or not this test is running in a separate PHP process.
-     *
-     * @var bool
-     */
-    private $inIsolation = false;
-
-    /**
-     * @var array
-     */
-    private $data = array();
-
-    /**
-     * @var string
-     */
-    private $dataName = '';
-
-    /**
-     * @var bool
-     */
-    private $useErrorHandler = null;
-
-    /**
-     * The name of the expected Exception.
-     *
-     * @var mixed
-     */
-    private $expectedException = null;
-
-    /**
-     * The message of the expected Exception.
-     *
-     * @var string
-     */
-    private $expectedExceptionMessage = '';
-
-    /**
-     * The regex pattern to validate the expected Exception message.
-     *
-     * @var string
-     */
-    private $expectedExceptionMessageRegExp = '';
-
-    /**
-     * The code of the expected Exception.
-     *
-     * @var int
-     */
-    private $expectedExceptionCode;
-
-    /**
-     * The name of the test case.
-     *
-     * @var string
-     */
-    private $name = null;
-
-    /**
-     * @var array
-     */
-    private $dependencies = array();
-
-    /**
-     * @var array
-     */
-    private $dependencyInput = array();
-
-    /**
-     * @var array
-     */
-    private $iniSettings = array();
-
-    /**
-     * @var array
-     */
-    private $locale = array();
-
-    /**
-     * @var array
-     */
-    private $mockObjects = array();
-
-    /**
-     * @var array
-     */
-    private $mockObjectGenerator = null;
-
-    /**
-     * @var int
-     */
-    private $status;
-
-    /**
-     * @var string
-     */
-    private $statusMessage = '';
-
-    /**
-     * @var int
-     */
-    private $numAssertions = 0;
-
-    /**
-     * @var PHPUnit_Framework_TestResult
-     */
-    private $result;
-
-    /**
-     * @var mixed
-     */
-    private $testResult;
-
-    /**
-     * @var string
-     */
-    private $output = '';
-
-    /**
-     * @var string
-     */
-    private $outputExpectedRegex = null;
-
-    /**
-     * @var string
-     */
-    private $outputExpectedString = null;
-
-    /**
-     * @var mixed
-     */
-    private $outputCallback = false;
-
-    /**
-     * @var bool
-     */
-    private $outputBufferingActive = false;
-
-    /**
-     * @var int
-     */
-    private $outputBufferingLevel;
-
-    /**
-     * @var SebastianBergmann\GlobalState\Snapshot
-     */
-    private $snapshot;
-
-    /**
-     * @var Prophecy\Prophet
-     */
-    private $prophet;
-
-    /**
-     * @var bool
-     */
-    private $disallowChangesToGlobalState = false;
-
-    /**
-     * Constructs a test case with the given name.
-     *
-     * @param string $name
-     * @param array  $data
-     * @param string $dataName
-     */
-    public function __construct($name = null, array $data = array(), $dataName = '')
-    {
-        if ($name !== null) {
-            $this->setName($name);
-        }
-
-        $this->data                = $data;
-        $this->dataName            = $dataName;
-    }
-
-    /**
-     * Returns a string representation of the test case.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        $class = new ReflectionClass($this);
-
-        $buffer = sprintf(
-            '%s::%s',
-            $class->name,
-            $this->getName(false)
-        );
-
-        return $buffer . $this->getDataSetAsString();
-    }
-
-    /**
-     * Counts the number of test cases executed by run(TestResult result).
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return 1;
-    }
-
-    /**
-     * Returns the annotations for this test.
-     *
-     * @return array
-     * @since Method available since Release 3.4.0
-     */
-    public function getAnnotations()
-    {
-        return PHPUnit_Util_Test::parseTestMethodAnnotations(
-            get_class($this),
-            $this->name
-        );
-    }
-
-    /**
-     * Gets the name of a TestCase.
-     *
-     * @param  bool   $withDataSet
-     * @return string
-     */
-    public function getName($withDataSet = true)
-    {
-        if ($withDataSet) {
-            return $this->name . $this->getDataSetAsString(false);
-        } else {
-            return $this->name;
-        }
-    }
-
-    /**
-     * Returns the size of the test.
-     *
-     * @return int
-     * @since  Method available since Release 3.6.0
-     */
-    public function getSize()
-    {
-        return PHPUnit_Util_Test::getSize(
-            get_class($this),
-            $this->getName(false)
-        );
-    }
-
-    /**
-     * @return string
-     * @since  Method available since Release 3.6.0
-     */
-    public function getActualOutput()
-    {
-        if (!$this->outputBufferingActive) {
-            return $this->output;
-        } else {
-            return ob_get_contents();
-        }
-    }
-
-    /**
-     * @return bool
-     * @since  Method available since Release 3.6.0
-     */
-    public function hasOutput()
-    {
-        if (strlen($this->output) === 0) {
-            return false;
-        }
-
-        if ($this->hasExpectationOnOutput()) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * @param string $expectedRegex
-     * @since Method available since Release 3.6.0
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function expectOutputRegex($expectedRegex)
-    {
-        if ($this->outputExpectedString !== null) {
-            throw new PHPUnit_Framework_Exception;
-        }
-
-        if (is_string($expectedRegex) || is_null($expectedRegex)) {
-            $this->outputExpectedRegex = $expectedRegex;
-        }
-    }
-
-    /**
-     * @param string $expectedString
-     * @since Method available since Release 3.6.0
-     */
-    public function expectOutputString($expectedString)
-    {
-        if ($this->outputExpectedRegex !== null) {
-            throw new PHPUnit_Framework_Exception;
-        }
-
-        if (is_string($expectedString) || is_null($expectedString)) {
-            $this->outputExpectedString = $expectedString;
-        }
-    }
-
-    /**
-     * @return bool
-     * @since Method available since Release 3.6.5
-     * @deprecated
-     */
-    public function hasPerformedExpectationsOnOutput()
-    {
-        return $this->hasExpectationOnOutput();
-    }
-
-    /**
-     * @return bool
-     * @since Method available since Release 4.3.3
-     */
-    public function hasExpectationOnOutput()
-    {
-        return is_string($this->outputExpectedString) || is_string($this->outputExpectedRegex);
-    }
-
-    /**
-     * @return string
-     * @since  Method available since Release 3.2.0
-     */
-    public function getExpectedException()
-    {
-        return $this->expectedException;
-    }
-
-    /**
-     * @param mixed  $exceptionName
-     * @param string $exceptionMessage
-     * @param int    $exceptionCode
-     * @since  Method available since Release 3.2.0
-     */
-    public function setExpectedException($exceptionName, $exceptionMessage = '', $exceptionCode = null)
-    {
-        $this->expectedException        = $exceptionName;
-        $this->expectedExceptionMessage = $exceptionMessage;
-        $this->expectedExceptionCode    = $exceptionCode;
-    }
-
-    /**
-     * @param mixed  $exceptionName
-     * @param string $exceptionMessageRegExp
-     * @param int    $exceptionCode
-     * @since Method available since Release 4.3.0
-     */
-    public function setExpectedExceptionRegExp($exceptionName, $exceptionMessageRegExp = '', $exceptionCode = null)
-    {
-        $this->expectedException              = $exceptionName;
-        $this->expectedExceptionMessageRegExp = $exceptionMessageRegExp;
-        $this->expectedExceptionCode          = $exceptionCode;
-    }
-
-    /**
-     * @since  Method available since Release 3.4.0
-     */
-    protected function setExpectedExceptionFromAnnotation()
-    {
-        try {
-            $expectedException = PHPUnit_Util_Test::getExpectedException(
-                get_class($this),
-                $this->name
-            );
-
-            if ($expectedException !== false) {
-                $this->setExpectedException(
-                    $expectedException['class'],
-                    $expectedException['message'],
-                    $expectedException['code']
-                );
-
-                if (!empty($expectedException['message_regex'])) {
-                    $this->setExpectedExceptionRegExp(
-                        $expectedException['class'],
-                        $expectedException['message_regex'],
-                        $expectedException['code']
-                    );
-                }
-            }
-        } catch (ReflectionException $e) {
-        }
-    }
-
-    /**
-     * @param bool $useErrorHandler
-     * @since Method available since Release 3.4.0
-     */
-    public function setUseErrorHandler($useErrorHandler)
-    {
-        $this->useErrorHandler = $useErrorHandler;
-    }
-
-    /**
-     * @since Method available since Release 3.4.0
-     */
-    protected function setUseErrorHandlerFromAnnotation()
-    {
-        try {
-            $useErrorHandler = PHPUnit_Util_Test::getErrorHandlerSettings(
-                get_class($this),
-                $this->name
-            );
-
-            if ($useErrorHandler !== null) {
-                $this->setUseErrorHandler($useErrorHandler);
-            }
-        } catch (ReflectionException $e) {
-        }
-    }
-
-    /**
-     * @since Method available since Release 3.6.0
-     */
-    protected function checkRequirements()
-    {
-        if (!$this->name || !method_exists($this, $this->name)) {
-            return;
-        }
-
-        $missingRequirements = PHPUnit_Util_Test::getMissingRequirements(
-            get_class($this),
-            $this->name
-        );
-
-        if (!empty($missingRequirements)) {
-            $this->markTestSkipped(implode(PHP_EOL, $missingRequirements));
-        }
-    }
-
-    /**
-     * Returns the status of this test.
-     *
-     * @return int
-     * @since  Method available since Release 3.1.0
-     */
-    public function getStatus()
-    {
-        return $this->status;
-    }
-
-    /**
-     * Returns the status message of this test.
-     *
-     * @return string
-     * @since  Method available since Release 3.3.0
-     */
-    public function getStatusMessage()
-    {
-        return $this->statusMessage;
-    }
-
-    /**
-     * Returns whether or not this test has failed.
-     *
-     * @return bool
-     * @since  Method available since Release 3.0.0
-     */
-    public function hasFailed()
-    {
-        $status = $this->getStatus();
-
-        return $status == PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE ||
-               $status == PHPUnit_Runner_BaseTestRunner::STATUS_ERROR;
-    }
-
-    /**
-     * 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
-     * @return PHPUnit_Framework_TestResult
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function run(PHPUnit_Framework_TestResult $result = null)
-    {
-        if ($result === null) {
-            $result = $this->createResult();
-        }
-
-        if (!$this instanceof PHPUnit_Framework_Warning) {
-            $this->setTestResultObject($result);
-            $this->setUseErrorHandlerFromAnnotation();
-        }
-
-        if ($this->useErrorHandler !== null) {
-            $oldErrorHandlerSetting = $result->getConvertErrorsToExceptions();
-            $result->convertErrorsToExceptions($this->useErrorHandler);
-        }
-
-        if (!$this instanceof PHPUnit_Framework_Warning && !$this->handleDependencies()) {
-            return;
-        }
-
-        if ($this->runTestInSeparateProcess === true &&
-            $this->inIsolation !== true &&
-            !$this instanceof PHPUnit_Extensions_SeleniumTestCase &&
-            !$this instanceof PHPUnit_Extensions_PhptTestCase) {
-            $class = new ReflectionClass($this);
-
-            $template = new Text_Template(
-                __DIR__ . '/../Util/PHP/Template/TestCaseMethod.tpl'
-            );
-
-            if ($this->preserveGlobalState) {
-                $constants     = PHPUnit_Util_GlobalState::getConstantsAsString();
-                $globals       = PHPUnit_Util_GlobalState::getGlobalsAsString();
-                $includedFiles = PHPUnit_Util_GlobalState::getIncludedFilesAsString();
-                $iniSettings   = PHPUnit_Util_GlobalState::getIniSettingsAsString();
-            } else {
-                $constants     = '';
-                if (!empty($GLOBALS['__PHPUNIT_BOOTSTRAP'])) {
-                    $globals     = '$GLOBALS[\'__PHPUNIT_BOOTSTRAP\'] = ' . var_export($GLOBALS['__PHPUNIT_BOOTSTRAP'], true) . ";\n";
-                } else {
-                    $globals     = '';
-                }
-                $includedFiles = '';
-                $iniSettings   = '';
-            }
-
-            $coverage                                = $result->getCollectCodeCoverageInformation()       ? 'true' : 'false';
-            $isStrictAboutTestsThatDoNotTestAnything = $result->isStrictAboutTestsThatDoNotTestAnything() ? 'true' : 'false';
-            $isStrictAboutOutputDuringTests          = $result->isStrictAboutOutputDuringTests()          ? 'true' : 'false';
-            $isStrictAboutTestSize                   = $result->isStrictAboutTestSize()                   ? 'true' : 'false';
-            $isStrictAboutTodoAnnotatedTests         = $result->isStrictAboutTodoAnnotatedTests()         ? 'true' : 'false';
-
-            if (defined('PHPUNIT_COMPOSER_INSTALL')) {
-                $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, true);
-            } else {
-                $composerAutoload = '\'\'';
-            }
-
-            if (defined('__PHPUNIT_PHAR__')) {
-                $phar = var_export(__PHPUNIT_PHAR__, true);
-            } else {
-                $phar = '\'\'';
-            }
-
-            if ($result->getCodeCoverage()) {
-                $codeCoverageFilter = $result->getCodeCoverage()->filter();
-            } else {
-                $codeCoverageFilter = null;
-            }
-
-            $data               = var_export(serialize($this->data), true);
-            $dataName           = var_export($this->dataName, true);
-            $dependencyInput    = var_export(serialize($this->dependencyInput), true);
-            $includePath        = var_export(get_include_path(), true);
-            $codeCoverageFilter = var_export(serialize($codeCoverageFilter), true);
-            // must do these fixes because TestCaseMethod.tpl has unserialize('{data}') in it, and we can't break BC
-            // the lines above used to use addcslashes() rather than var_export(), which breaks null byte escape sequences
-            $data               = "'." . $data . ".'";
-            $dataName           = "'.(" . $dataName . ").'";
-            $dependencyInput    = "'." . $dependencyInput . ".'";
-            $includePath        = "'." . $includePath . ".'";
-            $codeCoverageFilter = "'." . $codeCoverageFilter . ".'";
-
-            $configurationFilePath = (isset($GLOBALS['__PHPUNIT_CONFIGURATION_FILE']) ? $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] : '');
-
-            $template->setVar(
-                array(
-                    'composerAutoload'                        => $composerAutoload,
-                    'phar'                                    => $phar,
-                    'filename'                                => $class->getFileName(),
-                    'className'                               => $class->getName(),
-                    'methodName'                              => $this->name,
-                    'collectCodeCoverageInformation'          => $coverage,
-                    'data'                                    => $data,
-                    'dataName'                                => $dataName,
-                    'dependencyInput'                         => $dependencyInput,
-                    'constants'                               => $constants,
-                    'globals'                                 => $globals,
-                    'include_path'                            => $includePath,
-                    'included_files'                          => $includedFiles,
-                    'iniSettings'                             => $iniSettings,
-                    'isStrictAboutTestsThatDoNotTestAnything' => $isStrictAboutTestsThatDoNotTestAnything,
-                    'isStrictAboutOutputDuringTests'          => $isStrictAboutOutputDuringTests,
-                    'isStrictAboutTestSize'                   => $isStrictAboutTestSize,
-                    'isStrictAboutTodoAnnotatedTests'         => $isStrictAboutTodoAnnotatedTests,
-                    'codeCoverageFilter'                      => $codeCoverageFilter,
-                    'configurationFilePath'                   => $configurationFilePath
-                )
-            );
-
-            $this->prepareTemplate($template);
-
-            $php = PHPUnit_Util_PHP::factory();
-            $php->runTestJob($template->render(), $this, $result);
-        } else {
-            $result->run($this);
-        }
-
-        if ($this->useErrorHandler !== null) {
-            $result->convertErrorsToExceptions($oldErrorHandlerSetting);
-        }
-
-        $this->result = null;
-
-        return $result;
-    }
-
-    /**
-     * Runs the bare test sequence.
-     */
-    public function runBare()
-    {
-        $this->numAssertions = 0;
-
-        $this->snapshotGlobalState();
-        $this->startOutputBuffering();
-        clearstatcache();
-        $currentWorkingDirectory = getcwd();
-
-        $hookMethods = PHPUnit_Util_Test::getHookMethods(get_class($this));
-
-        try {
-            $hasMetRequirements = false;
-            $this->checkRequirements();
-            $hasMetRequirements = true;
-
-            if ($this->inIsolation) {
-                foreach ($hookMethods['beforeClass'] as $method) {
-                    $this->$method();
-                }
-            }
-
-            $this->setExpectedExceptionFromAnnotation();
-
-            foreach ($hookMethods['before'] as $method) {
-                $this->$method();
-            }
-
-            $this->assertPreConditions();
-            $this->testResult = $this->runTest();
-            $this->verifyMockObjects();
-            $this->assertPostConditions();
-
-            $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_PASSED;
-        } catch (PHPUnit_Framework_IncompleteTest $e) {
-            $this->status        = PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE;
-            $this->statusMessage = $e->getMessage();
-        } catch (PHPUnit_Framework_SkippedTest $e) {
-            $this->status        = PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED;
-            $this->statusMessage = $e->getMessage();
-        } catch (PHPUnit_Framework_AssertionFailedError $e) {
-            $this->status        = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE;
-            $this->statusMessage = $e->getMessage();
-        } catch (PredictionException $e) {
-            $this->status        = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE;
-            $this->statusMessage = $e->getMessage();
-        } catch (Throwable $_e) {
-            $e = $_e;
-        } catch (Exception $_e) {
-            $e = $_e;
-        }
-
-        if (isset($_e)) {
-            $this->status        = PHPUnit_Runner_BaseTestRunner::STATUS_ERROR;
-            $this->statusMessage = $_e->getMessage();
-        }
-
-        // Clean up the mock objects.
-        $this->mockObjects = array();
-        $this->prophet     = null;
-
-        // Tear down the fixture. An exception raised in tearDown() will be
-        // caught and passed on when no exception was raised before.
-        try {
-            if ($hasMetRequirements) {
-                foreach ($hookMethods['after'] as $method) {
-                    $this->$method();
-                }
-
-                if ($this->inIsolation) {
-                    foreach ($hookMethods['afterClass'] as $method) {
-                        $this->$method();
-                    }
-                }
-            }
-        } catch (Throwable $_e) {
-            if (!isset($e)) {
-                $e = $_e;
-            }
-        } catch (Exception $_e) {
-            if (!isset($e)) {
-                $e = $_e;
-            }
-        }
-
-        try {
-            $this->stopOutputBuffering();
-        } catch (PHPUnit_Framework_RiskyTestError $_e) {
-            if (!isset($e)) {
-                $e = $_e;
-            }
-        }
-
-        clearstatcache();
-
-        if ($currentWorkingDirectory != getcwd()) {
-            chdir($currentWorkingDirectory);
-        }
-
-        $this->restoreGlobalState();
-
-        // Clean up INI settings.
-        foreach ($this->iniSettings as $varName => $oldValue) {
-            ini_set($varName, $oldValue);
-        }
-
-        $this->iniSettings = array();
-
-        // Clean up locale settings.
-        foreach ($this->locale as $category => $locale) {
-            setlocale($category, $locale);
-        }
-
-        // Perform assertion on output.
-        if (!isset($e)) {
-            try {
-                if ($this->outputExpectedRegex !== null) {
-                    $this->assertRegExp($this->outputExpectedRegex, $this->output);
-                } elseif ($this->outputExpectedString !== null) {
-                    $this->assertEquals($this->outputExpectedString, $this->output);
-                }
-            } catch (Throwable $_e) {
-                $e = $_e;
-            } catch (Exception $_e) {
-                $e = $_e;
-            }
-        }
-
-        // Workaround for missing "finally".
-        if (isset($e)) {
-            if ($e instanceof PredictionException) {
-                $e = new PHPUnit_Framework_AssertionFailedError($e->getMessage());
-            }
-
-            if (!$e instanceof Exception) {
-                // Rethrow Error directly on PHP 7 as onNotSuccessfulTest does not support it
-                throw $e;
-            }
-
-            $this->onNotSuccessfulTest($e);
-        }
-    }
-
-    /**
-     * Override to run the test and assert its state.
-     *
-     * @return mixed
-     * @throws Exception|PHPUnit_Framework_Exception
-     * @throws PHPUnit_Framework_Exception
-     */
-    protected function runTest()
-    {
-        if ($this->name === null) {
-            throw new PHPUnit_Framework_Exception(
-                'PHPUnit_Framework_TestCase::$name must not be null.'
-            );
-        }
-
-        try {
-            $class  = new ReflectionClass($this);
-            $method = $class->getMethod($this->name);
-        } catch (ReflectionException $e) {
-            $this->fail($e->getMessage());
-        }
-
-        try {
-            $testResult = $method->invokeArgs(
-                $this,
-                array_merge($this->data, $this->dependencyInput)
-            );
-        } catch (Throwable $_e) {
-            $e = $_e;
-        } catch (Exception $_e) {
-            $e = $_e;
-        }
-
-        if (isset($e)) {
-            $checkException = false;
-
-            if (is_string($this->expectedException)) {
-                $checkException = true;
-
-                if ($e instanceof PHPUnit_Framework_Exception) {
-                    $checkException = false;
-                }
-
-                $reflector = new ReflectionClass($this->expectedException);
-
-                if ($this->expectedException == 'PHPUnit_Framework_Exception' ||
-                    $reflector->isSubclassOf('PHPUnit_Framework_Exception')) {
-                    $checkException = true;
-                }
-            }
-
-            if ($checkException) {
-                $this->assertThat(
-                    $e,
-                    new PHPUnit_Framework_Constraint_Exception(
-                        $this->expectedException
-                    )
-                );
-
-                if (is_string($this->expectedExceptionMessage) &&
-                    !empty($this->expectedExceptionMessage)) {
-                    $this->assertThat(
-                        $e,
-                        new PHPUnit_Framework_Constraint_ExceptionMessage(
-                            $this->expectedExceptionMessage
-                        )
-                    );
-                }
-
-                if (is_string($this->expectedExceptionMessageRegExp) &&
-                    !empty($this->expectedExceptionMessageRegExp)) {
-                    $this->assertThat(
-                        $e,
-                        new PHPUnit_Framework_Constraint_ExceptionMessageRegExp(
-                            $this->expectedExceptionMessageRegExp
-                        )
-                    );
-                }
-
-                if ($this->expectedExceptionCode !== null) {
-                    $this->assertThat(
-                        $e,
-                        new PHPUnit_Framework_Constraint_ExceptionCode(
-                            $this->expectedExceptionCode
-                        )
-                    );
-                }
-
-                return;
-            } else {
-                throw $e;
-            }
-        }
-
-        if ($this->expectedException !== null) {
-            $this->assertThat(
-                null,
-                new PHPUnit_Framework_Constraint_Exception(
-                    $this->expectedException
-                )
-            );
-        }
-
-        return $testResult;
-    }
-
-    /**
-     * Verifies the mock object expectations.
-     *
-     * @since Method available since Release 3.5.0
-     */
-    protected function verifyMockObjects()
-    {
-        foreach ($this->mockObjects as $mockObject) {
-            if ($mockObject->__phpunit_hasMatchers()) {
-                $this->numAssertions++;
-            }
-
-            $mockObject->__phpunit_verify();
-        }
-
-        if ($this->prophet !== null) {
-            try {
-                $this->prophet->checkPredictions();
-            } catch (Throwable $t) {
-                /* Intentionally left empty */
-            } catch (Exception $e) {
-                /* Intentionally left empty */
-            }
-
-            foreach ($this->prophet->getProphecies() as $objectProphecy) {
-                foreach ($objectProphecy->getMethodProphecies() as $methodProphecies) {
-                    foreach ($methodProphecies as $methodProphecy) {
-                        $this->numAssertions += count($methodProphecy->getCheckedPredictions());
-                    }
-                }
-            }
-
-            if (isset($e)) {
-                throw $e;
-            }
-        }
-    }
-
-    /**
-     * Sets the name of a TestCase.
-     *
-     * @param  string
-     */
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * Sets the dependencies of a TestCase.
-     *
-     * @param array $dependencies
-     * @since  Method available since Release 3.4.0
-     */
-    public function setDependencies(array $dependencies)
-    {
-        $this->dependencies = $dependencies;
-    }
-
-    /**
-     * Returns true if the tests has dependencies
-     *
-     * @return bool
-     * @since Method available since Release 4.0.0
-     */
-    public function hasDependencies()
-    {
-        return count($this->dependencies) > 0;
-    }
-
-    /**
-     * Sets
-     *
-     * @param array $dependencyInput
-     * @since  Method available since Release 3.4.0
-     */
-    public function setDependencyInput(array $dependencyInput)
-    {
-        $this->dependencyInput = $dependencyInput;
-    }
-
-    /**
-     * @param bool $disallowChangesToGlobalState
-     * @since Method available since Release 4.6.0
-     */
-    public function setDisallowChangesToGlobalState($disallowChangesToGlobalState)
-    {
-        $this->disallowChangesToGlobalState = $disallowChangesToGlobalState;
-    }
-
-    /**
-     * Calling this method in setUp() has no effect!
-     *
-     * @param bool $backupGlobals
-     * @since  Method available since Release 3.3.0
-     */
-    public function setBackupGlobals($backupGlobals)
-    {
-        if (is_null($this->backupGlobals) && is_bool($backupGlobals)) {
-            $this->backupGlobals = $backupGlobals;
-        }
-    }
-
-    /**
-     * Calling this method in setUp() has no effect!
-     *
-     * @param bool $backupStaticAttributes
-     * @since  Method available since Release 3.4.0
-     */
-    public function setBackupStaticAttributes($backupStaticAttributes)
-    {
-        if (is_null($this->backupStaticAttributes) &&
-            is_bool($backupStaticAttributes)) {
-            $this->backupStaticAttributes = $backupStaticAttributes;
-        }
-    }
-
-    /**
-     * @param  bool                        $runTestInSeparateProcess
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.4.0
-     */
-    public function setRunTestInSeparateProcess($runTestInSeparateProcess)
-    {
-        if (is_bool($runTestInSeparateProcess)) {
-            if ($this->runTestInSeparateProcess === null) {
-                $this->runTestInSeparateProcess = $runTestInSeparateProcess;
-            }
-        } else {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-    }
-
-    /**
-     * @param  bool                        $preserveGlobalState
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.4.0
-     */
-    public function setPreserveGlobalState($preserveGlobalState)
-    {
-        if (is_bool($preserveGlobalState)) {
-            $this->preserveGlobalState = $preserveGlobalState;
-        } else {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-    }
-
-    /**
-     * @param  bool                        $inIsolation
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.4.0
-     */
-    public function setInIsolation($inIsolation)
-    {
-        if (is_bool($inIsolation)) {
-            $this->inIsolation = $inIsolation;
-        } else {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-    }
-
-    /**
-     * @return bool
-     * @since  Method available since Release 4.3.0
-     */
-    public function isInIsolation()
-    {
-        return $this->inIsolation;
-    }
-
-    /**
-     * @return mixed
-     * @since  Method available since Release 3.4.0
-     */
-    public function getResult()
-    {
-        return $this->testResult;
-    }
-
-    /**
-     * @param mixed $result
-     * @since  Method available since Release 3.4.0
-     */
-    public function setResult($result)
-    {
-        $this->testResult = $result;
-    }
-
-    /**
-     * @param  callable                    $callback
-     * @throws PHPUnit_Framework_Exception
-     * @since Method available since Release 3.6.0
-     */
-    public function setOutputCallback($callback)
-    {
-        if (!is_callable($callback)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'callback');
-        }
-
-        $this->outputCallback = $callback;
-    }
-
-    /**
-     * @return PHPUnit_Framework_TestResult
-     * @since  Method available since Release 3.5.7
-     */
-    public function getTestResultObject()
-    {
-        return $this->result;
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestResult $result
-     * @since Method available since Release 3.6.0
-     */
-    public function setTestResultObject(PHPUnit_Framework_TestResult $result)
-    {
-        $this->result = $result;
-    }
-
-    /**
-     * This method is a wrapper for the ini_set() function that automatically
-     * resets the modified php.ini setting to its original value after the
-     * test is run.
-     *
-     * @param  string                      $varName
-     * @param  string                      $newValue
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.0.0
-     */
-    protected function iniSet($varName, $newValue)
-    {
-        if (!is_string($varName)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        $currentValue = ini_set($varName, $newValue);
-
-        if ($currentValue !== false) {
-            $this->iniSettings[$varName] = $currentValue;
-        } else {
-            throw new PHPUnit_Framework_Exception(
-                sprintf(
-                    'INI setting "%s" could not be set to "%s".',
-                    $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
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.1.0
-     */
-    protected function setLocale()
-    {
-        $args = func_get_args();
-
-        if (count($args) < 2) {
-            throw new PHPUnit_Framework_Exception;
-        }
-
-        $category = $args[0];
-        $locale   = $args[1];
-
-        $categories = array(
-            LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME
-        );
-
-        if (defined('LC_MESSAGES')) {
-            $categories[] = LC_MESSAGES;
-        }
-
-        if (!in_array($category, $categories)) {
-            throw new PHPUnit_Framework_Exception;
-        }
-
-        if (!is_array($locale) && !is_string($locale)) {
-            throw new PHPUnit_Framework_Exception;
-        }
-
-        $this->locale[$category] = setlocale($category, null);
-
-        $result = call_user_func_array('setlocale', $args);
-
-        if ($result === false) {
-            throw new PHPUnit_Framework_Exception(
-                'The locale functionality is not implemented on your platform, ' .
-                'the specified locale does not exist or the category name is ' .
-                'invalid.'
-            );
-        }
-    }
-
-    /**
-     * 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
-     * @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)
-    {
-        $mockObject = $this->getMockObjectGenerator()->getMock(
-            $originalClassName,
-            $methods,
-            $arguments,
-            $mockClassName,
-            $callOriginalConstructor,
-            $callOriginalClone,
-            $callAutoload,
-            $cloneArguments,
-            $callOriginalMethods
-        );
-
-        $this->mockObjects[] = $mockObject;
-
-        return $mockObject;
-    }
-
-    /**
-     * Returns a builder object to create mock objects using a fluent interface.
-     *
-     * @param  string                                   $className
-     * @return PHPUnit_Framework_MockObject_MockBuilder
-     * @since  Method available since Release 3.5.0
-     */
-    public function getMockBuilder($className)
-    {
-        return new PHPUnit_Framework_MockObject_MockBuilder($this, $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
-     * @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)
-    {
-        $mock = $this->getMock(
-            $originalClassName,
-            $methods,
-            $arguments,
-            $mockClassName,
-            $callOriginalConstructor,
-            $callOriginalClone,
-            $callAutoload,
-            $cloneArguments
-        );
-
-        return get_class($mock);
-    }
-
-    /**
-     * Returns a mock object for the specified abstract class with all abstract
-     * 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
-     * @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)
-    {
-        $mockObject = $this->getMockObjectGenerator()->getMockForAbstractClass(
-            $originalClassName,
-            $arguments,
-            $mockClassName,
-            $callOriginalConstructor,
-            $callOriginalClone,
-            $callAutoload,
-            $mockedMethods,
-            $cloneArguments
-        );
-
-        $this->mockObjects[] = $mockObject;
-
-        return $mockObject;
-    }
-
-    /**
-     * 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
-     * @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())
-    {
-        if ($originalClassName === '') {
-            $originalClassName = str_replace('.wsdl', '', basename($wsdlFile));
-        }
-
-        if (!class_exists($originalClassName)) {
-            eval(
-            $this->getMockObjectGenerator()->generateClassFromWsdl(
-                $wsdlFile,
-                $originalClassName,
-                $methods,
-                $options
-            )
-            );
-        }
-
-        return $this->getMock(
-            $originalClassName,
-            $methods,
-            array('', $options),
-            $mockClassName,
-            $callOriginalConstructor,
-            false,
-            false
-        );
-    }
-
-    /**
-     * Returns a mock object for the specified trait with all abstract methods
-     * 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
-     * @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)
-    {
-        $mockObject = $this->getMockObjectGenerator()->getMockForTrait(
-            $traitName,
-            $arguments,
-            $mockClassName,
-            $callOriginalConstructor,
-            $callOriginalClone,
-            $callAutoload,
-            $mockedMethods,
-            $cloneArguments
-        );
-
-        $this->mockObjects[] = $mockObject;
-
-        return $mockObject;
-    }
-
-    /**
-     * 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
-     * @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)
-    {
-        return $this->getMockObjectGenerator()->getObjectForTrait(
-            $traitName,
-            $arguments,
-            $traitClassName,
-            $callOriginalConstructor,
-            $callOriginalClone,
-            $callAutoload,
-            $cloneArguments
-        );
-    }
-
-    /**
-     * @param  string|null                       $classOrInterface
-     * @return \Prophecy\Prophecy\ObjectProphecy
-     * @throws \LogicException
-     * @since  Method available since Release 4.5.0
-     */
-    protected function prophesize($classOrInterface = null)
-    {
-        return $this->getProphet()->prophesize($classOrInterface);
-    }
-
-    /**
-     * Adds a value to the assertion counter.
-     *
-     * @param int $count
-     * @since Method available since Release 3.3.3
-     */
-    public function addToAssertionCount($count)
-    {
-        $this->numAssertions += $count;
-    }
-
-    /**
-     * Returns the number of assertions performed by this test.
-     *
-     * @return int
-     * @since  Method available since Release 3.3.0
-     */
-    public function getNumAssertions()
-    {
-        return $this->numAssertions;
-    }
-
-    /**
-     * Returns a matcher that matches when the method is executed
-     * zero or more times.
-     *
-     * @return PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount
-     * @since  Method available since Release 3.0.0
-     */
-    public static function any()
-    {
-        return new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
-    }
-
-    /**
-     * 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()
-    {
-        return new PHPUnit_Framework_MockObject_Matcher_InvokedCount(0);
-    }
-
-    /**
-     * Returns a matcher that matches when the method is executed
-     * at least N times.
-     *
-     * @param  int                                                      $requiredInvocations
-     * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount
-     * @since  Method available since Release 4.2.0
-     */
-    public static function atLeast($requiredInvocations)
-    {
-        return new PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount(
-            $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()
-    {
-        return new PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce;
-    }
-
-    /**
-     * 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()
-    {
-        return new PHPUnit_Framework_MockObject_Matcher_InvokedCount(1);
-    }
-
-    /**
-     * Returns a matcher that matches when the method is executed
-     * exactly $count times.
-     *
-     * @param  int                                               $count
-     * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
-     * @since  Method available since Release 3.0.0
-     */
-    public static function exactly($count)
-    {
-        return new PHPUnit_Framework_MockObject_Matcher_InvokedCount($count);
-    }
-
-    /**
-     * Returns a matcher that matches when the method is executed
-     * at most N times.
-     *
-     * @param  int                                                     $allowedInvocations
-     * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount
-     * @since  Method available since Release 4.2.0
-     */
-    public static function atMost($allowedInvocations)
-    {
-        return new PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount(
-            $allowedInvocations
-        );
-    }
-
-    /**
-     * Returns a matcher that matches when the method is executed
-     * at the given index.
-     *
-     * @param  int                                                 $index
-     * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex
-     * @since  Method available since Release 3.0.0
-     */
-    public static function at($index)
-    {
-        return new PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex($index);
-    }
-
-    /**
-     * @param  mixed                                    $value
-     * @return PHPUnit_Framework_MockObject_Stub_Return
-     * @since  Method available since Release 3.0.0
-     */
-    public static function returnValue($value)
-    {
-        return new PHPUnit_Framework_MockObject_Stub_Return($value);
-    }
-
-    /**
-     * @param  array                                            $valueMap
-     * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap
-     * @since  Method available since Release 3.6.0
-     */
-    public static function returnValueMap(array $valueMap)
-    {
-        return new PHPUnit_Framework_MockObject_Stub_ReturnValueMap($valueMap);
-    }
-
-    /**
-     * @param  int                                              $argumentIndex
-     * @return PHPUnit_Framework_MockObject_Stub_ReturnArgument
-     * @since  Method available since Release 3.3.0
-     */
-    public static function returnArgument($argumentIndex)
-    {
-        return new PHPUnit_Framework_MockObject_Stub_ReturnArgument(
-            $argumentIndex
-        );
-    }
-
-    /**
-     * @param  mixed                                            $callback
-     * @return PHPUnit_Framework_MockObject_Stub_ReturnCallback
-     * @since  Method available since Release 3.3.0
-     */
-    public static function returnCallback($callback)
-    {
-        return new PHPUnit_Framework_MockObject_Stub_ReturnCallback($callback);
-    }
-
-    /**
-     * Returns the current object.
-     *
-     * 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()
-    {
-        return new PHPUnit_Framework_MockObject_Stub_ReturnSelf();
-    }
-
-    /**
-     * @param  Exception                                   $exception
-     * @return PHPUnit_Framework_MockObject_Stub_Exception
-     * @since  Method available since Release 3.1.0
-     */
-    public static function throwException(Exception $exception)
-    {
-        return new PHPUnit_Framework_MockObject_Stub_Exception($exception);
-    }
-
-    /**
-     * @param  mixed                                              $value, ...
-     * @return PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls
-     * @since  Method available since Release 3.0.0
-     */
-    public static function onConsecutiveCalls()
-    {
-        $args = func_get_args();
-
-        return new PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls($args);
-    }
-
-    /**
-     * Gets the data set description of a TestCase.
-     *
-     * @param  bool   $includeData
-     * @return string
-     * @since  Method available since Release 3.3.0
-     */
-    protected function getDataSetAsString($includeData = true)
-    {
-        $buffer = '';
-
-        if (!empty($this->data)) {
-            if (is_int($this->dataName)) {
-                $buffer .= sprintf(' with data set #%d', $this->dataName);
-            } else {
-                $buffer .= sprintf(' with data set "%s"', $this->dataName);
-            }
-
-            $exporter = new Exporter;
-
-            if ($includeData) {
-                $buffer .= sprintf(' (%s)', $exporter->shortenedRecursiveExport($this->data));
-            }
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * Creates a default TestResult object.
-     *
-     * @return PHPUnit_Framework_TestResult
-     */
-    protected function createResult()
-    {
-        return new PHPUnit_Framework_TestResult;
-    }
-
-    /**
-     * @since Method available since Release 3.5.4
-     */
-    protected function handleDependencies()
-    {
-        if (!empty($this->dependencies) && !$this->inIsolation) {
-            $className  = get_class($this);
-            $passed     = $this->result->passed();
-            $passedKeys = array_keys($passed);
-            $numKeys    = count($passedKeys);
-
-            for ($i = 0; $i < $numKeys; $i++) {
-                $pos = strpos($passedKeys[$i], ' with data set');
-
-                if ($pos !== false) {
-                    $passedKeys[$i] = substr($passedKeys[$i], 0, $pos);
-                }
-            }
-
-            $passedKeys = array_flip(array_unique($passedKeys));
-
-            foreach ($this->dependencies as $dependency) {
-                if (strpos($dependency, '::') === false) {
-                    $dependency = $className . '::' . $dependency;
-                }
-
-                if (!isset($passedKeys[$dependency])) {
-                    $this->result->addError(
-                        $this,
-                        new PHPUnit_Framework_SkippedTestError(
-                            sprintf(
-                                'This test depends on "%s" to pass.',
-                                $dependency
-                            )
-                        ),
-                        0
-                    );
-
-                    return false;
-                }
-
-                if (isset($passed[$dependency])) {
-                    if ($passed[$dependency]['size'] != PHPUnit_Util_Test::UNKNOWN &&
-                        $this->getSize() != PHPUnit_Util_Test::UNKNOWN &&
-                        $passed[$dependency]['size'] > $this->getSize()) {
-                        $this->result->addError(
-                            $this,
-                            new PHPUnit_Framework_SkippedTestError(
-                                'This test depends on a test that is larger than itself.'
-                            ),
-                            0
-                        );
-
-                        return false;
-                    }
-
-                    $this->dependencyInput[$dependency] = $passed[$dependency]['result'];
-                } else {
-                    $this->dependencyInput[$dependency] = null;
-                }
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * This method is called before the first test of this test class is run.
-     *
-     * @since Method available since Release 3.4.0
-     */
-    public static function setUpBeforeClass()
-    {
-    }
-
-    /**
-     * Sets up the fixture, for example, open a network connection.
-     * This method is called before a test is executed.
-     */
-    protected function setUp()
-    {
-    }
-
-    /**
-     * Performs assertions shared by all tests of a test case.
-     *
-     * This method is called before the execution of a test starts
-     * and after setUp() is called.
-     *
-     * @since  Method available since Release 3.2.8
-     */
-    protected function assertPreConditions()
-    {
-    }
-
-    /**
-     * Performs assertions shared by all tests of a test case.
-     *
-     * This method is called before the execution of a test ends
-     * and before tearDown() is called.
-     *
-     * @since  Method available since Release 3.2.8
-     */
-    protected function assertPostConditions()
-    {
-    }
-
-    /**
-     * Tears down the fixture, for example, close a network connection.
-     * This method is called after a test is executed.
-     */
-    protected function tearDown()
-    {
-    }
-
-    /**
-     * This method is called after the last test of this test class is run.
-     *
-     * @since Method available since Release 3.4.0
-     */
-    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)
-    {
-        throw $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)
-    {
-    }
-
-    /**
-     * Get the mock object generator, creating it if it doesn't exist.
-     *
-     * @return PHPUnit_Framework_MockObject_Generator
-     */
-    protected function getMockObjectGenerator()
-    {
-        if (null === $this->mockObjectGenerator) {
-            $this->mockObjectGenerator = new PHPUnit_Framework_MockObject_Generator;
-        }
-
-        return $this->mockObjectGenerator;
-    }
-
-    /**
-     * @since Method available since Release 4.2.0
-     */
-    private function startOutputBuffering()
-    {
-        while (!defined('PHPUNIT_TESTSUITE') && ob_get_level() > 0) {
-            ob_end_clean();
-        }
-
-        ob_start();
-
-        $this->outputBufferingActive = true;
-        $this->outputBufferingLevel  = ob_get_level();
-    }
-
-    /**
-     * @since Method available since Release 4.2.0
-     */
-    private function stopOutputBuffering()
-    {
-        if (ob_get_level() != $this->outputBufferingLevel) {
-            while (ob_get_level() > 0) {
-                ob_end_clean();
-            }
-
-            throw new PHPUnit_Framework_RiskyTestError(
-                'Test code or tested code did not (only) close its own output buffers'
-            );
-        }
-
-        $output = ob_get_contents();
-
-        if ($this->outputCallback === false) {
-            $this->output = $output;
-        } else {
-            $this->output = call_user_func_array(
-                $this->outputCallback,
-                array($output)
-            );
-        }
-
-        ob_end_clean();
-
-        $this->outputBufferingActive = false;
-        $this->outputBufferingLevel  = ob_get_level();
-    }
-
-    private function snapshotGlobalState()
-    {
-        $backupGlobals = $this->backupGlobals === null || $this->backupGlobals === true;
-
-        if ($this->runTestInSeparateProcess || $this->inIsolation ||
-            (!$backupGlobals && !$this->backupStaticAttributes)) {
-            return;
-        }
-
-        $this->snapshot = $this->createGlobalStateSnapshot($backupGlobals);
-    }
-
-    private function restoreGlobalState()
-    {
-        if (!$this->snapshot instanceof Snapshot) {
-            return;
-        }
-
-        $backupGlobals = $this->backupGlobals === null || $this->backupGlobals === true;
-
-        if ($this->disallowChangesToGlobalState) {
-            $this->compareGlobalStateSnapshots(
-                $this->snapshot,
-                $this->createGlobalStateSnapshot($backupGlobals)
-            );
-        }
-
-        $restorer = new Restorer;
-
-        if ($backupGlobals) {
-            $restorer->restoreGlobalVariables($this->snapshot);
-        }
-
-        if ($this->backupStaticAttributes) {
-            $restorer->restoreStaticAttributes($this->snapshot);
-        }
-
-        $this->snapshot = null;
-    }
-
-    /**
-     * @param  bool     $backupGlobals
-     * @return Snapshot
-     */
-    private function createGlobalStateSnapshot($backupGlobals)
-    {
-        $blacklist = new Blacklist;
-
-        foreach ($this->backupGlobalsBlacklist as $globalVariable) {
-            $blacklist->addGlobalVariable($globalVariable);
-        }
-
-        if (!defined('PHPUNIT_TESTSUITE')) {
-            $blacklist->addClassNamePrefix('PHPUnit');
-            $blacklist->addClassNamePrefix('File_Iterator');
-            $blacklist->addClassNamePrefix('PHP_CodeCoverage');
-            $blacklist->addClassNamePrefix('PHP_Invoker');
-            $blacklist->addClassNamePrefix('PHP_Timer');
-            $blacklist->addClassNamePrefix('PHP_Token');
-            $blacklist->addClassNamePrefix('Symfony');
-            $blacklist->addClassNamePrefix('Text_Template');
-            $blacklist->addClassNamePrefix('Doctrine\Instantiator');
-
-            foreach ($this->backupStaticAttributesBlacklist as $class => $attributes) {
-                foreach ($attributes as $attribute) {
-                    $blacklist->addStaticAttribute($class, $attribute);
-                }
-            }
-        }
-
-        return new Snapshot(
-            $blacklist,
-            $backupGlobals,
-            $this->backupStaticAttributes,
-            false,
-            false,
-            false,
-            false,
-            false,
-            false,
-            false
-        );
-    }
-
-    /**
-     * @param  Snapshot                         $before
-     * @param  Snapshot                         $after
-     * @throws PHPUnit_Framework_RiskyTestError
-     */
-    private function compareGlobalStateSnapshots(Snapshot $before, Snapshot $after)
-    {
-        $backupGlobals = $this->backupGlobals === null || $this->backupGlobals === true;
-
-        if ($backupGlobals) {
-            $this->compareGlobalStateSnapshotPart(
-                $before->globalVariables(),
-                $after->globalVariables(),
-                "--- Global variables before the test\n+++ Global variables after the test\n"
-            );
-
-            $this->compareGlobalStateSnapshotPart(
-                $before->superGlobalVariables(),
-                $after->superGlobalVariables(),
-                "--- Super-global variables before the test\n+++ Super-global variables after the test\n"
-            );
-        }
-
-        if ($this->backupStaticAttributes) {
-            $this->compareGlobalStateSnapshotPart(
-                $before->staticAttributes(),
-                $after->staticAttributes(),
-                "--- Static attributes before the test\n+++ Static attributes after the test\n"
-            );
-        }
-    }
-
-    /**
-     * @param  array                            $before
-     * @param  array                            $after
-     * @param  string                           $header
-     * @throws PHPUnit_Framework_RiskyTestError
-     */
-    private function compareGlobalStateSnapshotPart(array $before, array $after, $header)
-    {
-        if ($before != $after) {
-            $differ   = new Differ($header);
-            $exporter = new Exporter;
-
-            $diff = $differ->diff(
-                $exporter->export($before),
-                $exporter->export($after)
-            );
-
-            throw new PHPUnit_Framework_RiskyTestError(
-                $diff
-            );
-        }
-    }
-
-    /**
-     * @return Prophecy\Prophet
-     * @since Method available since Release 4.5.0
-     */
-    private function getProphet()
-    {
-        if ($this->prophet === null) {
-            $this->prophet = new Prophet;
-        }
-
-        return $this->prophet;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestFailure.php b/vendor/phpunit/phpunit/src/Framework/TestFailure.php
deleted file mode 100644
index df1d5ef..0000000
--- a/vendor/phpunit/phpunit/src/Framework/TestFailure.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A TestFailure collects a failed test together with the caught exception.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Framework_TestFailure
-{
-    /**
-     * @var string
-     */
-    private $testName;
-
-    /**
-     * @var PHPUnit_Framework_Test|null
-     */
-    protected $failedTest;
-
-    /**
-     * @var Exception
-     */
-    protected $thrownException;
-
-    /**
-     * Constructs a TestFailure with the given test and exception.
-     *
-     * @param PHPUnit_Framework_Test $failedTest
-     * @param Exception              $thrownException
-     */
-    public function __construct(PHPUnit_Framework_Test $failedTest, Exception $thrownException)
-    {
-        if ($failedTest instanceof PHPUnit_Framework_SelfDescribing) {
-            $this->testName = $failedTest->toString();
-        } else {
-            $this->testName = get_class($failedTest);
-        }
-        if (!$failedTest instanceof PHPUnit_Framework_TestCase || !$failedTest->isInIsolation()) {
-            $this->failedTest = $failedTest;
-        }
-        $this->thrownException = $thrownException;
-    }
-
-    /**
-     * Returns a short description of the failure.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return sprintf(
-            '%s: %s',
-            $this->testName,
-            $this->thrownException->getMessage()
-        );
-    }
-
-    /**
-     * Returns a description for the thrown exception.
-     *
-     * @return string
-     * @since  Method available since Release 3.4.0
-     */
-    public function getExceptionAsString()
-    {
-        return self::exceptionToString($this->thrownException);
-    }
-
-    /**
-     * Returns a description for an exception.
-     *
-     * @param  Exception $e
-     * @return string
-     * @since  Method available since Release 3.2.0
-     */
-    public static function exceptionToString(Exception $e)
-    {
-        if ($e instanceof PHPUnit_Framework_SelfDescribing) {
-            $buffer = $e->toString();
-
-            if ($e instanceof PHPUnit_Framework_ExpectationFailedException && $e->getComparisonFailure()) {
-                $buffer = $buffer . $e->getComparisonFailure()->getDiff();
-            }
-
-            if (!empty($buffer)) {
-                $buffer = trim($buffer) . "\n";
-            }
-        } elseif ($e instanceof PHPUnit_Framework_Error) {
-            $buffer = $e->getMessage() . "\n";
-        } elseif ($e instanceof PHPUnit_Framework_ExceptionWrapper) {
-            $buffer = $e->getClassname() . ': ' . $e->getMessage() . "\n";
-        } else {
-            $buffer = get_class($e) . ': ' . $e->getMessage() . "\n";
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * 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()
-    {
-        return $this->testName;
-    }
-
-    /**
-     * Returns the failing test.
-     *
-     * Note: The test object is not set when the test is executed in process
-     * isolation.
-     *
-     * @see PHPUnit_Framework_Exception
-     *
-     * @return PHPUnit_Framework_Test|null
-     */
-    public function failedTest()
-    {
-        return $this->failedTest;
-    }
-
-    /**
-     * Gets the thrown exception.
-     *
-     * @return Exception
-     */
-    public function thrownException()
-    {
-        return $this->thrownException;
-    }
-
-    /**
-     * Returns the exception's message.
-     *
-     * @return string
-     */
-    public function exceptionMessage()
-    {
-        return $this->thrownException()->getMessage();
-    }
-
-    /**
-     * Returns true if the thrown exception
-     * is of type AssertionFailedError.
-     *
-     * @return bool
-     */
-    public function isFailure()
-    {
-        return ($this->thrownException() instanceof PHPUnit_Framework_AssertionFailedError);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestListener.php b/vendor/phpunit/phpunit/src/Framework/TestListener.php
deleted file mode 100644
index 056cab3..0000000
--- a/vendor/phpunit/phpunit/src/Framework/TestListener.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A Listener for test progress.
- *
- * @since      Interface available since Release 2.0.0
- */
-interface PHPUnit_Framework_TestListener
-{
-    /**
-     * An error occurred.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time);
-
-    /**
-     * A failure occurred.
-     *
-     * @param PHPUnit_Framework_Test                 $test
-     * @param PHPUnit_Framework_AssertionFailedError $e
-     * @param float                                  $time
-     */
-    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time);
-
-    /**
-     * Incomplete test.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time);
-
-    /**
-     * Risky test.
-     *
-     * @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);
-
-    /**
-     * Skipped test.
-     *
-     * @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);
-
-    /**
-     * A test suite started.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     * @since  Method available since Release 2.2.0
-     */
-    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);
-
-    /**
-     * A test started.
-     *
-     * @param PHPUnit_Framework_Test $test
-     */
-    public function startTest(PHPUnit_Framework_Test $test);
-
-    /**
-     * A test ended.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param float                  $time
-     */
-    public function endTest(PHPUnit_Framework_Test $test, $time);
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestResult.php b/vendor/phpunit/phpunit/src/Framework/TestResult.php
deleted file mode 100644
index 41c5d0a..0000000
--- a/vendor/phpunit/phpunit/src/Framework/TestResult.php
+++ /dev/null
@@ -1,1083 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A TestResult collects the results of executing a test case.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Framework_TestResult implements Countable
-{
-    /**
-     * @var array
-     */
-    protected $passed = array();
-
-    /**
-     * @var array
-     */
-    protected $errors = array();
-
-    /**
-     * @var array
-     */
-    protected $failures = array();
-
-    /**
-     * @var array
-     */
-    protected $notImplemented = array();
-
-    /**
-     * @var array
-     */
-    protected $risky = array();
-
-    /**
-     * @var array
-     */
-    protected $skipped = array();
-
-    /**
-     * @var array
-     */
-    protected $listeners = array();
-
-    /**
-     * @var int
-     */
-    protected $runTests = 0;
-
-    /**
-     * @var float
-     */
-    protected $time = 0;
-
-    /**
-     * @var PHPUnit_Framework_TestSuite
-     */
-    protected $topTestSuite = null;
-
-    /**
-     * Code Coverage information.
-     *
-     * @var PHP_CodeCoverage
-     */
-    protected $codeCoverage;
-
-    /**
-     * @var bool
-     */
-    protected $convertErrorsToExceptions = true;
-
-    /**
-     * @var bool
-     */
-    protected $stop = false;
-
-    /**
-     * @var bool
-     */
-    protected $stopOnError = false;
-
-    /**
-     * @var bool
-     */
-    protected $stopOnFailure = false;
-
-    /**
-     * @var bool
-     */
-    protected $beStrictAboutTestsThatDoNotTestAnything = false;
-
-    /**
-     * @var bool
-     */
-    protected $beStrictAboutOutputDuringTests = false;
-
-    /**
-     * @var bool
-     */
-    protected $beStrictAboutTestSize = false;
-
-    /**
-     * @var bool
-     */
-    protected $beStrictAboutTodoAnnotatedTests = false;
-
-    /**
-     * @var bool
-     */
-    protected $stopOnRisky = false;
-
-    /**
-     * @var bool
-     */
-    protected $stopOnIncomplete = false;
-
-    /**
-     * @var bool
-     */
-    protected $stopOnSkipped = false;
-
-    /**
-     * @var bool
-     */
-    protected $lastTestFailed = false;
-
-    /**
-     * @var int
-     */
-    protected $timeoutForSmallTests = 1;
-
-    /**
-     * @var int
-     */
-    protected $timeoutForMediumTests = 10;
-
-    /**
-     * @var int
-     */
-    protected $timeoutForLargeTests = 60;
-
-    /**
-     * Registers a TestListener.
-     *
-     * @param  PHPUnit_Framework_TestListener
-     */
-    public function addListener(PHPUnit_Framework_TestListener $listener)
-    {
-        $this->listeners[] = $listener;
-    }
-
-    /**
-     * Unregisters a TestListener.
-     *
-     * @param PHPUnit_Framework_TestListener $listener
-     */
-    public function removeListener(PHPUnit_Framework_TestListener $listener)
-    {
-        foreach ($this->listeners as $key => $_listener) {
-            if ($listener === $_listener) {
-                unset($this->listeners[$key]);
-            }
-        }
-    }
-
-    /**
-     * Flushes all flushable TestListeners.
-     *
-     * @since  Method available since Release 3.0.0
-     */
-    public function flushListeners()
-    {
-        foreach ($this->listeners as $listener) {
-            if ($listener instanceof PHPUnit_Util_Printer) {
-                $listener->flush();
-            }
-        }
-    }
-
-    /**
-     * Adds an error to the list of errors.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        if ($e instanceof PHPUnit_Framework_RiskyTest) {
-            $this->risky[] = new PHPUnit_Framework_TestFailure($test, $e);
-            $notifyMethod  = 'addRiskyTest';
-
-            if ($this->stopOnRisky) {
-                $this->stop();
-            }
-        } elseif ($e instanceof PHPUnit_Framework_IncompleteTest) {
-            $this->notImplemented[] = new PHPUnit_Framework_TestFailure($test, $e);
-            $notifyMethod           = 'addIncompleteTest';
-
-            if ($this->stopOnIncomplete) {
-                $this->stop();
-            }
-        } elseif ($e instanceof PHPUnit_Framework_SkippedTest) {
-            $this->skipped[] = new PHPUnit_Framework_TestFailure($test, $e);
-            $notifyMethod    = 'addSkippedTest';
-
-            if ($this->stopOnSkipped) {
-                $this->stop();
-            }
-        } else {
-            $this->errors[] = new PHPUnit_Framework_TestFailure($test, $e);
-            $notifyMethod   = 'addError';
-
-            if ($this->stopOnError || $this->stopOnFailure) {
-                $this->stop();
-            }
-        }
-
-        foreach ($this->listeners as $listener) {
-            $listener->$notifyMethod($test, $e, $time);
-        }
-
-        $this->lastTestFailed = true;
-        $this->time          += $time;
-    }
-
-    /**
-     * Adds a failure to the list of failures.
-     * The passed in exception caused the failure.
-     *
-     * @param PHPUnit_Framework_Test                 $test
-     * @param PHPUnit_Framework_AssertionFailedError $e
-     * @param float                                  $time
-     */
-    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
-    {
-        if ($e instanceof PHPUnit_Framework_RiskyTest ||
-            $e instanceof PHPUnit_Framework_OutputError) {
-            $this->risky[] = new PHPUnit_Framework_TestFailure($test, $e);
-            $notifyMethod  = 'addRiskyTest';
-
-            if ($this->stopOnRisky) {
-                $this->stop();
-            }
-        } elseif ($e instanceof PHPUnit_Framework_IncompleteTest) {
-            $this->notImplemented[] = new PHPUnit_Framework_TestFailure($test, $e);
-            $notifyMethod           = 'addIncompleteTest';
-
-            if ($this->stopOnIncomplete) {
-                $this->stop();
-            }
-        } elseif ($e instanceof PHPUnit_Framework_SkippedTest) {
-            $this->skipped[] = new PHPUnit_Framework_TestFailure($test, $e);
-            $notifyMethod    = 'addSkippedTest';
-
-            if ($this->stopOnSkipped) {
-                $this->stop();
-            }
-        } else {
-            $this->failures[] = new PHPUnit_Framework_TestFailure($test, $e);
-            $notifyMethod     = 'addFailure';
-
-            if ($this->stopOnFailure) {
-                $this->stop();
-            }
-        }
-
-        foreach ($this->listeners as $listener) {
-            $listener->$notifyMethod($test, $e, $time);
-        }
-
-        $this->lastTestFailed = true;
-        $this->time          += $time;
-    }
-
-    /**
-     * 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)
-    {
-        if ($this->topTestSuite === null) {
-            $this->topTestSuite = $suite;
-        }
-
-        foreach ($this->listeners as $listener) {
-            $listener->startTestSuite($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)
-    {
-        foreach ($this->listeners as $listener) {
-            $listener->endTestSuite($suite);
-        }
-    }
-
-    /**
-     * Informs the result that a test will be started.
-     *
-     * @param PHPUnit_Framework_Test $test
-     */
-    public function startTest(PHPUnit_Framework_Test $test)
-    {
-        $this->lastTestFailed = false;
-        $this->runTests      += count($test);
-
-        foreach ($this->listeners as $listener) {
-            $listener->startTest($test);
-        }
-    }
-
-    /**
-     * Informs the result that a test was completed.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param float                  $time
-     */
-    public function endTest(PHPUnit_Framework_Test $test, $time)
-    {
-        foreach ($this->listeners as $listener) {
-            $listener->endTest($test, $time);
-        }
-
-        if (!$this->lastTestFailed && $test instanceof PHPUnit_Framework_TestCase) {
-            $class  = get_class($test);
-            $key    = $class . '::' . $test->getName();
-
-            $this->passed[$key] = array(
-                'result' => $test->getResult(),
-                'size'   => PHPUnit_Util_Test::getSize(
-                    $class,
-                    $test->getName(false)
-                )
-            );
-
-            $this->time += $time;
-        }
-    }
-
-    /**
-     * Returns true if no risky test occurred.
-     *
-     * @return bool
-     * @since  Method available since Release 4.0.0
-     */
-    public function allHarmless()
-    {
-        return $this->riskyCount() == 0;
-    }
-
-    /**
-     * Gets the number of risky tests.
-     *
-     * @return int
-     * @since  Method available since Release 4.0.0
-     */
-    public function riskyCount()
-    {
-        return count($this->risky);
-    }
-
-    /**
-     * Returns true if no incomplete test occurred.
-     *
-     * @return bool
-     */
-    public function allCompletelyImplemented()
-    {
-        return $this->notImplementedCount() == 0;
-    }
-
-    /**
-     * Gets the number of incomplete tests.
-     *
-     * @return int
-     */
-    public function notImplementedCount()
-    {
-        return count($this->notImplemented);
-    }
-
-    /**
-     * Returns an Enumeration for the risky tests.
-     *
-     * @return array
-     * @since  Method available since Release 4.0.0
-     */
-    public function risky()
-    {
-        return $this->risky;
-    }
-
-    /**
-     * Returns an Enumeration for the incomplete tests.
-     *
-     * @return array
-     */
-    public function notImplemented()
-    {
-        return $this->notImplemented;
-    }
-
-    /**
-     * Returns true if no test has been skipped.
-     *
-     * @return bool
-     * @since  Method available since Release 3.0.0
-     */
-    public function noneSkipped()
-    {
-        return $this->skippedCount() == 0;
-    }
-
-    /**
-     * Gets the number of skipped tests.
-     *
-     * @return int
-     * @since  Method available since Release 3.0.0
-     */
-    public function skippedCount()
-    {
-        return count($this->skipped);
-    }
-
-    /**
-     * Returns an Enumeration for the skipped tests.
-     *
-     * @return array
-     * @since  Method available since Release 3.0.0
-     */
-    public function skipped()
-    {
-        return $this->skipped;
-    }
-
-    /**
-     * Gets the number of detected errors.
-     *
-     * @return int
-     */
-    public function errorCount()
-    {
-        return count($this->errors);
-    }
-
-    /**
-     * Returns an Enumeration for the errors.
-     *
-     * @return array
-     */
-    public function errors()
-    {
-        return $this->errors;
-    }
-
-    /**
-     * Gets the number of detected failures.
-     *
-     * @return int
-     */
-    public function failureCount()
-    {
-        return count($this->failures);
-    }
-
-    /**
-     * Returns an Enumeration for the failures.
-     *
-     * @return array
-     */
-    public function failures()
-    {
-        return $this->failures;
-    }
-
-    /**
-     * Returns the names of the tests that have passed.
-     *
-     * @return array
-     * @since  Method available since Release 3.4.0
-     */
-    public function passed()
-    {
-        return $this->passed;
-    }
-
-    /**
-     * Returns the (top) test suite.
-     *
-     * @return PHPUnit_Framework_TestSuite
-     * @since  Method available since Release 3.0.0
-     */
-    public function topTestSuite()
-    {
-        return $this->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()
-    {
-        return $this->codeCoverage !== null;
-    }
-
-    /**
-     * Runs a TestCase.
-     *
-     * @param PHPUnit_Framework_Test $test
-     */
-    public function run(PHPUnit_Framework_Test $test)
-    {
-        PHPUnit_Framework_Assert::resetCount();
-
-        $error      = false;
-        $failure    = false;
-        $incomplete = false;
-        $risky      = false;
-        $skipped    = false;
-
-        $this->startTest($test);
-
-        $errorHandlerSet = false;
-
-        if ($this->convertErrorsToExceptions) {
-            $oldErrorHandler = set_error_handler(
-                array('PHPUnit_Util_ErrorHandler', 'handleError'),
-                E_ALL | E_STRICT
-            );
-
-            if ($oldErrorHandler === null) {
-                $errorHandlerSet = true;
-            } else {
-                restore_error_handler();
-            }
-        }
-
-        $collectCodeCoverage = $this->codeCoverage !== null &&
-                               !$test instanceof PHPUnit_Extensions_SeleniumTestCase &&
-                               !$test instanceof PHPUnit_Framework_Warning;
-
-        if ($collectCodeCoverage) {
-            // We need to blacklist test source files when no whitelist is used.
-            if (!$this->codeCoverage->filter()->hasWhitelist()) {
-                $classes = $this->getHierarchy(get_class($test), true);
-
-                foreach ($classes as $class) {
-                    $this->codeCoverage->filter()->addFileToBlacklist(
-                        $class->getFileName()
-                    );
-                }
-            }
-
-            $this->codeCoverage->start($test);
-        }
-
-        PHP_Timer::start();
-
-        try {
-            if (!$test instanceof PHPUnit_Framework_Warning &&
-                $test->getSize() != PHPUnit_Util_Test::UNKNOWN &&
-                $this->beStrictAboutTestSize &&
-                extension_loaded('pcntl') && class_exists('PHP_Invoker')) {
-                switch ($test->getSize()) {
-                    case PHPUnit_Util_Test::SMALL:
-                        $_timeout = $this->timeoutForSmallTests;
-                        break;
-
-                    case PHPUnit_Util_Test::MEDIUM:
-                        $_timeout = $this->timeoutForMediumTests;
-                        break;
-
-                    case PHPUnit_Util_Test::LARGE:
-                        $_timeout = $this->timeoutForLargeTests;
-                        break;
-                }
-
-                $invoker = new PHP_Invoker;
-                $invoker->invoke(array($test, 'runBare'), array(), $_timeout);
-            } else {
-                $test->runBare();
-            }
-        } catch (PHPUnit_Framework_AssertionFailedError $e) {
-            $failure = true;
-
-            if ($e instanceof PHPUnit_Framework_RiskyTestError) {
-                $risky = true;
-            } elseif ($e instanceof PHPUnit_Framework_IncompleteTestError) {
-                $incomplete = true;
-            } elseif ($e instanceof PHPUnit_Framework_SkippedTestError) {
-                $skipped = true;
-            }
-        } catch (PHPUnit_Framework_Exception $e) {
-            $error = true;
-        } catch (Throwable $e) {
-            $e     = new PHPUnit_Framework_ExceptionWrapper($e);
-            $error = true;
-        } catch (Exception $e) {
-            $e     = new PHPUnit_Framework_ExceptionWrapper($e);
-            $error = true;
-        }
-
-        $time = PHP_Timer::stop();
-        $test->addToAssertionCount(PHPUnit_Framework_Assert::getCount());
-
-        if ($this->beStrictAboutTestsThatDoNotTestAnything &&
-            $test->getNumAssertions() == 0) {
-            $risky = true;
-        }
-
-        if ($collectCodeCoverage) {
-            $append           = !$risky && !$incomplete && !$skipped;
-            $linesToBeCovered = array();
-            $linesToBeUsed    = array();
-
-            if ($append && $test instanceof PHPUnit_Framework_TestCase) {
-                $linesToBeCovered = PHPUnit_Util_Test::getLinesToBeCovered(
-                    get_class($test),
-                    $test->getName(false)
-                );
-
-                $linesToBeUsed = PHPUnit_Util_Test::getLinesToBeUsed(
-                    get_class($test),
-                    $test->getName(false)
-                );
-            }
-
-            try {
-                $this->codeCoverage->stop(
-                    $append,
-                    $linesToBeCovered,
-                    $linesToBeUsed
-                );
-            } catch (PHP_CodeCoverage_Exception_UnintentionallyCoveredCode $cce) {
-                $this->addFailure(
-                    $test,
-                    new PHPUnit_Framework_UnintentionallyCoveredCodeError(
-                        'This test executed code that is not listed as code to be covered or used:' .
-                        PHP_EOL . $cce->getMessage()
-                    ),
-                    $time
-                );
-            } catch (PHPUnit_Framework_InvalidCoversTargetException $cce) {
-                $this->addFailure(
-                    $test,
-                    new PHPUnit_Framework_InvalidCoversTargetError(
-                        $cce->getMessage()
-                    ),
-                    $time
-                );
-            } catch (PHP_CodeCoverage_Exception $cce) {
-                $error = true;
-
-                if (!isset($e)) {
-                    $e = $cce;
-                }
-            }
-        }
-
-        if ($errorHandlerSet === true) {
-            restore_error_handler();
-        }
-
-        if ($error === true) {
-            $this->addError($test, $e, $time);
-        } elseif ($failure === true) {
-            $this->addFailure($test, $e, $time);
-        } elseif ($this->beStrictAboutTestsThatDoNotTestAnything &&
-                 $test->getNumAssertions() == 0) {
-            $this->addFailure(
-                $test,
-                new PHPUnit_Framework_RiskyTestError(
-                    'This test did not perform any assertions'
-                ),
-                $time
-            );
-        } elseif ($this->beStrictAboutOutputDuringTests && $test->hasOutput()) {
-            $this->addFailure(
-                $test,
-                new PHPUnit_Framework_OutputError(
-                    sprintf(
-                        'This test printed output: %s',
-                        $test->getActualOutput()
-                    )
-                ),
-                $time
-            );
-        } elseif ($this->beStrictAboutTodoAnnotatedTests && $test instanceof PHPUnit_Framework_TestCase) {
-            $annotations = $test->getAnnotations();
-
-            if (isset($annotations['method']['todo'])) {
-                $this->addFailure(
-                    $test,
-                    new PHPUnit_Framework_RiskyTestError(
-                        'Test method is annotated with @todo'
-                    ),
-                    $time
-                );
-            }
-        }
-
-        $this->endTest($test, $time);
-    }
-
-    /**
-     * Gets the number of run tests.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return $this->runTests;
-    }
-
-    /**
-     * Checks whether the test run should stop.
-     *
-     * @return bool
-     */
-    public function shouldStop()
-    {
-        return $this->stop;
-    }
-
-    /**
-     * Marks that the test run should stop.
-     */
-    public function stop()
-    {
-        $this->stop = true;
-    }
-
-    /**
-     * Returns the PHP_CodeCoverage object.
-     *
-     * @return PHP_CodeCoverage
-     * @since  Method available since Release 3.5.0
-     */
-    public function getCodeCoverage()
-    {
-        return $this->codeCoverage;
-    }
-
-    /**
-     * Sets the PHP_CodeCoverage object.
-     *
-     * @param PHP_CodeCoverage $codeCoverage
-     * @since Method available since Release 3.6.0
-     */
-    public function setCodeCoverage(PHP_CodeCoverage $codeCoverage)
-    {
-        $this->codeCoverage = $codeCoverage;
-    }
-
-    /**
-     * Enables or disables the error-to-exception conversion.
-     *
-     * @param  bool                        $flag
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.2.14
-     */
-    public function convertErrorsToExceptions($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-
-        $this->convertErrorsToExceptions = $flag;
-    }
-
-    /**
-     * Returns the error-to-exception conversion setting.
-     *
-     * @return bool
-     * @since  Method available since Release 3.4.0
-     */
-    public function getConvertErrorsToExceptions()
-    {
-        return $this->convertErrorsToExceptions;
-    }
-
-    /**
-     * Enables or disables the stopping when an error occurs.
-     *
-     * @param  bool                        $flag
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.5.0
-     */
-    public function stopOnError($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-
-        $this->stopOnError = $flag;
-    }
-
-    /**
-     * Enables or disables the stopping when a failure occurs.
-     *
-     * @param  bool                        $flag
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.1.0
-     */
-    public function stopOnFailure($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-
-        $this->stopOnFailure = $flag;
-    }
-
-    /**
-     * @param  bool                        $flag
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 4.0.0
-     */
-    public function beStrictAboutTestsThatDoNotTestAnything($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-
-        $this->beStrictAboutTestsThatDoNotTestAnything = $flag;
-    }
-
-    /**
-     * @return bool
-     * @since  Method available since Release 4.0.0
-     */
-    public function isStrictAboutTestsThatDoNotTestAnything()
-    {
-        return $this->beStrictAboutTestsThatDoNotTestAnything;
-    }
-
-    /**
-     * @param  bool                        $flag
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 4.0.0
-     */
-    public function beStrictAboutOutputDuringTests($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-
-        $this->beStrictAboutOutputDuringTests = $flag;
-    }
-
-    /**
-     * @return bool
-     * @since  Method available since Release 4.0.0
-     */
-    public function isStrictAboutOutputDuringTests()
-    {
-        return $this->beStrictAboutOutputDuringTests;
-    }
-
-    /**
-     * @param  bool                        $flag
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 4.0.0
-     */
-    public function beStrictAboutTestSize($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-
-        $this->beStrictAboutTestSize = $flag;
-    }
-
-    /**
-     * @return bool
-     * @since  Method available since Release 4.0.0
-     */
-    public function isStrictAboutTestSize()
-    {
-        return $this->beStrictAboutTestSize;
-    }
-
-    /**
-     * @param  bool                        $flag
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 4.2.0
-     */
-    public function beStrictAboutTodoAnnotatedTests($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-
-        $this->beStrictAboutTodoAnnotatedTests = $flag;
-    }
-
-    /**
-     * @return bool
-     * @since  Method available since Release 4.2.0
-     */
-    public function isStrictAboutTodoAnnotatedTests()
-    {
-        return $this->beStrictAboutTodoAnnotatedTests;
-    }
-
-    /**
-     * Enables or disables the stopping for risky tests.
-     *
-     * @param  bool                        $flag
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 4.0.0
-     */
-    public function stopOnRisky($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-
-        $this->stopOnRisky = $flag;
-    }
-
-    /**
-     * Enables or disables the stopping for incomplete tests.
-     *
-     * @param  bool                        $flag
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.5.0
-     */
-    public function stopOnIncomplete($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-
-        $this->stopOnIncomplete = $flag;
-    }
-
-    /**
-     * Enables or disables the stopping for skipped tests.
-     *
-     * @param  bool                        $flag
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.1.0
-     */
-    public function stopOnSkipped($flag)
-    {
-        if (!is_bool($flag)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-
-        $this->stopOnSkipped = $flag;
-    }
-
-    /**
-     * Returns the time spent running the tests.
-     *
-     * @return float
-     */
-    public function time()
-    {
-        return $this->time;
-    }
-
-    /**
-     * Returns whether the entire test was successful or not.
-     *
-     * @return bool
-     */
-    public function wasSuccessful()
-    {
-        return empty($this->errors) && empty($this->failures);
-    }
-
-    /**
-     * Sets the timeout for small tests.
-     *
-     * @param  int                         $timeout
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.6.0
-     */
-    public function setTimeoutForSmallTests($timeout)
-    {
-        if (!is_integer($timeout)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer');
-        }
-
-        $this->timeoutForSmallTests = $timeout;
-    }
-
-    /**
-     * Sets the timeout for medium tests.
-     *
-     * @param  int                         $timeout
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.6.0
-     */
-    public function setTimeoutForMediumTests($timeout)
-    {
-        if (!is_integer($timeout)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer');
-        }
-
-        $this->timeoutForMediumTests = $timeout;
-    }
-
-    /**
-     * Sets the timeout for large tests.
-     *
-     * @param  int                         $timeout
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.6.0
-     */
-    public function setTimeoutForLargeTests($timeout)
-    {
-        if (!is_integer($timeout)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'integer');
-        }
-
-        $this->timeoutForLargeTests = $timeout;
-    }
-
-    /**
-     * Returns the class hierarchy for a given class.
-     *
-     * @param  string $className
-     * @param  bool   $asReflectionObjects
-     * @return array
-     */
-    protected function getHierarchy($className, $asReflectionObjects = false)
-    {
-        if ($asReflectionObjects) {
-            $classes = array(new ReflectionClass($className));
-        } else {
-            $classes = array($className);
-        }
-
-        $done = false;
-
-        while (!$done) {
-            if ($asReflectionObjects) {
-                $class = new ReflectionClass(
-                    $classes[count($classes) - 1]->getName()
-                );
-            } else {
-                $class = new ReflectionClass($classes[count($classes) - 1]);
-            }
-
-            $parent = $class->getParentClass();
-
-            if ($parent !== false) {
-                if ($asReflectionObjects) {
-                    $classes[] = $parent;
-                } else {
-                    $classes[] = $parent->getName();
-                }
-            } else {
-                $done = true;
-            }
-        }
-
-        return $classes;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestSuite.php b/vendor/phpunit/phpunit/src/Framework/TestSuite.php
deleted file mode 100644
index 7674f2d..0000000
--- a/vendor/phpunit/phpunit/src/Framework/TestSuite.php
+++ /dev/null
@@ -1,1007 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A TestSuite is a composite of Tests. It runs a collection of test cases.
- *
- * Here is an example using the dynamic test definition.
- *
- * <code>
- * <?php
- * $suite = new PHPUnit_Framework_TestSuite;
- * $suite->addTest(new MathTest('testPass'));
- * ?>
- * </code>
- *
- * Alternatively, a TestSuite can extract the tests to be run automatically.
- * To do so you pass a ReflectionClass instance for your
- * PHPUnit_Framework_TestCase class to the PHPUnit_Framework_TestSuite
- * constructor.
- *
- * <code>
- * <?php
- * $suite = new PHPUnit_Framework_TestSuite(
- *   new ReflectionClass('MathTest')
- * );
- * ?>
- * </code>
- *
- * This constructor creates a suite with all the methods starting with
- * "test" that take no arguments.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Framework_TestSuite implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing, IteratorAggregate
-{
-    /**
-     * Last count of tests in this suite.
-     *
-     * @var int|null
-     */
-    private $cachedNumTests;
-
-    /**
-     * Enable or disable the backup and restoration of the $GLOBALS array.
-     *
-     * @var bool
-     */
-    protected $backupGlobals = null;
-
-    /**
-     * Enable or disable the backup and restoration of static attributes.
-     *
-     * @var bool
-     */
-    protected $backupStaticAttributes = null;
-
-    /**
-     * @var bool
-     */
-    private $disallowChangesToGlobalState = null;
-
-    /**
-     * @var bool
-     */
-    protected $runTestInSeparateProcess = false;
-
-    /**
-     * The name of the test suite.
-     *
-     * @var string
-     */
-    protected $name = '';
-
-    /**
-     * The test groups of the test suite.
-     *
-     * @var array
-     */
-    protected $groups = array();
-
-    /**
-     * The tests in the test suite.
-     *
-     * @var array
-     */
-    protected $tests = array();
-
-    /**
-     * The number of tests in the test suite.
-     *
-     * @var int
-     */
-    protected $numTests = -1;
-
-    /**
-     * @var bool
-     */
-    protected $testCase = false;
-
-    /**
-     * @var array
-     */
-    protected $foundClasses = array();
-
-    /**
-     * @var PHPUnit_Runner_Filter_Factory
-     */
-    private $iteratorFilter = null;
-
-    /**
-     * Constructs a new TestSuite:
-     *
-     *   - PHPUnit_Framework_TestSuite() constructs an empty TestSuite.
-     *
-     *   - PHPUnit_Framework_TestSuite(ReflectionClass) constructs a
-     *     TestSuite from the given class.
-     *
-     *   - PHPUnit_Framework_TestSuite(ReflectionClass, String)
-     *     constructs a TestSuite from the given class with the given
-     *     name.
-     *
-     *   - PHPUnit_Framework_TestSuite(String) either constructs a
-     *     TestSuite from the given class (if the passed string is the
-     *     name of an existing class) or constructs an empty TestSuite
-     *     with the given name.
-     *
-     * @param  mixed                       $theClass
-     * @param  string                      $name
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function __construct($theClass = '', $name = '')
-    {
-        $argumentsValid = false;
-
-        if (is_object($theClass) &&
-            $theClass instanceof ReflectionClass) {
-            $argumentsValid = true;
-        } elseif (is_string($theClass) &&
-                 $theClass !== '' &&
-                 class_exists($theClass, false)) {
-            $argumentsValid = true;
-
-            if ($name == '') {
-                $name = $theClass;
-            }
-
-            $theClass = new ReflectionClass($theClass);
-        } elseif (is_string($theClass)) {
-            $this->setName($theClass);
-
-            return;
-        }
-
-        if (!$argumentsValid) {
-            throw new PHPUnit_Framework_Exception;
-        }
-
-        if (!$theClass->isSubclassOf('PHPUnit_Framework_TestCase')) {
-            throw new PHPUnit_Framework_Exception(
-                'Class "' . $theClass->name . '" does not extend PHPUnit_Framework_TestCase.'
-            );
-        }
-
-        if ($name != '') {
-            $this->setName($name);
-        } else {
-            $this->setName($theClass->getName());
-        }
-
-        $constructor = $theClass->getConstructor();
-
-        if ($constructor !== null &&
-            !$constructor->isPublic()) {
-            $this->addTest(
-                self::warning(
-                    sprintf(
-                        'Class "%s" has no public constructor.',
-                        $theClass->getName()
-                    )
-                )
-            );
-
-            return;
-        }
-
-        foreach ($theClass->getMethods() as $method) {
-            $this->addTestMethod($theClass, $method);
-        }
-
-        if (empty($this->tests)) {
-            $this->addTest(
-                self::warning(
-                    sprintf(
-                        'No tests found in class "%s".',
-                        $theClass->getName()
-                    )
-                )
-            );
-        }
-
-        $this->testCase = true;
-    }
-
-    /**
-     * Returns a string representation of the test suite.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return $this->getName();
-    }
-
-    /**
-     * Adds a test to the suite.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param array                  $groups
-     */
-    public function addTest(PHPUnit_Framework_Test $test, $groups = array())
-    {
-        $class = new ReflectionClass($test);
-
-        if (!$class->isAbstract()) {
-            $this->tests[]  = $test;
-            $this->numTests = -1;
-
-            if ($test instanceof self &&
-                empty($groups)) {
-                $groups = $test->getGroups();
-            }
-
-            if (empty($groups)) {
-                $groups = array('default');
-            }
-
-            foreach ($groups as $group) {
-                if (!isset($this->groups[$group])) {
-                    $this->groups[$group] = array($test);
-                } else {
-                    $this->groups[$group][] = $test;
-                }
-            }
-        }
-    }
-
-    /**
-     * Adds the tests from the given class to the suite.
-     *
-     * @param  mixed                       $testClass
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function addTestSuite($testClass)
-    {
-        if (is_string($testClass) && class_exists($testClass)) {
-            $testClass = new ReflectionClass($testClass);
-        }
-
-        if (!is_object($testClass)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                1,
-                'class name or object'
-            );
-        }
-
-        if ($testClass instanceof self) {
-            $this->addTest($testClass);
-        } elseif ($testClass instanceof ReflectionClass) {
-            $suiteMethod = false;
-
-            if (!$testClass->isAbstract()) {
-                if ($testClass->hasMethod(PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME)) {
-                    $method = $testClass->getMethod(
-                        PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME
-                    );
-
-                    if ($method->isStatic()) {
-                        $this->addTest(
-                            $method->invoke(null, $testClass->getName())
-                        );
-
-                        $suiteMethod = true;
-                    }
-                }
-            }
-
-            if (!$suiteMethod && !$testClass->isAbstract()) {
-                $this->addTest(new self($testClass));
-            }
-        } else {
-            throw new PHPUnit_Framework_Exception;
-        }
-    }
-
-    /**
-     * Wraps both <code>addTest()</code> and <code>addTestSuite</code>
-     * as well as the separate import statements for the user's convenience.
-     *
-     * If the named file cannot be read or there are no new tests that can be
-     * added, a <code>PHPUnit_Framework_Warning</code> will be created instead,
-     * leaving the current test run untouched.
-     *
-     * @param  string                      $filename
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 2.3.0
-     */
-    public function addTestFile($filename)
-    {
-        if (!is_string($filename)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
-        }
-
-        if (file_exists($filename) && substr($filename, -5) == '.phpt') {
-            $this->addTest(
-                new PHPUnit_Extensions_PhptTestCase($filename)
-            );
-
-            return;
-        }
-
-        // The given file may contain further stub classes in addition to the
-        // test class itself. Figure out the actual test class.
-        $classes    = get_declared_classes();
-        $filename   = PHPUnit_Util_Fileloader::checkAndLoad($filename);
-        $newClasses = array_diff(get_declared_classes(), $classes);
-
-        // The diff is empty in case a parent class (with test methods) is added
-        // AFTER a child class that inherited from it. To account for that case,
-        // cumulate all discovered classes, so the parent class may be found in
-        // a later invocation.
-        if ($newClasses) {
-            // On the assumption that test classes are defined first in files,
-            // process discovered classes in approximate LIFO order, so as to
-            // avoid unnecessary reflection.
-            $this->foundClasses = array_merge($newClasses, $this->foundClasses);
-        }
-
-        // The test class's name must match the filename, either in full, or as
-        // a PEAR/PSR-0 prefixed shortname ('NameSpace_ShortName'), or as a
-        // PSR-1 local shortname ('NameSpace\ShortName'). The comparison must be
-        // anchored to prevent false-positive matches (e.g., 'OtherShortName').
-        $shortname      = basename($filename, '.php');
-        $shortnameRegEx = '/(?:^|_|\\\\)' . preg_quote($shortname, '/') . '$/';
-
-        foreach ($this->foundClasses as $i => $className) {
-            if (preg_match($shortnameRegEx, $className)) {
-                $class = new ReflectionClass($className);
-
-                if ($class->getFileName() == $filename) {
-                    $newClasses = array($className);
-                    unset($this->foundClasses[$i]);
-                    break;
-                }
-            }
-        }
-
-        foreach ($newClasses as $className) {
-            $class = new ReflectionClass($className);
-
-            if (!$class->isAbstract()) {
-                if ($class->hasMethod(PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME)) {
-                    $method = $class->getMethod(
-                        PHPUnit_Runner_BaseTestRunner::SUITE_METHODNAME
-                    );
-
-                    if ($method->isStatic()) {
-                        $this->addTest($method->invoke(null, $className));
-                    }
-                } elseif ($class->implementsInterface('PHPUnit_Framework_Test')) {
-                    $this->addTestSuite($class);
-                }
-            }
-        }
-
-        $this->numTests = -1;
-    }
-
-    /**
-     * Wrapper for addTestFile() that adds multiple test files.
-     *
-     * @param  array|Iterator              $filenames
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 2.3.0
-     */
-    public function addTestFiles($filenames)
-    {
-        if (!(is_array($filenames) ||
-             (is_object($filenames) && $filenames instanceof Iterator))) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                1,
-                'array or iterator'
-            );
-        }
-
-        foreach ($filenames as $filename) {
-            $this->addTestFile((string) $filename);
-        }
-    }
-
-    /**
-     * Counts the number of test cases that will be run by this test.
-     *
-     * @param  bool $preferCache Indicates if cache is preferred.
-     * @return int
-     */
-    public function count($preferCache = false)
-    {
-        if ($preferCache && $this->cachedNumTests != null) {
-            $numTests = $this->cachedNumTests;
-        } else {
-            $numTests = 0;
-            foreach ($this as $test) {
-                $numTests += count($test);
-            }
-            $this->cachedNumTests = $numTests;
-        }
-
-        return $numTests;
-    }
-
-    /**
-     * @param  ReflectionClass             $theClass
-     * @param  string                      $name
-     * @return PHPUnit_Framework_Test
-     * @throws PHPUnit_Framework_Exception
-     */
-    public static function createTest(ReflectionClass $theClass, $name)
-    {
-        $className = $theClass->getName();
-
-        if (!$theClass->isInstantiable()) {
-            return self::warning(
-                sprintf('Cannot instantiate class "%s".', $className)
-            );
-        }
-
-        $backupSettings = PHPUnit_Util_Test::getBackupSettings(
-            $className,
-            $name
-        );
-
-        $preserveGlobalState = PHPUnit_Util_Test::getPreserveGlobalStateSettings(
-            $className,
-            $name
-        );
-
-        $runTestInSeparateProcess = PHPUnit_Util_Test::getProcessIsolationSettings(
-            $className,
-            $name
-        );
-
-        $constructor = $theClass->getConstructor();
-
-        if ($constructor !== null) {
-            $parameters = $constructor->getParameters();
-
-            // TestCase() or TestCase($name)
-            if (count($parameters) < 2) {
-                $test = new $className;
-            } // TestCase($name, $data)
-            else {
-                try {
-                    $data = PHPUnit_Util_Test::getProvidedData(
-                        $className,
-                        $name
-                    );
-                } catch (PHPUnit_Framework_IncompleteTestError $e) {
-                    $message = sprintf(
-                        'Test for %s::%s marked incomplete by data provider',
-                        $className,
-                        $name
-                    );
-
-                    $_message = $e->getMessage();
-
-                    if (!empty($_message)) {
-                        $message .= "\n" . $_message;
-                    }
-
-                    $data = self::incompleteTest($className, $name, $message);
-                } catch (PHPUnit_Framework_SkippedTestError $e) {
-                    $message = sprintf(
-                        'Test for %s::%s skipped by data provider',
-                        $className,
-                        $name
-                    );
-
-                    $_message = $e->getMessage();
-
-                    if (!empty($_message)) {
-                        $message .= "\n" . $_message;
-                    }
-
-                    $data = self::skipTest($className, $name, $message);
-                } catch (Throwable $_t) {
-                    $t = $_t;
-                } catch (Exception $_t) {
-                    $t = $_t;
-                }
-
-                if (isset($t)) {
-                    $message = sprintf(
-                        'The data provider specified for %s::%s is invalid.',
-                        $className,
-                        $name
-                    );
-
-                    $_message = $t->getMessage();
-
-                    if (!empty($_message)) {
-                        $message .= "\n" . $_message;
-                    }
-
-                    $data = self::warning($message);
-                }
-
-                // Test method with @dataProvider.
-                if (isset($data)) {
-                    $test = new PHPUnit_Framework_TestSuite_DataProvider(
-                        $className . '::' . $name
-                    );
-
-                    if (empty($data)) {
-                        $data = self::warning(
-                            sprintf(
-                                'No tests found in suite "%s".',
-                                $test->getName()
-                            )
-                        );
-                    }
-
-                    $groups = PHPUnit_Util_Test::getGroups($className, $name);
-
-                    if ($data instanceof PHPUnit_Framework_Warning ||
-                        $data instanceof PHPUnit_Framework_SkippedTestCase ||
-                        $data instanceof PHPUnit_Framework_IncompleteTestCase) {
-                        $test->addTest($data, $groups);
-                    } else {
-                        foreach ($data as $_dataName => $_data) {
-                            $_test = new $className($name, $_data, $_dataName);
-
-                            if ($runTestInSeparateProcess) {
-                                $_test->setRunTestInSeparateProcess(true);
-
-                                if ($preserveGlobalState !== null) {
-                                    $_test->setPreserveGlobalState($preserveGlobalState);
-                                }
-                            }
-
-                            if ($backupSettings['backupGlobals'] !== null) {
-                                $_test->setBackupGlobals(
-                                    $backupSettings['backupGlobals']
-                                );
-                            }
-
-                            if ($backupSettings['backupStaticAttributes'] !== null) {
-                                $_test->setBackupStaticAttributes(
-                                    $backupSettings['backupStaticAttributes']
-                                );
-                            }
-
-                            $test->addTest($_test, $groups);
-                        }
-                    }
-                } else {
-                    $test = new $className;
-                }
-            }
-        }
-
-        if (!isset($test)) {
-            throw new PHPUnit_Framework_Exception('No valid test provided.');
-        }
-
-        if ($test instanceof PHPUnit_Framework_TestCase) {
-            $test->setName($name);
-
-            if ($runTestInSeparateProcess) {
-                $test->setRunTestInSeparateProcess(true);
-
-                if ($preserveGlobalState !== null) {
-                    $test->setPreserveGlobalState($preserveGlobalState);
-                }
-            }
-
-            if ($backupSettings['backupGlobals'] !== null) {
-                $test->setBackupGlobals($backupSettings['backupGlobals']);
-            }
-
-            if ($backupSettings['backupStaticAttributes'] !== null) {
-                $test->setBackupStaticAttributes(
-                    $backupSettings['backupStaticAttributes']
-                );
-            }
-        }
-
-        return $test;
-    }
-
-    /**
-     * Creates a default TestResult object.
-     *
-     * @return PHPUnit_Framework_TestResult
-     */
-    protected function createResult()
-    {
-        return new PHPUnit_Framework_TestResult;
-    }
-
-    /**
-     * Returns the name of the suite.
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Returns the test groups of the suite.
-     *
-     * @return array
-     * @since  Method available since Release 3.2.0
-     */
-    public function getGroups()
-    {
-        return array_keys($this->groups);
-    }
-
-    public function getGroupDetails()
-    {
-        return $this->groups;
-    }
-
-    /**
-     * Set tests groups of the test case
-     *
-     * @param array $groups
-     * @since Method available since Release 4.0.0
-     */
-    public function setGroupDetails(array $groups)
-    {
-        $this->groups = $groups;
-    }
-
-    /**
-     * Runs the tests and collects their result in a TestResult.
-     *
-     * @param  PHPUnit_Framework_TestResult $result
-     * @return PHPUnit_Framework_TestResult
-     */
-    public function run(PHPUnit_Framework_TestResult $result = null)
-    {
-        if ($result === null) {
-            $result = $this->createResult();
-        }
-
-        if (count($this) == 0) {
-            return $result;
-        }
-
-        $hookMethods = PHPUnit_Util_Test::getHookMethods($this->name);
-
-        $result->startTestSuite($this);
-
-        try {
-            $this->setUp();
-
-            foreach ($hookMethods['beforeClass'] as $beforeClassMethod) {
-                if ($this->testCase === true &&
-                    class_exists($this->name, false) &&
-                    method_exists($this->name, $beforeClassMethod)) {
-                    if ($missingRequirements = PHPUnit_Util_Test::getMissingRequirements($this->name, $beforeClassMethod)) {
-                        $this->markTestSuiteSkipped(implode(PHP_EOL, $missingRequirements));
-                    }
-
-                    call_user_func(array($this->name, $beforeClassMethod));
-                }
-            }
-        } catch (PHPUnit_Framework_SkippedTestSuiteError $e) {
-            $numTests = count($this);
-
-            for ($i = 0; $i < $numTests; $i++) {
-                $result->startTest($this);
-                $result->addFailure($this, $e, 0);
-                $result->endTest($this, 0);
-            }
-
-            $this->tearDown();
-            $result->endTestSuite($this);
-
-            return $result;
-        } catch (Throwable $_t) {
-            $t = $_t;
-        } catch (Exception $_t) {
-            $t = $_t;
-        }
-
-        if (isset($t)) {
-            $numTests = count($this);
-
-            for ($i = 0; $i < $numTests; $i++) {
-                $result->startTest($this);
-                $result->addError($this, $t, 0);
-                $result->endTest($this, 0);
-            }
-
-            $this->tearDown();
-            $result->endTestSuite($this);
-
-            return $result;
-        }
-
-        foreach ($this as $test) {
-            if ($result->shouldStop()) {
-                break;
-            }
-
-            if ($test instanceof PHPUnit_Framework_TestCase ||
-                $test instanceof self) {
-                $test->setDisallowChangesToGlobalState($this->disallowChangesToGlobalState);
-                $test->setBackupGlobals($this->backupGlobals);
-                $test->setBackupStaticAttributes($this->backupStaticAttributes);
-                $test->setRunTestInSeparateProcess($this->runTestInSeparateProcess);
-            }
-
-            $test->run($result);
-        }
-
-        foreach ($hookMethods['afterClass'] as $afterClassMethod) {
-            if ($this->testCase === true && class_exists($this->name, false) && method_exists($this->name, $afterClassMethod)) {
-                call_user_func(array($this->name, $afterClassMethod));
-            }
-        }
-
-        $this->tearDown();
-
-        $result->endTestSuite($this);
-
-        return $result;
-    }
-
-    /**
-     * @param  bool                        $runTestInSeparateProcess
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.7.0
-     */
-    public function setRunTestInSeparateProcess($runTestInSeparateProcess)
-    {
-        if (is_bool($runTestInSeparateProcess)) {
-            $this->runTestInSeparateProcess = $runTestInSeparateProcess;
-        } else {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-    }
-
-    /**
-     * Runs a test.
-     *
-     * @deprecated
-     * @param PHPUnit_Framework_Test       $test
-     * @param PHPUnit_Framework_TestResult $result
-     */
-    public function runTest(PHPUnit_Framework_Test $test, PHPUnit_Framework_TestResult $result)
-    {
-        $test->run($result);
-    }
-
-    /**
-     * Sets the name of the suite.
-     *
-     * @param  string
-     */
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * Returns the test at the given index.
-     *
-     * @param  int
-     * @return PHPUnit_Framework_Test
-     */
-    public function testAt($index)
-    {
-        if (isset($this->tests[$index])) {
-            return $this->tests[$index];
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Returns the tests as an enumeration.
-     *
-     * @return array
-     */
-    public function tests()
-    {
-        return $this->tests;
-    }
-
-    /**
-     * Set tests of the test suite
-     *
-     * @param array $tests
-     * @since Method available since Release 4.0.0
-     */
-    public function setTests(array $tests)
-    {
-        $this->tests = $tests;
-    }
-
-    /**
-     * Mark the test suite as skipped.
-     *
-     * @param  string                                  $message
-     * @throws PHPUnit_Framework_SkippedTestSuiteError
-     * @since  Method available since Release 3.0.0
-     */
-    public function markTestSuiteSkipped($message = '')
-    {
-        throw new PHPUnit_Framework_SkippedTestSuiteError($message);
-    }
-
-    /**
-     * @param ReflectionClass  $class
-     * @param ReflectionMethod $method
-     */
-    protected function addTestMethod(ReflectionClass $class, ReflectionMethod $method)
-    {
-        if (!$this->isTestMethod($method)) {
-            return;
-        }
-
-        $name = $method->getName();
-
-        if (!$method->isPublic()) {
-            $this->addTest(
-                self::warning(
-                    sprintf(
-                        'Test method "%s" in test class "%s" is not public.',
-                        $name,
-                        $class->getName()
-                    )
-                )
-            );
-
-            return;
-        }
-
-        $test = self::createTest($class, $name);
-
-        if ($test instanceof PHPUnit_Framework_TestCase ||
-            $test instanceof PHPUnit_Framework_TestSuite_DataProvider) {
-            $test->setDependencies(
-                PHPUnit_Util_Test::getDependencies($class->getName(), $name)
-            );
-        }
-
-        $this->addTest(
-            $test,
-            PHPUnit_Util_Test::getGroups($class->getName(), $name)
-        );
-    }
-
-    /**
-     * @param  ReflectionMethod $method
-     * @return bool
-     */
-    public static function isTestMethod(ReflectionMethod $method)
-    {
-        if (strpos($method->name, 'test') === 0) {
-            return true;
-        }
-
-        // @scenario on TestCase::testMethod()
-        // @test     on TestCase::testMethod()
-        $doc_comment = $method->getDocComment();
-
-        return strpos($doc_comment, '@test')     !== false ||
-               strpos($doc_comment, '@scenario') !== false;
-    }
-
-    /**
-     * @param  string                    $message
-     * @return PHPUnit_Framework_Warning
-     */
-    protected static function warning($message)
-    {
-        return new PHPUnit_Framework_Warning($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)
-    {
-        return new PHPUnit_Framework_SkippedTestCase($class, $methodName, $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)
-    {
-        return new PHPUnit_Framework_IncompleteTestCase($class, $methodName, $message);
-    }
-
-    /**
-     * @param bool $disallowChangesToGlobalState
-     * @since  Method available since Release 4.6.0
-     */
-    public function setDisallowChangesToGlobalState($disallowChangesToGlobalState)
-    {
-        if (is_null($this->disallowChangesToGlobalState) && is_bool($disallowChangesToGlobalState)) {
-            $this->disallowChangesToGlobalState = $disallowChangesToGlobalState;
-        }
-    }
-
-    /**
-     * @param bool $backupGlobals
-     * @since  Method available since Release 3.3.0
-     */
-    public function setBackupGlobals($backupGlobals)
-    {
-        if (is_null($this->backupGlobals) && is_bool($backupGlobals)) {
-            $this->backupGlobals = $backupGlobals;
-        }
-    }
-
-    /**
-     * @param bool $backupStaticAttributes
-     * @since  Method available since Release 3.4.0
-     */
-    public function setBackupStaticAttributes($backupStaticAttributes)
-    {
-        if (is_null($this->backupStaticAttributes) &&
-            is_bool($backupStaticAttributes)) {
-            $this->backupStaticAttributes = $backupStaticAttributes;
-        }
-    }
-
-    /**
-     * Returns an iterator for this test suite.
-     *
-     * @return RecursiveIteratorIterator
-     * @since  Method available since Release 3.1.0
-     */
-    public function getIterator()
-    {
-        $iterator = new PHPUnit_Util_TestSuiteIterator($this);
-
-        if ($this->iteratorFilter !== null) {
-            $iterator = $this->iteratorFilter->factory($iterator, $this);
-        }
-
-        return $iterator;
-    }
-
-    public function injectFilter(PHPUnit_Runner_Filter_Factory $filter)
-    {
-        $this->iteratorFilter = $filter;
-        foreach ($this as $test) {
-            if ($test instanceof self) {
-                $test->injectFilter($filter);
-            }
-        }
-    }
-
-    /**
-     * Template Method that is called before the tests
-     * of this test suite are run.
-     *
-     * @since  Method available since Release 3.1.0
-     */
-    protected function setUp()
-    {
-    }
-
-    /**
-     * Template Method that is called after the tests
-     * of this test suite have finished running.
-     *
-     * @since  Method available since Release 3.1.0
-     */
-    protected function tearDown()
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php b/vendor/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php
deleted file mode 100644
index 6106203..0000000
--- a/vendor/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 3.4.0
- */
-class PHPUnit_Framework_TestSuite_DataProvider extends PHPUnit_Framework_TestSuite
-{
-    /**
-     * Sets the dependencies of a TestCase.
-     *
-     * @param array $dependencies
-     */
-    public function setDependencies(array $dependencies)
-    {
-        foreach ($this->tests as $test) {
-            $test->setDependencies($dependencies);
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php b/vendor/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php
deleted file mode 100644
index b24c041..0000000
--- a/vendor/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Extension to PHPUnit_Framework_AssertionFailedError to mark the special
- * case of a test test that unintentionally covers code.
- *
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Framework_UnintentionallyCoveredCodeError extends PHPUnit_Framework_RiskyTestError
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Framework/Warning.php b/vendor/phpunit/phpunit/src/Framework/Warning.php
deleted file mode 100644
index 6ac3cdc..0000000
--- a/vendor/phpunit/phpunit/src/Framework/Warning.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A warning.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Framework_Warning extends PHPUnit_Framework_TestCase
-{
-    /**
-     * @var string
-     */
-    protected $message = '';
-
-    /**
-     * @var bool
-     */
-    protected $backupGlobals = false;
-
-    /**
-     * @var bool
-     */
-    protected $backupStaticAttributes = false;
-
-    /**
-     * @var bool
-     */
-    protected $runTestInSeparateProcess = false;
-
-    /**
-     * @var bool
-     */
-    protected $useErrorHandler = false;
-
-    /**
-     * @param string $message
-     */
-    public function __construct($message = '')
-    {
-        $this->message = $message;
-        parent::__construct('Warning');
-    }
-
-    /**
-     * @throws PHPUnit_Framework_Exception
-     */
-    protected function runTest()
-    {
-        $this->fail($this->message);
-    }
-
-    /**
-     * @return string
-     * @since  Method available since Release 3.0.0
-     */
-    public function getMessage()
-    {
-        return $this->message;
-    }
-
-    /**
-     * Returns a string representation of the test case.
-     *
-     * @return string
-     * @since  Method available since Release 3.4.0
-     */
-    public function toString()
-    {
-        return 'Warning';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php b/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php
deleted file mode 100644
index f839cd0..0000000
--- a/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Base class for all test runners.
- *
- * @since Class available since Release 2.0.0
- */
-abstract class PHPUnit_Runner_BaseTestRunner
-{
-    const STATUS_PASSED     = 0;
-    const STATUS_SKIPPED    = 1;
-    const STATUS_INCOMPLETE = 2;
-    const STATUS_FAILURE    = 3;
-    const STATUS_ERROR      = 4;
-    const STATUS_RISKY      = 5;
-    const SUITE_METHODNAME  = 'suite';
-
-    /**
-     * Returns the loader to be used.
-     *
-     * @return PHPUnit_Runner_TestSuiteLoader
-     */
-    public function getLoader()
-    {
-        return new PHPUnit_Runner_StandardTestSuiteLoader;
-    }
-
-    /**
-     * Returns the Test corresponding to the given suite.
-     * This is a template method, subclasses override
-     * the runFailed() and clearStatus() methods.
-     *
-     * @param  string                 $suiteClassName
-     * @param  string                 $suiteClassFile
-     * @param  mixed                  $suffixes
-     * @return PHPUnit_Framework_Test
-     */
-    public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '')
-    {
-        if (is_dir($suiteClassName) &&
-            !is_file($suiteClassName . '.php') && empty($suiteClassFile)) {
-            $facade = new File_Iterator_Facade;
-            $files  = $facade->getFilesAsArray(
-                $suiteClassName,
-                $suffixes
-            );
-
-            $suite = new PHPUnit_Framework_TestSuite($suiteClassName);
-            $suite->addTestFiles($files);
-
-            return $suite;
-        }
-
-        try {
-            $testClass = $this->loadSuiteClass(
-                $suiteClassName,
-                $suiteClassFile
-            );
-        } catch (PHPUnit_Framework_Exception $e) {
-            $this->runFailed($e->getMessage());
-
-            return;
-        }
-
-        try {
-            $suiteMethod = $testClass->getMethod(self::SUITE_METHODNAME);
-
-            if (!$suiteMethod->isStatic()) {
-                $this->runFailed(
-                    'suite() method must be static.'
-                );
-
-                return;
-            }
-
-            try {
-                $test = $suiteMethod->invoke(null, $testClass->getName());
-            } catch (ReflectionException $e) {
-                $this->runFailed(
-                    sprintf(
-                        "Failed to invoke suite() method.\n%s",
-                        $e->getMessage()
-                    )
-                );
-
-                return;
-            }
-        } catch (ReflectionException $e) {
-            try {
-                $test = new PHPUnit_Framework_TestSuite($testClass);
-            } catch (PHPUnit_Framework_Exception $e) {
-                $test = new PHPUnit_Framework_TestSuite;
-                $test->setName($suiteClassName);
-            }
-        }
-
-        $this->clearStatus();
-
-        return $test;
-    }
-
-    /**
-     * Returns the loaded ReflectionClass for a suite name.
-     *
-     * @param  string          $suiteClassName
-     * @param  string          $suiteClassFile
-     * @return ReflectionClass
-     */
-    protected function loadSuiteClass($suiteClassName, $suiteClassFile = '')
-    {
-        $loader = $this->getLoader();
-
-        return $loader->load($suiteClassName, $suiteClassFile);
-    }
-
-    /**
-     * Clears the status message.
-     */
-    protected function clearStatus()
-    {
-    }
-
-    /**
-     * Override to define how to handle a failed loading of
-     * a test suite.
-     *
-     * @param string $message
-     */
-    abstract protected function runFailed($message);
-}
diff --git a/vendor/phpunit/phpunit/src/Runner/Exception.php b/vendor/phpunit/phpunit/src/Runner/Exception.php
deleted file mode 100644
index 4b239af..0000000
--- a/vendor/phpunit/phpunit/src/Runner/Exception.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Runner_Exception extends RuntimeException implements PHPUnit_Exception
-{
-}
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php b/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php
deleted file mode 100644
index f4fa9d9..0000000
--- a/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Runner_Filter_Factory
-{
-    /**
-     * @var array
-     */
-    private $filters = array();
-
-    /**
-     * @param ReflectionClass $filter
-     * @param mixed           $args
-     */
-    public function addFilter(ReflectionClass $filter, $args)
-    {
-        if (!$filter->isSubclassOf('RecursiveFilterIterator')) {
-            throw new InvalidArgumentException(
-                sprintf(
-                    'Class "%s" does not extend RecursiveFilterIterator',
-                    $filter->name
-                )
-            );
-        }
-
-        $this->filters[] = array($filter, $args);
-    }
-
-    /**
-     * @return FilterIterator
-     */
-    public function factory(Iterator $iterator, PHPUnit_Framework_TestSuite $suite)
-    {
-        foreach ($this->filters as $filter) {
-            list($class, $args) = $filter;
-            $iterator           = $class->newInstance($iterator, $args, $suite);
-        }
-
-        return $iterator;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/Group.php b/vendor/phpunit/phpunit/src/Runner/Filter/Group.php
deleted file mode 100644
index 9257b3b..0000000
--- a/vendor/phpunit/phpunit/src/Runner/Filter/Group.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 4.0.0
- */
-abstract class PHPUnit_Runner_Filter_GroupFilterIterator extends RecursiveFilterIterator
-{
-    /**
-     * @var array
-     */
-    protected $groupTests = array();
-
-    /**
-     * @param RecursiveIterator           $iterator
-     * @param array                       $groups
-     * @param PHPUnit_Framework_TestSuite $suite
-     */
-    public function __construct(RecursiveIterator $iterator, array $groups, PHPUnit_Framework_TestSuite $suite)
-    {
-        parent::__construct($iterator);
-
-        foreach ($suite->getGroupDetails() as $group => $tests) {
-            if (in_array($group, $groups)) {
-                $testHashes = array_map(
-                    function ($test) {
-                        return spl_object_hash($test);
-                    },
-                    $tests
-                );
-
-                $this->groupTests = array_merge($this->groupTests, $testHashes);
-            }
-        }
-    }
-
-    /**
-     * @return bool
-     */
-    public function accept()
-    {
-        $test = $this->getInnerIterator()->current();
-
-        if ($test instanceof PHPUnit_Framework_TestSuite) {
-            return true;
-        }
-
-        return $this->doAccept(spl_object_hash($test));
-    }
-
-    abstract protected function doAccept($hash);
-}
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php b/vendor/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php
deleted file mode 100644
index 9fe4b69..0000000
--- a/vendor/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Runner_Filter_Group_Exclude extends PHPUnit_Runner_Filter_GroupFilterIterator
-{
-    protected function doAccept($hash)
-    {
-        return !in_array($hash, $this->groupTests);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/Group/Include.php b/vendor/phpunit/phpunit/src/Runner/Filter/Group/Include.php
deleted file mode 100644
index 49d2506..0000000
--- a/vendor/phpunit/phpunit/src/Runner/Filter/Group/Include.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Runner_Filter_Group_Include extends PHPUnit_Runner_Filter_GroupFilterIterator
-{
-    protected function doAccept($hash)
-    {
-        return in_array($hash, $this->groupTests);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/Test.php b/vendor/phpunit/phpunit/src/Runner/Filter/Test.php
deleted file mode 100644
index cbd28b3..0000000
--- a/vendor/phpunit/phpunit/src/Runner/Filter/Test.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Runner_Filter_Test extends RecursiveFilterIterator
-{
-    /**
-     * @var string
-     */
-    protected $filter = null;
-
-    /**
-     * @var int
-     */
-    protected $filterMin;
-    /**
-     * @var int
-     */
-    protected $filterMax;
-
-    /**
-     * @param RecursiveIterator $iterator
-     * @param string            $filter
-     */
-    public function __construct(RecursiveIterator $iterator, $filter)
-    {
-        parent::__construct($iterator);
-        $this->setFilter($filter);
-    }
-
-    /**
-     * @param string $filter
-     */
-    protected function setFilter($filter)
-    {
-        if (PHPUnit_Util_Regex::pregMatchSafe($filter, '') === false) {
-            // Handles:
-            //  * testAssertEqualsSucceeds#4
-            //  * testAssertEqualsSucceeds#4-8
-            if (preg_match('/^(.*?)#(\d+)(?:-(\d+))?$/', $filter, $matches)) {
-                if (isset($matches[3]) && $matches[2] < $matches[3]) {
-                    $filter = sprintf(
-                        '%s.*with data set #(\d+)$',
-                        $matches[1]
-                    );
-
-                    $this->filterMin = $matches[2];
-                    $this->filterMax = $matches[3];
-                } else {
-                    $filter = sprintf(
-                        '%s.*with data set #%s$',
-                        $matches[1],
-                        $matches[2]
-                    );
-                }
-            } // Handles:
-            //  * testDetermineJsonError@JSON_ERROR_NONE
-            //  * testDetermineJsonError@JSON.*
-            elseif (preg_match('/^(.*?)@(.+)$/', $filter, $matches)) {
-                $filter = sprintf(
-                    '%s.*with data set "%s"$',
-                    $matches[1],
-                    $matches[2]
-                );
-            }
-
-            // Escape delimiters in regular expression. Do NOT use preg_quote,
-            // to keep magic characters.
-            $filter = sprintf('/%s/', str_replace(
-                '/',
-                '\\/',
-                $filter
-            ));
-        }
-
-        $this->filter = $filter;
-    }
-
-    /**
-     * @return bool
-     */
-    public function accept()
-    {
-        $test = $this->getInnerIterator()->current();
-
-        if ($test instanceof PHPUnit_Framework_TestSuite) {
-            return true;
-        }
-
-        $tmp = PHPUnit_Util_Test::describe($test, false);
-
-        if ($tmp[0] != '') {
-            $name = implode('::', $tmp);
-        } else {
-            $name = $tmp[1];
-        }
-
-        $accepted = preg_match($this->filter, $name, $matches);
-
-        if ($accepted && isset($this->filterMax)) {
-            $set      = end($matches);
-            $accepted = $set >= $this->filterMin && $set <= $this->filterMax;
-        }
-
-        return $accepted;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php b/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php
deleted file mode 100644
index e7b802a..0000000
--- a/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * The standard test suite loader.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Runner_StandardTestSuiteLoader implements PHPUnit_Runner_TestSuiteLoader
-{
-    /**
-     * @param  string                      $suiteClassName
-     * @param  string                      $suiteClassFile
-     * @return ReflectionClass
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function load($suiteClassName, $suiteClassFile = '')
-    {
-        $suiteClassName = str_replace('.php', '', $suiteClassName);
-
-        if (empty($suiteClassFile)) {
-            $suiteClassFile = PHPUnit_Util_Filesystem::classNameToFilename(
-                $suiteClassName
-            );
-        }
-
-        if (!class_exists($suiteClassName, false)) {
-            $loadedClasses = get_declared_classes();
-
-            $filename = PHPUnit_Util_Fileloader::checkAndLoad($suiteClassFile);
-
-            $loadedClasses = array_values(
-                array_diff(get_declared_classes(), $loadedClasses)
-            );
-        }
-
-        if (!class_exists($suiteClassName, false) && !empty($loadedClasses)) {
-            $offset = 0 - strlen($suiteClassName);
-
-            foreach ($loadedClasses as $loadedClass) {
-                $class = new ReflectionClass($loadedClass);
-                if (substr($loadedClass, $offset) === $suiteClassName &&
-                    $class->getFileName() == $filename) {
-                    $suiteClassName = $loadedClass;
-                    break;
-                }
-            }
-        }
-
-        if (!class_exists($suiteClassName, false) && !empty($loadedClasses)) {
-            $testCaseClass = 'PHPUnit_Framework_TestCase';
-
-            foreach ($loadedClasses as $loadedClass) {
-                $class     = new ReflectionClass($loadedClass);
-                $classFile = $class->getFileName();
-
-                if ($class->isSubclassOf($testCaseClass) &&
-                    !$class->isAbstract()) {
-                    $suiteClassName = $loadedClass;
-                    $testCaseClass  = $loadedClass;
-
-                    if ($classFile == realpath($suiteClassFile)) {
-                        break;
-                    }
-                }
-
-                if ($class->hasMethod('suite')) {
-                    $method = $class->getMethod('suite');
-
-                    if (!$method->isAbstract() &&
-                        $method->isPublic() &&
-                        $method->isStatic()) {
-                        $suiteClassName = $loadedClass;
-
-                        if ($classFile == realpath($suiteClassFile)) {
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (class_exists($suiteClassName, false)) {
-            $class = new ReflectionClass($suiteClassName);
-
-            if ($class->getFileName() == realpath($suiteClassFile)) {
-                return $class;
-            }
-        }
-
-        throw new PHPUnit_Framework_Exception(
-            sprintf(
-                "Class '%s' could not be found in '%s'.",
-                $suiteClassName,
-                $suiteClassFile
-            )
-        );
-    }
-
-    /**
-     * @param  ReflectionClass $aClass
-     * @return ReflectionClass
-     */
-    public function reload(ReflectionClass $aClass)
-    {
-        return $aClass;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php b/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php
deleted file mode 100644
index 572153a..0000000
--- a/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * An interface to define how a test suite should be loaded.
- *
- * @since      Interface available since Release 2.0.0
- */
-interface PHPUnit_Runner_TestSuiteLoader
-{
-    /**
-     * @param  string          $suiteClassName
-     * @param  string          $suiteClassFile
-     * @return ReflectionClass
-     */
-    public function load($suiteClassName, $suiteClassFile = '');
-
-    /**
-     * @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
deleted file mode 100644
index 58e3390..0000000
--- a/vendor/phpunit/phpunit/src/Runner/Version.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * This class defines the current version of PHPUnit.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Runner_Version
-{
-    private static $pharVersion;
-    private static $version;
-
-    /**
-     * Returns the current version of PHPUnit.
-     *
-     * @return string
-     */
-    public static function id()
-    {
-        if (self::$pharVersion !== null) {
-            return self::$pharVersion;
-        }
-
-        if (self::$version === null) {
-            $version       = new SebastianBergmann\Version('4.8.11', dirname(dirname(__DIR__)));
-            self::$version = $version->getVersion();
-        }
-
-        return self::$version;
-    }
-
-    /**
-     * @return string
-     */
-    public static function getVersionString()
-    {
-        return 'PHPUnit ' . self::id() . ' by Sebastian Bergmann and contributors.';
-    }
-
-    /**
-     * @return string
-     * @since  Method available since Release 4.0.0
-     */
-    public static function getReleaseChannel()
-    {
-        if (strpos(self::$pharVersion, 'alpha') !== false) {
-            return '-alpha';
-        }
-
-        if (strpos(self::$pharVersion, 'beta') !== false) {
-            return '-beta';
-        }
-
-        return '';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/TextUI/Command.php b/vendor/phpunit/phpunit/src/TextUI/Command.php
deleted file mode 100644
index 6a73409..0000000
--- a/vendor/phpunit/phpunit/src/TextUI/Command.php
+++ /dev/null
@@ -1,989 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A TestRunner for the Command Line Interface (CLI)
- * PHP SAPI Module.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_TextUI_Command
-{
-    /**
-     * @var array
-     */
-    protected $arguments = array(
-        'listGroups'              => false,
-        'loader'                  => null,
-        'useDefaultConfiguration' => true
-    );
-
-    /**
-     * @var array
-     */
-    protected $options = array();
-
-    /**
-     * @var array
-     */
-    protected $longOptions = array(
-        'colors=='             => null,
-        'bootstrap='           => null,
-        'columns='             => null,
-        'configuration='       => null,
-        'coverage-clover='     => null,
-        'coverage-crap4j='     => null,
-        'coverage-html='       => null,
-        'coverage-php='        => null,
-        'coverage-text=='      => null,
-        'coverage-xml='        => null,
-        'debug'                => null,
-        'exclude-group='       => null,
-        'filter='              => null,
-        'testsuite='           => null,
-        'group='               => null,
-        'help'                 => null,
-        'include-path='        => null,
-        'list-groups'          => null,
-        'loader='              => null,
-        'log-json='            => null,
-        'log-junit='           => null,
-        'log-tap='             => null,
-        'process-isolation'    => null,
-        'repeat='              => null,
-        'stderr'               => null,
-        'stop-on-error'        => null,
-        'stop-on-failure'      => null,
-        'stop-on-incomplete'   => null,
-        'stop-on-risky'        => null,
-        'stop-on-skipped'      => null,
-        'report-useless-tests' => null,
-        'strict-coverage'      => null,
-        'disallow-test-output' => null,
-        'enforce-time-limit'   => null,
-        'disallow-todo-tests'  => null,
-        'strict-global-state'  => null,
-        'strict'               => null,
-        'tap'                  => null,
-        'testdox'              => null,
-        'testdox-html='        => null,
-        'testdox-text='        => null,
-        'test-suffix='         => null,
-        'no-configuration'     => null,
-        'no-coverage'          => null,
-        'no-globals-backup'    => null,
-        'printer='             => null,
-        'static-backup'        => null,
-        'verbose'              => null,
-        'version'              => null
-    );
-
-    /**
-     * @var bool
-     */
-    private $versionStringPrinted = false;
-
-    /**
-     * @param bool $exit
-     */
-    public static function main($exit = true)
-    {
-        $command = new static;
-
-        return $command->run($_SERVER['argv'], $exit);
-    }
-
-    /**
-     * @param  array $argv
-     * @param  bool  $exit
-     * @return int
-     */
-    public function run(array $argv, $exit = true)
-    {
-        $this->handleArguments($argv);
-
-        $runner = $this->createRunner();
-
-        if (is_object($this->arguments['test']) &&
-            $this->arguments['test'] instanceof PHPUnit_Framework_Test) {
-            $suite = $this->arguments['test'];
-        } else {
-            $suite = $runner->getTest(
-                $this->arguments['test'],
-                $this->arguments['testFile'],
-                $this->arguments['testSuffixes']
-            );
-        }
-
-        if ($this->arguments['listGroups']) {
-            $this->printVersionString();
-
-            print "Available test group(s):\n";
-
-            $groups = $suite->getGroups();
-            sort($groups);
-
-            foreach ($groups as $group) {
-                print " - $group\n";
-            }
-
-            if ($exit) {
-                exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
-            } else {
-                return PHPUnit_TextUI_TestRunner::SUCCESS_EXIT;
-            }
-        }
-
-        unset($this->arguments['test']);
-        unset($this->arguments['testFile']);
-
-        try {
-            $result = $runner->doRun($suite, $this->arguments);
-        } catch (PHPUnit_Framework_Exception $e) {
-            print $e->getMessage() . "\n";
-        }
-
-        $ret = PHPUnit_TextUI_TestRunner::FAILURE_EXIT;
-
-        if (isset($result) && $result->wasSuccessful()) {
-            $ret = PHPUnit_TextUI_TestRunner::SUCCESS_EXIT;
-        } elseif (!isset($result) || $result->errorCount() > 0) {
-            $ret = PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT;
-        }
-
-        if ($exit) {
-            exit($ret);
-        } else {
-            return $ret;
-        }
-    }
-
-    /**
-     * Create a TestRunner, override in subclasses.
-     *
-     * @return PHPUnit_TextUI_TestRunner
-     * @since  Method available since Release 3.6.0
-     */
-    protected function createRunner()
-    {
-        return new PHPUnit_TextUI_TestRunner($this->arguments['loader']);
-    }
-
-    /**
-     * Handles the command-line arguments.
-     *
-     * A child class of PHPUnit_TextUI_Command can hook into the argument
-     * parsing by adding the switch(es) to the $longOptions array and point to a
-     * callback method that handles the switch(es) in the child class like this
-     *
-     * <code>
-     * <?php
-     * class MyCommand extends PHPUnit_TextUI_Command
-     * {
-     *     public function __construct()
-     *     {
-     *         // my-switch won't accept a value, it's an on/off
-     *         $this->longOptions['my-switch'] = 'myHandler';
-     *         // my-secondswitch will accept a value - note the equals sign
-     *         $this->longOptions['my-secondswitch='] = 'myOtherHandler';
-     *     }
-     *
-     *     // --my-switch  -> myHandler()
-     *     protected function myHandler()
-     *     {
-     *     }
-     *
-     *     // --my-secondswitch foo -> myOtherHandler('foo')
-     *     protected function myOtherHandler ($value)
-     *     {
-     *     }
-     *
-     *     // You will also need this - the static keyword in the
-     *     // PHPUnit_TextUI_Command will mean that it'll be
-     *     // PHPUnit_TextUI_Command that gets instantiated,
-     *     // not MyCommand
-     *     public static function main($exit = true)
-     *     {
-     *         $command = new static;
-     *
-     *         return $command->run($_SERVER['argv'], $exit);
-     *     }
-     *
-     * }
-     * </code>
-     *
-     * @param array $argv
-     */
-    protected function handleArguments(array $argv)
-    {
-        if (defined('__PHPUNIT_PHAR__')) {
-            $this->longOptions['check-version'] = null;
-            $this->longOptions['selfupdate']    = null;
-            $this->longOptions['self-update']   = null;
-        }
-
-        try {
-            $this->options = PHPUnit_Util_Getopt::getopt(
-                $argv,
-                'd:c:hv',
-                array_keys($this->longOptions)
-            );
-        } catch (PHPUnit_Framework_Exception $e) {
-            $this->showError($e->getMessage());
-        }
-
-        foreach ($this->options[0] as $option) {
-            switch ($option[0]) {
-                case '--colors':
-                    $this->arguments['colors'] = $option[1] ?: PHPUnit_TextUI_ResultPrinter::COLOR_AUTO;
-                    break;
-
-                case '--bootstrap':
-                    $this->arguments['bootstrap'] = $option[1];
-                    break;
-
-                case '--columns':
-                    if (is_numeric($option[1])) {
-                        $this->arguments['columns'] = (int) $option[1];
-                    } elseif ($option[1] == 'max') {
-                        $this->arguments['columns'] = 'max';
-                    }
-                    break;
-
-                case 'c':
-                case '--configuration':
-                    $this->arguments['configuration'] = $option[1];
-                    break;
-
-                case '--coverage-clover':
-                    $this->arguments['coverageClover'] = $option[1];
-                    break;
-
-                case '--coverage-crap4j':
-                    $this->arguments['coverageCrap4J'] = $option[1];
-                    break;
-
-                case '--coverage-html':
-                    $this->arguments['coverageHtml'] = $option[1];
-                    break;
-
-                case '--coverage-php':
-                    $this->arguments['coveragePHP'] = $option[1];
-                    break;
-
-                case '--coverage-text':
-                    if ($option[1] === null) {
-                        $option[1] = 'php://stdout';
-                    }
-
-                    $this->arguments['coverageText']                   = $option[1];
-                    $this->arguments['coverageTextShowUncoveredFiles'] = false;
-                    $this->arguments['coverageTextShowOnlySummary']    = false;
-                    break;
-
-                case '--coverage-xml':
-                    $this->arguments['coverageXml'] = $option[1];
-                    break;
-
-                case 'd':
-                    $ini = explode('=', $option[1]);
-
-                    if (isset($ini[0])) {
-                        if (isset($ini[1])) {
-                            ini_set($ini[0], $ini[1]);
-                        } else {
-                            ini_set($ini[0], true);
-                        }
-                    }
-                    break;
-
-                case '--debug':
-                    $this->arguments['debug'] = true;
-                    break;
-
-                case 'h':
-                case '--help':
-                    $this->showHelp();
-                    exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
-                    break;
-
-                case '--filter':
-                    $this->arguments['filter'] = $option[1];
-                    break;
-
-                case '--testsuite':
-                    $this->arguments['testsuite'] = $option[1];
-                    break;
-
-                case '--group':
-                    $this->arguments['groups'] = explode(',', $option[1]);
-                    break;
-
-                case '--exclude-group':
-                    $this->arguments['excludeGroups'] = explode(
-                        ',',
-                        $option[1]
-                    );
-                    break;
-
-                case '--test-suffix':
-                    $this->arguments['testSuffixes'] = explode(
-                        ',',
-                        $option[1]
-                    );
-                    break;
-
-                case '--include-path':
-                    $includePath = $option[1];
-                    break;
-
-                case '--list-groups':
-                    $this->arguments['listGroups'] = true;
-                    break;
-
-                case '--printer':
-                    $this->arguments['printer'] = $option[1];
-                    break;
-
-                case '--loader':
-                    $this->arguments['loader'] = $option[1];
-                    break;
-
-                case '--log-json':
-                    $this->arguments['jsonLogfile'] = $option[1];
-                    break;
-
-                case '--log-junit':
-                    $this->arguments['junitLogfile'] = $option[1];
-                    break;
-
-                case '--log-tap':
-                    $this->arguments['tapLogfile'] = $option[1];
-                    break;
-
-                case '--process-isolation':
-                    $this->arguments['processIsolation'] = true;
-                    break;
-
-                case '--repeat':
-                    $this->arguments['repeat'] = (int) $option[1];
-                    break;
-
-                case '--stderr':
-                    $this->arguments['stderr'] = true;
-                    break;
-
-                case '--stop-on-error':
-                    $this->arguments['stopOnError'] = true;
-                    break;
-
-                case '--stop-on-failure':
-                    $this->arguments['stopOnFailure'] = true;
-                    break;
-
-                case '--stop-on-incomplete':
-                    $this->arguments['stopOnIncomplete'] = true;
-                    break;
-
-                case '--stop-on-risky':
-                    $this->arguments['stopOnRisky'] = true;
-                    break;
-
-                case '--stop-on-skipped':
-                    $this->arguments['stopOnSkipped'] = true;
-                    break;
-
-                case '--tap':
-                    $this->arguments['printer'] = 'PHPUnit_Util_Log_TAP';
-                    break;
-
-                case '--testdox':
-                    $this->arguments['printer'] = 'PHPUnit_Util_TestDox_ResultPrinter_Text';
-                    break;
-
-                case '--testdox-html':
-                    $this->arguments['testdoxHTMLFile'] = $option[1];
-                    break;
-
-                case '--testdox-text':
-                    $this->arguments['testdoxTextFile'] = $option[1];
-                    break;
-
-                case '--no-configuration':
-                    $this->arguments['useDefaultConfiguration'] = false;
-                    break;
-
-                case '--no-coverage':
-                    $this->arguments['noCoverage'] = true;
-                    break;
-
-                case '--no-globals-backup':
-                    $this->arguments['backupGlobals'] = false;
-                    break;
-
-                case '--static-backup':
-                    $this->arguments['backupStaticAttributes'] = true;
-                    break;
-
-                case 'v':
-                case '--verbose':
-                    $this->arguments['verbose'] = true;
-                    break;
-
-                case '--version':
-                    $this->printVersionString();
-                    exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
-                    break;
-
-                case '--report-useless-tests':
-                    $this->arguments['reportUselessTests'] = true;
-                    break;
-
-                case '--strict-coverage':
-                    $this->arguments['strictCoverage'] = true;
-                    break;
-
-                case '--strict-global-state':
-                    $this->arguments['disallowChangesToGlobalState'] = true;
-                    break;
-
-                case '--disallow-test-output':
-                    $this->arguments['disallowTestOutput'] = true;
-                    break;
-
-                case '--enforce-time-limit':
-                    $this->arguments['enforceTimeLimit'] = true;
-                    break;
-
-                case '--disallow-todo-tests':
-                    $this->arguments['disallowTodoAnnotatedTests'] = true;
-                    break;
-
-                case '--strict':
-                    $this->arguments['reportUselessTests']         = true;
-                    $this->arguments['strictCoverage']             = true;
-                    $this->arguments['disallowTestOutput']         = true;
-                    $this->arguments['enforceTimeLimit']           = true;
-                    $this->arguments['disallowTodoAnnotatedTests'] = true;
-                    $this->arguments['deprecatedStrictModeOption'] = true;
-                    break;
-
-                case '--check-version':
-                    $this->handleVersionCheck();
-                    break;
-
-                case '--selfupdate':
-                case '--self-update':
-                    $this->handleSelfUpdate();
-                    break;
-
-                default:
-                    $optionName = str_replace('--', '', $option[0]);
-
-                    if (isset($this->longOptions[$optionName])) {
-                        $handler = $this->longOptions[$optionName];
-                    } elseif (isset($this->longOptions[$optionName . '='])) {
-                        $handler = $this->longOptions[$optionName . '='];
-                    }
-
-                    if (isset($handler) && is_callable(array($this, $handler))) {
-                        $this->$handler($option[1]);
-                    }
-            }
-        }
-
-        $this->handleCustomTestSuite();
-
-        if (!isset($this->arguments['test'])) {
-            if (isset($this->options[1][0])) {
-                $this->arguments['test'] = $this->options[1][0];
-            }
-
-            if (isset($this->options[1][1])) {
-                $this->arguments['testFile'] = realpath($this->options[1][1]);
-            } else {
-                $this->arguments['testFile'] = '';
-            }
-
-            if (isset($this->arguments['test']) &&
-                is_file($this->arguments['test']) &&
-                substr($this->arguments['test'], -5, 5) != '.phpt') {
-                $this->arguments['testFile'] = realpath($this->arguments['test']);
-                $this->arguments['test']     = substr($this->arguments['test'], 0, strrpos($this->arguments['test'], '.'));
-            }
-        }
-
-        if (!isset($this->arguments['testSuffixes'])) {
-            $this->arguments['testSuffixes'] = array('Test.php', '.phpt');
-        }
-
-        if (isset($includePath)) {
-            ini_set(
-                'include_path',
-                $includePath . PATH_SEPARATOR . ini_get('include_path')
-            );
-        }
-
-        if ($this->arguments['loader'] !== null) {
-            $this->arguments['loader'] = $this->handleLoader($this->arguments['loader']);
-        }
-
-        if (isset($this->arguments['configuration']) &&
-            is_dir($this->arguments['configuration'])) {
-            $configurationFile = $this->arguments['configuration'] . '/phpunit.xml';
-
-            if (file_exists($configurationFile)) {
-                $this->arguments['configuration'] = realpath(
-                    $configurationFile
-                );
-            } elseif (file_exists($configurationFile . '.dist')) {
-                $this->arguments['configuration'] = realpath(
-                    $configurationFile . '.dist'
-                );
-            }
-        } elseif (!isset($this->arguments['configuration']) &&
-                  $this->arguments['useDefaultConfiguration']) {
-            if (file_exists('phpunit.xml')) {
-                $this->arguments['configuration'] = realpath('phpunit.xml');
-            } elseif (file_exists('phpunit.xml.dist')) {
-                $this->arguments['configuration'] = realpath(
-                    'phpunit.xml.dist'
-                );
-            }
-        }
-
-        if (isset($this->arguments['configuration'])) {
-            try {
-                $configuration = PHPUnit_Util_Configuration::getInstance(
-                    $this->arguments['configuration']
-                );
-            } catch (Throwable $e) {
-                print $e->getMessage() . "\n";
-                exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
-            } catch (Exception $e) {
-                print $e->getMessage() . "\n";
-                exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
-            }
-
-            $phpunit = $configuration->getPHPUnitConfiguration();
-
-            $configuration->handlePHPConfiguration();
-
-            /*
-             * Issue #1216
-             */
-            if (isset($this->arguments['bootstrap'])) {
-                $this->handleBootstrap($this->arguments['bootstrap']);
-            } elseif (isset($phpunit['bootstrap'])) {
-                $this->handleBootstrap($phpunit['bootstrap']);
-            }
-
-            /*
-             * Issue #657
-             */
-            if (isset($phpunit['stderr']) && ! isset($this->arguments['stderr'])) {
-                $this->arguments['stderr'] = $phpunit['stderr'];
-            }
-
-            if (isset($phpunit['columns']) && ! isset($this->arguments['columns'])) {
-                $this->arguments['columns'] = $phpunit['columns'];
-            }
-
-            if (isset($phpunit['printerClass'])) {
-                if (isset($phpunit['printerFile'])) {
-                    $file = $phpunit['printerFile'];
-                } else {
-                    $file = '';
-                }
-
-                $this->arguments['printer'] = $this->handlePrinter(
-                    $phpunit['printerClass'],
-                    $file
-                );
-            }
-
-            if (isset($phpunit['testSuiteLoaderClass'])) {
-                if (isset($phpunit['testSuiteLoaderFile'])) {
-                    $file = $phpunit['testSuiteLoaderFile'];
-                } else {
-                    $file = '';
-                }
-
-                $this->arguments['loader'] = $this->handleLoader(
-                    $phpunit['testSuiteLoaderClass'],
-                    $file
-                );
-            }
-
-            $browsers = $configuration->getSeleniumBrowserConfiguration();
-
-            if (!empty($browsers)) {
-                $this->arguments['deprecatedSeleniumConfiguration'] = true;
-
-                if (class_exists('PHPUnit_Extensions_SeleniumTestCase')) {
-                    PHPUnit_Extensions_SeleniumTestCase::$browsers = $browsers;
-                }
-            }
-
-            if (!isset($this->arguments['test'])) {
-                $testSuite = $configuration->getTestSuiteConfiguration(isset($this->arguments['testsuite']) ? $this->arguments['testsuite'] : null);
-
-                if ($testSuite !== null) {
-                    $this->arguments['test'] = $testSuite;
-                }
-            }
-        } elseif (isset($this->arguments['bootstrap'])) {
-            $this->handleBootstrap($this->arguments['bootstrap']);
-        }
-
-        if (isset($this->arguments['printer']) &&
-            is_string($this->arguments['printer'])) {
-            $this->arguments['printer'] = $this->handlePrinter($this->arguments['printer']);
-        }
-
-        if (isset($this->arguments['test']) && is_string($this->arguments['test']) && substr($this->arguments['test'], -5, 5) == '.phpt') {
-            $test = new PHPUnit_Extensions_PhptTestCase($this->arguments['test']);
-
-            $this->arguments['test'] = new PHPUnit_Framework_TestSuite;
-            $this->arguments['test']->addTest($test);
-        }
-
-        if (!isset($this->arguments['test']) ||
-            (isset($this->arguments['testDatabaseLogRevision']) && !isset($this->arguments['testDatabaseDSN']))) {
-            $this->showHelp();
-            exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
-        }
-    }
-
-    /**
-     * Handles the loading of the PHPUnit_Runner_TestSuiteLoader implementation.
-     *
-     * @param  string                         $loaderClass
-     * @param  string                         $loaderFile
-     * @return PHPUnit_Runner_TestSuiteLoader
-     */
-    protected function handleLoader($loaderClass, $loaderFile = '')
-    {
-        if (!class_exists($loaderClass, false)) {
-            if ($loaderFile == '') {
-                $loaderFile = PHPUnit_Util_Filesystem::classNameToFilename(
-                    $loaderClass
-                );
-            }
-
-            $loaderFile = stream_resolve_include_path($loaderFile);
-
-            if ($loaderFile) {
-                require $loaderFile;
-            }
-        }
-
-        if (class_exists($loaderClass, false)) {
-            $class = new ReflectionClass($loaderClass);
-
-            if ($class->implementsInterface('PHPUnit_Runner_TestSuiteLoader') &&
-                $class->isInstantiable()) {
-                return $class->newInstance();
-            }
-        }
-
-        if ($loaderClass == 'PHPUnit_Runner_StandardTestSuiteLoader') {
-            return;
-        }
-
-        $this->showError(
-            sprintf(
-                'Could not use "%s" as loader.',
-                $loaderClass
-            )
-        );
-    }
-
-    /**
-     * Handles the loading of the PHPUnit_Util_Printer implementation.
-     *
-     * @param  string               $printerClass
-     * @param  string               $printerFile
-     * @return PHPUnit_Util_Printer
-     */
-    protected function handlePrinter($printerClass, $printerFile = '')
-    {
-        if (!class_exists($printerClass, false)) {
-            if ($printerFile == '') {
-                $printerFile = PHPUnit_Util_Filesystem::classNameToFilename(
-                    $printerClass
-                );
-            }
-
-            $printerFile = stream_resolve_include_path($printerFile);
-
-            if ($printerFile) {
-                require $printerFile;
-            }
-        }
-
-        if (class_exists($printerClass)) {
-            $class = new ReflectionClass($printerClass);
-
-            if ($class->implementsInterface('PHPUnit_Framework_TestListener') &&
-                $class->isSubclassOf('PHPUnit_Util_Printer') &&
-                $class->isInstantiable()) {
-                if ($class->isSubclassOf('PHPUnit_TextUI_ResultPrinter')) {
-                    return $printerClass;
-                }
-
-                $outputStream = isset($this->arguments['stderr']) ? 'php://stderr' : null;
-
-                return $class->newInstance($outputStream);
-            }
-        }
-
-        $this->showError(
-            sprintf(
-                'Could not use "%s" as printer.',
-                $printerClass
-            )
-        );
-    }
-
-    /**
-     * Loads a bootstrap file.
-     *
-     * @param string $filename
-     */
-    protected function handleBootstrap($filename)
-    {
-        try {
-            PHPUnit_Util_Fileloader::checkAndLoad($filename);
-        } catch (PHPUnit_Framework_Exception $e) {
-            $this->showError($e->getMessage());
-        }
-    }
-
-    /**
-     * @since Method available since Release 4.0.0
-     */
-    protected function handleSelfUpdate()
-    {
-        $this->printVersionString();
-
-        $localFilename = realpath($_SERVER['argv'][0]);
-
-        if (!is_writable($localFilename)) {
-            print 'No write permission to update ' . $localFilename . "\n";
-            exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
-        }
-
-        if (!extension_loaded('openssl')) {
-            print "The OpenSSL extension is not loaded.\n";
-            exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
-        }
-
-        if (PHP_VERSION_ID < 50600) {
-            $remoteFilename = sprintf('https://phar.phpunit.de/phpunit-old.phar');
-        } else {
-            $remoteFilename = sprintf('https://phar.phpunit.de/phpunit.phar');
-        }
-
-        $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);
-
-        print 'Updating the PHPUnit PHAR ... ';
-
-        $options = array(
-            'ssl' => array(
-                'allow_self_signed' => false,
-                'cafile'            => $caFile,
-                'verify_peer'       => true
-            )
-        );
-
-        if (PHP_VERSION_ID < 50600) {
-            $options['ssl']['CN_match']        = 'phar.phpunit.de';
-            $options['ssl']['SNI_server_name'] = 'phar.phpunit.de';
-        }
-
-        file_put_contents(
-            $tempFilename,
-            file_get_contents(
-                $remoteFilename,
-                false,
-                stream_context_create($options)
-            )
-        );
-
-        chmod($tempFilename, 0777 & ~umask());
-
-        try {
-            $phar = new Phar($tempFilename);
-            unset($phar);
-            rename($tempFilename, $localFilename);
-            unlink($caFile);
-        } catch (Throwable $_e) {
-            $e = $_e;
-        } catch (Exception $_e) {
-            $e = $_e;
-        }
-
-        if (isset($e)) {
-            unlink($caFile);
-            unlink($tempFilename);
-            print " done\n\n" . $e->getMessage() . "\n";
-            exit(2);
-        }
-
-        print " done\n";
-        exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
-    }
-
-    /**
-     * @since Method available since Release 4.8.0
-     */
-    protected function handleVersionCheck()
-    {
-        $this->printVersionString();
-
-        $latestVersion = file_get_contents('https://phar.phpunit.de/latest-version-of/phpunit');
-        $isOutdated    = version_compare($latestVersion, PHPUnit_Runner_Version::id(), '>');
-
-        if ($isOutdated) {
-            print "You are not using the latest version of PHPUnit.\n";
-            print 'Use "phpunit --self-update" to install PHPUnit ' . $latestVersion . "\n";
-        } else {
-            print "You are using the latest version of PHPUnit.\n";
-        }
-
-        exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
-    }
-
-    /**
-     * Show the help message.
-     */
-    protected function showHelp()
-    {
-        $this->printVersionString();
-
-        print <<<EOT
-Usage: phpunit [options] UnitTest [UnitTest.php]
-       phpunit [options] <directory>
-
-Code Coverage Options:
-
-  --coverage-clover <file>  Generate code coverage report in Clover XML format.
-  --coverage-crap4j <file>  Generate code coverage report in Crap4J XML format.
-  --coverage-html <dir>     Generate code coverage report in HTML format.
-  --coverage-php <file>     Export PHP_CodeCoverage object to file.
-  --coverage-text=<file>    Generate code coverage report in text format.
-                            Default: Standard output.
-  --coverage-xml <dir>      Generate code coverage report in PHPUnit XML format.
-
-Logging Options:
-
-  --log-junit <file>        Log test execution in JUnit XML format to file.
-  --log-tap <file>          Log test execution in TAP format to file.
-  --log-json <file>         Log test execution in JSON format.
-  --testdox-html <file>     Write agile documentation in HTML format to file.
-  --testdox-text <file>     Write agile documentation in Text format to file.
-
-Test Selection Options:
-
-  --filter <pattern>        Filter which tests to run.
-  --testsuite <pattern>     Filter which testsuite to run.
-  --group ...               Only runs tests from the specified group(s).
-  --exclude-group ...       Exclude tests from the specified group(s).
-  --list-groups             List available test groups.
-  --test-suffix ...         Only search for test in files with specified
-                            suffix(es). Default: Test.php,.phpt
-
-Test Execution Options:
-
-  --report-useless-tests    Be strict about tests that do not test anything.
-  --strict-coverage         Be strict about unintentionally covered code.
-  --strict-global-state     Be strict about changes to global state
-  --disallow-test-output    Be strict about output during tests.
-  --enforce-time-limit      Enforce time limit based on test size.
-  --disallow-todo-tests     Disallow @todo-annotated tests.
-
-  --process-isolation       Run each test in a separate PHP process.
-  --no-globals-backup       Do not backup and restore \$GLOBALS for each test.
-  --static-backup           Backup and restore static attributes for each test.
-
-  --colors=<flag>           Use colors in output ("never", "auto" or "always").
-  --columns <n>             Number of columns to use for progress output.
-  --columns max             Use maximum number of columns for progress output.
-  --stderr                  Write to STDERR instead of STDOUT.
-  --stop-on-error           Stop execution upon first error.
-  --stop-on-failure         Stop execution upon first error or failure.
-  --stop-on-risky           Stop execution upon first risky test.
-  --stop-on-skipped         Stop execution upon first skipped test.
-  --stop-on-incomplete      Stop execution upon first incomplete test.
-  -v|--verbose              Output more verbose information.
-  --debug                   Display debugging information during test execution.
-
-  --loader <loader>         TestSuiteLoader implementation to use.
-  --repeat <times>          Runs the test(s) repeatedly.
-  --tap                     Report test execution progress in TAP format.
-  --testdox                 Report test execution progress in TestDox format.
-  --printer <printer>       TestListener implementation to use.
-
-Configuration Options:
-
-  --bootstrap <file>        A "bootstrap" PHP file that is run before the tests.
-  -c|--configuration <file> Read configuration from XML file.
-  --no-configuration        Ignore default configuration file (phpunit.xml).
-  --no-coverage             Ignore code coverage configuration.
-  --include-path <path(s)>  Prepend PHP's include_path with given path(s).
-  -d key[=value]            Sets a php.ini value.
-
-Miscellaneous Options:
-
-  -h|--help                 Prints this usage information.
-  --version                 Prints the version and exits.
-
-EOT;
-
-        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";
-        }
-    }
-
-    /**
-     * Custom callback for test suite discovery.
-     */
-    protected function handleCustomTestSuite()
-    {
-    }
-
-    private function printVersionString()
-    {
-        if ($this->versionStringPrinted) {
-            return;
-        }
-
-        print PHPUnit_Runner_Version::getVersionString() . "\n\n";
-
-        $this->versionStringPrinted = true;
-    }
-
-    /**
-     */
-    private function showError($message)
-    {
-        $this->printVersionString();
-
-        print $message . "\n";
-
-        exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php b/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php
deleted file mode 100644
index 3fc8cbe..0000000
--- a/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php
+++ /dev/null
@@ -1,640 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-use SebastianBergmann\Environment\Console;
-
-/**
- * Prints the result of a TextUI TestRunner run.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_TextUI_ResultPrinter extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener
-{
-    const EVENT_TEST_START      = 0;
-    const EVENT_TEST_END        = 1;
-    const EVENT_TESTSUITE_START = 2;
-    const EVENT_TESTSUITE_END   = 3;
-
-    const COLOR_NEVER   = 'never';
-    const COLOR_AUTO    = 'auto';
-    const COLOR_ALWAYS  = 'always';
-    const COLOR_DEFAULT = self::COLOR_NEVER;
-
-    /**
-     * @var array
-     */
-    private static $ansiCodes = array(
-      'bold'       => 1,
-      'fg-black'   => 30,
-      'fg-red'     => 31,
-      'fg-green'   => 32,
-      'fg-yellow'  => 33,
-      'fg-blue'    => 34,
-      'fg-magenta' => 35,
-      'fg-cyan'    => 36,
-      'fg-white'   => 37,
-      'bg-black'   => 40,
-      'bg-red'     => 41,
-      'bg-green'   => 42,
-      'bg-yellow'  => 43,
-      'bg-blue'    => 44,
-      'bg-magenta' => 45,
-      'bg-cyan'    => 46,
-      'bg-white'   => 47
-    );
-
-    /**
-     * @var int
-     */
-    protected $column = 0;
-
-    /**
-     * @var int
-     */
-    protected $maxColumn;
-
-    /**
-     * @var bool
-     */
-    protected $lastTestFailed = false;
-
-    /**
-     * @var int
-     */
-    protected $numAssertions = 0;
-
-    /**
-     * @var int
-     */
-    protected $numTests = -1;
-
-    /**
-     * @var int
-     */
-    protected $numTestsRun = 0;
-
-    /**
-     * @var int
-     */
-    protected $numTestsWidth;
-
-    /**
-     * @var bool
-     */
-    protected $colors = false;
-
-    /**
-     * @var bool
-     */
-    protected $debug = false;
-
-    /**
-     * @var bool
-     */
-    protected $verbose = false;
-
-    /**
-     * @var int
-     */
-    private $numberOfColumns;
-
-    /**
-     * Constructor.
-     *
-     * @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)
-    {
-        parent::__construct($out);
-
-        if (!is_bool($verbose)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'boolean');
-        }
-
-        $availableColors = array(self::COLOR_NEVER, self::COLOR_AUTO, self::COLOR_ALWAYS);
-
-        if (!in_array($colors, $availableColors)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(
-                3,
-                vsprintf('value from "%s", "%s" or "%s"', $availableColors)
-            );
-        }
-
-        if (!is_bool($debug)) {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(4, 'boolean');
-        }
-
-        if (!is_int($numberOfColumns) && $numberOfColumns != 'max') {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(5, 'integer or "max"');
-        }
-
-        $console            = new Console;
-        $maxNumberOfColumns = $console->getNumberOfColumns();
-
-        if ($numberOfColumns == 'max' || $numberOfColumns > $maxNumberOfColumns) {
-            $numberOfColumns = $maxNumberOfColumns;
-        }
-
-        $this->numberOfColumns = $numberOfColumns;
-        $this->verbose         = $verbose;
-        $this->debug           = $debug;
-
-        if ($colors === self::COLOR_AUTO && $console->hasColorSupport()) {
-            $this->colors = true;
-        } else {
-            $this->colors = (self::COLOR_ALWAYS === $colors);
-        }
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestResult $result
-     */
-    public function printResult(PHPUnit_Framework_TestResult $result)
-    {
-        $this->printHeader();
-
-        $this->printErrors($result);
-        $printSeparator = $result->errorCount() > 0;
-
-        if ($printSeparator && $result->failureCount() > 0) {
-            $this->write("\n--\n\n");
-        }
-
-        $printSeparator = $printSeparator || $result->failureCount() > 0;
-        $this->printFailures($result);
-
-        if ($this->verbose) {
-            if ($printSeparator && $result->riskyCount() > 0) {
-                $this->write("\n--\n\n");
-            }
-
-            $printSeparator = $printSeparator ||
-                              $result->riskyCount() > 0;
-
-            $this->printRisky($result);
-
-            if ($printSeparator && $result->notImplementedCount() > 0) {
-                $this->write("\n--\n\n");
-            }
-
-            $printSeparator = $printSeparator ||
-                              $result->notImplementedCount() > 0;
-
-            $this->printIncompletes($result);
-
-            if ($printSeparator && $result->skippedCount() > 0) {
-                $this->write("\n--\n\n");
-            }
-
-            $this->printSkipped($result);
-        }
-
-        $this->printFooter($result);
-    }
-
-    /**
-     * @param array  $defects
-     * @param string $type
-     */
-    protected function printDefects(array $defects, $type)
-    {
-        $count = count($defects);
-
-        if ($count == 0) {
-            return;
-        }
-
-        $this->write(
-            sprintf(
-                "There %s %d %s%s:\n",
-                ($count == 1) ? 'was' : 'were',
-                $count,
-                $type,
-                ($count == 1) ? '' : 's'
-            )
-        );
-
-        $i = 1;
-
-        foreach ($defects as $defect) {
-            $this->printDefect($defect, $i++);
-        }
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestFailure $defect
-     * @param int                           $count
-     */
-    protected function printDefect(PHPUnit_Framework_TestFailure $defect, $count)
-    {
-        $this->printDefectHeader($defect, $count);
-        $this->printDefectTrace($defect);
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestFailure $defect
-     * @param int                           $count
-     */
-    protected function printDefectHeader(PHPUnit_Framework_TestFailure $defect, $count)
-    {
-        $this->write(
-            sprintf(
-                "\n%d) %s\n",
-                $count,
-                $defect->getTestName()
-            )
-        );
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestFailure $defect
-     */
-    protected function printDefectTrace(PHPUnit_Framework_TestFailure $defect)
-    {
-        $e = $defect->thrownException();
-        $this->write((string) $e);
-
-        while ($e = $e->getPrevious()) {
-            $this->write("\nCaused by\n" . $e);
-        }
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestResult $result
-     */
-    protected function printErrors(PHPUnit_Framework_TestResult $result)
-    {
-        $this->printDefects($result->errors(), 'error');
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestResult $result
-     */
-    protected function printFailures(PHPUnit_Framework_TestResult $result)
-    {
-        $this->printDefects($result->failures(), 'failure');
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestResult $result
-     */
-    protected function printIncompletes(PHPUnit_Framework_TestResult $result)
-    {
-        $this->printDefects($result->notImplemented(), 'incomplete test');
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestResult $result
-     * @since  Method available since Release 4.0.0
-     */
-    protected function printRisky(PHPUnit_Framework_TestResult $result)
-    {
-        $this->printDefects($result->risky(), 'risky test');
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestResult $result
-     * @since  Method available since Release 3.0.0
-     */
-    protected function printSkipped(PHPUnit_Framework_TestResult $result)
-    {
-        $this->printDefects($result->skipped(), 'skipped test');
-    }
-
-    protected function printHeader()
-    {
-        $this->write("\n\n" . PHP_Timer::resourceUsage() . "\n\n");
-    }
-
-    /**
-     * @param PHPUnit_Framework_TestResult $result
-     */
-    protected function printFooter(PHPUnit_Framework_TestResult $result)
-    {
-        if (count($result) === 0) {
-            $this->writeWithColor(
-                'fg-black, bg-yellow',
-                'No tests executed!'
-            );
-        } elseif ($result->wasSuccessful() &&
-                 $result->allHarmless() &&
-                 $result->allCompletelyImplemented() &&
-                 $result->noneSkipped()) {
-            $this->writeWithColor(
-                'fg-black, bg-green',
-                sprintf(
-                    'OK (%d test%s, %d assertion%s)',
-                    count($result),
-                    (count($result) == 1) ? '' : 's',
-                    $this->numAssertions,
-                    ($this->numAssertions == 1) ? '' : 's'
-                )
-            );
-        } else {
-            if ($result->wasSuccessful()) {
-                $color = 'fg-black, bg-yellow';
-
-                if ($this->verbose) {
-                    $this->write("\n");
-                }
-
-                $this->writeWithColor(
-                    $color,
-                    'OK, but incomplete, skipped, or risky tests!'
-                );
-            } else {
-                $color = 'fg-white, bg-red';
-
-                $this->write("\n");
-                $this->writeWithColor($color, 'FAILURES!');
-            }
-
-            $this->writeCountString(count($result), 'Tests', $color, true);
-            $this->writeCountString($this->numAssertions, 'Assertions', $color, true);
-            $this->writeCountString($result->errorCount(), 'Errors', $color);
-            $this->writeCountString($result->failureCount(), 'Failures', $color);
-            $this->writeCountString($result->skippedCount(), 'Skipped', $color);
-            $this->writeCountString($result->notImplementedCount(), 'Incomplete', $color);
-            $this->writeCountString($result->riskyCount(), 'Risky', $color);
-            $this->writeWithColor($color, '.', true);
-        }
-    }
-
-    /**
-     */
-    public function printWaitPrompt()
-    {
-        $this->write("\n<RETURN> to continue\n");
-    }
-
-    /**
-     * An error occurred.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        $this->writeProgressWithColor('fg-red, bold', 'E');
-        $this->lastTestFailed = true;
-    }
-
-    /**
-     * A failure occurred.
-     *
-     * @param PHPUnit_Framework_Test                 $test
-     * @param PHPUnit_Framework_AssertionFailedError $e
-     * @param float                                  $time
-     */
-    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
-    {
-        $this->writeProgressWithColor('bg-red, fg-white', 'F');
-        $this->lastTestFailed = true;
-    }
-
-    /**
-     * Incomplete test.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        $this->writeProgressWithColor('fg-yellow, bold', 'I');
-        $this->lastTestFailed = true;
-    }
-
-    /**
-     * Risky test.
-     *
-     * @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)
-    {
-        $this->writeProgressWithColor('fg-yellow, bold', 'R');
-        $this->lastTestFailed = true;
-    }
-
-    /**
-     * Skipped test.
-     *
-     * @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)
-    {
-        $this->writeProgressWithColor('fg-cyan, bold', 'S');
-        $this->lastTestFailed = true;
-    }
-
-    /**
-     * A testsuite started.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     * @since  Method available since Release 2.2.0
-     */
-    public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
-    {
-        if ($this->numTests == -1) {
-            $this->numTests      = count($suite);
-            $this->numTestsWidth = strlen((string) $this->numTests);
-            $this->maxColumn     = $this->numberOfColumns - strlen('  /  (XXX%)') - (2 * $this->numTestsWidth);
-        }
-    }
-
-    /**
-     * A testsuite ended.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     * @since  Method available since Release 2.2.0
-     */
-    public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
-    {
-    }
-
-    /**
-     * A test started.
-     *
-     * @param PHPUnit_Framework_Test $test
-     */
-    public function startTest(PHPUnit_Framework_Test $test)
-    {
-        if ($this->debug) {
-            $this->write(
-                sprintf(
-                    "\nStarting test '%s'.\n",
-                    PHPUnit_Util_Test::describe($test)
-                )
-            );
-        }
-    }
-
-    /**
-     * A test ended.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param float                  $time
-     */
-    public function endTest(PHPUnit_Framework_Test $test, $time)
-    {
-        if (!$this->lastTestFailed) {
-            $this->writeProgress('.');
-        }
-
-        if ($test instanceof PHPUnit_Framework_TestCase) {
-            $this->numAssertions += $test->getNumAssertions();
-        } elseif ($test instanceof PHPUnit_Extensions_PhptTestCase) {
-            $this->numAssertions++;
-        }
-
-        $this->lastTestFailed = false;
-
-        if ($test instanceof PHPUnit_Framework_TestCase) {
-            if (!$test->hasExpectationOnOutput()) {
-                $this->write($test->getActualOutput());
-            }
-        }
-    }
-
-    /**
-     * @param string $progress
-     */
-    protected function writeProgress($progress)
-    {
-        $this->write($progress);
-        $this->column++;
-        $this->numTestsRun++;
-
-        if ($this->column == $this->maxColumn) {
-            $this->write(
-                sprintf(
-                    ' %' . $this->numTestsWidth . 'd / %' .
-                    $this->numTestsWidth . 'd (%3s%%)',
-                    $this->numTestsRun,
-                    $this->numTests,
-                    floor(($this->numTestsRun / $this->numTests) * 100)
-                )
-            );
-
-            $this->writeNewLine();
-        }
-    }
-
-    protected function writeNewLine()
-    {
-        $this->column = 0;
-        $this->write("\n");
-    }
-
-    /**
-     * Formats a buffer with a specified ANSI color sequence if colors are
-     * enabled.
-     *
-     * @param  string $color
-     * @param  string $buffer
-     * @return string
-     * @since  Method available since Release 4.0.0
-     */
-    protected function formatWithColor($color, $buffer)
-    {
-        if (!$this->colors) {
-            return $buffer;
-        }
-
-        $codes   = array_map('trim', explode(',', $color));
-        $lines   = explode("\n", $buffer);
-        $padding = max(array_map('strlen', $lines));
-        $styles  = array();
-
-        foreach ($codes as $code) {
-            $styles[] = self::$ansiCodes[$code];
-        }
-
-        $style = sprintf("\x1b[%sm", implode(';', $styles));
-
-        $styledLines = array();
-
-        foreach ($lines as $line) {
-            $styledLines[] = $style . str_pad($line, $padding) . "\x1b[0m";
-        }
-
-        return implode("\n", $styledLines);
-    }
-
-    /**
-     * Writes a buffer out with a color sequence if colors are enabled.
-     *
-     * @param string $color
-     * @param string $buffer
-     * @param bool   $lf
-     * @since  Method available since Release 4.0.0
-     */
-    protected function writeWithColor($color, $buffer, $lf = true)
-    {
-        $this->write($this->formatWithColor($color, $buffer));
-
-        if ($lf) {
-            $this->write("\n");
-        }
-    }
-
-    /**
-     * Writes progress with a color sequence if colors are enabled.
-     *
-     * @param string $color
-     * @param string $buffer
-     * @since  Method available since Release 4.0.0
-     */
-    protected function writeProgressWithColor($color, $buffer)
-    {
-        $buffer = $this->formatWithColor($color, $buffer);
-        $this->writeProgress($buffer);
-    }
-
-    /**
-     * @param int    $count
-     * @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)
-    {
-        static $first = true;
-
-        if ($always || $count > 0) {
-            $this->writeWithColor(
-                $color,
-                sprintf(
-                    '%s%s: %d',
-                    !$first ? ', ' : '',
-                    $name,
-                    $count
-                ),
-                false
-            );
-
-            $first = false;
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/TextUI/TestRunner.php b/vendor/phpunit/phpunit/src/TextUI/TestRunner.php
deleted file mode 100644
index 94909d9..0000000
--- a/vendor/phpunit/phpunit/src/TextUI/TestRunner.php
+++ /dev/null
@@ -1,1023 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-use SebastianBergmann\Environment\Runtime;
-
-/**
- * A TestRunner for the Command Line Interface (CLI)
- * PHP SAPI Module.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_TextUI_TestRunner extends PHPUnit_Runner_BaseTestRunner
-{
-    const SUCCESS_EXIT   = 0;
-    const FAILURE_EXIT   = 1;
-    const EXCEPTION_EXIT = 2;
-
-    /**
-     * @var PHP_CodeCoverage_Filter
-     */
-    protected $codeCoverageFilter;
-
-    /**
-     * @var PHPUnit_Runner_TestSuiteLoader
-     */
-    protected $loader = null;
-
-    /**
-     * @var PHPUnit_TextUI_ResultPrinter
-     */
-    protected $printer = null;
-
-    /**
-     * @var bool
-     */
-    protected static $versionStringPrinted = false;
-
-    /**
-     * @var array
-     */
-    private $missingExtensions = array();
-
-    /**
-     * @var Runtime
-     */
-    private $runtime;
-
-    /**
-     * @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)
-    {
-        if ($filter === null) {
-            $filter = $this->getCodeCoverageFilter();
-        }
-
-        $this->codeCoverageFilter = $filter;
-        $this->loader             = $loader;
-        $this->runtime            = new Runtime;
-    }
-
-    /**
-     * @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())
-    {
-        if ($test instanceof ReflectionClass) {
-            $test = new PHPUnit_Framework_TestSuite($test);
-        }
-
-        if ($test instanceof PHPUnit_Framework_Test) {
-            $aTestRunner = new self;
-
-            return $aTestRunner->doRun(
-                $test,
-                $arguments
-            );
-        } else {
-            throw new PHPUnit_Framework_Exception(
-                'No test case or test suite found.'
-            );
-        }
-    }
-
-    /**
-     * @return PHPUnit_Framework_TestResult
-     */
-    protected function createTestResult()
-    {
-        return new PHPUnit_Framework_TestResult;
-    }
-
-    private function processSuiteFilters(PHPUnit_Framework_TestSuite $suite, array $arguments)
-    {
-        if (!$arguments['filter'] &&
-            empty($arguments['groups']) &&
-            empty($arguments['excludeGroups'])) {
-            return;
-        }
-
-        $filterFactory = new PHPUnit_Runner_Filter_Factory();
-
-        if (!empty($arguments['excludeGroups'])) {
-            $filterFactory->addFilter(
-                new ReflectionClass('PHPUnit_Runner_Filter_Group_Exclude'),
-                $arguments['excludeGroups']
-            );
-        }
-
-        if (!empty($arguments['groups'])) {
-            $filterFactory->addFilter(
-                new ReflectionClass('PHPUnit_Runner_Filter_Group_Include'),
-                $arguments['groups']
-            );
-        }
-
-        if ($arguments['filter']) {
-            $filterFactory->addFilter(
-                new ReflectionClass('PHPUnit_Runner_Filter_Test'),
-                $arguments['filter']
-            );
-        }
-        $suite->injectFilter($filterFactory);
-    }
-
-    /**
-     * @param  PHPUnit_Framework_Test       $suite
-     * @param  array                        $arguments
-     * @return PHPUnit_Framework_TestResult
-     */
-    public function doRun(PHPUnit_Framework_Test $suite, array $arguments = array())
-    {
-        if (isset($arguments['configuration'])) {
-            $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] = $arguments['configuration'];
-        }
-
-        $this->handleConfiguration($arguments);
-
-        $this->processSuiteFilters($suite, $arguments);
-
-        if (isset($arguments['bootstrap'])) {
-            $GLOBALS['__PHPUNIT_BOOTSTRAP'] = $arguments['bootstrap'];
-        }
-
-        if ($arguments['backupGlobals'] === false) {
-            $suite->setBackupGlobals(false);
-        }
-
-        if ($arguments['backupStaticAttributes'] === true) {
-            $suite->setBackupStaticAttributes(true);
-        }
-
-        if ($arguments['disallowChangesToGlobalState'] === true) {
-            $suite->setDisallowChangesToGlobalState(true);
-        }
-
-        if (is_integer($arguments['repeat'])) {
-            $test = new PHPUnit_Extensions_RepeatedTest(
-                $suite,
-                $arguments['repeat'],
-                $arguments['processIsolation']
-            );
-
-            $suite = new PHPUnit_Framework_TestSuite();
-            $suite->addTest($test);
-        }
-
-        $result = $this->createTestResult();
-
-        if (!$arguments['convertErrorsToExceptions']) {
-            $result->convertErrorsToExceptions(false);
-        }
-
-        if (!$arguments['convertNoticesToExceptions']) {
-            PHPUnit_Framework_Error_Notice::$enabled = false;
-        }
-
-        if (!$arguments['convertWarningsToExceptions']) {
-            PHPUnit_Framework_Error_Warning::$enabled = false;
-        }
-
-        if ($arguments['stopOnError']) {
-            $result->stopOnError(true);
-        }
-
-        if ($arguments['stopOnFailure']) {
-            $result->stopOnFailure(true);
-        }
-
-        if ($arguments['stopOnIncomplete']) {
-            $result->stopOnIncomplete(true);
-        }
-
-        if ($arguments['stopOnRisky']) {
-            $result->stopOnRisky(true);
-        }
-
-        if ($arguments['stopOnSkipped']) {
-            $result->stopOnSkipped(true);
-        }
-
-        if ($this->printer === null) {
-            if (isset($arguments['printer']) &&
-                $arguments['printer'] instanceof PHPUnit_Util_Printer) {
-                $this->printer = $arguments['printer'];
-            } else {
-                $printerClass = 'PHPUnit_TextUI_ResultPrinter';
-
-                if (isset($arguments['printer']) &&
-                    is_string($arguments['printer']) &&
-                    class_exists($arguments['printer'], false)) {
-                    $class = new ReflectionClass($arguments['printer']);
-
-                    if ($class->isSubclassOf('PHPUnit_TextUI_ResultPrinter')) {
-                        $printerClass = $arguments['printer'];
-                    }
-                }
-
-                $this->printer = new $printerClass(
-                  isset($arguments['stderr']) ? 'php://stderr' : null,
-                  $arguments['verbose'],
-                  $arguments['colors'],
-                  $arguments['debug'],
-                  $arguments['columns']
-                );
-            }
-        }
-
-        if (!$this->printer instanceof PHPUnit_Util_Log_TAP) {
-            $this->printer->write(
-                PHPUnit_Runner_Version::getVersionString() . "\n"
-            );
-
-            self::$versionStringPrinted = true;
-
-            if ($arguments['verbose']) {
-                $this->printer->write(
-                    sprintf(
-                        "\nRuntime:\t%s",
-                        $this->runtime->getNameWithVersion()
-                    )
-                );
-
-                if ($this->runtime->hasXdebug()) {
-                    $this->printer->write(
-                        sprintf(
-                            ' with Xdebug %s',
-                            phpversion('xdebug')
-                        )
-                    );
-                }
-
-                if (isset($arguments['configuration'])) {
-                    $this->printer->write(
-                        sprintf(
-                            "\nConfiguration:\t%s",
-                            $arguments['configuration']->getFilename()
-                        )
-                    );
-                }
-
-                $this->printer->write("\n");
-            }
-
-            if (isset($arguments['deprecatedStrictModeOption'])) {
-                print "Warning:\tDeprecated option \"--strict\" used\n";
-            } elseif (isset($arguments['deprecatedStrictModeSetting'])) {
-                print "Warning:\tDeprecated configuration setting \"strict\" used\n";
-            }
-
-            if (isset($arguments['deprecatedSeleniumConfiguration'])) {
-                print "Warning:\tDeprecated configuration setting \"selenium\" used\n";
-            }
-        }
-
-        foreach ($arguments['listeners'] as $listener) {
-            $result->addListener($listener);
-        }
-
-        $result->addListener($this->printer);
-
-        if (isset($arguments['testdoxHTMLFile'])) {
-            $result->addListener(
-                new PHPUnit_Util_TestDox_ResultPrinter_HTML(
-                    $arguments['testdoxHTMLFile']
-                )
-            );
-        }
-
-        if (isset($arguments['testdoxTextFile'])) {
-            $result->addListener(
-                new PHPUnit_Util_TestDox_ResultPrinter_Text(
-                    $arguments['testdoxTextFile']
-                )
-            );
-        }
-
-        $codeCoverageReports = 0;
-
-        if (isset($arguments['coverageClover'])) {
-            $codeCoverageReports++;
-        }
-
-        if (isset($arguments['coverageCrap4J'])) {
-            $codeCoverageReports++;
-        }
-
-        if (isset($arguments['coverageHtml'])) {
-            $codeCoverageReports++;
-        }
-
-        if (isset($arguments['coveragePHP'])) {
-            $codeCoverageReports++;
-        }
-
-        if (isset($arguments['coverageText'])) {
-            $codeCoverageReports++;
-        }
-
-        if (isset($arguments['coverageXml'])) {
-            $codeCoverageReports++;
-        }
-
-        if (isset($arguments['noCoverage'])) {
-            $codeCoverageReports = 0;
-        }
-
-        if ($codeCoverageReports > 0 && (!extension_loaded('tokenizer') || !$this->runtime->canCollectCodeCoverage())) {
-            if (!extension_loaded('tokenizer')) {
-                $this->showExtensionNotLoadedWarning(
-                    'tokenizer',
-                    'No code coverage will be generated.'
-                );
-            } elseif (!extension_loaded('Xdebug')) {
-                $this->showExtensionNotLoadedWarning(
-                    'Xdebug',
-                    'No code coverage will be generated.'
-                );
-            }
-
-            $codeCoverageReports = 0;
-        }
-
-        if (!$this->printer instanceof PHPUnit_Util_Log_TAP) {
-            if ($codeCoverageReports > 0 && !$this->codeCoverageFilter->hasWhitelist()) {
-                $this->printer->write("Warning:\tNo whitelist configured for code coverage\n");
-            }
-
-            $this->printer->write("\n");
-        }
-
-        if ($codeCoverageReports > 0) {
-            $codeCoverage = new PHP_CodeCoverage(
-                null,
-                $this->codeCoverageFilter
-            );
-
-            $codeCoverage->setAddUncoveredFilesFromWhitelist(
-                $arguments['addUncoveredFilesFromWhitelist']
-            );
-
-            $codeCoverage->setCheckForUnintentionallyCoveredCode(
-                $arguments['strictCoverage']
-            );
-
-            $codeCoverage->setProcessUncoveredFilesFromWhitelist(
-                $arguments['processUncoveredFilesFromWhitelist']
-            );
-
-            if (isset($arguments['forceCoversAnnotation'])) {
-                $codeCoverage->setForceCoversAnnotation(
-                    $arguments['forceCoversAnnotation']
-                );
-            }
-
-            if (isset($arguments['mapTestClassNameToCoveredClassName'])) {
-                $codeCoverage->setMapTestClassNameToCoveredClassName(
-                    $arguments['mapTestClassNameToCoveredClassName']
-                );
-            }
-
-            $result->setCodeCoverage($codeCoverage);
-        }
-
-        if ($codeCoverageReports > 1) {
-            if (isset($arguments['cacheTokens'])) {
-                $codeCoverage->setCacheTokens($arguments['cacheTokens']);
-            }
-        }
-
-        if (isset($arguments['jsonLogfile'])) {
-            $result->addListener(
-                new PHPUnit_Util_Log_JSON($arguments['jsonLogfile'])
-            );
-        }
-
-        if (isset($arguments['tapLogfile'])) {
-            $result->addListener(
-                new PHPUnit_Util_Log_TAP($arguments['tapLogfile'])
-            );
-        }
-
-        if (isset($arguments['junitLogfile'])) {
-            $result->addListener(
-                new PHPUnit_Util_Log_JUnit(
-                    $arguments['junitLogfile'],
-                    $arguments['logIncompleteSkipped']
-                )
-            );
-        }
-
-        $result->beStrictAboutTestsThatDoNotTestAnything($arguments['reportUselessTests']);
-        $result->beStrictAboutOutputDuringTests($arguments['disallowTestOutput']);
-        $result->beStrictAboutTodoAnnotatedTests($arguments['disallowTodoAnnotatedTests']);
-        $result->beStrictAboutTestSize($arguments['enforceTimeLimit']);
-        $result->setTimeoutForSmallTests($arguments['timeoutForSmallTests']);
-        $result->setTimeoutForMediumTests($arguments['timeoutForMediumTests']);
-        $result->setTimeoutForLargeTests($arguments['timeoutForLargeTests']);
-
-        if ($suite instanceof PHPUnit_Framework_TestSuite) {
-            $suite->setRunTestInSeparateProcess($arguments['processIsolation']);
-        }
-
-        $suite->run($result);
-
-        unset($suite);
-        $result->flushListeners();
-
-        if ($this->printer instanceof PHPUnit_TextUI_ResultPrinter) {
-            $this->printer->printResult($result);
-        }
-
-        if (isset($codeCoverage)) {
-            if (isset($arguments['coverageClover'])) {
-                $this->printer->write(
-                    "\nGenerating code coverage report in Clover XML format ..."
-                );
-
-                $writer = new PHP_CodeCoverage_Report_Clover;
-                $writer->process($codeCoverage, $arguments['coverageClover']);
-
-                $this->printer->write(" done\n");
-                unset($writer);
-            }
-
-            if (isset($arguments['coverageCrap4J'])) {
-                $this->printer->write(
-                    "\nGenerating Crap4J report XML file ..."
-                );
-
-                $writer = new PHP_CodeCoverage_Report_Crap4j($arguments['crap4jThreshold']);
-                $writer->process($codeCoverage, $arguments['coverageCrap4J']);
-
-                $this->printer->write(" done\n");
-                unset($writer);
-            }
-
-            if (isset($arguments['coverageHtml'])) {
-                $this->printer->write(
-                    "\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()
-                    )
-                );
-
-                $writer->process($codeCoverage, $arguments['coverageHtml']);
-
-                $this->printer->write(" done\n");
-                unset($writer);
-            }
-
-            if (isset($arguments['coveragePHP'])) {
-                $this->printer->write(
-                    "\nGenerating code coverage report in PHP format ..."
-                );
-
-                $writer = new PHP_CodeCoverage_Report_PHP;
-                $writer->process($codeCoverage, $arguments['coveragePHP']);
-
-                $this->printer->write(" done\n");
-                unset($writer);
-            }
-
-            if (isset($arguments['coverageText'])) {
-                if ($arguments['coverageText'] == 'php://stdout') {
-                    $outputStream = $this->printer;
-                    $colors       = $arguments['colors'];
-                } else {
-                    $outputStream = new PHPUnit_Util_Printer($arguments['coverageText']);
-                    $colors       = false;
-                }
-
-                $processor = new PHP_CodeCoverage_Report_Text(
-                    $arguments['reportLowUpperBound'],
-                    $arguments['reportHighLowerBound'],
-                    $arguments['coverageTextShowUncoveredFiles'],
-                    $arguments['coverageTextShowOnlySummary']
-                );
-
-                $outputStream->write(
-                    $processor->process($codeCoverage, $colors)
-                );
-            }
-
-            if (isset($arguments['coverageXml'])) {
-                $this->printer->write(
-                    "\nGenerating code coverage report in PHPUnit XML format ..."
-                );
-
-                $writer = new PHP_CodeCoverage_Report_XML;
-                $writer->process($codeCoverage, $arguments['coverageXml']);
-
-                $this->printer->write(" done\n");
-                unset($writer);
-            }
-        }
-
-        return $result;
-    }
-
-    /**
-     * @param PHPUnit_TextUI_ResultPrinter $resultPrinter
-     */
-    public function setPrinter(PHPUnit_TextUI_ResultPrinter $resultPrinter)
-    {
-        $this->printer = $resultPrinter;
-    }
-
-    /**
-     * Override to define how to handle a failed loading of
-     * a test suite.
-     *
-     * @param string $message
-     */
-    protected function runFailed($message)
-    {
-        $this->write($message . PHP_EOL);
-        exit(self::FAILURE_EXIT);
-    }
-
-    /**
-     * @param string $buffer
-     * @since  Method available since Release 3.1.0
-     */
-    protected function write($buffer)
-    {
-        if (PHP_SAPI != 'cli') {
-            $buffer = htmlspecialchars($buffer);
-        }
-
-        if ($this->printer !== null) {
-            $this->printer->write($buffer);
-        } else {
-            print $buffer;
-        }
-    }
-
-    /**
-     * Returns the loader to be used.
-     *
-     * @return PHPUnit_Runner_TestSuiteLoader
-     * @since  Method available since Release 2.2.0
-     */
-    public function getLoader()
-    {
-        if ($this->loader === null) {
-            $this->loader = new PHPUnit_Runner_StandardTestSuiteLoader;
-        }
-
-        return $this->loader;
-    }
-
-    /**
-     * @param array $arguments
-     * @since  Method available since Release 3.2.1
-     */
-    protected function handleConfiguration(array &$arguments)
-    {
-        if (isset($arguments['configuration']) &&
-            !$arguments['configuration'] instanceof PHPUnit_Util_Configuration) {
-            $arguments['configuration'] = PHPUnit_Util_Configuration::getInstance(
-                $arguments['configuration']
-            );
-        }
-
-        $arguments['debug']     = isset($arguments['debug'])     ? $arguments['debug']     : false;
-        $arguments['filter']    = isset($arguments['filter'])    ? $arguments['filter']    : false;
-        $arguments['listeners'] = isset($arguments['listeners']) ? $arguments['listeners'] : array();
-
-        if (isset($arguments['configuration'])) {
-            $arguments['configuration']->handlePHPConfiguration();
-
-            $phpunitConfiguration = $arguments['configuration']->getPHPUnitConfiguration();
-
-            if (isset($phpunitConfiguration['deprecatedStrictModeSetting'])) {
-                $arguments['deprecatedStrictModeSetting'] = true;
-            }
-
-            if (isset($phpunitConfiguration['backupGlobals']) &&
-                !isset($arguments['backupGlobals'])) {
-                $arguments['backupGlobals'] = $phpunitConfiguration['backupGlobals'];
-            }
-
-            if (isset($phpunitConfiguration['backupStaticAttributes']) &&
-                !isset($arguments['backupStaticAttributes'])) {
-                $arguments['backupStaticAttributes'] = $phpunitConfiguration['backupStaticAttributes'];
-            }
-
-            if (isset($phpunitConfiguration['disallowChangesToGlobalState']) &&
-                !isset($arguments['disallowChangesToGlobalState'])) {
-                $arguments['disallowChangesToGlobalState'] = $phpunitConfiguration['disallowChangesToGlobalState'];
-            }
-
-            if (isset($phpunitConfiguration['bootstrap']) &&
-                !isset($arguments['bootstrap'])) {
-                $arguments['bootstrap'] = $phpunitConfiguration['bootstrap'];
-            }
-
-            if (isset($phpunitConfiguration['cacheTokens']) &&
-                !isset($arguments['cacheTokens'])) {
-                $arguments['cacheTokens'] = $phpunitConfiguration['cacheTokens'];
-            }
-
-            if (isset($phpunitConfiguration['colors']) &&
-                !isset($arguments['colors'])) {
-                $arguments['colors'] = $phpunitConfiguration['colors'];
-            }
-
-            if (isset($phpunitConfiguration['convertErrorsToExceptions']) &&
-                !isset($arguments['convertErrorsToExceptions'])) {
-                $arguments['convertErrorsToExceptions'] = $phpunitConfiguration['convertErrorsToExceptions'];
-            }
-
-            if (isset($phpunitConfiguration['convertNoticesToExceptions']) &&
-                !isset($arguments['convertNoticesToExceptions'])) {
-                $arguments['convertNoticesToExceptions'] = $phpunitConfiguration['convertNoticesToExceptions'];
-            }
-
-            if (isset($phpunitConfiguration['convertWarningsToExceptions']) &&
-                !isset($arguments['convertWarningsToExceptions'])) {
-                $arguments['convertWarningsToExceptions'] = $phpunitConfiguration['convertWarningsToExceptions'];
-            }
-
-            if (isset($phpunitConfiguration['processIsolation']) &&
-                !isset($arguments['processIsolation'])) {
-                $arguments['processIsolation'] = $phpunitConfiguration['processIsolation'];
-            }
-
-            if (isset($phpunitConfiguration['stopOnError']) &&
-                !isset($arguments['stopOnError'])) {
-                $arguments['stopOnError'] = $phpunitConfiguration['stopOnError'];
-            }
-
-            if (isset($phpunitConfiguration['stopOnFailure']) &&
-                !isset($arguments['stopOnFailure'])) {
-                $arguments['stopOnFailure'] = $phpunitConfiguration['stopOnFailure'];
-            }
-
-            if (isset($phpunitConfiguration['stopOnIncomplete']) &&
-                !isset($arguments['stopOnIncomplete'])) {
-                $arguments['stopOnIncomplete'] = $phpunitConfiguration['stopOnIncomplete'];
-            }
-
-            if (isset($phpunitConfiguration['stopOnRisky']) &&
-                !isset($arguments['stopOnRisky'])) {
-                $arguments['stopOnRisky'] = $phpunitConfiguration['stopOnRisky'];
-            }
-
-            if (isset($phpunitConfiguration['stopOnSkipped']) &&
-                !isset($arguments['stopOnSkipped'])) {
-                $arguments['stopOnSkipped'] = $phpunitConfiguration['stopOnSkipped'];
-            }
-
-            if (isset($phpunitConfiguration['timeoutForSmallTests']) &&
-                !isset($arguments['timeoutForSmallTests'])) {
-                $arguments['timeoutForSmallTests'] = $phpunitConfiguration['timeoutForSmallTests'];
-            }
-
-            if (isset($phpunitConfiguration['timeoutForMediumTests']) &&
-                !isset($arguments['timeoutForMediumTests'])) {
-                $arguments['timeoutForMediumTests'] = $phpunitConfiguration['timeoutForMediumTests'];
-            }
-
-            if (isset($phpunitConfiguration['timeoutForLargeTests']) &&
-                !isset($arguments['timeoutForLargeTests'])) {
-                $arguments['timeoutForLargeTests'] = $phpunitConfiguration['timeoutForLargeTests'];
-            }
-
-            if (isset($phpunitConfiguration['reportUselessTests']) &&
-                !isset($arguments['reportUselessTests'])) {
-                $arguments['reportUselessTests'] = $phpunitConfiguration['reportUselessTests'];
-            }
-
-            if (isset($phpunitConfiguration['strictCoverage']) &&
-                !isset($arguments['strictCoverage'])) {
-                $arguments['strictCoverage'] = $phpunitConfiguration['strictCoverage'];
-            }
-
-            if (isset($phpunitConfiguration['disallowTestOutput']) &&
-                !isset($arguments['disallowTestOutput'])) {
-                $arguments['disallowTestOutput'] = $phpunitConfiguration['disallowTestOutput'];
-            }
-
-            if (isset($phpunitConfiguration['enforceTimeLimit']) &&
-                !isset($arguments['enforceTimeLimit'])) {
-                $arguments['enforceTimeLimit'] = $phpunitConfiguration['enforceTimeLimit'];
-            }
-
-            if (isset($phpunitConfiguration['disallowTodoAnnotatedTests']) &&
-                !isset($arguments['disallowTodoAnnotatedTests'])) {
-                $arguments['disallowTodoAnnotatedTests'] = $phpunitConfiguration['disallowTodoAnnotatedTests'];
-            }
-
-            if (isset($phpunitConfiguration['verbose']) &&
-                !isset($arguments['verbose'])) {
-                $arguments['verbose'] = $phpunitConfiguration['verbose'];
-            }
-
-            if (isset($phpunitConfiguration['forceCoversAnnotation']) &&
-                !isset($arguments['forceCoversAnnotation'])) {
-                $arguments['forceCoversAnnotation'] = $phpunitConfiguration['forceCoversAnnotation'];
-            }
-
-            if (isset($phpunitConfiguration['mapTestClassNameToCoveredClassName']) &&
-                !isset($arguments['mapTestClassNameToCoveredClassName'])) {
-                $arguments['mapTestClassNameToCoveredClassName'] = $phpunitConfiguration['mapTestClassNameToCoveredClassName'];
-            }
-
-            $groupCliArgs = array();
-
-            if (!empty($arguments['groups'])) {
-                $groupCliArgs = $arguments['groups'];
-            }
-
-            $groupConfiguration = $arguments['configuration']->getGroupConfiguration();
-
-            if (!empty($groupConfiguration['include']) &&
-                !isset($arguments['groups'])) {
-                $arguments['groups'] = $groupConfiguration['include'];
-            }
-
-            if (!empty($groupConfiguration['exclude']) &&
-                !isset($arguments['excludeGroups'])) {
-                $arguments['excludeGroups'] = array_diff($groupConfiguration['exclude'], $groupCliArgs);
-            }
-
-            foreach ($arguments['configuration']->getListenerConfiguration() as $listener) {
-                if (!class_exists($listener['class'], false) &&
-                    $listener['file'] !== '') {
-                    require_once $listener['file'];
-                }
-
-                if (class_exists($listener['class'])) {
-                    if (count($listener['arguments']) == 0) {
-                        $listener = new $listener['class'];
-                    } else {
-                        $listenerClass = new ReflectionClass(
-                            $listener['class']
-                        );
-                        $listener      = $listenerClass->newInstanceArgs(
-                            $listener['arguments']
-                        );
-                    }
-
-                    if ($listener instanceof PHPUnit_Framework_TestListener) {
-                        $arguments['listeners'][] = $listener;
-                    }
-                }
-            }
-
-            $loggingConfiguration = $arguments['configuration']->getLoggingConfiguration();
-
-            if (isset($loggingConfiguration['coverage-clover']) &&
-                !isset($arguments['coverageClover'])) {
-                $arguments['coverageClover'] = $loggingConfiguration['coverage-clover'];
-            }
-
-            if (isset($loggingConfiguration['coverage-crap4j']) &&
-                !isset($arguments['coverageCrap4J'])) {
-                $arguments['coverageCrap4J'] = $loggingConfiguration['coverage-crap4j'];
-
-                if (isset($loggingConfiguration['crap4jThreshold']) &&
-                    !isset($arguments['crap4jThreshold'])) {
-                    $arguments['crap4jThreshold'] = $loggingConfiguration['crap4jThreshold'];
-                }
-            }
-
-            if (isset($loggingConfiguration['coverage-html']) &&
-                !isset($arguments['coverageHtml'])) {
-                if (isset($loggingConfiguration['lowUpperBound']) &&
-                    !isset($arguments['reportLowUpperBound'])) {
-                    $arguments['reportLowUpperBound'] = $loggingConfiguration['lowUpperBound'];
-                }
-
-                if (isset($loggingConfiguration['highLowerBound']) &&
-                    !isset($arguments['reportHighLowerBound'])) {
-                    $arguments['reportHighLowerBound'] = $loggingConfiguration['highLowerBound'];
-                }
-
-                $arguments['coverageHtml'] = $loggingConfiguration['coverage-html'];
-            }
-
-            if (isset($loggingConfiguration['coverage-php']) &&
-                !isset($arguments['coveragePHP'])) {
-                $arguments['coveragePHP'] = $loggingConfiguration['coverage-php'];
-            }
-
-            if (isset($loggingConfiguration['coverage-text']) &&
-                !isset($arguments['coverageText'])) {
-                $arguments['coverageText'] = $loggingConfiguration['coverage-text'];
-                if (isset($loggingConfiguration['coverageTextShowUncoveredFiles'])) {
-                    $arguments['coverageTextShowUncoveredFiles'] = $loggingConfiguration['coverageTextShowUncoveredFiles'];
-                } else {
-                    $arguments['coverageTextShowUncoveredFiles'] = false;
-                }
-                if (isset($loggingConfiguration['coverageTextShowOnlySummary'])) {
-                    $arguments['coverageTextShowOnlySummary'] = $loggingConfiguration['coverageTextShowOnlySummary'];
-                } else {
-                    $arguments['coverageTextShowOnlySummary'] = false;
-                }
-            }
-
-            if (isset($loggingConfiguration['coverage-xml']) &&
-                !isset($arguments['coverageXml'])) {
-                $arguments['coverageXml'] = $loggingConfiguration['coverage-xml'];
-            }
-
-            if (isset($loggingConfiguration['json']) &&
-                !isset($arguments['jsonLogfile'])) {
-                $arguments['jsonLogfile'] = $loggingConfiguration['json'];
-            }
-
-            if (isset($loggingConfiguration['plain'])) {
-                $arguments['listeners'][] = new PHPUnit_TextUI_ResultPrinter(
-                    $loggingConfiguration['plain'],
-                    true
-                );
-            }
-
-            if (isset($loggingConfiguration['tap']) &&
-                !isset($arguments['tapLogfile'])) {
-                $arguments['tapLogfile'] = $loggingConfiguration['tap'];
-            }
-
-            if (isset($loggingConfiguration['junit']) &&
-                !isset($arguments['junitLogfile'])) {
-                $arguments['junitLogfile'] = $loggingConfiguration['junit'];
-
-                if (isset($loggingConfiguration['logIncompleteSkipped']) &&
-                    !isset($arguments['logIncompleteSkipped'])) {
-                    $arguments['logIncompleteSkipped'] = $loggingConfiguration['logIncompleteSkipped'];
-                }
-            }
-
-            if (isset($loggingConfiguration['testdox-html']) &&
-                !isset($arguments['testdoxHTMLFile'])) {
-                $arguments['testdoxHTMLFile'] = $loggingConfiguration['testdox-html'];
-            }
-
-            if (isset($loggingConfiguration['testdox-text']) &&
-                !isset($arguments['testdoxTextFile'])) {
-                $arguments['testdoxTextFile'] = $loggingConfiguration['testdox-text'];
-            }
-
-            if ((isset($arguments['coverageClover']) ||
-                isset($arguments['coverageCrap4J']) ||
-                isset($arguments['coverageHtml']) ||
-                isset($arguments['coveragePHP']) ||
-                isset($arguments['coverageText']) ||
-                isset($arguments['coverageXml'])) &&
-                $this->runtime->canCollectCodeCoverage()) {
-                $filterConfiguration                             = $arguments['configuration']->getFilterConfiguration();
-                $arguments['addUncoveredFilesFromWhitelist']     = $filterConfiguration['whitelist']['addUncoveredFilesFromWhitelist'];
-                $arguments['processUncoveredFilesFromWhitelist'] = $filterConfiguration['whitelist']['processUncoveredFilesFromWhitelist'];
-
-                if (empty($filterConfiguration['whitelist']['include']['directory']) &&
-                    empty($filterConfiguration['whitelist']['include']['file'])) {
-                    foreach ($filterConfiguration['blacklist']['include']['directory'] as $dir) {
-                        $this->codeCoverageFilter->addDirectoryToBlacklist(
-                            $dir['path'],
-                            $dir['suffix'],
-                            $dir['prefix'],
-                            $dir['group']
-                        );
-                    }
-
-                    foreach ($filterConfiguration['blacklist']['include']['file'] as $file) {
-                        $this->codeCoverageFilter->addFileToBlacklist($file);
-                    }
-
-                    foreach ($filterConfiguration['blacklist']['exclude']['directory'] as $dir) {
-                        $this->codeCoverageFilter->removeDirectoryFromBlacklist(
-                            $dir['path'],
-                            $dir['suffix'],
-                            $dir['prefix'],
-                            $dir['group']
-                        );
-                    }
-
-                    foreach ($filterConfiguration['blacklist']['exclude']['file'] as $file) {
-                        $this->codeCoverageFilter->removeFileFromBlacklist($file);
-                    }
-                }
-
-                foreach ($filterConfiguration['whitelist']['include']['directory'] as $dir) {
-                    $this->codeCoverageFilter->addDirectoryToWhitelist(
-                        $dir['path'],
-                        $dir['suffix'],
-                        $dir['prefix']
-                    );
-                }
-
-                foreach ($filterConfiguration['whitelist']['include']['file'] as $file) {
-                    $this->codeCoverageFilter->addFileToWhitelist($file);
-                }
-
-                foreach ($filterConfiguration['whitelist']['exclude']['directory'] as $dir) {
-                    $this->codeCoverageFilter->removeDirectoryFromWhitelist(
-                        $dir['path'],
-                        $dir['suffix'],
-                        $dir['prefix']
-                    );
-                }
-
-                foreach ($filterConfiguration['whitelist']['exclude']['file'] as $file) {
-                    $this->codeCoverageFilter->removeFileFromWhitelist($file);
-                }
-            }
-        }
-
-        $arguments['addUncoveredFilesFromWhitelist']     = isset($arguments['addUncoveredFilesFromWhitelist'])     ? $arguments['addUncoveredFilesFromWhitelist']     : true;
-        $arguments['processUncoveredFilesFromWhitelist'] = isset($arguments['processUncoveredFilesFromWhitelist']) ? $arguments['processUncoveredFilesFromWhitelist'] : false;
-        $arguments['backupGlobals']                      = isset($arguments['backupGlobals'])                      ? $arguments['backupGlobals']                      : null;
-        $arguments['backupStaticAttributes']             = isset($arguments['backupStaticAttributes'])             ? $arguments['backupStaticAttributes']             : null;
-        $arguments['disallowChangesToGlobalState']       = isset($arguments['disallowChangesToGlobalState'])       ? $arguments['disallowChangesToGlobalState']       : null;
-        $arguments['cacheTokens']                        = isset($arguments['cacheTokens'])                        ? $arguments['cacheTokens']                        : false;
-        $arguments['columns']                            = isset($arguments['columns'])                            ? $arguments['columns']                            : 80;
-        $arguments['colors']                             = isset($arguments['colors'])                             ? $arguments['colors']                             : PHPUnit_TextUI_ResultPrinter::COLOR_DEFAULT;
-        $arguments['convertErrorsToExceptions']          = isset($arguments['convertErrorsToExceptions'])          ? $arguments['convertErrorsToExceptions']          : true;
-        $arguments['convertNoticesToExceptions']         = isset($arguments['convertNoticesToExceptions'])         ? $arguments['convertNoticesToExceptions']         : true;
-        $arguments['convertWarningsToExceptions']        = isset($arguments['convertWarningsToExceptions'])        ? $arguments['convertWarningsToExceptions']        : true;
-        $arguments['excludeGroups']                      = isset($arguments['excludeGroups'])                      ? $arguments['excludeGroups']                      : array();
-        $arguments['groups']                             = isset($arguments['groups'])                             ? $arguments['groups']                             : array();
-        $arguments['logIncompleteSkipped']               = isset($arguments['logIncompleteSkipped'])               ? $arguments['logIncompleteSkipped']               : false;
-        $arguments['processIsolation']                   = isset($arguments['processIsolation'])                   ? $arguments['processIsolation']                   : false;
-        $arguments['repeat']                             = isset($arguments['repeat'])                             ? $arguments['repeat']                             : false;
-        $arguments['reportHighLowerBound']               = isset($arguments['reportHighLowerBound'])               ? $arguments['reportHighLowerBound']               : 90;
-        $arguments['reportLowUpperBound']                = isset($arguments['reportLowUpperBound'])                ? $arguments['reportLowUpperBound']                : 50;
-        $arguments['crap4jThreshold']                    = isset($arguments['crap4jThreshold'])                    ? $arguments['crap4jThreshold']                    : 30;
-        $arguments['stopOnError']                        = isset($arguments['stopOnError'])                        ? $arguments['stopOnError']                        : false;
-        $arguments['stopOnFailure']                      = isset($arguments['stopOnFailure'])                      ? $arguments['stopOnFailure']                      : false;
-        $arguments['stopOnIncomplete']                   = isset($arguments['stopOnIncomplete'])                   ? $arguments['stopOnIncomplete']                   : false;
-        $arguments['stopOnRisky']                        = isset($arguments['stopOnRisky'])                        ? $arguments['stopOnRisky']                        : false;
-        $arguments['stopOnSkipped']                      = isset($arguments['stopOnSkipped'])                      ? $arguments['stopOnSkipped']                      : false;
-        $arguments['timeoutForSmallTests']               = isset($arguments['timeoutForSmallTests'])               ? $arguments['timeoutForSmallTests']               : 1;
-        $arguments['timeoutForMediumTests']              = isset($arguments['timeoutForMediumTests'])              ? $arguments['timeoutForMediumTests']              : 10;
-        $arguments['timeoutForLargeTests']               = isset($arguments['timeoutForLargeTests'])               ? $arguments['timeoutForLargeTests']               : 60;
-        $arguments['reportUselessTests']                 = isset($arguments['reportUselessTests'])                 ? $arguments['reportUselessTests']                 : false;
-        $arguments['strictCoverage']                     = isset($arguments['strictCoverage'])                     ? $arguments['strictCoverage']                     : false;
-        $arguments['disallowTestOutput']                 = isset($arguments['disallowTestOutput'])                 ? $arguments['disallowTestOutput']                 : false;
-        $arguments['enforceTimeLimit']                   = isset($arguments['enforceTimeLimit'])                   ? $arguments['enforceTimeLimit']                   : false;
-        $arguments['disallowTodoAnnotatedTests']         = isset($arguments['disallowTodoAnnotatedTests'])         ? $arguments['disallowTodoAnnotatedTests']         : false;
-        $arguments['verbose']                            = isset($arguments['verbose'])                            ? $arguments['verbose']                            : false;
-    }
-
-    /**
-     * @param $extension
-     * @param string $message
-     * @since Method available since Release 4.7.3
-     */
-    private function showExtensionNotLoadedWarning($extension, $message = '')
-    {
-        if (isset($this->missingExtensions[$extension])) {
-            return;
-        }
-
-        $this->write("Warning:\t" . 'The ' . $extension . ' extension is not loaded' . "\n");
-
-        if (!empty($message)) {
-            $this->write("\t\t" . $message . "\n");
-        }
-
-        $this->missingExtensions[$extension] = true;
-    }
-
-    /**
-     * @return PHP_CodeCoverage_Filter
-     */
-    private function getCodeCoverageFilter()
-    {
-        $filter = new PHP_CodeCoverage_Filter;
-
-        if (defined('__PHPUNIT_PHAR__')) {
-            $filter->addFileToBlacklist(__PHPUNIT_PHAR__);
-        }
-
-        $blacklist = new PHPUnit_Util_Blacklist;
-
-        foreach ($blacklist->getBlacklistedDirectories() as $directory) {
-            $filter->addDirectoryToBlacklist($directory);
-        }
-
-        return $filter;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Blacklist.php b/vendor/phpunit/phpunit/src/Util/Blacklist.php
deleted file mode 100644
index 35a053e..0000000
--- a/vendor/phpunit/phpunit/src/Util/Blacklist.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Utility class for blacklisting PHPUnit's own source code files.
- *
- * @since Class available since Release 4.0.0
- */
-class PHPUnit_Util_Blacklist
-{
-    /**
-     * @var array
-     */
-    public static $blacklistedClassNames = array(
-        'File_Iterator'                              => 1,
-        'PHP_CodeCoverage'                           => 1,
-        'PHP_Invoker'                                => 1,
-        'PHP_Timer'                                  => 1,
-        'PHP_Token'                                  => 1,
-        'PHPUnit_Framework_TestCase'                 => 2,
-        'PHPUnit_Extensions_Database_TestCase'       => 2,
-        'PHPUnit_Framework_MockObject_Generator'     => 2,
-        'PHPUnit_Extensions_SeleniumTestCase'        => 2,
-        'Text_Template'                              => 1,
-        'Symfony\Component\Yaml\Yaml'                => 1,
-        'SebastianBergmann\Diff\Diff'                => 1,
-        'SebastianBergmann\Environment\Runtime'      => 1,
-        'SebastianBergmann\Comparator\Comparator'    => 1,
-        'SebastianBergmann\Exporter\Exporter'        => 1,
-        'SebastianBergmann\GlobalState\Snapshot'     => 1,
-        'SebastianBergmann\RecursionContext\Context' => 1,
-        'SebastianBergmann\Version'                  => 1,
-        'Composer\Autoload\ClassLoader'              => 1,
-        'Doctrine\Instantiator\Instantiator'         => 1,
-        'phpDocumentor\Reflection\DocBlock'          => 1,
-        'Prophecy\Prophet'                           => 1
-    );
-
-    /**
-     * @var array
-     */
-    private static $directories;
-
-    /**
-     * @return array
-     * @since  Method available since Release 4.1.0
-     */
-    public function getBlacklistedDirectories()
-    {
-        $this->initialize();
-
-        return self::$directories;
-    }
-
-    /**
-     * @param  string $file
-     * @return bool
-     */
-    public function isBlacklisted($file)
-    {
-        if (defined('PHPUNIT_TESTSUITE')) {
-            return false;
-        }
-
-        $this->initialize();
-
-        foreach (self::$directories as $directory) {
-            if (strpos($file, $directory) === 0) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    private function initialize()
-    {
-        if (self::$directories === null) {
-            self::$directories = array();
-
-            foreach (self::$blacklistedClassNames as $className => $parent) {
-                if (!class_exists($className)) {
-                    continue;
-                }
-
-                $reflector = new ReflectionClass($className);
-                $directory = $reflector->getFileName();
-
-                for ($i = 0; $i < $parent; $i++) {
-                    $directory = dirname($directory);
-                }
-
-                self::$directories[] = $directory;
-            }
-
-            // Hide process isolation workaround on Windows.
-            // @see PHPUnit_Util_PHP::factory()
-            // @see PHPUnit_Util_PHP_Windows::process()
-            if (DIRECTORY_SEPARATOR === '\\') {
-                // tempnam() prefix is limited to first 3 chars.
-                // @see http://php.net/manual/en/function.tempnam.php
-                self::$directories[] = sys_get_temp_dir() . '\\PHP';
-            }
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Configuration.php b/vendor/phpunit/phpunit/src/Util/Configuration.php
deleted file mode 100644
index eab3b65..0000000
--- a/vendor/phpunit/phpunit/src/Util/Configuration.php
+++ /dev/null
@@ -1,1133 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Wrapper for the PHPUnit XML configuration file.
- *
- * Example XML configuration file:
- * <code>
- * <?xml version="1.0" encoding="utf-8" ?>
- *
- * <phpunit backupGlobals="true"
- *          backupStaticAttributes="false"
- *          bootstrap="/path/to/bootstrap.php"
- *          cacheTokens="false"
- *          columns="80"
- *          colors="false"
- *          stderr="false"
- *          convertErrorsToExceptions="true"
- *          convertNoticesToExceptions="true"
- *          convertWarningsToExceptions="true"
- *          forceCoversAnnotation="false"
- *          mapTestClassNameToCoveredClassName="false"
- *          printerClass="PHPUnit_TextUI_ResultPrinter"
- *          processIsolation="false"
- *          stopOnError="false"
- *          stopOnFailure="false"
- *          stopOnIncomplete="false"
- *          stopOnRisky="false"
- *          stopOnSkipped="false"
- *          testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader"
- *          timeoutForSmallTests="1"
- *          timeoutForMediumTests="10"
- *          timeoutForLargeTests="60"
- *          beStrictAboutTestsThatDoNotTestAnything="false"
- *          beStrictAboutOutputDuringTests="false"
- *          beStrictAboutTestSize="false"
- *          beStrictAboutTodoAnnotatedTests="false"
- *          checkForUnintentionallyCoveredCode="false"
- *          disallowChangesToGlobalState="false"
- *          verbose="false">
- *   <testsuites>
- *     <testsuite name="My Test Suite">
- *       <directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">/path/to/files</directory>
- *       <file phpVersion="5.3.0" phpVersionOperator=">=">/path/to/MyTest.php</file>
- *       <exclude>/path/to/files/exclude</exclude>
- *     </testsuite>
- *   </testsuites>
- *
- *   <groups>
- *     <include>
- *       <group>name</group>
- *     </include>
- *     <exclude>
- *       <group>name</group>
- *     </exclude>
- *   </groups>
- *
- *   <filter>
- *     <blacklist>
- *       <directory suffix=".php">/path/to/files</directory>
- *       <file>/path/to/file</file>
- *       <exclude>
- *         <directory suffix=".php">/path/to/files</directory>
- *         <file>/path/to/file</file>
- *       </exclude>
- *     </blacklist>
- *     <whitelist addUncoveredFilesFromWhitelist="true"
- *                processUncoveredFilesFromWhitelist="false">
- *       <directory suffix=".php">/path/to/files</directory>
- *       <file>/path/to/file</file>
- *       <exclude>
- *         <directory suffix=".php">/path/to/files</directory>
- *         <file>/path/to/file</file>
- *       </exclude>
- *     </whitelist>
- *   </filter>
- *
- *   <listeners>
- *     <listener class="MyListener" file="/optional/path/to/MyListener.php">
- *       <arguments>
- *         <array>
- *           <element key="0">
- *             <string>Sebastian</string>
- *           </element>
- *         </array>
- *         <integer>22</integer>
- *         <string>April</string>
- *         <double>19.78</double>
- *         <null/>
- *         <object class="stdClass"/>
- *         <file>MyRelativeFile.php</file>
- *         <directory>MyRelativeDir</directory>
- *       </arguments>
- *     </listener>
- *   </listeners>
- *
- *   <logging>
- *     <log type="coverage-html" target="/tmp/report" lowUpperBound="50" highLowerBound="90"/>
- *     <log type="coverage-clover" target="/tmp/clover.xml"/>
- *     <log type="coverage-crap4j" target="/tmp/crap.xml" threshold="30"/>
- *     <log type="json" target="/tmp/logfile.json"/>
- *     <log type="plain" target="/tmp/logfile.txt"/>
- *     <log type="tap" target="/tmp/logfile.tap"/>
- *     <log type="junit" target="/tmp/logfile.xml" logIncompleteSkipped="false"/>
- *     <log type="testdox-html" target="/tmp/testdox.html"/>
- *     <log type="testdox-text" target="/tmp/testdox.txt"/>
- *   </logging>
- *
- *   <php>
- *     <includePath>.</includePath>
- *     <ini name="foo" value="bar"/>
- *     <const name="foo" value="bar"/>
- *     <var name="foo" value="bar"/>
- *     <env name="foo" value="bar"/>
- *     <post name="foo" value="bar"/>
- *     <get name="foo" value="bar"/>
- *     <cookie name="foo" value="bar"/>
- *     <server name="foo" value="bar"/>
- *     <files name="foo" value="bar"/>
- *     <request name="foo" value="bar"/>
- *   </php>
- *
- *   <selenium>
- *     <browser name="Firefox on Linux"
- *              browser="*firefox /usr/lib/firefox/firefox-bin"
- *              host="my.linux.box"
- *              port="4444"
- *              timeout="30000"/>
- *   </selenium>
- * </phpunit>
- * </code>
- *
- * @since Class available since Release 3.2.0
- */
-class PHPUnit_Util_Configuration
-{
-    private static $instances = array();
-
-    protected $document;
-    protected $xpath;
-    protected $filename;
-
-    /**
-     * Loads a PHPUnit configuration file.
-     *
-     * @param string $filename
-     */
-    protected function __construct($filename)
-    {
-        $this->filename = $filename;
-        $this->document = PHPUnit_Util_XML::loadFile($filename, false, true, true);
-        $this->xpath    = new DOMXPath($this->document);
-    }
-
-    /**
-     * @since  Method available since Release 3.4.0
-     */
-    final private function __clone()
-    {
-    }
-
-    /**
-     * Returns a PHPUnit configuration object.
-     *
-     * @param  string                     $filename
-     * @return PHPUnit_Util_Configuration
-     * @since  Method available since Release 3.4.0
-     */
-    public static function getInstance($filename)
-    {
-        $realpath = realpath($filename);
-
-        if ($realpath === false) {
-            throw new PHPUnit_Framework_Exception(
-                sprintf(
-                    'Could not read "%s".',
-                    $filename
-                )
-            );
-        }
-
-        if (!isset(self::$instances[$realpath])) {
-            self::$instances[$realpath] = new self($realpath);
-        }
-
-        return self::$instances[$realpath];
-    }
-
-    /**
-     * Returns the realpath to the configuration file.
-     *
-     * @return string
-     * @since  Method available since Release 3.6.0
-     */
-    public function getFilename()
-    {
-        return $this->filename;
-    }
-
-    /**
-     * Returns the configuration for SUT filtering.
-     *
-     * @return array
-     * @since  Method available since Release 3.2.1
-     */
-    public function getFilterConfiguration()
-    {
-        $addUncoveredFilesFromWhitelist     = true;
-        $processUncoveredFilesFromWhitelist = false;
-
-        $tmp = $this->xpath->query('filter/whitelist');
-
-        if ($tmp->length == 1) {
-            if ($tmp->item(0)->hasAttribute('addUncoveredFilesFromWhitelist')) {
-                $addUncoveredFilesFromWhitelist = $this->getBoolean(
-                    (string) $tmp->item(0)->getAttribute(
-                        'addUncoveredFilesFromWhitelist'
-                    ),
-                    true
-                );
-            }
-
-            if ($tmp->item(0)->hasAttribute('processUncoveredFilesFromWhitelist')) {
-                $processUncoveredFilesFromWhitelist = $this->getBoolean(
-                    (string) $tmp->item(0)->getAttribute(
-                        'processUncoveredFilesFromWhitelist'
-                    ),
-                    false
-                );
-            }
-        }
-
-        return array(
-          'blacklist' => array(
-            'include' => array(
-              'directory' => $this->readFilterDirectories(
-                  'filter/blacklist/directory'
-              ),
-              'file' => $this->readFilterFiles(
-                  'filter/blacklist/file'
-              )
-            ),
-            'exclude' => array(
-              'directory' => $this->readFilterDirectories(
-                  'filter/blacklist/exclude/directory'
-              ),
-              'file' => $this->readFilterFiles(
-                  'filter/blacklist/exclude/file'
-              )
-            )
-          ),
-          'whitelist' => array(
-            'addUncoveredFilesFromWhitelist'     => $addUncoveredFilesFromWhitelist,
-            'processUncoveredFilesFromWhitelist' => $processUncoveredFilesFromWhitelist,
-            'include'                            => array(
-              'directory' => $this->readFilterDirectories(
-                  'filter/whitelist/directory'
-              ),
-              'file' => $this->readFilterFiles(
-                  'filter/whitelist/file'
-              )
-            ),
-            'exclude' => array(
-              'directory' => $this->readFilterDirectories(
-                  'filter/whitelist/exclude/directory'
-              ),
-              'file' => $this->readFilterFiles(
-                  'filter/whitelist/exclude/file'
-              )
-            )
-          )
-        );
-    }
-
-    /**
-     * Returns the configuration for groups.
-     *
-     * @return array
-     * @since  Method available since Release 3.2.1
-     */
-    public function getGroupConfiguration()
-    {
-        $groups = array(
-          'include' => array(),
-          'exclude' => array()
-        );
-
-        foreach ($this->xpath->query('groups/include/group') as $group) {
-            $groups['include'][] = (string) $group->textContent;
-        }
-
-        foreach ($this->xpath->query('groups/exclude/group') as $group) {
-            $groups['exclude'][] = (string) $group->textContent;
-        }
-
-        return $groups;
-    }
-
-    /**
-     * Returns the configuration for listeners.
-     *
-     * @return array
-     * @since  Method available since Release 3.4.0
-     */
-    public function getListenerConfiguration()
-    {
-        $result = array();
-
-        foreach ($this->xpath->query('listeners/listener') as $listener) {
-            $class     = (string) $listener->getAttribute('class');
-            $file      = '';
-            $arguments = array();
-
-            if ($listener->getAttribute('file')) {
-                $file = $this->toAbsolutePath(
-                    (string) $listener->getAttribute('file'),
-                    true
-                );
-            }
-
-            foreach ($listener->childNodes as $node) {
-                if ($node instanceof DOMElement && $node->tagName == 'arguments') {
-                    foreach ($node->childNodes as $argument) {
-                        if ($argument instanceof DOMElement) {
-                            if ($argument->tagName == 'file' ||
-                            $argument->tagName == 'directory') {
-                                $arguments[] = $this->toAbsolutePath((string) $argument->textContent);
-                            } else {
-                                $arguments[] = PHPUnit_Util_XML::xmlToVariable($argument);
-                            }
-                        }
-                    }
-                }
-            }
-
-            $result[] = array(
-              'class'     => $class,
-              'file'      => $file,
-              'arguments' => $arguments
-            );
-        }
-
-        return $result;
-    }
-
-    /**
-     * Returns the logging configuration.
-     *
-     * @return array
-     */
-    public function getLoggingConfiguration()
-    {
-        $result = array();
-
-        foreach ($this->xpath->query('logging/log') as $log) {
-            $type   = (string) $log->getAttribute('type');
-            $target = (string) $log->getAttribute('target');
-
-            if (!$target) {
-                continue;
-            }
-
-            $target = $this->toAbsolutePath($target);
-
-            if ($type == 'coverage-html') {
-                if ($log->hasAttribute('lowUpperBound')) {
-                    $result['lowUpperBound'] = $this->getInteger(
-                        (string) $log->getAttribute('lowUpperBound'),
-                        50
-                    );
-                }
-
-                if ($log->hasAttribute('highLowerBound')) {
-                    $result['highLowerBound'] = $this->getInteger(
-                        (string) $log->getAttribute('highLowerBound'),
-                        90
-                    );
-                }
-            } elseif ($type == 'coverage-crap4j') {
-                if ($log->hasAttribute('threshold')) {
-                    $result['crap4jThreshold'] = $this->getInteger(
-                        (string) $log->getAttribute('threshold'),
-                        30
-                    );
-                }
-            } elseif ($type == 'junit') {
-                if ($log->hasAttribute('logIncompleteSkipped')) {
-                    $result['logIncompleteSkipped'] = $this->getBoolean(
-                        (string) $log->getAttribute('logIncompleteSkipped'),
-                        false
-                    );
-                }
-            } elseif ($type == 'coverage-text') {
-                if ($log->hasAttribute('showUncoveredFiles')) {
-                    $result['coverageTextShowUncoveredFiles'] = $this->getBoolean(
-                        (string) $log->getAttribute('showUncoveredFiles'),
-                        false
-                    );
-                }
-                if ($log->hasAttribute('showOnlySummary')) {
-                    $result['coverageTextShowOnlySummary'] = $this->getBoolean(
-                        (string) $log->getAttribute('showOnlySummary'),
-                        false
-                    );
-                }
-            }
-
-            $result[$type] = $target;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Returns the PHP configuration.
-     *
-     * @return array
-     * @since  Method available since Release 3.2.1
-     */
-    public function getPHPConfiguration()
-    {
-        $result = array(
-          'include_path' => array(),
-          'ini'          => array(),
-          'const'        => array(),
-          'var'          => array(),
-          'env'          => array(),
-          'post'         => array(),
-          'get'          => array(),
-          'cookie'       => array(),
-          'server'       => array(),
-          'files'        => array(),
-          'request'      => array()
-        );
-
-        foreach ($this->xpath->query('php/includePath') as $includePath) {
-            $path = (string) $includePath->textContent;
-            if ($path) {
-                $result['include_path'][] = $this->toAbsolutePath($path);
-            }
-        }
-
-        foreach ($this->xpath->query('php/ini') as $ini) {
-            $name  = (string) $ini->getAttribute('name');
-            $value = (string) $ini->getAttribute('value');
-
-            $result['ini'][$name] = $value;
-        }
-
-        foreach ($this->xpath->query('php/const') as $const) {
-            $name  = (string) $const->getAttribute('name');
-            $value = (string) $const->getAttribute('value');
-
-            $result['const'][$name] = $this->getBoolean($value, $value);
-        }
-
-        foreach (array('var', 'env', 'post', 'get', 'cookie', 'server', 'files', 'request') as $array) {
-            foreach ($this->xpath->query('php/' . $array) as $var) {
-                $name  = (string) $var->getAttribute('name');
-                $value = (string) $var->getAttribute('value');
-
-                $result[$array][$name] = $this->getBoolean($value, $value);
-            }
-        }
-
-        return $result;
-    }
-
-    /**
-     * Handles the PHP configuration.
-     *
-     * @since  Method available since Release 3.2.20
-     */
-    public function handlePHPConfiguration()
-    {
-        $configuration = $this->getPHPConfiguration();
-
-        if (! empty($configuration['include_path'])) {
-            ini_set(
-                'include_path',
-                implode(PATH_SEPARATOR, $configuration['include_path']) .
-                PATH_SEPARATOR .
-                ini_get('include_path')
-            );
-        }
-
-        foreach ($configuration['ini'] as $name => $value) {
-            if (defined($value)) {
-                $value = constant($value);
-            }
-
-            ini_set($name, $value);
-        }
-
-        foreach ($configuration['const'] as $name => $value) {
-            if (!defined($name)) {
-                define($name, $value);
-            }
-        }
-
-        foreach (array('var', 'post', 'get', 'cookie', 'server', 'files', 'request') as $array) {
-            // See https://github.com/sebastianbergmann/phpunit/issues/277
-            switch ($array) {
-                case 'var':
-                    $target = &$GLOBALS;
-                    break;
-
-                case 'server':
-                    $target = &$_SERVER;
-                    break;
-
-                default:
-                    $target = &$GLOBALS['_' . strtoupper($array)];
-                    break;
-            }
-
-            foreach ($configuration[$array] as $name => $value) {
-                $target[$name] = $value;
-            }
-        }
-
-        foreach ($configuration['env'] as $name => $value) {
-            if (false === getenv($name)) {
-                putenv("{$name}={$value}");
-            }
-            if (!isset($_ENV[$name])) {
-                $_ENV[$name] = $value;
-            }
-        }
-    }
-
-    /**
-     * Returns the PHPUnit configuration.
-     *
-     * @return array
-     * @since  Method available since Release 3.2.14
-     */
-    public function getPHPUnitConfiguration()
-    {
-        $result = array();
-        $root   = $this->document->documentElement;
-
-        if ($root->hasAttribute('cacheTokens')) {
-            $result['cacheTokens'] = $this->getBoolean(
-                (string) $root->getAttribute('cacheTokens'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('columns')) {
-            $columns = (string) $root->getAttribute('columns');
-
-            if ($columns == 'max') {
-                $result['columns'] = 'max';
-            } else {
-                $result['columns'] = $this->getInteger($columns, 80);
-            }
-        }
-
-        if ($root->hasAttribute('colors')) {
-            /* only allow boolean for compatibility with previous versions
-              'always' only allowed from command line */
-            if ($this->getBoolean($root->getAttribute('colors'), false)) {
-                $result['colors'] = PHPUnit_TextUI_ResultPrinter::COLOR_AUTO;
-            } else {
-                $result['colors'] = PHPUnit_TextUI_ResultPrinter::COLOR_NEVER;
-            }
-        }
-
-        /*
-         * Issue #657
-         */
-        if ($root->hasAttribute('stderr')) {
-            $result['stderr'] = $this->getBoolean(
-                (string) $root->getAttribute('stderr'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('backupGlobals')) {
-            $result['backupGlobals'] = $this->getBoolean(
-                (string) $root->getAttribute('backupGlobals'),
-                true
-            );
-        }
-
-        if ($root->hasAttribute('backupStaticAttributes')) {
-            $result['backupStaticAttributes'] = $this->getBoolean(
-                (string) $root->getAttribute('backupStaticAttributes'),
-                false
-            );
-        }
-
-        if ($root->getAttribute('bootstrap')) {
-            $result['bootstrap'] = $this->toAbsolutePath(
-                (string) $root->getAttribute('bootstrap')
-            );
-        }
-
-        if ($root->hasAttribute('convertErrorsToExceptions')) {
-            $result['convertErrorsToExceptions'] = $this->getBoolean(
-                (string) $root->getAttribute('convertErrorsToExceptions'),
-                true
-            );
-        }
-
-        if ($root->hasAttribute('convertNoticesToExceptions')) {
-            $result['convertNoticesToExceptions'] = $this->getBoolean(
-                (string) $root->getAttribute('convertNoticesToExceptions'),
-                true
-            );
-        }
-
-        if ($root->hasAttribute('convertWarningsToExceptions')) {
-            $result['convertWarningsToExceptions'] = $this->getBoolean(
-                (string) $root->getAttribute('convertWarningsToExceptions'),
-                true
-            );
-        }
-
-        if ($root->hasAttribute('forceCoversAnnotation')) {
-            $result['forceCoversAnnotation'] = $this->getBoolean(
-                (string) $root->getAttribute('forceCoversAnnotation'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('mapTestClassNameToCoveredClassName')) {
-            $result['mapTestClassNameToCoveredClassName'] = $this->getBoolean(
-                (string) $root->getAttribute('mapTestClassNameToCoveredClassName'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('processIsolation')) {
-            $result['processIsolation'] = $this->getBoolean(
-                (string) $root->getAttribute('processIsolation'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('stopOnError')) {
-            $result['stopOnError'] = $this->getBoolean(
-                (string) $root->getAttribute('stopOnError'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('stopOnFailure')) {
-            $result['stopOnFailure'] = $this->getBoolean(
-                (string) $root->getAttribute('stopOnFailure'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('stopOnIncomplete')) {
-            $result['stopOnIncomplete'] = $this->getBoolean(
-                (string) $root->getAttribute('stopOnIncomplete'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('stopOnRisky')) {
-            $result['stopOnRisky'] = $this->getBoolean(
-                (string) $root->getAttribute('stopOnRisky'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('stopOnSkipped')) {
-            $result['stopOnSkipped'] = $this->getBoolean(
-                (string) $root->getAttribute('stopOnSkipped'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('testSuiteLoaderClass')) {
-            $result['testSuiteLoaderClass'] = (string) $root->getAttribute(
-                'testSuiteLoaderClass'
-            );
-        }
-
-        if ($root->getAttribute('testSuiteLoaderFile')) {
-            $result['testSuiteLoaderFile'] = $this->toAbsolutePath(
-                (string) $root->getAttribute('testSuiteLoaderFile')
-            );
-        }
-
-        if ($root->hasAttribute('printerClass')) {
-            $result['printerClass'] = (string) $root->getAttribute(
-                'printerClass'
-            );
-        }
-
-        if ($root->getAttribute('printerFile')) {
-            $result['printerFile'] = $this->toAbsolutePath(
-                (string) $root->getAttribute('printerFile')
-            );
-        }
-
-        if ($root->hasAttribute('timeoutForSmallTests')) {
-            $result['timeoutForSmallTests'] = $this->getInteger(
-                (string) $root->getAttribute('timeoutForSmallTests'),
-                1
-            );
-        }
-
-        if ($root->hasAttribute('timeoutForMediumTests')) {
-            $result['timeoutForMediumTests'] = $this->getInteger(
-                (string) $root->getAttribute('timeoutForMediumTests'),
-                10
-            );
-        }
-
-        if ($root->hasAttribute('timeoutForLargeTests')) {
-            $result['timeoutForLargeTests'] = $this->getInteger(
-                (string) $root->getAttribute('timeoutForLargeTests'),
-                60
-            );
-        }
-
-        if ($root->hasAttribute('beStrictAboutTestsThatDoNotTestAnything')) {
-            $result['reportUselessTests'] = $this->getBoolean(
-                (string) $root->getAttribute('beStrictAboutTestsThatDoNotTestAnything'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('checkForUnintentionallyCoveredCode')) {
-            $result['strictCoverage'] = $this->getBoolean(
-                (string) $root->getAttribute('checkForUnintentionallyCoveredCode'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('beStrictAboutOutputDuringTests')) {
-            $result['disallowTestOutput'] = $this->getBoolean(
-                (string) $root->getAttribute('beStrictAboutOutputDuringTests'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('beStrictAboutChangesToGlobalState')) {
-            $result['disallowChangesToGlobalState'] = $this->getBoolean(
-                (string) $root->getAttribute('beStrictAboutChangesToGlobalState'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('beStrictAboutTestSize')) {
-            $result['enforceTimeLimit'] = $this->getBoolean(
-                (string) $root->getAttribute('beStrictAboutTestSize'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('beStrictAboutTodoAnnotatedTests')) {
-            $result['disallowTodoAnnotatedTests'] = $this->getBoolean(
-                (string) $root->getAttribute('beStrictAboutTodoAnnotatedTests'),
-                false
-            );
-        }
-
-        if ($root->hasAttribute('strict')) {
-            $flag = $this->getBoolean(
-                (string) $root->getAttribute('strict'),
-                false
-            );
-
-            $result['reportUselessTests']          = $flag;
-            $result['strictCoverage']              = $flag;
-            $result['disallowTestOutput']          = $flag;
-            $result['enforceTimeLimit']            = $flag;
-            $result['disallowTodoAnnotatedTests']  = $flag;
-            $result['deprecatedStrictModeSetting'] = true;
-        }
-
-        if ($root->hasAttribute('verbose')) {
-            $result['verbose'] = $this->getBoolean(
-                (string) $root->getAttribute('verbose'),
-                false
-            );
-        }
-
-        return $result;
-    }
-
-    /**
-     * Returns the SeleniumTestCase browser configuration.
-     *
-     * @return array
-     * @since  Method available since Release 3.2.9
-     */
-    public function getSeleniumBrowserConfiguration()
-    {
-        $result = array();
-
-        foreach ($this->xpath->query('selenium/browser') as $config) {
-            $name    = (string) $config->getAttribute('name');
-            $browser = (string) $config->getAttribute('browser');
-
-            if ($config->hasAttribute('host')) {
-                $host = (string) $config->getAttribute('host');
-            } else {
-                $host = 'localhost';
-            }
-
-            if ($config->hasAttribute('port')) {
-                $port = $this->getInteger(
-                    (string) $config->getAttribute('port'),
-                    4444
-                );
-            } else {
-                $port = 4444;
-            }
-
-            if ($config->hasAttribute('timeout')) {
-                $timeout = $this->getInteger(
-                    (string) $config->getAttribute('timeout'),
-                    30000
-                );
-            } else {
-                $timeout = 30000;
-            }
-
-            $result[] = array(
-              'name'    => $name,
-              'browser' => $browser,
-              'host'    => $host,
-              'port'    => $port,
-              'timeout' => $timeout
-            );
-        }
-
-        return $result;
-    }
-
-    /**
-     * Returns the test suite configuration.
-     *
-     * @return PHPUnit_Framework_TestSuite
-     * @since  Method available since Release 3.2.1
-     */
-    public function getTestSuiteConfiguration($testSuiteFilter = null)
-    {
-        $testSuiteNodes = $this->xpath->query('testsuites/testsuite');
-
-        if ($testSuiteNodes->length == 0) {
-            $testSuiteNodes = $this->xpath->query('testsuite');
-        }
-
-        if ($testSuiteNodes->length == 1) {
-            return $this->getTestSuite($testSuiteNodes->item(0), $testSuiteFilter);
-        }
-
-        if ($testSuiteNodes->length > 1) {
-            $suite = new PHPUnit_Framework_TestSuite;
-
-            foreach ($testSuiteNodes as $testSuiteNode) {
-                $suite->addTestSuite(
-                    $this->getTestSuite($testSuiteNode, $testSuiteFilter)
-                );
-            }
-
-            return $suite;
-        }
-    }
-
-    /**
-     * @param  DOMElement                  $testSuiteNode
-     * @return PHPUnit_Framework_TestSuite
-     * @since  Method available since Release 3.4.0
-     */
-    protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = null)
-    {
-        if ($testSuiteNode->hasAttribute('name')) {
-            $suite = new PHPUnit_Framework_TestSuite(
-                (string) $testSuiteNode->getAttribute('name')
-            );
-        } else {
-            $suite = new PHPUnit_Framework_TestSuite;
-        }
-
-        $exclude = array();
-
-        foreach ($testSuiteNode->getElementsByTagName('exclude') as $excludeNode) {
-            $excludeFile = (string) $excludeNode->textContent;
-            if ($excludeFile) {
-                $exclude[] = $this->toAbsolutePath($excludeFile);
-            }
-        }
-
-        $fileIteratorFacade = new File_Iterator_Facade;
-
-        foreach ($testSuiteNode->getElementsByTagName('directory') as $directoryNode) {
-            if ($testSuiteFilter && $directoryNode->parentNode->getAttribute('name') != $testSuiteFilter) {
-                continue;
-            }
-
-            $directory = (string) $directoryNode->textContent;
-
-            if (empty($directory)) {
-                continue;
-            }
-
-            if ($directoryNode->hasAttribute('phpVersion')) {
-                $phpVersion = (string) $directoryNode->getAttribute('phpVersion');
-            } else {
-                $phpVersion = PHP_VERSION;
-            }
-
-            if ($directoryNode->hasAttribute('phpVersionOperator')) {
-                $phpVersionOperator = (string) $directoryNode->getAttribute('phpVersionOperator');
-            } else {
-                $phpVersionOperator = '>=';
-            }
-
-            if (!version_compare(PHP_VERSION, $phpVersion, $phpVersionOperator)) {
-                continue;
-            }
-
-            if ($directoryNode->hasAttribute('prefix')) {
-                $prefix = (string) $directoryNode->getAttribute('prefix');
-            } else {
-                $prefix = '';
-            }
-
-            if ($directoryNode->hasAttribute('suffix')) {
-                $suffix = (string) $directoryNode->getAttribute('suffix');
-            } else {
-                $suffix = 'Test.php';
-            }
-
-            $files = $fileIteratorFacade->getFilesAsArray(
-                $this->toAbsolutePath($directory),
-                $suffix,
-                $prefix,
-                $exclude
-            );
-            $suite->addTestFiles($files);
-        }
-
-        foreach ($testSuiteNode->getElementsByTagName('file') as $fileNode) {
-            if ($testSuiteFilter && $fileNode->parentNode->getAttribute('name') != $testSuiteFilter) {
-                continue;
-            }
-
-            $file = (string) $fileNode->textContent;
-
-            if (empty($file)) {
-                continue;
-            }
-
-            // Get the absolute path to the file
-            $file = $fileIteratorFacade->getFilesAsArray(
-                $this->toAbsolutePath($file)
-            );
-
-            if (!isset($file[0])) {
-                continue;
-            }
-
-            $file = $file[0];
-
-            if ($fileNode->hasAttribute('phpVersion')) {
-                $phpVersion = (string) $fileNode->getAttribute('phpVersion');
-            } else {
-                $phpVersion = PHP_VERSION;
-            }
-
-            if ($fileNode->hasAttribute('phpVersionOperator')) {
-                $phpVersionOperator = (string) $fileNode->getAttribute('phpVersionOperator');
-            } else {
-                $phpVersionOperator = '>=';
-            }
-
-            if (!version_compare(PHP_VERSION, $phpVersion, $phpVersionOperator)) {
-                continue;
-            }
-
-            $suite->addTestFile($file);
-        }
-
-        return $suite;
-    }
-
-    /**
-     * @param  string $value
-     * @param  bool   $default
-     * @return bool
-     * @since  Method available since Release 3.2.3
-     */
-    protected function getBoolean($value, $default)
-    {
-        if (strtolower($value) == 'false') {
-            return false;
-        } elseif (strtolower($value) == 'true') {
-            return true;
-        }
-
-        return $default;
-    }
-
-    /**
-     * @param  string $value
-     * @param  bool   $default
-     * @return bool
-     * @since  Method available since Release 3.6.0
-     */
-    protected function getInteger($value, $default)
-    {
-        if (is_numeric($value)) {
-            return (int) $value;
-        }
-
-        return $default;
-    }
-
-    /**
-     * @param  string $query
-     * @return array
-     * @since  Method available since Release 3.2.3
-     */
-    protected function readFilterDirectories($query)
-    {
-        $directories = array();
-
-        foreach ($this->xpath->query($query) as $directory) {
-            $directoryPath = (string) $directory->textContent;
-
-            if (!$directoryPath) {
-                continue;
-            }
-
-            if ($directory->hasAttribute('prefix')) {
-                $prefix = (string) $directory->getAttribute('prefix');
-            } else {
-                $prefix = '';
-            }
-
-            if ($directory->hasAttribute('suffix')) {
-                $suffix = (string) $directory->getAttribute('suffix');
-            } else {
-                $suffix = '.php';
-            }
-
-            if ($directory->hasAttribute('group')) {
-                $group = (string) $directory->getAttribute('group');
-            } else {
-                $group = 'DEFAULT';
-            }
-
-            $directories[] = array(
-              'path'   => $this->toAbsolutePath($directoryPath),
-              'prefix' => $prefix,
-              'suffix' => $suffix,
-              'group'  => $group
-            );
-        }
-
-        return $directories;
-    }
-
-    /**
-     * @param  string $query
-     * @return array
-     * @since  Method available since Release 3.2.3
-     */
-    protected function readFilterFiles($query)
-    {
-        $files = array();
-
-        foreach ($this->xpath->query($query) as $file) {
-            $filePath = (string) $file->textContent;
-            if ($filePath) {
-                $files[] = $this->toAbsolutePath($filePath);
-            }
-        }
-
-        return $files;
-    }
-
-    /**
-     * @param  string $path
-     * @param  bool   $useIncludePath
-     * @return string
-     * @since  Method available since Release 3.5.0
-     */
-    protected function toAbsolutePath($path, $useIncludePath = false)
-    {
-        if ($path[0] === '/') {
-            return $path;
-        }
-
-        // Matches the following on Windows:
-        //  - \\NetworkComputer\Path
-        //  - \\.\D:
-        //  - \\.\c:
-        //  - C:\Windows
-        //  - C:\windows
-        //  - C:/windows
-        //  - c:/windows
-        if (defined('PHP_WINDOWS_VERSION_BUILD') &&
-            ($path[0] === '\\' ||
-            (strlen($path) >= 3 && preg_match('#^[A-Z]\:[/\\\]#i', substr($path, 0, 3))))) {
-            return $path;
-        }
-
-        // Stream
-        if (strpos($path, '://') !== false) {
-            return $path;
-        }
-
-        $file = dirname($this->filename) . DIRECTORY_SEPARATOR . $path;
-
-        if ($useIncludePath && !file_exists($file)) {
-            $includePathFile = stream_resolve_include_path($path);
-
-            if ($includePathFile) {
-                $file = $includePathFile;
-            }
-        }
-
-        return $file;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/ErrorHandler.php b/vendor/phpunit/phpunit/src/Util/ErrorHandler.php
deleted file mode 100644
index 59f274d..0000000
--- a/vendor/phpunit/phpunit/src/Util/ErrorHandler.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-// Workaround for http://bugs.php.net/bug.php?id=47987,
-// see https://github.com/sebastianbergmann/phpunit/issues#issue/125 for details
-// Use dirname(__DIR__) instead of using /../ because of https://github.com/facebook/hhvm/issues/5215
-require_once dirname(__DIR__) . '/Framework/Error.php';
-require_once dirname(__DIR__) . '/Framework/Error/Notice.php';
-require_once dirname(__DIR__) . '/Framework/Error/Warning.php';
-require_once dirname(__DIR__) . '/Framework/Error/Deprecated.php';
-
-/**
- * Error handler that converts PHP errors and warnings to exceptions.
- *
- * @since Class available since Release 3.3.0
- */
-class PHPUnit_Util_ErrorHandler
-{
-    protected static $errorStack = array();
-
-    /**
-     * Returns the error stack.
-     *
-     * @return array
-     */
-    public static function getErrorStack()
-    {
-        return self::$errorStack;
-    }
-
-    /**
-     * @param  int                     $errno
-     * @param  string                  $errstr
-     * @param  string                  $errfile
-     * @param  int                     $errline
-     * @throws PHPUnit_Framework_Error
-     */
-    public static function handleError($errno, $errstr, $errfile, $errline)
-    {
-        if (!($errno & error_reporting())) {
-            return false;
-        }
-
-        self::$errorStack[] = array($errno, $errstr, $errfile, $errline);
-
-        $trace = debug_backtrace(false);
-        array_shift($trace);
-
-        foreach ($trace as $frame) {
-            if ($frame['function'] == '__toString') {
-                return false;
-            }
-        }
-
-        if ($errno == E_NOTICE || $errno == E_USER_NOTICE || $errno == E_STRICT) {
-            if (PHPUnit_Framework_Error_Notice::$enabled !== true) {
-                return false;
-            }
-
-            $exception = 'PHPUnit_Framework_Error_Notice';
-        } elseif ($errno == E_WARNING || $errno == E_USER_WARNING) {
-            if (PHPUnit_Framework_Error_Warning::$enabled !== true) {
-                return false;
-            }
-
-            $exception = 'PHPUnit_Framework_Error_Warning';
-        } elseif ($errno == E_DEPRECATED || $errno == E_USER_DEPRECATED) {
-            if (PHPUnit_Framework_Error_Deprecated::$enabled !== true) {
-                return false;
-            }
-
-            $exception = 'PHPUnit_Framework_Error_Deprecated';
-        } else {
-            $exception = 'PHPUnit_Framework_Error';
-        }
-
-        throw new $exception($errstr, $errno, $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
-     * @throws Exception if event of specified severity is emitted
-     */
-    public static function handleErrorOnce($severity = E_WARNING)
-    {
-        $terminator = function () {
-            static $expired = false;
-            if (!$expired) {
-                $expired = true;
-                // cleans temporary error handler
-                return restore_error_handler();
-            }
-        };
-
-        set_error_handler(function ($errno, $errstr) use ($severity) {
-            if ($errno === $severity) {
-                return;
-            }
-
-            return false;
-        });
-
-        return $terminator;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Fileloader.php b/vendor/phpunit/phpunit/src/Util/Fileloader.php
deleted file mode 100644
index adabc9c..0000000
--- a/vendor/phpunit/phpunit/src/Util/Fileloader.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Utility methods to load PHP sourcefiles.
- *
- * @since Class available since Release 2.3.0
- */
-class PHPUnit_Util_Fileloader
-{
-    /**
-     * Checks if a PHP sourcefile is readable.
-     * The sourcefile is loaded through the load() method.
-     *
-     * @param  string                      $filename
-     * @return string
-     * @throws PHPUnit_Framework_Exception
-     */
-    public static function checkAndLoad($filename)
-    {
-        $includePathFilename = stream_resolve_include_path($filename);
-
-        if (!$includePathFilename || !is_readable($includePathFilename)) {
-            throw new PHPUnit_Framework_Exception(
-                sprintf('Cannot open file "%s".' . "\n", $filename)
-            );
-        }
-
-        self::load($includePathFilename);
-
-        return $includePathFilename;
-    }
-
-    /**
-     * Loads a PHP sourcefile.
-     *
-     * @param  string $filename
-     * @return mixed
-     * @since  Method available since Release 3.0.0
-     */
-    public static function load($filename)
-    {
-        $oldVariableNames = array_keys(get_defined_vars());
-
-        include_once $filename;
-
-        $newVariables     = get_defined_vars();
-        $newVariableNames = array_diff(
-            array_keys($newVariables),
-            $oldVariableNames
-        );
-
-        foreach ($newVariableNames as $variableName) {
-            if ($variableName != 'oldVariableNames') {
-                $GLOBALS[$variableName] = $newVariables[$variableName];
-            }
-        }
-
-        return $filename;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Filesystem.php b/vendor/phpunit/phpunit/src/Util/Filesystem.php
deleted file mode 100644
index 3caa5e9..0000000
--- a/vendor/phpunit/phpunit/src/Util/Filesystem.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Filesystem helpers.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Util_Filesystem
-{
-    /**
-     * @var array
-     */
-    protected static $buffer = array();
-
-    /**
-     * Maps class names to source file names:
-     *   - PEAR CS:   Foo_Bar_Baz -> Foo/Bar/Baz.php
-     *   - Namespace: Foo\Bar\Baz -> Foo/Bar/Baz.php
-     *
-     * @param  string $className
-     * @return string
-     * @since  Method available since Release 3.4.0
-     */
-    public static function classNameToFilename($className)
-    {
-        return str_replace(
-            array('_', '\\'),
-            DIRECTORY_SEPARATOR,
-            $className
-        ) . '.php';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Filter.php b/vendor/phpunit/phpunit/src/Util/Filter.php
deleted file mode 100644
index faf7a5b..0000000
--- a/vendor/phpunit/phpunit/src/Util/Filter.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Utility class for code filtering.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Util_Filter
-{
-    /**
-     * Filters stack frames from PHPUnit classes.
-     *
-     * @param  Exception $e
-     * @param  bool      $asString
-     * @return string
-     */
-    public static function getFilteredStacktrace(Exception $e, $asString = true)
-    {
-        $prefix = false;
-        $script = realpath($GLOBALS['_SERVER']['SCRIPT_NAME']);
-
-        if (defined('__PHPUNIT_PHAR_ROOT__')) {
-            $prefix = __PHPUNIT_PHAR_ROOT__;
-        }
-
-        if ($asString === true) {
-            $filteredStacktrace = '';
-        } else {
-            $filteredStacktrace = array();
-        }
-
-        if ($e instanceof PHPUnit_Framework_SyntheticError) {
-            $eTrace = $e->getSyntheticTrace();
-            $eFile  = $e->getSyntheticFile();
-            $eLine  = $e->getSyntheticLine();
-        } elseif ($e instanceof PHPUnit_Framework_Exception) {
-            $eTrace = $e->getSerializableTrace();
-            $eFile  = $e->getFile();
-            $eLine  = $e->getLine();
-        } else {
-            if ($e->getPrevious()) {
-                $e = $e->getPrevious();
-            }
-            $eTrace = $e->getTrace();
-            $eFile  = $e->getFile();
-            $eLine  = $e->getLine();
-        }
-
-        if (!self::frameExists($eTrace, $eFile, $eLine)) {
-            array_unshift(
-                $eTrace,
-                array('file' => $eFile, 'line' => $eLine)
-            );
-        }
-
-        $blacklist = new PHPUnit_Util_Blacklist;
-
-        foreach ($eTrace as $frame) {
-            if (isset($frame['file']) && is_file($frame['file']) &&
-                !$blacklist->isBlacklisted($frame['file']) &&
-                ($prefix === false || strpos($frame['file'], $prefix) !== 0) &&
-                $frame['file'] !== $script) {
-                if ($asString === true) {
-                    $filteredStacktrace .= sprintf(
-                        "%s:%s\n",
-                        $frame['file'],
-                        isset($frame['line']) ? $frame['line'] : '?'
-                    );
-                } else {
-                    $filteredStacktrace[] = $frame;
-                }
-            }
-        }
-
-        return $filteredStacktrace;
-    }
-
-    /**
-     * @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)
-    {
-        foreach ($trace as $frame) {
-            if (isset($frame['file']) && $frame['file'] == $file &&
-                isset($frame['line']) && $frame['line'] == $line) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Getopt.php b/vendor/phpunit/phpunit/src/Util/Getopt.php
deleted file mode 100644
index ba21be3..0000000
--- a/vendor/phpunit/phpunit/src/Util/Getopt.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Command-line options parsing class.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Util_Getopt
-{
-    public static function getopt(array $args, $short_options, $long_options = null)
-    {
-        if (empty($args)) {
-            return array(array(), array());
-        }
-
-        $opts     = array();
-        $non_opts = array();
-
-        if ($long_options) {
-            sort($long_options);
-        }
-
-        if (isset($args[0][0]) && $args[0][0] != '-') {
-            array_shift($args);
-        }
-
-        reset($args);
-        array_map('trim', $args);
-
-        while (list($i, $arg) = each($args)) {
-            if ($arg == '') {
-                continue;
-            }
-
-            if ($arg == '--') {
-                $non_opts = array_merge($non_opts, array_slice($args, $i + 1));
-                break;
-            }
-
-            if ($arg[0] != '-' ||
-                (strlen($arg) > 1 && $arg[1] == '-' && !$long_options)) {
-                $non_opts[] = $args[$i];
-                continue;
-            } elseif (strlen($arg) > 1 && $arg[1] == '-') {
-                self::parseLongOption(
-                    substr($arg, 2),
-                    $long_options,
-                    $opts,
-                    $args
-                );
-            } else {
-                self::parseShortOption(
-                    substr($arg, 1),
-                    $short_options,
-                    $opts,
-                    $args
-                );
-            }
-        }
-
-        return array($opts, $non_opts);
-    }
-
-    protected static function parseShortOption($arg, $short_options, &$opts, &$args)
-    {
-        $argLen = strlen($arg);
-
-        for ($i = 0; $i < $argLen; $i++) {
-            $opt     = $arg[$i];
-            $opt_arg = null;
-
-            if (($spec = strstr($short_options, $opt)) === false ||
-                $arg[$i] == ':') {
-                throw new PHPUnit_Framework_Exception(
-                    "unrecognized option -- $opt"
-                );
-            }
-
-            if (strlen($spec) > 1 && $spec[1] == ':') {
-                if (strlen($spec) > 2 && $spec[2] == ':') {
-                    if ($i + 1 < $argLen) {
-                        $opts[] = array($opt, substr($arg, $i + 1));
-                        break;
-                    }
-                } else {
-                    if ($i + 1 < $argLen) {
-                        $opts[] = array($opt, substr($arg, $i + 1));
-                        break;
-                    } elseif (list(, $opt_arg) = each($args)) {
-                    } else {
-                        throw new PHPUnit_Framework_Exception(
-                            "option requires an argument -- $opt"
-                        );
-                    }
-                }
-            }
-
-            $opts[] = array($opt, $opt_arg);
-        }
-    }
-
-    protected static function parseLongOption($arg, $long_options, &$opts, &$args)
-    {
-        $count   = count($long_options);
-        $list    = explode('=', $arg);
-        $opt     = $list[0];
-        $opt_arg = null;
-
-        if (count($list) > 1) {
-            $opt_arg = $list[1];
-        }
-
-        $opt_len = strlen($opt);
-
-        for ($i = 0; $i < $count; $i++) {
-            $long_opt  = $long_options[$i];
-            $opt_start = substr($long_opt, 0, $opt_len);
-
-            if ($opt_start != $opt) {
-                continue;
-            }
-
-            $opt_rest = substr($long_opt, $opt_len);
-
-            if ($opt_rest != '' && $opt[0] != '=' && $i + 1 < $count &&
-                $opt == substr($long_options[$i+1], 0, $opt_len)) {
-                throw new PHPUnit_Framework_Exception(
-                    "option --$opt is ambiguous"
-                );
-            }
-
-            if (substr($long_opt, -1) == '=') {
-                if (substr($long_opt, -2) != '==') {
-                    if (!strlen($opt_arg) &&
-                        !(list(, $opt_arg) = each($args))) {
-                        throw new PHPUnit_Framework_Exception(
-                            "option --$opt requires an argument"
-                        );
-                    }
-                }
-            } elseif ($opt_arg) {
-                throw new PHPUnit_Framework_Exception(
-                    "option --$opt doesn't allow an argument"
-                );
-            }
-
-            $full_option = '--' . preg_replace('/={1,2}$/', '', $long_opt);
-            $opts[]      = array($full_option, $opt_arg);
-
-            return;
-        }
-
-        throw new PHPUnit_Framework_Exception("unrecognized option --$opt");
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/GlobalState.php b/vendor/phpunit/phpunit/src/Util/GlobalState.php
deleted file mode 100644
index 35af703..0000000
--- a/vendor/phpunit/phpunit/src/Util/GlobalState.php
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * @since Class available since Release 3.4.0
- */
-class PHPUnit_Util_GlobalState
-{
-    /**
-     * @var array
-     */
-    protected static $superGlobalArrays = array(
-      '_ENV',
-      '_POST',
-      '_GET',
-      '_COOKIE',
-      '_SERVER',
-      '_FILES',
-      '_REQUEST'
-    );
-
-    /**
-     * @var array
-     */
-    protected static $superGlobalArraysLong = array(
-      'HTTP_ENV_VARS',
-      'HTTP_POST_VARS',
-      'HTTP_GET_VARS',
-      'HTTP_COOKIE_VARS',
-      'HTTP_SERVER_VARS',
-      'HTTP_POST_FILES'
-    );
-
-    public static function getIncludedFilesAsString()
-    {
-        return static::processIncludedFilesAsString(get_included_files());
-    }
-
-    public static function processIncludedFilesAsString(array $files)
-    {
-        $blacklist = new PHPUnit_Util_Blacklist;
-        $prefix    = false;
-        $result    = '';
-
-        if (defined('__PHPUNIT_PHAR__')) {
-            $prefix = 'phar://' . __PHPUNIT_PHAR__ . '/';
-        }
-
-        for ($i = count($files) - 1; $i > 0; $i--) {
-            $file = $files[$i];
-
-            if ($prefix !== false && strpos($file, $prefix) === 0) {
-                continue;
-            }
-
-            // Skip virtual file system protocols
-            if (preg_match('/^(vfs|phpvfs[a-z0-9]+):/', $file)) {
-                continue;
-            }
-
-            if (!$blacklist->isBlacklisted($file) && is_file($file)) {
-                $result = 'require_once \'' . $file . "';\n" . $result;
-            }
-        }
-
-        return $result;
-    }
-
-    public static function getIniSettingsAsString()
-    {
-        $result      = '';
-        $iniSettings = ini_get_all(null, false);
-
-        foreach ($iniSettings as $key => $value) {
-            $result .= sprintf(
-                '@ini_set(%s, %s);' . "\n",
-                self::exportVariable($key),
-                self::exportVariable($value)
-            );
-        }
-
-        return $result;
-    }
-
-    public static function getConstantsAsString()
-    {
-        $constants = get_defined_constants(true);
-        $result    = '';
-
-        if (isset($constants['user'])) {
-            foreach ($constants['user'] as $name => $value) {
-                $result .= sprintf(
-                    'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n",
-                    $name,
-                    $name,
-                    self::exportVariable($value)
-                );
-            }
-        }
-
-        return $result;
-    }
-
-    public static function getGlobalsAsString()
-    {
-        $result            = '';
-        $superGlobalArrays = self::getSuperGlobalArrays();
-
-        foreach ($superGlobalArrays as $superGlobalArray) {
-            if (isset($GLOBALS[$superGlobalArray]) &&
-                is_array($GLOBALS[$superGlobalArray])) {
-                foreach (array_keys($GLOBALS[$superGlobalArray]) as $key) {
-                    if ($GLOBALS[$superGlobalArray][$key] instanceof Closure) {
-                        continue;
-                    }
-
-                    $result .= sprintf(
-                        '$GLOBALS[\'%s\'][\'%s\'] = %s;' . "\n",
-                        $superGlobalArray,
-                        $key,
-                        self::exportVariable($GLOBALS[$superGlobalArray][$key])
-                    );
-                }
-            }
-        }
-
-        $blacklist   = $superGlobalArrays;
-        $blacklist[] = 'GLOBALS';
-
-        foreach (array_keys($GLOBALS) as $key) {
-            if (!in_array($key, $blacklist) && !$GLOBALS[$key] instanceof Closure) {
-                $result .= sprintf(
-                    '$GLOBALS[\'%s\'] = %s;' . "\n",
-                    $key,
-                    self::exportVariable($GLOBALS[$key])
-                );
-            }
-        }
-
-        return $result;
-    }
-
-    protected static function getSuperGlobalArrays()
-    {
-        if (ini_get('register_long_arrays') == '1') {
-            return array_merge(
-                self::$superGlobalArrays,
-                self::$superGlobalArraysLong
-            );
-        } else {
-            return self::$superGlobalArrays;
-        }
-    }
-
-    protected static function exportVariable($variable)
-    {
-        if (is_scalar($variable) || is_null($variable) ||
-           (is_array($variable) && self::arrayOnlyContainsScalars($variable))) {
-            return var_export($variable, true);
-        }
-
-        return 'unserialize(' .
-                var_export(serialize($variable), true) .
-                ')';
-    }
-
-    protected static 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/phpunit/phpunit/src/Util/InvalidArgumentHelper.php b/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php
deleted file mode 100644
index 0a675fd..0000000
--- a/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Factory for PHPUnit_Framework_Exception objects that are used to describe
- * invalid arguments passed to a function or method.
- *
- * @since Class available since Release 3.4.0
- */
-class PHPUnit_Util_InvalidArgumentHelper
-{
-    /**
-     * @param  int                         $argument
-     * @param  string                      $type
-     * @param  mixed                       $value
-     * @return PHPUnit_Framework_Exception
-     */
-    public static function factory($argument, $type, $value = null)
-    {
-        $stack = debug_backtrace(false);
-
-        return new PHPUnit_Framework_Exception(
-            sprintf(
-                'Argument #%d%sof %s::%s() must be a %s',
-                $argument,
-                $value !== null ? ' (' . gettype($value) . '#' . $value . ')' : ' (No Value) ',
-                $stack[1]['class'],
-                $stack[1]['function'],
-                $type
-            )
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Log/JSON.php b/vendor/phpunit/phpunit/src/Util/Log/JSON.php
deleted file mode 100644
index 67f66a8..0000000
--- a/vendor/phpunit/phpunit/src/Util/Log/JSON.php
+++ /dev/null
@@ -1,243 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A TestListener that generates JSON messages.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Util_Log_JSON extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener
-{
-    /**
-     * @var string
-     */
-    protected $currentTestSuiteName = '';
-
-    /**
-     * @var string
-     */
-    protected $currentTestName = '';
-
-    /**
-     * @var bool
-     */
-    protected $currentTestPass = true;
-
-    /**
-     * An error occurred.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        $this->writeCase(
-            'error',
-            $time,
-            PHPUnit_Util_Filter::getFilteredStacktrace($e, false),
-            $e->getMessage(),
-            $test
-        );
-
-        $this->currentTestPass = false;
-    }
-
-    /**
-     * A failure occurred.
-     *
-     * @param PHPUnit_Framework_Test                 $test
-     * @param PHPUnit_Framework_AssertionFailedError $e
-     * @param float                                  $time
-     */
-    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
-    {
-        $this->writeCase(
-            'fail',
-            $time,
-            PHPUnit_Util_Filter::getFilteredStacktrace($e, false),
-            $e->getMessage(),
-            $test
-        );
-
-        $this->currentTestPass = false;
-    }
-
-    /**
-     * Incomplete test.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        $this->writeCase(
-            'error',
-            $time,
-            PHPUnit_Util_Filter::getFilteredStacktrace($e, false),
-            'Incomplete Test: ' . $e->getMessage(),
-            $test
-        );
-
-        $this->currentTestPass = false;
-    }
-
-    /**
-     * Risky test.
-     *
-     * @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)
-    {
-        $this->writeCase(
-            'error',
-            $time,
-            PHPUnit_Util_Filter::getFilteredStacktrace($e, false),
-            'Risky Test: ' . $e->getMessage(),
-            $test
-        );
-
-        $this->currentTestPass = false;
-    }
-
-    /**
-     * Skipped test.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        $this->writeCase(
-            'error',
-            $time,
-            PHPUnit_Util_Filter::getFilteredStacktrace($e, false),
-            'Skipped Test: ' . $e->getMessage(),
-            $test
-        );
-
-        $this->currentTestPass = false;
-    }
-
-    /**
-     * A testsuite started.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     */
-    public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
-    {
-        $this->currentTestSuiteName = $suite->getName();
-        $this->currentTestName      = '';
-
-        $this->write(
-            array(
-            'event' => 'suiteStart',
-            'suite' => $this->currentTestSuiteName,
-            'tests' => count($suite)
-            )
-        );
-    }
-
-    /**
-     * A testsuite ended.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     */
-    public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
-    {
-        $this->currentTestSuiteName = '';
-        $this->currentTestName      = '';
-    }
-
-    /**
-     * A test started.
-     *
-     * @param PHPUnit_Framework_Test $test
-     */
-    public function startTest(PHPUnit_Framework_Test $test)
-    {
-        $this->currentTestName = PHPUnit_Util_Test::describe($test);
-        $this->currentTestPass = true;
-
-        $this->write(
-            array(
-            'event' => 'testStart',
-            'suite' => $this->currentTestSuiteName,
-            'test'  => $this->currentTestName
-            )
-        );
-    }
-
-    /**
-     * A test ended.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param float                  $time
-     */
-    public function endTest(PHPUnit_Framework_Test $test, $time)
-    {
-        if ($this->currentTestPass) {
-            $this->writeCase('pass', $time, array(), '', $test);
-        }
-    }
-
-    /**
-     * @param string                          $status
-     * @param float                           $time
-     * @param array                           $trace
-     * @param string                          $message
-     * @param PHPUnit_Framework_TestCase|null $test
-     */
-    protected function writeCase($status, $time, array $trace = array(), $message = '', $test = null)
-    {
-        $output = '';
-        // take care of TestSuite producing error (e.g. by running into exception) as TestSuite doesn't have hasOutput
-        if ($test !== null && method_exists($test, 'hasOutput') && $test->hasOutput()) {
-            $output = $test->getActualOutput();
-        }
-        $this->write(
-            array(
-            'event'   => 'test',
-            'suite'   => $this->currentTestSuiteName,
-            'test'    => $this->currentTestName,
-            'status'  => $status,
-            'time'    => $time,
-            'trace'   => $trace,
-            'message' => PHPUnit_Util_String::convertToUtf8($message),
-            'output'  => $output,
-            )
-        );
-    }
-
-    /**
-     * @param string $buffer
-     */
-    public function write($buffer)
-    {
-        array_walk_recursive($buffer, function (&$input) {
-            if (is_string($input)) {
-                $input = PHPUnit_Util_String::convertToUtf8($input);
-            }
-        });
-
-        $flags = 0;
-
-        if (defined('JSON_PRETTY_PRINT')) {
-            $flags |= JSON_PRETTY_PRINT;
-        }
-
-        parent::write(json_encode($buffer, $flags));
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Log/JUnit.php b/vendor/phpunit/phpunit/src/Util/Log/JUnit.php
deleted file mode 100644
index 745be7d..0000000
--- a/vendor/phpunit/phpunit/src/Util/Log/JUnit.php
+++ /dev/null
@@ -1,448 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A TestListener that generates a logfile of the test execution in XML markup.
- *
- * The XML markup used is the same as the one that is used by the JUnit Ant task.
- *
- * @since Class available since Release 2.1.0
- */
-class PHPUnit_Util_Log_JUnit extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener
-{
-    /**
-     * @var DOMDocument
-     */
-    protected $document;
-
-    /**
-     * @var DOMElement
-     */
-    protected $root;
-
-    /**
-     * @var bool
-     */
-    protected $logIncompleteSkipped = false;
-
-    /**
-     * @var bool
-     */
-    protected $writeDocument = true;
-
-    /**
-     * @var DOMElement[]
-     */
-    protected $testSuites = array();
-
-    /**
-     * @var integer[]
-     */
-    protected $testSuiteTests = array(0);
-
-    /**
-     * @var integer[]
-     */
-    protected $testSuiteAssertions = array(0);
-
-    /**
-     * @var integer[]
-     */
-    protected $testSuiteErrors = array(0);
-
-    /**
-     * @var integer[]
-     */
-    protected $testSuiteFailures = array(0);
-
-    /**
-     * @var integer[]
-     */
-    protected $testSuiteTimes = array(0);
-
-    /**
-     * @var int
-     */
-    protected $testSuiteLevel = 0;
-
-    /**
-     * @var DOMElement
-     */
-    protected $currentTestCase = null;
-
-    /**
-     * @var bool
-     */
-    protected $attachCurrentTestCase = true;
-
-    /**
-     * Constructor.
-     *
-     * @param mixed $out
-     * @param bool  $logIncompleteSkipped
-     */
-    public function __construct($out = null, $logIncompleteSkipped = false)
-    {
-        $this->document               = new DOMDocument('1.0', 'UTF-8');
-        $this->document->formatOutput = true;
-
-        $this->root = $this->document->createElement('testsuites');
-        $this->document->appendChild($this->root);
-
-        parent::__construct($out);
-
-        $this->logIncompleteSkipped = $logIncompleteSkipped;
-    }
-
-    /**
-     * Flush buffer and close output.
-     */
-    public function flush()
-    {
-        if ($this->writeDocument === true) {
-            $this->write($this->getXML());
-        }
-
-        parent::flush();
-    }
-
-    /**
-     * An error occurred.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        if ($this->currentTestCase === null) {
-            return;
-        }
-
-        if ($test instanceof PHPUnit_Framework_SelfDescribing) {
-            $buffer = $test->toString() . "\n";
-        } else {
-            $buffer = '';
-        }
-
-        $buffer .= PHPUnit_Framework_TestFailure::exceptionToString($e) .
-                   "\n" .
-                   PHPUnit_Util_Filter::getFilteredStacktrace($e);
-
-        $error = $this->document->createElement(
-            'error',
-            PHPUnit_Util_XML::prepareString($buffer)
-        );
-
-        $error->setAttribute('type', get_class($e));
-
-        $this->currentTestCase->appendChild($error);
-
-        $this->testSuiteErrors[$this->testSuiteLevel]++;
-    }
-
-    /**
-     * A failure occurred.
-     *
-     * @param PHPUnit_Framework_Test                 $test
-     * @param PHPUnit_Framework_AssertionFailedError $e
-     * @param float                                  $time
-     */
-    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
-    {
-        if ($this->currentTestCase === null) {
-            return;
-        }
-
-        if ($test instanceof PHPUnit_Framework_SelfDescribing) {
-            $buffer = $test->toString() . "\n";
-        } else {
-            $buffer = '';
-        }
-
-        $buffer .= PHPUnit_Framework_TestFailure::exceptionToString($e) .
-                   "\n" .
-                   PHPUnit_Util_Filter::getFilteredStacktrace($e);
-
-        $failure = $this->document->createElement(
-            'failure',
-            PHPUnit_Util_XML::prepareString($buffer)
-        );
-
-        $failure->setAttribute('type', get_class($e));
-
-        $this->currentTestCase->appendChild($failure);
-
-        $this->testSuiteFailures[$this->testSuiteLevel]++;
-    }
-
-    /**
-     * Incomplete test.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        if ($this->logIncompleteSkipped && $this->currentTestCase !== null) {
-            $error = $this->document->createElement(
-                'error',
-                PHPUnit_Util_XML::prepareString(
-                    "Incomplete Test\n" .
-                    PHPUnit_Util_Filter::getFilteredStacktrace($e)
-                )
-            );
-
-            $error->setAttribute('type', get_class($e));
-
-            $this->currentTestCase->appendChild($error);
-
-            $this->testSuiteErrors[$this->testSuiteLevel]++;
-        } else {
-            $this->attachCurrentTestCase = false;
-        }
-    }
-
-    /**
-     * Risky test.
-     *
-     * @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)
-    {
-        if ($this->logIncompleteSkipped && $this->currentTestCase !== null) {
-            $error = $this->document->createElement(
-                'error',
-                PHPUnit_Util_XML::prepareString(
-                    "Risky Test\n" .
-                    PHPUnit_Util_Filter::getFilteredStacktrace($e)
-                )
-            );
-
-            $error->setAttribute('type', get_class($e));
-
-            $this->currentTestCase->appendChild($error);
-
-            $this->testSuiteErrors[$this->testSuiteLevel]++;
-        } else {
-            $this->attachCurrentTestCase = false;
-        }
-    }
-
-    /**
-     * Skipped test.
-     *
-     * @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)
-    {
-        if ($this->logIncompleteSkipped && $this->currentTestCase !== null) {
-            $error = $this->document->createElement(
-                'error',
-                PHPUnit_Util_XML::prepareString(
-                    "Skipped Test\n" .
-                    PHPUnit_Util_Filter::getFilteredStacktrace($e)
-                )
-            );
-
-            $error->setAttribute('type', get_class($e));
-
-            $this->currentTestCase->appendChild($error);
-
-            $this->testSuiteErrors[$this->testSuiteLevel]++;
-        } else {
-            $this->attachCurrentTestCase = false;
-        }
-    }
-
-    /**
-     * A testsuite started.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     * @since  Method available since Release 2.2.0
-     */
-    public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
-    {
-        $testSuite = $this->document->createElement('testsuite');
-        $testSuite->setAttribute('name', $suite->getName());
-
-        if (class_exists($suite->getName(), false)) {
-            try {
-                $class = new ReflectionClass($suite->getName());
-
-                $testSuite->setAttribute('file', $class->getFileName());
-            } catch (ReflectionException $e) {
-            }
-        }
-
-        if ($this->testSuiteLevel > 0) {
-            $this->testSuites[$this->testSuiteLevel]->appendChild($testSuite);
-        } else {
-            $this->root->appendChild($testSuite);
-        }
-
-        $this->testSuiteLevel++;
-        $this->testSuites[$this->testSuiteLevel]          = $testSuite;
-        $this->testSuiteTests[$this->testSuiteLevel]      = 0;
-        $this->testSuiteAssertions[$this->testSuiteLevel] = 0;
-        $this->testSuiteErrors[$this->testSuiteLevel]     = 0;
-        $this->testSuiteFailures[$this->testSuiteLevel]   = 0;
-        $this->testSuiteTimes[$this->testSuiteLevel]      = 0;
-    }
-
-    /**
-     * A testsuite ended.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     * @since  Method available since Release 2.2.0
-     */
-    public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
-    {
-        $this->testSuites[$this->testSuiteLevel]->setAttribute(
-            'tests',
-            $this->testSuiteTests[$this->testSuiteLevel]
-        );
-
-        $this->testSuites[$this->testSuiteLevel]->setAttribute(
-            'assertions',
-            $this->testSuiteAssertions[$this->testSuiteLevel]
-        );
-
-        $this->testSuites[$this->testSuiteLevel]->setAttribute(
-            'failures',
-            $this->testSuiteFailures[$this->testSuiteLevel]
-        );
-
-        $this->testSuites[$this->testSuiteLevel]->setAttribute(
-            'errors',
-            $this->testSuiteErrors[$this->testSuiteLevel]
-        );
-
-        $this->testSuites[$this->testSuiteLevel]->setAttribute(
-            'time',
-            sprintf('%F', $this->testSuiteTimes[$this->testSuiteLevel])
-        );
-
-        if ($this->testSuiteLevel > 1) {
-            $this->testSuiteTests[$this->testSuiteLevel - 1]      += $this->testSuiteTests[$this->testSuiteLevel];
-            $this->testSuiteAssertions[$this->testSuiteLevel - 1] += $this->testSuiteAssertions[$this->testSuiteLevel];
-            $this->testSuiteErrors[$this->testSuiteLevel - 1]     += $this->testSuiteErrors[$this->testSuiteLevel];
-            $this->testSuiteFailures[$this->testSuiteLevel - 1]   += $this->testSuiteFailures[$this->testSuiteLevel];
-            $this->testSuiteTimes[$this->testSuiteLevel - 1]      += $this->testSuiteTimes[$this->testSuiteLevel];
-        }
-
-        $this->testSuiteLevel--;
-    }
-
-    /**
-     * A test started.
-     *
-     * @param PHPUnit_Framework_Test $test
-     */
-    public function startTest(PHPUnit_Framework_Test $test)
-    {
-        $testCase = $this->document->createElement('testcase');
-        $testCase->setAttribute('name', $test->getName());
-
-        if ($test instanceof PHPUnit_Framework_TestCase) {
-            $class      = new ReflectionClass($test);
-            $methodName = $test->getName();
-
-            if ($class->hasMethod($methodName)) {
-                $method = $class->getMethod($test->getName());
-
-                $testCase->setAttribute('class', $class->getName());
-                $testCase->setAttribute('file', $class->getFileName());
-                $testCase->setAttribute('line', $method->getStartLine());
-            }
-        }
-
-        $this->currentTestCase = $testCase;
-    }
-
-    /**
-     * A test ended.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param float                  $time
-     */
-    public function endTest(PHPUnit_Framework_Test $test, $time)
-    {
-        if ($this->attachCurrentTestCase) {
-            if ($test instanceof PHPUnit_Framework_TestCase) {
-                $numAssertions = $test->getNumAssertions();
-                $this->testSuiteAssertions[$this->testSuiteLevel] += $numAssertions;
-
-                $this->currentTestCase->setAttribute(
-                    'assertions',
-                    $numAssertions
-                );
-            }
-
-            $this->currentTestCase->setAttribute(
-                'time',
-                sprintf('%F', $time)
-            );
-
-            $this->testSuites[$this->testSuiteLevel]->appendChild(
-                $this->currentTestCase
-            );
-
-            $this->testSuiteTests[$this->testSuiteLevel]++;
-            $this->testSuiteTimes[$this->testSuiteLevel] += $time;
-
-            if (method_exists($test, 'hasOutput') && $test->hasOutput()) {
-                $systemOut = $this->document->createElement('system-out');
-                $systemOut->appendChild(
-                    $this->document->createTextNode($test->getActualOutput())
-                );
-                $this->currentTestCase->appendChild($systemOut);
-            }
-        }
-
-        $this->attachCurrentTestCase = true;
-        $this->currentTestCase       = null;
-    }
-
-    /**
-     * Returns the XML as a string.
-     *
-     * @return string
-     * @since  Method available since Release 2.2.0
-     */
-    public function getXML()
-    {
-        return $this->document->saveXML();
-    }
-
-    /**
-     * Enables or disables the writing of the document
-     * in flush().
-     *
-     * This is a "hack" needed for the integration of
-     * PHPUnit with Phing.
-     *
-     * @return string
-     * @since  Method available since Release 2.2.0
-     */
-    public function setWriteDocument($flag)
-    {
-        if (is_bool($flag)) {
-            $this->writeDocument = $flag;
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Log/TAP.php b/vendor/phpunit/phpunit/src/Util/Log/TAP.php
deleted file mode 100644
index 2067bec..0000000
--- a/vendor/phpunit/phpunit/src/Util/Log/TAP.php
+++ /dev/null
@@ -1,253 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * A TestListener that generates a logfile of the
- * test execution using the Test Anything Protocol (TAP).
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Util_Log_TAP extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener
-{
-    /**
-     * @var int
-     */
-    protected $testNumber = 0;
-
-    /**
-     * @var int
-     */
-    protected $testSuiteLevel = 0;
-
-    /**
-     * @var bool
-     */
-    protected $testSuccessful = true;
-
-    /**
-     * Constructor.
-     *
-     * @param  mixed                       $out
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.3.4
-     */
-    public function __construct($out = null)
-    {
-        parent::__construct($out);
-        $this->write("TAP version 13\n");
-    }
-
-    /**
-     * An error occurred.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        $this->writeNotOk($test, 'Error');
-    }
-
-    /**
-     * A failure occurred.
-     *
-     * @param PHPUnit_Framework_Test                 $test
-     * @param PHPUnit_Framework_AssertionFailedError $e
-     * @param float                                  $time
-     */
-    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
-    {
-        $this->writeNotOk($test, 'Failure');
-
-        $message = explode(
-            "\n",
-            PHPUnit_Framework_TestFailure::exceptionToString($e)
-        );
-
-        $diagnostic = array(
-          'message'  => $message[0],
-          'severity' => 'fail'
-        );
-
-        if ($e instanceof PHPUnit_Framework_ExpectationFailedException) {
-            $cf = $e->getComparisonFailure();
-
-            if ($cf !== null) {
-                $diagnostic['data'] = array(
-                  'got'      => $cf->getActual(),
-                  'expected' => $cf->getExpected()
-                );
-            }
-        }
-
-        $yaml = new Symfony\Component\Yaml\Dumper;
-
-        $this->write(
-            sprintf(
-                "  ---\n%s  ...\n",
-                $yaml->dump($diagnostic, 2, 2)
-            )
-        );
-    }
-
-    /**
-     * Incomplete test.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        $this->writeNotOk($test, '', 'TODO Incomplete Test');
-    }
-
-    /**
-     * Risky test.
-     *
-     * @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)
-    {
-        $this->write(
-            sprintf(
-                "ok %d - # RISKY%s\n",
-                $this->testNumber,
-                $e->getMessage() != '' ? ' ' . $e->getMessage() : ''
-            )
-        );
-
-        $this->testSuccessful = false;
-    }
-
-    /**
-     * Skipped test.
-     *
-     * @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)
-    {
-        $this->write(
-            sprintf(
-                "ok %d - # SKIP%s\n",
-                $this->testNumber,
-                $e->getMessage() != '' ? ' ' . $e->getMessage() : ''
-            )
-        );
-
-        $this->testSuccessful = false;
-    }
-
-    /**
-     * A testsuite started.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     */
-    public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
-    {
-        $this->testSuiteLevel++;
-    }
-
-    /**
-     * A testsuite ended.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     */
-    public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
-    {
-        $this->testSuiteLevel--;
-
-        if ($this->testSuiteLevel == 0) {
-            $this->write(sprintf("1..%d\n", $this->testNumber));
-        }
-    }
-
-    /**
-     * A test started.
-     *
-     * @param PHPUnit_Framework_Test $test
-     */
-    public function startTest(PHPUnit_Framework_Test $test)
-    {
-        $this->testNumber++;
-        $this->testSuccessful = true;
-    }
-
-    /**
-     * A test ended.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param float                  $time
-     */
-    public function endTest(PHPUnit_Framework_Test $test, $time)
-    {
-        if ($this->testSuccessful === true) {
-            $this->write(
-                sprintf(
-                    "ok %d - %s\n",
-                    $this->testNumber,
-                    PHPUnit_Util_Test::describe($test)
-                )
-            );
-        }
-
-        $this->writeDiagnostics($test);
-    }
-
-    /**
-     * @param PHPUnit_Framework_Test $test
-     * @param string                 $prefix
-     * @param string                 $directive
-     */
-    protected function writeNotOk(PHPUnit_Framework_Test $test, $prefix = '', $directive = '')
-    {
-        $this->write(
-            sprintf(
-                "not ok %d - %s%s%s\n",
-                $this->testNumber,
-                $prefix != '' ? $prefix . ': ' : '',
-                PHPUnit_Util_Test::describe($test),
-                $directive != '' ? ' # ' . $directive : ''
-            )
-        );
-
-        $this->testSuccessful = false;
-    }
-
-    /**
-     * @param PHPUnit_Framework_Test $test
-     */
-    private function writeDiagnostics(PHPUnit_Framework_Test $test)
-    {
-        if (!$test instanceof PHPUnit_Framework_TestCase) {
-            return;
-        }
-
-        if (!$test->hasOutput()) {
-            return;
-        }
-
-        foreach (explode("\n", trim($test->getActualOutput())) as $line) {
-            $this->write(
-                sprintf(
-                    "# %s\n",
-                    $line
-                )
-            );
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/PHP.php b/vendor/phpunit/phpunit/src/Util/PHP.php
deleted file mode 100644
index 0439b3e..0000000
--- a/vendor/phpunit/phpunit/src/Util/PHP.php
+++ /dev/null
@@ -1,218 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Utility methods for PHP sub-processes.
- *
- * @since Class available since Release 3.4.0
- */
-abstract class PHPUnit_Util_PHP
-{
-    /**
-     * @return PHPUnit_Util_PHP
-     * @since  Method available since Release 3.5.12
-     */
-    public static function factory()
-    {
-        if (DIRECTORY_SEPARATOR == '\\') {
-            return new PHPUnit_Util_PHP_Windows;
-        }
-
-        return new PHPUnit_Util_PHP_Default;
-    }
-
-    /**
-     * Runs a single test in a separate PHP process.
-     *
-     * @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)
-    {
-        $result->startTest($test);
-
-        $_result = $this->runJob($job);
-
-        $this->processChildResult(
-            $test,
-            $result,
-            $_result['stdout'],
-            $_result['stderr']
-        );
-    }
-
-    /**
-     * Runs a single job (PHP code) using a separate PHP process.
-     *
-     * @param  string                      $job
-     * @param  array                       $settings
-     * @return array
-     * @throws PHPUnit_Framework_Exception
-     */
-    abstract public function runJob($job, array $settings = array());
-
-    /**
-     * @param  array  $settings
-     * @return string
-     * @since Method available since Release 4.0.0
-     */
-    protected function settingsToParameters(array $settings)
-    {
-        $buffer = '';
-
-        foreach ($settings as $setting) {
-            $buffer .= ' -d ' . $setting;
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * Processes the TestResult object from an isolated process.
-     *
-     * @param PHPUnit_Framework_Test       $test
-     * @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)
-    {
-        $time = 0;
-
-        if (!empty($stderr)) {
-            $result->addError(
-                $test,
-                new PHPUnit_Framework_Exception(trim($stderr)),
-                $time
-            );
-        } else {
-            set_error_handler(function ($errno, $errstr, $errfile, $errline) {
-                throw new ErrorException($errstr, $errno, $errno, $errfile, $errline);
-            });
-            try {
-                if (strpos($stdout, "#!/usr/bin/env php\n") === 0) {
-                    $stdout = substr($stdout, 19);
-                }
-
-                $childResult = unserialize(str_replace("#!/usr/bin/env php\n", '', $stdout));
-                restore_error_handler();
-            } catch (ErrorException $e) {
-                restore_error_handler();
-                $childResult = false;
-
-                $result->addError(
-                    $test,
-                    new PHPUnit_Framework_Exception(trim($stdout), 0, $e),
-                    $time
-                );
-            }
-
-            if ($childResult !== false) {
-                if (!empty($childResult['output'])) {
-                    $output = $childResult['output'];
-                }
-
-                $test->setResult($childResult['testResult']);
-                $test->addToAssertionCount($childResult['numAssertions']);
-
-                $childResult = $childResult['result'];
-
-                if ($result->getCollectCodeCoverageInformation()) {
-                    $result->getCodeCoverage()->merge(
-                        $childResult->getCodeCoverage()
-                    );
-                }
-
-                $time           = $childResult->time();
-                $notImplemented = $childResult->notImplemented();
-                $risky          = $childResult->risky();
-                $skipped        = $childResult->skipped();
-                $errors         = $childResult->errors();
-                $failures       = $childResult->failures();
-
-                if (!empty($notImplemented)) {
-                    $result->addError(
-                        $test,
-                        $this->getException($notImplemented[0]),
-                        $time
-                    );
-                } elseif (!empty($risky)) {
-                    $result->addError(
-                        $test,
-                        $this->getException($risky[0]),
-                        $time
-                    );
-                } elseif (!empty($skipped)) {
-                    $result->addError(
-                        $test,
-                        $this->getException($skipped[0]),
-                        $time
-                    );
-                } elseif (!empty($errors)) {
-                    $result->addError(
-                        $test,
-                        $this->getException($errors[0]),
-                        $time
-                    );
-                } elseif (!empty($failures)) {
-                    $result->addFailure(
-                        $test,
-                        $this->getException($failures[0]),
-                        $time
-                    );
-                }
-            }
-        }
-
-        $result->endTest($test, $time);
-
-        if (!empty($output)) {
-            print $output;
-        }
-    }
-
-    /**
-     * Gets the thrown exception from a PHPUnit_Framework_TestFailure.
-     *
-     * @param  PHPUnit_Framework_TestFailure $error
-     * @return Exception
-     * @since  Method available since Release 3.6.0
-     * @see    https://github.com/sebastianbergmann/phpunit/issues/74
-     */
-    private function getException(PHPUnit_Framework_TestFailure $error)
-    {
-        $exception = $error->thrownException();
-
-        if ($exception instanceof __PHP_Incomplete_Class) {
-            $exceptionArray = array();
-            foreach ((array) $exception as $key => $value) {
-                $key                  = substr($key, strrpos($key, "\0") + 1);
-                $exceptionArray[$key] = $value;
-            }
-
-            $exception = new PHPUnit_Framework_SyntheticError(
-                sprintf(
-                    '%s: %s',
-                    $exceptionArray['_PHP_Incomplete_Class_Name'],
-                    $exceptionArray['message']
-                ),
-                $exceptionArray['code'],
-                $exceptionArray['file'],
-                $exceptionArray['line'],
-                $exceptionArray['trace']
-            );
-        }
-
-        return $exception;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Default.php b/vendor/phpunit/phpunit/src/Util/PHP/Default.php
deleted file mode 100644
index b8da4c8..0000000
--- a/vendor/phpunit/phpunit/src/Util/PHP/Default.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-use SebastianBergmann\Environment\Runtime;
-
-/**
- * Default utility for PHP sub-processes.
- *
- * @since Class available since Release 3.5.12
- */
-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
-     * @return array
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function runJob($job, array $settings = array())
-    {
-        $runtime = new Runtime;
-
-        $process = proc_open(
-            $runtime->getBinary() . $this->settingsToParameters($settings),
-            array(
-            0 => array('pipe', 'r'),
-            1 => array('pipe', 'w'),
-            2 => array('pipe', 'w')
-            ),
-            $pipes
-        );
-
-        if (!is_resource($process)) {
-            throw new PHPUnit_Framework_Exception(
-                'Unable to spawn worker process'
-            );
-        }
-
-        $this->process($pipes[0], $job);
-        fclose($pipes[0]);
-
-        $stdout = stream_get_contents($pipes[1]);
-        fclose($pipes[1]);
-
-        $stderr = stream_get_contents($pipes[2]);
-        fclose($pipes[2]);
-
-        proc_close($process);
-        $this->cleanup();
-
-        return array('stdout' => $stdout, 'stderr' => $stderr);
-    }
-
-    /**
-     * @param  resource                    $pipe
-     * @param  string                      $job
-     * @throws PHPUnit_Framework_Exception
-     * @since Method available since Release 3.5.12
-     */
-    protected function process($pipe, $job)
-    {
-        fwrite($pipe, $job);
-    }
-
-    /**
-     * @since Method available since Release 3.5.12
-     */
-    protected function cleanup()
-    {
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl.dist b/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl.dist
deleted file mode 100644
index e595099..0000000
--- a/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl.dist
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-if (!defined('STDOUT')) {
-    // php://stdout does not obey output buffering. Any output would break
-    // unserialization of child process results in the parent process.
-    define('STDOUT', fopen('php://temp', 'w+b'));
-    define('STDERR', fopen('php://stderr', 'wb'));
-}
-
-{iniSettings}
-ini_set('display_errors', 'stderr');
-set_include_path('{include_path}');
-
-$composerAutoload = {composerAutoload};
-$phar             = {phar};
-
-ob_start();
-
-if ($composerAutoload) {
-    require_once $composerAutoload;
-    define('PHPUNIT_COMPOSER_INSTALL', $composerAutoload);
-} else if ($phar) {
-    require $phar;
-}
-
-function __phpunit_run_isolated_test()
-{
-    if (!class_exists('{className}')) {
-        require_once '{filename}';
-    }
-
-    $result = new PHPUnit_Framework_TestResult;
-
-    if ({collectCodeCoverageInformation}) {
-        $result->setCodeCoverage(
-            new PHP_CodeCoverage(
-                null,
-                unserialize('{codeCoverageFilter}')
-            )
-        );
-    }
-
-    $result->beStrictAboutTestsThatDoNotTestAnything({isStrictAboutTestsThatDoNotTestAnything});
-    $result->beStrictAboutOutputDuringTests({isStrictAboutOutputDuringTests});
-    $result->beStrictAboutTestSize({isStrictAboutTestSize});
-    $result->beStrictAboutTodoAnnotatedTests({isStrictAboutTodoAnnotatedTests});
-
-    $test = new {className}('{methodName}', unserialize('{data}'), '{dataName}');
-    $test->setDependencyInput(unserialize('{dependencyInput}'));
-    $test->setInIsolation(TRUE);
-
-    ob_end_clean();
-    $test->run($result);
-    $output = '';
-    if (!$test->hasExpectationOnOutput()) {
-        $output = $test->getActualOutput();
-    }
-
-    rewind(STDOUT);
-    if ($stdout = stream_get_contents(STDOUT)) {
-        $output = $stdout . $output;
-    }
-
-    print serialize(
-      array(
-        'testResult'    => $test->getResult(),
-        'numAssertions' => $test->getNumAssertions(),
-        'result'        => $result,
-        'output'        => $output
-      )
-    );
-}
-
-$configurationFilePath = '{configurationFilePath}';
-
-if ('' !== $configurationFilePath) {
-    $configuration = PHPUnit_Util_Configuration::getInstance($configurationFilePath);
-    $configuration->handlePHPConfiguration();
-}
-
-{constants}
-{included_files}
-{globals}
-
-if (isset($GLOBALS['__PHPUNIT_BOOTSTRAP'])) {
-    require_once $GLOBALS['__PHPUNIT_BOOTSTRAP'];
-    unset($GLOBALS['__PHPUNIT_BOOTSTRAP']);
-}
-
-__phpunit_run_isolated_test();
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Windows.php b/vendor/phpunit/phpunit/src/Util/PHP/Windows.php
deleted file mode 100644
index 3b1f34a..0000000
--- a/vendor/phpunit/phpunit/src/Util/PHP/Windows.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-use SebastianBergmann\Environment\Runtime;
-
-/**
- * Windows utility for PHP sub-processes.
- *
- * @since Class available since Release 3.5.12
- */
-class PHPUnit_Util_PHP_Windows extends PHPUnit_Util_PHP_Default
-{
-    /**
-     * @var string
-     */
-    private $tempFile;
-
-    /**
-     * {@inheritdoc}
-     *
-     * Reading from STDOUT or STDERR hangs forever on Windows if the output is
-     * too large.
-     *
-     * @see https://bugs.php.net/bug.php?id=51800
-     */
-    public function runJob($job, array $settings = array())
-    {
-        $runtime = new Runtime;
-
-        if (false === $stdout_handle = tmpfile()) {
-            throw new PHPUnit_Framework_Exception(
-                'A temporary file could not be created; verify that your TEMP environment variable is writable'
-            );
-        }
-
-        $process = proc_open(
-            $runtime->getBinary() . $this->settingsToParameters($settings),
-            array(
-            0 => array('pipe', 'r'),
-            1 => $stdout_handle,
-            2 => array('pipe', 'w')
-            ),
-            $pipes
-        );
-
-        if (!is_resource($process)) {
-            throw new PHPUnit_Framework_Exception(
-                'Unable to spawn worker process'
-            );
-        }
-
-        $this->process($pipes[0], $job);
-        fclose($pipes[0]);
-
-        $stderr = stream_get_contents($pipes[2]);
-        fclose($pipes[2]);
-
-        proc_close($process);
-
-        rewind($stdout_handle);
-        $stdout = stream_get_contents($stdout_handle);
-        fclose($stdout_handle);
-
-        $this->cleanup();
-
-        return array('stdout' => $stdout, 'stderr' => $stderr);
-    }
-
-    /**
-     * @param  resource                    $pipe
-     * @param  string                      $job
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.5.12
-     */
-    protected function process($pipe, $job)
-    {
-        if (!($this->tempFile = tempnam(sys_get_temp_dir(), 'PHPUnit')) ||
-            file_put_contents($this->tempFile, $job) === false) {
-            throw new PHPUnit_Framework_Exception(
-                'Unable to write temporary file'
-            );
-        }
-
-        fwrite(
-            $pipe,
-            '<?php require_once ' . var_export($this->tempFile, true) .  '; ?>'
-        );
-    }
-
-    /**
-     * @since Method available since Release 3.5.12
-     */
-    protected function cleanup()
-    {
-        unlink($this->tempFile);
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Printer.php b/vendor/phpunit/phpunit/src/Util/Printer.php
deleted file mode 100644
index 5db309e..0000000
--- a/vendor/phpunit/phpunit/src/Util/Printer.php
+++ /dev/null
@@ -1,169 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Utility class that can print to STDOUT or write to a file.
- *
- * @since Class available since Release 2.0.0
- */
-class PHPUnit_Util_Printer
-{
-    /**
-     * If true, flush output after every write.
-     *
-     * @var bool
-     */
-    protected $autoFlush = false;
-
-    /**
-     * @var resource
-     */
-    protected $out;
-
-    /**
-     * @var string
-     */
-    protected $outTarget;
-
-    /**
-     * @var bool
-     */
-    protected $printsHTML = false;
-
-    /**
-     * Constructor.
-     *
-     * @param  mixed                       $out
-     * @throws PHPUnit_Framework_Exception
-     */
-    public function __construct($out = null)
-    {
-        if ($out !== null) {
-            if (is_string($out)) {
-                if (strpos($out, 'socket://') === 0) {
-                    $out = explode(':', str_replace('socket://', '', $out));
-
-                    if (sizeof($out) != 2) {
-                        throw new PHPUnit_Framework_Exception;
-                    }
-
-                    $this->out = fsockopen($out[0], $out[1]);
-                } else {
-                    if (strpos($out, 'php://') === false &&
-                        !is_dir(dirname($out))) {
-                        mkdir(dirname($out), 0777, true);
-                    }
-
-                    $this->out = fopen($out, 'wt');
-                }
-
-                $this->outTarget = $out;
-            } else {
-                $this->out = $out;
-            }
-        }
-    }
-
-    /**
-     * Flush buffer, optionally tidy up HTML, and close output if it's not to a php stream
-     */
-    public function flush()
-    {
-        if ($this->out && strncmp($this->outTarget, 'php://', 6) !== 0) {
-            fclose($this->out);
-        }
-
-        if ($this->printsHTML === true &&
-            $this->outTarget !== null &&
-            strpos($this->outTarget, 'php://') !== 0 &&
-            strpos($this->outTarget, 'socket://') !== 0 &&
-            extension_loaded('tidy')) {
-            file_put_contents(
-                $this->outTarget,
-                tidy_repair_file(
-                    $this->outTarget,
-                    array('indent' => true, 'wrap' => 0),
-                    'utf8'
-                )
-            );
-        }
-    }
-
-    /**
-     * Performs a safe, incremental flush.
-     *
-     * Do not confuse this function with the flush() function of this class,
-     * since the flush() function may close the file being written to, rendering
-     * the current object no longer usable.
-     *
-     * @since  Method available since Release 3.3.0
-     */
-    public function incrementalFlush()
-    {
-        if ($this->out) {
-            fflush($this->out);
-        } else {
-            flush();
-        }
-    }
-
-    /**
-     * @param string $buffer
-     */
-    public function write($buffer)
-    {
-        if ($this->out) {
-            fwrite($this->out, $buffer);
-
-            if ($this->autoFlush) {
-                $this->incrementalFlush();
-            }
-        } else {
-            if (PHP_SAPI != 'cli') {
-                $buffer = htmlspecialchars($buffer);
-            }
-
-            print $buffer;
-
-            if ($this->autoFlush) {
-                $this->incrementalFlush();
-            }
-        }
-    }
-
-    /**
-     * Check auto-flush mode.
-     *
-     * @return bool
-     * @since  Method available since Release 3.3.0
-     */
-    public function getAutoFlush()
-    {
-        return $this->autoFlush;
-    }
-
-    /**
-     * Set auto-flushing mode.
-     *
-     * If set, *incremental* flushes will be done after each write. This should
-     * 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)
-    {
-        if (is_bool($autoFlush)) {
-            $this->autoFlush = $autoFlush;
-        } else {
-            throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
-        }
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Regex.php b/vendor/phpunit/phpunit/src/Util/Regex.php
deleted file mode 100644
index 3624de1..0000000
--- a/vendor/phpunit/phpunit/src/Util/Regex.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Error handler that converts PHP errors and warnings to exceptions.
- *
- * @since Class available since Release 4.2.0
- */
-class PHPUnit_Util_Regex
-{
-    public static function pregMatchSafe($pattern, $subject, $matches = null, $flags = 0, $offset = 0)
-    {
-        $handler_terminator = PHPUnit_Util_ErrorHandler::handleErrorOnce(E_WARNING);
-        $match              = preg_match($pattern, $subject, $matches, $flags, $offset);
-        $handler_terminator(); // cleaning
-
-        return $match;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/String.php b/vendor/phpunit/phpunit/src/Util/String.php
deleted file mode 100644
index ed952ab..0000000
--- a/vendor/phpunit/phpunit/src/Util/String.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * String helpers.
- *
- * @since Class available since Release 3.6.0
- */
-class PHPUnit_Util_String
-{
-    /**
-     * Converts a string to UTF-8 encoding.
-     *
-     * @param  string $string
-     * @return string
-     */
-    public static function convertToUtf8($string)
-    {
-        if (!self::isUtf8($string)) {
-            if (function_exists('mb_convert_encoding')) {
-                $string = mb_convert_encoding($string, 'UTF-8');
-            } else {
-                $string = utf8_encode($string);
-            }
-        }
-
-        return $string;
-    }
-
-    /**
-     * Checks a string for UTF-8 encoding.
-     *
-     * @param  string $string
-     * @return bool
-     */
-    protected static function isUtf8($string)
-    {
-        $length = strlen($string);
-
-        for ($i = 0; $i < $length; $i++) {
-            if (ord($string[$i]) < 0x80) {
-                $n = 0;
-            } elseif ((ord($string[$i]) & 0xE0) == 0xC0) {
-                $n = 1;
-            } elseif ((ord($string[$i]) & 0xF0) == 0xE0) {
-                $n = 2;
-            } elseif ((ord($string[$i]) & 0xF0) == 0xF0) {
-                $n = 3;
-            } else {
-                return false;
-            }
-
-            for ($j = 0; $j < $n; $j++) {
-                if ((++$i == $length) || ((ord($string[$i]) & 0xC0) != 0x80)) {
-                    return false;
-                }
-            }
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Test.php b/vendor/phpunit/phpunit/src/Util/Test.php
deleted file mode 100644
index 583bab9..0000000
--- a/vendor/phpunit/phpunit/src/Util/Test.php
+++ /dev/null
@@ -1,1023 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-if (!function_exists('trait_exists')) {
-    function trait_exists($traitname, $autoload = true)
-    {
-        return false;
-    }
-}
-
-/**
- * Test helpers.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Util_Test
-{
-    const REGEX_DATA_PROVIDER      = '/@dataProvider\s+([a-zA-Z0-9._:-\\\\x7f-\xff]+)/';
-    const REGEX_TEST_WITH          = '/@testWith\s+/';
-    const REGEX_EXPECTED_EXCEPTION = '(@expectedException\s+([:.\w\\\\x7f-\xff]+)(?:[\t ]+(\S*))?(?:[\t ]+(\S*))?\s*$)m';
-    const REGEX_REQUIRES_VERSION   = '/@requires\s+(?P<name>PHP(?:Unit)?)\s+(?P<value>[\d\.-]+(dev|(RC|alpha|beta)[\d\.])?)[ \t]*\r?$/m';
-    const REGEX_REQUIRES_OS        = '/@requires\s+OS\s+(?P<value>.+?)[ \t]*\r?$/m';
-    const REGEX_REQUIRES           = '/@requires\s+(?P<name>function|extension)\s+(?P<value>([^ ]+?))[ \t]*\r?$/m';
-
-    const UNKNOWN = -1;
-    const SMALL   = 0;
-    const MEDIUM  = 1;
-    const LARGE   = 2;
-
-    private static $annotationCache = array();
-
-    private static $hookMethods = array();
-
-    /**
-     * @param  PHPUnit_Framework_Test $test
-     * @param  bool                   $asString
-     * @return mixed
-     */
-    public static function describe(PHPUnit_Framework_Test $test, $asString = true)
-    {
-        if ($asString) {
-            if ($test instanceof PHPUnit_Framework_SelfDescribing) {
-                return $test->toString();
-            } else {
-                return get_class($test);
-            }
-        } else {
-            if ($test instanceof PHPUnit_Framework_TestCase) {
-                return array(
-                  get_class($test), $test->getName()
-                );
-            } elseif ($test instanceof PHPUnit_Framework_SelfDescribing) {
-                return array('', $test->toString());
-            } else {
-                return array('', get_class($test));
-            }
-        }
-    }
-
-    /**
-     * @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)
-    {
-        $annotations = self::parseTestMethodAnnotations(
-            $className,
-            $methodName
-        );
-
-        if (isset($annotations['class']['coversNothing']) || isset($annotations['method']['coversNothing'])) {
-            return false;
-        }
-
-        return self::getLinesToBeCoveredOrUsed($className, $methodName, 'covers');
-    }
-
-    /**
-     * Returns lines of code specified with the @uses annotation.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return array
-     * @since  Method available since Release 4.0.0
-     */
-    public static function getLinesToBeUsed($className, $methodName)
-    {
-        return self::getLinesToBeCoveredOrUsed($className, $methodName, 'uses');
-    }
-
-    /**
-     * @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)
-    {
-        $annotations = self::parseTestMethodAnnotations(
-            $className,
-            $methodName
-        );
-
-        $classShortcut = null;
-
-        if (!empty($annotations['class'][$mode . 'DefaultClass'])) {
-            if (count($annotations['class'][$mode . 'DefaultClass']) > 1) {
-                throw new PHPUnit_Framework_CodeCoverageException(
-                    sprintf(
-                        'More than one @%sClass annotation in class or interface "%s".',
-                        $mode,
-                        $className
-                    )
-                );
-            }
-
-            $classShortcut = $annotations['class'][$mode . 'DefaultClass'][0];
-        }
-
-        $list = array();
-
-        if (isset($annotations['class'][$mode])) {
-            $list = $annotations['class'][$mode];
-        }
-
-        if (isset($annotations['method'][$mode])) {
-            $list = array_merge($list, $annotations['method'][$mode]);
-        }
-
-        $codeList = array();
-
-        foreach (array_unique($list) as $element) {
-            if ($classShortcut && strncmp($element, '::', 2) === 0) {
-                $element = $classShortcut . $element;
-            }
-
-            $element = preg_replace('/[\s()]+$/', '', $element);
-            $element = explode(' ', $element);
-            $element = $element[0];
-
-            $codeList = array_merge(
-                $codeList,
-                self::resolveElementToReflectionObjects($element)
-            );
-        }
-
-        return self::resolveReflectionObjectsToLines($codeList);
-    }
-
-    /**
-     * Returns the requirements for a test.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return array
-     * @since  Method available since Release 3.6.0
-     */
-    public static function getRequirements($className, $methodName)
-    {
-        $reflector  = new ReflectionClass($className);
-        $docComment = $reflector->getDocComment();
-        $reflector  = new ReflectionMethod($className, $methodName);
-        $docComment .= "\n" . $reflector->getDocComment();
-        $requires   = array();
-
-        if ($count = preg_match_all(self::REGEX_REQUIRES_OS, $docComment, $matches)) {
-            $requires['OS'] = sprintf(
-                '/%s/i',
-                addcslashes($matches['value'][$count - 1], '/')
-            );
-        }
-        if ($count = preg_match_all(self::REGEX_REQUIRES_VERSION, $docComment, $matches)) {
-            for ($i = 0; $i < $count; $i++) {
-                $requires[$matches['name'][$i]] = $matches['value'][$i];
-            }
-        }
-
-        // https://bugs.php.net/bug.php?id=63055
-        $matches = array();
-
-        if ($count = preg_match_all(self::REGEX_REQUIRES, $docComment, $matches)) {
-            for ($i = 0; $i < $count; $i++) {
-                $name = $matches['name'][$i] . 's';
-                if (!isset($requires[$name])) {
-                    $requires[$name] = array();
-                }
-                $requires[$name][] = $matches['value'][$i];
-            }
-        }
-
-        return $requires;
-    }
-
-    /**
-     * Returns the missing requirements for a test.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return array
-     * @since  Method available since Release 4.3.0
-     */
-    public static function getMissingRequirements($className, $methodName)
-    {
-        $required = static::getRequirements($className, $methodName);
-        $missing  = array();
-
-        if (!empty($required['PHP']) && version_compare(PHP_VERSION, $required['PHP'], '<')) {
-            $missing[] = sprintf('PHP %s (or later) is required.', $required['PHP']);
-        }
-
-        if (!empty($required['PHPUnit'])) {
-            $phpunitVersion = PHPUnit_Runner_Version::id();
-            if (version_compare($phpunitVersion, $required['PHPUnit'], '<')) {
-                $missing[] = sprintf('PHPUnit %s (or later) is required.', $required['PHPUnit']);
-            }
-        }
-
-        if (!empty($required['OS']) && !preg_match($required['OS'], PHP_OS)) {
-            $missing[] = sprintf('Operating system matching %s is required.', $required['OS']);
-        }
-
-        if (!empty($required['functions'])) {
-            foreach ($required['functions'] as $function) {
-                $pieces = explode('::', $function);
-                if (2 === count($pieces) && method_exists($pieces[0], $pieces[1])) {
-                    continue;
-                }
-                if (function_exists($function)) {
-                    continue;
-                }
-                $missing[] = sprintf('Function %s is required.', $function);
-            }
-        }
-
-        if (!empty($required['extensions'])) {
-            foreach ($required['extensions'] as $extension) {
-                if (!extension_loaded($extension)) {
-                    $missing[] = sprintf('Extension %s is required.', $extension);
-                }
-            }
-        }
-
-        return $missing;
-    }
-
-    /**
-     * Returns the expected exception for a test.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return array
-     * @since  Method available since Release 3.3.6
-     */
-    public static function getExpectedException($className, $methodName)
-    {
-        $reflector  = new ReflectionMethod($className, $methodName);
-        $docComment = $reflector->getDocComment();
-        $docComment = substr($docComment, 3, -2);
-
-        if (preg_match(self::REGEX_EXPECTED_EXCEPTION, $docComment, $matches)) {
-            $annotations = self::parseTestMethodAnnotations(
-                $className,
-                $methodName
-            );
-
-            $class         = $matches[1];
-            $code          = null;
-            $message       = '';
-            $messageRegExp = '';
-
-            if (isset($matches[2])) {
-                $message = trim($matches[2]);
-            } elseif (isset($annotations['method']['expectedExceptionMessage'])) {
-                $message = self::parseAnnotationContent(
-                    $annotations['method']['expectedExceptionMessage'][0]
-                );
-            }
-
-            if (isset($annotations['method']['expectedExceptionMessageRegExp'])) {
-                $messageRegExp = self::parseAnnotationContent(
-                    $annotations['method']['expectedExceptionMessageRegExp'][0]
-                );
-            }
-
-            if (isset($matches[3])) {
-                $code = $matches[3];
-            } elseif (isset($annotations['method']['expectedExceptionCode'])) {
-                $code = self::parseAnnotationContent(
-                    $annotations['method']['expectedExceptionCode'][0]
-                );
-            }
-
-            if (is_numeric($code)) {
-                $code = (int) $code;
-            } elseif (is_string($code) && defined($code)) {
-                $code = (int) constant($code);
-            }
-
-            return array(
-              'class' => $class, 'code' => $code, 'message' => $message, 'message_regex' => $messageRegExp
-            );
-        }
-
-        return false;
-    }
-
-    /**
-     * Parse annotation content to use constant/class constant values
-     *
-     * Constants are specified using a starting '@'. For example: @ClassName::CONST_NAME
-     *
-     * If the constant is not found the string is used as is to ensure maximum BC.
-     *
-     * @param  string $message
-     * @return string
-     */
-    private static function parseAnnotationContent($message)
-    {
-        if (strpos($message, '::') !== false && count(explode('::', $message) == 2)) {
-            if (defined($message)) {
-                $message = constant($message);
-            }
-        }
-
-        return $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
-     * @throws PHPUnit_Framework_Exception
-     * @since  Method available since Release 3.2.0
-     */
-    public static function getProvidedData($className, $methodName)
-    {
-        $reflector  = new ReflectionMethod($className, $methodName);
-        $docComment = $reflector->getDocComment();
-        $data       = null;
-
-        if ($dataProviderData = self::getDataFromDataProviderAnnotation($docComment, $className, $methodName)) {
-            $data = $dataProviderData;
-        }
-
-        if ($testWithData = self::getDataFromTestWithAnnotation($docComment)) {
-            $data = $testWithData;
-        }
-
-        if ($data !== null) {
-            if (is_object($data)) {
-                $data = iterator_to_array($data);
-            }
-
-            foreach ($data as $key => $value) {
-                if (!is_array($value)) {
-                    throw new PHPUnit_Framework_Exception(
-                        sprintf(
-                            'Data set %s is invalid.',
-                            is_int($key) ? '#' . $key : '"' . $key . '"'
-                        )
-                    );
-                }
-            }
-        }
-
-        return $data;
-    }
-
-    /**
-     * 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
-     * @throws PHPUnit_Framework_Exception
-     */
-    private static function getDataFromDataProviderAnnotation($docComment, $className, $methodName)
-    {
-        if (preg_match(self::REGEX_DATA_PROVIDER, $docComment, $matches)) {
-            $dataProviderMethodNameNamespace = explode('\\', $matches[1]);
-            $leaf                            = explode('::', array_pop($dataProviderMethodNameNamespace));
-            $dataProviderMethodName          = array_pop($leaf);
-
-            if (!empty($dataProviderMethodNameNamespace)) {
-                $dataProviderMethodNameNamespace = implode('\\', $dataProviderMethodNameNamespace) . '\\';
-            } else {
-                $dataProviderMethodNameNamespace = '';
-            }
-
-            if (!empty($leaf)) {
-                $dataProviderClassName = $dataProviderMethodNameNamespace . array_pop($leaf);
-            } else {
-                $dataProviderClassName = $className;
-            }
-
-            $dataProviderClass  = new ReflectionClass($dataProviderClassName);
-            $dataProviderMethod = $dataProviderClass->getMethod(
-                $dataProviderMethodName
-            );
-
-            if ($dataProviderMethod->isStatic()) {
-                $object = null;
-            } else {
-                $object = $dataProviderClass->newInstance();
-            }
-
-            if ($dataProviderMethod->getNumberOfParameters() == 0) {
-                $data = $dataProviderMethod->invoke($object);
-            } else {
-                $data = $dataProviderMethod->invoke($object, $methodName);
-            }
-
-            return $data;
-        }
-    }
-
-    /**
-     * @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)
-    {
-        $docComment = self::cleanUpMultiLineAnnotation($docComment);
-        if (preg_match(self::REGEX_TEST_WITH, $docComment, $matches, PREG_OFFSET_CAPTURE)) {
-            $offset            = strlen($matches[0][0]) + $matches[0][1];
-            $annotationContent = substr($docComment, $offset);
-            $data              = array();
-            foreach (explode("\n", $annotationContent) as $candidateRow) {
-                $candidateRow = trim($candidateRow);
-                $dataSet      = json_decode($candidateRow, true);
-                if (json_last_error() != JSON_ERROR_NONE) {
-                    break;
-                }
-                $data[] = $dataSet;
-            }
-
-            if (!$data) {
-                throw new PHPUnit_Framework_Exception('The dataset for the @testWith annotation cannot be parsed.');
-            }
-
-            return $data;
-        }
-    }
-
-    private static function cleanUpMultiLineAnnotation($docComment)
-    {
-        //removing initial '   * ' for docComment
-        $docComment = preg_replace('/' . '\n' . '\s*' . '\*' . '\s?' . '/', "\n", $docComment);
-        $docComment = substr($docComment, 0, -1);
-        $docComment = rtrim($docComment, "\n");
-
-        return $docComment;
-    }
-
-    /**
-     * @param  string              $className
-     * @param  string              $methodName
-     * @return array
-     * @throws ReflectionException
-     * @since  Method available since Release 3.4.0
-     */
-    public static function parseTestMethodAnnotations($className, $methodName = '')
-    {
-        if (!isset(self::$annotationCache[$className])) {
-            $class                             = new ReflectionClass($className);
-            self::$annotationCache[$className] = self::parseAnnotations($class->getDocComment());
-        }
-
-        if (!empty($methodName) && !isset(self::$annotationCache[$className . '::' . $methodName])) {
-            try {
-                $method      = new ReflectionMethod($className, $methodName);
-                $annotations = self::parseAnnotations($method->getDocComment());
-            } catch (ReflectionException $e) {
-                $annotations = array();
-            }
-            self::$annotationCache[$className . '::' . $methodName] = $annotations;
-        }
-
-        return array(
-          'class'  => self::$annotationCache[$className],
-          'method' => !empty($methodName) ? self::$annotationCache[$className . '::' . $methodName] : array()
-        );
-    }
-
-    /**
-     * @param  string $docblock
-     * @return array
-     * @since  Method available since Release 3.4.0
-     */
-    private static function parseAnnotations($docblock)
-    {
-        $annotations = array();
-        // Strip away the docblock header and footer to ease parsing of one line annotations
-        $docblock = substr($docblock, 3, -2);
-
-        if (preg_match_all('/@(?P<name>[A-Za-z_-]+)(?:[ \t]+(?P<value>.*?))?[ \t]*\r?$/m', $docblock, $matches)) {
-            $numMatches = count($matches[0]);
-
-            for ($i = 0; $i < $numMatches; ++$i) {
-                $annotations[$matches['name'][$i]][] = $matches['value'][$i];
-            }
-        }
-
-        return $annotations;
-    }
-
-    /**
-     * Returns the backup settings for a test.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return array
-     * @since  Method available since Release 3.4.0
-     */
-    public static function getBackupSettings($className, $methodName)
-    {
-        return array(
-          'backupGlobals' => self::getBooleanAnnotationSetting(
-              $className,
-              $methodName,
-              'backupGlobals'
-          ),
-          'backupStaticAttributes' => self::getBooleanAnnotationSetting(
-              $className,
-              $methodName,
-              'backupStaticAttributes'
-          )
-        );
-    }
-
-    /**
-     * Returns the dependencies for a test class or method.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return array
-     * @since  Method available since Release 3.4.0
-     */
-    public static function getDependencies($className, $methodName)
-    {
-        $annotations = self::parseTestMethodAnnotations(
-            $className,
-            $methodName
-        );
-
-        $dependencies = array();
-
-        if (isset($annotations['class']['depends'])) {
-            $dependencies = $annotations['class']['depends'];
-        }
-
-        if (isset($annotations['method']['depends'])) {
-            $dependencies = array_merge(
-                $dependencies,
-                $annotations['method']['depends']
-            );
-        }
-
-        return array_unique($dependencies);
-    }
-
-    /**
-     * Returns the error handler settings for a test.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return bool
-     * @since  Method available since Release 3.4.0
-     */
-    public static function getErrorHandlerSettings($className, $methodName)
-    {
-        return self::getBooleanAnnotationSetting(
-            $className,
-            $methodName,
-            'errorHandler'
-        );
-    }
-
-    /**
-     * Returns the groups for a test class or method.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return array
-     * @since  Method available since Release 3.2.0
-     */
-    public static function getGroups($className, $methodName = '')
-    {
-        $annotations = self::parseTestMethodAnnotations(
-            $className,
-            $methodName
-        );
-
-        $groups = array();
-
-        if (isset($annotations['method']['author'])) {
-            $groups = $annotations['method']['author'];
-        } elseif (isset($annotations['class']['author'])) {
-            $groups = $annotations['class']['author'];
-        }
-
-        if (isset($annotations['class']['group'])) {
-            $groups = array_merge($groups, $annotations['class']['group']);
-        }
-
-        if (isset($annotations['method']['group'])) {
-            $groups = array_merge($groups, $annotations['method']['group']);
-        }
-
-        if (isset($annotations['class']['ticket'])) {
-            $groups = array_merge($groups, $annotations['class']['ticket']);
-        }
-
-        if (isset($annotations['method']['ticket'])) {
-            $groups = array_merge($groups, $annotations['method']['ticket']);
-        }
-
-        foreach (array('method', 'class') as $element) {
-            foreach (array('small', 'medium', 'large') as $size) {
-                if (isset($annotations[$element][$size])) {
-                    $groups[] = $size;
-                    break 2;
-                }
-
-                if (isset($annotations[$element][$size])) {
-                    $groups[] = $size;
-                    break 2;
-                }
-            }
-        }
-
-        return array_unique($groups);
-    }
-
-    /**
-     * Returns the size of the test.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return int
-     * @since  Method available since Release 3.6.0
-     */
-    public static function getSize($className, $methodName)
-    {
-        $groups = array_flip(self::getGroups($className, $methodName));
-        $size   = self::UNKNOWN;
-        $class  = new ReflectionClass($className);
-
-        if (isset($groups['large']) ||
-            (class_exists('PHPUnit_Extensions_Database_TestCase', false) &&
-             $class->isSubclassOf('PHPUnit_Extensions_Database_TestCase')) ||
-            (class_exists('PHPUnit_Extensions_SeleniumTestCase', false) &&
-             $class->isSubclassOf('PHPUnit_Extensions_SeleniumTestCase'))) {
-            $size = self::LARGE;
-        } elseif (isset($groups['medium'])) {
-            $size = self::MEDIUM;
-        } elseif (isset($groups['small'])) {
-            $size = self::SMALL;
-        }
-
-        return $size;
-    }
-
-    /**
-     * Returns the tickets for a test class or method.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return array
-     * @since  Method available since Release 3.4.0
-     */
-    public static function getTickets($className, $methodName)
-    {
-        $annotations = self::parseTestMethodAnnotations(
-            $className,
-            $methodName
-        );
-
-        $tickets = array();
-
-        if (isset($annotations['class']['ticket'])) {
-            $tickets = $annotations['class']['ticket'];
-        }
-
-        if (isset($annotations['method']['ticket'])) {
-            $tickets = array_merge($tickets, $annotations['method']['ticket']);
-        }
-
-        return array_unique($tickets);
-    }
-
-    /**
-     * Returns the process isolation settings for a test.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return bool
-     * @since  Method available since Release 3.4.1
-     */
-    public static function getProcessIsolationSettings($className, $methodName)
-    {
-        $annotations = self::parseTestMethodAnnotations(
-            $className,
-            $methodName
-        );
-
-        if (isset($annotations['class']['runTestsInSeparateProcesses']) ||
-            isset($annotations['method']['runInSeparateProcess'])) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Returns the preserve global state settings for a test.
-     *
-     * @param  string $className
-     * @param  string $methodName
-     * @return bool
-     * @since  Method available since Release 3.4.0
-     */
-    public static function getPreserveGlobalStateSettings($className, $methodName)
-    {
-        return self::getBooleanAnnotationSetting(
-            $className,
-            $methodName,
-            'preserveGlobalState'
-        );
-    }
-
-    /**
-     * @param  string $className
-     * @return array
-     * @since  Method available since Release 4.0.8
-     */
-    public static function getHookMethods($className)
-    {
-        if (!class_exists($className, false)) {
-            return self::emptyHookMethodsArray();
-        }
-
-        if (!isset(self::$hookMethods[$className])) {
-            self::$hookMethods[$className] = self::emptyHookMethodsArray();
-
-            try {
-                $class = new ReflectionClass($className);
-
-                foreach ($class->getMethods() as $method) {
-                    if (self::isBeforeClassMethod($method)) {
-                        self::$hookMethods[$className]['beforeClass'][] = $method->getName();
-                    }
-
-                    if (self::isBeforeMethod($method)) {
-                        self::$hookMethods[$className]['before'][] = $method->getName();
-                    }
-
-                    if (self::isAfterMethod($method)) {
-                        self::$hookMethods[$className]['after'][] = $method->getName();
-                    }
-
-                    if (self::isAfterClassMethod($method)) {
-                        self::$hookMethods[$className]['afterClass'][] = $method->getName();
-                    }
-                }
-            } catch (ReflectionException $e) {
-            }
-        }
-
-        return self::$hookMethods[$className];
-    }
-
-    /**
-     * @return array
-     * @since  Method available since Release 4.0.9
-     */
-    private static function emptyHookMethodsArray()
-    {
-        return array(
-            'beforeClass' => array('setUpBeforeClass'),
-            'before'      => array('setUp'),
-            'after'       => array('tearDown'),
-            'afterClass'  => array('tearDownAfterClass')
-        );
-    }
-
-    /**
-     * @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)
-    {
-        $annotations = self::parseTestMethodAnnotations(
-            $className,
-            $methodName
-        );
-
-        $result = null;
-
-        if (isset($annotations['class'][$settingName])) {
-            if ($annotations['class'][$settingName][0] == 'enabled') {
-                $result = true;
-            } elseif ($annotations['class'][$settingName][0] == 'disabled') {
-                $result = false;
-            }
-        }
-
-        if (isset($annotations['method'][$settingName])) {
-            if ($annotations['method'][$settingName][0] == 'enabled') {
-                $result = true;
-            } elseif ($annotations['method'][$settingName][0] == 'disabled') {
-                $result = false;
-            }
-        }
-
-        return $result;
-    }
-
-    /**
-     * @param  string                                         $element
-     * @return array
-     * @throws PHPUnit_Framework_InvalidCoversTargetException
-     * @since  Method available since Release 4.0.0
-     */
-    private static function resolveElementToReflectionObjects($element)
-    {
-        $codeToCoverList = array();
-
-        if (strpos($element, '\\') !== false && function_exists($element)) {
-            $codeToCoverList[] = new ReflectionFunction($element);
-        } else if (strpos($element, '::') !== false) {
-            list($className, $methodName) = explode('::', $element);
-
-            if (isset($methodName[0]) && $methodName[0] == '<') {
-                $classes = array($className);
-
-                foreach ($classes as $className) {
-                    if (!class_exists($className) &&
-                        !interface_exists($className)) {
-                        throw new PHPUnit_Framework_InvalidCoversTargetException(
-                            sprintf(
-                                'Trying to @cover or @use not existing class or ' .
-                                'interface "%s".',
-                                $className
-                            )
-                        );
-                    }
-
-                    $class   = new ReflectionClass($className);
-                    $methods = $class->getMethods();
-                    $inverse = isset($methodName[1]) && $methodName[1] == '!';
-
-                    if (strpos($methodName, 'protected')) {
-                        $visibility = 'isProtected';
-                    } elseif (strpos($methodName, 'private')) {
-                        $visibility = 'isPrivate';
-                    } elseif (strpos($methodName, 'public')) {
-                        $visibility = 'isPublic';
-                    }
-
-                    foreach ($methods as $method) {
-                        if ($inverse && !$method->$visibility()) {
-                            $codeToCoverList[] = $method;
-                        } elseif (!$inverse && $method->$visibility()) {
-                            $codeToCoverList[] = $method;
-                        }
-                    }
-                }
-            } else {
-                $classes = array($className);
-
-                foreach ($classes as $className) {
-                    if ($className == '' && function_exists($methodName)) {
-                        $codeToCoverList[] = new ReflectionFunction(
-                            $methodName
-                        );
-                    } else {
-                        if (!((class_exists($className) ||
-                               interface_exists($className) ||
-                               trait_exists($className)) &&
-                              method_exists($className, $methodName))) {
-                            throw new PHPUnit_Framework_InvalidCoversTargetException(
-                                sprintf(
-                                    'Trying to @cover or @use not existing method "%s::%s".',
-                                    $className,
-                                    $methodName
-                                )
-                            );
-                        }
-
-                        $codeToCoverList[] = new ReflectionMethod(
-                            $className,
-                            $methodName
-                        );
-                    }
-                }
-            }
-        } else {
-            $extended = false;
-
-            if (strpos($element, '<extended>') !== false) {
-                $element  = str_replace('<extended>', '', $element);
-                $extended = true;
-            }
-
-            $classes = array($element);
-
-            if ($extended) {
-                $classes = array_merge(
-                    $classes,
-                    class_implements($element),
-                    class_parents($element)
-                );
-            }
-
-            foreach ($classes as $className) {
-                if (!class_exists($className) &&
-                    !interface_exists($className) &&
-                    !trait_exists($className)) {
-                    throw new PHPUnit_Framework_InvalidCoversTargetException(
-                        sprintf(
-                            'Trying to @cover or @use not existing class or ' .
-                            'interface "%s".',
-                            $className
-                        )
-                    );
-                }
-
-                $codeToCoverList[] = new ReflectionClass($className);
-            }
-        }
-
-        return $codeToCoverList;
-    }
-
-    /**
-     * @param  array $reflectors
-     * @return array
-     */
-    private static function resolveReflectionObjectsToLines(array $reflectors)
-    {
-        $result = array();
-
-        foreach ($reflectors as $reflector) {
-            $filename = $reflector->getFileName();
-
-            if (!isset($result[$filename])) {
-                $result[$filename] = array();
-            }
-
-            $result[$filename] = array_unique(
-                array_merge(
-                    $result[$filename],
-                    range($reflector->getStartLine(), $reflector->getEndLine())
-                )
-            );
-        }
-
-        return $result;
-    }
-
-    /**
-     * @param  ReflectionMethod $method
-     * @return bool
-     * @since  Method available since Release 4.0.8
-     */
-    private static function isBeforeClassMethod(ReflectionMethod $method)
-    {
-        return $method->isStatic() && strpos($method->getDocComment(), '@beforeClass') !== false;
-    }
-
-    /**
-     * @param  ReflectionMethod $method
-     * @return bool
-     * @since  Method available since Release 4.0.8
-     */
-    private static function isBeforeMethod(ReflectionMethod $method)
-    {
-        return preg_match('/@before\b/', $method->getDocComment());
-    }
-
-    /**
-     * @param  ReflectionMethod $method
-     * @return bool
-     * @since  Method available since Release 4.0.8
-     */
-    private static function isAfterClassMethod(ReflectionMethod $method)
-    {
-        return $method->isStatic() && strpos($method->getDocComment(), '@afterClass') !== false;
-    }
-
-    /**
-     * @param  ReflectionMethod $method
-     * @return bool
-     * @since  Method available since Release 4.0.8
-     */
-    private static function isAfterMethod(ReflectionMethod $method)
-    {
-        return preg_match('/@after\b/', $method->getDocComment());
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php b/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php
deleted file mode 100644
index 45fa898..0000000
--- a/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Prettifies class and method names for use in TestDox documentation.
- *
- * @since Class available since Release 2.1.0
- */
-class PHPUnit_Util_TestDox_NamePrettifier
-{
-    /**
-     * @var string
-     */
-    protected $prefix = 'Test';
-
-    /**
-     * @var string
-     */
-    protected $suffix = 'Test';
-
-    /**
-     * @var array
-     */
-    protected $strings = array();
-
-    /**
-     * Prettifies the name of a test class.
-     *
-     * @param  string $name
-     * @return string
-     */
-    public function prettifyTestClass($name)
-    {
-        $title = $name;
-
-        if ($this->suffix !== null &&
-            $this->suffix == substr($name, -1 * strlen($this->suffix))) {
-            $title = substr($title, 0, strripos($title, $this->suffix));
-        }
-
-        if ($this->prefix !== null &&
-            $this->prefix == substr($name, 0, strlen($this->prefix))) {
-            $title = substr($title, strlen($this->prefix));
-        }
-
-        if (substr($title, 0, 1) == '\\') {
-            $title = substr($title, 1);
-        }
-
-        return $title;
-    }
-
-    /**
-     * Prettifies the name of a test method.
-     *
-     * @param  string $name
-     * @return string
-     */
-    public function prettifyTestMethod($name)
-    {
-        $buffer = '';
-
-        if (!is_string($name) || strlen($name) == 0) {
-            return $buffer;
-        }
-
-        $string = preg_replace('#\d+$#', '', $name, -1, $count);
-
-        if (in_array($string, $this->strings)) {
-            $name = $string;
-        } elseif ($count == 0) {
-            $this->strings[] = $string;
-        }
-
-        if (strpos($name, '_') !== false) {
-            return str_replace('_', ' ', $name);
-        }
-
-        $max = strlen($name);
-
-        if (substr($name, 0, 4) == 'test') {
-            $offset = 4;
-        } else {
-            $offset  = 0;
-            $name[0] = strtoupper($name[0]);
-        }
-
-        $wasNumeric = false;
-
-        for ($i = $offset; $i < $max; $i++) {
-            if ($i > $offset &&
-                ord($name[$i]) >= 65 &&
-                ord($name[$i]) <= 90) {
-                $buffer .= ' ' . strtolower($name[$i]);
-            } else {
-                $isNumeric = is_numeric($name[$i]);
-
-                if (!$wasNumeric && $isNumeric) {
-                    $buffer    .= ' ';
-                    $wasNumeric = true;
-                }
-
-                if ($wasNumeric && !$isNumeric) {
-                    $wasNumeric = false;
-                }
-
-                $buffer .= $name[$i];
-            }
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * Sets the prefix of test names.
-     *
-     * @param string $prefix
-     */
-    public function setPrefix($prefix)
-    {
-        $this->prefix = $prefix;
-    }
-
-    /**
-     * Sets the suffix of test names.
-     *
-     * @param string $suffix
-     */
-    public function setSuffix($suffix)
-    {
-        $this->suffix = $suffix;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php
deleted file mode 100644
index fbd7d84..0000000
--- a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php
+++ /dev/null
@@ -1,335 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Base class for printers of TestDox documentation.
- *
- * @since Class available since Release 2.1.0
- */
-abstract class PHPUnit_Util_TestDox_ResultPrinter extends PHPUnit_Util_Printer implements PHPUnit_Framework_TestListener
-{
-    /**
-     * @var PHPUnit_Util_TestDox_NamePrettifier
-     */
-    protected $prettifier;
-
-    /**
-     * @var string
-     */
-    protected $testClass = '';
-
-    /**
-     * @var int
-     */
-    protected $testStatus = false;
-
-    /**
-     * @var array
-     */
-    protected $tests = array();
-
-    /**
-     * @var int
-     */
-    protected $successful = 0;
-
-    /**
-     * @var int
-     */
-    protected $failed = 0;
-
-    /**
-     * @var int
-     */
-    protected $risky = 0;
-
-    /**
-     * @var int
-     */
-    protected $skipped = 0;
-
-    /**
-     * @var int
-     */
-    protected $incomplete = 0;
-
-    /**
-     * @var string
-     */
-    protected $currentTestClassPrettified;
-
-    /**
-     * @var string
-     */
-    protected $currentTestMethodPrettified;
-
-    /**
-     * Constructor.
-     *
-     * @param resource $out
-     */
-    public function __construct($out = null)
-    {
-        parent::__construct($out);
-
-        $this->prettifier = new PHPUnit_Util_TestDox_NamePrettifier;
-        $this->startRun();
-    }
-
-    /**
-     * Flush buffer and close output.
-     */
-    public function flush()
-    {
-        $this->doEndClass();
-        $this->endRun();
-
-        parent::flush();
-    }
-
-    /**
-     * An error occurred.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        if (!$this->isOfInterest($test)) {
-            return;
-        }
-
-        $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_ERROR;
-        $this->failed++;
-    }
-
-    /**
-     * A failure occurred.
-     *
-     * @param PHPUnit_Framework_Test                 $test
-     * @param PHPUnit_Framework_AssertionFailedError $e
-     * @param float                                  $time
-     */
-    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
-    {
-        if (!$this->isOfInterest($test)) {
-            return;
-        }
-
-        $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE;
-        $this->failed++;
-    }
-
-    /**
-     * Incomplete test.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param Exception              $e
-     * @param float                  $time
-     */
-    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
-    {
-        if (!$this->isOfInterest($test)) {
-            return;
-        }
-
-        $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE;
-        $this->incomplete++;
-    }
-
-    /**
-     * Risky test.
-     *
-     * @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)
-    {
-        if (!$this->isOfInterest($test)) {
-            return;
-        }
-
-        $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_RISKY;
-        $this->risky++;
-    }
-
-    /**
-     * Skipped test.
-     *
-     * @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)
-    {
-        if (!$this->isOfInterest($test)) {
-            return;
-        }
-
-        $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED;
-        $this->skipped++;
-    }
-
-    /**
-     * A testsuite started.
-     *
-     * @param PHPUnit_Framework_TestSuite $suite
-     * @since  Method available since Release 2.2.0
-     */
-    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)
-    {
-    }
-
-    /**
-     * A test started.
-     *
-     * @param PHPUnit_Framework_Test $test
-     */
-    public function startTest(PHPUnit_Framework_Test $test)
-    {
-        if (!$this->isOfInterest($test)) {
-            return;
-        }
-
-        $class = get_class($test);
-
-        if ($this->testClass != $class) {
-            if ($this->testClass != '') {
-                $this->doEndClass();
-            }
-
-            $this->currentTestClassPrettified = $this->prettifier->prettifyTestClass($class);
-            $this->startClass($class);
-
-            $this->testClass = $class;
-            $this->tests     = array();
-        }
-
-        $prettified = false;
-
-        $annotations = $test->getAnnotations();
-
-        if (isset($annotations['method']['testdox'][0])) {
-            $this->currentTestMethodPrettified = $annotations['method']['testdox'][0];
-            $prettified                        = true;
-        }
-
-        if (!$prettified) {
-            $this->currentTestMethodPrettified = $this->prettifier->prettifyTestMethod($test->getName(false));
-        }
-
-        $this->testStatus = PHPUnit_Runner_BaseTestRunner::STATUS_PASSED;
-    }
-
-    /**
-     * A test ended.
-     *
-     * @param PHPUnit_Framework_Test $test
-     * @param float                  $time
-     */
-    public function endTest(PHPUnit_Framework_Test $test, $time)
-    {
-        if (!$this->isOfInterest($test)) {
-            return;
-        }
-
-        if (!isset($this->tests[$this->currentTestMethodPrettified])) {
-            if ($this->testStatus == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) {
-                $this->tests[$this->currentTestMethodPrettified]['success'] = 1;
-                $this->tests[$this->currentTestMethodPrettified]['failure'] = 0;
-            } else {
-                $this->tests[$this->currentTestMethodPrettified]['success'] = 0;
-                $this->tests[$this->currentTestMethodPrettified]['failure'] = 1;
-            }
-        } else {
-            if ($this->testStatus == PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) {
-                $this->tests[$this->currentTestMethodPrettified]['success']++;
-            } else {
-                $this->tests[$this->currentTestMethodPrettified]['failure']++;
-            }
-        }
-
-        $this->currentTestClassPrettified  = null;
-        $this->currentTestMethodPrettified = null;
-    }
-
-    /**
-     * @since  Method available since Release 2.3.0
-     */
-    protected function doEndClass()
-    {
-        foreach ($this->tests as $name => $data) {
-            $this->onTest($name, $data['failure'] == 0);
-        }
-
-        $this->endClass($this->testClass);
-    }
-
-    /**
-     * Handler for 'start run' event.
-     */
-    protected function startRun()
-    {
-    }
-
-    /**
-     * Handler for 'start class' event.
-     *
-     * @param string $name
-     */
-    protected function startClass($name)
-    {
-    }
-
-    /**
-     * Handler for 'on test' event.
-     *
-     * @param string $name
-     * @param bool   $success
-     */
-    protected function onTest($name, $success = true)
-    {
-    }
-
-    /**
-     * Handler for 'end class' event.
-     *
-     * @param string $name
-     */
-    protected function endClass($name)
-    {
-    }
-
-    /**
-     * Handler for 'end run' event.
-     */
-    protected function endRun()
-    {
-    }
-
-    private function isOfInterest(PHPUnit_Framework_Test $test)
-    {
-        return $test instanceof PHPUnit_Framework_TestCase && get_class($test) != 'PHPUnit_Framework_Warning';
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php b/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php
deleted file mode 100644
index 6919eaf..0000000
--- a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Prints TestDox documentation in HTML format.
- *
- * @since Class available since Release 2.1.0
- */
-class PHPUnit_Util_TestDox_ResultPrinter_HTML extends PHPUnit_Util_TestDox_ResultPrinter
-{
-    /**
-     * @var bool
-     */
-    protected $printsHTML = true;
-
-    /**
-     * Handler for 'start run' event.
-     */
-    protected function startRun()
-    {
-        $this->write('<html><body>');
-    }
-
-    /**
-     * Handler for 'start class' event.
-     *
-     * @param string $name
-     */
-    protected function startClass($name)
-    {
-        $this->write(
-            '<h2 id="' . $name . '">' . $this->currentTestClassPrettified .
-            '</h2><ul>'
-        );
-    }
-
-    /**
-     * Handler for 'on test' event.
-     *
-     * @param string $name
-     * @param bool   $success
-     */
-    protected function onTest($name, $success = true)
-    {
-        if (!$success) {
-            $strikeOpen  = '<span style="text-decoration:line-through;">';
-            $strikeClose = '</span>';
-        } else {
-            $strikeOpen  = '';
-            $strikeClose = '';
-        }
-
-        $this->write('<li>' . $strikeOpen . $name . $strikeClose . '</li>');
-    }
-
-    /**
-     * Handler for 'end class' event.
-     *
-     * @param string $name
-     */
-    protected function endClass($name)
-    {
-        $this->write('</ul>');
-    }
-
-    /**
-     * Handler for 'end run' event.
-     */
-    protected function endRun()
-    {
-        $this->write('</body></html>');
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php b/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php
deleted file mode 100644
index 0ea48b1..0000000
--- a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Prints TestDox documentation in text format.
- *
- * @since Class available since Release 2.1.0
- */
-class PHPUnit_Util_TestDox_ResultPrinter_Text extends PHPUnit_Util_TestDox_ResultPrinter
-{
-    /**
-     * Handler for 'start class' event.
-     *
-     * @param string $name
-     */
-    protected function startClass($name)
-    {
-        $this->write($this->currentTestClassPrettified . "\n");
-    }
-
-    /**
-     * Handler for 'on test' event.
-     *
-     * @param string $name
-     * @param bool   $success
-     */
-    protected function onTest($name, $success = true)
-    {
-        if ($success) {
-            $this->write(' [x] ');
-        } else {
-            $this->write(' [ ] ');
-        }
-
-        $this->write($name . "\n");
-    }
-
-    /**
-     * Handler for 'end class' event.
-     *
-     * @param string $name
-     */
-    protected function endClass($name)
-    {
-        $this->write("\n");
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/TestSuiteIterator.php b/vendor/phpunit/phpunit/src/Util/TestSuiteIterator.php
deleted file mode 100644
index edf7b95..0000000
--- a/vendor/phpunit/phpunit/src/Util/TestSuiteIterator.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Iterator for test suites.
- *
- * @since Class available since Release 3.1.0
- */
-class PHPUnit_Util_TestSuiteIterator implements RecursiveIterator
-{
-    /**
-     * @var int
-     */
-    protected $position;
-
-    /**
-     * @var PHPUnit_Framework_Test[]
-     */
-    protected $tests;
-
-    /**
-     * @param PHPUnit_Framework_TestSuite $testSuite
-     */
-    public function __construct(PHPUnit_Framework_TestSuite $testSuite)
-    {
-        $this->tests = $testSuite->tests();
-    }
-
-    /**
-     * Rewinds the Iterator to the first element.
-     */
-    public function rewind()
-    {
-        $this->position = 0;
-    }
-
-    /**
-     * Checks if there is a current element after calls to rewind() or next().
-     *
-     * @return bool
-     */
-    public function valid()
-    {
-        return $this->position < count($this->tests);
-    }
-
-    /**
-     * Returns the key of the current element.
-     *
-     * @return int
-     */
-    public function key()
-    {
-        return $this->position;
-    }
-
-    /**
-     * Returns the current element.
-     *
-     * @return PHPUnit_Framework_Test
-     */
-    public function current()
-    {
-        return $this->valid() ? $this->tests[$this->position] : null;
-    }
-
-    /**
-     * Moves forward to next element.
-     */
-    public function next()
-    {
-        $this->position++;
-    }
-
-    /**
-     * Returns the sub iterator for the current element.
-     *
-     * @return PHPUnit_Util_TestSuiteIterator
-     */
-    public function getChildren()
-    {
-        return new self(
-            $this->tests[$this->position]
-        );
-    }
-
-    /**
-     * Checks whether the current element has children.
-     *
-     * @return bool
-     */
-    public function hasChildren()
-    {
-        return $this->tests[$this->position] instanceof PHPUnit_Framework_TestSuite;
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/Type.php b/vendor/phpunit/phpunit/src/Util/Type.php
deleted file mode 100644
index 1eb851a..0000000
--- a/vendor/phpunit/phpunit/src/Util/Type.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * Utility class for textual type (and value) representation.
- *
- * @since Class available since Release 3.0.0
- */
-class PHPUnit_Util_Type
-{
-    public static function isType($type)
-    {
-        return in_array(
-            $type,
-            array(
-            'numeric',
-            'integer',
-            'int',
-            'float',
-            'string',
-            'boolean',
-            'bool',
-            'null',
-            'array',
-            'object',
-            'resource',
-            'scalar'
-            )
-        );
-    }
-}
diff --git a/vendor/phpunit/phpunit/src/Util/XML.php b/vendor/phpunit/phpunit/src/Util/XML.php
deleted file mode 100644
index 552efe2..0000000
--- a/vendor/phpunit/phpunit/src/Util/XML.php
+++ /dev/null
@@ -1,906 +0,0 @@
-<?php
-/*
- * This file is part of PHPUnit.
- *
- * (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.
- */
-
-/**
- * XML helpers.
- *
- * @since Class available since Release 3.2.0
- */
-class PHPUnit_Util_XML
-{
-    /**
-     * Escapes a string for the use in XML documents
-     * Any Unicode character is allowed, excluding the surrogate blocks, FFFE,
-     * and FFFF (not even as character reference).
-     * See http://www.w3.org/TR/xml/#charsets
-     *
-     * @param  string $string
-     * @return string
-     * @since  Method available since Release 3.4.6
-     */
-    public static function prepareString($string)
-    {
-        return preg_replace(
-            '/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/',
-            '',
-            htmlspecialchars(
-                PHPUnit_Util_String::convertToUtf8($string),
-                ENT_QUOTES,
-                'UTF-8'
-            )
-        );
-    }
-
-    /**
-     * Loads an XML (or HTML) file into a DOMDocument object.
-     *
-     * @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)
-    {
-        $reporting = error_reporting(0);
-        $contents  = file_get_contents($filename);
-        error_reporting($reporting);
-
-        if ($contents === false) {
-            throw new PHPUnit_Framework_Exception(
-                sprintf(
-                    'Could not read "%s".',
-                    $filename
-                )
-            );
-        }
-
-        return self::load($contents, $isHtml, $filename, $xinclude, $strict);
-    }
-
-    /**
-     * Load an $actual document into a DOMDocument.  This is called
-     * from the selector assertions.
-     *
-     * If $actual is already a DOMDocument, it is returned with
-     * no changes.  Otherwise, $actual is loaded into a new DOMDocument
-     * as either HTML or XML, depending on the value of $isHtml. If $isHtml is
-     * false and $xinclude is true, xinclude is performed on the loaded
-     * DOMDocument.
-     *
-     * Note: prior to PHPUnit 3.3.0, this method loaded a file and
-     * 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
-     * @return DOMDocument
-     * @since  Method available since Release 3.3.0
-     */
-    public static function load($actual, $isHtml = false, $filename = '', $xinclude = false, $strict = false)
-    {
-        if ($actual instanceof DOMDocument) {
-            return $actual;
-        }
-
-        // Required for XInclude on Windows.
-        if ($xinclude) {
-            $cwd = getcwd();
-            @chdir(dirname($filename));
-        }
-
-        $document                     = new DOMDocument;
-        $document->preserveWhiteSpace = false;
-
-        $internal  = libxml_use_internal_errors(true);
-        $message   = '';
-        $reporting = error_reporting(0);
-
-        if ('' !== $filename) {
-            // Necessary for xinclude
-            $document->documentURI = $filename;
-        }
-
-        if ($isHtml) {
-            $loaded = $document->loadHTML($actual);
-        } else {
-            $loaded = $document->loadXML($actual);
-        }
-
-        if (!$isHtml && $xinclude) {
-            $document->xinclude();
-        }
-
-        foreach (libxml_get_errors() as $error) {
-            $message .= "\n" . $error->message;
-        }
-
-        libxml_use_internal_errors($internal);
-        error_reporting($reporting);
-
-        if ($xinclude) {
-            @chdir($cwd);
-        }
-
-        if ($loaded === false || ($strict && $message !== '')) {
-            if ($filename !== '') {
-                throw new PHPUnit_Framework_Exception(
-                    sprintf(
-                        'Could not load "%s".%s',
-                        $filename,
-                        $message != '' ? "\n" . $message : ''
-                    )
-                );
-            } else {
-                throw new PHPUnit_Framework_Exception($message);
-            }
-        }
-
-        return $document;
-    }
-
-    /**
-     * @param  DOMNode $node
-     * @return string
-     * @since  Method available since Release 3.4.0
-     */
-    public static function nodeToText(DOMNode $node)
-    {
-        if ($node->childNodes->length == 1) {
-            return $node->textContent;
-        }
-
-        $result = '';
-
-        foreach ($node->childNodes as $childNode) {
-            $result .= $node->ownerDocument->saveXML($childNode);
-        }
-
-        return $result;
-    }
-
-    /**
-     * @param DOMNode $node
-     * @since  Method available since Release 3.3.0
-     */
-    public static function removeCharacterDataNodes(DOMNode $node)
-    {
-        if ($node->hasChildNodes()) {
-            for ($i = $node->childNodes->length - 1; $i >= 0; $i--) {
-                if (($child = $node->childNodes->item($i)) instanceof DOMCharacterData) {
-                    $node->removeChild($child);
-                }
-            }
-        }
-    }
-
-    /**
-     * "Convert" a DOMElement object into a PHP variable.
-     *
-     * @param  DOMElement $element
-     * @return mixed
-     * @since  Method available since Release 3.4.0
-     */
-    public static function xmlToVariable(DOMElement $element)
-    {
-        $variable = null;
-
-        switch ($element->tagName) {
-            case 'array':
-                $variable = array();
-
-                foreach ($element->getElementsByTagName('element') as $element) {
-                    $item = $element->childNodes->item(0);
-
-                    if ($item instanceof DOMText) {
-                        $item = $element->childNodes->item(1);
-                    }
-
-                    $value = self::xmlToVariable($item);
-
-                    if ($element->hasAttribute('key')) {
-                        $variable[(string) $element->getAttribute('key')] = $value;
-                    } else {
-                        $variable[] = $value;
-                    }
-                }
-                break;
-
-            case 'object':
-                $className = $element->getAttribute('class');
-
-                if ($element->hasChildNodes()) {
-                    $arguments       = $element->childNodes->item(1)->childNodes;
-                    $constructorArgs = array();
-
-                    foreach ($arguments as $argument) {
-                        if ($argument instanceof DOMElement) {
-                            $constructorArgs[] = self::xmlToVariable($argument);
-                        }
-                    }
-
-                    $class    = new ReflectionClass($className);
-                    $variable = $class->newInstanceArgs($constructorArgs);
-                } else {
-                    $variable = new $className;
-                }
-                break;
-
-            case 'boolean':
-                $variable = $element->textContent == 'true' ? true : false;
-                break;
-
-            case 'integer':
-            case 'double':
-            case 'string':
-                $variable = $element->textContent;
-
-                settype($variable, $element->tagName);
-                break;
-        }
-
-        return $variable;
-    }
-
-    /**
-     * Validate list of keys in the associative array.
-     *
-     * @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)
-    {
-        $valids = array();
-
-        // Normalize validation keys so that we can use both indexed and
-        // associative arrays.
-        foreach ($validKeys as $key => $val) {
-            is_int($key) ? $valids[$val] = null : $valids[$key] = $val;
-        }
-
-        $validKeys = array_keys($valids);
-
-        // Check for invalid keys.
-        foreach ($hash as $key => $value) {
-            if (!in_array($key, $validKeys)) {
-                $unknown[] = $key;
-            }
-        }
-
-        if (!empty($unknown)) {
-            throw new PHPUnit_Framework_Exception(
-                'Unknown key(s): ' . implode(', ', $unknown)
-            );
-        }
-
-        // Add default values for any valid keys that are empty.
-        foreach ($valids as $key => $value) {
-            if (!isset($hash[$key])) {
-                $hash[$key] = $value;
-            }
-        }
-
-        return $hash;
-    }
-
-    /**
-     * Parse a CSS selector into an associative array suitable for
-     * use with findNodes().
-     *
-     * @param  string $selector
-     * @param  mixed  $content
-     * @return array
-     * @since  Method available since Release 3.3.0
-     */
-    public static function convertSelectToTag($selector, $content = true)
-    {
-        $selector = trim(preg_replace("/\s+/", ' ', $selector));
-
-        // substitute spaces within attribute value
-        while (preg_match('/\[[^\]]+"[^"]+\s[^"]+"\]/', $selector)) {
-            $selector = preg_replace(
-                '/(\[[^\]]+"[^"]+)\s([^"]+"\])/',
-                '$1__SPACE__$2',
-                $selector
-            );
-        }
-
-        if (strstr($selector, ' ')) {
-            $elements = explode(' ', $selector);
-        } else {
-            $elements = array($selector);
-        }
-
-        $previousTag = array();
-
-        foreach (array_reverse($elements) as $element) {
-            $element = str_replace('__SPACE__', ' ', $element);
-
-            // child selector
-            if ($element == '>') {
-                $previousTag = array('child' => $previousTag['descendant']);
-                continue;
-            }
-
-            // adjacent-sibling selector
-            if ($element == '+') {
-                $previousTag = array('adjacent-sibling' => $previousTag['descendant']);
-                continue;
-            }
-
-            $tag = array();
-
-            // match element tag
-            preg_match("/^([^\.#\[]*)/", $element, $eltMatches);
-
-            if (!empty($eltMatches[1])) {
-                $tag['tag'] = $eltMatches[1];
-            }
-
-            // match attributes (\[[^\]]*\]*), ids (#[^\.#\[]*),
-            // and classes (\.[^\.#\[]*))
-            preg_match_all(
-                "/(\[[^\]]*\]*|#[^\.#\[]*|\.[^\.#\[]*)/",
-                $element,
-                $matches
-            );
-
-            if (!empty($matches[1])) {
-                $classes = array();
-                $attrs   = array();
-
-                foreach ($matches[1] as $match) {
-                    // id matched
-                    if (substr($match, 0, 1) == '#') {
-                        $tag['id'] = substr($match, 1);
-                    } // class matched
-                    elseif (substr($match, 0, 1) == '.') {
-                        $classes[] = substr($match, 1);
-                    } // attribute matched
-                    elseif (substr($match, 0, 1) == '[' &&
-                             substr($match, -1, 1) == ']') {
-                        $attribute = substr($match, 1, strlen($match) - 2);
-                        $attribute = str_replace('"', '', $attribute);
-
-                        // match single word
-                        if (strstr($attribute, '~=')) {
-                            list($key, $value) = explode('~=', $attribute);
-                            $value             = "regexp:/.*\b$value\b.*/";
-                        } // match substring
-                        elseif (strstr($attribute, '*=')) {
-                            list($key, $value) = explode('*=', $attribute);
-                            $value             = "regexp:/.*$value.*/";
-                        } // exact match
-                        else {
-                            list($key, $value) = explode('=', $attribute);
-                        }
-
-                        $attrs[$key] = $value;
-                    }
-                }
-
-                if (!empty($classes)) {
-                    $tag['class'] = implode(' ', $classes);
-                }
-
-                if (!empty($attrs)) {
-                    $tag['attributes'] = $attrs;
-                }
-            }
-
-            // tag content
-            if (is_string($content)) {
-                $tag['content'] = $content;
-            }
-
-            // determine previous child/descendants
-            if (!empty($previousTag['descendant'])) {
-                $tag['descendant'] = $previousTag['descendant'];
-            } elseif (!empty($previousTag['child'])) {
-                $tag['child'] = $previousTag['child'];
-            } elseif (!empty($previousTag['adjacent-sibling'])) {
-                $tag['adjacent-sibling'] = $previousTag['adjacent-sibling'];
-                unset($tag['content']);
-            }
-
-            $previousTag = array('descendant' => $tag);
-        }
-
-        return $tag;
-    }
-
-    /**
-     * Parse an $actual document and return an array of DOMNodes
-     * matching the CSS $selector.  If an error occurs, it will
-     * return false.
-     *
-     * To only return nodes containing a certain content, give
-     * the $content to match as a string.  Otherwise, setting
-     * $content to true will return all nodes matching $selector.
-     *
-     * 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
-     * @return bool|array
-     * @since  Method available since Release 3.3.0
-     */
-    public static function cssSelect($selector, $content, $actual, $isHtml = true)
-    {
-        $matcher = self::convertSelectToTag($selector, $content);
-        $dom     = self::load($actual, $isHtml);
-        $tags    = self::findNodes($dom, $matcher, $isHtml);
-
-        return $tags;
-    }
-
-    /**
-     * Parse out the options from the tag using DOM object tree.
-     *
-     * @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)
-    {
-        $valid = array(
-          'id', 'class', 'tag', 'content', 'attributes', 'parent',
-          'child', 'ancestor', 'descendant', 'children', 'adjacent-sibling'
-        );
-
-        $filtered = array();
-        $options  = self::assertValidKeys($options, $valid);
-
-        // find the element by id
-        if ($options['id']) {
-            $options['attributes']['id'] = $options['id'];
-        }
-
-        if ($options['class']) {
-            $options['attributes']['class'] = $options['class'];
-        }
-
-        $nodes = array();
-
-        // find the element by a tag type
-        if ($options['tag']) {
-            if ($isHtml) {
-                $elements = self::getElementsByCaseInsensitiveTagName(
-                    $dom,
-                    $options['tag']
-                );
-            } else {
-                $elements = $dom->getElementsByTagName($options['tag']);
-            }
-
-            foreach ($elements as $element) {
-                $nodes[] = $element;
-            }
-
-            if (empty($nodes)) {
-                return false;
-            }
-        } // no tag selected, get them all
-        else {
-            $tags = array(
-              'a', 'abbr', 'acronym', 'address', 'area', 'b', 'base', 'bdo',
-              'big', 'blockquote', 'body', 'br', 'button', 'caption', 'cite',
-              'code', 'col', 'colgroup', 'dd', 'del', 'div', 'dfn', 'dl',
-              'dt', 'em', 'fieldset', 'form', 'frame', 'frameset', 'h1', 'h2',
-              'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html', 'i', 'iframe',
-              'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'link',
-              'map', 'meta', 'noframes', 'noscript', 'object', 'ol', 'optgroup',
-              'option', 'p', 'param', 'pre', 'q', 'samp', 'script', 'select',
-              'small', 'span', 'strong', 'style', 'sub', 'sup', 'table',
-              'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'title',
-              'tr', 'tt', 'ul', 'var',
-              // HTML5
-              'article', 'aside', 'audio', 'bdi', 'canvas', 'command',
-              'datalist', 'details', 'dialog', 'embed', 'figure', 'figcaption',
-              'footer', 'header', 'hgroup', 'keygen', 'mark', 'meter', 'nav',
-              'output', 'progress', 'ruby', 'rt', 'rp', 'track', 'section',
-              'source', 'summary', 'time', 'video', 'wbr'
-            );
-
-            foreach ($tags as $tag) {
-                if ($isHtml) {
-                    $elements = self::getElementsByCaseInsensitiveTagName(
-                        $dom,
-                        $tag
-                    );
-                } else {
-                    $elements = $dom->getElementsByTagName($tag);
-                }
-
-                foreach ($elements as $element) {
-                    $nodes[] = $element;
-                }
-            }
-
-            if (empty($nodes)) {
-                return false;
-            }
-        }
-
-        // filter by attributes
-        if ($options['attributes']) {
-            foreach ($nodes as $node) {
-                $invalid = false;
-
-                foreach ($options['attributes'] as $name => $value) {
-                    // match by regexp if like "regexp:/foo/i"
-                    if (preg_match('/^regexp\s*:\s*(.*)/i', $value, $matches)) {
-                        if (!preg_match($matches[1], $node->getAttribute($name))) {
-                            $invalid = true;
-                        }
-                    } // class can match only a part
-                    elseif ($name == 'class') {
-                        // split to individual classes
-                        $findClasses = explode(
-                            ' ',
-                            preg_replace("/\s+/", ' ', $value)
-                        );
-
-                        $allClasses = explode(
-                            ' ',
-                            preg_replace("/\s+/", ' ', $node->getAttribute($name))
-                        );
-
-                        // make sure each class given is in the actual node
-                        foreach ($findClasses as $findClass) {
-                            if (!in_array($findClass, $allClasses)) {
-                                $invalid = true;
-                            }
-                        }
-                    } // match by exact string
-                    else {
-                        if ($node->getAttribute($name) != $value) {
-                            $invalid = true;
-                        }
-                    }
-                }
-
-                // if every attribute given matched
-                if (!$invalid) {
-                    $filtered[] = $node;
-                }
-            }
-
-            $nodes    = $filtered;
-            $filtered = array();
-
-            if (empty($nodes)) {
-                return false;
-            }
-        }
-
-        // filter by content
-        if ($options['content'] !== null) {
-            foreach ($nodes as $node) {
-                $invalid = false;
-
-                // match by regexp if like "regexp:/foo/i"
-                if (preg_match('/^regexp\s*:\s*(.*)/i', $options['content'], $matches)) {
-                    if (!preg_match($matches[1], self::getNodeText($node))) {
-                        $invalid = true;
-                    }
-                } // match empty string
-                elseif ($options['content'] === '') {
-                    if (self::getNodeText($node) !== '') {
-                        $invalid = true;
-                    }
-                } // match by exact string
-                elseif (strstr(self::getNodeText($node), $options['content']) === false) {
-                    $invalid = true;
-                }
-
-                if (!$invalid) {
-                    $filtered[] = $node;
-                }
-            }
-
-            $nodes    = $filtered;
-            $filtered = array();
-
-            if (empty($nodes)) {
-                return false;
-            }
-        }
-
-        // filter by parent node
-        if ($options['parent']) {
-            $parentNodes = self::findNodes($dom, $options['parent'], $isHtml);
-            $parentNode  = isset($parentNodes[0]) ? $parentNodes[0] : null;
-
-            foreach ($nodes as $node) {
-                if ($parentNode !== $node->parentNode) {
-                    continue;
-                }
-
-                $filtered[] = $node;
-            }
-
-            $nodes    = $filtered;
-            $filtered = array();
-
-            if (empty($nodes)) {
-                return false;
-            }
-        }
-
-        // filter by child node
-        if ($options['child']) {
-            $childNodes = self::findNodes($dom, $options['child'], $isHtml);
-            $childNodes = !empty($childNodes) ? $childNodes : array();
-
-            foreach ($nodes as $node) {
-                foreach ($node->childNodes as $child) {
-                    foreach ($childNodes as $childNode) {
-                        if ($childNode === $child) {
-                            $filtered[] = $node;
-                        }
-                    }
-                }
-            }
-
-            $nodes    = $filtered;
-            $filtered = array();
-
-            if (empty($nodes)) {
-                return false;
-            }
-        }
-
-        // filter by adjacent-sibling
-        if ($options['adjacent-sibling']) {
-            $adjacentSiblingNodes = self::findNodes($dom, $options['adjacent-sibling'], $isHtml);
-            $adjacentSiblingNodes = !empty($adjacentSiblingNodes) ? $adjacentSiblingNodes : array();
-
-            foreach ($nodes as $node) {
-                $sibling = $node;
-
-                while ($sibling = $sibling->nextSibling) {
-                    if ($sibling->nodeType !== XML_ELEMENT_NODE) {
-                        continue;
-                    }
-
-                    foreach ($adjacentSiblingNodes as $adjacentSiblingNode) {
-                        if ($sibling === $adjacentSiblingNode) {
-                            $filtered[] = $node;
-                            break;
-                        }
-                    }
-
-                    break;
-                }
-            }
-
-            $nodes    = $filtered;
-            $filtered = array();
-
-            if (empty($nodes)) {
-                return false;
-            }
-        }
-
-        // filter by ancestor
-        if ($options['ancestor']) {
-            $ancestorNodes = self::findNodes($dom, $options['ancestor'], $isHtml);
-            $ancestorNode  = isset($ancestorNodes[0]) ? $ancestorNodes[0] : null;
-
-            foreach ($nodes as $node) {
-                $parent = $node->parentNode;
-
-                while ($parent && $parent->nodeType != XML_HTML_DOCUMENT_NODE) {
-                    if ($parent === $ancestorNode) {
-                        $filtered[] = $node;
-                    }
-
-                    $parent = $parent->parentNode;
-                }
-            }
-
-            $nodes    = $filtered;
-            $filtered = array();
-
-            if (empty($nodes)) {
-                return false;
-            }
-        }
-
-        // filter by descendant
-        if ($options['descendant']) {
-            $descendantNodes = self::findNodes($dom, $options['descendant'], $isHtml);
-            $descendantNodes = !empty($descendantNodes) ? $descendantNodes : array();
-
-            foreach ($nodes as $node) {
-                foreach (self::getDescendants($node) as $descendant) {
-                    foreach ($descendantNodes as $descendantNode) {
-                        if ($descendantNode === $descendant) {
-                            $filtered[] = $node;
-                        }
-                    }
-                }
-            }
-
-            $nodes    = $filtered;
-            $filtered = array();
-
-            if (empty($nodes)) {
-                return false;
-            }
-        }
-
-        // filter by children
-        if ($options['children']) {
-            $validChild   = array('count', 'greater_than', 'less_than', 'only');
-            $childOptions = self::assertValidKeys(
-                $options['children'],
-                $validChild
-            );
-
-            foreach ($nodes as $node) {
-                $childNodes = $node->childNodes;
-
-                foreach ($childNodes as $childNode) {
-                    if ($childNode->nodeType !== XML_CDATA_SECTION_NODE &&
-                        $childNode->nodeType !== XML_TEXT_NODE) {
-                        $children[] = $childNode;
-                    }
-                }
-
-                // we must have children to pass this filter
-                if (!empty($children)) {
-                    // exact count of children
-                    if ($childOptions['count'] !== null) {
-                        if (count($children) !== $childOptions['count']) {
-                            break;
-                        }
-                    } // range count of children
-                    elseif ($childOptions['less_than']    !== null &&
-                            $childOptions['greater_than'] !== null) {
-                        if (count($children) >= $childOptions['less_than'] ||
-                            count($children) <= $childOptions['greater_than']) {
-                            break;
-                        }
-                    } // less than a given count
-                    elseif ($childOptions['less_than'] !== null) {
-                        if (count($children) >= $childOptions['less_than']) {
-                            break;
-                        }
-                    } // more than a given count
-                    elseif ($childOptions['greater_than'] !== null) {
-                        if (count($children) <= $childOptions['greater_than']) {
-                            break;
-                        }
-                    }
-
-                    // match each child against a specific tag
-                    if ($childOptions['only']) {
-                        $onlyNodes = self::findNodes(
-                            $dom,
-                            $childOptions['only'],
-                            $isHtml
-                        );
-
-                        // try to match each child to one of the 'only' nodes
-                        foreach ($children as $child) {
-                            $matched = false;
-
-                            foreach ($onlyNodes as $onlyNode) {
-                                if ($onlyNode === $child) {
-                                    $matched = true;
-                                }
-                            }
-
-                            if (!$matched) {
-                                break 2;
-                            }
-                        }
-                    }
-
-                    $filtered[] = $node;
-                }
-            }
-
-            $nodes = $filtered;
-
-            if (empty($nodes)) {
-                return;
-            }
-        }
-
-        // return the first node that matches all criteria
-        return !empty($nodes) ? $nodes : array();
-    }
-
-    /**
-     * Recursively get flat array of all descendants of this node.
-     *
-     * @param  DOMNode $node
-     * @return array
-     * @since  Method available since Release 3.3.0
-     */
-    protected static function getDescendants(DOMNode $node)
-    {
-        $allChildren = array();
-        $childNodes  = $node->childNodes ? $node->childNodes : array();
-
-        foreach ($childNodes as $child) {
-            if ($child->nodeType === XML_CDATA_SECTION_NODE ||
-                $child->nodeType === XML_TEXT_NODE) {
-                continue;
-            }
-
-            $children    = self::getDescendants($child);
-            $allChildren = array_merge($allChildren, $children, array($child));
-        }
-
-        return isset($allChildren) ? $allChildren : array();
-    }
-
-    /**
-     * Gets elements by case insensitive tagname.
-     *
-     * @param  DOMDocument $dom
-     * @param  string      $tag
-     * @return DOMNodeList
-     * @since  Method available since Release 3.4.0
-     */
-    protected static function getElementsByCaseInsensitiveTagName(DOMDocument $dom, $tag)
-    {
-        $elements = $dom->getElementsByTagName(strtolower($tag));
-
-        if ($elements->length == 0) {
-            $elements = $dom->getElementsByTagName(strtoupper($tag));
-        }
-
-        return $elements;
-    }
-
-    /**
-     * Get the text value of this node's child text node.
-     *
-     * @param  DOMNode $node
-     * @return string
-     * @since  Method available since Release 3.3.0
-     */
-    protected static function getNodeText(DOMNode $node)
-    {
-        if (!$node->childNodes instanceof DOMNodeList) {
-            return '';
-        }
-
-        $result = '';
-
-        foreach ($node->childNodes as $childNode) {
-            if ($childNode->nodeType === XML_TEXT_NODE ||
-                $childNode->nodeType === XML_CDATA_SECTION_NODE) {
-                $result .= trim($childNode->data) . ' ';
-            } else {
-                $result .= self::getNodeText($childNode);
-            }
-        }
-
-        return str_replace('  ', ' ', $result);
-    }
-}
diff --git a/vendor/psr/http-message/LICENSE b/vendor/psr/http-message/LICENSE
deleted file mode 100644
index c2d8e45..0000000
--- a/vendor/psr/http-message/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 PHP Framework Interoperability Group
-
-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/psr/http-message/README.md b/vendor/psr/http-message/README.md
deleted file mode 100644
index 2818533..0000000
--- a/vendor/psr/http-message/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-PSR Http Message
-================
-
-This repository holds all interfaces/classes/traits related to
-[PSR-7](http://www.php-fig.org/psr/psr-7/).
-
-Note that this is not a HTTP message implementation of its own. It is merely an
-interface that describes a HTTP message. See the specification for more details.
-
-Usage
------
-
-We'll certainly need some stuff in here.
\ No newline at end of file
diff --git a/vendor/psr/http-message/composer.json b/vendor/psr/http-message/composer.json
deleted file mode 100644
index 4774b61..0000000
--- a/vendor/psr/http-message/composer.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-    "name": "psr/http-message",
-    "description": "Common interface for HTTP messages",
-    "keywords": ["psr", "psr-7", "http", "http-message", "request", "response"],
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "PHP-FIG",
-            "homepage": "http://www.php-fig.org/"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.0"
-    },
-    "autoload": {
-        "psr-4": {
-            "Psr\\Http\\Message\\": "src/"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0.x-dev"
-        }
-    }
-}
diff --git a/vendor/psr/http-message/src/MessageInterface.php b/vendor/psr/http-message/src/MessageInterface.php
deleted file mode 100644
index 8f67a05..0000000
--- a/vendor/psr/http-message/src/MessageInterface.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * HTTP messages consist of requests from a client to a server and responses
- * from a server to a client. This interface defines the methods common to
- * each.
- *
- * Messages are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- *
- * @link http://www.ietf.org/rfc/rfc7230.txt
- * @link http://www.ietf.org/rfc/rfc7231.txt
- */
-interface MessageInterface
-{
-    /**
-     * Retrieves the HTTP protocol version as a string.
-     *
-     * The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
-     *
-     * @return string HTTP protocol version.
-     */
-    public function getProtocolVersion();
-
-    /**
-     * Return an instance with the specified HTTP protocol version.
-     *
-     * The version string MUST contain only the HTTP version number (e.g.,
-     * "1.1", "1.0").
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new protocol version.
-     *
-     * @param string $version HTTP protocol version
-     * @return self
-     */
-    public function withProtocolVersion($version);
-
-    /**
-     * Retrieves all message header values.
-     *
-     * The keys represent the header name as it will be sent over the wire, and
-     * each value is an array of strings associated with the header.
-     *
-     *     // Represent the headers as a string
-     *     foreach ($message->getHeaders() as $name => $values) {
-     *         echo $name . ": " . implode(", ", $values);
-     *     }
-     *
-     *     // Emit headers iteratively:
-     *     foreach ($message->getHeaders() as $name => $values) {
-     *         foreach ($values as $value) {
-     *             header(sprintf('%s: %s', $name, $value), false);
-     *         }
-     *     }
-     *
-     * While header names are not case-sensitive, getHeaders() will preserve the
-     * exact case in which headers were originally specified.
-     *
-     * @return array Returns an associative array of the message's headers. Each
-     *     key MUST be a header name, and each value MUST be an array of strings
-     *     for that header.
-     */
-    public function getHeaders();
-
-    /**
-     * Checks if a header exists by the given case-insensitive name.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return bool Returns true if any header names match the given header
-     *     name using a case-insensitive string comparison. Returns false if
-     *     no matching header name is found in the message.
-     */
-    public function hasHeader($name);
-
-    /**
-     * Retrieves a message header value by the given case-insensitive name.
-     *
-     * This method returns an array of all the header values of the given
-     * case-insensitive header name.
-     *
-     * If the header does not appear in the message, this method MUST return an
-     * empty array.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return string[] An array of string values as provided for the given
-     *    header. If the header does not appear in the message, this method MUST
-     *    return an empty array.
-     */
-    public function getHeader($name);
-
-    /**
-     * Retrieves a comma-separated string of the values for a single header.
-     *
-     * This method returns all of the header values of the given
-     * case-insensitive header name as a string concatenated together using
-     * a comma.
-     *
-     * NOTE: Not all header values may be appropriately represented using
-     * comma concatenation. For such headers, use getHeader() instead
-     * and supply your own delimiter when concatenating.
-     *
-     * If the header does not appear in the message, this method MUST return
-     * an empty string.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return string A string of values as provided for the given header
-     *    concatenated together using a comma. If the header does not appear in
-     *    the message, this method MUST return an empty string.
-     */
-    public function getHeaderLine($name);
-
-    /**
-     * Return an instance with the provided value replacing the specified header.
-     *
-     * While header names are case-insensitive, the casing of the header will
-     * be preserved by this function, and returned from getHeaders().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new and/or updated header and value.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @param string|string[] $value Header value(s).
-     * @return self
-     * @throws \InvalidArgumentException for invalid header names or values.
-     */
-    public function withHeader($name, $value);
-
-    /**
-     * Return an instance with the specified header appended with the given value.
-     *
-     * Existing values for the specified header will be maintained. The new
-     * value(s) will be appended to the existing list. If the header did not
-     * exist previously, it will be added.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new header and/or value.
-     *
-     * @param string $name Case-insensitive header field name to add.
-     * @param string|string[] $value Header value(s).
-     * @return self
-     * @throws \InvalidArgumentException for invalid header names or values.
-     */
-    public function withAddedHeader($name, $value);
-
-    /**
-     * Return an instance without the specified header.
-     *
-     * Header resolution MUST be done without case-sensitivity.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that removes
-     * the named header.
-     *
-     * @param string $name Case-insensitive header field name to remove.
-     * @return self
-     */
-    public function withoutHeader($name);
-
-    /**
-     * Gets the body of the message.
-     *
-     * @return StreamInterface Returns the body as a stream.
-     */
-    public function getBody();
-
-    /**
-     * Return an instance with the specified message body.
-     *
-     * The body MUST be a StreamInterface object.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return a new instance that has the
-     * new body stream.
-     *
-     * @param StreamInterface $body Body.
-     * @return self
-     * @throws \InvalidArgumentException When the body is not valid.
-     */
-    public function withBody(StreamInterface $body);
-}
diff --git a/vendor/psr/http-message/src/RequestInterface.php b/vendor/psr/http-message/src/RequestInterface.php
deleted file mode 100644
index 75c802e..0000000
--- a/vendor/psr/http-message/src/RequestInterface.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an outgoing, client-side request.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - HTTP method
- * - URI
- * - Headers
- * - Message body
- *
- * During construction, implementations MUST attempt to set the Host header from
- * a provided URI if no Host header is provided.
- *
- * Requests are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface RequestInterface extends MessageInterface
-{
-    /**
-     * Retrieves the message's request target.
-     *
-     * Retrieves the message's request-target either as it will appear (for
-     * clients), as it appeared at request (for servers), or as it was
-     * specified for the instance (see withRequestTarget()).
-     *
-     * In most cases, this will be the origin-form of the composed URI,
-     * unless a value was provided to the concrete implementation (see
-     * withRequestTarget() below).
-     *
-     * If no URI is available, and no request-target has been specifically
-     * provided, this method MUST return the string "/".
-     *
-     * @return string
-     */
-    public function getRequestTarget();
-
-    /**
-     * Return an instance with the specific request-target.
-     *
-     * If the request needs a non-origin-form request-target — e.g., for
-     * specifying an absolute-form, authority-form, or asterisk-form —
-     * this method may be used to create an instance with the specified
-     * request-target, verbatim.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * changed request target.
-     *
-     * @link http://tools.ietf.org/html/rfc7230#section-2.7 (for the various
-     *     request-target forms allowed in request messages)
-     * @param mixed $requestTarget
-     * @return self
-     */
-    public function withRequestTarget($requestTarget);
-
-    /**
-     * Retrieves the HTTP method of the request.
-     *
-     * @return string Returns the request method.
-     */
-    public function getMethod();
-
-    /**
-     * Return an instance with the provided HTTP method.
-     *
-     * While HTTP method names are typically all uppercase characters, HTTP
-     * method names are case-sensitive and thus implementations SHOULD NOT
-     * modify the given string.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * changed request method.
-     *
-     * @param string $method Case-sensitive method.
-     * @return self
-     * @throws \InvalidArgumentException for invalid HTTP methods.
-     */
-    public function withMethod($method);
-
-    /**
-     * Retrieves the URI instance.
-     *
-     * This method MUST return a UriInterface instance.
-     *
-     * @link http://tools.ietf.org/html/rfc3986#section-4.3
-     * @return UriInterface Returns a UriInterface instance
-     *     representing the URI of the request.
-     */
-    public function getUri();
-
-    /**
-     * Returns an instance with the provided URI.
-     *
-     * This method MUST update the Host header of the returned request by
-     * default if the URI contains a host component. If the URI does not
-     * contain a host component, any pre-existing Host header MUST be carried
-     * over to the returned request.
-     *
-     * You can opt-in to preserving the original state of the Host header by
-     * setting `$preserveHost` to `true`. When `$preserveHost` is set to
-     * `true`, this method interacts with the Host header in the following ways:
-     *
-     * - If the the Host header is missing or empty, and the new URI contains
-     *   a host component, this method MUST update the Host header in the returned
-     *   request.
-     * - If the Host header is missing or empty, and the new URI does not contain a
-     *   host component, this method MUST NOT update the Host header in the returned
-     *   request.
-     * - If a Host header is present and non-empty, this method MUST NOT update
-     *   the Host header in the returned request.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new UriInterface instance.
-     *
-     * @link http://tools.ietf.org/html/rfc3986#section-4.3
-     * @param UriInterface $uri New request URI to use.
-     * @param bool $preserveHost Preserve the original state of the Host header.
-     * @return self
-     */
-    public function withUri(UriInterface $uri, $preserveHost = false);
-}
diff --git a/vendor/psr/http-message/src/ResponseInterface.php b/vendor/psr/http-message/src/ResponseInterface.php
deleted file mode 100644
index 6724809..0000000
--- a/vendor/psr/http-message/src/ResponseInterface.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an outgoing, server-side response.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - Status code and reason phrase
- * - Headers
- * - Message body
- *
- * Responses are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface ResponseInterface extends MessageInterface
-{
-    /**
-     * Gets the response status code.
-     *
-     * The status code is a 3-digit integer result code of the server's attempt
-     * to understand and satisfy the request.
-     *
-     * @return int Status code.
-     */
-    public function getStatusCode();
-
-    /**
-     * Return an instance with the specified status code and, optionally, reason phrase.
-     *
-     * If no reason phrase is specified, implementations MAY choose to default
-     * to the RFC 7231 or IANA recommended reason phrase for the response's
-     * status code.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated status and reason phrase.
-     *
-     * @link http://tools.ietf.org/html/rfc7231#section-6
-     * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
-     * @param int $code The 3-digit integer result code to set.
-     * @param string $reasonPhrase The reason phrase to use with the
-     *     provided status code; if none is provided, implementations MAY
-     *     use the defaults as suggested in the HTTP specification.
-     * @return self
-     * @throws \InvalidArgumentException For invalid status code arguments.
-     */
-    public function withStatus($code, $reasonPhrase = '');
-
-    /**
-     * Gets the response reason phrase associated with the status code.
-     *
-     * Because a reason phrase is not a required element in a response
-     * status line, the reason phrase value MAY be null. Implementations MAY
-     * choose to return the default RFC 7231 recommended reason phrase (or those
-     * listed in the IANA HTTP Status Code Registry) for the response's
-     * status code.
-     *
-     * @link http://tools.ietf.org/html/rfc7231#section-6
-     * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
-     * @return string Reason phrase; must return an empty string if none present.
-     */
-    public function getReasonPhrase();
-}
diff --git a/vendor/psr/http-message/src/ServerRequestInterface.php b/vendor/psr/http-message/src/ServerRequestInterface.php
deleted file mode 100644
index 916e065..0000000
--- a/vendor/psr/http-message/src/ServerRequestInterface.php
+++ /dev/null
@@ -1,261 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an incoming, server-side HTTP request.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - HTTP method
- * - URI
- * - Headers
- * - Message body
- *
- * Additionally, it encapsulates all data as it has arrived to the
- * application from the CGI and/or PHP environment, including:
- *
- * - The values represented in $_SERVER.
- * - Any cookies provided (generally via $_COOKIE)
- * - Query string arguments (generally via $_GET, or as parsed via parse_str())
- * - Upload files, if any (as represented by $_FILES)
- * - Deserialized body parameters (generally from $_POST)
- *
- * $_SERVER values MUST be treated as immutable, as they represent application
- * state at the time of request; as such, no methods are provided to allow
- * modification of those values. The other values provide such methods, as they
- * can be restored from $_SERVER or the request body, and may need treatment
- * during the application (e.g., body parameters may be deserialized based on
- * content type).
- *
- * Additionally, this interface recognizes the utility of introspecting a
- * request to derive and match additional parameters (e.g., via URI path
- * matching, decrypting cookie values, deserializing non-form-encoded body
- * content, matching authorization headers to users, etc). These parameters
- * are stored in an "attributes" property.
- *
- * Requests are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface ServerRequestInterface extends RequestInterface
-{
-    /**
-     * Retrieve server parameters.
-     *
-     * Retrieves data related to the incoming request environment,
-     * typically derived from PHP's $_SERVER superglobal. The data IS NOT
-     * REQUIRED to originate from $_SERVER.
-     *
-     * @return array
-     */
-    public function getServerParams();
-
-    /**
-     * Retrieve cookies.
-     *
-     * Retrieves cookies sent by the client to the server.
-     *
-     * The data MUST be compatible with the structure of the $_COOKIE
-     * superglobal.
-     *
-     * @return array
-     */
-    public function getCookieParams();
-
-    /**
-     * Return an instance with the specified cookies.
-     *
-     * The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST
-     * be compatible with the structure of $_COOKIE. Typically, this data will
-     * be injected at instantiation.
-     *
-     * This method MUST NOT update the related Cookie header of the request
-     * instance, nor related values in the server params.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated cookie values.
-     *
-     * @param array $cookies Array of key/value pairs representing cookies.
-     * @return self
-     */
-    public function withCookieParams(array $cookies);
-
-    /**
-     * Retrieve query string arguments.
-     *
-     * Retrieves the deserialized query string arguments, if any.
-     *
-     * Note: the query params might not be in sync with the URI or server
-     * params. If you need to ensure you are only getting the original
-     * values, you may need to parse the query string from `getUri()->getQuery()`
-     * or from the `QUERY_STRING` server param.
-     *
-     * @return array
-     */
-    public function getQueryParams();
-
-    /**
-     * Return an instance with the specified query string arguments.
-     *
-     * These values SHOULD remain immutable over the course of the incoming
-     * request. They MAY be injected during instantiation, such as from PHP's
-     * $_GET superglobal, or MAY be derived from some other value such as the
-     * URI. In cases where the arguments are parsed from the URI, the data
-     * MUST be compatible with what PHP's parse_str() would return for
-     * purposes of how duplicate query parameters are handled, and how nested
-     * sets are handled.
-     *
-     * Setting query string arguments MUST NOT change the URI stored by the
-     * request, nor the values in the server params.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated query string arguments.
-     *
-     * @param array $query Array of query string arguments, typically from
-     *     $_GET.
-     * @return self
-     */
-    public function withQueryParams(array $query);
-
-    /**
-     * Retrieve normalized file upload data.
-     *
-     * This method returns upload metadata in a normalized tree, with each leaf
-     * an instance of Psr\Http\Message\UploadedFileInterface.
-     *
-     * These values MAY be prepared from $_FILES or the message body during
-     * instantiation, or MAY be injected via withUploadedFiles().
-     *
-     * @return array An array tree of UploadedFileInterface instances; an empty
-     *     array MUST be returned if no data is present.
-     */
-    public function getUploadedFiles();
-
-    /**
-     * Create a new instance with the specified uploaded files.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated body parameters.
-     *
-     * @param array An array tree of UploadedFileInterface instances.
-     * @return self
-     * @throws \InvalidArgumentException if an invalid structure is provided.
-     */
-    public function withUploadedFiles(array $uploadedFiles);
-
-    /**
-     * Retrieve any parameters provided in the request body.
-     *
-     * If the request Content-Type is either application/x-www-form-urlencoded
-     * or multipart/form-data, and the request method is POST, this method MUST
-     * return the contents of $_POST.
-     *
-     * Otherwise, this method may return any results of deserializing
-     * the request body content; as parsing returns structured content, the
-     * potential types MUST be arrays or objects only. A null value indicates
-     * the absence of body content.
-     *
-     * @return null|array|object The deserialized body parameters, if any.
-     *     These will typically be an array or object.
-     */
-    public function getParsedBody();
-
-    /**
-     * Return an instance with the specified body parameters.
-     *
-     * These MAY be injected during instantiation.
-     *
-     * If the request Content-Type is either application/x-www-form-urlencoded
-     * or multipart/form-data, and the request method is POST, use this method
-     * ONLY to inject the contents of $_POST.
-     *
-     * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of
-     * deserializing the request body content. Deserialization/parsing returns
-     * structured data, and, as such, this method ONLY accepts arrays or objects,
-     * or a null value if nothing was available to parse.
-     *
-     * As an example, if content negotiation determines that the request data
-     * is a JSON payload, this method could be used to create a request
-     * instance with the deserialized parameters.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated body parameters.
-     *
-     * @param null|array|object $data The deserialized body data. This will
-     *     typically be in an array or object.
-     * @return self
-     * @throws \InvalidArgumentException if an unsupported argument type is
-     *     provided.
-     */
-    public function withParsedBody($data);
-
-    /**
-     * Retrieve attributes derived from the request.
-     *
-     * The request "attributes" may be used to allow injection of any
-     * parameters derived from the request: e.g., the results of path
-     * match operations; the results of decrypting cookies; the results of
-     * deserializing non-form-encoded message bodies; etc. Attributes
-     * will be application and request specific, and CAN be mutable.
-     *
-     * @return array Attributes derived from the request.
-     */
-    public function getAttributes();
-
-    /**
-     * Retrieve a single derived request attribute.
-     *
-     * Retrieves a single derived request attribute as described in
-     * getAttributes(). If the attribute has not been previously set, returns
-     * the default value as provided.
-     *
-     * This method obviates the need for a hasAttribute() method, as it allows
-     * specifying a default value to return if the attribute is not found.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @param mixed $default Default value to return if the attribute does not exist.
-     * @return mixed
-     */
-    public function getAttribute($name, $default = null);
-
-    /**
-     * Return an instance with the specified derived request attribute.
-     *
-     * This method allows setting a single derived request attribute as
-     * described in getAttributes().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated attribute.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @param mixed $value The value of the attribute.
-     * @return self
-     */
-    public function withAttribute($name, $value);
-
-    /**
-     * Return an instance that removes the specified derived request attribute.
-     *
-     * This method allows removing a single derived request attribute as
-     * described in getAttributes().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that removes
-     * the attribute.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @return self
-     */
-    public function withoutAttribute($name);
-}
diff --git a/vendor/psr/http-message/src/StreamInterface.php b/vendor/psr/http-message/src/StreamInterface.php
deleted file mode 100644
index f68f391..0000000
--- a/vendor/psr/http-message/src/StreamInterface.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Describes a data stream.
- *
- * Typically, an instance will wrap a PHP stream; this interface provides
- * a wrapper around the most common operations, including serialization of
- * the entire stream to a string.
- */
-interface StreamInterface
-{
-    /**
-     * Reads all data from the stream into a string, from the beginning to end.
-     *
-     * This method MUST attempt to seek to the beginning of the stream before
-     * reading data and read the stream until the end is reached.
-     *
-     * Warning: This could attempt to load a large amount of data into memory.
-     *
-     * This method MUST NOT raise an exception in order to conform with PHP's
-     * string casting operations.
-     *
-     * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring
-     * @return string
-     */
-    public function __toString();
-
-    /**
-     * Closes the stream and any underlying resources.
-     *
-     * @return void
-     */
-    public function close();
-
-    /**
-     * Separates any underlying resources from the stream.
-     *
-     * After the stream has been detached, the stream is in an unusable state.
-     *
-     * @return resource|null Underlying PHP stream, if any
-     */
-    public function detach();
-
-    /**
-     * Get the size of the stream if known.
-     *
-     * @return int|null Returns the size in bytes if known, or null if unknown.
-     */
-    public function getSize();
-
-    /**
-     * Returns the current position of the file read/write pointer
-     *
-     * @return int Position of the file pointer
-     * @throws \RuntimeException on error.
-     */
-    public function tell();
-
-    /**
-     * Returns true if the stream is at the end of the stream.
-     *
-     * @return bool
-     */
-    public function eof();
-
-    /**
-     * Returns whether or not the stream is seekable.
-     *
-     * @return bool
-     */
-    public function isSeekable();
-
-    /**
-     * Seek to a position in the stream.
-     *
-     * @link http://www.php.net/manual/en/function.fseek.php
-     * @param int $offset Stream offset
-     * @param int $whence Specifies how the cursor position will be calculated
-     *     based on the seek offset. Valid values are identical to the built-in
-     *     PHP $whence values for `fseek()`.  SEEK_SET: Set position equal to
-     *     offset bytes SEEK_CUR: Set position to current location plus offset
-     *     SEEK_END: Set position to end-of-stream plus offset.
-     * @throws \RuntimeException on failure.
-     */
-    public function seek($offset, $whence = SEEK_SET);
-
-    /**
-     * Seek to the beginning of the stream.
-     *
-     * If the stream is not seekable, this method will raise an exception;
-     * otherwise, it will perform a seek(0).
-     *
-     * @see seek()
-     * @link http://www.php.net/manual/en/function.fseek.php
-     * @throws \RuntimeException on failure.
-     */
-    public function rewind();
-
-    /**
-     * Returns whether or not the stream is writable.
-     *
-     * @return bool
-     */
-    public function isWritable();
-
-    /**
-     * Write data to the stream.
-     *
-     * @param string $string The string that is to be written.
-     * @return int Returns the number of bytes written to the stream.
-     * @throws \RuntimeException on failure.
-     */
-    public function write($string);
-
-    /**
-     * Returns whether or not the stream is readable.
-     *
-     * @return bool
-     */
-    public function isReadable();
-
-    /**
-     * Read data from the stream.
-     *
-     * @param int $length Read up to $length bytes from the object and return
-     *     them. Fewer than $length bytes may be returned if underlying stream
-     *     call returns fewer bytes.
-     * @return string Returns the data read from the stream, or an empty string
-     *     if no bytes are available.
-     * @throws \RuntimeException if an error occurs.
-     */
-    public function read($length);
-
-    /**
-     * Returns the remaining contents in a string
-     *
-     * @return string
-     * @throws \RuntimeException if unable to read or an error occurs while
-     *     reading.
-     */
-    public function getContents();
-
-    /**
-     * Get stream metadata as an associative array or retrieve a specific key.
-     *
-     * The keys returned are identical to the keys returned from PHP's
-     * stream_get_meta_data() function.
-     *
-     * @link http://php.net/manual/en/function.stream-get-meta-data.php
-     * @param string $key Specific metadata to retrieve.
-     * @return array|mixed|null Returns an associative array if no key is
-     *     provided. Returns a specific key value if a key is provided and the
-     *     value is found, or null if the key is not found.
-     */
-    public function getMetadata($key = null);
-}
diff --git a/vendor/psr/http-message/src/UploadedFileInterface.php b/vendor/psr/http-message/src/UploadedFileInterface.php
deleted file mode 100644
index 5ad288d..0000000
--- a/vendor/psr/http-message/src/UploadedFileInterface.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Value object representing a file uploaded through an HTTP request.
- *
- * Instances of this interface are considered immutable; all methods that
- * might change state MUST be implemented such that they retain the internal
- * state of the current instance and return an instance that contains the
- * changed state.
- */
-interface UploadedFileInterface
-{
-    /**
-     * Retrieve a stream representing the uploaded file.
-     *
-     * This method MUST return a StreamInterface instance, representing the
-     * uploaded file. The purpose of this method is to allow utilizing native PHP
-     * stream functionality to manipulate the file upload, such as
-     * stream_copy_to_stream() (though the result will need to be decorated in a
-     * native PHP stream wrapper to work with such functions).
-     *
-     * If the moveTo() method has been called previously, this method MUST raise
-     * an exception.
-     *
-     * @return StreamInterface Stream representation of the uploaded file.
-     * @throws \RuntimeException in cases when no stream is available or can be
-     *     created.
-     */
-    public function getStream();
-
-    /**
-     * Move the uploaded file to a new location.
-     *
-     * Use this method as an alternative to move_uploaded_file(). This method is
-     * guaranteed to work in both SAPI and non-SAPI environments.
-     * Implementations must determine which environment they are in, and use the
-     * appropriate method (move_uploaded_file(), rename(), or a stream
-     * operation) to perform the operation.
-     *
-     * $targetPath may be an absolute path, or a relative path. If it is a
-     * relative path, resolution should be the same as used by PHP's rename()
-     * function.
-     *
-     * The original file or stream MUST be removed on completion.
-     *
-     * If this method is called more than once, any subsequent calls MUST raise
-     * an exception.
-     *
-     * When used in an SAPI environment where $_FILES is populated, when writing
-     * files via moveTo(), is_uploaded_file() and move_uploaded_file() SHOULD be
-     * used to ensure permissions and upload status are verified correctly.
-     *
-     * If you wish to move to a stream, use getStream(), as SAPI operations
-     * cannot guarantee writing to stream destinations.
-     *
-     * @see http://php.net/is_uploaded_file
-     * @see http://php.net/move_uploaded_file
-     * @param string $targetPath Path to which to move the uploaded file.
-     * @throws \InvalidArgumentException if the $path specified is invalid.
-     * @throws \RuntimeException on any error during the move operation, or on
-     *     the second or subsequent call to the method.
-     */
-    public function moveTo($targetPath);
-    
-    /**
-     * Retrieve the file size.
-     *
-     * Implementations SHOULD return the value stored in the "size" key of
-     * the file in the $_FILES array if available, as PHP calculates this based
-     * on the actual size transmitted.
-     *
-     * @return int|null The file size in bytes or null if unknown.
-     */
-    public function getSize();
-    
-    /**
-     * Retrieve the error associated with the uploaded file.
-     *
-     * The return value MUST be one of PHP's UPLOAD_ERR_XXX constants.
-     *
-     * If the file was uploaded successfully, this method MUST return
-     * UPLOAD_ERR_OK.
-     *
-     * Implementations SHOULD return the value stored in the "error" key of
-     * the file in the $_FILES array.
-     *
-     * @see http://php.net/manual/en/features.file-upload.errors.php
-     * @return int One of PHP's UPLOAD_ERR_XXX constants.
-     */
-    public function getError();
-    
-    /**
-     * Retrieve the filename sent by the client.
-     *
-     * Do not trust the value returned by this method. A client could send
-     * a malicious filename with the intention to corrupt or hack your
-     * application.
-     *
-     * Implementations SHOULD return the value stored in the "name" key of
-     * the file in the $_FILES array.
-     *
-     * @return string|null The filename sent by the client or null if none
-     *     was provided.
-     */
-    public function getClientFilename();
-    
-    /**
-     * Retrieve the media type sent by the client.
-     *
-     * Do not trust the value returned by this method. A client could send
-     * a malicious media type with the intention to corrupt or hack your
-     * application.
-     *
-     * Implementations SHOULD return the value stored in the "type" key of
-     * the file in the $_FILES array.
-     *
-     * @return string|null The media type sent by the client or null if none
-     *     was provided.
-     */
-    public function getClientMediaType();
-}
diff --git a/vendor/psr/http-message/src/UriInterface.php b/vendor/psr/http-message/src/UriInterface.php
deleted file mode 100644
index 1ff5bf0..0000000
--- a/vendor/psr/http-message/src/UriInterface.php
+++ /dev/null
@@ -1,323 +0,0 @@
-<?php
-namespace Psr\Http\Message;
-
-/**
- * Value object representing a URI.
- *
- * This interface is meant to represent URIs according to RFC 3986 and to
- * provide methods for most common operations. Additional functionality for
- * working with URIs can be provided on top of the interface or externally.
- * Its primary use is for HTTP requests, but may also be used in other
- * contexts.
- *
- * Instances of this interface are considered immutable; all methods that
- * might change state MUST be implemented such that they retain the internal
- * state of the current instance and return an instance that contains the
- * changed state.
- *
- * Typically the Host header will be also be present in the request message.
- * For server-side requests, the scheme will typically be discoverable in the
- * server parameters.
- *
- * @link http://tools.ietf.org/html/rfc3986 (the URI specification)
- */
-interface UriInterface
-{
-    /**
-     * Retrieve the scheme component of the URI.
-     *
-     * If no scheme is present, this method MUST return an empty string.
-     *
-     * The value returned MUST be normalized to lowercase, per RFC 3986
-     * Section 3.1.
-     *
-     * The trailing ":" character is not part of the scheme and MUST NOT be
-     * added.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-3.1
-     * @return string The URI scheme.
-     */
-    public function getScheme();
-
-    /**
-     * Retrieve the authority component of the URI.
-     *
-     * If no authority information is present, this method MUST return an empty
-     * string.
-     *
-     * The authority syntax of the URI is:
-     *
-     * <pre>
-     * [user-info@]host[:port]
-     * </pre>
-     *
-     * If the port component is not set or is the standard port for the current
-     * scheme, it SHOULD NOT be included.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-3.2
-     * @return string The URI authority, in "[user-info@]host[:port]" format.
-     */
-    public function getAuthority();
-
-    /**
-     * Retrieve the user information component of the URI.
-     *
-     * If no user information is present, this method MUST return an empty
-     * string.
-     *
-     * If a user is present in the URI, this will return that value;
-     * additionally, if the password is also present, it will be appended to the
-     * user value, with a colon (":") separating the values.
-     *
-     * The trailing "@" character is not part of the user information and MUST
-     * NOT be added.
-     *
-     * @return string The URI user information, in "username[:password]" format.
-     */
-    public function getUserInfo();
-
-    /**
-     * Retrieve the host component of the URI.
-     *
-     * If no host is present, this method MUST return an empty string.
-     *
-     * The value returned MUST be normalized to lowercase, per RFC 3986
-     * Section 3.2.2.
-     *
-     * @see http://tools.ietf.org/html/rfc3986#section-3.2.2
-     * @return string The URI host.
-     */
-    public function getHost();
-
-    /**
-     * Retrieve the port component of the URI.
-     *
-     * If a port is present, and it is non-standard for the current scheme,
-     * this method MUST return it as an integer. If the port is the standard port
-     * used with the current scheme, this method SHOULD return null.
-     *
-     * If no port is present, and no scheme is present, this method MUST return
-     * a null value.
-     *
-     * If no port is present, but a scheme is present, this method MAY return
-     * the standard port for that scheme, but SHOULD return null.
-     *
-     * @return null|int The URI port.
-     */
-    public function getPort();
-
-    /**
-     * Retrieve the path component of the URI.
-     *
-     * The path can either be empty or absolute (starting with a slash) or
-     * rootless (not starting with a slash). Implementations MUST support all
-     * three syntaxes.
-     *
-     * Normally, the empty path "" and absolute path "/" are considered equal as
-     * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically
-     * do this normalization because in contexts with a trimmed base path, e.g.
-     * the front controller, this difference becomes significant. It's the task
-     * of the user to handle both "" and "/".
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.3.
-     *
-     * As an example, if the value should include a slash ("/") not intended as
-     * delimiter between path segments, that value MUST be passed in encoded
-     * form (e.g., "%2F") to the instance.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.3
-     * @return string The URI path.
-     */
-    public function getPath();
-
-    /**
-     * Retrieve the query string of the URI.
-     *
-     * If no query string is present, this method MUST return an empty string.
-     *
-     * The leading "?" character is not part of the query and MUST NOT be
-     * added.
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.4.
-     *
-     * As an example, if a value in a key/value pair of the query string should
-     * include an ampersand ("&") not intended as a delimiter between values,
-     * that value MUST be passed in encoded form (e.g., "%26") to the instance.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.4
-     * @return string The URI query string.
-     */
-    public function getQuery();
-
-    /**
-     * Retrieve the fragment component of the URI.
-     *
-     * If no fragment is present, this method MUST return an empty string.
-     *
-     * The leading "#" character is not part of the fragment and MUST NOT be
-     * added.
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.5.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.5
-     * @return string The URI fragment.
-     */
-    public function getFragment();
-
-    /**
-     * Return an instance with the specified scheme.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified scheme.
-     *
-     * Implementations MUST support the schemes "http" and "https" case
-     * insensitively, and MAY accommodate other schemes if required.
-     *
-     * An empty scheme is equivalent to removing the scheme.
-     *
-     * @param string $scheme The scheme to use with the new instance.
-     * @return self A new instance with the specified scheme.
-     * @throws \InvalidArgumentException for invalid or unsupported schemes.
-     */
-    public function withScheme($scheme);
-
-    /**
-     * Return an instance with the specified user information.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified user information.
-     *
-     * Password is optional, but the user information MUST include the
-     * user; an empty string for the user is equivalent to removing user
-     * information.
-     *
-     * @param string $user The user name to use for authority.
-     * @param null|string $password The password associated with $user.
-     * @return self A new instance with the specified user information.
-     */
-    public function withUserInfo($user, $password = null);
-
-    /**
-     * Return an instance with the specified host.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified host.
-     *
-     * An empty host value is equivalent to removing the host.
-     *
-     * @param string $host The hostname to use with the new instance.
-     * @return self A new instance with the specified host.
-     * @throws \InvalidArgumentException for invalid hostnames.
-     */
-    public function withHost($host);
-
-    /**
-     * Return an instance with the specified port.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified port.
-     *
-     * Implementations MUST raise an exception for ports outside the
-     * established TCP and UDP port ranges.
-     *
-     * A null value provided for the port is equivalent to removing the port
-     * information.
-     *
-     * @param null|int $port The port to use with the new instance; a null value
-     *     removes the port information.
-     * @return self A new instance with the specified port.
-     * @throws \InvalidArgumentException for invalid ports.
-     */
-    public function withPort($port);
-
-    /**
-     * Return an instance with the specified path.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified path.
-     *
-     * The path can either be empty or absolute (starting with a slash) or
-     * rootless (not starting with a slash). Implementations MUST support all
-     * three syntaxes.
-     *
-     * If the path is intended to be domain-relative rather than path relative then
-     * it must begin with a slash ("/"). Paths not starting with a slash ("/")
-     * are assumed to be relative to some base path known to the application or
-     * consumer.
-     *
-     * Users can provide both encoded and decoded path characters.
-     * Implementations ensure the correct encoding as outlined in getPath().
-     *
-     * @param string $path The path to use with the new instance.
-     * @return self A new instance with the specified path.
-     * @throws \InvalidArgumentException for invalid paths.
-     */
-    public function withPath($path);
-
-    /**
-     * Return an instance with the specified query string.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified query string.
-     *
-     * Users can provide both encoded and decoded query characters.
-     * Implementations ensure the correct encoding as outlined in getQuery().
-     *
-     * An empty query string value is equivalent to removing the query string.
-     *
-     * @param string $query The query string to use with the new instance.
-     * @return self A new instance with the specified query string.
-     * @throws \InvalidArgumentException for invalid query strings.
-     */
-    public function withQuery($query);
-
-    /**
-     * Return an instance with the specified URI fragment.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified URI fragment.
-     *
-     * Users can provide both encoded and decoded fragment characters.
-     * Implementations ensure the correct encoding as outlined in getFragment().
-     *
-     * An empty fragment value is equivalent to removing the fragment.
-     *
-     * @param string $fragment The fragment to use with the new instance.
-     * @return self A new instance with the specified fragment.
-     */
-    public function withFragment($fragment);
-
-    /**
-     * Return the string representation as a URI reference.
-     *
-     * Depending on which components of the URI are present, the resulting
-     * string is either a full URI or relative reference according to RFC 3986,
-     * Section 4.1. The method concatenates the various components of the URI,
-     * using the appropriate delimiters:
-     *
-     * - If a scheme is present, it MUST be suffixed by ":".
-     * - If an authority is present, it MUST be prefixed by "//".
-     * - The path can be concatenated without delimiters. But there are two
-     *   cases where the path has to be adjusted to make the URI reference
-     *   valid as PHP does not allow to throw an exception in __toString():
-     *     - If the path is rootless and an authority is present, the path MUST
-     *       be prefixed by "/".
-     *     - If the path is starting with more than one "/" and no authority is
-     *       present, the starting slashes MUST be reduced to one.
-     * - If a query is present, it MUST be prefixed by "?".
-     * - If a fragment is present, it MUST be prefixed by "#".
-     *
-     * @see http://tools.ietf.org/html/rfc3986#section-4.1
-     * @return string
-     */
-    public function __toString();
-}
diff --git a/vendor/psr/log/.gitignore b/vendor/psr/log/.gitignore
deleted file mode 100644
index 22d0d82..0000000
--- a/vendor/psr/log/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-vendor
diff --git a/vendor/psr/log/LICENSE b/vendor/psr/log/LICENSE
deleted file mode 100644
index 474c952..0000000
--- a/vendor/psr/log/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2012 PHP Framework Interoperability Group
-
-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/psr/log/Psr/Log/AbstractLogger.php b/vendor/psr/log/Psr/Log/AbstractLogger.php
deleted file mode 100644
index 00f9034..0000000
--- a/vendor/psr/log/Psr/Log/AbstractLogger.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * This is a simple Logger implementation that other Loggers can inherit from.
- *
- * It simply delegates all log-level-specific methods to the `log` method to
- * reduce boilerplate code that a simple Logger that does the same thing with
- * messages regardless of the error level has to implement.
- */
-abstract class AbstractLogger implements LoggerInterface
-{
-    /**
-     * System is unusable.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function emergency($message, array $context = array())
-    {
-        $this->log(LogLevel::EMERGENCY, $message, $context);
-    }
-
-    /**
-     * Action must be taken immediately.
-     *
-     * Example: Entire website down, database unavailable, etc. This should
-     * trigger the SMS alerts and wake you up.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function alert($message, array $context = array())
-    {
-        $this->log(LogLevel::ALERT, $message, $context);
-    }
-
-    /**
-     * Critical conditions.
-     *
-     * Example: Application component unavailable, unexpected exception.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function critical($message, array $context = array())
-    {
-        $this->log(LogLevel::CRITICAL, $message, $context);
-    }
-
-    /**
-     * Runtime errors that do not require immediate action but should typically
-     * be logged and monitored.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function error($message, array $context = array())
-    {
-        $this->log(LogLevel::ERROR, $message, $context);
-    }
-
-    /**
-     * Exceptional occurrences that are not errors.
-     *
-     * Example: Use of deprecated APIs, poor use of an API, undesirable things
-     * that are not necessarily wrong.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function warning($message, array $context = array())
-    {
-        $this->log(LogLevel::WARNING, $message, $context);
-    }
-
-    /**
-     * Normal but significant events.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function notice($message, array $context = array())
-    {
-        $this->log(LogLevel::NOTICE, $message, $context);
-    }
-
-    /**
-     * Interesting events.
-     *
-     * Example: User logs in, SQL logs.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function info($message, array $context = array())
-    {
-        $this->log(LogLevel::INFO, $message, $context);
-    }
-
-    /**
-     * Detailed debug information.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function debug($message, array $context = array())
-    {
-        $this->log(LogLevel::DEBUG, $message, $context);
-    }
-}
diff --git a/vendor/psr/log/Psr/Log/InvalidArgumentException.php b/vendor/psr/log/Psr/Log/InvalidArgumentException.php
deleted file mode 100644
index 67f852d..0000000
--- a/vendor/psr/log/Psr/Log/InvalidArgumentException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-class InvalidArgumentException extends \InvalidArgumentException
-{
-}
diff --git a/vendor/psr/log/Psr/Log/LogLevel.php b/vendor/psr/log/Psr/Log/LogLevel.php
deleted file mode 100644
index e32c151..0000000
--- a/vendor/psr/log/Psr/Log/LogLevel.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * Describes log levels
- */
-class LogLevel
-{
-    const EMERGENCY = 'emergency';
-    const ALERT = 'alert';
-    const CRITICAL = 'critical';
-    const ERROR = 'error';
-    const WARNING = 'warning';
-    const NOTICE = 'notice';
-    const INFO = 'info';
-    const DEBUG = 'debug';
-}
diff --git a/vendor/psr/log/Psr/Log/LoggerAwareInterface.php b/vendor/psr/log/Psr/Log/LoggerAwareInterface.php
deleted file mode 100644
index 2eebc4e..0000000
--- a/vendor/psr/log/Psr/Log/LoggerAwareInterface.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * Describes a logger-aware instance
- */
-interface LoggerAwareInterface
-{
-    /**
-     * Sets a logger instance on the object
-     *
-     * @param LoggerInterface $logger
-     * @return null
-     */
-    public function setLogger(LoggerInterface $logger);
-}
diff --git a/vendor/psr/log/Psr/Log/LoggerAwareTrait.php b/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
deleted file mode 100644
index f087a3d..0000000
--- a/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * Basic Implementation of LoggerAwareInterface.
- */
-trait LoggerAwareTrait
-{
-    /** @var LoggerInterface */
-    protected $logger;
-
-    /**
-     * Sets a logger.
-     * 
-     * @param LoggerInterface $logger
-     */
-    public function setLogger(LoggerInterface $logger)
-    {
-        $this->logger = $logger;
-    }
-}
diff --git a/vendor/psr/log/Psr/Log/LoggerInterface.php b/vendor/psr/log/Psr/Log/LoggerInterface.php
deleted file mode 100644
index 476bb96..0000000
--- a/vendor/psr/log/Psr/Log/LoggerInterface.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * Describes a logger instance
- *
- * The message MUST be a string or object implementing __toString().
- *
- * The message MAY contain placeholders in the form: {foo} where foo
- * will be replaced by the context data in key "foo".
- *
- * The context array can contain arbitrary data, the only assumption that
- * can be made by implementors is that if an Exception instance is given
- * to produce a stack trace, it MUST be in a key named "exception".
- *
- * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
- * for the full interface specification.
- */
-interface LoggerInterface
-{
-    /**
-     * System is unusable.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function emergency($message, array $context = array());
-
-    /**
-     * Action must be taken immediately.
-     *
-     * Example: Entire website down, database unavailable, etc. This should
-     * trigger the SMS alerts and wake you up.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function alert($message, array $context = array());
-
-    /**
-     * Critical conditions.
-     *
-     * Example: Application component unavailable, unexpected exception.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function critical($message, array $context = array());
-
-    /**
-     * Runtime errors that do not require immediate action but should typically
-     * be logged and monitored.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function error($message, array $context = array());
-
-    /**
-     * Exceptional occurrences that are not errors.
-     *
-     * Example: Use of deprecated APIs, poor use of an API, undesirable things
-     * that are not necessarily wrong.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function warning($message, array $context = array());
-
-    /**
-     * Normal but significant events.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function notice($message, array $context = array());
-
-    /**
-     * Interesting events.
-     *
-     * Example: User logs in, SQL logs.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function info($message, array $context = array());
-
-    /**
-     * Detailed debug information.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function debug($message, array $context = array());
-
-    /**
-     * Logs with an arbitrary level.
-     *
-     * @param mixed $level
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function log($level, $message, array $context = array());
-}
diff --git a/vendor/psr/log/Psr/Log/LoggerTrait.php b/vendor/psr/log/Psr/Log/LoggerTrait.php
deleted file mode 100644
index 5912496..0000000
--- a/vendor/psr/log/Psr/Log/LoggerTrait.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * This is a simple Logger trait that classes unable to extend AbstractLogger
- * (because they extend another class, etc) can include.
- *
- * It simply delegates all log-level-specific methods to the `log` method to 
- * reduce boilerplate code that a simple Logger that does the same thing with 
- * messages regardless of the error level has to implement.
- */
-trait LoggerTrait
-{
-    /**
-     * System is unusable.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function emergency($message, array $context = array())
-    {
-        $this->log(LogLevel::EMERGENCY, $message, $context);
-    }
-
-    /**
-     * Action must be taken immediately.
-     *
-     * Example: Entire website down, database unavailable, etc. This should
-     * trigger the SMS alerts and wake you up.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function alert($message, array $context = array())
-    {
-        $this->log(LogLevel::ALERT, $message, $context);
-    }
-
-    /**
-     * Critical conditions.
-     *
-     * Example: Application component unavailable, unexpected exception.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function critical($message, array $context = array())
-    {
-        $this->log(LogLevel::CRITICAL, $message, $context);
-    }
-
-    /**
-     * Runtime errors that do not require immediate action but should typically
-     * be logged and monitored.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function error($message, array $context = array())
-    {
-        $this->log(LogLevel::ERROR, $message, $context);
-    }
-
-    /**
-     * Exceptional occurrences that are not errors.
-     *
-     * Example: Use of deprecated APIs, poor use of an API, undesirable things
-     * that are not necessarily wrong.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function warning($message, array $context = array())
-    {
-        $this->log(LogLevel::WARNING, $message, $context);
-    }
-
-    /**
-     * Normal but significant events.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function notice($message, array $context = array())
-    {
-        $this->log(LogLevel::NOTICE, $message, $context);
-    }
-
-    /**
-     * Interesting events.
-     *
-     * Example: User logs in, SQL logs.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function info($message, array $context = array())
-    {
-        $this->log(LogLevel::INFO, $message, $context);
-    }
-
-    /**
-     * Detailed debug information.
-     *
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function debug($message, array $context = array())
-    {
-        $this->log(LogLevel::DEBUG, $message, $context);
-    }
-
-    /**
-     * Logs with an arbitrary level.
-     *
-     * @param mixed $level
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    abstract public function log($level, $message, array $context = array());
-}
diff --git a/vendor/psr/log/Psr/Log/NullLogger.php b/vendor/psr/log/Psr/Log/NullLogger.php
deleted file mode 100644
index 553a3c5..0000000
--- a/vendor/psr/log/Psr/Log/NullLogger.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Psr\Log;
-
-/**
- * This Logger can be used to avoid conditional log calls
- *
- * Logging should always be optional, and if no logger is provided to your
- * library creating a NullLogger instance to have something to throw logs at
- * is a good way to avoid littering your code with `if ($this->logger) { }`
- * blocks.
- */
-class NullLogger extends AbstractLogger
-{
-    /**
-     * Logs with an arbitrary level.
-     *
-     * @param mixed $level
-     * @param string $message
-     * @param array $context
-     * @return null
-     */
-    public function log($level, $message, array $context = array())
-    {
-        // noop
-    }
-}
diff --git a/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php b/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
deleted file mode 100644
index a932815..0000000
--- a/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-namespace Psr\Log\Test;
-
-use Psr\Log\LogLevel;
-
-/**
- * Provides a base test class for ensuring compliance with the LoggerInterface
- *
- * Implementors can extend the class and implement abstract methods to run this as part of their test suite
- */
-abstract class LoggerInterfaceTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @return LoggerInterface
-     */
-    abstract function getLogger();
-
-    /**
-     * This must return the log messages in order with a simple formatting: "<LOG LEVEL> <MESSAGE>"
-     *
-     * Example ->error('Foo') would yield "error Foo"
-     *
-     * @return string[]
-     */
-    abstract function getLogs();
-
-    public function testImplements()
-    {
-        $this->assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger());
-    }
-
-    /**
-     * @dataProvider provideLevelsAndMessages
-     */
-    public function testLogsAtAllLevels($level, $message)
-    {
-        $logger = $this->getLogger();
-        $logger->{$level}($message, array('user' => 'Bob'));
-        $logger->log($level, $message, array('user' => 'Bob'));
-
-        $expected = array(
-            $level.' message of level '.$level.' with context: Bob',
-            $level.' message of level '.$level.' with context: Bob',
-        );
-        $this->assertEquals($expected, $this->getLogs());
-    }
-
-    public function provideLevelsAndMessages()
-    {
-        return array(
-            LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'),
-            LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'),
-            LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'),
-            LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'),
-            LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'),
-            LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'),
-            LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'),
-            LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'),
-        );
-    }
-
-    /**
-     * @expectedException Psr\Log\InvalidArgumentException
-     */
-    public function testThrowsOnInvalidLevel()
-    {
-        $logger = $this->getLogger();
-        $logger->log('invalid level', 'Foo');
-    }
-
-    public function testContextReplacement()
-    {
-        $logger = $this->getLogger();
-        $logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar'));
-
-        $expected = array('info {Message {nothing} Bob Bar a}');
-        $this->assertEquals($expected, $this->getLogs());
-    }
-
-    public function testObjectCastToString()
-    {
-        $dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString'));
-        $dummy->expects($this->once())
-            ->method('__toString')
-            ->will($this->returnValue('DUMMY'));
-
-        $this->getLogger()->warning($dummy);
-    }
-
-    public function testContextCanContainAnything()
-    {
-        $context = array(
-            'bool' => true,
-            'null' => null,
-            'string' => 'Foo',
-            'int' => 0,
-            'float' => 0.5,
-            'nested' => array('with object' => new DummyTest),
-            'object' => new \DateTime,
-            'resource' => fopen('php://memory', 'r'),
-        );
-
-        $this->getLogger()->warning('Crazy context data', $context);
-    }
-
-    public function testContextExceptionKeyCanBeExceptionOrOtherValues()
-    {
-        $this->getLogger()->warning('Random message', array('exception' => 'oops'));
-        $this->getLogger()->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail')));
-    }
-}
-
-class DummyTest
-{
-}
\ No newline at end of file
diff --git a/vendor/psr/log/README.md b/vendor/psr/log/README.md
deleted file mode 100644
index 574bc1c..0000000
--- a/vendor/psr/log/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-PSR Log
-=======
-
-This repository holds all interfaces/classes/traits related to
-[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md).
-
-Note that this is not a logger of its own. It is merely an interface that
-describes a logger. See the specification for more details.
-
-Usage
------
-
-If you need a logger, you can use the interface like this:
-
-```php
-<?php
-
-use Psr\Log\LoggerInterface;
-
-class Foo
-{
-    private $logger;
-
-    public function __construct(LoggerInterface $logger = null)
-    {
-        $this->logger = $logger;
-    }
-
-    public function doSomething()
-    {
-        if ($this->logger) {
-            $this->logger->info('Doing work');
-        }
-
-        // do something useful
-    }
-}
-```
-
-You can then pick one of the implementations of the interface to get a logger.
-
-If you want to implement the interface, you can require this package and
-implement `Psr\Log\LoggerInterface` in your code. Please read the
-[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
-for details.
diff --git a/vendor/psr/log/composer.json b/vendor/psr/log/composer.json
deleted file mode 100644
index 6bdcc21..0000000
--- a/vendor/psr/log/composer.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-    "name": "psr/log",
-    "description": "Common interface for logging libraries",
-    "keywords": ["psr", "psr-3", "log"],
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "PHP-FIG",
-            "homepage": "http://www.php-fig.org/"
-        }
-    ],
-    "autoload": {
-        "psr-0": {
-            "Psr\\Log\\": ""
-        }
-    }
-}
diff --git a/vendor/sebastian/comparator/.gitignore b/vendor/sebastian/comparator/.gitignore
deleted file mode 100644
index c2990fc..0000000
--- a/vendor/sebastian/comparator/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-/build/coverage
-/composer.lock
-/composer.phar
-/phpunit.xml
-/.idea
-/vendor
diff --git a/vendor/sebastian/comparator/.travis.yml b/vendor/sebastian/comparator/.travis.yml
deleted file mode 100644
index 082370f..0000000
--- a/vendor/sebastian/comparator/.travis.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-language: php
-
-sudo: false
-
-install:
-  - travis_retry composer install --no-interaction --prefer-source
-
-script: ./vendor/bin/phpunit --configuration ./build/travis-ci.xml
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-notifications:
-  email: false
-  webhooks:
-    urls:
-      - https://webhooks.gitter.im/e/6668f52f3dd4e3f81960
-    on_success: always
-    on_failure: always
-    on_start: false
diff --git a/vendor/sebastian/comparator/LICENSE b/vendor/sebastian/comparator/LICENSE
deleted file mode 100644
index 334b637..0000000
--- a/vendor/sebastian/comparator/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-Comparator
-
-Copyright (c) 2002-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/comparator/README.md b/vendor/sebastian/comparator/README.md
deleted file mode 100644
index faea412..0000000
--- a/vendor/sebastian/comparator/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-[![Build Status](https://travis-ci.org/sebastianbergmann/comparator.svg?branch=master)](https://travis-ci.org/sebastianbergmann/comparator)
-
-# Comparator
-
-This component provides the functionality to compare PHP values for equality.
-
-## Installation
-
-To add Comparator as a local, per-project dependency to your project, simply add a dependency on `sebastian/comparator` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on Comparator 1.2:
-
-```JSON
-{
-    "require": {
-        "sebastian/comparator": "~1.2"
-    }
-}
-```
-
-## Usage
-
-```php
-<?php
-use SebastianBergmann\Comparator\Factory;
-use SebastianBergmann\Comparator\ComparisonFailure;
-
-$date1 = new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York'));
-$date2 = new DateTime('2013-03-29 03:13:35', new DateTimeZone('America/Chicago'));
-
-$factory = new Factory;
-$comparator = $factory->getComparatorFor($date1, $date2);
-
-try {
-    $comparator->assertEquals($date1, $date2);
-    print "Dates match";
-}
-
-catch (ComparisonFailure $failure) {
-    print "Dates don't match";
-}
-```
-
diff --git a/vendor/sebastian/comparator/build.xml b/vendor/sebastian/comparator/build.xml
deleted file mode 100644
index 552ebce..0000000
--- a/vendor/sebastian/comparator/build.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="comparator">
- <target name="clean" description="Cleanup build artifacts">
-  <delete dir="${basedir}/vendor"/>
-  <delete file="${basedir}/composer.lock"/>
- </target>
-
- <target name="composer" depends="clean" description="Install dependencies with Composer">
-  <tstamp>
-   <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/>
-  </tstamp>
-  <delete>
-   <fileset dir="${basedir}">
-    <include name="composer.phar" />
-    <date datetime="${thirty.days.ago}" when="before"/>
-   </fileset>
-  </delete>
-
-  <get src="https://getcomposer.org/composer.phar" dest="${basedir}/composer.phar" skipexisting="true"/>
-
-  <exec executable="php">
-   <arg value="composer.phar"/>
-   <arg value="install"/>
-  </exec>
- </target>
-
- <target name="phpab" description="Generate autoloader script">
-  <exec executable="phpab">
-   <arg value="--output" />
-   <arg path="tests/autoload.php" />
-   <arg path="tests" />
-  </exec>
- </target>
-</project>
diff --git a/vendor/sebastian/comparator/build/travis-ci.xml b/vendor/sebastian/comparator/build/travis-ci.xml
deleted file mode 100644
index 751a3bc..0000000
--- a/vendor/sebastian/comparator/build/travis-ci.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.2/phpunit.xsd"
-         bootstrap="../tests/bootstrap.php"
-         backupGlobals="false"
-         verbose="true">
-  <testsuite name="Comparator">
-    <directory suffix="Test.php">../tests</directory>
-  </testsuite>
-</phpunit>
-
diff --git a/vendor/sebastian/comparator/composer.json b/vendor/sebastian/comparator/composer.json
deleted file mode 100644
index 79f0803..0000000
--- a/vendor/sebastian/comparator/composer.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-    "name": "sebastian/comparator",
-    "description": "Provides the functionality to compare PHP values for equality",
-    "keywords": ["comparator","compare","equality"],
-    "homepage": "http://www.github.com/sebastianbergmann/comparator",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sebastian@phpunit.de"
-        },
-        {
-            "name": "Jeff Welch",
-            "email": "whatthejeff@gmail.com"
-        },
-        {
-            "name": "Volker Dusch",
-            "email": "github@wallbash.com"
-        },
-        {
-            "name": "Bernhard Schussek",
-            "email": "bschussek@2bepublished.at"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.3",
-        "sebastian/diff": "~1.2",
-        "sebastian/exporter": "~1.2"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.4"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.2.x-dev"
-        }
-    }
-}
-
diff --git a/vendor/sebastian/comparator/phpunit.xml.dist b/vendor/sebastian/comparator/phpunit.xml.dist
deleted file mode 100644
index e1eaf2c..0000000
--- a/vendor/sebastian/comparator/phpunit.xml.dist
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         bootstrap="tests/bootstrap.php"
-         backupGlobals="false"
-         verbose="true">
-  <testsuite name="Comparator">
-    <directory suffix="Test.php">tests</directory>
-  </testsuite>
-
-  <logging>
-    <log type="coverage-html" target="build/coverage"/>
-  </logging>
-
-  <filter>
-    <whitelist processUncoveredFilesFromWhitelist="true">
-      <directory suffix=".php">src</directory>
-    </whitelist>
-  </filter>
-</phpunit>
-
diff --git a/vendor/sebastian/comparator/src/ArrayComparator.php b/vendor/sebastian/comparator/src/ArrayComparator.php
deleted file mode 100644
index 80f1cdc..0000000
--- a/vendor/sebastian/comparator/src/ArrayComparator.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares arrays for equality.
- */
-class ArrayComparator extends Comparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        return is_array($expected) && is_array($actual);
-    }
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @param  array             $processed
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = array())
-    {
-        if ($canonicalize) {
-            sort($expected);
-            sort($actual);
-        }
-
-        $remaining = $actual;
-        $expString = $actString = "Array (\n";
-        $equal     = true;
-
-        foreach ($expected as $key => $value) {
-            unset($remaining[$key]);
-
-            if (!array_key_exists($key, $actual)) {
-                $expString .= sprintf(
-                    "    %s => %s\n",
-                    $this->exporter->export($key),
-                    $this->exporter->shortenedExport($value)
-                );
-
-                $equal = false;
-
-                continue;
-            }
-
-            try {
-                $comparator = $this->factory->getComparatorFor($value, $actual[$key]);
-                $comparator->assertEquals($value, $actual[$key], $delta, $canonicalize, $ignoreCase, $processed);
-
-                $expString .= sprintf(
-                    "    %s => %s\n",
-                    $this->exporter->export($key),
-                    $this->exporter->shortenedExport($value)
-                );
-                $actString .= sprintf(
-                    "    %s => %s\n",
-                    $this->exporter->export($key),
-                    $this->exporter->shortenedExport($actual[$key])
-                );
-            } catch (ComparisonFailure $e) {
-                $expString .= sprintf(
-                    "    %s => %s\n",
-                    $this->exporter->export($key),
-                    $e->getExpectedAsString()
-                    ? $this->indent($e->getExpectedAsString())
-                    : $this->exporter->shortenedExport($e->getExpected())
-                );
-
-                $actString .= sprintf(
-                    "    %s => %s\n",
-                    $this->exporter->export($key),
-                    $e->getActualAsString()
-                    ? $this->indent($e->getActualAsString())
-                    : $this->exporter->shortenedExport($e->getActual())
-                );
-
-                $equal = false;
-            }
-        }
-
-        foreach ($remaining as $key => $value) {
-            $actString .= sprintf(
-                "    %s => %s\n",
-                $this->exporter->export($key),
-                $this->exporter->shortenedExport($value)
-            );
-
-            $equal = false;
-        }
-
-        $expString .= ')';
-        $actString .= ')';
-
-        if (!$equal) {
-            throw new ComparisonFailure(
-                $expected,
-                $actual,
-                $expString,
-                $actString,
-                false,
-                'Failed asserting that two arrays are equal.'
-            );
-        }
-    }
-
-    protected function indent($lines)
-    {
-        return trim(str_replace("\n", "\n    ", $lines));
-    }
-}
diff --git a/vendor/sebastian/comparator/src/Comparator.php b/vendor/sebastian/comparator/src/Comparator.php
deleted file mode 100644
index ef126a4..0000000
--- a/vendor/sebastian/comparator/src/Comparator.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-use SebastianBergmann\Exporter\Exporter;
-
-/**
- * Abstract base class for comparators which compare values for equality.
- */
-abstract class Comparator
-{
-    /**
-     * @var Factory
-     */
-    protected $factory;
-
-    /**
-     * @var Exporter
-     */
-    protected $exporter;
-
-    public function __construct()
-    {
-        $this->exporter = new Exporter;
-    }
-
-    /**
-     * @param Factory $factory
-     */
-    public function setFactory(Factory $factory)
-    {
-        $this->factory = $factory;
-    }
-
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    abstract public function accepts($expected, $actual);
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    abstract public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false);
-}
diff --git a/vendor/sebastian/comparator/src/ComparisonFailure.php b/vendor/sebastian/comparator/src/ComparisonFailure.php
deleted file mode 100644
index 2c25453..0000000
--- a/vendor/sebastian/comparator/src/ComparisonFailure.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-use SebastianBergmann\Diff\Differ;
-
-/**
- * Thrown when an assertion for string equality failed.
- */
-class ComparisonFailure extends \RuntimeException
-{
-    /**
-     * Expected value of the retrieval which does not match $actual.
-     * @var mixed
-     */
-    protected $expected;
-
-    /**
-     * Actually retrieved value which does not match $expected.
-     * @var mixed
-     */
-    protected $actual;
-
-    /**
-     * The string representation of the expected value
-     * @var string
-     */
-    protected $expectedAsString;
-
-    /**
-     * The string representation of the actual value
-     * @var string
-     */
-    protected $actualAsString;
-
-    /**
-     * @var bool
-     */
-    protected $identical;
-
-    /**
-     * Optional message which is placed in front of the first line
-     * returned by toString().
-     * @var string
-     */
-    protected $message;
-
-    /**
-     * Initialises with the expected value and the actual value.
-     *
-     * @param mixed  $expected         Expected value retrieved.
-     * @param mixed  $actual           Actual value retrieved.
-     * @param string $expectedAsString
-     * @param string $actualAsString
-     * @param bool   $identical
-     * @param string $message          A string which is prefixed on all returned lines
-     *                                 in the difference output.
-     */
-    public function __construct($expected, $actual, $expectedAsString, $actualAsString, $identical = false, $message = '')
-    {
-        $this->expected         = $expected;
-        $this->actual           = $actual;
-        $this->expectedAsString = $expectedAsString;
-        $this->actualAsString   = $actualAsString;
-        $this->message          = $message;
-    }
-
-    /**
-     * @return mixed
-     */
-    public function getActual()
-    {
-        return $this->actual;
-    }
-
-    /**
-     * @return mixed
-     */
-    public function getExpected()
-    {
-        return $this->expected;
-    }
-
-    /**
-     * @return string
-     */
-    public function getActualAsString()
-    {
-        return $this->actualAsString;
-    }
-
-    /**
-     * @return string
-     */
-    public function getExpectedAsString()
-    {
-        return $this->expectedAsString;
-    }
-
-    /**
-     * @return string
-     */
-    public function getDiff()
-    {
-        if (!$this->actualAsString && !$this->expectedAsString) {
-            return '';
-        }
-
-        $differ = new Differ("\n--- Expected\n+++ Actual\n");
-
-        return $differ->diff($this->expectedAsString, $this->actualAsString);
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        return $this->message . $this->getDiff();
-    }
-}
diff --git a/vendor/sebastian/comparator/src/DOMNodeComparator.php b/vendor/sebastian/comparator/src/DOMNodeComparator.php
deleted file mode 100644
index 4c8a39d..0000000
--- a/vendor/sebastian/comparator/src/DOMNodeComparator.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-use DOMDocument;
-use DOMNode;
-
-/**
- * Compares DOMNode instances for equality.
- */
-class DOMNodeComparator extends ObjectComparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        return $expected instanceof DOMNode && $actual instanceof DOMNode;
-    }
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
-    {
-        $expectedAsString = $this->nodeToText($expected, true, $ignoreCase);
-        $actualAsString   = $this->nodeToText($actual, true, $ignoreCase);
-
-        if ($expectedAsString !== $actualAsString) {
-            if ($expected instanceof DOMDocument) {
-                $type = 'documents';
-            } else {
-                $type = 'nodes';
-            }
-
-            throw new ComparisonFailure(
-                $expected,
-                $actual,
-                $expectedAsString,
-                $actualAsString,
-                false,
-                sprintf("Failed asserting that two DOM %s are equal.\n", $type)
-            );
-        }
-    }
-
-    /**
-     * Returns the normalized, whitespace-cleaned, and indented textual
-     * representation of a DOMNode.
-     *
-     * @param  DOMNode $node
-     * @param  bool    $canonicalize
-     * @param  bool    $ignoreCase
-     * @return string
-     */
-    private function nodeToText(DOMNode $node, $canonicalize, $ignoreCase)
-    {
-        if ($canonicalize) {
-            $document = new DOMDocument;
-            $document->loadXML($node->C14N());
-
-            $node = $document;
-        }
-
-        if ($node instanceof DOMDocument) {
-            $document = $node;
-        } else {
-            $document = $node->ownerDocument;
-        }
-
-        $document->formatOutput = true;
-        $document->normalizeDocument();
-
-        if ($node instanceof DOMDocument) {
-            $text = $node->saveXML();
-        } else {
-            $text = $document->saveXML($node);
-        }
-
-        if ($ignoreCase) {
-            $text = strtolower($text);
-        }
-
-        return $text;
-    }
-}
diff --git a/vendor/sebastian/comparator/src/DateTimeComparator.php b/vendor/sebastian/comparator/src/DateTimeComparator.php
deleted file mode 100644
index f7bcd23..0000000
--- a/vendor/sebastian/comparator/src/DateTimeComparator.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares DateTimeInterface instances for equality.
- */
-class DateTimeComparator extends ObjectComparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        return ($expected instanceof \DateTime || $expected instanceof \DateTimeInterface) &&
-            ($actual instanceof \DateTime || $actual instanceof \DateTimeInterface);
-    }
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
-    {
-        $delta = new \DateInterval(sprintf('PT%sS', abs($delta)));
-
-        $expectedLower = clone $expected;
-        $expectedUpper = clone $expected;
-
-        if ($actual < $expectedLower->sub($delta) ||
-            $actual > $expectedUpper->add($delta)) {
-            throw new ComparisonFailure(
-                $expected,
-                $actual,
-                $this->dateTimeToString($expected),
-                $this->dateTimeToString($actual),
-                false,
-                'Failed asserting that two DateTime objects are equal.'
-            );
-        }
-    }
-
-    /**
-     * Returns an ISO 8601 formatted string representation of a datetime or
-     * 'Invalid DateTimeInterface object' if the provided DateTimeInterface was not properly
-     * initialized.
-     *
-     * @param  \DateTimeInterface $datetime
-     * @return string
-     */
-    protected function dateTimeToString($datetime)
-    {
-        $string = $datetime->format(\DateTime::ISO8601);
-
-        return $string ? $string : 'Invalid DateTimeInterface object';
-    }
-}
diff --git a/vendor/sebastian/comparator/src/DoubleComparator.php b/vendor/sebastian/comparator/src/DoubleComparator.php
deleted file mode 100644
index 051f668..0000000
--- a/vendor/sebastian/comparator/src/DoubleComparator.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares doubles for equality.
- */
-class DoubleComparator extends NumericComparator
-{
-    /**
-     * Smallest value available in PHP.
-     *
-     * @var float
-     */
-    const EPSILON = 0.0000000001;
-
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        return (is_double($expected) || is_double($actual)) && is_numeric($expected) && is_numeric($actual);
-    }
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
-    {
-        if ($delta == 0) {
-            $delta = self::EPSILON;
-        }
-
-        parent::assertEquals($expected, $actual, $delta, $canonicalize, $ignoreCase);
-    }
-}
diff --git a/vendor/sebastian/comparator/src/ExceptionComparator.php b/vendor/sebastian/comparator/src/ExceptionComparator.php
deleted file mode 100644
index 5233646..0000000
--- a/vendor/sebastian/comparator/src/ExceptionComparator.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares Exception instances for equality.
- */
-class ExceptionComparator extends ObjectComparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        return $expected instanceof \Exception && $actual instanceof \Exception;
-    }
-
-    /**
-     * Converts an object to an array containing all of its private, protected
-     * and public properties.
-     *
-     * @param  object $object
-     * @return array
-     */
-    protected function toArray($object)
-    {
-        $array = parent::toArray($object);
-
-        unset(
-            $array['file'],
-            $array['line'],
-            $array['trace'],
-            $array['string'],
-            $array['xdebug_message']
-        );
-
-        return $array;
-    }
-}
diff --git a/vendor/sebastian/comparator/src/Factory.php b/vendor/sebastian/comparator/src/Factory.php
deleted file mode 100644
index ed3d5e1..0000000
--- a/vendor/sebastian/comparator/src/Factory.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Factory for comparators which compare values for equality.
- */
-class Factory
-{
-    /**
-     * @var Comparator[]
-     */
-    private $comparators = array();
-
-    /**
-     * @var Factory
-     */
-    private static $instance;
-
-    /**
-     * Constructs a new factory.
-     */
-    public function __construct()
-    {
-        $this->register(new TypeComparator);
-        $this->register(new ScalarComparator);
-        $this->register(new NumericComparator);
-        $this->register(new DoubleComparator);
-        $this->register(new ArrayComparator);
-        $this->register(new ResourceComparator);
-        $this->register(new ObjectComparator);
-        $this->register(new ExceptionComparator);
-        $this->register(new SplObjectStorageComparator);
-        $this->register(new DOMNodeComparator);
-        $this->register(new MockObjectComparator);
-        $this->register(new DateTimeComparator);
-    }
-
-    /**
-     * @return Factory
-     */
-    public static function getInstance()
-    {
-        if (self::$instance === null) {
-            self::$instance = new self;
-        }
-
-        return self::$instance;
-    }
-
-    /**
-     * Returns the correct comparator for comparing two values.
-     *
-     * @param  mixed      $expected The first value to compare
-     * @param  mixed      $actual   The second value to compare
-     * @return Comparator
-     */
-    public function getComparatorFor($expected, $actual)
-    {
-        foreach ($this->comparators as $comparator) {
-            if ($comparator->accepts($expected, $actual)) {
-                return $comparator;
-            }
-        }
-    }
-
-    /**
-     * Registers a new comparator.
-     *
-     * This comparator will be returned by getInstance() if its accept() method
-     * returns TRUE for the compared values. It has higher priority than the
-     * existing comparators, meaning that its accept() method will be tested
-     * before those of the other comparators.
-     *
-     * @param Comparator $comparator The registered comparator
-     */
-    public function register(Comparator $comparator)
-    {
-        array_unshift($this->comparators, $comparator);
-
-        $comparator->setFactory($this);
-    }
-
-    /**
-     * Unregisters a comparator.
-     *
-     * This comparator will no longer be returned by getInstance().
-     *
-     * @param Comparator $comparator The unregistered comparator
-     */
-    public function unregister(Comparator $comparator)
-    {
-        foreach ($this->comparators as $key => $_comparator) {
-            if ($comparator === $_comparator) {
-                unset($this->comparators[$key]);
-            }
-        }
-    }
-}
diff --git a/vendor/sebastian/comparator/src/MockObjectComparator.php b/vendor/sebastian/comparator/src/MockObjectComparator.php
deleted file mode 100644
index a16903c..0000000
--- a/vendor/sebastian/comparator/src/MockObjectComparator.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares PHPUnit_Framework_MockObject_MockObject instances for equality.
- */
-class MockObjectComparator extends ObjectComparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        return $expected instanceof \PHPUnit_Framework_MockObject_MockObject && $actual instanceof \PHPUnit_Framework_MockObject_MockObject;
-    }
-
-    /**
-     * Converts an object to an array containing all of its private, protected
-     * and public properties.
-     *
-     * @param  object $object
-     * @return array
-     */
-    protected function toArray($object)
-    {
-        $array = parent::toArray($object);
-
-        unset($array['__phpunit_invocationMocker']);
-
-        return $array;
-    }
-}
\ No newline at end of file
diff --git a/vendor/sebastian/comparator/src/NumericComparator.php b/vendor/sebastian/comparator/src/NumericComparator.php
deleted file mode 100644
index 90890c0..0000000
--- a/vendor/sebastian/comparator/src/NumericComparator.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares numerical values for equality.
- */
-class NumericComparator extends ScalarComparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        // all numerical values, but not if one of them is a double
-        // or both of them are strings
-        return is_numeric($expected) && is_numeric($actual) &&
-               !(is_double($expected) || is_double($actual)) &&
-               !(is_string($expected) && is_string($actual));
-    }
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
-    {
-        if (is_infinite($actual) && is_infinite($expected)) {
-            return;
-        }
-
-        if ((is_infinite($actual) xor is_infinite($expected)) ||
-            (is_nan($actual) or is_nan($expected)) ||
-            abs($actual - $expected) > $delta) {
-            throw new ComparisonFailure(
-                $expected,
-                $actual,
-                '',
-                '',
-                false,
-                sprintf(
-                    'Failed asserting that %s matches expected %s.',
-                    $this->exporter->export($actual),
-                    $this->exporter->export($expected)
-                )
-            );
-        }
-    }
-}
diff --git a/vendor/sebastian/comparator/src/ObjectComparator.php b/vendor/sebastian/comparator/src/ObjectComparator.php
deleted file mode 100644
index 08ffb67..0000000
--- a/vendor/sebastian/comparator/src/ObjectComparator.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares objects for equality.
- */
-class ObjectComparator extends ArrayComparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        return is_object($expected) && is_object($actual);
-    }
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @param  array             $processed
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = array())
-    {
-        if (get_class($actual) !== get_class($expected)) {
-            throw new ComparisonFailure(
-                $expected,
-                $actual,
-                $this->exporter->export($expected),
-                $this->exporter->export($actual),
-                false,
-                sprintf(
-                    '%s is not instance of expected class "%s".',
-                    $this->exporter->export($actual),
-                    get_class($expected)
-                )
-            );
-        }
-
-        // don't compare twice to allow for cyclic dependencies
-        if (in_array(array($actual, $expected), $processed, true) ||
-            in_array(array($expected, $actual), $processed, true)) {
-            return;
-        }
-
-        $processed[] = array($actual, $expected);
-
-        // don't compare objects if they are identical
-        // this helps to avoid the error "maximum function nesting level reached"
-        // CAUTION: this conditional clause is not tested
-        if ($actual !== $expected) {
-            try {
-                parent::assertEquals(
-                    $this->toArray($expected),
-                    $this->toArray($actual),
-                    $delta,
-                    $canonicalize,
-                    $ignoreCase,
-                    $processed
-                );
-            } catch (ComparisonFailure $e) {
-                throw new ComparisonFailure(
-                    $expected,
-                    $actual,
-                    // replace "Array" with "MyClass object"
-                    substr_replace($e->getExpectedAsString(), get_class($expected) . ' Object', 0, 5),
-                    substr_replace($e->getActualAsString(), get_class($actual) . ' Object', 0, 5),
-                    false,
-                    'Failed asserting that two objects are equal.'
-                );
-            }
-        }
-    }
-
-    /**
-     * Converts an object to an array containing all of its private, protected
-     * and public properties.
-     *
-     * @param  object $object
-     * @return array
-     */
-    protected function toArray($object)
-    {
-        return $this->exporter->toArray($object);
-    }
-}
diff --git a/vendor/sebastian/comparator/src/ResourceComparator.php b/vendor/sebastian/comparator/src/ResourceComparator.php
deleted file mode 100644
index 877cc7d..0000000
--- a/vendor/sebastian/comparator/src/ResourceComparator.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares resources for equality.
- */
-class ResourceComparator extends Comparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        return is_resource($expected) && is_resource($actual);
-    }
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
-    {
-        if ($actual != $expected) {
-            throw new ComparisonFailure(
-                $expected,
-                $actual,
-                $this->exporter->export($expected),
-                $this->exporter->export($actual)
-            );
-        }
-    }
-}
diff --git a/vendor/sebastian/comparator/src/ScalarComparator.php b/vendor/sebastian/comparator/src/ScalarComparator.php
deleted file mode 100644
index df5a746..0000000
--- a/vendor/sebastian/comparator/src/ScalarComparator.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares scalar or NULL values for equality.
- */
-class ScalarComparator extends Comparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     * @since  Method available since Release 3.6.0
-     */
-    public function accepts($expected, $actual)
-    {
-        return ((is_scalar($expected) xor null === $expected) &&
-               (is_scalar($actual) xor null === $actual))
-               // allow comparison between strings and objects featuring __toString()
-               || (is_string($expected) && is_object($actual) && method_exists($actual, '__toString'))
-               || (is_object($expected) && method_exists($expected, '__toString') && is_string($actual));
-    }
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
-    {
-        $expectedToCompare = $expected;
-        $actualToCompare   = $actual;
-
-        // always compare as strings to avoid strange behaviour
-        // otherwise 0 == 'Foobar'
-        if (is_string($expected) || is_string($actual)) {
-            $expectedToCompare = (string) $expectedToCompare;
-            $actualToCompare   = (string) $actualToCompare;
-
-            if ($ignoreCase) {
-                $expectedToCompare = strtolower($expectedToCompare);
-                $actualToCompare   = strtolower($actualToCompare);
-            }
-        }
-
-        if ($expectedToCompare != $actualToCompare) {
-            if (is_string($expected) && is_string($actual)) {
-                throw new ComparisonFailure(
-                    $expected,
-                    $actual,
-                    $this->exporter->export($expected),
-                    $this->exporter->export($actual),
-                    false,
-                    'Failed asserting that two strings are equal.'
-                );
-            }
-
-            throw new ComparisonFailure(
-                $expected,
-                $actual,
-                // no diff is required
-                '',
-                '',
-                false,
-                sprintf(
-                    'Failed asserting that %s matches expected %s.',
-                    $this->exporter->export($actual),
-                    $this->exporter->export($expected)
-                )
-            );
-        }
-    }
-}
diff --git a/vendor/sebastian/comparator/src/SplObjectStorageComparator.php b/vendor/sebastian/comparator/src/SplObjectStorageComparator.php
deleted file mode 100644
index a1ec119..0000000
--- a/vendor/sebastian/comparator/src/SplObjectStorageComparator.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares \SplObjectStorage instances for equality.
- */
-class SplObjectStorageComparator extends Comparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        return $expected instanceof \SplObjectStorage && $actual instanceof \SplObjectStorage;
-    }
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
-    {
-        foreach ($actual as $object) {
-            if (!$expected->contains($object)) {
-                throw new ComparisonFailure(
-                    $expected,
-                    $actual,
-                    $this->exporter->export($expected),
-                    $this->exporter->export($actual),
-                    false,
-                    'Failed asserting that two objects are equal.'
-                );
-            }
-        }
-
-        foreach ($expected as $object) {
-            if (!$actual->contains($object)) {
-                throw new ComparisonFailure(
-                    $expected,
-                    $actual,
-                    $this->exporter->export($expected),
-                    $this->exporter->export($actual),
-                    false,
-                    'Failed asserting that two objects are equal.'
-                );
-            }
-        }
-    }
-}
diff --git a/vendor/sebastian/comparator/src/TypeComparator.php b/vendor/sebastian/comparator/src/TypeComparator.php
deleted file mode 100644
index 6fe2077..0000000
--- a/vendor/sebastian/comparator/src/TypeComparator.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-/*
- * This file is part of the Comparator 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\Comparator;
-
-/**
- * Compares values for type equality.
- */
-class TypeComparator extends Comparator
-{
-    /**
-     * Returns whether the comparator can compare two values.
-     *
-     * @param  mixed $expected The first value to compare
-     * @param  mixed $actual   The second value to compare
-     * @return bool
-     */
-    public function accepts($expected, $actual)
-    {
-        return true;
-    }
-
-    /**
-     * Asserts that two values are equal.
-     *
-     * @param  mixed             $expected     The first value to compare
-     * @param  mixed             $actual       The second value to compare
-     * @param  float             $delta        The allowed numerical distance between two values to
-     *                                         consider them equal
-     * @param  bool              $canonicalize If set to TRUE, arrays are sorted before
-     *                                         comparison
-     * @param  bool              $ignoreCase   If set to TRUE, upper- and lowercasing is
-     *                                         ignored when comparing string values
-     * @throws ComparisonFailure Thrown when the comparison
-     *                                        fails. Contains information about the
-     *                                        specific errors that lead to the failure.
-     */
-    public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
-    {
-        if (gettype($expected) != gettype($actual)) {
-            throw new ComparisonFailure(
-                $expected,
-                $actual,
-                // we don't need a diff
-                '',
-                '',
-                false,
-                sprintf(
-                    '%s does not match expected type "%s".',
-                    $this->exporter->shortenedExport($actual),
-                    gettype($expected)
-                )
-            );
-        }
-    }
-}
diff --git a/vendor/sebastian/diff/.gitignore b/vendor/sebastian/diff/.gitignore
deleted file mode 100644
index d571f24..0000000
--- a/vendor/sebastian/diff/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-.idea
-phpunit.xml
-composer.lock
-composer.phar
-vendor/
-cache.properties
-build/SebastianBergmann
-build/LICENSE
-build/README.md
-build/*.tgz
diff --git a/vendor/sebastian/diff/.travis.yml b/vendor/sebastian/diff/.travis.yml
deleted file mode 100644
index c5ea677..0000000
--- a/vendor/sebastian/diff/.travis.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-language: php
-
-install:
-  - travis_retry composer install --no-interaction --prefer-source
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-notifications:
-  email: false
-  irc: "irc.freenode.org#phpunit"
diff --git a/vendor/sebastian/diff/LICENSE b/vendor/sebastian/diff/LICENSE
deleted file mode 100644
index 0941c06..0000000
--- a/vendor/sebastian/diff/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-Diff
-
-Copyright (c) 2002-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/diff/README.md b/vendor/sebastian/diff/README.md
deleted file mode 100644
index 921957b..0000000
--- a/vendor/sebastian/diff/README.md
+++ /dev/null
@@ -1,126 +0,0 @@
-# Diff
-
-Diff implementation for PHP, factored out of PHPUnit into a stand-alone component.
-
-## Installation
-
-To add this package as a local, per-project dependency to your project, simply add a dependency on `sebastian/diff` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on Diff:
-
-    {
-        "require": {
-            "sebastian/diff": "*"
-        }
-    }
-
-### Usage
-
-The `Differ` class can be used to generate a textual representation of the difference between two strings:
-
-```php
-use SebastianBergmann\Diff\Differ;
-
-$differ = new Differ;
-print $differ->diff('foo', 'bar');
-```
-
-The code above yields the output below:
-
-    --- Original
-    +++ New
-    @@ @@
-    -foo
-    +bar
-
-The `Parser` class can be used to parse a unified diff into an object graph:
-
-```php
-use SebastianBergmann\Diff\Parser;
-use SebastianBergmann\Git;
-
-$git = new Git('/usr/local/src/money');
-
-$diff = $git->getDiff(
-  '948a1a07768d8edd10dcefa8315c1cbeffb31833',
-  'c07a373d2399f3e686234c4f7f088d635eb9641b'
-);
-
-$parser = new Parser;
-
-print_r($parser->parse($diff));
-```
-
-The code above yields the output below:
-
-    Array
-    (
-        [0] => SebastianBergmann\Diff\Diff Object
-            (
-                [from:SebastianBergmann\Diff\Diff:private] => a/tests/MoneyTest.php
-                [to:SebastianBergmann\Diff\Diff:private] => b/tests/MoneyTest.php
-                [chunks:SebastianBergmann\Diff\Diff:private] => Array
-                    (
-                        [0] => SebastianBergmann\Diff\Chunk Object
-                            (
-                                [start:SebastianBergmann\Diff\Chunk:private] => 87
-                                [startRange:SebastianBergmann\Diff\Chunk:private] => 7
-                                [end:SebastianBergmann\Diff\Chunk:private] => 87
-                                [endRange:SebastianBergmann\Diff\Chunk:private] => 7
-                                [lines:SebastianBergmann\Diff\Chunk:private] => Array
-                                    (
-                                        [0] => SebastianBergmann\Diff\Line Object
-                                            (
-                                                [type:SebastianBergmann\Diff\Line:private] => 3
-                                                [content:SebastianBergmann\Diff\Line:private] =>      * @covers SebastianBergmann\Money\Money::add
-                                            )
-
-                                        [1] => SebastianBergmann\Diff\Line Object
-                                            (
-                                                [type:SebastianBergmann\Diff\Line:private] => 3
-                                                [content:SebastianBergmann\Diff\Line:private] =>      * @covers SebastianBergmann\Money\Money::newMoney
-                                            )
-
-                                        [2] => SebastianBergmann\Diff\Line Object
-                                            (
-                                                [type:SebastianBergmann\Diff\Line:private] => 3
-                                                [content:SebastianBergmann\Diff\Line:private] =>      */
-                                            )
-
-                                        [3] => SebastianBergmann\Diff\Line Object
-                                            (
-                                                [type:SebastianBergmann\Diff\Line:private] => 2
-                                                [content:SebastianBergmann\Diff\Line:private] =>     public function testAnotherMoneyWithSameCurrencyObjectCanBeAdded()
-                                            )
-
-                                        [4] => SebastianBergmann\Diff\Line Object
-                                            (
-                                                [type:SebastianBergmann\Diff\Line:private] => 1
-                                                [content:SebastianBergmann\Diff\Line:private] =>     public function testAnotherMoneyObjectWithSameCurrencyCanBeAdded()
-                                            )
-
-                                        [5] => SebastianBergmann\Diff\Line Object
-                                            (
-                                                [type:SebastianBergmann\Diff\Line:private] => 3
-                                                [content:SebastianBergmann\Diff\Line:private] =>     {
-                                            )
-
-                                        [6] => SebastianBergmann\Diff\Line Object
-                                            (
-                                                [type:SebastianBergmann\Diff\Line:private] => 3
-                                                [content:SebastianBergmann\Diff\Line:private] =>         $a = new Money(1, new Currency('EUR'));
-                                            )
-
-                                        [7] => SebastianBergmann\Diff\Line Object
-                                            (
-                                                [type:SebastianBergmann\Diff\Line:private] => 3
-                                                [content:SebastianBergmann\Diff\Line:private] =>         $b = new Money(2, new Currency('EUR'));
-                                            )
-
-                                    )
-
-                            )
-
-                    )
-
-            )
-
-    )
diff --git a/vendor/sebastian/diff/build.xml b/vendor/sebastian/diff/build.xml
deleted file mode 100644
index 7366087..0000000
--- a/vendor/sebastian/diff/build.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="diff">
- <target name="clean" description="Cleanup build artifacts">
-  <delete dir="${basedir}/vendor"/>
-  <delete file="${basedir}/composer.lock"/>
- </target>
-
- <target name="composer" depends="clean" description="Install dependencies with Composer">
-  <tstamp>
-   <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/>
-  </tstamp>
-  <delete>
-   <fileset dir="${basedir}">
-    <include name="composer.phar" />
-    <date datetime="${thirty.days.ago}" when="before"/>
-   </fileset>
-  </delete>
-
-  <get src="https://getcomposer.org/composer.phar" dest="${basedir}/composer.phar" skipexisting="true"/>
-
-  <exec executable="php">
-   <arg value="composer.phar"/>
-   <arg value="install"/>
-  </exec>
- </target>
-</project>
diff --git a/vendor/sebastian/diff/composer.json b/vendor/sebastian/diff/composer.json
deleted file mode 100644
index 3c04952..0000000
--- a/vendor/sebastian/diff/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-    "name": "sebastian/diff",
-    "description": "Diff implementation",
-    "keywords": ["diff"],
-    "homepage": "http://www.github.com/sebastianbergmann/diff",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sebastian@phpunit.de"
-        },
-        {
-            "name": "Kore Nordmann",
-            "email": "mail@kore-nordmann.de"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.3"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.2"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.3-dev"
-        }
-    }
-}
diff --git a/vendor/sebastian/diff/phpunit.xml.dist b/vendor/sebastian/diff/phpunit.xml.dist
deleted file mode 100644
index 387a9b3..0000000
--- a/vendor/sebastian/diff/phpunit.xml.dist
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.2/phpunit.xsd"
-         bootstrap="vendor/autoload.php"
-         backupGlobals="false"
-         verbose="true">
-  <testsuite name="Diff">
-    <directory suffix="Test.php">tests</directory>
-  </testsuite>
-
-  <filter>
-    <whitelist processUncoveredFilesFromWhitelist="true">
-      <directory suffix=".php">src</directory>
-    </whitelist>
-  </filter>
-</phpunit>
-
diff --git a/vendor/sebastian/diff/src/Chunk.php b/vendor/sebastian/diff/src/Chunk.php
deleted file mode 100644
index 79d13fc..0000000
--- a/vendor/sebastian/diff/src/Chunk.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-/*
- * This file is part of the Diff 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\Diff;
-
-/**
- * @package    Diff
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @author     Kore Nordmann <mail@kore-nordmann.de>
- * @copyright  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/diff
- */
-class Chunk
-{
-    /**
-     * @var int
-     */
-    private $start;
-
-    /**
-     * @var int
-     */
-    private $startRange;
-
-    /**
-     * @var int
-     */
-    private $end;
-    /**
-     * @var int
-     */
-    private $endRange;
-
-    /**
-     * @var array
-     */
-    private $lines;
-
-    /**
-     * @param int   $start
-     * @param int   $startRange
-     * @param int   $end
-     * @param int   $endRange
-     * @param array $lines
-     */
-    public function __construct($start = 0, $startRange = 1, $end = 0, $endRange = 1, array $lines = array())
-    {
-        $this->start      = (int) $start;
-        $this->startRange = (int) $startRange;
-        $this->end        = (int) $end;
-        $this->endRange   = (int) $endRange;
-        $this->lines      = $lines;
-    }
-
-    /**
-     * @return int
-     */
-    public function getStart()
-    {
-        return $this->start;
-    }
-
-    /**
-     * @return int
-     */
-    public function getStartRange()
-    {
-        return $this->startRange;
-    }
-
-    /**
-     * @return int
-     */
-    public function getEnd()
-    {
-        return $this->end;
-    }
-
-    /**
-     * @return int
-     */
-    public function getEndRange()
-    {
-        return $this->endRange;
-    }
-
-    /**
-     * @return array
-     */
-    public function getLines()
-    {
-        return $this->lines;
-    }
-
-    /**
-     * @param array $lines
-     */
-    public function setLines(array $lines)
-    {
-        $this->lines = $lines;
-    }
-}
diff --git a/vendor/sebastian/diff/src/Diff.php b/vendor/sebastian/diff/src/Diff.php
deleted file mode 100644
index 45aaae6..0000000
--- a/vendor/sebastian/diff/src/Diff.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/*
- * This file is part of the Diff 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\Diff;
-
-/**
- * @package    Diff
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @author     Kore Nordmann <mail@kore-nordmann.de>
- * @copyright  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/diff
- */
-class Diff
-{
-    /**
-     * @var string
-     */
-    private $from;
-
-    /**
-     * @var string
-     */
-    private $to;
-
-    /**
-     * @var Chunk[]
-     */
-    private $chunks;
-
-    /**
-     * @param string  $from
-     * @param string  $to
-     * @param Chunk[] $chunks
-     */
-    public function __construct($from, $to, array $chunks = array())
-    {
-        $this->from   = $from;
-        $this->to     = $to;
-        $this->chunks = $chunks;
-    }
-
-    /**
-     * @return string
-     */
-    public function getFrom()
-    {
-        return $this->from;
-    }
-
-    /**
-     * @return string
-     */
-    public function getTo()
-    {
-        return $this->to;
-    }
-
-    /**
-     * @return Chunk[]
-     */
-    public function getChunks()
-    {
-        return $this->chunks;
-    }
-
-    /**
-     * @param Chunk[] $chunks
-     */
-    public function setChunks(array $chunks)
-    {
-        $this->chunks = $chunks;
-    }
-}
diff --git a/vendor/sebastian/diff/src/Differ.php b/vendor/sebastian/diff/src/Differ.php
deleted file mode 100644
index 76630ed..0000000
--- a/vendor/sebastian/diff/src/Differ.php
+++ /dev/null
@@ -1,256 +0,0 @@
-<?php
-/*
- * This file is part of the Diff 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\Diff;
-
-use SebastianBergmann\Diff\LCS\LongestCommonSubsequence;
-use SebastianBergmann\Diff\LCS\TimeEfficientImplementation;
-use SebastianBergmann\Diff\LCS\MemoryEfficientImplementation;
-
-/**
- * Diff implementation.
- *
- * @package    Diff
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @author     Kore Nordmann <mail@kore-nordmann.de>
- * @copyright  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/diff
- */
-class Differ
-{
-    /**
-     * @var string
-     */
-    private $header;
-
-    /**
-     * @param string $header
-     */
-    public function __construct($header = "--- Original\n+++ New\n")
-    {
-        $this->header = $header;
-    }
-
-    /**
-     * Returns the diff between two arrays or strings as string.
-     *
-     * @param  array|string             $from
-     * @param  array|string             $to
-     * @param  LongestCommonSubsequence $lcs
-     * @return string
-     */
-    public function diff($from, $to, LongestCommonSubsequence $lcs = null)
-    {
-        if (!is_array($from) && !is_string($from)) {
-            $from = (string) $from;
-        }
-
-        if (!is_array($to) && !is_string($to)) {
-            $to = (string) $to;
-        }
-
-        $buffer = $this->header;
-        $diff   = $this->diffToArray($from, $to, $lcs);
-
-        $inOld = false;
-        $i     = 0;
-        $old   = array();
-
-        foreach ($diff as $line) {
-            if ($line[1] ===  0 /* OLD */) {
-                if ($inOld === false) {
-                    $inOld = $i;
-                }
-            } elseif ($inOld !== false) {
-                if (($i - $inOld) > 5) {
-                    $old[$inOld] = $i - 1;
-                }
-
-                $inOld = false;
-            }
-
-            ++$i;
-        }
-
-        $start = isset($old[0]) ? $old[0] : 0;
-        $end   = count($diff);
-
-        if ($tmp = array_search($end, $old)) {
-            $end = $tmp;
-        }
-
-        $newChunk = true;
-
-        for ($i = $start; $i < $end; $i++) {
-            if (isset($old[$i])) {
-                $buffer  .= "\n";
-                $newChunk = true;
-                $i        = $old[$i];
-            }
-
-            if ($newChunk) {
-                $buffer  .= "@@ @@\n";
-                $newChunk = false;
-            }
-
-            if ($diff[$i][1] === 1 /* ADDED */) {
-                $buffer .= '+' . $diff[$i][0] . "\n";
-            } elseif ($diff[$i][1] === 2 /* REMOVED */) {
-                $buffer .= '-' . $diff[$i][0] . "\n";
-            } else {
-                $buffer .= ' ' . $diff[$i][0] . "\n";
-            }
-        }
-
-        return $buffer;
-    }
-
-    /**
-     * Returns the diff between two arrays or strings as array.
-     *
-     * Each array element contains two elements:
-     *   - [0] => string $token
-     *   - [1] => 2|1|0
-     *
-     * - 2: REMOVED: $token was removed from $from
-     * - 1: ADDED: $token was added to $from
-     * - 0: OLD: $token is not changed in $to
-     *
-     * @param  array|string             $from
-     * @param  array|string             $to
-     * @param  LongestCommonSubsequence $lcs
-     * @return array
-     */
-    public function diffToArray($from, $to, LongestCommonSubsequence $lcs = null)
-    {
-        preg_match_all('(\r\n|\r|\n)', $from, $fromMatches);
-        preg_match_all('(\r\n|\r|\n)', $to, $toMatches);
-
-        if (is_string($from)) {
-            $from = preg_split('(\r\n|\r|\n)', $from);
-        }
-
-        if (is_string($to)) {
-            $to = preg_split('(\r\n|\r|\n)', $to);
-        }
-
-        $start      = array();
-        $end        = array();
-        $fromLength = count($from);
-        $toLength   = count($to);
-        $length     = min($fromLength, $toLength);
-
-        for ($i = 0; $i < $length; ++$i) {
-            if ($from[$i] === $to[$i]) {
-                $start[] = $from[$i];
-                unset($from[$i], $to[$i]);
-            } else {
-                break;
-            }
-        }
-
-        $length -= $i;
-
-        for ($i = 1; $i < $length; ++$i) {
-            if ($from[$fromLength - $i] === $to[$toLength - $i]) {
-                array_unshift($end, $from[$fromLength - $i]);
-                unset($from[$fromLength - $i], $to[$toLength - $i]);
-            } else {
-                break;
-            }
-        }
-
-        if ($lcs === null) {
-            $lcs = $this->selectLcsImplementation($from, $to);
-        }
-
-        $common = $lcs->calculate(array_values($from), array_values($to));
-        $diff   = array();
-
-        if (isset($fromMatches[0]) && $toMatches[0] &&
-            count($fromMatches[0]) === count($toMatches[0]) &&
-            $fromMatches[0] !== $toMatches[0]) {
-            $diff[] = array(
-              '#Warning: Strings contain different line endings!', 0
-            );
-        }
-
-        foreach ($start as $token) {
-            $diff[] = array($token, 0 /* OLD */);
-        }
-
-        reset($from);
-        reset($to);
-
-        foreach ($common as $token) {
-            while ((($fromToken = reset($from)) !== $token)) {
-                $diff[] = array(array_shift($from), 2 /* REMOVED */);
-            }
-
-            while ((($toToken = reset($to)) !== $token)) {
-                $diff[] = array(array_shift($to), 1 /* ADDED */);
-            }
-
-            $diff[] = array($token, 0 /* OLD */);
-
-            array_shift($from);
-            array_shift($to);
-        }
-
-        while (($token = array_shift($from)) !== null) {
-            $diff[] = array($token, 2 /* REMOVED */);
-        }
-
-        while (($token = array_shift($to)) !== null) {
-            $diff[] = array($token, 1 /* ADDED */);
-        }
-
-        foreach ($end as $token) {
-            $diff[] = array($token, 0 /* OLD */);
-        }
-
-        return $diff;
-    }
-
-    /**
-     * @param  array $from
-     * @param  array $to
-     * @return LongestCommonSubsequence
-     */
-    private function selectLcsImplementation(array $from, array $to)
-    {
-        // We do not want to use the time-efficient implementation if its memory
-        // footprint will probably exceed this value. Note that the footprint
-        // calculation is only an estimation for the matrix and the LCS method
-        // will typically allocate a bit more memory than this.
-        $memoryLimit = 100 * 1024 * 1024;
-
-        if ($this->calculateEstimatedFootprint($from, $to) > $memoryLimit) {
-            return new MemoryEfficientImplementation;
-        }
-
-        return new TimeEfficientImplementation;
-    }
-
-    /**
-     * Calculates the estimated memory footprint for the DP-based method.
-     *
-     * @param  array $from
-     * @param  array $to
-     * @return integer
-     */
-    private function calculateEstimatedFootprint(array $from, array $to)
-    {
-        $itemSize = PHP_INT_SIZE == 4 ? 76 : 144;
-
-        return $itemSize * pow(min(count($from), count($to)), 2);
-    }
-}
diff --git a/vendor/sebastian/diff/src/LCS/LongestCommonSubsequence.php b/vendor/sebastian/diff/src/LCS/LongestCommonSubsequence.php
deleted file mode 100644
index 8036474..0000000
--- a/vendor/sebastian/diff/src/LCS/LongestCommonSubsequence.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/*
- * This file is part of the Diff 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\Diff\LCS;
-
-/**
- * Interface for implementations of longest common subsequence calculation.
- *
- * @package    Diff
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @author     Kore Nordmann <mail@kore-nordmann.de>
- * @copyright  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/diff
- */
-interface LongestCommonSubsequence
-{
-    /**
-     * Calculates the longest common subsequence of two arrays.
-     *
-     * @param  array $from
-     * @param  array $to
-     * @return array
-     */
-    public function calculate(array $from, array $to);
-}
diff --git a/vendor/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php b/vendor/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php
deleted file mode 100644
index 6213607..0000000
--- a/vendor/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-/*
- * This file is part of the Diff 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\Diff\LCS;
-
-/**
- * Memory-efficient implementation of longest common subsequence calculation.
- *
- * @package    Diff
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @author     Denes Lados <lados.denes@gmail.com>
- * @copyright  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/diff
- */
-class MemoryEfficientImplementation implements LongestCommonSubsequence
-{
-    /**
-     * Calculates the longest common subsequence of two arrays.
-     *
-     * @param  array $from
-     * @param  array $to
-     * @return array
-     */
-    public function calculate(array $from, array $to)
-    {
-        $cFrom = count($from);
-        $cTo   = count($to);
-
-        if ($cFrom == 0) {
-            return array();
-        } elseif ($cFrom == 1) {
-            if (in_array($from[0], $to)) {
-                return array($from[0]);
-            } else {
-                return array();
-            }
-        } else {
-            $i         = intval($cFrom / 2);
-            $fromStart = array_slice($from, 0, $i);
-            $fromEnd   = array_slice($from, $i);
-            $llB       = $this->length($fromStart, $to);
-            $llE       = $this->length(array_reverse($fromEnd), array_reverse($to));
-            $jMax      = 0;
-            $max       = 0;
-
-            for ($j = 0; $j <= $cTo; $j++) {
-                $m = $llB[$j] + $llE[$cTo - $j];
-
-                if ($m >= $max) {
-                    $max  = $m;
-                    $jMax = $j;
-                }
-            }
-
-            $toStart = array_slice($to, 0, $jMax);
-            $toEnd   = array_slice($to, $jMax);
-
-            return array_merge(
-                $this->calculate($fromStart, $toStart),
-                $this->calculate($fromEnd, $toEnd)
-            );
-        }
-    }
-
-    /**
-     * @param array $from
-     * @param array $to
-     * @return array
-     */
-    private function length(array $from, array $to)
-    {
-        $current = array_fill(0, count($to) + 1, 0);
-        $cFrom   = count($from);
-        $cTo     = count($to);
-
-        for ($i = 0; $i < $cFrom; $i++) {
-            $prev = $current;
-
-            for ($j = 0; $j < $cTo; $j++) {
-                if ($from[$i] == $to[$j]) {
-                    $current[$j + 1] = $prev[$j] + 1;
-                } else {
-                    $current[$j + 1] = max($current[$j], $prev[$j + 1]);
-                }
-            }
-        }
-
-        return $current;
-    }
-}
diff --git a/vendor/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php b/vendor/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php
deleted file mode 100644
index b569586..0000000
--- a/vendor/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/*
- * This file is part of the Diff 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\Diff\LCS;
-
-/**
- * Time-efficient implementation of longest common subsequence calculation.
- *
- * @package    Diff
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @author     Kore Nordmann <mail@kore-nordmann.de>
- * @copyright  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/diff
- */
-class TimeEfficientImplementation implements LongestCommonSubsequence
-{
-    /**
-     * Calculates the longest common subsequence of two arrays.
-     *
-     * @param  array $from
-     * @param  array $to
-     * @return array
-     */
-    public function calculate(array $from, array $to)
-    {
-        $common     = array();
-        $fromLength = count($from);
-        $toLength   = count($to);
-        $width      = $fromLength + 1;
-        $matrix     = new \SplFixedArray($width * ($toLength + 1));
-
-        for ($i = 0; $i <= $fromLength; ++$i) {
-            $matrix[$i] = 0;
-        }
-
-        for ($j = 0; $j <= $toLength; ++$j) {
-            $matrix[$j * $width] = 0;
-        }
-
-        for ($i = 1; $i <= $fromLength; ++$i) {
-            for ($j = 1; $j <= $toLength; ++$j) {
-                $o = ($j * $width) + $i;
-                $matrix[$o] = max(
-                    $matrix[$o - 1],
-                    $matrix[$o - $width],
-                    $from[$i - 1] === $to[$j - 1] ? $matrix[$o - $width - 1] + 1 : 0
-                );
-            }
-        }
-
-        $i = $fromLength;
-        $j = $toLength;
-
-        while ($i > 0 && $j > 0) {
-            if ($from[$i-1] === $to[$j-1]) {
-                $common[] = $from[$i-1];
-                --$i;
-                --$j;
-            } else {
-                $o = ($j * $width) + $i;
-                if ($matrix[$o - $width] > $matrix[$o - 1]) {
-                    --$j;
-                } else {
-                    --$i;
-                }
-            }
-        }
-
-        return array_reverse($common);
-    }
-}
diff --git a/vendor/sebastian/diff/src/Line.php b/vendor/sebastian/diff/src/Line.php
deleted file mode 100644
index 28c66aa..0000000
--- a/vendor/sebastian/diff/src/Line.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/*
- * This file is part of the Diff 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\Diff;
-
-/**
- * @package    Diff
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @author     Kore Nordmann <mail@kore-nordmann.de>
- * @copyright  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/diff
- */
-class Line
-{
-    const ADDED = 1;
-    const REMOVED = 2;
-    const UNCHANGED = 3;
-
-    /**
-     * @var int
-     */
-    private $type;
-
-    /**
-     * @var string
-     */
-    private $content;
-
-    /**
-     * @param int    $type
-     * @param string $content
-     */
-    public function __construct($type = self::UNCHANGED, $content = '')
-    {
-        $this->type    = $type;
-        $this->content = $content;
-    }
-
-    /**
-     * @return string
-     */
-    public function getContent()
-    {
-        return $this->content;
-    }
-
-    /**
-     * @return int
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-}
diff --git a/vendor/sebastian/diff/src/Parser.php b/vendor/sebastian/diff/src/Parser.php
deleted file mode 100644
index 79e2413..0000000
--- a/vendor/sebastian/diff/src/Parser.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/*
- * This file is part of the Diff 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\Diff;
-
-/**
- * Unified diff parser.
- *
- * @package    Diff
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @author     Kore Nordmann <mail@kore-nordmann.de>
- * @copyright  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/diff
- */
-class Parser
-{
-    /**
-     * @param  string $string
-     * @return Diff[]
-     */
-    public function parse($string)
-    {
-        $lines     = preg_split('(\r\n|\r|\n)', $string);
-        $lineCount = count($lines);
-        $diffs     = array();
-        $diff      = null;
-        $collected = array();
-
-        for ($i = 0; $i < $lineCount; ++$i) {
-            if (preg_match('(^---\\s+(?P<file>\\S+))', $lines[$i], $fromMatch) &&
-                preg_match('(^\\+\\+\\+\\s+(?P<file>\\S+))', $lines[$i + 1], $toMatch)) {
-                if ($diff !== null) {
-                    $this->parseFileDiff($diff, $collected);
-                    $diffs[]   = $diff;
-                    $collected = array();
-                }
-
-                $diff = new Diff($fromMatch['file'], $toMatch['file']);
-                ++$i;
-            } else {
-                if (preg_match('/^(?:diff --git |index [\da-f\.]+|[+-]{3} [ab])/', $lines[$i])) {
-                    continue;
-                }
-                $collected[] = $lines[$i];
-            }
-        }
-
-        if (count($collected) && ($diff !== null)) {
-            $this->parseFileDiff($diff, $collected);
-            $diffs[] = $diff;
-        }
-
-        return $diffs;
-    }
-
-    /**
-     * @param Diff  $diff
-     * @param array $lines
-     */
-    private function parseFileDiff(Diff $diff, array $lines)
-    {
-        $chunks = array();
-
-        foreach ($lines as $line) {
-            if (preg_match('/^@@\s+-(?P<start>\d+)(?:,\s*(?P<startrange>\d+))?\s+\+(?P<end>\d+)(?:,\s*(?P<endrange>\d+))?\s+@@/', $line, $match)) {
-                $chunk = new Chunk(
-                    $match['start'],
-                    isset($match['startrange']) ? max(1, $match['startrange']) : 1,
-                    $match['end'],
-                    isset($match['endrange']) ? max(1, $match['endrange']) : 1
-                );
-
-                $chunks[] = $chunk;
-                $diffLines = array();
-                continue;
-            }
-
-            if (preg_match('/^(?P<type>[+ -])?(?P<line>.*)/', $line, $match)) {
-                $type = Line::UNCHANGED;
-
-                if ($match['type'] == '+') {
-                    $type = Line::ADDED;
-                } elseif ($match['type'] == '-') {
-                    $type = Line::REMOVED;
-                }
-
-                $diffLines[] = new Line($type, $match['line']);
-
-                if (isset($chunk)) {
-                    $chunk->setLines($diffLines);
-                }
-            }
-        }
-
-        $diff->setChunks($chunks);
-    }
-}
diff --git a/vendor/sebastian/environment/.gitignore b/vendor/sebastian/environment/.gitignore
deleted file mode 100644
index 5794854..0000000
--- a/vendor/sebastian/environment/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/.idea
-/vendor
-/composer.lock
-/composer.phar
-/phpunit.xml
diff --git a/vendor/sebastian/environment/.travis.yml b/vendor/sebastian/environment/.travis.yml
deleted file mode 100644
index 76a9bde..0000000
--- a/vendor/sebastian/environment/.travis.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-language: php
-
-before_script:
-  - composer self-update
-  - composer install --no-interaction --prefer-source --dev
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-notifications:
-  email: false
diff --git a/vendor/sebastian/environment/LICENSE b/vendor/sebastian/environment/LICENSE
deleted file mode 100644
index 08539af..0000000
--- a/vendor/sebastian/environment/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-Environment
-
-Copyright (c) 2014-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/environment/README.md b/vendor/sebastian/environment/README.md
deleted file mode 100644
index 5f3cb3b..0000000
--- a/vendor/sebastian/environment/README.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# Environment
-
-This component provides functionality that helps writing PHP code that has runtime-specific (PHP / HHVM) execution paths.
-
-[![Latest Stable Version](https://poser.pugx.org/sebastian/environment/v/stable.png)](https://packagist.org/packages/sebastian/environment)
-[![Build Status](https://travis-ci.org/sebastianbergmann/environment.png?branch=master)](https://travis-ci.org/sebastianbergmann/environment)
-
-## Installation
-
-To add Environment as a local, per-project dependency to your project, simply add a dependency on `sebastian/environment` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on Environment 1.0:
-
-    {
-        "require": {
-            "sebastian/environment": "1.0.*"
-        }
-    }
-
-## Usage
-
-```php
-<?php
-use SebastianBergmann\Environment\Runtime;
-
-$runtime = new Runtime;
-
-var_dump($runtime->getNameWithVersion());
-var_dump($runtime->getName());
-var_dump($runtime->getVersion());
-var_dump($runtime->getBinary());
-var_dump($runtime->isHHVM());
-var_dump($runtime->isPHP());
-var_dump($runtime->hasXdebug());
-var_dump($runtime->canCollectCodeCoverage());
-```
-
-### Output on PHP
-
-    $ php --version
-    PHP 5.5.8 (cli) (built: Jan  9 2014 08:33:30)
-    Copyright (c) 1997-2013 The PHP Group
-    Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
-        with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
-
-
-    $ php example.php
-    string(9) "PHP 5.5.8"
-    string(3) "PHP"
-    string(5) "5.5.8"
-    string(14) "'/usr/bin/php'"
-    bool(false)
-    bool(true)
-    bool(true)
-    bool(true)
-
-### Output on HHVM
-
-    $ hhvm --version
-    HipHop VM 2.4.0-dev (rel)
-    Compiler: heads/master-0-ga98e57cabee7e7f0d14493ab17d5c7ab0157eb98
-    Repo schema: 8d6e69287c41c1f09bb4d327421720d1922cfc67
-
-
-    $ hhvm example.php
-    string(14) "HHVM 2.4.0-dev"
-    string(4) "HHVM"
-    string(9) "2.4.0-dev"
-    string(42) "'/usr/local/src/hhvm/hphp/hhvm/hhvm' --php"
-    bool(true)
-    bool(false)
-    bool(false)
-    bool(true)
-
diff --git a/vendor/sebastian/environment/build.xml b/vendor/sebastian/environment/build.xml
deleted file mode 100644
index 92fb1c5..0000000
--- a/vendor/sebastian/environment/build.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="environment">
- <target name="clean" description="Cleanup build artifacts">
-  <delete dir="${basedir}/vendor"/>
-  <delete file="${basedir}/composer.lock"/>
- </target>
-
- <target name="composer" depends="clean" description="Install dependencies with Composer">
-  <tstamp>
-   <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/>
-  </tstamp>
-  <delete>
-   <fileset dir="${basedir}">
-    <include name="composer.phar" />
-    <date datetime="${thirty.days.ago}" when="before"/>
-   </fileset>
-  </delete>
-
-  <get src="https://getcomposer.org/composer.phar" dest="${basedir}/composer.phar" skipexisting="true"/>
-
-  <exec executable="php">
-   <arg value="composer.phar"/>
-   <arg value="install"/>
-  </exec>
- </target>
-</project>
diff --git a/vendor/sebastian/environment/composer.json b/vendor/sebastian/environment/composer.json
deleted file mode 100644
index fd3ec7d..0000000
--- a/vendor/sebastian/environment/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "name": "sebastian/environment",
-    "description": "Provides functionality to handle HHVM/PHP environments",
-    "keywords": ["environment","hhvm","xdebug"],
-    "homepage": "http://www.github.com/sebastianbergmann/environment",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sebastian@phpunit.de"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.3"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.4"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.3.x-dev"
-        }
-    }
-}
diff --git a/vendor/sebastian/environment/phpunit.xml.dist b/vendor/sebastian/environment/phpunit.xml.dist
deleted file mode 100644
index 75148fd..0000000
--- a/vendor/sebastian/environment/phpunit.xml.dist
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         bootstrap="vendor/autoload.php"
-         beStrictAboutOutputDuringTests="true"
-         beStrictAboutTestsThatDoNotTestAnything="true"
-         beStrictAboutTodoAnnotatedTests="true"
-         checkForUnintentionallyCoveredCode="true"
-         verbose="true">
- <testsuites>
-  <testsuite name="Environment">
-   <directory>tests</directory>
-  </testsuite>
- </testsuites>
- <filter>
-  <whitelist addUncoveredFilesFromWhitelist="true">
-   <directory>src</directory>
-  </whitelist>
- </filter>
-</phpunit>
diff --git a/vendor/sebastian/environment/src/Console.php b/vendor/sebastian/environment/src/Console.php
deleted file mode 100644
index 9f15d54..0000000
--- a/vendor/sebastian/environment/src/Console.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/*
- * This file is part of the Environment 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\Environment;
-
-/**
- */
-class Console
-{
-    const STDIN  = 0;
-    const STDOUT = 1;
-    const STDERR = 2;
-
-    /**
-     * Returns true if STDOUT supports colorization.
-     *
-     * This code has been copied and adapted from
-     * Symfony\Component\Console\Output\OutputStream.
-     *
-     * @return bool
-     */
-    public function hasColorSupport()
-    {
-        if (DIRECTORY_SEPARATOR == '\\') {
-            return false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
-        }
-
-        if (!defined('STDOUT')) {
-            return false;
-        }
-
-        return $this->isInteractive(STDOUT);
-    }
-
-    /**
-     * Returns the number of columns of the terminal.
-     *
-     * @return int
-     */
-    public function getNumberOfColumns()
-    {
-        // Windows terminals have a fixed size of 80
-        // but one column is used for the cursor.
-        if (DIRECTORY_SEPARATOR == '\\') {
-            return 79;
-        }
-
-        if (!$this->isInteractive(self::STDIN)) {
-            return 80;
-        }
-
-        if (preg_match('#\d+ (\d+)#', shell_exec('stty size'), $match) === 1) {
-            return (int) $match[1];
-        }
-
-        if (preg_match('#columns = (\d+);#', shell_exec('stty'), $match) === 1) {
-            return (int) $match[1];
-        }
-
-        return 80;
-    }
-
-    /**
-     * Returns if the file descriptor is an interactive terminal or not.
-     *
-     * @param int|resource $fileDescriptor
-     *
-     * @return bool
-     */
-    public function isInteractive($fileDescriptor = self::STDOUT)
-    {
-        return function_exists('posix_isatty') && @posix_isatty($fileDescriptor);
-    }
-}
diff --git a/vendor/sebastian/environment/src/Runtime.php b/vendor/sebastian/environment/src/Runtime.php
deleted file mode 100644
index f12071a..0000000
--- a/vendor/sebastian/environment/src/Runtime.php
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-/*
- * This file is part of the Environment 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\Environment;
-
-/**
- * Utility class for HHVM/PHP environment handling.
- */
-class Runtime
-{
-    /**
-     * @var string
-     */
-    private static $binary;
-
-    /**
-     * Returns true when Xdebug is supported or
-     * the runtime used is PHPDBG (PHP >= 7.0).
-     *
-     * @return bool
-     */
-    public function canCollectCodeCoverage()
-    {
-        return $this->hasXdebug() || $this->hasPHPDBGCodeCoverage();
-    }
-
-    /**
-     * Returns the path to the binary of the current runtime.
-     * Appends ' --php' to the path when the runtime is HHVM.
-     *
-     * @return string
-     */
-    public function getBinary()
-    {
-        // HHVM
-        if (self::$binary === null && $this->isHHVM()) {
-            if ((self::$binary = getenv('PHP_BINARY')) === false) {
-                self::$binary = PHP_BINARY;
-            }
-
-            self::$binary = escapeshellarg(self::$binary) . ' --php';
-        }
-
-        // PHP >= 5.4.0
-        if (self::$binary === null && defined('PHP_BINARY')) {
-            self::$binary = escapeshellarg(PHP_BINARY);
-        }
-
-        // PHP < 5.4.0
-        if (self::$binary === null) {
-            if (PHP_SAPI == 'cli' && isset($_SERVER['_'])) {
-                if (strpos($_SERVER['_'], 'phpunit') !== false) {
-                    $file = file($_SERVER['_']);
-
-                    if (strpos($file[0], ' ') !== false) {
-                        $tmp          = explode(' ', $file[0]);
-                        self::$binary = escapeshellarg(trim($tmp[1]));
-                    } else {
-                        self::$binary = escapeshellarg(ltrim(trim($file[0]), '#!'));
-                    }
-                } elseif (strpos(basename($_SERVER['_']), 'php') !== false) {
-                    self::$binary = escapeshellarg($_SERVER['_']);
-                }
-            }
-        }
-
-        if (self::$binary === null) {
-            $possibleBinaryLocations = array(
-                PHP_BINDIR . '/php',
-                PHP_BINDIR . '/php-cli.exe',
-                PHP_BINDIR . '/php.exe'
-            );
-
-            foreach ($possibleBinaryLocations as $binary) {
-                if (is_readable($binary)) {
-                    self::$binary = escapeshellarg($binary);
-                    break;
-                }
-            }
-        }
-
-        if (self::$binary === null) {
-            self::$binary = 'php';
-        }
-
-        return self::$binary;
-    }
-
-    /**
-     * @return string
-     */
-    public function getNameWithVersion()
-    {
-        return $this->getName() . ' ' . $this->getVersion();
-    }
-
-    /**
-     * @return string
-     */
-    public function getName()
-    {
-        if ($this->isHHVM()) {
-            return 'HHVM';
-        } elseif ($this->isPHPDBG()) {
-            return 'PHPDBG';
-        } else {
-            return 'PHP';
-        }
-    }
-
-    /**
-     * @return string
-     */
-    public function getVendorUrl()
-    {
-        if ($this->isHHVM()) {
-            return 'http://hhvm.com/';
-        } else {
-            return 'http://php.net/';
-        }
-    }
-
-    /**
-     * @return string
-     */
-    public function getVersion()
-    {
-        if ($this->isHHVM()) {
-            return HHVM_VERSION;
-        } else {
-            return PHP_VERSION;
-        }
-    }
-
-    /**
-     * Returns true when the runtime used is PHP and Xdebug is loaded.
-     *
-     * @return bool
-     */
-    public function hasXdebug()
-    {
-        return ($this->isPHP() || $this->isHHVM()) && extension_loaded('xdebug');
-    }
-
-    /**
-     * Returns true when the runtime used is HHVM.
-     *
-     * @return bool
-     */
-    public function isHHVM()
-    {
-        return defined('HHVM_VERSION');
-    }
-
-    /**
-     * Returns true when the runtime used is PHP without the PHPDBG SAPI.
-     *
-     * @return bool
-     */
-    public function isPHP()
-    {
-        return !$this->isHHVM() && !$this->isPHPDBG();
-    }
-
-    /**
-     * Returns true when the runtime used is PHP with the PHPDBG SAPI.
-     *
-     * @return bool
-     */
-    public function isPHPDBG()
-    {
-        return PHP_SAPI === 'phpdbg' && !$this->isHHVM();
-    }
-
-    /**
-     * Returns true when the runtime used is PHP with the PHPDBG SAPI
-     * and the phpdbg_*_oplog() functions are available (PHP >= 7.0).
-     *
-     * @return bool
-     */
-    public function hasPHPDBGCodeCoverage()
-    {
-        return $this->isPHPDBG() && function_exists('phpdbg_start_oplog');
-    }
-}
diff --git a/vendor/sebastian/exporter/.gitignore b/vendor/sebastian/exporter/.gitignore
deleted file mode 100644
index 3beb10f..0000000
--- a/vendor/sebastian/exporter/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.idea
-phpunit.xml
-composer.lock
-composer.phar
-vendor/
-cache.properties
-build/LICENSE
-build/README.md
-build/*.tgz
diff --git a/vendor/sebastian/exporter/.travis.yml b/vendor/sebastian/exporter/.travis.yml
deleted file mode 100644
index 657519b..0000000
--- a/vendor/sebastian/exporter/.travis.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-language: php
-
-before_script:
-  - composer self-update
-  - composer install --no-interaction --prefer-source --dev
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-notifications:
-  email: false
-  webhooks:
-    urls:
-      - https://webhooks.gitter.im/e/6668f52f3dd4e3f81960
-    on_success: always
-    on_failure: always
-    on_start: false
-
diff --git a/vendor/sebastian/exporter/LICENSE b/vendor/sebastian/exporter/LICENSE
deleted file mode 100644
index 55a13d4..0000000
--- a/vendor/sebastian/exporter/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-Exporter
-
-Copyright (c) 2002-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/exporter/README.md b/vendor/sebastian/exporter/README.md
deleted file mode 100644
index 9a40a77..0000000
--- a/vendor/sebastian/exporter/README.md
+++ /dev/null
@@ -1,171 +0,0 @@
-Exporter
-========
-
-[![Build Status](https://secure.travis-ci.org/sebastianbergmann/exporter.png?branch=master)](https://travis-ci.org/sebastianbergmann/exporter)
-
-This component provides the functionality to export PHP variables for visualization.
-
-## Usage
-
-Exporting:
-
-```php
-<?php
-use SebastianBergmann\Exporter\Exporter;
-
-$exporter = new Exporter;
-
-/*
-Exception Object &0000000078de0f0d000000002003a261 (
-    'message' => ''
-    'string' => ''
-    'code' => 0
-    'file' => '/home/sebastianbergmann/test.php'
-    'line' => 34
-    'trace' => Array &0 ()
-    'previous' => null
-)
-*/
-
-print $exporter->export(new Exception);
-```
-
-## Data Types
-
-Exporting simple types:
-
-```php
-<?php
-use SebastianBergmann\Exporter\Exporter;
-
-$exporter = new Exporter;
-
-// 46
-print $exporter->export(46);
-
-// 4.0
-print $exporter->export(4.0);
-
-// 'hello, world!'
-print $exporter->export('hello, world!');
-
-// false
-print $exporter->export(false);
-
-// NAN
-print $exporter->export(acos(8));
-
-// -INF
-print $exporter->export(log(0));
-
-// null
-print $exporter->export(null);
-
-// resource(13) of type (stream)
-print $exporter->export(fopen('php://stderr', 'w'));
-
-// Binary String: 0x000102030405
-print $exporter->export(chr(0) . chr(1) . chr(2) . chr(3) . chr(4) . chr(5));
-```
-
-Exporting complex types:
-
-```php
-<?php
-use SebastianBergmann\Exporter\Exporter;
-
-$exporter = new Exporter;
-
-/*
-Array &0 (
-    0 => Array &1 (
-        0 => 1
-        1 => 2
-        2 => 3
-    )
-    1 => Array &2 (
-        0 => ''
-        1 => 0
-        2 => false
-    )
-)
-*/
-
-print $exporter->export(array(array(1,2,3), array("",0,FALSE)));
-
-/*
-Array &0 (
-    'self' => Array &1 (
-        'self' => Array &1
-    )
-)
-*/
-
-$array = array();
-$array['self'] = &$array;
-print $exporter->export($array);
-
-/*
-stdClass Object &0000000003a66dcc0000000025e723e2 (
-    'self' => stdClass Object &0000000003a66dcc0000000025e723e2
-)
-*/
-
-$obj = new stdClass();
-$obj->self = $obj;
-print $exporter->export($obj);
-```
-
-Compact exports:
-
-```php
-<?php
-use SebastianBergmann\Exporter\Exporter;
-
-$exporter = new Exporter;
-
-// Array ()
-print $exporter->shortenedExport(array());
-
-// Array (...)
-print $exporter->shortenedExport(array(1,2,3,4,5));
-
-// stdClass Object ()
-print $exporter->shortenedExport(new stdClass);
-
-// Exception Object (...)
-print $exporter->shortenedExport(new Exception);
-
-// this\nis\na\nsuper\nlong\nstring\nt...\nspace
-print $exporter->shortenedExport(
-<<<LONG_STRING
-this
-is
-a
-super
-long
-string
-that
-wraps
-a
-lot
-and
-eats
-up
-a
-lot
-of
-space
-LONG_STRING
-);
-```
-
-## Installation
-
-To add Exporter as a local, per-project dependency to your project, simply add a dependency on `sebastian/exporter` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on Exporter 1.0:
-
-    {
-        "require": {
-            "sebastian/exporter": "1.0.*"
-        }
-    }
diff --git a/vendor/sebastian/exporter/build.xml b/vendor/sebastian/exporter/build.xml
deleted file mode 100644
index e66a71a..0000000
--- a/vendor/sebastian/exporter/build.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="exporter">
- <target name="clean" description="Cleanup build artifacts">
-  <delete dir="${basedir}/vendor"/>
-  <delete file="${basedir}/composer.lock"/>
- </target>
-
- <target name="composer" depends="clean" description="Install dependencies with Composer">
-  <tstamp>
-   <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/>
-  </tstamp>
-  <delete>
-   <fileset dir="${basedir}">
-    <include name="composer.phar" />
-    <date datetime="${thirty.days.ago}" when="before"/>
-   </fileset>
-  </delete>
-
-  <get src="https://getcomposer.org/composer.phar" dest="${basedir}/composer.phar" skipexisting="true"/>
-
-  <exec executable="php">
-   <arg value="composer.phar"/>
-   <arg value="install"/>
-  </exec>
- </target>
-</project>
-
diff --git a/vendor/sebastian/exporter/composer.json b/vendor/sebastian/exporter/composer.json
deleted file mode 100644
index 723596e..0000000
--- a/vendor/sebastian/exporter/composer.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-    "name": "sebastian/exporter",
-    "description": "Provides the functionality to export PHP variables for visualization",
-    "keywords": ["exporter","export"],
-    "homepage": "http://www.github.com/sebastianbergmann/exporter",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sebastian@phpunit.de"
-        },
-        {
-            "name": "Jeff Welch",
-            "email": "whatthejeff@gmail.com"
-        },
-        {
-            "name": "Volker Dusch",
-            "email": "github@wallbash.com"
-        },
-        {
-            "name": "Adam Harvey",
-            "email": "aharvey@php.net"
-        },
-        {
-            "name": "Bernhard Schussek",
-            "email": "bschussek@2bepublished.at"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.3",
-        "sebastian/recursion-context": "~1.0"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.4"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.2.x-dev"
-        }
-    }
-}
-
diff --git a/vendor/sebastian/exporter/phpunit.xml.dist b/vendor/sebastian/exporter/phpunit.xml.dist
deleted file mode 100644
index 8d85af6..0000000
--- a/vendor/sebastian/exporter/phpunit.xml.dist
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="false"
-         bootstrap="vendor/autoload.php"
-         beStrictAboutTestsThatDoNotTestAnything="true"
-         beStrictAboutOutputDuringTests="true"
-         beStrictAboutTodoAnnotatedTests="true"
-         checkForUnintentionallyCoveredCode="true"
-         forceCoversAnnotation="true"
-         verbose="true">
- <testsuites>
-  <testsuite name="exporter">
-   <directory>tests</directory>
-  </testsuite>
- </testsuites>
- <filter>
-  <whitelist addUncoveredFilesFromWhitelist="true" processUncoveredFilesFromWhitelist="true">
-   <directory>src</directory>
-  </whitelist>
- </filter>
-</phpunit>
-
diff --git a/vendor/sebastian/exporter/src/Exporter.php b/vendor/sebastian/exporter/src/Exporter.php
deleted file mode 100644
index a9f5157..0000000
--- a/vendor/sebastian/exporter/src/Exporter.php
+++ /dev/null
@@ -1,296 +0,0 @@
-<?php
-/*
- * This file is part of the Exporter 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\Exporter;
-
-use SebastianBergmann\RecursionContext\Context;
-
-/**
- * A nifty utility for visualizing PHP variables.
- *
- * <code>
- * <?php
- * use SebastianBergmann\Exporter\Exporter;
- *
- * $exporter = new Exporter;
- * print $exporter->export(new Exception);
- * </code>
- */
-class Exporter
-{
-    /**
-     * Exports a value as a string
-     *
-     * The output of this method is similar to the output of print_r(), but
-     * improved in various aspects:
-     *
-     *  - NULL is rendered as "null" (instead of "")
-     *  - TRUE is rendered as "true" (instead of "1")
-     *  - FALSE is rendered as "false" (instead of "")
-     *  - Strings are always quoted with single quotes
-     *  - Carriage returns and newlines are normalized to \n
-     *  - Recursion and repeated rendering is treated properly
-     *
-     * @param  mixed  $value
-     * @param  int    $indentation The indentation level of the 2nd+ line
-     * @return string
-     */
-    public function export($value, $indentation = 0)
-    {
-        return $this->recursiveExport($value, $indentation);
-    }
-
-    /**
-     * @param  mixed   $data
-     * @param  Context $context
-     * @return string
-     */
-    public function shortenedRecursiveExport(&$data, Context $context = null)
-    {
-        $result   = array();
-        $exporter = new self();
-
-        if (!$context) {
-            $context = new Context;
-        }
-
-        $context->add($data);
-
-        foreach ($data as $key => $value) {
-            if (is_array($value)) {
-                if ($context->contains($data[$key]) !== false) {
-                    $result[] = '*RECURSION*';
-                }
-
-                else {
-                    $result[] = sprintf(
-                        'array(%s)',
-                        $this->shortenedRecursiveExport($data[$key], $context)
-                    );
-                }
-            }
-
-            else {
-                $result[] = $exporter->shortenedExport($value);
-            }
-        }
-
-        return implode(', ', $result);
-    }
-
-    /**
-     * Exports a value into a single-line string
-     *
-     * The output of this method is similar to the output of
-     * SebastianBergmann\Exporter\Exporter::export. This method guarantees
-     * thought that the result contains now newlines.
-     *
-     * Newlines are replaced by the visible string '\n'. Contents of arrays
-     * and objects (if any) are replaced by '...'.
-     *
-     * @param  mixed  $value
-     * @return string
-     * @see    SebastianBergmann\Exporter\Exporter::export
-     */
-    public function shortenedExport($value)
-    {
-        if (is_string($value)) {
-            $string = $this->export($value);
-
-            if (strlen($string) > 40) {
-                $string = substr($string, 0, 30) . '...' . substr($string, -7);
-            }
-
-            return str_replace("\n", '\n', $string);
-        }
-
-        if (is_object($value)) {
-            return sprintf(
-                '%s Object (%s)',
-                get_class($value),
-                count($this->toArray($value)) > 0 ? '...' : ''
-            );
-        }
-
-        if (is_array($value)) {
-            return sprintf(
-                'Array (%s)',
-                count($value) > 0 ? '...' : ''
-            );
-        }
-
-        return $this->export($value);
-    }
-
-    /**
-     * Converts an object to an array containing all of its private, protected
-     * and public properties.
-     *
-     * @param  mixed $value
-     * @return array
-     */
-    public function toArray($value)
-    {
-        if (!is_object($value)) {
-            return (array) $value;
-        }
-
-        $array = array();
-
-        foreach ((array) $value as $key => $val) {
-            // properties are transformed to keys in the following way:
-            // private   $property => "\0Classname\0property"
-            // protected $property => "\0*\0property"
-            // public    $property => "property"
-            if (preg_match('/^\0.+\0(.+)$/', $key, $matches)) {
-                $key = $matches[1];
-            }
-
-            // See https://github.com/php/php-src/commit/5721132
-            if ($key === "\0gcdata") {
-                continue;
-            }
-
-            $array[$key] = $val;
-        }
-
-        // Some internal classes like SplObjectStorage don't work with the
-        // above (fast) mechanism nor with reflection in Zend.
-        // Format the output similarly to print_r() in this case
-        if ($value instanceof \SplObjectStorage) {
-            // However, the fast method does work in HHVM, and exposes the
-            // internal implementation. Hide it again.
-            if (property_exists('\SplObjectStorage', '__storage')) {
-                unset($array['__storage']);
-            } elseif (property_exists('\SplObjectStorage', 'storage')) {
-                unset($array['storage']);
-            }
-
-            if (property_exists('\SplObjectStorage', '__key')) {
-                unset($array['__key']);
-            }
-
-            foreach ($value as $key => $val) {
-                $array[spl_object_hash($val)] = array(
-                    'obj' => $val,
-                    'inf' => $value->getInfo(),
-                );
-            }
-        }
-
-        return $array;
-    }
-
-    /**
-     * Recursive implementation of export
-     *
-     * @param  mixed                                       $value       The value to export
-     * @param  int                                         $indentation The indentation level of the 2nd+ line
-     * @param  \SebastianBergmann\RecursionContext\Context $processed   Previously processed objects
-     * @return string
-     * @see    SebastianBergmann\Exporter\Exporter::export
-     */
-    protected function recursiveExport(&$value, $indentation, $processed = null)
-    {
-        if ($value === null) {
-            return 'null';
-        }
-
-        if ($value === true) {
-            return 'true';
-        }
-
-        if ($value === false) {
-            return 'false';
-        }
-
-        if (is_float($value) && floatval(intval($value)) === $value) {
-            return "$value.0";
-        }
-
-        if (is_resource($value)) {
-            return sprintf(
-                'resource(%d) of type (%s)',
-                $value,
-                get_resource_type($value)
-            );
-        }
-
-        if (is_string($value)) {
-            // Match for most non printable chars somewhat taking multibyte chars into account
-            if (preg_match('/[^\x09-\x0d\x20-\xff]/', $value)) {
-                return 'Binary String: 0x' . bin2hex($value);
-            }
-
-            return "'" .
-            str_replace(array("\r\n", "\n\r", "\r"), array("\n", "\n", "\n"), $value) .
-            "'";
-        }
-
-        $whitespace = str_repeat(' ', 4 * $indentation);
-
-        if (!$processed) {
-            $processed = new Context;
-        }
-
-        if (is_array($value)) {
-            if (($key = $processed->contains($value)) !== false) {
-                return 'Array &' . $key;
-            }
-
-            $key    = $processed->add($value);
-            $values = '';
-
-            if (count($value) > 0) {
-                foreach ($value as $k => $v) {
-                    $values .= sprintf(
-                        '%s    %s => %s' . "\n",
-                        $whitespace,
-                        $this->recursiveExport($k, $indentation),
-                        $this->recursiveExport($value[$k], $indentation + 1, $processed)
-                    );
-                }
-
-                $values = "\n" . $values . $whitespace;
-            }
-
-            return sprintf('Array &%s (%s)', $key, $values);
-        }
-
-        if (is_object($value)) {
-            $class = get_class($value);
-
-            if ($hash = $processed->contains($value)) {
-                return sprintf('%s Object &%s', $class, $hash);
-            }
-
-            $hash   = $processed->add($value);
-            $values = '';
-            $array  = $this->toArray($value);
-
-            if (count($array) > 0) {
-                foreach ($array as $k => $v) {
-                    $values .= sprintf(
-                        '%s    %s => %s' . "\n",
-                        $whitespace,
-                        $this->recursiveExport($k, $indentation),
-                        $this->recursiveExport($v, $indentation + 1, $processed)
-                    );
-                }
-
-                $values = "\n" . $values . $whitespace;
-            }
-
-            return sprintf('%s Object &%s (%s)', $class, $hash, $values);
-        }
-
-        return var_export($value, true);
-    }
-}
diff --git a/vendor/sebastian/global-state/.gitignore b/vendor/sebastian/global-state/.gitignore
deleted file mode 100644
index a288f68..0000000
--- a/vendor/sebastian/global-state/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-.idea
-composer.lock
-composer.phar
-vendor/
-cache.properties
diff --git a/vendor/sebastian/global-state/.travis.yml b/vendor/sebastian/global-state/.travis.yml
deleted file mode 100644
index 41edae3..0000000
--- a/vendor/sebastian/global-state/.travis.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-language: php
-
-before_script:
-  - composer self-update
-  - composer install --no-interaction --prefer-source --dev
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-script: ./vendor/bin/phpunit --configuration ./build/phpunit.xml
-
-notifications:
-  email: false
-  irc: "irc.freenode.org#phpunit"
diff --git a/vendor/sebastian/global-state/LICENSE b/vendor/sebastian/global-state/LICENSE
deleted file mode 100644
index b6176e0..0000000
--- a/vendor/sebastian/global-state/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/global-state/README.md b/vendor/sebastian/global-state/README.md
deleted file mode 100644
index 78fd117..0000000
--- a/vendor/sebastian/global-state/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# GlobalState
-
-Snapshotting of global state, factored out of PHPUnit into a stand-alone component.
-
-## 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:
-
-    {
-        "require": {
-            "sebastian/global-state": "1.0.*"
-        }
-    }
diff --git a/vendor/sebastian/global-state/build.xml b/vendor/sebastian/global-state/build.xml
deleted file mode 100644
index 63c5445..0000000
--- a/vendor/sebastian/global-state/build.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="global-state">
- <target name="clean" description="Cleanup build artifacts">
-  <delete dir="${basedir}/vendor"/>
-  <delete file="${basedir}/composer.lock"/>
- </target>
-
- <target name="composer" depends="clean" description="Install dependencies with Composer">
-  <tstamp>
-   <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/>
-  </tstamp>
-  <delete>
-   <fileset dir="${basedir}">
-    <include name="composer.phar" />
-    <date datetime="${thirty.days.ago}" when="before"/>
-   </fileset>
-  </delete>
-
-  <get src="https://getcomposer.org/composer.phar" dest="${basedir}/composer.phar" skipexisting="true"/>
-
-  <exec executable="php">
-   <arg value="composer.phar"/>
-   <arg value="install"/>
-  </exec>
- </target>
-
- <target name="phpunit" description="Run unit tests with PHPUnit">
-  <exec executable="${basedir}/vendor/bin/phpunit" failonerror="true">
-   <arg value="--configuration"/>
-   <arg path="${basedir}/build/phpunit.xml"/>
-  </exec>
- </target>
-</project>
diff --git a/vendor/sebastian/global-state/build/phpunit.xml b/vendor/sebastian/global-state/build/phpunit.xml
deleted file mode 100644
index 9fef0a0..0000000
--- a/vendor/sebastian/global-state/build/phpunit.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.2/phpunit.xsd"
-         bootstrap="../vendor/autoload.php"
-         backupGlobals="false"
-         verbose="true">
-  <testsuite name="GlobalState">
-    <directory suffix="Test.php">../tests</directory>
-  </testsuite>
-
-  <filter>
-    <whitelist processUncoveredFilesFromWhitelist="true">
-      <directory suffix=".php">../src</directory>
-    </whitelist>
-  </filter>
-</phpunit>
diff --git a/vendor/sebastian/global-state/composer.json b/vendor/sebastian/global-state/composer.json
deleted file mode 100644
index 7e8849b..0000000
--- a/vendor/sebastian/global-state/composer.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-    "name": "sebastian/global-state",
-    "description": "Snapshotting of global state",
-    "keywords": ["global state"],
-    "homepage": "http://www.github.com/sebastianbergmann/global-state",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sebastian@phpunit.de"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.3"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.2"
-    },
-    "suggest": {
-        "ext-uopz": "*"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "autoload-dev": {
-        "classmap": [
-            "tests/_fixture/"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0-dev"
-        }
-    }
-}
diff --git a/vendor/sebastian/global-state/src/Blacklist.php b/vendor/sebastian/global-state/src/Blacklist.php
deleted file mode 100644
index 12d900f..0000000
--- a/vendor/sebastian/global-state/src/Blacklist.php
+++ /dev/null
@@ -1,186 +0,0 @@
-<?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 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
- */
-
-namespace SebastianBergmann\GlobalState;
-
-use ReflectionClass;
-
-/**
- * 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
-{
-    /**
-     * @var array
-     */
-    private $globalVariables = array();
-
-    /**
-     * @var array
-     */
-    private $classes = array();
-
-    /**
-     * @var array
-     */
-    private $classNamePrefixes = array();
-
-    /**
-     * @var array
-     */
-    private $parentClasses = array();
-
-    /**
-     * @var array
-     */
-    private $interfaces = array();
-
-    /**
-     * @var array
-     */
-    private $staticAttributes = array();
-
-    /**
-     * @param string $variableName
-     */
-    public function addGlobalVariable($variableName)
-    {
-        $this->globalVariables[$variableName] = true;
-    }
-
-    /**
-     * @param string $className
-     */
-    public function addClass($className)
-    {
-        $this->classes[] = $className;
-    }
-
-    /**
-     * @param string $className
-     */
-    public function addSubclassesOf($className)
-    {
-        $this->parentClasses[] = $className;
-    }
-
-    /**
-     * @param string $interfaceName
-     */
-    public function addImplementorsOf($interfaceName)
-    {
-        $this->interfaces[] = $interfaceName;
-    }
-
-    /**
-     * @param string $classNamePrefix
-     */
-    public function addClassNamePrefix($classNamePrefix)
-    {
-        $this->classNamePrefixes[] = $classNamePrefix;
-    }
-
-    /**
-     * @param string $className
-     * @param string $attributeName
-     */
-    public function addStaticAttribute($className, $attributeName)
-    {
-        if (!isset($this->staticAttributes[$className])) {
-            $this->staticAttributes[$className] = array();
-        }
-
-        $this->staticAttributes[$className][$attributeName] = true;
-    }
-
-    /**
-     * @param  string $variableName
-     * @return boolean
-     */
-    public function isGlobalVariableBlacklisted($variableName)
-    {
-        return isset($this->globalVariables[$variableName]);
-    }
-
-    /**
-     * @param  string $className
-     * @param  string $attributeName
-     * @return boolean
-     */
-    public function isStaticAttributeBlacklisted($className, $attributeName)
-    {
-        if (in_array($className, $this->classes)) {
-            return true;
-        }
-
-        foreach ($this->classNamePrefixes as $prefix) {
-            if (strpos($className, $prefix) === 0) {
-                return true;
-            }
-        }
-
-        $class = new ReflectionClass($className);
-
-        foreach ($this->parentClasses as $type) {
-            if ($class->isSubclassOf($type)) {
-                return true;
-            }
-        }
-
-        foreach ($this->interfaces as $type) {
-            if ($class->implementsInterface($type)) {
-                return true;
-            }
-        }
-
-        if (isset($this->staticAttributes[$className][$attributeName])) {
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/sebastian/global-state/src/Exception.php b/vendor/sebastian/global-state/src/Exception.php
deleted file mode 100644
index 0436886..0000000
--- a/vendor/sebastian/global-state/src/Exception.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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 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
- */
-
-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
deleted file mode 100644
index a5f0e55..0000000
--- a/vendor/sebastian/global-state/src/Restorer.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?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 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
- */
-
-namespace SebastianBergmann\GlobalState;
-
-use ReflectionProperty;
-
-/**
- * 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
-     * @throws RuntimeException when the uopz_delete() function is not available
-     * @see    https://github.com/krakjoe/uopz
-     */
-    public function restoreFunctions(Snapshot $snapshot)
-    {
-        if (!function_exists('uopz_delete')) {
-            throw new RuntimeException('The uopz_delete() function is required for this operation');
-        }
-
-        $functions = get_defined_functions();
-
-        foreach (array_diff($functions['user'], $snapshot->functions()) as $function) {
-            uopz_delete($function);
-        }
-    }
-
-    /**
-     * Restores all global and super-global variables from a snapshot.
-     *
-     * @param Snapshot $snapshot
-     */
-    public function restoreGlobalVariables(Snapshot $snapshot)
-    {
-        $superGlobalArrays = $snapshot->superGlobalArrays();
-
-        foreach ($superGlobalArrays as $superGlobalArray) {
-            $this->restoreSuperGlobalArray($snapshot, $superGlobalArray);
-        }
-
-        $globalVariables = $snapshot->globalVariables();
-
-        foreach (array_keys($GLOBALS) as $key) {
-            if ($key != 'GLOBALS' &&
-                !in_array($key, $superGlobalArrays) &&
-                !$snapshot->blacklist()->isGlobalVariableBlacklisted($key)) {
-                if (isset($globalVariables[$key])) {
-                    $GLOBALS[$key] = $globalVariables[$key];
-                } else {
-                    unset($GLOBALS[$key]);
-                }
-            }
-        }
-    }
-
-    /**
-     * Restores all static attributes in user-defined classes from this snapshot.
-     *
-     * @param Snapshot $snapshot
-     */
-    public function restoreStaticAttributes(Snapshot $snapshot)
-    {
-        foreach ($snapshot->staticAttributes() as $className => $staticAttributes) {
-            foreach ($staticAttributes as $name => $value) {
-                $reflector = new ReflectionProperty($className, $name);
-                $reflector->setAccessible(true);
-                $reflector->setValue($value);
-            }
-        }
-    }
-
-    /**
-     * Restores a super-global variable array from this snapshot.
-     *
-     * @param Snapshot $snapshot
-     * @param $superGlobalArray
-     */
-    private function restoreSuperGlobalArray(Snapshot $snapshot, $superGlobalArray)
-    {
-        $superGlobalVariables = $snapshot->superGlobalVariables();
-
-        if (isset($GLOBALS[$superGlobalArray]) &&
-            is_array($GLOBALS[$superGlobalArray]) &&
-            isset($superGlobalVariables[$superGlobalArray])) {
-            $keys = array_keys(
-                array_merge(
-                    $GLOBALS[$superGlobalArray],
-                    $superGlobalVariables[$superGlobalArray]
-                )
-            );
-
-            foreach ($keys as $key) {
-                if (isset($superGlobalVariables[$superGlobalArray][$key])) {
-                    $GLOBALS[$superGlobalArray][$key] = $superGlobalVariables[$superGlobalArray][$key];
-                } else {
-                    unset($GLOBALS[$superGlobalArray][$key]);
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/sebastian/global-state/src/RuntimeException.php b/vendor/sebastian/global-state/src/RuntimeException.php
deleted file mode 100644
index e25e208..0000000
--- a/vendor/sebastian/global-state/src/RuntimeException.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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 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
- */
-
-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
deleted file mode 100644
index 5fb08be..0000000
--- a/vendor/sebastian/global-state/src/Snapshot.php
+++ /dev/null
@@ -1,443 +0,0 @@
-<?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 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
- */
-
-namespace SebastianBergmann\GlobalState;
-
-use Closure;
-use ReflectionClass;
-
-/**
- * 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
-{
-    /**
-     * @var Blacklist
-     */
-    private $blacklist;
-
-    /**
-     * @var array
-     */
-    private $globalVariables = array();
-
-    /**
-     * @var array
-     */
-    private $superGlobalArrays = array();
-
-    /**
-     * @var array
-     */
-    private $superGlobalVariables = array();
-
-    /**
-     * @var array
-     */
-    private $staticAttributes = array();
-
-    /**
-     * @var array
-     */
-    private $iniSettings = array();
-
-    /**
-     * @var array
-     */
-    private $includedFiles = array();
-
-    /**
-     * @var array
-     */
-    private $constants = array();
-
-    /**
-     * @var array
-     */
-    private $functions = array();
-
-    /**
-     * @var array
-     */
-    private $interfaces = array();
-
-    /**
-     * @var array
-     */
-    private $classes = array();
-
-    /**
-     * @var array
-     */
-    private $traits = array();
-
-    /**
-     * 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
-     */
-    public function __construct(Blacklist $blacklist = null, $includeGlobalVariables = true, $includeStaticAttributes = true, $includeConstants = true, $includeFunctions = true, $includeClasses = true, $includeInterfaces = true, $includeTraits = true, $includeIniSettings = true, $includeIncludedFiles = true)
-    {
-        if ($blacklist === null) {
-            $blacklist = new Blacklist;
-        }
-
-        $this->blacklist = $blacklist;
-
-        if ($includeConstants) {
-            $this->snapshotConstants();
-        }
-
-        if ($includeFunctions) {
-            $this->snapshotFunctions();
-        }
-
-        if ($includeClasses || $includeStaticAttributes) {
-            $this->snapshotClasses();
-        }
-
-        if ($includeInterfaces) {
-            $this->snapshotInterfaces();
-        }
-
-        if ($includeGlobalVariables) {
-            $this->setupSuperGlobalArrays();
-            $this->snapshotGlobals();
-        }
-
-        if ($includeStaticAttributes) {
-            $this->snapshotStaticAttributes();
-        }
-
-        if ($includeIniSettings) {
-            $this->iniSettings = ini_get_all(null, false);
-        }
-
-        if ($includeIncludedFiles) {
-            $this->includedFiles = get_included_files();
-        }
-
-        if (function_exists('get_declared_traits')) {
-            $this->traits = get_declared_traits();
-        }
-    }
-
-    /**
-     * @return Blacklist
-     */
-    public function blacklist()
-    {
-        return $this->blacklist;
-    }
-
-    /**
-     * @return array
-     */
-    public function globalVariables()
-    {
-        return $this->globalVariables;
-    }
-
-    /**
-     * @return array
-     */
-    public function superGlobalVariables()
-    {
-        return $this->superGlobalVariables;
-    }
-
-    /**
-     * Returns a list of all super-global variable arrays.
-     *
-     * @return array
-     */
-    public function superGlobalArrays()
-    {
-        return $this->superGlobalArrays;
-    }
-
-    /**
-     * @return array
-     */
-    public function staticAttributes()
-    {
-        return $this->staticAttributes;
-    }
-
-    /**
-     * @return array
-     */
-    public function iniSettings()
-    {
-        return $this->iniSettings;
-    }
-
-    /**
-     * @return array
-     */
-    public function includedFiles()
-    {
-        return $this->includedFiles;
-    }
-
-    /**
-     * @return array
-     */
-    public function constants()
-    {
-        return $this->constants;
-    }
-
-    /**
-     * @return array
-     */
-    public function functions()
-    {
-        return $this->functions;
-    }
-
-    /**
-     * @return array
-     */
-    public function interfaces()
-    {
-        return $this->interfaces;
-    }
-
-    /**
-     * @return array
-     */
-    public function classes()
-    {
-        return $this->classes;
-    }
-
-    /**
-     * @return array
-     */
-    public function traits()
-    {
-        return $this->traits;
-    }
-
-    /**
-     * Creates a snapshot user-defined constants.
-     */
-    private function snapshotConstants()
-    {
-        $constants = get_defined_constants(true);
-
-        if (isset($constants['user'])) {
-            $this->constants = $constants['user'];
-        }
-    }
-
-    /**
-     * Creates a snapshot user-defined functions.
-     */
-    private function snapshotFunctions()
-    {
-        $functions = get_defined_functions();
-
-        $this->functions = $functions['user'];
-    }
-
-    /**
-     * Creates a snapshot user-defined classes.
-     */
-    private function snapshotClasses()
-    {
-        foreach (array_reverse(get_declared_classes()) as $className) {
-            $class = new ReflectionClass($className);
-
-            if (!$class->isUserDefined()) {
-                break;
-            }
-
-            $this->classes[] = $className;
-        }
-
-        $this->classes = array_reverse($this->classes);
-    }
-
-    /**
-     * Creates a snapshot user-defined interfaces.
-     */
-    private function snapshotInterfaces()
-    {
-        foreach (array_reverse(get_declared_interfaces()) as $interfaceName) {
-            $class = new ReflectionClass($interfaceName);
-
-            if (!$class->isUserDefined()) {
-                break;
-            }
-
-            $this->interfaces[] = $interfaceName;
-        }
-
-        $this->interfaces = array_reverse($this->interfaces);
-    }
-
-    /**
-     * Creates a snapshot of all global and super-global variables.
-     */
-    private function snapshotGlobals()
-    {
-        $superGlobalArrays = $this->superGlobalArrays();
-
-        foreach ($superGlobalArrays as $superGlobalArray) {
-            $this->snapshotSuperGlobalArray($superGlobalArray);
-        }
-
-        foreach (array_keys($GLOBALS) as $key) {
-            if ($key != 'GLOBALS' &&
-                !in_array($key, $superGlobalArrays) &&
-                $this->canBeSerialized($GLOBALS[$key]) &&
-                !$this->blacklist->isGlobalVariableBlacklisted($key)) {
-                $this->globalVariables[$key] = unserialize(serialize($GLOBALS[$key]));
-            }
-        }
-    }
-
-    /**
-     * Creates a snapshot a super-global variable array.
-     *
-     * @param $superGlobalArray
-     */
-    private function snapshotSuperGlobalArray($superGlobalArray)
-    {
-        $this->superGlobalVariables[$superGlobalArray] = array();
-
-        if (isset($GLOBALS[$superGlobalArray]) && is_array($GLOBALS[$superGlobalArray])) {
-            foreach ($GLOBALS[$superGlobalArray] as $key => $value) {
-                $this->superGlobalVariables[$superGlobalArray][$key] = unserialize(serialize($value));
-            }
-        }
-    }
-
-    /**
-     * Creates a snapshot of all static attributes in user-defined classes.
-     */
-    private function snapshotStaticAttributes()
-    {
-        foreach ($this->classes as $className) {
-            $class    = new ReflectionClass($className);
-            $snapshot = array();
-
-            foreach ($class->getProperties() as $attribute) {
-                if ($attribute->isStatic()) {
-                    $name = $attribute->getName();
-
-                    if ($this->blacklist->isStaticAttributeBlacklisted($className, $name)) {
-                        continue;
-                    }
-
-                    $attribute->setAccessible(true);
-                    $value = $attribute->getValue();
-
-                    if ($this->canBeSerialized($value)) {
-                        $snapshot[$name] = unserialize(serialize($value));
-                    }
-                }
-            }
-
-            if (!empty($snapshot)) {
-                $this->staticAttributes[$className] = $snapshot;
-            }
-        }
-    }
-
-    /**
-     * Returns a list of all super-global variable arrays.
-     *
-     * @return array
-     */
-    private function setupSuperGlobalArrays()
-    {
-        $this->superGlobalArrays = array(
-            '_ENV',
-            '_POST',
-            '_GET',
-            '_COOKIE',
-            '_SERVER',
-            '_FILES',
-            '_REQUEST'
-        );
-
-        if (ini_get('register_long_arrays') == '1') {
-            $this->superGlobalArrays = array_merge(
-                $this->superGlobalArrays,
-                array(
-                    'HTTP_ENV_VARS',
-                    'HTTP_POST_VARS',
-                    'HTTP_GET_VARS',
-                    'HTTP_COOKIE_VARS',
-                    'HTTP_SERVER_VARS',
-                    'HTTP_POST_FILES'
-                )
-            );
-        }
-    }
-
-    /**
-     * @param  mixed $variable
-     * @return boolean
-     * @todo   Implement this properly
-     */
-    private function canBeSerialized($variable) {
-        return !$variable instanceof Closure;
-    }
-}
diff --git a/vendor/sebastian/recursion-context/.gitignore b/vendor/sebastian/recursion-context/.gitignore
deleted file mode 100644
index 3beb10f..0000000
--- a/vendor/sebastian/recursion-context/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.idea
-phpunit.xml
-composer.lock
-composer.phar
-vendor/
-cache.properties
-build/LICENSE
-build/README.md
-build/*.tgz
diff --git a/vendor/sebastian/recursion-context/.travis.yml b/vendor/sebastian/recursion-context/.travis.yml
deleted file mode 100644
index c5952a1..0000000
--- a/vendor/sebastian/recursion-context/.travis.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-language: php
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-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/recursion-context/LICENSE b/vendor/sebastian/recursion-context/LICENSE
deleted file mode 100644
index f8c30c2..0000000
--- a/vendor/sebastian/recursion-context/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-Recursion Context
-
-Copyright (c) 2002-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/recursion-context/README.md b/vendor/sebastian/recursion-context/README.md
deleted file mode 100644
index bd43985..0000000
--- a/vendor/sebastian/recursion-context/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Recursion Context
-
-...
-
-## Installation
-
-To add Recursion Context as a local, per-project dependency to your project, simply add a dependency on `sebastian/recursion-context` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on Recursion Context 1.0:
-
-    {
-        "require": {
-            "sebastian/recursion-context": "~1.0"
-        }
-    }
diff --git a/vendor/sebastian/recursion-context/build.xml b/vendor/sebastian/recursion-context/build.xml
deleted file mode 100644
index b4fd193..0000000
--- a/vendor/sebastian/recursion-context/build.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="recursion-context">
- <target name="clean" description="Cleanup build artifacts">
-  <delete dir="${basedir}/vendor"/>
-  <delete file="${basedir}/composer.lock"/>
- </target>
-
- <target name="composer" depends="clean" description="Install dependencies with Composer">
-  <tstamp>
-   <format property="thirty.days.ago" pattern="MM/dd/yyyy hh:mm aa" offset="-30" unit="day"/>
-  </tstamp>
-  <delete>
-   <fileset dir="${basedir}">
-    <include name="composer.phar" />
-    <date datetime="${thirty.days.ago}" when="before"/>
-   </fileset>
-  </delete>
-
-  <get src="https://getcomposer.org/composer.phar" dest="${basedir}/composer.phar" skipexisting="true"/>
-
-  <exec executable="php">
-   <arg value="composer.phar"/>
-   <arg value="install"/>
-  </exec>
- </target>
-</project>
-
diff --git a/vendor/sebastian/recursion-context/composer.json b/vendor/sebastian/recursion-context/composer.json
deleted file mode 100644
index fed033d..0000000
--- a/vendor/sebastian/recursion-context/composer.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-    "name": "sebastian/recursion-context",
-    "description": "Provides functionality to recursively process PHP variables",
-    "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sebastian@phpunit.de"
-        },
-        {
-            "name": "Jeff Welch",
-            "email": "whatthejeff@gmail.com"
-        },
-        {
-            "name": "Adam Harvey",
-            "email": "aharvey@php.net"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.3"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.4"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0.x-dev"
-        }
-    }
-}
diff --git a/vendor/sebastian/recursion-context/phpunit.xml.dist b/vendor/sebastian/recursion-context/phpunit.xml.dist
deleted file mode 100644
index 757e3e6..0000000
--- a/vendor/sebastian/recursion-context/phpunit.xml.dist
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="false"
-         bootstrap="vendor/autoload.php"
-         beStrictAboutTestsThatDoNotTestAnything="true"
-         beStrictAboutOutputDuringTests="true"
-         beStrictAboutTodoAnnotatedTests="true"
-         checkForUnintentionallyCoveredCode="true"
-         forceCoversAnnotation="true"
-         verbose="true">
-<testsuites>
-  <testsuite name="recursion-context">
-   <directory>tests</directory>
-  </testsuite>
- </testsuites>
- <filter>
-  <whitelist addUncoveredFilesFromWhitelist="true" processUncoveredFilesFromWhitelist="true">
-   <directory>src</directory>
-  </whitelist>
- </filter>
-</phpunit>
diff --git a/vendor/sebastian/recursion-context/src/Context.php b/vendor/sebastian/recursion-context/src/Context.php
deleted file mode 100644
index 06bf6ce..0000000
--- a/vendor/sebastian/recursion-context/src/Context.php
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php
-/*
- * This file is part of the Recursion Context 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\RecursionContext;
-
-/**
- * A context containing previously processed arrays and objects
- * when recursively processing a value.
- */
-final class Context
-{
-    /**
-     * @var array[]
-     */
-    private $arrays;
-
-    /**
-     * @var \SplObjectStorage
-     */
-    private $objects;
-
-    /**
-     * Initialises the context
-     */
-    public function __construct()
-    {
-        $this->arrays  = array();
-        $this->objects = new \SplObjectStorage;
-    }
-
-    /**
-     * Adds a value to the context.
-     *
-     * @param  array|object             $value The value to add.
-     * @return int|string               The ID of the stored value, either as
-     *                                        a string or integer.
-     * @throws InvalidArgumentException Thrown if $value is not an array or
-     *                                        object
-     */
-    public function add(&$value)
-    {
-        if (is_array($value)) {
-            return $this->addArray($value);
-        }
-
-        else if (is_object($value)) {
-            return $this->addObject($value);
-        }
-
-        throw new InvalidArgumentException(
-            'Only arrays and objects are supported'
-        );
-    }
-
-    /**
-     * Checks if the given value exists within the context.
-     *
-     * @param  array|object             $value The value to check.
-     * @return int|string|false         The string or integer ID of the stored
-     *                                        value if it has already been seen, or
-     *                                        false if the value is not stored.
-     * @throws InvalidArgumentException Thrown if $value is not an array or
-     *                                        object
-     */
-    public function contains(&$value)
-    {
-        if (is_array($value)) {
-            return $this->containsArray($value);
-        }
-
-        else if (is_object($value)) {
-            return $this->containsObject($value);
-        }
-
-        throw new InvalidArgumentException(
-            'Only arrays and objects are supported'
-        );
-    }
-
-    /**
-     * @param  array    $array
-     * @return bool|int
-     */
-    private function addArray(array &$array)
-    {
-        $key = $this->containsArray($array);
-
-        if ($key !== false) {
-            return $key;
-        }
-
-        $this->arrays[] = &$array;
-
-        return count($this->arrays) - 1;
-    }
-
-    /**
-     * @param  object $object
-     * @return string
-     */
-    private function addObject($object)
-    {
-        if (!$this->objects->contains($object)) {
-            $this->objects->attach($object);
-        }
-
-        return spl_object_hash($object);
-    }
-
-    /**
-     * @param  array     $array
-     * @return int|false
-     */
-    private function containsArray(array &$array)
-    {
-        $keys = array_keys($this->arrays, $array, true);
-        $hash = '_Key_' . hash('sha512', microtime(true));
-
-        foreach ($keys as $key) {
-            $this->arrays[$key][$hash] = $hash;
-
-            if (isset($array[$hash]) && $array[$hash] === $hash) {
-                unset($this->arrays[$key][$hash]);
-
-                return $key;
-            }
-
-            unset($this->arrays[$key][$hash]);
-        }
-
-        return false;
-    }
-
-    /**
-     * @param  object       $value
-     * @return string|false
-     */
-    private function containsObject($value)
-    {
-        if ($this->objects->contains($value)) {
-            return spl_object_hash($value);
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/sebastian/recursion-context/src/Exception.php b/vendor/sebastian/recursion-context/src/Exception.php
deleted file mode 100644
index 4a1557b..0000000
--- a/vendor/sebastian/recursion-context/src/Exception.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/*
- * This file is part of the Recursion Context 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\RecursionContext;
-
-/**
- */
-interface Exception
-{
-}
diff --git a/vendor/sebastian/recursion-context/src/InvalidArgumentException.php b/vendor/sebastian/recursion-context/src/InvalidArgumentException.php
deleted file mode 100644
index 032c504..0000000
--- a/vendor/sebastian/recursion-context/src/InvalidArgumentException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/*
- * This file is part of the Recursion Context 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\RecursionContext;
-
-/**
- */
-final class InvalidArgumentException extends \InvalidArgumentException implements Exception
-{
-}
diff --git a/vendor/sebastian/version/.gitattributes b/vendor/sebastian/version/.gitattributes
deleted file mode 100644
index 461090b..0000000
--- a/vendor/sebastian/version/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.php diff=php
diff --git a/vendor/sebastian/version/.gitignore b/vendor/sebastian/version/.gitignore
deleted file mode 100644
index a09c56d..0000000
--- a/vendor/sebastian/version/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/.idea
diff --git a/vendor/sebastian/version/LICENSE b/vendor/sebastian/version/LICENSE
deleted file mode 100644
index 5b79c41..0000000
--- a/vendor/sebastian/version/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-Version
-
-Copyright (c) 2013-2015, 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 SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/version/README.md b/vendor/sebastian/version/README.md
deleted file mode 100644
index be6b687..0000000
--- a/vendor/sebastian/version/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Version
-
-**Version** is a library that helps with managing the version number of Git-hosted PHP projects.
-
-## Installation
-
-Simply add a dependency on `sebastian/version` to your project's `composer.json` file if you use [Composer](http://getcomposer.org/) to manage the dependencies of your project.
-
-## Usage
-
-The constructor of the `SebastianBergmann\Version` class expects two parameters:
-
-* `$release` is the version number of the latest release (`X.Y.Z`, for instance) or the name of the release series (`X.Y`) when no release has been made from that branch / for that release series yet.
-* `$path` is the path to the directory (or a subdirectory thereof) where the sourcecode of the project can be found. Simply passing `__DIR__` here usually suffices.
-
-Apart from the constructor, the `SebastianBergmann\Version` class has a single public method: `getVersion()`.
-
-Here is a contrived example that shows the basic usage:
-
-    <?php
-    $version = new SebastianBergmann\Version(
-      '3.7.10', '/usr/local/src/phpunit'
-    );
-
-    var_dump($version->getVersion());
-    ?>
-
-    string(18) "3.7.10-17-g00f3408"
-
-When a new release is prepared, the string that is passed to the constructor as the first argument needs to be updated.
-
-### How SebastianBergmann\Version::getVersion() works
-
-* If `$path` is not (part of) a Git repository and `$release` is in `X.Y.Z` format then `$release` is returned as-is.
-* If `$path` is not (part of) a Git repository and `$release` is in `X.Y` format then `$release` is returned suffixed with `-dev`.
-* If `$path` is (part of) a Git repository and `$release` is in `X.Y.Z` format then the output of `git describe --tags` is returned as-is.
-* If `$path` is (part of) a Git repository and `$release` is in `X.Y` format then a string is returned that begins with `X.Y` and ends with information from `git describe --tags`.
diff --git a/vendor/sebastian/version/composer.json b/vendor/sebastian/version/composer.json
deleted file mode 100644
index 39d6569..0000000
--- a/vendor/sebastian/version/composer.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "name": "sebastian/version",
-    "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-    "homepage": "https://github.com/sebastianbergmann/version",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Sebastian Bergmann",
-            "email": "sebastian@phpunit.de",
-            "role": "lead"
-        }
-    ],
-    "support": {
-        "issues": "https://github.com/sebastianbergmann/version/issues"
-    },
-    "autoload": {
-        "classmap": [
-            "src/"
-        ]
-    }
-}
diff --git a/vendor/sebastian/version/src/Version.php b/vendor/sebastian/version/src/Version.php
deleted file mode 100644
index 3cb3e09..0000000
--- a/vendor/sebastian/version/src/Version.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-/*
- * This file is part of the Version 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;
-
-/**
- * @since Class available since Release 1.0.0
- */
-class Version
-{
-    private $path;
-    private $release;
-    private $version;
-
-    /**
-     * @param string $release
-     * @param string $path
-     */
-    public function __construct($release, $path)
-    {
-        $this->release = $release;
-        $this->path    = $path;
-    }
-
-    /**
-     * @return string
-     */
-    public function getVersion()
-    {
-        if ($this->version === null) {
-            if (count(explode('.', $this->release)) == 3) {
-                $this->version = $this->release;
-            } else {
-                $this->version = $this->release . '-dev';
-            }
-
-            $git = $this->getGitInformation($this->path);
-
-            if ($git) {
-                if (count(explode('.', $this->release)) == 3) {
-                    $this->version = $git;
-                } else {
-                    $git = explode('-', $git);
-
-                    $this->version = $this->release . '-' . end($git);
-                }
-            }
-        }
-
-        return $this->version;
-    }
-
-    /**
-     * @param  string      $path
-     * @return bool|string
-     */
-    private function getGitInformation($path)
-    {
-        if (!is_dir($path . DIRECTORY_SEPARATOR . '.git')) {
-            return false;
-        }
-
-        $dir = getcwd();
-        chdir($path);
-        $returnCode = 1;
-        $result     = @exec('git describe --tags 2>&1', $output, $returnCode);
-        chdir($dir);
-
-        if ($returnCode !== 0) {
-            return false;
-        }
-
-        return $result;
-    }
-}
diff --git a/vendor/stack/builder/.gitignore b/vendor/stack/builder/.gitignore
deleted file mode 100644
index 22d0d82..0000000
--- a/vendor/stack/builder/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-vendor
diff --git a/vendor/stack/builder/.travis.yml b/vendor/stack/builder/.travis.yml
deleted file mode 100644
index 525cf96..0000000
--- a/vendor/stack/builder/.travis.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-language: php
-
-php:
-  - 5.3.3
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-before_script:
-  - composer self-update
-  - composer install --no-interaction --prefer-source
-
-script: phpunit --coverage-text
-
-matrix:
-  allow_failures:
-    - php: hhvm
-  fast_finish: true
diff --git a/vendor/stack/builder/CHANGELOG.md b/vendor/stack/builder/CHANGELOG.md
deleted file mode 100644
index d44fa88..0000000
--- a/vendor/stack/builder/CHANGELOG.md
+++ /dev/null
@@ -1,18 +0,0 @@
-CHANGELOG
-=========
-
-* 1.0.3 (2014-11-23)
-
-  * Only call Terminable middlewares once.
-
-* 1.0.2 (2014-05-18)
-
-  * Validate missing arguments (@bajbnet).
-
-* 1.0.1 (2013-10-25)
-
-  * Lower PHP requirement to 5.3.
-
-* 1.0.0 (2013-08-02)
-
-  * Initial release.
diff --git a/vendor/stack/builder/LICENSE b/vendor/stack/builder/LICENSE
deleted file mode 100644
index ceac72c..0000000
--- a/vendor/stack/builder/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2013 Igor Wiedler
-
-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/stack/builder/README.md b/vendor/stack/builder/README.md
deleted file mode 100644
index 812406c..0000000
--- a/vendor/stack/builder/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# Stack/Builder
-
-Builder for stack middlewares based on HttpKernelInterface.
-
-Stack/Builder is a small library that helps you construct a nested
-HttpKernelInterface decorator tree. It models it as a stack of middlewares.
-
-## Example
-
-If you want to decorate a [silex](https://github.com/fabpot/Silex) app with
-session and cache middlewares, you'll have to do something like this:
-
-    use Symfony\Component\HttpKernel\HttpCache\Store;
-
-    $app = new Silex\Application();
-
-    $app->get('/', function () {
-        return 'Hello World!';
-    });
-
-    $app = new Stack\Session(
-        new Symfony\Component\HttpKernel\HttpCache\HttpCache(
-            $app,
-            new Store(__DIR__.'/cache')
-        )
-    );
-
-This can get quite annoying indeed. Stack/Builder simplifies that:
-
-    $stack = (new Stack\Builder())
-        ->push('Stack\Session')
-        ->push('Symfony\Component\HttpKernel\HttpCache\HttpCache', new Store(__DIR__.'/cache'));
-
-    $app = $stack->resolve($app);
-
-As you can see, by arranging the layers as a stack, they become a lot easier
-to work with.
-
-In the front controller, you need to serve the request:
-
-    use Symfony\Component\HttpFoundation\Request;
-
-    $request = Request::createFromGlobals();
-    $response = $app->handle($request)->send();
-    $app->terminate($request, $response);
-
-Stack/Builder also supports pushing a `callable` on to the stack, for situations
-where instantiating middlewares might be more complicated. The `callable` should
-accept a `HttpKernelInterface` as the first argument and should also return a
-`HttpKernelInterface`. The example above could be rewritten as:
-
-    $stack = (new Stack\Builder())
-        ->push('Stack\Session')
-        ->push(function ($app) {
-            $cache = new HttpCache($app, new Store(__DIR__.'/cache'));
-            return $cache;
-        });
-
-## Inspiration
-
-* [Rack::Builder](http://rack.rubyforge.org/doc/Rack/Builder.html)
-* [HttpKernel middlewares](https://igor.io/2013/02/02/http-kernel-middlewares.html)
diff --git a/vendor/stack/builder/composer.json b/vendor/stack/builder/composer.json
deleted file mode 100644
index e9f164c..0000000
--- a/vendor/stack/builder/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "name": "stack/builder",
-    "description": "Builder for stack middlewares based on HttpKernelInterface.",
-    "keywords": ["stack"],
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Igor Wiedler",
-            "email": "igor@wiedler.ch"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.0",
-        "symfony/http-foundation": "~2.1",
-        "symfony/http-kernel": "~2.1"
-    },
-    "require-dev": {
-        "silex/silex": "~1.0"
-    },
-    "autoload": {
-        "psr-0": { "Stack": "src" }
-    },
-    "extra": {
-        "branch-alias": { "dev-master": "1.0-dev" }
-    }
-}
diff --git a/vendor/stack/builder/composer.lock b/vendor/stack/builder/composer.lock
deleted file mode 100644
index 26c6a99..0000000
--- a/vendor/stack/builder/composer.lock
+++ /dev/null
@@ -1,488 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
-    ],
-    "hash": "78698481679eca710495d5aca028baaa",
-    "packages": [
-        {
-            "name": "psr/log",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
-                "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
-                "shasum": ""
-            },
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "Psr\\Log\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for logging libraries",
-            "keywords": [
-                "log",
-                "psr",
-                "psr-3"
-            ],
-            "time": "2012-12-21 11:40:51"
-        },
-        {
-            "name": "symfony/debug",
-            "version": "v2.4.1",
-            "target-dir": "Symfony/Component/Debug",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Debug.git",
-                "reference": "74110be5ec681a83fc5bd66dd5fd29fe85fe9c1f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Debug/zipball/74110be5ec681a83fc5bd66dd5fd29fe85fe9c1f",
-                "reference": "74110be5ec681a83fc5bd66dd5fd29fe85fe9c1f",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "symfony/http-foundation": "~2.1",
-                "symfony/http-kernel": "~2.1"
-            },
-            "suggest": {
-                "symfony/http-foundation": "",
-                "symfony/http-kernel": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Symfony\\Component\\Debug\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "http://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Debug Component",
-            "homepage": "http://symfony.com",
-            "time": "2014-01-01 09:02:49"
-        },
-        {
-            "name": "symfony/event-dispatcher",
-            "version": "v2.4.1",
-            "target-dir": "Symfony/Component/EventDispatcher",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/EventDispatcher.git",
-                "reference": "e3ba42f6a70554ed05749e61b829550f6ac33601"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/e3ba42f6a70554ed05749e61b829550f6ac33601",
-                "reference": "e3ba42f6a70554ed05749e61b829550f6ac33601",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "symfony/dependency-injection": "~2.0"
-            },
-            "suggest": {
-                "symfony/dependency-injection": "",
-                "symfony/http-kernel": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Symfony\\Component\\EventDispatcher\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "http://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony EventDispatcher Component",
-            "homepage": "http://symfony.com",
-            "time": "2013-12-28 08:12:03"
-        },
-        {
-            "name": "symfony/http-foundation",
-            "version": "v2.4.1",
-            "target-dir": "Symfony/Component/HttpFoundation",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/HttpFoundation.git",
-                "reference": "6c6b8a7bcd7e2cc920cd6acace563fdbf121d844"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/6c6b8a7bcd7e2cc920cd6acace563fdbf121d844",
-                "reference": "6c6b8a7bcd7e2cc920cd6acace563fdbf121d844",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Symfony\\Component\\HttpFoundation\\": ""
-                },
-                "classmap": [
-                    "Symfony/Component/HttpFoundation/Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "http://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony HttpFoundation Component",
-            "homepage": "http://symfony.com",
-            "time": "2014-01-05 02:10:50"
-        },
-        {
-            "name": "symfony/http-kernel",
-            "version": "v2.4.1",
-            "target-dir": "Symfony/Component/HttpKernel",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/HttpKernel.git",
-                "reference": "0605eedeb52c4d3a3144128d8336395a57be60d4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/0605eedeb52c4d3a3144128d8336395a57be60d4",
-                "reference": "0605eedeb52c4d3a3144128d8336395a57be60d4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "psr/log": "~1.0",
-                "symfony/debug": "~2.3",
-                "symfony/event-dispatcher": "~2.1",
-                "symfony/http-foundation": "~2.4"
-            },
-            "require-dev": {
-                "symfony/browser-kit": "~2.2",
-                "symfony/class-loader": "~2.1",
-                "symfony/config": "~2.0",
-                "symfony/console": "~2.2",
-                "symfony/dependency-injection": "~2.0",
-                "symfony/finder": "~2.0",
-                "symfony/process": "~2.0",
-                "symfony/routing": "~2.2",
-                "symfony/stopwatch": "~2.2",
-                "symfony/templating": "~2.2"
-            },
-            "suggest": {
-                "symfony/browser-kit": "",
-                "symfony/class-loader": "",
-                "symfony/config": "",
-                "symfony/console": "",
-                "symfony/dependency-injection": "",
-                "symfony/finder": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Symfony\\Component\\HttpKernel\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "http://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony HttpKernel Component",
-            "homepage": "http://symfony.com",
-            "time": "2014-01-05 02:12:11"
-        }
-    ],
-    "packages-dev": [
-        {
-            "name": "pimple/pimple",
-            "version": "v1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/fabpot/Pimple.git",
-                "reference": "471c7d7c52ad6594e17b8ec33efdd1be592b5d83"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/fabpot/Pimple/zipball/471c7d7c52ad6594e17b8ec33efdd1be592b5d83",
-                "reference": "471c7d7c52ad6594e17b8ec33efdd1be592b5d83",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Pimple": "lib/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                }
-            ],
-            "description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
-            "homepage": "http://pimple.sensiolabs.org",
-            "keywords": [
-                "container",
-                "dependency injection"
-            ],
-            "time": "2013-09-19 04:53:08"
-        },
-        {
-            "name": "silex/silex",
-            "version": "v1.1.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/silexphp/Silex.git",
-                "reference": "47cc7d6545450ef8a91f50c04e8c7b3b04fceae9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/silexphp/Silex/zipball/47cc7d6545450ef8a91f50c04e8c7b3b04fceae9",
-                "reference": "47cc7d6545450ef8a91f50c04e8c7b3b04fceae9",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "pimple/pimple": "~1.0",
-                "symfony/event-dispatcher": ">=2.3,<2.5-dev",
-                "symfony/http-foundation": ">=2.3,<2.5-dev",
-                "symfony/http-kernel": ">=2.3,<2.5-dev",
-                "symfony/routing": ">=2.3,<2.5-dev"
-            },
-            "require-dev": {
-                "doctrine/dbal": ">=2.2.0,<2.4.0-dev",
-                "monolog/monolog": "~1.4,>=1.4.1",
-                "phpunit/phpunit": "~3.7",
-                "swiftmailer/swiftmailer": "5.*",
-                "symfony/browser-kit": ">=2.3,<2.5-dev",
-                "symfony/config": ">=2.3,<2.5-dev",
-                "symfony/css-selector": ">=2.3,<2.5-dev",
-                "symfony/debug": ">=2.3,<2.5-dev",
-                "symfony/dom-crawler": ">=2.3,<2.5-dev",
-                "symfony/finder": ">=2.3,<2.5-dev",
-                "symfony/form": ">=2.3,<2.5-dev",
-                "symfony/locale": ">=2.3,<2.5-dev",
-                "symfony/monolog-bridge": ">=2.3,<2.5-dev",
-                "symfony/options-resolver": ">=2.3,<2.5-dev",
-                "symfony/process": ">=2.3,<2.5-dev",
-                "symfony/security": ">=2.3,<2.5-dev",
-                "symfony/serializer": ">=2.3,<2.5-dev",
-                "symfony/translation": ">=2.3,<2.5-dev",
-                "symfony/twig-bridge": ">=2.3,<2.5-dev",
-                "symfony/validator": ">=2.3,<2.5-dev",
-                "twig/twig": ">=1.8.0,<2.0-dev"
-            },
-            "suggest": {
-                "symfony/browser-kit": ">=2.3,<2.5-dev",
-                "symfony/css-selector": ">=2.3,<2.5-dev",
-                "symfony/dom-crawler": ">=2.3,<2.5-dev",
-                "symfony/form": ">=2.3,<2.5-dev"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Silex": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Igor Wiedler",
-                    "email": "igor@wiedler.ch",
-                    "homepage": "http://wiedler.ch/igor/"
-                }
-            ],
-            "description": "The PHP micro-framework based on the Symfony2 Components",
-            "homepage": "http://silex.sensiolabs.org",
-            "keywords": [
-                "microframework"
-            ],
-            "time": "2013-10-30 08:53:26"
-        },
-        {
-            "name": "symfony/routing",
-            "version": "v2.4.1",
-            "target-dir": "Symfony/Component/Routing",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Routing.git",
-                "reference": "4abfb500aab8be458c9e3a227ea56b190584f78a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Routing/zipball/4abfb500aab8be458c9e3a227ea56b190584f78a",
-                "reference": "4abfb500aab8be458c9e3a227ea56b190584f78a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "doctrine/annotations": "~1.0",
-                "psr/log": "~1.0",
-                "symfony/config": "~2.2",
-                "symfony/expression-language": "~2.4",
-                "symfony/yaml": "~2.0"
-            },
-            "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"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Symfony\\Component\\Routing\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "http://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony Routing Component",
-            "homepage": "http://symfony.com",
-            "keywords": [
-                "router",
-                "routing",
-                "uri",
-                "url"
-            ],
-            "time": "2014-01-05 02:10:50"
-        }
-    ],
-    "aliases": [
-
-    ],
-    "minimum-stability": "stable",
-    "stability-flags": [
-
-    ],
-    "platform": {
-        "php": ">=5.3.0"
-    },
-    "platform-dev": [
-
-    ]
-}
diff --git a/vendor/stack/builder/phpunit.xml.dist b/vendor/stack/builder/phpunit.xml.dist
deleted file mode 100644
index a2437ec..0000000
--- a/vendor/stack/builder/phpunit.xml.dist
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <testsuites>
-        <testsuite name="unit">
-            <directory>./tests/unit/</directory>
-        </testsuite>
-    </testsuites>
-
-    <testsuites>
-        <testsuite name="integration">
-            <directory>./tests/integration/</directory>
-        </testsuite>
-    </testsuites>
-
-    <testsuites>
-        <testsuite name="functional">
-            <directory>./tests/functional/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./src/</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/stack/builder/src/Stack/Builder.php b/vendor/stack/builder/src/Stack/Builder.php
deleted file mode 100644
index c7ee05a..0000000
--- a/vendor/stack/builder/src/Stack/Builder.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-namespace Stack;
-
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class Builder
-{
-    private $specs;
-
-    public function __construct()
-    {
-        $this->specs = new \SplStack();
-    }
-
-    public function unshift(/*$kernelClass, $args...*/)
-    {
-        if (func_num_args() === 0) {
-            throw new \InvalidArgumentException("Missing argument(s) when calling unshift");
-        }
-
-        $spec = func_get_args();
-        $this->specs->unshift($spec);
-
-        return $this;
-    }
-
-    public function push(/*$kernelClass, $args...*/)
-    {
-        if (func_num_args() === 0) {
-            throw new \InvalidArgumentException("Missing argument(s) when calling push");
-        }
-
-        $spec = func_get_args();
-        $this->specs->push($spec);
-
-        return $this;
-    }
-
-    public function resolve(HttpKernelInterface $app)
-    {
-        $middlewares = array($app);
-
-        foreach ($this->specs as $spec) {
-            $args = $spec;
-            $firstArg = array_shift($args);
-
-            if (is_callable($firstArg)) {
-                $app = $firstArg($app);
-            } else {
-                $kernelClass = $firstArg;
-                array_unshift($args, $app);
-
-                $reflection = new \ReflectionClass($kernelClass);
-                $app = $reflection->newInstanceArgs($args);
-            }
-
-            array_unshift($middlewares, $app);
-        }
-
-        return new StackedHttpKernel($app, $middlewares);
-    }
-}
diff --git a/vendor/stack/builder/src/Stack/StackedHttpKernel.php b/vendor/stack/builder/src/Stack/StackedHttpKernel.php
deleted file mode 100644
index f89a4db..0000000
--- a/vendor/stack/builder/src/Stack/StackedHttpKernel.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace Stack;
-
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\TerminableInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-class StackedHttpKernel implements HttpKernelInterface, TerminableInterface
-{
-    private $app;
-    private $middlewares = array();
-
-    public function __construct(HttpKernelInterface $app, array $middlewares)
-    {
-        $this->app = $app;
-        $this->middlewares = $middlewares;
-    }
-
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
-    {
-        return $this->app->handle($request, $type, $catch);
-    }
-
-    public function terminate(Request $request, Response $response)
-    {
-        $prevKernel = null;
-        foreach ($this->middlewares as $kernel) {
-            // if prev kernel was terminable we can assume this middleware has already been called
-            if (!$prevKernel instanceof TerminableInterface && $kernel instanceof TerminableInterface) {
-                $kernel->terminate($request, $response);
-            }
-            $prevKernel = $kernel;
-        }
-    }
-}
diff --git a/vendor/symfony-cmf/routing/.travis.yml b/vendor/symfony-cmf/routing/.travis.yml
deleted file mode 100644
index c0eae5c..0000000
--- a/vendor/symfony-cmf/routing/.travis.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-language: php
-
-php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-env: 
-  - SYMFONY_VERSION=2.5.*
-
-matrix:
-  allow_failures:
-    - php: hhvm
-  include:
-    - php: 5.5
-      env: SYMFONY_VERSION=2.3.*
-    - php: 5.5
-      env: SYMFONY_VERSION=2.4.*
-    - php: 5.5
-      env: SYMFONY_VERSION=2.*
-
-before_install:
-  - composer require symfony/routing:${SYMFONY_VERSION} --prefer-source
-
-script: phpunit --coverage-text
-
-notifications:
-  irc: "irc.freenode.org#symfony-cmf"
-  email: "symfony-cmf-devs@googlegroups.com"
diff --git a/vendor/symfony-cmf/routing/CHANGELOG.md b/vendor/symfony-cmf/routing/CHANGELOG.md
deleted file mode 100644
index e8e8542..0000000
--- a/vendor/symfony-cmf/routing/CHANGELOG.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Changelog
-=========
-
-* **2014-09-29**: ChainRouter does not require a RouterInterface, as a
-  RequestMatcher and UrlGenerator is fine too. Fixed chain router interface to
-  not force a RouterInterface.
-* **2014-09-29**: Deprecated DynamicRouter::match in favor of matchRequest.
-
-1.3.0-RC1
----------
-
-* **2014-08-20**: Added an interface for the ChainRouter
-* **2014-06-06**: Updated to PSR-4 autoloading
-
-1.2.0
------
-
-Release 1.2.0
-
-1.2.0-RC1
----------
-
-* **2013-12-23**: add support for ChainRouter::getRouteCollection()
-* **2013-01-07**: Removed the deprecated $parameters argument in
-  RouteProviderInterface::getRouteByName and getRoutesByNames.
-
-1.1.0
------
-
-Release 1.1.0
-
-1.1.0-RC1
----------
-
-* **2013-07-31**: DynamicRouter now accepts an EventDispatcher to trigger a
-  RouteMatchEvent right before the matching starts
-* **2013-07-29**: Renamed RouteAwareInterface to RouteReferrersReadInterface
-  for naming consistency and added RouteReferrersInterface for write access.
-* **2013-07-13**: NestedMatcher now expects a FinalMatcherInterface as second
-  argument of the constructor
-
-1.1.0-alpha1
-------------
-
-* **2013-04-30**: Dropped Symfony 2.1 support and got rid of
-  ConfigurableUrlMatcher class
-* **2013-04-05**: [ContentAwareGenerator] Fix locale handling to always respect
-  locale but never have unnecessary ?locale=
diff --git a/vendor/symfony-cmf/routing/CONTRIBUTING.md b/vendor/symfony-cmf/routing/CONTRIBUTING.md
deleted file mode 100644
index 0e4efab..0000000
--- a/vendor/symfony-cmf/routing/CONTRIBUTING.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Contributing
-------------
-
-Symfony2 CMF is an open source, community-driven project. We follow the same
-guidelines as core Symfony2. If you'd like to contribute, please read the
-[Contributing Code][1] part of the documentation. If you're submitting a pull
-request, please follow the guidelines in the [Submitting a Patch][2] section
-and use the [Pull Request Template][3].
-
-[1]: http://symfony.com/doc/current/contributing/code/index.html
-[2]: http://symfony.com/doc/current/contributing/code/patches.html#check-list
-[3]: http://symfony.com/doc/current/contributing/code/patches.html#make-a-pull-request
diff --git a/vendor/symfony-cmf/routing/Candidates/Candidates.php b/vendor/symfony-cmf/routing/Candidates/Candidates.php
deleted file mode 100644
index 84584f9..0000000
--- a/vendor/symfony-cmf/routing/Candidates/Candidates.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\Candidates;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * A straightforward strategy that splits the URL on "/".
- *
- * If locales is set, additionally generates candidates removing the locale if
- * it is one of the configured locales, for non-locale specific URLs.
- *
- * @author David Buchmann <mail@davidbu.ch>
- */
-class Candidates implements CandidatesInterface
-{
-    /**
-     * @var array
-     */
-    protected $locales;
-
-    /**
-     * A limit to apply to the number of candidates generated.
-     *
-     * This is to prevent abusive requests with a lot of "/". The limit is per
-     * batch, that is if a locale matches you could get as many as 2 * $limit
-     * candidates if the URL has that many slashes.
-     *
-     * @var int
-     */
-    protected $limit;
-
-    /**
-     * @param array $locales The locales to support.
-     * @param int   $limit   A limit to apply to the candidates generated.
-     */
-    public function __construct(array $locales = array(), $limit = 20)
-    {
-        $this->setLocales($locales);
-        $this->limit = $limit;
-    }
-
-    /**
-     * Set the locales to support by this strategy.
-     *
-     * @param array $locales The locales to support.
-     */
-    public function setLocales(array $locales)
-    {
-        $this->locales = $locales;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Always returns true.
-     */
-    public function isCandidate($name)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Does nothing.
-     */
-    public function restrictQuery($queryBuilder)
-    {
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getCandidates(Request $request)
-    {
-        $url = $request->getPathInfo();
-        $candidates = $this->getCandidatesFor($url);
-
-        $locale = $this->determineLocale($url);
-        if ($locale) {
-            $candidates = array_unique(array_merge($candidates, $this->getCandidatesFor(substr($url, strlen($locale) + 1))));
-        }
-
-        return $candidates;
-    }
-
-    /**
-     * Determine the locale of this URL.
-     *
-     * @param string $url The url to determine the locale from.
-     *
-     * @return string|boolean The locale if $url starts with one of the allowed locales.
-     */
-    protected function determineLocale($url)
-    {
-        if (!count($this->locales)) {
-            return false;
-        }
-
-        $matches = array();
-        if (preg_match('#(' . implode('|', $this->locales) . ')(/|$)#', $url, $matches)) {
-            return $matches[1];
-        }
-
-        return false;
-    }
-
-    /**
-     * Handle a possible format extension and split the $url on "/".
-     *
-     * $prefix is prepended to every candidate generated.
-     *
-     * @param string $url    The URL to split.
-     * @param string $prefix A prefix to prepend to every pattern.
-     *
-     * @return array Paths that could represent routes that match $url and are
-     *               child of $prefix.
-     */
-    protected function getCandidatesFor($url, $prefix = '')
-    {
-        $candidates = array();
-        if ('/' !== $url) {
-            // handle format extension, like .html or .json
-            if (preg_match('/(.+)\.[a-z]+$/i', $url, $matches)) {
-                $candidates[] = $prefix . $url;
-                $url = $matches[1];
-            }
-
-            $part = $url;
-            $count = 0;
-            while (false !== ($pos = strrpos($part, '/'))) {
-                if (++$count > $this->limit) {
-                    return $candidates;
-                }
-                $candidates[] = $prefix . $part;
-                $part = substr($url, 0, $pos);
-            }
-        }
-
-        $candidates[] = $prefix ?: '/';
-
-        return $candidates;
-    }
-}
diff --git a/vendor/symfony-cmf/routing/Candidates/CandidatesInterface.php b/vendor/symfony-cmf/routing/Candidates/CandidatesInterface.php
deleted file mode 100644
index 9ce22a9..0000000
--- a/vendor/symfony-cmf/routing/Candidates/CandidatesInterface.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\Candidates;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Candidates is a subsystem useful for the route provider. It separates the
- * logic for determining possible static prefixes from the route provider.
- *
- * @author David Buchmann <mail@davidbu.ch>
- */
-interface CandidatesInterface
-{
-    /**
-     * @param Request $request
-     *
-     * @return array a list of paths
-     */
-    public function getCandidates(Request $request);
-
-    /**
-     * Determine if $name is a valid candidate, e.g. in getRouteByName.
-     *
-     * @param string $name
-     *
-     * @return boolean
-     */
-    public function isCandidate($name);
-
-    /**
-     * Provide a best effort query restriction to limit a query to only find
-     * routes that are supported.
-     *
-     * @param object $queryBuilder A query builder suited for the storage backend.
-     */
-    public function restrictQuery($queryBuilder);
-}
diff --git a/vendor/symfony-cmf/routing/ChainRouteCollection.php b/vendor/symfony-cmf/routing/ChainRouteCollection.php
deleted file mode 100644
index 16c4859..0000000
--- a/vendor/symfony-cmf/routing/ChainRouteCollection.php
+++ /dev/null
@@ -1,272 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\Config\Resource\ResourceInterface;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class ChainRouteCollection extends RouteCollection
-{
-    /**
-     * @var RouteCollection[]
-     */
-    private $routeCollections = array();
-
-    /**
-     * @var RouteCollection
-     */
-    private $routeCollection;
-
-    public function __clone()
-    {
-        foreach ($this->routeCollections as $routeCollection) {
-            $this->routeCollections[] = clone $routeCollection;
-        }
-    }
-
-    /**
-     * Gets the current RouteCollection as an Iterator that includes all routes.
-     *
-     * It implements \IteratorAggregate.
-     *
-     * @see all()
-     *
-     * @return \ArrayIterator An \ArrayIterator object for iterating over routes
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->all());
-    }
-
-    /**
-     * Gets the number of Routes in this collection.
-     *
-     * @return int The number of routes
-     */
-    public function count()
-    {
-        $count = 0;
-        foreach ($this->routeCollections as $routeCollection) {
-            $count+= $routeCollection->count();
-        }
-
-        return $count;
-    }
-
-    /**
-     * Adds a route.
-     *
-     * @param string $name  The route name
-     * @param Route  $route A Route instance
-     */
-    public function add($name, Route $route)
-    {
-        $this->createInternalCollection();
-        $this->routeCollection->add($name, $route);
-    }
-
-    /**
-     * Returns all routes in this collection.
-     *
-     * @return Route[] An array of routes
-     */
-    public function all()
-    {
-        $routeCollectionAll = new RouteCollection();
-        foreach ($this->routeCollections as $routeCollection) {
-            $routeCollectionAll->addCollection($routeCollection);
-        }
-
-        return $routeCollectionAll->all();
-    }
-
-    /**
-     * Gets a route by name.
-     *
-     * @param string $name The route name
-     *
-     * @return Route|null A Route instance or null when not found
-     */
-    public function get($name)
-    {
-        foreach ($this->routeCollections as $routeCollection) {
-            $route = $routeCollection->get($name);
-            if (null !== $route) {
-                return $route;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Removes a route or an array of routes by name from the collection
-     *
-     * @param string|array $name The route name or an array of route names
-     */
-    public function remove($name)
-    {
-        foreach ($this->routeCollections as $routeCollection) {
-            $route = $routeCollection->get($name);
-            if (null !== $route) {
-                $routeCollection->remove($name);
-            }
-        }
-    }
-
-    /**
-     * Adds a route collection at the end of the current set by appending all
-     * routes of the added collection.
-     *
-     * @param RouteCollection $collection A RouteCollection instance
-     */
-    public function addCollection(RouteCollection $collection)
-    {
-        $this->routeCollections[] = $collection;
-    }
-
-    /**
-     * Adds a prefix to the path of all child routes.
-     *
-     * @param string $prefix       An optional prefix to add before each pattern of the route collection
-     * @param array  $defaults     An array of default values
-     * @param array  $requirements An array of requirements
-     */
-    public function addPrefix($prefix, array $defaults = array(), array $requirements = array())
-    {
-        $this->createInternalCollection();
-        foreach ($this->routeCollections as $routeCollection) {
-            $routeCollection->addPrefix($prefix, $defaults, $requirements);
-        }
-    }
-
-    /**
-     * Sets the host pattern on all routes.
-     *
-     * @param string $pattern      The pattern
-     * @param array  $defaults     An array of default values
-     * @param array  $requirements An array of requirements
-     */
-    public function setHost($pattern, array $defaults = array(), array $requirements = array())
-    {
-        $this->createInternalCollection();
-        foreach ($this->routeCollections as $routeCollection) {
-            $routeCollection->setHost($pattern, $defaults, $requirements);
-        }
-    }
-
-    /**
-     * Adds defaults to all routes.
-     *
-     * An existing default value under the same name in a route will be overridden.
-     *
-     * @param array $defaults An array of default values
-     */
-    public function addDefaults(array $defaults)
-    {
-        $this->createInternalCollection();
-        foreach ($this->routeCollections as $routeCollection) {
-            $routeCollection->addDefaults($defaults);
-        }
-    }
-
-    /**
-     * Adds requirements to all routes.
-     *
-     * An existing requirement under the same name in a route will be overridden.
-     *
-     * @param array $requirements An array of requirements
-     */
-    public function addRequirements(array $requirements)
-    {
-        $this->createInternalCollection();
-        foreach ($this->routeCollections as $routeCollection) {
-            $routeCollection->addRequirements($requirements);
-        }
-    }
-
-    /**
-     * Adds options to all routes.
-     *
-     * An existing option value under the same name in a route will be overridden.
-     *
-     * @param array $options An array of options
-     */
-    public function addOptions(array $options)
-    {
-        $this->createInternalCollection();
-        foreach ($this->routeCollections as $routeCollection) {
-            $routeCollection->addOptions($options);
-        }
-    }
-
-    /**
-     * Sets the schemes (e.g. 'https') all child routes are restricted to.
-     *
-     * @param string|array $schemes The scheme or an array of schemes
-     */
-    public function setSchemes($schemes)
-    {
-        $this->createInternalCollection();
-        foreach ($this->routeCollections as $routeCollection) {
-            $routeCollection->setSchemes($schemes);
-        }
-    }
-
-    /**
-     * Sets the HTTP methods (e.g. 'POST') all child routes are restricted to.
-     *
-     * @param string|array $methods The method or an array of methods
-     */
-    public function setMethods($methods)
-    {
-        $this->createInternalCollection();
-        foreach ($this->routeCollections as $routeCollection) {
-            $routeCollection->setMethods($methods);
-        }
-    }
-
-    /**
-     * Returns an array of resources loaded to build this collection.
-     *
-     * @return ResourceInterface[] An array of resources
-     */
-    public function getResources()
-    {
-        $resources = array();
-        foreach ($this->routeCollections as $routeCollection) {
-            $resources = array_merge($resources, $routeCollection->getResources());
-        }
-
-        return array_unique($resources);
-    }
-
-    /**
-     * Adds a resource for this collection.
-     *
-     * @param ResourceInterface $resource A resource instance
-     */
-    public function addResource(ResourceInterface $resource)
-    {
-        $this->createInternalCollection();
-        $this->routeCollection->addResource($resource);
-    }
-
-    private function createInternalCollection()
-    {
-        if (!$this->routeCollection instanceof RouteCollection) {
-            $this->routeCollection = new RouteCollection();
-            $this->routeCollections[] = $this->routeCollection;
-        }
-    }
-}
diff --git a/vendor/symfony-cmf/routing/ChainRouter.php b/vendor/symfony-cmf/routing/ChainRouter.php
deleted file mode 100644
index 89c2c15..0000000
--- a/vendor/symfony-cmf/routing/ChainRouter.php
+++ /dev/null
@@ -1,309 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\Routing\RouterInterface;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RequestContextAwareInterface;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\CacheWarmer\WarmableInterface;
-use Psr\Log\LoggerInterface;
-
-/**
- * The ChainRouter allows to combine several routers to try in a defined order.
- *
- * @author Henrik Bjornskov <henrik@bjrnskov.dk>
- * @author Magnus Nordlander <magnus@e-butik.se>
- */
-class ChainRouter implements ChainRouterInterface, WarmableInterface
-{
-    /**
-     * @var RequestContext
-     */
-    private $context;
-
-    /**
-     * Array of arrays of routers grouped by priority
-     * @var array
-     */
-    private $routers = array();
-
-    /**
-     * @var RouterInterface[] Array of routers, sorted by priority
-     */
-    private $sortedRouters;
-
-    /**
-     * @var RouteCollection
-     */
-    private $routeCollection;
-
-    /**
-     * @var null|LoggerInterface
-     */
-    protected $logger;
-
-    /**
-     * @param LoggerInterface $logger
-     */
-    public function __construct(LoggerInterface $logger = null)
-    {
-        $this->logger = $logger;
-    }
-
-    /**
-     * @return RequestContext
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add($router, $priority = 0)
-    {
-        if (!$router instanceof RouterInterface
-            && !($router instanceof RequestMatcherInterface && $router instanceof UrlGeneratorInterface)
-        ) {
-            throw new \InvalidArgumentException(sprintf('%s is not a valid router.', get_class($router)));
-        }
-        if (empty($this->routers[$priority])) {
-            $this->routers[$priority] = array();
-        }
-
-        $this->routers[$priority][] = $router;
-        $this->sortedRouters = array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function all()
-    {
-        if (empty($this->sortedRouters)) {
-            $this->sortedRouters = $this->sortRouters();
-
-            // setContext() is done here instead of in add() to avoid fatal errors when clearing and warming up caches
-            // See https://github.com/symfony-cmf/Routing/pull/18
-            $context = $this->getContext();
-            if (null !== $context) {
-                foreach ($this->sortedRouters as $router) {
-                    if ($router instanceof RequestContextAwareInterface) {
-                        $router->setContext($context);
-                    }
-                }
-            }
-        }
-
-        return $this->sortedRouters;
-    }
-
-    /**
-     * Sort routers by priority.
-     * The highest priority number is the highest priority (reverse sorting)
-     *
-     * @return RouterInterface[]
-     */
-    protected function sortRouters()
-    {
-        $sortedRouters = array();
-        krsort($this->routers);
-
-        foreach ($this->routers as $routers) {
-            $sortedRouters = array_merge($sortedRouters, $routers);
-        }
-
-        return $sortedRouters;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Loops through all routes and tries to match the passed url.
-     *
-     * Note: You should use matchRequest if you can.
-     */
-    public function match($url)
-    {
-        return $this->doMatch($url);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Loops through all routes and tries to match the passed request.
-     */
-    public function matchRequest(Request $request)
-    {
-        return $this->doMatch($request->getPathInfo(), $request);
-    }
-
-    /**
-     * Loops through all routers and tries to match the passed request or url.
-     *
-     * At least the  url must be provided, if a request is additionally provided
-     * the request takes precedence.
-     *
-     * @param string  $url
-     * @param Request $request
-     *
-     * @return array An array of parameters
-     *
-     * @throws ResourceNotFoundException If no router matched.
-     */
-    private function doMatch($url, Request $request = null)
-    {
-        $methodNotAllowed = null;
-
-        $requestForMatching = $request;
-        foreach ($this->all() as $router) {
-            try {
-                // the request/url match logic is the same as in Symfony/Component/HttpKernel/EventListener/RouterListener.php
-                // matching requests is more powerful than matching URLs only, so try that first
-                if ($router instanceof RequestMatcherInterface) {
-                    if (empty($requestForMatching)) {
-                        $requestForMatching = Request::create($url);
-                    }
-
-                    return $router->matchRequest($requestForMatching);
-                }
-                // every router implements the match method
-                return $router->match($url);
-            } catch (ResourceNotFoundException $e) {
-                if ($this->logger) {
-                    $this->logger->debug('Router '.get_class($router).' was not able to match, message "'.$e->getMessage().'"');
-                }
-                // Needs special care
-            } catch (MethodNotAllowedException $e) {
-                if ($this->logger) {
-                    $this->logger->debug('Router '.get_class($router).' throws MethodNotAllowedException with message "'.$e->getMessage().'"');
-                }
-                $methodNotAllowed = $e;
-            }
-        }
-
-        $info = $request
-            ? "this request\n$request"
-            : "url '$url'";
-        throw $methodNotAllowed ?: new ResourceNotFoundException("None of the routers in the chain matched $info");
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Loops through all registered routers and returns a router if one is found.
-     * It will always return the first route generated.
-     */
-    public function generate($name, $parameters = array(), $absolute = false)
-    {
-        $debug = array();
-
-        foreach ($this->all() as $router) {
-            // if $router does not announce it is capable of handling
-            // non-string routes and $name is not a string, continue
-            if ($name && !is_string($name) && !$router instanceof VersatileGeneratorInterface) {
-                continue;
-            }
-
-            // If $router is versatile and doesn't support this route name, continue
-            if ($router instanceof VersatileGeneratorInterface && !$router->supports($name)) {
-                continue;
-            }
-
-            try {
-                return $router->generate($name, $parameters, $absolute);
-            } catch (RouteNotFoundException $e) {
-                $hint = $this->getErrorMessage($name, $router, $parameters);
-                $debug[] = $hint;
-                if ($this->logger) {
-                    $this->logger->debug('Router '.get_class($router)." was unable to generate route. Reason: '$hint': ".$e->getMessage());
-                }
-            }
-        }
-
-        if ($debug) {
-            $debug = array_unique($debug);
-            $info = implode(', ', $debug);
-        } else {
-            $info = $this->getErrorMessage($name);
-        }
-
-        throw new RouteNotFoundException(sprintf('None of the chained routers were able to generate route: %s', $info));
-    }
-
-    private function getErrorMessage($name, $router = null, $parameters = null)
-    {
-        if ($router instanceof VersatileGeneratorInterface) {
-            $displayName = $router->getRouteDebugMessage($name, $parameters);
-        } elseif (is_object($name)) {
-            $displayName = method_exists($name, '__toString')
-                ? (string) $name
-                : get_class($name)
-            ;
-        } else {
-            $displayName = (string) $name;
-        }
-
-        return "Route '$displayName' not found";
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContext(RequestContext $context)
-    {
-        foreach ($this->all() as $router) {
-            if ($router instanceof RequestContextAwareInterface) {
-                $router->setContext($context);
-            }
-        }
-
-        $this->context = $context;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * check for each contained router if it can warmup
-     */
-    public function warmUp($cacheDir)
-    {
-        foreach ($this->all() as $router) {
-            if ($router instanceof WarmableInterface) {
-                $router->warmUp($cacheDir);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRouteCollection()
-    {
-        if (!$this->routeCollection instanceof RouteCollection) {
-            $this->routeCollection = new ChainRouteCollection();
-            foreach ($this->all() as $router) {
-                $this->routeCollection->addCollection($router->getRouteCollection());
-            }
-        }
-
-        return $this->routeCollection;
-    }
-}
diff --git a/vendor/symfony-cmf/routing/ChainRouterInterface.php b/vendor/symfony-cmf/routing/ChainRouterInterface.php
deleted file mode 100644
index 9a7a003..0000000
--- a/vendor/symfony-cmf/routing/ChainRouterInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\Routing\RouterInterface;
-use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
-
-/**
- * Interface for a router that proxies routing to other routers.
- *
- * @author Daniel Wehner <dawehner@googlemail.com>
- */
-interface ChainRouterInterface extends RouterInterface, RequestMatcherInterface
-{
-    /**
-     * Add a Router to the index.
-     *
-     * @param RouterInterface $router   The router instance. Instead of RouterInterface, may also
-     *                                  be RequestMatcherInterface and UrlGeneratorInterface.
-     * @param integer         $priority The priority
-     */
-    public function add($router, $priority = 0);
-
-    /**
-     * Sorts the routers and flattens them.
-     *
-     * @return RouterInterface[] or RequestMatcherInterface and UrlGeneratorInterface.
-     */
-    public function all();
-}
diff --git a/vendor/symfony-cmf/routing/ChainedRouterInterface.php b/vendor/symfony-cmf/routing/ChainedRouterInterface.php
deleted file mode 100644
index a4ece6c..0000000
--- a/vendor/symfony-cmf/routing/ChainedRouterInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\Routing\RouterInterface;
-
-/**
- * Interface to combine the VersatileGeneratorInterface with the RouterInterface.
- */
-interface ChainedRouterInterface extends RouterInterface, VersatileGeneratorInterface
-{
-}
diff --git a/vendor/symfony-cmf/routing/ContentAwareGenerator.php b/vendor/symfony-cmf/routing/ContentAwareGenerator.php
deleted file mode 100644
index 91643eb..0000000
--- a/vendor/symfony-cmf/routing/ContentAwareGenerator.php
+++ /dev/null
@@ -1,320 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Doctrine\Common\Collections\Collection;
-use Symfony\Component\Routing\Route as SymfonyRoute;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * A generator that tries to generate routes from object, route names or
- * content objects or names.
- *
- * @author Philippo de Santis
- * @author David Buchmann
- * @author Uwe Jäger
- */
-class ContentAwareGenerator extends ProviderBasedGenerator
-{
-    /**
-     * The locale to use when neither the parameters nor the request context
-     * indicate the locale to use.
-     *
-     * @var string
-     */
-    protected $defaultLocale = null;
-
-    /**
-     * The content repository used to find content by it's id
-     * This can be used to specify a parameter content_id when generating urls
-     *
-     * This is optional and might not be initialized.
-     *
-     * @var  ContentRepositoryInterface
-     */
-    protected $contentRepository;
-
-    /**
-     * Set an optional content repository to find content by ids
-     *
-     * @param ContentRepositoryInterface $contentRepository
-     */
-    public function setContentRepository(ContentRepositoryInterface $contentRepository)
-    {
-        $this->contentRepository = $contentRepository;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param string $name       ignored.
-     * @param array  $parameters must either contain the field 'route' with a
-     *                           RouteObjectInterface or the field 'content_id'
-     *                           with the id of a document implementing
-     *                           RouteReferrersReadInterface.
-     *
-     * @throws RouteNotFoundException If there is no such route in the database
-     */
-    public function generate($name, $parameters = array(), $absolute = false)
-    {
-        if ($name instanceof SymfonyRoute) {
-            $route = $this->getBestLocaleRoute($name, $parameters);
-        } elseif (is_string($name) && $name) {
-            $route = $this->getRouteByName($name, $parameters);
-        } else {
-            $route = $this->getRouteByContent($name, $parameters);
-        }
-
-        if (! $route instanceof SymfonyRoute) {
-            $hint = is_object($route) ? get_class($route) : gettype($route);
-            throw new RouteNotFoundException('Route of this document is not an instance of Symfony\Component\Routing\Route but: '.$hint);
-        }
-
-        $this->unsetLocaleIfNotNeeded($route, $parameters);
-
-        return parent::generate($route, $parameters, $absolute);
-    }
-
-    /**
-     * Get the route by a string name
-     *
-     * @param string $route
-     * @param array  $parameters
-     *
-     * @return SymfonyRoute
-     *
-     * @throws RouteNotFoundException if there is no route found for the provided name
-     */
-    protected function getRouteByName($name, array $parameters)
-    {
-        $route = $this->provider->getRouteByName($name);
-        if (empty($route)) {
-            throw new RouteNotFoundException('No route found for name: ' . $name);
-        }
-
-        return $this->getBestLocaleRoute($route, $parameters);
-    }
-
-    /**
-     * Determine if there is a route with matching locale associated with the
-     * given route via associated content.
-     *
-     * @param SymfonyRoute $route
-     * @param array        $parameters
-     *
-     * @return SymfonyRoute either the passed route or an alternative with better locale
-     */
-    protected function getBestLocaleRoute(SymfonyRoute $route, $parameters)
-    {
-        if (! $route instanceof RouteObjectInterface) {
-            // this route has no content, we can't get the alternatives
-            return $route;
-        }
-        $locale = $this->getLocale($parameters);
-        if (! $this->checkLocaleRequirement($route, $locale)) {
-            $content = $route->getContent();
-            if ($content instanceof RouteReferrersReadInterface) {
-                $routes = $content->getRoutes();
-                $contentRoute = $this->getRouteByLocale($routes, $locale);
-                if ($contentRoute) {
-                    return $contentRoute;
-                }
-            }
-        }
-
-        return $route;
-    }
-
-    /**
-     * Get the route based on the $name that is an object implementing
-     * RouteReferrersReadInterface or a content found in the content repository
-     * with the content_id specified in parameters that is an instance of
-     * RouteReferrersReadInterface.
-     *
-     * Called in generate when there is no route given in the parameters.
-     *
-     * If there is more than one route for the content, tries to find the
-     * first one that matches the _locale (provided in $parameters or otherwise
-     * defaulting to the request locale).
-     *
-     * If no route with matching locale is found, falls back to just return the
-     * first route.
-     *
-     * @param mixed $name
-     * @param array $parameters which should contain a content field containing
-     *                          a RouteReferrersReadInterface object
-     *
-     * @return SymfonyRoute the route instance
-     *
-     * @throws RouteNotFoundException if no route can be determined
-     */
-    protected function getRouteByContent($name, &$parameters)
-    {
-        if ($name instanceof RouteReferrersReadInterface) {
-            $content = $name;
-        } elseif (isset($parameters['content_id'])
-            && null !== $this->contentRepository
-        ) {
-            $content = $this->contentRepository->findById($parameters['content_id']);
-            if (empty($content)) {
-                throw new RouteNotFoundException('The content repository found nothing at id ' . $parameters['content_id']);
-            }
-            if (!$content instanceof RouteReferrersReadInterface) {
-                throw new RouteNotFoundException('Content repository did not return a RouteReferrersReadInterface instance for id ' . $parameters['content_id']);
-            }
-        } else {
-            $hint = is_object($name) ? get_class($name) : gettype($name);
-            throw new RouteNotFoundException("The route name argument '$hint' is not RouteReferrersReadInterface instance and there is no 'content_id' parameter");
-        }
-
-        $routes = $content->getRoutes();
-        if (empty($routes)) {
-            $hint = ($this->contentRepository && $this->contentRepository->getContentId($content))
-                ? $this->contentRepository->getContentId($content)
-                : get_class($content);
-            throw new RouteNotFoundException('Content document has no route: ' . $hint);
-        }
-
-        unset($parameters['content_id']);
-
-        $route = $this->getRouteByLocale($routes, $this->getLocale($parameters));
-        if ($route) {
-            return $route;
-        }
-
-        // if none matched, randomly return the first one
-        if ($routes instanceof Collection) {
-            return $routes->first();
-        }
-
-        return reset($routes);
-    }
-
-    /**
-     * @param RouteCollection $routes
-     * @param string          $locale
-     *
-     * @return bool|SymfonyRoute false if no route requirement matches the provided locale
-     */
-    protected function getRouteByLocale($routes, $locale)
-    {
-        foreach ($routes as $route) {
-            if (! $route instanceof SymfonyRoute) {
-                continue;
-            }
-
-            if ($this->checkLocaleRequirement($route, $locale)) {
-                return $route;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * @param SymfonyRoute $route
-     * @param string       $locale
-     *
-     * @return bool true if there is either no $locale, no _locale requirement
-     *              on the route or if the requirement and the passed $locale
-     *              match.
-     */
-    private function checkLocaleRequirement(SymfonyRoute $route, $locale)
-    {
-        return empty($locale)
-            || !$route->getRequirement('_locale')
-            || preg_match('/'.$route->getRequirement('_locale').'/', $locale)
-        ;
-    }
-
-    /**
-     * Determine the locale to be used with this request
-     *
-     * @param array $parameters the parameters determined by the route
-     *
-     * @return string the locale following of the parameters or any other
-     *                information the router has available. defaultLocale if no
-     *                other locale can be determined.
-     */
-    protected function getLocale($parameters)
-    {
-        if (isset($parameters['_locale'])) {
-            return $parameters['_locale'];
-        }
-
-        if ($this->getContext()->hasParameter('_locale')) {
-            return $this->getContext()->getParameter('_locale');
-        }
-
-        return $this->defaultLocale;
-    }
-
-    /**
-     * Overwrite the locale to be used by default if there is neither one in
-     * the parameters when building the route nor a request available (i.e. CLI).
-     *
-     * @param string $locale
-     */
-    public function setDefaultLocale($locale)
-    {
-        $this->defaultLocale = $locale;
-    }
-
-    /**
-     * We additionally support empty name and data in parameters and RouteAware content
-     */
-    public function supports($name)
-    {
-        return ! $name || parent::supports($name) || $name instanceof RouteReferrersReadInterface;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getRouteDebugMessage($name, array $parameters = array())
-    {
-        if (empty($name) && isset($parameters['content_id'])) {
-            return 'Content id ' . $parameters['content_id'];
-        }
-
-        if ($name instanceof RouteReferrersReadInterface) {
-            return 'Route aware content ' . parent::getRouteDebugMessage($name, $parameters);
-        }
-
-        return parent::getRouteDebugMessage($name, $parameters);
-    }
-
-    /**
-     * If the _locale parameter is allowed by the requirements of the route
-     * and it is the default locale, remove it from the parameters so that we
-     * do not get an unneeded ?_locale= query string.
-     *
-     * @param SymfonyRoute $route      The route being generated.
-     * @param array        $parameters The parameters used, will be modified to
-     *                                 remove the _locale field if needed.
-     */
-    protected function unsetLocaleIfNotNeeded(SymfonyRoute $route, array &$parameters)
-    {
-        $locale = $this->getLocale($parameters);
-        if (null !== $locale) {
-            if (preg_match('/'.$route->getRequirement('_locale').'/', $locale)
-                && $locale == $route->getDefault('_locale')
-            ) {
-                $compiledRoute = $route->compile();
-                if (!in_array('_locale', $compiledRoute->getVariables())) {
-                    unset($parameters['_locale']);
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony-cmf/routing/ContentRepositoryInterface.php b/vendor/symfony-cmf/routing/ContentRepositoryInterface.php
deleted file mode 100644
index 31aea58..0000000
--- a/vendor/symfony-cmf/routing/ContentRepositoryInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-/**
- * Interface used by the DynamicRouter to retrieve content by it's id when
- * generating routes from content-id.
- *
- * This can be easily implemented using i.e. the Doctrine PHPCR-ODM
- * DocumentManager.
- *
- * @author Uwe Jäger
- */
-interface ContentRepositoryInterface
-{
-    /**
-     * Return a content object by it's id or null if there is none.
-     *
-     * If the returned content implements RouteReferrersReadInterface, it will
-     * be used to get the route from it to generate an URL.
-     *
-     * @param string $id id of the content object
-     *
-     * @return object A content that matches this id.
-     */
-    public function findById($id);
-
-    /**
-     * Return the content identifier for the provided content object for
-     * debugging purposes.
-     *
-     * @param object $content A content instance
-     *
-     * @return string|null $id id of the content object or null if unable to determine an id
-     */
-    public function getContentId($content);
-}
diff --git a/vendor/symfony-cmf/routing/DependencyInjection/Compiler/RegisterRouteEnhancersPass.php b/vendor/symfony-cmf/routing/DependencyInjection/Compiler/RegisterRouteEnhancersPass.php
deleted file mode 100644
index 0c24224..0000000
--- a/vendor/symfony-cmf/routing/DependencyInjection/Compiler/RegisterRouteEnhancersPass.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\DependencyInjection\Compiler;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-
-/**
- * This compiler pass adds additional route enhancers
- * to the dynamic router.
- *
- * @author Daniel Leech <dan.t.leech@gmail.com>
- * @author Nathaniel Catchpole (catch)
- */
-class RegisterRouteEnhancersPass implements CompilerPassInterface
-{
-    /**
-     * @var string
-     */
-    protected $dynamicRouterService;
-
-    protected $enhancerTag;
-
-    public function __construct($dynamicRouterService = 'cmf_routing.dynamic_router', $enhancerTag = 'dynamic_router_route_enhancer')
-    {
-        $this->dynamicRouterService = $dynamicRouterService;
-        $this->enhancerTag = $enhancerTag;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        if (!$container->hasDefinition($this->dynamicRouterService)) {
-            return;
-        }
-
-        $router = $container->getDefinition($this->dynamicRouterService);
-
-        foreach ($container->findTaggedServiceIds($this->enhancerTag) as $id => $attributes) {
-            $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0;
-            $router->addMethodCall('addRouteEnhancer', array(new Reference($id), $priority));
-        }
-    }
-}
diff --git a/vendor/symfony-cmf/routing/DependencyInjection/Compiler/RegisterRoutersPass.php b/vendor/symfony-cmf/routing/DependencyInjection/Compiler/RegisterRoutersPass.php
deleted file mode 100644
index 2d83765..0000000
--- a/vendor/symfony-cmf/routing/DependencyInjection/Compiler/RegisterRoutersPass.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\DependencyInjection\Compiler;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-
-/**
- * Compiler pass to register routers to the ChainRouter.
- *
- * @author Wouter J <waldio.webdesign@gmail.com>
- * @author Henrik Bjornskov <henrik@bjrnskov.dk>
- * @author Magnus Nordlander <magnus@e-butik.se>
- */
-class RegisterRoutersPass implements CompilerPassInterface
-{
-    /**
-     * @var string
-     */
-    protected $chainRouterService;
-
-    protected $routerTag;
-
-    public function __construct($chainRouterService = 'cmf_routing.router', $routerTag = 'router')
-    {
-        $this->chainRouterService = $chainRouterService;
-        $this->routerTag = $routerTag;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        if (!$container->hasDefinition($this->chainRouterService)) {
-            return;
-        }
-
-        $definition = $container->getDefinition($this->chainRouterService);
-
-        foreach ($container->findTaggedServiceIds($this->routerTag) as $id => $attributes) {
-            $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0;
-
-            $definition->addMethodCall('add', array(new Reference($id), $priority));
-        }
-    }
-}
diff --git a/vendor/symfony-cmf/routing/DynamicRouter.php b/vendor/symfony-cmf/routing/DynamicRouter.php
deleted file mode 100644
index 944a94b..0000000
--- a/vendor/symfony-cmf/routing/DynamicRouter.php
+++ /dev/null
@@ -1,373 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\RouterInterface;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
-use Symfony\Component\Routing\RequestContextAwareInterface;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Cmf\Component\Routing\Event\Events;
-use Symfony\Cmf\Component\Routing\Event\RouterMatchEvent;
-
-/**
- * A flexible router accepting matcher and generator through injection and
- * using the RouteEnhancer concept to generate additional data on the routes.
- *
- * @author Larry Garfield
- * @author David Buchmann
- */
-class DynamicRouter implements RouterInterface, RequestMatcherInterface, ChainedRouterInterface
-{
-    /**
-     * @var RequestMatcherInterface|UrlMatcherInterface
-     */
-    protected $matcher;
-
-    /**
-     * @var UrlGeneratorInterface
-     */
-    protected $generator;
-
-    /**
-     * @var EventDispatcherInterface
-     */
-    protected $eventDispatcher;
-
-    /**
-     * @var RouteEnhancerInterface[]
-     */
-    protected $enhancers = array();
-
-    /**
-     * Cached sorted list of enhancers
-     *
-     * @var RouteEnhancerInterface[]
-     */
-    protected $sortedEnhancers = array();
-
-    /**
-     * The regexp pattern that needs to be matched before a dynamic lookup is made
-     *
-     * @var string
-     */
-    protected $uriFilterRegexp;
-
-    /**
-     * @var RequestContext
-     */
-    protected $context;
-
-    /**
-     * @var RouteCollection
-     */
-    private $routeCollection;
-
-    /**
-     * @param RequestContext                              $context
-     * @param RequestMatcherInterface|UrlMatcherInterface $matcher
-     * @param UrlGeneratorInterface                       $generator
-     * @param string                                      $uriFilterRegexp
-     * @param EventDispatcherInterface|null               $eventDispatcher
-     * @param RouteProviderInterface                      $provider
-     */
-    public function __construct(RequestContext $context,
-                                $matcher,
-                                UrlGeneratorInterface $generator,
-                                $uriFilterRegexp = '',
-                                EventDispatcherInterface $eventDispatcher = null,
-                                RouteProviderInterface $provider = null
-    ) {
-        $this->context = $context;
-        if (! $matcher instanceof RequestMatcherInterface && ! $matcher instanceof UrlMatcherInterface) {
-            throw new \InvalidArgumentException('Matcher must implement either Symfony\Component\Routing\Matcher\RequestMatcherInterface or Symfony\Component\Routing\Matcher\UrlMatcherInterface');
-        }
-        $this->matcher = $matcher;
-        $this->generator = $generator;
-        $this->eventDispatcher = $eventDispatcher;
-        $this->uriFilterRegexp = $uriFilterRegexp;
-        $this->provider = $provider;
-
-        $this->generator->setContext($context);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getRouteCollection()
-    {
-        if (!$this->routeCollection instanceof RouteCollection) {
-            $this->routeCollection = $this->provider
-                ? new LazyRouteCollection($this->provider) : new RouteCollection();
-        }
-
-        return $this->routeCollection;
-    }
-
-    /**
-     * @return RequestMatcherInterface|UrlMatcherInterface
-     */
-    public function getMatcher()
-    {
-        /* we may not set the context in DynamicRouter::setContext as this
-         * would lead to symfony cache warmup problems.
-         * a request matcher does not need the request context separately as it
-         * can get it from the request.
-         */
-        if ($this->matcher instanceof RequestContextAwareInterface) {
-            $this->matcher->setContext($this->getContext());
-        }
-
-        return $this->matcher;
-    }
-
-    /**
-     * @return UrlGeneratorInterface
-     */
-    public function getGenerator()
-    {
-        $this->generator->setContext($this->getContext());
-
-        return $this->generator;
-    }
-
-    /**
-     * Generates a URL from the given parameters.
-     *
-     * If the generator is not able to generate the url, it must throw the
-     * RouteNotFoundException as documented below.
-     *
-     * @param string  $name       The name of the route
-     * @param mixed   $parameters An array of parameters
-     * @param Boolean $absolute   Whether to generate an absolute URL
-     *
-     * @return string The generated URL
-     *
-     * @throws RouteNotFoundException if route doesn't exist
-     *
-     * @api
-     */
-    public function generate($name, $parameters = array(), $absolute = false)
-    {
-        return $this->getGenerator()->generate($name, $parameters, $absolute);
-    }
-
-    /**
-     * Delegate to our generator
-     *
-     * {@inheritDoc}
-     */
-    public function supports($name)
-    {
-        if ($this->generator instanceof VersatileGeneratorInterface) {
-            return $this->generator->supports($name);
-        }
-
-        return is_string($name);
-    }
-
-    /**
-     * Tries to match a URL path with a set of routes.
-     *
-     * If the matcher can not find information, it must throw one of the
-     * exceptions documented below.
-     *
-     * @param string $pathinfo The path info to be parsed (raw format, i.e. not
-     *                         urldecoded)
-     *
-     * @return array An array of parameters
-     *
-     * @throws ResourceNotFoundException If the resource could not be found
-     * @throws MethodNotAllowedException If the resource was found but the
-     *                                   request method is not allowed
-     *
-     * @deprecated Use matchRequest exclusively to avoid problems. This method will be removed in version 2.0
-     * @api
-     */
-    public function match($pathinfo)
-    {
-        $request = Request::create($pathinfo);
-        if ($this->eventDispatcher) {
-            $event = new RouterMatchEvent();
-            $this->eventDispatcher->dispatch(Events::PRE_DYNAMIC_MATCH, $event);
-        }
-
-        if (! empty($this->uriFilterRegexp) && ! preg_match($this->uriFilterRegexp, $pathinfo)) {
-            throw new ResourceNotFoundException("$pathinfo does not match the '{$this->uriFilterRegexp}' pattern");
-        }
-
-        $matcher = $this->getMatcher();
-        if (! $matcher instanceof UrlMatcherInterface) {
-            throw new \InvalidArgumentException('Wrong matcher type, you need to call matchRequest');
-        }
-
-        $defaults = $matcher->match($pathinfo);
-
-        return $this->applyRouteEnhancers($defaults, $request);
-    }
-
-    /**
-     * Tries to match a request with a set of routes and returns the array of
-     * information for that route.
-     *
-     * If the matcher can not find information, it must throw one of the
-     * exceptions documented below.
-     *
-     * @param Request $request The request to match
-     *
-     * @return array An array of parameters
-     *
-     * @throws ResourceNotFoundException If no matching resource could be found
-     * @throws MethodNotAllowedException If a matching resource was found but
-     *                                   the request method is not allowed
-     */
-    public function matchRequest(Request $request)
-    {
-        if ($this->eventDispatcher) {
-            $event = new RouterMatchEvent($request);
-            $this->eventDispatcher->dispatch(Events::PRE_DYNAMIC_MATCH_REQUEST, $event);
-        }
-
-        if (! empty($this->uriFilterRegexp)
-            && ! preg_match($this->uriFilterRegexp, $request->getPathInfo())
-        ) {
-            throw new ResourceNotFoundException("{$request->getPathInfo()} does not match the '{$this->uriFilterRegexp}' pattern");
-        }
-
-        $matcher = $this->getMatcher();
-        if ($matcher instanceof UrlMatcherInterface) {
-            $defaults = $matcher->match($request->getPathInfo());
-        } else {
-            $defaults = $matcher->matchRequest($request);
-        }
-
-        return $this->applyRouteEnhancers($defaults, $request);
-    }
-
-    /**
-     * Apply the route enhancers to the defaults, according to priorities
-     *
-     * @param array   $defaults
-     * @param Request $request
-     *
-     * @return array
-     */
-    protected function applyRouteEnhancers($defaults, Request $request)
-    {
-        foreach ($this->getRouteEnhancers() as $enhancer) {
-            $defaults = $enhancer->enhance($defaults, $request);
-        }
-
-        return $defaults;
-    }
-
-    /**
-     * Add route enhancers to the router to let them generate information on
-     * matched routes.
-     *
-     * The order of the enhancers is determined by the priority, the higher the
-     * value, the earlier the enhancer is run.
-     *
-     * @param RouteEnhancerInterface $enhancer
-     * @param int                    $priority
-     */
-    public function addRouteEnhancer(RouteEnhancerInterface $enhancer, $priority = 0)
-    {
-        if (empty($this->enhancers[$priority])) {
-            $this->enhancers[$priority] = array();
-        }
-
-        $this->enhancers[$priority][] = $enhancer;
-        $this->sortedEnhancers = array();
-
-        return $this;
-    }
-
-    /**
-     * Sorts the enhancers and flattens them.
-     *
-     * @return RouteEnhancerInterface[] the enhancers ordered by priority
-     */
-    public function getRouteEnhancers()
-    {
-        if (empty($this->sortedEnhancers)) {
-            $this->sortedEnhancers = $this->sortRouteEnhancers();
-        }
-
-        return $this->sortedEnhancers;
-    }
-
-    /**
-     * Sort enhancers by priority.
-     *
-     * The highest priority number is the highest priority (reverse sorting).
-     *
-     * @return RouteEnhancerInterface[] the sorted enhancers
-     */
-    protected function sortRouteEnhancers()
-    {
-        $sortedEnhancers = array();
-        krsort($this->enhancers);
-
-        foreach ($this->enhancers as $enhancers) {
-            $sortedEnhancers = array_merge($sortedEnhancers, $enhancers);
-        }
-
-        return $sortedEnhancers;
-    }
-
-    /**
-     * Sets the request context.
-     *
-     * @param RequestContext $context The context
-     *
-     * @api
-     */
-    public function setContext(RequestContext $context)
-    {
-        $this->context = $context;
-    }
-
-    /**
-     * Gets the request context.
-     *
-     * @return RequestContext The context
-     *
-     * @api
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Forwards to the generator.
-     */
-    public function getRouteDebugMessage($name, array $parameters = array())
-    {
-        if ($this->generator instanceof VersatileGeneratorInterface) {
-            return $this->generator->getRouteDebugMessage($name, $parameters);
-        }
-
-        return "Route '$name' not found";
-    }
-}
diff --git a/vendor/symfony-cmf/routing/Enhancer/FieldByClassEnhancer.php b/vendor/symfony-cmf/routing/Enhancer/FieldByClassEnhancer.php
deleted file mode 100644
index f88b348..0000000
--- a/vendor/symfony-cmf/routing/Enhancer/FieldByClassEnhancer.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\Enhancer;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * This enhancer sets a field if not yet existing from the class of an object
- * in another field.
- *
- * The comparison is done with instanceof to support proxy classes and such.
- *
- * Only works with RouteObjectInterface routes that can return a referenced
- * content.
- *
- * @author David Buchmann
- */
-class FieldByClassEnhancer implements RouteEnhancerInterface
-{
-    /**
-     * @var string field for the source class
-     */
-    protected $source;
-    /**
-     * @var string field to write hashmap lookup result into
-     */
-    protected $target;
-    /**
-     * @var array containing the mapping between a class name and the target value
-     */
-    protected $map;
-
-    /**
-     * @param string $source the field name of the class
-     * @param string $target the field name to set from the map
-     * @param array  $map    the map of class names to field values
-     */
-    public function __construct($source, $target, $map)
-    {
-        $this->source = $source;
-        $this->target = $target;
-        $this->map = $map;
-    }
-
-    /**
-     * If the source field is instance of one of the entries in the map,
-     * target is set to the value of that map entry.
-     *
-     * {@inheritDoc}
-     */
-    public function enhance(array $defaults, Request $request)
-    {
-        if (isset($defaults[$this->target])) {
-            // no need to do anything
-            return $defaults;
-        }
-
-        if (! isset($defaults[$this->source])) {
-            return $defaults;
-        }
-
-        // we need to loop over the array and do instanceof in case the content
-        // class extends the specified class
-        // i.e. phpcr-odm generates proxy class for the content.
-        foreach ($this->map as $class => $value) {
-            if ($defaults[$this->source] instanceof $class) {
-                // found a matching entry in the map
-                $defaults[$this->target] = $value;
-
-                return $defaults;
-            }
-        }
-
-        return $defaults;
-    }
-}
diff --git a/vendor/symfony-cmf/routing/Enhancer/FieldMapEnhancer.php b/vendor/symfony-cmf/routing/Enhancer/FieldMapEnhancer.php
deleted file mode 100644
index 91adc66..0000000
--- a/vendor/symfony-cmf/routing/Enhancer/FieldMapEnhancer.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\Enhancer;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * This enhancer can fill one field with the result of a hashmap lookup of
- * another field. If the target field is already set, it does nothing.
- *
- * @author David Buchmann
- */
-class FieldMapEnhancer implements RouteEnhancerInterface
-{
-    /**
-     * @var string field for key in hashmap lookup
-     */
-    protected $source;
-    /**
-     * @var string field to write hashmap lookup result into
-     */
-    protected $target;
-    /**
-     * @var array containing the mapping between the source field value and target field value
-     */
-    protected $hashmap;
-
-    /**
-     * @param string $source  the field to read
-     * @param string $target  the field to write the result of the lookup into
-     * @param array  $hashmap for looking up value from source and get value for target
-     */
-    public function __construct($source, $target, array $hashmap)
-    {
-        $this->source = $source;
-        $this->target = $target;
-        $this->hashmap = $hashmap;
-    }
-
-    /**
-     * If the target field is not set but the source field is, map the field
-     *
-     * {@inheritDoc}
-     */
-    public function enhance(array $defaults, Request $request)
-    {
-        if (isset($defaults[$this->target])) {
-            return $defaults;
-        }
-        if (! isset($defaults[$this->source])) {
-            return $defaults;
-        }
-        if (! isset($this->hashmap[$defaults[$this->source]])) {
-            return $defaults;
-        }
-
-        $defaults[$this->target] = $this->hashmap[$defaults[$this->source]];
-
-        return $defaults;
-    }
-}
diff --git a/vendor/symfony-cmf/routing/Enhancer/FieldPresenceEnhancer.php b/vendor/symfony-cmf/routing/Enhancer/FieldPresenceEnhancer.php
deleted file mode 100644
index d2e35ad..0000000
--- a/vendor/symfony-cmf/routing/Enhancer/FieldPresenceEnhancer.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\Enhancer;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * This enhancer sets a field to a fixed value. You can specify a source field
- * name to only set the target field if the source is present.
- *
- * @author David Buchmann
- */
-class FieldPresenceEnhancer implements RouteEnhancerInterface
-{
-    /**
-     * Field name for the source field that must exist. If null, the target
-     * field is always set if not already present.
-     *
-     * @var string|null
-     */
-    protected $source;
-
-    /**
-     * Field name to write the value into.
-     *
-     * @var string
-     */
-    protected $target;
-
-    /**
-     * Value to set the target field to.
-     *
-     * @var string
-     */
-    private $value;
-
-    /**
-     * @param null|string $source the field name of the class, null to disable the check
-     * @param string      $target the field name to set from the map
-     * @param string      $value  value to set target field to if source field exists
-     */
-    public function __construct($source, $target, $value)
-    {
-        $this->source = $source;
-        $this->target = $target;
-        $this->value = $value;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function enhance(array $defaults, Request $request)
-    {
-        if (isset($defaults[$this->target])) {
-            // no need to do anything
-            return $defaults;
-        }
-
-        if (null !== $this->source && !isset($defaults[$this->source])) {
-            return $defaults;
-        }
-
-        $defaults[$this->target] = $this->value;
-
-        return $defaults;
-    }
-}
diff --git a/vendor/symfony-cmf/routing/Enhancer/RouteContentEnhancer.php b/vendor/symfony-cmf/routing/Enhancer/RouteContentEnhancer.php
deleted file mode 100644
index af63dfc..0000000
--- a/vendor/symfony-cmf/routing/Enhancer/RouteContentEnhancer.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\Enhancer;
-
-use Symfony\Component\HttpFoundation\Request;
-
-use Symfony\Cmf\Component\Routing\RouteObjectInterface;
-
-/**
- * This enhancer sets the content to target field if the route provides content.
- *
- * Only works with RouteObjectInterface routes that can return a referenced
- * content.
- *
- * @author David Buchmann
- */
-class RouteContentEnhancer implements RouteEnhancerInterface
-{
-    /**
-     * @var string field for the route class
-     */
-    protected $routefield;
-    /**
-     * @var string field to write hashmap lookup result into
-     */
-    protected $target;
-
-    /**
-     * @param string $routefield the field name of the route class
-     * @param string $target     the field name to set from the map
-     * @param array  $hashmap    the map of class names to field values
-     */
-    public function __construct($routefield, $target)
-    {
-        $this->routefield = $routefield;
-        $this->target = $target;
-    }
-
-    /**
-     * If the route has a non-null content and if that content class is in the
-     * injected map, returns that controller.
-     *
-     * {@inheritDoc}
-     */
-    public function enhance(array $defaults, Request $request)
-    {
-        if (isset($defaults[$this->target])) {
-            // no need to do anything
-            return $defaults;
-        }
-
-        if (! isset($defaults[$this->routefield])
-            || ! $defaults[$this->routefield] instanceof RouteObjectInterface
-        ) {
-            // we can't determine the content
-            return $defaults;
-        }
-        /** @var $route RouteObjectInterface */
-        $route = $defaults[$this->routefield];
-
-        $content = $route->getContent();
-        if (! $content) {
-            // we have no content
-            return $defaults;
-        }
-        $defaults[$this->target] = $content;
-
-        return $defaults;
-    }
-}
diff --git a/vendor/symfony-cmf/routing/Enhancer/RouteEnhancerInterface.php b/vendor/symfony-cmf/routing/Enhancer/RouteEnhancerInterface.php
deleted file mode 100644
index 85a77c5..0000000
--- a/vendor/symfony-cmf/routing/Enhancer/RouteEnhancerInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\Enhancer;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * A route enhancer can change the values in the route data arrays
- *
- * This is useful to provide information to the rest of the routing system
- * that can be inferred from other parameters rather than hardcode that
- * information in every route.
- *
- * @author David Buchmann
- */
-interface RouteEnhancerInterface
-{
-    /**
-     * Update the defaults based on its own data and the request.
-     *
-     * @param array   $defaults the getRouteDefaults array.
-     * @param Request $request  the Request instance.
-     *
-     * @return array the modified defaults. Each enhancer MUST return the
-     *               $defaults but may add or remove values.
-     */
-    public function enhance(array $defaults, Request $request);
-}
diff --git a/vendor/symfony-cmf/routing/Event/Events.php b/vendor/symfony-cmf/routing/Event/Events.php
deleted file mode 100644
index 95c0326..0000000
--- a/vendor/symfony-cmf/routing/Event/Events.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\Event;
-
-final class Events
-{
-    /**
-     * Fired before a path is matched in \Symfony\Cmf\Component\Routing\DynamicRouter#match
-     *
-     * The event object is RouteMatchEvent.
-     */
-    const PRE_DYNAMIC_MATCH = 'cmf_routing.pre_dynamic_match';
-
-    /**
-     * Fired before a Request is matched in \Symfony\Cmf\Component\Routing\DynamicRouter#match
-     *
-     * The event object is RouteMatchEvent.
-     */
-    const PRE_DYNAMIC_MATCH_REQUEST = 'cmf_routing.pre_dynamic_match_request';
-}
diff --git a/vendor/symfony-cmf/routing/Event/RouterMatchEvent.php b/vendor/symfony-cmf/routing/Event/RouterMatchEvent.php
deleted file mode 100644
index 7125972..0000000
--- a/vendor/symfony-cmf/routing/Event/RouterMatchEvent.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\Event;
-
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\HttpFoundation\Request;
-
-class RouterMatchEvent extends Event
-{
-    /**
-     * @var Request
-     */
-    protected $request;
-
-    /**
-     * @param Request $request
-     */
-    public function __construct(Request $request = null)
-    {
-        $this->request = $request;
-    }
-
-    /**
-     * @return Request | null
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-}
diff --git a/vendor/symfony-cmf/routing/LICENSE b/vendor/symfony-cmf/routing/LICENSE
deleted file mode 100644
index b068dfb..0000000
--- a/vendor/symfony-cmf/routing/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-Routing
-
-    The MIT License
-
-    Copyright (c) 2011-2014 Symfony2 CMF
-
-    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-cmf/routing/LazyRouteCollection.php b/vendor/symfony-cmf/routing/LazyRouteCollection.php
deleted file mode 100644
index 4011f9a..0000000
--- a/vendor/symfony-cmf/routing/LazyRouteCollection.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Route;
-
-class LazyRouteCollection extends RouteCollection
-{
-    /**
-     * The route provider for this generator.
-     *
-     * @var RouteProviderInterface
-     */
-    protected $provider;
-
-    public function __construct(RouteProviderInterface $provider)
-    {
-        $this->provider = $provider;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->all());
-    }
-
-    /**
-     * Gets the number of Routes in this collection.
-     *
-     * @return int The number of routes
-     */
-    public function count()
-    {
-        return count($this->all());
-    }
-
-    /**
-     * Returns all routes in this collection.
-     *
-     * @return Route[] An array of routes
-     */
-    public function all()
-    {
-        return $this->provider->getRoutesByNames(null);
-    }
-
-    /**
-     * Gets a route by name.
-     *
-     * @param string $name The route name
-     *
-     * @return Route|null A Route instance or null when not found
-     */
-    public function get($name)
-    {
-        try {
-            return $this->provider->getRouteByName($name);
-        } catch (RouteNotFoundException $e) {
-            return null;
-        }
-    }
-}
diff --git a/vendor/symfony-cmf/routing/NestedMatcher/FinalMatcherInterface.php b/vendor/symfony-cmf/routing/NestedMatcher/FinalMatcherInterface.php
deleted file mode 100644
index 77cd649..0000000
--- a/vendor/symfony-cmf/routing/NestedMatcher/FinalMatcherInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\NestedMatcher;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-
-/**
- * A FinalMatcher returns only one route from a collection of candidate routes.
- *
- * @author Larry Garfield
- * @author David Buchmann
- */
-interface FinalMatcherInterface
-{
-    /**
-    * Matches a request against a route collection and returns exactly one result.
-    *
-    * @param RouteCollection $collection The collection against which to match.
-    * @param Request $request The request to match.
-    *
-    * @return array An array of parameters
-    *
-    * @throws ResourceNotFoundException if none of the routes in $collection
-    *    matches $request
-    */
-    public function finalMatch(RouteCollection $collection, Request $request);
-}
diff --git a/vendor/symfony-cmf/routing/NestedMatcher/NestedMatcher.php b/vendor/symfony-cmf/routing/NestedMatcher/NestedMatcher.php
deleted file mode 100644
index c136e1f..0000000
--- a/vendor/symfony-cmf/routing/NestedMatcher/NestedMatcher.php
+++ /dev/null
@@ -1,189 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\NestedMatcher;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
-use Symfony\Cmf\Component\Routing\RouteProviderInterface;
-
-/**
- * A more flexible approach to matching. The route collection to match against
- * can be dynamically determined based on the request and users can inject
- * their own filters or use a custom final matching strategy.
- *
- * The nested matcher splits matching into three configurable steps:
- *
- * 1) Get potential matches from a RouteProviderInterface
- * 2) Apply any RouteFilterInterface to reduce the route collection
- * 3) Have FinalMatcherInterface select the best match of the remaining routes
- *
- * @author Larry Garfield
- * @author David Buchmann
- */
-class NestedMatcher implements RequestMatcherInterface
-{
-    /**
-     * The route provider responsible for the first-pass match.
-     *
-     * @var RouteProviderInterface
-     */
-    protected $routeProvider;
-
-    /**
-     * The final matcher.
-     *
-     * @var FinalMatcherInterface
-     */
-    protected $finalMatcher;
-
-    /**
-     * An array of RouteFilterInterface objects.
-     *
-     * @var RouteFilterInterface[]
-     */
-    protected $filters = array();
-
-    /**
-     * Array of RouteFilterInterface objects, sorted.
-     *
-     * @var RouteFilterInterface[]
-     */
-    protected $sortedFilters = array();
-
-    /**
-     * Constructs a new NestedMatcher
-     *
-     * @param RouteProviderInterface $provider The route provider this matcher
-     *                                         should use
-     * @param FinalMatcherInterface  $final    The Final Matcher to match the
-     *                                         routes
-     */
-    public function __construct(
-        RouteProviderInterface $provider = null,
-        FinalMatcherInterface $final = null
-    ) {
-        if (null !== $provider) {
-            $this->setRouteProvider($provider);
-        }
-        if (null !== $final) {
-            $this->setFinalMatcher($final);
-        }
-    }
-
-    /**
-     * Sets the route provider for the matching plan.
-     *
-     * @param RouteProviderInterface $provider A source of routes.
-     *
-     * @return NestedMatcher this object to have a fluent interface
-     */
-    public function setRouteProvider(RouteProviderInterface $provider)
-    {
-        $this->routeProvider = $provider;
-
-        return $this;
-    }
-
-    /**
-     * Adds a partial matcher to the matching plan.
-     *
-     * Partial matchers will be run in the order in which they are added.
-     *
-     * @param RouteFilterInterface $filter
-     * @param int                  $priority (optional) The priority of the
-     *                                       filter. Higher number filters will
-     *                                       be used first. Defaults to 0.
-     *
-     * @return NestedMatcher this object to have a fluent interface
-     */
-    public function addRouteFilter(RouteFilterInterface $filter, $priority = 0)
-    {
-        if (empty($this->filters[$priority])) {
-            $this->filters[$priority] = array();
-        }
-
-        $this->filters[$priority][] = $filter;
-        $this->sortedFilters = array();
-
-        return $this;
-    }
-
-    /**
-     * Sets the final matcher for the matching plan.
-     *
-     * @param FinalMatcherInterface $final The final matcher that will have to
-     *                                     pick the route that will be used.
-     *
-     * @return NestedMatcher this object to have a fluent interface
-     */
-    public function setFinalMatcher(FinalMatcherInterface $final)
-    {
-        $this->finalMatcher = $final;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function matchRequest(Request $request)
-    {
-        $collection = $this->routeProvider->getRouteCollectionForRequest($request);
-        if (!count($collection)) {
-            throw new ResourceNotFoundException();
-        }
-
-        // Route filters are expected to throw an exception themselves if they
-        // end up filtering the list down to 0.
-        foreach ($this->getRouteFilters() as $filter) {
-            $collection = $filter->filter($collection, $request);
-        }
-
-        $attributes = $this->finalMatcher->finalMatch($collection, $request);
-
-        return $attributes;
-    }
-
-    /**
-     * Sorts the filters and flattens them.
-     *
-     * @return RouteFilterInterface[] the filters ordered by priority
-     */
-    public function getRouteFilters()
-    {
-        if (empty($this->sortedFilters)) {
-           $this->sortedFilters = $this->sortFilters();
-        }
-
-        return $this->sortedFilters;
-    }
-
-    /**
-     * Sort filters by priority.
-     *
-     * The highest priority number is the highest priority (reverse sorting).
-     *
-     * @return RouteFilterInterface[] the sorted filters
-     */
-    protected function sortFilters()
-    {
-        $sortedFilters = array();
-        krsort($this->filters);
-
-        foreach ($this->filters as $filters) {
-            $sortedFilters = array_merge($sortedFilters, $filters);
-        }
-
-        return $sortedFilters;
-    }
-}
diff --git a/vendor/symfony-cmf/routing/NestedMatcher/RouteFilterInterface.php b/vendor/symfony-cmf/routing/NestedMatcher/RouteFilterInterface.php
deleted file mode 100644
index 15ff74d..0000000
--- a/vendor/symfony-cmf/routing/NestedMatcher/RouteFilterInterface.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\NestedMatcher;
-
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * A RouteFilter takes a RouteCollection and returns a filtered subset.
- *
- * It is not implemented as a filter iterator because we want to allow
- * router filters to handle their own empty-case handling, usually by throwing
- * an appropriate exception if no routes match the object's rules.
- *
- * @author Larry Garfield
- * @author David Buchmann
- */
-interface RouteFilterInterface
-{
-    /**
-     * Filters the route collection against a request and returns all matching
-     * routes.
-     *
-     * @param RouteCollection $collection The collection against which to match.
-     * @param Request         $request    A Request object against which to match.
-     *
-     * @return RouteCollection A non-empty RouteCollection of matched routes.
-     *
-     * @throws ResourceNotFoundException if none of the routes in $collection
-     *                                   matches $request. This is a performance
-     *                                   optimization to not continue the match
-     *                                   process when a match will no longer be
-     *                                   possible.
-     */
-    public function filter(RouteCollection $collection, Request $request);
-}
diff --git a/vendor/symfony-cmf/routing/NestedMatcher/UrlMatcher.php b/vendor/symfony-cmf/routing/NestedMatcher/UrlMatcher.php
deleted file mode 100644
index 8986d5b..0000000
--- a/vendor/symfony-cmf/routing/NestedMatcher/UrlMatcher.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing\NestedMatcher;
-
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Matcher\UrlMatcher as SymfonyUrlMatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\RequestContext;
-
-use Symfony\Cmf\Component\Routing\RouteObjectInterface;
-
-/**
- * Extended UrlMatcher to provide an additional interface and enhanced features.
- *
- * This class requires Symfony 2.2 for a refactoring done to the symfony UrlMatcher
- *
- * @author Larry Garfield
- */
-class UrlMatcher extends SymfonyUrlMatcher implements FinalMatcherInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function finalMatch(RouteCollection $collection, Request $request)
-    {
-        $this->routes = $collection;
-        $context = new RequestContext();
-        $context->fromRequest($request);
-        $this->setContext($context);
-
-        return $this->match($request->getPathInfo());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getAttributes(Route $route, $name, array $attributes)
-    {
-        if ($route instanceof RouteObjectInterface && is_string($route->getRouteKey())) {
-            $name = $route->getRouteKey();
-        }
-        $attributes[RouteObjectInterface::ROUTE_NAME] = $name;
-        $attributes[RouteObjectInterface::ROUTE_OBJECT] = $route;
-
-        return $this->mergeDefaults($attributes, $route->getDefaults());
-    }
-}
diff --git a/vendor/symfony-cmf/routing/PagedRouteCollection.php b/vendor/symfony-cmf/routing/PagedRouteCollection.php
deleted file mode 100644
index dba573e..0000000
--- a/vendor/symfony-cmf/routing/PagedRouteCollection.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-
-/**
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-/**
- * Provides a route collection which avoids having all routes in memory.
- *
- * Internally, this does load multiple routes over time using a
- * PagedRouteProviderInterface $route_provider.
- */
-class PagedRouteCollection implements \Iterator, \Countable
-{
-    /**
-     * @var PagedRouteProviderInterface
-     */
-    protected $provider;
-
-    /**
-     * Stores the amount of routes which are loaded in parallel and kept in
-     * memory.
-     *
-     * @var int
-     */
-    protected $routesBatchSize;
-
-    /**
-     * Contains the current item the iterator points to.
-     *
-     * @var int
-     */
-    protected $current = -1;
-
-    /**
-     * Stores the current loaded routes.
-     *
-     * @var \Symfony\Component\Routing\Route[]
-     */
-    protected $currentRoutes;
-
-    public function __construct(PagedRouteProviderInterface $pagedRouteProvider, $routesBatchSize = 50)
-    {
-        $this->provider = $pagedRouteProvider;
-        $this->routesBatchSize = $routesBatchSize;
-    }
-
-    /**
-     * Loads the next routes into the elements array.
-     *
-     * @param int $offset The offset used in the db query.
-     */
-    protected function loadNextElements($offset)
-    {
-        // If the last batch was smaller than the batch size, this means there
-        // are no more routes available.
-        if (isset($this->currentRoutes) && count($this->currentRoutes) < $this->routesBatchSize) {
-            $this->currentRoutes = array();
-        } else {
-            $this->currentRoutes = $this->provider->getRoutesPaged($offset, $this->routesBatchSize);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function current()
-    {
-        return current($this->currentRoutes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function next()
-    {
-        $result = next($this->currentRoutes);
-        if (false === $result) {
-            $this->loadNextElements($this->current + 1);
-        }
-        $this->current++;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function key()
-    {
-        return key($this->currentRoutes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function valid()
-    {
-        return key($this->currentRoutes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function rewind()
-    {
-        $this->current = 0;
-        $this->currentRoutes = NULL;
-        $this->loadNextElements($this->current);
-    }
-
-    /**
-     * Gets the number of Routes in this collection.
-     *
-     * @return int The number of routes
-     */
-    public function count()
-    {
-        return $this->provider->getRoutesCount();
-    }
-}
diff --git a/vendor/symfony-cmf/routing/PagedRouteProviderInterface.php b/vendor/symfony-cmf/routing/PagedRouteProviderInterface.php
deleted file mode 100644
index 970ec78..0000000
--- a/vendor/symfony-cmf/routing/PagedRouteProviderInterface.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-/**
- * Interface for a provider which allows to retrieve a limited amount of routes.
- */
-interface PagedRouteProviderInterface extends RouteProviderInterface
-{
-    /**
-     * Find an amount of routes with an offset and possible a limit.
-     *
-     * In case you want to iterate over all routes, you want to avoid to load
-     * all routes at once.
-     *
-     * @param int $offset
-     *   The sequence will start with that offset in the list of all routes.
-     * @param int $length [optional]
-     *   The sequence will have that many routes in it. If no length is
-     *   specified all routes are returned.
-     *
-     * @return \Symfony\Component\Routing\Route[]
-     *   Routes keyed by the route name.
-     */
-    public function getRoutesPaged($offset, $length = null);
-
-    /**
-     * Determines the total amount of routes.
-     *
-     * @return int
-     */
-    public function getRoutesCount();
-}
diff --git a/vendor/symfony-cmf/routing/ProviderBasedGenerator.php b/vendor/symfony-cmf/routing/ProviderBasedGenerator.php
deleted file mode 100644
index 2696781..0000000
--- a/vendor/symfony-cmf/routing/ProviderBasedGenerator.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\Routing\Generator\UrlGenerator;
-use Symfony\Component\Routing\Route as SymfonyRoute;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-
-use Psr\Log\LoggerInterface;
-
-/**
- * A Generator that uses a RouteProvider rather than a RouteCollection
- *
- * @author Larry Garfield
- */
-class ProviderBasedGenerator extends UrlGenerator implements VersatileGeneratorInterface
-{
-    /**
-     * The route provider for this generator.
-     *
-     * @var RouteProviderInterface
-     */
-    protected $provider;
-
-    /**
-     * @param RouteProviderInterface $provider
-     * @param LoggerInterface        $logger
-     */
-    public function __construct(RouteProviderInterface $provider, LoggerInterface $logger = null)
-    {
-        $this->provider = $provider;
-        $this->logger = $logger;
-        $this->context = new RequestContext();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function generate($name, $parameters = array(), $absolute = false)
-    {
-        if ($name instanceof SymfonyRoute) {
-            $route = $name;
-        } elseif (null === $route = $this->provider->getRouteByName($name, $parameters)) {
-            throw new RouteNotFoundException(sprintf('Route "%s" does not exist.', $name));
-        }
-
-        // the Route has a cache of its own and is not recompiled as long as it does not get modified
-        $compiledRoute = $route->compile();
-        $hostTokens = $compiledRoute->getHostTokens();
-
-        $debug_message = $this->getRouteDebugMessage($name);
-
-        return $this->doGenerate($compiledRoute->getVariables(), $route->getDefaults(), $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $debug_message, $absolute, $hostTokens);
-    }
-
-    /**
-     * Support a route object and any string as route name
-     *
-     * {@inheritDoc}
-     */
-    public function supports($name)
-    {
-        return is_string($name) || $name instanceof SymfonyRoute;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getRouteDebugMessage($name, array $parameters = array())
-    {
-        if (is_scalar($name)) {
-            return $name;
-        }
-
-        if (is_array($name)) {
-            return serialize($name);
-        }
-
-        if ($name instanceof RouteObjectInterface) {
-            return 'Route with key ' . $name->getRouteKey();
-        }
-
-        if ($name instanceof SymfonyRoute) {
-            return 'Route with pattern ' . $name->getPattern();
-        }
-
-        return get_class($name);
-    }
-
-}
diff --git a/vendor/symfony-cmf/routing/README.md b/vendor/symfony-cmf/routing/README.md
deleted file mode 100644
index 2a18ed1..0000000
--- a/vendor/symfony-cmf/routing/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# Symfony CMF Routing Component
-
-[![Build Status](https://secure.travis-ci.org/symfony-cmf/Routing.png?branch=master)](http://travis-ci.org/symfony-cmf/Routing)
-[![Latest Stable Version](https://poser.pugx.org/symfony-cmf/routing/version.png)](https://packagist.org/packages/symfony-cmf/routing)
-[![Total Downloads](https://poser.pugx.org/symfony-cmf/routing/d/total.png)](https://packagist.org/packages/symfony-cmf/routing)
-
-The Symfony CMF Routing component extends the Symfony2 core routing component.
-It provides:
-
- * A ChainRouter to run several routers in parallel
- * A DynamicRouter that can load routes from any database and can generate
-   additional information in the route match.
-
-Even though it has Symfony in its name, the Routing component does not need the
-full Symfony2 Framework and can be used in standalone projects.
-
-For Symfony 2 projects, an optional
-[RoutingBundle](https://github.com/symfony-cmf/RoutingBundle)
-is also available.
-
-This library is provided by the [Symfony Content Management Framework (CMF) project](http://cmf.symfony.com/)
-and licensed under the [MIT License](LICENSE).
-
-
-## Requirements
-
-* The Symfony Routing component (>= 2.2.0)
-* See also the `require` section of [composer.json](composer.json)
-
-
-## Documentation
-
-For the install guide and reference, see:
-
-* [Routing component documentation](http://symfony.com/doc/master/cmf/components/routing/index.html)
-
-See also:
-
-* [All Symfony CMF documentation](http://symfony.com/doc/master/cmf/index.html) - complete Symfony CMF reference
-* [Symfony CMF Website](http://cmf.symfony.com/) - introduction, live demo, support and community links
-
-
-## Contributing
-
-Pull requests are welcome. Please see our
-[CONTRIBUTING](https://github.com/symfony-cmf/symfony-cmf/blob/master/CONTRIBUTING.md)
-guide.
-
-Unit and/or functional tests exist for this component. See the
-[Testing documentation](http://symfony.com/doc/master/cmf/components/testing.html)
-for a guide to running the tests.
-
-Thanks to
-[everyone who has contributed](https://github.com/symfony-cmf/Routing/contributors) already.
diff --git a/vendor/symfony-cmf/routing/RedirectRouteInterface.php b/vendor/symfony-cmf/routing/RedirectRouteInterface.php
deleted file mode 100644
index daa45d0..0000000
--- a/vendor/symfony-cmf/routing/RedirectRouteInterface.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-/**
- * Document for redirection entries with the RedirectController.
- *
- * Defines additional methods needed by the RedirectController to redirect
- * based on the route.
- *
- * This document may define (in order of precedence - the others can be empty):
- *
- * - uri: an absolute uri
- * - routeName and routeParameters: to be used with the standard symfony router
- *   or a route entry in the routeParameters for the DynamicRouter. Precedency
- *   between these is determined by the order of the routers in the chain
- *   router.
- *
- * With standard Symfony routing, you can just use uri / routeName and a
- * hashmap of parameters.
- *
- * For the dynamic router, you can return a RouteInterface instance in the
- * field 'route' of the parameters.
- *
- * Note: getRedirectContent must return the redirect route itself for the
- * integration with DynamicRouter to work.
- *
- * @author David Buchmann <david@liip.ch>
- */
-interface RedirectRouteInterface extends RouteObjectInterface
-{
-    /**
-     * Get the absolute uri to redirect to external domains.
-     *
-     * If this is non-empty, the other methods won't be used.
-     *
-     * @return string target absolute uri
-     */
-    public function getUri();
-
-    /**
-     * Get the target route document this route redirects to.
-     *
-     * If non-null, it is added as route into the parameters, which will lead
-     * to have the generate call issued by the RedirectController to have
-     * the target route in the parameters.
-     *
-     * @return RouteObjectInterface the route this redirection points to
-     */
-    public function getRouteTarget();
-
-    /**
-     * Get the name of the target route for working with the symfony standard
-     * router.
-     *
-     * @return string target route name
-     */
-    public function getRouteName();
-
-    /**
-     * Whether this should be a permanent or temporary redirect
-     *
-     * @return boolean
-     */
-    public function isPermanent();
-
-    /**
-     * Get the parameters for the target route router::generate()
-     *
-     * Note that for the DynamicRouter, you return the target route
-     * document as field 'route' of the hashmap.
-     *
-     * @return array Information to build the route
-     */
-    public function getParameters();
-}
diff --git a/vendor/symfony-cmf/routing/RouteObjectInterface.php b/vendor/symfony-cmf/routing/RouteObjectInterface.php
deleted file mode 100644
index 2476dee..0000000
--- a/vendor/symfony-cmf/routing/RouteObjectInterface.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-/**
- * Classes for entries in the routing table may implement this interface in
- * addition to extending Symfony\Component\Routing\Route.
- *
- * If they do, the DynamicRouter will request the route content and put it into
- * the RouteObjectInterface::CONTENT_OBJECT field. The DynamicRouter will also
- * request getRouteKey and this will be used instead of the symfony core compatible
- * route name and can contain any characters.
- *
- * Some fields in defaults have a special meaning in the getDefaults(). In addition
- * to the constants defined in this class, _locale and _controller are also used.
- */
-interface RouteObjectInterface
-{
-    /**
-     * Field name that will hold the route name that was matched.
-     */
-    const ROUTE_NAME = '_route';
-
-    /**
-     * Field name of the route object that was matched.
-     */
-    const ROUTE_OBJECT = '_route_object';
-
-    /**
-     * Field name for an explicit controller name to be used with this route
-     */
-    const CONTROLLER_NAME = '_controller';
-
-    /**
-     * Field name for an explicit template to be used with this route.
-     * i.e. CmfContentBundle:StaticContent:index.html.twig
-     */
-    const TEMPLATE_NAME = '_template';
-
-    /**
-     * Field name for the content of the current route, if any.
-     */
-    const CONTENT_OBJECT = '_content';
-
-    /**
-     * Get the content document this route entry stands for. If non-null,
-     * the ControllerClassMapper uses it to identify a controller and
-     * the content is passed to the controller.
-     *
-     * If there is no specific content for this url (i.e. its an "application"
-     * page), may return null.
-     *
-     * @return object the document or entity this route entry points to
-     */
-    public function getContent();
-
-    /**
-     * Get the route key.
-     *
-     * This key will be used as route name instead of the symfony core compatible
-     * route name and can contain any characters.
-     *
-     * Return null if you want to use the default key.
-     *
-     * @return string the route name
-     */
-    public function getRouteKey();
-}
diff --git a/vendor/symfony-cmf/routing/RouteProviderInterface.php b/vendor/symfony-cmf/routing/RouteProviderInterface.php
deleted file mode 100644
index 6283e6f..0000000
--- a/vendor/symfony-cmf/routing/RouteProviderInterface.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * Interface for the route provider the DynamicRouter is using.
- *
- * Typically this could be a doctrine orm or odm repository, but you can
- * implement something else if you need to.
- */
-interface RouteProviderInterface
-{
-    /**
-     * Finds routes that may potentially match the request.
-     *
-     * This may return a mixed list of class instances, but all routes returned
-     * must extend the core symfony route. The classes may also implement
-     * RouteObjectInterface to link to a content document.
-     *
-     * This method may not throw an exception based on implementation specific
-     * restrictions on the url. That case is considered a not found - returning
-     * an empty array. Exceptions are only used to abort the whole request in
-     * case something is seriously broken, like the storage backend being down.
-     *
-     * Note that implementations may not implement an optimal matching
-     * algorithm, simply a reasonable first pass.  That allows for potentially
-     * very large route sets to be filtered down to likely candidates, which
-     * may then be filtered in memory more completely.
-     *
-     * @param Request $request A request against which to match.
-     *
-     * @return RouteCollection with all Routes that could potentially match
-     *                         $request. Empty collection if nothing can match.
-     */
-    public function getRouteCollectionForRequest(Request $request);
-
-    /**
-     * Find the route using the provided route name.
-     *
-     * @param string $name The route name to fetch.
-     *
-     * @return Route
-     *
-     * @throws RouteNotFoundException If there is no route with that name in
-     *                                this repository
-     */
-    public function getRouteByName($name);
-
-    /**
-     * Find many routes by their names using the provided list of names.
-     *
-     * Note that this method may not throw an exception if some of the routes
-     * are not found or are not actually Route instances. It will just return the
-     * list of those Route instances it found.
-     *
-     * This method exists in order to allow performance optimizations. The
-     * simple implementation could be to just repeatedly call
-     * $this->getRouteByName() while catching and ignoring eventual exceptions.
-     *
-     * If $names is null, this method SHOULD return a collection of all routes
-     * known to this provider. If there are many routes to be expected, usage of
-     * a lazy loading collection is recommended. A provider MAY only return a
-     * subset of routes to e.g. support paging or other concepts, but be aware
-     * that the DynamicRouter will only call this method once per
-     * DynamicRouter::getRouteCollection() call.
-     *
-     * @param array|null $names The list of names to retrieve, In case of null,
-     *                          the provider will determine what routes to return.
-     *
-     * @return Route[] Iterable list with the keys being the names from the
- *                     $names array.
-     */
-    public function getRoutesByNames($names);
-}
diff --git a/vendor/symfony-cmf/routing/RouteReferrersInterface.php b/vendor/symfony-cmf/routing/RouteReferrersInterface.php
deleted file mode 100644
index 1c13cb6..0000000
--- a/vendor/symfony-cmf/routing/RouteReferrersInterface.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\Routing\Route;
-
-/**
- * Interface to be implemented by content that exposes editable route
- * referrers.
- */
-interface RouteReferrersInterface extends RouteReferrersReadInterface
-{
-    /**
-     * Add a route to the collection.
-     *
-     * @param Route $route
-     */
-    public function addRoute($route);
-
-    /**
-     * Remove a route from the collection.
-     *
-     * @param Route $route
-     */
-    public function removeRoute($route);
-}
diff --git a/vendor/symfony-cmf/routing/RouteReferrersReadInterface.php b/vendor/symfony-cmf/routing/RouteReferrersReadInterface.php
deleted file mode 100644
index d81b435..0000000
--- a/vendor/symfony-cmf/routing/RouteReferrersReadInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\Routing\Route;
-
-/**
- * Interface to be implemented by content that wants to be support route generation
- * from content with the DynamicRouter by providing the routes that point to it.
- */
-interface RouteReferrersReadInterface
-{
-    /**
-     * Get the routes that point to this content.
-     *
-     * @return Route[] Route instances that point to this content
-     */
-    public function getRoutes();
-}
diff --git a/vendor/symfony-cmf/routing/VersatileGeneratorInterface.php b/vendor/symfony-cmf/routing/VersatileGeneratorInterface.php
deleted file mode 100644
index d58ab7a..0000000
--- a/vendor/symfony-cmf/routing/VersatileGeneratorInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony CMF package.
- *
- * (c) 2011-2014 Symfony CMF
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Cmf\Component\Routing;
-
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-
-/**
- * This generator is able to handle more than string route names as symfony
- * core supports them.
- */
-interface VersatileGeneratorInterface extends UrlGeneratorInterface
-{
-    /**
-     * Whether this generator supports the supplied $name.
-     *
-     * This check does not need to look if the specific instance can be
-     * resolved to a route, only whether the router can generate routes from
-     * objects of this class.
-     *
-     * @param mixed $name The route "name" which may also be an object or anything
-     *
-     * @return bool
-     */
-    public function supports($name);
-
-    /**
-     * Convert a route identifier (name, content object etc) into a string
-     * usable for logging and other debug/error messages
-     *
-     * @param mixed $name
-     * @param array $parameters which should contain a content field containing
-     *                          a RouteReferrersReadInterface object
-     *
-     * @return string
-     */
-    public function getRouteDebugMessage($name, array $parameters = array());
-}
diff --git a/vendor/symfony-cmf/routing/composer.json b/vendor/symfony-cmf/routing/composer.json
deleted file mode 100644
index 8594e38..0000000
--- a/vendor/symfony-cmf/routing/composer.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-    "name": "symfony-cmf/routing",
-    "type": "library",
-    "description": "Extends the Symfony2 routing component for dynamic routes and chaining several routers",
-    "keywords": ["routing", "database"],
-    "homepage": "http://cmf.symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Symfony CMF Community",
-            "homepage": "https://github.com/symfony-cmf/Routing/contributors"
-        }
-    ],
-    "minimum-stability": "dev",
-    "require": {
-        "php": ">=5.3.3",
-        "symfony/routing": "~2.2",
-        "symfony/http-kernel": "~2.2",
-        "psr/log": "~1.0"
-    },
-    "require-dev": {
-        "symfony/dependency-injection": "~2.0@stable",
-        "symfony/config": "~2.2",
-        "symfony/event-dispatcher": "~2.1"
-    },
-    "suggest": {
-        "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version ~2.1"
-    },
-    "autoload": {
-        "psr-4": {
-            "Symfony\\Cmf\\Component\\Routing\\": ""
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.3-dev"
-        }
-    }
-}
diff --git a/vendor/symfony-cmf/routing/phpunit.xml.dist b/vendor/symfony-cmf/routing/phpunit.xml.dist
deleted file mode 100644
index 2564ef1..0000000
--- a/vendor/symfony-cmf/routing/phpunit.xml.dist
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- http://www.phpunit.de/manual/current/en/appendixes.configuration.html -->
-<phpunit
-    colors="true"
-    bootstrap="Tests/bootstrap.php"
->
-
-    <testsuites>
-        <testsuite name="Symfony Cmf Routing Test Suite">
-            <directory>./Tests</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist addUncoveredFilesFromWhitelist="true">
-            <directory>.</directory>
-            <exclude>
-                <directory>Test/</directory>
-                <directory>Tests/</directory>
-                <directory>vendor/</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-
-</phpunit>
diff --git a/vendor/symfony/browser-kit/.gitignore b/vendor/symfony/browser-kit/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/browser-kit/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/browser-kit/CHANGELOG.md b/vendor/symfony/browser-kit/CHANGELOG.md
deleted file mode 100644
index d2b1074..0000000
--- a/vendor/symfony/browser-kit/CHANGELOG.md
+++ /dev/null
@@ -1,18 +0,0 @@
-CHANGELOG
-=========
-
-2.3.0
------
-
- * [BC BREAK] `Client::followRedirect()` won't redirect responses with
-   a non-3xx Status Code and `Location` header anymore, as per 
-   http://tools.ietf.org/html/rfc2616#section-14.30
-
- * added `Client::getInternalRequest()` and `Client::getInternalResponse()` to
-   have access to the BrowserKit internal request and response objects
-
-2.1.0
------
-
- * [BC BREAK] The CookieJar internals have changed to allow cookies with the
-   same name on different sub-domains/sub-paths
diff --git a/vendor/symfony/browser-kit/Client.php b/vendor/symfony/browser-kit/Client.php
deleted file mode 100644
index a7eaed8..0000000
--- a/vendor/symfony/browser-kit/Client.php
+++ /dev/null
@@ -1,578 +0,0 @@
-<?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\BrowserKit;
-
-use Symfony\Component\DomCrawler\Crawler;
-use Symfony\Component\DomCrawler\Link;
-use Symfony\Component\DomCrawler\Form;
-use Symfony\Component\Process\PhpProcess;
-
-/**
- * Client simulates a browser.
- *
- * To make the actual request, you need to implement the doRequest() method.
- *
- * If you want to be able to run requests in their own process (insulated flag),
- * you need to also implement the getScript() method.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Client
-{
-    protected $history;
-    protected $cookieJar;
-    protected $server = array();
-    protected $internalRequest;
-    protected $request;
-    protected $internalResponse;
-    protected $response;
-    protected $crawler;
-    protected $insulated = false;
-    protected $redirect;
-    protected $followRedirects = true;
-
-    private $maxRedirects = -1;
-    private $redirectCount = 0;
-    private $isMainRequest = true;
-
-    /**
-     * Constructor.
-     *
-     * @param array     $server    The server parameters (equivalent of $_SERVER)
-     * @param History   $history   A History instance to store the browser history
-     * @param CookieJar $cookieJar A CookieJar instance to store the cookies
-     */
-    public function __construct(array $server = array(), History $history = null, CookieJar $cookieJar = null)
-    {
-        $this->setServerParameters($server);
-        $this->history = $history ?: new History();
-        $this->cookieJar = $cookieJar ?: new CookieJar();
-    }
-
-    /**
-     * Sets whether to automatically follow redirects or not.
-     *
-     * @param bool $followRedirect Whether to follow redirects
-     */
-    public function followRedirects($followRedirect = true)
-    {
-        $this->followRedirects = (bool) $followRedirect;
-    }
-
-    /**
-     * Sets the maximum number of requests that crawler can follow.
-     *
-     * @param int $maxRedirects
-     */
-    public function setMaxRedirects($maxRedirects)
-    {
-        $this->maxRedirects = $maxRedirects < 0 ? -1 : $maxRedirects;
-        $this->followRedirects = -1 != $this->maxRedirects;
-    }
-
-    /**
-     * Sets the insulated flag.
-     *
-     * @param bool $insulated Whether to insulate the requests or not
-     *
-     * @throws \RuntimeException When Symfony Process Component is not installed
-     */
-    public function insulate($insulated = true)
-    {
-        if ($insulated && !class_exists('Symfony\\Component\\Process\\Process')) {
-            throw new \RuntimeException('Unable to isolate requests as the Symfony Process Component is not installed.');
-        }
-
-        $this->insulated = (bool) $insulated;
-    }
-
-    /**
-     * Sets server parameters.
-     *
-     * @param array $server An array of server parameters
-     */
-    public function setServerParameters(array $server)
-    {
-        $this->server = array_merge(array(
-            'HTTP_HOST' => 'localhost',
-            'HTTP_USER_AGENT' => 'Symfony2 BrowserKit',
-        ), $server);
-    }
-
-    /**
-     * Sets single server parameter.
-     *
-     * @param string $key   A key of the parameter
-     * @param string $value A value of the parameter
-     */
-    public function setServerParameter($key, $value)
-    {
-        $this->server[$key] = $value;
-    }
-
-    /**
-     * Gets single server parameter for specified key.
-     *
-     * @param string $key     A key of the parameter to get
-     * @param string $default A default value when key is undefined
-     *
-     * @return string A value of the parameter
-     */
-    public function getServerParameter($key, $default = '')
-    {
-        return (isset($this->server[$key])) ? $this->server[$key] : $default;
-    }
-
-    /**
-     * Returns the History instance.
-     *
-     * @return History A History instance
-     */
-    public function getHistory()
-    {
-        return $this->history;
-    }
-
-    /**
-     * Returns the CookieJar instance.
-     *
-     * @return CookieJar A CookieJar instance
-     */
-    public function getCookieJar()
-    {
-        return $this->cookieJar;
-    }
-
-    /**
-     * Returns the current Crawler instance.
-     *
-     * @return Crawler|null A Crawler instance
-     */
-    public function getCrawler()
-    {
-        return $this->crawler;
-    }
-
-    /**
-     * Returns the current BrowserKit Response instance.
-     *
-     * @return Response|null A BrowserKit Response instance
-     */
-    public function getInternalResponse()
-    {
-        return $this->internalResponse;
-    }
-
-    /**
-     * Returns the current origin response instance.
-     *
-     * The origin response is the response instance that is returned
-     * by the code that handles requests.
-     *
-     * @return object|null A response instance
-     *
-     * @see doRequest()
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-
-    /**
-     * Returns the current BrowserKit Request instance.
-     *
-     * @return Request|null A BrowserKit Request instance
-     */
-    public function getInternalRequest()
-    {
-        return $this->internalRequest;
-    }
-
-    /**
-     * Returns the current origin Request instance.
-     *
-     * The origin request is the request instance that is sent
-     * to the code that handles requests.
-     *
-     * @return object|null A Request instance
-     *
-     * @see doRequest()
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Clicks on a given link.
-     *
-     * @param Link $link A Link instance
-     *
-     * @return Crawler
-     */
-    public function click(Link $link)
-    {
-        if ($link instanceof Form) {
-            return $this->submit($link);
-        }
-
-        return $this->request($link->getMethod(), $link->getUri());
-    }
-
-    /**
-     * Submits a form.
-     *
-     * @param Form  $form   A Form instance
-     * @param array $values An array of form field values
-     *
-     * @return Crawler
-     */
-    public function submit(Form $form, array $values = array())
-    {
-        $form->setValues($values);
-
-        return $this->request($form->getMethod(), $form->getUri(), $form->getPhpValues(), $form->getPhpFiles());
-    }
-
-    /**
-     * Calls a URI.
-     *
-     * @param string $method        The request method
-     * @param string $uri           The URI to fetch
-     * @param array  $parameters    The Request parameters
-     * @param array  $files         The files
-     * @param array  $server        The server parameters (HTTP headers are referenced with a HTTP_ prefix as PHP does)
-     * @param string $content       The raw body data
-     * @param bool   $changeHistory Whether to update the history or not (only used internally for back(), forward(), and reload())
-     *
-     * @return Crawler
-     */
-    public function request($method, $uri, array $parameters = array(), array $files = array(), array $server = array(), $content = null, $changeHistory = true)
-    {
-        if ($this->isMainRequest) {
-            $this->redirectCount = 0;
-        } else {
-            ++$this->redirectCount;
-        }
-
-        $uri = $this->getAbsoluteUri($uri);
-
-        if (!empty($server['HTTP_HOST'])) {
-            $uri = preg_replace('{^(https?\://)'.preg_quote($this->extractHost($uri)).'}', '${1}'.$server['HTTP_HOST'], $uri);
-        }
-
-        if (isset($server['HTTPS'])) {
-            $uri = preg_replace('{^'.parse_url($uri, PHP_URL_SCHEME).'}', $server['HTTPS'] ? 'https' : 'http', $uri);
-        }
-
-        $server = array_merge($this->server, $server);
-
-        if (!$this->history->isEmpty()) {
-            $server['HTTP_REFERER'] = $this->history->current()->getUri();
-        }
-
-        $server['HTTP_HOST'] = $this->extractHost($uri);
-        $server['HTTPS'] = 'https' == parse_url($uri, PHP_URL_SCHEME);
-
-        $this->internalRequest = new Request($uri, $method, $parameters, $files, $this->cookieJar->allValues($uri), $server, $content);
-
-        $this->request = $this->filterRequest($this->internalRequest);
-
-        if (true === $changeHistory) {
-            $this->history->add($this->internalRequest);
-        }
-
-        if ($this->insulated) {
-            $this->response = $this->doRequestInProcess($this->request);
-        } else {
-            $this->response = $this->doRequest($this->request);
-        }
-
-        $this->internalResponse = $this->filterResponse($this->response);
-
-        $this->cookieJar->updateFromResponse($this->internalResponse, $uri);
-
-        $status = $this->internalResponse->getStatus();
-
-        if ($status >= 300 && $status < 400) {
-            $this->redirect = $this->internalResponse->getHeader('Location');
-        } else {
-            $this->redirect = null;
-        }
-
-        if ($this->followRedirects && $this->redirect) {
-            return $this->crawler = $this->followRedirect();
-        }
-
-        return $this->crawler = $this->createCrawlerFromContent($this->internalRequest->getUri(), $this->internalResponse->getContent(), $this->internalResponse->getHeader('Content-Type'));
-    }
-
-    /**
-     * Makes a request in another process.
-     *
-     * @param object $request An origin request instance
-     *
-     * @return object An origin response instance
-     *
-     * @throws \RuntimeException When processing returns exit code
-     */
-    protected function doRequestInProcess($request)
-    {
-        $process = new PhpProcess($this->getScript($request), null, null);
-        $process->run();
-
-        if (!$process->isSuccessful() || !preg_match('/^O\:\d+\:/', $process->getOutput())) {
-            throw new \RuntimeException(sprintf('OUTPUT: %s ERROR OUTPUT: %s', $process->getOutput(), $process->getErrorOutput()));
-        }
-
-        return unserialize($process->getOutput());
-    }
-
-    /**
-     * Makes a request.
-     *
-     * @param object $request An origin request instance
-     *
-     * @return object An origin response instance
-     */
-    abstract protected function doRequest($request);
-
-    /**
-     * Returns the script to execute when the request must be insulated.
-     *
-     * @param object $request An origin request instance
-     *
-     * @throws \LogicException When this abstract class is not implemented
-     */
-    protected function getScript($request)
-    {
-        throw new \LogicException('To insulate requests, you need to override the getScript() method.');
-    }
-
-    /**
-     * Filters the BrowserKit request to the origin one.
-     *
-     * @param Request $request The BrowserKit Request to filter
-     *
-     * @return object An origin request instance
-     */
-    protected function filterRequest(Request $request)
-    {
-        return $request;
-    }
-
-    /**
-     * Filters the origin response to the BrowserKit one.
-     *
-     * @param object $response The origin response to filter
-     *
-     * @return Response An BrowserKit Response instance
-     */
-    protected function filterResponse($response)
-    {
-        return $response;
-    }
-
-    /**
-     * Creates a crawler.
-     *
-     * This method returns null if the DomCrawler component is not available.
-     *
-     * @param string $uri     A URI
-     * @param string $content Content for the crawler to use
-     * @param string $type    Content type
-     *
-     * @return Crawler|null
-     */
-    protected function createCrawlerFromContent($uri, $content, $type)
-    {
-        if (!class_exists('Symfony\Component\DomCrawler\Crawler')) {
-            return;
-        }
-
-        $crawler = new Crawler(null, $uri);
-        $crawler->addContent($content, $type);
-
-        return $crawler;
-    }
-
-    /**
-     * Goes back in the browser history.
-     *
-     * @return Crawler
-     */
-    public function back()
-    {
-        return $this->requestFromRequest($this->history->back(), false);
-    }
-
-    /**
-     * Goes forward in the browser history.
-     *
-     * @return Crawler
-     */
-    public function forward()
-    {
-        return $this->requestFromRequest($this->history->forward(), false);
-    }
-
-    /**
-     * Reloads the current browser.
-     *
-     * @return Crawler
-     */
-    public function reload()
-    {
-        return $this->requestFromRequest($this->history->current(), false);
-    }
-
-    /**
-     * Follow redirects?
-     *
-     * @return Crawler
-     *
-     * @throws \LogicException If request was not a redirect
-     */
-    public function followRedirect()
-    {
-        if (empty($this->redirect)) {
-            throw new \LogicException('The request was not redirected.');
-        }
-
-        if (-1 !== $this->maxRedirects) {
-            if ($this->redirectCount > $this->maxRedirects) {
-                throw new \LogicException(sprintf('The maximum number (%d) of redirections was reached.', $this->maxRedirects));
-            }
-        }
-
-        $request = $this->internalRequest;
-
-        if (in_array($this->internalResponse->getStatus(), array(302, 303))) {
-            $method = 'get';
-            $files = array();
-            $content = null;
-        } else {
-            $method = $request->getMethod();
-            $files = $request->getFiles();
-            $content = $request->getContent();
-        }
-
-        if ('get' === strtolower($method)) {
-            // Don't forward parameters for GET request as it should reach the redirection URI
-            $parameters = array();
-        } else {
-            $parameters = $request->getParameters();
-        }
-
-        $server = $request->getServer();
-        $server = $this->updateServerFromUri($server, $this->redirect);
-
-        $this->isMainRequest = false;
-
-        $response = $this->request($method, $this->redirect, $parameters, $files, $server, $content);
-
-        $this->isMainRequest = true;
-
-        return $response;
-    }
-
-    /**
-     * Restarts the client.
-     *
-     * It flushes history and all cookies.
-     */
-    public function restart()
-    {
-        $this->cookieJar->clear();
-        $this->history->clear();
-    }
-
-    /**
-     * Takes a URI and converts it to absolute if it is not already absolute.
-     *
-     * @param string $uri A URI
-     *
-     * @return string An absolute URI
-     */
-    protected function getAbsoluteUri($uri)
-    {
-        // already absolute?
-        if (0 === strpos($uri, 'http://') || 0 === strpos($uri, 'https://')) {
-            return $uri;
-        }
-
-        if (!$this->history->isEmpty()) {
-            $currentUri = $this->history->current()->getUri();
-        } else {
-            $currentUri = sprintf('http%s://%s/',
-                isset($this->server['HTTPS']) ? 's' : '',
-                isset($this->server['HTTP_HOST']) ? $this->server['HTTP_HOST'] : 'localhost'
-            );
-        }
-
-        // protocol relative URL
-        if (0 === strpos($uri, '//')) {
-            return parse_url($currentUri, PHP_URL_SCHEME).':'.$uri;
-        }
-
-        // anchor?
-        if (!$uri || '#' == $uri[0]) {
-            return preg_replace('/#.*?$/', '', $currentUri).$uri;
-        }
-
-        if ('/' !== $uri[0]) {
-            $path = parse_url($currentUri, PHP_URL_PATH);
-
-            if ('/' !== substr($path, -1)) {
-                $path = substr($path, 0, strrpos($path, '/') + 1);
-            }
-
-            $uri = $path.$uri;
-        }
-
-        return preg_replace('#^(.*?//[^/]+)\/.*$#', '$1', $currentUri).$uri;
-    }
-
-    /**
-     * Makes a request from a Request object directly.
-     *
-     * @param Request $request       A Request instance
-     * @param bool    $changeHistory Whether to update the history or not (only used internally for back(), forward(), and reload())
-     *
-     * @return Crawler
-     */
-    protected function requestFromRequest(Request $request, $changeHistory = true)
-    {
-        return $this->request($request->getMethod(), $request->getUri(), $request->getParameters(), $request->getFiles(), $request->getServer(), $request->getContent(), $changeHistory);
-    }
-
-    private function updateServerFromUri($server, $uri)
-    {
-        $server['HTTP_HOST'] = $this->extractHost($uri);
-        $scheme = parse_url($uri, PHP_URL_SCHEME);
-        $server['HTTPS'] = null === $scheme ? $server['HTTPS'] : 'https' == $scheme;
-        unset($server['HTTP_IF_NONE_MATCH'], $server['HTTP_IF_MODIFIED_SINCE']);
-
-        return $server;
-    }
-
-    private function extractHost($uri)
-    {
-        $host = parse_url($uri, PHP_URL_HOST);
-
-        if ($port = parse_url($uri, PHP_URL_PORT)) {
-            return $host.':'.$port;
-        }
-
-        return $host;
-    }
-}
diff --git a/vendor/symfony/browser-kit/Cookie.php b/vendor/symfony/browser-kit/Cookie.php
deleted file mode 100644
index 604d12d..0000000
--- a/vendor/symfony/browser-kit/Cookie.php
+++ /dev/null
@@ -1,309 +0,0 @@
-<?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\BrowserKit;
-
-/**
- * Cookie represents an HTTP cookie.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Cookie
-{
-    /**
-     * Handles dates as defined by RFC 2616 section 3.3.1, and also some other
-     * non-standard, but common formats.
-     *
-     * @var array
-     */
-    private static $dateFormats = array(
-        'D, d M Y H:i:s T',
-        'D, d-M-y H:i:s T',
-        'D, d-M-Y H:i:s T',
-        'D, d-m-y H:i:s T',
-        'D, d-m-Y H:i:s T',
-        'D M j G:i:s Y',
-        'D M d H:i:s Y T',
-    );
-
-    protected $name;
-    protected $value;
-    protected $expires;
-    protected $path;
-    protected $domain;
-    protected $secure;
-    protected $httponly;
-    protected $rawValue;
-
-    /**
-     * Sets a cookie.
-     *
-     * @param string $name         The cookie name
-     * @param string $value        The value of the cookie
-     * @param string $expires      The time the cookie expires
-     * @param string $path         The path on the server in which the cookie will be available on
-     * @param string $domain       The domain that the cookie is available
-     * @param bool   $secure       Indicates that the cookie should only be transmitted over a secure HTTPS connection from the client
-     * @param bool   $httponly     The cookie httponly flag
-     * @param bool   $encodedValue Whether the value is encoded or not
-     */
-    public function __construct($name, $value, $expires = null, $path = null, $domain = '', $secure = false, $httponly = true, $encodedValue = false)
-    {
-        if ($encodedValue) {
-            $this->value = urldecode($value);
-            $this->rawValue = $value;
-        } else {
-            $this->value = $value;
-            $this->rawValue = urlencode($value);
-        }
-        $this->name = $name;
-        $this->path = empty($path) ? '/' : $path;
-        $this->domain = $domain;
-        $this->secure = (bool) $secure;
-        $this->httponly = (bool) $httponly;
-
-        if (null !== $expires) {
-            $timestampAsDateTime = \DateTime::createFromFormat('U', $expires);
-            if (false === $timestampAsDateTime) {
-                throw new \UnexpectedValueException(sprintf('The cookie expiration time "%s" is not valid.', $expires));
-            }
-
-            $this->expires = $timestampAsDateTime->getTimestamp();
-        }
-    }
-
-    /**
-     * Returns the HTTP representation of the Cookie.
-     *
-     * @return string The HTTP representation of the Cookie
-     *
-     * @throws \UnexpectedValueException
-     */
-    public function __toString()
-    {
-        $cookie = sprintf('%s=%s', $this->name, $this->rawValue);
-
-        if (null !== $this->expires) {
-            $dateTime = \DateTime::createFromFormat('U', $this->expires, new \DateTimeZone('GMT'));
-            $cookie .= '; expires='.str_replace('+0000', '', $dateTime->format(self::$dateFormats[0]));
-        }
-
-        if ('' !== $this->domain) {
-            $cookie .= '; domain='.$this->domain;
-        }
-
-        if ($this->path) {
-            $cookie .= '; path='.$this->path;
-        }
-
-        if ($this->secure) {
-            $cookie .= '; secure';
-        }
-
-        if ($this->httponly) {
-            $cookie .= '; httponly';
-        }
-
-        return $cookie;
-    }
-
-    /**
-     * Creates a Cookie instance from a Set-Cookie header value.
-     *
-     * @param string $cookie A Set-Cookie header value
-     * @param string $url    The base URL
-     *
-     * @return Cookie A Cookie instance
-     *
-     * @throws \InvalidArgumentException
-     */
-    public static function fromString($cookie, $url = null)
-    {
-        $parts = explode(';', $cookie);
-
-        if (false === strpos($parts[0], '=')) {
-            throw new \InvalidArgumentException(sprintf('The cookie string "%s" is not valid.', $parts[0]));
-        }
-
-        list($name, $value) = explode('=', array_shift($parts), 2);
-
-        $values = array(
-            'name' => trim($name),
-            'value' => trim($value),
-            'expires' => null,
-            'path' => '/',
-            'domain' => '',
-            'secure' => false,
-            'httponly' => false,
-            'passedRawValue' => true,
-        );
-
-        if (null !== $url) {
-            if ((false === $urlParts = parse_url($url)) || !isset($urlParts['host'])) {
-                throw new \InvalidArgumentException(sprintf('The URL "%s" is not valid.', $url));
-            }
-
-            $values['domain'] = $urlParts['host'];
-            $values['path'] = isset($urlParts['path']) ? substr($urlParts['path'], 0, strrpos($urlParts['path'], '/')) : '';
-        }
-
-        foreach ($parts as $part) {
-            $part = trim($part);
-
-            if ('secure' === strtolower($part)) {
-                // Ignore the secure flag if the original URI is not given or is not HTTPS
-                if (!$url || !isset($urlParts['scheme']) || 'https' != $urlParts['scheme']) {
-                    continue;
-                }
-
-                $values['secure'] = true;
-
-                continue;
-            }
-
-            if ('httponly' === strtolower($part)) {
-                $values['httponly'] = true;
-
-                continue;
-            }
-
-            if (2 === count($elements = explode('=', $part, 2))) {
-                if ('expires' === strtolower($elements[0])) {
-                    $elements[1] = self::parseDate($elements[1]);
-                }
-
-                $values[strtolower($elements[0])] = $elements[1];
-            }
-        }
-
-        return new static(
-            $values['name'],
-            $values['value'],
-            $values['expires'],
-            $values['path'],
-            $values['domain'],
-            $values['secure'],
-            $values['httponly'],
-            $values['passedRawValue']
-        );
-    }
-
-    private static function parseDate($dateValue)
-    {
-        // trim single quotes around date if present
-        if (($length = strlen($dateValue)) > 1 && "'" === $dateValue[0] && "'" === $dateValue[$length - 1]) {
-            $dateValue = substr($dateValue, 1, -1);
-        }
-
-        foreach (self::$dateFormats as $dateFormat) {
-            if (false !== $date = \DateTime::createFromFormat($dateFormat, $dateValue, new \DateTimeZone('GMT'))) {
-                return $date->getTimestamp();
-            }
-        }
-
-        // attempt a fallback for unusual formatting
-        if (false !== $date = date_create($dateValue, new \DateTimeZone('GMT'))) {
-            return $date->getTimestamp();
-        }
-
-        throw new \InvalidArgumentException(sprintf('Could not parse date "%s".', $dateValue));
-    }
-
-    /**
-     * Gets the name of the cookie.
-     *
-     * @return string The cookie name
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Gets the value of the cookie.
-     *
-     * @return string The cookie value
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Gets the raw value of the cookie.
-     *
-     * @return string The cookie value
-     */
-    public function getRawValue()
-    {
-        return $this->rawValue;
-    }
-
-    /**
-     * Gets the expires time of the cookie.
-     *
-     * @return string The cookie expires time
-     */
-    public function getExpiresTime()
-    {
-        return $this->expires;
-    }
-
-    /**
-     * Gets the path of the cookie.
-     *
-     * @return string The cookie path
-     */
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    /**
-     * Gets the domain of the cookie.
-     *
-     * @return string The cookie domain
-     */
-    public function getDomain()
-    {
-        return $this->domain;
-    }
-
-    /**
-     * Returns the secure flag of the cookie.
-     *
-     * @return bool The cookie secure flag
-     */
-    public function isSecure()
-    {
-        return $this->secure;
-    }
-
-    /**
-     * Returns the httponly flag of the cookie.
-     *
-     * @return bool The cookie httponly flag
-     */
-    public function isHttpOnly()
-    {
-        return $this->httponly;
-    }
-
-    /**
-     * Returns true if the cookie has expired.
-     *
-     * @return bool true if the cookie has expired, false otherwise
-     */
-    public function isExpired()
-    {
-        return null !== $this->expires && 0 !== $this->expires && $this->expires < time();
-    }
-}
diff --git a/vendor/symfony/browser-kit/CookieJar.php b/vendor/symfony/browser-kit/CookieJar.php
deleted file mode 100644
index 4b9661b..0000000
--- a/vendor/symfony/browser-kit/CookieJar.php
+++ /dev/null
@@ -1,255 +0,0 @@
-<?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\BrowserKit;
-
-/**
- * CookieJar.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CookieJar
-{
-    protected $cookieJar = array();
-
-    /**
-     * Sets a cookie.
-     *
-     * @param Cookie $cookie A Cookie instance
-     */
-    public function set(Cookie $cookie)
-    {
-        $this->cookieJar[$cookie->getDomain()][$cookie->getPath()][$cookie->getName()] = $cookie;
-    }
-
-    /**
-     * Gets a cookie by name.
-     *
-     * You should never use an empty domain, but if you do so,
-     * this method returns the first cookie for the given name/path
-     * (this behavior ensures a BC behavior with previous versions of
-     * Symfony).
-     *
-     * @param string $name   The cookie name
-     * @param string $path   The cookie path
-     * @param string $domain The cookie domain
-     *
-     * @return Cookie|null A Cookie instance or null if the cookie does not exist
-     */
-    public function get($name, $path = '/', $domain = null)
-    {
-        $this->flushExpiredCookies();
-
-        if (!empty($domain)) {
-            foreach ($this->cookieJar as $cookieDomain => $pathCookies) {
-                if ($cookieDomain) {
-                    $cookieDomain = '.'.ltrim($cookieDomain, '.');
-                    if ($cookieDomain != substr('.'.$domain, -strlen($cookieDomain))) {
-                        continue;
-                    }
-                }
-
-                foreach ($pathCookies as $cookiePath => $namedCookies) {
-                    if ($cookiePath != substr($path, 0, strlen($cookiePath))) {
-                        continue;
-                    }
-                    if (isset($namedCookies[$name])) {
-                        return $namedCookies[$name];
-                    }
-                }
-            }
-
-            return;
-        }
-
-        // avoid relying on this behavior that is mainly here for BC reasons
-        foreach ($this->cookieJar as $cookies) {
-            if (isset($cookies[$path][$name])) {
-                return $cookies[$path][$name];
-            }
-        }
-    }
-
-    /**
-     * Removes a cookie by name.
-     *
-     * You should never use an empty domain, but if you do so,
-     * all cookies for the given name/path expire (this behavior
-     * ensures a BC behavior with previous versions of Symfony).
-     *
-     * @param string $name   The cookie name
-     * @param string $path   The cookie path
-     * @param string $domain The cookie domain
-     */
-    public function expire($name, $path = '/', $domain = null)
-    {
-        if (null === $path) {
-            $path = '/';
-        }
-
-        if (empty($domain)) {
-            // an empty domain means any domain
-            // this should never happen but it allows for a better BC
-            $domains = array_keys($this->cookieJar);
-        } else {
-            $domains = array($domain);
-        }
-
-        foreach ($domains as $domain) {
-            unset($this->cookieJar[$domain][$path][$name]);
-
-            if (empty($this->cookieJar[$domain][$path])) {
-                unset($this->cookieJar[$domain][$path]);
-
-                if (empty($this->cookieJar[$domain])) {
-                    unset($this->cookieJar[$domain]);
-                }
-            }
-        }
-    }
-
-    /**
-     * Removes all the cookies from the jar.
-     */
-    public function clear()
-    {
-        $this->cookieJar = array();
-    }
-
-    /**
-     * Updates the cookie jar from a response Set-Cookie headers.
-     *
-     * @param array  $setCookies Set-Cookie headers from an HTTP response
-     * @param string $uri        The base URL
-     */
-    public function updateFromSetCookie(array $setCookies, $uri = null)
-    {
-        $cookies = array();
-
-        foreach ($setCookies as $cookie) {
-            foreach (explode(',', $cookie) as $i => $part) {
-                if (0 === $i || preg_match('/^(?P<token>\s*[0-9A-Za-z!#\$%\&\'\*\+\-\.^_`\|~]+)=/', $part)) {
-                    $cookies[] = ltrim($part);
-                } else {
-                    $cookies[count($cookies) - 1] .= ','.$part;
-                }
-            }
-        }
-
-        foreach ($cookies as $cookie) {
-            try {
-                $this->set(Cookie::fromString($cookie, $uri));
-            } catch (\InvalidArgumentException $e) {
-                // invalid cookies are just ignored
-            }
-        }
-    }
-
-    /**
-     * Updates the cookie jar from a Response object.
-     *
-     * @param Response $response A Response object
-     * @param string   $uri      The base URL
-     */
-    public function updateFromResponse(Response $response, $uri = null)
-    {
-        $this->updateFromSetCookie($response->getHeader('Set-Cookie', false), $uri);
-    }
-
-    /**
-     * Returns not yet expired cookies.
-     *
-     * @return Cookie[] An array of cookies
-     */
-    public function all()
-    {
-        $this->flushExpiredCookies();
-
-        $flattenedCookies = array();
-        foreach ($this->cookieJar as $path) {
-            foreach ($path as $cookies) {
-                foreach ($cookies as $cookie) {
-                    $flattenedCookies[] = $cookie;
-                }
-            }
-        }
-
-        return $flattenedCookies;
-    }
-
-    /**
-     * Returns not yet expired cookie values for the given URI.
-     *
-     * @param string $uri             A URI
-     * @param bool   $returnsRawValue Returns raw value or urldecoded value
-     *
-     * @return array An array of cookie values
-     */
-    public function allValues($uri, $returnsRawValue = false)
-    {
-        $this->flushExpiredCookies();
-
-        $parts = array_replace(array('path' => '/'), parse_url($uri));
-        $cookies = array();
-        foreach ($this->cookieJar as $domain => $pathCookies) {
-            if ($domain) {
-                $domain = '.'.ltrim($domain, '.');
-                if ($domain != substr('.'.$parts['host'], -strlen($domain))) {
-                    continue;
-                }
-            }
-
-            foreach ($pathCookies as $path => $namedCookies) {
-                if ($path != substr($parts['path'], 0, strlen($path))) {
-                    continue;
-                }
-
-                foreach ($namedCookies as $cookie) {
-                    if ($cookie->isSecure() && 'https' != $parts['scheme']) {
-                        continue;
-                    }
-
-                    $cookies[$cookie->getName()] = $returnsRawValue ? $cookie->getRawValue() : $cookie->getValue();
-                }
-            }
-        }
-
-        return $cookies;
-    }
-
-    /**
-     * Returns not yet expired raw cookie values for the given URI.
-     *
-     * @param string $uri A URI
-     *
-     * @return array An array of cookie values
-     */
-    public function allRawValues($uri)
-    {
-        return $this->allValues($uri, true);
-    }
-
-    /**
-     * Removes all expired cookies.
-     */
-    public function flushExpiredCookies()
-    {
-        foreach ($this->cookieJar as $domain => $pathCookies) {
-            foreach ($pathCookies as $path => $namedCookies) {
-                foreach ($namedCookies as $name => $cookie) {
-                    if ($cookie->isExpired()) {
-                        unset($this->cookieJar[$domain][$path][$name]);
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/browser-kit/History.php b/vendor/symfony/browser-kit/History.php
deleted file mode 100644
index 8e38fe5..0000000
--- a/vendor/symfony/browser-kit/History.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?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\BrowserKit;
-
-/**
- * History.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class History
-{
-    protected $stack = array();
-    protected $position = -1;
-
-    /**
-     * Clears the history.
-     */
-    public function clear()
-    {
-        $this->stack = array();
-        $this->position = -1;
-    }
-
-    /**
-     * Adds a Request to the history.
-     *
-     * @param Request $request A Request instance
-     */
-    public function add(Request $request)
-    {
-        $this->stack = array_slice($this->stack, 0, $this->position + 1);
-        $this->stack[] = clone $request;
-        $this->position = count($this->stack) - 1;
-    }
-
-    /**
-     * Returns true if the history is empty.
-     *
-     * @return bool true if the history is empty, false otherwise
-     */
-    public function isEmpty()
-    {
-        return count($this->stack) == 0;
-    }
-
-    /**
-     * Goes back in the history.
-     *
-     * @return Request A Request instance
-     *
-     * @throws \LogicException if the stack is already on the first page
-     */
-    public function back()
-    {
-        if ($this->position < 1) {
-            throw new \LogicException('You are already on the first page.');
-        }
-
-        return clone $this->stack[--$this->position];
-    }
-
-    /**
-     * Goes forward in the history.
-     *
-     * @return Request A Request instance
-     *
-     * @throws \LogicException if the stack is already on the last page
-     */
-    public function forward()
-    {
-        if ($this->position > count($this->stack) - 2) {
-            throw new \LogicException('You are already on the last page.');
-        }
-
-        return clone $this->stack[++$this->position];
-    }
-
-    /**
-     * Returns the current element in the history.
-     *
-     * @return Request A Request instance
-     *
-     * @throws \LogicException if the stack is empty
-     */
-    public function current()
-    {
-        if (-1 == $this->position) {
-            throw new \LogicException('The page history is empty.');
-        }
-
-        return clone $this->stack[$this->position];
-    }
-}
diff --git a/vendor/symfony/browser-kit/LICENSE b/vendor/symfony/browser-kit/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/browser-kit/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/browser-kit/README.md b/vendor/symfony/browser-kit/README.md
deleted file mode 100644
index 5600fe2..0000000
--- a/vendor/symfony/browser-kit/README.md
+++ /dev/null
@@ -1,23 +0,0 @@
-BrowserKit Component
-====================
-
-BrowserKit simulates the behavior of a web browser.
-
-The component only provides an abstract client and does not provide any
-"default" backend for the HTTP layer.
-
-Resources
----------
-
-For a simple implementation of a browser based on an HTTP layer, have a look
-at [Goutte](https://github.com/FriendsOfPHP/Goutte).
-
-For an implementation based on HttpKernelInterface, have a look at the
-[Client](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpKernel/Client.php)
-provided by the HttpKernel component.
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/BrowserKit/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/browser-kit/Request.php b/vendor/symfony/browser-kit/Request.php
deleted file mode 100644
index c79b341..0000000
--- a/vendor/symfony/browser-kit/Request.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?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\BrowserKit;
-
-/**
- * Request object.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Request
-{
-    protected $uri;
-    protected $method;
-    protected $parameters;
-    protected $files;
-    protected $cookies;
-    protected $server;
-    protected $content;
-
-    /**
-     * Constructor.
-     *
-     * @param string $uri        The request URI
-     * @param string $method     The HTTP method request
-     * @param array  $parameters The request parameters
-     * @param array  $files      An array of uploaded files
-     * @param array  $cookies    An array of cookies
-     * @param array  $server     An array of server parameters
-     * @param string $content    The raw body data
-     */
-    public function __construct($uri, $method, array $parameters = array(), array $files = array(), array $cookies = array(), array $server = array(), $content = null)
-    {
-        $this->uri = $uri;
-        $this->method = $method;
-        $this->parameters = $parameters;
-        $this->files = $files;
-        $this->cookies = $cookies;
-        $this->server = $server;
-        $this->content = $content;
-    }
-
-    /**
-     * Gets the request URI.
-     *
-     * @return string The request URI
-     */
-    public function getUri()
-    {
-        return $this->uri;
-    }
-
-    /**
-     * Gets the request HTTP method.
-     *
-     * @return string The request HTTP method
-     */
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    /**
-     * Gets the request parameters.
-     *
-     * @return array The request parameters
-     */
-    public function getParameters()
-    {
-        return $this->parameters;
-    }
-
-    /**
-     * Gets the request server files.
-     *
-     * @return array The request files
-     */
-    public function getFiles()
-    {
-        return $this->files;
-    }
-
-    /**
-     * Gets the request cookies.
-     *
-     * @return array The request cookies
-     */
-    public function getCookies()
-    {
-        return $this->cookies;
-    }
-
-    /**
-     * Gets the request server parameters.
-     *
-     * @return array The request server parameters
-     */
-    public function getServer()
-    {
-        return $this->server;
-    }
-
-    /**
-     * Gets the request raw body data.
-     *
-     * @return string The request raw body data.
-     */
-    public function getContent()
-    {
-        return $this->content;
-    }
-}
diff --git a/vendor/symfony/browser-kit/Response.php b/vendor/symfony/browser-kit/Response.php
deleted file mode 100644
index 984442f..0000000
--- a/vendor/symfony/browser-kit/Response.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?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\BrowserKit;
-
-/**
- * Response object.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Response
-{
-    protected $content;
-    protected $status;
-    protected $headers;
-
-    /**
-     * Constructor.
-     *
-     * The headers array is a set of key/value pairs. If a header is present multiple times
-     * then the value is an array of all the values.
-     *
-     * @param string $content The content of the response
-     * @param int    $status  The response status code
-     * @param array  $headers An array of headers
-     */
-    public function __construct($content = '', $status = 200, array $headers = array())
-    {
-        $this->content = $content;
-        $this->status = $status;
-        $this->headers = $headers;
-    }
-
-    /**
-     * Converts the response object to string containing all headers and the response content.
-     *
-     * @return string The response with headers and content
-     */
-    public function __toString()
-    {
-        $headers = '';
-        foreach ($this->headers as $name => $value) {
-            if (is_string($value)) {
-                $headers .= $this->buildHeader($name, $value);
-            } else {
-                foreach ($value as $headerValue) {
-                    $headers .= $this->buildHeader($name, $headerValue);
-                }
-            }
-        }
-
-        return $headers."\n".$this->content;
-    }
-
-    /**
-     * Returns the build header line.
-     *
-     * @param string $name  The header name
-     * @param string $value The header value
-     *
-     * @return string The built header line
-     */
-    protected function buildHeader($name, $value)
-    {
-        return sprintf("%s: %s\n", $name, $value);
-    }
-
-    /**
-     * Gets the response content.
-     *
-     * @return string The response content
-     */
-    public function getContent()
-    {
-        return $this->content;
-    }
-
-    /**
-     * Gets the response status code.
-     *
-     * @return int The response status code
-     */
-    public function getStatus()
-    {
-        return $this->status;
-    }
-
-    /**
-     * Gets the response headers.
-     *
-     * @return array The response headers
-     */
-    public function getHeaders()
-    {
-        return $this->headers;
-    }
-
-    /**
-     * Gets a response header.
-     *
-     * @param string $header The header name
-     * @param bool   $first  Whether to return the first value or all header values
-     *
-     * @return string|array The first header value if $first is true, an array of values otherwise
-     */
-    public function getHeader($header, $first = true)
-    {
-        $normalizedHeader = str_replace('-', '_', strtolower($header));
-        foreach ($this->headers as $key => $value) {
-            if (str_replace('-', '_', strtolower($key)) === $normalizedHeader) {
-                if ($first) {
-                    return is_array($value) ? (count($value) ? $value[0] : '') : $value;
-                }
-
-                return is_array($value) ? $value : array($value);
-            }
-        }
-
-        return $first ? null : array();
-    }
-}
diff --git a/vendor/symfony/browser-kit/composer.json b/vendor/symfony/browser-kit/composer.json
deleted file mode 100644
index 2313c73..0000000
--- a/vendor/symfony/browser-kit/composer.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "name": "symfony/browser-kit",
-    "type": "library",
-    "description": "Symfony BrowserKit Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9",
-        "symfony/dom-crawler": "~2.0,>=2.0.5"
-    },
-    "require-dev": {
-        "symfony/process": "~2.3.34|~2.7,>=2.7.6",
-        "symfony/css-selector": "~2.0,>=2.0.5"
-    },
-    "suggest": {
-        "symfony/process": ""
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\BrowserKit\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/browser-kit/phpunit.xml.dist b/vendor/symfony/browser-kit/phpunit.xml.dist
deleted file mode 100644
index d76b2b9..0000000
--- a/vendor/symfony/browser-kit/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony BrowserKit Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/class-loader/.gitignore b/vendor/symfony/class-loader/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/class-loader/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/class-loader/ApcClassLoader.php b/vendor/symfony/class-loader/ApcClassLoader.php
deleted file mode 100644
index 9170929..0000000
--- a/vendor/symfony/class-loader/ApcClassLoader.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?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\ClassLoader;
-
-/**
- * ApcClassLoader implements a wrapping autoloader cached in APC for PHP 5.3.
- *
- * It expects an object implementing a findFile method to find the file. This
- * allows using it as a wrapper around the other loaders of the component (the
- * ClassLoader and the UniversalClassLoader for instance) but also around any
- * other autoloaders following this convention (the Composer one for instance).
- *
- *     // with a Symfony autoloader
- *     use Symfony\Component\ClassLoader\ClassLoader;
- *
- *     $loader = new ClassLoader();
- *     $loader->addPrefix('Symfony\Component', __DIR__.'/component');
- *     $loader->addPrefix('Symfony',           __DIR__.'/framework');
- *
- *     // or with a Composer autoloader
- *     use Composer\Autoload\ClassLoader;
- *
- *     $loader = new ClassLoader();
- *     $loader->add('Symfony\Component', __DIR__.'/component');
- *     $loader->add('Symfony',           __DIR__.'/framework');
- *
- *     $cachedLoader = new ApcClassLoader('my_prefix', $loader);
- *
- *     // activate the cached autoloader
- *     $cachedLoader->register();
- *
- *     // eventually deactivate the non-cached loader if it was registered previously
- *     // to be sure to use the cached one.
- *     $loader->unregister();
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class ApcClassLoader
-{
-    private $prefix;
-
-    /**
-     * A class loader object that implements the findFile() method.
-     *
-     * @var object
-     */
-    protected $decorated;
-
-    /**
-     * Constructor.
-     *
-     * @param string $prefix    The APC namespace prefix to use.
-     * @param object $decorated A class loader object that implements the findFile() method.
-     *
-     * @throws \RuntimeException
-     * @throws \InvalidArgumentException
-     */
-    public function __construct($prefix, $decorated)
-    {
-        if (!extension_loaded('apc')) {
-            throw new \RuntimeException('Unable to use ApcClassLoader as APC is not enabled.');
-        }
-
-        if (!method_exists($decorated, 'findFile')) {
-            throw new \InvalidArgumentException('The class finder must implement a "findFile" method.');
-        }
-
-        $this->prefix = $prefix;
-        $this->decorated = $decorated;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param bool $prepend Whether to prepend the autoloader or not
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Unregisters this instance as an autoloader.
-     */
-    public function unregister()
-    {
-        spl_autoload_unregister(array($this, 'loadClass'));
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     *
-     * @return bool|null True, if loaded
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            require $file;
-
-            return true;
-        }
-    }
-
-    /**
-     * Finds a file by class name while caching lookups to APC.
-     *
-     * @param string $class A class name to resolve to file
-     *
-     * @return string|null
-     */
-    public function findFile($class)
-    {
-        if (false === $file = apc_fetch($this->prefix.$class)) {
-            apc_store($this->prefix.$class, $file = $this->decorated->findFile($class));
-        }
-
-        return $file;
-    }
-
-    /**
-     * Passes through all unknown calls onto the decorated object.
-     */
-    public function __call($method, $args)
-    {
-        return call_user_func_array(array($this->decorated, $method), $args);
-    }
-}
diff --git a/vendor/symfony/class-loader/ApcUniversalClassLoader.php b/vendor/symfony/class-loader/ApcUniversalClassLoader.php
deleted file mode 100644
index ce73559..0000000
--- a/vendor/symfony/class-loader/ApcUniversalClassLoader.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?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\ClassLoader;
-
-@trigger_error('The '.__NAMESPACE__.'\ApcUniversalClassLoader class is deprecated since version 2.7 and will be removed in 3.0. Use the Symfony\Component\ClassLoader\ApcClassLoader class instead.', E_USER_DEPRECATED);
-
-/**
- * ApcUniversalClassLoader implements a "universal" autoloader cached in APC for PHP 5.3.
- *
- * It is able to load classes that use either:
- *
- *  * The technical interoperability standards for PHP 5.3 namespaces and
- *    class names (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md);
- *
- *  * The PEAR naming convention for classes (http://pear.php.net/).
- *
- * Classes from a sub-namespace or a sub-hierarchy of PEAR classes can be
- * looked for in a list of locations to ease the vendoring of a sub-set of
- * classes for large projects.
- *
- * Example usage:
- *
- *     require 'vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php';
- *     require 'vendor/symfony/src/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php';
- *
- *     use Symfony\Component\ClassLoader\ApcUniversalClassLoader;
- *
- *     $loader = new ApcUniversalClassLoader('apc.prefix.');
- *
- *     // register classes with namespaces
- *     $loader->registerNamespaces(array(
- *         'Symfony\Component' => __DIR__.'/component',
- *         'Symfony' => __DIR__.'/framework',
- *         'Sensio' => array(__DIR__.'/src', __DIR__.'/vendor'),
- *     ));
- *
- *     // register a library using the PEAR naming convention
- *     $loader->registerPrefixes(array(
- *         'Swift_' => __DIR__.'/Swift',
- *     ));
- *
- *     // activate the autoloader
- *     $loader->register();
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Kris Wallsmith <kris@symfony.com>
- *
- * @deprecated since version 2.4, to be removed in 3.0.
- *             Use the {@link ClassLoader} class instead.
- */
-class ApcUniversalClassLoader extends UniversalClassLoader
-{
-    private $prefix;
-
-    /**
-     * Constructor.
-     *
-     * @param string $prefix A prefix to create a namespace in APC
-     *
-     * @throws \RuntimeException
-     */
-    public function __construct($prefix)
-    {
-        if (!extension_loaded('apc')) {
-            throw new \RuntimeException('Unable to use ApcUniversalClassLoader as APC is not enabled.');
-        }
-
-        $this->prefix = $prefix;
-    }
-
-    /**
-     * Finds a file by class name while caching lookups to APC.
-     *
-     * @param string $class A class name to resolve to file
-     *
-     * @return string|null The path, if found
-     */
-    public function findFile($class)
-    {
-        if (false === $file = apc_fetch($this->prefix.$class)) {
-            apc_store($this->prefix.$class, $file = parent::findFile($class));
-        }
-
-        return $file;
-    }
-}
diff --git a/vendor/symfony/class-loader/CHANGELOG.md b/vendor/symfony/class-loader/CHANGELOG.md
deleted file mode 100644
index 64660a8..0000000
--- a/vendor/symfony/class-loader/CHANGELOG.md
+++ /dev/null
@@ -1,28 +0,0 @@
-CHANGELOG
-=========
-
-2.4.0
------
-
- * deprecated the UniversalClassLoader in favor of the ClassLoader class instead
- * deprecated the ApcUniversalClassLoader in favor of the ApcClassLoader class instead
- * deprecated the DebugUniversalClassLoader in favor of the DebugClassLoader class from the Debug component
- * deprecated the DebugClassLoader as it has been moved to the Debug component instead
-
-2.3.0
------
-
- * added a WinCacheClassLoader for WinCache
-
-2.1.0
------
-
- * added a DebugClassLoader able to wrap any autoloader providing a findFile
-   method
- * added a new ApcClassLoader and XcacheClassLoader using composition to wrap
-   other loaders
- * added a new ClassLoader which does not distinguish between namespaced and
-   pear-like classes (as the PEAR convention is a subset of PSR-0) and
-   supports using Composer's namespace maps
- * added a class map generator
- * added support for loading globally-installed PEAR packages
diff --git a/vendor/symfony/class-loader/ClassCollectionLoader.php b/vendor/symfony/class-loader/ClassCollectionLoader.php
deleted file mode 100644
index c7dc3ae..0000000
--- a/vendor/symfony/class-loader/ClassCollectionLoader.php
+++ /dev/null
@@ -1,370 +0,0 @@
-<?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\ClassLoader;
-
-/**
- * ClassCollectionLoader.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ClassCollectionLoader
-{
-    private static $loaded;
-    private static $seen;
-    private static $useTokenizer = true;
-
-    /**
-     * Loads a list of classes and caches them in one big file.
-     *
-     * @param array  $classes    An array of classes to load
-     * @param string $cacheDir   A cache directory
-     * @param string $name       The cache name prefix
-     * @param bool   $autoReload Whether to flush the cache when the cache is stale or not
-     * @param bool   $adaptive   Whether to remove already declared classes or not
-     * @param string $extension  File extension of the resulting file
-     *
-     * @throws \InvalidArgumentException When class can't be loaded
-     */
-    public static function load($classes, $cacheDir, $name, $autoReload, $adaptive = false, $extension = '.php')
-    {
-        // each $name can only be loaded once per PHP process
-        if (isset(self::$loaded[$name])) {
-            return;
-        }
-
-        self::$loaded[$name] = true;
-
-        $declared = array_merge(get_declared_classes(), get_declared_interfaces());
-        if (function_exists('get_declared_traits')) {
-            $declared = array_merge($declared, get_declared_traits());
-        }
-
-        if ($adaptive) {
-            // don't include already declared classes
-            $classes = array_diff($classes, $declared);
-
-            // the cache is different depending on which classes are already declared
-            $name = $name.'-'.substr(hash('sha256', implode('|', $classes)), 0, 5);
-        }
-
-        $classes = array_unique($classes);
-
-        $cache = $cacheDir.'/'.$name.$extension;
-
-        // auto-reload
-        $reload = false;
-        if ($autoReload) {
-            $metadata = $cache.'.meta';
-            if (!is_file($metadata) || !is_file($cache)) {
-                $reload = true;
-            } else {
-                $time = filemtime($cache);
-                $meta = unserialize(file_get_contents($metadata));
-
-                sort($meta[1]);
-                sort($classes);
-
-                if ($meta[1] != $classes) {
-                    $reload = true;
-                } else {
-                    foreach ($meta[0] as $resource) {
-                        if (!is_file($resource) || filemtime($resource) > $time) {
-                            $reload = true;
-
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (!$reload && is_file($cache)) {
-            require_once $cache;
-
-            return;
-        }
-
-        $files = array();
-        $content = '';
-        foreach (self::getOrderedClasses($classes) as $class) {
-            if (in_array($class->getName(), $declared)) {
-                continue;
-            }
-
-            $files[] = $class->getFileName();
-
-            $c = preg_replace(array('/^\s*<\?php/', '/\?>\s*$/'), '', file_get_contents($class->getFileName()));
-
-            // fakes namespace declaration for global code
-            if (!$class->inNamespace()) {
-                $c = "\nnamespace\n{\n".$c."\n}\n";
-            }
-
-            $c = self::fixNamespaceDeclarations('<?php '.$c);
-            $c = preg_replace('/^\s*<\?php/', '', $c);
-
-            $content .= $c;
-        }
-
-        // cache the core classes
-        if (!is_dir(dirname($cache))) {
-            mkdir(dirname($cache), 0777, true);
-        }
-        self::writeCacheFile($cache, '<?php '.$content);
-
-        if ($autoReload) {
-            // save the resources
-            self::writeCacheFile($metadata, serialize(array($files, $classes)));
-        }
-    }
-
-    /**
-     * Adds brackets around each namespace if it's not already the case.
-     *
-     * @param string $source Namespace string
-     *
-     * @return string Namespaces with brackets
-     */
-    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";
-            }
-
-            return $source;
-        }
-
-        $rawChunk = '';
-        $output = '';
-        $inNamespace = false;
-        $tokens = token_get_all($source);
-
-        for (reset($tokens); false !== $token = current($tokens); next($tokens)) {
-            if (is_string($token)) {
-                $rawChunk .= $token;
-            } elseif (in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) {
-                // strip comments
-                continue;
-            } elseif (T_NAMESPACE === $token[0]) {
-                if ($inNamespace) {
-                    $rawChunk .= "}\n";
-                }
-                $rawChunk .= $token[1];
-
-                // namespace name and whitespaces
-                while (($t = next($tokens)) && is_array($t) && in_array($t[0], array(T_WHITESPACE, T_NS_SEPARATOR, T_STRING))) {
-                    $rawChunk .= $t[1];
-                }
-                if ('{' === $t) {
-                    $inNamespace = false;
-                    prev($tokens);
-                } else {
-                    $rawChunk = rtrim($rawChunk)."\n{";
-                    $inNamespace = true;
-                }
-            } elseif (T_START_HEREDOC === $token[0]) {
-                $output .= self::compressCode($rawChunk).$token[1];
-                do {
-                    $token = next($tokens);
-                    $output .= is_string($token) ? $token : $token[1];
-                } while ($token[0] !== T_END_HEREDOC);
-                $output .= "\n";
-                $rawChunk = '';
-            } elseif (T_CONSTANT_ENCAPSED_STRING === $token[0]) {
-                $output .= self::compressCode($rawChunk).$token[1];
-                $rawChunk = '';
-            } else {
-                $rawChunk .= $token[1];
-            }
-        }
-
-        if ($inNamespace) {
-            $rawChunk .= "}\n";
-        }
-
-        return $output.self::compressCode($rawChunk);
-    }
-
-    /**
-     * This method is only useful for testing.
-     */
-    public static function enableTokenizer($bool)
-    {
-        self::$useTokenizer = (bool) $bool;
-    }
-
-    /**
-     * Strips leading & trailing ws, multiple EOL, multiple ws.
-     *
-     * @param string $code Original PHP code
-     *
-     * @return string compressed code
-     */
-    private static function compressCode($code)
-    {
-        return preg_replace(
-            array('/^\s+/m', '/\s+$/m', '/([\n\r]+ *[\n\r]+)+/', '/[ \t]+/'),
-            array('', '', "\n", ' '),
-            $code
-        );
-    }
-
-    /**
-     * Writes a cache file.
-     *
-     * @param string $file    Filename
-     * @param string $content Temporary file content
-     *
-     * @throws \RuntimeException when a cache file cannot be written
-     */
-    private static function writeCacheFile($file, $content)
-    {
-        $tmpFile = tempnam(dirname($file), basename($file));
-        if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $file)) {
-            @chmod($file, 0666 & ~umask());
-
-            return;
-        }
-
-        throw new \RuntimeException(sprintf('Failed to write cache file "%s".', $file));
-    }
-
-    /**
-     * Gets an ordered array of passed classes including all their dependencies.
-     *
-     * @param array $classes
-     *
-     * @return \ReflectionClass[] An array of sorted \ReflectionClass instances (dependencies added if needed)
-     *
-     * @throws \InvalidArgumentException When a class can't be loaded
-     */
-    private static function getOrderedClasses(array $classes)
-    {
-        $map = array();
-        self::$seen = array();
-        foreach ($classes as $class) {
-            try {
-                $reflectionClass = new \ReflectionClass($class);
-            } catch (\ReflectionException $e) {
-                throw new \InvalidArgumentException(sprintf('Unable to load class "%s"', $class));
-            }
-
-            $map = array_merge($map, self::getClassHierarchy($reflectionClass));
-        }
-
-        return $map;
-    }
-
-    private static function getClassHierarchy(\ReflectionClass $class)
-    {
-        if (isset(self::$seen[$class->getName()])) {
-            return array();
-        }
-
-        self::$seen[$class->getName()] = true;
-
-        $classes = array($class);
-        $parent = $class;
-        while (($parent = $parent->getParentClass()) && $parent->isUserDefined() && !isset(self::$seen[$parent->getName()])) {
-            self::$seen[$parent->getName()] = true;
-
-            array_unshift($classes, $parent);
-        }
-
-        $traits = array();
-
-        if (method_exists('ReflectionClass', 'getTraits')) {
-            foreach ($classes as $c) {
-                foreach (self::resolveDependencies(self::computeTraitDeps($c), $c) as $trait) {
-                    if ($trait !== $c) {
-                        $traits[] = $trait;
-                    }
-                }
-            }
-        }
-
-        return array_merge(self::getInterfaces($class), $traits, $classes);
-    }
-
-    private static function getInterfaces(\ReflectionClass $class)
-    {
-        $classes = array();
-
-        foreach ($class->getInterfaces() as $interface) {
-            $classes = array_merge($classes, self::getInterfaces($interface));
-        }
-
-        if ($class->isUserDefined() && $class->isInterface() && !isset(self::$seen[$class->getName()])) {
-            self::$seen[$class->getName()] = true;
-
-            $classes[] = $class;
-        }
-
-        return $classes;
-    }
-
-    private static function computeTraitDeps(\ReflectionClass $class)
-    {
-        $traits = $class->getTraits();
-        $deps = array($class->getName() => $traits);
-        while ($trait = array_pop($traits)) {
-            if ($trait->isUserDefined() && !isset(self::$seen[$trait->getName()])) {
-                self::$seen[$trait->getName()] = true;
-                $traitDeps = $trait->getTraits();
-                $deps[$trait->getName()] = $traitDeps;
-                $traits = array_merge($traits, $traitDeps);
-            }
-        }
-
-        return $deps;
-    }
-
-    /**
-     * Dependencies resolution.
-     *
-     * This function does not check for circular dependencies as it should never
-     * occur with PHP traits.
-     *
-     * @param array            $tree       The dependency tree
-     * @param \ReflectionClass $node       The node
-     * @param \ArrayObject     $resolved   An array of already resolved dependencies
-     * @param \ArrayObject     $unresolved An array of dependencies to be resolved
-     *
-     * @return \ArrayObject The dependencies for the given node
-     *
-     * @throws \RuntimeException if a circular dependency is detected
-     */
-    private static function resolveDependencies(array $tree, $node, \ArrayObject $resolved = null, \ArrayObject $unresolved = null)
-    {
-        if (null === $resolved) {
-            $resolved = new \ArrayObject();
-        }
-        if (null === $unresolved) {
-            $unresolved = new \ArrayObject();
-        }
-        $nodeName = $node->getName();
-
-        if (isset($tree[$nodeName])) {
-            $unresolved[$nodeName] = $node;
-            foreach ($tree[$nodeName] as $dependency) {
-                if (!$resolved->offsetExists($dependency->getName())) {
-                    self::resolveDependencies($tree, $dependency, $resolved, $unresolved);
-                }
-            }
-            $resolved[$nodeName] = $node;
-            unset($unresolved[$nodeName]);
-        }
-
-        return $resolved;
-    }
-}
diff --git a/vendor/symfony/class-loader/ClassLoader.php b/vendor/symfony/class-loader/ClassLoader.php
deleted file mode 100644
index fc0a569..0000000
--- a/vendor/symfony/class-loader/ClassLoader.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?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\ClassLoader;
-
-/**
- * ClassLoader implements an PSR-0 class loader.
- *
- * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
- *
- *     $loader = new ClassLoader();
- *
- *     // register classes with namespaces
- *     $loader->addPrefix('Symfony\Component', __DIR__.'/component');
- *     $loader->addPrefix('Symfony',           __DIR__.'/framework');
- *
- *     // activate the autoloader
- *     $loader->register();
- *
- *     // to enable searching the include path (e.g. for PEAR packages)
- *     $loader->setUseIncludePath(true);
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class ClassLoader
-{
-    private $prefixes = array();
-    private $fallbackDirs = array();
-    private $useIncludePath = false;
-
-    /**
-     * Returns prefixes.
-     *
-     * @return array
-     */
-    public function getPrefixes()
-    {
-        return $this->prefixes;
-    }
-
-    /**
-     * Returns fallback directories.
-     *
-     * @return array
-     */
-    public function getFallbackDirs()
-    {
-        return $this->fallbackDirs;
-    }
-
-    /**
-     * Adds prefixes.
-     *
-     * @param array $prefixes Prefixes to add
-     */
-    public function addPrefixes(array $prefixes)
-    {
-        foreach ($prefixes as $prefix => $path) {
-            $this->addPrefix($prefix, $path);
-        }
-    }
-
-    /**
-     * Registers a set of classes.
-     *
-     * @param string       $prefix The classes prefix
-     * @param array|string $paths  The location(s) of the classes
-     */
-    public function addPrefix($prefix, $paths)
-    {
-        if (!$prefix) {
-            foreach ((array) $paths as $path) {
-                $this->fallbackDirs[] = $path;
-            }
-
-            return;
-        }
-        if (isset($this->prefixes[$prefix])) {
-            if (is_array($paths)) {
-                $this->prefixes[$prefix] = array_unique(array_merge(
-                    $this->prefixes[$prefix],
-                    $paths
-                ));
-            } elseif (!in_array($paths, $this->prefixes[$prefix])) {
-                 $this->prefixes[$prefix][] = $paths;
-            }
-        } else {
-            $this->prefixes[$prefix] = array_unique((array) $paths);
-        }
-    }
-
-    /**
-     * Turns on searching the include for class files.
-     *
-     * @param bool $useIncludePath
-     */
-    public function setUseIncludePath($useIncludePath)
-    {
-        $this->useIncludePath = (bool) $useIncludePath;
-    }
-
-    /**
-     * Can be used to check if the autoloader uses the include path to check
-     * for classes.
-     *
-     * @return bool
-     */
-    public function getUseIncludePath()
-    {
-        return $this->useIncludePath;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param bool $prepend Whether to prepend the autoloader or not
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Unregisters this instance as an autoloader.
-     */
-    public function unregister()
-    {
-        spl_autoload_unregister(array($this, 'loadClass'));
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     *
-     * @return bool|null True, if loaded
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            require $file;
-
-            return true;
-        }
-    }
-
-    /**
-     * Finds the path to the file where the class is defined.
-     *
-     * @param string $class The name of the class
-     *
-     * @return string|null The path, if found
-     */
-    public function findFile($class)
-    {
-        if (false !== $pos = strrpos($class, '\\')) {
-            // namespaced class name
-            $classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $pos)).DIRECTORY_SEPARATOR;
-            $className = substr($class, $pos + 1);
-        } else {
-            // PEAR-like class name
-            $classPath = null;
-            $className = $class;
-        }
-
-        $classPath .= str_replace('_', DIRECTORY_SEPARATOR, $className).'.php';
-
-        foreach ($this->prefixes as $prefix => $dirs) {
-            if ($class === strstr($class, $prefix)) {
-                foreach ($dirs as $dir) {
-                    if (file_exists($dir.DIRECTORY_SEPARATOR.$classPath)) {
-                        return $dir.DIRECTORY_SEPARATOR.$classPath;
-                    }
-                }
-            }
-        }
-
-        foreach ($this->fallbackDirs as $dir) {
-            if (file_exists($dir.DIRECTORY_SEPARATOR.$classPath)) {
-                return $dir.DIRECTORY_SEPARATOR.$classPath;
-            }
-        }
-
-        if ($this->useIncludePath && $file = stream_resolve_include_path($classPath)) {
-            return $file;
-        }
-    }
-}
diff --git a/vendor/symfony/class-loader/ClassMapGenerator.php b/vendor/symfony/class-loader/ClassMapGenerator.php
deleted file mode 100644
index d242acd..0000000
--- a/vendor/symfony/class-loader/ClassMapGenerator.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?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\ClassLoader;
-
-if (!defined('SYMFONY_TRAIT')) {
-    if (PHP_VERSION_ID >= 50400) {
-        define('SYMFONY_TRAIT', T_TRAIT);
-    } else {
-        define('SYMFONY_TRAIT', 0);
-    }
-}
-
-/**
- * ClassMapGenerator.
- *
- * @author Gyula Sallai <salla016@gmail.com>
- */
-class ClassMapGenerator
-{
-    /**
-     * Generate a class map file.
-     *
-     * @param array|string $dirs Directories or a single path to search in
-     * @param string       $file The name of the class map file
-     */
-    public static function dump($dirs, $file)
-    {
-        $dirs = (array) $dirs;
-        $maps = array();
-
-        foreach ($dirs as $dir) {
-            $maps = array_merge($maps, static::createMap($dir));
-        }
-
-        file_put_contents($file, sprintf('<?php return %s;', var_export($maps, true)));
-    }
-
-    /**
-     * Iterate over all files in the given directory searching for classes.
-     *
-     * @param \Iterator|string $dir The directory to search in or an iterator
-     *
-     * @return array A class map array
-     */
-    public static function createMap($dir)
-    {
-        if (is_string($dir)) {
-            $dir = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir));
-        }
-
-        $map = array();
-
-        foreach ($dir as $file) {
-            if (!$file->isFile()) {
-                continue;
-            }
-
-            $path = $file->getRealPath();
-
-            if (pathinfo($path, PATHINFO_EXTENSION) !== 'php') {
-                continue;
-            }
-
-            $classes = self::findClasses($path);
-
-            foreach ($classes as $class) {
-                $map[$class] = $path;
-            }
-        }
-
-        return $map;
-    }
-
-    /**
-     * Extract the classes in the given file.
-     *
-     * @param string $path The file to check
-     *
-     * @return array The found classes
-     */
-    private static function findClasses($path)
-    {
-        $contents = file_get_contents($path);
-        $tokens = token_get_all($contents);
-
-        $classes = array();
-
-        $namespace = '';
-        for ($i = 0, $max = count($tokens); $i < $max; ++$i) {
-            $token = $tokens[$i];
-
-            if (is_string($token)) {
-                continue;
-            }
-
-            $class = '';
-
-            switch ($token[0]) {
-                case T_NAMESPACE:
-                    $namespace = '';
-                    // If there is a namespace, extract it
-                    while (($t = $tokens[++$i]) && is_array($t)) {
-                        if (in_array($t[0], array(T_STRING, T_NS_SEPARATOR))) {
-                            $namespace .= $t[1];
-                        }
-                    }
-                    $namespace .= '\\';
-                    break;
-                case T_CLASS:
-                case T_INTERFACE:
-                case SYMFONY_TRAIT:
-                    // Skip usage of ::class constant
-                    $isClassConstant = false;
-                    for ($j = $i - 1; $j > 0; --$j) {
-                        if (is_string($tokens[$j])) {
-                            break;
-                        }
-
-                        if (T_DOUBLE_COLON === $tokens[$j][0]) {
-                            $isClassConstant = true;
-                            break;
-                        } elseif (!in_array($tokens[$j][0], array(T_WHITESPACE, T_DOC_COMMENT, T_COMMENT))) {
-                            break;
-                        }
-                    }
-
-                    if ($isClassConstant) {
-                        continue;
-                    }
-
-                    // Find the classname
-                    while (($t = $tokens[++$i]) && is_array($t)) {
-                        if (T_STRING === $t[0]) {
-                            $class .= $t[1];
-                        } elseif ($class !== '' && T_WHITESPACE == $t[0]) {
-                            break;
-                        }
-                    }
-
-                    $classes[] = ltrim($namespace.$class, '\\');
-                    break;
-                default:
-                    break;
-            }
-        }
-
-        return $classes;
-    }
-}
diff --git a/vendor/symfony/class-loader/DebugClassLoader.php b/vendor/symfony/class-loader/DebugClassLoader.php
deleted file mode 100644
index 92cbcb0..0000000
--- a/vendor/symfony/class-loader/DebugClassLoader.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?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\ClassLoader;
-
-@trigger_error('The '.__NAMESPACE__.'\DebugClassLoader class is deprecated since version 2.4 and will be removed in 3.0. Use the Symfony\Component\Debug\DebugClassLoader class instead.', E_USER_DEPRECATED);
-
-/**
- * Autoloader checking if the class is really defined in the file found.
- *
- * The DebugClassLoader will wrap all registered autoloaders providing a
- * findFile method and will throw an exception if a file is found but does
- * not declare the class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Christophe Coevoet <stof@notk.org>
- *
- * @deprecated since version 2.4, to be removed in 3.0.
- *             Use {@link \Symfony\Component\Debug\DebugClassLoader} instead.
- */
-class DebugClassLoader
-{
-    private $classFinder;
-
-    /**
-     * Constructor.
-     *
-     * @param object $classFinder
-     */
-    public function __construct($classFinder)
-    {
-        $this->classFinder = $classFinder;
-    }
-
-    /**
-     * Gets the wrapped class loader.
-     *
-     * @return object a class loader instance
-     */
-    public function getClassLoader()
-    {
-        return $this->classFinder;
-    }
-
-    /**
-     * Replaces all autoloaders implementing a findFile method by a DebugClassLoader wrapper.
-     */
-    public static function enable()
-    {
-        if (!is_array($functions = spl_autoload_functions())) {
-            return;
-        }
-
-        foreach ($functions as $function) {
-            spl_autoload_unregister($function);
-        }
-
-        foreach ($functions as $function) {
-            if (is_array($function) && !$function[0] instanceof self && method_exists($function[0], 'findFile')) {
-                $function = array(new static($function[0]), 'loadClass');
-            }
-
-            spl_autoload_register($function);
-        }
-    }
-
-    /**
-     * Unregisters this instance as an autoloader.
-     */
-    public function unregister()
-    {
-        spl_autoload_unregister(array($this, 'loadClass'));
-    }
-
-    /**
-     * Finds a file by class name.
-     *
-     * @param string $class A class name to resolve to file
-     *
-     * @return string|null
-     */
-    public function findFile($class)
-    {
-        return $this->classFinder->findFile($class);
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     *
-     * @return bool|null True, if loaded
-     *
-     * @throws \RuntimeException
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->classFinder->findFile($class)) {
-            require $file;
-
-            if (!class_exists($class, false) && !interface_exists($class, false) && (!function_exists('trait_exists') || !trait_exists($class, false))) {
-                if (false !== strpos($class, '/')) {
-                    throw new \RuntimeException(sprintf('Trying to autoload a class with an invalid name "%s". Be careful that the namespace separator is "\" in PHP, not "/".', $class));
-                }
-
-                throw new \RuntimeException(sprintf('The autoloader expected class "%s" to be defined in file "%s". The file was found but the class was not in it, the class name or namespace probably has a typo.', $class, $file));
-            }
-
-            return true;
-        }
-    }
-}
diff --git a/vendor/symfony/class-loader/DebugUniversalClassLoader.php b/vendor/symfony/class-loader/DebugUniversalClassLoader.php
deleted file mode 100644
index 807bcd1..0000000
--- a/vendor/symfony/class-loader/DebugUniversalClassLoader.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?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\ClassLoader;
-
-@trigger_error('The '.__NAMESPACE__.'\DebugUniversalClassLoader class is deprecated since version 2.4 and will be removed in 3.0. Use the Symfony\Component\Debug\DebugClassLoader class instead.', E_USER_DEPRECATED);
-
-/**
- * Checks that the class is actually declared in the included file.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.4, to be removed in 3.0.
- *             Use the {@link \Symfony\Component\Debug\DebugClassLoader} class instead.
- */
-class DebugUniversalClassLoader extends UniversalClassLoader
-{
-    /**
-     * Replaces all regular UniversalClassLoader instances by a DebugUniversalClassLoader ones.
-     */
-    public static function enable()
-    {
-        if (!is_array($functions = spl_autoload_functions())) {
-            return;
-        }
-
-        foreach ($functions as $function) {
-            spl_autoload_unregister($function);
-        }
-
-        foreach ($functions as $function) {
-            if (is_array($function) && $function[0] instanceof UniversalClassLoader) {
-                $loader = new static();
-                $loader->registerNamespaceFallbacks($function[0]->getNamespaceFallbacks());
-                $loader->registerPrefixFallbacks($function[0]->getPrefixFallbacks());
-                $loader->registerNamespaces($function[0]->getNamespaces());
-                $loader->registerPrefixes($function[0]->getPrefixes());
-                $loader->useIncludePath($function[0]->getUseIncludePath());
-
-                $function[0] = $loader;
-            }
-
-            spl_autoload_register($function);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            require $file;
-
-            if (!class_exists($class, false) && !interface_exists($class, false) && (!function_exists('trait_exists') || !trait_exists($class, false))) {
-                throw new \RuntimeException(sprintf('The autoloader expected class "%s" to be defined in file "%s". The file was found but the class was not in it, the class name or namespace probably has a typo.', $class, $file));
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/class-loader/LICENSE b/vendor/symfony/class-loader/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/class-loader/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/class-loader/MapClassLoader.php b/vendor/symfony/class-loader/MapClassLoader.php
deleted file mode 100644
index 1d8bcc2..0000000
--- a/vendor/symfony/class-loader/MapClassLoader.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?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\ClassLoader;
-
-/**
- * A class loader that uses a mapping file to look up paths.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class MapClassLoader
-{
-    private $map = array();
-
-    /**
-     * Constructor.
-     *
-     * @param array $map A map where keys are classes and values the absolute file path
-     */
-    public function __construct(array $map)
-    {
-        $this->map = $map;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param bool $prepend Whether to prepend the autoloader or not
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     */
-    public function loadClass($class)
-    {
-        if (isset($this->map[$class])) {
-            require $this->map[$class];
-        }
-    }
-
-    /**
-     * Finds the path to the file where the class is defined.
-     *
-     * @param string $class The name of the class
-     *
-     * @return string|null The path, if found
-     */
-    public function findFile($class)
-    {
-        if (isset($this->map[$class])) {
-            return $this->map[$class];
-        }
-    }
-}
diff --git a/vendor/symfony/class-loader/Psr4ClassLoader.php b/vendor/symfony/class-loader/Psr4ClassLoader.php
deleted file mode 100644
index a00cf7b..0000000
--- a/vendor/symfony/class-loader/Psr4ClassLoader.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?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\ClassLoader;
-
-/**
- * A PSR-4 compatible class loader.
- *
- * See http://www.php-fig.org/psr/psr-4/
- *
- * @author Alexander M. Turek <me@derrabus.de>
- */
-class Psr4ClassLoader
-{
-    /**
-     * @var array
-     */
-    private $prefixes = array();
-
-    /**
-     * @param string $prefix
-     * @param string $baseDir
-     */
-    public function addPrefix($prefix, $baseDir)
-    {
-        $prefix = trim($prefix, '\\').'\\';
-        $baseDir = rtrim($baseDir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
-        $this->prefixes[] = array($prefix, $baseDir);
-    }
-
-    /**
-     * @param string $class
-     *
-     * @return string|null
-     */
-    public function findFile($class)
-    {
-        $class = ltrim($class, '\\');
-
-        foreach ($this->prefixes as $current) {
-            list($currentPrefix, $currentBaseDir) = $current;
-            if (0 === strpos($class, $currentPrefix)) {
-                $classWithoutPrefix = substr($class, strlen($currentPrefix));
-                $file = $currentBaseDir.str_replace('\\', DIRECTORY_SEPARATOR, $classWithoutPrefix).'.php';
-                if (file_exists($file)) {
-                    return $file;
-                }
-            }
-        }
-    }
-
-    /**
-     * @param string $class
-     *
-     * @return bool
-     */
-    public function loadClass($class)
-    {
-        $file = $this->findFile($class);
-        if (null !== $file) {
-            require $file;
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param bool $prepend
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Removes this instance from the registered autoloaders.
-     */
-    public function unregister()
-    {
-        spl_autoload_unregister(array($this, 'loadClass'));
-    }
-}
diff --git a/vendor/symfony/class-loader/README.md b/vendor/symfony/class-loader/README.md
deleted file mode 100644
index 0d2955d..0000000
--- a/vendor/symfony/class-loader/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-ClassLoader Component
-=====================
-
-ClassLoader loads your project classes automatically if they follow some
-standard PHP conventions.
-
-The ClassLoader object is able to autoload classes that implement the PSR-0
-standard or the PEAR naming convention.
-
-First, register the autoloader:
-
-```php
-require_once __DIR__.'/src/Symfony/Component/ClassLoader/ClassLoader.php';
-
-use Symfony\Component\ClassLoader\ClassLoader;
-
-$loader = new ClassLoader();
-$loader->register();
-```
-
-Then, register some namespaces with the `addPrefix()` method:
-
-```php
-$loader->addPrefix('Symfony', __DIR__.'/src');
-$loader->addPrefix('Monolog', __DIR__.'/vendor/monolog/src');
-```
-
-The `addPrefix()` method takes a namespace prefix and a path where to
-look for the classes as arguments.
-
-You can also register a sub-namespaces:
-
-```php
-$loader->addPrefix('Doctrine\\Common', __DIR__.'/vendor/doctrine-common/lib');
-```
-
-The order of registration is significant and the first registered namespace
-takes precedence over later registered one.
-
-You can also register more than one path for a given namespace:
-
-```php
-$loader->addPrefix('Symfony', array(__DIR__.'/src', __DIR__.'/symfony/src'));
-```
-
-Alternatively, you can use the `addPrefixes()` method to register more
-than one namespace at once:
-
-```php
-$loader->addPrefixes(array(
-    'Symfony' => array(__DIR__.'/src', __DIR__.'/symfony/src'),
-    'Doctrine\\Common' => __DIR__.'/vendor/doctrine-common/lib',
-    'Doctrine' => __DIR__.'/vendor/doctrine/lib',
-    'Monolog' => __DIR__.'/vendor/monolog/src',
-));
-```
-
-For better performance, you can use the APC class loader:
-
-```php
-require_once __DIR__.'/src/Symfony/Component/ClassLoader/ClassLoader.php';
-require_once __DIR__.'/src/Symfony/Component/ClassLoader/ApcClassLoader.php';
-
-use Symfony\Component\ClassLoader\ClassLoader;
-use Symfony\Component\ClassLoader\ApcClassLoader;
-
-$loader = new ClassLoader();
-$loader->addPrefix('Symfony', __DIR__.'/src');
-
-$loader = new ApcClassLoader('apc.prefix.', $loader);
-$loader->register();
-```
-
-Furthermore, the component provides tools to aggregate classes into a single
-file, which is especially useful to improve performance on servers that do not
-provide byte caches.
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/ClassLoader/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/class-loader/UniversalClassLoader.php b/vendor/symfony/class-loader/UniversalClassLoader.php
deleted file mode 100644
index 961c751..0000000
--- a/vendor/symfony/class-loader/UniversalClassLoader.php
+++ /dev/null
@@ -1,307 +0,0 @@
-<?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\ClassLoader;
-
-@trigger_error('The '.__NAMESPACE__.'\UniversalClassLoader class is deprecated since version 2.7 and will be removed in 3.0. Use the Symfony\Component\ClassLoader\ClassLoader class instead.', E_USER_DEPRECATED);
-
-/**
- * UniversalClassLoader implements a "universal" autoloader for PHP 5.3.
- *
- * It is able to load classes that use either:
- *
- *  * The technical interoperability standards for PHP 5.3 namespaces and
- *    class names (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md);
- *
- *  * The PEAR naming convention for classes (http://pear.php.net/).
- *
- * Classes from a sub-namespace or a sub-hierarchy of PEAR classes can be
- * looked for in a list of locations to ease the vendoring of a sub-set of
- * classes for large projects.
- *
- * Example usage:
- *
- *     $loader = new UniversalClassLoader();
- *
- *     // register classes with namespaces
- *     $loader->registerNamespaces(array(
- *         'Symfony\Component' => __DIR__.'/component',
- *         'Symfony' => __DIR__.'/framework',
- *         'Sensio' => array(__DIR__.'/src', __DIR__.'/vendor'),
- *     ));
- *
- *     // register a library using the PEAR naming convention
- *     $loader->registerPrefixes(array(
- *         'Swift_' => __DIR__.'/Swift',
- *     ));
- *
- *
- *     // to enable searching the include path (e.g. for PEAR packages)
- *     $loader->useIncludePath(true);
- *
- *     // activate the autoloader
- *     $loader->register();
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.4, to be removed in 3.0.
- *             Use the {@link ClassLoader} class instead.
- */
-class UniversalClassLoader
-{
-    private $namespaces = array();
-    private $prefixes = array();
-    private $namespaceFallbacks = array();
-    private $prefixFallbacks = array();
-    private $useIncludePath = false;
-
-    /**
-     * Turns on searching the include for class files. Allows easy loading
-     * of installed PEAR packages.
-     *
-     * @param bool $useIncludePath
-     */
-    public function useIncludePath($useIncludePath)
-    {
-        $this->useIncludePath = (bool) $useIncludePath;
-    }
-
-    /**
-     * Can be used to check if the autoloader uses the include path to check
-     * for classes.
-     *
-     * @return bool
-     */
-    public function getUseIncludePath()
-    {
-        return $this->useIncludePath;
-    }
-
-    /**
-     * Gets the configured namespaces.
-     *
-     * @return array A hash with namespaces as keys and directories as values
-     */
-    public function getNamespaces()
-    {
-        return $this->namespaces;
-    }
-
-    /**
-     * Gets the configured class prefixes.
-     *
-     * @return array A hash with class prefixes as keys and directories as values
-     */
-    public function getPrefixes()
-    {
-        return $this->prefixes;
-    }
-
-    /**
-     * Gets the directory(ies) to use as a fallback for namespaces.
-     *
-     * @return array An array of directories
-     */
-    public function getNamespaceFallbacks()
-    {
-        return $this->namespaceFallbacks;
-    }
-
-    /**
-     * Gets the directory(ies) to use as a fallback for class prefixes.
-     *
-     * @return array An array of directories
-     */
-    public function getPrefixFallbacks()
-    {
-        return $this->prefixFallbacks;
-    }
-
-    /**
-     * Registers the directory to use as a fallback for namespaces.
-     *
-     * @param array $dirs An array of directories
-     */
-    public function registerNamespaceFallbacks(array $dirs)
-    {
-        $this->namespaceFallbacks = $dirs;
-    }
-
-    /**
-     * Registers a directory to use as a fallback for namespaces.
-     *
-     * @param string $dir A directory
-     */
-    public function registerNamespaceFallback($dir)
-    {
-        $this->namespaceFallbacks[] = $dir;
-    }
-
-    /**
-     * Registers directories to use as a fallback for class prefixes.
-     *
-     * @param array $dirs An array of directories
-     */
-    public function registerPrefixFallbacks(array $dirs)
-    {
-        $this->prefixFallbacks = $dirs;
-    }
-
-    /**
-     * Registers a directory to use as a fallback for class prefixes.
-     *
-     * @param string $dir A directory
-     */
-    public function registerPrefixFallback($dir)
-    {
-        $this->prefixFallbacks[] = $dir;
-    }
-
-    /**
-     * Registers an array of namespaces.
-     *
-     * @param array $namespaces An array of namespaces (namespaces as keys and locations as values)
-     */
-    public function registerNamespaces(array $namespaces)
-    {
-        foreach ($namespaces as $namespace => $locations) {
-            $this->namespaces[$namespace] = (array) $locations;
-        }
-    }
-
-    /**
-     * Registers a namespace.
-     *
-     * @param string       $namespace The namespace
-     * @param array|string $paths     The location(s) of the namespace
-     */
-    public function registerNamespace($namespace, $paths)
-    {
-        $this->namespaces[$namespace] = (array) $paths;
-    }
-
-    /**
-     * Registers an array of classes using the PEAR naming convention.
-     *
-     * @param array $classes An array of classes (prefixes as keys and locations as values)
-     */
-    public function registerPrefixes(array $classes)
-    {
-        foreach ($classes as $prefix => $locations) {
-            $this->prefixes[$prefix] = (array) $locations;
-        }
-    }
-
-    /**
-     * Registers a set of classes using the PEAR naming convention.
-     *
-     * @param string       $prefix The classes prefix
-     * @param array|string $paths  The location(s) of the classes
-     */
-    public function registerPrefix($prefix, $paths)
-    {
-        $this->prefixes[$prefix] = (array) $paths;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param bool $prepend Whether to prepend the autoloader or not
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     *
-     * @return bool|null True, if loaded
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            require $file;
-
-            return true;
-        }
-    }
-
-    /**
-     * Finds the path to the file where the class is defined.
-     *
-     * @param string $class The name of the class
-     *
-     * @return string|null The path, if found
-     */
-    public function findFile($class)
-    {
-        if (false !== $pos = strrpos($class, '\\')) {
-            // namespaced class name
-            $namespace = substr($class, 0, $pos);
-            $className = substr($class, $pos + 1);
-            $normalizedClass = str_replace('\\', DIRECTORY_SEPARATOR, $namespace).DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $className).'.php';
-            foreach ($this->namespaces as $ns => $dirs) {
-                if (0 !== strpos($namespace, $ns)) {
-                    continue;
-                }
-
-                foreach ($dirs as $dir) {
-                    $file = $dir.DIRECTORY_SEPARATOR.$normalizedClass;
-                    if (is_file($file)) {
-                        return $file;
-                    }
-                }
-            }
-
-            foreach ($this->namespaceFallbacks as $dir) {
-                $file = $dir.DIRECTORY_SEPARATOR.$normalizedClass;
-                if (is_file($file)) {
-                    return $file;
-                }
-            }
-        } else {
-            // PEAR-like class name
-            $normalizedClass = str_replace('_', DIRECTORY_SEPARATOR, $class).'.php';
-            foreach ($this->prefixes as $prefix => $dirs) {
-                if (0 !== strpos($class, $prefix)) {
-                    continue;
-                }
-
-                foreach ($dirs as $dir) {
-                    $file = $dir.DIRECTORY_SEPARATOR.$normalizedClass;
-                    if (is_file($file)) {
-                        return $file;
-                    }
-                }
-            }
-
-            foreach ($this->prefixFallbacks as $dir) {
-                $file = $dir.DIRECTORY_SEPARATOR.$normalizedClass;
-                if (is_file($file)) {
-                    return $file;
-                }
-            }
-        }
-
-        if ($this->useIncludePath && $file = stream_resolve_include_path($normalizedClass)) {
-            return $file;
-        }
-    }
-}
diff --git a/vendor/symfony/class-loader/WinCacheClassLoader.php b/vendor/symfony/class-loader/WinCacheClassLoader.php
deleted file mode 100644
index 0fc11d0..0000000
--- a/vendor/symfony/class-loader/WinCacheClassLoader.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?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\ClassLoader;
-
-/**
- * WinCacheClassLoader implements a wrapping autoloader cached in WinCache.
- *
- * It expects an object implementing a findFile method to find the file. This
- * allow using it as a wrapper around the other loaders of the component (the
- * ClassLoader and the UniversalClassLoader for instance) but also around any
- * other autoloaders following this convention (the Composer one for instance).
- *
- *     // with a Symfony autoloader
- *     use Symfony\Component\ClassLoader\ClassLoader;
- *
- *     $loader = new ClassLoader();
- *     $loader->addPrefix('Symfony\Component', __DIR__.'/component');
- *     $loader->addPrefix('Symfony',           __DIR__.'/framework');
- *
- *     // or with a Composer autoloader
- *     use Composer\Autoload\ClassLoader;
- *
- *     $loader = new ClassLoader();
- *     $loader->add('Symfony\Component', __DIR__.'/component');
- *     $loader->add('Symfony',           __DIR__.'/framework');
- *
- *     $cachedLoader = new WinCacheClassLoader('my_prefix', $loader);
- *
- *     // activate the cached autoloader
- *     $cachedLoader->register();
- *
- *     // eventually deactivate the non-cached loader if it was registered previously
- *     // to be sure to use the cached one.
- *     $loader->unregister();
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Kris Wallsmith <kris@symfony.com>
- * @author Artem Ryzhkov <artem@smart-core.org>
- */
-class WinCacheClassLoader
-{
-    private $prefix;
-
-    /**
-     * A class loader object that implements the findFile() method.
-     *
-     * @var object
-     */
-    protected $decorated;
-
-    /**
-     * Constructor.
-     *
-     * @param string $prefix    The WinCache namespace prefix to use.
-     * @param object $decorated A class loader object that implements the findFile() method.
-     *
-     * @throws \RuntimeException
-     * @throws \InvalidArgumentException
-     */
-    public function __construct($prefix, $decorated)
-    {
-        if (!extension_loaded('wincache')) {
-            throw new \RuntimeException('Unable to use WinCacheClassLoader as WinCache is not enabled.');
-        }
-
-        if (!method_exists($decorated, 'findFile')) {
-            throw new \InvalidArgumentException('The class finder must implement a "findFile" method.');
-        }
-
-        $this->prefix = $prefix;
-        $this->decorated = $decorated;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param bool $prepend Whether to prepend the autoloader or not
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Unregisters this instance as an autoloader.
-     */
-    public function unregister()
-    {
-        spl_autoload_unregister(array($this, 'loadClass'));
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     *
-     * @return bool|null True, if loaded
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            require $file;
-
-            return true;
-        }
-    }
-
-    /**
-     * Finds a file by class name while caching lookups to WinCache.
-     *
-     * @param string $class A class name to resolve to file
-     *
-     * @return string|null
-     */
-    public function findFile($class)
-    {
-        if (false === $file = wincache_ucache_get($this->prefix.$class)) {
-            wincache_ucache_set($this->prefix.$class, $file = $this->decorated->findFile($class), 0);
-        }
-
-        return $file;
-    }
-
-    /**
-     * Passes through all unknown calls onto the decorated object.
-     */
-    public function __call($method, $args)
-    {
-        return call_user_func_array(array($this->decorated, $method), $args);
-    }
-}
diff --git a/vendor/symfony/class-loader/XcacheClassLoader.php b/vendor/symfony/class-loader/XcacheClassLoader.php
deleted file mode 100644
index bf51227..0000000
--- a/vendor/symfony/class-loader/XcacheClassLoader.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?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\ClassLoader;
-
-/**
- * XcacheClassLoader implements a wrapping autoloader cached in XCache for PHP 5.3.
- *
- * It expects an object implementing a findFile method to find the file. This
- * allows using it as a wrapper around the other loaders of the component (the
- * ClassLoader and the UniversalClassLoader for instance) but also around any
- * other autoloaders following this convention (the Composer one for instance).
- *
- *     // with a Symfony autoloader
- *     use Symfony\Component\ClassLoader\ClassLoader;
- *
- *     $loader = new ClassLoader();
- *     $loader->addPrefix('Symfony\Component', __DIR__.'/component');
- *     $loader->addPrefix('Symfony',           __DIR__.'/framework');
- *
- *     // or with a Composer autoloader
- *     use Composer\Autoload\ClassLoader;
- *
- *     $loader = new ClassLoader();
- *     $loader->add('Symfony\Component', __DIR__.'/component');
- *     $loader->add('Symfony',           __DIR__.'/framework');
- *
- *     $cachedLoader = new XcacheClassLoader('my_prefix', $loader);
- *
- *     // activate the cached autoloader
- *     $cachedLoader->register();
- *
- *     // eventually deactivate the non-cached loader if it was registered previously
- *     // to be sure to use the cached one.
- *     $loader->unregister();
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Kris Wallsmith <kris@symfony.com>
- * @author Kim Hemsø Rasmussen <kimhemsoe@gmail.com>
- */
-class XcacheClassLoader
-{
-    private $prefix;
-
-    /**
-     * A class loader object that implements the findFile() method.
-     *
-     * @var object
-     */
-    private $decorated;
-
-    /**
-     * Constructor.
-     *
-     * @param string $prefix    The XCache namespace prefix to use.
-     * @param object $decorated A class loader object that implements the findFile() method.
-     *
-     * @throws \RuntimeException
-     * @throws \InvalidArgumentException
-     */
-    public function __construct($prefix, $decorated)
-    {
-        if (!extension_loaded('xcache')) {
-            throw new \RuntimeException('Unable to use XcacheClassLoader as XCache is not enabled.');
-        }
-
-        if (!method_exists($decorated, 'findFile')) {
-            throw new \InvalidArgumentException('The class finder must implement a "findFile" method.');
-        }
-
-        $this->prefix = $prefix;
-        $this->decorated = $decorated;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param bool $prepend Whether to prepend the autoloader or not
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Unregisters this instance as an autoloader.
-     */
-    public function unregister()
-    {
-        spl_autoload_unregister(array($this, 'loadClass'));
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     *
-     * @return bool|null True, if loaded
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            require $file;
-
-            return true;
-        }
-    }
-
-    /**
-     * Finds a file by class name while caching lookups to Xcache.
-     *
-     * @param string $class A class name to resolve to file
-     *
-     * @return string|null
-     */
-    public function findFile($class)
-    {
-        if (xcache_isset($this->prefix.$class)) {
-            $file = xcache_get($this->prefix.$class);
-        } else {
-            $file = $this->decorated->findFile($class);
-            xcache_set($this->prefix.$class, $file);
-        }
-
-        return $file;
-    }
-
-    /**
-     * Passes through all unknown calls onto the decorated object.
-     */
-    public function __call($method, $args)
-    {
-        return call_user_func_array(array($this->decorated, $method), $args);
-    }
-}
diff --git a/vendor/symfony/class-loader/composer.json b/vendor/symfony/class-loader/composer.json
deleted file mode 100644
index 828e598..0000000
--- a/vendor/symfony/class-loader/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-    "name": "symfony/class-loader",
-    "type": "library",
-    "description": "Symfony ClassLoader Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "minimum-stability": "dev",
-    "require": {
-        "php": ">=5.3.9"
-    },
-    "require-dev": {
-        "symfony/finder": "~2.0,>=2.0.5"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\ClassLoader\\": "" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/class-loader/phpunit.xml.dist b/vendor/symfony/class-loader/phpunit.xml.dist
deleted file mode 100644
index 4856db5..0000000
--- a/vendor/symfony/class-loader/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony ClassLoader Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/console/.gitignore b/vendor/symfony/console/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/console/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/console/Application.php b/vendor/symfony/console/Application.php
deleted file mode 100644
index e386337..0000000
--- a/vendor/symfony/console/Application.php
+++ /dev/null
@@ -1,1139 +0,0 @@
-<?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;
-
-use Symfony\Component\Console\Descriptor\TextDescriptor;
-use Symfony\Component\Console\Descriptor\XmlDescriptor;
-use Symfony\Component\Console\Helper\DebugFormatterHelper;
-use Symfony\Component\Console\Helper\ProcessHelper;
-use Symfony\Component\Console\Helper\QuestionHelper;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\ArgvInput;
-use Symfony\Component\Console\Input\ArrayInput;
-use Symfony\Component\Console\Input\InputDefinition;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputAwareInterface;
-use Symfony\Component\Console\Output\BufferedOutput;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Output\ConsoleOutput;
-use Symfony\Component\Console\Output\ConsoleOutputInterface;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Command\HelpCommand;
-use Symfony\Component\Console\Command\ListCommand;
-use Symfony\Component\Console\Helper\HelperSet;
-use Symfony\Component\Console\Helper\FormatterHelper;
-use Symfony\Component\Console\Helper\DialogHelper;
-use Symfony\Component\Console\Helper\ProgressHelper;
-use Symfony\Component\Console\Helper\TableHelper;
-use Symfony\Component\Console\Event\ConsoleCommandEvent;
-use Symfony\Component\Console\Event\ConsoleExceptionEvent;
-use Symfony\Component\Console\Event\ConsoleTerminateEvent;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-
-/**
- * An Application is the container for a collection of commands.
- *
- * It is the main entry point of a Console application.
- *
- * This class is optimized for a standard CLI environment.
- *
- * Usage:
- *
- *     $app = new Application('myapp', '1.0 (stable)');
- *     $app->add(new SimpleCommand());
- *     $app->run();
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Application
-{
-    private $commands = array();
-    private $wantHelps = false;
-    private $runningCommand;
-    private $name;
-    private $version;
-    private $catchExceptions = true;
-    private $autoExit = true;
-    private $definition;
-    private $helperSet;
-    private $dispatcher;
-    private $terminalDimensions;
-    private $defaultCommand;
-
-    /**
-     * Constructor.
-     *
-     * @param string $name    The name of the application
-     * @param string $version The version of the application
-     */
-    public function __construct($name = 'UNKNOWN', $version = 'UNKNOWN')
-    {
-        $this->name = $name;
-        $this->version = $version;
-        $this->defaultCommand = 'list';
-        $this->helperSet = $this->getDefaultHelperSet();
-        $this->definition = $this->getDefaultInputDefinition();
-
-        foreach ($this->getDefaultCommands() as $command) {
-            $this->add($command);
-        }
-    }
-
-    public function setDispatcher(EventDispatcherInterface $dispatcher)
-    {
-        $this->dispatcher = $dispatcher;
-    }
-
-    /**
-     * Runs the current application.
-     *
-     * @param InputInterface  $input  An Input instance
-     * @param OutputInterface $output An Output instance
-     *
-     * @return int 0 if everything went fine, or an error code
-     *
-     * @throws \Exception When doRun returns Exception
-     */
-    public function run(InputInterface $input = null, OutputInterface $output = null)
-    {
-        if (null === $input) {
-            $input = new ArgvInput();
-        }
-
-        if (null === $output) {
-            $output = new ConsoleOutput();
-        }
-
-        $this->configureIO($input, $output);
-
-        try {
-            $exitCode = $this->doRun($input, $output);
-        } catch (\Exception $e) {
-            if (!$this->catchExceptions) {
-                throw $e;
-            }
-
-            if ($output instanceof ConsoleOutputInterface) {
-                $this->renderException($e, $output->getErrorOutput());
-            } else {
-                $this->renderException($e, $output);
-            }
-
-            $exitCode = $e->getCode();
-            if (is_numeric($exitCode)) {
-                $exitCode = (int) $exitCode;
-                if (0 === $exitCode) {
-                    $exitCode = 1;
-                }
-            } else {
-                $exitCode = 1;
-            }
-        }
-
-        if ($this->autoExit) {
-            if ($exitCode > 255) {
-                $exitCode = 255;
-            }
-
-            exit($exitCode);
-        }
-
-        return $exitCode;
-    }
-
-    /**
-     * Runs the current application.
-     *
-     * @param InputInterface  $input  An Input instance
-     * @param OutputInterface $output An Output instance
-     *
-     * @return int 0 if everything went fine, or an error code
-     */
-    public function doRun(InputInterface $input, OutputInterface $output)
-    {
-        if (true === $input->hasParameterOption(array('--version', '-V'))) {
-            $output->writeln($this->getLongVersion());
-
-            return 0;
-        }
-
-        $name = $this->getCommandName($input);
-        if (true === $input->hasParameterOption(array('--help', '-h'))) {
-            if (!$name) {
-                $name = 'help';
-                $input = new ArrayInput(array('command' => 'help'));
-            } else {
-                $this->wantHelps = true;
-            }
-        }
-
-        if (!$name) {
-            $name = $this->defaultCommand;
-            $input = new ArrayInput(array('command' => $this->defaultCommand));
-        }
-
-        // the command name MUST be the first element of the input
-        $command = $this->find($name);
-
-        $this->runningCommand = $command;
-        $exitCode = $this->doRunCommand($command, $input, $output);
-        $this->runningCommand = null;
-
-        return $exitCode;
-    }
-
-    /**
-     * Set a helper set to be used with the command.
-     *
-     * @param HelperSet $helperSet The helper set
-     */
-    public function setHelperSet(HelperSet $helperSet)
-    {
-        $this->helperSet = $helperSet;
-    }
-
-    /**
-     * Get the helper set associated with the command.
-     *
-     * @return HelperSet The HelperSet instance associated with this command
-     */
-    public function getHelperSet()
-    {
-        return $this->helperSet;
-    }
-
-    /**
-     * Set an input definition set to be used with this application.
-     *
-     * @param InputDefinition $definition The input definition
-     */
-    public function setDefinition(InputDefinition $definition)
-    {
-        $this->definition = $definition;
-    }
-
-    /**
-     * Gets the InputDefinition related to this Application.
-     *
-     * @return InputDefinition The InputDefinition instance
-     */
-    public function getDefinition()
-    {
-        return $this->definition;
-    }
-
-    /**
-     * Gets the help message.
-     *
-     * @return string A help message.
-     */
-    public function getHelp()
-    {
-        return $this->getLongVersion();
-    }
-
-    /**
-     * Sets whether to catch exceptions or not during commands execution.
-     *
-     * @param bool $boolean Whether to catch exceptions or not during commands execution
-     */
-    public function setCatchExceptions($boolean)
-    {
-        $this->catchExceptions = (bool) $boolean;
-    }
-
-    /**
-     * Sets whether to automatically exit after a command execution or not.
-     *
-     * @param bool $boolean Whether to automatically exit after a command execution or not
-     */
-    public function setAutoExit($boolean)
-    {
-        $this->autoExit = (bool) $boolean;
-    }
-
-    /**
-     * Gets the name of the application.
-     *
-     * @return string The application name
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Sets the application name.
-     *
-     * @param string $name The application name
-     */
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * Gets the application version.
-     *
-     * @return string The application version
-     */
-    public function getVersion()
-    {
-        return $this->version;
-    }
-
-    /**
-     * Sets the application version.
-     *
-     * @param string $version The application version
-     */
-    public function setVersion($version)
-    {
-        $this->version = $version;
-    }
-
-    /**
-     * Returns the long version of the application.
-     *
-     * @return string The long application version
-     */
-    public function getLongVersion()
-    {
-        if ('UNKNOWN' !== $this->getName() && 'UNKNOWN' !== $this->getVersion()) {
-            return sprintf('<info>%s</info> version <comment>%s</comment>', $this->getName(), $this->getVersion());
-        }
-
-        return '<info>Console Tool</info>';
-    }
-
-    /**
-     * Registers a new command.
-     *
-     * @param string $name The command name
-     *
-     * @return Command The newly created command
-     */
-    public function register($name)
-    {
-        return $this->add(new Command($name));
-    }
-
-    /**
-     * Adds an array of command objects.
-     *
-     * @param Command[] $commands An array of commands
-     */
-    public function addCommands(array $commands)
-    {
-        foreach ($commands as $command) {
-            $this->add($command);
-        }
-    }
-
-    /**
-     * Adds a command object.
-     *
-     * If a command with the same name already exists, it will be overridden.
-     *
-     * @param Command $command A Command object
-     *
-     * @return Command The registered command
-     */
-    public function add(Command $command)
-    {
-        $command->setApplication($this);
-
-        if (!$command->isEnabled()) {
-            $command->setApplication(null);
-
-            return;
-        }
-
-        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)));
-        }
-
-        $this->commands[$command->getName()] = $command;
-
-        foreach ($command->getAliases() as $alias) {
-            $this->commands[$alias] = $command;
-        }
-
-        return $command;
-    }
-
-    /**
-     * Returns a registered command by name or alias.
-     *
-     * @param string $name The command name or alias
-     *
-     * @return Command A Command object
-     *
-     * @throws \InvalidArgumentException 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));
-        }
-
-        $command = $this->commands[$name];
-
-        if ($this->wantHelps) {
-            $this->wantHelps = false;
-
-            $helpCommand = $this->get('help');
-            $helpCommand->setCommand($command);
-
-            return $helpCommand;
-        }
-
-        return $command;
-    }
-
-    /**
-     * Returns true if the command exists, false otherwise.
-     *
-     * @param string $name The command name or alias
-     *
-     * @return bool true if the command exists, false otherwise
-     */
-    public function has($name)
-    {
-        return isset($this->commands[$name]);
-    }
-
-    /**
-     * Returns an array of all unique namespaces used by currently registered commands.
-     *
-     * It does not returns the global namespace which always exists.
-     *
-     * @return array An array of namespaces
-     */
-    public function getNamespaces()
-    {
-        $namespaces = array();
-        foreach ($this->commands as $command) {
-            $namespaces = array_merge($namespaces, $this->extractAllNamespaces($command->getName()));
-
-            foreach ($command->getAliases() as $alias) {
-                $namespaces = array_merge($namespaces, $this->extractAllNamespaces($alias));
-            }
-        }
-
-        return array_values(array_unique(array_filter($namespaces)));
-    }
-
-    /**
-     * Finds a registered namespace by a name or an abbreviation.
-     *
-     * @param string $namespace A namespace or abbreviation to search for
-     *
-     * @return string A registered namespace
-     *
-     * @throws \InvalidArgumentException When namespace is incorrect or ambiguous
-     */
-    public function findNamespace($namespace)
-    {
-        $allNamespaces = $this->getNamespaces();
-        $expr = preg_replace_callback('{([^:]+|)}', function ($matches) { return preg_quote($matches[1]).'[^:]*'; }, $namespace);
-        $namespaces = preg_grep('{^'.$expr.'}', $allNamespaces);
-
-        if (empty($namespaces)) {
-            $message = sprintf('There are no commands defined in the "%s" namespace.', $namespace);
-
-            if ($alternatives = $this->findAlternatives($namespace, $allNamespaces)) {
-                if (1 == count($alternatives)) {
-                    $message .= "\n\nDid you mean this?\n    ";
-                } else {
-                    $message .= "\n\nDid you mean one of these?\n    ";
-                }
-
-                $message .= implode("\n    ", $alternatives);
-            }
-
-            throw new \InvalidArgumentException($message);
-        }
-
-        $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))));
-        }
-
-        return $exact ? $namespace : reset($namespaces);
-    }
-
-    /**
-     * Finds a command by name or alias.
-     *
-     * Contrary to get, this command tries to find the best
-     * match if you give it an abbreviation of a name or alias.
-     *
-     * @param string $name A command name or a command alias
-     *
-     * @return Command A Command instance
-     *
-     * @throws \InvalidArgumentException When command name is incorrect or ambiguous
-     */
-    public function find($name)
-    {
-        $allCommands = array_keys($this->commands);
-        $expr = preg_replace_callback('{([^:]+|)}', function ($matches) { return preg_quote($matches[1]).'[^:]*'; }, $name);
-        $commands = preg_grep('{^'.$expr.'}', $allCommands);
-
-        if (empty($commands) || count(preg_grep('{^'.$expr.'$}', $commands)) < 1) {
-            if (false !== $pos = strrpos($name, ':')) {
-                // check if a namespace exists and contains commands
-                $this->findNamespace(substr($name, 0, $pos));
-            }
-
-            $message = sprintf('Command "%s" is not defined.', $name);
-
-            if ($alternatives = $this->findAlternatives($name, $allCommands)) {
-                if (1 == count($alternatives)) {
-                    $message .= "\n\nDid you mean this?\n    ";
-                } else {
-                    $message .= "\n\nDid you mean one of these?\n    ";
-                }
-                $message .= implode("\n    ", $alternatives);
-            }
-
-            throw new \InvalidArgumentException($message);
-        }
-
-        // filter out aliases for commands which are already on the list
-        if (count($commands) > 1) {
-            $commandList = $this->commands;
-            $commands = array_filter($commands, function ($nameOrAlias) use ($commandList, $commands) {
-                $commandName = $commandList[$nameOrAlias]->getName();
-
-                return $commandName === $nameOrAlias || !in_array($commandName, $commands);
-            });
-        }
-
-        $exact = in_array($name, $commands, true);
-        if (count($commands) > 1 && !$exact) {
-            $suggestions = $this->getAbbreviationSuggestions(array_values($commands));
-
-            throw new \InvalidArgumentException(sprintf('Command "%s" is ambiguous (%s).', $name, $suggestions));
-        }
-
-        return $this->get($exact ? $name : reset($commands));
-    }
-
-    /**
-     * Gets the commands (registered in the given namespace if provided).
-     *
-     * The array keys are the full names and the values the command instances.
-     *
-     * @param string $namespace A namespace name
-     *
-     * @return Command[] An array of Command instances
-     */
-    public function all($namespace = null)
-    {
-        if (null === $namespace) {
-            return $this->commands;
-        }
-
-        $commands = array();
-        foreach ($this->commands as $name => $command) {
-            if ($namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1)) {
-                $commands[$name] = $command;
-            }
-        }
-
-        return $commands;
-    }
-
-    /**
-     * Returns an array of possible abbreviations given a set of names.
-     *
-     * @param array $names An array of names
-     *
-     * @return array An array of abbreviations
-     */
-    public static function getAbbreviations($names)
-    {
-        $abbrevs = array();
-        foreach ($names as $name) {
-            for ($len = strlen($name); $len > 0; --$len) {
-                $abbrev = substr($name, 0, $len);
-                $abbrevs[$abbrev][] = $name;
-            }
-        }
-
-        return $abbrevs;
-    }
-
-    /**
-     * Returns a text representation of the Application.
-     *
-     * @param string $namespace An optional namespace name
-     * @param bool   $raw       Whether to return raw command list
-     *
-     * @return string A string representing the Application
-     *
-     * @deprecated since version 2.3, to be removed in 3.0.
-     */
-    public function asText($namespace = null, $raw = false)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.3 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        $descriptor = new TextDescriptor();
-        $output = new BufferedOutput(BufferedOutput::VERBOSITY_NORMAL, !$raw);
-        $descriptor->describe($output, $this, array('namespace' => $namespace, 'raw_output' => true));
-
-        return $output->fetch();
-    }
-
-    /**
-     * Returns an XML representation of the Application.
-     *
-     * @param string $namespace An optional namespace name
-     * @param bool   $asDom     Whether to return a DOM or an XML string
-     *
-     * @return string|\DOMDocument An XML string representing the Application
-     *
-     * @deprecated since version 2.3, to be removed in 3.0.
-     */
-    public function asXml($namespace = null, $asDom = false)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.3 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        $descriptor = new XmlDescriptor();
-
-        if ($asDom) {
-            return $descriptor->getApplicationDocument($this, $namespace);
-        }
-
-        $output = new BufferedOutput();
-        $descriptor->describe($output, $this, array('namespace' => $namespace));
-
-        return $output->fetch();
-    }
-
-    /**
-     * Renders a caught exception.
-     *
-     * @param \Exception      $e      An exception instance
-     * @param OutputInterface $output An OutputInterface instance
-     */
-    public function renderException($e, $output)
-    {
-        do {
-            $title = sprintf('  [%s]  ', get_class($e));
-
-            $len = $this->stringWidth($title);
-
-            $width = $this->getTerminalWidth() ? $this->getTerminalWidth() - 1 : PHP_INT_MAX;
-            // HHVM only accepts 32 bits integer in str_split, even when PHP_INT_MAX is a 64 bit integer: https://github.com/facebook/hhvm/issues/1327
-            if (defined('HHVM_VERSION') && $width > 1 << 31) {
-                $width = 1 << 31;
-            }
-            $formatter = $output->getFormatter();
-            $lines = array();
-            foreach (preg_split('/\r?\n/', $e->getMessage()) as $line) {
-                foreach ($this->splitStringByWidth($line, $width - 4) as $line) {
-                    // pre-format lines to get the right string length
-                    $lineLength = $this->stringWidth(preg_replace('/\[[^m]*m/', '', $formatter->format($line))) + 4;
-                    $lines[] = array($line, $lineLength);
-
-                    $len = max($lineLength, $len);
-                }
-            }
-
-            $messages = array('', '');
-            $messages[] = $emptyLine = $formatter->format(sprintf('<error>%s</error>', str_repeat(' ', $len)));
-            $messages[] = $formatter->format(sprintf('<error>%s%s</error>', $title, str_repeat(' ', max(0, $len - $this->stringWidth($title)))));
-            foreach ($lines as $line) {
-                $messages[] = $formatter->format(sprintf('<error>  %s  %s</error>', $line[0], str_repeat(' ', $len - $line[1])));
-            }
-            $messages[] = $emptyLine;
-            $messages[] = '';
-            $messages[] = '';
-
-            $output->writeln($messages, OutputInterface::OUTPUT_RAW);
-
-            if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) {
-                $output->writeln('<comment>Exception trace:</comment>');
-
-                // exception related properties
-                $trace = $e->getTrace();
-                array_unshift($trace, array(
-                    'function' => '',
-                    'file' => $e->getFile() !== null ? $e->getFile() : 'n/a',
-                    'line' => $e->getLine() !== null ? $e->getLine() : 'n/a',
-                    'args' => array(),
-                ));
-
-                for ($i = 0, $count = count($trace); $i < $count; ++$i) {
-                    $class = isset($trace[$i]['class']) ? $trace[$i]['class'] : '';
-                    $type = isset($trace[$i]['type']) ? $trace[$i]['type'] : '';
-                    $function = $trace[$i]['function'];
-                    $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('');
-                $output->writeln('');
-            }
-        } while ($e = $e->getPrevious());
-
-        if (null !== $this->runningCommand) {
-            $output->writeln(sprintf('<info>%s</info>', sprintf($this->runningCommand->getSynopsis(), $this->getName())));
-            $output->writeln('');
-            $output->writeln('');
-        }
-    }
-
-    /**
-     * Tries to figure out the terminal width in which this application runs.
-     *
-     * @return int|null
-     */
-    protected function getTerminalWidth()
-    {
-        $dimensions = $this->getTerminalDimensions();
-
-        return $dimensions[0];
-    }
-
-    /**
-     * Tries to figure out the terminal height in which this application runs.
-     *
-     * @return int|null
-     */
-    protected function getTerminalHeight()
-    {
-        $dimensions = $this->getTerminalDimensions();
-
-        return $dimensions[1];
-    }
-
-    /**
-     * Tries to figure out the terminal dimensions based on the current environment.
-     *
-     * @return array Array containing width and height
-     */
-    public function getTerminalDimensions()
-    {
-        if ($this->terminalDimensions) {
-            return $this->terminalDimensions;
-        }
-
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            // extract [w, H] from "wxh (WxH)"
-            if (preg_match('/^(\d+)x\d+ \(\d+x(\d+)\)$/', trim(getenv('ANSICON')), $matches)) {
-                return array((int) $matches[1], (int) $matches[2]);
-            }
-            // extract [w, h] from "wxh"
-            if (preg_match('/^(\d+)x(\d+)$/', $this->getConsoleMode(), $matches)) {
-                return array((int) $matches[1], (int) $matches[2]);
-            }
-        }
-
-        if ($sttyString = $this->getSttyColumns()) {
-            // extract [w, h] from "rows h; columns w;"
-            if (preg_match('/rows.(\d+);.columns.(\d+);/i', $sttyString, $matches)) {
-                return array((int) $matches[2], (int) $matches[1]);
-            }
-            // extract [w, h] from "; h rows; w columns"
-            if (preg_match('/;.(\d+).rows;.(\d+).columns/i', $sttyString, $matches)) {
-                return array((int) $matches[2], (int) $matches[1]);
-            }
-        }
-
-        return array(null, null);
-    }
-
-    /**
-     * Sets terminal dimensions.
-     *
-     * Can be useful to force terminal dimensions for functional tests.
-     *
-     * @param int $width  The width
-     * @param int $height The height
-     *
-     * @return Application The current application
-     */
-    public function setTerminalDimensions($width, $height)
-    {
-        $this->terminalDimensions = array($width, $height);
-
-        return $this;
-    }
-
-    /**
-     * Configures the input and output instances based on the user arguments and options.
-     *
-     * @param InputInterface  $input  An InputInterface instance
-     * @param OutputInterface $output An OutputInterface instance
-     */
-    protected function configureIO(InputInterface $input, OutputInterface $output)
-    {
-        if (true === $input->hasParameterOption(array('--ansi'))) {
-            $output->setDecorated(true);
-        } elseif (true === $input->hasParameterOption(array('--no-ansi'))) {
-            $output->setDecorated(false);
-        }
-
-        if (true === $input->hasParameterOption(array('--no-interaction', '-n'))) {
-            $input->setInteractive(false);
-        } elseif (function_exists('posix_isatty') && $this->getHelperSet()->has('question')) {
-            $inputStream = $this->getHelperSet()->get('question')->getInputStream();
-            if (!@posix_isatty($inputStream) && false === getenv('SHELL_INTERACTIVE')) {
-                $input->setInteractive(false);
-            }
-        }
-
-        if (true === $input->hasParameterOption(array('--quiet', '-q'))) {
-            $output->setVerbosity(OutputInterface::VERBOSITY_QUIET);
-        } else {
-            if ($input->hasParameterOption('-vvv') || $input->hasParameterOption('--verbose=3') || $input->getParameterOption('--verbose') === 3) {
-                $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG);
-            } elseif ($input->hasParameterOption('-vv') || $input->hasParameterOption('--verbose=2') || $input->getParameterOption('--verbose') === 2) {
-                $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE);
-            } elseif ($input->hasParameterOption('-v') || $input->hasParameterOption('--verbose=1') || $input->hasParameterOption('--verbose') || $input->getParameterOption('--verbose')) {
-                $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE);
-            }
-        }
-    }
-
-    /**
-     * Runs the current command.
-     *
-     * If an event dispatcher has been attached to the application,
-     * events are also dispatched during the life-cycle of the command.
-     *
-     * @param Command         $command A Command instance
-     * @param InputInterface  $input   An Input instance
-     * @param OutputInterface $output  An Output instance
-     *
-     * @return int 0 if everything went fine, or an error code
-     *
-     * @throws \Exception when the command being run threw an exception
-     */
-    protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output)
-    {
-        foreach ($command->getHelperSet() as $helper) {
-            if ($helper instanceof InputAwareInterface) {
-                $helper->setInput($input);
-            }
-        }
-
-        if (null === $this->dispatcher) {
-            return $command->run($input, $output);
-        }
-
-        $event = new ConsoleCommandEvent($command, $input, $output);
-        $this->dispatcher->dispatch(ConsoleEvents::COMMAND, $event);
-
-        if ($event->commandShouldRun()) {
-            try {
-                $exitCode = $command->run($input, $output);
-            } catch (\Exception $e) {
-                $event = new ConsoleExceptionEvent($command, $input, $output, $e, $e->getCode());
-                $this->dispatcher->dispatch(ConsoleEvents::EXCEPTION, $event);
-
-                $e = $event->getException();
-
-                $event = new ConsoleTerminateEvent($command, $input, $output, $e->getCode());
-                $this->dispatcher->dispatch(ConsoleEvents::TERMINATE, $event);
-
-                throw $e;
-            }
-        } else {
-            $exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED;
-        }
-
-        $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode);
-        $this->dispatcher->dispatch(ConsoleEvents::TERMINATE, $event);
-
-        return $event->getExitCode();
-    }
-
-    /**
-     * Gets the name of the command based on input.
-     *
-     * @param InputInterface $input The input interface
-     *
-     * @return string The command name
-     */
-    protected function getCommandName(InputInterface $input)
-    {
-        return $input->getFirstArgument();
-    }
-
-    /**
-     * Gets the default input definition.
-     *
-     * @return InputDefinition An InputDefinition instance
-     */
-    protected function getDefaultInputDefinition()
-    {
-        return new InputDefinition(array(
-            new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'),
-
-            new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display this help message'),
-            new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Do not output any message'),
-            new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'),
-            new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this application version'),
-            new InputOption('--ansi', '', InputOption::VALUE_NONE, 'Force ANSI output'),
-            new InputOption('--no-ansi', '', InputOption::VALUE_NONE, 'Disable ANSI output'),
-            new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question'),
-        ));
-    }
-
-    /**
-     * Gets the default commands that should always be available.
-     *
-     * @return Command[] An array of default Command instances
-     */
-    protected function getDefaultCommands()
-    {
-        return array(new HelpCommand(), new ListCommand());
-    }
-
-    /**
-     * Gets the default helper set with the helpers that should always be available.
-     *
-     * @return HelperSet A HelperSet instance
-     */
-    protected function getDefaultHelperSet()
-    {
-        return new HelperSet(array(
-            new FormatterHelper(),
-            new DialogHelper(false),
-            new ProgressHelper(false),
-            new TableHelper(false),
-            new DebugFormatterHelper(),
-            new ProcessHelper(),
-            new QuestionHelper(),
-        ));
-    }
-
-    /**
-     * Runs and parses stty -a if it's available, suppressing any error output.
-     *
-     * @return string
-     */
-    private function getSttyColumns()
-    {
-        if (!function_exists('proc_open')) {
-            return;
-        }
-
-        $descriptorspec = array(1 => array('pipe', 'w'), 2 => array('pipe', 'w'));
-        $process = proc_open('stty -a | grep columns', $descriptorspec, $pipes, null, null, array('suppress_errors' => true));
-        if (is_resource($process)) {
-            $info = stream_get_contents($pipes[1]);
-            fclose($pipes[1]);
-            fclose($pipes[2]);
-            proc_close($process);
-
-            return $info;
-        }
-    }
-
-    /**
-     * Runs and parses mode CON if it's available, suppressing any error output.
-     *
-     * @return string <width>x<height> or null if it could not be parsed
-     */
-    private function getConsoleMode()
-    {
-        if (!function_exists('proc_open')) {
-            return;
-        }
-
-        $descriptorspec = array(1 => array('pipe', 'w'), 2 => array('pipe', 'w'));
-        $process = proc_open('mode CON', $descriptorspec, $pipes, null, null, array('suppress_errors' => true));
-        if (is_resource($process)) {
-            $info = stream_get_contents($pipes[1]);
-            fclose($pipes[1]);
-            fclose($pipes[2]);
-            proc_close($process);
-
-            if (preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) {
-                return $matches[2].'x'.$matches[1];
-            }
-        }
-    }
-
-    /**
-     * Returns abbreviated suggestions in string format.
-     *
-     * @param array $abbrevs Abbreviated suggestions to convert
-     *
-     * @return string A formatted string of abbreviated suggestions
-     */
-    private function getAbbreviationSuggestions($abbrevs)
-    {
-        return sprintf('%s, %s%s', $abbrevs[0], $abbrevs[1], count($abbrevs) > 2 ? sprintf(' and %d more', count($abbrevs) - 2) : '');
-    }
-
-    /**
-     * Returns the namespace part of the command name.
-     *
-     * This method is not part of public API and should not be used directly.
-     *
-     * @param string $name  The full name of the command
-     * @param string $limit The maximum number of parts of the namespace
-     *
-     * @return string The namespace of the command
-     */
-    public function extractNamespace($name, $limit = null)
-    {
-        $parts = explode(':', $name);
-        array_pop($parts);
-
-        return implode(':', null === $limit ? $parts : array_slice($parts, 0, $limit));
-    }
-
-    /**
-     * Finds alternative of $name among $collection,
-     * if nothing is found in $collection, try in $abbrevs.
-     *
-     * @param string             $name       The string
-     * @param array|\Traversable $collection The collection
-     *
-     * @return array A sorted array of similar string
-     */
-    private function findAlternatives($name, $collection)
-    {
-        $threshold = 1e3;
-        $alternatives = array();
-
-        $collectionParts = array();
-        foreach ($collection as $item) {
-            $collectionParts[$item] = explode(':', $item);
-        }
-
-        foreach (explode(':', $name) as $i => $subname) {
-            foreach ($collectionParts as $collectionName => $parts) {
-                $exists = isset($alternatives[$collectionName]);
-                if (!isset($parts[$i]) && $exists) {
-                    $alternatives[$collectionName] += $threshold;
-                    continue;
-                } elseif (!isset($parts[$i])) {
-                    continue;
-                }
-
-                $lev = levenshtein($subname, $parts[$i]);
-                if ($lev <= strlen($subname) / 3 || '' !== $subname && false !== strpos($parts[$i], $subname)) {
-                    $alternatives[$collectionName] = $exists ? $alternatives[$collectionName] + $lev : $lev;
-                } elseif ($exists) {
-                    $alternatives[$collectionName] += $threshold;
-                }
-            }
-        }
-
-        foreach ($collection as $item) {
-            $lev = levenshtein($name, $item);
-            if ($lev <= strlen($name) / 3 || false !== strpos($item, $name)) {
-                $alternatives[$item] = isset($alternatives[$item]) ? $alternatives[$item] - $lev : $lev;
-            }
-        }
-
-        $alternatives = array_filter($alternatives, function ($lev) use ($threshold) { return $lev < 2 * $threshold; });
-        asort($alternatives);
-
-        return array_keys($alternatives);
-    }
-
-    /**
-     * Sets the default Command name.
-     *
-     * @param string $commandName The Command name
-     */
-    public function setDefaultCommand($commandName)
-    {
-        $this->defaultCommand = $commandName;
-    }
-
-    private function stringWidth($string)
-    {
-        if (!function_exists('mb_strwidth')) {
-            return strlen($string);
-        }
-
-        if (false === $encoding = mb_detect_encoding($string)) {
-            return strlen($string);
-        }
-
-        return mb_strwidth($string, $encoding);
-    }
-
-    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)) {
-            return str_split($string, $width);
-        }
-
-        $utf8String = mb_convert_encoding($string, 'utf8', $encoding);
-        $lines = array();
-        $line = '';
-        foreach (preg_split('//u', $utf8String) as $char) {
-            // test if $char could be appended to current line
-            if (mb_strwidth($line.$char, 'utf8') <= $width) {
-                $line .= $char;
-                continue;
-            }
-            // if not, push current line to array and make new line
-            $lines[] = str_pad($line, $width);
-            $line = $char;
-        }
-        if ('' !== $line) {
-            $lines[] = count($lines) ? str_pad($line, $width) : $line;
-        }
-
-        mb_convert_variables($encoding, 'utf8', $lines);
-
-        return $lines;
-    }
-
-    /**
-     * Returns all namespaces of the command name.
-     *
-     * @param string $name The full name of the command
-     *
-     * @return array The namespaces of the command
-     */
-    private function extractAllNamespaces($name)
-    {
-        // -1 as third argument is needed to skip the command short name when exploding
-        $parts = explode(':', $name, -1);
-        $namespaces = array();
-
-        foreach ($parts as $part) {
-            if (count($namespaces)) {
-                $namespaces[] = end($namespaces).':'.$part;
-            } else {
-                $namespaces[] = $part;
-            }
-        }
-
-        return $namespaces;
-    }
-}
diff --git a/vendor/symfony/console/CHANGELOG.md b/vendor/symfony/console/CHANGELOG.md
deleted file mode 100644
index 07254c6..0000000
--- a/vendor/symfony/console/CHANGELOG.md
+++ /dev/null
@@ -1,62 +0,0 @@
-CHANGELOG
-=========
-
-2.6.0
------
-
- * added a Process helper
- * added a DebugFormatter helper
-
-2.5.0
------
-
- * deprecated the dialog helper (use the question helper instead)
- * deprecated TableHelper in favor of Table
- * deprecated ProgressHelper in favor of ProgressBar
- * added ConsoleLogger
- * added a question helper
- * added a way to set the process name of a command
- * added a way to set a default command instead of `ListCommand`
-
-2.4.0
------
-
- * added a way to force terminal dimensions
- * added a convenient method to detect verbosity level
- * [BC BREAK] made descriptors use output instead of returning a string
-
-2.3.0
------
-
- * added multiselect support to the select dialog helper
- * added Table Helper for tabular data rendering
- * added support for events in `Application`
- * added a way to normalize EOLs in `ApplicationTester::getDisplay()` and `CommandTester::getDisplay()`
- * added a way to set the progress bar progress via the `setCurrent` method
- * added support for multiple InputOption shortcuts, written as `'-a|-b|-c'`
- * added two additional verbosity levels, VERBOSITY_VERY_VERBOSE and VERBOSITY_DEBUG
-
-2.2.0
------
-
- * added support for colorization on Windows via ConEmu
- * add a method to Dialog Helper to ask for a question and hide the response
- * added support for interactive selections in console (DialogHelper::select())
- * added support for autocompletion as you type in Dialog Helper
-
-2.1.0
------
-
- * added ConsoleOutputInterface
- * added the possibility to disable a command (Command::isEnabled())
- * added suggestions when a command does not exist
- * added a --raw option to the list command
- * added support for STDERR in the console output class (errors are now sent
-   to STDERR)
- * made the defaults (helper set, commands, input definition) in Application
-   more easily customizable
- * added support for the shell even if readline is not available
- * added support for process isolation in Symfony shell via
-   `--process-isolation` switch
- * added support for `--`, which disables options parsing after that point
-   (tokens will be parsed as arguments)
diff --git a/vendor/symfony/console/Command/Command.php b/vendor/symfony/console/Command/Command.php
deleted file mode 100644
index 51a8a39..0000000
--- a/vendor/symfony/console/Command/Command.php
+++ /dev/null
@@ -1,666 +0,0 @@
-<?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\Command;
-
-use Symfony\Component\Console\Descriptor\TextDescriptor;
-use Symfony\Component\Console\Descriptor\XmlDescriptor;
-use Symfony\Component\Console\Input\InputDefinition;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\BufferedOutput;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Helper\HelperSet;
-
-/**
- * Base class for all commands.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Command
-{
-    private $application;
-    private $name;
-    private $processTitle;
-    private $aliases = array();
-    private $definition;
-    private $help;
-    private $description;
-    private $ignoreValidationErrors = false;
-    private $applicationDefinitionMerged = false;
-    private $applicationDefinitionMergedWithArgs = false;
-    private $code;
-    private $synopsis = array();
-    private $usages = array();
-    private $helperSet;
-
-    /**
-     * Constructor.
-     *
-     * @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
-     */
-    public function __construct($name = null)
-    {
-        $this->definition = new InputDefinition();
-
-        if (null !== $name) {
-            $this->setName($name);
-        }
-
-        $this->configure();
-
-        if (!$this->name) {
-            throw new \LogicException(sprintf('The command defined in "%s" cannot have an empty name.', get_class($this)));
-        }
-    }
-
-    /**
-     * Ignores validation errors.
-     *
-     * This is mainly useful for the help command.
-     */
-    public function ignoreValidationErrors()
-    {
-        $this->ignoreValidationErrors = true;
-    }
-
-    /**
-     * Sets the application instance for this command.
-     *
-     * @param Application $application An Application instance
-     */
-    public function setApplication(Application $application = null)
-    {
-        $this->application = $application;
-        if ($application) {
-            $this->setHelperSet($application->getHelperSet());
-        } else {
-            $this->helperSet = null;
-        }
-    }
-
-    /**
-     * Sets the helper set.
-     *
-     * @param HelperSet $helperSet A HelperSet instance
-     */
-    public function setHelperSet(HelperSet $helperSet)
-    {
-        $this->helperSet = $helperSet;
-    }
-
-    /**
-     * Gets the helper set.
-     *
-     * @return HelperSet A HelperSet instance
-     */
-    public function getHelperSet()
-    {
-        return $this->helperSet;
-    }
-
-    /**
-     * Gets the application instance for this command.
-     *
-     * @return Application An Application instance
-     */
-    public function getApplication()
-    {
-        return $this->application;
-    }
-
-    /**
-     * Checks whether the command is enabled or not in the current environment.
-     *
-     * Override this to check for x or y and return false if the command can not
-     * run properly under the current conditions.
-     *
-     * @return bool
-     */
-    public function isEnabled()
-    {
-        return true;
-    }
-
-    /**
-     * Configures the current command.
-     */
-    protected function configure()
-    {
-    }
-
-    /**
-     * Executes the current command.
-     *
-     * This method is not abstract because you can use this class
-     * as a concrete class. In this case, instead of defining the
-     * execute() method, you set the code to execute by passing
-     * a Closure to the setCode() method.
-     *
-     * @param InputInterface  $input  An InputInterface instance
-     * @param OutputInterface $output An OutputInterface instance
-     *
-     * @return null|int null or 0 if everything went fine, or an error code
-     *
-     * @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.');
-    }
-
-    /**
-     * Interacts with the user.
-     *
-     * This method is executed before the InputDefinition is validated.
-     * This means that this is the only place where the command can
-     * interactively ask for values of missing required arguments.
-     *
-     * @param InputInterface  $input  An InputInterface instance
-     * @param OutputInterface $output An OutputInterface instance
-     */
-    protected function interact(InputInterface $input, OutputInterface $output)
-    {
-    }
-
-    /**
-     * Initializes the command just after the input has been validated.
-     *
-     * This is mainly useful when a lot of commands extends one main command
-     * where some things need to be initialized based on the input arguments and options.
-     *
-     * @param InputInterface  $input  An InputInterface instance
-     * @param OutputInterface $output An OutputInterface instance
-     */
-    protected function initialize(InputInterface $input, OutputInterface $output)
-    {
-    }
-
-    /**
-     * Runs the command.
-     *
-     * The code to execute is either defined directly with the
-     * setCode() method or by overriding the execute() method
-     * in a sub-class.
-     *
-     * @param InputInterface  $input  An InputInterface instance
-     * @param OutputInterface $output An OutputInterface instance
-     *
-     * @return int The command exit code
-     *
-     * @throws \Exception
-     *
-     * @see setCode()
-     * @see execute()
-     */
-    public function run(InputInterface $input, OutputInterface $output)
-    {
-        // force the creation of the synopsis before the merge with the app definition
-        $this->getSynopsis(true);
-        $this->getSynopsis(false);
-
-        // add the application arguments and options
-        $this->mergeApplicationDefinition();
-
-        // bind the input against the command specific arguments/options
-        try {
-            $input->bind($this->definition);
-        } catch (\Exception $e) {
-            if (!$this->ignoreValidationErrors) {
-                throw $e;
-            }
-        }
-
-        $this->initialize($input, $output);
-
-        if (null !== $this->processTitle) {
-            if (function_exists('cli_set_process_title')) {
-                cli_set_process_title($this->processTitle);
-            } elseif (function_exists('setproctitle')) {
-                setproctitle($this->processTitle);
-            } elseif (OutputInterface::VERBOSITY_VERY_VERBOSE === $output->getVerbosity()) {
-                $output->writeln('<comment>Install the proctitle PECL to be able to change the process title.</comment>');
-            }
-        }
-
-        if ($input->isInteractive()) {
-            $this->interact($input, $output);
-        }
-
-        // The command name argument is often omitted when a command is executed directly with its run() method.
-        // It would fail the validation if we didn't make sure the command argument is present,
-        // since it's required by the application.
-        if ($input->hasArgument('command') && null === $input->getArgument('command')) {
-            $input->setArgument('command', $this->getName());
-        }
-
-        $input->validate();
-
-        if ($this->code) {
-            $statusCode = call_user_func($this->code, $input, $output);
-        } else {
-            $statusCode = $this->execute($input, $output);
-        }
-
-        return is_numeric($statusCode) ? (int) $statusCode : 0;
-    }
-
-    /**
-     * Sets the code to execute when running this command.
-     *
-     * If this method is used, it overrides the code defined
-     * in the execute() method.
-     *
-     * @param callable $code A callable(InputInterface $input, OutputInterface $output)
-     *
-     * @return Command The current instance
-     *
-     * @throws \InvalidArgumentException
-     *
-     * @see execute()
-     */
-    public function setCode($code)
-    {
-        if (!is_callable($code)) {
-            throw new \InvalidArgumentException('Invalid callable provided to Command::setCode.');
-        }
-
-        $this->code = $code;
-
-        return $this;
-    }
-
-    /**
-     * Merges the application definition with the command definition.
-     *
-     * This method is not part of public API and should not be used directly.
-     *
-     * @param bool $mergeArgs Whether to merge or not the Application definition arguments to Command definition arguments
-     */
-    public function mergeApplicationDefinition($mergeArgs = true)
-    {
-        if (null === $this->application || (true === $this->applicationDefinitionMerged && ($this->applicationDefinitionMergedWithArgs || !$mergeArgs))) {
-            return;
-        }
-
-        if ($mergeArgs) {
-            $currentArguments = $this->definition->getArguments();
-            $this->definition->setArguments($this->application->getDefinition()->getArguments());
-            $this->definition->addArguments($currentArguments);
-        }
-
-        $this->definition->addOptions($this->application->getDefinition()->getOptions());
-
-        $this->applicationDefinitionMerged = true;
-        if ($mergeArgs) {
-            $this->applicationDefinitionMergedWithArgs = true;
-        }
-    }
-
-    /**
-     * Sets an array of argument and option instances.
-     *
-     * @param array|InputDefinition $definition An array of argument and option instances or a definition instance
-     *
-     * @return Command The current instance
-     */
-    public function setDefinition($definition)
-    {
-        if ($definition instanceof InputDefinition) {
-            $this->definition = $definition;
-        } else {
-            $this->definition->setDefinition($definition);
-        }
-
-        $this->applicationDefinitionMerged = false;
-
-        return $this;
-    }
-
-    /**
-     * Gets the InputDefinition attached to this Command.
-     *
-     * @return InputDefinition An InputDefinition instance
-     */
-    public function getDefinition()
-    {
-        return $this->definition;
-    }
-
-    /**
-     * Gets the InputDefinition to be used to create XML and Text representations of this Command.
-     *
-     * Can be overridden to provide the original command representation when it would otherwise
-     * be changed by merging with the application InputDefinition.
-     *
-     * This method is not part of public API and should not be used directly.
-     *
-     * @return InputDefinition An InputDefinition instance
-     */
-    public function getNativeDefinition()
-    {
-        return $this->getDefinition();
-    }
-
-    /**
-     * Adds an argument.
-     *
-     * @param string $name        The argument name
-     * @param int    $mode        The argument mode: InputArgument::REQUIRED or InputArgument::OPTIONAL
-     * @param string $description A description text
-     * @param mixed  $default     The default value (for InputArgument::OPTIONAL mode only)
-     *
-     * @return Command The current instance
-     */
-    public function addArgument($name, $mode = null, $description = '', $default = null)
-    {
-        $this->definition->addArgument(new InputArgument($name, $mode, $description, $default));
-
-        return $this;
-    }
-
-    /**
-     * Adds an option.
-     *
-     * @param string $name        The option name
-     * @param string $shortcut    The shortcut (can be null)
-     * @param int    $mode        The option mode: One of the InputOption::VALUE_* constants
-     * @param string $description A description text
-     * @param mixed  $default     The default value (must be null for InputOption::VALUE_REQUIRED or InputOption::VALUE_NONE)
-     *
-     * @return Command The current instance
-     */
-    public function addOption($name, $shortcut = null, $mode = null, $description = '', $default = null)
-    {
-        $this->definition->addOption(new InputOption($name, $shortcut, $mode, $description, $default));
-
-        return $this;
-    }
-
-    /**
-     * Sets the name of the command.
-     *
-     * This method can set both the namespace and the name if
-     * you separate them by a colon (:)
-     *
-     *     $command->setName('foo:bar');
-     *
-     * @param string $name The command name
-     *
-     * @return Command The current instance
-     *
-     * @throws \InvalidArgumentException When the name is invalid
-     */
-    public function setName($name)
-    {
-        $this->validateName($name);
-
-        $this->name = $name;
-
-        return $this;
-    }
-
-    /**
-     * Sets the process title of the command.
-     *
-     * This feature should be used only when creating a long process command,
-     * like a daemon.
-     *
-     * PHP 5.5+ or the proctitle PECL library is required
-     *
-     * @param string $title The process title
-     *
-     * @return Command The current instance
-     */
-    public function setProcessTitle($title)
-    {
-        $this->processTitle = $title;
-
-        return $this;
-    }
-
-    /**
-     * Returns the command name.
-     *
-     * @return string The command name
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Sets the description for the command.
-     *
-     * @param string $description The description for the command
-     *
-     * @return Command The current instance
-     */
-    public function setDescription($description)
-    {
-        $this->description = $description;
-
-        return $this;
-    }
-
-    /**
-     * Returns the description for the command.
-     *
-     * @return string The description for the command
-     */
-    public function getDescription()
-    {
-        return $this->description;
-    }
-
-    /**
-     * Sets the help for the command.
-     *
-     * @param string $help The help for the command
-     *
-     * @return Command The current instance
-     */
-    public function setHelp($help)
-    {
-        $this->help = $help;
-
-        return $this;
-    }
-
-    /**
-     * Returns the help for the command.
-     *
-     * @return string The help for the command
-     */
-    public function getHelp()
-    {
-        return $this->help;
-    }
-
-    /**
-     * Returns the processed help for the command replacing the %command.name% and
-     * %command.full_name% patterns with the real values dynamically.
-     *
-     * @return string The processed help for the command
-     */
-    public function getProcessedHelp()
-    {
-        $name = $this->name;
-
-        $placeholders = array(
-            '%command.name%',
-            '%command.full_name%',
-        );
-        $replacements = array(
-            $name,
-            $_SERVER['PHP_SELF'].' '.$name,
-        );
-
-        return str_replace($placeholders, $replacements, $this->getHelp() ?: $this->getDescription());
-    }
-
-    /**
-     * Sets the aliases for the command.
-     *
-     * @param string[] $aliases An array of aliases for the command
-     *
-     * @return Command The current instance
-     *
-     * @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');
-        }
-
-        foreach ($aliases as $alias) {
-            $this->validateName($alias);
-        }
-
-        $this->aliases = $aliases;
-
-        return $this;
-    }
-
-    /**
-     * Returns the aliases for the command.
-     *
-     * @return array An array of aliases for the command
-     */
-    public function getAliases()
-    {
-        return $this->aliases;
-    }
-
-    /**
-     * Returns the synopsis for the command.
-     *
-     * @param bool $short Whether to show the short version of the synopsis (with options folded) or not
-     *
-     * @return string The synopsis
-     */
-    public function getSynopsis($short = false)
-    {
-        $key = $short ? 'short' : 'long';
-
-        if (!isset($this->synopsis[$key])) {
-            $this->synopsis[$key] = trim(sprintf('%s %s', $this->name, $this->definition->getSynopsis($short)));
-        }
-
-        return $this->synopsis[$key];
-    }
-
-    /**
-     * Add a command usage example.
-     *
-     * @param string $usage The usage, it'll be prefixed with the command name
-     */
-    public function addUsage($usage)
-    {
-        if (0 !== strpos($usage, $this->name)) {
-            $usage = sprintf('%s %s', $this->name, $usage);
-        }
-
-        $this->usages[] = $usage;
-
-        return $this;
-    }
-
-    /**
-     * Returns alternative usages of the command.
-     *
-     * @return array
-     */
-    public function getUsages()
-    {
-        return $this->usages;
-    }
-
-    /**
-     * Gets a helper instance by name.
-     *
-     * @param string $name The helper name
-     *
-     * @return mixed The helper value
-     *
-     * @throws \InvalidArgumentException if the helper is not defined
-     */
-    public function getHelper($name)
-    {
-        return $this->helperSet->get($name);
-    }
-
-    /**
-     * Returns a text representation of the command.
-     *
-     * @return string A string representing the command
-     *
-     * @deprecated since version 2.3, to be removed in 3.0.
-     */
-    public function asText()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.3 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        $descriptor = new TextDescriptor();
-        $output = new BufferedOutput(BufferedOutput::VERBOSITY_NORMAL, true);
-        $descriptor->describe($output, $this, array('raw_output' => true));
-
-        return $output->fetch();
-    }
-
-    /**
-     * Returns an XML representation of the command.
-     *
-     * @param bool $asDom Whether to return a DOM or an XML string
-     *
-     * @return string|\DOMDocument An XML string representing the command
-     *
-     * @deprecated since version 2.3, to be removed in 3.0.
-     */
-    public function asXml($asDom = false)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.3 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        $descriptor = new XmlDescriptor();
-
-        if ($asDom) {
-            return $descriptor->getCommandDocument($this);
-        }
-
-        $output = new BufferedOutput();
-        $descriptor->describe($output, $this);
-
-        return $output->fetch();
-    }
-
-    /**
-     * Validates a command name.
-     *
-     * It must be non-empty and parts can optionally be separated by ":".
-     *
-     * @param string $name
-     *
-     * @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));
-        }
-    }
-}
diff --git a/vendor/symfony/console/Command/HelpCommand.php b/vendor/symfony/console/Command/HelpCommand.php
deleted file mode 100644
index 8c20b57..0000000
--- a/vendor/symfony/console/Command/HelpCommand.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?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\Command;
-
-use Symfony\Component\Console\Helper\DescriptorHelper;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * HelpCommand displays the help for a given command.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HelpCommand extends Command
-{
-    private $command;
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function configure()
-    {
-        $this->ignoreValidationErrors();
-
-        $this
-            ->setName('help')
-            ->setDefinition(array(
-                new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name', 'help'),
-                new InputOption('xml', null, InputOption::VALUE_NONE, 'To output help as XML'),
-                new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'),
-                new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command help'),
-            ))
-            ->setDescription('Displays help for a command')
-            ->setHelp(<<<EOF
-The <info>%command.name%</info> command displays help for a given command:
-
-  <info>php %command.full_name% list</info>
-
-You can also output the help in other formats by using the <comment>--format</comment> option:
-
-  <info>php %command.full_name% --format=xml list</info>
-
-To display the list of available commands, please use the <info>list</info> command.
-EOF
-            )
-        ;
-    }
-
-    /**
-     * Sets the command.
-     *
-     * @param Command $command The command to set
-     */
-    public function setCommand(Command $command)
-    {
-        $this->command = $command;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function execute(InputInterface $input, OutputInterface $output)
-    {
-        if (null === $this->command) {
-            $this->command = $this->getApplication()->find($input->getArgument('command_name'));
-        }
-
-        if ($input->getOption('xml')) {
-            @trigger_error('The --xml option was deprecated in version 2.7 and will be removed in version 3.0. Use the --format option instead.', E_USER_DEPRECATED);
-
-            $input->setOption('format', 'xml');
-        }
-
-        $helper = new DescriptorHelper();
-        $helper->describe($output, $this->command, array(
-            'format' => $input->getOption('format'),
-            'raw_text' => $input->getOption('raw'),
-        ));
-
-        $this->command = null;
-    }
-}
diff --git a/vendor/symfony/console/Command/ListCommand.php b/vendor/symfony/console/Command/ListCommand.php
deleted file mode 100644
index 5f970e8..0000000
--- a/vendor/symfony/console/Command/ListCommand.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?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\Command;
-
-use Symfony\Component\Console\Helper\DescriptorHelper;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Input\InputDefinition;
-
-/**
- * ListCommand displays the list of all available commands for the application.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ListCommand extends Command
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function configure()
-    {
-        $this
-            ->setName('list')
-            ->setDefinition($this->createDefinition())
-            ->setDescription('Lists commands')
-            ->setHelp(<<<EOF
-The <info>%command.name%</info> command lists all commands:
-
-  <info>php %command.full_name%</info>
-
-You can also display the commands for a specific namespace:
-
-  <info>php %command.full_name% test</info>
-
-You can also output the information in other formats by using the <comment>--format</comment> option:
-
-  <info>php %command.full_name% --format=xml</info>
-
-It's also possible to get raw list of commands (useful for embedding command runner):
-
-  <info>php %command.full_name% --raw</info>
-EOF
-            )
-        ;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getNativeDefinition()
-    {
-        return $this->createDefinition();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function execute(InputInterface $input, OutputInterface $output)
-    {
-        if ($input->getOption('xml')) {
-            @trigger_error('The --xml option was deprecated in version 2.7 and will be removed in version 3.0. Use the --format option instead.', E_USER_DEPRECATED);
-
-            $input->setOption('format', 'xml');
-        }
-
-        $helper = new DescriptorHelper();
-        $helper->describe($output, $this->getApplication(), array(
-            'format' => $input->getOption('format'),
-            'raw_text' => $input->getOption('raw'),
-            'namespace' => $input->getArgument('namespace'),
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    private function createDefinition()
-    {
-        return new InputDefinition(array(
-            new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'),
-            new InputOption('xml', null, InputOption::VALUE_NONE, 'To output list as XML'),
-            new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'),
-            new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'),
-        ));
-    }
-}
diff --git a/vendor/symfony/console/ConsoleEvents.php b/vendor/symfony/console/ConsoleEvents.php
deleted file mode 100644
index 1ed41b7..0000000
--- a/vendor/symfony/console/ConsoleEvents.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?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;
-
-/**
- * Contains all events dispatched by an Application.
- *
- * @author Francesco Levorato <git@flevour.net>
- */
-final class ConsoleEvents
-{
-    /**
-     * The COMMAND event allows you to attach listeners before any command is
-     * executed by the console. It also allows you to modify the command, input and output
-     * before they are handled to the command.
-     *
-     * The event listener method receives a Symfony\Component\Console\Event\ConsoleCommandEvent
-     * instance.
-     *
-     * @Event
-     *
-     * @var string
-     */
-    const COMMAND = 'console.command';
-
-    /**
-     * The TERMINATE event allows you to attach listeners after a command is
-     * executed by the console.
-     *
-     * The event listener method receives a Symfony\Component\Console\Event\ConsoleTerminateEvent
-     * instance.
-     *
-     * @Event
-     *
-     * @var string
-     */
-    const TERMINATE = 'console.terminate';
-
-    /**
-     * The EXCEPTION event occurs when an uncaught exception appears.
-     *
-     * This event allows you to deal with the exception or
-     * to modify the thrown exception. The event listener method receives
-     * a Symfony\Component\Console\Event\ConsoleExceptionEvent
-     * instance.
-     *
-     * @Event
-     *
-     * @var string
-     */
-    const EXCEPTION = 'console.exception';
-}
diff --git a/vendor/symfony/console/Descriptor/ApplicationDescription.php b/vendor/symfony/console/Descriptor/ApplicationDescription.php
deleted file mode 100644
index 0e87193..0000000
--- a/vendor/symfony/console/Descriptor/ApplicationDescription.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?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\Descriptor;
-
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Command\Command;
-
-/**
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- *
- * @internal
- */
-class ApplicationDescription
-{
-    const GLOBAL_NAMESPACE = '_global';
-
-    /**
-     * @var Application
-     */
-    private $application;
-
-    /**
-     * @var null|string
-     */
-    private $namespace;
-
-    /**
-     * @var array
-     */
-    private $namespaces;
-
-    /**
-     * @var Command[]
-     */
-    private $commands;
-
-    /**
-     * @var Command[]
-     */
-    private $aliases;
-
-    /**
-     * Constructor.
-     *
-     * @param Application $application
-     * @param string|null $namespace
-     */
-    public function __construct(Application $application, $namespace = null)
-    {
-        $this->application = $application;
-        $this->namespace = $namespace;
-    }
-
-    /**
-     * @return array
-     */
-    public function getNamespaces()
-    {
-        if (null === $this->namespaces) {
-            $this->inspectApplication();
-        }
-
-        return $this->namespaces;
-    }
-
-    /**
-     * @return Command[]
-     */
-    public function getCommands()
-    {
-        if (null === $this->commands) {
-            $this->inspectApplication();
-        }
-
-        return $this->commands;
-    }
-
-    /**
-     * @param string $name
-     *
-     * @return Command
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function getCommand($name)
-    {
-        if (!isset($this->commands[$name]) && !isset($this->aliases[$name])) {
-            throw new \InvalidArgumentException(sprintf('Command %s does not exist.', $name));
-        }
-
-        return isset($this->commands[$name]) ? $this->commands[$name] : $this->aliases[$name];
-    }
-
-    private function inspectApplication()
-    {
-        $this->commands = array();
-        $this->namespaces = array();
-
-        $all = $this->application->all($this->namespace ? $this->application->findNamespace($this->namespace) : null);
-        foreach ($this->sortCommands($all) as $namespace => $commands) {
-            $names = array();
-
-            /** @var Command $command */
-            foreach ($commands as $name => $command) {
-                if (!$command->getName()) {
-                    continue;
-                }
-
-                if ($command->getName() === $name) {
-                    $this->commands[$name] = $command;
-                } else {
-                    $this->aliases[$name] = $command;
-                }
-
-                $names[] = $name;
-            }
-
-            $this->namespaces[$namespace] = array('id' => $namespace, 'commands' => $names);
-        }
-    }
-
-    /**
-     * @param array $commands
-     *
-     * @return array
-     */
-    private function sortCommands(array $commands)
-    {
-        $namespacedCommands = array();
-        $globalCommands = array();
-        foreach ($commands as $name => $command) {
-            $key = $this->application->extractNamespace($name, 1);
-            if (!$key) {
-                $globalCommands['_global'][$name] = $command;
-            } else {
-                $namespacedCommands[$key][$name] = $command;
-            }
-        }
-        ksort($namespacedCommands);
-        $namespacedCommands = array_merge($globalCommands, $namespacedCommands);
-
-        foreach ($namespacedCommands as &$commandsSet) {
-            ksort($commandsSet);
-        }
-        // unset reference to keep scope clear
-        unset($commandsSet);
-
-        return $namespacedCommands;
-    }
-}
diff --git a/vendor/symfony/console/Descriptor/Descriptor.php b/vendor/symfony/console/Descriptor/Descriptor.php
deleted file mode 100644
index 49e2193..0000000
--- a/vendor/symfony/console/Descriptor/Descriptor.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?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\Descriptor;
-
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputDefinition;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- *
- * @internal
- */
-abstract class Descriptor implements DescriptorInterface
-{
-    /**
-     * @var OutputInterface
-     */
-    private $output;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function describe(OutputInterface $output, $object, array $options = array())
-    {
-        $this->output = $output;
-
-        switch (true) {
-            case $object instanceof InputArgument:
-                $this->describeInputArgument($object, $options);
-                break;
-            case $object instanceof InputOption:
-                $this->describeInputOption($object, $options);
-                break;
-            case $object instanceof InputDefinition:
-                $this->describeInputDefinition($object, $options);
-                break;
-            case $object instanceof Command:
-                $this->describeCommand($object, $options);
-                break;
-            case $object instanceof Application:
-                $this->describeApplication($object, $options);
-                break;
-            default:
-                throw new \InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_class($object)));
-        }
-    }
-
-    /**
-     * Writes content to output.
-     *
-     * @param string $content
-     * @param bool   $decorated
-     */
-    protected function write($content, $decorated = false)
-    {
-        $this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW);
-    }
-
-    /**
-     * Describes an InputArgument instance.
-     *
-     * @param InputArgument $argument
-     * @param array         $options
-     *
-     * @return string|mixed
-     */
-    abstract protected function describeInputArgument(InputArgument $argument, array $options = array());
-
-    /**
-     * Describes an InputOption instance.
-     *
-     * @param InputOption $option
-     * @param array       $options
-     *
-     * @return string|mixed
-     */
-    abstract protected function describeInputOption(InputOption $option, array $options = array());
-
-    /**
-     * Describes an InputDefinition instance.
-     *
-     * @param InputDefinition $definition
-     * @param array           $options
-     *
-     * @return string|mixed
-     */
-    abstract protected function describeInputDefinition(InputDefinition $definition, array $options = array());
-
-    /**
-     * Describes a Command instance.
-     *
-     * @param Command $command
-     * @param array   $options
-     *
-     * @return string|mixed
-     */
-    abstract protected function describeCommand(Command $command, array $options = array());
-
-    /**
-     * Describes an Application instance.
-     *
-     * @param Application $application
-     * @param array       $options
-     *
-     * @return string|mixed
-     */
-    abstract protected function describeApplication(Application $application, array $options = array());
-}
diff --git a/vendor/symfony/console/Descriptor/DescriptorInterface.php b/vendor/symfony/console/Descriptor/DescriptorInterface.php
deleted file mode 100644
index 3929b6d..0000000
--- a/vendor/symfony/console/Descriptor/DescriptorInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Descriptor;
-
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * Descriptor interface.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-interface DescriptorInterface
-{
-    /**
-     * Describes an InputArgument instance.
-     *
-     * @param OutputInterface $output
-     * @param object          $object
-     * @param array           $options
-     */
-    public function describe(OutputInterface $output, $object, array $options = array());
-}
diff --git a/vendor/symfony/console/Descriptor/JsonDescriptor.php b/vendor/symfony/console/Descriptor/JsonDescriptor.php
deleted file mode 100644
index 87e38fd..0000000
--- a/vendor/symfony/console/Descriptor/JsonDescriptor.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?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\Descriptor;
-
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputDefinition;
-use Symfony\Component\Console\Input\InputOption;
-
-/**
- * JSON descriptor.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- *
- * @internal
- */
-class JsonDescriptor extends Descriptor
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputArgument(InputArgument $argument, array $options = array())
-    {
-        $this->writeData($this->getInputArgumentData($argument), $options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputOption(InputOption $option, array $options = array())
-    {
-        $this->writeData($this->getInputOptionData($option), $options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputDefinition(InputDefinition $definition, array $options = array())
-    {
-        $this->writeData($this->getInputDefinitionData($definition), $options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeCommand(Command $command, array $options = array())
-    {
-        $this->writeData($this->getCommandData($command), $options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeApplication(Application $application, array $options = array())
-    {
-        $describedNamespace = isset($options['namespace']) ? $options['namespace'] : null;
-        $description = new ApplicationDescription($application, $describedNamespace);
-        $commands = array();
-
-        foreach ($description->getCommands() as $command) {
-            $commands[] = $this->getCommandData($command);
-        }
-
-        $data = $describedNamespace
-            ? array('commands' => $commands, 'namespace' => $describedNamespace)
-            : array('commands' => $commands, 'namespaces' => array_values($description->getNamespaces()));
-
-        $this->writeData($data, $options);
-    }
-
-    /**
-     * Writes data as json.
-     *
-     * @param array $data
-     * @param array $options
-     *
-     * @return array|string
-     */
-    private function writeData(array $data, array $options)
-    {
-        $this->write(json_encode($data, isset($options['json_encoding']) ? $options['json_encoding'] : 0));
-    }
-
-    /**
-     * @param InputArgument $argument
-     *
-     * @return array
-     */
-    private function getInputArgumentData(InputArgument $argument)
-    {
-        return array(
-            'name' => $argument->getName(),
-            'is_required' => $argument->isRequired(),
-            'is_array' => $argument->isArray(),
-            'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $argument->getDescription()),
-            'default' => $argument->getDefault(),
-        );
-    }
-
-    /**
-     * @param InputOption $option
-     *
-     * @return array
-     */
-    private function getInputOptionData(InputOption $option)
-    {
-        return array(
-            'name' => '--'.$option->getName(),
-            'shortcut' => $option->getShortcut() ? '-'.implode('|-', explode('|', $option->getShortcut())) : '',
-            'accept_value' => $option->acceptValue(),
-            'is_value_required' => $option->isValueRequired(),
-            'is_multiple' => $option->isArray(),
-            'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $option->getDescription()),
-            'default' => $option->getDefault(),
-        );
-    }
-
-    /**
-     * @param InputDefinition $definition
-     *
-     * @return array
-     */
-    private function getInputDefinitionData(InputDefinition $definition)
-    {
-        $inputArguments = array();
-        foreach ($definition->getArguments() as $name => $argument) {
-            $inputArguments[$name] = $this->getInputArgumentData($argument);
-        }
-
-        $inputOptions = array();
-        foreach ($definition->getOptions() as $name => $option) {
-            $inputOptions[$name] = $this->getInputOptionData($option);
-        }
-
-        return array('arguments' => $inputArguments, 'options' => $inputOptions);
-    }
-
-    /**
-     * @param Command $command
-     *
-     * @return array
-     */
-    private function getCommandData(Command $command)
-    {
-        $command->getSynopsis();
-        $command->mergeApplicationDefinition(false);
-
-        return array(
-            'name' => $command->getName(),
-            'usage' => array_merge(array($command->getSynopsis()), $command->getUsages(), $command->getAliases()),
-            'description' => $command->getDescription(),
-            'help' => $command->getProcessedHelp(),
-            'definition' => $this->getInputDefinitionData($command->getNativeDefinition()),
-        );
-    }
-}
diff --git a/vendor/symfony/console/Descriptor/MarkdownDescriptor.php b/vendor/symfony/console/Descriptor/MarkdownDescriptor.php
deleted file mode 100644
index d3d76a4..0000000
--- a/vendor/symfony/console/Descriptor/MarkdownDescriptor.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?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\Descriptor;
-
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputDefinition;
-use Symfony\Component\Console\Input\InputOption;
-
-/**
- * Markdown descriptor.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- *
- * @internal
- */
-class MarkdownDescriptor extends Descriptor
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputArgument(InputArgument $argument, array $options = array())
-    {
-        $this->write(
-            '**'.$argument->getName().':**'."\n\n"
-            .'* Name: '.($argument->getName() ?: '<none>')."\n"
-            .'* Is required: '.($argument->isRequired() ? 'yes' : 'no')."\n"
-            .'* Is array: '.($argument->isArray() ? 'yes' : 'no')."\n"
-            .'* Description: '.preg_replace('/\s*[\r\n]\s*/', "\n  ", $argument->getDescription() ?: '<none>')."\n"
-            .'* Default: `'.str_replace("\n", '', var_export($argument->getDefault(), true)).'`'
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputOption(InputOption $option, array $options = array())
-    {
-        $this->write(
-            '**'.$option->getName().':**'."\n\n"
-            .'* Name: `--'.$option->getName().'`'."\n"
-            .'* Shortcut: '.($option->getShortcut() ? '`-'.implode('|-', explode('|', $option->getShortcut())).'`' : '<none>')."\n"
-            .'* Accept value: '.($option->acceptValue() ? 'yes' : 'no')."\n"
-            .'* Is value required: '.($option->isValueRequired() ? 'yes' : 'no')."\n"
-            .'* Is multiple: '.($option->isArray() ? 'yes' : 'no')."\n"
-            .'* Description: '.preg_replace('/\s*[\r\n]\s*/', "\n  ", $option->getDescription() ?: '<none>')."\n"
-            .'* Default: `'.str_replace("\n", '', var_export($option->getDefault(), true)).'`'
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputDefinition(InputDefinition $definition, array $options = array())
-    {
-        if ($showArguments = count($definition->getArguments()) > 0) {
-            $this->write('### Arguments:');
-            foreach ($definition->getArguments() as $argument) {
-                $this->write("\n\n");
-                $this->write($this->describeInputArgument($argument));
-            }
-        }
-
-        if (count($definition->getOptions()) > 0) {
-            if ($showArguments) {
-                $this->write("\n\n");
-            }
-
-            $this->write('### Options:');
-            foreach ($definition->getOptions() as $option) {
-                $this->write("\n\n");
-                $this->write($this->describeInputOption($option));
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeCommand(Command $command, array $options = array())
-    {
-        $command->getSynopsis();
-        $command->mergeApplicationDefinition(false);
-
-        $this->write(
-            $command->getName()."\n"
-            .str_repeat('-', strlen($command->getName()))."\n\n"
-            .'* Description: '.($command->getDescription() ?: '<none>')."\n"
-            .'* Usage:'."\n\n"
-            .array_reduce(array_merge(array($command->getSynopsis()), $command->getAliases(), $command->getUsages()), function ($carry, $usage) {
-                return $carry .= '  * `'.$usage.'`'."\n";
-            })
-        );
-
-        if ($help = $command->getProcessedHelp()) {
-            $this->write("\n");
-            $this->write($help);
-        }
-
-        if ($command->getNativeDefinition()) {
-            $this->write("\n\n");
-            $this->describeInputDefinition($command->getNativeDefinition());
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeApplication(Application $application, array $options = array())
-    {
-        $describedNamespace = isset($options['namespace']) ? $options['namespace'] : null;
-        $description = new ApplicationDescription($application, $describedNamespace);
-
-        $this->write($application->getName()."\n".str_repeat('=', strlen($application->getName())));
-
-        foreach ($description->getNamespaces() as $namespace) {
-            if (ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) {
-                $this->write("\n\n");
-                $this->write('**'.$namespace['id'].':**');
-            }
-
-            $this->write("\n\n");
-            $this->write(implode("\n", array_map(function ($commandName) {
-                return '* '.$commandName;
-            }, $namespace['commands'])));
-        }
-
-        foreach ($description->getCommands() as $command) {
-            $this->write("\n\n");
-            $this->write($this->describeCommand($command));
-        }
-    }
-}
diff --git a/vendor/symfony/console/Descriptor/TextDescriptor.php b/vendor/symfony/console/Descriptor/TextDescriptor.php
deleted file mode 100644
index 57e09e4..0000000
--- a/vendor/symfony/console/Descriptor/TextDescriptor.php
+++ /dev/null
@@ -1,287 +0,0 @@
-<?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\Descriptor;
-
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputDefinition;
-use Symfony\Component\Console\Input\InputOption;
-
-/**
- * Text descriptor.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- *
- * @internal
- */
-class TextDescriptor extends Descriptor
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputArgument(InputArgument $argument, array $options = array())
-    {
-        if (null !== $argument->getDefault() && (!is_array($argument->getDefault()) || count($argument->getDefault()))) {
-            $default = sprintf('<comment> [default: %s]</comment>', $this->formatDefaultValue($argument->getDefault()));
-        } else {
-            $default = '';
-        }
-
-        $totalWidth = isset($options['total_width']) ? $options['total_width'] : strlen($argument->getName());
-        $spacingWidth = $totalWidth - strlen($argument->getName()) + 2;
-
-        $this->writeText(sprintf('  <info>%s</info>%s%s%s',
-            $argument->getName(),
-            str_repeat(' ', $spacingWidth),
-            // + 17 = 2 spaces + <info> + </info> + 2 spaces
-            preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 17), $argument->getDescription()),
-            $default
-        ), $options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputOption(InputOption $option, array $options = array())
-    {
-        if ($option->acceptValue() && null !== $option->getDefault() && (!is_array($option->getDefault()) || count($option->getDefault()))) {
-            $default = sprintf('<comment> [default: %s]</comment>', $this->formatDefaultValue($option->getDefault()));
-        } else {
-            $default = '';
-        }
-
-        $value = '';
-        if ($option->acceptValue()) {
-            $value = '='.strtoupper($option->getName());
-
-            if ($option->isValueOptional()) {
-                $value = '['.$value.']';
-            }
-        }
-
-        $totalWidth = isset($options['total_width']) ? $options['total_width'] : $this->calculateTotalWidthForOptions(array($option));
-        $synopsis = sprintf('%s%s',
-            $option->getShortcut() ? sprintf('-%s, ', $option->getShortcut()) : '    ',
-            sprintf('--%s%s', $option->getName(), $value)
-        );
-
-        $spacingWidth = $totalWidth - strlen($synopsis) + 2;
-
-        $this->writeText(sprintf('  <info>%s</info>%s%s%s%s',
-            $synopsis,
-            str_repeat(' ', $spacingWidth),
-            // + 17 = 2 spaces + <info> + </info> + 2 spaces
-            preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 17), $option->getDescription()),
-            $default,
-            $option->isArray() ? '<comment> (multiple values allowed)</comment>' : ''
-        ), $options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputDefinition(InputDefinition $definition, array $options = array())
-    {
-        $totalWidth = $this->calculateTotalWidthForOptions($definition->getOptions());
-        foreach ($definition->getArguments() as $argument) {
-            $totalWidth = max($totalWidth, strlen($argument->getName()));
-        }
-
-        if ($definition->getArguments()) {
-            $this->writeText('<comment>Arguments:</comment>', $options);
-            $this->writeText("\n");
-            foreach ($definition->getArguments() as $argument) {
-                $this->describeInputArgument($argument, array_merge($options, array('total_width' => $totalWidth)));
-                $this->writeText("\n");
-            }
-        }
-
-        if ($definition->getArguments() && $definition->getOptions()) {
-            $this->writeText("\n");
-        }
-
-        if ($definition->getOptions()) {
-            $laterOptions = array();
-
-            $this->writeText('<comment>Options:</comment>', $options);
-            foreach ($definition->getOptions() as $option) {
-                if (strlen($option->getShortcut()) > 1) {
-                    $laterOptions[] = $option;
-                    continue;
-                }
-                $this->writeText("\n");
-                $this->describeInputOption($option, array_merge($options, array('total_width' => $totalWidth)));
-            }
-            foreach ($laterOptions as $option) {
-                $this->writeText("\n");
-                $this->describeInputOption($option, array_merge($options, array('total_width' => $totalWidth)));
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeCommand(Command $command, array $options = array())
-    {
-        $command->getSynopsis(true);
-        $command->getSynopsis(false);
-        $command->mergeApplicationDefinition(false);
-
-        $this->writeText('<comment>Usage:</comment>', $options);
-        foreach (array_merge(array($command->getSynopsis(true)), $command->getAliases(), $command->getUsages()) as $usage) {
-            $this->writeText("\n");
-            $this->writeText('  '.$usage, $options);
-        }
-        $this->writeText("\n");
-
-        $definition = $command->getNativeDefinition();
-        if ($definition->getOptions() || $definition->getArguments()) {
-            $this->writeText("\n");
-            $this->describeInputDefinition($definition, $options);
-            $this->writeText("\n");
-        }
-
-        if ($help = $command->getProcessedHelp()) {
-            $this->writeText("\n");
-            $this->writeText('<comment>Help:</comment>', $options);
-            $this->writeText("\n");
-            $this->writeText(' '.str_replace("\n", "\n ", $help), $options);
-            $this->writeText("\n");
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeApplication(Application $application, array $options = array())
-    {
-        $describedNamespace = isset($options['namespace']) ? $options['namespace'] : null;
-        $description = new ApplicationDescription($application, $describedNamespace);
-
-        if (isset($options['raw_text']) && $options['raw_text']) {
-            $width = $this->getColumnWidth($description->getCommands());
-
-            foreach ($description->getCommands() as $command) {
-                $this->writeText(sprintf("%-${width}s %s", $command->getName(), $command->getDescription()), $options);
-                $this->writeText("\n");
-            }
-        } else {
-            if ('' != $help = $application->getHelp()) {
-                $this->writeText("$help\n\n", $options);
-            }
-
-            $this->writeText("<comment>Usage:</comment>\n", $options);
-            $this->writeText("  command [options] [arguments]\n\n", $options);
-
-            $this->describeInputDefinition(new InputDefinition($application->getDefinition()->getOptions()), $options);
-
-            $this->writeText("\n");
-            $this->writeText("\n");
-
-            $width = $this->getColumnWidth($description->getCommands());
-
-            if ($describedNamespace) {
-                $this->writeText(sprintf('<comment>Available commands for the "%s" namespace:</comment>', $describedNamespace), $options);
-            } else {
-                $this->writeText('<comment>Available commands:</comment>', $options);
-            }
-
-            // add commands by namespace
-            foreach ($description->getNamespaces() as $namespace) {
-                if (!$describedNamespace && ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) {
-                    $this->writeText("\n");
-                    $this->writeText(' <comment>'.$namespace['id'].'</comment>', $options);
-                }
-
-                foreach ($namespace['commands'] as $name) {
-                    $this->writeText("\n");
-                    $spacingWidth = $width - strlen($name);
-                    $this->writeText(sprintf('  <info>%s</info>%s%s', $name, str_repeat(' ', $spacingWidth), $description->getCommand($name)->getDescription()), $options);
-                }
-            }
-
-            $this->writeText("\n");
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    private function writeText($content, array $options = array())
-    {
-        $this->write(
-            isset($options['raw_text']) && $options['raw_text'] ? strip_tags($content) : $content,
-            isset($options['raw_output']) ? !$options['raw_output'] : true
-        );
-    }
-
-    /**
-     * Formats input option/argument default value.
-     *
-     * @param mixed $default
-     *
-     * @return string
-     */
-    private function formatDefaultValue($default)
-    {
-        if (PHP_VERSION_ID < 50400) {
-            return str_replace('\/', '/', json_encode($default));
-        }
-
-        return json_encode($default, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
-    }
-
-    /**
-     * @param Command[] $commands
-     *
-     * @return int
-     */
-    private function getColumnWidth(array $commands)
-    {
-        $widths = array();
-
-        foreach ($commands as $command) {
-            $widths[] = strlen($command->getName());
-            foreach ($command->getAliases() as $alias) {
-                $widths[] = strlen($alias);
-            }
-        }
-
-        return max($widths) + 2;
-    }
-
-    /**
-     * @param InputOption[] $options
-     *
-     * @return int
-     */
-    private function calculateTotalWidthForOptions($options)
-    {
-        $totalWidth = 0;
-        foreach ($options as $option) {
-            // "-" + shortcut + ", --" + name
-            $nameLength = 1 + max(strlen($option->getShortcut()), 1) + 4 + strlen($option->getName());
-
-            if ($option->acceptValue()) {
-                $valueLength = 1 + strlen($option->getName()); // = + value
-                $valueLength += $option->isValueOptional() ? 2 : 0; // [ + ]
-
-                $nameLength += $valueLength;
-            }
-            $totalWidth = max($totalWidth, $nameLength);
-        }
-
-        return $totalWidth;
-    }
-}
diff --git a/vendor/symfony/console/Descriptor/XmlDescriptor.php b/vendor/symfony/console/Descriptor/XmlDescriptor.php
deleted file mode 100644
index b5676be..0000000
--- a/vendor/symfony/console/Descriptor/XmlDescriptor.php
+++ /dev/null
@@ -1,263 +0,0 @@
-<?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\Descriptor;
-
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputDefinition;
-use Symfony\Component\Console\Input\InputOption;
-
-/**
- * XML descriptor.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- *
- * @internal
- */
-class XmlDescriptor extends Descriptor
-{
-    /**
-     * @param InputDefinition $definition
-     *
-     * @return \DOMDocument
-     */
-    public function getInputDefinitionDocument(InputDefinition $definition)
-    {
-        $dom = new \DOMDocument('1.0', 'UTF-8');
-        $dom->appendChild($definitionXML = $dom->createElement('definition'));
-
-        $definitionXML->appendChild($argumentsXML = $dom->createElement('arguments'));
-        foreach ($definition->getArguments() as $argument) {
-            $this->appendDocument($argumentsXML, $this->getInputArgumentDocument($argument));
-        }
-
-        $definitionXML->appendChild($optionsXML = $dom->createElement('options'));
-        foreach ($definition->getOptions() as $option) {
-            $this->appendDocument($optionsXML, $this->getInputOptionDocument($option));
-        }
-
-        return $dom;
-    }
-
-    /**
-     * @param Command $command
-     *
-     * @return \DOMDocument
-     */
-    public function getCommandDocument(Command $command)
-    {
-        $dom = new \DOMDocument('1.0', 'UTF-8');
-        $dom->appendChild($commandXML = $dom->createElement('command'));
-
-        $command->getSynopsis();
-        $command->mergeApplicationDefinition(false);
-
-        $commandXML->setAttribute('id', $command->getName());
-        $commandXML->setAttribute('name', $command->getName());
-
-        $commandXML->appendChild($usagesXML = $dom->createElement('usages'));
-
-        foreach (array_merge(array($command->getSynopsis()), $command->getAliases(), $command->getUsages()) as $usage) {
-            $usagesXML->appendChild($dom->createElement('usage', $usage));
-        }
-
-        $commandXML->appendChild($descriptionXML = $dom->createElement('description'));
-        $descriptionXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getDescription())));
-
-        $commandXML->appendChild($helpXML = $dom->createElement('help'));
-        $helpXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getProcessedHelp())));
-
-        $definitionXML = $this->getInputDefinitionDocument($command->getNativeDefinition());
-        $this->appendDocument($commandXML, $definitionXML->getElementsByTagName('definition')->item(0));
-
-        return $dom;
-    }
-
-    /**
-     * @param Application $application
-     * @param string|null $namespace
-     *
-     * @return \DOMDocument
-     */
-    public function getApplicationDocument(Application $application, $namespace = null)
-    {
-        $dom = new \DOMDocument('1.0', 'UTF-8');
-        $dom->appendChild($rootXml = $dom->createElement('symfony'));
-
-        if ($application->getName() !== 'UNKNOWN') {
-            $rootXml->setAttribute('name', $application->getName());
-            if ($application->getVersion() !== 'UNKNOWN') {
-                $rootXml->setAttribute('version', $application->getVersion());
-            }
-        }
-
-        $rootXml->appendChild($commandsXML = $dom->createElement('commands'));
-
-        $description = new ApplicationDescription($application, $namespace);
-
-        if ($namespace) {
-            $commandsXML->setAttribute('namespace', $namespace);
-        }
-
-        foreach ($description->getCommands() as $command) {
-            $this->appendDocument($commandsXML, $this->getCommandDocument($command));
-        }
-
-        if (!$namespace) {
-            $rootXml->appendChild($namespacesXML = $dom->createElement('namespaces'));
-
-            foreach ($description->getNamespaces() as $namespaceDescription) {
-                $namespacesXML->appendChild($namespaceArrayXML = $dom->createElement('namespace'));
-                $namespaceArrayXML->setAttribute('id', $namespaceDescription['id']);
-
-                foreach ($namespaceDescription['commands'] as $name) {
-                    $namespaceArrayXML->appendChild($commandXML = $dom->createElement('command'));
-                    $commandXML->appendChild($dom->createTextNode($name));
-                }
-            }
-        }
-
-        return $dom;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputArgument(InputArgument $argument, array $options = array())
-    {
-        $this->writeDocument($this->getInputArgumentDocument($argument));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputOption(InputOption $option, array $options = array())
-    {
-        $this->writeDocument($this->getInputOptionDocument($option));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeInputDefinition(InputDefinition $definition, array $options = array())
-    {
-        $this->writeDocument($this->getInputDefinitionDocument($definition));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeCommand(Command $command, array $options = array())
-    {
-        $this->writeDocument($this->getCommandDocument($command));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function describeApplication(Application $application, array $options = array())
-    {
-        $this->writeDocument($this->getApplicationDocument($application, isset($options['namespace']) ? $options['namespace'] : null));
-    }
-
-    /**
-     * Appends document children to parent node.
-     *
-     * @param \DOMNode $parentNode
-     * @param \DOMNode $importedParent
-     */
-    private function appendDocument(\DOMNode $parentNode, \DOMNode $importedParent)
-    {
-        foreach ($importedParent->childNodes as $childNode) {
-            $parentNode->appendChild($parentNode->ownerDocument->importNode($childNode, true));
-        }
-    }
-
-    /**
-     * Writes DOM document.
-     *
-     * @param \DOMDocument $dom
-     *
-     * @return \DOMDocument|string
-     */
-    private function writeDocument(\DOMDocument $dom)
-    {
-        $dom->formatOutput = true;
-        $this->write($dom->saveXML());
-    }
-
-    /**
-     * @param InputArgument $argument
-     *
-     * @return \DOMDocument
-     */
-    private function getInputArgumentDocument(InputArgument $argument)
-    {
-        $dom = new \DOMDocument('1.0', 'UTF-8');
-
-        $dom->appendChild($objectXML = $dom->createElement('argument'));
-        $objectXML->setAttribute('name', $argument->getName());
-        $objectXML->setAttribute('is_required', $argument->isRequired() ? 1 : 0);
-        $objectXML->setAttribute('is_array', $argument->isArray() ? 1 : 0);
-        $objectXML->appendChild($descriptionXML = $dom->createElement('description'));
-        $descriptionXML->appendChild($dom->createTextNode($argument->getDescription()));
-
-        $objectXML->appendChild($defaultsXML = $dom->createElement('defaults'));
-        $defaults = is_array($argument->getDefault()) ? $argument->getDefault() : (is_bool($argument->getDefault()) ? array(var_export($argument->getDefault(), true)) : ($argument->getDefault() ? array($argument->getDefault()) : array()));
-        foreach ($defaults as $default) {
-            $defaultsXML->appendChild($defaultXML = $dom->createElement('default'));
-            $defaultXML->appendChild($dom->createTextNode($default));
-        }
-
-        return $dom;
-    }
-
-    /**
-     * @param InputOption $option
-     *
-     * @return \DOMDocument
-     */
-    private function getInputOptionDocument(InputOption $option)
-    {
-        $dom = new \DOMDocument('1.0', 'UTF-8');
-
-        $dom->appendChild($objectXML = $dom->createElement('option'));
-        $objectXML->setAttribute('name', '--'.$option->getName());
-        $pos = strpos($option->getShortcut(), '|');
-        if (false !== $pos) {
-            $objectXML->setAttribute('shortcut', '-'.substr($option->getShortcut(), 0, $pos));
-            $objectXML->setAttribute('shortcuts', '-'.implode('|-', explode('|', $option->getShortcut())));
-        } else {
-            $objectXML->setAttribute('shortcut', $option->getShortcut() ? '-'.$option->getShortcut() : '');
-        }
-        $objectXML->setAttribute('accept_value', $option->acceptValue() ? 1 : 0);
-        $objectXML->setAttribute('is_value_required', $option->isValueRequired() ? 1 : 0);
-        $objectXML->setAttribute('is_multiple', $option->isArray() ? 1 : 0);
-        $objectXML->appendChild($descriptionXML = $dom->createElement('description'));
-        $descriptionXML->appendChild($dom->createTextNode($option->getDescription()));
-
-        if ($option->acceptValue()) {
-            $defaults = is_array($option->getDefault()) ? $option->getDefault() : (is_bool($option->getDefault()) ? array(var_export($option->getDefault(), true)) : ($option->getDefault() ? array($option->getDefault()) : array()));
-            $objectXML->appendChild($defaultsXML = $dom->createElement('defaults'));
-
-            if (!empty($defaults)) {
-                foreach ($defaults as $default) {
-                    $defaultsXML->appendChild($defaultXML = $dom->createElement('default'));
-                    $defaultXML->appendChild($dom->createTextNode($default));
-                }
-            }
-        }
-
-        return $dom;
-    }
-}
diff --git a/vendor/symfony/console/Event/ConsoleCommandEvent.php b/vendor/symfony/console/Event/ConsoleCommandEvent.php
deleted file mode 100644
index 92adf1e..0000000
--- a/vendor/symfony/console/Event/ConsoleCommandEvent.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?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\Event;
-
-/**
- * Allows to do things before the command is executed, like skipping the command or changing the input.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ConsoleCommandEvent extends ConsoleEvent
-{
-    /**
-     * The return code for skipped commands, this will also be passed into the terminate event.
-     */
-    const RETURN_CODE_DISABLED = 113;
-
-    /**
-     * Indicates if the command should be run or skipped.
-     *
-     * @var bool
-     */
-    private $commandShouldRun = true;
-
-    /**
-     * Disables the command, so it won't be run.
-     *
-     * @return bool
-     */
-    public function disableCommand()
-    {
-        return $this->commandShouldRun = false;
-    }
-
-    /**
-     * Enables the command.
-     *
-     * @return bool
-     */
-    public function enableCommand()
-    {
-        return $this->commandShouldRun = true;
-    }
-
-    /**
-     * Returns true if the command is runnable, false otherwise.
-     *
-     * @return bool
-     */
-    public function commandShouldRun()
-    {
-        return $this->commandShouldRun;
-    }
-}
diff --git a/vendor/symfony/console/Event/ConsoleEvent.php b/vendor/symfony/console/Event/ConsoleEvent.php
deleted file mode 100644
index ab620c4..0000000
--- a/vendor/symfony/console/Event/ConsoleEvent.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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\Event;
-
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\EventDispatcher\Event;
-
-/**
- * Allows to inspect input and output of a command.
- *
- * @author Francesco Levorato <git@flevour.net>
- */
-class ConsoleEvent extends Event
-{
-    protected $command;
-
-    private $input;
-    private $output;
-
-    public function __construct(Command $command, InputInterface $input, OutputInterface $output)
-    {
-        $this->command = $command;
-        $this->input = $input;
-        $this->output = $output;
-    }
-
-    /**
-     * Gets the command that is executed.
-     *
-     * @return Command A Command instance
-     */
-    public function getCommand()
-    {
-        return $this->command;
-    }
-
-    /**
-     * Gets the input instance.
-     *
-     * @return InputInterface An InputInterface instance
-     */
-    public function getInput()
-    {
-        return $this->input;
-    }
-
-    /**
-     * Gets the output instance.
-     *
-     * @return OutputInterface An OutputInterface instance
-     */
-    public function getOutput()
-    {
-        return $this->output;
-    }
-}
diff --git a/vendor/symfony/console/Event/ConsoleExceptionEvent.php b/vendor/symfony/console/Event/ConsoleExceptionEvent.php
deleted file mode 100644
index 603b7ee..0000000
--- a/vendor/symfony/console/Event/ConsoleExceptionEvent.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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\Event;
-
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * Allows to handle exception thrown in a command.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ConsoleExceptionEvent extends ConsoleEvent
-{
-    private $exception;
-    private $exitCode;
-
-    public function __construct(Command $command, InputInterface $input, OutputInterface $output, \Exception $exception, $exitCode)
-    {
-        parent::__construct($command, $input, $output);
-
-        $this->setException($exception);
-        $this->exitCode = (int) $exitCode;
-    }
-
-    /**
-     * Returns the thrown exception.
-     *
-     * @return \Exception The thrown exception
-     */
-    public function getException()
-    {
-        return $this->exception;
-    }
-
-    /**
-     * Replaces the thrown exception.
-     *
-     * This exception will be thrown if no response is set in the event.
-     *
-     * @param \Exception $exception The thrown exception
-     */
-    public function setException(\Exception $exception)
-    {
-        $this->exception = $exception;
-    }
-
-    /**
-     * Gets the exit code.
-     *
-     * @return int The command exit code
-     */
-    public function getExitCode()
-    {
-        return $this->exitCode;
-    }
-}
diff --git a/vendor/symfony/console/Event/ConsoleTerminateEvent.php b/vendor/symfony/console/Event/ConsoleTerminateEvent.php
deleted file mode 100644
index b6a5d7c..0000000
--- a/vendor/symfony/console/Event/ConsoleTerminateEvent.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\Event;
-
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * Allows to manipulate the exit code of a command after its execution.
- *
- * @author Francesco Levorato <git@flevour.net>
- */
-class ConsoleTerminateEvent extends ConsoleEvent
-{
-    /**
-     * The exit code of the command.
-     *
-     * @var int
-     */
-    private $exitCode;
-
-    public function __construct(Command $command, InputInterface $input, OutputInterface $output, $exitCode)
-    {
-        parent::__construct($command, $input, $output);
-
-        $this->setExitCode($exitCode);
-    }
-
-    /**
-     * Sets the exit code.
-     *
-     * @param int $exitCode The command exit code
-     */
-    public function setExitCode($exitCode)
-    {
-        $this->exitCode = (int) $exitCode;
-    }
-
-    /**
-     * Gets the exit code.
-     *
-     * @return int The command exit code
-     */
-    public function getExitCode()
-    {
-        return $this->exitCode;
-    }
-}
diff --git a/vendor/symfony/console/Formatter/OutputFormatter.php b/vendor/symfony/console/Formatter/OutputFormatter.php
deleted file mode 100644
index 7a78eb2..0000000
--- a/vendor/symfony/console/Formatter/OutputFormatter.php
+++ /dev/null
@@ -1,226 +0,0 @@
-<?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\Formatter;
-
-/**
- * Formatter class for console output.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class OutputFormatter implements OutputFormatterInterface
-{
-    private $decorated;
-    private $styles = array();
-    private $styleStack;
-
-    /**
-     * Escapes "<" special char in given text.
-     *
-     * @param string $text Text to escape
-     *
-     * @return string Escaped text
-     */
-    public static function escape($text)
-    {
-        return preg_replace('/([^\\\\]?)</', '$1\\<', $text);
-    }
-
-    /**
-     * Initializes console output formatter.
-     *
-     * @param bool                            $decorated Whether this formatter should actually decorate strings
-     * @param OutputFormatterStyleInterface[] $styles    Array of "name => FormatterStyle" instances
-     */
-    public function __construct($decorated = false, array $styles = array())
-    {
-        $this->decorated = (bool) $decorated;
-
-        $this->setStyle('error', new OutputFormatterStyle('white', 'red'));
-        $this->setStyle('info', new OutputFormatterStyle('green'));
-        $this->setStyle('comment', new OutputFormatterStyle('yellow'));
-        $this->setStyle('question', new OutputFormatterStyle('black', 'cyan'));
-
-        foreach ($styles as $name => $style) {
-            $this->setStyle($name, $style);
-        }
-
-        $this->styleStack = new OutputFormatterStyleStack();
-    }
-
-    /**
-     * Sets the decorated flag.
-     *
-     * @param bool $decorated Whether to decorate the messages or not
-     */
-    public function setDecorated($decorated)
-    {
-        $this->decorated = (bool) $decorated;
-    }
-
-    /**
-     * Gets the decorated flag.
-     *
-     * @return bool true if the output will decorate messages, false otherwise
-     */
-    public function isDecorated()
-    {
-        return $this->decorated;
-    }
-
-    /**
-     * Sets a new style.
-     *
-     * @param string                        $name  The style name
-     * @param OutputFormatterStyleInterface $style The style instance
-     */
-    public function setStyle($name, OutputFormatterStyleInterface $style)
-    {
-        $this->styles[strtolower($name)] = $style;
-    }
-
-    /**
-     * Checks if output formatter has style with specified name.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function hasStyle($name)
-    {
-        return isset($this->styles[strtolower($name)]);
-    }
-
-    /**
-     * Gets style options from style with specified name.
-     *
-     * @param string $name
-     *
-     * @return OutputFormatterStyleInterface
-     *
-     * @throws \InvalidArgumentException When style isn't defined
-     */
-    public function getStyle($name)
-    {
-        if (!$this->hasStyle($name)) {
-            throw new \InvalidArgumentException(sprintf('Undefined style: %s', $name));
-        }
-
-        return $this->styles[strtolower($name)];
-    }
-
-    /**
-     * Formats a message according to the given styles.
-     *
-     * @param string $message The message to style
-     *
-     * @return string The styled message
-     */
-    public function format($message)
-    {
-        $message = (string) $message;
-        $offset = 0;
-        $output = '';
-        $tagRegex = '[a-z][a-z0-9_=;-]*';
-        preg_match_all("#<(($tagRegex) | /($tagRegex)?)>#ix", $message, $matches, PREG_OFFSET_CAPTURE);
-        foreach ($matches[0] as $i => $match) {
-            $pos = $match[1];
-            $text = $match[0];
-
-            if (0 != $pos && '\\' == $message[$pos - 1]) {
-                continue;
-            }
-
-            // add the text up to the next tag
-            $output .= $this->applyCurrentStyle(substr($message, $offset, $pos - $offset));
-            $offset = $pos + strlen($text);
-
-            // opening tag?
-            if ($open = '/' != $text[1]) {
-                $tag = $matches[1][$i][0];
-            } else {
-                $tag = isset($matches[3][$i][0]) ? $matches[3][$i][0] : '';
-            }
-
-            if (!$open && !$tag) {
-                // </>
-                $this->styleStack->pop();
-            } elseif (false === $style = $this->createStyleFromString(strtolower($tag))) {
-                $output .= $this->applyCurrentStyle($text);
-            } elseif ($open) {
-                $this->styleStack->push($style);
-            } else {
-                $this->styleStack->pop($style);
-            }
-        }
-
-        $output .= $this->applyCurrentStyle(substr($message, $offset));
-
-        return str_replace('\\<', '<', $output);
-    }
-
-    /**
-     * @return OutputFormatterStyleStack
-     */
-    public function getStyleStack()
-    {
-        return $this->styleStack;
-    }
-
-    /**
-     * Tries to create new style instance from string.
-     *
-     * @param string $string
-     *
-     * @return OutputFormatterStyle|bool false if string is not format string
-     */
-    private function createStyleFromString($string)
-    {
-        if (isset($this->styles[$string])) {
-            return $this->styles[$string];
-        }
-
-        if (!preg_match_all('/([^=]+)=([^;]+)(;|$)/', strtolower($string), $matches, PREG_SET_ORDER)) {
-            return false;
-        }
-
-        $style = new OutputFormatterStyle();
-        foreach ($matches as $match) {
-            array_shift($match);
-
-            if ('fg' == $match[0]) {
-                $style->setForeground($match[1]);
-            } elseif ('bg' == $match[0]) {
-                $style->setBackground($match[1]);
-            } else {
-                try {
-                    $style->setOption($match[1]);
-                } catch (\InvalidArgumentException $e) {
-                    return false;
-                }
-            }
-        }
-
-        return $style;
-    }
-
-    /**
-     * Applies current style from stack to text, if must be applied.
-     *
-     * @param string $text Input text
-     *
-     * @return string Styled text
-     */
-    private function applyCurrentStyle($text)
-    {
-        return $this->isDecorated() && strlen($text) > 0 ? $this->styleStack->getCurrent()->apply($text) : $text;
-    }
-}
diff --git a/vendor/symfony/console/Formatter/OutputFormatterInterface.php b/vendor/symfony/console/Formatter/OutputFormatterInterface.php
deleted file mode 100644
index 5a52ba0..0000000
--- a/vendor/symfony/console/Formatter/OutputFormatterInterface.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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\Formatter;
-
-/**
- * Formatter interface for console output.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface OutputFormatterInterface
-{
-    /**
-     * Sets the decorated flag.
-     *
-     * @param bool $decorated Whether to decorate the messages or not
-     */
-    public function setDecorated($decorated);
-
-    /**
-     * Gets the decorated flag.
-     *
-     * @return bool true if the output will decorate messages, false otherwise
-     */
-    public function isDecorated();
-
-    /**
-     * Sets a new style.
-     *
-     * @param string                        $name  The style name
-     * @param OutputFormatterStyleInterface $style The style instance
-     */
-    public function setStyle($name, OutputFormatterStyleInterface $style);
-
-    /**
-     * Checks if output formatter has style with specified name.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function hasStyle($name);
-
-    /**
-     * Gets style options from style with specified name.
-     *
-     * @param string $name
-     *
-     * @return OutputFormatterStyleInterface
-     */
-    public function getStyle($name);
-
-    /**
-     * Formats a message according to the given styles.
-     *
-     * @param string $message The message to style
-     *
-     * @return string The styled message
-     */
-    public function format($message);
-}
diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyle.php b/vendor/symfony/console/Formatter/OutputFormatterStyle.php
deleted file mode 100644
index 4d3eda3..0000000
--- a/vendor/symfony/console/Formatter/OutputFormatterStyle.php
+++ /dev/null
@@ -1,219 +0,0 @@
-<?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\Formatter;
-
-/**
- * Formatter style class for defining styles.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class OutputFormatterStyle implements OutputFormatterStyleInterface
-{
-    private static $availableForegroundColors = array(
-        'black' => array('set' => 30, 'unset' => 39),
-        'red' => array('set' => 31, 'unset' => 39),
-        'green' => array('set' => 32, 'unset' => 39),
-        'yellow' => array('set' => 33, 'unset' => 39),
-        'blue' => array('set' => 34, 'unset' => 39),
-        'magenta' => array('set' => 35, 'unset' => 39),
-        'cyan' => array('set' => 36, 'unset' => 39),
-        'white' => array('set' => 37, 'unset' => 39),
-        'default' => array('set' => 39, 'unset' => 39),
-    );
-    private static $availableBackgroundColors = array(
-        'black' => array('set' => 40, 'unset' => 49),
-        'red' => array('set' => 41, 'unset' => 49),
-        'green' => array('set' => 42, 'unset' => 49),
-        'yellow' => array('set' => 43, 'unset' => 49),
-        'blue' => array('set' => 44, 'unset' => 49),
-        'magenta' => array('set' => 45, 'unset' => 49),
-        'cyan' => array('set' => 46, 'unset' => 49),
-        'white' => array('set' => 47, 'unset' => 49),
-        'default' => array('set' => 49, 'unset' => 49),
-    );
-    private static $availableOptions = array(
-        'bold' => array('set' => 1, 'unset' => 22),
-        'underscore' => array('set' => 4, 'unset' => 24),
-        'blink' => array('set' => 5, 'unset' => 25),
-        'reverse' => array('set' => 7, 'unset' => 27),
-        'conceal' => array('set' => 8, 'unset' => 28),
-    );
-
-    private $foreground;
-    private $background;
-    private $options = array();
-
-    /**
-     * Initializes output formatter style.
-     *
-     * @param string|null $foreground The style foreground color name
-     * @param string|null $background The style background color name
-     * @param array       $options    The style options
-     */
-    public function __construct($foreground = null, $background = null, array $options = array())
-    {
-        if (null !== $foreground) {
-            $this->setForeground($foreground);
-        }
-        if (null !== $background) {
-            $this->setBackground($background);
-        }
-        if (count($options)) {
-            $this->setOptions($options);
-        }
-    }
-
-    /**
-     * Sets style foreground color.
-     *
-     * @param string|null $color The color name
-     *
-     * @throws \InvalidArgumentException When the color name isn't defined
-     */
-    public function setForeground($color = null)
-    {
-        if (null === $color) {
-            $this->foreground = null;
-
-            return;
-        }
-
-        if (!isset(static::$availableForegroundColors[$color])) {
-            throw new \InvalidArgumentException(sprintf(
-                'Invalid foreground color specified: "%s". Expected one of (%s)',
-                $color,
-                implode(', ', array_keys(static::$availableForegroundColors))
-            ));
-        }
-
-        $this->foreground = static::$availableForegroundColors[$color];
-    }
-
-    /**
-     * Sets style background color.
-     *
-     * @param string|null $color The color name
-     *
-     * @throws \InvalidArgumentException When the color name isn't defined
-     */
-    public function setBackground($color = null)
-    {
-        if (null === $color) {
-            $this->background = null;
-
-            return;
-        }
-
-        if (!isset(static::$availableBackgroundColors[$color])) {
-            throw new \InvalidArgumentException(sprintf(
-                'Invalid background color specified: "%s". Expected one of (%s)',
-                $color,
-                implode(', ', array_keys(static::$availableBackgroundColors))
-            ));
-        }
-
-        $this->background = static::$availableBackgroundColors[$color];
-    }
-
-    /**
-     * Sets some specific style option.
-     *
-     * @param string $option The option name
-     *
-     * @throws \InvalidArgumentException When the option name isn't defined
-     */
-    public function setOption($option)
-    {
-        if (!isset(static::$availableOptions[$option])) {
-            throw new \InvalidArgumentException(sprintf(
-                'Invalid option specified: "%s". Expected one of (%s)',
-                $option,
-                implode(', ', array_keys(static::$availableOptions))
-            ));
-        }
-
-        if (!in_array(static::$availableOptions[$option], $this->options)) {
-            $this->options[] = static::$availableOptions[$option];
-        }
-    }
-
-    /**
-     * Unsets some specific style option.
-     *
-     * @param string $option The option name
-     *
-     * @throws \InvalidArgumentException When the option name isn't defined
-     */
-    public function unsetOption($option)
-    {
-        if (!isset(static::$availableOptions[$option])) {
-            throw new \InvalidArgumentException(sprintf(
-                'Invalid option specified: "%s". Expected one of (%s)',
-                $option,
-                implode(', ', array_keys(static::$availableOptions))
-            ));
-        }
-
-        $pos = array_search(static::$availableOptions[$option], $this->options);
-        if (false !== $pos) {
-            unset($this->options[$pos]);
-        }
-    }
-
-    /**
-     * Sets multiple style options at once.
-     *
-     * @param array $options
-     */
-    public function setOptions(array $options)
-    {
-        $this->options = array();
-
-        foreach ($options as $option) {
-            $this->setOption($option);
-        }
-    }
-
-    /**
-     * Applies the style to a given text.
-     *
-     * @param string $text The text to style
-     *
-     * @return string
-     */
-    public function apply($text)
-    {
-        $setCodes = array();
-        $unsetCodes = array();
-
-        if (null !== $this->foreground) {
-            $setCodes[] = $this->foreground['set'];
-            $unsetCodes[] = $this->foreground['unset'];
-        }
-        if (null !== $this->background) {
-            $setCodes[] = $this->background['set'];
-            $unsetCodes[] = $this->background['unset'];
-        }
-        if (count($this->options)) {
-            foreach ($this->options as $option) {
-                $setCodes[] = $option['set'];
-                $unsetCodes[] = $option['unset'];
-            }
-        }
-
-        if (0 === count($setCodes)) {
-            return $text;
-        }
-
-        return sprintf("\033[%sm%s\033[%sm", implode(';', $setCodes), $text, implode(';', $unsetCodes));
-    }
-}
diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php b/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php
deleted file mode 100644
index c36fda8..0000000
--- a/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?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\Formatter;
-
-/**
- * Formatter style interface for defining styles.
- *
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-interface OutputFormatterStyleInterface
-{
-    /**
-     * Sets style foreground color.
-     *
-     * @param string $color The color name
-     */
-    public function setForeground($color = null);
-
-    /**
-     * Sets style background color.
-     *
-     * @param string $color The color name
-     */
-    public function setBackground($color = null);
-
-    /**
-     * Sets some specific style option.
-     *
-     * @param string $option The option name
-     */
-    public function setOption($option);
-
-    /**
-     * Unsets some specific style option.
-     *
-     * @param string $option The option name
-     */
-    public function unsetOption($option);
-
-    /**
-     * Sets multiple style options at once.
-     *
-     * @param array $options
-     */
-    public function setOptions(array $options);
-
-    /**
-     * Applies the style to a given text.
-     *
-     * @param string $text The text to style
-     *
-     * @return string
-     */
-    public function apply($text);
-}
diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php b/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php
deleted file mode 100644
index b64c87f..0000000
--- a/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?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\Formatter;
-
-/**
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-class OutputFormatterStyleStack
-{
-    /**
-     * @var OutputFormatterStyleInterface[]
-     */
-    private $styles;
-
-    /**
-     * @var OutputFormatterStyleInterface
-     */
-    private $emptyStyle;
-
-    /**
-     * Constructor.
-     *
-     * @param OutputFormatterStyleInterface|null $emptyStyle
-     */
-    public function __construct(OutputFormatterStyleInterface $emptyStyle = null)
-    {
-        $this->emptyStyle = $emptyStyle ?: new OutputFormatterStyle();
-        $this->reset();
-    }
-
-    /**
-     * Resets stack (ie. empty internal arrays).
-     */
-    public function reset()
-    {
-        $this->styles = array();
-    }
-
-    /**
-     * Pushes a style in the stack.
-     *
-     * @param OutputFormatterStyleInterface $style
-     */
-    public function push(OutputFormatterStyleInterface $style)
-    {
-        $this->styles[] = $style;
-    }
-
-    /**
-     * Pops a style from the stack.
-     *
-     * @param OutputFormatterStyleInterface|null $style
-     *
-     * @return OutputFormatterStyleInterface
-     *
-     * @throws \InvalidArgumentException When style tags incorrectly nested
-     */
-    public function pop(OutputFormatterStyleInterface $style = null)
-    {
-        if (empty($this->styles)) {
-            return $this->emptyStyle;
-        }
-
-        if (null === $style) {
-            return array_pop($this->styles);
-        }
-
-        foreach (array_reverse($this->styles, true) as $index => $stackedStyle) {
-            if ($style->apply('') === $stackedStyle->apply('')) {
-                $this->styles = array_slice($this->styles, 0, $index);
-
-                return $stackedStyle;
-            }
-        }
-
-        throw new \InvalidArgumentException('Incorrectly nested style tag found.');
-    }
-
-    /**
-     * Computes current style with stacks top codes.
-     *
-     * @return OutputFormatterStyle
-     */
-    public function getCurrent()
-    {
-        if (empty($this->styles)) {
-            return $this->emptyStyle;
-        }
-
-        return $this->styles[count($this->styles) - 1];
-    }
-
-    /**
-     * @param OutputFormatterStyleInterface $emptyStyle
-     *
-     * @return OutputFormatterStyleStack
-     */
-    public function setEmptyStyle(OutputFormatterStyleInterface $emptyStyle)
-    {
-        $this->emptyStyle = $emptyStyle;
-
-        return $this;
-    }
-
-    /**
-     * @return OutputFormatterStyleInterface
-     */
-    public function getEmptyStyle()
-    {
-        return $this->emptyStyle;
-    }
-}
diff --git a/vendor/symfony/console/Helper/DebugFormatterHelper.php b/vendor/symfony/console/Helper/DebugFormatterHelper.php
deleted file mode 100644
index 1119b79..0000000
--- a/vendor/symfony/console/Helper/DebugFormatterHelper.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?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;
-
-/**
- * Helps outputting debug information when running an external program from a command.
- *
- * An external program can be a Process, an HTTP request, or anything else.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class DebugFormatterHelper extends Helper
-{
-    private $colors = array('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', 'default');
-    private $started = array();
-    private $count = -1;
-
-    /**
-     * Starts a debug formatting session.
-     *
-     * @param string $id      The id of the formatting session
-     * @param string $message The message to display
-     * @param string $prefix  The prefix to use
-     *
-     * @return string
-     */
-    public function start($id, $message, $prefix = 'RUN')
-    {
-        $this->started[$id] = array('border' => ++$this->count % count($this->colors));
-
-        return sprintf("%s<bg=blue;fg=white> %s </> <fg=blue>%s</>\n", $this->getBorder($id), $prefix, $message);
-    }
-
-    /**
-     * Adds progress to a formatting session.
-     *
-     * @param string $id          The id of the formatting session
-     * @param string $buffer      The message to display
-     * @param bool   $error       Whether to consider the buffer as error
-     * @param string $prefix      The prefix for output
-     * @param string $errorPrefix The prefix for error output
-     *
-     * @return string
-     */
-    public function progress($id, $buffer, $error = false, $prefix = 'OUT', $errorPrefix = 'ERR')
-    {
-        $message = '';
-
-        if ($error) {
-            if (isset($this->started[$id]['out'])) {
-                $message .= "\n";
-                unset($this->started[$id]['out']);
-            }
-            if (!isset($this->started[$id]['err'])) {
-                $message .= sprintf('%s<bg=red;fg=white> %s </> ', $this->getBorder($id), $errorPrefix);
-                $this->started[$id]['err'] = true;
-            }
-
-            $message .= str_replace("\n", sprintf("\n%s<bg=red;fg=white> %s </> ", $this->getBorder($id), $errorPrefix), $buffer);
-        } else {
-            if (isset($this->started[$id]['err'])) {
-                $message .= "\n";
-                unset($this->started[$id]['err']);
-            }
-            if (!isset($this->started[$id]['out'])) {
-                $message .= sprintf('%s<bg=green;fg=white> %s </> ', $this->getBorder($id), $prefix);
-                $this->started[$id]['out'] = true;
-            }
-
-            $message .= str_replace("\n", sprintf("\n%s<bg=green;fg=white> %s </> ", $this->getBorder($id), $prefix), $buffer);
-        }
-
-        return $message;
-    }
-
-    /**
-     * Stops a formatting session.
-     *
-     * @param string $id         The id of the formatting session
-     * @param string $message    The message to display
-     * @param bool   $successful Whether to consider the result as success
-     * @param string $prefix     The prefix for the end output
-     *
-     * @return string
-     */
-    public function stop($id, $message, $successful, $prefix = 'RES')
-    {
-        $trailingEOL = isset($this->started[$id]['out']) || isset($this->started[$id]['err']) ? "\n" : '';
-
-        if ($successful) {
-            return sprintf("%s%s<bg=green;fg=white> %s </> <fg=green>%s</>\n", $trailingEOL, $this->getBorder($id), $prefix, $message);
-        }
-
-        $message = sprintf("%s%s<bg=red;fg=white> %s </> <fg=red>%s</>\n", $trailingEOL, $this->getBorder($id), $prefix, $message);
-
-        unset($this->started[$id]['out'], $this->started[$id]['err']);
-
-        return $message;
-    }
-
-    /**
-     * @param string $id The id of the formatting session
-     *
-     * @return string
-     */
-    private function getBorder($id)
-    {
-        return sprintf('<bg=%s> </>', $this->colors[$this->started[$id]['border']]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'debug_formatter';
-    }
-}
diff --git a/vendor/symfony/console/Helper/DescriptorHelper.php b/vendor/symfony/console/Helper/DescriptorHelper.php
deleted file mode 100644
index c324c99..0000000
--- a/vendor/symfony/console/Helper/DescriptorHelper.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?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\Descriptor\DescriptorInterface;
-use Symfony\Component\Console\Descriptor\JsonDescriptor;
-use Symfony\Component\Console\Descriptor\MarkdownDescriptor;
-use Symfony\Component\Console\Descriptor\TextDescriptor;
-use Symfony\Component\Console\Descriptor\XmlDescriptor;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * This class adds helper method to describe objects in various formats.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-class DescriptorHelper extends Helper
-{
-    /**
-     * @var DescriptorInterface[]
-     */
-    private $descriptors = array();
-
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {
-        $this
-            ->register('txt', new TextDescriptor())
-            ->register('xml', new XmlDescriptor())
-            ->register('json', new JsonDescriptor())
-            ->register('md', new MarkdownDescriptor())
-        ;
-    }
-
-    /**
-     * Describes an object if supported.
-     *
-     * Available options are:
-     * * format: string, the output format name
-     * * raw_text: boolean, sets output type as raw
-     *
-     * @param OutputInterface $output
-     * @param object          $object
-     * @param array           $options
-     *
-     * @throws \InvalidArgumentException when the given format is not supported
-     */
-    public function describe(OutputInterface $output, $object, array $options = array())
-    {
-        $options = array_merge(array(
-            'raw_text' => false,
-            'format' => 'txt',
-        ), $options);
-
-        if (!isset($this->descriptors[$options['format']])) {
-            throw new \InvalidArgumentException(sprintf('Unsupported format "%s".', $options['format']));
-        }
-
-        $descriptor = $this->descriptors[$options['format']];
-        $descriptor->describe($output, $object, $options);
-    }
-
-    /**
-     * Registers a descriptor.
-     *
-     * @param string              $format
-     * @param DescriptorInterface $descriptor
-     *
-     * @return DescriptorHelper
-     */
-    public function register($format, DescriptorInterface $descriptor)
-    {
-        $this->descriptors[$format] = $descriptor;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'descriptor';
-    }
-}
diff --git a/vendor/symfony/console/Helper/DialogHelper.php b/vendor/symfony/console/Helper/DialogHelper.php
deleted file mode 100644
index dbadac2..0000000
--- a/vendor/symfony/console/Helper/DialogHelper.php
+++ /dev/null
@@ -1,483 +0,0 @@
-<?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;
-use Symfony\Component\Console\Formatter\OutputFormatterStyle;
-
-/**
- * The Dialog class provides helpers to interact with the user.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link \Symfony\Component\Console\Helper\QuestionHelper} instead.
- */
-class DialogHelper extends InputAwareHelper
-{
-    private $inputStream;
-    private static $shell;
-    private static $stty;
-
-    public function __construct($triggerDeprecationError = true)
-    {
-        if ($triggerDeprecationError) {
-            @trigger_error('"Symfony\Component\Console\Helper\DialogHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\QuestionHelper" instead.', E_USER_DEPRECATED);
-        }
-    }
-
-    /**
-     * Asks the user to select a value.
-     *
-     * @param OutputInterface $output       An Output instance
-     * @param string|array    $question     The question to ask
-     * @param array           $choices      List of choices to pick from
-     * @param bool|string     $default      The default answer if the user enters nothing
-     * @param bool|int        $attempts     Max number of times to ask before giving up (false by default, which means infinite)
-     * @param string          $errorMessage Message which will be shown if invalid value from choice list would be picked
-     * @param bool            $multiselect  Select more than one value separated by comma
-     *
-     * @return int|string|array The selected value or values (the key of the choices array)
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function select(OutputInterface $output, $question, $choices, $default = null, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false)
-    {
-        $width = max(array_map('strlen', array_keys($choices)));
-
-        $messages = (array) $question;
-        foreach ($choices as $key => $value) {
-            $messages[] = sprintf("  [<info>%-${width}s</info>] %s", $key, $value);
-        }
-
-        $output->writeln($messages);
-
-        $result = $this->askAndValidate($output, '> ', function ($picked) use ($choices, $errorMessage, $multiselect) {
-            // Collapse all spaces.
-            $selectedChoices = str_replace(' ', '', $picked);
-
-            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));
-                }
-                $selectedChoices = explode(',', $selectedChoices);
-            } else {
-                $selectedChoices = array($picked);
-            }
-
-            $multiselectChoices = array();
-
-            foreach ($selectedChoices as $value) {
-                if (empty($choices[$value])) {
-                    throw new \InvalidArgumentException(sprintf($errorMessage, $value));
-                }
-                $multiselectChoices[] = $value;
-            }
-
-            if ($multiselect) {
-                return $multiselectChoices;
-            }
-
-            return $picked;
-        }, $attempts, $default);
-
-        return $result;
-    }
-
-    /**
-     * Asks a question to the user.
-     *
-     * @param OutputInterface $output       An Output instance
-     * @param string|array    $question     The question to ask
-     * @param string          $default      The default answer if none is given by the user
-     * @param array           $autocomplete List of values to autocomplete
-     *
-     * @return string The user answer
-     *
-     * @throws \RuntimeException If there is no data to read in the input stream
-     */
-    public function ask(OutputInterface $output, $question, $default = null, array $autocomplete = null)
-    {
-        if ($this->input && !$this->input->isInteractive()) {
-            return $default;
-        }
-
-        $output->write($question);
-
-        $inputStream = $this->inputStream ?: STDIN;
-
-        if (null === $autocomplete || !$this->hasSttyAvailable()) {
-            $ret = fgets($inputStream, 4096);
-            if (false === $ret) {
-                throw new \RuntimeException('Aborted');
-            }
-            $ret = trim($ret);
-        } else {
-            $ret = '';
-
-            $i = 0;
-            $ofs = -1;
-            $matches = $autocomplete;
-            $numMatches = count($matches);
-
-            $sttyMode = shell_exec('stty -g');
-
-            // Disable icanon (so we can fread each keypress) and echo (we'll do echoing here instead)
-            shell_exec('stty -icanon -echo');
-
-            // Add highlighted text style
-            $output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white'));
-
-            // Read a keypress
-            while (!feof($inputStream)) {
-                $c = fread($inputStream, 1);
-
-                // Backspace Character
-                if ("\177" === $c) {
-                    if (0 === $numMatches && 0 !== $i) {
-                        --$i;
-                        // Move cursor backwards
-                        $output->write("\033[1D");
-                    }
-
-                    if ($i === 0) {
-                        $ofs = -1;
-                        $matches = $autocomplete;
-                        $numMatches = count($matches);
-                    } else {
-                        $numMatches = 0;
-                    }
-
-                    // Pop the last character off the end of our string
-                    $ret = substr($ret, 0, $i);
-                } elseif ("\033" === $c) {
-                    // Did we read an escape sequence?
-                    $c .= fread($inputStream, 2);
-
-                    // A = Up Arrow. B = Down Arrow
-                    if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) {
-                        if ('A' === $c[2] && -1 === $ofs) {
-                            $ofs = 0;
-                        }
-
-                        if (0 === $numMatches) {
-                            continue;
-                        }
-
-                        $ofs += ('A' === $c[2]) ? -1 : 1;
-                        $ofs = ($numMatches + $ofs) % $numMatches;
-                    }
-                } elseif (ord($c) < 32) {
-                    if ("\t" === $c || "\n" === $c) {
-                        if ($numMatches > 0 && -1 !== $ofs) {
-                            $ret = $matches[$ofs];
-                            // Echo out remaining chars for current match
-                            $output->write(substr($ret, $i));
-                            $i = strlen($ret);
-                        }
-
-                        if ("\n" === $c) {
-                            $output->write($c);
-                            break;
-                        }
-
-                        $numMatches = 0;
-                    }
-
-                    continue;
-                } else {
-                    $output->write($c);
-                    $ret .= $c;
-                    ++$i;
-
-                    $numMatches = 0;
-                    $ofs = 0;
-
-                    foreach ($autocomplete as $value) {
-                        // If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle)
-                        if (0 === strpos($value, $ret) && $i !== strlen($value)) {
-                            $matches[$numMatches++] = $value;
-                        }
-                    }
-                }
-
-                // Erase characters from cursor to end of line
-                $output->write("\033[K");
-
-                if ($numMatches > 0 && -1 !== $ofs) {
-                    // Save cursor position
-                    $output->write("\0337");
-                    // Write highlighted text
-                    $output->write('<hl>'.substr($matches[$ofs], $i).'</hl>');
-                    // Restore cursor position
-                    $output->write("\0338");
-                }
-            }
-
-            // Reset stty so it behaves normally again
-            shell_exec(sprintf('stty %s', $sttyMode));
-        }
-
-        return strlen($ret) > 0 ? $ret : $default;
-    }
-
-    /**
-     * Asks a confirmation to the user.
-     *
-     * The question will be asked until the user answers by nothing, yes, or no.
-     *
-     * @param OutputInterface $output   An Output instance
-     * @param string|array    $question The question to ask
-     * @param bool            $default  The default answer if the user enters nothing
-     *
-     * @return bool true if the user has confirmed, false otherwise
-     */
-    public function askConfirmation(OutputInterface $output, $question, $default = true)
-    {
-        $answer = 'z';
-        while ($answer && !in_array(strtolower($answer[0]), array('y', 'n'))) {
-            $answer = $this->ask($output, $question);
-        }
-
-        if (false === $default) {
-            return $answer && 'y' == strtolower($answer[0]);
-        }
-
-        return !$answer || 'y' == strtolower($answer[0]);
-    }
-
-    /**
-     * Asks a question to the user, the response is hidden.
-     *
-     * @param OutputInterface $output   An Output instance
-     * @param string|array    $question The question
-     * @param bool            $fallback In case the response can not be hidden, whether to fallback on non-hidden question or not
-     *
-     * @return string The answer
-     *
-     * @throws \RuntimeException In case the fallback is deactivated and the response can not be hidden
-     */
-    public function askHiddenResponse(OutputInterface $output, $question, $fallback = true)
-    {
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            $exe = __DIR__.'/../Resources/bin/hiddeninput.exe';
-
-            // handle code running from a phar
-            if ('phar:' === substr(__FILE__, 0, 5)) {
-                $tmpExe = sys_get_temp_dir().'/hiddeninput.exe';
-                copy($exe, $tmpExe);
-                $exe = $tmpExe;
-            }
-
-            $output->write($question);
-            $value = rtrim(shell_exec($exe));
-            $output->writeln('');
-
-            if (isset($tmpExe)) {
-                unlink($tmpExe);
-            }
-
-            return $value;
-        }
-
-        if ($this->hasSttyAvailable()) {
-            $output->write($question);
-
-            $sttyMode = shell_exec('stty -g');
-
-            shell_exec('stty -echo');
-            $value = fgets($this->inputStream ?: STDIN, 4096);
-            shell_exec(sprintf('stty %s', $sttyMode));
-
-            if (false === $value) {
-                throw new \RuntimeException('Aborted');
-            }
-
-            $value = trim($value);
-            $output->writeln('');
-
-            return $value;
-        }
-
-        if (false !== $shell = $this->getShell()) {
-            $output->write($question);
-            $readCmd = $shell === 'csh' ? 'set mypassword = $<' : 'read -r mypassword';
-            $command = sprintf("/usr/bin/env %s -c 'stty -echo; %s; stty echo; echo \$mypassword'", $shell, $readCmd);
-            $value = rtrim(shell_exec($command));
-            $output->writeln('');
-
-            return $value;
-        }
-
-        if ($fallback) {
-            return $this->ask($output, $question);
-        }
-
-        throw new \RuntimeException('Unable to hide the response');
-    }
-
-    /**
-     * Asks for a value and validates the response.
-     *
-     * The validator receives the data to validate. It must return the
-     * validated data when the data is valid and throw an exception
-     * otherwise.
-     *
-     * @param OutputInterface $output       An Output instance
-     * @param string|array    $question     The question to ask
-     * @param callable        $validator    A PHP callback
-     * @param int|false       $attempts     Max number of times to ask before giving up (false by default, which means infinite)
-     * @param string          $default      The default answer if none is given by the user
-     * @param array           $autocomplete List of values to autocomplete
-     *
-     * @return mixed
-     *
-     * @throws \Exception When any of the validators return an error
-     */
-    public function askAndValidate(OutputInterface $output, $question, $validator, $attempts = false, $default = null, array $autocomplete = null)
-    {
-        $that = $this;
-
-        $interviewer = function () use ($output, $question, $default, $autocomplete, $that) {
-            return $that->ask($output, $question, $default, $autocomplete);
-        };
-
-        return $this->validateAttempts($interviewer, $output, $validator, $attempts);
-    }
-
-    /**
-     * Asks for a value, hide and validates the response.
-     *
-     * The validator receives the data to validate. It must return the
-     * validated data when the data is valid and throw an exception
-     * otherwise.
-     *
-     * @param OutputInterface $output    An Output instance
-     * @param string|array    $question  The question to ask
-     * @param callable        $validator A PHP callback
-     * @param int|false       $attempts  Max number of times to ask before giving up (false by default, which means infinite)
-     * @param bool            $fallback  In case the response can not be hidden, whether to fallback on non-hidden question or not
-     *
-     * @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
-     */
-    public function askHiddenResponseAndValidate(OutputInterface $output, $question, $validator, $attempts = false, $fallback = true)
-    {
-        $that = $this;
-
-        $interviewer = function () use ($output, $question, $fallback, $that) {
-            return $that->askHiddenResponse($output, $question, $fallback);
-        };
-
-        return $this->validateAttempts($interviewer, $output, $validator, $attempts);
-    }
-
-    /**
-     * Sets the input stream to read from when interacting with the user.
-     *
-     * This is mainly useful for testing purpose.
-     *
-     * @param resource $stream The input stream
-     */
-    public function setInputStream($stream)
-    {
-        $this->inputStream = $stream;
-    }
-
-    /**
-     * Returns the helper's input stream.
-     *
-     * @return resource|null The input stream or null if the default STDIN is used
-     */
-    public function getInputStream()
-    {
-        return $this->inputStream;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'dialog';
-    }
-
-    /**
-     * Return a valid Unix shell.
-     *
-     * @return string|bool The valid shell name, false in case no valid shell is found
-     */
-    private function getShell()
-    {
-        if (null !== self::$shell) {
-            return self::$shell;
-        }
-
-        self::$shell = false;
-
-        if (file_exists('/usr/bin/env')) {
-            // handle other OSs with bash/zsh/ksh/csh if available to hide the answer
-            $test = "/usr/bin/env %s -c 'echo OK' 2> /dev/null";
-            foreach (array('bash', 'zsh', 'ksh', 'csh') as $sh) {
-                if ('OK' === rtrim(shell_exec(sprintf($test, $sh)))) {
-                    self::$shell = $sh;
-                    break;
-                }
-            }
-        }
-
-        return self::$shell;
-    }
-
-    private function hasSttyAvailable()
-    {
-        if (null !== self::$stty) {
-            return self::$stty;
-        }
-
-        exec('stty 2>&1', $output, $exitcode);
-
-        return self::$stty = $exitcode === 0;
-    }
-
-    /**
-     * Validate an attempt.
-     *
-     * @param callable        $interviewer A callable that will ask for a question and return the result
-     * @param OutputInterface $output      An Output instance
-     * @param callable        $validator   A PHP callback
-     * @param int|false       $attempts    Max number of times to ask before giving up ; false will ask infinitely
-     *
-     * @return string The validated response
-     *
-     * @throws \Exception In case the max number of attempts has been reached and no valid response has been given
-     */
-    private function validateAttempts($interviewer, OutputInterface $output, $validator, $attempts)
-    {
-        $e = null;
-        while (false === $attempts || $attempts--) {
-            if (null !== $e) {
-                $output->writeln($this->getHelperSet()->get('formatter')->formatBlock($e->getMessage(), 'error'));
-            }
-
-            try {
-                return call_user_func($validator, $interviewer());
-            } catch (\Exception $e) {
-            }
-        }
-
-        throw $e;
-    }
-}
diff --git a/vendor/symfony/console/Helper/FormatterHelper.php b/vendor/symfony/console/Helper/FormatterHelper.php
deleted file mode 100644
index ac736f9..0000000
--- a/vendor/symfony/console/Helper/FormatterHelper.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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\Formatter\OutputFormatter;
-
-/**
- * The Formatter class provides helpers to format messages.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FormatterHelper extends Helper
-{
-    /**
-     * Formats a message within a section.
-     *
-     * @param string $section The section name
-     * @param string $message The message
-     * @param string $style   The style to apply to the section
-     *
-     * @return string The format section
-     */
-    public function formatSection($section, $message, $style = 'info')
-    {
-        return sprintf('<%s>[%s]</%s> %s', $style, $section, $style, $message);
-    }
-
-    /**
-     * Formats a message as a block of text.
-     *
-     * @param string|array $messages The message to write in the block
-     * @param string       $style    The style to apply to the whole block
-     * @param bool         $large    Whether to return a large block
-     *
-     * @return string The formatter message
-     */
-    public function formatBlock($messages, $style, $large = false)
-    {
-        if (!is_array($messages)) {
-            $messages = array($messages);
-        }
-
-        $len = 0;
-        $lines = array();
-        foreach ($messages as $message) {
-            $message = OutputFormatter::escape($message);
-            $lines[] = sprintf($large ? '  %s  ' : ' %s ', $message);
-            $len = max($this->strlen($message) + ($large ? 4 : 2), $len);
-        }
-
-        $messages = $large ? array(str_repeat(' ', $len)) : array();
-        for ($i = 0; isset($lines[$i]); ++$i) {
-            $messages[] = $lines[$i].str_repeat(' ', $len - $this->strlen($lines[$i]));
-        }
-        if ($large) {
-            $messages[] = str_repeat(' ', $len);
-        }
-
-        for ($i = 0; isset($messages[$i]); ++$i) {
-            $messages[$i] = sprintf('<%s>%s</%s>', $style, $messages[$i], $style);
-        }
-
-        return implode("\n", $messages);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'formatter';
-    }
-}
diff --git a/vendor/symfony/console/Helper/Helper.php b/vendor/symfony/console/Helper/Helper.php
deleted file mode 100644
index b288d44..0000000
--- a/vendor/symfony/console/Helper/Helper.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?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\Formatter\OutputFormatterInterface;
-
-/**
- * Helper is the base class for all helper classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Helper implements HelperInterface
-{
-    protected $helperSet = null;
-
-    /**
-     * Sets the helper set associated with this helper.
-     *
-     * @param HelperSet $helperSet A HelperSet instance
-     */
-    public function setHelperSet(HelperSet $helperSet = null)
-    {
-        $this->helperSet = $helperSet;
-    }
-
-    /**
-     * Gets the helper set associated with this helper.
-     *
-     * @return HelperSet A HelperSet instance
-     */
-    public function getHelperSet()
-    {
-        return $this->helperSet;
-    }
-
-    /**
-     * Returns the length of a string, using mb_strwidth if it is available.
-     *
-     * @param string $string The string to check its length
-     *
-     * @return int The length of the string
-     */
-    public static function strlen($string)
-    {
-        if (!function_exists('mb_strwidth')) {
-            return strlen($string);
-        }
-
-        if (false === $encoding = mb_detect_encoding($string)) {
-            return strlen($string);
-        }
-
-        return mb_strwidth($string, $encoding);
-    }
-
-    public static function formatTime($secs)
-    {
-        static $timeFormats = array(
-            array(0, '< 1 sec'),
-            array(2, '1 sec'),
-            array(59, 'secs', 1),
-            array(60, '1 min'),
-            array(3600, 'mins', 60),
-            array(5400, '1 hr'),
-            array(86400, 'hrs', 3600),
-            array(129600, '1 day'),
-            array(604800, 'days', 86400),
-        );
-
-        foreach ($timeFormats as $format) {
-            if ($secs >= $format[0]) {
-                continue;
-            }
-
-            if (2 == count($format)) {
-                return $format[1];
-            }
-
-            return ceil($secs / $format[2]).' '.$format[1];
-        }
-    }
-
-    public static function formatMemory($memory)
-    {
-        if ($memory >= 1024 * 1024 * 1024) {
-            return sprintf('%.1f GiB', $memory / 1024 / 1024 / 1024);
-        }
-
-        if ($memory >= 1024 * 1024) {
-            return sprintf('%.1f MiB', $memory / 1024 / 1024);
-        }
-
-        if ($memory >= 1024) {
-            return sprintf('%d KiB', $memory / 1024);
-        }
-
-        return sprintf('%d B', $memory);
-    }
-
-    public static function strlenWithoutDecoration(OutputFormatterInterface $formatter, $string)
-    {
-        $isDecorated = $formatter->isDecorated();
-        $formatter->setDecorated(false);
-        // remove <...> formatting
-        $string = $formatter->format($string);
-        // remove already formatted characters
-        $string = preg_replace("/\033\[[^m]*m/", '', $string);
-        $formatter->setDecorated($isDecorated);
-
-        return self::strlen($string);
-    }
-}
diff --git a/vendor/symfony/console/Helper/HelperInterface.php b/vendor/symfony/console/Helper/HelperInterface.php
deleted file mode 100644
index 5a923e0..0000000
--- a/vendor/symfony/console/Helper/HelperInterface.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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;
-
-/**
- * HelperInterface is the interface all helpers must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface HelperInterface
-{
-    /**
-     * Sets the helper set associated with this helper.
-     *
-     * @param HelperSet $helperSet A HelperSet instance
-     */
-    public function setHelperSet(HelperSet $helperSet = null);
-
-    /**
-     * Gets the helper set associated with this helper.
-     *
-     * @return HelperSet A HelperSet instance
-     */
-    public function getHelperSet();
-
-    /**
-     * Returns the canonical name of this helper.
-     *
-     * @return string The canonical name
-     */
-    public function getName();
-}
diff --git a/vendor/symfony/console/Helper/HelperSet.php b/vendor/symfony/console/Helper/HelperSet.php
deleted file mode 100644
index 00354dd..0000000
--- a/vendor/symfony/console/Helper/HelperSet.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?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\Command\Command;
-
-/**
- * HelperSet represents a set of helpers to be used with a command.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HelperSet implements \IteratorAggregate
-{
-    private $helpers = array();
-    private $command;
-
-    /**
-     * Constructor.
-     *
-     * @param Helper[] $helpers An array of helper.
-     */
-    public function __construct(array $helpers = array())
-    {
-        foreach ($helpers as $alias => $helper) {
-            $this->set($helper, is_int($alias) ? null : $alias);
-        }
-    }
-
-    /**
-     * Sets a helper.
-     *
-     * @param HelperInterface $helper The helper instance
-     * @param string          $alias  An alias
-     */
-    public function set(HelperInterface $helper, $alias = null)
-    {
-        $this->helpers[$helper->getName()] = $helper;
-        if (null !== $alias) {
-            $this->helpers[$alias] = $helper;
-        }
-
-        $helper->setHelperSet($this);
-    }
-
-    /**
-     * Returns true if the helper if defined.
-     *
-     * @param string $name The helper name
-     *
-     * @return bool true if the helper is defined, false otherwise
-     */
-    public function has($name)
-    {
-        return isset($this->helpers[$name]);
-    }
-
-    /**
-     * Gets a helper value.
-     *
-     * @param string $name The helper name
-     *
-     * @return HelperInterface The helper instance
-     *
-     * @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));
-        }
-
-        if ('dialog' === $name && $this->helpers[$name] instanceof DialogHelper) {
-            @trigger_error('"Symfony\Component\Console\Helper\DialogHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\QuestionHelper" instead.', E_USER_DEPRECATED);
-        } elseif ('progress' === $name && $this->helpers[$name] instanceof ProgressHelper) {
-            @trigger_error('"Symfony\Component\Console\Helper\ProgressHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\ProgressBar" instead.', E_USER_DEPRECATED);
-        } elseif ('table' === $name && $this->helpers[$name] instanceof TableHelper) {
-            @trigger_error('"Symfony\Component\Console\Helper\TableHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\Table" instead.', E_USER_DEPRECATED);
-        }
-
-        return $this->helpers[$name];
-    }
-
-    /**
-     * Sets the command associated with this helper set.
-     *
-     * @param Command $command A Command instance
-     */
-    public function setCommand(Command $command = null)
-    {
-        $this->command = $command;
-    }
-
-    /**
-     * Gets the command associated with this helper set.
-     *
-     * @return Command A Command instance
-     */
-    public function getCommand()
-    {
-        return $this->command;
-    }
-
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->helpers);
-    }
-}
diff --git a/vendor/symfony/console/Helper/InputAwareHelper.php b/vendor/symfony/console/Helper/InputAwareHelper.php
deleted file mode 100644
index 4261767..0000000
--- a/vendor/symfony/console/Helper/InputAwareHelper.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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\Input\InputInterface;
-use Symfony\Component\Console\Input\InputAwareInterface;
-
-/**
- * An implementation of InputAwareInterface for Helpers.
- *
- * @author Wouter J <waldio.webdesign@gmail.com>
- */
-abstract class InputAwareHelper extends Helper implements InputAwareInterface
-{
-    protected $input;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setInput(InputInterface $input)
-    {
-        $this->input = $input;
-    }
-}
diff --git a/vendor/symfony/console/Helper/ProcessHelper.php b/vendor/symfony/console/Helper/ProcessHelper.php
deleted file mode 100644
index a811eb4..0000000
--- a/vendor/symfony/console/Helper/ProcessHelper.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?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\ConsoleOutputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Process\Exception\ProcessFailedException;
-use Symfony\Component\Process\Process;
-use Symfony\Component\Process\ProcessBuilder;
-
-/**
- * The ProcessHelper class provides helpers to run external processes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ProcessHelper extends Helper
-{
-    /**
-     * Runs an external process.
-     *
-     * @param OutputInterface      $output    An OutputInterface instance
-     * @param string|array|Process $cmd       An instance of Process or an array of arguments to escape and run or a command to run
-     * @param string|null          $error     An error message that must be displayed if something went wrong
-     * @param callable|null        $callback  A PHP callback to run whenever there is some
-     *                                        output available on STDOUT or STDERR
-     * @param int                  $verbosity The threshold for verbosity
-     *
-     * @return Process The process that ran
-     */
-    public function run(OutputInterface $output, $cmd, $error = null, $callback = null, $verbosity = OutputInterface::VERBOSITY_VERY_VERBOSE)
-    {
-        if ($output instanceof ConsoleOutputInterface) {
-            $output = $output->getErrorOutput();
-        }
-
-        $formatter = $this->getHelperSet()->get('debug_formatter');
-
-        if (is_array($cmd)) {
-            $process = ProcessBuilder::create($cmd)->getProcess();
-        } elseif ($cmd instanceof Process) {
-            $process = $cmd;
-        } else {
-            $process = new Process($cmd);
-        }
-
-        if ($verbosity <= $output->getVerbosity()) {
-            $output->write($formatter->start(spl_object_hash($process), $this->escapeString($process->getCommandLine())));
-        }
-
-        if ($output->isDebug()) {
-            $callback = $this->wrapCallback($output, $process, $callback);
-        }
-
-        $process->run($callback);
-
-        if ($verbosity <= $output->getVerbosity()) {
-            $message = $process->isSuccessful() ? 'Command ran successfully' : sprintf('%s Command did not run successfully', $process->getExitCode());
-            $output->write($formatter->stop(spl_object_hash($process), $message, $process->isSuccessful()));
-        }
-
-        if (!$process->isSuccessful() && null !== $error) {
-            $output->writeln(sprintf('<error>%s</error>', $this->escapeString($error)));
-        }
-
-        return $process;
-    }
-
-    /**
-     * Runs the process.
-     *
-     * This is identical to run() except that an exception is thrown if the process
-     * exits with a non-zero exit code.
-     *
-     * @param OutputInterface $output   An OutputInterface instance
-     * @param string|Process  $cmd      An instance of Process or a command to run
-     * @param string|null     $error    An error message that must be displayed if something went wrong
-     * @param callable|null   $callback A PHP callback to run whenever there is some
-     *                                  output available on STDOUT or STDERR
-     *
-     * @return Process The process that ran
-     *
-     * @throws ProcessFailedException
-     *
-     * @see run()
-     */
-    public function mustRun(OutputInterface $output, $cmd, $error = null, $callback = null)
-    {
-        $process = $this->run($output, $cmd, $error, $callback);
-
-        if (!$process->isSuccessful()) {
-            throw new ProcessFailedException($process);
-        }
-
-        return $process;
-    }
-
-    /**
-     * Wraps a Process callback to add debugging output.
-     *
-     * @param OutputInterface $output   An OutputInterface interface
-     * @param Process         $process  The Process
-     * @param callable|null   $callback A PHP callable
-     *
-     * @return callable
-     */
-    public function wrapCallback(OutputInterface $output, Process $process, $callback = null)
-    {
-        if ($output instanceof ConsoleOutputInterface) {
-            $output = $output->getErrorOutput();
-        }
-
-        $formatter = $this->getHelperSet()->get('debug_formatter');
-
-        $that = $this;
-
-        return function ($type, $buffer) use ($output, $process, $callback, $formatter, $that) {
-            $output->write($formatter->progress(spl_object_hash($process), $that->escapeString($buffer), Process::ERR === $type));
-
-            if (null !== $callback) {
-                call_user_func($callback, $type, $buffer);
-            }
-        };
-    }
-
-    /**
-     * This method is public for PHP 5.3 compatibility, it should be private.
-     *
-     * @internal
-     */
-    public function escapeString($str)
-    {
-        return str_replace('<', '\\<', $str);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'process';
-    }
-}
diff --git a/vendor/symfony/console/Helper/ProgressBar.php b/vendor/symfony/console/Helper/ProgressBar.php
deleted file mode 100644
index 0b64b18..0000000
--- a/vendor/symfony/console/Helper/ProgressBar.php
+++ /dev/null
@@ -1,638 +0,0 @@
-<?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\ConsoleOutputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * The ProgressBar provides helpers to display progress output.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Chris Jones <leeked@gmail.com>
- */
-class ProgressBar
-{
-    // options
-    private $barWidth = 28;
-    private $barChar;
-    private $emptyBarChar = '-';
-    private $progressChar = '>';
-    private $format;
-    private $internalFormat;
-    private $redrawFreq = 1;
-
-    /**
-     * @var OutputInterface
-     */
-    private $output;
-    private $step = 0;
-    private $max;
-    private $startTime;
-    private $stepWidth;
-    private $percent = 0.0;
-    private $lastMessagesLength = 0;
-    private $formatLineCount;
-    private $messages;
-    private $overwrite = true;
-
-    private static $formatters;
-    private static $formats;
-
-    /**
-     * Constructor.
-     *
-     * @param OutputInterface $output An OutputInterface instance
-     * @param int             $max    Maximum steps (0 if unknown)
-     */
-    public function __construct(OutputInterface $output, $max = 0)
-    {
-        if ($output instanceof ConsoleOutputInterface) {
-            $output = $output->getErrorOutput();
-        }
-
-        $this->output = $output;
-        $this->setMaxSteps($max);
-
-        if (!$this->output->isDecorated()) {
-            // disable overwrite when output does not support ANSI codes.
-            $this->overwrite = false;
-
-            if ($this->max > 10) {
-                // set a reasonable redraw frequency so output isn't flooded
-                $this->setRedrawFrequency($max / 10);
-            }
-        }
-
-        $this->startTime = time();
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * Sets a format for a given name.
-     *
-     * This method also allow you to override an existing format.
-     *
-     * @param string $name   The format name
-     * @param string $format A format string
-     */
-    public static function setFormatDefinition($name, $format)
-    {
-        if (!self::$formats) {
-            self::$formats = self::initFormats();
-        }
-
-        self::$formats[$name] = $format;
-    }
-
-    /**
-     * 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;
-    }
-
-    public function setMessage($message, $name = 'message')
-    {
-        $this->messages[$name] = $message;
-    }
-
-    public function getMessage($name = 'message')
-    {
-        return $this->messages[$name];
-    }
-
-    /**
-     * Gets the progress bar start time.
-     *
-     * @return int The progress bar start time
-     */
-    public function getStartTime()
-    {
-        return $this->startTime;
-    }
-
-    /**
-     * Gets the progress bar maximal steps.
-     *
-     * @return int The progress bar max steps
-     */
-    public function getMaxSteps()
-    {
-        return $this->max;
-    }
-
-    /**
-     * Gets the progress bar step.
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use {@link getProgress()} instead.
-     *
-     * @return int The progress bar step
-     */
-    public function getStep()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the getProgress() method instead.', E_USER_DEPRECATED);
-
-        return $this->getProgress();
-    }
-
-    /**
-     * Gets the current step position.
-     *
-     * @return int The progress bar step
-     */
-    public function getProgress()
-    {
-        return $this->step;
-    }
-
-    /**
-     * Gets the progress bar step width.
-     *
-     * @internal This method is public for PHP 5.3 compatibility, it should not be used.
-     *
-     * @return int The progress bar step width
-     */
-    public function getStepWidth()
-    {
-        return $this->stepWidth;
-    }
-
-    /**
-     * Gets the current progress bar percent.
-     *
-     * @return float The current progress bar percent
-     */
-    public function getProgressPercent()
-    {
-        return $this->percent;
-    }
-
-    /**
-     * Sets the progress bar width.
-     *
-     * @param int $size The progress bar size
-     */
-    public function setBarWidth($size)
-    {
-        $this->barWidth = (int) $size;
-    }
-
-    /**
-     * Gets the progress bar width.
-     *
-     * @return int The progress bar size
-     */
-    public function getBarWidth()
-    {
-        return $this->barWidth;
-    }
-
-    /**
-     * Sets the bar character.
-     *
-     * @param string $char A character
-     */
-    public function setBarCharacter($char)
-    {
-        $this->barChar = $char;
-    }
-
-    /**
-     * Gets the bar character.
-     *
-     * @return string A character
-     */
-    public function getBarCharacter()
-    {
-        if (null === $this->barChar) {
-            return $this->max ? '=' : $this->emptyBarChar;
-        }
-
-        return $this->barChar;
-    }
-
-    /**
-     * Sets the empty bar character.
-     *
-     * @param string $char A character
-     */
-    public function setEmptyBarCharacter($char)
-    {
-        $this->emptyBarChar = $char;
-    }
-
-    /**
-     * Gets the empty bar character.
-     *
-     * @return string A character
-     */
-    public function getEmptyBarCharacter()
-    {
-        return $this->emptyBarChar;
-    }
-
-    /**
-     * Sets the progress bar character.
-     *
-     * @param string $char A character
-     */
-    public function setProgressCharacter($char)
-    {
-        $this->progressChar = $char;
-    }
-
-    /**
-     * Gets the progress bar character.
-     *
-     * @return string A character
-     */
-    public function getProgressCharacter()
-    {
-        return $this->progressChar;
-    }
-
-    /**
-     * Sets the progress bar format.
-     *
-     * @param string $format The format
-     */
-    public function setFormat($format)
-    {
-        $this->format = null;
-        $this->internalFormat = $format;
-    }
-
-    /**
-     * Sets the redraw frequency.
-     *
-     * @param int $freq The frequency in steps
-     */
-    public function setRedrawFrequency($freq)
-    {
-        $this->redrawFreq = (int) $freq;
-    }
-
-    /**
-     * Starts the progress output.
-     *
-     * @param int|null $max Number of steps to complete the bar (0 if indeterminate), null to leave unchanged
-     */
-    public function start($max = null)
-    {
-        $this->startTime = time();
-        $this->step = 0;
-        $this->percent = 0.0;
-
-        if (null !== $max) {
-            $this->setMaxSteps($max);
-        }
-
-        $this->display();
-    }
-
-    /**
-     * Advances the progress output X steps.
-     *
-     * @param int $step Number of steps to advance
-     *
-     * @throws \LogicException
-     */
-    public function advance($step = 1)
-    {
-        $this->setProgress($this->step + $step);
-    }
-
-    /**
-     * Sets the current progress.
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use {@link setProgress()} instead.
-     *
-     * @param int $step The current progress
-     *
-     * @throws \LogicException
-     */
-    public function setCurrent($step)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the setProgress() method instead.', E_USER_DEPRECATED);
-
-        $this->setProgress($step);
-    }
-
-    /**
-     * Sets whether to overwrite the progressbar, false for new line.
-     *
-     * @param bool $overwrite
-     */
-    public function setOverwrite($overwrite)
-    {
-        $this->overwrite = (bool) $overwrite;
-    }
-
-    /**
-     * Sets the current progress.
-     *
-     * @param int $step The current progress
-     *
-     * @throws \LogicException
-     */
-    public function setProgress($step)
-    {
-        $step = (int) $step;
-        if ($step < $this->step) {
-            throw new \LogicException('You can\'t regress the progress bar.');
-        }
-
-        if ($this->max && $step > $this->max) {
-            $this->max = $step;
-        }
-
-        $prevPeriod = (int) ($this->step / $this->redrawFreq);
-        $currPeriod = (int) ($step / $this->redrawFreq);
-        $this->step = $step;
-        $this->percent = $this->max ? (float) $this->step / $this->max : 0;
-        if ($prevPeriod !== $currPeriod || $this->max === $step) {
-            $this->display();
-        }
-    }
-
-    /**
-     * Finishes the progress output.
-     */
-    public function finish()
-    {
-        if (!$this->max) {
-            $this->max = $this->step;
-        }
-
-        if ($this->step === $this->max && !$this->overwrite) {
-            // prevent double 100% output
-            return;
-        }
-
-        $this->setProgress($this->max);
-    }
-
-    /**
-     * Outputs the current progress string.
-     */
-    public function display()
-    {
-        if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) {
-            return;
-        }
-
-        if (null === $this->format) {
-            $this->setRealFormat($this->internalFormat ?: $this->determineBestFormat());
-        }
-
-        // these 3 variables can be removed in favor of using $this in the closure when support for PHP 5.3 will be dropped.
-        $self = $this;
-        $output = $this->output;
-        $messages = $this->messages;
-        $this->overwrite(preg_replace_callback("{%([a-z\-_]+)(?:\:([^%]+))?%}i", function ($matches) use ($self, $output, $messages) {
-            if ($formatter = $self::getPlaceholderFormatterDefinition($matches[1])) {
-                $text = call_user_func($formatter, $self, $output);
-            } elseif (isset($messages[$matches[1]])) {
-                $text = $messages[$matches[1]];
-            } else {
-                return $matches[0];
-            }
-
-            if (isset($matches[2])) {
-                $text = sprintf('%'.$matches[2], $text);
-            }
-
-            return $text;
-        }, $this->format));
-    }
-
-    /**
-     * Removes the progress bar from the current line.
-     *
-     * This is useful if you wish to write some output
-     * while a progress bar is running.
-     * Call display() to show the progress bar again.
-     */
-    public function clear()
-    {
-        if (!$this->overwrite) {
-            return;
-        }
-
-        if (null === $this->format) {
-            $this->setRealFormat($this->internalFormat ?: $this->determineBestFormat());
-        }
-
-        $this->overwrite(str_repeat("\n", $this->formatLineCount));
-    }
-
-    /**
-     * Sets the progress bar format.
-     *
-     * @param string $format The format
-     */
-    private function setRealFormat($format)
-    {
-        // try to use the _nomax variant if available
-        if (!$this->max && null !== self::getFormatDefinition($format.'_nomax')) {
-            $this->format = self::getFormatDefinition($format.'_nomax');
-        } elseif (null !== self::getFormatDefinition($format)) {
-            $this->format = self::getFormatDefinition($format);
-        } else {
-            $this->format = $format;
-        }
-
-        $this->formatLineCount = substr_count($this->format, "\n");
-    }
-
-    /**
-     * Sets the progress bar maximal steps.
-     *
-     * @param int $max The progress bar max steps
-     */
-    private function setMaxSteps($max)
-    {
-        $this->max = max(0, (int) $max);
-        $this->stepWidth = $this->max ? Helper::strlen($this->max) : 4;
-    }
-
-    /**
-     * Overwrites a previous message to the output.
-     *
-     * @param string $message The message
-     */
-    private function overwrite($message)
-    {
-        $lines = explode("\n", $message);
-
-        // append whitespace to match the line's length
-        if (null !== $this->lastMessagesLength) {
-            foreach ($lines as $i => $line) {
-                if ($this->lastMessagesLength > Helper::strlenWithoutDecoration($this->output->getFormatter(), $line)) {
-                    $lines[$i] = str_pad($line, $this->lastMessagesLength, "\x20", STR_PAD_RIGHT);
-                }
-            }
-        }
-
-        if ($this->overwrite) {
-            // move back to the beginning of the progress bar before redrawing it
-            $this->output->write("\x0D");
-        } elseif ($this->step > 0) {
-            // move to new line
-            $this->output->writeln('');
-        }
-
-        if ($this->formatLineCount) {
-            $this->output->write(sprintf("\033[%dA", $this->formatLineCount));
-        }
-        $this->output->write(implode("\n", $lines));
-
-        $this->lastMessagesLength = 0;
-        foreach ($lines as $line) {
-            $len = Helper::strlenWithoutDecoration($this->output->getFormatter(), $line);
-            if ($len > $this->lastMessagesLength) {
-                $this->lastMessagesLength = $len;
-            }
-        }
-    }
-
-    private function determineBestFormat()
-    {
-        switch ($this->output->getVerbosity()) {
-            // OutputInterface::VERBOSITY_QUIET: display is disabled anyway
-            case OutputInterface::VERBOSITY_VERBOSE:
-                return $this->max ? 'verbose' : 'verbose_nomax';
-            case OutputInterface::VERBOSITY_VERY_VERBOSE:
-                return $this->max ? 'very_verbose' : 'very_verbose_nomax';
-            case OutputInterface::VERBOSITY_DEBUG:
-                return $this->max ? 'debug' : 'debug_nomax';
-            default:
-                return $this->max ? 'normal' : 'normal_nomax';
-        }
-    }
-
-    private static function initPlaceholderFormatters()
-    {
-        return array(
-            'bar' => function (ProgressBar $bar, OutputInterface $output) {
-                $completeBars = floor($bar->getMaxSteps() > 0 ? $bar->getProgressPercent() * $bar->getBarWidth() : $bar->getProgress() % $bar->getBarWidth());
-                $display = str_repeat($bar->getBarCharacter(), $completeBars);
-                if ($completeBars < $bar->getBarWidth()) {
-                    $emptyBars = $bar->getBarWidth() - $completeBars - Helper::strlenWithoutDecoration($output->getFormatter(), $bar->getProgressCharacter());
-                    $display .= $bar->getProgressCharacter().str_repeat($bar->getEmptyBarCharacter(), $emptyBars);
-                }
-
-                return $display;
-            },
-            'elapsed' => function (ProgressBar $bar) {
-                return Helper::formatTime(time() - $bar->getStartTime());
-            },
-            '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.');
-                }
-
-                if (!$bar->getProgress()) {
-                    $remaining = 0;
-                } else {
-                    $remaining = round((time() - $bar->getStartTime()) / $bar->getProgress() * ($bar->getMaxSteps() - $bar->getProgress()));
-                }
-
-                return Helper::formatTime($remaining);
-            },
-            '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.');
-                }
-
-                if (!$bar->getProgress()) {
-                    $estimated = 0;
-                } else {
-                    $estimated = round((time() - $bar->getStartTime()) / $bar->getProgress() * $bar->getMaxSteps());
-                }
-
-                return Helper::formatTime($estimated);
-            },
-            'memory' => function (ProgressBar $bar) {
-                return Helper::formatMemory(memory_get_usage(true));
-            },
-            'current' => function (ProgressBar $bar) {
-                return str_pad($bar->getProgress(), $bar->getStepWidth(), ' ', STR_PAD_LEFT);
-            },
-            'max' => function (ProgressBar $bar) {
-                return $bar->getMaxSteps();
-            },
-            'percent' => function (ProgressBar $bar) {
-                return floor($bar->getProgressPercent() * 100);
-            },
-        );
-    }
-
-    private static function initFormats()
-    {
-        return array(
-            'normal' => ' %current%/%max% [%bar%] %percent:3s%%',
-            'normal_nomax' => ' %current% [%bar%]',
-
-            'verbose' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%',
-            'verbose_nomax' => ' %current% [%bar%] %elapsed:6s%',
-
-            'very_verbose' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s%',
-            'very_verbose_nomax' => ' %current% [%bar%] %elapsed:6s%',
-
-            'debug' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%',
-            'debug_nomax' => ' %current% [%bar%] %elapsed:6s% %memory:6s%',
-        );
-    }
-}
diff --git a/vendor/symfony/console/Helper/ProgressHelper.php b/vendor/symfony/console/Helper/ProgressHelper.php
deleted file mode 100644
index bd88566..0000000
--- a/vendor/symfony/console/Helper/ProgressHelper.php
+++ /dev/null
@@ -1,465 +0,0 @@
-<?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\NullOutput;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * The Progress class provides helpers to display progress output.
- *
- * @author Chris Jones <leeked@gmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0
- *             Use {@link ProgressBar} instead.
- */
-class ProgressHelper extends Helper
-{
-    const FORMAT_QUIET = ' %percent%%';
-    const FORMAT_NORMAL = ' %current%/%max% [%bar%] %percent%%';
-    const FORMAT_VERBOSE = ' %current%/%max% [%bar%] %percent%% Elapsed: %elapsed%';
-    const FORMAT_QUIET_NOMAX = ' %current%';
-    const FORMAT_NORMAL_NOMAX = ' %current% [%bar%]';
-    const FORMAT_VERBOSE_NOMAX = ' %current% [%bar%] Elapsed: %elapsed%';
-
-    // options
-    private $barWidth = 28;
-    private $barChar = '=';
-    private $emptyBarChar = '-';
-    private $progressChar = '>';
-    private $format = null;
-    private $redrawFreq = 1;
-
-    private $lastMessagesLength;
-    private $barCharOriginal;
-
-    /**
-     * @var OutputInterface
-     */
-    private $output;
-
-    /**
-     * Current step.
-     *
-     * @var int
-     */
-    private $current;
-
-    /**
-     * Maximum number of steps.
-     *
-     * @var int
-     */
-    private $max;
-
-    /**
-     * Start time of the progress bar.
-     *
-     * @var int
-     */
-    private $startTime;
-
-    /**
-     * List of formatting variables.
-     *
-     * @var array
-     */
-    private $defaultFormatVars = array(
-        'current',
-        'max',
-        'bar',
-        'percent',
-        'elapsed',
-    );
-
-    /**
-     * Available formatting variables.
-     *
-     * @var array
-     */
-    private $formatVars;
-
-    /**
-     * Stored format part widths (used for padding).
-     *
-     * @var array
-     */
-    private $widths = array(
-        'current' => 4,
-        'max' => 4,
-        'percent' => 3,
-        'elapsed' => 6,
-    );
-
-    /**
-     * Various time formats.
-     *
-     * @var array
-     */
-    private $timeFormats = array(
-        array(0, '???'),
-        array(2, '1 sec'),
-        array(59, 'secs', 1),
-        array(60, '1 min'),
-        array(3600, 'mins', 60),
-        array(5400, '1 hr'),
-        array(86400, 'hrs', 3600),
-        array(129600, '1 day'),
-        array(604800, 'days', 86400),
-    );
-
-    public function __construct($triggerDeprecationError = true)
-    {
-        if ($triggerDeprecationError) {
-            @trigger_error('The '.__CLASS__.' class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Console\Helper\ProgressBar class instead.', E_USER_DEPRECATED);
-        }
-    }
-
-    /**
-     * Sets the progress bar width.
-     *
-     * @param int $size The progress bar size
-     */
-    public function setBarWidth($size)
-    {
-        $this->barWidth = (int) $size;
-    }
-
-    /**
-     * Sets the bar character.
-     *
-     * @param string $char A character
-     */
-    public function setBarCharacter($char)
-    {
-        $this->barChar = $char;
-    }
-
-    /**
-     * Sets the empty bar character.
-     *
-     * @param string $char A character
-     */
-    public function setEmptyBarCharacter($char)
-    {
-        $this->emptyBarChar = $char;
-    }
-
-    /**
-     * Sets the progress bar character.
-     *
-     * @param string $char A character
-     */
-    public function setProgressCharacter($char)
-    {
-        $this->progressChar = $char;
-    }
-
-    /**
-     * Sets the progress bar format.
-     *
-     * @param string $format The format
-     */
-    public function setFormat($format)
-    {
-        $this->format = $format;
-    }
-
-    /**
-     * Sets the redraw frequency.
-     *
-     * @param int $freq The frequency in steps
-     */
-    public function setRedrawFrequency($freq)
-    {
-        $this->redrawFreq = (int) $freq;
-    }
-
-    /**
-     * Starts the progress output.
-     *
-     * @param OutputInterface $output An Output instance
-     * @param int|null        $max    Maximum steps
-     */
-    public function start(OutputInterface $output, $max = null)
-    {
-        $this->startTime = time();
-        $this->current = 0;
-        $this->max = (int) $max;
-
-        // Disabling output when it does not support ANSI codes as it would result in a broken display anyway.
-        $this->output = $output->isDecorated() ? $output : new NullOutput();
-        $this->lastMessagesLength = 0;
-        $this->barCharOriginal = '';
-
-        if (null === $this->format) {
-            switch ($output->getVerbosity()) {
-                case OutputInterface::VERBOSITY_QUIET:
-                    $this->format = self::FORMAT_QUIET_NOMAX;
-                    if ($this->max > 0) {
-                        $this->format = self::FORMAT_QUIET;
-                    }
-                    break;
-                case OutputInterface::VERBOSITY_VERBOSE:
-                case OutputInterface::VERBOSITY_VERY_VERBOSE:
-                case OutputInterface::VERBOSITY_DEBUG:
-                    $this->format = self::FORMAT_VERBOSE_NOMAX;
-                    if ($this->max > 0) {
-                        $this->format = self::FORMAT_VERBOSE;
-                    }
-                    break;
-                default:
-                    $this->format = self::FORMAT_NORMAL_NOMAX;
-                    if ($this->max > 0) {
-                        $this->format = self::FORMAT_NORMAL;
-                    }
-                    break;
-            }
-        }
-
-        $this->initialize();
-    }
-
-    /**
-     * Advances the progress output X steps.
-     *
-     * @param int  $step   Number of steps to advance
-     * @param bool $redraw Whether to redraw or not
-     *
-     * @throws \LogicException
-     */
-    public function advance($step = 1, $redraw = false)
-    {
-        $this->setCurrent($this->current + $step, $redraw);
-    }
-
-    /**
-     * Sets the current progress.
-     *
-     * @param int  $current The current progress
-     * @param bool $redraw  Whether to redraw or not
-     *
-     * @throws \LogicException
-     */
-    public function setCurrent($current, $redraw = false)
-    {
-        if (null === $this->startTime) {
-            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');
-        }
-
-        if (0 === $this->current) {
-            $redraw = true;
-        }
-
-        $prevPeriod = (int) ($this->current / $this->redrawFreq);
-
-        $this->current = $current;
-
-        $currPeriod = (int) ($this->current / $this->redrawFreq);
-        if ($redraw || $prevPeriod !== $currPeriod || $this->max === $this->current) {
-            $this->display();
-        }
-    }
-
-    /**
-     * Outputs the current progress string.
-     *
-     * @param bool $finish Forces the end result
-     *
-     * @throws \LogicException
-     */
-    public function display($finish = false)
-    {
-        if (null === $this->startTime) {
-            throw new \LogicException('You must start the progress bar before calling display().');
-        }
-
-        $message = $this->format;
-        foreach ($this->generate($finish) as $name => $value) {
-            $message = str_replace("%{$name}%", $value, $message);
-        }
-        $this->overwrite($this->output, $message);
-    }
-
-    /**
-     * Removes the progress bar from the current line.
-     *
-     * This is useful if you wish to write some output
-     * while a progress bar is running.
-     * Call display() to show the progress bar again.
-     */
-    public function clear()
-    {
-        $this->overwrite($this->output, '');
-    }
-
-    /**
-     * Finishes the progress output.
-     */
-    public function finish()
-    {
-        if (null === $this->startTime) {
-            throw new \LogicException('You must start the progress bar before calling finish().');
-        }
-
-        if (null !== $this->startTime) {
-            if (!$this->max) {
-                $this->barChar = $this->barCharOriginal;
-                $this->display(true);
-            }
-            $this->startTime = null;
-            $this->output->writeln('');
-            $this->output = null;
-        }
-    }
-
-    /**
-     * Initializes the progress helper.
-     */
-    private function initialize()
-    {
-        $this->formatVars = array();
-        foreach ($this->defaultFormatVars as $var) {
-            if (false !== strpos($this->format, "%{$var}%")) {
-                $this->formatVars[$var] = true;
-            }
-        }
-
-        if ($this->max > 0) {
-            $this->widths['max'] = $this->strlen($this->max);
-            $this->widths['current'] = $this->widths['max'];
-        } else {
-            $this->barCharOriginal = $this->barChar;
-            $this->barChar = $this->emptyBarChar;
-        }
-    }
-
-    /**
-     * Generates the array map of format variables to values.
-     *
-     * @param bool $finish Forces the end result
-     *
-     * @return array Array of format vars and values
-     */
-    private function generate($finish = false)
-    {
-        $vars = array();
-        $percent = 0;
-        if ($this->max > 0) {
-            $percent = (float) $this->current / $this->max;
-        }
-
-        if (isset($this->formatVars['bar'])) {
-            $completeBars = 0;
-
-            if ($this->max > 0) {
-                $completeBars = floor($percent * $this->barWidth);
-            } else {
-                if (!$finish) {
-                    $completeBars = floor($this->current % $this->barWidth);
-                } else {
-                    $completeBars = $this->barWidth;
-                }
-            }
-
-            $emptyBars = $this->barWidth - $completeBars - $this->strlen($this->progressChar);
-            $bar = str_repeat($this->barChar, $completeBars);
-            if ($completeBars < $this->barWidth) {
-                $bar .= $this->progressChar;
-                $bar .= str_repeat($this->emptyBarChar, $emptyBars);
-            }
-
-            $vars['bar'] = $bar;
-        }
-
-        if (isset($this->formatVars['elapsed'])) {
-            $elapsed = time() - $this->startTime;
-            $vars['elapsed'] = str_pad($this->humaneTime($elapsed), $this->widths['elapsed'], ' ', STR_PAD_LEFT);
-        }
-
-        if (isset($this->formatVars['current'])) {
-            $vars['current'] = str_pad($this->current, $this->widths['current'], ' ', STR_PAD_LEFT);
-        }
-
-        if (isset($this->formatVars['max'])) {
-            $vars['max'] = $this->max;
-        }
-
-        if (isset($this->formatVars['percent'])) {
-            $vars['percent'] = str_pad(floor($percent * 100), $this->widths['percent'], ' ', STR_PAD_LEFT);
-        }
-
-        return $vars;
-    }
-
-    /**
-     * Converts seconds into human-readable format.
-     *
-     * @param int $secs Number of seconds
-     *
-     * @return string Time in readable format
-     */
-    private function humaneTime($secs)
-    {
-        $text = '';
-        foreach ($this->timeFormats as $format) {
-            if ($secs < $format[0]) {
-                if (count($format) == 2) {
-                    $text = $format[1];
-                    break;
-                } else {
-                    $text = ceil($secs / $format[2]).' '.$format[1];
-                    break;
-                }
-            }
-        }
-
-        return $text;
-    }
-
-    /**
-     * Overwrites a previous message to the output.
-     *
-     * @param OutputInterface $output  An Output instance
-     * @param string          $message The message
-     */
-    private function overwrite(OutputInterface $output, $message)
-    {
-        $length = $this->strlen($message);
-
-        // append whitespace to match the last line's length
-        if (null !== $this->lastMessagesLength && $this->lastMessagesLength > $length) {
-            $message = str_pad($message, $this->lastMessagesLength, "\x20", STR_PAD_RIGHT);
-        }
-
-        // carriage return
-        $output->write("\x0D");
-        $output->write($message);
-
-        $this->lastMessagesLength = $this->strlen($message);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'progress';
-    }
-}
diff --git a/vendor/symfony/console/Helper/QuestionHelper.php b/vendor/symfony/console/Helper/QuestionHelper.php
deleted file mode 100644
index a533f87..0000000
--- a/vendor/symfony/console/Helper/QuestionHelper.php
+++ /dev/null
@@ -1,446 +0,0 @@
-<?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\Input\InputInterface;
-use Symfony\Component\Console\Output\ConsoleOutputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Formatter\OutputFormatterStyle;
-use Symfony\Component\Console\Question\Question;
-use Symfony\Component\Console\Question\ChoiceQuestion;
-
-/**
- * The QuestionHelper class provides helpers to interact with the user.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class QuestionHelper extends Helper
-{
-    private $inputStream;
-    private static $shell;
-    private static $stty;
-
-    /**
-     * Asks a question to the user.
-     *
-     * @param InputInterface  $input    An InputInterface instance
-     * @param OutputInterface $output   An OutputInterface instance
-     * @param Question        $question The question to ask
-     *
-     * @return string The user answer
-     *
-     * @throws \RuntimeException If there is no data to read in the input stream
-     */
-    public function ask(InputInterface $input, OutputInterface $output, Question $question)
-    {
-        if ($output instanceof ConsoleOutputInterface) {
-            $output = $output->getErrorOutput();
-        }
-
-        if (!$input->isInteractive()) {
-            return $question->getDefault();
-        }
-
-        if (!$question->getValidator()) {
-            return $this->doAsk($output, $question);
-        }
-
-        $that = $this;
-
-        $interviewer = function () use ($output, $question, $that) {
-            return $that->doAsk($output, $question);
-        };
-
-        return $this->validateAttempts($interviewer, $output, $question);
-    }
-
-    /**
-     * Sets the input stream to read from when interacting with the user.
-     *
-     * This is mainly useful for testing purpose.
-     *
-     * @param resource $stream The input stream
-     *
-     * @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.');
-        }
-
-        $this->inputStream = $stream;
-    }
-
-    /**
-     * Returns the helper's input stream.
-     *
-     * @return resource
-     */
-    public function getInputStream()
-    {
-        return $this->inputStream;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'question';
-    }
-
-    /**
-     * Asks the question to the user.
-     *
-     * This method is public for PHP 5.3 compatibility, it should be private.
-     *
-     * @param OutputInterface $output
-     * @param Question        $question
-     *
-     * @return bool|mixed|null|string
-     *
-     * @throws \Exception
-     * @throws \RuntimeException
-     */
-    public function doAsk(OutputInterface $output, Question $question)
-    {
-        $this->writePrompt($output, $question);
-
-        $inputStream = $this->inputStream ?: STDIN;
-        $autocomplete = $question->getAutocompleterValues();
-
-        if (null === $autocomplete || !$this->hasSttyAvailable()) {
-            $ret = false;
-            if ($question->isHidden()) {
-                try {
-                    $ret = trim($this->getHiddenResponse($output, $inputStream));
-                } catch (\RuntimeException $e) {
-                    if (!$question->isHiddenFallback()) {
-                        throw $e;
-                    }
-                }
-            }
-
-            if (false === $ret) {
-                $ret = fgets($inputStream, 4096);
-                if (false === $ret) {
-                    throw new \RuntimeException('Aborted');
-                }
-                $ret = trim($ret);
-            }
-        } else {
-            $ret = trim($this->autocomplete($output, $question, $inputStream));
-        }
-
-        $ret = strlen($ret) > 0 ? $ret : $question->getDefault();
-
-        if ($normalizer = $question->getNormalizer()) {
-            return $normalizer($ret);
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Outputs the question prompt.
-     *
-     * @param OutputInterface $output
-     * @param Question        $question
-     */
-    protected function writePrompt(OutputInterface $output, Question $question)
-    {
-        $message = $question->getQuestion();
-
-        if ($question instanceof ChoiceQuestion) {
-            $width = max(array_map('strlen', array_keys($question->getChoices())));
-
-            $messages = (array) $question->getQuestion();
-            foreach ($question->getChoices() as $key => $value) {
-                $messages[] = sprintf("  [<info>%-${width}s</info>] %s", $key, $value);
-            }
-
-            $output->writeln($messages);
-
-            $message = $question->getPrompt();
-        }
-
-        $output->write($message);
-    }
-
-    /**
-     * Outputs an error message.
-     *
-     * @param OutputInterface $output
-     * @param \Exception      $error
-     */
-    protected function writeError(OutputInterface $output, \Exception $error)
-    {
-        if (null !== $this->getHelperSet() && $this->getHelperSet()->has('formatter')) {
-            $message = $this->getHelperSet()->get('formatter')->formatBlock($error->getMessage(), 'error');
-        } else {
-            $message = '<error>'.$error->getMessage().'</error>';
-        }
-
-        $output->writeln($message);
-    }
-
-    /**
-     * Autocompletes a question.
-     *
-     * @param OutputInterface $output
-     * @param Question        $question
-     *
-     * @return string
-     */
-    private function autocomplete(OutputInterface $output, Question $question, $inputStream)
-    {
-        $autocomplete = $question->getAutocompleterValues();
-        $ret = '';
-
-        $i = 0;
-        $ofs = -1;
-        $matches = $autocomplete;
-        $numMatches = count($matches);
-
-        $sttyMode = shell_exec('stty -g');
-
-        // Disable icanon (so we can fread each keypress) and echo (we'll do echoing here instead)
-        shell_exec('stty -icanon -echo');
-
-        // Add highlighted text style
-        $output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white'));
-
-        // Read a keypress
-        while (!feof($inputStream)) {
-            $c = fread($inputStream, 1);
-
-            // Backspace Character
-            if ("\177" === $c) {
-                if (0 === $numMatches && 0 !== $i) {
-                    --$i;
-                    // Move cursor backwards
-                    $output->write("\033[1D");
-                }
-
-                if ($i === 0) {
-                    $ofs = -1;
-                    $matches = $autocomplete;
-                    $numMatches = count($matches);
-                } else {
-                    $numMatches = 0;
-                }
-
-                // Pop the last character off the end of our string
-                $ret = substr($ret, 0, $i);
-            } elseif ("\033" === $c) {
-                // Did we read an escape sequence?
-                $c .= fread($inputStream, 2);
-
-                // A = Up Arrow. B = Down Arrow
-                if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) {
-                    if ('A' === $c[2] && -1 === $ofs) {
-                        $ofs = 0;
-                    }
-
-                    if (0 === $numMatches) {
-                        continue;
-                    }
-
-                    $ofs += ('A' === $c[2]) ? -1 : 1;
-                    $ofs = ($numMatches + $ofs) % $numMatches;
-                }
-            } elseif (ord($c) < 32) {
-                if ("\t" === $c || "\n" === $c) {
-                    if ($numMatches > 0 && -1 !== $ofs) {
-                        $ret = $matches[$ofs];
-                        // Echo out remaining chars for current match
-                        $output->write(substr($ret, $i));
-                        $i = strlen($ret);
-                    }
-
-                    if ("\n" === $c) {
-                        $output->write($c);
-                        break;
-                    }
-
-                    $numMatches = 0;
-                }
-
-                continue;
-            } else {
-                $output->write($c);
-                $ret .= $c;
-                ++$i;
-
-                $numMatches = 0;
-                $ofs = 0;
-
-                foreach ($autocomplete as $value) {
-                    // If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle)
-                    if (0 === strpos($value, $ret) && $i !== strlen($value)) {
-                        $matches[$numMatches++] = $value;
-                    }
-                }
-            }
-
-            // Erase characters from cursor to end of line
-            $output->write("\033[K");
-
-            if ($numMatches > 0 && -1 !== $ofs) {
-                // Save cursor position
-                $output->write("\0337");
-                // Write highlighted text
-                $output->write('<hl>'.substr($matches[$ofs], $i).'</hl>');
-                // Restore cursor position
-                $output->write("\0338");
-            }
-        }
-
-        // Reset stty so it behaves normally again
-        shell_exec(sprintf('stty %s', $sttyMode));
-
-        return $ret;
-    }
-
-    /**
-     * Gets a hidden response from user.
-     *
-     * @param OutputInterface $output An Output instance
-     *
-     * @return string The answer
-     *
-     * @throws \RuntimeException In case the fallback is deactivated and the response cannot be hidden
-     */
-    private function getHiddenResponse(OutputInterface $output, $inputStream)
-    {
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            $exe = __DIR__.'/../Resources/bin/hiddeninput.exe';
-
-            // handle code running from a phar
-            if ('phar:' === substr(__FILE__, 0, 5)) {
-                $tmpExe = sys_get_temp_dir().'/hiddeninput.exe';
-                copy($exe, $tmpExe);
-                $exe = $tmpExe;
-            }
-
-            $value = rtrim(shell_exec($exe));
-            $output->writeln('');
-
-            if (isset($tmpExe)) {
-                unlink($tmpExe);
-            }
-
-            return $value;
-        }
-
-        if ($this->hasSttyAvailable()) {
-            $sttyMode = shell_exec('stty -g');
-
-            shell_exec('stty -echo');
-            $value = fgets($inputStream, 4096);
-            shell_exec(sprintf('stty %s', $sttyMode));
-
-            if (false === $value) {
-                throw new \RuntimeException('Aborted');
-            }
-
-            $value = trim($value);
-            $output->writeln('');
-
-            return $value;
-        }
-
-        if (false !== $shell = $this->getShell()) {
-            $readCmd = $shell === 'csh' ? 'set mypassword = $<' : 'read -r mypassword';
-            $command = sprintf("/usr/bin/env %s -c 'stty -echo; %s; stty echo; echo \$mypassword'", $shell, $readCmd);
-            $value = rtrim(shell_exec($command));
-            $output->writeln('');
-
-            return $value;
-        }
-
-        throw new \RuntimeException('Unable to hide the response.');
-    }
-
-    /**
-     * Validates an attempt.
-     *
-     * @param callable        $interviewer A callable that will ask for a question and return the result
-     * @param OutputInterface $output      An Output instance
-     * @param Question        $question    A Question instance
-     *
-     * @return string The validated response
-     *
-     * @throws \Exception In case the max number of attempts has been reached and no valid response has been given
-     */
-    private function validateAttempts($interviewer, OutputInterface $output, Question $question)
-    {
-        $error = null;
-        $attempts = $question->getMaxAttempts();
-        while (null === $attempts || $attempts--) {
-            if (null !== $error) {
-                $this->writeError($output, $error);
-            }
-
-            try {
-                return call_user_func($question->getValidator(), $interviewer());
-            } catch (\Exception $error) {
-            }
-        }
-
-        throw $error;
-    }
-
-    /**
-     * Returns a valid unix shell.
-     *
-     * @return string|bool The valid shell name, false in case no valid shell is found
-     */
-    private function getShell()
-    {
-        if (null !== self::$shell) {
-            return self::$shell;
-        }
-
-        self::$shell = false;
-
-        if (file_exists('/usr/bin/env')) {
-            // handle other OSs with bash/zsh/ksh/csh if available to hide the answer
-            $test = "/usr/bin/env %s -c 'echo OK' 2> /dev/null";
-            foreach (array('bash', 'zsh', 'ksh', 'csh') as $sh) {
-                if ('OK' === rtrim(shell_exec(sprintf($test, $sh)))) {
-                    self::$shell = $sh;
-                    break;
-                }
-            }
-        }
-
-        return self::$shell;
-    }
-
-    /**
-     * Returns whether Stty is available or not.
-     *
-     * @return bool
-     */
-    private function hasSttyAvailable()
-    {
-        if (null !== self::$stty) {
-            return self::$stty;
-        }
-
-        exec('stty 2>&1', $output, $exitcode);
-
-        return self::$stty = $exitcode === 0;
-    }
-}
diff --git a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php b/vendor/symfony/console/Helper/SymfonyQuestionHelper.php
deleted file mode 100644
index 77130f9..0000000
--- a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?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\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Question\ChoiceQuestion;
-use Symfony\Component\Console\Question\ConfirmationQuestion;
-use Symfony\Component\Console\Question\Question;
-use Symfony\Component\Console\Style\SymfonyStyle;
-
-/**
- * Symfony Style Guide compliant question helper.
- *
- * @author Kevin Bond <kevinbond@gmail.com>
- */
-class SymfonyQuestionHelper extends QuestionHelper
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function ask(InputInterface $input, OutputInterface $output, Question $question)
-    {
-        $validator = $question->getValidator();
-        $question->setValidator(function ($value) use ($validator) {
-            if (null !== $validator && is_callable($validator)) {
-                $value = $validator($value);
-            }
-
-            // make required
-            if (!is_array($value) && !is_bool($value) && 0 === strlen($value)) {
-                throw new \Exception('A value is required.');
-            }
-
-            return $value;
-        });
-
-        return parent::ask($input, $output, $question);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function writePrompt(OutputInterface $output, Question $question)
-    {
-        $text = $question->getQuestion();
-        $default = $question->getDefault();
-
-        switch (true) {
-            case null === $default:
-                $text = sprintf(' <info>%s</info>:', $text);
-
-                break;
-
-            case $question instanceof ConfirmationQuestion:
-                $text = sprintf(' <info>%s (yes/no)</info> [<comment>%s</comment>]:', $text, $default ? 'yes' : 'no');
-
-                break;
-
-            case $question instanceof ChoiceQuestion:
-                $choices = $question->getChoices();
-                $text = sprintf(' <info>%s</info> [<comment>%s</comment>]:', $text, $choices[$default]);
-
-                break;
-
-            default:
-                $text = sprintf(' <info>%s</info> [<comment>%s</comment>]:', $text, $default);
-        }
-
-        $output->writeln($text);
-
-        if ($question instanceof ChoiceQuestion) {
-            $width = max(array_map('strlen', array_keys($question->getChoices())));
-
-            foreach ($question->getChoices() as $key => $value) {
-                $output->writeln(sprintf("  [<comment>%-${width}s</comment>] %s", $key, $value));
-            }
-        }
-
-        $output->write(' > ');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function writeError(OutputInterface $output, \Exception $error)
-    {
-        if ($output instanceof SymfonyStyle) {
-            $output->newLine();
-            $output->error($error->getMessage());
-
-            return;
-        }
-
-        parent::writeError($output, $error);
-    }
-}
diff --git a/vendor/symfony/console/Helper/Table.php b/vendor/symfony/console/Helper/Table.php
deleted file mode 100644
index 6f5fbd0..0000000
--- a/vendor/symfony/console/Helper/Table.php
+++ /dev/null
@@ -1,606 +0,0 @@
-<?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;
-
-/**
- * Provides helpers to display a table.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Саша Стаменковић <umpirsky@gmail.com>
- * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
- */
-class Table
-{
-    /**
-     * Table headers.
-     *
-     * @var array
-     */
-    private $headers = array();
-
-    /**
-     * Table rows.
-     *
-     * @var array
-     */
-    private $rows = array();
-
-    /**
-     * Column widths cache.
-     *
-     * @var array
-     */
-    private $columnWidths = array();
-
-    /**
-     * Number of columns cache.
-     *
-     * @var array
-     */
-    private $numberOfColumns;
-
-    /**
-     * @var OutputInterface
-     */
-    private $output;
-
-    /**
-     * @var TableStyle
-     */
-    private $style;
-
-    private static $styles;
-
-    public function __construct(OutputInterface $output)
-    {
-        $this->output = $output;
-
-        if (!self::$styles) {
-            self::$styles = self::initStyles();
-        }
-
-        $this->setStyle('default');
-    }
-
-    /**
-     * Sets a style definition.
-     *
-     * @param string     $name  The style name
-     * @param TableStyle $style A TableStyle instance
-     */
-    public static function setStyleDefinition($name, TableStyle $style)
-    {
-        if (!self::$styles) {
-            self::$styles = self::initStyles();
-        }
-
-        self::$styles[$name] = $style;
-    }
-
-    /**
-     * Gets a style definition by name.
-     *
-     * @param string $name The style name
-     *
-     * @return TableStyle A TableStyle instance
-     */
-    public static function getStyleDefinition($name)
-    {
-        if (!self::$styles) {
-            self::$styles = self::initStyles();
-        }
-
-        if (!self::$styles[$name]) {
-            throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
-        }
-
-        return self::$styles[$name];
-    }
-
-    /**
-     * Sets table style.
-     *
-     * @param TableStyle|string $name The style name or a TableStyle instance
-     *
-     * @return Table
-     */
-    public function setStyle($name)
-    {
-        if ($name instanceof TableStyle) {
-            $this->style = $name;
-        } elseif (isset(self::$styles[$name])) {
-            $this->style = self::$styles[$name];
-        } else {
-            throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
-        }
-
-        return $this;
-    }
-
-    /**
-     * Gets the current table style.
-     *
-     * @return TableStyle
-     */
-    public function getStyle()
-    {
-        return $this->style;
-    }
-
-    public function setHeaders(array $headers)
-    {
-        $headers = array_values($headers);
-        if (!empty($headers) && !is_array($headers[0])) {
-            $headers = array($headers);
-        }
-
-        $this->headers = $headers;
-
-        return $this;
-    }
-
-    public function setRows(array $rows)
-    {
-        $this->rows = array();
-
-        return $this->addRows($rows);
-    }
-
-    public function addRows(array $rows)
-    {
-        foreach ($rows as $row) {
-            $this->addRow($row);
-        }
-
-        return $this;
-    }
-
-    public function addRow($row)
-    {
-        if ($row instanceof TableSeparator) {
-            $this->rows[] = $row;
-
-            return $this;
-        }
-
-        if (!is_array($row)) {
-            throw new \InvalidArgumentException('A row must be an array or a TableSeparator instance.');
-        }
-
-        $this->rows[] = array_values($row);
-
-        return $this;
-    }
-
-    public function setRow($column, array $row)
-    {
-        $this->rows[$column] = $row;
-
-        return $this;
-    }
-
-    /**
-     * Renders table to output.
-     *
-     * Example:
-     * +---------------+-----------------------+------------------+
-     * | ISBN          | Title                 | Author           |
-     * +---------------+-----------------------+------------------+
-     * | 99921-58-10-7 | Divine Comedy         | Dante Alighieri  |
-     * | 9971-5-0210-0 | A Tale of Two Cities  | Charles Dickens  |
-     * | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien |
-     * +---------------+-----------------------+------------------+
-     */
-    public function render()
-    {
-        $this->calculateNumberOfColumns();
-        $this->rows = $this->buildTableRows($this->rows);
-        $this->headers = $this->buildTableRows($this->headers);
-
-        $this->renderRowSeparator();
-        if (!empty($this->headers)) {
-            foreach ($this->headers as $header) {
-                $this->renderRow($header, $this->style->getCellHeaderFormat());
-                $this->renderRowSeparator();
-            }
-        }
-        foreach ($this->rows as $row) {
-            if ($row instanceof TableSeparator) {
-                $this->renderRowSeparator();
-            } else {
-                $this->renderRow($row, $this->style->getCellRowFormat());
-            }
-        }
-        if (!empty($this->rows)) {
-            $this->renderRowSeparator();
-        }
-
-        $this->cleanup();
-    }
-
-    /**
-     * Renders horizontal header separator.
-     *
-     * Example: +-----+-----------+-------+
-     */
-    private function renderRowSeparator()
-    {
-        if (0 === $count = $this->numberOfColumns) {
-            return;
-        }
-
-        if (!$this->style->getHorizontalBorderChar() && !$this->style->getCrossingChar()) {
-            return;
-        }
-
-        $markup = $this->style->getCrossingChar();
-        for ($column = 0; $column < $count; ++$column) {
-            $markup .= str_repeat($this->style->getHorizontalBorderChar(), $this->getColumnWidth($column)).$this->style->getCrossingChar();
-        }
-
-        $this->output->writeln(sprintf($this->style->getBorderFormat(), $markup));
-    }
-
-    /**
-     * Renders vertical column separator.
-     */
-    private function renderColumnSeparator()
-    {
-        $this->output->write(sprintf($this->style->getBorderFormat(), $this->style->getVerticalBorderChar()));
-    }
-
-    /**
-     * Renders table row.
-     *
-     * Example: | 9971-5-0210-0 | A Tale of Two Cities  | Charles Dickens  |
-     *
-     * @param array  $row
-     * @param string $cellFormat
-     */
-    private function renderRow(array $row, $cellFormat)
-    {
-        if (empty($row)) {
-            return;
-        }
-
-        $this->renderColumnSeparator();
-        foreach ($this->getRowColumns($row) as $column) {
-            $this->renderCell($row, $column, $cellFormat);
-            $this->renderColumnSeparator();
-        }
-        $this->output->writeln('');
-    }
-
-    /**
-     * Renders table cell with padding.
-     *
-     * @param array  $row
-     * @param int    $column
-     * @param string $cellFormat
-     */
-    private function renderCell(array $row, $column, $cellFormat)
-    {
-        $cell = isset($row[$column]) ? $row[$column] : '';
-        $width = $this->getColumnWidth($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);
-            }
-        }
-
-        // 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)) {
-            $width += strlen($cell) - mb_strwidth($cell, $encoding);
-        }
-
-        if ($cell instanceof TableSeparator) {
-            $this->output->write(sprintf($this->style->getBorderFormat(), str_repeat($this->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())));
-        }
-    }
-
-    /**
-     * Calculate number of columns for this table.
-     */
-    private function calculateNumberOfColumns()
-    {
-        if (null !== $this->numberOfColumns) {
-            return;
-        }
-
-        $columns = array(0);
-        foreach (array_merge($this->headers, $this->rows) as $row) {
-            if ($row instanceof TableSeparator) {
-                continue;
-            }
-
-            $columns[] = $this->getNumberOfColumns($row);
-        }
-
-        return $this->numberOfColumns = max($columns);
-    }
-
-    private function buildTableRows($rows)
-    {
-        $unmergedRows = array();
-        for ($rowKey = 0; $rowKey < count($rows); ++$rowKey) {
-            $rows = $this->fillNextRows($rows, $rowKey);
-
-            // Remove any new line breaks and replace it with a new line
-            foreach ($rows[$rowKey] as $column => $cell) {
-                $rows[$rowKey] = $this->fillCells($rows[$rowKey], $column);
-                if (!strstr($cell, "\n")) {
-                    continue;
-                }
-                $lines = explode("\n", $cell);
-                foreach ($lines as $lineKey => $line) {
-                    if ($cell instanceof TableCell) {
-                        $line = new TableCell($line, array('colspan' => $cell->getColspan()));
-                    }
-                    if (0 === $lineKey) {
-                        $rows[$rowKey][$column] = $line;
-                    } else {
-                        $unmergedRows[$rowKey][$lineKey][$column] = $line;
-                    }
-                }
-            }
-        }
-
-        $tableRows = array();
-        foreach ($rows as $rowKey => $row) {
-            $tableRows[] = $row;
-            if (isset($unmergedRows[$rowKey])) {
-                $tableRows = array_merge($tableRows, $unmergedRows[$rowKey]);
-            }
-        }
-
-        return $tableRows;
-    }
-
-    /**
-     * fill rows that contains rowspan > 1.
-     *
-     * @param array $rows
-     * @param int   $line
-     *
-     * @return array
-     */
-    private function fillNextRows($rows, $line)
-    {
-        $unmergedRows = array();
-        foreach ($rows[$line] as $column => $cell) {
-            if ($cell instanceof TableCell && $cell->getRowspan() > 1) {
-                $nbLines = $cell->getRowspan() - 1;
-                $lines = array($cell);
-                if (strstr($cell, "\n")) {
-                    $lines = explode("\n", $cell);
-                    $nbLines = count($lines) > $nbLines ? substr_count($cell, "\n") : $nbLines;
-
-                    $rows[$line][$column] = new TableCell($lines[0], array('colspan' => $cell->getColspan()));
-                    unset($lines[0]);
-                }
-
-                // create a two dimensional array (rowspan x colspan)
-                $unmergedRows = array_replace_recursive(array_fill($line + 1, $nbLines, ''), $unmergedRows);
-                foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) {
-                    $value = isset($lines[$unmergedRowKey - $line]) ? $lines[$unmergedRowKey - $line] : '';
-                    $unmergedRows[$unmergedRowKey][$column] = new TableCell($value, array('colspan' => $cell->getColspan()));
-                }
-            }
-        }
-
-        foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) {
-            // we need to know if $unmergedRow will be merged or inserted into $rows
-            if (isset($rows[$unmergedRowKey]) && is_array($rows[$unmergedRowKey]) && ($this->getNumberOfColumns($rows[$unmergedRowKey]) + $this->getNumberOfColumns($unmergedRows[$unmergedRowKey]) <= $this->numberOfColumns)) {
-                foreach ($unmergedRow as $cellKey => $cell) {
-                    // insert cell into row at cellKey position
-                    array_splice($rows[$unmergedRowKey], $cellKey, 0, array($cell));
-                }
-            } else {
-                $row = $this->copyRow($rows, $unmergedRowKey - 1);
-                foreach ($unmergedRow as $column => $cell) {
-                    if (!empty($cell)) {
-                        $row[$column] = $unmergedRow[$column];
-                    }
-                }
-                array_splice($rows, $unmergedRowKey, 0, array($row));
-            }
-        }
-
-        return $rows;
-    }
-
-    /**
-     * fill cells for a row that contains colspan > 1.
-     *
-     * @param array $row
-     * @param int   $column
-     *
-     * @return array
-     */
-    private function fillCells($row, $column)
-    {
-        $cell = $row[$column];
-        if ($cell instanceof TableCell && $cell->getColspan() > 1) {
-            foreach (range($column + 1, $column + $cell->getColspan() - 1) as $position) {
-                // insert empty value into rows at column position
-                array_splice($row, $position, 0, '');
-            }
-        }
-
-        return $row;
-    }
-
-    /**
-     * @param array $rows
-     * @param int   $line
-     *
-     * @return array
-     */
-    private function copyRow($rows, $line)
-    {
-        $row = $rows[$line];
-        foreach ($row as $cellKey => $cellValue) {
-            $row[$cellKey] = '';
-            if ($cellValue instanceof TableCell) {
-                $row[$cellKey] = new TableCell('', array('colspan' => $cellValue->getColspan()));
-            }
-        }
-
-        return $row;
-    }
-
-    /**
-     * Gets number of columns by row.
-     *
-     * @param array $row
-     *
-     * @return int
-     */
-    private function getNumberOfColumns(array $row)
-    {
-        $columns = count($row);
-        foreach ($row as $column) {
-            $columns += $column instanceof TableCell ? ($column->getColspan() - 1) : 0;
-        }
-
-        return $columns;
-    }
-
-    /**
-     * Gets list of columns for the given row.
-     *
-     * @param array $row
-     *
-     * @return array()
-     */
-    private function getRowColumns($row)
-    {
-        $columns = range(0, $this->numberOfColumns - 1);
-        foreach ($row as $cellKey => $cell) {
-            if ($cell instanceof TableCell && $cell->getColspan() > 1) {
-                // exclude grouped columns.
-                $columns = array_diff($columns, range($cellKey + 1, $cellKey + $cell->getColspan() - 1));
-            }
-        }
-
-        return $columns;
-    }
-
-    /**
-     * Gets column width.
-     *
-     * @param int $column
-     *
-     * @return int
-     */
-    private function getColumnWidth($column)
-    {
-        if (isset($this->columnWidths[$column])) {
-            return $this->columnWidths[$column];
-        }
-
-        foreach (array_merge($this->headers, $this->rows) as $row) {
-            if ($row instanceof TableSeparator) {
-                continue;
-            }
-
-            $lengths[] = $this->getCellWidth($row, $column);
-        }
-
-        return $this->columnWidths[$column] = max($lengths) + strlen($this->style->getCellRowContentFormat()) - 2;
-    }
-
-    /**
-     * Gets column width.
-     *
-     * @param int $column
-     *
-     * @return int
-     */
-    private function getColumnSeparatorWidth()
-    {
-        return strlen(sprintf($this->style->getBorderFormat(), $this->style->getVerticalBorderChar()));
-    }
-
-    /**
-     * Gets cell width.
-     *
-     * @param array $row
-     * @param int   $column
-     *
-     * @return int
-     */
-    private function getCellWidth(array $row, $column)
-    {
-        if (isset($row[$column])) {
-            $cell = $row[$column];
-            $cellWidth = Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell);
-            if ($cell instanceof TableCell && $cell->getColspan() > 1) {
-                // we assume that cell value will be across more than one column.
-                $cellWidth = $cellWidth / $cell->getColspan();
-            }
-
-            return $cellWidth;
-        }
-
-        return 0;
-    }
-
-    /**
-     * Called after rendering to cleanup cache data.
-     */
-    private function cleanup()
-    {
-        $this->columnWidths = array();
-        $this->numberOfColumns = null;
-    }
-
-    private static function initStyles()
-    {
-        $borderless = new TableStyle();
-        $borderless
-            ->setHorizontalBorderChar('=')
-            ->setVerticalBorderChar(' ')
-            ->setCrossingChar(' ')
-        ;
-
-        $compact = new TableStyle();
-        $compact
-            ->setHorizontalBorderChar('')
-            ->setVerticalBorderChar(' ')
-            ->setCrossingChar('')
-            ->setCellRowContentFormat('%s')
-        ;
-
-        $styleGuide = new TableStyle();
-        $styleGuide
-            ->setHorizontalBorderChar('-')
-            ->setVerticalBorderChar(' ')
-            ->setCrossingChar(' ')
-            ->setCellHeaderFormat('%s')
-        ;
-
-        return array(
-            'default' => new TableStyle(),
-            'borderless' => $borderless,
-            'compact' => $compact,
-            'symfony-style-guide' => $styleGuide,
-        );
-    }
-}
diff --git a/vendor/symfony/console/Helper/TableCell.php b/vendor/symfony/console/Helper/TableCell.php
deleted file mode 100644
index aa0d318..0000000
--- a/vendor/symfony/console/Helper/TableCell.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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;
-
-/**
- * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
- */
-class TableCell
-{
-    /**
-     * @var string
-     */
-    private $value;
-
-    /**
-     * @var array
-     */
-    private $options = array(
-        'rowspan' => 1,
-        'colspan' => 1,
-    );
-
-    /**
-     * @param string $value
-     * @param array  $options
-     */
-    public function __construct($value = '', array $options = array())
-    {
-        $this->value = $value;
-
-        // 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)));
-        }
-
-        $this->options = array_merge($this->options, $options);
-    }
-
-    /**
-     * Returns the cell value.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Gets number of colspan.
-     *
-     * @return int
-     */
-    public function getColspan()
-    {
-        return (int) $this->options['colspan'];
-    }
-
-    /**
-     * Gets number of rowspan.
-     *
-     * @return int
-     */
-    public function getRowspan()
-    {
-        return (int) $this->options['rowspan'];
-    }
-}
diff --git a/vendor/symfony/console/Helper/TableHelper.php b/vendor/symfony/console/Helper/TableHelper.php
deleted file mode 100644
index 2953522..0000000
--- a/vendor/symfony/console/Helper/TableHelper.php
+++ /dev/null
@@ -1,268 +0,0 @@
-<?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;
-use Symfony\Component\Console\Output\NullOutput;
-
-/**
- * Provides helpers to display table output.
- *
- * @author Саша Стаменковић <umpirsky@gmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0
- *             Use {@link Table} instead.
- */
-class TableHelper extends Helper
-{
-    const LAYOUT_DEFAULT = 0;
-    const LAYOUT_BORDERLESS = 1;
-    const LAYOUT_COMPACT = 2;
-
-    /**
-     * @var Table
-     */
-    private $table;
-
-    public function __construct($triggerDeprecationError = true)
-    {
-        if ($triggerDeprecationError) {
-            @trigger_error('The '.__CLASS__.' class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Console\Helper\Table class instead.', E_USER_DEPRECATED);
-        }
-
-        $this->table = new Table(new NullOutput());
-    }
-
-    /**
-     * Sets table layout type.
-     *
-     * @param int $layout self::LAYOUT_*
-     *
-     * @return TableHelper
-     *
-     * @throws \InvalidArgumentException when the table layout is not known
-     */
-    public function setLayout($layout)
-    {
-        switch ($layout) {
-            case self::LAYOUT_BORDERLESS:
-                $this->table->setStyle('borderless');
-                break;
-
-            case self::LAYOUT_COMPACT:
-                $this->table->setStyle('compact');
-                break;
-
-            case self::LAYOUT_DEFAULT:
-                $this->table->setStyle('default');
-                break;
-
-            default:
-                throw new \InvalidArgumentException(sprintf('Invalid table layout "%s".', $layout));
-        };
-
-        return $this;
-    }
-
-    public function setHeaders(array $headers)
-    {
-        $this->table->setHeaders($headers);
-
-        return $this;
-    }
-
-    public function setRows(array $rows)
-    {
-        $this->table->setRows($rows);
-
-        return $this;
-    }
-
-    public function addRows(array $rows)
-    {
-        $this->table->addRows($rows);
-
-        return $this;
-    }
-
-    public function addRow(array $row)
-    {
-        $this->table->addRow($row);
-
-        return $this;
-    }
-
-    public function setRow($column, array $row)
-    {
-        $this->table->setRow($column, $row);
-
-        return $this;
-    }
-
-    /**
-     * Sets padding character, used for cell padding.
-     *
-     * @param string $paddingChar
-     *
-     * @return TableHelper
-     */
-    public function setPaddingChar($paddingChar)
-    {
-        $this->table->getStyle()->setPaddingChar($paddingChar);
-
-        return $this;
-    }
-
-    /**
-     * Sets horizontal border character.
-     *
-     * @param string $horizontalBorderChar
-     *
-     * @return TableHelper
-     */
-    public function setHorizontalBorderChar($horizontalBorderChar)
-    {
-        $this->table->getStyle()->setHorizontalBorderChar($horizontalBorderChar);
-
-        return $this;
-    }
-
-    /**
-     * Sets vertical border character.
-     *
-     * @param string $verticalBorderChar
-     *
-     * @return TableHelper
-     */
-    public function setVerticalBorderChar($verticalBorderChar)
-    {
-        $this->table->getStyle()->setVerticalBorderChar($verticalBorderChar);
-
-        return $this;
-    }
-
-    /**
-     * Sets crossing character.
-     *
-     * @param string $crossingChar
-     *
-     * @return TableHelper
-     */
-    public function setCrossingChar($crossingChar)
-    {
-        $this->table->getStyle()->setCrossingChar($crossingChar);
-
-        return $this;
-    }
-
-    /**
-     * Sets header cell format.
-     *
-     * @param string $cellHeaderFormat
-     *
-     * @return TableHelper
-     */
-    public function setCellHeaderFormat($cellHeaderFormat)
-    {
-        $this->table->getStyle()->setCellHeaderFormat($cellHeaderFormat);
-
-        return $this;
-    }
-
-    /**
-     * Sets row cell format.
-     *
-     * @param string $cellRowFormat
-     *
-     * @return TableHelper
-     */
-    public function setCellRowFormat($cellRowFormat)
-    {
-        $this->table->getStyle()->setCellHeaderFormat($cellRowFormat);
-
-        return $this;
-    }
-
-    /**
-     * Sets row cell content format.
-     *
-     * @param string $cellRowContentFormat
-     *
-     * @return TableHelper
-     */
-    public function setCellRowContentFormat($cellRowContentFormat)
-    {
-        $this->table->getStyle()->setCellRowContentFormat($cellRowContentFormat);
-
-        return $this;
-    }
-
-    /**
-     * Sets table border format.
-     *
-     * @param string $borderFormat
-     *
-     * @return TableHelper
-     */
-    public function setBorderFormat($borderFormat)
-    {
-        $this->table->getStyle()->setBorderFormat($borderFormat);
-
-        return $this;
-    }
-
-    /**
-     * Sets cell padding type.
-     *
-     * @param int $padType STR_PAD_*
-     *
-     * @return TableHelper
-     */
-    public function setPadType($padType)
-    {
-        $this->table->getStyle()->setPadType($padType);
-
-        return $this;
-    }
-
-    /**
-     * Renders table to output.
-     *
-     * Example:
-     * +---------------+-----------------------+------------------+
-     * | ISBN          | Title                 | Author           |
-     * +---------------+-----------------------+------------------+
-     * | 99921-58-10-7 | Divine Comedy         | Dante Alighieri  |
-     * | 9971-5-0210-0 | A Tale of Two Cities  | Charles Dickens  |
-     * | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien |
-     * +---------------+-----------------------+------------------+
-     *
-     * @param OutputInterface $output
-     */
-    public function render(OutputInterface $output)
-    {
-        $p = new \ReflectionProperty($this->table, 'output');
-        $p->setAccessible(true);
-        $p->setValue($this->table, $output);
-
-        $this->table->render();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'table';
-    }
-}
diff --git a/vendor/symfony/console/Helper/TableSeparator.php b/vendor/symfony/console/Helper/TableSeparator.php
deleted file mode 100644
index 8cbbc66..0000000
--- a/vendor/symfony/console/Helper/TableSeparator.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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;
-
-/**
- * Marks a row as being a separator.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TableSeparator extends TableCell
-{
-    /**
-     * @param string $value
-     * @param array  $options
-     */
-    public function __construct(array $options = array())
-    {
-        parent::__construct('', $options);
-    }
-}
diff --git a/vendor/symfony/console/Helper/TableStyle.php b/vendor/symfony/console/Helper/TableStyle.php
deleted file mode 100644
index f0f46c7..0000000
--- a/vendor/symfony/console/Helper/TableStyle.php
+++ /dev/null
@@ -1,255 +0,0 @@
-<?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;
-
-/**
- * Defines the styles for a Table.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Саша Стаменковић <umpirsky@gmail.com>
- */
-class TableStyle
-{
-    private $paddingChar = ' ';
-    private $horizontalBorderChar = '-';
-    private $verticalBorderChar = '|';
-    private $crossingChar = '+';
-    private $cellHeaderFormat = '<info>%s</info>';
-    private $cellRowFormat = '%s';
-    private $cellRowContentFormat = ' %s ';
-    private $borderFormat = '%s';
-    private $padType = STR_PAD_RIGHT;
-
-    /**
-     * Sets padding character, used for cell padding.
-     *
-     * @param string $paddingChar
-     *
-     * @return TableStyle
-     */
-    public function setPaddingChar($paddingChar)
-    {
-        if (!$paddingChar) {
-            throw new \LogicException('The padding char must not be empty');
-        }
-
-        $this->paddingChar = $paddingChar;
-
-        return $this;
-    }
-
-    /**
-     * Gets padding character, used for cell padding.
-     *
-     * @return string
-     */
-    public function getPaddingChar()
-    {
-        return $this->paddingChar;
-    }
-
-    /**
-     * Sets horizontal border character.
-     *
-     * @param string $horizontalBorderChar
-     *
-     * @return TableStyle
-     */
-    public function setHorizontalBorderChar($horizontalBorderChar)
-    {
-        $this->horizontalBorderChar = $horizontalBorderChar;
-
-        return $this;
-    }
-
-    /**
-     * Gets horizontal border character.
-     *
-     * @return string
-     */
-    public function getHorizontalBorderChar()
-    {
-        return $this->horizontalBorderChar;
-    }
-
-    /**
-     * Sets vertical border character.
-     *
-     * @param string $verticalBorderChar
-     *
-     * @return TableStyle
-     */
-    public function setVerticalBorderChar($verticalBorderChar)
-    {
-        $this->verticalBorderChar = $verticalBorderChar;
-
-        return $this;
-    }
-
-    /**
-     * Gets vertical border character.
-     *
-     * @return string
-     */
-    public function getVerticalBorderChar()
-    {
-        return $this->verticalBorderChar;
-    }
-
-    /**
-     * Sets crossing character.
-     *
-     * @param string $crossingChar
-     *
-     * @return TableStyle
-     */
-    public function setCrossingChar($crossingChar)
-    {
-        $this->crossingChar = $crossingChar;
-
-        return $this;
-    }
-
-    /**
-     * Gets crossing character.
-     *
-     * @return string $crossingChar
-     */
-    public function getCrossingChar()
-    {
-        return $this->crossingChar;
-    }
-
-    /**
-     * Sets header cell format.
-     *
-     * @param string $cellHeaderFormat
-     *
-     * @return TableStyle
-     */
-    public function setCellHeaderFormat($cellHeaderFormat)
-    {
-        $this->cellHeaderFormat = $cellHeaderFormat;
-
-        return $this;
-    }
-
-    /**
-     * Gets header cell format.
-     *
-     * @return string
-     */
-    public function getCellHeaderFormat()
-    {
-        return $this->cellHeaderFormat;
-    }
-
-    /**
-     * Sets row cell format.
-     *
-     * @param string $cellRowFormat
-     *
-     * @return TableStyle
-     */
-    public function setCellRowFormat($cellRowFormat)
-    {
-        $this->cellRowFormat = $cellRowFormat;
-
-        return $this;
-    }
-
-    /**
-     * Gets row cell format.
-     *
-     * @return string
-     */
-    public function getCellRowFormat()
-    {
-        return $this->cellRowFormat;
-    }
-
-    /**
-     * Sets row cell content format.
-     *
-     * @param string $cellRowContentFormat
-     *
-     * @return TableStyle
-     */
-    public function setCellRowContentFormat($cellRowContentFormat)
-    {
-        $this->cellRowContentFormat = $cellRowContentFormat;
-
-        return $this;
-    }
-
-    /**
-     * Gets row cell content format.
-     *
-     * @return string
-     */
-    public function getCellRowContentFormat()
-    {
-        return $this->cellRowContentFormat;
-    }
-
-    /**
-     * Sets table border format.
-     *
-     * @param string $borderFormat
-     *
-     * @return TableStyle
-     */
-    public function setBorderFormat($borderFormat)
-    {
-        $this->borderFormat = $borderFormat;
-
-        return $this;
-    }
-
-    /**
-     * Gets table border format.
-     *
-     * @return string
-     */
-    public function getBorderFormat()
-    {
-        return $this->borderFormat;
-    }
-
-    /**
-     * Sets cell padding type.
-     *
-     * @param int $padType STR_PAD_*
-     *
-     * @return TableStyle
-     */
-    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).');
-        }
-
-        $this->padType = $padType;
-
-        return $this;
-    }
-
-    /**
-     * Gets cell padding type.
-     *
-     * @return int
-     */
-    public function getPadType()
-    {
-        return $this->padType;
-    }
-}
diff --git a/vendor/symfony/console/Input/ArgvInput.php b/vendor/symfony/console/Input/ArgvInput.php
deleted file mode 100644
index 43b28d5..0000000
--- a/vendor/symfony/console/Input/ArgvInput.php
+++ /dev/null
@@ -1,349 +0,0 @@
-<?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\Input;
-
-/**
- * ArgvInput represents an input coming from the CLI arguments.
- *
- * Usage:
- *
- *     $input = new ArgvInput();
- *
- * By default, the `$_SERVER['argv']` array is used for the input values.
- *
- * This can be overridden by explicitly passing the input values in the constructor:
- *
- *     $input = new ArgvInput($_SERVER['argv']);
- *
- * If you pass it yourself, don't forget that the first element of the array
- * is the name of the running application.
- *
- * When passing an argument to the constructor, be sure that it respects
- * the same rules as the argv one. It's almost always better to use the
- * `StringInput` when you want to provide your own input.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @see http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
- * @see http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html#tag_12_02
- */
-class ArgvInput extends Input
-{
-    private $tokens;
-    private $parsed;
-
-    /**
-     * Constructor.
-     *
-     * @param array           $argv       An array of parameters from the CLI (in the argv format)
-     * @param InputDefinition $definition A InputDefinition instance
-     */
-    public function __construct(array $argv = null, InputDefinition $definition = null)
-    {
-        if (null === $argv) {
-            $argv = $_SERVER['argv'];
-        }
-
-        // strip the application name
-        array_shift($argv);
-
-        $this->tokens = $argv;
-
-        parent::__construct($definition);
-    }
-
-    protected function setTokens(array $tokens)
-    {
-        $this->tokens = $tokens;
-    }
-
-    /**
-     * Processes command line arguments.
-     */
-    protected function parse()
-    {
-        $parseOptions = true;
-        $this->parsed = $this->tokens;
-        while (null !== $token = array_shift($this->parsed)) {
-            if ($parseOptions && '' == $token) {
-                $this->parseArgument($token);
-            } elseif ($parseOptions && '--' == $token) {
-                $parseOptions = false;
-            } elseif ($parseOptions && 0 === strpos($token, '--')) {
-                $this->parseLongOption($token);
-            } elseif ($parseOptions && '-' === $token[0] && '-' !== $token) {
-                $this->parseShortOption($token);
-            } else {
-                $this->parseArgument($token);
-            }
-        }
-    }
-
-    /**
-     * Parses a short option.
-     *
-     * @param string $token The current token.
-     */
-    private function parseShortOption($token)
-    {
-        $name = substr($token, 1);
-
-        if (strlen($name) > 1) {
-            if ($this->definition->hasShortcut($name[0]) && $this->definition->getOptionForShortcut($name[0])->acceptValue()) {
-                // an option with a value (with no space)
-                $this->addShortOption($name[0], substr($name, 1));
-            } else {
-                $this->parseShortOptionSet($name);
-            }
-        } else {
-            $this->addShortOption($name, null);
-        }
-    }
-
-    /**
-     * Parses a short option set.
-     *
-     * @param string $name The current token
-     *
-     * @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]));
-            }
-
-            $option = $this->definition->getOptionForShortcut($name[$i]);
-            if ($option->acceptValue()) {
-                $this->addLongOption($option->getName(), $i === $len - 1 ? null : substr($name, $i + 1));
-
-                break;
-            } else {
-                $this->addLongOption($option->getName(), null);
-            }
-        }
-    }
-
-    /**
-     * Parses a long option.
-     *
-     * @param string $token The current token
-     */
-    private function parseLongOption($token)
-    {
-        $name = substr($token, 2);
-
-        if (false !== $pos = strpos($name, '=')) {
-            $this->addLongOption(substr($name, 0, $pos), substr($name, $pos + 1));
-        } else {
-            $this->addLongOption($name, null);
-        }
-    }
-
-    /**
-     * Parses an argument.
-     *
-     * @param string $token The current token
-     *
-     * @throws \RuntimeException When too many arguments are given
-     */
-    private function parseArgument($token)
-    {
-        $c = count($this->arguments);
-
-        // if input is expecting another argument, add it
-        if ($this->definition->hasArgument($c)) {
-            $arg = $this->definition->getArgument($c);
-            $this->arguments[$arg->getName()] = $arg->isArray() ? array($token) : $token;
-
-        // if last argument isArray(), append token to last argument
-        } elseif ($this->definition->hasArgument($c - 1) && $this->definition->getArgument($c - 1)->isArray()) {
-            $arg = $this->definition->getArgument($c - 1);
-            $this->arguments[$arg->getName()][] = $token;
-
-        // unexpected argument
-        } else {
-            throw new \RuntimeException('Too many arguments.');
-        }
-    }
-
-    /**
-     * Adds a short option value.
-     *
-     * @param string $shortcut The short option key
-     * @param mixed  $value    The value for the option
-     *
-     * @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));
-        }
-
-        $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value);
-    }
-
-    /**
-     * Adds a long option value.
-     *
-     * @param string $name  The long option key
-     * @param mixed  $value The value for the option
-     *
-     * @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));
-        }
-
-        $option = $this->definition->getOption($name);
-
-        // Convert empty values to null
-        if (!isset($value[0])) {
-            $value = null;
-        }
-
-        if (null !== $value && !$option->acceptValue()) {
-            throw new \RuntimeException(sprintf('The "--%s" option does not accept a value.', $name));
-        }
-
-        if (null === $value && $option->acceptValue() && count($this->parsed)) {
-            // if option accepts an optional or mandatory argument
-            // let's see if there is one provided
-            $next = array_shift($this->parsed);
-            if (isset($next[0]) && '-' !== $next[0]) {
-                $value = $next;
-            } elseif (empty($next)) {
-                $value = '';
-            } else {
-                array_unshift($this->parsed, $next);
-            }
-        }
-
-        if (null === $value) {
-            if ($option->isValueRequired()) {
-                throw new \RuntimeException(sprintf('The "--%s" option requires a value.', $name));
-            }
-
-            if (!$option->isArray()) {
-                $value = $option->isValueOptional() ? $option->getDefault() : true;
-            }
-        }
-
-        if ($option->isArray()) {
-            $this->options[$name][] = $value;
-        } else {
-            $this->options[$name] = $value;
-        }
-    }
-
-    /**
-     * Returns the first argument from the raw parameters (not parsed).
-     *
-     * @return string The value of the first argument or null otherwise
-     */
-    public function getFirstArgument()
-    {
-        foreach ($this->tokens as $token) {
-            if ($token && '-' === $token[0]) {
-                continue;
-            }
-
-            return $token;
-        }
-    }
-
-    /**
-     * Returns true if the raw parameters (not parsed) contain a value.
-     *
-     * This method is to be used to introspect the input parameters
-     * before they have been validated. It must be used carefully.
-     *
-     * @param string|array $values The value(s) to look for in the raw parameters (can be an array)
-     *
-     * @return bool true if the value is contained in the raw parameters
-     */
-    public function hasParameterOption($values)
-    {
-        $values = (array) $values;
-
-        foreach ($this->tokens as $token) {
-            foreach ($values as $value) {
-                if ($token === $value || 0 === strpos($token, $value.'=')) {
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns the value of a raw option (not parsed).
-     *
-     * This method is to be used to introspect the input parameters
-     * before they have been validated. It must be used carefully.
-     *
-     * @param string|array $values  The value(s) to look for in the raw parameters (can be an array)
-     * @param mixed        $default The default value to return if no result is found
-     *
-     * @return mixed The option value
-     */
-    public function getParameterOption($values, $default = false)
-    {
-        $values = (array) $values;
-        $tokens = $this->tokens;
-
-        while (0 < count($tokens)) {
-            $token = array_shift($tokens);
-
-            foreach ($values as $value) {
-                if ($token === $value || 0 === strpos($token, $value.'=')) {
-                    if (false !== $pos = strpos($token, '=')) {
-                        return substr($token, $pos + 1);
-                    }
-
-                    return array_shift($tokens);
-                }
-            }
-        }
-
-        return $default;
-    }
-
-    /**
-     * Returns a stringified representation of the args passed to the command.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        $self = $this;
-        $tokens = array_map(function ($token) use ($self) {
-            if (preg_match('{^(-[^=]+=)(.+)}', $token, $match)) {
-                return $match[1].$self->escapeToken($match[2]);
-            }
-
-            if ($token && $token[0] !== '-') {
-                return $self->escapeToken($token);
-            }
-
-            return $token;
-        }, $this->tokens);
-
-        return implode(' ', $tokens);
-    }
-}
diff --git a/vendor/symfony/console/Input/ArrayInput.php b/vendor/symfony/console/Input/ArrayInput.php
deleted file mode 100644
index 99c9788..0000000
--- a/vendor/symfony/console/Input/ArrayInput.php
+++ /dev/null
@@ -1,207 +0,0 @@
-<?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\Input;
-
-/**
- * ArrayInput represents an input provided as an array.
- *
- * Usage:
- *
- *     $input = new ArrayInput(array('name' => 'foo', '--bar' => 'foobar'));
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ArrayInput extends Input
-{
-    private $parameters;
-
-    /**
-     * Constructor.
-     *
-     * @param array           $parameters An array of parameters
-     * @param InputDefinition $definition A InputDefinition instance
-     */
-    public function __construct(array $parameters, InputDefinition $definition = null)
-    {
-        $this->parameters = $parameters;
-
-        parent::__construct($definition);
-    }
-
-    /**
-     * Returns the first argument from the raw parameters (not parsed).
-     *
-     * @return string The value of the first argument or null otherwise
-     */
-    public function getFirstArgument()
-    {
-        foreach ($this->parameters as $key => $value) {
-            if ($key && '-' === $key[0]) {
-                continue;
-            }
-
-            return $value;
-        }
-    }
-
-    /**
-     * Returns true if the raw parameters (not parsed) contain a value.
-     *
-     * This method is to be used to introspect the input parameters
-     * before they have been validated. It must be used carefully.
-     *
-     * @param string|array $values The values to look for in the raw parameters (can be an array)
-     *
-     * @return bool true if the value is contained in the raw parameters
-     */
-    public function hasParameterOption($values)
-    {
-        $values = (array) $values;
-
-        foreach ($this->parameters as $k => $v) {
-            if (!is_int($k)) {
-                $v = $k;
-            }
-
-            if (in_array($v, $values)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns the value of a raw option (not parsed).
-     *
-     * This method is to be used to introspect the input parameters
-     * before they have been validated. It must be used carefully.
-     *
-     * @param string|array $values  The value(s) to look for in the raw parameters (can be an array)
-     * @param mixed        $default The default value to return if no result is found
-     *
-     * @return mixed The option value
-     */
-    public function getParameterOption($values, $default = false)
-    {
-        $values = (array) $values;
-
-        foreach ($this->parameters as $k => $v) {
-            if (is_int($k)) {
-                if (in_array($v, $values)) {
-                    return true;
-                }
-            } elseif (in_array($k, $values)) {
-                return $v;
-            }
-        }
-
-        return $default;
-    }
-
-    /**
-     * Returns a stringified representation of the args passed to the command.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        $params = array();
-        foreach ($this->parameters as $param => $val) {
-            if ($param && '-' === $param[0]) {
-                $params[] = $param.('' != $val ? '='.$this->escapeToken($val) : '');
-            } else {
-                $params[] = $this->escapeToken($val);
-            }
-        }
-
-        return implode(' ', $params);
-    }
-
-    /**
-     * Processes command line arguments.
-     */
-    protected function parse()
-    {
-        foreach ($this->parameters as $key => $value) {
-            if (0 === strpos($key, '--')) {
-                $this->addLongOption(substr($key, 2), $value);
-            } elseif ('-' === $key[0]) {
-                $this->addShortOption(substr($key, 1), $value);
-            } else {
-                $this->addArgument($key, $value);
-            }
-        }
-    }
-
-    /**
-     * Adds a short option value.
-     *
-     * @param string $shortcut The short option key
-     * @param mixed  $value    The value for the option
-     *
-     * @throws \InvalidArgumentException 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));
-        }
-
-        $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value);
-    }
-
-    /**
-     * Adds a long option 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
-     */
-    private function addLongOption($name, $value)
-    {
-        if (!$this->definition->hasOption($name)) {
-            throw new \InvalidArgumentException(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));
-            }
-
-            $value = $option->isValueOptional() ? $option->getDefault() : true;
-        }
-
-        $this->options[$name] = $value;
-    }
-
-    /**
-     * Adds an argument value.
-     *
-     * @param string $name  The argument name
-     * @param mixed  $value The value for the argument
-     *
-     * @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));
-        }
-
-        $this->arguments[$name] = $value;
-    }
-}
diff --git a/vendor/symfony/console/Input/Input.php b/vendor/symfony/console/Input/Input.php
deleted file mode 100644
index e26fcc1..0000000
--- a/vendor/symfony/console/Input/Input.php
+++ /dev/null
@@ -1,233 +0,0 @@
-<?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\Input;
-
-/**
- * Input is the base class for all concrete Input classes.
- *
- * Three concrete classes are provided by default:
- *
- *  * `ArgvInput`: The input comes from the CLI arguments (argv)
- *  * `StringInput`: The input is provided as a string
- *  * `ArrayInput`: The input is provided as an array
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Input implements InputInterface
-{
-    /**
-     * @var InputDefinition
-     */
-    protected $definition;
-    protected $options = array();
-    protected $arguments = array();
-    protected $interactive = true;
-
-    /**
-     * Constructor.
-     *
-     * @param InputDefinition $definition A InputDefinition instance
-     */
-    public function __construct(InputDefinition $definition = null)
-    {
-        if (null === $definition) {
-            $this->definition = new InputDefinition();
-        } else {
-            $this->bind($definition);
-            $this->validate();
-        }
-    }
-
-    /**
-     * Binds the current Input instance with the given arguments and options.
-     *
-     * @param InputDefinition $definition A InputDefinition instance
-     */
-    public function bind(InputDefinition $definition)
-    {
-        $this->arguments = array();
-        $this->options = array();
-        $this->definition = $definition;
-
-        $this->parse();
-    }
-
-    /**
-     * Processes command line arguments.
-     */
-    abstract protected function parse();
-
-    /**
-     * Validates the input.
-     *
-     * @throws \RuntimeException When not enough arguments are given
-     */
-    public function validate()
-    {
-        $definition = $this->definition;
-        $givenArguments = $this->arguments;
-
-        $missingArguments = array_filter(array_keys($definition->getArguments()), function ($argument) use ($definition, $givenArguments) {
-            return !array_key_exists($argument, $givenArguments) && $definition->getArgument($argument)->isRequired();
-        });
-
-        if (count($missingArguments) > 0) {
-            throw new \RuntimeException(sprintf('Not enough arguments (missing: "%s").', implode(', ', $missingArguments)));
-        }
-    }
-
-    /**
-     * Checks if the input is interactive.
-     *
-     * @return bool Returns true if the input is interactive
-     */
-    public function isInteractive()
-    {
-        return $this->interactive;
-    }
-
-    /**
-     * Sets the input interactivity.
-     *
-     * @param bool $interactive If the input should be interactive
-     */
-    public function setInteractive($interactive)
-    {
-        $this->interactive = (bool) $interactive;
-    }
-
-    /**
-     * Returns the argument values.
-     *
-     * @return array An array of argument values
-     */
-    public function getArguments()
-    {
-        return array_merge($this->definition->getArgumentDefaults(), $this->arguments);
-    }
-
-    /**
-     * Returns the argument value for a given argument name.
-     *
-     * @param string $name The argument name
-     *
-     * @return mixed The argument value
-     *
-     * @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));
-        }
-
-        return isset($this->arguments[$name]) ? $this->arguments[$name] : $this->definition->getArgument($name)->getDefault();
-    }
-
-    /**
-     * Sets an argument value by name.
-     *
-     * @param string $name  The argument name
-     * @param string $value The argument value
-     *
-     * @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));
-        }
-
-        $this->arguments[$name] = $value;
-    }
-
-    /**
-     * Returns true if an InputArgument object exists by name or position.
-     *
-     * @param string|int $name The InputArgument name or position
-     *
-     * @return bool true if the InputArgument object exists, false otherwise
-     */
-    public function hasArgument($name)
-    {
-        return $this->definition->hasArgument($name);
-    }
-
-    /**
-     * Returns the options values.
-     *
-     * @return array An array of option values
-     */
-    public function getOptions()
-    {
-        return array_merge($this->definition->getOptionDefaults(), $this->options);
-    }
-
-    /**
-     * Returns the option value for a given option name.
-     *
-     * @param string $name The option name
-     *
-     * @return mixed The option value
-     *
-     * @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));
-        }
-
-        return isset($this->options[$name]) ? $this->options[$name] : $this->definition->getOption($name)->getDefault();
-    }
-
-    /**
-     * Sets an option value by name.
-     *
-     * @param string      $name  The option name
-     * @param string|bool $value The option value
-     *
-     * @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));
-        }
-
-        $this->options[$name] = $value;
-    }
-
-    /**
-     * Returns true if an InputOption object exists by name.
-     *
-     * @param string $name The InputOption name
-     *
-     * @return bool true if the InputOption object exists, false otherwise
-     */
-    public function hasOption($name)
-    {
-        return $this->definition->hasOption($name);
-    }
-
-    /**
-     * Escapes a token through escapeshellarg if it contains unsafe chars.
-     *
-     * @param string $token
-     *
-     * @return string
-     */
-    public function escapeToken($token)
-    {
-        return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token);
-    }
-}
diff --git a/vendor/symfony/console/Input/InputArgument.php b/vendor/symfony/console/Input/InputArgument.php
deleted file mode 100644
index 69edecb..0000000
--- a/vendor/symfony/console/Input/InputArgument.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?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\Input;
-
-/**
- * Represents a command line argument.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class InputArgument
-{
-    const REQUIRED = 1;
-    const OPTIONAL = 2;
-    const IS_ARRAY = 4;
-
-    private $name;
-    private $mode;
-    private $default;
-    private $description;
-
-    /**
-     * Constructor.
-     *
-     * @param string $name        The argument name
-     * @param int    $mode        The argument mode: self::REQUIRED or self::OPTIONAL
-     * @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
-     */
-    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));
-        }
-
-        $this->name = $name;
-        $this->mode = $mode;
-        $this->description = $description;
-
-        $this->setDefault($default);
-    }
-
-    /**
-     * Returns the argument name.
-     *
-     * @return string The argument name
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Returns true if the argument is required.
-     *
-     * @return bool true if parameter mode is self::REQUIRED, false otherwise
-     */
-    public function isRequired()
-    {
-        return self::REQUIRED === (self::REQUIRED & $this->mode);
-    }
-
-    /**
-     * Returns true if the argument can take multiple values.
-     *
-     * @return bool true if mode is self::IS_ARRAY, false otherwise
-     */
-    public function isArray()
-    {
-        return self::IS_ARRAY === (self::IS_ARRAY & $this->mode);
-    }
-
-    /**
-     * Sets the default value.
-     *
-     * @param mixed $default The default value
-     *
-     * @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.');
-        }
-
-        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.');
-            }
-        }
-
-        $this->default = $default;
-    }
-
-    /**
-     * Returns the default value.
-     *
-     * @return mixed The default value
-     */
-    public function getDefault()
-    {
-        return $this->default;
-    }
-
-    /**
-     * Returns the description text.
-     *
-     * @return string The description text
-     */
-    public function getDescription()
-    {
-        return $this->description;
-    }
-}
diff --git a/vendor/symfony/console/Input/InputAwareInterface.php b/vendor/symfony/console/Input/InputAwareInterface.php
deleted file mode 100644
index d0f11e9..0000000
--- a/vendor/symfony/console/Input/InputAwareInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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\Input;
-
-/**
- * InputAwareInterface should be implemented by classes that depends on the
- * Console Input.
- *
- * @author Wouter J <waldio.webdesign@gmail.com>
- */
-interface InputAwareInterface
-{
-    /**
-     * Sets the Console Input.
-     *
-     * @param InputInterface
-     */
-    public function setInput(InputInterface $input);
-}
diff --git a/vendor/symfony/console/Input/InputDefinition.php b/vendor/symfony/console/Input/InputDefinition.php
deleted file mode 100644
index 809baeb..0000000
--- a/vendor/symfony/console/Input/InputDefinition.php
+++ /dev/null
@@ -1,455 +0,0 @@
-<?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\Input;
-
-use Symfony\Component\Console\Descriptor\TextDescriptor;
-use Symfony\Component\Console\Descriptor\XmlDescriptor;
-use Symfony\Component\Console\Output\BufferedOutput;
-
-/**
- * A InputDefinition represents a set of valid command line arguments and options.
- *
- * Usage:
- *
- *     $definition = new InputDefinition(array(
- *       new InputArgument('name', InputArgument::REQUIRED),
- *       new InputOption('foo', 'f', InputOption::VALUE_REQUIRED),
- *     ));
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class InputDefinition
-{
-    private $arguments;
-    private $requiredCount;
-    private $hasAnArrayArgument = false;
-    private $hasOptional;
-    private $options;
-    private $shortcuts;
-
-    /**
-     * Constructor.
-     *
-     * @param array $definition An array of InputArgument and InputOption instance
-     */
-    public function __construct(array $definition = array())
-    {
-        $this->setDefinition($definition);
-    }
-
-    /**
-     * Sets the definition of the input.
-     *
-     * @param array $definition The definition array
-     */
-    public function setDefinition(array $definition)
-    {
-        $arguments = array();
-        $options = array();
-        foreach ($definition as $item) {
-            if ($item instanceof InputOption) {
-                $options[] = $item;
-            } else {
-                $arguments[] = $item;
-            }
-        }
-
-        $this->setArguments($arguments);
-        $this->setOptions($options);
-    }
-
-    /**
-     * Sets the InputArgument objects.
-     *
-     * @param InputArgument[] $arguments An array of InputArgument objects
-     */
-    public function setArguments($arguments = array())
-    {
-        $this->arguments = array();
-        $this->requiredCount = 0;
-        $this->hasOptional = false;
-        $this->hasAnArrayArgument = false;
-        $this->addArguments($arguments);
-    }
-
-    /**
-     * Adds an array of InputArgument objects.
-     *
-     * @param InputArgument[] $arguments An array of InputArgument objects
-     */
-    public function addArguments($arguments = array())
-    {
-        if (null !== $arguments) {
-            foreach ($arguments as $argument) {
-                $this->addArgument($argument);
-            }
-        }
-    }
-
-    /**
-     * Adds an InputArgument object.
-     *
-     * @param InputArgument $argument An InputArgument object
-     *
-     * @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()));
-        }
-
-        if ($this->hasAnArrayArgument) {
-            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.');
-        }
-
-        if ($argument->isArray()) {
-            $this->hasAnArrayArgument = true;
-        }
-
-        if ($argument->isRequired()) {
-            ++$this->requiredCount;
-        } else {
-            $this->hasOptional = true;
-        }
-
-        $this->arguments[$argument->getName()] = $argument;
-    }
-
-    /**
-     * Returns an InputArgument by name or by position.
-     *
-     * @param string|int $name The InputArgument name or position
-     *
-     * @return InputArgument An InputArgument object
-     *
-     * @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));
-        }
-
-        $arguments = is_int($name) ? array_values($this->arguments) : $this->arguments;
-
-        return $arguments[$name];
-    }
-
-    /**
-     * Returns true if an InputArgument object exists by name or position.
-     *
-     * @param string|int $name The InputArgument name or position
-     *
-     * @return bool true if the InputArgument object exists, false otherwise
-     */
-    public function hasArgument($name)
-    {
-        $arguments = is_int($name) ? array_values($this->arguments) : $this->arguments;
-
-        return isset($arguments[$name]);
-    }
-
-    /**
-     * Gets the array of InputArgument objects.
-     *
-     * @return InputArgument[] An array of InputArgument objects
-     */
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    /**
-     * Returns the number of InputArguments.
-     *
-     * @return int The number of InputArguments
-     */
-    public function getArgumentCount()
-    {
-        return $this->hasAnArrayArgument ? PHP_INT_MAX : count($this->arguments);
-    }
-
-    /**
-     * Returns the number of required InputArguments.
-     *
-     * @return int The number of required InputArguments
-     */
-    public function getArgumentRequiredCount()
-    {
-        return $this->requiredCount;
-    }
-
-    /**
-     * Gets the default values.
-     *
-     * @return array An array of default values
-     */
-    public function getArgumentDefaults()
-    {
-        $values = array();
-        foreach ($this->arguments as $argument) {
-            $values[$argument->getName()] = $argument->getDefault();
-        }
-
-        return $values;
-    }
-
-    /**
-     * Sets the InputOption objects.
-     *
-     * @param InputOption[] $options An array of InputOption objects
-     */
-    public function setOptions($options = array())
-    {
-        $this->options = array();
-        $this->shortcuts = array();
-        $this->addOptions($options);
-    }
-
-    /**
-     * Adds an array of InputOption objects.
-     *
-     * @param InputOption[] $options An array of InputOption objects
-     */
-    public function addOptions($options = array())
-    {
-        foreach ($options as $option) {
-            $this->addOption($option);
-        }
-    }
-
-    /**
-     * Adds an InputOption object.
-     *
-     * @param InputOption $option An InputOption object
-     *
-     * @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()));
-        }
-
-        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));
-                }
-            }
-        }
-
-        $this->options[$option->getName()] = $option;
-        if ($option->getShortcut()) {
-            foreach (explode('|', $option->getShortcut()) as $shortcut) {
-                $this->shortcuts[$shortcut] = $option->getName();
-            }
-        }
-    }
-
-    /**
-     * Returns an InputOption by name.
-     *
-     * @param string $name The InputOption name
-     *
-     * @return InputOption A InputOption object
-     *
-     * @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));
-        }
-
-        return $this->options[$name];
-    }
-
-    /**
-     * Returns true if an InputOption object exists by name.
-     *
-     * @param string $name The InputOption name
-     *
-     * @return bool true if the InputOption object exists, false otherwise
-     */
-    public function hasOption($name)
-    {
-        return isset($this->options[$name]);
-    }
-
-    /**
-     * Gets the array of InputOption objects.
-     *
-     * @return InputOption[] An array of InputOption objects
-     */
-    public function getOptions()
-    {
-        return $this->options;
-    }
-
-    /**
-     * Returns true if an InputOption object exists by shortcut.
-     *
-     * @param string $name The InputOption shortcut
-     *
-     * @return bool true if the InputOption object exists, false otherwise
-     */
-    public function hasShortcut($name)
-    {
-        return isset($this->shortcuts[$name]);
-    }
-
-    /**
-     * Gets an InputOption by shortcut.
-     *
-     * @param string $shortcut the Shortcut name
-     *
-     * @return InputOption An InputOption object
-     */
-    public function getOptionForShortcut($shortcut)
-    {
-        return $this->getOption($this->shortcutToName($shortcut));
-    }
-
-    /**
-     * Gets an array of default values.
-     *
-     * @return array An array of all default values
-     */
-    public function getOptionDefaults()
-    {
-        $values = array();
-        foreach ($this->options as $option) {
-            $values[$option->getName()] = $option->getDefault();
-        }
-
-        return $values;
-    }
-
-    /**
-     * Returns the InputOption name given a shortcut.
-     *
-     * @param string $shortcut The shortcut
-     *
-     * @return string The InputOption name
-     *
-     * @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));
-        }
-
-        return $this->shortcuts[$shortcut];
-    }
-
-    /**
-     * Gets the synopsis.
-     *
-     * @param bool $short Whether to return the short version (with options folded) or not
-     *
-     * @return string The synopsis
-     */
-    public function getSynopsis($short = false)
-    {
-        $elements = array();
-
-        if ($short && $this->getOptions()) {
-            $elements[] = '[options]';
-        } elseif (!$short) {
-            foreach ($this->getOptions() as $option) {
-                $value = '';
-                if ($option->acceptValue()) {
-                    $value = sprintf(
-                        ' %s%s%s',
-                        $option->isValueOptional() ? '[' : '',
-                        strtoupper($option->getName()),
-                        $option->isValueOptional() ? ']' : ''
-                    );
-                }
-
-                $shortcut = $option->getShortcut() ? sprintf('-%s|', $option->getShortcut()) : '';
-                $elements[] = sprintf('[%s--%s%s]', $shortcut, $option->getName(), $value);
-            }
-        }
-
-        if (count($elements) && $this->getArguments()) {
-            $elements[] = '[--]';
-        }
-
-        foreach ($this->getArguments() as $argument) {
-            $element = '<'.$argument->getName().'>';
-            if (!$argument->isRequired()) {
-                $element = '['.$element.']';
-            } elseif ($argument->isArray()) {
-                $element = $element.' ('.$element.')';
-            }
-
-            if ($argument->isArray()) {
-                $element .= '...';
-            }
-
-            $elements[] = $element;
-        }
-
-        return implode(' ', $elements);
-    }
-
-    /**
-     * Returns a textual representation of the InputDefinition.
-     *
-     * @return string A string representing the InputDefinition
-     *
-     * @deprecated since version 2.3, to be removed in 3.0.
-     */
-    public function asText()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.3 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        $descriptor = new TextDescriptor();
-        $output = new BufferedOutput(BufferedOutput::VERBOSITY_NORMAL, true);
-        $descriptor->describe($output, $this, array('raw_output' => true));
-
-        return $output->fetch();
-    }
-
-    /**
-     * Returns an XML representation of the InputDefinition.
-     *
-     * @param bool $asDom Whether to return a DOM or an XML string
-     *
-     * @return string|\DOMDocument An XML string representing the InputDefinition
-     *
-     * @deprecated since version 2.3, to be removed in 3.0.
-     */
-    public function asXml($asDom = false)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.3 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        $descriptor = new XmlDescriptor();
-
-        if ($asDom) {
-            return $descriptor->getInputDefinitionDocument($this);
-        }
-
-        $output = new BufferedOutput();
-        $descriptor->describe($output, $this);
-
-        return $output->fetch();
-    }
-}
diff --git a/vendor/symfony/console/Input/InputInterface.php b/vendor/symfony/console/Input/InputInterface.php
deleted file mode 100644
index 6ef2f26..0000000
--- a/vendor/symfony/console/Input/InputInterface.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?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\Input;
-
-/**
- * InputInterface is the interface implemented by all input classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface InputInterface
-{
-    /**
-     * Returns the first argument from the raw parameters (not parsed).
-     *
-     * @return string The value of the first argument or null otherwise
-     */
-    public function getFirstArgument();
-
-    /**
-     * Returns true if the raw parameters (not parsed) contain a value.
-     *
-     * This method is to be used to introspect the input parameters
-     * before they have been validated. It must be used carefully.
-     *
-     * @param string|array $values The values to look for in the raw parameters (can be an array)
-     *
-     * @return bool true if the value is contained in the raw parameters
-     */
-    public function hasParameterOption($values);
-
-    /**
-     * Returns the value of a raw option (not parsed).
-     *
-     * This method is to be used to introspect the input parameters
-     * before they have been validated. It must be used carefully.
-     *
-     * @param string|array $values  The value(s) to look for in the raw parameters (can be an array)
-     * @param mixed        $default The default value to return if no result is found
-     *
-     * @return mixed The option value
-     */
-    public function getParameterOption($values, $default = false);
-
-    /**
-     * Binds the current Input instance with the given arguments and options.
-     *
-     * @param InputDefinition $definition A InputDefinition instance
-     */
-    public function bind(InputDefinition $definition);
-
-    /**
-     * Validates if arguments given are correct.
-     *
-     * Throws an exception when not enough arguments are given.
-     *
-     * @throws \RuntimeException
-     */
-    public function validate();
-
-    /**
-     * Returns all the given arguments merged with the default values.
-     *
-     * @return array
-     */
-    public function getArguments();
-
-    /**
-     * Gets argument by name.
-     *
-     * @param string $name The name of the argument
-     *
-     * @return mixed
-     */
-    public function getArgument($name);
-
-    /**
-     * Sets an argument value by name.
-     *
-     * @param string $name  The argument name
-     * @param string $value The argument value
-     *
-     * @throws \InvalidArgumentException When argument given doesn't exist
-     */
-    public function setArgument($name, $value);
-
-    /**
-     * Returns true if an InputArgument object exists by name or position.
-     *
-     * @param string|int $name The InputArgument name or position
-     *
-     * @return bool true if the InputArgument object exists, false otherwise
-     */
-    public function hasArgument($name);
-
-    /**
-     * Returns all the given options merged with the default values.
-     *
-     * @return array
-     */
-    public function getOptions();
-
-    /**
-     * Gets an option by name.
-     *
-     * @param string $name The name of the option
-     *
-     * @return mixed
-     */
-    public function getOption($name);
-
-    /**
-     * Sets an option value by name.
-     *
-     * @param string      $name  The option name
-     * @param string|bool $value The option value
-     *
-     * @throws \InvalidArgumentException When option given doesn't exist
-     */
-    public function setOption($name, $value);
-
-    /**
-     * Returns true if an InputOption object exists by name.
-     *
-     * @param string $name The InputOption name
-     *
-     * @return bool true if the InputOption object exists, false otherwise
-     */
-    public function hasOption($name);
-
-    /**
-     * Is this input means interactive?
-     *
-     * @return bool
-     */
-    public function isInteractive();
-
-    /**
-     * Sets the input interactivity.
-     *
-     * @param bool $interactive If the input should be interactive
-     */
-    public function setInteractive($interactive);
-}
diff --git a/vendor/symfony/console/Input/InputOption.php b/vendor/symfony/console/Input/InputOption.php
deleted file mode 100644
index 167f199..0000000
--- a/vendor/symfony/console/Input/InputOption.php
+++ /dev/null
@@ -1,209 +0,0 @@
-<?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\Input;
-
-/**
- * Represents a command line option.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class InputOption
-{
-    const VALUE_NONE = 1;
-    const VALUE_REQUIRED = 2;
-    const VALUE_OPTIONAL = 4;
-    const VALUE_IS_ARRAY = 8;
-
-    private $name;
-    private $shortcut;
-    private $mode;
-    private $default;
-    private $description;
-
-    /**
-     * Constructor.
-     *
-     * @param string       $name        The option name
-     * @param string|array $shortcut    The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts
-     * @param int          $mode        The option mode: One of the VALUE_* constants
-     * @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
-     */
-    public function __construct($name, $shortcut = null, $mode = null, $description = '', $default = null)
-    {
-        if (0 === strpos($name, '--')) {
-            $name = substr($name, 2);
-        }
-
-        if (empty($name)) {
-            throw new \InvalidArgumentException('An option name cannot be empty.');
-        }
-
-        if (empty($shortcut)) {
-            $shortcut = null;
-        }
-
-        if (null !== $shortcut) {
-            if (is_array($shortcut)) {
-                $shortcut = implode('|', $shortcut);
-            }
-            $shortcuts = preg_split('{(\|)-?}', ltrim($shortcut, '-'));
-            $shortcuts = array_filter($shortcuts);
-            $shortcut = implode('|', $shortcuts);
-
-            if (empty($shortcut)) {
-                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));
-        }
-
-        $this->name = $name;
-        $this->shortcut = $shortcut;
-        $this->mode = $mode;
-        $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.');
-        }
-
-        $this->setDefault($default);
-    }
-
-    /**
-     * Returns the option shortcut.
-     *
-     * @return string The shortcut
-     */
-    public function getShortcut()
-    {
-        return $this->shortcut;
-    }
-
-    /**
-     * Returns the option name.
-     *
-     * @return string The name
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Returns true if the option accepts a value.
-     *
-     * @return bool true if value mode is not self::VALUE_NONE, false otherwise
-     */
-    public function acceptValue()
-    {
-        return $this->isValueRequired() || $this->isValueOptional();
-    }
-
-    /**
-     * Returns true if the option requires a value.
-     *
-     * @return bool true if value mode is self::VALUE_REQUIRED, false otherwise
-     */
-    public function isValueRequired()
-    {
-        return self::VALUE_REQUIRED === (self::VALUE_REQUIRED & $this->mode);
-    }
-
-    /**
-     * Returns true if the option takes an optional value.
-     *
-     * @return bool true if value mode is self::VALUE_OPTIONAL, false otherwise
-     */
-    public function isValueOptional()
-    {
-        return self::VALUE_OPTIONAL === (self::VALUE_OPTIONAL & $this->mode);
-    }
-
-    /**
-     * Returns true if the option can take multiple values.
-     *
-     * @return bool true if mode is self::VALUE_IS_ARRAY, false otherwise
-     */
-    public function isArray()
-    {
-        return self::VALUE_IS_ARRAY === (self::VALUE_IS_ARRAY & $this->mode);
-    }
-
-    /**
-     * Sets the default value.
-     *
-     * @param mixed $default The default value
-     *
-     * @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.');
-        }
-
-        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.');
-            }
-        }
-
-        $this->default = $this->acceptValue() ? $default : false;
-    }
-
-    /**
-     * Returns the default value.
-     *
-     * @return mixed The default value
-     */
-    public function getDefault()
-    {
-        return $this->default;
-    }
-
-    /**
-     * Returns the description text.
-     *
-     * @return string The description text
-     */
-    public function getDescription()
-    {
-        return $this->description;
-    }
-
-    /**
-     * Checks whether the given option equals this one.
-     *
-     * @param InputOption $option option to compare
-     *
-     * @return bool
-     */
-    public function equals(InputOption $option)
-    {
-        return $option->getName() === $this->getName()
-            && $option->getShortcut() === $this->getShortcut()
-            && $option->getDefault() === $this->getDefault()
-            && $option->isArray() === $this->isArray()
-            && $option->isValueRequired() === $this->isValueRequired()
-            && $option->isValueOptional() === $this->isValueOptional()
-        ;
-    }
-}
diff --git a/vendor/symfony/console/Input/StringInput.php b/vendor/symfony/console/Input/StringInput.php
deleted file mode 100644
index c518d5c..0000000
--- a/vendor/symfony/console/Input/StringInput.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?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\Input;
-
-/**
- * StringInput represents an input provided as a string.
- *
- * Usage:
- *
- *     $input = new StringInput('foo --bar="foobar"');
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class StringInput extends ArgvInput
-{
-    const REGEX_STRING = '([^\s]+?)(?:\s|(?<!\\\\)"|(?<!\\\\)\'|$)';
-    const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\')';
-
-    /**
-     * Constructor.
-     *
-     * @param string          $input      An array of parameters from the CLI (in the argv format)
-     * @param InputDefinition $definition A InputDefinition instance
-     *
-     * @deprecated The second argument is deprecated as it does not work (will be removed in 3.0), use 'bind' method instead
-     */
-    public function __construct($input, InputDefinition $definition = null)
-    {
-        if ($definition) {
-            @trigger_error('The $definition argument of the '.__METHOD__.' method is deprecated and will be removed in 3.0. Set this parameter with the bind() method instead.', E_USER_DEPRECATED);
-        }
-
-        parent::__construct(array(), null);
-
-        $this->setTokens($this->tokenize($input));
-
-        if (null !== $definition) {
-            $this->bind($definition);
-        }
-    }
-
-    /**
-     * Tokenizes a string.
-     *
-     * @param string $input The input to tokenize
-     *
-     * @return array An array of tokens
-     *
-     * @throws \InvalidArgumentException When unable to parse input (should never happen)
-     */
-    private function tokenize($input)
-    {
-        $tokens = array();
-        $length = strlen($input);
-        $cursor = 0;
-        while ($cursor < $length) {
-            if (preg_match('/\s+/A', $input, $match, null, $cursor)) {
-            } elseif (preg_match('/([^="\'\s]+?)(=?)('.self::REGEX_QUOTED_STRING.'+)/A', $input, $match, null, $cursor)) {
-                $tokens[] = $match[1].$match[2].stripcslashes(str_replace(array('"\'', '\'"', '\'\'', '""'), '', substr($match[3], 1, strlen($match[3]) - 2)));
-            } elseif (preg_match('/'.self::REGEX_QUOTED_STRING.'/A', $input, $match, null, $cursor)) {
-                $tokens[] = stripcslashes(substr($match[0], 1, strlen($match[0]) - 2));
-            } elseif (preg_match('/'.self::REGEX_STRING.'/A', $input, $match, null, $cursor)) {
-                $tokens[] = stripcslashes($match[1]);
-            } else {
-                // should never happen
-                throw new \InvalidArgumentException(sprintf('Unable to parse input near "... %s ..."', substr($input, $cursor, 10)));
-            }
-
-            $cursor += strlen($match[0]);
-        }
-
-        return $tokens;
-    }
-}
diff --git a/vendor/symfony/console/LICENSE b/vendor/symfony/console/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/console/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/console/Logger/ConsoleLogger.php b/vendor/symfony/console/Logger/ConsoleLogger.php
deleted file mode 100644
index 1f7417e..0000000
--- a/vendor/symfony/console/Logger/ConsoleLogger.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?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\Logger;
-
-use Psr\Log\AbstractLogger;
-use Psr\Log\InvalidArgumentException;
-use Psr\Log\LogLevel;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Output\ConsoleOutputInterface;
-
-/**
- * PSR-3 compliant console logger.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- *
- * @link http://www.php-fig.org/psr/psr-3/
- */
-class ConsoleLogger extends AbstractLogger
-{
-    const INFO = 'info';
-    const ERROR = 'error';
-
-    /**
-     * @var OutputInterface
-     */
-    private $output;
-    /**
-     * @var array
-     */
-    private $verbosityLevelMap = array(
-        LogLevel::EMERGENCY => OutputInterface::VERBOSITY_NORMAL,
-        LogLevel::ALERT => OutputInterface::VERBOSITY_NORMAL,
-        LogLevel::CRITICAL => OutputInterface::VERBOSITY_NORMAL,
-        LogLevel::ERROR => OutputInterface::VERBOSITY_NORMAL,
-        LogLevel::WARNING => OutputInterface::VERBOSITY_NORMAL,
-        LogLevel::NOTICE => OutputInterface::VERBOSITY_VERBOSE,
-        LogLevel::INFO => OutputInterface::VERBOSITY_VERY_VERBOSE,
-        LogLevel::DEBUG => OutputInterface::VERBOSITY_DEBUG,
-    );
-    /**
-     * @var array
-     */
-    private $formatLevelMap = array(
-        LogLevel::EMERGENCY => self::ERROR,
-        LogLevel::ALERT => self::ERROR,
-        LogLevel::CRITICAL => self::ERROR,
-        LogLevel::ERROR => self::ERROR,
-        LogLevel::WARNING => self::INFO,
-        LogLevel::NOTICE => self::INFO,
-        LogLevel::INFO => self::INFO,
-        LogLevel::DEBUG => self::INFO,
-    );
-
-    /**
-     * @param OutputInterface $output
-     * @param array           $verbosityLevelMap
-     * @param array           $formatLevelMap
-     */
-    public function __construct(OutputInterface $output, array $verbosityLevelMap = array(), array $formatLevelMap = array())
-    {
-        $this->output = $output;
-        $this->verbosityLevelMap = $verbosityLevelMap + $this->verbosityLevelMap;
-        $this->formatLevelMap = $formatLevelMap + $this->formatLevelMap;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function log($level, $message, array $context = array())
-    {
-        if (!isset($this->verbosityLevelMap[$level])) {
-            throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $level));
-        }
-
-        // Write to the error output if necessary and available
-        if ($this->formatLevelMap[$level] === self::ERROR && $this->output instanceof ConsoleOutputInterface) {
-            $output = $this->output->getErrorOutput();
-        } else {
-            $output = $this->output;
-        }
-
-        if ($output->getVerbosity() >= $this->verbosityLevelMap[$level]) {
-            $output->writeln(sprintf('<%1$s>[%2$s] %3$s</%1$s>', $this->formatLevelMap[$level], $level, $this->interpolate($message, $context)));
-        }
-    }
-
-    /**
-     * Interpolates context values into the message placeholders.
-     *
-     * @author PHP Framework Interoperability Group
-     *
-     * @param string $message
-     * @param array  $context
-     *
-     * @return string
-     */
-    private function interpolate($message, array $context)
-    {
-        // build a replacement array with braces around the context keys
-        $replace = array();
-        foreach ($context as $key => $val) {
-            if (!is_array($val) && (!is_object($val) || method_exists($val, '__toString'))) {
-                $replace[sprintf('{%s}', $key)] = $val;
-            }
-        }
-
-        // interpolate replacement values into the message and return
-        return strtr($message, $replace);
-    }
-}
diff --git a/vendor/symfony/console/Output/BufferedOutput.php b/vendor/symfony/console/Output/BufferedOutput.php
deleted file mode 100644
index 5682fc2..0000000
--- a/vendor/symfony/console/Output/BufferedOutput.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?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\Output;
-
-/**
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-class BufferedOutput extends Output
-{
-    /**
-     * @var string
-     */
-    private $buffer = '';
-
-    /**
-     * Empties buffer and returns its content.
-     *
-     * @return string
-     */
-    public function fetch()
-    {
-        $content = $this->buffer;
-        $this->buffer = '';
-
-        return $content;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doWrite($message, $newline)
-    {
-        $this->buffer .= $message;
-
-        if ($newline) {
-            $this->buffer .= "\n";
-        }
-    }
-}
diff --git a/vendor/symfony/console/Output/ConsoleOutput.php b/vendor/symfony/console/Output/ConsoleOutput.php
deleted file mode 100644
index 8e1f360..0000000
--- a/vendor/symfony/console/Output/ConsoleOutput.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?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\Output;
-
-use Symfony\Component\Console\Formatter\OutputFormatterInterface;
-
-/**
- * ConsoleOutput is the default class for all CLI output. It uses STDOUT.
- *
- * This class is a convenient wrapper around `StreamOutput`.
- *
- *     $output = new ConsoleOutput();
- *
- * This is equivalent to:
- *
- *     $output = new StreamOutput(fopen('php://stdout', 'w'));
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ConsoleOutput extends StreamOutput implements ConsoleOutputInterface
-{
-    /**
-     * @var StreamOutput
-     */
-    private $stderr;
-
-    /**
-     * Constructor.
-     *
-     * @param int                           $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface)
-     * @param bool|null                     $decorated Whether to decorate messages (null for auto-guessing)
-     * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter)
-     */
-    public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = null, OutputFormatterInterface $formatter = null)
-    {
-        parent::__construct($this->openOutputStream(), $verbosity, $decorated, $formatter);
-
-        $actualDecorated = $this->isDecorated();
-        $this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated, $this->getFormatter());
-
-        if (null === $decorated) {
-            $this->setDecorated($actualDecorated && $this->stderr->isDecorated());
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setDecorated($decorated)
-    {
-        parent::setDecorated($decorated);
-        $this->stderr->setDecorated($decorated);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setFormatter(OutputFormatterInterface $formatter)
-    {
-        parent::setFormatter($formatter);
-        $this->stderr->setFormatter($formatter);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setVerbosity($level)
-    {
-        parent::setVerbosity($level);
-        $this->stderr->setVerbosity($level);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getErrorOutput()
-    {
-        return $this->stderr;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setErrorOutput(OutputInterface $error)
-    {
-        $this->stderr = $error;
-    }
-
-    /**
-     * Returns true if current environment supports writing console output to
-     * STDOUT.
-     *
-     * @return bool
-     */
-    protected function hasStdoutSupport()
-    {
-        return false === $this->isRunningOS400();
-    }
-
-    /**
-     * Returns true if current environment supports writing console output to
-     * STDERR.
-     *
-     * @return bool
-     */
-    protected function hasStderrSupport()
-    {
-        return false === $this->isRunningOS400();
-    }
-
-    /**
-     * Checks if current executing environment is IBM iSeries (OS400), which
-     * doesn't properly convert character-encodings between ASCII to EBCDIC.
-     *
-     * @return bool
-     */
-    private function isRunningOS400()
-    {
-        $checks = array(
-            function_exists('php_uname') ? php_uname('s') : '',
-            getenv('OSTYPE'),
-            PHP_OS,
-        );
-
-        return false !== stristr(implode(';', $checks), 'OS400');
-    }
-
-    /**
-     * @return resource
-     */
-    private function openOutputStream()
-    {
-        $outputStream = $this->hasStdoutSupport() ? 'php://stdout' : 'php://output';
-
-        return @fopen($outputStream, 'w') ?: fopen('php://output', 'w');
-    }
-
-    /**
-     * @return resource
-     */
-    private function openErrorStream()
-    {
-        $errorStream = $this->hasStderrSupport() ? 'php://stderr' : 'php://output';
-
-        return fopen($errorStream, 'w');
-    }
-}
diff --git a/vendor/symfony/console/Output/ConsoleOutputInterface.php b/vendor/symfony/console/Output/ConsoleOutputInterface.php
deleted file mode 100644
index 5eb4fc7..0000000
--- a/vendor/symfony/console/Output/ConsoleOutputInterface.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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\Output;
-
-/**
- * ConsoleOutputInterface is the interface implemented by ConsoleOutput class.
- * This adds information about stderr output stream.
- *
- * @author Dariusz Górecki <darek.krk@gmail.com>
- */
-interface ConsoleOutputInterface extends OutputInterface
-{
-    /**
-     * Gets the OutputInterface for errors.
-     *
-     * @return OutputInterface
-     */
-    public function getErrorOutput();
-
-    /**
-     * Sets the OutputInterface used for errors.
-     *
-     * @param OutputInterface $error
-     */
-    public function setErrorOutput(OutputInterface $error);
-}
diff --git a/vendor/symfony/console/Output/NullOutput.php b/vendor/symfony/console/Output/NullOutput.php
deleted file mode 100644
index a14ae74..0000000
--- a/vendor/symfony/console/Output/NullOutput.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?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\Output;
-
-use Symfony\Component\Console\Formatter\OutputFormatter;
-use Symfony\Component\Console\Formatter\OutputFormatterInterface;
-
-/**
- * NullOutput suppresses all output.
- *
- *     $output = new NullOutput();
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class NullOutput implements OutputInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function setFormatter(OutputFormatterInterface $formatter)
-    {
-        // do nothing
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFormatter()
-    {
-        // to comply with the interface we must return a OutputFormatterInterface
-        return new OutputFormatter();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setDecorated($decorated)
-    {
-        // do nothing
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isDecorated()
-    {
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setVerbosity($level)
-    {
-        // do nothing
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getVerbosity()
-    {
-        return self::VERBOSITY_QUIET;
-    }
-
-    public function isQuiet()
-    {
-        return true;
-    }
-
-    public function isVerbose()
-    {
-        return false;
-    }
-
-    public function isVeryVerbose()
-    {
-        return false;
-    }
-
-    public function isDebug()
-    {
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function writeln($messages, $type = self::OUTPUT_NORMAL)
-    {
-        // do nothing
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL)
-    {
-        // do nothing
-    }
-}
diff --git a/vendor/symfony/console/Output/Output.php b/vendor/symfony/console/Output/Output.php
deleted file mode 100644
index 306dccf..0000000
--- a/vendor/symfony/console/Output/Output.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?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\Output;
-
-use Symfony\Component\Console\Formatter\OutputFormatterInterface;
-use Symfony\Component\Console\Formatter\OutputFormatter;
-
-/**
- * Base class for output classes.
- *
- * There are five levels of verbosity:
- *
- *  * normal: no option passed (normal output)
- *  * verbose: -v (more output)
- *  * very verbose: -vv (highly extended output)
- *  * debug: -vvv (all debug output)
- *  * quiet: -q (no output)
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Output implements OutputInterface
-{
-    private $verbosity;
-    private $formatter;
-
-    /**
-     * Constructor.
-     *
-     * @param int                           $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface)
-     * @param bool                          $decorated Whether to decorate messages
-     * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter)
-     */
-    public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = false, OutputFormatterInterface $formatter = null)
-    {
-        $this->verbosity = null === $verbosity ? self::VERBOSITY_NORMAL : $verbosity;
-        $this->formatter = $formatter ?: new OutputFormatter();
-        $this->formatter->setDecorated($decorated);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setFormatter(OutputFormatterInterface $formatter)
-    {
-        $this->formatter = $formatter;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFormatter()
-    {
-        return $this->formatter;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setDecorated($decorated)
-    {
-        $this->formatter->setDecorated($decorated);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isDecorated()
-    {
-        return $this->formatter->isDecorated();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setVerbosity($level)
-    {
-        $this->verbosity = (int) $level;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getVerbosity()
-    {
-        return $this->verbosity;
-    }
-
-    public function isQuiet()
-    {
-        return self::VERBOSITY_QUIET === $this->verbosity;
-    }
-
-    public function isVerbose()
-    {
-        return self::VERBOSITY_VERBOSE <= $this->verbosity;
-    }
-
-    public function isVeryVerbose()
-    {
-        return self::VERBOSITY_VERY_VERBOSE <= $this->verbosity;
-    }
-
-    public function isDebug()
-    {
-        return self::VERBOSITY_DEBUG <= $this->verbosity;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function writeln($messages, $type = self::OUTPUT_NORMAL)
-    {
-        $this->write($messages, true, $type);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL)
-    {
-        if (self::VERBOSITY_QUIET === $this->verbosity) {
-            return;
-        }
-
-        $messages = (array) $messages;
-
-        foreach ($messages as $message) {
-            switch ($type) {
-                case OutputInterface::OUTPUT_NORMAL:
-                    $message = $this->formatter->format($message);
-                    break;
-                case OutputInterface::OUTPUT_RAW:
-                    break;
-                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);
-        }
-    }
-
-    /**
-     * Writes a message to the output.
-     *
-     * @param string $message A message to write to the output
-     * @param bool   $newline Whether to add a newline or not
-     */
-    abstract protected function doWrite($message, $newline);
-}
diff --git a/vendor/symfony/console/Output/OutputInterface.php b/vendor/symfony/console/Output/OutputInterface.php
deleted file mode 100644
index 9a956e2..0000000
--- a/vendor/symfony/console/Output/OutputInterface.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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\Output;
-
-use Symfony\Component\Console\Formatter\OutputFormatterInterface;
-
-/**
- * OutputInterface is the interface implemented by all Output classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface OutputInterface
-{
-    const VERBOSITY_QUIET = 0;
-    const VERBOSITY_NORMAL = 1;
-    const VERBOSITY_VERBOSE = 2;
-    const VERBOSITY_VERY_VERBOSE = 3;
-    const VERBOSITY_DEBUG = 4;
-
-    const OUTPUT_NORMAL = 0;
-    const OUTPUT_RAW = 1;
-    const OUTPUT_PLAIN = 2;
-
-    /**
-     * 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
-     */
-    public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL);
-
-    /**
-     * 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
-     */
-    public function writeln($messages, $type = self::OUTPUT_NORMAL);
-
-    /**
-     * Sets the verbosity of the output.
-     *
-     * @param int $level The level of verbosity (one of the VERBOSITY constants)
-     */
-    public function setVerbosity($level);
-
-    /**
-     * Gets the current verbosity of the output.
-     *
-     * @return int The current level of verbosity (one of the VERBOSITY constants)
-     */
-    public function getVerbosity();
-
-    /**
-     * Sets the decorated flag.
-     *
-     * @param bool $decorated Whether to decorate the messages
-     */
-    public function setDecorated($decorated);
-
-    /**
-     * Gets the decorated flag.
-     *
-     * @return bool true if the output will decorate messages, false otherwise
-     */
-    public function isDecorated();
-
-    /**
-     * Sets output formatter.
-     *
-     * @param OutputFormatterInterface $formatter
-     */
-    public function setFormatter(OutputFormatterInterface $formatter);
-
-    /**
-     * Returns current output formatter instance.
-     *
-     * @return OutputFormatterInterface
-     */
-    public function getFormatter();
-}
diff --git a/vendor/symfony/console/Output/StreamOutput.php b/vendor/symfony/console/Output/StreamOutput.php
deleted file mode 100644
index a1facda..0000000
--- a/vendor/symfony/console/Output/StreamOutput.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?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\Output;
-
-use Symfony\Component\Console\Formatter\OutputFormatterInterface;
-
-/**
- * StreamOutput writes the output to a given stream.
- *
- * Usage:
- *
- * $output = new StreamOutput(fopen('php://stdout', 'w'));
- *
- * As `StreamOutput` can use any stream, you can also use a file:
- *
- * $output = new StreamOutput(fopen('/path/to/output.log', 'a', false));
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class StreamOutput extends Output
-{
-    private $stream;
-
-    /**
-     * Constructor.
-     *
-     * @param resource                      $stream    A stream resource
-     * @param int                           $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface)
-     * @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
-     */
-    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.');
-        }
-
-        $this->stream = $stream;
-
-        if (null === $decorated) {
-            $decorated = $this->hasColorSupport();
-        }
-
-        parent::__construct($verbosity, $decorated, $formatter);
-    }
-
-    /**
-     * Gets the stream attached to this StreamOutput instance.
-     *
-     * @return resource A stream resource
-     */
-    public function getStream()
-    {
-        return $this->stream;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doWrite($message, $newline)
-    {
-        if (false === @fwrite($this->stream, $message.($newline ? PHP_EOL : ''))) {
-            // should never happen
-            throw new \RuntimeException('Unable to write output.');
-        }
-
-        fflush($this->stream);
-    }
-
-    /**
-     * Returns true if the stream supports colorization.
-     *
-     * Colorization is disabled if not supported by the stream:
-     *
-     *  -  Windows without Ansicon, ConEmu or Mintty
-     *  -  non tty consoles
-     *
-     * @return bool true if the stream supports colorization, false otherwise
-     */
-    protected function hasColorSupport()
-    {
-        if (DIRECTORY_SEPARATOR === '\\') {
-            return false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI') || 'xterm' === getenv('TERM');
-        }
-
-        return function_exists('posix_isatty') && @posix_isatty($this->stream);
-    }
-}
diff --git a/vendor/symfony/console/Question/ChoiceQuestion.php b/vendor/symfony/console/Question/ChoiceQuestion.php
deleted file mode 100644
index a36c739..0000000
--- a/vendor/symfony/console/Question/ChoiceQuestion.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?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\Question;
-
-/**
- * Represents a choice question.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ChoiceQuestion extends Question
-{
-    private $choices;
-    private $multiselect = false;
-    private $prompt = ' > ';
-    private $errorMessage = 'Value "%s" is invalid';
-
-    /**
-     * Constructor.
-     *
-     * @param string $question The question to ask to the user
-     * @param array  $choices  The list of available choices
-     * @param mixed  $default  The default answer to return
-     */
-    public function __construct($question, array $choices, $default = null)
-    {
-        parent::__construct($question, $default);
-
-        $this->choices = $choices;
-        $this->setValidator($this->getDefaultValidator());
-        $this->setAutocompleterValues($choices);
-    }
-
-    /**
-     * Returns available choices.
-     *
-     * @return array
-     */
-    public function getChoices()
-    {
-        return $this->choices;
-    }
-
-    /**
-     * Sets multiselect option.
-     *
-     * When multiselect is set to true, multiple choices can be answered.
-     *
-     * @param bool $multiselect
-     *
-     * @return ChoiceQuestion The current instance
-     */
-    public function setMultiselect($multiselect)
-    {
-        $this->multiselect = $multiselect;
-        $this->setValidator($this->getDefaultValidator());
-
-        return $this;
-    }
-
-    /**
-     * Gets the prompt for choices.
-     *
-     * @return string
-     */
-    public function getPrompt()
-    {
-        return $this->prompt;
-    }
-
-    /**
-     * Sets the prompt for choices.
-     *
-     * @param string $prompt
-     *
-     * @return ChoiceQuestion The current instance
-     */
-    public function setPrompt($prompt)
-    {
-        $this->prompt = $prompt;
-
-        return $this;
-    }
-
-    /**
-     * Sets the error message for invalid values.
-     *
-     * The error message has a string placeholder (%s) for the invalid value.
-     *
-     * @param string $errorMessage
-     *
-     * @return ChoiceQuestion The current instance
-     */
-    public function setErrorMessage($errorMessage)
-    {
-        $this->errorMessage = $errorMessage;
-        $this->setValidator($this->getDefaultValidator());
-
-        return $this;
-    }
-
-    /**
-     * Returns the default answer validator.
-     *
-     * @return callable
-     */
-    private function getDefaultValidator()
-    {
-        $choices = $this->choices;
-        $errorMessage = $this->errorMessage;
-        $multiselect = $this->multiselect;
-        $isAssoc = $this->isAssoc($choices);
-
-        return function ($selected) use ($choices, $errorMessage, $multiselect, $isAssoc) {
-            // Collapse all spaces.
-            $selectedChoices = str_replace(' ', '', $selected);
-
-            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));
-                }
-                $selectedChoices = explode(',', $selectedChoices);
-            } else {
-                $selectedChoices = array($selected);
-            }
-
-            $multiselectChoices = array();
-            foreach ($selectedChoices as $value) {
-                $results = array();
-                foreach ($choices as $key => $choice) {
-                    if ($choice === $value) {
-                        $results[] = $key;
-                    }
-                }
-
-                if (count($results) > 1) {
-                    throw new \InvalidArgumentException(sprintf('The provided answer is ambiguous. Value should be one of %s.', implode(' or ', $results)));
-                }
-
-                $result = array_search($value, $choices);
-
-                if (!$isAssoc) {
-                    if (false !== $result) {
-                        $result = $choices[$result];
-                    } elseif (isset($choices[$value])) {
-                        $result = $choices[$value];
-                    }
-                } elseif (false === $result && isset($choices[$value])) {
-                    $result = $value;
-                }
-
-                if (false === $result) {
-                    throw new \InvalidArgumentException(sprintf($errorMessage, $value));
-                }
-
-                $multiselectChoices[] = (string) $result;
-            }
-
-            if ($multiselect) {
-                return $multiselectChoices;
-            }
-
-            return current($multiselectChoices);
-        };
-    }
-}
diff --git a/vendor/symfony/console/Question/ConfirmationQuestion.php b/vendor/symfony/console/Question/ConfirmationQuestion.php
deleted file mode 100644
index 29d9887..0000000
--- a/vendor/symfony/console/Question/ConfirmationQuestion.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?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\Question;
-
-/**
- * Represents a yes/no question.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ConfirmationQuestion extends Question
-{
-    private $trueAnswerRegex;
-
-    /**
-     * Constructor.
-     *
-     * @param string $question        The question to ask to the user
-     * @param bool   $default         The default answer to return, true or false
-     * @param string $trueAnswerRegex A regex to match the "yes" answer
-     */
-    public function __construct($question, $default = true, $trueAnswerRegex = '/^y/i')
-    {
-        parent::__construct($question, (bool) $default);
-
-        $this->trueAnswerRegex = $trueAnswerRegex;
-        $this->setNormalizer($this->getDefaultNormalizer());
-    }
-
-    /**
-     * Returns the default answer normalizer.
-     *
-     * @return callable
-     */
-    private function getDefaultNormalizer()
-    {
-        $default = $this->getDefault();
-        $regex = $this->trueAnswerRegex;
-
-        return function ($answer) use ($default, $regex) {
-            if (is_bool($answer)) {
-                return $answer;
-            }
-
-            $answerIsTrue = (bool) preg_match($regex, $answer);
-            if (false === $default) {
-                return $answer && $answerIsTrue;
-            }
-
-            return !$answer || $answerIsTrue;
-        };
-    }
-}
diff --git a/vendor/symfony/console/Question/Question.php b/vendor/symfony/console/Question/Question.php
deleted file mode 100644
index ffe9417..0000000
--- a/vendor/symfony/console/Question/Question.php
+++ /dev/null
@@ -1,247 +0,0 @@
-<?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\Question;
-
-/**
- * Represents a Question.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Question
-{
-    private $question;
-    private $attempts;
-    private $hidden = false;
-    private $hiddenFallback = true;
-    private $autocompleterValues;
-    private $validator;
-    private $default;
-    private $normalizer;
-
-    /**
-     * Constructor.
-     *
-     * @param string $question The question to ask to the user
-     * @param mixed  $default  The default answer to return if the user enters nothing
-     */
-    public function __construct($question, $default = null)
-    {
-        $this->question = $question;
-        $this->default = $default;
-    }
-
-    /**
-     * Returns the question.
-     *
-     * @return string
-     */
-    public function getQuestion()
-    {
-        return $this->question;
-    }
-
-    /**
-     * Returns the default answer.
-     *
-     * @return mixed
-     */
-    public function getDefault()
-    {
-        return $this->default;
-    }
-
-    /**
-     * Returns whether the user response must be hidden.
-     *
-     * @return bool
-     */
-    public function isHidden()
-    {
-        return $this->hidden;
-    }
-
-    /**
-     * Sets whether the user response must be hidden or not.
-     *
-     * @param bool $hidden
-     *
-     * @return Question The current instance
-     *
-     * @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.');
-        }
-
-        $this->hidden = (bool) $hidden;
-
-        return $this;
-    }
-
-    /**
-     * In case the response can not be hidden, whether to fallback on non-hidden question or not.
-     *
-     * @return bool
-     */
-    public function isHiddenFallback()
-    {
-        return $this->hiddenFallback;
-    }
-
-    /**
-     * Sets whether to fallback on non-hidden question if the response can not be hidden.
-     *
-     * @param bool $fallback
-     *
-     * @return Question The current instance
-     */
-    public function setHiddenFallback($fallback)
-    {
-        $this->hiddenFallback = (bool) $fallback;
-
-        return $this;
-    }
-
-    /**
-     * Gets values for the autocompleter.
-     *
-     * @return null|array|\Traversable
-     */
-    public function getAutocompleterValues()
-    {
-        return $this->autocompleterValues;
-    }
-
-    /**
-     * Sets values for the autocompleter.
-     *
-     * @param null|array|\Traversable $values
-     *
-     * @return Question The current instance
-     *
-     * @throws \InvalidArgumentException
-     * @throws \LogicException
-     */
-    public function setAutocompleterValues($values)
-    {
-        if (is_array($values) && $this->isAssoc($values)) {
-            $values = array_merge(array_keys($values), array_values($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.');
-            }
-        }
-
-        if ($this->hidden) {
-            throw new \LogicException('A hidden question cannot use the autocompleter.');
-        }
-
-        $this->autocompleterValues = $values;
-
-        return $this;
-    }
-
-    /**
-     * Sets a validator for the question.
-     *
-     * @param null|callable $validator
-     *
-     * @return Question The current instance
-     */
-    public function setValidator($validator)
-    {
-        $this->validator = $validator;
-
-        return $this;
-    }
-
-    /**
-     * Gets the validator for the question.
-     *
-     * @return null|callable
-     */
-    public function getValidator()
-    {
-        return $this->validator;
-    }
-
-    /**
-     * Sets the maximum number of attempts.
-     *
-     * Null means an unlimited number of attempts.
-     *
-     * @param null|int $attempts
-     *
-     * @return Question The current instance
-     *
-     * @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.');
-        }
-
-        $this->attempts = $attempts;
-
-        return $this;
-    }
-
-    /**
-     * Gets the maximum number of attempts.
-     *
-     * Null means an unlimited number of attempts.
-     *
-     * @return null|int
-     */
-    public function getMaxAttempts()
-    {
-        return $this->attempts;
-    }
-
-    /**
-     * Sets a normalizer for the response.
-     *
-     * The normalizer can be a callable (a string), a closure or a class implementing __invoke.
-     *
-     * @param callable $normalizer
-     *
-     * @return Question The current instance
-     */
-    public function setNormalizer($normalizer)
-    {
-        $this->normalizer = $normalizer;
-
-        return $this;
-    }
-
-    /**
-     * Gets the normalizer for the response.
-     *
-     * The normalizer can ba a callable (a string), a closure or a class implementing __invoke.
-     *
-     * @return callable
-     */
-    public function getNormalizer()
-    {
-        return $this->normalizer;
-    }
-
-    protected function isAssoc($array)
-    {
-        return (bool) count(array_filter(array_keys($array), 'is_string'));
-    }
-}
diff --git a/vendor/symfony/console/README.md b/vendor/symfony/console/README.md
deleted file mode 100644
index 25f700c..0000000
--- a/vendor/symfony/console/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-Console Component
-=================
-
-Console eases the creation of beautiful and testable command line interfaces.
-
-The Application object manages the CLI application:
-
-```php
-use Symfony\Component\Console\Application;
-
-$console = new Application();
-$console->run();
-```
-
-The ``run()`` method parses the arguments and options passed on the command
-line and executes the right command.
-
-Registering a new command can easily be done via the ``register()`` method,
-which returns a ``Command`` instance:
-
-```php
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Output\OutputInterface;
-
-$console
-    ->register('ls')
-    ->setDefinition(array(
-        new InputArgument('dir', InputArgument::REQUIRED, 'Directory name'),
-    ))
-    ->setDescription('Displays the files in the given directory')
-    ->setCode(function (InputInterface $input, OutputInterface $output) {
-        $dir = $input->getArgument('dir');
-
-        $output->writeln(sprintf('Dir listing for <info>%s</info>', $dir));
-    })
-;
-```
-
-You can also register new commands via classes.
-
-The component provides a lot of features like output coloring, input and
-output abstractions (so that you can easily unit-test your commands),
-validation, automatic help messages, ...
-
-Tests
------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/Console/
-    $ composer install
-    $ phpunit
-
-Third Party
------------
-
-`Resources/bin/hiddeninput.exe` is a third party binary provided within this
-component. Find sources and license at https://github.com/Seldaek/hidden-input.
-
-Resources
----------
-
-[The Console Component](https://symfony.com/doc/current/components/console.html)
-
-[How to create a Console Command](https://symfony.com/doc/current/cookbook/console/console_command.html)
diff --git a/vendor/symfony/console/Resources/bin/hiddeninput.exe b/vendor/symfony/console/Resources/bin/hiddeninput.exe
deleted file mode 100644
index c8cf65e..0000000
--- a/vendor/symfony/console/Resources/bin/hiddeninput.exe
+++ /dev/null
@@ -1,21 +0,0 @@
-MZ                @                                       	!L!This program cannot be run in DOS mode.
-$       ,;B;B;B2מ:B2-B2ƞ9B2ў?Ba98B;CB2Ȟ:B2֞:B2Ӟ:BRich;B        PE  L MoO         	  
-         8           @                      `     ?   @                           "  P    @                      P  p   !                             8!  @                                          .text   	      
-                    `.rdata  	       
-                 @  @.data      0                    @  .rsrc       @                    @  @.reloc     P      "              @  B                                                                                                                                                                                                                                                                                                                                                        j$@ x  j @ e EPV  @ EЃPV @ MX @ e EP5H @ L @ YY5\ @ EP5` @ D @ YYP @ MMT @ 3H  ; 0@ u  h@   l3@ $40@ 5h3@ 40@ h$0@ h(0@ h 0@  @ 00@ }j  Yjh"@   3ۉ]d   p]俀3@ SVW0 @ ;t;u3Fuh  4 @ 3F|3@ ;u
-j\  Y;|3@ u,5|3@ h @ h @   YYtE      5<0@ |3@ ;uh @ h @ l  YY|3@    9]uSW8 @ 93@ th3@   Yt
-SjS3@ $0@  @ 5$0@ 5(0@ 5 0@ 80@ 9,0@ u7P @ E	MPQ  YYËeE80@ 39,0@ uPh @ 9<0@ u @ E80@   øMZ  f9  @ t3M< @   @ 8PE  uH  t  uՃ   v39   xtv39   j,0@ p @ jl @ YY3@ 3@  @ t3@  @ p3@  @  x3@ V    =0@  uh@  @ Yg  =0@ u	j @ Y3{  U(  H1@ D1@ @1@ <1@ 581@ =41@ f`1@ fT1@ f01@ f,1@ f%(1@ f-$1@ X1@ E L1@ EP1@ E\1@ 0@   P1@ L0@ @0@ 	 D0@     0@ 0@  @ 0@ j?  Yj   @ h!@ $ @ =0@  uj  Yh	 ( @ P, @ ËUE 8csmu*xu$@= t=!t="t= @u  3] hH@   @ 3% @ jh("@ b  53@ 5 @ YEuu @ Ygj  Ye 53@ ։E53@ YYEEPEPu5l @ YPU  Eu֣3@ uփ3@ E	   E  j  YËUuNYH]ËV!@ !@ W;stЃ;r_^ËV"@ "@ W;stЃ;r_^% @ ̋UMMZ  f9t3]ËA<8PE  u3ҹ  f9H]̋UEH<ASVq3WDv}H;r	X;r
-B(;r3_^[]̋UjhH"@ he@ d    PSVW 0@ 1E3PEd    eE    h  @ *tUE-  @ Ph  @ Pt;@$ЃEMd    Y_^[]ËE3=  ËeE3Md    Y_^[]% @ % @ he@ d5    D$l$l$+SVW 0@ 1E3PeuEEEEd    ËMd    Y__^[]QËUuuuuh@ h 0@    ]ËVh   h   3V   tVVVVV   ^3ËU 0@ e e SWN@  ;tt	У0@ `VEP< @ u3u @ 3 @ 3 @ 3EP @ E3E3;uO@u5 0@ ։50@ ^_[%t @ %x @ %| @ % @ % @ % @ % @ % @ % @ Pd5    D$+d$SVW( 0@ 3PEuEEd    ËMd    Y__^[]QËM3M%T @ T$BJ3J3l"@ s                                                                                                                                                                                                                                                     #  #  #  )  r)  b)  H)  4)  )  (  (  (  (  (  (  )      #  $  %  %  &  d&  &  $      ('  '  '  '  '  (  ((  6(  '  H(  Z(  t(  (  '  '   '  '  '  l'  ^'  R'  F'  >'  >(  0'  '  )          @         W@ @                     MoO       l   !    @0@ 0@ bad allocation      H                                                            0@ !@    RSDSьJ!LZ    c:\users\seld\documents\visual studio 2010\Projects\hiddeninp\Release\hiddeninp.pdb     e                            @ @                 :@             @ @ @ "   d"@                        "          #      $#          &  D   H#          (  h                       #  #  #  )  r)  b)  H)  4)  )  (  (  (  (  (  (  )      #  $  %  %  &  d&  &  $      ('  '  '  '  '  (  ((  6(  '  H(  Z(  t(  (  '  '   '  '  '  l'  ^'  R'  F'  >'  >(  0'  '  )      GetConsoleMode  SetConsoleMode  ;GetStdHandle  KERNEL32.dll   ??$?6DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A  J?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A  ??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z  _??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ  {??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ  ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z  MSVCP90.dll _amsg_exit   __getmainargs ,_cexit  |_exit f _XcptFilter exit   __initenv _initterm _initterm_e <_configthreadlocale  __setusermatherr  _adjust_fdiv   __p__commode   __p__fmode  j_encode_pointer  __set_app_type  K_crt_debugger_hook  C ?terminate@@YAXXZ MSVCR90.dll _unlock  __dllonexit v_lock _onexit `_decode_pointer s_except_handler4_common _invoke_watson  ?_controlfp_s  InterlockedExchange !Sleep InterlockedCompareExchange  -TerminateProcess  GetCurrentProcess >UnhandledExceptionFilter  SetUnhandledExceptionFilter IsDebuggerPresent TQueryPerformanceCounter fGetTickCount  GetCurrentThreadId  GetCurrentProcessId OGetSystemTimeAsFileTime s __CxxFrameHandler3                                                    N@D   $!@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            8                   P                   h                	                   	     @  (        C  V        (4   V S _ V E R S I O N _ I N F O                                                  S t r i n g F i l e I n f o   b   0 4 0 9 0 4 b 0    Q  F i l e D e s c r i p t i o n     R e a d s   f r o m   s t d i n   w i t h o u t   l e a k i n g   i n f o   t o   t h e   t e r m i n a l   a n d   o u t p u t s   b a c k   t o   s t d o u t     6   F i l e V e r s i o n     1 ,   0 ,   0 ,   0     8   I n t e r n a l N a m e   h i d d e n i n p u t   P   L e g a l C o p y r i g h t   J o r d i   B o g g i a n o   -   2 0 1 2   H   O r i g i n a l F i l e n a m e   h i d d e n i n p u t . e x e   :   P r o d u c t N a m e     H i d d e n   I n p u t     :   P r o d u c t V e r s i o n   1 ,   0 ,   0 ,   0     D    V a r F i l e I n f o     $    T r a n s l a t i o n     	<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
-    <security>
-      <requestedPrivileges>
-        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
-      </requestedPrivileges>
-    </security>
-  </trustInfo>
-  <dependency>
-    <dependentAssembly>
-      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
-    </dependentAssembly>
-  </dependency>
-</assembly>PAPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDING   @  00!0/080F0L0T0^0d0n0{000000000000001#1-1@1J1O1T1v1{1111111111111112"2*23292A2M2_2j2p222222222222333%303N3T3Z3`3f3l3s3z333333333333333334444%4;4B444444444445!5^5c5555H6M6_6}666 777*7w7|77777888=8E8P8V8\8b8h8n8t8z88889      $   0001 1t1x12 2@2\2`2h2t2 0     0                                                                                                                                                  
\ No newline at end of file
diff --git a/vendor/symfony/console/Shell.php b/vendor/symfony/console/Shell.php
deleted file mode 100644
index eaaadfd..0000000
--- a/vendor/symfony/console/Shell.php
+++ /dev/null
@@ -1,228 +0,0 @@
-<?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;
-
-use Symfony\Component\Console\Input\StringInput;
-use Symfony\Component\Console\Output\ConsoleOutput;
-use Symfony\Component\Process\ProcessBuilder;
-use Symfony\Component\Process\PhpExecutableFinder;
-
-/**
- * A Shell wraps an Application to add shell capabilities to it.
- *
- * Support for history and completion only works with a PHP compiled
- * with readline support (either --with-readline or --with-libedit)
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Martin Hasoň <martin.hason@gmail.com>
- */
-class Shell
-{
-    private $application;
-    private $history;
-    private $output;
-    private $hasReadline;
-    private $processIsolation = false;
-
-    /**
-     * Constructor.
-     *
-     * If there is no readline support for the current PHP executable
-     * a \RuntimeException exception is thrown.
-     *
-     * @param Application $application An application instance
-     */
-    public function __construct(Application $application)
-    {
-        $this->hasReadline = function_exists('readline');
-        $this->application = $application;
-        $this->history = getenv('HOME').'/.history_'.$application->getName();
-        $this->output = new ConsoleOutput();
-    }
-
-    /**
-     * Runs the shell.
-     */
-    public function run()
-    {
-        $this->application->setAutoExit(false);
-        $this->application->setCatchExceptions(true);
-
-        if ($this->hasReadline) {
-            readline_read_history($this->history);
-            readline_completion_function(array($this, 'autocompleter'));
-        }
-
-        $this->output->writeln($this->getHeader());
-        $php = null;
-        if ($this->processIsolation) {
-            $finder = new PhpExecutableFinder();
-            $php = $finder->find();
-            $this->output->writeln(<<<EOF
-<info>Running with process isolation, you should consider this:</info>
-  * each command is executed as separate process,
-  * commands don't support interactivity, all params must be passed explicitly,
-  * commands output is not colorized.
-
-EOF
-            );
-        }
-
-        while (true) {
-            $command = $this->readline();
-
-            if (false === $command) {
-                $this->output->writeln("\n");
-
-                break;
-            }
-
-            if ($this->hasReadline) {
-                readline_add_history($command);
-                readline_write_history($this->history);
-            }
-
-            if ($this->processIsolation) {
-                $pb = new ProcessBuilder();
-
-                $process = $pb
-                    ->add($php)
-                    ->add($_SERVER['argv'][0])
-                    ->add($command)
-                    ->inheritEnvironmentVariables(true)
-                    ->getProcess()
-                ;
-
-                $output = $this->output;
-                $process->run(function ($type, $data) use ($output) {
-                    $output->writeln($data);
-                });
-
-                $ret = $process->getExitCode();
-            } else {
-                $ret = $this->application->run(new StringInput($command), $this->output);
-            }
-
-            if (0 !== $ret) {
-                $this->output->writeln(sprintf('<error>The command terminated with an error status (%s)</error>', $ret));
-            }
-        }
-    }
-
-    /**
-     * Returns the shell header.
-     *
-     * @return string The header string
-     */
-    protected function getHeader()
-    {
-        return <<<EOF
-
-Welcome to the <info>{$this->application->getName()}</info> shell (<comment>{$this->application->getVersion()}</comment>).
-
-At the prompt, type <comment>help</comment> for some help,
-or <comment>list</comment> to get a list of available commands.
-
-To exit the shell, type <comment>^D</comment>.
-
-EOF;
-    }
-
-    /**
-     * Renders a prompt.
-     *
-     * @return string The prompt
-     */
-    protected function getPrompt()
-    {
-        // using the formatter here is required when using readline
-        return $this->output->getFormatter()->format($this->application->getName().' > ');
-    }
-
-    protected function getOutput()
-    {
-        return $this->output;
-    }
-
-    protected function getApplication()
-    {
-        return $this->application;
-    }
-
-    /**
-     * Tries to return autocompletion for the current entered text.
-     *
-     * @param string $text The last segment of the entered text
-     *
-     * @return bool|array A list of guessed strings or true
-     */
-    private function autocompleter($text)
-    {
-        $info = readline_info();
-        $text = substr($info['line_buffer'], 0, $info['end']);
-
-        if ($info['point'] !== $info['end']) {
-            return true;
-        }
-
-        // task name?
-        if (false === strpos($text, ' ') || !$text) {
-            return array_keys($this->application->all());
-        }
-
-        // options and arguments?
-        try {
-            $command = $this->application->find(substr($text, 0, strpos($text, ' ')));
-        } catch (\Exception $e) {
-            return true;
-        }
-
-        $list = array('--help');
-        foreach ($command->getDefinition()->getOptions() as $option) {
-            $list[] = '--'.$option->getName();
-        }
-
-        return $list;
-    }
-
-    /**
-     * Reads a single line from standard input.
-     *
-     * @return string The single line from standard input
-     */
-    private function readline()
-    {
-        if ($this->hasReadline) {
-            $line = readline($this->getPrompt());
-        } else {
-            $this->output->write($this->getPrompt());
-            $line = fgets(STDIN, 1024);
-            $line = (false === $line || '' === $line) ? false : rtrim($line);
-        }
-
-        return $line;
-    }
-
-    public function getProcessIsolation()
-    {
-        return $this->processIsolation;
-    }
-
-    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.');
-        }
-    }
-}
diff --git a/vendor/symfony/console/Style/OutputStyle.php b/vendor/symfony/console/Style/OutputStyle.php
deleted file mode 100644
index 8371bb5..0000000
--- a/vendor/symfony/console/Style/OutputStyle.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?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\Style;
-
-use Symfony\Component\Console\Formatter\OutputFormatterInterface;
-use Symfony\Component\Console\Helper\ProgressBar;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * Decorates output to add console style guide helpers.
- *
- * @author Kevin Bond <kevinbond@gmail.com>
- */
-abstract class OutputStyle implements OutputInterface, StyleInterface
-{
-    private $output;
-
-    /**
-     * @param OutputInterface $output
-     */
-    public function __construct(OutputInterface $output)
-    {
-        $this->output = $output;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function newLine($count = 1)
-    {
-        $this->output->write(str_repeat(PHP_EOL, $count));
-    }
-
-    /**
-     * @param int $max
-     *
-     * @return ProgressBar
-     */
-    public function createProgressBar($max = 0)
-    {
-        return new ProgressBar($this->output, $max);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL)
-    {
-        $this->output->write($messages, $newline, $type);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function writeln($messages, $type = self::OUTPUT_NORMAL)
-    {
-        $this->output->writeln($messages, $type);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setVerbosity($level)
-    {
-        $this->output->setVerbosity($level);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getVerbosity()
-    {
-        return $this->output->getVerbosity();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setDecorated($decorated)
-    {
-        $this->output->setDecorated($decorated);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isDecorated()
-    {
-        return $this->output->isDecorated();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setFormatter(OutputFormatterInterface $formatter)
-    {
-        $this->output->setFormatter($formatter);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFormatter()
-    {
-        return $this->output->getFormatter();
-    }
-}
diff --git a/vendor/symfony/console/Style/StyleInterface.php b/vendor/symfony/console/Style/StyleInterface.php
deleted file mode 100644
index 2448547..0000000
--- a/vendor/symfony/console/Style/StyleInterface.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?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\Style;
-
-/**
- * Output style helpers.
- *
- * @author Kevin Bond <kevinbond@gmail.com>
- */
-interface StyleInterface
-{
-    /**
-     * Formats a command title.
-     *
-     * @param string $message
-     */
-    public function title($message);
-
-    /**
-     * Formats a section title.
-     *
-     * @param string $message
-     */
-    public function section($message);
-
-    /**
-     * Formats a list.
-     *
-     * @param array $elements
-     */
-    public function listing(array $elements);
-
-    /**
-     * Formats informational text.
-     *
-     * @param string|array $message
-     */
-    public function text($message);
-
-    /**
-     * Formats a success result bar.
-     *
-     * @param string|array $message
-     */
-    public function success($message);
-
-    /**
-     * Formats an error result bar.
-     *
-     * @param string|array $message
-     */
-    public function error($message);
-
-    /**
-     * Formats an warning result bar.
-     *
-     * @param string|array $message
-     */
-    public function warning($message);
-
-    /**
-     * Formats a note admonition.
-     *
-     * @param string|array $message
-     */
-    public function note($message);
-
-    /**
-     * Formats a caution admonition.
-     *
-     * @param string|array $message
-     */
-    public function caution($message);
-
-    /**
-     * Formats a table.
-     *
-     * @param array $headers
-     * @param array $rows
-     */
-    public function table(array $headers, array $rows);
-
-    /**
-     * Asks a question.
-     *
-     * @param string        $question
-     * @param string|null   $default
-     * @param callable|null $validator
-     *
-     * @return string
-     */
-    public function ask($question, $default = null, $validator = null);
-
-    /**
-     * Asks a question with the user input hidden.
-     *
-     * @param string        $question
-     * @param callable|null $validator
-     *
-     * @return string
-     */
-    public function askHidden($question, $validator = null);
-
-    /**
-     * Asks for confirmation.
-     *
-     * @param string $question
-     * @param bool   $default
-     *
-     * @return bool
-     */
-    public function confirm($question, $default = true);
-
-    /**
-     * Asks a choice question.
-     *
-     * @param string          $question
-     * @param array           $choices
-     * @param string|int|null $default
-     *
-     * @return string
-     */
-    public function choice($question, array $choices, $default = null);
-
-    /**
-     * Add newline(s).
-     *
-     * @param int $count The number of newlines
-     */
-    public function newLine($count = 1);
-
-    /**
-     * Starts the progress output.
-     *
-     * @param int $max Maximum steps (0 if unknown)
-     */
-    public function progressStart($max = 0);
-
-    /**
-     * Advances the progress output X steps.
-     *
-     * @param int $step Number of steps to advance
-     */
-    public function progressAdvance($step = 1);
-
-    /**
-     * Finishes the progress output.
-     */
-    public function progressFinish();
-}
diff --git a/vendor/symfony/console/Style/SymfonyStyle.php b/vendor/symfony/console/Style/SymfonyStyle.php
deleted file mode 100644
index 6e9c64f..0000000
--- a/vendor/symfony/console/Style/SymfonyStyle.php
+++ /dev/null
@@ -1,406 +0,0 @@
-<?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\Style;
-
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Formatter\OutputFormatter;
-use Symfony\Component\Console\Helper\Helper;
-use Symfony\Component\Console\Helper\ProgressBar;
-use Symfony\Component\Console\Helper\SymfonyQuestionHelper;
-use Symfony\Component\Console\Helper\Table;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\BufferedOutput;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Question\ChoiceQuestion;
-use Symfony\Component\Console\Question\ConfirmationQuestion;
-use Symfony\Component\Console\Question\Question;
-
-/**
- * Output decorator helpers for the Symfony Style Guide.
- *
- * @author Kevin Bond <kevinbond@gmail.com>
- */
-class SymfonyStyle extends OutputStyle
-{
-    const MAX_LINE_LENGTH = 120;
-
-    private $input;
-    private $questionHelper;
-    private $progressBar;
-    private $lineLength;
-    private $bufferedOutput;
-
-    /**
-     * @param InputInterface  $input
-     * @param OutputInterface $output
-     */
-    public function __construct(InputInterface $input, OutputInterface $output)
-    {
-        $this->input = $input;
-        $this->bufferedOutput = new BufferedOutput($output->getVerbosity(), false, clone $output->getFormatter());
-        // Windows cmd wraps lines as soon as the terminal width is reached, whether there are following chars or not.
-        $this->lineLength = min($this->getTerminalWidth() - (int) (DIRECTORY_SEPARATOR === '\\'), self::MAX_LINE_LENGTH);
-
-        parent::__construct($output);
-    }
-
-    /**
-     * Formats a message as a block of text.
-     *
-     * @param string|array $messages The message to write in the block
-     * @param string|null  $type     The block type (added in [] on first line)
-     * @param string|null  $style    The style to apply to the whole block
-     * @param string       $prefix   The prefix for the block
-     * @param bool         $padding  Whether to add vertical padding
-     */
-    public function block($messages, $type = null, $style = null, $prefix = ' ', $padding = false)
-    {
-        $this->autoPrependBlock();
-        $messages = is_array($messages) ? array_values($messages) : array($messages);
-        $lines = array();
-
-        // add type
-        if (null !== $type) {
-            $messages[0] = sprintf('[%s] %s', $type, $messages[0]);
-        }
-
-        // wrap and add newlines for each element
-        foreach ($messages as $key => $message) {
-            $message = OutputFormatter::escape($message);
-            $lines = array_merge($lines, explode(PHP_EOL, wordwrap($message, $this->lineLength - Helper::strlen($prefix), PHP_EOL, true)));
-
-            if (count($messages) > 1 && $key < count($messages) - 1) {
-                $lines[] = '';
-            }
-        }
-
-        if ($padding && $this->isDecorated()) {
-            array_unshift($lines, '');
-            $lines[] = '';
-        }
-
-        foreach ($lines as &$line) {
-            $line = sprintf('%s%s', $prefix, $line);
-            $line .= str_repeat(' ', $this->lineLength - Helper::strlenWithoutDecoration($this->getFormatter(), $line));
-
-            if ($style) {
-                $line = sprintf('<%s>%s</>', $style, $line);
-            }
-        }
-
-        $this->writeln($lines);
-        $this->newLine();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function title($message)
-    {
-        $this->autoPrependBlock();
-        $this->writeln(array(
-            sprintf('<comment>%s</>', $message),
-            sprintf('<comment>%s</>', str_repeat('=', strlen($message))),
-        ));
-        $this->newLine();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function section($message)
-    {
-        $this->autoPrependBlock();
-        $this->writeln(array(
-            sprintf('<comment>%s</>', $message),
-            sprintf('<comment>%s</>', str_repeat('-', strlen($message))),
-        ));
-        $this->newLine();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function listing(array $elements)
-    {
-        $this->autoPrependText();
-        $elements = array_map(function ($element) {
-            return sprintf(' * %s', $element);
-        }, $elements);
-
-        $this->writeln($elements);
-        $this->newLine();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function text($message)
-    {
-        $this->autoPrependText();
-
-        if (!is_array($message)) {
-            $this->writeln(sprintf(' // %s', $message));
-
-            return;
-        }
-
-        foreach ($message as $element) {
-            $this->text($element);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function success($message)
-    {
-        $this->block($message, 'OK', 'fg=black;bg=green', ' ', true);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function error($message)
-    {
-        $this->block($message, 'ERROR', 'fg=white;bg=red', ' ', true);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function warning($message)
-    {
-        $this->block($message, 'WARNING', 'fg=white;bg=red', ' ', true);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function note($message)
-    {
-        $this->block($message, 'NOTE', 'fg=yellow', ' ! ');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function caution($message)
-    {
-        $this->block($message, 'CAUTION', 'fg=white;bg=red', ' ! ', true);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function table(array $headers, array $rows)
-    {
-        $headers = array_map(function ($value) { return sprintf('<info>%s</>', $value); }, $headers);
-
-        $table = new Table($this);
-        $table->setHeaders($headers);
-        $table->setRows($rows);
-        $table->setStyle('symfony-style-guide');
-
-        $table->render();
-        $this->newLine();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function ask($question, $default = null, $validator = null)
-    {
-        $question = new Question($question, $default);
-        $question->setValidator($validator);
-
-        return $this->askQuestion($question);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function askHidden($question, $validator = null)
-    {
-        $question = new Question($question);
-
-        $question->setHidden(true);
-        $question->setValidator($validator);
-
-        return $this->askQuestion($question);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function confirm($question, $default = true)
-    {
-        return $this->askQuestion(new ConfirmationQuestion($question, $default));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function choice($question, array $choices, $default = null)
-    {
-        if (null !== $default) {
-            $values = array_flip($choices);
-            $default = $values[$default];
-        }
-
-        return $this->askQuestion(new ChoiceQuestion($question, $choices, $default));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function progressStart($max = 0)
-    {
-        $this->progressBar = $this->createProgressBar($max);
-        $this->progressBar->start();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function progressAdvance($step = 1)
-    {
-        $this->getProgressBar()->advance($step);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function progressFinish()
-    {
-        $this->getProgressBar()->finish();
-        $this->newLine(2);
-        $this->progressBar = null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function createProgressBar($max = 0)
-    {
-        $progressBar = parent::createProgressBar($max);
-
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            $progressBar->setEmptyBarCharacter('░'); // light shade character \u2591
-            $progressBar->setProgressCharacter('');
-            $progressBar->setBarCharacter('▓'); // dark shade character \u2593
-        }
-
-        return $progressBar;
-    }
-
-    /**
-     * @param Question $question
-     *
-     * @return string
-     */
-    public function askQuestion(Question $question)
-    {
-        if ($this->input->isInteractive()) {
-            $this->autoPrependBlock();
-        }
-
-        if (!$this->questionHelper) {
-            $this->questionHelper = new SymfonyQuestionHelper();
-        }
-
-        $answer = $this->questionHelper->ask($this->input, $this, $question);
-
-        if ($this->input->isInteractive()) {
-            $this->newLine();
-            $this->bufferedOutput->write("\n");
-        }
-
-        return $answer;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function writeln($messages, $type = self::OUTPUT_NORMAL)
-    {
-        parent::writeln($messages, $type);
-        $this->bufferedOutput->writeln($this->reduceBuffer($messages), $type);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL)
-    {
-        parent::write($messages, $newline, $type);
-        $this->bufferedOutput->write($this->reduceBuffer($messages), $newline, $type);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function newLine($count = 1)
-    {
-        parent::newLine($count);
-        $this->bufferedOutput->write(str_repeat("\n", $count));
-    }
-
-    /**
-     * @return ProgressBar
-     */
-    private function getProgressBar()
-    {
-        if (!$this->progressBar) {
-            throw new \RuntimeException('The ProgressBar is not started.');
-        }
-
-        return $this->progressBar;
-    }
-
-    private function getTerminalWidth()
-    {
-        $application = new Application();
-        $dimensions = $application->getTerminalDimensions();
-
-        return $dimensions[0] ?: self::MAX_LINE_LENGTH;
-    }
-
-    private function autoPrependBlock()
-    {
-        $chars = substr(str_replace(PHP_EOL, "\n", $this->bufferedOutput->fetch()), -2);
-
-        if (!isset($chars[0])) {
-            return $this->newLine(); //empty history, so we should start with a new line.
-        }
-        //Prepend new line for each non LF chars (This means no blank line was output before)
-        $this->newLine(2 - substr_count($chars, "\n"));
-    }
-
-    private function autoPrependText()
-    {
-        $fetched = $this->bufferedOutput->fetch();
-        //Prepend new line if last char isn't EOL:
-        if ("\n" !== substr($fetched, -1)) {
-            $this->newLine();
-        }
-    }
-
-    private function reduceBuffer($messages)
-    {
-        // We need to know if the two last chars are PHP_EOL
-        // Preserve the last 4 chars inserted (PHP_EOL on windows is two chars) in the history buffer
-        return array_map(function ($value) {
-            return substr($value, -4);
-        }, array_merge(array($this->bufferedOutput->fetch()), (array) $messages));
-    }
-}
diff --git a/vendor/symfony/console/Tester/ApplicationTester.php b/vendor/symfony/console/Tester/ApplicationTester.php
deleted file mode 100644
index da8a19c..0000000
--- a/vendor/symfony/console/Tester/ApplicationTester.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?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\Tester;
-
-use Symfony\Component\Console\Application;
-use Symfony\Component\Console\Input\ArrayInput;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Output\StreamOutput;
-
-/**
- * Eases the testing of console applications.
- *
- * When testing an application, don't forget to disable the auto exit flag:
- *
- *     $application = new Application();
- *     $application->setAutoExit(false);
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ApplicationTester
-{
-    private $application;
-    private $input;
-    private $output;
-    private $statusCode;
-
-    /**
-     * Constructor.
-     *
-     * @param Application $application An Application instance to test.
-     */
-    public function __construct(Application $application)
-    {
-        $this->application = $application;
-    }
-
-    /**
-     * Executes the application.
-     *
-     * Available options:
-     *
-     *  * interactive: Sets the input interactive flag
-     *  * decorated:   Sets the output decorated flag
-     *  * verbosity:   Sets the output verbosity flag
-     *
-     * @param array $input   An array of arguments and options
-     * @param array $options An array of options
-     *
-     * @return int The command exit code
-     */
-    public function run(array $input, $options = array())
-    {
-        $this->input = new ArrayInput($input);
-        if (isset($options['interactive'])) {
-            $this->input->setInteractive($options['interactive']);
-        }
-
-        $this->output = new StreamOutput(fopen('php://memory', 'w', false));
-        if (isset($options['decorated'])) {
-            $this->output->setDecorated($options['decorated']);
-        }
-        if (isset($options['verbosity'])) {
-            $this->output->setVerbosity($options['verbosity']);
-        }
-
-        return $this->statusCode = $this->application->run($this->input, $this->output);
-    }
-
-    /**
-     * Gets the display returned by the last execution of the application.
-     *
-     * @param bool $normalize Whether to normalize end of lines to \n or not
-     *
-     * @return string The display
-     */
-    public function getDisplay($normalize = false)
-    {
-        rewind($this->output->getStream());
-
-        $display = stream_get_contents($this->output->getStream());
-
-        if ($normalize) {
-            $display = str_replace(PHP_EOL, "\n", $display);
-        }
-
-        return $display;
-    }
-
-    /**
-     * Gets the input instance used by the last execution of the application.
-     *
-     * @return InputInterface The current input instance
-     */
-    public function getInput()
-    {
-        return $this->input;
-    }
-
-    /**
-     * Gets the output instance used by the last execution of the application.
-     *
-     * @return OutputInterface The current output instance
-     */
-    public function getOutput()
-    {
-        return $this->output;
-    }
-
-    /**
-     * Gets the status code returned by the last execution of the application.
-     *
-     * @return int The status code
-     */
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-}
diff --git a/vendor/symfony/console/Tester/CommandTester.php b/vendor/symfony/console/Tester/CommandTester.php
deleted file mode 100644
index 8d6486e..0000000
--- a/vendor/symfony/console/Tester/CommandTester.php
+++ /dev/null
@@ -1,132 +0,0 @@
-<?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\Tester;
-
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\ArrayInput;
-use Symfony\Component\Console\Output\StreamOutput;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * Eases the testing of console commands.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CommandTester
-{
-    private $command;
-    private $input;
-    private $output;
-    private $statusCode;
-
-    /**
-     * Constructor.
-     *
-     * @param Command $command A Command instance to test.
-     */
-    public function __construct(Command $command)
-    {
-        $this->command = $command;
-    }
-
-    /**
-     * Executes the command.
-     *
-     * Available execution options:
-     *
-     *  * interactive: Sets the input interactive flag
-     *  * decorated:   Sets the output decorated flag
-     *  * verbosity:   Sets the output verbosity flag
-     *
-     * @param array $input   An array of command arguments and options
-     * @param array $options An array of execution options
-     *
-     * @return int The command exit code
-     */
-    public function execute(array $input, array $options = array())
-    {
-        // set the command name automatically if the application requires
-        // this argument and no command name was passed
-        if (!isset($input['command'])
-            && (null !== $application = $this->command->getApplication())
-            && $application->getDefinition()->hasArgument('command')
-        ) {
-            $input = array_merge(array('command' => $this->command->getName()), $input);
-        }
-
-        $this->input = new ArrayInput($input);
-        if (isset($options['interactive'])) {
-            $this->input->setInteractive($options['interactive']);
-        }
-
-        $this->output = new StreamOutput(fopen('php://memory', 'w', false));
-        if (isset($options['decorated'])) {
-            $this->output->setDecorated($options['decorated']);
-        }
-        if (isset($options['verbosity'])) {
-            $this->output->setVerbosity($options['verbosity']);
-        }
-
-        return $this->statusCode = $this->command->run($this->input, $this->output);
-    }
-
-    /**
-     * Gets the display returned by the last execution of the command.
-     *
-     * @param bool $normalize Whether to normalize end of lines to \n or not
-     *
-     * @return string The display
-     */
-    public function getDisplay($normalize = false)
-    {
-        rewind($this->output->getStream());
-
-        $display = stream_get_contents($this->output->getStream());
-
-        if ($normalize) {
-            $display = str_replace(PHP_EOL, "\n", $display);
-        }
-
-        return $display;
-    }
-
-    /**
-     * Gets the input instance used by the last execution of the command.
-     *
-     * @return InputInterface The current input instance
-     */
-    public function getInput()
-    {
-        return $this->input;
-    }
-
-    /**
-     * Gets the output instance used by the last execution of the command.
-     *
-     * @return OutputInterface The current output instance
-     */
-    public function getOutput()
-    {
-        return $this->output;
-    }
-
-    /**
-     * Gets the status code returned by the last execution of the application.
-     *
-     * @return int The status code
-     */
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-}
diff --git a/vendor/symfony/console/composer.json b/vendor/symfony/console/composer.json
deleted file mode 100644
index 38903ab..0000000
--- a/vendor/symfony/console/composer.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-    "name": "symfony/console",
-    "type": "library",
-    "description": "Symfony Console Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9"
-    },
-    "require-dev": {
-        "symfony/event-dispatcher": "~2.1",
-        "symfony/process": "~2.1",
-        "psr/log": "~1.0"
-    },
-    "suggest": {
-        "symfony/event-dispatcher": "",
-        "symfony/process": "",
-        "psr/log": "For using the console logger"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Console\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/console/phpunit.xml.dist b/vendor/symfony/console/phpunit.xml.dist
deleted file mode 100644
index ae0dcbe..0000000
--- a/vendor/symfony/console/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Console Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/css-selector/.gitignore b/vendor/symfony/css-selector/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/css-selector/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/css-selector/CHANGELOG.md b/vendor/symfony/css-selector/CHANGELOG.md
deleted file mode 100644
index be10abe..0000000
--- a/vendor/symfony/css-selector/CHANGELOG.md
+++ /dev/null
@@ -1,7 +0,0 @@
-CHANGELOG
-=========
-
-2.1.0
------
-
- * none
diff --git a/vendor/symfony/css-selector/CssSelector.php b/vendor/symfony/css-selector/CssSelector.php
deleted file mode 100644
index 579700a..0000000
--- a/vendor/symfony/css-selector/CssSelector.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?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\CssSelector;
-
-use Symfony\Component\CssSelector\Parser\Shortcut\ClassParser;
-use Symfony\Component\CssSelector\Parser\Shortcut\ElementParser;
-use Symfony\Component\CssSelector\Parser\Shortcut\EmptyStringParser;
-use Symfony\Component\CssSelector\Parser\Shortcut\HashParser;
-use Symfony\Component\CssSelector\XPath\Extension\HtmlExtension;
-use Symfony\Component\CssSelector\XPath\Translator;
-
-/**
- * CssSelector is the main entry point of the component and can convert CSS
- * selectors to XPath expressions.
- *
- * $xpath = CssSelector::toXpath('h1.foo');
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * Copyright (c) 2007-2012 Ian Bicking and contributors. See AUTHORS
- * for more details.
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. 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.
- *
- * 3. Neither the name of Ian Bicking nor the names of its contributors may
- * be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IAN BICKING 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 Fabien Potencier <fabien@symfony.com>
- */
-class CssSelector
-{
-    private static $html = true;
-
-    /**
-     * Translates a CSS expression to its XPath equivalent.
-     * Optionally, a prefix can be added to the resulting XPath
-     * expression with the $prefix parameter.
-     *
-     * @param mixed  $cssExpr The CSS expression.
-     * @param string $prefix  An optional prefix for the XPath expression.
-     *
-     * @return string
-     */
-    public static function toXPath($cssExpr, $prefix = 'descendant-or-self::')
-    {
-        $translator = new Translator();
-
-        if (self::$html) {
-            $translator->registerExtension(new HtmlExtension($translator));
-        }
-
-        $translator
-            ->registerParserShortcut(new EmptyStringParser())
-            ->registerParserShortcut(new ElementParser())
-            ->registerParserShortcut(new ClassParser())
-            ->registerParserShortcut(new HashParser())
-        ;
-
-        return $translator->cssToXPath($cssExpr, $prefix);
-    }
-
-    /**
-     * Enables the HTML extension.
-     */
-    public static function enableHtmlExtension()
-    {
-        self::$html = true;
-    }
-
-    /**
-     * Disables the HTML extension.
-     */
-    public static function disableHtmlExtension()
-    {
-        self::$html = false;
-    }
-}
diff --git a/vendor/symfony/css-selector/Exception/ExceptionInterface.php b/vendor/symfony/css-selector/Exception/ExceptionInterface.php
deleted file mode 100644
index e4c5ae1..0000000
--- a/vendor/symfony/css-selector/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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\CssSelector\Exception;
-
-/**
- * Interface for exceptions.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/symfony/css-selector/Exception/ExpressionErrorException.php b/vendor/symfony/css-selector/Exception/ExpressionErrorException.php
deleted file mode 100644
index fd5deea..0000000
--- a/vendor/symfony/css-selector/Exception/ExpressionErrorException.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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\CssSelector\Exception;
-
-/**
- * ParseException is thrown when a CSS selector syntax is not valid.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class ExpressionErrorException extends ParseException
-{
-}
diff --git a/vendor/symfony/css-selector/Exception/InternalErrorException.php b/vendor/symfony/css-selector/Exception/InternalErrorException.php
deleted file mode 100644
index e60e5ed..0000000
--- a/vendor/symfony/css-selector/Exception/InternalErrorException.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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\CssSelector\Exception;
-
-/**
- * ParseException is thrown when a CSS selector syntax is not valid.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class InternalErrorException extends ParseException
-{
-}
diff --git a/vendor/symfony/css-selector/Exception/ParseException.php b/vendor/symfony/css-selector/Exception/ParseException.php
deleted file mode 100644
index 3b0b0ee..0000000
--- a/vendor/symfony/css-selector/Exception/ParseException.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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\CssSelector\Exception;
-
-/**
- * ParseException is thrown when a CSS selector syntax is not valid.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ParseException extends \Exception implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/css-selector/Exception/SyntaxErrorException.php b/vendor/symfony/css-selector/Exception/SyntaxErrorException.php
deleted file mode 100644
index 418bc30..0000000
--- a/vendor/symfony/css-selector/Exception/SyntaxErrorException.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?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\CssSelector\Exception;
-
-use Symfony\Component\CssSelector\Parser\Token;
-
-/**
- * ParseException is thrown when a CSS selector syntax is not valid.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class SyntaxErrorException extends ParseException
-{
-    /**
-     * @param string $expectedValue
-     * @param Token  $foundToken
-     *
-     * @return SyntaxErrorException
-     */
-    public static function unexpectedToken($expectedValue, Token $foundToken)
-    {
-        return new self(sprintf('Expected %s, but %s found.', $expectedValue, $foundToken));
-    }
-
-    /**
-     * @param string $pseudoElement
-     * @param string $unexpectedLocation
-     *
-     * @return SyntaxErrorException
-     */
-    public static function pseudoElementFound($pseudoElement, $unexpectedLocation)
-    {
-        return new self(sprintf('Unexpected pseudo-element "::%s" found %s.', $pseudoElement, $unexpectedLocation));
-    }
-
-    /**
-     * @param int $position
-     *
-     * @return SyntaxErrorException
-     */
-    public static function unclosedString($position)
-    {
-        return new self(sprintf('Unclosed/invalid string at %s.', $position));
-    }
-
-    /**
-     * @return SyntaxErrorException
-     */
-    public static function nestedNot()
-    {
-        return new self('Got nested ::not().');
-    }
-
-    /**
-     * @return SyntaxErrorException
-     */
-    public static function stringAsFunctionArgument()
-    {
-        return new self('String not allowed as function argument.');
-    }
-}
diff --git a/vendor/symfony/css-selector/LICENSE b/vendor/symfony/css-selector/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/css-selector/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/css-selector/Node/AbstractNode.php b/vendor/symfony/css-selector/Node/AbstractNode.php
deleted file mode 100644
index b1c8e95..0000000
--- a/vendor/symfony/css-selector/Node/AbstractNode.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Abstract base node class.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-abstract class AbstractNode implements NodeInterface
-{
-    /**
-     * @var string
-     */
-    private $nodeName;
-
-    /**
-     * @return string
-     */
-    public function getNodeName()
-    {
-        if (null === $this->nodeName) {
-            $this->nodeName = preg_replace('~.*\\\\([^\\\\]+)Node$~', '$1', get_called_class());
-        }
-
-        return $this->nodeName;
-    }
-}
diff --git a/vendor/symfony/css-selector/Node/AttributeNode.php b/vendor/symfony/css-selector/Node/AttributeNode.php
deleted file mode 100644
index b10a4dd..0000000
--- a/vendor/symfony/css-selector/Node/AttributeNode.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Represents a "<selector>[<namespace>|<attribute> <operator> <value>]" node.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class AttributeNode extends AbstractNode
-{
-    /**
-     * @var NodeInterface
-     */
-    private $selector;
-
-    /**
-     * @var string
-     */
-    private $namespace;
-
-    /**
-     * @var string
-     */
-    private $attribute;
-
-    /**
-     * @var string
-     */
-    private $operator;
-
-    /**
-     * @var string
-     */
-    private $value;
-
-    /**
-     * @param NodeInterface $selector
-     * @param string        $namespace
-     * @param string        $attribute
-     * @param string        $operator
-     * @param string        $value
-     */
-    public function __construct(NodeInterface $selector, $namespace, $attribute, $operator, $value)
-    {
-        $this->selector = $selector;
-        $this->namespace = $namespace;
-        $this->attribute = $attribute;
-        $this->operator = $operator;
-        $this->value = $value;
-    }
-
-    /**
-     * @return NodeInterface
-     */
-    public function getSelector()
-    {
-        return $this->selector;
-    }
-
-    /**
-     * @return string
-     */
-    public function getNamespace()
-    {
-        return $this->namespace;
-    }
-
-    /**
-     * @return string
-     */
-    public function getAttribute()
-    {
-        return $this->attribute;
-    }
-
-    /**
-     * @return string
-     */
-    public function getOperator()
-    {
-        return $this->operator;
-    }
-
-    /**
-     * @return string
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSpecificity()
-    {
-        return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        $attribute = $this->namespace ? $this->namespace.'|'.$this->attribute : $this->attribute;
-
-        return 'exists' === $this->operator
-            ? sprintf('%s[%s[%s]]', $this->getNodeName(), $this->selector, $attribute)
-            : sprintf("%s[%s[%s %s '%s']]", $this->getNodeName(), $this->selector, $attribute, $this->operator, $this->value);
-    }
-}
diff --git a/vendor/symfony/css-selector/Node/ClassNode.php b/vendor/symfony/css-selector/Node/ClassNode.php
deleted file mode 100644
index 544342f..0000000
--- a/vendor/symfony/css-selector/Node/ClassNode.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Represents a "<selector>.<name>" node.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class ClassNode extends AbstractNode
-{
-    /**
-     * @var NodeInterface
-     */
-    private $selector;
-
-    /**
-     * @var string
-     */
-    private $name;
-
-    /**
-     * @param NodeInterface $selector
-     * @param string        $name
-     */
-    public function __construct(NodeInterface $selector, $name)
-    {
-        $this->selector = $selector;
-        $this->name = $name;
-    }
-
-    /**
-     * @return NodeInterface
-     */
-    public function getSelector()
-    {
-        return $this->selector;
-    }
-
-    /**
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSpecificity()
-    {
-        return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        return sprintf('%s[%s.%s]', $this->getNodeName(), $this->selector, $this->name);
-    }
-}
diff --git a/vendor/symfony/css-selector/Node/CombinedSelectorNode.php b/vendor/symfony/css-selector/Node/CombinedSelectorNode.php
deleted file mode 100644
index 6d00db4..0000000
--- a/vendor/symfony/css-selector/Node/CombinedSelectorNode.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Represents a combined node.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class CombinedSelectorNode extends AbstractNode
-{
-    /**
-     * @var NodeInterface
-     */
-    private $selector;
-
-    /**
-     * @var string
-     */
-    private $combinator;
-
-    /**
-     * @var NodeInterface
-     */
-    private $subSelector;
-
-    /**
-     * @param NodeInterface $selector
-     * @param string        $combinator
-     * @param NodeInterface $subSelector
-     */
-    public function __construct(NodeInterface $selector, $combinator, NodeInterface $subSelector)
-    {
-        $this->selector = $selector;
-        $this->combinator = $combinator;
-        $this->subSelector = $subSelector;
-    }
-
-    /**
-     * @return NodeInterface
-     */
-    public function getSelector()
-    {
-        return $this->selector;
-    }
-
-    /**
-     * @return string
-     */
-    public function getCombinator()
-    {
-        return $this->combinator;
-    }
-
-    /**
-     * @return NodeInterface
-     */
-    public function getSubSelector()
-    {
-        return $this->subSelector;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSpecificity()
-    {
-        return $this->selector->getSpecificity()->plus($this->subSelector->getSpecificity());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        $combinator = ' ' === $this->combinator ? '<followed>' : $this->combinator;
-
-        return sprintf('%s[%s %s %s]', $this->getNodeName(), $this->selector, $combinator, $this->subSelector);
-    }
-}
diff --git a/vendor/symfony/css-selector/Node/ElementNode.php b/vendor/symfony/css-selector/Node/ElementNode.php
deleted file mode 100644
index 71ef121..0000000
--- a/vendor/symfony/css-selector/Node/ElementNode.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Represents a "<namespace>|<element>" node.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class ElementNode extends AbstractNode
-{
-    /**
-     * @var string|null
-     */
-    private $namespace;
-
-    /**
-     * @var string|null
-     */
-    private $element;
-
-    /**
-     * @param string|null $namespace
-     * @param string|null $element
-     */
-    public function __construct($namespace = null, $element = null)
-    {
-        $this->namespace = $namespace;
-        $this->element = $element;
-    }
-
-    /**
-     * @return null|string
-     */
-    public function getNamespace()
-    {
-        return $this->namespace;
-    }
-
-    /**
-     * @return null|string
-     */
-    public function getElement()
-    {
-        return $this->element;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSpecificity()
-    {
-        return new Specificity(0, 0, $this->element ? 1 : 0);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        $element = $this->element ?: '*';
-
-        return sprintf('%s[%s]', $this->getNodeName(), $this->namespace ? $this->namespace.'|'.$element : $element);
-    }
-}
diff --git a/vendor/symfony/css-selector/Node/FunctionNode.php b/vendor/symfony/css-selector/Node/FunctionNode.php
deleted file mode 100644
index f94af8d..0000000
--- a/vendor/symfony/css-selector/Node/FunctionNode.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?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\CssSelector\Node;
-
-use Symfony\Component\CssSelector\Parser\Token;
-
-/**
- * Represents a "<selector>:<name>(<arguments>)" node.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class FunctionNode extends AbstractNode
-{
-    /**
-     * @var NodeInterface
-     */
-    private $selector;
-
-    /**
-     * @var string
-     */
-    private $name;
-
-    /**
-     * @var Token[]
-     */
-    private $arguments;
-
-    /**
-     * @param NodeInterface $selector
-     * @param string        $name
-     * @param Token[]       $arguments
-     */
-    public function __construct(NodeInterface $selector, $name, array $arguments = array())
-    {
-        $this->selector = $selector;
-        $this->name = strtolower($name);
-        $this->arguments = $arguments;
-    }
-
-    /**
-     * @return NodeInterface
-     */
-    public function getSelector()
-    {
-        return $this->selector;
-    }
-
-    /**
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * @return Token[]
-     */
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSpecificity()
-    {
-        return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        $arguments = implode(', ', array_map(function (Token $token) {
-            return "'".$token->getValue()."'";
-        }, $this->arguments));
-
-        return sprintf('%s[%s:%s(%s)]', $this->getNodeName(), $this->selector, $this->name, $arguments ? '['.$arguments.']' : '');
-    }
-}
diff --git a/vendor/symfony/css-selector/Node/HashNode.php b/vendor/symfony/css-selector/Node/HashNode.php
deleted file mode 100644
index ddbe764..0000000
--- a/vendor/symfony/css-selector/Node/HashNode.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Represents a "<selector>#<id>" node.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class HashNode extends AbstractNode
-{
-    /**
-     * @var NodeInterface
-     */
-    private $selector;
-
-    /**
-     * @var string
-     */
-    private $id;
-
-    /**
-     * @param NodeInterface $selector
-     * @param string        $id
-     */
-    public function __construct(NodeInterface $selector, $id)
-    {
-        $this->selector = $selector;
-        $this->id = $id;
-    }
-
-    /**
-     * @return NodeInterface
-     */
-    public function getSelector()
-    {
-        return $this->selector;
-    }
-
-    /**
-     * @return string
-     */
-    public function getId()
-    {
-        return $this->id;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSpecificity()
-    {
-        return $this->selector->getSpecificity()->plus(new Specificity(1, 0, 0));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        return sprintf('%s[%s#%s]', $this->getNodeName(), $this->selector, $this->id);
-    }
-}
diff --git a/vendor/symfony/css-selector/Node/NegationNode.php b/vendor/symfony/css-selector/Node/NegationNode.php
deleted file mode 100644
index 0fafb0a..0000000
--- a/vendor/symfony/css-selector/Node/NegationNode.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Represents a "<selector>:not(<identifier>)" node.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class NegationNode extends AbstractNode
-{
-    /**
-     * @var NodeInterface
-     */
-    private $selector;
-
-    /**
-     * @var NodeInterface
-     */
-    private $subSelector;
-
-    /**
-     * @param NodeInterface $selector
-     * @param NodeInterface $subSelector
-     */
-    public function __construct(NodeInterface $selector, NodeInterface $subSelector)
-    {
-        $this->selector = $selector;
-        $this->subSelector = $subSelector;
-    }
-
-    /**
-     * @return NodeInterface
-     */
-    public function getSelector()
-    {
-        return $this->selector;
-    }
-
-    /**
-     * @return NodeInterface
-     */
-    public function getSubSelector()
-    {
-        return $this->subSelector;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSpecificity()
-    {
-        return $this->selector->getSpecificity()->plus($this->subSelector->getSpecificity());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        return sprintf('%s[%s:not(%s)]', $this->getNodeName(), $this->selector, $this->subSelector);
-    }
-}
diff --git a/vendor/symfony/css-selector/Node/NodeInterface.php b/vendor/symfony/css-selector/Node/NodeInterface.php
deleted file mode 100644
index dd300e2..0000000
--- a/vendor/symfony/css-selector/Node/NodeInterface.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Interface for nodes.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-interface NodeInterface
-{
-    /**
-     * Returns node's name.
-     *
-     * @return string
-     */
-    public function getNodeName();
-
-    /**
-     * Returns node's specificity.
-     *
-     * @return Specificity
-     */
-    public function getSpecificity();
-
-    /**
-     * Returns node's string representation.
-     *
-     * @return string
-     */
-    public function __toString();
-}
diff --git a/vendor/symfony/css-selector/Node/PseudoNode.php b/vendor/symfony/css-selector/Node/PseudoNode.php
deleted file mode 100644
index 0e413ad..0000000
--- a/vendor/symfony/css-selector/Node/PseudoNode.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Represents a "<selector>:<identifier>" node.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class PseudoNode extends AbstractNode
-{
-    /**
-     * @var NodeInterface
-     */
-    private $selector;
-
-    /**
-     * @var string
-     */
-    private $identifier;
-
-    /**
-     * @param NodeInterface $selector
-     * @param string        $identifier
-     */
-    public function __construct(NodeInterface $selector, $identifier)
-    {
-        $this->selector = $selector;
-        $this->identifier = strtolower($identifier);
-    }
-
-    /**
-     * @return NodeInterface
-     */
-    public function getSelector()
-    {
-        return $this->selector;
-    }
-
-    /**
-     * @return string
-     */
-    public function getIdentifier()
-    {
-        return $this->identifier;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSpecificity()
-    {
-        return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        return sprintf('%s[%s:%s]', $this->getNodeName(), $this->selector, $this->identifier);
-    }
-}
diff --git a/vendor/symfony/css-selector/Node/SelectorNode.php b/vendor/symfony/css-selector/Node/SelectorNode.php
deleted file mode 100644
index 4958da5..0000000
--- a/vendor/symfony/css-selector/Node/SelectorNode.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Represents a "<selector>(::|:)<pseudoElement>" node.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class SelectorNode extends AbstractNode
-{
-    /**
-     * @var NodeInterface
-     */
-    private $tree;
-
-    /**
-     * @var null|string
-     */
-    private $pseudoElement;
-
-    /**
-     * @param NodeInterface $tree
-     * @param null|string   $pseudoElement
-     */
-    public function __construct(NodeInterface $tree, $pseudoElement = null)
-    {
-        $this->tree = $tree;
-        $this->pseudoElement = $pseudoElement ? strtolower($pseudoElement) : null;
-    }
-
-    /**
-     * @return NodeInterface
-     */
-    public function getTree()
-    {
-        return $this->tree;
-    }
-
-    /**
-     * @return null|string
-     */
-    public function getPseudoElement()
-    {
-        return $this->pseudoElement;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSpecificity()
-    {
-        return $this->tree->getSpecificity()->plus(new Specificity(0, 0, $this->pseudoElement ? 1 : 0));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        return sprintf('%s[%s%s]', $this->getNodeName(), $this->tree, $this->pseudoElement ? '::'.$this->pseudoElement : '');
-    }
-}
diff --git a/vendor/symfony/css-selector/Node/Specificity.php b/vendor/symfony/css-selector/Node/Specificity.php
deleted file mode 100644
index 0ce0c3f..0000000
--- a/vendor/symfony/css-selector/Node/Specificity.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?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\CssSelector\Node;
-
-/**
- * Represents a node specificity.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @see http://www.w3.org/TR/selectors/#specificity
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class Specificity
-{
-    const A_FACTOR = 100;
-    const B_FACTOR = 10;
-    const C_FACTOR = 1;
-
-    /**
-     * @var int
-     */
-    private $a;
-
-    /**
-     * @var int
-     */
-    private $b;
-
-    /**
-     * @var int
-     */
-    private $c;
-
-    /**
-     * Constructor.
-     *
-     * @param int $a
-     * @param int $b
-     * @param int $c
-     */
-    public function __construct($a, $b, $c)
-    {
-        $this->a = $a;
-        $this->b = $b;
-        $this->c = $c;
-    }
-
-    /**
-     * @param Specificity $specificity
-     *
-     * @return Specificity
-     */
-    public function plus(Specificity $specificity)
-    {
-        return new self($this->a + $specificity->a, $this->b + $specificity->b, $this->c + $specificity->c);
-    }
-
-    /**
-     * Returns global specificity value.
-     *
-     * @return int
-     */
-    public function getValue()
-    {
-        return $this->a * self::A_FACTOR + $this->b * self::B_FACTOR + $this->c * self::C_FACTOR;
-    }
-
-    /**
-     * Returns -1 if the object specificity is lower than the argument,
-     * 0 if they are equal, and 1 if the argument is lower.
-     *
-     * @param Specificity $specificity
-     *
-     * @return int
-     */
-    public function compareTo(Specificity $specificity)
-    {
-        if ($this->a !== $specificity->a) {
-            return $this->a > $specificity->a ? 1 : -1;
-        }
-
-        if ($this->b !== $specificity->b) {
-            return $this->b > $specificity->b ? 1 : -1;
-        }
-
-        if ($this->c !== $specificity->c) {
-            return $this->c > $specificity->c ? 1 : -1;
-        }
-
-        return 0;
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Handler/CommentHandler.php b/vendor/symfony/css-selector/Parser/Handler/CommentHandler.php
deleted file mode 100644
index f480776..0000000
--- a/vendor/symfony/css-selector/Parser/Handler/CommentHandler.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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\CssSelector\Parser\Handler;
-
-use Symfony\Component\CssSelector\Parser\Reader;
-use Symfony\Component\CssSelector\Parser\TokenStream;
-
-/**
- * CSS selector comment handler.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class CommentHandler implements HandlerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Reader $reader, TokenStream $stream)
-    {
-        if ('/*' !== $reader->getSubstring(2)) {
-            return false;
-        }
-
-        $offset = $reader->getOffset('*/');
-
-        if (false === $offset) {
-            $reader->moveToEnd();
-        } else {
-            $reader->moveForward($offset + 2);
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Handler/HandlerInterface.php b/vendor/symfony/css-selector/Parser/Handler/HandlerInterface.php
deleted file mode 100644
index 049ddd3..0000000
--- a/vendor/symfony/css-selector/Parser/Handler/HandlerInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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\CssSelector\Parser\Handler;
-
-use Symfony\Component\CssSelector\Parser\Reader;
-use Symfony\Component\CssSelector\Parser\TokenStream;
-
-/**
- * CSS selector handler interface.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-interface HandlerInterface
-{
-    /**
-     * @param Reader      $reader
-     * @param TokenStream $stream
-     *
-     * @return bool
-     */
-    public function handle(Reader $reader, TokenStream $stream);
-}
diff --git a/vendor/symfony/css-selector/Parser/Handler/HashHandler.php b/vendor/symfony/css-selector/Parser/Handler/HashHandler.php
deleted file mode 100644
index b144223..0000000
--- a/vendor/symfony/css-selector/Parser/Handler/HashHandler.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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\CssSelector\Parser\Handler;
-
-use Symfony\Component\CssSelector\Parser\Reader;
-use Symfony\Component\CssSelector\Parser\Token;
-use Symfony\Component\CssSelector\Parser\TokenStream;
-use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerEscaping;
-use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns;
-
-/**
- * CSS selector comment handler.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class HashHandler implements HandlerInterface
-{
-    /**
-     * @var TokenizerPatterns
-     */
-    private $patterns;
-
-    /**
-     * @var TokenizerEscaping
-     */
-    private $escaping;
-
-    /**
-     * @param TokenizerPatterns $patterns
-     * @param TokenizerEscaping $escaping
-     */
-    public function __construct(TokenizerPatterns $patterns, TokenizerEscaping $escaping)
-    {
-        $this->patterns = $patterns;
-        $this->escaping = $escaping;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Reader $reader, TokenStream $stream)
-    {
-        $match = $reader->findPattern($this->patterns->getHashPattern());
-
-        if (!$match) {
-            return false;
-        }
-
-        $value = $this->escaping->escapeUnicode($match[1]);
-        $stream->push(new Token(Token::TYPE_HASH, $value, $reader->getPosition()));
-        $reader->moveForward(strlen($match[0]));
-
-        return true;
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Handler/IdentifierHandler.php b/vendor/symfony/css-selector/Parser/Handler/IdentifierHandler.php
deleted file mode 100644
index 86739ea..0000000
--- a/vendor/symfony/css-selector/Parser/Handler/IdentifierHandler.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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\CssSelector\Parser\Handler;
-
-use Symfony\Component\CssSelector\Parser\Reader;
-use Symfony\Component\CssSelector\Parser\Token;
-use Symfony\Component\CssSelector\Parser\TokenStream;
-use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerEscaping;
-use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns;
-
-/**
- * CSS selector comment handler.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class IdentifierHandler implements HandlerInterface
-{
-    /**
-     * @var TokenizerPatterns
-     */
-    private $patterns;
-
-    /**
-     * @var TokenizerEscaping
-     */
-    private $escaping;
-
-    /**
-     * @param TokenizerPatterns $patterns
-     * @param TokenizerEscaping $escaping
-     */
-    public function __construct(TokenizerPatterns $patterns, TokenizerEscaping $escaping)
-    {
-        $this->patterns = $patterns;
-        $this->escaping = $escaping;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Reader $reader, TokenStream $stream)
-    {
-        $match = $reader->findPattern($this->patterns->getIdentifierPattern());
-
-        if (!$match) {
-            return false;
-        }
-
-        $value = $this->escaping->escapeUnicode($match[0]);
-        $stream->push(new Token(Token::TYPE_IDENTIFIER, $value, $reader->getPosition()));
-        $reader->moveForward(strlen($match[0]));
-
-        return true;
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Handler/NumberHandler.php b/vendor/symfony/css-selector/Parser/Handler/NumberHandler.php
deleted file mode 100644
index 97a9387..0000000
--- a/vendor/symfony/css-selector/Parser/Handler/NumberHandler.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\CssSelector\Parser\Handler;
-
-use Symfony\Component\CssSelector\Parser\Reader;
-use Symfony\Component\CssSelector\Parser\Token;
-use Symfony\Component\CssSelector\Parser\TokenStream;
-use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns;
-
-/**
- * CSS selector comment handler.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class NumberHandler implements HandlerInterface
-{
-    /**
-     * @var TokenizerPatterns
-     */
-    private $patterns;
-
-    /**
-     * @param TokenizerPatterns $patterns
-     */
-    public function __construct(TokenizerPatterns $patterns)
-    {
-        $this->patterns = $patterns;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Reader $reader, TokenStream $stream)
-    {
-        $match = $reader->findPattern($this->patterns->getNumberPattern());
-
-        if (!$match) {
-            return false;
-        }
-
-        $stream->push(new Token(Token::TYPE_NUMBER, $match[0], $reader->getPosition()));
-        $reader->moveForward(strlen($match[0]));
-
-        return true;
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Handler/StringHandler.php b/vendor/symfony/css-selector/Parser/Handler/StringHandler.php
deleted file mode 100644
index 9f7a594..0000000
--- a/vendor/symfony/css-selector/Parser/Handler/StringHandler.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?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\CssSelector\Parser\Handler;
-
-use Symfony\Component\CssSelector\Exception\InternalErrorException;
-use Symfony\Component\CssSelector\Exception\SyntaxErrorException;
-use Symfony\Component\CssSelector\Parser\Reader;
-use Symfony\Component\CssSelector\Parser\Token;
-use Symfony\Component\CssSelector\Parser\TokenStream;
-use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerEscaping;
-use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns;
-
-/**
- * CSS selector comment handler.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class StringHandler implements HandlerInterface
-{
-    /**
-     * @var TokenizerPatterns
-     */
-    private $patterns;
-
-    /**
-     * @var TokenizerEscaping
-     */
-    private $escaping;
-
-    /**
-     * @param TokenizerPatterns $patterns
-     * @param TokenizerEscaping $escaping
-     */
-    public function __construct(TokenizerPatterns $patterns, TokenizerEscaping $escaping)
-    {
-        $this->patterns = $patterns;
-        $this->escaping = $escaping;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Reader $reader, TokenStream $stream)
-    {
-        $quote = $reader->getSubstring(1);
-
-        if (!in_array($quote, array("'", '"'))) {
-            return false;
-        }
-
-        $reader->moveForward(1);
-        $match = $reader->findPattern($this->patterns->getQuotedStringPattern($quote));
-
-        if (!$match) {
-            throw new InternalErrorException(sprintf('Should have found at least an empty match at %s.', $reader->getPosition()));
-        }
-
-        // check unclosed strings
-        if (strlen($match[0]) === $reader->getRemainingLength()) {
-            throw SyntaxErrorException::unclosedString($reader->getPosition() - 1);
-        }
-
-        // check quotes pairs validity
-        if ($quote !== $reader->getSubstring(1, strlen($match[0]))) {
-            throw SyntaxErrorException::unclosedString($reader->getPosition() - 1);
-        }
-
-        $string = $this->escaping->escapeUnicodeAndNewLine($match[0]);
-        $stream->push(new Token(Token::TYPE_STRING, $string, $reader->getPosition()));
-        $reader->moveForward(strlen($match[0]) + 1);
-
-        return true;
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Handler/WhitespaceHandler.php b/vendor/symfony/css-selector/Parser/Handler/WhitespaceHandler.php
deleted file mode 100644
index 234bbd8..0000000
--- a/vendor/symfony/css-selector/Parser/Handler/WhitespaceHandler.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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\CssSelector\Parser\Handler;
-
-use Symfony\Component\CssSelector\Parser\Reader;
-use Symfony\Component\CssSelector\Parser\Token;
-use Symfony\Component\CssSelector\Parser\TokenStream;
-
-/**
- * CSS selector whitespace handler.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class WhitespaceHandler implements HandlerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Reader $reader, TokenStream $stream)
-    {
-        $match = $reader->findPattern('~^[ \t\r\n\f]+~');
-
-        if (false === $match) {
-            return false;
-        }
-
-        $stream->push(new Token(Token::TYPE_WHITESPACE, $match[0], $reader->getPosition()));
-        $reader->moveForward(strlen($match[0]));
-
-        return true;
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Parser.php b/vendor/symfony/css-selector/Parser/Parser.php
deleted file mode 100644
index 9625e3e..0000000
--- a/vendor/symfony/css-selector/Parser/Parser.php
+++ /dev/null
@@ -1,399 +0,0 @@
-<?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\CssSelector\Parser;
-
-use Symfony\Component\CssSelector\Exception\SyntaxErrorException;
-use Symfony\Component\CssSelector\Node;
-use Symfony\Component\CssSelector\Parser\Tokenizer\Tokenizer;
-
-/**
- * CSS selector parser.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class Parser implements ParserInterface
-{
-    /**
-     * @var Tokenizer
-     */
-    private $tokenizer;
-
-    /**
-     * Constructor.
-     *
-     * @param null|Tokenizer $tokenizer
-     */
-    public function __construct(Tokenizer $tokenizer = null)
-    {
-        $this->tokenizer = $tokenizer ?: new Tokenizer();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function parse($source)
-    {
-        $reader = new Reader($source);
-        $stream = $this->tokenizer->tokenize($reader);
-
-        return $this->parseSelectorList($stream);
-    }
-
-    /**
-     * Parses the arguments for ":nth-child()" and friends.
-     *
-     * @param Token[] $tokens
-     *
-     * @throws SyntaxErrorException
-     *
-     * @return array
-     */
-    public static function parseSeries(array $tokens)
-    {
-        foreach ($tokens as $token) {
-            if ($token->isString()) {
-                throw SyntaxErrorException::stringAsFunctionArgument();
-            }
-        }
-
-        $joined = trim(implode('', array_map(function (Token $token) {
-            return $token->getValue();
-        }, $tokens)));
-
-        $int = function ($string) {
-            if (!is_numeric($string)) {
-                throw SyntaxErrorException::stringAsFunctionArgument();
-            }
-
-            return (int) $string;
-        };
-
-        switch (true) {
-            case 'odd' === $joined:
-                return array(2, 1);
-            case 'even' === $joined:
-                return array(2, 0);
-            case 'n' === $joined:
-                return array(1, 0);
-            case false === strpos($joined, 'n'):
-                return array(0, $int($joined));
-        }
-
-        $split = explode('n', $joined);
-        $first = isset($split[0]) ? $split[0] : null;
-
-        return array(
-            $first ? ('-' === $first || '+' === $first ? $int($first.'1') : $int($first)) : 1,
-            isset($split[1]) && $split[1] ? $int($split[1]) : 0,
-        );
-    }
-
-    /**
-     * Parses selector nodes.
-     *
-     * @param TokenStream $stream
-     *
-     * @return array
-     */
-    private function parseSelectorList(TokenStream $stream)
-    {
-        $stream->skipWhitespace();
-        $selectors = array();
-
-        while (true) {
-            $selectors[] = $this->parserSelectorNode($stream);
-
-            if ($stream->getPeek()->isDelimiter(array(','))) {
-                $stream->getNext();
-                $stream->skipWhitespace();
-            } else {
-                break;
-            }
-        }
-
-        return $selectors;
-    }
-
-    /**
-     * Parses next selector or combined node.
-     *
-     * @param TokenStream $stream
-     *
-     * @throws SyntaxErrorException
-     *
-     * @return Node\SelectorNode
-     */
-    private function parserSelectorNode(TokenStream $stream)
-    {
-        list($result, $pseudoElement) = $this->parseSimpleSelector($stream);
-
-        while (true) {
-            $stream->skipWhitespace();
-            $peek = $stream->getPeek();
-
-            if ($peek->isFileEnd() || $peek->isDelimiter(array(','))) {
-                break;
-            }
-
-            if (null !== $pseudoElement) {
-                throw SyntaxErrorException::pseudoElementFound($pseudoElement, 'not at the end of a selector');
-            }
-
-            if ($peek->isDelimiter(array('+', '>', '~'))) {
-                $combinator = $stream->getNext()->getValue();
-                $stream->skipWhitespace();
-            } else {
-                $combinator = ' ';
-            }
-
-            list($nextSelector, $pseudoElement) = $this->parseSimpleSelector($stream);
-            $result = new Node\CombinedSelectorNode($result, $combinator, $nextSelector);
-        }
-
-        return new Node\SelectorNode($result, $pseudoElement);
-    }
-
-    /**
-     * Parses next simple node (hash, class, pseudo, negation).
-     *
-     * @param TokenStream $stream
-     * @param bool        $insideNegation
-     *
-     * @throws SyntaxErrorException
-     *
-     * @return array
-     */
-    private function parseSimpleSelector(TokenStream $stream, $insideNegation = false)
-    {
-        $stream->skipWhitespace();
-
-        $selectorStart = count($stream->getUsed());
-        $result = $this->parseElementNode($stream);
-        $pseudoElement = null;
-
-        while (true) {
-            $peek = $stream->getPeek();
-            if ($peek->isWhitespace()
-                || $peek->isFileEnd()
-                || $peek->isDelimiter(array(',', '+', '>', '~'))
-                || ($insideNegation && $peek->isDelimiter(array(')')))
-            ) {
-                break;
-            }
-
-            if (null !== $pseudoElement) {
-                throw SyntaxErrorException::pseudoElementFound($pseudoElement, 'not at the end of a selector');
-            }
-
-            if ($peek->isHash()) {
-                $result = new Node\HashNode($result, $stream->getNext()->getValue());
-            } elseif ($peek->isDelimiter(array('.'))) {
-                $stream->getNext();
-                $result = new Node\ClassNode($result, $stream->getNextIdentifier());
-            } elseif ($peek->isDelimiter(array('['))) {
-                $stream->getNext();
-                $result = $this->parseAttributeNode($result, $stream);
-            } elseif ($peek->isDelimiter(array(':'))) {
-                $stream->getNext();
-
-                if ($stream->getPeek()->isDelimiter(array(':'))) {
-                    $stream->getNext();
-                    $pseudoElement = $stream->getNextIdentifier();
-
-                    continue;
-                }
-
-                $identifier = $stream->getNextIdentifier();
-                if (in_array(strtolower($identifier), array('first-line', 'first-letter', 'before', 'after'))) {
-                    // Special case: CSS 2.1 pseudo-elements can have a single ':'.
-                    // Any new pseudo-element must have two.
-                    $pseudoElement = $identifier;
-
-                    continue;
-                }
-
-                if (!$stream->getPeek()->isDelimiter(array('('))) {
-                    $result = new Node\PseudoNode($result, $identifier);
-
-                    continue;
-                }
-
-                $stream->getNext();
-                $stream->skipWhitespace();
-
-                if ('not' === strtolower($identifier)) {
-                    if ($insideNegation) {
-                        throw SyntaxErrorException::nestedNot();
-                    }
-
-                    list($argument, $argumentPseudoElement) = $this->parseSimpleSelector($stream, true);
-                    $next = $stream->getNext();
-
-                    if (null !== $argumentPseudoElement) {
-                        throw SyntaxErrorException::pseudoElementFound($argumentPseudoElement, 'inside ::not()');
-                    }
-
-                    if (!$next->isDelimiter(array(')'))) {
-                        throw SyntaxErrorException::unexpectedToken('")"', $next);
-                    }
-
-                    $result = new Node\NegationNode($result, $argument);
-                } else {
-                    $arguments = array();
-                    $next = null;
-
-                    while (true) {
-                        $stream->skipWhitespace();
-                        $next = $stream->getNext();
-
-                        if ($next->isIdentifier()
-                            || $next->isString()
-                            || $next->isNumber()
-                            || $next->isDelimiter(array('+', '-'))
-                        ) {
-                            $arguments[] = $next;
-                        } elseif ($next->isDelimiter(array(')'))) {
-                            break;
-                        } else {
-                            throw SyntaxErrorException::unexpectedToken('an argument', $next);
-                        }
-                    }
-
-                    if (empty($arguments)) {
-                        throw SyntaxErrorException::unexpectedToken('at least one argument', $next);
-                    }
-
-                    $result = new Node\FunctionNode($result, $identifier, $arguments);
-                }
-            } else {
-                throw SyntaxErrorException::unexpectedToken('selector', $peek);
-            }
-        }
-
-        if (count($stream->getUsed()) === $selectorStart) {
-            throw SyntaxErrorException::unexpectedToken('selector', $stream->getPeek());
-        }
-
-        return array($result, $pseudoElement);
-    }
-
-    /**
-     * Parses next element node.
-     *
-     * @param TokenStream $stream
-     *
-     * @return Node\ElementNode
-     */
-    private function parseElementNode(TokenStream $stream)
-    {
-        $peek = $stream->getPeek();
-
-        if ($peek->isIdentifier() || $peek->isDelimiter(array('*'))) {
-            if ($peek->isIdentifier()) {
-                $namespace = $stream->getNext()->getValue();
-            } else {
-                $stream->getNext();
-                $namespace = null;
-            }
-
-            if ($stream->getPeek()->isDelimiter(array('|'))) {
-                $stream->getNext();
-                $element = $stream->getNextIdentifierOrStar();
-            } else {
-                $element = $namespace;
-                $namespace = null;
-            }
-        } else {
-            $element = $namespace = null;
-        }
-
-        return new Node\ElementNode($namespace, $element);
-    }
-
-    /**
-     * Parses next attribute node.
-     *
-     * @param Node\NodeInterface $selector
-     * @param TokenStream        $stream
-     *
-     * @throws SyntaxErrorException
-     *
-     * @return Node\AttributeNode
-     */
-    private function parseAttributeNode(Node\NodeInterface $selector, TokenStream $stream)
-    {
-        $stream->skipWhitespace();
-        $attribute = $stream->getNextIdentifierOrStar();
-
-        if (null === $attribute && !$stream->getPeek()->isDelimiter(array('|'))) {
-            throw SyntaxErrorException::unexpectedToken('"|"', $stream->getPeek());
-        }
-
-        if ($stream->getPeek()->isDelimiter(array('|'))) {
-            $stream->getNext();
-
-            if ($stream->getPeek()->isDelimiter(array('='))) {
-                $namespace = null;
-                $stream->getNext();
-                $operator = '|=';
-            } else {
-                $namespace = $attribute;
-                $attribute = $stream->getNextIdentifier();
-                $operator = null;
-            }
-        } else {
-            $namespace = $operator = null;
-        }
-
-        if (null === $operator) {
-            $stream->skipWhitespace();
-            $next = $stream->getNext();
-
-            if ($next->isDelimiter(array(']'))) {
-                return new Node\AttributeNode($selector, $namespace, $attribute, 'exists', null);
-            } elseif ($next->isDelimiter(array('='))) {
-                $operator = '=';
-            } elseif ($next->isDelimiter(array('^', '$', '*', '~', '|', '!'))
-                && $stream->getPeek()->isDelimiter(array('='))
-            ) {
-                $operator = $next->getValue().'=';
-                $stream->getNext();
-            } else {
-                throw SyntaxErrorException::unexpectedToken('operator', $next);
-            }
-        }
-
-        $stream->skipWhitespace();
-        $value = $stream->getNext();
-
-        if ($value->isNumber()) {
-            // if the value is a number, it's casted into a string
-            $value = new Token(Token::TYPE_STRING, (string) $value->getValue(), $value->getPosition());
-        }
-
-        if (!($value->isIdentifier() || $value->isString())) {
-            throw SyntaxErrorException::unexpectedToken('string or identifier', $value);
-        }
-
-        $stream->skipWhitespace();
-        $next = $stream->getNext();
-
-        if (!$next->isDelimiter(array(']'))) {
-            throw SyntaxErrorException::unexpectedToken('"]"', $next);
-        }
-
-        return new Node\AttributeNode($selector, $namespace, $attribute, $operator, $value->getValue());
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/ParserInterface.php b/vendor/symfony/css-selector/Parser/ParserInterface.php
deleted file mode 100644
index 3b43a52..0000000
--- a/vendor/symfony/css-selector/Parser/ParserInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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\CssSelector\Parser;
-
-use Symfony\Component\CssSelector\Node\SelectorNode;
-
-/**
- * CSS selector parser interface.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-interface ParserInterface
-{
-    /**
-     * Parses given selector source into an array of tokens.
-     *
-     * @param string $source
-     *
-     * @return SelectorNode[]
-     */
-    public function parse($source);
-}
diff --git a/vendor/symfony/css-selector/Parser/Reader.php b/vendor/symfony/css-selector/Parser/Reader.php
deleted file mode 100644
index ba2a7f0..0000000
--- a/vendor/symfony/css-selector/Parser/Reader.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?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\CssSelector\Parser;
-
-/**
- * CSS selector reader.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class Reader
-{
-    /**
-     * @var string
-     */
-    private $source;
-
-    /**
-     * @var int
-     */
-    private $length;
-
-    /**
-     * @var int
-     */
-    private $position = 0;
-
-    /**
-     * @param string $source
-     */
-    public function __construct($source)
-    {
-        $this->source = $source;
-        $this->length = strlen($source);
-    }
-
-    /**
-     * @return bool
-     */
-    public function isEOF()
-    {
-        return $this->position >= $this->length;
-    }
-
-    /**
-     * @return int
-     */
-    public function getPosition()
-    {
-        return $this->position;
-    }
-
-    /**
-     * @return int
-     */
-    public function getRemainingLength()
-    {
-        return $this->length - $this->position;
-    }
-
-    /**
-     * @param int $length
-     * @param int $offset
-     *
-     * @return string
-     */
-    public function getSubstring($length, $offset = 0)
-    {
-        return substr($this->source, $this->position + $offset, $length);
-    }
-
-    /**
-     * @param string $string
-     *
-     * @return int
-     */
-    public function getOffset($string)
-    {
-        $position = strpos($this->source, $string, $this->position);
-
-        return false === $position ? false : $position - $this->position;
-    }
-
-    /**
-     * @param string $pattern
-     *
-     * @return bool
-     */
-    public function findPattern($pattern)
-    {
-        $source = substr($this->source, $this->position);
-
-        if (preg_match($pattern, $source, $matches)) {
-            return $matches;
-        }
-
-        return false;
-    }
-
-    /**
-     * @param int $length
-     */
-    public function moveForward($length)
-    {
-        $this->position += $length;
-    }
-
-    /**
-     */
-    public function moveToEnd()
-    {
-        $this->position = $this->length;
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Shortcut/ClassParser.php b/vendor/symfony/css-selector/Parser/Shortcut/ClassParser.php
deleted file mode 100644
index 83f8d13..0000000
--- a/vendor/symfony/css-selector/Parser/Shortcut/ClassParser.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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\CssSelector\Parser\Shortcut;
-
-use Symfony\Component\CssSelector\Node\ClassNode;
-use Symfony\Component\CssSelector\Node\ElementNode;
-use Symfony\Component\CssSelector\Node\SelectorNode;
-use Symfony\Component\CssSelector\Parser\ParserInterface;
-
-/**
- * CSS selector class parser shortcut.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class ClassParser implements ParserInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function parse($source)
-    {
-        // Matches an optional namespace, optional element, and required class
-        // $source = 'test|input.ab6bd_field';
-        // $matches = array (size=4)
-        //     0 => string 'test|input.ab6bd_field' (length=22)
-        //     1 => string 'test' (length=4)
-        //     2 => string 'input' (length=5)
-        //     3 => string 'ab6bd_field' (length=11)
-        if (preg_match('/^(?:([a-z]++)\|)?+([\w-]++|\*)?+\.([\w-]++)$/i', trim($source), $matches)) {
-            return array(
-                new SelectorNode(new ClassNode(new ElementNode($matches[1] ?: null, $matches[2] ?: null), $matches[3])),
-            );
-        }
-
-        return array();
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Shortcut/ElementParser.php b/vendor/symfony/css-selector/Parser/Shortcut/ElementParser.php
deleted file mode 100644
index 00e4435..0000000
--- a/vendor/symfony/css-selector/Parser/Shortcut/ElementParser.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\CssSelector\Parser\Shortcut;
-
-use Symfony\Component\CssSelector\Node\ElementNode;
-use Symfony\Component\CssSelector\Node\SelectorNode;
-use Symfony\Component\CssSelector\Parser\ParserInterface;
-
-/**
- * CSS selector element parser shortcut.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class ElementParser implements ParserInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function parse($source)
-    {
-        // Matches an optional namespace, required element or `*`
-        // $source = 'testns|testel';
-        // $matches = array (size=3)
-        //     0 => string 'testns|testel' (length=13)
-        //     1 => string 'testns' (length=6)
-        //     2 => string 'testel' (length=6)
-        if (preg_match('/^(?:([a-z]++)\|)?([\w-]++|\*)$/i', trim($source), $matches)) {
-            return array(new SelectorNode(new ElementNode($matches[1] ?: null, $matches[2])));
-        }
-
-        return array();
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php b/vendor/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php
deleted file mode 100644
index 98a08fd..0000000
--- a/vendor/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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\CssSelector\Parser\Shortcut;
-
-use Symfony\Component\CssSelector\Node\ElementNode;
-use Symfony\Component\CssSelector\Node\SelectorNode;
-use Symfony\Component\CssSelector\Parser\ParserInterface;
-
-/**
- * CSS selector class parser shortcut.
- *
- * This shortcut ensure compatibility with previous version.
- * - The parser fails to parse an empty string.
- * - In the previous version, an empty string matches each tags.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class EmptyStringParser implements ParserInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function parse($source)
-    {
-        // Matches an empty string
-        if ($source == '') {
-            return array(new SelectorNode(new ElementNode(null, '*')));
-        }
-
-        return array();
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Shortcut/HashParser.php b/vendor/symfony/css-selector/Parser/Shortcut/HashParser.php
deleted file mode 100644
index 3dbad79..0000000
--- a/vendor/symfony/css-selector/Parser/Shortcut/HashParser.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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\CssSelector\Parser\Shortcut;
-
-use Symfony\Component\CssSelector\Node\ElementNode;
-use Symfony\Component\CssSelector\Node\HashNode;
-use Symfony\Component\CssSelector\Node\SelectorNode;
-use Symfony\Component\CssSelector\Parser\ParserInterface;
-
-/**
- * CSS selector hash parser shortcut.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class HashParser implements ParserInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function parse($source)
-    {
-        // Matches an optional namespace, optional element, and required id
-        // $source = 'test|input#ab6bd_field';
-        // $matches = array (size=4)
-        //     0 => string 'test|input#ab6bd_field' (length=22)
-        //     1 => string 'test' (length=4)
-        //     2 => string 'input' (length=5)
-        //     3 => string 'ab6bd_field' (length=11)
-        if (preg_match('/^(?:([a-z]++)\|)?+([\w-]++|\*)?+#([\w-]++)$/i', trim($source), $matches)) {
-            return array(
-                new SelectorNode(new HashNode(new ElementNode($matches[1] ?: null, $matches[2] ?: null), $matches[3])),
-            );
-        }
-
-        return array();
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Token.php b/vendor/symfony/css-selector/Parser/Token.php
deleted file mode 100644
index 6f7586f..0000000
--- a/vendor/symfony/css-selector/Parser/Token.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?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\CssSelector\Parser;
-
-/**
- * CSS selector token.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class Token
-{
-    const TYPE_FILE_END = 'eof';
-    const TYPE_DELIMITER = 'delimiter';
-    const TYPE_WHITESPACE = 'whitespace';
-    const TYPE_IDENTIFIER = 'identifier';
-    const TYPE_HASH = 'hash';
-    const TYPE_NUMBER = 'number';
-    const TYPE_STRING = 'string';
-
-    /**
-     * @var int
-     */
-    private $type;
-
-    /**
-     * @var string
-     */
-    private $value;
-
-    /**
-     * @var int
-     */
-    private $position;
-
-    /**
-     * @param int    $type
-     * @param string $value
-     * @param int    $position
-     */
-    public function __construct($type, $value, $position)
-    {
-        $this->type = $type;
-        $this->value = $value;
-        $this->position = $position;
-    }
-
-    /**
-     * @return int
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * @return string
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * @return int
-     */
-    public function getPosition()
-    {
-        return $this->position;
-    }
-
-    /**
-     * @return bool
-     */
-    public function isFileEnd()
-    {
-        return self::TYPE_FILE_END === $this->type;
-    }
-
-    /**
-     * @param array $values
-     *
-     * @return bool
-     */
-    public function isDelimiter(array $values = array())
-    {
-        if (self::TYPE_DELIMITER !== $this->type) {
-            return false;
-        }
-
-        if (empty($values)) {
-            return true;
-        }
-
-        return in_array($this->value, $values);
-    }
-
-    /**
-     * @return bool
-     */
-    public function isWhitespace()
-    {
-        return self::TYPE_WHITESPACE === $this->type;
-    }
-
-    /**
-     * @return bool
-     */
-    public function isIdentifier()
-    {
-        return self::TYPE_IDENTIFIER === $this->type;
-    }
-
-    /**
-     * @return bool
-     */
-    public function isHash()
-    {
-        return self::TYPE_HASH === $this->type;
-    }
-
-    /**
-     * @return bool
-     */
-    public function isNumber()
-    {
-        return self::TYPE_NUMBER === $this->type;
-    }
-
-    /**
-     * @return bool
-     */
-    public function isString()
-    {
-        return self::TYPE_STRING === $this->type;
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        if ($this->value) {
-            return sprintf('<%s "%s" at %s>', $this->type, $this->value, $this->position);
-        }
-
-        return sprintf('<%s at %s>', $this->type, $this->position);
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/TokenStream.php b/vendor/symfony/css-selector/Parser/TokenStream.php
deleted file mode 100644
index c0525d7..0000000
--- a/vendor/symfony/css-selector/Parser/TokenStream.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?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\CssSelector\Parser;
-
-use Symfony\Component\CssSelector\Exception\InternalErrorException;
-use Symfony\Component\CssSelector\Exception\SyntaxErrorException;
-
-/**
- * CSS selector token stream.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class TokenStream
-{
-    /**
-     * @var Token[]
-     */
-    private $tokens = array();
-
-    /**
-     * @var bool
-     */
-    private $frozen = false;
-
-    /**
-     * @var Token[]
-     */
-    private $used = array();
-
-    /**
-     * @var int
-     */
-    private $cursor = 0;
-
-    /**
-     * @var Token|null
-     */
-    private $peeked = null;
-
-    /**
-     * @var bool
-     */
-    private $peeking = false;
-
-    /**
-     * Pushes a token.
-     *
-     * @param Token $token
-     *
-     * @return TokenStream
-     */
-    public function push(Token $token)
-    {
-        $this->tokens[] = $token;
-
-        return $this;
-    }
-
-    /**
-     * Freezes stream.
-     *
-     * @return TokenStream
-     */
-    public function freeze()
-    {
-        $this->frozen = true;
-
-        return $this;
-    }
-
-    /**
-     * Returns next token.
-     *
-     * @throws InternalErrorException If there is no more token
-     *
-     * @return Token
-     */
-    public function getNext()
-    {
-        if ($this->peeking) {
-            $this->peeking = false;
-            $this->used[] = $this->peeked;
-
-            return $this->peeked;
-        }
-
-        if (!isset($this->tokens[$this->cursor])) {
-            throw new InternalErrorException('Unexpected token stream end.');
-        }
-
-        return $this->tokens[$this->cursor++];
-    }
-
-    /**
-     * Returns peeked token.
-     *
-     * @return Token
-     */
-    public function getPeek()
-    {
-        if (!$this->peeking) {
-            $this->peeked = $this->getNext();
-            $this->peeking = true;
-        }
-
-        return $this->peeked;
-    }
-
-    /**
-     * Returns used tokens.
-     *
-     * @return Token[]
-     */
-    public function getUsed()
-    {
-        return $this->used;
-    }
-
-    /**
-     * Returns nex identifier token.
-     *
-     * @throws SyntaxErrorException If next token is not an identifier
-     *
-     * @return string The identifier token value
-     */
-    public function getNextIdentifier()
-    {
-        $next = $this->getNext();
-
-        if (!$next->isIdentifier()) {
-            throw SyntaxErrorException::unexpectedToken('identifier', $next);
-        }
-
-        return $next->getValue();
-    }
-
-    /**
-     * Returns nex identifier or star delimiter token.
-     *
-     * @throws SyntaxErrorException If next token is not an identifier or a star delimiter
-     *
-     * @return null|string The identifier token value or null if star found
-     */
-    public function getNextIdentifierOrStar()
-    {
-        $next = $this->getNext();
-
-        if ($next->isIdentifier()) {
-            return $next->getValue();
-        }
-
-        if ($next->isDelimiter(array('*'))) {
-            return;
-        }
-
-        throw SyntaxErrorException::unexpectedToken('identifier or "*"', $next);
-    }
-
-    /**
-     * Skips next whitespace if any.
-     */
-    public function skipWhitespace()
-    {
-        $peek = $this->getPeek();
-
-        if ($peek->isWhitespace()) {
-            $this->getNext();
-        }
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Tokenizer/Tokenizer.php b/vendor/symfony/css-selector/Parser/Tokenizer/Tokenizer.php
deleted file mode 100644
index 79fa7b7..0000000
--- a/vendor/symfony/css-selector/Parser/Tokenizer/Tokenizer.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?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\CssSelector\Parser\Tokenizer;
-
-use Symfony\Component\CssSelector\Parser\Handler;
-use Symfony\Component\CssSelector\Parser\Reader;
-use Symfony\Component\CssSelector\Parser\Token;
-use Symfony\Component\CssSelector\Parser\TokenStream;
-
-/**
- * CSS selector tokenizer.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class Tokenizer
-{
-    /**
-     * @var Handler\HandlerInterface[]
-     */
-    private $handlers;
-
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {
-        $patterns = new TokenizerPatterns();
-        $escaping = new TokenizerEscaping($patterns);
-
-        $this->handlers = array(
-            new Handler\WhitespaceHandler(),
-            new Handler\IdentifierHandler($patterns, $escaping),
-            new Handler\HashHandler($patterns, $escaping),
-            new Handler\StringHandler($patterns, $escaping),
-            new Handler\NumberHandler($patterns),
-            new Handler\CommentHandler(),
-        );
-    }
-
-    /**
-     * Tokenize selector source code.
-     *
-     * @param Reader $reader
-     *
-     * @return TokenStream
-     */
-    public function tokenize(Reader $reader)
-    {
-        $stream = new TokenStream();
-
-        while (!$reader->isEOF()) {
-            foreach ($this->handlers as $handler) {
-                if ($handler->handle($reader, $stream)) {
-                    continue 2;
-                }
-            }
-
-            $stream->push(new Token(Token::TYPE_DELIMITER, $reader->getSubstring(1), $reader->getPosition()));
-            $reader->moveForward(1);
-        }
-
-        return $stream
-            ->push(new Token(Token::TYPE_FILE_END, null, $reader->getPosition()))
-            ->freeze();
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php b/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php
deleted file mode 100644
index bf5096b..0000000
--- a/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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\CssSelector\Parser\Tokenizer;
-
-/**
- * CSS selector tokenizer escaping applier.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class TokenizerEscaping
-{
-    /**
-     * @var TokenizerPatterns
-     */
-    private $patterns;
-
-    /**
-     * @param TokenizerPatterns $patterns
-     */
-    public function __construct(TokenizerPatterns $patterns)
-    {
-        $this->patterns = $patterns;
-    }
-
-    /**
-     * @param string $value
-     *
-     * @return string
-     */
-    public function escapeUnicode($value)
-    {
-        $value = $this->replaceUnicodeSequences($value);
-
-        return preg_replace($this->patterns->getSimpleEscapePattern(), '$1', $value);
-    }
-
-    /**
-     * @param string $value
-     *
-     * @return string
-     */
-    public function escapeUnicodeAndNewLine($value)
-    {
-        $value = preg_replace($this->patterns->getNewLineEscapePattern(), '', $value);
-
-        return $this->escapeUnicode($value);
-    }
-
-    /**
-     * @param string $value
-     *
-     * @return string
-     */
-    private function replaceUnicodeSequences($value)
-    {
-        return preg_replace_callback($this->patterns->getUnicodeEscapePattern(), function ($match) {
-            $c = hexdec($match[1]);
-
-            if (0x80 > $c %= 0x200000) {
-                return chr($c);
-            }
-            if (0x800 > $c) {
-                return chr(0xC0 | $c >> 6).chr(0x80 | $c & 0x3F);
-            }
-            if (0x10000 > $c) {
-                return chr(0xE0 | $c >> 12).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F);
-            }
-        }, $value);
-    }
-}
diff --git a/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php b/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php
deleted file mode 100644
index 326f020..0000000
--- a/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?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\CssSelector\Parser\Tokenizer;
-
-/**
- * CSS selector tokenizer patterns builder.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class TokenizerPatterns
-{
-    /**
-     * @var string
-     */
-    private $unicodeEscapePattern;
-
-    /**
-     * @var string
-     */
-    private $simpleEscapePattern;
-
-    /**
-     * @var string
-     */
-    private $newLineEscapePattern;
-
-    /**
-     * @var string
-     */
-    private $escapePattern;
-
-    /**
-     * @var string
-     */
-    private $stringEscapePattern;
-
-    /**
-     * @var string
-     */
-    private $nonAsciiPattern;
-
-    /**
-     * @var string
-     */
-    private $nmCharPattern;
-
-    /**
-     * @var string
-     */
-    private $nmStartPattern;
-
-    /**
-     * @var string
-     */
-    private $identifierPattern;
-
-    /**
-     * @var string
-     */
-    private $hashPattern;
-
-    /**
-     * @var string
-     */
-    private $numberPattern;
-
-    /**
-     * @var string
-     */
-    private $quotedStringPattern;
-
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {
-        $this->unicodeEscapePattern = '\\\\([0-9a-f]{1,6})(?:\r\n|[ \n\r\t\f])?';
-        $this->simpleEscapePattern = '\\\\(.)';
-        $this->newLineEscapePattern = '\\\\(?:\n|\r\n|\r|\f)';
-        $this->escapePattern = $this->unicodeEscapePattern.'|\\\\[^\n\r\f0-9a-f]';
-        $this->stringEscapePattern = $this->newLineEscapePattern.'|'.$this->escapePattern;
-        $this->nonAsciiPattern = '[^\x00-\x7F]';
-        $this->nmCharPattern = '[_a-z0-9-]|'.$this->escapePattern.'|'.$this->nonAsciiPattern;
-        $this->nmStartPattern = '[_a-z]|'.$this->escapePattern.'|'.$this->nonAsciiPattern;
-        $this->identifierPattern = '(?:'.$this->nmStartPattern.')(?:'.$this->nmCharPattern.')*';
-        $this->hashPattern = '#((?:'.$this->nmCharPattern.')+)';
-        $this->numberPattern = '[+-]?(?:[0-9]*\.[0-9]+|[0-9]+)';
-        $this->quotedStringPattern = '([^\n\r\f%s]|'.$this->stringEscapePattern.')*';
-    }
-
-    /**
-     * @return string
-     */
-    public function getNewLineEscapePattern()
-    {
-        return '~^'.$this->newLineEscapePattern.'~';
-    }
-
-    /**
-     * @return string
-     */
-    public function getSimpleEscapePattern()
-    {
-        return '~^'.$this->simpleEscapePattern.'~';
-    }
-
-    /**
-     * @return string
-     */
-    public function getUnicodeEscapePattern()
-    {
-        return '~^'.$this->unicodeEscapePattern.'~i';
-    }
-
-    /**
-     * @return string
-     */
-    public function getIdentifierPattern()
-    {
-        return '~^'.$this->identifierPattern.'~i';
-    }
-
-    /**
-     * @return string
-     */
-    public function getHashPattern()
-    {
-        return '~^'.$this->hashPattern.'~i';
-    }
-
-    /**
-     * @return string
-     */
-    public function getNumberPattern()
-    {
-        return '~^'.$this->numberPattern.'~';
-    }
-
-    /**
-     * @param string $quote
-     *
-     * @return string
-     */
-    public function getQuotedStringPattern($quote)
-    {
-        return '~^'.sprintf($this->quotedStringPattern, $quote).'~i';
-    }
-}
diff --git a/vendor/symfony/css-selector/README.md b/vendor/symfony/css-selector/README.md
deleted file mode 100644
index ffe6c89..0000000
--- a/vendor/symfony/css-selector/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-CssSelector Component
-=====================
-
-CssSelector converts CSS selectors to XPath expressions.
-
-The component only goal is to convert CSS selectors to their XPath
-equivalents:
-
-```php
-use Symfony\Component\CssSelector\CssSelector;
-
-print CssSelector::toXPath('div.item > h4 > a');
-```
-
-HTML and XML are different
---------------------------
-
-The `CssSelector` component comes with an `HTML` extension which is enabled by
-default. If you need to use this component with `XML` documents, you have to
-disable this `HTML` extension. That's because, `HTML` tag & attribute names
-are always lower-cased, but case-sensitive in `XML`:
-
-```php
-// disable `HTML` extension:
-CssSelector::disableHtmlExtension();
-
-// re-enable `HTML` extension:
-CssSelector::enableHtmlExtension();
-```
-
-When the `HTML` extension is enabled, tag names are lower-cased, attribute
-names are lower-cased, the following extra pseudo-classes are supported:
-`checked`, `link`, `disabled`, `enabled`, `selected`, `invalid`, `hover`,
-`visited`, and the `lang()` function is also added.
-
-Resources
----------
-
-This component is a port of the Python cssselect library
-[v0.7.1](https://github.com/SimonSapin/cssselect/releases/tag/v0.7.1),
-which is distributed under the BSD license.
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/CssSelector/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/css-selector/XPath/Extension/AbstractExtension.php b/vendor/symfony/css-selector/XPath/Extension/AbstractExtension.php
deleted file mode 100644
index c70609c..0000000
--- a/vendor/symfony/css-selector/XPath/Extension/AbstractExtension.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?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\CssSelector\XPath\Extension;
-
-/**
- * XPath expression translator abstract extension.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-abstract class AbstractExtension implements ExtensionInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getNodeTranslators()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCombinationTranslators()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctionTranslators()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPseudoClassTranslators()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getAttributeMatchingTranslators()
-    {
-        return array();
-    }
-}
diff --git a/vendor/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php b/vendor/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php
deleted file mode 100644
index cbe48c5..0000000
--- a/vendor/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php
+++ /dev/null
@@ -1,173 +0,0 @@
-<?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\CssSelector\XPath\Extension;
-
-use Symfony\Component\CssSelector\XPath\Translator;
-use Symfony\Component\CssSelector\XPath\XPathExpr;
-
-/**
- * XPath expression translator attribute extension.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class AttributeMatchingExtension extends AbstractExtension
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getAttributeMatchingTranslators()
-    {
-        return array(
-            'exists' => array($this, 'translateExists'),
-            '=' => array($this, 'translateEquals'),
-            '~=' => array($this, 'translateIncludes'),
-            '|=' => array($this, 'translateDashMatch'),
-            '^=' => array($this, 'translatePrefixMatch'),
-            '$=' => array($this, 'translateSuffixMatch'),
-            '*=' => array($this, 'translateSubstringMatch'),
-            '!=' => array($this, 'translateDifferent'),
-        );
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param string    $attribute
-     * @param string    $value
-     *
-     * @return XPathExpr
-     */
-    public function translateExists(XPathExpr $xpath, $attribute, $value)
-    {
-        return $xpath->addCondition($attribute);
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param string    $attribute
-     * @param string    $value
-     *
-     * @return XPathExpr
-     */
-    public function translateEquals(XPathExpr $xpath, $attribute, $value)
-    {
-        return $xpath->addCondition(sprintf('%s = %s', $attribute, Translator::getXpathLiteral($value)));
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param string    $attribute
-     * @param string    $value
-     *
-     * @return XPathExpr
-     */
-    public function translateIncludes(XPathExpr $xpath, $attribute, $value)
-    {
-        return $xpath->addCondition($value ? sprintf(
-            '%1$s and contains(concat(\' \', normalize-space(%1$s), \' \'), %2$s)',
-            $attribute,
-            Translator::getXpathLiteral(' '.$value.' ')
-        ) : '0');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param string    $attribute
-     * @param string    $value
-     *
-     * @return XPathExpr
-     */
-    public function translateDashMatch(XPathExpr $xpath, $attribute, $value)
-    {
-        return $xpath->addCondition(sprintf(
-            '%1$s and (%1$s = %2$s or starts-with(%1$s, %3$s))',
-            $attribute,
-            Translator::getXpathLiteral($value),
-            Translator::getXpathLiteral($value.'-')
-        ));
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param string    $attribute
-     * @param string    $value
-     *
-     * @return XPathExpr
-     */
-    public function translatePrefixMatch(XPathExpr $xpath, $attribute, $value)
-    {
-        return $xpath->addCondition($value ? sprintf(
-            '%1$s and starts-with(%1$s, %2$s)',
-            $attribute,
-            Translator::getXpathLiteral($value)
-        ) : '0');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param string    $attribute
-     * @param string    $value
-     *
-     * @return XPathExpr
-     */
-    public function translateSuffixMatch(XPathExpr $xpath, $attribute, $value)
-    {
-        return $xpath->addCondition($value ? sprintf(
-            '%1$s and substring(%1$s, string-length(%1$s)-%2$s) = %3$s',
-            $attribute,
-            strlen($value) - 1,
-            Translator::getXpathLiteral($value)
-        ) : '0');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param string    $attribute
-     * @param string    $value
-     *
-     * @return XPathExpr
-     */
-    public function translateSubstringMatch(XPathExpr $xpath, $attribute, $value)
-    {
-        return $xpath->addCondition($value ? sprintf(
-            '%1$s and contains(%1$s, %2$s)',
-            $attribute,
-            Translator::getXpathLiteral($value)
-        ) : '0');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param string    $attribute
-     * @param string    $value
-     *
-     * @return XPathExpr
-     */
-    public function translateDifferent(XPathExpr $xpath, $attribute, $value)
-    {
-        return $xpath->addCondition(sprintf(
-            $value ? 'not(%1$s) or %1$s != %2$s' : '%s != %s',
-            $attribute,
-            Translator::getXpathLiteral($value)
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'attribute-matching';
-    }
-}
diff --git a/vendor/symfony/css-selector/XPath/Extension/CombinationExtension.php b/vendor/symfony/css-selector/XPath/Extension/CombinationExtension.php
deleted file mode 100644
index 9ce018f..0000000
--- a/vendor/symfony/css-selector/XPath/Extension/CombinationExtension.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?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\CssSelector\XPath\Extension;
-
-use Symfony\Component\CssSelector\XPath\XPathExpr;
-
-/**
- * XPath expression translator combination extension.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class CombinationExtension extends AbstractExtension
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getCombinationTranslators()
-    {
-        return array(
-            ' ' => array($this, 'translateDescendant'),
-            '>' => array($this, 'translateChild'),
-            '+' => array($this, 'translateDirectAdjacent'),
-            '~' => array($this, 'translateIndirectAdjacent'),
-        );
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param XPathExpr $combinedXpath
-     *
-     * @return XPathExpr
-     */
-    public function translateDescendant(XPathExpr $xpath, XPathExpr $combinedXpath)
-    {
-        return $xpath->join('/descendant-or-self::*/', $combinedXpath);
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param XPathExpr $combinedXpath
-     *
-     * @return XPathExpr
-     */
-    public function translateChild(XPathExpr $xpath, XPathExpr $combinedXpath)
-    {
-        return $xpath->join('/', $combinedXpath);
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param XPathExpr $combinedXpath
-     *
-     * @return XPathExpr
-     */
-    public function translateDirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath)
-    {
-        return $xpath
-            ->join('/following-sibling::', $combinedXpath)
-            ->addNameTest()
-            ->addCondition('position() = 1');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param XPathExpr $combinedXpath
-     *
-     * @return XPathExpr
-     */
-    public function translateIndirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath)
-    {
-        return $xpath->join('/following-sibling::', $combinedXpath);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'combination';
-    }
-}
diff --git a/vendor/symfony/css-selector/XPath/Extension/ExtensionInterface.php b/vendor/symfony/css-selector/XPath/Extension/ExtensionInterface.php
deleted file mode 100644
index 9b47f24..0000000
--- a/vendor/symfony/css-selector/XPath/Extension/ExtensionInterface.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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\CssSelector\XPath\Extension;
-
-/**
- * XPath expression translator extension interface.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-interface ExtensionInterface
-{
-    /**
-     * Returns node translators.
-     *
-     * These callables will receive the node as first argument and the translator as second argument.
-     *
-     * @return callable[]
-     */
-    public function getNodeTranslators();
-
-    /**
-     * Returns combination translators.
-     *
-     * @return callable[]
-     */
-    public function getCombinationTranslators();
-
-    /**
-     * Returns function translators.
-     *
-     * @return callable[]
-     */
-    public function getFunctionTranslators();
-
-    /**
-     * Returns pseudo-class translators.
-     *
-     * @return callable[]
-     */
-    public function getPseudoClassTranslators();
-
-    /**
-     * Returns attribute operation translators.
-     *
-     * @return callable[]
-     */
-    public function getAttributeMatchingTranslators();
-
-    /**
-     * Returns extension name.
-     *
-     * @return string
-     */
-    public function getName();
-}
diff --git a/vendor/symfony/css-selector/XPath/Extension/FunctionExtension.php b/vendor/symfony/css-selector/XPath/Extension/FunctionExtension.php
deleted file mode 100644
index 41ece8a..0000000
--- a/vendor/symfony/css-selector/XPath/Extension/FunctionExtension.php
+++ /dev/null
@@ -1,209 +0,0 @@
-<?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\CssSelector\XPath\Extension;
-
-use Symfony\Component\CssSelector\Exception\ExpressionErrorException;
-use Symfony\Component\CssSelector\Exception\SyntaxErrorException;
-use Symfony\Component\CssSelector\Node\FunctionNode;
-use Symfony\Component\CssSelector\Parser\Parser;
-use Symfony\Component\CssSelector\XPath\Translator;
-use Symfony\Component\CssSelector\XPath\XPathExpr;
-
-/**
- * XPath expression translator function extension.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class FunctionExtension extends AbstractExtension
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctionTranslators()
-    {
-        return array(
-            'nth-child' => array($this, 'translateNthChild'),
-            'nth-last-child' => array($this, 'translateNthLastChild'),
-            'nth-of-type' => array($this, 'translateNthOfType'),
-            'nth-last-of-type' => array($this, 'translateNthLastOfType'),
-            'contains' => array($this, 'translateContains'),
-            'lang' => array($this, 'translateLang'),
-        );
-    }
-
-    /**
-     * @param XPathExpr    $xpath
-     * @param FunctionNode $function
-     * @param bool         $last
-     * @param bool         $addNameTest
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function translateNthChild(XPathExpr $xpath, FunctionNode $function, $last = false, $addNameTest = true)
-    {
-        try {
-            list($a, $b) = Parser::parseSeries($function->getArguments());
-        } catch (SyntaxErrorException $e) {
-            throw new ExpressionErrorException(sprintf('Invalid series: %s', implode(', ', $function->getArguments())), 0, $e);
-        }
-
-        $xpath->addStarPrefix();
-        if ($addNameTest) {
-            $xpath->addNameTest();
-        }
-
-        if (0 === $a) {
-            return $xpath->addCondition('position() = '.($last ? 'last() - '.($b - 1) : $b));
-        }
-
-        if ($a < 0) {
-            if ($b < 1) {
-                return $xpath->addCondition('false()');
-            }
-
-            $sign = '<=';
-        } else {
-            $sign = '>=';
-        }
-
-        $expr = 'position()';
-
-        if ($last) {
-            $expr = 'last() - '.$expr;
-            --$b;
-        }
-
-        if (0 !== $b) {
-            $expr .= ' - '.$b;
-        }
-
-        $conditions = array(sprintf('%s %s 0', $expr, $sign));
-
-        if (1 !== $a && -1 !== $a) {
-            $conditions[] = sprintf('(%s) mod %d = 0', $expr, $a);
-        }
-
-        return $xpath->addCondition(implode(' and ', $conditions));
-
-        // todo: handle an+b, odd, even
-        // an+b means every-a, plus b, e.g., 2n+1 means odd
-        // 0n+b means b
-        // n+0 means a=1, i.e., all elements
-        // an means every a elements, i.e., 2n means even
-        // -n means -1n
-        // -1n+6 means elements 6 and previous
-    }
-
-    /**
-     * @param XPathExpr    $xpath
-     * @param FunctionNode $function
-     *
-     * @return XPathExpr
-     */
-    public function translateNthLastChild(XPathExpr $xpath, FunctionNode $function)
-    {
-        return $this->translateNthChild($xpath, $function, true);
-    }
-
-    /**
-     * @param XPathExpr    $xpath
-     * @param FunctionNode $function
-     *
-     * @return XPathExpr
-     */
-    public function translateNthOfType(XPathExpr $xpath, FunctionNode $function)
-    {
-        return $this->translateNthChild($xpath, $function, false, false);
-    }
-
-    /**
-     * @param XPathExpr    $xpath
-     * @param FunctionNode $function
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function translateNthLastOfType(XPathExpr $xpath, FunctionNode $function)
-    {
-        if ('*' === $xpath->getElement()) {
-            throw new ExpressionErrorException('"*:nth-of-type()" is not implemented.');
-        }
-
-        return $this->translateNthChild($xpath, $function, true, false);
-    }
-
-    /**
-     * @param XPathExpr    $xpath
-     * @param FunctionNode $function
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function translateContains(XPathExpr $xpath, FunctionNode $function)
-    {
-        $arguments = $function->getArguments();
-        foreach ($arguments as $token) {
-            if (!($token->isString() || $token->isIdentifier())) {
-                throw new ExpressionErrorException(
-                    'Expected a single string or identifier for :contains(), got '
-                    .implode(', ', $arguments)
-                );
-            }
-        }
-
-        return $xpath->addCondition(sprintf(
-            'contains(string(.), %s)',
-            Translator::getXpathLiteral($arguments[0]->getValue())
-        ));
-    }
-
-    /**
-     * @param XPathExpr    $xpath
-     * @param FunctionNode $function
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function translateLang(XPathExpr $xpath, FunctionNode $function)
-    {
-        $arguments = $function->getArguments();
-        foreach ($arguments as $token) {
-            if (!($token->isString() || $token->isIdentifier())) {
-                throw new ExpressionErrorException(
-                    'Expected a single string or identifier for :lang(), got '
-                    .implode(', ', $arguments)
-                );
-            }
-        }
-
-        return $xpath->addCondition(sprintf(
-            'lang(%s)',
-            Translator::getXpathLiteral($arguments[0]->getValue())
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'function';
-    }
-}
diff --git a/vendor/symfony/css-selector/XPath/Extension/HtmlExtension.php b/vendor/symfony/css-selector/XPath/Extension/HtmlExtension.php
deleted file mode 100644
index 0da74d4..0000000
--- a/vendor/symfony/css-selector/XPath/Extension/HtmlExtension.php
+++ /dev/null
@@ -1,238 +0,0 @@
-<?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\CssSelector\XPath\Extension;
-
-use Symfony\Component\CssSelector\Exception\ExpressionErrorException;
-use Symfony\Component\CssSelector\Node\FunctionNode;
-use Symfony\Component\CssSelector\XPath\Translator;
-use Symfony\Component\CssSelector\XPath\XPathExpr;
-
-/**
- * XPath expression translator HTML extension.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class HtmlExtension extends AbstractExtension
-{
-    /**
-     * Constructor.
-     *
-     * @param Translator $translator
-     */
-    public function __construct(Translator $translator)
-    {
-        $translator
-            ->getExtension('node')
-            ->setFlag(NodeExtension::ELEMENT_NAME_IN_LOWER_CASE, true)
-            ->setFlag(NodeExtension::ATTRIBUTE_NAME_IN_LOWER_CASE, true);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPseudoClassTranslators()
-    {
-        return array(
-            'checked' => array($this, 'translateChecked'),
-            'link' => array($this, 'translateLink'),
-            'disabled' => array($this, 'translateDisabled'),
-            'enabled' => array($this, 'translateEnabled'),
-            'selected' => array($this, 'translateSelected'),
-            'invalid' => array($this, 'translateInvalid'),
-            'hover' => array($this, 'translateHover'),
-            'visited' => array($this, 'translateVisited'),
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctionTranslators()
-    {
-        return array(
-            'lang' => array($this, 'translateLang'),
-        );
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateChecked(XPathExpr $xpath)
-    {
-        return $xpath->addCondition(
-            '(@checked '
-            ."and (name(.) = 'input' or name(.) = 'command')"
-            ."and (@type = 'checkbox' or @type = 'radio'))"
-        );
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateLink(XPathExpr $xpath)
-    {
-        return $xpath->addCondition("@href and (name(.) = 'a' or name(.) = 'link' or name(.) = 'area')");
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateDisabled(XPathExpr $xpath)
-    {
-        return $xpath->addCondition(
-            '('
-                .'@disabled and'
-                .'('
-                    ."(name(.) = 'input' and @type != 'hidden')"
-                    ." or name(.) = 'button'"
-                    ." or name(.) = 'select'"
-                    ." or name(.) = 'textarea'"
-                    ." or name(.) = 'command'"
-                    ." or name(.) = 'fieldset'"
-                    ." or name(.) = 'optgroup'"
-                    ." or name(.) = 'option'"
-                .')'
-            .') or ('
-                ."(name(.) = 'input' and @type != 'hidden')"
-                ." or name(.) = 'button'"
-                ." or name(.) = 'select'"
-                ." or name(.) = 'textarea'"
-            .')'
-            .' and ancestor::fieldset[@disabled]'
-        );
-        // todo: in the second half, add "and is not a descendant of that fieldset element's first legend element child, if any."
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateEnabled(XPathExpr $xpath)
-    {
-        return $xpath->addCondition(
-            '('
-                .'@href and ('
-                    ."name(.) = 'a'"
-                    ." or name(.) = 'link'"
-                    ." or name(.) = 'area'"
-                .')'
-            .') or ('
-                .'('
-                    ."name(.) = 'command'"
-                    ." or name(.) = 'fieldset'"
-                    ." or name(.) = 'optgroup'"
-                .')'
-                .' and not(@disabled)'
-            .') or ('
-                .'('
-                    ."(name(.) = 'input' and @type != 'hidden')"
-                    ." or name(.) = 'button'"
-                    ." or name(.) = 'select'"
-                    ." or name(.) = 'textarea'"
-                    ." or name(.) = 'keygen'"
-                .')'
-                .' and not (@disabled or ancestor::fieldset[@disabled])'
-            .') or ('
-                ."name(.) = 'option' and not("
-                    .'@disabled or ancestor::optgroup[@disabled]'
-                .')'
-            .')'
-        );
-    }
-
-    /**
-     * @param XPathExpr    $xpath
-     * @param FunctionNode $function
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function translateLang(XPathExpr $xpath, FunctionNode $function)
-    {
-        $arguments = $function->getArguments();
-        foreach ($arguments as $token) {
-            if (!($token->isString() || $token->isIdentifier())) {
-                throw new ExpressionErrorException(
-                    'Expected a single string or identifier for :lang(), got '
-                    .implode(', ', $arguments)
-                );
-            }
-        }
-
-        return $xpath->addCondition(sprintf(
-            'ancestor-or-self::*[@lang][1][starts-with(concat('
-            ."translate(@%s, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '-')"
-            .', %s)]',
-            'lang',
-            Translator::getXpathLiteral(strtolower($arguments[0]->getValue()).'-')
-        ));
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateSelected(XPathExpr $xpath)
-    {
-        return $xpath->addCondition("(@selected and name(.) = 'option')");
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateInvalid(XPathExpr $xpath)
-    {
-        return $xpath->addCondition('0');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateHover(XPathExpr $xpath)
-    {
-        return $xpath->addCondition('0');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateVisited(XPathExpr $xpath)
-    {
-        return $xpath->addCondition('0');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'html';
-    }
-}
diff --git a/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php b/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php
deleted file mode 100644
index 2b8920f..0000000
--- a/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?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\CssSelector\XPath\Extension;
-
-use Symfony\Component\CssSelector\Node;
-use Symfony\Component\CssSelector\XPath\Translator;
-use Symfony\Component\CssSelector\XPath\XPathExpr;
-
-/**
- * XPath expression translator node extension.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class NodeExtension extends AbstractExtension
-{
-    const ELEMENT_NAME_IN_LOWER_CASE = 1;
-    const ATTRIBUTE_NAME_IN_LOWER_CASE = 2;
-    const ATTRIBUTE_VALUE_IN_LOWER_CASE = 4;
-
-    /**
-     * @var int
-     */
-    private $flags;
-
-    /**
-     * Constructor.
-     *
-     * @param int $flags
-     */
-    public function __construct($flags = 0)
-    {
-        $this->flags = $flags;
-    }
-
-    /**
-     * @param int  $flag
-     * @param bool $on
-     *
-     * @return NodeExtension
-     */
-    public function setFlag($flag, $on)
-    {
-        if ($on && !$this->hasFlag($flag)) {
-            $this->flags += $flag;
-        }
-
-        if (!$on && $this->hasFlag($flag)) {
-            $this->flags -= $flag;
-        }
-
-        return $this;
-    }
-
-    /**
-     * @param int $flag
-     *
-     * @return bool
-     */
-    public function hasFlag($flag)
-    {
-        return $this->flags & $flag;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getNodeTranslators()
-    {
-        return array(
-            'Selector' => array($this, 'translateSelector'),
-            'CombinedSelector' => array($this, 'translateCombinedSelector'),
-            'Negation' => array($this, 'translateNegation'),
-            'Function' => array($this, 'translateFunction'),
-            'Pseudo' => array($this, 'translatePseudo'),
-            'Attribute' => array($this, 'translateAttribute'),
-            'Class' => array($this, 'translateClass'),
-            'Hash' => array($this, 'translateHash'),
-            'Element' => array($this, 'translateElement'),
-        );
-    }
-
-    /**
-     * @param Node\SelectorNode $node
-     * @param Translator        $translator
-     *
-     * @return XPathExpr
-     */
-    public function translateSelector(Node\SelectorNode $node, Translator $translator)
-    {
-        return $translator->nodeToXPath($node->getTree());
-    }
-
-    /**
-     * @param Node\CombinedSelectorNode $node
-     * @param Translator                $translator
-     *
-     * @return XPathExpr
-     */
-    public function translateCombinedSelector(Node\CombinedSelectorNode $node, Translator $translator)
-    {
-        return $translator->addCombination($node->getCombinator(), $node->getSelector(), $node->getSubSelector());
-    }
-
-    /**
-     * @param Node\NegationNode $node
-     * @param Translator        $translator
-     *
-     * @return XPathExpr
-     */
-    public function translateNegation(Node\NegationNode $node, Translator $translator)
-    {
-        $xpath = $translator->nodeToXPath($node->getSelector());
-        $subXpath = $translator->nodeToXPath($node->getSubSelector());
-        $subXpath->addNameTest();
-
-        if ($subXpath->getCondition()) {
-            return $xpath->addCondition(sprintf('not(%s)', $subXpath->getCondition()));
-        }
-
-        return $xpath->addCondition('0');
-    }
-
-    /**
-     * @param Node\FunctionNode $node
-     * @param Translator        $translator
-     *
-     * @return XPathExpr
-     */
-    public function translateFunction(Node\FunctionNode $node, Translator $translator)
-    {
-        $xpath = $translator->nodeToXPath($node->getSelector());
-
-        return $translator->addFunction($xpath, $node);
-    }
-
-    /**
-     * @param Node\PseudoNode $node
-     * @param Translator      $translator
-     *
-     * @return XPathExpr
-     */
-    public function translatePseudo(Node\PseudoNode $node, Translator $translator)
-    {
-        $xpath = $translator->nodeToXPath($node->getSelector());
-
-        return $translator->addPseudoClass($xpath, $node->getIdentifier());
-    }
-
-    /**
-     * @param Node\AttributeNode $node
-     * @param Translator         $translator
-     *
-     * @return XPathExpr
-     */
-    public function translateAttribute(Node\AttributeNode $node, Translator $translator)
-    {
-        $name = $node->getAttribute();
-        $safe = $this->isSafeName($name);
-
-        if ($this->hasFlag(self::ATTRIBUTE_NAME_IN_LOWER_CASE)) {
-            $name = strtolower($name);
-        }
-
-        if ($node->getNamespace()) {
-            $name = sprintf('%s:%s', $node->getNamespace(), $name);
-            $safe = $safe && $this->isSafeName($node->getNamespace());
-        }
-
-        $attribute = $safe ? '@'.$name : sprintf('attribute::*[name() = %s]', Translator::getXpathLiteral($name));
-        $value = $node->getValue();
-        $xpath = $translator->nodeToXPath($node->getSelector());
-
-        if ($this->hasFlag(self::ATTRIBUTE_VALUE_IN_LOWER_CASE)) {
-            $value = strtolower($value);
-        }
-
-        return $translator->addAttributeMatching($xpath, $node->getOperator(), $attribute, $value);
-    }
-
-    /**
-     * @param Node\ClassNode $node
-     * @param Translator     $translator
-     *
-     * @return XPathExpr
-     */
-    public function translateClass(Node\ClassNode $node, Translator $translator)
-    {
-        $xpath = $translator->nodeToXPath($node->getSelector());
-
-        return $translator->addAttributeMatching($xpath, '~=', '@class', $node->getName());
-    }
-
-    /**
-     * @param Node\HashNode $node
-     * @param Translator    $translator
-     *
-     * @return XPathExpr
-     */
-    public function translateHash(Node\HashNode $node, Translator $translator)
-    {
-        $xpath = $translator->nodeToXPath($node->getSelector());
-
-        return $translator->addAttributeMatching($xpath, '=', '@id', $node->getId());
-    }
-
-    /**
-     * @param Node\ElementNode $node
-     *
-     * @return XPathExpr
-     */
-    public function translateElement(Node\ElementNode $node)
-    {
-        $element = $node->getElement();
-
-        if ($this->hasFlag(self::ELEMENT_NAME_IN_LOWER_CASE)) {
-            $element = strtolower($element);
-        }
-
-        if ($element) {
-            $safe = $this->isSafeName($element);
-        } else {
-            $element = '*';
-            $safe = true;
-        }
-
-        if ($node->getNamespace()) {
-            $element = sprintf('%s:%s', $node->getNamespace(), $element);
-            $safe = $safe && $this->isSafeName($node->getNamespace());
-        }
-
-        $xpath = new XPathExpr('', $element);
-
-        if (!$safe) {
-            $xpath->addNameTest();
-        }
-
-        return $xpath;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'node';
-    }
-
-    /**
-     * Tests if given name is safe.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    private function isSafeName($name)
-    {
-        return 0 < preg_match('~^[a-zA-Z_][a-zA-Z0-9_.-]*$~', $name);
-    }
-}
diff --git a/vendor/symfony/css-selector/XPath/Extension/PseudoClassExtension.php b/vendor/symfony/css-selector/XPath/Extension/PseudoClassExtension.php
deleted file mode 100644
index 008ec2b..0000000
--- a/vendor/symfony/css-selector/XPath/Extension/PseudoClassExtension.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?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\CssSelector\XPath\Extension;
-
-use Symfony\Component\CssSelector\Exception\ExpressionErrorException;
-use Symfony\Component\CssSelector\XPath\XPathExpr;
-
-/**
- * XPath expression translator pseudo-class extension.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class PseudoClassExtension extends AbstractExtension
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getPseudoClassTranslators()
-    {
-        return array(
-            'root' => array($this, 'translateRoot'),
-            'first-child' => array($this, 'translateFirstChild'),
-            'last-child' => array($this, 'translateLastChild'),
-            'first-of-type' => array($this, 'translateFirstOfType'),
-            'last-of-type' => array($this, 'translateLastOfType'),
-            'only-child' => array($this, 'translateOnlyChild'),
-            'only-of-type' => array($this, 'translateOnlyOfType'),
-            'empty' => array($this, 'translateEmpty'),
-        );
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateRoot(XPathExpr $xpath)
-    {
-        return $xpath->addCondition('not(parent::*)');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateFirstChild(XPathExpr $xpath)
-    {
-        return $xpath
-            ->addStarPrefix()
-            ->addNameTest()
-            ->addCondition('position() = 1');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateLastChild(XPathExpr $xpath)
-    {
-        return $xpath
-            ->addStarPrefix()
-            ->addNameTest()
-            ->addCondition('position() = last()');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function translateFirstOfType(XPathExpr $xpath)
-    {
-        if ('*' === $xpath->getElement()) {
-            throw new ExpressionErrorException('"*:first-of-type" is not implemented.');
-        }
-
-        return $xpath
-            ->addStarPrefix()
-            ->addCondition('position() = 1');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function translateLastOfType(XPathExpr $xpath)
-    {
-        if ('*' === $xpath->getElement()) {
-            throw new ExpressionErrorException('"*:last-of-type" is not implemented.');
-        }
-
-        return $xpath
-            ->addStarPrefix()
-            ->addCondition('position() = last()');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateOnlyChild(XPathExpr $xpath)
-    {
-        return $xpath
-            ->addStarPrefix()
-            ->addNameTest()
-            ->addCondition('last() = 1');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function translateOnlyOfType(XPathExpr $xpath)
-    {
-        if ('*' === $xpath->getElement()) {
-            throw new ExpressionErrorException('"*:only-of-type" is not implemented.');
-        }
-
-        return $xpath->addCondition('last() = 1');
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     *
-     * @return XPathExpr
-     */
-    public function translateEmpty(XPathExpr $xpath)
-    {
-        return $xpath->addCondition('not(*) and not(string-length())');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'pseudo-class';
-    }
-}
diff --git a/vendor/symfony/css-selector/XPath/Translator.php b/vendor/symfony/css-selector/XPath/Translator.php
deleted file mode 100644
index 5053793..0000000
--- a/vendor/symfony/css-selector/XPath/Translator.php
+++ /dev/null
@@ -1,299 +0,0 @@
-<?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\CssSelector\XPath;
-
-use Symfony\Component\CssSelector\Exception\ExpressionErrorException;
-use Symfony\Component\CssSelector\Node\FunctionNode;
-use Symfony\Component\CssSelector\Node\NodeInterface;
-use Symfony\Component\CssSelector\Node\SelectorNode;
-use Symfony\Component\CssSelector\Parser\Parser;
-use Symfony\Component\CssSelector\Parser\ParserInterface;
-
-/**
- * XPath expression translator interface.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class Translator implements TranslatorInterface
-{
-    /**
-     * @var ParserInterface
-     */
-    private $mainParser;
-
-    /**
-     * @var ParserInterface[]
-     */
-    private $shortcutParsers = array();
-
-    /**
-     * @var Extension\ExtensionInterface
-     */
-    private $extensions = array();
-
-    /**
-     * @var array
-     */
-    private $nodeTranslators = array();
-
-    /**
-     * @var array
-     */
-    private $combinationTranslators = array();
-
-    /**
-     * @var array
-     */
-    private $functionTranslators = array();
-
-    /**
-     * @var array
-     */
-    private $pseudoClassTranslators = array();
-
-    /**
-     * @var array
-     */
-    private $attributeMatchingTranslators = array();
-
-    /**
-     * Constructor.
-     */
-    public function __construct(ParserInterface $parser = null)
-    {
-        $this->mainParser = $parser ?: new Parser();
-
-        $this
-            ->registerExtension(new Extension\NodeExtension())
-            ->registerExtension(new Extension\CombinationExtension())
-            ->registerExtension(new Extension\FunctionExtension())
-            ->registerExtension(new Extension\PseudoClassExtension())
-            ->registerExtension(new Extension\AttributeMatchingExtension())
-        ;
-    }
-
-    /**
-     * @param string $element
-     *
-     * @return string
-     */
-    public static function getXpathLiteral($element)
-    {
-        if (false === strpos($element, "'")) {
-            return "'".$element."'";
-        }
-
-        if (false === strpos($element, '"')) {
-            return '"'.$element.'"';
-        }
-
-        $string = $element;
-        $parts = array();
-        while (true) {
-            if (false !== $pos = strpos($string, "'")) {
-                $parts[] = sprintf("'%s'", substr($string, 0, $pos));
-                $parts[] = "\"'\"";
-                $string = substr($string, $pos + 1);
-            } else {
-                $parts[] = "'$string'";
-                break;
-            }
-        }
-
-        return sprintf('concat(%s)', implode($parts, ', '));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function cssToXPath($cssExpr, $prefix = 'descendant-or-self::')
-    {
-        $selectors = $this->parseSelectors($cssExpr);
-
-        /** @var SelectorNode $selector */
-        foreach ($selectors as $index => $selector) {
-            if (null !== $selector->getPseudoElement()) {
-                throw new ExpressionErrorException('Pseudo-elements are not supported.');
-            }
-
-            $selectors[$index] = $this->selectorToXPath($selector, $prefix);
-        }
-
-        return implode(' | ', $selectors);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function selectorToXPath(SelectorNode $selector, $prefix = 'descendant-or-self::')
-    {
-        return ($prefix ?: '').$this->nodeToXPath($selector);
-    }
-
-    /**
-     * Registers an extension.
-     *
-     * @param Extension\ExtensionInterface $extension
-     *
-     * @return Translator
-     */
-    public function registerExtension(Extension\ExtensionInterface $extension)
-    {
-        $this->extensions[$extension->getName()] = $extension;
-
-        $this->nodeTranslators = array_merge($this->nodeTranslators, $extension->getNodeTranslators());
-        $this->combinationTranslators = array_merge($this->combinationTranslators, $extension->getCombinationTranslators());
-        $this->functionTranslators = array_merge($this->functionTranslators, $extension->getFunctionTranslators());
-        $this->pseudoClassTranslators = array_merge($this->pseudoClassTranslators, $extension->getPseudoClassTranslators());
-        $this->attributeMatchingTranslators = array_merge($this->attributeMatchingTranslators, $extension->getAttributeMatchingTranslators());
-
-        return $this;
-    }
-
-    /**
-     * @param string $name
-     *
-     * @return Extension\ExtensionInterface
-     *
-     * @throws ExpressionErrorException
-     */
-    public function getExtension($name)
-    {
-        if (!isset($this->extensions[$name])) {
-            throw new ExpressionErrorException(sprintf('Extension "%s" not registered.', $name));
-        }
-
-        return $this->extensions[$name];
-    }
-
-    /**
-     * Registers a shortcut parser.
-     *
-     * @param ParserInterface $shortcut
-     *
-     * @return Translator
-     */
-    public function registerParserShortcut(ParserInterface $shortcut)
-    {
-        $this->shortcutParsers[] = $shortcut;
-
-        return $this;
-    }
-
-    /**
-     * @param NodeInterface $node
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function nodeToXPath(NodeInterface $node)
-    {
-        if (!isset($this->nodeTranslators[$node->getNodeName()])) {
-            throw new ExpressionErrorException(sprintf('Node "%s" not supported.', $node->getNodeName()));
-        }
-
-        return call_user_func($this->nodeTranslators[$node->getNodeName()], $node, $this);
-    }
-
-    /**
-     * @param string        $combiner
-     * @param NodeInterface $xpath
-     * @param NodeInterface $combinedXpath
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function addCombination($combiner, NodeInterface $xpath, NodeInterface $combinedXpath)
-    {
-        if (!isset($this->combinationTranslators[$combiner])) {
-            throw new ExpressionErrorException(sprintf('Combiner "%s" not supported.', $combiner));
-        }
-
-        return call_user_func($this->combinationTranslators[$combiner], $this->nodeToXPath($xpath), $this->nodeToXPath($combinedXpath));
-    }
-
-    /**
-     * @param XPathExpr    $xpath
-     * @param FunctionNode $function
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function addFunction(XPathExpr $xpath, FunctionNode $function)
-    {
-        if (!isset($this->functionTranslators[$function->getName()])) {
-            throw new ExpressionErrorException(sprintf('Function "%s" not supported.', $function->getName()));
-        }
-
-        return call_user_func($this->functionTranslators[$function->getName()], $xpath, $function);
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param string    $pseudoClass
-     *
-     * @return XPathExpr
-     *
-     * @throws ExpressionErrorException
-     */
-    public function addPseudoClass(XPathExpr $xpath, $pseudoClass)
-    {
-        if (!isset($this->pseudoClassTranslators[$pseudoClass])) {
-            throw new ExpressionErrorException(sprintf('Pseudo-class "%s" not supported.', $pseudoClass));
-        }
-
-        return call_user_func($this->pseudoClassTranslators[$pseudoClass], $xpath);
-    }
-
-    /**
-     * @param XPathExpr $xpath
-     * @param string    $operator
-     * @param string    $attribute
-     * @param string    $value
-     *
-     * @throws ExpressionErrorException
-     *
-     * @return XPathExpr
-     */
-    public function addAttributeMatching(XPathExpr $xpath, $operator, $attribute, $value)
-    {
-        if (!isset($this->attributeMatchingTranslators[$operator])) {
-            throw new ExpressionErrorException(sprintf('Attribute matcher operator "%s" not supported.', $operator));
-        }
-
-        return call_user_func($this->attributeMatchingTranslators[$operator], $xpath, $attribute, $value);
-    }
-
-    /**
-     * @param string $css
-     *
-     * @return SelectorNode[]
-     */
-    private function parseSelectors($css)
-    {
-        foreach ($this->shortcutParsers as $shortcut) {
-            $tokens = $shortcut->parse($css);
-
-            if (!empty($tokens)) {
-                return $tokens;
-            }
-        }
-
-        return $this->mainParser->parse($css);
-    }
-}
diff --git a/vendor/symfony/css-selector/XPath/TranslatorInterface.php b/vendor/symfony/css-selector/XPath/TranslatorInterface.php
deleted file mode 100644
index bc19ae8..0000000
--- a/vendor/symfony/css-selector/XPath/TranslatorInterface.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\CssSelector\XPath;
-
-use Symfony\Component\CssSelector\Node\SelectorNode;
-
-/**
- * XPath expression translator interface.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-interface TranslatorInterface
-{
-    /**
-     * Translates a CSS selector to an XPath expression.
-     *
-     * @param string $cssExpr
-     * @param string $prefix
-     *
-     * @return string
-     */
-    public function cssToXPath($cssExpr, $prefix = 'descendant-or-self::');
-
-    /**
-     * Translates a parsed selector node to an XPath expression.
-     *
-     * @param SelectorNode $selector
-     * @param string       $prefix
-     *
-     * @return string
-     */
-    public function selectorToXPath(SelectorNode $selector, $prefix = 'descendant-or-self::');
-}
diff --git a/vendor/symfony/css-selector/XPath/XPathExpr.php b/vendor/symfony/css-selector/XPath/XPathExpr.php
deleted file mode 100644
index c7ef97c..0000000
--- a/vendor/symfony/css-selector/XPath/XPathExpr.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?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\CssSelector\XPath;
-
-/**
- * XPath expression translator interface.
- *
- * This component is a port of the Python cssselect library,
- * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-class XPathExpr
-{
-    /**
-     * @var string
-     */
-    private $path;
-
-    /**
-     * @var string
-     */
-    private $element;
-
-    /**
-     * @var string
-     */
-    private $condition;
-
-    /**
-     * @param string $path
-     * @param string $element
-     * @param string $condition
-     * @param bool   $starPrefix
-     */
-    public function __construct($path = '', $element = '*', $condition = '', $starPrefix = false)
-    {
-        $this->path = $path;
-        $this->element = $element;
-        $this->condition = $condition;
-
-        if ($starPrefix) {
-            $this->addStarPrefix();
-        }
-    }
-
-    /**
-     * @return string
-     */
-    public function getElement()
-    {
-        return $this->element;
-    }
-
-    /**
-     * @param $condition
-     *
-     * @return XPathExpr
-     */
-    public function addCondition($condition)
-    {
-        $this->condition = $this->condition ? sprintf('%s and (%s)', $this->condition, $condition) : $condition;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getCondition()
-    {
-        return $this->condition;
-    }
-
-    /**
-     * @return XPathExpr
-     */
-    public function addNameTest()
-    {
-        if ('*' !== $this->element) {
-            $this->addCondition('name() = '.Translator::getXpathLiteral($this->element));
-            $this->element = '*';
-        }
-
-        return $this;
-    }
-
-    /**
-     * @return XPathExpr
-     */
-    public function addStarPrefix()
-    {
-        $this->path .= '*/';
-
-        return $this;
-    }
-
-    /**
-     * Joins another XPathExpr with a combiner.
-     *
-     * @param string    $combiner
-     * @param XPathExpr $expr
-     *
-     * @return XPathExpr
-     */
-    public function join($combiner, XPathExpr $expr)
-    {
-        $path = $this->__toString().$combiner;
-
-        if ('*/' !== $expr->path) {
-            $path .= $expr->path;
-        }
-
-        $this->path = $path;
-        $this->element = $expr->element;
-        $this->condition = $expr->condition;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        $path = $this->path.$this->element;
-        $condition = null === $this->condition || '' === $this->condition ? '' : '['.$this->condition.']';
-
-        return $path.$condition;
-    }
-}
diff --git a/vendor/symfony/css-selector/composer.json b/vendor/symfony/css-selector/composer.json
deleted file mode 100644
index 99eb4da..0000000
--- a/vendor/symfony/css-selector/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-    "name": "symfony/css-selector",
-    "type": "library",
-    "description": "Symfony CssSelector Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Jean-François Simon",
-            "email": "jeanfrancois.simon@sensiolabs.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\CssSelector\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/css-selector/phpunit.xml.dist b/vendor/symfony/css-selector/phpunit.xml.dist
deleted file mode 100644
index 14a320c..0000000
--- a/vendor/symfony/css-selector/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony CssSelector Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/debug/.gitignore b/vendor/symfony/debug/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/debug/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/debug/CHANGELOG.md b/vendor/symfony/debug/CHANGELOG.md
deleted file mode 100644
index 31f0de9..0000000
--- a/vendor/symfony/debug/CHANGELOG.md
+++ /dev/null
@@ -1,35 +0,0 @@
-CHANGELOG
-=========
-
-2.7.0
------
-
-* added deprecations checking for parent interfaces/classes to DebugClassLoader
-* added ZTS support to symfony_debug extension
-* added symfony_debug_backtrace() to symfony_debug extension
-  to track the backtrace of fatal errors
-
-2.6.0
------
-
-* generalized ErrorHandler and ExceptionHandler,
-  with some new methods and others deprecated
-* enhanced error messages for uncaught exceptions
-
-2.5.0
------
-
-* added ExceptionHandler::setHandler()
-* added UndefinedMethodFatalErrorHandler
-* deprecated DummyException
-
-2.4.0
------
-
- * added a DebugClassLoader able to wrap any autoloader providing a findFile method
- * improved error messages for not found classes and functions
-
-2.3.0
------
-
- * added the component
diff --git a/vendor/symfony/debug/Debug.php b/vendor/symfony/debug/Debug.php
deleted file mode 100644
index 08b35f4..0000000
--- a/vendor/symfony/debug/Debug.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?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\Debug;
-
-/**
- * Registers all the debug tools.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Debug
-{
-    private static $enabled = false;
-
-    /**
-     * Enables the debug tools.
-     *
-     * This method registers an error handler and an exception handler.
-     *
-     * If the Symfony ClassLoader component is available, a special
-     * class loader is also registered.
-     *
-     * @param int  $errorReportingLevel The level of error reporting you want
-     * @param bool $displayErrors       Whether to display errors (for development) or just log them (for production)
-     */
-    public static function enable($errorReportingLevel = null, $displayErrors = true)
-    {
-        if (static::$enabled) {
-            return;
-        }
-
-        static::$enabled = true;
-
-        if (null !== $errorReportingLevel) {
-            error_reporting($errorReportingLevel);
-        } else {
-            error_reporting(-1);
-        }
-
-        if ('cli' !== php_sapi_name()) {
-            ini_set('display_errors', 0);
-            ExceptionHandler::register();
-        } elseif ($displayErrors && (!ini_get('log_errors') || ini_get('error_log'))) {
-            // CLI - display errors only if they're not already logged to STDERR
-            ini_set('display_errors', 1);
-        }
-        $handler = ErrorHandler::register();
-        if (!$displayErrors) {
-            $handler->throwAt(0, true);
-        }
-
-        DebugClassLoader::enable();
-    }
-}
diff --git a/vendor/symfony/debug/DebugClassLoader.php b/vendor/symfony/debug/DebugClassLoader.php
deleted file mode 100644
index 8c79774..0000000
--- a/vendor/symfony/debug/DebugClassLoader.php
+++ /dev/null
@@ -1,309 +0,0 @@
-<?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\Debug;
-
-/**
- * Autoloader checking if the class is really defined in the file found.
- *
- * The ClassLoader will wrap all registered autoloaders
- * and will throw an exception if a file is found but does
- * not declare the class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Christophe Coevoet <stof@notk.org>
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DebugClassLoader
-{
-    private $classLoader;
-    private $isFinder;
-    private $wasFinder;
-    private static $caseCheck;
-    private static $deprecated = array();
-    private static $php7Reserved = array('int', 'float', 'bool', 'string', 'true', 'false', 'null');
-    private static $darwinCache = array('/' => array('/', array()));
-
-    /**
-     * Constructor.
-     *
-     * @param callable|object $classLoader Passing an object is @deprecated since version 2.5 and support for it will be removed in 3.0
-     */
-    public function __construct($classLoader)
-    {
-        $this->wasFinder = is_object($classLoader) && method_exists($classLoader, 'findFile');
-
-        if ($this->wasFinder) {
-            @trigger_error('The '.__METHOD__.' method will no longer support receiving an object into its $classLoader argument in 3.0.', E_USER_DEPRECATED);
-            $this->classLoader = array($classLoader, 'loadClass');
-            $this->isFinder = true;
-        } else {
-            $this->classLoader = $classLoader;
-            $this->isFinder = is_array($classLoader) && method_exists($classLoader[0], 'findFile');
-        }
-
-        if (!isset(self::$caseCheck)) {
-            self::$caseCheck = false !== stripos(PHP_OS, 'win') ? (false !== stripos(PHP_OS, 'darwin') ? 2 : 1) : 0;
-        }
-    }
-
-    /**
-     * Gets the wrapped class loader.
-     *
-     * @return callable|object A class loader. Since version 2.5, returning an object is @deprecated and support for it will be removed in 3.0
-     */
-    public function getClassLoader()
-    {
-        return $this->wasFinder ? $this->classLoader[0] : $this->classLoader;
-    }
-
-    /**
-     * Wraps all autoloaders.
-     */
-    public static function enable()
-    {
-        // Ensures we don't hit https://bugs.php.net/42098
-        class_exists('Symfony\Component\Debug\ErrorHandler');
-        class_exists('Psr\Log\LogLevel');
-
-        if (!is_array($functions = spl_autoload_functions())) {
-            return;
-        }
-
-        foreach ($functions as $function) {
-            spl_autoload_unregister($function);
-        }
-
-        foreach ($functions as $function) {
-            if (!is_array($function) || !$function[0] instanceof self) {
-                $function = array(new static($function), 'loadClass');
-            }
-
-            spl_autoload_register($function);
-        }
-    }
-
-    /**
-     * Disables the wrapping.
-     */
-    public static function disable()
-    {
-        if (!is_array($functions = spl_autoload_functions())) {
-            return;
-        }
-
-        foreach ($functions as $function) {
-            spl_autoload_unregister($function);
-        }
-
-        foreach ($functions as $function) {
-            if (is_array($function) && $function[0] instanceof self) {
-                $function = $function[0]->getClassLoader();
-            }
-
-            spl_autoload_register($function);
-        }
-    }
-
-    /**
-     * Finds a file by class name.
-     *
-     * @param string $class A class name to resolve to file
-     *
-     * @return string|null
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function findFile($class)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        if ($this->wasFinder) {
-            return $this->classLoader[0]->findFile($class);
-        }
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     *
-     * @return bool|null True, if loaded
-     *
-     * @throws \RuntimeException
-     */
-    public function loadClass($class)
-    {
-        ErrorHandler::stackErrors();
-
-        try {
-            if ($this->isFinder) {
-                if ($file = $this->classLoader[0]->findFile($class)) {
-                    require $file;
-                }
-            } else {
-                call_user_func($this->classLoader, $class);
-                $file = false;
-            }
-        } catch (\Exception $e) {
-            ErrorHandler::unstackErrors();
-
-            throw $e;
-        }
-
-        ErrorHandler::unstackErrors();
-
-        $exists = class_exists($class, false) || interface_exists($class, false) || (function_exists('trait_exists') && trait_exists($class, false));
-
-        if ('\\' === $class[0]) {
-            $class = substr($class, 1);
-        }
-
-        if ($exists) {
-            $refl = new \ReflectionClass($class);
-            $name = $refl->getName();
-
-            if ($name !== $class && 0 === strcasecmp($name, $class)) {
-                throw new \RuntimeException(sprintf('Case mismatch between loaded and declared class names: %s vs %s', $class, $name));
-            }
-
-            if (in_array(strtolower($refl->getShortName()), self::$php7Reserved)) {
-                @trigger_error(sprintf('%s uses a reserved class name (%s) that will break on PHP 7 and higher', $name, $refl->getShortName()), E_USER_DEPRECATED);
-            } elseif (preg_match('#\n \* @deprecated (.*?)\r?\n \*(?: @|/$)#s', $refl->getDocComment(), $notice)) {
-                self::$deprecated[$name] = preg_replace('#\s*\r?\n \* +#', ' ', $notice[1]);
-            } else {
-                if (2 > $len = 1 + (strpos($name, '\\', 1 + strpos($name, '\\')) ?: strpos($name, '_'))) {
-                    $len = 0;
-                    $ns = '';
-                } else {
-                    switch ($ns = substr($name, 0, $len)) {
-                        case 'Symfony\Bridge\\':
-                        case 'Symfony\Bundle\\':
-                        case 'Symfony\Component\\':
-                            $ns = 'Symfony\\';
-                            $len = strlen($ns);
-                            break;
-                    }
-                }
-                $parent = $refl->getParentClass();
-
-                if (!$parent || strncmp($ns, $parent->name, $len)) {
-                    if ($parent && isset(self::$deprecated[$parent->name]) && strncmp($ns, $parent->name, $len)) {
-                        @trigger_error(sprintf('The %s class extends %s that is deprecated %s', $name, $parent->name, self::$deprecated[$parent->name]), E_USER_DEPRECATED);
-                    }
-
-                    foreach ($refl->getInterfaceNames() as $interface) {
-                        if (isset(self::$deprecated[$interface]) && strncmp($ns, $interface, $len) && !($parent && $parent->implementsInterface($interface))) {
-                            @trigger_error(sprintf('The %s %s %s that is deprecated %s', $name, $refl->isInterface() ? 'interface extends' : 'class implements', $interface, self::$deprecated[$interface]), E_USER_DEPRECATED);
-                        }
-                    }
-                }
-            }
-        }
-
-        if ($file) {
-            if (!$exists) {
-                if (false !== strpos($class, '/')) {
-                    throw new \RuntimeException(sprintf('Trying to autoload a class with an invalid name "%s". Be careful that the namespace separator is "\" in PHP, not "/".', $class));
-                }
-
-                throw new \RuntimeException(sprintf('The autoloader expected class "%s" to be defined in file "%s". The file was found but the class was not in it, the class name or namespace probably has a typo.', $class, $file));
-            }
-            if (self::$caseCheck) {
-                $real = explode('\\', $class.strrchr($file, '.'));
-                $tail = explode(DIRECTORY_SEPARATOR, str_replace('/', DIRECTORY_SEPARATOR, $file));
-
-                $i = count($tail) - 1;
-                $j = count($real) - 1;
-
-                 while (isset($tail[$i], $real[$j]) && $tail[$i] === $real[$j]) {
-                    --$i;
-                    --$j;
-                }
-
-                array_splice($tail, 0, $i + 1);
-            }
-            if (self::$caseCheck && $tail) {
-                $tail = DIRECTORY_SEPARATOR.implode(DIRECTORY_SEPARATOR, $tail);
-                $tailLen = strlen($tail);
-                $real = $refl->getFileName();
-
-                if (2 === self::$caseCheck) {
-                    // realpath() on MacOSX doesn't normalize the case of characters
-
-                    $i = 1 + strrpos($real, '/');
-                    $file = substr($real, $i);
-                    $real = substr($real, 0, $i);
-
-                    if (isset(self::$darwinCache[$real])) {
-                        $kDir = $real;
-                    } else {
-                        $kDir = strtolower($real);
-
-                        if (isset(self::$darwinCache[$kDir])) {
-                            $real = self::$darwinCache[$kDir][0];
-                        } else {
-                            $dir = getcwd();
-                            chdir($real);
-                            $real = getcwd().'/';
-                            chdir($dir);
-
-                            $dir = $real;
-                            $k = $kDir;
-                            $i = strlen($dir) - 1;
-                            while (!isset(self::$darwinCache[$k])) {
-                                self::$darwinCache[$k] = array($dir, array());
-                                self::$darwinCache[$dir] = &self::$darwinCache[$k];
-
-                                while ('/' !== $dir[--$i]) {
-                                }
-                                $k = substr($k, 0, ++$i);
-                                $dir = substr($dir, 0, $i--);
-                            }
-                        }
-                    }
-
-                    $dirFiles = self::$darwinCache[$kDir][1];
-
-                    if (isset($dirFiles[$file])) {
-                        $kFile = $file;
-                    } else {
-                        $kFile = strtolower($file);
-
-                        if (!isset($dirFiles[$kFile])) {
-                            foreach (scandir($real, 2) as $f) {
-                                if ('.' !== $f[0]) {
-                                    $dirFiles[$f] = $f;
-                                    if ($f === $file) {
-                                        $kFile = $k = $file;
-                                    } elseif ($f !== $k = strtolower($f)) {
-                                        $dirFiles[$k] = $f;
-                                    }
-                                }
-                            }
-                            self::$darwinCache[$kDir][1] = $dirFiles;
-                        }
-                    }
-
-                    $real .= $dirFiles[$kFile];
-                }
-
-                if (0 === substr_compare($real, $tail, -$tailLen, $tailLen, true)
-                  && 0 !== substr_compare($real, $tail, -$tailLen, $tailLen, false)
-                ) {
-                    throw new \RuntimeException(sprintf('Case mismatch between class and real file names: %s vs %s in %s', substr($tail, -$tailLen + 1), substr($real, -$tailLen + 1), substr($real, 0, -$tailLen + 1)));
-                }
-            }
-
-            return true;
-        }
-    }
-}
diff --git a/vendor/symfony/debug/ErrorHandler.php b/vendor/symfony/debug/ErrorHandler.php
deleted file mode 100644
index cc698ee..0000000
--- a/vendor/symfony/debug/ErrorHandler.php
+++ /dev/null
@@ -1,741 +0,0 @@
-<?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\Debug;
-
-use Psr\Log\LogLevel;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Debug\Exception\ContextErrorException;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\Exception\FatalThrowableError;
-use Symfony\Component\Debug\Exception\OutOfMemoryException;
-use Symfony\Component\Debug\FatalErrorHandler\UndefinedFunctionFatalErrorHandler;
-use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler;
-use Symfony\Component\Debug\FatalErrorHandler\ClassNotFoundFatalErrorHandler;
-use Symfony\Component\Debug\FatalErrorHandler\FatalErrorHandlerInterface;
-
-/**
- * A generic ErrorHandler for the PHP engine.
- *
- * Provides five bit fields that control how errors are handled:
- * - thrownErrors: errors thrown as \ErrorException
- * - loggedErrors: logged errors, when not @-silenced
- * - scopedErrors: errors thrown or logged with their local context
- * - tracedErrors: errors logged with their stack trace, only once for repeated errors
- * - screamedErrors: never @-silenced errors
- *
- * Each error level can be logged by a dedicated PSR-3 logger object.
- * Screaming only applies to logging.
- * Throwing takes precedence over logging.
- * Uncaught exceptions are logged as E_ERROR.
- * E_DEPRECATED and E_USER_DEPRECATED levels never throw.
- * E_RECOVERABLE_ERROR and E_USER_ERROR levels always throw.
- * Non catchable errors that can be detected at shutdown time are logged when the scream bit field allows so.
- * As errors have a performance cost, repeated errors are all logged, so that the developer
- * can see them and weight them as more important to fix than others of the same level.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class ErrorHandler
-{
-    /**
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    const TYPE_DEPRECATION = -100;
-
-    private $levels = array(
-        E_DEPRECATED => 'Deprecated',
-        E_USER_DEPRECATED => 'User Deprecated',
-        E_NOTICE => 'Notice',
-        E_USER_NOTICE => 'User Notice',
-        E_STRICT => 'Runtime Notice',
-        E_WARNING => 'Warning',
-        E_USER_WARNING => 'User Warning',
-        E_COMPILE_WARNING => 'Compile Warning',
-        E_CORE_WARNING => 'Core Warning',
-        E_USER_ERROR => 'User Error',
-        E_RECOVERABLE_ERROR => 'Catchable Fatal Error',
-        E_COMPILE_ERROR => 'Compile Error',
-        E_PARSE => 'Parse Error',
-        E_ERROR => 'Error',
-        E_CORE_ERROR => 'Core Error',
-    );
-
-    private $loggers = array(
-        E_DEPRECATED => array(null, LogLevel::INFO),
-        E_USER_DEPRECATED => array(null, LogLevel::INFO),
-        E_NOTICE => array(null, LogLevel::WARNING),
-        E_USER_NOTICE => array(null, LogLevel::WARNING),
-        E_STRICT => array(null, LogLevel::WARNING),
-        E_WARNING => array(null, LogLevel::WARNING),
-        E_USER_WARNING => array(null, LogLevel::WARNING),
-        E_COMPILE_WARNING => array(null, LogLevel::WARNING),
-        E_CORE_WARNING => array(null, LogLevel::WARNING),
-        E_USER_ERROR => array(null, LogLevel::CRITICAL),
-        E_RECOVERABLE_ERROR => array(null, LogLevel::CRITICAL),
-        E_COMPILE_ERROR => array(null, LogLevel::CRITICAL),
-        E_PARSE => array(null, LogLevel::CRITICAL),
-        E_ERROR => array(null, LogLevel::CRITICAL),
-        E_CORE_ERROR => array(null, LogLevel::CRITICAL),
-    );
-
-    private $thrownErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED
-    private $scopedErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED
-    private $tracedErrors = 0x77FB; // E_ALL - E_STRICT - E_PARSE
-    private $screamedErrors = 0x55; // E_ERROR + E_CORE_ERROR + E_COMPILE_ERROR + E_PARSE
-    private $loggedErrors = 0;
-
-    private $loggedTraces = array();
-    private $isRecursive = 0;
-    private $exceptionHandler;
-
-    private static $reservedMemory;
-    private static $stackedErrors = array();
-    private static $stackedErrorLevels = array();
-
-    /**
-     * Same init value as thrownErrors.
-     *
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    private $displayErrors = 0x1FFF;
-
-    /**
-     * Registers the error handler.
-     *
-     * @param self|null|int $handler The handler to register, or @deprecated (since version 2.6, to be removed in 3.0) bit field of thrown levels
-     * @param bool          $replace Whether to replace or not any existing handler
-     *
-     * @return self The registered error handler
-     */
-    public static function register($handler = null, $replace = true)
-    {
-        if (null === self::$reservedMemory) {
-            self::$reservedMemory = str_repeat('x', 10240);
-            register_shutdown_function(__CLASS__.'::handleFatalError');
-        }
-
-        $levels = -1;
-
-        if ($handlerIsNew = !$handler instanceof self) {
-            // @deprecated polymorphism, to be removed in 3.0
-            if (null !== $handler) {
-                $levels = $replace ? $handler : 0;
-                $replace = true;
-            }
-            $handler = new static();
-        }
-
-        $prev = set_error_handler(array($handler, 'handleError'), $handler->thrownErrors | $handler->loggedErrors);
-
-        if ($handlerIsNew && is_array($prev) && $prev[0] instanceof self) {
-            $handler = $prev[0];
-            $replace = false;
-        }
-        if ($replace || !$prev) {
-            $handler->setExceptionHandler(set_exception_handler(array($handler, 'handleException')));
-        } else {
-            restore_error_handler();
-        }
-
-        $handler->throwAt($levels & $handler->thrownErrors, true);
-
-        return $handler;
-    }
-
-    /**
-     * Sets a logger to non assigned errors levels.
-     *
-     * @param LoggerInterface $logger  A PSR-3 logger to put as default for the given levels
-     * @param array|int       $levels  An array map of E_* to LogLevel::* or an integer bit field of E_* constants
-     * @param bool            $replace Whether to replace or not any existing logger
-     */
-    public function setDefaultLogger(LoggerInterface $logger, $levels = null, $replace = false)
-    {
-        $loggers = array();
-
-        if (is_array($levels)) {
-            foreach ($levels as $type => $logLevel) {
-                if (empty($this->loggers[$type][0]) || $replace) {
-                    $loggers[$type] = array($logger, $logLevel);
-                }
-            }
-        } else {
-            if (null === $levels) {
-                $levels = E_ALL | E_STRICT;
-            }
-            foreach ($this->loggers as $type => $log) {
-                if (($type & $levels) && (empty($log[0]) || $replace)) {
-                    $log[0] = $logger;
-                    $loggers[$type] = $log;
-                }
-            }
-        }
-
-        $this->setLoggers($loggers);
-    }
-
-    /**
-     * Sets a logger for each error level.
-     *
-     * @param array $loggers Error levels to [LoggerInterface|null, LogLevel::*] map
-     *
-     * @return array The previous map
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setLoggers(array $loggers)
-    {
-        $prevLogged = $this->loggedErrors;
-        $prev = $this->loggers;
-
-        foreach ($loggers as $type => $log) {
-            if (!isset($prev[$type])) {
-                throw new \InvalidArgumentException('Unknown error type: '.$type);
-            }
-            if (!is_array($log)) {
-                $log = array($log);
-            } elseif (!array_key_exists(0, $log)) {
-                throw new \InvalidArgumentException('No logger provided');
-            }
-            if (null === $log[0]) {
-                $this->loggedErrors &= ~$type;
-            } elseif ($log[0] instanceof LoggerInterface) {
-                $this->loggedErrors |= $type;
-            } else {
-                throw new \InvalidArgumentException('Invalid logger provided');
-            }
-            $this->loggers[$type] = $log + $prev[$type];
-        }
-        $this->reRegister($prevLogged | $this->thrownErrors);
-
-        return $prev;
-    }
-
-    /**
-     * Sets a user exception handler.
-     *
-     * @param callable $handler A handler that will be called on Exception
-     *
-     * @return callable|null The previous exception handler
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setExceptionHandler($handler)
-    {
-        if (null !== $handler && !is_callable($handler)) {
-            throw new \LogicException('The exception handler must be a valid PHP callable.');
-        }
-        $prev = $this->exceptionHandler;
-        $this->exceptionHandler = $handler;
-
-        return $prev;
-    }
-
-    /**
-     * Sets the PHP error levels that throw an exception when a PHP error occurs.
-     *
-     * @param int  $levels  A bit field of E_* constants for thrown errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function throwAt($levels, $replace = false)
-    {
-        $prev = $this->thrownErrors;
-        $this->thrownErrors = (E_ALL | E_STRICT) & ($levels | E_RECOVERABLE_ERROR | E_USER_ERROR) & ~E_USER_DEPRECATED & ~E_DEPRECATED;
-        if (!$replace) {
-            $this->thrownErrors |= $prev;
-        }
-        $this->reRegister($prev | $this->loggedErrors);
-
-        // $this->displayErrors is @deprecated since version 2.6
-        $this->displayErrors = $this->thrownErrors;
-
-        return $prev;
-    }
-
-    /**
-     * Sets the PHP error levels for which local variables are preserved.
-     *
-     * @param int  $levels  A bit field of E_* constants for scoped errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function scopeAt($levels, $replace = false)
-    {
-        $prev = $this->scopedErrors;
-        $this->scopedErrors = (int) $levels;
-        if (!$replace) {
-            $this->scopedErrors |= $prev;
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Sets the PHP error levels for which the stack trace is preserved.
-     *
-     * @param int  $levels  A bit field of E_* constants for traced errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function traceAt($levels, $replace = false)
-    {
-        $prev = $this->tracedErrors;
-        $this->tracedErrors = (int) $levels;
-        if (!$replace) {
-            $this->tracedErrors |= $prev;
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Sets the error levels where the @-operator is ignored.
-     *
-     * @param int  $levels  A bit field of E_* constants for screamed errors
-     * @param bool $replace Replace or amend the previous value
-     *
-     * @return int The previous value
-     */
-    public function screamAt($levels, $replace = false)
-    {
-        $prev = $this->screamedErrors;
-        $this->screamedErrors = (int) $levels;
-        if (!$replace) {
-            $this->screamedErrors |= $prev;
-        }
-
-        return $prev;
-    }
-
-    /**
-     * Re-registers as a PHP error handler if levels changed.
-     */
-    private function reRegister($prev)
-    {
-        if ($prev !== $this->thrownErrors | $this->loggedErrors) {
-            $handler = set_error_handler('var_dump', 0);
-            $handler = is_array($handler) ? $handler[0] : null;
-            restore_error_handler();
-            if ($handler === $this) {
-                restore_error_handler();
-                set_error_handler(array($this, 'handleError'), $this->thrownErrors | $this->loggedErrors);
-            }
-        }
-    }
-
-    /**
-     * Handles errors by filtering then logging them according to the configured bit fields.
-     *
-     * @param int    $type    One of the E_* constants
-     * @param string $file
-     * @param int    $line
-     * @param array  $context
-     *
-     * @return bool Returns false when no handling happens so that the PHP engine can handle the error itself.
-     *
-     * @throws \ErrorException When $this->thrownErrors requests so
-     *
-     * @internal
-     */
-    public function handleError($type, $message, $file, $line, array $context, array $backtrace = null)
-    {
-        $level = error_reporting() | E_RECOVERABLE_ERROR | E_USER_ERROR | E_DEPRECATED | E_USER_DEPRECATED;
-        $log = $this->loggedErrors & $type;
-        $throw = $this->thrownErrors & $type & $level;
-        $type &= $level | $this->screamedErrors;
-
-        if (!$type || (!$log && !$throw)) {
-            return $type && $log;
-        }
-
-        if (PHP_VERSION_ID < 50400 && isset($context['GLOBALS']) && ($this->scopedErrors & $type)) {
-            $e = $context;                  // Whatever the signature of the method,
-            unset($e['GLOBALS'], $context); // $context is always a reference in 5.3
-            $context = $e;
-        }
-
-        if (null !== $backtrace && $type & E_ERROR) {
-            // E_ERROR fatal errors are triggered on HHVM when
-            // hhvm.error_handling.call_user_handler_on_fatals=1
-            // which is the way to get their backtrace.
-            $this->handleFatalError(compact('type', 'message', 'file', 'line', 'backtrace'));
-
-            return true;
-        }
-
-        if ($throw) {
-            if (($this->scopedErrors & $type) && class_exists('Symfony\Component\Debug\Exception\ContextErrorException')) {
-                // Checking for class existence is a work around for https://bugs.php.net/42098
-                $throw = new ContextErrorException($this->levels[$type].': '.$message, 0, $type, $file, $line, $context);
-            } else {
-                $throw = new \ErrorException($this->levels[$type].': '.$message, 0, $type, $file, $line);
-            }
-
-            if (PHP_VERSION_ID <= 50407 && (PHP_VERSION_ID >= 50400 || PHP_VERSION_ID <= 50317)) {
-                // Exceptions thrown from error handlers are sometimes not caught by the exception
-                // handler and shutdown handlers are bypassed before 5.4.8/5.3.18.
-                // We temporarily re-enable display_errors to prevent any blank page related to this bug.
-
-                $throw->errorHandlerCanary = new ErrorHandlerCanary();
-            }
-
-            throw $throw;
-        }
-
-        // For duplicated errors, log the trace only once
-        $e = md5("{$type}/{$line}/{$file}\x00{$message}", true);
-        $trace = true;
-
-        if (!($this->tracedErrors & $type) || isset($this->loggedTraces[$e])) {
-            $trace = false;
-        } else {
-            $this->loggedTraces[$e] = 1;
-        }
-
-        $e = compact('type', 'file', 'line', 'level');
-
-        if ($type & $level) {
-            if ($this->scopedErrors & $type) {
-                $e['scope_vars'] = $context;
-                if ($trace) {
-                    $e['stack'] = $backtrace ?: debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT);
-                }
-            } elseif ($trace) {
-                if (null === $backtrace) {
-                    $e['stack'] = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
-                } else {
-                    foreach ($backtrace as &$frame) {
-                        unset($frame['args'], $frame);
-                    }
-                    $e['stack'] = $backtrace;
-                }
-            }
-        }
-
-        if ($this->isRecursive) {
-            $log = 0;
-        } elseif (self::$stackedErrorLevels) {
-            self::$stackedErrors[] = array($this->loggers[$type][0], ($type & $level) ? $this->loggers[$type][1] : LogLevel::DEBUG, $message, $e);
-        } else {
-            try {
-                $this->isRecursive = true;
-                $this->loggers[$type][0]->log(($type & $level) ? $this->loggers[$type][1] : LogLevel::DEBUG, $message, $e);
-                $this->isRecursive = false;
-            } catch (\Exception $e) {
-                $this->isRecursive = false;
-
-                throw $e;
-            }
-        }
-
-        return $type && $log;
-    }
-
-    /**
-     * Handles an exception by logging then forwarding it to another handler.
-     *
-     * @param \Exception|\Throwable $exception An exception to handle
-     * @param array                 $error     An array as returned by error_get_last()
-     *
-     * @internal
-     */
-    public function handleException($exception, array $error = null)
-    {
-        if (!$exception instanceof \Exception) {
-            $exception = new FatalThrowableError($exception);
-        }
-        $type = $exception instanceof FatalErrorException ? $exception->getSeverity() : E_ERROR;
-
-        if ($this->loggedErrors & $type) {
-            $e = array(
-                'type' => $type,
-                'file' => $exception->getFile(),
-                'line' => $exception->getLine(),
-                'level' => error_reporting(),
-                'stack' => $exception->getTrace(),
-            );
-            if ($exception instanceof FatalErrorException) {
-                if ($exception instanceof FatalThrowableError) {
-                    $error = array(
-                        'type' => $type,
-                        'message' => $message = $exception->getMessage(),
-                        'file' => $e['file'],
-                        'line' => $e['line'],
-                    );
-                } else {
-                    $message = 'Fatal '.$exception->getMessage();
-                }
-            } elseif ($exception instanceof \ErrorException) {
-                $message = 'Uncaught '.$exception->getMessage();
-                if ($exception instanceof ContextErrorException) {
-                    $e['context'] = $exception->getContext();
-                }
-            } else {
-                $message = 'Uncaught Exception: '.$exception->getMessage();
-            }
-            if ($this->loggedErrors & $e['type']) {
-                $this->loggers[$e['type']][0]->log($this->loggers[$e['type']][1], $message, $e);
-            }
-        }
-        if ($exception instanceof FatalErrorException && !$exception instanceof OutOfMemoryException && $error) {
-            foreach ($this->getFatalErrorHandlers() as $handler) {
-                if ($e = $handler->handleError($error, $exception)) {
-                    $exception = $e;
-                    break;
-                }
-            }
-        }
-        if (empty($this->exceptionHandler)) {
-            throw $exception; // Give back $exception to the native handler
-        }
-        try {
-            call_user_func($this->exceptionHandler, $exception);
-        } catch (\Exception $handlerException) {
-        } catch (\Throwable $handlerException) {
-        }
-        if (isset($handlerException)) {
-            $this->exceptionHandler = null;
-            $this->handleException($handlerException);
-        }
-    }
-
-    /**
-     * Shutdown registered function for handling PHP fatal errors.
-     *
-     * @param array $error An array as returned by error_get_last()
-     *
-     * @internal
-     */
-    public static function handleFatalError(array $error = null)
-    {
-        if (null === self::$reservedMemory) {
-            return;
-        }
-
-        self::$reservedMemory = null;
-
-        $handler = set_error_handler('var_dump', 0);
-        $handler = is_array($handler) ? $handler[0] : null;
-        restore_error_handler();
-
-        if (!$handler instanceof self) {
-            return;
-        }
-
-        if (null === $error) {
-            $error = error_get_last();
-        }
-
-        try {
-            while (self::$stackedErrorLevels) {
-                static::unstackErrors();
-            }
-        } catch (\Exception $exception) {
-            // Handled below
-        }
-
-        if ($error && $error['type'] &= E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR) {
-            // Let's not throw anymore but keep logging
-            $handler->throwAt(0, true);
-            $trace = isset($error['backtrace']) ? $error['backtrace'] : null;
-
-            if (0 === strpos($error['message'], 'Allowed memory') || 0 === strpos($error['message'], 'Out of memory')) {
-                $exception = new OutOfMemoryException($handler->levels[$error['type']].': '.$error['message'], 0, $error['type'], $error['file'], $error['line'], 2, false, $trace);
-            } else {
-                $exception = new FatalErrorException($handler->levels[$error['type']].': '.$error['message'], 0, $error['type'], $error['file'], $error['line'], 2, true, $trace);
-            }
-        } elseif (!isset($exception)) {
-            return;
-        }
-
-        try {
-            $handler->handleException($exception, $error);
-        } catch (FatalErrorException $e) {
-            // Ignore this re-throw
-        }
-    }
-
-    /**
-     * Configures the error handler for delayed handling.
-     * Ensures also that non-catchable fatal errors are never silenced.
-     *
-     * As shown by http://bugs.php.net/42098 and http://bugs.php.net/60724
-     * PHP has a compile stage where it behaves unusually. To workaround it,
-     * we plug an error handler that only stacks errors for later.
-     *
-     * The most important feature of this is to prevent
-     * autoloading until unstackErrors() is called.
-     */
-    public static function stackErrors()
-    {
-        self::$stackedErrorLevels[] = error_reporting(error_reporting() | E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR);
-    }
-
-    /**
-     * Unstacks stacked errors and forwards to the logger.
-     */
-    public static function unstackErrors()
-    {
-        $level = array_pop(self::$stackedErrorLevels);
-
-        if (null !== $level) {
-            $e = error_reporting($level);
-            if ($e !== ($level | E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR)) {
-                // If the user changed the error level, do not overwrite it
-                error_reporting($e);
-            }
-        }
-
-        if (empty(self::$stackedErrorLevels)) {
-            $errors = self::$stackedErrors;
-            self::$stackedErrors = array();
-
-            foreach ($errors as $e) {
-                $e[0]->log($e[1], $e[2], $e[3]);
-            }
-        }
-    }
-
-    /**
-     * Gets the fatal error handlers.
-     *
-     * Override this method if you want to define more fatal error handlers.
-     *
-     * @return FatalErrorHandlerInterface[] An array of FatalErrorHandlerInterface
-     */
-    protected function getFatalErrorHandlers()
-    {
-        return array(
-            new UndefinedFunctionFatalErrorHandler(),
-            new UndefinedMethodFatalErrorHandler(),
-            new ClassNotFoundFatalErrorHandler(),
-        );
-    }
-
-    /**
-     * Sets the level at which the conversion to Exception is done.
-     *
-     * @param int|null $level The level (null to use the error_reporting() value and 0 to disable)
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use throwAt() instead.
-     */
-    public function setLevel($level)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the throwAt() method instead.', E_USER_DEPRECATED);
-
-        $level = null === $level ? error_reporting() : $level;
-        $this->throwAt($level, true);
-    }
-
-    /**
-     * Sets the display_errors flag value.
-     *
-     * @param int $displayErrors The display_errors flag value
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use throwAt() instead.
-     */
-    public function setDisplayErrors($displayErrors)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the throwAt() method instead.', E_USER_DEPRECATED);
-
-        if ($displayErrors) {
-            $this->throwAt($this->displayErrors, true);
-        } else {
-            $displayErrors = $this->displayErrors;
-            $this->throwAt(0, true);
-            $this->displayErrors = $displayErrors;
-        }
-    }
-
-    /**
-     * Sets a logger for the given channel.
-     *
-     * @param LoggerInterface $logger  A logger interface
-     * @param string          $channel The channel associated with the logger (deprecation, emergency or scream)
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use setLoggers() or setDefaultLogger() instead.
-     */
-    public static function setLogger(LoggerInterface $logger, $channel = 'deprecation')
-    {
-        @trigger_error('The '.__METHOD__.' static method is deprecated since version 2.6 and will be removed in 3.0. Use the setLoggers() or setDefaultLogger() methods instead.', E_USER_DEPRECATED);
-
-        $handler = set_error_handler('var_dump', 0);
-        $handler = is_array($handler) ? $handler[0] : null;
-        restore_error_handler();
-        if (!$handler instanceof self) {
-            return;
-        }
-        if ('deprecation' === $channel) {
-            $handler->setDefaultLogger($logger, E_DEPRECATED | E_USER_DEPRECATED, true);
-            $handler->screamAt(E_DEPRECATED | E_USER_DEPRECATED);
-        } elseif ('scream' === $channel) {
-            $handler->setDefaultLogger($logger, E_ALL | E_STRICT, false);
-            $handler->screamAt(E_ALL | E_STRICT);
-        } elseif ('emergency' === $channel) {
-            $handler->setDefaultLogger($logger, E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR, true);
-            $handler->screamAt(E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR);
-        }
-    }
-
-    /**
-     * @deprecated since version 2.6, to be removed in 3.0. Use handleError() instead.
-     */
-    public function handle($level, $message, $file = 'unknown', $line = 0, $context = array())
-    {
-        $this->handleError(E_USER_DEPRECATED, 'The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the handleError() method instead.', __FILE__, __LINE__, array());
-
-        return $this->handleError($level, $message, $file, $line, (array) $context);
-    }
-
-    /**
-     * Handles PHP fatal errors.
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use handleFatalError() instead.
-     */
-    public function handleFatal()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the handleFatalError() method instead.', E_USER_DEPRECATED);
-
-        static::handleFatalError();
-    }
-}
-
-/**
- * Private class used to work around https://bugs.php.net/54275.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-class ErrorHandlerCanary
-{
-    private static $displayErrors = null;
-
-    public function __construct()
-    {
-        if (null === self::$displayErrors) {
-            self::$displayErrors = ini_set('display_errors', 1);
-        }
-    }
-
-    public function __destruct()
-    {
-        if (null !== self::$displayErrors) {
-            ini_set('display_errors', self::$displayErrors);
-            self::$displayErrors = null;
-        }
-    }
-}
diff --git a/vendor/symfony/debug/Exception/ClassNotFoundException.php b/vendor/symfony/debug/Exception/ClassNotFoundException.php
deleted file mode 100644
index b91bf46..0000000
--- a/vendor/symfony/debug/Exception/ClassNotFoundException.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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\Debug\Exception;
-
-/**
- * Class (or Trait or Interface) Not Found Exception.
- *
- * @author Konstanton Myakshin <koc-dp@yandex.ru>
- */
-class ClassNotFoundException extends FatalErrorException
-{
-    public function __construct($message, \ErrorException $previous)
-    {
-        parent::__construct(
-            $message,
-            $previous->getCode(),
-            $previous->getSeverity(),
-            $previous->getFile(),
-            $previous->getLine(),
-            $previous->getPrevious()
-        );
-        $this->setTrace($previous->getTrace());
-    }
-}
diff --git a/vendor/symfony/debug/Exception/ContextErrorException.php b/vendor/symfony/debug/Exception/ContextErrorException.php
deleted file mode 100644
index 54f0198..0000000
--- a/vendor/symfony/debug/Exception/ContextErrorException.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?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\Debug\Exception;
-
-/**
- * Error Exception with Variable Context.
- *
- * @author Christian Sciberras <uuf6429@gmail.com>
- */
-class ContextErrorException extends \ErrorException
-{
-    private $context = array();
-
-    public function __construct($message, $code, $severity, $filename, $lineno, $context = array())
-    {
-        parent::__construct($message, $code, $severity, $filename, $lineno);
-        $this->context = $context;
-    }
-
-    /**
-     * @return array Array of variables that existed when the exception occurred
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-}
diff --git a/vendor/symfony/debug/Exception/DummyException.php b/vendor/symfony/debug/Exception/DummyException.php
deleted file mode 100644
index c836f87..0000000
--- a/vendor/symfony/debug/Exception/DummyException.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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\Debug\Exception;
-
-@trigger_error('The '.__NAMESPACE__.'\DummyException class is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- */
-class DummyException extends \ErrorException
-{
-}
diff --git a/vendor/symfony/debug/Exception/FatalErrorException.php b/vendor/symfony/debug/Exception/FatalErrorException.php
deleted file mode 100644
index db2fb43..0000000
--- a/vendor/symfony/debug/Exception/FatalErrorException.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?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\Exception;
-
-/**
- * Fatal Error Exception.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Konstanton Myakshin <koc-dp@yandex.ru>
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @deprecated Deprecated in 2.3, to be removed in 3.0. Use the same class from the Debug component instead.
- */
-class FatalErrorException extends \ErrorException
-{
-}
-
-namespace Symfony\Component\Debug\Exception;
-
-use Symfony\Component\HttpKernel\Exception\FatalErrorException as LegacyFatalErrorException;
-
-/**
- * Fatal Error Exception.
- *
- * @author Konstanton Myakshin <koc-dp@yandex.ru>
- */
-class FatalErrorException extends LegacyFatalErrorException
-{
-    public function __construct($message, $code, $severity, $filename, $lineno, $traceOffset = null, $traceArgs = true, array $trace = null)
-    {
-        parent::__construct($message, $code, $severity, $filename, $lineno);
-
-        if (null !== $trace) {
-            if (!$traceArgs) {
-                foreach ($trace as &$frame) {
-                    unset($frame['args'], $frame['this'], $frame);
-                }
-            }
-
-            $this->setTrace($trace);
-        } elseif (null !== $traceOffset) {
-            if (function_exists('xdebug_get_function_stack')) {
-                $trace = xdebug_get_function_stack();
-                if (0 < $traceOffset) {
-                    array_splice($trace, -$traceOffset);
-                }
-
-                foreach ($trace as &$frame) {
-                    if (!isset($frame['type'])) {
-                        // XDebug pre 2.1.1 doesn't currently set the call type key http://bugs.xdebug.org/view.php?id=695
-                        if (isset($frame['class'])) {
-                            $frame['type'] = '::';
-                        }
-                    } elseif ('dynamic' === $frame['type']) {
-                        $frame['type'] = '->';
-                    } elseif ('static' === $frame['type']) {
-                        $frame['type'] = '::';
-                    }
-
-                    // XDebug also has a different name for the parameters array
-                    if (!$traceArgs) {
-                        unset($frame['params'], $frame['args']);
-                    } elseif (isset($frame['params']) && !isset($frame['args'])) {
-                        $frame['args'] = $frame['params'];
-                        unset($frame['params']);
-                    }
-                }
-
-                unset($frame);
-                $trace = array_reverse($trace);
-            } elseif (function_exists('symfony_debug_backtrace')) {
-                $trace = symfony_debug_backtrace();
-                if (0 < $traceOffset) {
-                    array_splice($trace, 0, $traceOffset);
-                }
-            } else {
-                $trace = array();
-            }
-
-            $this->setTrace($trace);
-        }
-    }
-
-    protected function setTrace($trace)
-    {
-        $traceReflector = new \ReflectionProperty('Exception', 'trace');
-        $traceReflector->setAccessible(true);
-        $traceReflector->setValue($this, $trace);
-    }
-}
diff --git a/vendor/symfony/debug/Exception/FatalThrowableError.php b/vendor/symfony/debug/Exception/FatalThrowableError.php
deleted file mode 100644
index 6ff5ecd..0000000
--- a/vendor/symfony/debug/Exception/FatalThrowableError.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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\Debug\Exception;
-
-/**
- * Fatal Throwable Error.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class FatalThrowableError extends FatalErrorException
-{
-    public function __construct(\Throwable $e)
-    {
-        if ($e instanceof \ParseError) {
-            $message = 'Parse error: '.$e->getMessage();
-            $severity = E_PARSE;
-        } elseif ($e instanceof \TypeError) {
-            $message = 'Type error: '.$e->getMessage();
-            $severity = E_RECOVERABLE_ERROR;
-        } else {
-            $message = 'Fatal error: '.$e->getMessage();
-            $severity = E_ERROR;
-        }
-
-        \ErrorException::__construct(
-            $message,
-            $e->getCode(),
-            $severity,
-            $e->getFile(),
-            $e->getLine()
-        );
-
-        $this->setTrace($e->getTrace());
-    }
-}
diff --git a/vendor/symfony/debug/Exception/FlattenException.php b/vendor/symfony/debug/Exception/FlattenException.php
deleted file mode 100644
index d8d5c5b..0000000
--- a/vendor/symfony/debug/Exception/FlattenException.php
+++ /dev/null
@@ -1,292 +0,0 @@
-<?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\Exception;
-
-use Symfony\Component\Debug\Exception\FlattenException as DebugFlattenException;
-
-/**
- * FlattenException wraps a PHP Exception to be able to serialize it.
- *
- * Basically, this class removes all objects from the trace.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated Deprecated in 2.3, to be removed in 3.0. Use the same class from the Debug component instead.
- */
-class FlattenException
-{
-    private $handler;
-
-    public static function __callStatic($method, $args)
-    {
-        if (!method_exists('Symfony\Component\Debug\Exception\FlattenException', $method)) {
-            throw new \BadMethodCallException(sprintf('Call to undefined method %s::%s()', get_called_class(), $method));
-        }
-
-        return call_user_func_array(array('Symfony\Component\Debug\Exception\FlattenException', $method), $args);
-    }
-
-    public function __call($method, $args)
-    {
-        if (!isset($this->handler)) {
-            $this->handler = new DebugFlattenException();
-        }
-
-        if (!method_exists($this->handler, $method)) {
-            throw new \BadMethodCallException(sprintf('Call to undefined method %s::%s()', get_class($this), $method));
-        }
-
-        return call_user_func_array(array($this->handler, $method), $args);
-    }
-}
-
-namespace Symfony\Component\Debug\Exception;
-
-use Symfony\Component\HttpKernel\Exception\FlattenException as LegacyFlattenException;
-use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-
-/**
- * FlattenException wraps a PHP Exception to be able to serialize it.
- *
- * Basically, this class removes all objects from the trace.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FlattenException extends LegacyFlattenException
-{
-    private $message;
-    private $code;
-    private $previous;
-    private $trace;
-    private $class;
-    private $statusCode;
-    private $headers;
-    private $file;
-    private $line;
-
-    public static function create(\Exception $exception, $statusCode = null, array $headers = array())
-    {
-        $e = new static();
-        $e->setMessage($exception->getMessage());
-        $e->setCode($exception->getCode());
-
-        if ($exception instanceof HttpExceptionInterface) {
-            $statusCode = $exception->getStatusCode();
-            $headers = array_merge($headers, $exception->getHeaders());
-        }
-
-        if (null === $statusCode) {
-            $statusCode = 500;
-        }
-
-        $e->setStatusCode($statusCode);
-        $e->setHeaders($headers);
-        $e->setTraceFromException($exception);
-        $e->setClass(get_class($exception));
-        $e->setFile($exception->getFile());
-        $e->setLine($exception->getLine());
-        if ($exception->getPrevious()) {
-            $e->setPrevious(static::create($exception->getPrevious()));
-        }
-
-        return $e;
-    }
-
-    public function toArray()
-    {
-        $exceptions = array();
-        foreach (array_merge(array($this), $this->getAllPrevious()) as $exception) {
-            $exceptions[] = array(
-                'message' => $exception->getMessage(),
-                'class' => $exception->getClass(),
-                'trace' => $exception->getTrace(),
-            );
-        }
-
-        return $exceptions;
-    }
-
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    public function setStatusCode($code)
-    {
-        $this->statusCode = $code;
-    }
-
-    public function getHeaders()
-    {
-        return $this->headers;
-    }
-
-    public function setHeaders(array $headers)
-    {
-        $this->headers = $headers;
-    }
-
-    public function getClass()
-    {
-        return $this->class;
-    }
-
-    public function setClass($class)
-    {
-        $this->class = $class;
-    }
-
-    public function getFile()
-    {
-        return $this->file;
-    }
-
-    public function setFile($file)
-    {
-        $this->file = $file;
-    }
-
-    public function getLine()
-    {
-        return $this->line;
-    }
-
-    public function setLine($line)
-    {
-        $this->line = $line;
-    }
-
-    public function getMessage()
-    {
-        return $this->message;
-    }
-
-    public function setMessage($message)
-    {
-        $this->message = $message;
-    }
-
-    public function getCode()
-    {
-        return $this->code;
-    }
-
-    public function setCode($code)
-    {
-        $this->code = $code;
-    }
-
-    public function getPrevious()
-    {
-        return $this->previous;
-    }
-
-    public function setPrevious(FlattenException $previous)
-    {
-        $this->previous = $previous;
-    }
-
-    public function getAllPrevious()
-    {
-        $exceptions = array();
-        $e = $this;
-        while ($e = $e->getPrevious()) {
-            $exceptions[] = $e;
-        }
-
-        return $exceptions;
-    }
-
-    public function getTrace()
-    {
-        return $this->trace;
-    }
-
-    public function setTraceFromException(\Exception $exception)
-    {
-        $this->setTrace($exception->getTrace(), $exception->getFile(), $exception->getLine());
-    }
-
-    public function setTrace($trace, $file, $line)
-    {
-        $this->trace = array();
-        $this->trace[] = array(
-            'namespace' => '',
-            'short_class' => '',
-            'class' => '',
-            'type' => '',
-            'function' => '',
-            'file' => $file,
-            'line' => $line,
-            'args' => array(),
-        );
-        foreach ($trace as $entry) {
-            $class = '';
-            $namespace = '';
-            if (isset($entry['class'])) {
-                $parts = explode('\\', $entry['class']);
-                $class = array_pop($parts);
-                $namespace = implode('\\', $parts);
-            }
-
-            $this->trace[] = array(
-                'namespace' => $namespace,
-                'short_class' => $class,
-                'class' => isset($entry['class']) ? $entry['class'] : '',
-                'type' => isset($entry['type']) ? $entry['type'] : '',
-                'function' => isset($entry['function']) ? $entry['function'] : null,
-                'file' => isset($entry['file']) ? $entry['file'] : null,
-                'line' => isset($entry['line']) ? $entry['line'] : null,
-                'args' => isset($entry['args']) ? $this->flattenArgs($entry['args']) : array(),
-            );
-        }
-    }
-
-    private function flattenArgs($args, $level = 0, &$count = 0)
-    {
-        $result = array();
-        foreach ($args as $key => $value) {
-            if (++$count > 1e4) {
-                return array('array', '*SKIPPED over 10000 entries*');
-            }
-            if (is_object($value)) {
-                $result[$key] = array('object', get_class($value));
-            } elseif (is_array($value)) {
-                if ($level > 10) {
-                    $result[$key] = array('array', '*DEEP NESTED ARRAY*');
-                } else {
-                    $result[$key] = array('array', $this->flattenArgs($value, $level + 1, $count));
-                }
-            } elseif (null === $value) {
-                $result[$key] = array('null', null);
-            } elseif (is_bool($value)) {
-                $result[$key] = array('boolean', $value);
-            } elseif (is_resource($value)) {
-                $result[$key] = array('resource', get_resource_type($value));
-            } elseif ($value instanceof \__PHP_Incomplete_Class) {
-                // Special case of object, is_object will return false
-                $result[$key] = array('incomplete-object', $this->getClassNameFromIncomplete($value));
-            } else {
-                $result[$key] = array('string', (string) $value);
-            }
-        }
-
-        return $result;
-    }
-
-    private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value)
-    {
-        $array = new \ArrayObject($value);
-
-        return $array['__PHP_Incomplete_Class_Name'];
-    }
-}
diff --git a/vendor/symfony/debug/Exception/OutOfMemoryException.php b/vendor/symfony/debug/Exception/OutOfMemoryException.php
deleted file mode 100644
index fec1979..0000000
--- a/vendor/symfony/debug/Exception/OutOfMemoryException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Debug\Exception;
-
-/**
- * Out of memory exception.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class OutOfMemoryException extends FatalErrorException
-{
-}
diff --git a/vendor/symfony/debug/Exception/UndefinedFunctionException.php b/vendor/symfony/debug/Exception/UndefinedFunctionException.php
deleted file mode 100644
index a66ae2a..0000000
--- a/vendor/symfony/debug/Exception/UndefinedFunctionException.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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\Debug\Exception;
-
-/**
- * Undefined Function Exception.
- *
- * @author Konstanton Myakshin <koc-dp@yandex.ru>
- */
-class UndefinedFunctionException extends FatalErrorException
-{
-    public function __construct($message, \ErrorException $previous)
-    {
-        parent::__construct(
-            $message,
-            $previous->getCode(),
-            $previous->getSeverity(),
-            $previous->getFile(),
-            $previous->getLine(),
-            $previous->getPrevious()
-        );
-        $this->setTrace($previous->getTrace());
-    }
-}
diff --git a/vendor/symfony/debug/Exception/UndefinedMethodException.php b/vendor/symfony/debug/Exception/UndefinedMethodException.php
deleted file mode 100644
index 350dc31..0000000
--- a/vendor/symfony/debug/Exception/UndefinedMethodException.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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\Debug\Exception;
-
-/**
- * Undefined Method Exception.
- *
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- */
-class UndefinedMethodException extends FatalErrorException
-{
-    public function __construct($message, \ErrorException $previous)
-    {
-        parent::__construct(
-            $message,
-            $previous->getCode(),
-            $previous->getSeverity(),
-            $previous->getFile(),
-            $previous->getLine(),
-            $previous->getPrevious()
-        );
-        $this->setTrace($previous->getTrace());
-    }
-}
diff --git a/vendor/symfony/debug/ExceptionHandler.php b/vendor/symfony/debug/ExceptionHandler.php
deleted file mode 100644
index 027b66c..0000000
--- a/vendor/symfony/debug/ExceptionHandler.php
+++ /dev/null
@@ -1,472 +0,0 @@
-<?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\Debug;
-
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\Debug\Exception\FlattenException;
-use Symfony\Component\Debug\Exception\OutOfMemoryException;
-
-/**
- * ExceptionHandler converts an exception to a Response object.
- *
- * It is mostly useful in debug mode to replace the default PHP/XDebug
- * output with something prettier and more useful.
- *
- * As this class is mainly used during Kernel boot, where nothing is yet
- * available, the Response content is always HTML.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class ExceptionHandler
-{
-    private $debug;
-    private $charset;
-    private $handler;
-    private $caughtBuffer;
-    private $caughtLength;
-    private $fileLinkFormat;
-
-    public function __construct($debug = true, $charset = null, $fileLinkFormat = null)
-    {
-        if (false !== strpos($charset, '%')) {
-            // Swap $charset and $fileLinkFormat for BC reasons
-            $pivot = $fileLinkFormat;
-            $fileLinkFormat = $charset;
-            $charset = $pivot;
-        }
-        $this->debug = $debug;
-        $this->charset = $charset ?: ini_get('default_charset') ?: 'UTF-8';
-        $this->fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
-    }
-
-    /**
-     * Registers the exception handler.
-     *
-     * @param bool        $debug          Enable/disable debug mode, where the stack trace is displayed
-     * @param string|null $charset        The charset used by exception messages
-     * @param string|null $fileLinkFormat The IDE link template
-     *
-     * @return ExceptionHandler The registered exception handler
-     */
-    public static function register($debug = true, $charset = null, $fileLinkFormat = null)
-    {
-        $handler = new static($debug, $charset, $fileLinkFormat);
-
-        $prev = set_exception_handler(array($handler, 'handle'));
-        if (is_array($prev) && $prev[0] instanceof ErrorHandler) {
-            restore_exception_handler();
-            $prev[0]->setExceptionHandler(array($handler, 'handle'));
-        }
-
-        return $handler;
-    }
-
-    /**
-     * Sets a user exception handler.
-     *
-     * @param callable $handler An handler that will be called on Exception
-     *
-     * @return callable|null The previous exception handler if any
-     */
-    public function setHandler($handler)
-    {
-        if (null !== $handler && !is_callable($handler)) {
-            throw new \LogicException('The exception handler must be a valid PHP callable.');
-        }
-        $old = $this->handler;
-        $this->handler = $handler;
-
-        return $old;
-    }
-
-    /**
-     * Sets the format for links to source files.
-     *
-     * @param string $format The format for links to source files
-     *
-     * @return string The previous file link format.
-     */
-    public function setFileLinkFormat($format)
-    {
-        $old = $this->fileLinkFormat;
-        $this->fileLinkFormat = $format;
-
-        return $old;
-    }
-
-    /**
-     * Sends a response for the given Exception.
-     *
-     * To be as fail-safe as possible, the exception is first handled
-     * by our simple exception handler, then by the user exception handler.
-     * The latter takes precedence and any output from the former is cancelled,
-     * if and only if nothing bad happens in this handling path.
-     */
-    public function handle(\Exception $exception)
-    {
-        if (null === $this->handler || $exception instanceof OutOfMemoryException) {
-            $this->failSafeHandle($exception);
-
-            return;
-        }
-
-        $caughtLength = $this->caughtLength = 0;
-
-        ob_start(array($this, 'catchOutput'));
-        $this->failSafeHandle($exception);
-        while (null === $this->caughtBuffer && ob_end_flush()) {
-            // Empty loop, everything is in the condition
-        }
-        if (isset($this->caughtBuffer[0])) {
-            ob_start(array($this, 'cleanOutput'));
-            echo $this->caughtBuffer;
-            $caughtLength = ob_get_length();
-        }
-        $this->caughtBuffer = null;
-
-        try {
-            call_user_func($this->handler, $exception);
-            $this->caughtLength = $caughtLength;
-        } catch (\Exception $e) {
-            if (!$caughtLength) {
-                // All handlers failed. Let PHP handle that now.
-                throw $exception;
-            }
-        }
-    }
-
-    /**
-     * Sends a response for the given Exception.
-     *
-     * If you have the Symfony HttpFoundation component installed,
-     * this method will use it to create and send the response. If not,
-     * it will fallback to plain PHP functions.
-     *
-     * @param \Exception $exception An \Exception instance
-     */
-    private function failSafeHandle(\Exception $exception)
-    {
-        if (class_exists('Symfony\Component\HttpFoundation\Response', false)
-            && __CLASS__ !== get_class($this)
-            && ($reflector = new \ReflectionMethod($this, 'createResponse'))
-            && __CLASS__ !== $reflector->class
-        ) {
-            $response = $this->createResponse($exception);
-            $response->sendHeaders();
-            $response->sendContent();
-
-            return;
-        }
-
-        $this->sendPhpResponse($exception);
-    }
-
-    /**
-     * Sends the error associated with the given Exception as a plain PHP response.
-     *
-     * This method uses plain PHP functions like header() and echo to output
-     * the response.
-     *
-     * @param \Exception|FlattenException $exception An \Exception instance
-     */
-    public function sendPhpResponse($exception)
-    {
-        if (!$exception instanceof FlattenException) {
-            $exception = FlattenException::create($exception);
-        }
-
-        if (!headers_sent()) {
-            header(sprintf('HTTP/1.0 %s', $exception->getStatusCode()));
-            foreach ($exception->getHeaders() as $name => $value) {
-                header($name.': '.$value, false);
-            }
-            header('Content-Type: text/html; charset='.$this->charset);
-        }
-
-        echo $this->decorate($this->getContent($exception), $this->getStylesheet($exception));
-    }
-
-    /**
-     * Creates the error Response associated with the given Exception.
-     *
-     * @param \Exception|FlattenException $exception An \Exception instance
-     *
-     * @return Response A Response instance
-     */
-    public function createResponse($exception)
-    {
-        if (!$exception instanceof FlattenException) {
-            $exception = FlattenException::create($exception);
-        }
-
-        return Response::create($this->decorate($this->getContent($exception), $this->getStylesheet($exception)), $exception->getStatusCode(), $exception->getHeaders())->setCharset($this->charset);
-    }
-
-    /**
-     * Gets the HTML content associated with the given exception.
-     *
-     * @param FlattenException $exception A FlattenException instance
-     *
-     * @return string The content as a string
-     */
-    public function getContent(FlattenException $exception)
-    {
-        switch ($exception->getStatusCode()) {
-            case 404:
-                $title = 'Sorry, the page you are looking for could not be found.';
-                break;
-            default:
-                $title = 'Whoops, looks like something went wrong.';
-        }
-
-        $content = '';
-        if ($this->debug) {
-            try {
-                $count = count($exception->getAllPrevious());
-                $total = $count + 1;
-                foreach ($exception->toArray() as $position => $e) {
-                    $ind = $count - $position + 1;
-                    $class = $this->formatClass($e['class']);
-                    $message = nl2br($this->escapeHtml($e['message']));
-                    $content .= sprintf(<<<EOF
-                        <h2 class="block_exception clear_fix">
-                            <span class="exception_counter">%d/%d</span>
-                            <span class="exception_title">%s%s:</span>
-                            <span class="exception_message">%s</span>
-                        </h2>
-                        <div class="block">
-                            <ol class="traces list_exception">
-
-EOF
-                        , $ind, $total, $class, $this->formatPath($e['trace'][0]['file'], $e['trace'][0]['line']), $message);
-                    foreach ($e['trace'] as $trace) {
-                        $content .= '       <li>';
-                        if ($trace['function']) {
-                            $content .= sprintf('at %s%s%s(%s)', $this->formatClass($trace['class']), $trace['type'], $trace['function'], $this->formatArgs($trace['args']));
-                        }
-                        if (isset($trace['file']) && isset($trace['line'])) {
-                            $content .= $this->formatPath($trace['file'], $trace['line']);
-                        }
-                        $content .= "</li>\n";
-                    }
-
-                    $content .= "    </ol>\n</div>\n";
-                }
-            } catch (\Exception $e) {
-                // something nasty happened and we cannot throw an exception anymore
-                if ($this->debug) {
-                    $title = sprintf('Exception thrown when handling an exception (%s: %s)', get_class($e), $this->escapeHtml($e->getMessage()));
-                } else {
-                    $title = 'Whoops, looks like something went wrong.';
-                }
-            }
-        }
-
-        return <<<EOF
-            <div id="sf-resetcontent" class="sf-reset">
-                <h1>$title</h1>
-                $content
-            </div>
-EOF;
-    }
-
-    /**
-     * Gets the stylesheet associated with the given exception.
-     *
-     * @param FlattenException $exception A FlattenException instance
-     *
-     * @return string The stylesheet as a string
-     */
-    public function getStylesheet(FlattenException $exception)
-    {
-        return <<<EOF
-            .sf-reset { font: 11px Verdana, Arial, sans-serif; color: #333 }
-            .sf-reset .clear { clear:both; height:0; font-size:0; line-height:0; }
-            .sf-reset .clear_fix:after { display:block; height:0; clear:both; visibility:hidden; }
-            .sf-reset .clear_fix { display:inline-block; }
-            .sf-reset * html .clear_fix { height:1%; }
-            .sf-reset .clear_fix { display:block; }
-            .sf-reset, .sf-reset .block { margin: auto }
-            .sf-reset abbr { border-bottom: 1px dotted #000; cursor: help; }
-            .sf-reset p { font-size:14px; line-height:20px; color:#868686; padding-bottom:20px }
-            .sf-reset strong { font-weight:bold; }
-            .sf-reset a { color:#6c6159; cursor: default; }
-            .sf-reset a img { border:none; }
-            .sf-reset a:hover { text-decoration:underline; }
-            .sf-reset em { font-style:italic; }
-            .sf-reset h1, .sf-reset h2 { font: 20px Georgia, "Times New Roman", Times, serif }
-            .sf-reset .exception_counter { background-color: #fff; color: #333; padding: 6px; float: left; margin-right: 10px; float: left; display: block; }
-            .sf-reset .exception_title { margin-left: 3em; margin-bottom: 0.7em; display: block; }
-            .sf-reset .exception_message { margin-left: 3em; display: block; }
-            .sf-reset .traces li { font-size:12px; padding: 2px 4px; list-style-type:decimal; margin-left:20px; }
-            .sf-reset .block { background-color:#FFFFFF; padding:10px 28px; margin-bottom:20px;
-                -webkit-border-bottom-right-radius: 16px;
-                -webkit-border-bottom-left-radius: 16px;
-                -moz-border-radius-bottomright: 16px;
-                -moz-border-radius-bottomleft: 16px;
-                border-bottom-right-radius: 16px;
-                border-bottom-left-radius: 16px;
-                border-bottom:1px solid #ccc;
-                border-right:1px solid #ccc;
-                border-left:1px solid #ccc;
-            }
-            .sf-reset .block_exception { background-color:#ddd; color: #333; padding:20px;
-                -webkit-border-top-left-radius: 16px;
-                -webkit-border-top-right-radius: 16px;
-                -moz-border-radius-topleft: 16px;
-                -moz-border-radius-topright: 16px;
-                border-top-left-radius: 16px;
-                border-top-right-radius: 16px;
-                border-top:1px solid #ccc;
-                border-right:1px solid #ccc;
-                border-left:1px solid #ccc;
-                overflow: hidden;
-                word-wrap: break-word;
-            }
-            .sf-reset a { background:none; color:#868686; text-decoration:none; }
-            .sf-reset a:hover { background:none; color:#313131; text-decoration:underline; }
-            .sf-reset ol { padding: 10px 0; }
-            .sf-reset h1 { background-color:#FFFFFF; padding: 15px 28px; margin-bottom: 20px;
-                -webkit-border-radius: 10px;
-                -moz-border-radius: 10px;
-                border-radius: 10px;
-                border: 1px solid #ccc;
-            }
-EOF;
-    }
-
-    private function decorate($content, $css)
-    {
-        return <<<EOF
-<!DOCTYPE html>
-<html>
-    <head>
-        <meta charset="{$this->charset}" />
-        <meta name="robots" content="noindex,nofollow" />
-        <style>
-            /* Copyright (c) 2010, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.com/yui/license.html */
-            html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}
-
-            html { background: #eee; padding: 10px }
-            img { border: 0; }
-            #sf-resetcontent { width:970px; margin:0 auto; }
-            $css
-        </style>
-    </head>
-    <body>
-        $content
-    </body>
-</html>
-EOF;
-    }
-
-    private function formatClass($class)
-    {
-        $parts = explode('\\', $class);
-
-        return sprintf('<abbr title="%s">%s</abbr>', $class, array_pop($parts));
-    }
-
-    private function formatPath($path, $line)
-    {
-        $path = $this->escapeHtml($path);
-        $file = preg_match('#[^/\\\\]*$#', $path, $file) ? $file[0] : $path;
-
-        if ($linkFormat = $this->fileLinkFormat) {
-            $link = strtr($this->escapeHtml($linkFormat), array('%f' => $path, '%l' => (int) $line));
-
-            return sprintf(' in <a href="%s" title="Go to source">%s line %d</a>', $link, $file, $line);
-        }
-
-        return sprintf(' in <a title="%s line %3$d" ondblclick="var f=this.innerHTML;this.innerHTML=this.title;this.title=f;">%s line %d</a>', $path, $file, $line);
-    }
-
-    /**
-     * Formats an array as a string.
-     *
-     * @param array $args The argument array
-     *
-     * @return string
-     */
-    private function formatArgs(array $args)
-    {
-        $result = array();
-        foreach ($args as $key => $item) {
-            if ('object' === $item[0]) {
-                $formattedValue = sprintf('<em>object</em>(%s)', $this->formatClass($item[1]));
-            } elseif ('array' === $item[0]) {
-                $formattedValue = sprintf('<em>array</em>(%s)', is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]);
-            } elseif ('string' === $item[0]) {
-                $formattedValue = sprintf("'%s'", $this->escapeHtml($item[1]));
-            } elseif ('null' === $item[0]) {
-                $formattedValue = '<em>null</em>';
-            } elseif ('boolean' === $item[0]) {
-                $formattedValue = '<em>'.strtolower(var_export($item[1], true)).'</em>';
-            } elseif ('resource' === $item[0]) {
-                $formattedValue = '<em>resource</em>';
-            } else {
-                $formattedValue = str_replace("\n", '', var_export($this->escapeHtml((string) $item[1]), true));
-            }
-
-            $result[] = is_int($key) ? $formattedValue : sprintf("'%s' => %s", $key, $formattedValue);
-        }
-
-        return implode(', ', $result);
-    }
-
-    /**
-     * Returns an UTF-8 and HTML encoded string.
-     *
-     * @deprecated since version 2.7, to be removed in 3.0.
-     */
-    protected static function utf8Htmlize($str)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.7 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        return htmlspecialchars($str, ENT_QUOTES | (PHP_VERSION_ID >= 50400 ? ENT_SUBSTITUTE : 0), 'UTF-8');
-    }
-
-    /**
-     * HTML-encodes a string.
-     */
-    private function escapeHtml($str)
-    {
-        return htmlspecialchars($str, ENT_QUOTES | (PHP_VERSION_ID >= 50400 ? ENT_SUBSTITUTE : 0), $this->charset);
-    }
-
-    /**
-     * @internal
-     */
-    public function catchOutput($buffer)
-    {
-        $this->caughtBuffer = $buffer;
-
-        return '';
-    }
-
-    /**
-     * @internal
-     */
-    public function cleanOutput($buffer)
-    {
-        if ($this->caughtLength) {
-            // use substr_replace() instead of substr() for mbstring overloading resistance
-            $cleanBuffer = substr_replace($buffer, '', 0, $this->caughtLength);
-            if (isset($cleanBuffer[0])) {
-                $buffer = $cleanBuffer;
-            }
-        }
-
-        return $buffer;
-    }
-}
diff --git a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
deleted file mode 100644
index abfe90d..0000000
--- a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
+++ /dev/null
@@ -1,212 +0,0 @@
-<?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\Debug\FatalErrorHandler;
-
-use Symfony\Component\Debug\Exception\ClassNotFoundException;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\DebugClassLoader;
-use Composer\Autoload\ClassLoader as ComposerClassLoader;
-use Symfony\Component\ClassLoader\ClassLoader as SymfonyClassLoader;
-use Symfony\Component\ClassLoader\UniversalClassLoader as SymfonyUniversalClassLoader;
-
-/**
- * ErrorHandler for classes that do not exist.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ClassNotFoundFatalErrorHandler implements FatalErrorHandlerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function handleError(array $error, FatalErrorException $exception)
-    {
-        $messageLen = strlen($error['message']);
-        $notFoundSuffix = '\' not found';
-        $notFoundSuffixLen = strlen($notFoundSuffix);
-        if ($notFoundSuffixLen > $messageLen) {
-            return;
-        }
-
-        if (0 !== substr_compare($error['message'], $notFoundSuffix, -$notFoundSuffixLen)) {
-            return;
-        }
-
-        foreach (array('class', 'interface', 'trait') as $typeName) {
-            $prefix = ucfirst($typeName).' \'';
-            $prefixLen = strlen($prefix);
-            if (0 !== strpos($error['message'], $prefix)) {
-                continue;
-            }
-
-            $fullyQualifiedClassName = substr($error['message'], $prefixLen, -$notFoundSuffixLen);
-            if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedClassName, '\\')) {
-                $className = substr($fullyQualifiedClassName, $namespaceSeparatorIndex + 1);
-                $namespacePrefix = substr($fullyQualifiedClassName, 0, $namespaceSeparatorIndex);
-                $message = sprintf('Attempted to load %s "%s" from namespace "%s".', $typeName, $className, $namespacePrefix);
-                $tail = ' for another namespace?';
-            } else {
-                $className = $fullyQualifiedClassName;
-                $message = sprintf('Attempted to load %s "%s" from the global namespace.', $typeName, $className);
-                $tail = '?';
-            }
-
-            if ($candidates = $this->getClassCandidates($className)) {
-                $tail = array_pop($candidates).'"?';
-                if ($candidates) {
-                    $tail = ' for e.g. "'.implode('", "', $candidates).'" or "'.$tail;
-                } else {
-                    $tail = ' for "'.$tail;
-                }
-            }
-            $message .= "\nDid you forget a \"use\" statement".$tail;
-
-            return new ClassNotFoundException($message, $exception);
-        }
-    }
-
-    /**
-     * Tries to guess the full namespace for a given class name.
-     *
-     * By default, it looks for PSR-0 and PSR-4 classes registered via a Symfony or a Composer
-     * autoloader (that should cover all common cases).
-     *
-     * @param string $class A class name (without its namespace)
-     *
-     * @return array An array of possible fully qualified class names
-     */
-    private function getClassCandidates($class)
-    {
-        if (!is_array($functions = spl_autoload_functions())) {
-            return array();
-        }
-
-        // find Symfony and Composer autoloaders
-        $classes = array();
-
-        foreach ($functions as $function) {
-            if (!is_array($function)) {
-                continue;
-            }
-            // get class loaders wrapped by DebugClassLoader
-            if ($function[0] instanceof DebugClassLoader) {
-                $function = $function[0]->getClassLoader();
-
-                // @deprecated since version 2.5. Returning an object from DebugClassLoader::getClassLoader() is deprecated.
-                if (is_object($function)) {
-                    $function = array($function);
-                }
-
-                if (!is_array($function)) {
-                    continue;
-                }
-            }
-
-            if ($function[0] instanceof ComposerClassLoader || $function[0] instanceof SymfonyClassLoader || $function[0] instanceof SymfonyUniversalClassLoader) {
-                foreach ($function[0]->getPrefixes() as $prefix => $paths) {
-                    foreach ($paths as $path) {
-                        $classes = array_merge($classes, $this->findClassInPath($path, $class, $prefix));
-                    }
-                }
-            }
-            if ($function[0] instanceof ComposerClassLoader) {
-                foreach ($function[0]->getPrefixesPsr4() as $prefix => $paths) {
-                    foreach ($paths as $path) {
-                        $classes = array_merge($classes, $this->findClassInPath($path, $class, $prefix));
-                    }
-                }
-            }
-        }
-
-        return array_unique($classes);
-    }
-
-    /**
-     * @param string $path
-     * @param string $class
-     * @param string $prefix
-     *
-     * @return array
-     */
-    private function findClassInPath($path, $class, $prefix)
-    {
-        if (!$path = realpath($path.'/'.strtr($prefix, '\\_', '//')) ?: realpath($path.'/'.dirname(strtr($prefix, '\\_', '//'))) ?: realpath($path)) {
-            return array();
-        }
-
-        $classes = array();
-        $filename = $class.'.php';
-        foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
-            if ($filename == $file->getFileName() && $class = $this->convertFileToClass($path, $file->getPathName(), $prefix)) {
-                $classes[] = $class;
-            }
-        }
-
-        return $classes;
-    }
-
-    /**
-     * @param string $path
-     * @param string $file
-     * @param string $prefix
-     *
-     * @return string|null
-     */
-    private function convertFileToClass($path, $file, $prefix)
-    {
-        $candidates = array(
-            // namespaced class
-            $namespacedClass = str_replace(array($path.DIRECTORY_SEPARATOR, '.php', '/'), array('', '', '\\'), $file),
-            // namespaced class (with target dir)
-            $prefix.$namespacedClass,
-            // namespaced class (with target dir and separator)
-            $prefix.'\\'.$namespacedClass,
-            // PEAR class
-            str_replace('\\', '_', $namespacedClass),
-            // PEAR class (with target dir)
-            str_replace('\\', '_', $prefix.$namespacedClass),
-            // PEAR class (with target dir and separator)
-            str_replace('\\', '_', $prefix.'\\'.$namespacedClass),
-        );
-
-        if ($prefix) {
-            $candidates = array_filter($candidates, function ($candidate) use ($prefix) {return 0 === strpos($candidate, $prefix);});
-        }
-
-        // We cannot use the autoloader here as most of them use require; but if the class
-        // is not found, the new autoloader call will require the file again leading to a
-        // "cannot redeclare class" error.
-        foreach ($candidates as $candidate) {
-            if ($this->classExists($candidate)) {
-                return $candidate;
-            }
-        }
-
-        require_once $file;
-
-        foreach ($candidates as $candidate) {
-            if ($this->classExists($candidate)) {
-                return $candidate;
-            }
-        }
-    }
-
-    /**
-     * @param string $class
-     *
-     * @return bool
-     */
-    private function classExists($class)
-    {
-        return class_exists($class, false) || interface_exists($class, false) || (function_exists('trait_exists') && trait_exists($class, false));
-    }
-}
diff --git a/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php b/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php
deleted file mode 100644
index 6b87eb3..0000000
--- a/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Debug\FatalErrorHandler;
-
-use Symfony\Component\Debug\Exception\FatalErrorException;
-
-/**
- * Attempts to convert fatal errors to exceptions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface FatalErrorHandlerInterface
-{
-    /**
-     * Attempts to convert an error into an exception.
-     *
-     * @param array               $error     An array as returned by error_get_last()
-     * @param FatalErrorException $exception A FatalErrorException instance
-     *
-     * @return FatalErrorException|null A FatalErrorException instance if the class is able to convert the error, null otherwise
-     */
-    public function handleError(array $error, FatalErrorException $exception);
-}
diff --git a/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php
deleted file mode 100644
index c6f391a..0000000
--- a/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?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\Debug\FatalErrorHandler;
-
-use Symfony\Component\Debug\Exception\UndefinedFunctionException;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-
-/**
- * ErrorHandler for undefined functions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class UndefinedFunctionFatalErrorHandler implements FatalErrorHandlerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function handleError(array $error, FatalErrorException $exception)
-    {
-        $messageLen = strlen($error['message']);
-        $notFoundSuffix = '()';
-        $notFoundSuffixLen = strlen($notFoundSuffix);
-        if ($notFoundSuffixLen > $messageLen) {
-            return;
-        }
-
-        if (0 !== substr_compare($error['message'], $notFoundSuffix, -$notFoundSuffixLen)) {
-            return;
-        }
-
-        $prefix = 'Call to undefined function ';
-        $prefixLen = strlen($prefix);
-        if (0 !== strpos($error['message'], $prefix)) {
-            return;
-        }
-
-        $fullyQualifiedFunctionName = substr($error['message'], $prefixLen, -$notFoundSuffixLen);
-        if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedFunctionName, '\\')) {
-            $functionName = substr($fullyQualifiedFunctionName, $namespaceSeparatorIndex + 1);
-            $namespacePrefix = substr($fullyQualifiedFunctionName, 0, $namespaceSeparatorIndex);
-            $message = sprintf('Attempted to call function "%s" from namespace "%s".', $functionName, $namespacePrefix);
-        } else {
-            $functionName = $fullyQualifiedFunctionName;
-            $message = sprintf('Attempted to call function "%s" from the global namespace.', $functionName);
-        }
-
-        $candidates = array();
-        foreach (get_defined_functions() as $type => $definedFunctionNames) {
-            foreach ($definedFunctionNames as $definedFunctionName) {
-                if (false !== $namespaceSeparatorIndex = strrpos($definedFunctionName, '\\')) {
-                    $definedFunctionNameBasename = substr($definedFunctionName, $namespaceSeparatorIndex + 1);
-                } else {
-                    $definedFunctionNameBasename = $definedFunctionName;
-                }
-
-                if ($definedFunctionNameBasename === $functionName) {
-                    $candidates[] = '\\'.$definedFunctionName;
-                }
-            }
-        }
-
-        if ($candidates) {
-            sort($candidates);
-            $last = array_pop($candidates).'"?';
-            if ($candidates) {
-                $candidates = 'e.g. "'.implode('", "', $candidates).'" or "'.$last;
-            } else {
-                $candidates = '"'.$last;
-            }
-            $message .= "\nDid you mean to call ".$candidates;
-        }
-
-        return new UndefinedFunctionException($message, $exception);
-    }
-}
diff --git a/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php
deleted file mode 100644
index f734d6b..0000000
--- a/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?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\Debug\FatalErrorHandler;
-
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\Exception\UndefinedMethodException;
-
-/**
- * ErrorHandler for undefined methods.
- *
- * @author Grégoire Pineau <lyrixx@lyrixx.info>
- */
-class UndefinedMethodFatalErrorHandler implements FatalErrorHandlerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function handleError(array $error, FatalErrorException $exception)
-    {
-        preg_match('/^Call to undefined method (.*)::(.*)\(\)$/', $error['message'], $matches);
-        if (!$matches) {
-            return;
-        }
-
-        $className = $matches[1];
-        $methodName = $matches[2];
-
-        $message = sprintf('Attempted to call an undefined method named "%s" of class "%s".', $methodName, $className);
-
-        $candidates = array();
-        foreach (get_class_methods($className) as $definedMethodName) {
-            $lev = levenshtein($methodName, $definedMethodName);
-            if ($lev <= strlen($methodName) / 3 || false !== strpos($definedMethodName, $methodName)) {
-                $candidates[] = $definedMethodName;
-            }
-        }
-
-        if ($candidates) {
-            sort($candidates);
-            $last = array_pop($candidates).'"?';
-            if ($candidates) {
-                $candidates = 'e.g. "'.implode('", "', $candidates).'" or "'.$last;
-            } else {
-                $candidates = '"'.$last;
-            }
-            $message .= "\nDid you mean to call ".$candidates;
-        }
-
-        return new UndefinedMethodException($message, $exception);
-    }
-}
diff --git a/vendor/symfony/debug/LICENSE b/vendor/symfony/debug/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/debug/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/debug/README.md b/vendor/symfony/debug/README.md
deleted file mode 100644
index 67e6d6c..0000000
--- a/vendor/symfony/debug/README.md
+++ /dev/null
@@ -1,43 +0,0 @@
-Debug Component
-===============
-
-Debug provides tools to make debugging easier.
-
-Enabling all debug tools is as easy as calling the `enable()` method on the
-main `Debug` class:
-
-```php
-use Symfony\Component\Debug\Debug;
-
-Debug::enable();
-```
-
-You can also use the tools individually:
-
-```php
-use Symfony\Component\Debug\ErrorHandler;
-use Symfony\Component\Debug\ExceptionHandler;
-
-if ('cli' !== php_sapi_name()) {
-    ini_set('display_errors', 0);
-    ExceptionHandler::register();
-} elseif (!ini_get('log_errors') || ini_get('error_log')) {
-    ini_set('display_errors', 1);
-}
-ErrorHandler::register();
-```
-
-Note that the `Debug::enable()` call also registers the debug class loader
-from the Symfony ClassLoader component when available.
-
-This component can optionally take advantage of the features of the HttpKernel
-and HttpFoundation components.
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/Debug/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/debug/Resources/ext/README.md b/vendor/symfony/debug/Resources/ext/README.md
deleted file mode 100644
index 0672ef8..0000000
--- a/vendor/symfony/debug/Resources/ext/README.md
+++ /dev/null
@@ -1,133 +0,0 @@
-Symfony Debug Extension
-=======================
-
-This extension publishes several functions to help building powerful debugging tools.
-
-symfony_zval_info()
--------------------
-
-- exposes zval_hash/refcounts, allowing e.g. efficient exploration of arbitrary structures in PHP,
-- does work with references, preventing memory copying.
-
-Its behavior is about the same as:
-
-```php
-<?php
-
-function symfony_zval_info($key, $array, $options = 0)
-{
-
-    // $options is currently not used, but could be in future version.
-
-    if (!array_key_exists($key, $array)) {
-        return null;
-    }
-
-    $info = array(
-        'type' => gettype($array[$key]),
-        'zval_hash' => /* hashed memory address of $array[$key] */,
-        'zval_refcount' => /* internal zval refcount of $array[$key] */,
-        'zval_isref' => /* is_ref status of $array[$key] */,
-    );
-
-    switch ($info['type']) {
-        case 'object':
-            $info += array(
-                'object_class' => get_class($array[$key]),
-                'object_refcount' => /* internal object refcount of $array[$key] */,
-                'object_hash' => spl_object_hash($array[$key]),
-                'object_handle' => /* internal object handle $array[$key] */,
-            );
-            break;
-
-        case 'resource':
-            $info += array(
-                'resource_handle' => (int) $array[$key],
-                'resource_type' => get_resource_type($array[$key]),
-                'resource_refcount' => /* internal resource refcount of $array[$key] */,
-            );
-            break;
-
-        case 'array':
-            $info += array(
-                'array_count' => count($array[$key]),
-            );
-            break;
-
-        case 'string':
-            $info += array(
-                'strlen' => strlen($array[$key]),
-            );
-            break;
-    }
-
-    return $info;
-}
-```
-
-symfony_debug_backtrace()
--------------------------
-
-This function works like debug_backtrace(), except that it can fetch the full backtrace in case of fatal errors:
-
-```php
-function foo() { fatal(); }
-function bar() { foo(); }
-
-function sd() { var_dump(symfony_debug_backtrace()); }
-
-register_shutdown_function('sd');
-
-bar();
-
-/* Will output
-Fatal error: Call to undefined function fatal() in foo.php on line 42
-array(3) {
-  [0]=>
-  array(2) {
-    ["function"]=>
-    string(2) "sd"
-    ["args"]=>
-    array(0) {
-    }
-  }
-  [1]=>
-  array(4) {
-    ["file"]=>
-    string(7) "foo.php"
-    ["line"]=>
-    int(1)
-    ["function"]=>
-    string(3) "foo"
-    ["args"]=>
-    array(0) {
-    }
-  }
-  [2]=>
-  array(4) {
-    ["file"]=>
-    string(102) "foo.php"
-    ["line"]=>
-    int(2)
-    ["function"]=>
-    string(3) "bar"
-    ["args"]=>
-    array(0) {
-    }
-  }
-}
-*/
-```
-
-Usage
------
-
-The extension is compatible with ZTS mode, and should be supported by PHP5.3, 5.4, 5.5 and 5.6.
-To enable the extension from source, run:
-
-```
-    phpize
-    ./configure
-    make
-    sudo make install
-```
diff --git a/vendor/symfony/debug/Resources/ext/config.m4 b/vendor/symfony/debug/Resources/ext/config.m4
deleted file mode 100644
index 3c56047..0000000
--- a/vendor/symfony/debug/Resources/ext/config.m4
+++ /dev/null
@@ -1,63 +0,0 @@
-dnl $Id$
-dnl config.m4 for extension symfony_debug
-
-dnl Comments in this file start with the string 'dnl'.
-dnl Remove where necessary. This file will not work
-dnl without editing.
-
-dnl If your extension references something external, use with:
-
-dnl PHP_ARG_WITH(symfony_debug, for symfony_debug support,
-dnl Make sure that the comment is aligned:
-dnl [  --with-symfony_debug             Include symfony_debug support])
-
-dnl Otherwise use enable:
-
-PHP_ARG_ENABLE(symfony_debug, whether to enable symfony_debug support,
-dnl Make sure that the comment is aligned:
-[  --enable-symfony_debug           Enable symfony_debug support])
-
-if test "$PHP_SYMFONY_DEBUG" != "no"; then
-  dnl Write more examples of tests here...
-
-  dnl # --with-symfony_debug -> check with-path
-  dnl SEARCH_PATH="/usr/local /usr"     # you might want to change this
-  dnl SEARCH_FOR="/include/symfony_debug.h"  # you most likely want to change this
-  dnl if test -r $PHP_SYMFONY_DEBUG/$SEARCH_FOR; then # path given as parameter
-  dnl   SYMFONY_DEBUG_DIR=$PHP_SYMFONY_DEBUG
-  dnl else # search default path list
-  dnl   AC_MSG_CHECKING([for symfony_debug files in default path])
-  dnl   for i in $SEARCH_PATH ; do
-  dnl     if test -r $i/$SEARCH_FOR; then
-  dnl       SYMFONY_DEBUG_DIR=$i
-  dnl       AC_MSG_RESULT(found in $i)
-  dnl     fi
-  dnl   done
-  dnl fi
-  dnl
-  dnl if test -z "$SYMFONY_DEBUG_DIR"; then
-  dnl   AC_MSG_RESULT([not found])
-  dnl   AC_MSG_ERROR([Please reinstall the symfony_debug distribution])
-  dnl fi
-
-  dnl # --with-symfony_debug -> add include path
-  dnl PHP_ADD_INCLUDE($SYMFONY_DEBUG_DIR/include)
-
-  dnl # --with-symfony_debug -> check for lib and symbol presence
-  dnl LIBNAME=symfony_debug # you may want to change this
-  dnl LIBSYMBOL=symfony_debug # you most likely want to change this 
-
-  dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
-  dnl [
-  dnl   PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $SYMFONY_DEBUG_DIR/lib, SYMFONY_DEBUG_SHARED_LIBADD)
-  dnl   AC_DEFINE(HAVE_SYMFONY_DEBUGLIB,1,[ ])
-  dnl ],[
-  dnl   AC_MSG_ERROR([wrong symfony_debug lib version or lib not found])
-  dnl ],[
-  dnl   -L$SYMFONY_DEBUG_DIR/lib -lm
-  dnl ])
-  dnl
-  dnl PHP_SUBST(SYMFONY_DEBUG_SHARED_LIBADD)
-
-  PHP_NEW_EXTENSION(symfony_debug, symfony_debug.c, $ext_shared)
-fi
diff --git a/vendor/symfony/debug/Resources/ext/config.w32 b/vendor/symfony/debug/Resources/ext/config.w32
deleted file mode 100644
index 487e691..0000000
--- a/vendor/symfony/debug/Resources/ext/config.w32
+++ /dev/null
@@ -1,13 +0,0 @@
-// $Id$
-// vim:ft=javascript
-
-// If your extension references something external, use ARG_WITH
-// ARG_WITH("symfony_debug", "for symfony_debug support", "no");
-
-// Otherwise, use ARG_ENABLE
-// ARG_ENABLE("symfony_debug", "enable symfony_debug support", "no");
-
-if (PHP_SYMFONY_DEBUG != "no") {
-	EXTENSION("symfony_debug", "symfony_debug.c");
-}
-
diff --git a/vendor/symfony/debug/Resources/ext/php_symfony_debug.h b/vendor/symfony/debug/Resources/ext/php_symfony_debug.h
deleted file mode 100644
index 26d0e8c..0000000
--- a/vendor/symfony/debug/Resources/ext/php_symfony_debug.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef PHP_SYMFONY_DEBUG_H
-#define PHP_SYMFONY_DEBUG_H
-
-extern zend_module_entry symfony_debug_module_entry;
-#define phpext_symfony_debug_ptr &symfony_debug_module_entry
-
-#define PHP_SYMFONY_DEBUG_VERSION "2.7"
-
-#ifdef PHP_WIN32
-#	define PHP_SYMFONY_DEBUG_API __declspec(dllexport)
-#elif defined(__GNUC__) && __GNUC__ >= 4
-#	define PHP_SYMFONY_DEBUG_API __attribute__ ((visibility("default")))
-#else
-#	define PHP_SYMFONY_DEBUG_API
-#endif
-
-#ifdef ZTS
-#include "TSRM.h"
-#endif
-
-ZEND_BEGIN_MODULE_GLOBALS(symfony_debug)
-	intptr_t req_rand_init;
-	void (*old_error_cb)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args);
-	zval *debug_bt;
-ZEND_END_MODULE_GLOBALS(symfony_debug)
-
-PHP_MINIT_FUNCTION(symfony_debug);
-PHP_MSHUTDOWN_FUNCTION(symfony_debug);
-PHP_RINIT_FUNCTION(symfony_debug);
-PHP_RSHUTDOWN_FUNCTION(symfony_debug);
-PHP_MINFO_FUNCTION(symfony_debug);
-PHP_GINIT_FUNCTION(symfony_debug);
-PHP_GSHUTDOWN_FUNCTION(symfony_debug);
-
-PHP_FUNCTION(symfony_zval_info);
-PHP_FUNCTION(symfony_debug_backtrace);
-
-static char *_symfony_debug_memory_address_hash(void * TSRMLS_DC);
-static const char *_symfony_debug_zval_type(zval *);
-static const char* _symfony_debug_get_resource_type(long TSRMLS_DC);
-static int _symfony_debug_get_resource_refcount(long TSRMLS_DC);
-
-void symfony_debug_error_cb(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args);
-
-#ifdef ZTS
-#define SYMFONY_DEBUG_G(v) TSRMG(symfony_debug_globals_id, zend_symfony_debug_globals *, v)
-#else
-#define SYMFONY_DEBUG_G(v) (symfony_debug_globals.v)
-#endif
-
-#endif	/* PHP_SYMFONY_DEBUG_H */
diff --git a/vendor/symfony/debug/Resources/ext/symfony_debug.c b/vendor/symfony/debug/Resources/ext/symfony_debug.c
deleted file mode 100644
index 0d7cb60..0000000
--- a/vendor/symfony/debug/Resources/ext/symfony_debug.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "php.h"
-#ifdef ZTS
-#include "TSRM.h"
-#endif
-#include "php_ini.h"
-#include "ext/standard/info.h"
-#include "php_symfony_debug.h"
-#include "ext/standard/php_rand.h"
-#include "ext/standard/php_lcg.h"
-#include "ext/spl/php_spl.h"
-#include "Zend/zend_gc.h"
-#include "Zend/zend_builtin_functions.h"
-#include "Zend/zend_extensions.h" /* for ZEND_EXTENSION_API_NO */
-#include "ext/standard/php_array.h"
-#include "Zend/zend_interfaces.h"
-#include "SAPI.h"
-
-#define IS_PHP_53 ZEND_EXTENSION_API_NO == 220090626
-
-ZEND_DECLARE_MODULE_GLOBALS(symfony_debug)
-
-ZEND_BEGIN_ARG_INFO_EX(symfony_zval_arginfo, 0, 0, 2)
-	ZEND_ARG_INFO(0, key)
-	ZEND_ARG_ARRAY_INFO(0, array, 0)
-	ZEND_ARG_INFO(0, options)
-ZEND_END_ARG_INFO()
-
-const zend_function_entry symfony_debug_functions[] = {
-	PHP_FE(symfony_zval_info,	symfony_zval_arginfo)
-	PHP_FE(symfony_debug_backtrace, NULL)
-	PHP_FE_END
-};
-
-PHP_FUNCTION(symfony_debug_backtrace)
-{
-	if (zend_parse_parameters_none() == FAILURE) {
-		return;
-	}
-#if IS_PHP_53
-	zend_fetch_debug_backtrace(return_value, 1, 0 TSRMLS_CC);
-#else
-	zend_fetch_debug_backtrace(return_value, 1, 0, 0 TSRMLS_CC);
-#endif
-
-	if (!SYMFONY_DEBUG_G(debug_bt)) {
-		return;
-	}
-
-	php_array_merge(Z_ARRVAL_P(return_value), Z_ARRVAL_P(SYMFONY_DEBUG_G(debug_bt)), 0 TSRMLS_CC);
-}
-
-PHP_FUNCTION(symfony_zval_info)
-{
-	zval *key = NULL, *arg = NULL;
-	zval **data = NULL;
-	HashTable *array = NULL;
-	long options = 0;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zh|l", &key, &array, &options) == FAILURE) {
-		return;
-	}
-
-	switch (Z_TYPE_P(key)) {
-		case IS_STRING:
-			if (zend_symtable_find(array, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, (void **)&data) == FAILURE) {
-				return;
-			}
-		break;
-		case IS_LONG:
-			if (zend_hash_index_find(array, Z_LVAL_P(key), (void **)&data)) {
-				return;
-			}
-		break;
-	}
-
-	arg = *data;
-
-	array_init(return_value);
-
-	add_assoc_string(return_value, "type", (char *)_symfony_debug_zval_type(arg), 1);
-	add_assoc_stringl(return_value, "zval_hash", _symfony_debug_memory_address_hash((void *)arg TSRMLS_CC), 16, 0);
-	add_assoc_long(return_value, "zval_refcount", Z_REFCOUNT_P(arg));
-	add_assoc_bool(return_value, "zval_isref", (zend_bool)Z_ISREF_P(arg));
-
-	if (Z_TYPE_P(arg) == IS_OBJECT) {
-		char hash[33] = {0};
-
-		php_spl_object_hash(arg, (char *)hash TSRMLS_CC);
-		add_assoc_stringl(return_value, "object_class", (char *)Z_OBJCE_P(arg)->name, Z_OBJCE_P(arg)->name_length, 1);
-		add_assoc_long(return_value, "object_refcount", EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(arg)].bucket.obj.refcount);
-		add_assoc_string(return_value, "object_hash", hash, 1);
-		add_assoc_long(return_value, "object_handle", Z_OBJ_HANDLE_P(arg));
-	} else if (Z_TYPE_P(arg) == IS_ARRAY) {
-		add_assoc_long(return_value, "array_count", zend_hash_num_elements(Z_ARRVAL_P(arg)));
-	} else if(Z_TYPE_P(arg) == IS_RESOURCE) {
-		add_assoc_long(return_value, "resource_handle", Z_LVAL_P(arg));
-		add_assoc_string(return_value, "resource_type", (char *)_symfony_debug_get_resource_type(Z_LVAL_P(arg) TSRMLS_CC), 1);
-		add_assoc_long(return_value, "resource_refcount", _symfony_debug_get_resource_refcount(Z_LVAL_P(arg) TSRMLS_CC));
-	} else if (Z_TYPE_P(arg) == IS_STRING) {
-		add_assoc_long(return_value, "strlen", Z_STRLEN_P(arg));
-	}
-}
-
-void symfony_debug_error_cb(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args)
-{
-	TSRMLS_FETCH();
-	zval *retval;
-
-	switch (type) {
-		case E_ERROR:
-		case E_PARSE:
-		case E_CORE_ERROR:
-		case E_CORE_WARNING:
-		case E_COMPILE_ERROR:
-		case E_COMPILE_WARNING:
-			ALLOC_INIT_ZVAL(retval);
-#if IS_PHP_53
-			zend_fetch_debug_backtrace(retval, 1, 0 TSRMLS_CC);
-#else
-			zend_fetch_debug_backtrace(retval, 1, 0, 0 TSRMLS_CC);
-#endif
-			SYMFONY_DEBUG_G(debug_bt) = retval;
-	}
-
-	SYMFONY_DEBUG_G(old_error_cb)(type, error_filename, error_lineno, format, args);
-}
-
-static const char* _symfony_debug_get_resource_type(long rsid TSRMLS_DC)
-{
-	const char *res_type;
-	res_type = zend_rsrc_list_get_rsrc_type(rsid TSRMLS_CC);
-
-	if (!res_type) {
-		return "Unknown";
-	}
-
-	return res_type;
-}
-
-static int _symfony_debug_get_resource_refcount(long rsid TSRMLS_DC)
-{
-	zend_rsrc_list_entry *le;
-
-	if (zend_hash_index_find(&EG(regular_list), rsid, (void **) &le)==SUCCESS) {
-		return le->refcount;
-	}
-
-	return 0;
-}
-
-static char *_symfony_debug_memory_address_hash(void *address TSRMLS_DC)
-{
-	char *result = NULL;
-	intptr_t address_rand;
-
-	if (!SYMFONY_DEBUG_G(req_rand_init)) {
-		if (!BG(mt_rand_is_seeded)) {
-			php_mt_srand(GENERATE_SEED() TSRMLS_CC);
-		}
-		SYMFONY_DEBUG_G(req_rand_init) = (intptr_t)php_mt_rand(TSRMLS_C);
-	}
-
-	address_rand = (intptr_t)address ^ SYMFONY_DEBUG_G(req_rand_init);
-
-	spprintf(&result, 17, "%016zx", address_rand);
-
-	return result;
-}
-
-static const char *_symfony_debug_zval_type(zval *zv)
-{
-	switch (Z_TYPE_P(zv)) {
-		case IS_NULL:
-			return "NULL";
-			break;
-
-		case IS_BOOL:
-			return "boolean";
-			break;
-
-		case IS_LONG:
-			return "integer";
-			break;
-
-		case IS_DOUBLE:
-			return "double";
-			break;
-
-		case IS_STRING:
-			return "string";
-			break;
-
-		case IS_ARRAY:
-			return "array";
-			break;
-
-		case IS_OBJECT:
-			return "object";
-
-		case IS_RESOURCE:
-			return "resource";
-
-		default:
-			return "unknown type";
-	}
-}
-
-zend_module_entry symfony_debug_module_entry = {
-	STANDARD_MODULE_HEADER,
-	"symfony_debug",
-	symfony_debug_functions,
-	PHP_MINIT(symfony_debug),
-	PHP_MSHUTDOWN(symfony_debug),
-	PHP_RINIT(symfony_debug),
-	PHP_RSHUTDOWN(symfony_debug),
-	PHP_MINFO(symfony_debug),
-	PHP_SYMFONY_DEBUG_VERSION,
-	PHP_MODULE_GLOBALS(symfony_debug),
-	PHP_GINIT(symfony_debug),
-	PHP_GSHUTDOWN(symfony_debug),
-	NULL,
-	STANDARD_MODULE_PROPERTIES_EX
-};
-
-#ifdef COMPILE_DL_SYMFONY_DEBUG
-ZEND_GET_MODULE(symfony_debug)
-#endif
-
-PHP_GINIT_FUNCTION(symfony_debug)
-{
-	memset(symfony_debug_globals, 0 , sizeof(*symfony_debug_globals));
-}
-
-PHP_GSHUTDOWN_FUNCTION(symfony_debug)
-{
-
-}
-
-PHP_MINIT_FUNCTION(symfony_debug)
-{
-	SYMFONY_DEBUG_G(old_error_cb) = zend_error_cb;
-	zend_error_cb                 = symfony_debug_error_cb;
-
-	return SUCCESS;
-}
-
-PHP_MSHUTDOWN_FUNCTION(symfony_debug)
-{
-	zend_error_cb = SYMFONY_DEBUG_G(old_error_cb);
-
-	return SUCCESS;
-}
-
-PHP_RINIT_FUNCTION(symfony_debug)
-{
-	return SUCCESS;
-}
-
-PHP_RSHUTDOWN_FUNCTION(symfony_debug)
-{
-	return SUCCESS;
-}
-
-PHP_MINFO_FUNCTION(symfony_debug)
-{
-	php_info_print_table_start();
-	php_info_print_table_header(2, "Symfony Debug support", "enabled");
-	php_info_print_table_header(2, "Symfony Debug version", PHP_SYMFONY_DEBUG_VERSION);
-	php_info_print_table_end();
-}
diff --git a/vendor/symfony/debug/Resources/ext/tests/001.phpt b/vendor/symfony/debug/Resources/ext/tests/001.phpt
deleted file mode 100644
index 4d41417..0000000
--- a/vendor/symfony/debug/Resources/ext/tests/001.phpt
+++ /dev/null
@@ -1,151 +0,0 @@
---TEST--
-Test symfony_zval_info API
---SKIPIF--
-<?php if (!extension_loaded("symfony_debug")) print "skip"; ?>
---FILE--
-<?php
-
-$int = 42;
-$float = 42.42;
-$str = "foobar";
-$object = new StdClass;
-$array = array('foo', 'bar');
-$resource = tmpfile();
-$null = null;
-$bool = true;
-
-$anotherint = 42;
-$refcount2 = &$anotherint;
-
-$var = array('int' => $int,
-			 'float' => $float,
-			 'str' => $str,
-			 'object' => $object,
-			 'array' => $array,
-			 'resource' => $resource,
-			 'null' => $null,
-			 'bool' => $bool,
-			 'refcount' => &$refcount2);
-
-var_dump(symfony_zval_info('int', $var));
-var_dump(symfony_zval_info('float', $var));
-var_dump(symfony_zval_info('str', $var));
-var_dump(symfony_zval_info('object', $var));
-var_dump(symfony_zval_info('array', $var));
-var_dump(symfony_zval_info('resource', $var));
-var_dump(symfony_zval_info('null', $var));
-var_dump(symfony_zval_info('bool', $var));
-
-var_dump(symfony_zval_info('refcount', $var));
-var_dump(symfony_zval_info('not-exist', $var));
-?>
---EXPECTF--
-array(4) {
-  ["type"]=>
-  string(7) "integer"
-  ["zval_hash"]=>
-  string(16) "%s"
-  ["zval_refcount"]=>
-  int(2)
-  ["zval_isref"]=>
-  bool(false)
-}
-array(4) {
-  ["type"]=>
-  string(6) "double"
-  ["zval_hash"]=>
-  string(16) "%s"
-  ["zval_refcount"]=>
-  int(2)
-  ["zval_isref"]=>
-  bool(false)
-}
-array(5) {
-  ["type"]=>
-  string(6) "string"
-  ["zval_hash"]=>
-  string(16) "%s"
-  ["zval_refcount"]=>
-  int(2)
-  ["zval_isref"]=>
-  bool(false)
-  ["strlen"]=>
-  int(6)
-}
-array(8) {
-  ["type"]=>
-  string(6) "object"
-  ["zval_hash"]=>
-  string(16) "%s"
-  ["zval_refcount"]=>
-  int(2)
-  ["zval_isref"]=>
-  bool(false)
-  ["object_class"]=>
-  string(8) "stdClass"
-  ["object_refcount"]=>
-  int(1)
-  ["object_hash"]=>
-  string(32) "%s"
-  ["object_handle"]=>
-  int(%d)
-}
-array(5) {
-  ["type"]=>
-  string(5) "array"
-  ["zval_hash"]=>
-  string(16) "%s"
-  ["zval_refcount"]=>
-  int(2)
-  ["zval_isref"]=>
-  bool(false)
-  ["array_count"]=>
-  int(2)
-}
-array(7) {
-  ["type"]=>
-  string(8) "resource"
-  ["zval_hash"]=>
-  string(16) "%s"
-  ["zval_refcount"]=>
-  int(2)
-  ["zval_isref"]=>
-  bool(false)
-  ["resource_handle"]=>
-  int(%d)
-  ["resource_type"]=>
-  string(6) "stream"
-  ["resource_refcount"]=>
-  int(1)
-}
-array(4) {
-  ["type"]=>
-  string(4) "NULL"
-  ["zval_hash"]=>
-  string(16) "%s"
-  ["zval_refcount"]=>
-  int(2)
-  ["zval_isref"]=>
-  bool(false)
-}
-array(4) {
-  ["type"]=>
-  string(7) "boolean"
-  ["zval_hash"]=>
-  string(16) "%s"
-  ["zval_refcount"]=>
-  int(2)
-  ["zval_isref"]=>
-  bool(false)
-}
-array(4) {
-  ["type"]=>
-  string(7) "integer"
-  ["zval_hash"]=>
-  string(16) "%s"
-  ["zval_refcount"]=>
-  int(3)
-  ["zval_isref"]=>
-  bool(true)
-}
-NULL
diff --git a/vendor/symfony/debug/Resources/ext/tests/002.phpt b/vendor/symfony/debug/Resources/ext/tests/002.phpt
deleted file mode 100644
index ebe2f32..0000000
--- a/vendor/symfony/debug/Resources/ext/tests/002.phpt
+++ /dev/null
@@ -1,64 +0,0 @@
---TEST--
-Test symfony_debug_backtrace in case of fatal error
---SKIPIF--
-<?php if (!extension_loaded("symfony_debug")) print "skip"; ?>
---FILE--
-<?php
-
-function bar()
-{
-    foo();
-}
-
-function foo()
-{
-    notexist();
-}
-
-function bt()
-{
-    print_r(symfony_debug_backtrace());
-
-}
-
-register_shutdown_function('bt');
-
-bar();
-
-?>
---EXPECTF--
-Fatal error: Call to undefined function notexist() in %s on line %d
-Array
-(
-    [0] => Array
-        (
-            [function] => bt
-            [args] => Array
-                (
-                )
-
-        )
-
-    [1] => Array
-        (
-            [file] => %s
-            [line] => %d
-            [function] => foo
-            [args] => Array
-                (
-                )
-
-        )
-
-    [2] => Array
-        (
-            [file] => %s
-            [line] => %d
-            [function] => bar
-            [args] => Array
-                (
-                )
-
-        )
-
-)
diff --git a/vendor/symfony/debug/Resources/ext/tests/002_1.phpt b/vendor/symfony/debug/Resources/ext/tests/002_1.phpt
deleted file mode 100644
index 4d52dbf..0000000
--- a/vendor/symfony/debug/Resources/ext/tests/002_1.phpt
+++ /dev/null
@@ -1,47 +0,0 @@
---TEST--
-Test symfony_debug_backtrace in case of non fatal error
---SKIPIF--
-<?php if (!extension_loaded("symfony_debug")) print "skip"; ?>
---FILE--
-<?php
-
-function bar()
-{
-    bt();
-}
-
-function bt()
-{
-    print_r(symfony_debug_backtrace());
-
-}
-
-bar();
-
-?>
---EXPECTF--
-Array
-(
-    [0] => Array
-        (
-            [file] => %s
-            [line] => %d
-            [function] => bt
-            [args] => Array
-                (
-                )
-
-        )
-
-    [1] => Array
-        (
-            [file] => %s
-            [line] => %d
-            [function] => bar
-            [args] => Array
-                (
-                )
-
-        )
-
-)
diff --git a/vendor/symfony/debug/Resources/ext/tests/003.phpt b/vendor/symfony/debug/Resources/ext/tests/003.phpt
deleted file mode 100644
index a363333..0000000
--- a/vendor/symfony/debug/Resources/ext/tests/003.phpt
+++ /dev/null
@@ -1,85 +0,0 @@
---TEST--
-Test ErrorHandler in case of fatal error
---SKIPIF--
-<?php if (!extension_loaded("symfony_debug")) print "skip"; ?>
---FILE--
-<?php
-
-namespace Psr\Log;
-
-class LogLevel
-{
-    const EMERGENCY = 'emergency';
-    const ALERT = 'alert';
-    const CRITICAL = 'critical';
-    const ERROR = 'error';
-    const WARNING = 'warning';
-    const NOTICE = 'notice';
-    const INFO = 'info';
-    const DEBUG = 'debug';
-}
-
-namespace Symfony\Component\Debug;
-
-$dir = __DIR__.'/../../../';
-require $dir.'ErrorHandler.php';
-require $dir.'Exception/FatalErrorException.php';
-require $dir.'Exception/UndefinedFunctionException.php';
-require $dir.'FatalErrorHandler/FatalErrorHandlerInterface.php';
-require $dir.'FatalErrorHandler/ClassNotFoundFatalErrorHandler.php';
-require $dir.'FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php';
-require $dir.'FatalErrorHandler/UndefinedMethodFatalErrorHandler.php';
-
-function bar()
-{
-    foo();
-}
-
-function foo()
-{
-    notexist();
-}
-
-$handler = ErrorHandler::register();
-$handler->setExceptionHandler('print_r');
-
-if (function_exists('xdebug_disable')) {
-    xdebug_disable();
-}
-
-bar();
-?>
---EXPECTF--
-Fatal error: Call to undefined function Symfony\Component\Debug\notexist() in %s on line %d
-Symfony\Component\Debug\Exception\UndefinedFunctionException Object
-(
-    [message:protected] => Attempted to call function "notexist" from namespace "Symfony\Component\Debug".
-    [string:Exception:private] => 
-    [code:protected] => 0
-    [file:protected] => %s
-    [line:protected] => %d
-    [trace:Exception:private] => Array
-        (
-            [0] => Array
-                (
-%A                    [function] => Symfony\Component\Debug\foo
-%A                    [args] => Array
-                        (
-                        )
-
-                )
-
-            [1] => Array
-                (
-%A                    [function] => Symfony\Component\Debug\bar
-%A                    [args] => Array
-                        (
-                        )
-
-                )
-%A
-        )
-
-    [previous:Exception:private] => 
-    [severity:protected] => 1
-)
diff --git a/vendor/symfony/debug/composer.json b/vendor/symfony/debug/composer.json
deleted file mode 100644
index c1b128a..0000000
--- a/vendor/symfony/debug/composer.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "name": "symfony/debug",
-    "type": "library",
-    "description": "Symfony Debug Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9",
-        "psr/log": "~1.0"
-    },
-    "conflict": {
-        "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
-    },
-    "require-dev": {
-        "symfony/class-loader": "~2.2",
-        "symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Debug\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/debug/phpunit.xml.dist b/vendor/symfony/debug/phpunit.xml.dist
deleted file mode 100644
index e99c4dd..0000000
--- a/vendor/symfony/debug/phpunit.xml.dist
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Debug Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-        <testsuite name="Symfony Debug Extension Test Suite">
-            <directory suffix=".phpt">./Resources/ext/tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/dependency-injection/.gitignore b/vendor/symfony/dependency-injection/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/dependency-injection/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/dependency-injection/Alias.php b/vendor/symfony/dependency-injection/Alias.php
deleted file mode 100644
index 5a6c2fe..0000000
--- a/vendor/symfony/dependency-injection/Alias.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?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;
-
-class Alias
-{
-    private $id;
-    private $public;
-
-    /**
-     * Constructor.
-     *
-     * @param string $id     Alias identifier
-     * @param bool   $public If this alias is public
-     */
-    public function __construct($id, $public = true)
-    {
-        $this->id = strtolower($id);
-        $this->public = $public;
-    }
-
-    /**
-     * Checks if this DI Alias should be public or not.
-     *
-     * @return bool
-     */
-    public function isPublic()
-    {
-        return $this->public;
-    }
-
-    /**
-     * Sets if this Alias is public.
-     *
-     * @param bool $boolean If this Alias should be public
-     */
-    public function setPublic($boolean)
-    {
-        $this->public = (bool) $boolean;
-    }
-
-    /**
-     * Returns the Id of this alias.
-     *
-     * @return string The alias id
-     */
-    public function __toString()
-    {
-        return $this->id;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/CHANGELOG.md b/vendor/symfony/dependency-injection/CHANGELOG.md
deleted file mode 100644
index 4272943..0000000
--- a/vendor/symfony/dependency-injection/CHANGELOG.md
+++ /dev/null
@@ -1,45 +0,0 @@
-CHANGELOG
-=========
-
-2.7.0
------
-
- * deprecated synchronized services
-
-2.6.0
------
-
- * added new factory syntax and deprecated the old one
-
-2.5.0
------
-
-* added DecoratorServicePass and a way to override a service definition (Definition::setDecoratedService())
-* deprecated SimpleXMLElement class.
-
-2.4.0
------
-
- * added support for expressions in service definitions
- * added ContainerAwareTrait to add default container aware behavior to a class
-
-2.2.0
------
-
- * added Extension::isConfigEnabled() to ease working with enableable configurations
- * added an Extension base class with sensible defaults to be used in conjunction
-   with the Config component.
- * added PrependExtensionInterface (to be able to allow extensions to prepend
-   application configuration settings for any Bundle)
-
-2.1.0
------
-
- * added IntrospectableContainerInterface (to be able to check if a service
-   has been initialized or not)
- * added ConfigurationExtensionInterface
- * added Definition::clearTag()
- * component exceptions that inherit base SPL classes are now used exclusively
-   (this includes dumped containers)
- * [BC BREAK] fixed unescaping of class arguments, method
-   ParameterBag::unescapeValue() was made public
diff --git a/vendor/symfony/dependency-injection/Compiler/AnalyzeServiceReferencesPass.php b/vendor/symfony/dependency-injection/Compiler/AnalyzeServiceReferencesPass.php
deleted file mode 100644
index 5120eb6..0000000
--- a/vendor/symfony/dependency-injection/Compiler/AnalyzeServiceReferencesPass.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?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\Definition;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * Run this pass before passes that need to know more about the relation of
- * your services.
- *
- * This class will populate the ServiceReferenceGraph with information. You can
- * retrieve the graph in other passes from the compiler.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class AnalyzeServiceReferencesPass implements RepeatablePassInterface
-{
-    private $graph;
-    private $container;
-    private $currentId;
-    private $currentDefinition;
-    private $repeatedPass;
-    private $onlyConstructorArguments;
-
-    /**
-     * Constructor.
-     *
-     * @param bool $onlyConstructorArguments Sets this Service Reference pass to ignore method calls
-     */
-    public function __construct($onlyConstructorArguments = false)
-    {
-        $this->onlyConstructorArguments = (bool) $onlyConstructorArguments;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setRepeatedPass(RepeatedPass $repeatedPass)
-    {
-        $this->repeatedPass = $repeatedPass;
-    }
-
-    /**
-     * Processes a ContainerBuilder object to populate the service reference graph.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $this->container = $container;
-        $this->graph = $container->getCompiler()->getServiceReferenceGraph();
-        $this->graph->clear();
-
-        foreach ($container->getDefinitions() as $id => $definition) {
-            if ($definition->isSynthetic() || $definition->isAbstract()) {
-                continue;
-            }
-
-            $this->currentId = $id;
-            $this->currentDefinition = $definition;
-
-            $this->processArguments($definition->getArguments());
-            if ($definition->getFactoryService(false)) {
-                $this->processArguments(array(new Reference($definition->getFactoryService(false))));
-            }
-            if (is_array($definition->getFactory())) {
-                $this->processArguments($definition->getFactory());
-            }
-
-            if (!$this->onlyConstructorArguments) {
-                $this->processArguments($definition->getMethodCalls());
-                $this->processArguments($definition->getProperties());
-                if ($definition->getConfigurator()) {
-                    $this->processArguments(array($definition->getConfigurator()));
-                }
-            }
-        }
-
-        foreach ($container->getAliases() as $id => $alias) {
-            $this->graph->connect($id, $alias, (string) $alias, $this->getDefinition((string) $alias), null);
-        }
-    }
-
-    /**
-     * Processes service definitions for arguments to find relationships for the service graph.
-     *
-     * @param array $arguments An array of Reference or Definition objects relating to service definitions
-     */
-    private function processArguments(array $arguments)
-    {
-        foreach ($arguments as $argument) {
-            if (is_array($argument)) {
-                $this->processArguments($argument);
-            } elseif ($argument instanceof Reference) {
-                $this->graph->connect(
-                    $this->currentId,
-                    $this->currentDefinition,
-                    $this->getDefinitionId((string) $argument),
-                    $this->getDefinition((string) $argument),
-                    $argument
-                );
-            } elseif ($argument instanceof Definition) {
-                $this->processArguments($argument->getArguments());
-                $this->processArguments($argument->getMethodCalls());
-                $this->processArguments($argument->getProperties());
-
-                if (is_array($argument->getFactory())) {
-                    $this->processArguments($argument->getFactory());
-                }
-                if ($argument->getFactoryService(false)) {
-                    $this->processArguments(array(new Reference($argument->getFactoryService(false))));
-                }
-            }
-        }
-    }
-
-    /**
-     * Returns a service definition given the full name or an alias.
-     *
-     * @param string $id A full id or alias for a service definition.
-     *
-     * @return Definition|null The definition related to the supplied id
-     */
-    private function getDefinition($id)
-    {
-        $id = $this->getDefinitionId($id);
-
-        return null === $id ? null : $this->container->getDefinition($id);
-    }
-
-    private function getDefinitionId($id)
-    {
-        while ($this->container->hasAlias($id)) {
-            $id = (string) $this->container->getAlias($id);
-        }
-
-        if (!$this->container->hasDefinition($id)) {
-            return;
-        }
-
-        return $id;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/AutoAliasServicePass.php b/vendor/symfony/dependency-injection/Compiler/AutoAliasServicePass.php
deleted file mode 100644
index c1f05e0..0000000
--- a/vendor/symfony/dependency-injection/Compiler/AutoAliasServicePass.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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\Alias;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-
-/**
- * Sets a service to be an alias of another one, given a format pattern.
- */
-class AutoAliasServicePass implements CompilerPassInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function process(ContainerBuilder $container)
-    {
-        foreach ($container->findTaggedServiceIds('auto_alias') as $serviceId => $tags) {
-            foreach ($tags as $tag) {
-                if (!isset($tag['format'])) {
-                    throw new InvalidArgumentException(sprintf('Missing tag information "format" on auto_alias service "%s".', $serviceId));
-                }
-
-                $aliasId = $container->getParameterBag()->resolveValue($tag['format']);
-                if ($container->hasDefinition($aliasId) || $container->hasAlias($aliasId)) {
-                    $container->setAlias($serviceId, new Alias($aliasId));
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/CheckCircularReferencesPass.php b/vendor/symfony/dependency-injection/Compiler/CheckCircularReferencesPass.php
deleted file mode 100644
index d7570dd..0000000
--- a/vendor/symfony/dependency-injection/Compiler/CheckCircularReferencesPass.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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\Exception\ServiceCircularReferenceException;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * Checks your services for circular references.
- *
- * References from method calls are ignored since we might be able to resolve
- * these references depending on the order in which services are called.
- *
- * Circular reference from method calls will only be detected at run-time.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class CheckCircularReferencesPass implements CompilerPassInterface
-{
-    private $currentPath;
-    private $checkedNodes;
-
-    /**
-     * Checks the ContainerBuilder object for circular references.
-     *
-     * @param ContainerBuilder $container The ContainerBuilder instances
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $graph = $container->getCompiler()->getServiceReferenceGraph();
-
-        $this->checkedNodes = array();
-        foreach ($graph->getNodes() as $id => $node) {
-            $this->currentPath = array($id);
-
-            $this->checkOutEdges($node->getOutEdges());
-        }
-    }
-
-    /**
-     * Checks for circular references.
-     *
-     * @param ServiceReferenceGraphEdge[] $edges An array of Edges
-     *
-     * @throws ServiceCircularReferenceException When a circular reference is found.
-     */
-    private function checkOutEdges(array $edges)
-    {
-        foreach ($edges as $edge) {
-            $node = $edge->getDestNode();
-            $id = $node->getId();
-
-            if (empty($this->checkedNodes[$id])) {
-                $searchKey = array_search($id, $this->currentPath);
-                $this->currentPath[] = $id;
-
-                if (false !== $searchKey) {
-                    throw new ServiceCircularReferenceException($id, array_slice($this->currentPath, $searchKey));
-                }
-
-                $this->checkOutEdges($node->getOutEdges());
-
-                $this->checkedNodes[$id] = true;
-                array_pop($this->currentPath);
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/CheckDefinitionValidityPass.php b/vendor/symfony/dependency-injection/Compiler/CheckDefinitionValidityPass.php
deleted file mode 100644
index 219e663..0000000
--- a/vendor/symfony/dependency-injection/Compiler/CheckDefinitionValidityPass.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?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\ContainerInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-
-/**
- * This pass validates each definition individually only taking the information
- * into account which is contained in the definition itself.
- *
- * Later passes can rely on the following, and specifically do not need to
- * perform these checks themselves:
- *
- * - non synthetic, non abstract services always have a class set
- * - synthetic services are always public
- * - synthetic services are always of non-prototype scope
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class CheckDefinitionValidityPass implements CompilerPassInterface
-{
-    /**
-     * Processes the ContainerBuilder to validate the Definition.
-     *
-     * @param ContainerBuilder $container
-     *
-     * @throws RuntimeException When the Definition is invalid
-     */
-    public function process(ContainerBuilder $container)
-    {
-        foreach ($container->getDefinitions() as $id => $definition) {
-            // synthetic service is public
-            if ($definition->isSynthetic() && !$definition->isPublic()) {
-                throw new RuntimeException(sprintf('A synthetic service ("%s") must be public.', $id));
-            }
-
-            // synthetic service has non-prototype scope
-            if ($definition->isSynthetic() && ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope()) {
-                throw new RuntimeException(sprintf('A synthetic 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));
-            }
-
-            // non-synthetic, non-abstract service has class
-            if (!$definition->isAbstract() && !$definition->isSynthetic() && !$definition->getClass()) {
-                if ($definition->getFactory() || $definition->getFactoryClass(false) || $definition->getFactoryService(false)) {
-                    throw new RuntimeException(sprintf('Please add the class to service "%s" even if it is constructed by a factory since we might need to add method calls based on compile-time checks.', $id));
-                }
-
-                throw new RuntimeException(sprintf(
-                    'The definition for "%s" has no class. If you intend to inject '
-                   .'this service dynamically at runtime, please mark it as synthetic=true. '
-                   .'If this is an abstract definition solely used by child definitions, '
-                   .'please add abstract=true, otherwise specify a class to get rid of this error.',
-                   $id
-                ));
-            }
-
-            // tag attribute values must be scalars
-            foreach ($definition->getTags() as $name => $tags) {
-                foreach ($tags as $attributes) {
-                    foreach ($attributes as $attribute => $value) {
-                        if (!is_scalar($value) && null !== $value) {
-                            throw new RuntimeException(sprintf('A "tags" attribute must be of a scalar-type for service "%s", tag "%s", attribute "%s".', $id, $name, $attribute));
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php b/vendor/symfony/dependency-injection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php
deleted file mode 100644
index 304f784..0000000
--- a/vendor/symfony/dependency-injection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?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\Definition;
-use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * Checks that all references are pointing to a valid service.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class CheckExceptionOnInvalidReferenceBehaviorPass implements CompilerPassInterface
-{
-    private $container;
-    private $sourceId;
-
-    public function process(ContainerBuilder $container)
-    {
-        $this->container = $container;
-
-        foreach ($container->getDefinitions() as $id => $definition) {
-            $this->sourceId = $id;
-            $this->processDefinition($definition);
-        }
-    }
-
-    private function processDefinition(Definition $definition)
-    {
-        $this->processReferences($definition->getArguments());
-        $this->processReferences($definition->getMethodCalls());
-        $this->processReferences($definition->getProperties());
-    }
-
-    private function processReferences(array $arguments)
-    {
-        foreach ($arguments as $argument) {
-            if (is_array($argument)) {
-                $this->processReferences($argument);
-            } elseif ($argument instanceof Definition) {
-                $this->processDefinition($argument);
-            } elseif ($argument instanceof Reference && ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE === $argument->getInvalidBehavior()) {
-                $destId = (string) $argument;
-
-                if (!$this->container->has($destId)) {
-                    throw new ServiceNotFoundException($destId, $this->sourceId);
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/CheckReferenceValidityPass.php b/vendor/symfony/dependency-injection/Compiler/CheckReferenceValidityPass.php
deleted file mode 100644
index 82202a9..0000000
--- a/vendor/symfony/dependency-injection/Compiler/CheckReferenceValidityPass.php
+++ /dev/null
@@ -1,165 +0,0 @@
-<?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\Definition;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-use Symfony\Component\DependencyInjection\Exception\ScopeCrossingInjectionException;
-use Symfony\Component\DependencyInjection\Exception\ScopeWideningInjectionException;
-
-/**
- * Checks the validity of references.
- *
- * The following checks are performed by this pass:
- * - target definitions are not abstract
- * - target definitions are of equal or wider scope
- * - target definitions are in the same scope hierarchy
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class CheckReferenceValidityPass implements CompilerPassInterface
-{
-    private $container;
-    private $currentId;
-    private $currentScope;
-    private $currentScopeAncestors;
-    private $currentScopeChildren;
-
-    /**
-     * Processes the ContainerBuilder to validate References.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $this->container = $container;
-
-        $children = $this->container->getScopeChildren();
-        $ancestors = array();
-
-        $scopes = $this->container->getScopes();
-        foreach ($scopes as $name => $parent) {
-            $ancestors[$name] = array($parent);
-
-            while (isset($scopes[$parent])) {
-                $ancestors[$name][] = $parent = $scopes[$parent];
-            }
-        }
-
-        foreach ($container->getDefinitions() as $id => $definition) {
-            if ($definition->isSynthetic() || $definition->isAbstract()) {
-                continue;
-            }
-
-            $this->currentId = $id;
-            $this->currentScope = $scope = $definition->getScope();
-
-            if (ContainerInterface::SCOPE_CONTAINER === $scope) {
-                $this->currentScopeChildren = array_keys($scopes);
-                $this->currentScopeAncestors = array();
-            } elseif (ContainerInterface::SCOPE_PROTOTYPE !== $scope) {
-                $this->currentScopeChildren = isset($children[$scope]) ? $children[$scope] : array();
-                $this->currentScopeAncestors = isset($ancestors[$scope]) ? $ancestors[$scope] : array();
-            }
-
-            $this->validateReferences($definition->getArguments());
-            $this->validateReferences($definition->getMethodCalls());
-            $this->validateReferences($definition->getProperties());
-        }
-    }
-
-    /**
-     * Validates an array of References.
-     *
-     * @param array $arguments An array of Reference objects
-     *
-     * @throws RuntimeException when there is a reference to an abstract definition.
-     */
-    private function validateReferences(array $arguments)
-    {
-        foreach ($arguments as $argument) {
-            if (is_array($argument)) {
-                $this->validateReferences($argument);
-            } elseif ($argument instanceof Reference) {
-                $targetDefinition = $this->getDefinition((string) $argument);
-
-                if (null !== $targetDefinition && $targetDefinition->isAbstract()) {
-                    throw new RuntimeException(sprintf(
-                        'The definition "%s" has a reference to an abstract definition "%s". '
-                       .'Abstract definitions cannot be the target of references.',
-                       $this->currentId,
-                       $argument
-                    ));
-                }
-
-                $this->validateScope($argument, $targetDefinition);
-            }
-        }
-    }
-
-    /**
-     * Validates the scope of a single Reference.
-     *
-     * @param Reference  $reference
-     * @param Definition $definition
-     *
-     * @throws ScopeWideningInjectionException when the definition references a service of a narrower scope
-     * @throws ScopeCrossingInjectionException when the definition references a service of another scope hierarchy
-     */
-    private function validateScope(Reference $reference, Definition $definition = null)
-    {
-        if (ContainerInterface::SCOPE_PROTOTYPE === $this->currentScope) {
-            return;
-        }
-
-        if (!$reference->isStrict()) {
-            return;
-        }
-
-        if (null === $definition) {
-            return;
-        }
-
-        if ($this->currentScope === $scope = $definition->getScope()) {
-            return;
-        }
-
-        $id = (string) $reference;
-
-        if (in_array($scope, $this->currentScopeChildren, true)) {
-            throw new ScopeWideningInjectionException($this->currentId, $this->currentScope, $id, $scope);
-        }
-
-        if (!in_array($scope, $this->currentScopeAncestors, true)) {
-            throw new ScopeCrossingInjectionException($this->currentId, $this->currentScope, $id, $scope);
-        }
-    }
-
-    /**
-     * Returns the Definition given an id.
-     *
-     * @param string $id Definition identifier
-     *
-     * @return Definition
-     */
-    private function getDefinition($id)
-    {
-        if (!$this->container->hasDefinition($id)) {
-            return;
-        }
-
-        return $this->container->getDefinition($id);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/Compiler.php b/vendor/symfony/dependency-injection/Compiler/Compiler.php
deleted file mode 100644
index 4e4c2cd..0000000
--- a/vendor/symfony/dependency-injection/Compiler/Compiler.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?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;
-
-/**
- * This class is used to remove circular dependencies between individual passes.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class Compiler
-{
-    private $passConfig;
-    private $log = array();
-    private $loggingFormatter;
-    private $serviceReferenceGraph;
-
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {
-        $this->passConfig = new PassConfig();
-        $this->serviceReferenceGraph = new ServiceReferenceGraph();
-        $this->loggingFormatter = new LoggingFormatter();
-    }
-
-    /**
-     * Returns the PassConfig.
-     *
-     * @return PassConfig The PassConfig instance
-     */
-    public function getPassConfig()
-    {
-        return $this->passConfig;
-    }
-
-    /**
-     * Returns the ServiceReferenceGraph.
-     *
-     * @return ServiceReferenceGraph The ServiceReferenceGraph instance
-     */
-    public function getServiceReferenceGraph()
-    {
-        return $this->serviceReferenceGraph;
-    }
-
-    /**
-     * Returns the logging formatter which can be used by compilation passes.
-     *
-     * @return LoggingFormatter
-     */
-    public function getLoggingFormatter()
-    {
-        return $this->loggingFormatter;
-    }
-
-    /**
-     * Adds a pass to the PassConfig.
-     *
-     * @param CompilerPassInterface $pass A compiler pass
-     * @param string                $type The type of the pass
-     */
-    public function addPass(CompilerPassInterface $pass, $type = PassConfig::TYPE_BEFORE_OPTIMIZATION)
-    {
-        $this->passConfig->addPass($pass, $type);
-    }
-
-    /**
-     * Adds a log message.
-     *
-     * @param string $string The log message
-     */
-    public function addLogMessage($string)
-    {
-        $this->log[] = $string;
-    }
-
-    /**
-     * Returns the log.
-     *
-     * @return array Log array
-     */
-    public function getLog()
-    {
-        return $this->log;
-    }
-
-    /**
-     * Run the Compiler and process all Passes.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function compile(ContainerBuilder $container)
-    {
-        foreach ($this->passConfig->getPasses() as $pass) {
-            $pass->process($container);
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/CompilerPassInterface.php b/vendor/symfony/dependency-injection/Compiler/CompilerPassInterface.php
deleted file mode 100644
index 30cb1d5..0000000
--- a/vendor/symfony/dependency-injection/Compiler/CompilerPassInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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;
-
-/**
- * Interface that must be implemented by compilation passes.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-interface CompilerPassInterface
-{
-    /**
-     * You can modify the container here before it is dumped to PHP code.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function process(ContainerBuilder $container);
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php b/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php
deleted file mode 100644
index ef0a19c..0000000
--- a/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?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\Alias;
-
-/**
- * Overwrites a service but keeps the overridden one.
- *
- * @author Christophe Coevoet <stof@notk.org>
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class DecoratorServicePass implements CompilerPassInterface
-{
-    public function process(ContainerBuilder $container)
-    {
-        foreach ($container->getDefinitions() as $id => $definition) {
-            if (!$decorated = $definition->getDecoratedService()) {
-                continue;
-            }
-            $definition->setDecoratedService(null);
-
-            list($inner, $renamedId) = $decorated;
-            if (!$renamedId) {
-                $renamedId = $id.'.inner';
-            }
-
-            // we create a new alias/service for the service we are replacing
-            // to be able to reference it in the new one
-            if ($container->hasAlias($inner)) {
-                $alias = $container->getAlias($inner);
-                $public = $alias->isPublic();
-                $container->setAlias($renamedId, new Alias((string) $alias, false));
-            } else {
-                $definition = $container->getDefinition($inner);
-                $public = $definition->isPublic();
-                $definition->setPublic(false);
-                $container->setDefinition($renamedId, $definition);
-            }
-
-            $container->setAlias($inner, new Alias($id, $public));
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/ExtensionCompilerPass.php b/vendor/symfony/dependency-injection/Compiler/ExtensionCompilerPass.php
deleted file mode 100644
index b06b497..0000000
--- a/vendor/symfony/dependency-injection/Compiler/ExtensionCompilerPass.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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;
-
-/**
- * A pass to automatically process extensions if they implement 
- * CompilerPassInterface.
- *
- * @author Wouter J <wouter@wouterj.nl>
- */
-class ExtensionCompilerPass implements CompilerPassInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function process(ContainerBuilder $container)
-    {
-        foreach ($container->getExtensions() as $extension) {
-            if (!$extension instanceof CompilerPassInterface) {
-                continue;
-            }
-
-            $extension->process($container);
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php b/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php
deleted file mode 100644
index 026700d..0000000
--- a/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?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\ContainerInterface;
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * Inline service definitions where this is possible.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class InlineServiceDefinitionsPass implements RepeatablePassInterface
-{
-    private $repeatedPass;
-    private $graph;
-    private $compiler;
-    private $formatter;
-    private $currentId;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setRepeatedPass(RepeatedPass $repeatedPass)
-    {
-        $this->repeatedPass = $repeatedPass;
-    }
-
-    /**
-     * Processes the ContainerBuilder for inline service definitions.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $this->compiler = $container->getCompiler();
-        $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]);
-        }
-    }
-
-    /**
-     * Processes inline arguments.
-     *
-     * @param ContainerBuilder $container The ContainerBuilder
-     * @param array            $arguments An array of arguments
-     *
-     * @return array
-     */
-    private function inlineArguments(ContainerBuilder $container, array $arguments)
-    {
-        foreach ($arguments as $k => $argument) {
-            if (is_array($argument)) {
-                $arguments[$k] = $this->inlineArguments($container, $argument);
-            } elseif ($argument instanceof Reference) {
-                if (!$container->hasDefinition($id = (string) $argument)) {
-                    continue;
-                }
-
-                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()) {
-                        $arguments[$k] = $definition;
-                    } else {
-                        $arguments[$k] = clone $definition;
-                    }
-                }
-            } elseif ($argument instanceof Definition) {
-                $argument->setArguments($this->inlineArguments($container, $argument->getArguments()));
-                $argument->setMethodCalls($this->inlineArguments($container, $argument->getMethodCalls()));
-                $argument->setProperties($this->inlineArguments($container, $argument->getProperties()));
-            }
-        }
-
-        return $arguments;
-    }
-
-    /**
-     * Checks if the definition is inlineable.
-     *
-     * @param ContainerBuilder $container
-     * @param string           $id
-     * @param Definition       $definition
-     *
-     * @return bool If the definition is inlineable
-     */
-    private function isInlineableDefinition(ContainerBuilder $container, $id, Definition $definition)
-    {
-        if (ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope()) {
-            return true;
-        }
-
-        if ($definition->isPublic() || $definition->isLazy()) {
-            return false;
-        }
-
-        if (!$this->graph->hasNode($id)) {
-            return true;
-        }
-
-        if ($this->currentId == $id) {
-            return false;
-        }
-
-        $ids = array();
-        foreach ($this->graph->getNode($id)->getInEdges() as $edge) {
-            $ids[] = $edge->getSourceNode()->getId();
-        }
-
-        if (count(array_unique($ids)) > 1) {
-            return false;
-        }
-
-        if (count($ids) > 1 && is_array($factory = $definition->getFactory()) && ($factory[0] instanceof Reference || $factory[0] instanceof Definition)) {
-            return false;
-        }
-
-        if (count($ids) > 1 && $definition->getFactoryService(false)) {
-            return false;
-        }
-
-        return $container->getDefinition(reset($ids))->getScope() === $definition->getScope();
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/LoggingFormatter.php b/vendor/symfony/dependency-injection/Compiler/LoggingFormatter.php
deleted file mode 100644
index 6bd6161..0000000
--- a/vendor/symfony/dependency-injection/Compiler/LoggingFormatter.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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;
-
-/**
- * Used to format logging messages during the compilation.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class LoggingFormatter
-{
-    public function formatRemoveService(CompilerPassInterface $pass, $id, $reason)
-    {
-        return $this->format($pass, sprintf('Removed service "%s"; reason: %s', $id, $reason));
-    }
-
-    public function formatInlineService(CompilerPassInterface $pass, $id, $target)
-    {
-        return $this->format($pass, sprintf('Inlined service "%s" to "%s".', $id, $target));
-    }
-
-    public function formatUpdateReference(CompilerPassInterface $pass, $serviceId, $oldDestId, $newDestId)
-    {
-        return $this->format($pass, sprintf('Changed reference of service "%s" previously pointing to "%s" to "%s".', $serviceId, $oldDestId, $newDestId));
-    }
-
-    public function formatResolveInheritance(CompilerPassInterface $pass, $childId, $parentId)
-    {
-        return $this->format($pass, sprintf('Resolving inheritance for "%s" (parent: %s).', $childId, $parentId));
-    }
-
-    public function format(CompilerPassInterface $pass, $message)
-    {
-        return sprintf('%s: %s', get_class($pass), $message);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/MergeExtensionConfigurationPass.php b/vendor/symfony/dependency-injection/Compiler/MergeExtensionConfigurationPass.php
deleted file mode 100644
index f9e6024..0000000
--- a/vendor/symfony/dependency-injection/Compiler/MergeExtensionConfigurationPass.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?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\Extension\PrependExtensionInterface;
-
-/**
- * Merges extension configs into the container builder.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class MergeExtensionConfigurationPass implements CompilerPassInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $parameters = $container->getParameterBag()->all();
-        $definitions = $container->getDefinitions();
-        $aliases = $container->getAliases();
-        $exprLangProviders = $container->getExpressionLanguageProviders();
-
-        foreach ($container->getExtensions() as $extension) {
-            if ($extension instanceof PrependExtensionInterface) {
-                $extension->prepend($container);
-            }
-        }
-
-        foreach ($container->getExtensions() as $name => $extension) {
-            if (!$config = $container->getExtensionConfig($name)) {
-                // this extension was not called
-                continue;
-            }
-            $config = $container->getParameterBag()->resolveValue($config);
-
-            $tmpContainer = new ContainerBuilder($container->getParameterBag());
-            $tmpContainer->setResourceTracking($container->isTrackingResources());
-            $tmpContainer->addObjectResource($extension);
-
-            foreach ($exprLangProviders as $provider) {
-                $tmpContainer->addExpressionLanguageProvider($provider);
-            }
-
-            $extension->load($config, $tmpContainer);
-
-            $container->merge($tmpContainer);
-            $container->getParameterBag()->add($parameters);
-        }
-
-        $container->addDefinitions($definitions);
-        $container->addAliases($aliases);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/PassConfig.php b/vendor/symfony/dependency-injection/Compiler/PassConfig.php
deleted file mode 100644
index 2849dfe..0000000
--- a/vendor/symfony/dependency-injection/Compiler/PassConfig.php
+++ /dev/null
@@ -1,227 +0,0 @@
-<?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\Exception\InvalidArgumentException;
-
-/**
- * Compiler Pass Configuration.
- *
- * This class has a default configuration embedded.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class PassConfig
-{
-    const TYPE_AFTER_REMOVING = 'afterRemoving';
-    const TYPE_BEFORE_OPTIMIZATION = 'beforeOptimization';
-    const TYPE_BEFORE_REMOVING = 'beforeRemoving';
-    const TYPE_OPTIMIZE = 'optimization';
-    const TYPE_REMOVE = 'removing';
-
-    private $mergePass;
-    private $afterRemovingPasses = array();
-    private $beforeOptimizationPasses = array();
-    private $beforeRemovingPasses = array();
-    private $optimizationPasses;
-    private $removingPasses;
-
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {
-        $this->mergePass = new MergeExtensionConfigurationPass();
-
-        $this->optimizationPasses = array(
-            new ExtensionCompilerPass(),
-            new ResolveDefinitionTemplatesPass(),
-            new DecoratorServicePass(),
-            new ResolveParameterPlaceHoldersPass(),
-            new CheckDefinitionValidityPass(),
-            new ResolveReferencesToAliasesPass(),
-            new ResolveInvalidReferencesPass(),
-            new AnalyzeServiceReferencesPass(true),
-            new CheckCircularReferencesPass(),
-            new CheckReferenceValidityPass(),
-        );
-
-        $this->removingPasses = array(
-            new RemovePrivateAliasesPass(),
-            new RemoveAbstractDefinitionsPass(),
-            new ReplaceAliasByActualDefinitionPass(),
-            new RepeatedPass(array(
-                new AnalyzeServiceReferencesPass(),
-                new InlineServiceDefinitionsPass(),
-                new AnalyzeServiceReferencesPass(),
-                new RemoveUnusedDefinitionsPass(),
-            )),
-            new CheckExceptionOnInvalidReferenceBehaviorPass(),
-        );
-    }
-
-    /**
-     * Returns all passes in order to be processed.
-     *
-     * @return array An array of all passes to process
-     */
-    public function getPasses()
-    {
-        return array_merge(
-            array($this->mergePass),
-            $this->beforeOptimizationPasses,
-            $this->optimizationPasses,
-            $this->beforeRemovingPasses,
-            $this->removingPasses,
-            $this->afterRemovingPasses
-        );
-    }
-
-    /**
-     * Adds a pass.
-     *
-     * @param CompilerPassInterface $pass A Compiler pass
-     * @param string                $type The pass type
-     *
-     * @throws InvalidArgumentException when a pass type doesn't exist
-     */
-    public function addPass(CompilerPassInterface $pass, $type = self::TYPE_BEFORE_OPTIMIZATION)
-    {
-        $property = $type.'Passes';
-        if (!isset($this->$property)) {
-            throw new InvalidArgumentException(sprintf('Invalid type "%s".', $type));
-        }
-
-        $passes = &$this->$property;
-        $passes[] = $pass;
-    }
-
-    /**
-     * Gets all passes for the AfterRemoving pass.
-     *
-     * @return array An array of passes
-     */
-    public function getAfterRemovingPasses()
-    {
-        return $this->afterRemovingPasses;
-    }
-
-    /**
-     * Gets all passes for the BeforeOptimization pass.
-     *
-     * @return array An array of passes
-     */
-    public function getBeforeOptimizationPasses()
-    {
-        return $this->beforeOptimizationPasses;
-    }
-
-    /**
-     * Gets all passes for the BeforeRemoving pass.
-     *
-     * @return array An array of passes
-     */
-    public function getBeforeRemovingPasses()
-    {
-        return $this->beforeRemovingPasses;
-    }
-
-    /**
-     * Gets all passes for the Optimization pass.
-     *
-     * @return array An array of passes
-     */
-    public function getOptimizationPasses()
-    {
-        return $this->optimizationPasses;
-    }
-
-    /**
-     * Gets all passes for the Removing pass.
-     *
-     * @return array An array of passes
-     */
-    public function getRemovingPasses()
-    {
-        return $this->removingPasses;
-    }
-
-    /**
-     * Gets all passes for the Merge pass.
-     *
-     * @return array An array of passes
-     */
-    public function getMergePass()
-    {
-        return $this->mergePass;
-    }
-
-    /**
-     * Sets the Merge Pass.
-     *
-     * @param CompilerPassInterface $pass The merge pass
-     */
-    public function setMergePass(CompilerPassInterface $pass)
-    {
-        $this->mergePass = $pass;
-    }
-
-    /**
-     * Sets the AfterRemoving passes.
-     *
-     * @param array $passes An array of passes
-     */
-    public function setAfterRemovingPasses(array $passes)
-    {
-        $this->afterRemovingPasses = $passes;
-    }
-
-    /**
-     * Sets the BeforeOptimization passes.
-     *
-     * @param array $passes An array of passes
-     */
-    public function setBeforeOptimizationPasses(array $passes)
-    {
-        $this->beforeOptimizationPasses = $passes;
-    }
-
-    /**
-     * Sets the BeforeRemoving passes.
-     *
-     * @param array $passes An array of passes
-     */
-    public function setBeforeRemovingPasses(array $passes)
-    {
-        $this->beforeRemovingPasses = $passes;
-    }
-
-    /**
-     * Sets the Optimization passes.
-     *
-     * @param array $passes An array of passes
-     */
-    public function setOptimizationPasses(array $passes)
-    {
-        $this->optimizationPasses = $passes;
-    }
-
-    /**
-     * Sets the Removing passes.
-     *
-     * @param array $passes An array of passes
-     */
-    public function setRemovingPasses(array $passes)
-    {
-        $this->removingPasses = $passes;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/RemoveAbstractDefinitionsPass.php b/vendor/symfony/dependency-injection/Compiler/RemoveAbstractDefinitionsPass.php
deleted file mode 100644
index 0ef0af0..0000000
--- a/vendor/symfony/dependency-injection/Compiler/RemoveAbstractDefinitionsPass.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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;
-
-/**
- * Removes abstract Definitions.
- */
-class RemoveAbstractDefinitionsPass implements CompilerPassInterface
-{
-    /**
-     * Removes abstract definitions from the ContainerBuilder.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $compiler = $container->getCompiler();
-        $formatter = $compiler->getLoggingFormatter();
-
-        foreach ($container->getDefinitions() as $id => $definition) {
-            if ($definition->isAbstract()) {
-                $container->removeDefinition($id);
-                $compiler->addLogMessage($formatter->formatRemoveService($this, $id, 'abstract'));
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/RemovePrivateAliasesPass.php b/vendor/symfony/dependency-injection/Compiler/RemovePrivateAliasesPass.php
deleted file mode 100644
index 5c53a33..0000000
--- a/vendor/symfony/dependency-injection/Compiler/RemovePrivateAliasesPass.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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;
-
-/**
- * Remove private aliases from the container. They were only used to establish
- * dependencies between services, and these dependencies have been resolved in
- * one of the previous passes.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class RemovePrivateAliasesPass implements CompilerPassInterface
-{
-    /**
-     * Removes private aliases from the ContainerBuilder.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $compiler = $container->getCompiler();
-        $formatter = $compiler->getLoggingFormatter();
-
-        foreach ($container->getAliases() as $id => $alias) {
-            if ($alias->isPublic()) {
-                continue;
-            }
-
-            $container->removeAlias($id);
-            $compiler->addLogMessage($formatter->formatRemoveService($this, $id, 'private alias'));
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/RemoveUnusedDefinitionsPass.php b/vendor/symfony/dependency-injection/Compiler/RemoveUnusedDefinitionsPass.php
deleted file mode 100644
index 9e18a9e..0000000
--- a/vendor/symfony/dependency-injection/Compiler/RemoveUnusedDefinitionsPass.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?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;
-
-/**
- * Removes unused service definitions from the container.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class RemoveUnusedDefinitionsPass implements RepeatablePassInterface
-{
-    private $repeatedPass;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setRepeatedPass(RepeatedPass $repeatedPass)
-    {
-        $this->repeatedPass = $repeatedPass;
-    }
-
-    /**
-     * Processes the ContainerBuilder to remove unused definitions.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $compiler = $container->getCompiler();
-        $formatter = $compiler->getLoggingFormatter();
-        $graph = $compiler->getServiceReferenceGraph();
-
-        $hasChanged = false;
-        foreach ($container->getDefinitions() as $id => $definition) {
-            if ($definition->isPublic()) {
-                continue;
-            }
-
-            if ($graph->hasNode($id)) {
-                $edges = $graph->getNode($id)->getInEdges();
-                $referencingAliases = array();
-                $sourceIds = array();
-                foreach ($edges as $edge) {
-                    $node = $edge->getSourceNode();
-                    $sourceIds[] = $node->getId();
-
-                    if ($node->isAlias()) {
-                        $referencingAliases[] = $node->getValue();
-                    }
-                }
-                $isReferenced = (count(array_unique($sourceIds)) - count($referencingAliases)) > 0;
-            } else {
-                $referencingAliases = array();
-                $isReferenced = false;
-            }
-
-            if (1 === count($referencingAliases) && false === $isReferenced) {
-                $container->setDefinition((string) reset($referencingAliases), $definition);
-                $definition->setPublic(true);
-                $container->removeDefinition($id);
-                $compiler->addLogMessage($formatter->formatRemoveService($this, $id, 'replaces alias '.reset($referencingAliases)));
-            } elseif (0 === count($referencingAliases) && false === $isReferenced) {
-                $container->removeDefinition($id);
-                $compiler->addLogMessage($formatter->formatRemoveService($this, $id, 'unused'));
-                $hasChanged = true;
-            }
-        }
-
-        if ($hasChanged) {
-            $this->repeatedPass->setRepeat();
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/RepeatablePassInterface.php b/vendor/symfony/dependency-injection/Compiler/RepeatablePassInterface.php
deleted file mode 100644
index d60ae35..0000000
--- a/vendor/symfony/dependency-injection/Compiler/RepeatablePassInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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;
-
-/**
- * Interface that must be implemented by passes that are run as part of an
- * RepeatedPass.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-interface RepeatablePassInterface extends CompilerPassInterface
-{
-    /**
-     * Sets the RepeatedPass interface.
-     *
-     * @param RepeatedPass $repeatedPass
-     */
-    public function setRepeatedPass(RepeatedPass $repeatedPass);
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/RepeatedPass.php b/vendor/symfony/dependency-injection/Compiler/RepeatedPass.php
deleted file mode 100644
index e34b068..0000000
--- a/vendor/symfony/dependency-injection/Compiler/RepeatedPass.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?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\Exception\InvalidArgumentException;
-
-/**
- * A pass that might be run repeatedly.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class RepeatedPass implements CompilerPassInterface
-{
-    /**
-     * @var bool
-     */
-    private $repeat = false;
-
-    /**
-     * @var RepeatablePassInterface[]
-     */
-    private $passes;
-
-    /**
-     * Constructor.
-     *
-     * @param RepeatablePassInterface[] $passes An array of RepeatablePassInterface objects
-     *
-     * @throws InvalidArgumentException when the passes don't implement RepeatablePassInterface
-     */
-    public function __construct(array $passes)
-    {
-        foreach ($passes as $pass) {
-            if (!$pass instanceof RepeatablePassInterface) {
-                throw new InvalidArgumentException('$passes must be an array of RepeatablePassInterface.');
-            }
-
-            $pass->setRepeatedPass($this);
-        }
-
-        $this->passes = $passes;
-    }
-
-    /**
-     * Process the repeatable passes that run more than once.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $this->repeat = false;
-        foreach ($this->passes as $pass) {
-            $pass->process($container);
-        }
-
-        if ($this->repeat) {
-            $this->process($container);
-        }
-    }
-
-    /**
-     * Sets if the pass should repeat.
-     */
-    public function setRepeat()
-    {
-        $this->repeat = true;
-    }
-
-    /**
-     * Returns the passes.
-     *
-     * @return RepeatablePassInterface[] An array of RepeatablePassInterface objects
-     */
-    public function getPasses()
-    {
-        return $this->passes;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php b/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php
deleted file mode 100644
index 972d708..0000000
--- a/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?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\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Reference;
-
-/**
- * Replaces aliases with actual service definitions, effectively removing these
- * aliases.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ReplaceAliasByActualDefinitionPass implements CompilerPassInterface
-{
-    private $compiler;
-    private $formatter;
-    private $sourceId;
-
-    /**
-     * Process the Container to replace aliases with service definitions.
-     *
-     * @param ContainerBuilder $container
-     *
-     * @throws InvalidArgumentException if the service definition does not exist
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $this->compiler = $container->getCompiler();
-        $this->formatter = $this->compiler->getLoggingFormatter();
-
-        foreach ($container->getAliases() as $id => $alias) {
-            $aliasId = (string) $alias;
-
-            try {
-                $definition = $container->getDefinition($aliasId);
-            } catch (InvalidArgumentException $e) {
-                throw new InvalidArgumentException(sprintf('Unable to replace alias "%s" with "%s".', $alias, $id), null, $e);
-            }
-
-            if ($definition->isPublic()) {
-                continue;
-            }
-
-            $definition->setPublic(true);
-            $container->setDefinition($id, $definition);
-            $container->removeDefinition($aliasId);
-
-            $this->updateReferences($container, $aliasId, $id);
-
-            // we have to restart the process due to concurrent modification of
-            // the container
-            $this->process($container);
-
-            break;
-        }
-    }
-
-    /**
-     * Updates references to remove aliases.
-     *
-     * @param ContainerBuilder $container The container
-     * @param string           $currentId The alias identifier being replaced
-     * @param string           $newId     The id of the service the alias points to
-     */
-    private function updateReferences($container, $currentId, $newId)
-    {
-        foreach ($container->getAliases() as $id => $alias) {
-            if ($currentId === (string) $alias) {
-                $container->setAlias($id, $newId);
-            }
-        }
-
-        foreach ($container->getDefinitions() as $id => $definition) {
-            $this->sourceId = $id;
-
-            $definition->setArguments(
-                $this->updateArgumentReferences($definition->getArguments(), $currentId, $newId)
-            );
-
-            $definition->setMethodCalls(
-                $this->updateArgumentReferences($definition->getMethodCalls(), $currentId, $newId)
-            );
-
-            $definition->setProperties(
-                $this->updateArgumentReferences($definition->getProperties(), $currentId, $newId)
-            );
-        }
-    }
-
-    /**
-     * Updates argument references.
-     *
-     * @param array  $arguments An array of Arguments
-     * @param string $currentId The alias identifier
-     * @param string $newId     The identifier the alias points to
-     *
-     * @return array
-     */
-    private function updateArgumentReferences(array $arguments, $currentId, $newId)
-    {
-        foreach ($arguments as $k => $argument) {
-            if (is_array($argument)) {
-                $arguments[$k] = $this->updateArgumentReferences($argument, $currentId, $newId);
-            } elseif ($argument instanceof Reference) {
-                if ($currentId === (string) $argument) {
-                    $arguments[$k] = new Reference($newId, $argument->getInvalidBehavior());
-                    $this->compiler->addLogMessage($this->formatter->formatUpdateReference($this, $this->sourceId, $currentId, $newId));
-                }
-            }
-        }
-
-        return $arguments;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/ResolveDefinitionTemplatesPass.php b/vendor/symfony/dependency-injection/Compiler/ResolveDefinitionTemplatesPass.php
deleted file mode 100644
index 3fc6a11..0000000
--- a/vendor/symfony/dependency-injection/Compiler/ResolveDefinitionTemplatesPass.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?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\Definition;
-use Symfony\Component\DependencyInjection\DefinitionDecorator;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-
-/**
- * This replaces all DefinitionDecorator instances with their equivalent fully
- * merged Definition instance.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ResolveDefinitionTemplatesPass implements CompilerPassInterface
-{
-    private $container;
-    private $compiler;
-    private $formatter;
-
-    /**
-     * Process the ContainerBuilder to replace DefinitionDecorator instances with their real Definition instances.
-     *
-     * @param ContainerBuilder $container
-     */
-    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;
-            }
-
-            $this->resolveDefinition($id, $definition);
-        }
-    }
-
-    /**
-     * Resolves the definition.
-     *
-     * @param string              $id         The definition identifier
-     * @param DefinitionDecorator $definition
-     *
-     * @return Definition
-     *
-     * @throws \RuntimeException When the definition is invalid
-     */
-    private function resolveDefinition($id, 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));
-        }
-
-        $parentDef = $this->container->getDefinition($parent);
-        if ($parentDef instanceof DefinitionDecorator) {
-            $parentDef = $this->resolveDefinition($parent, $parentDef);
-        }
-
-        $this->compiler->addLogMessage($this->formatter->formatResolveInheritance($this, $id, $parent));
-        $def = new Definition();
-
-        // merge in parent definition
-        // purposely ignored attributes: scope, abstract, tags
-        $def->setClass($parentDef->getClass());
-        $def->setArguments($parentDef->getArguments());
-        $def->setMethodCalls($parentDef->getMethodCalls());
-        $def->setProperties($parentDef->getProperties());
-        if ($parentDef->getFactoryClass(false)) {
-            $def->setFactoryClass($parentDef->getFactoryClass(false));
-        }
-        if ($parentDef->getFactoryMethod(false)) {
-            $def->setFactoryMethod($parentDef->getFactoryMethod(false));
-        }
-        if ($parentDef->getFactoryService(false)) {
-            $def->setFactoryService($parentDef->getFactoryService(false));
-        }
-        $def->setFactory($parentDef->getFactory());
-        $def->setConfigurator($parentDef->getConfigurator());
-        $def->setFile($parentDef->getFile());
-        $def->setPublic($parentDef->isPublic());
-        $def->setLazy($parentDef->isLazy());
-
-        // overwrite with values specified in the decorator
-        $changes = $definition->getChanges();
-        if (isset($changes['class'])) {
-            $def->setClass($definition->getClass());
-        }
-        if (isset($changes['factory_class'])) {
-            $def->setFactoryClass($definition->getFactoryClass(false));
-        }
-        if (isset($changes['factory_method'])) {
-            $def->setFactoryMethod($definition->getFactoryMethod(false));
-        }
-        if (isset($changes['factory_service'])) {
-            $def->setFactoryService($definition->getFactoryService(false));
-        }
-        if (isset($changes['factory'])) {
-            $def->setFactory($definition->getFactory());
-        }
-        if (isset($changes['configurator'])) {
-            $def->setConfigurator($definition->getConfigurator());
-        }
-        if (isset($changes['file'])) {
-            $def->setFile($definition->getFile());
-        }
-        if (isset($changes['public'])) {
-            $def->setPublic($definition->isPublic());
-        }
-        if (isset($changes['lazy'])) {
-            $def->setLazy($definition->isLazy());
-        }
-        if (isset($changes['decorated_service'])) {
-            $decoratedService = $definition->getDecoratedService();
-            if (null === $decoratedService) {
-                $def->setDecoratedService($decoratedService);
-            } else {
-                $def->setDecoratedService($decoratedService[0], $decoratedService[1]);
-            }
-        }
-
-        // merge arguments
-        foreach ($definition->getArguments() as $k => $v) {
-            if (is_numeric($k)) {
-                $def->addArgument($v);
-                continue;
-            }
-
-            if (0 !== strpos($k, 'index_')) {
-                throw new RuntimeException(sprintf('Invalid argument key "%s" found.', $k));
-            }
-
-            $index = (int) substr($k, strlen('index_'));
-            $def->replaceArgument($index, $v);
-        }
-
-        // merge properties
-        foreach ($definition->getProperties() as $k => $v) {
-            $def->setProperty($k, $v);
-        }
-
-        // append method calls
-        if (count($calls = $definition->getMethodCalls()) > 0) {
-            $def->setMethodCalls(array_merge($def->getMethodCalls(), $calls));
-        }
-
-        // these attributes are always taken from the child
-        $def->setAbstract($definition->isAbstract());
-        $def->setScope($definition->getScope());
-        $def->setTags($definition->getTags());
-
-        // set new definition on container
-        $this->container->setDefinition($id, $def);
-
-        return $def;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/ResolveInvalidReferencesPass.php b/vendor/symfony/dependency-injection/Compiler/ResolveInvalidReferencesPass.php
deleted file mode 100644
index 85dbceb..0000000
--- a/vendor/symfony/dependency-injection/Compiler/ResolveInvalidReferencesPass.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?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\ContainerInterface;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-
-/**
- * Emulates the invalid behavior if the reference is not found within the
- * container.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ResolveInvalidReferencesPass implements CompilerPassInterface
-{
-    private $container;
-
-    /**
-     * Process the ContainerBuilder to resolve invalid references.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $this->container = $container;
-        foreach ($container->getDefinitions() as $definition) {
-            if ($definition->isSynthetic() || $definition->isAbstract()) {
-                continue;
-            }
-
-            $definition->setArguments(
-                $this->processArguments($definition->getArguments())
-            );
-
-            $calls = array();
-            foreach ($definition->getMethodCalls() as $call) {
-                try {
-                    $calls[] = array($call[0], $this->processArguments($call[1], true));
-                } catch (RuntimeException $e) {
-                    // this call is simply removed
-                }
-            }
-            $definition->setMethodCalls($calls);
-
-            $properties = array();
-            foreach ($definition->getProperties() as $name => $value) {
-                try {
-                    $value = $this->processArguments(array($value), true);
-                    $properties[$name] = reset($value);
-                } catch (RuntimeException $e) {
-                    // ignore property
-                }
-            }
-            $definition->setProperties($properties);
-        }
-    }
-
-    /**
-     * Processes arguments to determine invalid references.
-     *
-     * @param array $arguments    An array of Reference objects
-     * @param bool  $inMethodCall
-     *
-     * @return array
-     *
-     * @throws RuntimeException When the config is invalid
-     */
-    private function processArguments(array $arguments, $inMethodCall = false)
-    {
-        foreach ($arguments as $k => $argument) {
-            if (is_array($argument)) {
-                $arguments[$k] = $this->processArguments($argument, $inMethodCall);
-            } elseif ($argument instanceof Reference) {
-                $id = (string) $argument;
-
-                $invalidBehavior = $argument->getInvalidBehavior();
-                $exists = $this->container->has($id);
-
-                // resolve invalid behavior
-                if (!$exists && ContainerInterface::NULL_ON_INVALID_REFERENCE === $invalidBehavior) {
-                    $arguments[$k] = null;
-                } elseif (!$exists && ContainerInterface::IGNORE_ON_INVALID_REFERENCE === $invalidBehavior) {
-                    if ($inMethodCall) {
-                        throw new RuntimeException('Method shouldn\'t be called.');
-                    }
-
-                    $arguments[$k] = null;
-                }
-            }
-        }
-
-        return $arguments;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/ResolveParameterPlaceHoldersPass.php b/vendor/symfony/dependency-injection/Compiler/ResolveParameterPlaceHoldersPass.php
deleted file mode 100644
index a35f84c..0000000
--- a/vendor/symfony/dependency-injection/Compiler/ResolveParameterPlaceHoldersPass.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?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\Exception\ParameterNotFoundException;
-
-/**
- * Resolves all parameter placeholders "%somevalue%" to their real values.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ResolveParameterPlaceHoldersPass implements CompilerPassInterface
-{
-    /**
-     * Processes the ContainerBuilder to resolve parameter placeholders.
-     *
-     * @param ContainerBuilder $container
-     *
-     * @throws ParameterNotFoundException
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $parameterBag = $container->getParameterBag();
-
-        foreach ($container->getDefinitions() as $id => $definition) {
-            try {
-                $definition->setClass($parameterBag->resolveValue($definition->getClass()));
-                $definition->setFile($parameterBag->resolveValue($definition->getFile()));
-                $definition->setArguments($parameterBag->resolveValue($definition->getArguments()));
-                if ($definition->getFactoryClass(false)) {
-                    $definition->setFactoryClass($parameterBag->resolveValue($definition->getFactoryClass(false)));
-                }
-
-                $factory = $definition->getFactory();
-
-                if (is_array($factory) && isset($factory[0])) {
-                    $factory[0] = $parameterBag->resolveValue($factory[0]);
-                    $definition->setFactory($factory);
-                }
-
-                $calls = array();
-                foreach ($definition->getMethodCalls() as $name => $arguments) {
-                    $calls[$parameterBag->resolveValue($name)] = $parameterBag->resolveValue($arguments);
-                }
-                $definition->setMethodCalls($calls);
-
-                $definition->setProperties($parameterBag->resolveValue($definition->getProperties()));
-            } catch (ParameterNotFoundException $e) {
-                $e->setSourceId($id);
-
-                throw $e;
-            }
-        }
-
-        $aliases = array();
-        foreach ($container->getAliases() as $name => $target) {
-            $aliases[$parameterBag->resolveValue($name)] = $parameterBag->resolveValue($target);
-        }
-        $container->setAliases($aliases);
-
-        $parameterBag->resolve();
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/ResolveReferencesToAliasesPass.php b/vendor/symfony/dependency-injection/Compiler/ResolveReferencesToAliasesPass.php
deleted file mode 100644
index c90d76f..0000000
--- a/vendor/symfony/dependency-injection/Compiler/ResolveReferencesToAliasesPass.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?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\Alias;
-use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * Replaces all references to aliases with references to the actual service.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ResolveReferencesToAliasesPass implements CompilerPassInterface
-{
-    private $container;
-
-    /**
-     * Processes the ContainerBuilder to replace references to aliases with actual service references.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $this->container = $container;
-
-        foreach ($container->getDefinitions() as $definition) {
-            if ($definition->isSynthetic() || $definition->isAbstract()) {
-                continue;
-            }
-
-            $definition->setArguments($this->processArguments($definition->getArguments()));
-            $definition->setMethodCalls($this->processArguments($definition->getMethodCalls()));
-            $definition->setProperties($this->processArguments($definition->getProperties()));
-        }
-
-        foreach ($container->getAliases() as $id => $alias) {
-            $aliasId = (string) $alias;
-            if ($aliasId !== $defId = $this->getDefinitionId($aliasId)) {
-                $container->setAlias($id, new Alias($defId, $alias->isPublic()));
-            }
-        }
-    }
-
-    /**
-     * Processes the arguments to replace aliases.
-     *
-     * @param array $arguments An array of References
-     *
-     * @return array An array of References
-     */
-    private function processArguments(array $arguments)
-    {
-        foreach ($arguments as $k => $argument) {
-            if (is_array($argument)) {
-                $arguments[$k] = $this->processArguments($argument);
-            } elseif ($argument instanceof Reference) {
-                $defId = $this->getDefinitionId($id = (string) $argument);
-
-                if ($defId !== $id) {
-                    $arguments[$k] = new Reference($defId, $argument->getInvalidBehavior(), $argument->isStrict());
-                }
-            }
-        }
-
-        return $arguments;
-    }
-
-    /**
-     * Resolves an alias into a definition id.
-     *
-     * @param string $id The definition or alias id to resolve
-     *
-     * @return string The definition id with aliases resolved
-     */
-    private function getDefinitionId($id)
-    {
-        $seen = array();
-        while ($this->container->hasAlias($id)) {
-            if (isset($seen[$id])) {
-                throw new ServiceCircularReferenceException($id, array_keys($seen));
-            }
-            $seen[$id] = true;
-            $id = (string) $this->container->getAlias($id);
-        }
-
-        return $id;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraph.php b/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraph.php
deleted file mode 100644
index dc9a1a0..0000000
--- a/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraph.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?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\Exception\InvalidArgumentException;
-
-/**
- * This is a directed graph of your services.
- *
- * This information can be used by your compiler passes instead of collecting
- * it themselves which improves performance quite a lot.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ServiceReferenceGraph
-{
-    /**
-     * @var ServiceReferenceGraphNode[]
-     */
-    private $nodes = array();
-
-    /**
-     * Checks if the graph has a specific node.
-     *
-     * @param string $id Id to check
-     *
-     * @return bool
-     */
-    public function hasNode($id)
-    {
-        return isset($this->nodes[$id]);
-    }
-
-    /**
-     * Gets a node by identifier.
-     *
-     * @param string $id The id to retrieve
-     *
-     * @return ServiceReferenceGraphNode The node matching the supplied identifier
-     *
-     * @throws InvalidArgumentException if no node matches the supplied identifier
-     */
-    public function getNode($id)
-    {
-        if (!isset($this->nodes[$id])) {
-            throw new InvalidArgumentException(sprintf('There is no node with id "%s".', $id));
-        }
-
-        return $this->nodes[$id];
-    }
-
-    /**
-     * Returns all nodes.
-     *
-     * @return ServiceReferenceGraphNode[] An array of all ServiceReferenceGraphNode objects
-     */
-    public function getNodes()
-    {
-        return $this->nodes;
-    }
-
-    /**
-     * Clears all nodes.
-     */
-    public function clear()
-    {
-        $this->nodes = array();
-    }
-
-    /**
-     * Connects 2 nodes together in the Graph.
-     *
-     * @param string $sourceId
-     * @param string $sourceValue
-     * @param string $destId
-     * @param string $destValue
-     * @param string $reference
-     */
-    public function connect($sourceId, $sourceValue, $destId, $destValue = null, $reference = null)
-    {
-        $sourceNode = $this->createNode($sourceId, $sourceValue);
-        $destNode = $this->createNode($destId, $destValue);
-        $edge = new ServiceReferenceGraphEdge($sourceNode, $destNode, $reference);
-
-        $sourceNode->addOutEdge($edge);
-        $destNode->addInEdge($edge);
-    }
-
-    /**
-     * Creates a graph node.
-     *
-     * @param string $id
-     * @param string $value
-     *
-     * @return ServiceReferenceGraphNode
-     */
-    private function createNode($id, $value)
-    {
-        if (isset($this->nodes[$id]) && $this->nodes[$id]->getValue() === $value) {
-            return $this->nodes[$id];
-        }
-
-        return $this->nodes[$id] = new ServiceReferenceGraphNode($id, $value);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphEdge.php b/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphEdge.php
deleted file mode 100644
index 6a3e2ea..0000000
--- a/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphEdge.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?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;
-
-/**
- * Represents an edge in your service graph.
- *
- * Value is typically a reference.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ServiceReferenceGraphEdge
-{
-    private $sourceNode;
-    private $destNode;
-    private $value;
-
-    /**
-     * Constructor.
-     *
-     * @param ServiceReferenceGraphNode $sourceNode
-     * @param ServiceReferenceGraphNode $destNode
-     * @param string                    $value
-     */
-    public function __construct(ServiceReferenceGraphNode $sourceNode, ServiceReferenceGraphNode $destNode, $value = null)
-    {
-        $this->sourceNode = $sourceNode;
-        $this->destNode = $destNode;
-        $this->value = $value;
-    }
-
-    /**
-     * Returns the value of the edge.
-     *
-     * @return ServiceReferenceGraphNode
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Returns the source node.
-     *
-     * @return ServiceReferenceGraphNode
-     */
-    public function getSourceNode()
-    {
-        return $this->sourceNode;
-    }
-
-    /**
-     * Returns the destination node.
-     *
-     * @return ServiceReferenceGraphNode
-     */
-    public function getDestNode()
-    {
-        return $this->destNode;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphNode.php b/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphNode.php
deleted file mode 100644
index c49c932..0000000
--- a/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphNode.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?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\Definition;
-use Symfony\Component\DependencyInjection\Alias;
-
-/**
- * Represents a node in your service graph.
- *
- * Value is typically a definition, or an alias.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ServiceReferenceGraphNode
-{
-    private $id;
-    private $inEdges = array();
-    private $outEdges = array();
-    private $value;
-
-    /**
-     * Constructor.
-     *
-     * @param string $id    The node identifier
-     * @param mixed  $value The node value
-     */
-    public function __construct($id, $value)
-    {
-        $this->id = $id;
-        $this->value = $value;
-    }
-
-    /**
-     * Adds an in edge to this node.
-     *
-     * @param ServiceReferenceGraphEdge $edge
-     */
-    public function addInEdge(ServiceReferenceGraphEdge $edge)
-    {
-        $this->inEdges[] = $edge;
-    }
-
-    /**
-     * Adds an out edge to this node.
-     *
-     * @param ServiceReferenceGraphEdge $edge
-     */
-    public function addOutEdge(ServiceReferenceGraphEdge $edge)
-    {
-        $this->outEdges[] = $edge;
-    }
-
-    /**
-     * Checks if the value of this node is an Alias.
-     *
-     * @return bool True if the value is an Alias instance
-     */
-    public function isAlias()
-    {
-        return $this->value instanceof Alias;
-    }
-
-    /**
-     * Checks if the value of this node is a Definition.
-     *
-     * @return bool True if the value is a Definition instance
-     */
-    public function isDefinition()
-    {
-        return $this->value instanceof Definition;
-    }
-
-    /**
-     * Returns the identifier.
-     *
-     * @return string
-     */
-    public function getId()
-    {
-        return $this->id;
-    }
-
-    /**
-     * Returns the in edges.
-     *
-     * @return array The in ServiceReferenceGraphEdge array
-     */
-    public function getInEdges()
-    {
-        return $this->inEdges;
-    }
-
-    /**
-     * Returns the out edges.
-     *
-     * @return array The out ServiceReferenceGraphEdge array
-     */
-    public function getOutEdges()
-    {
-        return $this->outEdges;
-    }
-
-    /**
-     * Returns the value of this Node.
-     *
-     * @return mixed The value
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Container.php b/vendor/symfony/dependency-injection/Container.php
deleted file mode 100644
index 510d030..0000000
--- a/vendor/symfony/dependency-injection/Container.php
+++ /dev/null
@@ -1,542 +0,0 @@
-<?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;
-
-use Symfony\Component\DependencyInjection\Exception\InactiveScopeException;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
-use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
-use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
-use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
-use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;
-
-/**
- * Container is a dependency injection container.
- *
- * It gives access to object instances (services).
- *
- * Services and parameters are simple key/pair stores.
- *
- * Parameter and service keys are case insensitive.
- *
- * A service id can contain lowercased letters, digits, underscores, and dots.
- * Underscores are used to separate words, and dots to group services
- * under namespaces:
- *
- * <ul>
- *   <li>request</li>
- *   <li>mysql_session_storage</li>
- *   <li>symfony.mysql_session_storage</li>
- * </ul>
- *
- * A service can also be defined by creating a method named
- * getXXXService(), where XXX is the camelized version of the id:
- *
- * <ul>
- *   <li>request -> getRequestService()</li>
- *   <li>mysql_session_storage -> getMysqlSessionStorageService()</li>
- *   <li>symfony.mysql_session_storage -> getSymfony_MysqlSessionStorageService()</li>
- * </ul>
- *
- * The container can have three possible behaviors when a service does not exist:
- *
- *  * EXCEPTION_ON_INVALID_REFERENCE: Throws an exception (the default)
- *  * NULL_ON_INVALID_REFERENCE:      Returns null
- *  * IGNORE_ON_INVALID_REFERENCE:    Ignores the wrapping command asking for the reference
- *                                    (for instance, ignore a setter if the service does not exist)
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class Container implements IntrospectableContainerInterface
-{
-    /**
-     * @var ParameterBagInterface
-     */
-    protected $parameterBag;
-
-    protected $services = array();
-    protected $methodMap = array();
-    protected $aliases = array();
-    protected $scopes = array();
-    protected $scopeChildren = array();
-    protected $scopedServices = array();
-    protected $scopeStacks = array();
-    protected $loading = array();
-
-    private $underscoreMap = array('_' => '', '.' => '_', '\\' => '_');
-
-    /**
-     * Constructor.
-     *
-     * @param ParameterBagInterface $parameterBag A ParameterBagInterface instance
-     */
-    public function __construct(ParameterBagInterface $parameterBag = null)
-    {
-        $this->parameterBag = $parameterBag ?: new ParameterBag();
-    }
-
-    /**
-     * Compiles the container.
-     *
-     * This method does two things:
-     *
-     *  * Parameter values are resolved;
-     *  * The parameter bag is frozen.
-     */
-    public function compile()
-    {
-        $this->parameterBag->resolve();
-
-        $this->parameterBag = new FrozenParameterBag($this->parameterBag->all());
-    }
-
-    /**
-     * Returns true if the container parameter bag are frozen.
-     *
-     * @return bool true if the container parameter bag are frozen, false otherwise
-     */
-    public function isFrozen()
-    {
-        return $this->parameterBag instanceof FrozenParameterBag;
-    }
-
-    /**
-     * Gets the service container parameter bag.
-     *
-     * @return ParameterBagInterface A ParameterBagInterface instance
-     */
-    public function getParameterBag()
-    {
-        return $this->parameterBag;
-    }
-
-    /**
-     * Gets a parameter.
-     *
-     * @param string $name The parameter name
-     *
-     * @return mixed The parameter value
-     *
-     * @throws InvalidArgumentException if the parameter is not defined
-     */
-    public function getParameter($name)
-    {
-        return $this->parameterBag->get($name);
-    }
-
-    /**
-     * Checks if a parameter exists.
-     *
-     * @param string $name The parameter name
-     *
-     * @return bool The presence of parameter in container
-     */
-    public function hasParameter($name)
-    {
-        return $this->parameterBag->has($name);
-    }
-
-    /**
-     * Sets a parameter.
-     *
-     * @param string $name  The parameter name
-     * @param mixed  $value The parameter value
-     */
-    public function setParameter($name, $value)
-    {
-        $this->parameterBag->set($name, $value);
-    }
-
-    /**
-     * Sets a service.
-     *
-     * 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.
-     *
-     * @param string $id      The service identifier
-     * @param object $service The service instance
-     * @param string $scope   The scope of the service
-     *
-     * @throws RuntimeException         When trying to set a service in an inactive scope
-     * @throws InvalidArgumentException When trying to set a service in the prototype scope
-     */
-    public function set($id, $service, $scope = self::SCOPE_CONTAINER)
-    {
-        if (self::SCOPE_PROTOTYPE === $scope) {
-            throw new InvalidArgumentException(sprintf('You cannot set service "%s" of scope "prototype".', $id));
-        }
-
-        $id = strtolower($id);
-
-        if ('service_container' === $id) {
-            // BC: 'service_container' is no longer a self-reference but always
-            // $this, so ignore this call.
-            // @todo Throw InvalidArgumentException in next major release.
-            return;
-        }
-        if (self::SCOPE_CONTAINER !== $scope) {
-            if (!isset($this->scopedServices[$scope])) {
-                throw new RuntimeException(sprintf('You cannot set service "%s" of inactive scope.', $id));
-            }
-
-            $this->scopedServices[$scope][$id] = $service;
-        }
-
-        $this->services[$id] = $service;
-
-        if (method_exists($this, $method = 'synchronize'.strtr($id, $this->underscoreMap).'Service')) {
-            $this->$method();
-        }
-
-        if (null === $service) {
-            if (self::SCOPE_CONTAINER !== $scope) {
-                unset($this->scopedServices[$scope][$id]);
-            }
-
-            unset($this->services[$id]);
-        }
-    }
-
-    /**
-     * Returns true if the given service is defined.
-     *
-     * @param string $id The service identifier
-     *
-     * @return bool true if the service is defined, false otherwise
-     */
-    public function has($id)
-    {
-        for ($i = 2;;) {
-            if ('service_container' === $id
-                || isset($this->aliases[$id])
-                || isset($this->services[$id])
-                || array_key_exists($id, $this->services)
-            ) {
-                return true;
-            }
-            if (--$i && $id !== $lcId = strtolower($id)) {
-                $id = $lcId;
-            } else {
-                return method_exists($this, 'get'.strtr($id, $this->underscoreMap).'Service');
-            }
-        }
-    }
-
-    /**
-     * Gets a service.
-     *
-     * If a service is defined both through a set() method and
-     * with a get{$id}Service() method, the former has always precedence.
-     *
-     * @param string $id              The service identifier
-     * @param int    $invalidBehavior The behavior when the service does not exist
-     *
-     * @return object The associated service
-     *
-     * @throws ServiceCircularReferenceException When a circular reference is detected
-     * @throws ServiceNotFoundException          When the service is not defined
-     * @throws \Exception                        if an exception has been thrown when the service has been resolved
-     *
-     * @see Reference
-     */
-    public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE)
-    {
-        // Attempt to retrieve the service by checking first aliases then
-        // available services. Service IDs are case insensitive, however since
-        // this method can be called thousands of times during a request, avoid
-        // calling strtolower() unless necessary.
-        for ($i = 2;;) {
-            if ('service_container' === $id) {
-                return $this;
-            }
-            if (isset($this->aliases[$id])) {
-                $id = $this->aliases[$id];
-            }
-            // Re-use shared service instance if it exists.
-            if (isset($this->services[$id]) || array_key_exists($id, $this->services)) {
-                return $this->services[$id];
-            }
-
-            if (isset($this->loading[$id])) {
-                throw new ServiceCircularReferenceException($id, array_keys($this->loading));
-            }
-
-            if (isset($this->methodMap[$id])) {
-                $method = $this->methodMap[$id];
-            } elseif (--$i && $id !== $lcId = strtolower($id)) {
-                $id = $lcId;
-                continue;
-            } elseif (method_exists($this, $method = 'get'.strtr($id, $this->underscoreMap).'Service')) {
-                // $method is set to the right value, proceed
-            } else {
-                if (self::EXCEPTION_ON_INVALID_REFERENCE === $invalidBehavior) {
-                    if (!$id) {
-                        throw new ServiceNotFoundException($id);
-                    }
-
-                    $alternatives = array();
-                    foreach ($this->services as $key => $associatedService) {
-                        $lev = levenshtein($id, $key);
-                        if ($lev <= strlen($id) / 3 || false !== strpos($key, $id)) {
-                            $alternatives[] = $key;
-                        }
-                    }
-
-                    throw new ServiceNotFoundException($id, null, null, $alternatives);
-                }
-
-                return;
-            }
-
-            $this->loading[$id] = true;
-
-            try {
-                $service = $this->$method();
-            } catch (\Exception $e) {
-                unset($this->loading[$id]);
-
-                if (array_key_exists($id, $this->services)) {
-                    unset($this->services[$id]);
-                }
-
-                if ($e instanceof InactiveScopeException && self::EXCEPTION_ON_INVALID_REFERENCE !== $invalidBehavior) {
-                    return;
-                }
-
-                throw $e;
-            }
-
-            unset($this->loading[$id]);
-
-            return $service;
-        }
-    }
-
-    /**
-     * Returns true if the given service has actually been initialized.
-     *
-     * @param string $id The service identifier
-     *
-     * @return bool true if service has already been initialized, false otherwise
-     */
-    public function initialized($id)
-    {
-        $id = strtolower($id);
-
-        if ('service_container' === $id) {
-            // BC: 'service_container' was a synthetic service previously.
-            // @todo Change to false in next major release.
-            return true;
-        }
-
-        if (isset($this->aliases[$id])) {
-            $id = $this->aliases[$id];
-        }
-
-        return isset($this->services[$id]) || array_key_exists($id, $this->services);
-    }
-
-    /**
-     * Gets all service ids.
-     *
-     * @return array An array of all defined service ids
-     */
-    public function getServiceIds()
-    {
-        $ids = array();
-        $r = new \ReflectionClass($this);
-        foreach ($r->getMethods() as $method) {
-            if (preg_match('/^get(.+)Service$/', $method->name, $match)) {
-                $ids[] = self::underscore($match[1]);
-            }
-        }
-        $ids[] = 'service_container';
-
-        return array_unique(array_merge($ids, array_keys($this->services)));
-    }
-
-    /**
-     * This is called when you enter a scope.
-     *
-     * @param string $name
-     *
-     * @throws RuntimeException         When the parent scope is inactive
-     * @throws InvalidArgumentException When the scope does not exist
-     */
-    public function enterScope($name)
-    {
-        if (!isset($this->scopes[$name])) {
-            throw new InvalidArgumentException(sprintf('The scope "%s" does not exist.', $name));
-        }
-
-        if (self::SCOPE_CONTAINER !== $this->scopes[$name] && !isset($this->scopedServices[$this->scopes[$name]])) {
-            throw new RuntimeException(sprintf('The parent scope "%s" must be active when entering this scope.', $this->scopes[$name]));
-        }
-
-        // check if a scope of this name is already active, if so we need to
-        // remove all services of this scope, and those of any of its child
-        // scopes from the global services map
-        if (isset($this->scopedServices[$name])) {
-            $services = array($this->services, $name => $this->scopedServices[$name]);
-            unset($this->scopedServices[$name]);
-
-            foreach ($this->scopeChildren[$name] as $child) {
-                if (isset($this->scopedServices[$child])) {
-                    $services[$child] = $this->scopedServices[$child];
-                    unset($this->scopedServices[$child]);
-                }
-            }
-
-            // update global map
-            $this->services = call_user_func_array('array_diff_key', $services);
-            array_shift($services);
-
-            // add stack entry for this scope so we can restore the removed services later
-            if (!isset($this->scopeStacks[$name])) {
-                $this->scopeStacks[$name] = new \SplStack();
-            }
-            $this->scopeStacks[$name]->push($services);
-        }
-
-        $this->scopedServices[$name] = array();
-    }
-
-    /**
-     * This is called to leave the current scope, and move back to the parent
-     * scope.
-     *
-     * @param string $name The name of the scope to leave
-     *
-     * @throws InvalidArgumentException if the scope is not active
-     */
-    public function leaveScope($name)
-    {
-        if (!isset($this->scopedServices[$name])) {
-            throw new InvalidArgumentException(sprintf('The scope "%s" is not active.', $name));
-        }
-
-        // remove all services of this scope, or any of its child scopes from
-        // the global service map
-        $services = array($this->services, $this->scopedServices[$name]);
-        unset($this->scopedServices[$name]);
-
-        foreach ($this->scopeChildren[$name] as $child) {
-            if (isset($this->scopedServices[$child])) {
-                $services[] = $this->scopedServices[$child];
-                unset($this->scopedServices[$child]);
-            }
-        }
-
-        // update global map
-        $this->services = call_user_func_array('array_diff_key', $services);
-
-        // check if we need to restore services of a previous scope of this type
-        if (isset($this->scopeStacks[$name]) && count($this->scopeStacks[$name]) > 0) {
-            $services = $this->scopeStacks[$name]->pop();
-            $this->scopedServices += $services;
-
-            if ($this->scopeStacks[$name]->isEmpty()) {
-                unset($this->scopeStacks[$name]);
-            }
-
-            foreach ($services as $array) {
-                foreach ($array as $id => $service) {
-                    $this->set($id, $service, $name);
-                }
-            }
-        }
-    }
-
-    /**
-     * Adds a scope to the container.
-     *
-     * @param ScopeInterface $scope
-     *
-     * @throws InvalidArgumentException
-     */
-    public function addScope(ScopeInterface $scope)
-    {
-        $name = $scope->getName();
-        $parentScope = $scope->getParentName();
-
-        if (self::SCOPE_CONTAINER === $name || self::SCOPE_PROTOTYPE === $name) {
-            throw new InvalidArgumentException(sprintf('The scope "%s" is reserved.', $name));
-        }
-        if (isset($this->scopes[$name])) {
-            throw new InvalidArgumentException(sprintf('A scope with name "%s" already exists.', $name));
-        }
-        if (self::SCOPE_CONTAINER !== $parentScope && !isset($this->scopes[$parentScope])) {
-            throw new InvalidArgumentException(sprintf('The parent scope "%s" does not exist, or is invalid.', $parentScope));
-        }
-
-        $this->scopes[$name] = $parentScope;
-        $this->scopeChildren[$name] = array();
-
-        // normalize the child relations
-        while ($parentScope !== self::SCOPE_CONTAINER) {
-            $this->scopeChildren[$parentScope][] = $name;
-            $parentScope = $this->scopes[$parentScope];
-        }
-    }
-
-    /**
-     * Returns whether this container has a certain scope.
-     *
-     * @param string $name The name of the scope
-     *
-     * @return bool
-     */
-    public function hasScope($name)
-    {
-        return isset($this->scopes[$name]);
-    }
-
-    /**
-     * Returns whether this scope is currently active.
-     *
-     * This does not actually check if the passed scope actually exists.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function isScopeActive($name)
-    {
-        return isset($this->scopedServices[$name]);
-    }
-
-    /**
-     * Camelizes a string.
-     *
-     * @param string $id A string to camelize
-     *
-     * @return string The camelized string
-     */
-    public static function camelize($id)
-    {
-        return strtr(ucwords(strtr($id, array('_' => ' ', '.' => '_ ', '\\' => '_ '))), array(' ' => ''));
-    }
-
-    /**
-     * A string to underscore.
-     *
-     * @param string $id The string to underscore
-     *
-     * @return string The underscored string
-     */
-    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, '_', '.')));
-    }
-}
diff --git a/vendor/symfony/dependency-injection/ContainerAware.php b/vendor/symfony/dependency-injection/ContainerAware.php
deleted file mode 100644
index af977fe..0000000
--- a/vendor/symfony/dependency-injection/ContainerAware.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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;
-
-/**
- * A simple implementation of ContainerAwareInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class ContainerAware implements ContainerAwareInterface
-{
-    /**
-     * @var ContainerInterface
-     */
-    protected $container;
-
-    /**
-     * Sets the Container associated with this Controller.
-     *
-     * @param ContainerInterface $container A ContainerInterface instance
-     */
-    public function setContainer(ContainerInterface $container = null)
-    {
-        $this->container = $container;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/ContainerAwareInterface.php b/vendor/symfony/dependency-injection/ContainerAwareInterface.php
deleted file mode 100644
index 7007265..0000000
--- a/vendor/symfony/dependency-injection/ContainerAwareInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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;
-
-/**
- * ContainerAwareInterface should be implemented by classes that depends on a Container.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ContainerAwareInterface
-{
-    /**
-     * Sets the Container.
-     *
-     * @param ContainerInterface|null $container A ContainerInterface instance or null
-     */
-    public function setContainer(ContainerInterface $container = null);
-}
diff --git a/vendor/symfony/dependency-injection/ContainerAwareTrait.php b/vendor/symfony/dependency-injection/ContainerAwareTrait.php
deleted file mode 100644
index 57280aa..0000000
--- a/vendor/symfony/dependency-injection/ContainerAwareTrait.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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;
-
-/**
- * ContainerAware trait.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-trait ContainerAwareTrait
-{
-    /**
-     * @var ContainerInterface
-     */
-    protected $container;
-
-    /**
-     * Sets the Container associated with this Controller.
-     *
-     * @param ContainerInterface $container A ContainerInterface instance
-     */
-    public function setContainer(ContainerInterface $container = null)
-    {
-        $this->container = $container;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/ContainerBuilder.php b/vendor/symfony/dependency-injection/ContainerBuilder.php
deleted file mode 100644
index d692873..0000000
--- a/vendor/symfony/dependency-injection/ContainerBuilder.php
+++ /dev/null
@@ -1,1129 +0,0 @@
-<?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;
-
-use Symfony\Component\DependencyInjection\Compiler\Compiler;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\Compiler\PassConfig;
-use Symfony\Component\DependencyInjection\Exception\BadMethodCallException;
-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\Extension\ExtensionInterface;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Config\Resource\ResourceInterface;
-use Symfony\Component\DependencyInjection\LazyProxy\Instantiator\InstantiatorInterface;
-use Symfony\Component\DependencyInjection\LazyProxy\Instantiator\RealServiceInstantiator;
-use Symfony\Component\ExpressionLanguage\Expression;
-use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
-
-/**
- * ContainerBuilder is a DI container that provides an API to easily describe services.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ContainerBuilder extends Container implements TaggedContainerInterface
-{
-    /**
-     * @var ExtensionInterface[]
-     */
-    private $extensions = array();
-
-    /**
-     * @var ExtensionInterface[]
-     */
-    private $extensionsByNs = array();
-
-    /**
-     * @var Definition[]
-     */
-    private $definitions = array();
-
-    /**
-     * @var Definition[]
-     */
-    private $obsoleteDefinitions = array();
-
-    /**
-     * @var Alias[]
-     */
-    private $aliasDefinitions = array();
-
-    /**
-     * @var ResourceInterface[]
-     */
-    private $resources = array();
-
-    private $extensionConfigs = array();
-
-    /**
-     * @var Compiler
-     */
-    private $compiler;
-
-    private $trackResources = true;
-
-    /**
-     * @var InstantiatorInterface|null
-     */
-    private $proxyInstantiator;
-
-    /**
-     * @var ExpressionLanguage|null
-     */
-    private $expressionLanguage;
-
-    /**
-     * @var ExpressionFunctionProviderInterface[]
-     */
-    private $expressionLanguageProviders = array();
-
-    /**
-     * Sets the track resources flag.
-     *
-     * If you are not using the loaders and therefore don't want
-     * to depend on the Config component, set this flag to false.
-     *
-     * @param bool $track true if you want to track resources, false otherwise
-     */
-    public function setResourceTracking($track)
-    {
-        $this->trackResources = (bool) $track;
-    }
-
-    /**
-     * Checks if resources are tracked.
-     *
-     * @return bool true if resources are tracked, false otherwise
-     */
-    public function isTrackingResources()
-    {
-        return $this->trackResources;
-    }
-
-    /**
-     * Sets the instantiator to be used when fetching proxies.
-     *
-     * @param InstantiatorInterface $proxyInstantiator
-     */
-    public function setProxyInstantiator(InstantiatorInterface $proxyInstantiator)
-    {
-        $this->proxyInstantiator = $proxyInstantiator;
-    }
-
-    /**
-     * Registers an extension.
-     *
-     * @param ExtensionInterface $extension An extension instance
-     */
-    public function registerExtension(ExtensionInterface $extension)
-    {
-        $this->extensions[$extension->getAlias()] = $extension;
-
-        if (false !== $extension->getNamespace()) {
-            $this->extensionsByNs[$extension->getNamespace()] = $extension;
-        }
-    }
-
-    /**
-     * Returns an extension by alias or namespace.
-     *
-     * @param string $name An alias or a namespace
-     *
-     * @return ExtensionInterface An extension instance
-     *
-     * @throws LogicException if the extension is not registered
-     */
-    public function getExtension($name)
-    {
-        if (isset($this->extensions[$name])) {
-            return $this->extensions[$name];
-        }
-
-        if (isset($this->extensionsByNs[$name])) {
-            return $this->extensionsByNs[$name];
-        }
-
-        throw new LogicException(sprintf('Container extension "%s" is not registered', $name));
-    }
-
-    /**
-     * Returns all registered extensions.
-     *
-     * @return ExtensionInterface[] An array of ExtensionInterface
-     */
-    public function getExtensions()
-    {
-        return $this->extensions;
-    }
-
-    /**
-     * Checks if we have an extension.
-     *
-     * @param string $name The name of the extension
-     *
-     * @return bool If the extension exists
-     */
-    public function hasExtension($name)
-    {
-        return isset($this->extensions[$name]) || isset($this->extensionsByNs[$name]);
-    }
-
-    /**
-     * Returns an array of resources loaded to build this configuration.
-     *
-     * @return ResourceInterface[] An array of resources
-     */
-    public function getResources()
-    {
-        return array_unique($this->resources);
-    }
-
-    /**
-     * Adds a resource for this configuration.
-     *
-     * @param ResourceInterface $resource A resource instance
-     *
-     * @return ContainerBuilder The current instance
-     */
-    public function addResource(ResourceInterface $resource)
-    {
-        if (!$this->trackResources) {
-            return $this;
-        }
-
-        $this->resources[] = $resource;
-
-        return $this;
-    }
-
-    /**
-     * Sets the resources for this configuration.
-     *
-     * @param ResourceInterface[] $resources An array of resources
-     *
-     * @return ContainerBuilder The current instance
-     */
-    public function setResources(array $resources)
-    {
-        if (!$this->trackResources) {
-            return $this;
-        }
-
-        $this->resources = $resources;
-
-        return $this;
-    }
-
-    /**
-     * Adds the object class hierarchy as resources.
-     *
-     * @param object $object An object instance
-     *
-     * @return ContainerBuilder The current instance
-     */
-    public function addObjectResource($object)
-    {
-        if ($this->trackResources) {
-            $this->addClassResource(new \ReflectionClass($object));
-        }
-
-        return $this;
-    }
-
-    /**
-     * Adds the given class hierarchy as resources.
-     *
-     * @param \ReflectionClass $class
-     *
-     * @return ContainerBuilder The current instance
-     */
-    public function addClassResource(\ReflectionClass $class)
-    {
-        if (!$this->trackResources) {
-            return $this;
-        }
-
-        do {
-            $this->addResource(new FileResource($class->getFileName()));
-        } while ($class = $class->getParentClass());
-
-        return $this;
-    }
-
-    /**
-     * Loads the configuration for an extension.
-     *
-     * @param string $extension The extension alias or namespace
-     * @param array  $values    An array of values that customizes the extension
-     *
-     * @return ContainerBuilder The current instance
-     *
-     * @throws BadMethodCallException When this ContainerBuilder is frozen
-     * @throws \LogicException        if the container is frozen
-     */
-    public function loadFromExtension($extension, array $values = array())
-    {
-        if ($this->isFrozen()) {
-            throw new BadMethodCallException('Cannot load from an extension on a frozen container.');
-        }
-
-        $namespace = $this->getExtension($extension)->getAlias();
-
-        $this->extensionConfigs[$namespace][] = $values;
-
-        return $this;
-    }
-
-    /**
-     * Adds a compiler pass.
-     *
-     * @param CompilerPassInterface $pass A compiler pass
-     * @param string                $type The type of compiler pass
-     *
-     * @return ContainerBuilder The current instance
-     */
-    public function addCompilerPass(CompilerPassInterface $pass, $type = PassConfig::TYPE_BEFORE_OPTIMIZATION)
-    {
-        $this->getCompiler()->addPass($pass, $type);
-
-        $this->addObjectResource($pass);
-
-        return $this;
-    }
-
-    /**
-     * Returns the compiler pass config which can then be modified.
-     *
-     * @return PassConfig The compiler pass config
-     */
-    public function getCompilerPassConfig()
-    {
-        return $this->getCompiler()->getPassConfig();
-    }
-
-    /**
-     * Returns the compiler.
-     *
-     * @return Compiler The compiler
-     */
-    public function getCompiler()
-    {
-        if (null === $this->compiler) {
-            $this->compiler = new Compiler();
-        }
-
-        return $this->compiler;
-    }
-
-    /**
-     * Returns all Scopes.
-     *
-     * @return array An array of scopes
-     */
-    public function getScopes()
-    {
-        return $this->scopes;
-    }
-
-    /**
-     * Returns all Scope children.
-     *
-     * @return array An array of scope children.
-     */
-    public function getScopeChildren()
-    {
-        return $this->scopeChildren;
-    }
-
-    /**
-     * Sets a service.
-     *
-     * @param string $id      The service identifier
-     * @param object $service The service instance
-     * @param string $scope   The scope
-     *
-     * @throws BadMethodCallException When this ContainerBuilder is frozen
-     */
-    public function set($id, $service, $scope = self::SCOPE_CONTAINER)
-    {
-        $id = strtolower($id);
-
-        if ($this->isFrozen()) {
-            // setting a synthetic service on a frozen container is alright
-            if (
-                (!isset($this->definitions[$id]) && !isset($this->obsoleteDefinitions[$id]))
-                    ||
-                (isset($this->definitions[$id]) && !$this->definitions[$id]->isSynthetic())
-                    ||
-                (isset($this->obsoleteDefinitions[$id]) && !$this->obsoleteDefinitions[$id]->isSynthetic())
-            ) {
-                throw new BadMethodCallException(sprintf('Setting service "%s" on a frozen container is not allowed.', $id));
-            }
-        }
-
-        if (isset($this->definitions[$id])) {
-            $this->obsoleteDefinitions[$id] = $this->definitions[$id];
-        }
-
-        unset($this->definitions[$id], $this->aliasDefinitions[$id]);
-
-        parent::set($id, $service, $scope);
-
-        if (isset($this->obsoleteDefinitions[$id]) && $this->obsoleteDefinitions[$id]->isSynchronized(false)) {
-            $this->synchronize($id);
-        }
-    }
-
-    /**
-     * Removes a service definition.
-     *
-     * @param string $id The service identifier
-     */
-    public function removeDefinition($id)
-    {
-        unset($this->definitions[strtolower($id)]);
-    }
-
-    /**
-     * Returns true if the given service is defined.
-     *
-     * @param string $id The service identifier
-     *
-     * @return bool true if the service is defined, false otherwise
-     */
-    public function has($id)
-    {
-        $id = strtolower($id);
-
-        return isset($this->definitions[$id]) || isset($this->aliasDefinitions[$id]) || parent::has($id);
-    }
-
-    /**
-     * Gets a service.
-     *
-     * @param string $id              The service identifier
-     * @param int    $invalidBehavior The behavior when the service does not exist
-     *
-     * @return object The associated service
-     *
-     * @throws InvalidArgumentException when no definitions are available
-     * @throws InactiveScopeException   when the current scope is not active
-     * @throws LogicException           when a circular dependency is detected
-     * @throws \Exception
-     *
-     * @see Reference
-     */
-    public function get($id, $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE)
-    {
-        $id = strtolower($id);
-
-        if ($service = parent::get($id, ContainerInterface::NULL_ON_INVALID_REFERENCE)) {
-            return $service;
-        }
-
-        if (!array_key_exists($id, $this->definitions) && isset($this->aliasDefinitions[$id])) {
-            return $this->get($this->aliasDefinitions[$id]);
-        }
-
-        try {
-            $definition = $this->getDefinition($id);
-        } catch (InvalidArgumentException $e) {
-            if (ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE !== $invalidBehavior) {
-                return;
-            }
-
-            throw $e;
-        }
-
-        $this->loading[$id] = true;
-
-        try {
-            $service = $this->createService($definition, $id);
-        } catch (\Exception $e) {
-            unset($this->loading[$id]);
-
-            if ($e instanceof InactiveScopeException && self::EXCEPTION_ON_INVALID_REFERENCE !== $invalidBehavior) {
-                return;
-            }
-
-            throw $e;
-        }
-
-        unset($this->loading[$id]);
-
-        return $service;
-    }
-
-    /**
-     * Merges a ContainerBuilder with the current ContainerBuilder configuration.
-     *
-     * Service definitions overrides the current defined ones.
-     *
-     * But for parameters, they are overridden by the current ones. It allows
-     * the parameters passed to the container constructor to have precedence
-     * over the loaded ones.
-     *
-     * $container = new ContainerBuilder(array('foo' => 'bar'));
-     * $loader = new LoaderXXX($container);
-     * $loader->load('resource_name');
-     * $container->register('foo', new stdClass());
-     *
-     * In the above example, even if the loaded resource defines a foo
-     * parameter, the value will still be 'bar' as defined in the ContainerBuilder
-     * constructor.
-     *
-     * @param ContainerBuilder $container The ContainerBuilder instance to merge.
-     *
-     * @throws BadMethodCallException When this ContainerBuilder is frozen
-     */
-    public function merge(ContainerBuilder $container)
-    {
-        if ($this->isFrozen()) {
-            throw new BadMethodCallException('Cannot merge on a frozen container.');
-        }
-
-        $this->addDefinitions($container->getDefinitions());
-        $this->addAliases($container->getAliases());
-        $this->getParameterBag()->add($container->getParameterBag()->all());
-
-        if ($this->trackResources) {
-            foreach ($container->getResources() as $resource) {
-                $this->addResource($resource);
-            }
-        }
-
-        foreach ($this->extensions as $name => $extension) {
-            if (!isset($this->extensionConfigs[$name])) {
-                $this->extensionConfigs[$name] = array();
-            }
-
-            $this->extensionConfigs[$name] = array_merge($this->extensionConfigs[$name], $container->getExtensionConfig($name));
-        }
-    }
-
-    /**
-     * Returns the configuration array for the given extension.
-     *
-     * @param string $name The name of the extension
-     *
-     * @return array An array of configuration
-     */
-    public function getExtensionConfig($name)
-    {
-        if (!isset($this->extensionConfigs[$name])) {
-            $this->extensionConfigs[$name] = array();
-        }
-
-        return $this->extensionConfigs[$name];
-    }
-
-    /**
-     * Prepends a config array to the configs of the given extension.
-     *
-     * @param string $name   The name of the extension
-     * @param array  $config The config to set
-     */
-    public function prependExtensionConfig($name, array $config)
-    {
-        if (!isset($this->extensionConfigs[$name])) {
-            $this->extensionConfigs[$name] = array();
-        }
-
-        array_unshift($this->extensionConfigs[$name], $config);
-    }
-
-    /**
-     * Compiles the container.
-     *
-     * This method passes the container to compiler
-     * passes whose job is to manipulate and optimize
-     * the container.
-     *
-     * The main compiler passes roughly do four things:
-     *
-     *  * The extension configurations are merged;
-     *  * Parameter values are resolved;
-     *  * The parameter bag is frozen;
-     *  * Extension loading is disabled.
-     */
-    public function compile()
-    {
-        $compiler = $this->getCompiler();
-
-        if ($this->trackResources) {
-            foreach ($compiler->getPassConfig()->getPasses() as $pass) {
-                $this->addObjectResource($pass);
-            }
-        }
-
-        $compiler->compile($this);
-
-        if ($this->trackResources) {
-            foreach ($this->definitions as $definition) {
-                if ($definition->isLazy() && ($class = $definition->getClass()) && class_exists($class)) {
-                    $this->addClassResource(new \ReflectionClass($class));
-                }
-            }
-        }
-
-        $this->extensionConfigs = array();
-
-        parent::compile();
-    }
-
-    /**
-     * Gets all service ids.
-     *
-     * @return array An array of all defined service ids
-     */
-    public function getServiceIds()
-    {
-        return array_unique(array_merge(array_keys($this->getDefinitions()), array_keys($this->aliasDefinitions), parent::getServiceIds()));
-    }
-
-    /**
-     * Adds the service aliases.
-     *
-     * @param array $aliases An array of aliases
-     */
-    public function addAliases(array $aliases)
-    {
-        foreach ($aliases as $alias => $id) {
-            $this->setAlias($alias, $id);
-        }
-    }
-
-    /**
-     * Sets the service aliases.
-     *
-     * @param array $aliases An array of aliases
-     */
-    public function setAliases(array $aliases)
-    {
-        $this->aliasDefinitions = array();
-        $this->addAliases($aliases);
-    }
-
-    /**
-     * Sets an alias for an existing service.
-     *
-     * @param string       $alias The alias to create
-     * @param string|Alias $id    The service to alias
-     *
-     * @throws InvalidArgumentException if the id is not a string or an Alias
-     * @throws InvalidArgumentException if the alias is for itself
-     */
-    public function setAlias($alias, $id)
-    {
-        $alias = strtolower($alias);
-
-        if (is_string($id)) {
-            $id = new Alias($id);
-        } elseif (!$id instanceof Alias) {
-            throw new InvalidArgumentException('$id must be a string, or an Alias object.');
-        }
-
-        if ($alias === (string) $id) {
-            throw new InvalidArgumentException(sprintf('An alias can not reference itself, got a circular reference on "%s".', $alias));
-        }
-
-        unset($this->definitions[$alias]);
-
-        $this->aliasDefinitions[$alias] = $id;
-    }
-
-    /**
-     * Removes an alias.
-     *
-     * @param string $alias The alias to remove
-     */
-    public function removeAlias($alias)
-    {
-        unset($this->aliasDefinitions[strtolower($alias)]);
-    }
-
-    /**
-     * Returns true if an alias exists under the given identifier.
-     *
-     * @param string $id The service identifier
-     *
-     * @return bool true if the alias exists, false otherwise
-     */
-    public function hasAlias($id)
-    {
-        return isset($this->aliasDefinitions[strtolower($id)]);
-    }
-
-    /**
-     * Gets all defined aliases.
-     *
-     * @return Alias[] An array of aliases
-     */
-    public function getAliases()
-    {
-        return $this->aliasDefinitions;
-    }
-
-    /**
-     * Gets an alias.
-     *
-     * @param string $id The service identifier
-     *
-     * @return Alias An Alias instance
-     *
-     * @throws InvalidArgumentException if the alias does not exist
-     */
-    public function getAlias($id)
-    {
-        $id = strtolower($id);
-
-        if (!isset($this->aliasDefinitions[$id])) {
-            throw new InvalidArgumentException(sprintf('The service alias "%s" does not exist.', $id));
-        }
-
-        return $this->aliasDefinitions[$id];
-    }
-
-    /**
-     * Registers a service definition.
-     *
-     * This methods allows for simple registration of service definition
-     * with a fluid interface.
-     *
-     * @param string $id    The service identifier
-     * @param string $class The service class
-     *
-     * @return Definition A Definition instance
-     */
-    public function register($id, $class = null)
-    {
-        return $this->setDefinition($id, new Definition($class));
-    }
-
-    /**
-     * Adds the service definitions.
-     *
-     * @param Definition[] $definitions An array of service definitions
-     */
-    public function addDefinitions(array $definitions)
-    {
-        foreach ($definitions as $id => $definition) {
-            $this->setDefinition($id, $definition);
-        }
-    }
-
-    /**
-     * Sets the service definitions.
-     *
-     * @param Definition[] $definitions An array of service definitions
-     */
-    public function setDefinitions(array $definitions)
-    {
-        $this->definitions = array();
-        $this->addDefinitions($definitions);
-    }
-
-    /**
-     * Gets all service definitions.
-     *
-     * @return Definition[] An array of Definition instances
-     */
-    public function getDefinitions()
-    {
-        return $this->definitions;
-    }
-
-    /**
-     * Sets a service definition.
-     *
-     * @param string     $id         The service identifier
-     * @param Definition $definition A Definition instance
-     *
-     * @return Definition the service definition
-     *
-     * @throws BadMethodCallException When this ContainerBuilder is frozen
-     */
-    public function setDefinition($id, Definition $definition)
-    {
-        if ($this->isFrozen()) {
-            throw new BadMethodCallException('Adding definition to a frozen container is not allowed');
-        }
-
-        $id = strtolower($id);
-
-        unset($this->aliasDefinitions[$id]);
-
-        return $this->definitions[$id] = $definition;
-    }
-
-    /**
-     * Returns true if a service definition exists under the given identifier.
-     *
-     * @param string $id The service identifier
-     *
-     * @return bool true if the service definition exists, false otherwise
-     */
-    public function hasDefinition($id)
-    {
-        return array_key_exists(strtolower($id), $this->definitions);
-    }
-
-    /**
-     * Gets a service definition.
-     *
-     * @param string $id The service identifier
-     *
-     * @return Definition A Definition instance
-     *
-     * @throws InvalidArgumentException if the service definition does not exist
-     */
-    public function getDefinition($id)
-    {
-        $id = strtolower($id);
-
-        if (!array_key_exists($id, $this->definitions)) {
-            throw new InvalidArgumentException(sprintf('The service definition "%s" does not exist.', $id));
-        }
-
-        return $this->definitions[$id];
-    }
-
-    /**
-     * Gets a service definition by id or alias.
-     *
-     * The method "unaliases" recursively to return a Definition instance.
-     *
-     * @param string $id The service identifier or alias
-     *
-     * @return Definition A Definition instance
-     *
-     * @throws InvalidArgumentException if the service definition does not exist
-     */
-    public function findDefinition($id)
-    {
-        $id = strtolower($id);
-
-        while (isset($this->aliasDefinitions[$id])) {
-            $id = (string) $this->aliasDefinitions[$id];
-        }
-
-        return $this->getDefinition($id);
-    }
-
-    /**
-     * Creates a service for a service definition.
-     *
-     * @param Definition $definition A service definition instance
-     * @param string     $id         The service identifier
-     * @param bool       $tryProxy   Whether to try proxying the service with a lazy proxy
-     *
-     * @return object The service described by the service definition
-     *
-     * @throws RuntimeException         When the scope is inactive
-     * @throws RuntimeException         When the factory definition is incomplete
-     * @throws RuntimeException         When the service is a synthetic service
-     * @throws InvalidArgumentException When configure callable is not callable
-     *
-     * @internal this method is public because of PHP 5.3 limitations, do not use it explicitly in your code
-     */
-    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 ($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);
-        } 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 ($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->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;
-    }
-
-    /**
-     * Replaces service references by the real service instance and evaluates expressions.
-     *
-     * @param mixed $value A value
-     *
-     * @return mixed The same value with all service references replaced by
-     *               the real service instances and all expressions evaluated
-     */
-    public function resolveServices($value)
-    {
-        if (is_array($value)) {
-            foreach ($value as $k => $v) {
-                $value[$k] = $this->resolveServices($v);
-            }
-        } elseif ($value instanceof Reference) {
-            $value = $this->get((string) $value, $value->getInvalidBehavior());
-        } elseif ($value instanceof Definition) {
-            $value = $this->createService($value, null);
-        } elseif ($value instanceof Expression) {
-            $value = $this->getExpressionLanguage()->evaluate($value, array('container' => $this));
-        }
-
-        return $value;
-    }
-
-    /**
-     * Returns service ids for a given tag.
-     *
-     * Example:
-     *
-     * $container->register('foo')->addTag('my.tag', array('hello' => 'world'));
-     *
-     * $serviceIds = $container->findTaggedServiceIds('my.tag');
-     * foreach ($serviceIds as $serviceId => $tags) {
-     *     foreach ($tags as $tag) {
-     *         echo $tag['hello'];
-     *     }
-     * }
-     *
-     * @param string $name The tag name
-     *
-     * @return array An array of tags with the tagged service as key, holding a list of attribute arrays.
-     */
-    public function findTaggedServiceIds($name)
-    {
-        $tags = array();
-        foreach ($this->getDefinitions() as $id => $definition) {
-            if ($definition->hasTag($name)) {
-                $tags[$id] = $definition->getTag($name);
-            }
-        }
-
-        return $tags;
-    }
-
-    /**
-     * Returns all tags the defined services use.
-     *
-     * @return array An array of tags
-     */
-    public function findTags()
-    {
-        $tags = array();
-        foreach ($this->getDefinitions() as $id => $definition) {
-            $tags = array_merge(array_keys($definition->getTags()), $tags);
-        }
-
-        return array_unique($tags);
-    }
-
-    public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
-    {
-        $this->expressionLanguageProviders[] = $provider;
-    }
-
-    /**
-     * @return ExpressionFunctionProviderInterface[]
-     */
-    public function getExpressionLanguageProviders()
-    {
-        return $this->expressionLanguageProviders;
-    }
-
-    /**
-     * Returns the Service Conditionals.
-     *
-     * @param mixed $value An array of conditionals to return.
-     *
-     * @return array An array of Service conditionals
-     */
-    public static function getServiceConditionals($value)
-    {
-        $services = array();
-
-        if (is_array($value)) {
-            foreach ($value as $v) {
-                $services = array_unique(array_merge($services, self::getServiceConditionals($v)));
-            }
-        } elseif ($value instanceof Reference && $value->getInvalidBehavior() === ContainerInterface::IGNORE_ON_INVALID_REFERENCE) {
-            $services[] = (string) $value;
-        }
-
-        return $services;
-    }
-
-    /**
-     * Retrieves the currently set proxy instantiator or instantiates one.
-     *
-     * @return InstantiatorInterface
-     */
-    private function getProxyInstantiator()
-    {
-        if (!$this->proxyInstantiator) {
-            $this->proxyInstantiator = new RealServiceInstantiator();
-        }
-
-        return $this->proxyInstantiator;
-    }
-
-    /**
-     * Synchronizes a service change.
-     *
-     * This method updates all services that depend on the given
-     * service by calling all methods referencing it.
-     *
-     * @param string $id A service id
-     *
-     * @deprecated since version 2.7, will be removed in 3.0.
-     */
-    private function synchronize($id)
-    {
-        if ('request' !== $id) {
-            @trigger_error('The '.__METHOD__.' method is deprecated in version 2.7 and will be removed in version 3.0.', E_USER_DEPRECATED);
-        }
-
-        foreach ($this->definitions as $definitionId => $definition) {
-            // only check initialized services
-            if (!$this->initialized($definitionId)) {
-                continue;
-            }
-
-            foreach ($definition->getMethodCalls() as $call) {
-                foreach ($call[1] as $argument) {
-                    if ($argument instanceof Reference && $id == (string) $argument) {
-                        $this->callMethod($this->get($definitionId), $call);
-                    }
-                }
-            }
-        }
-    }
-
-    private function callMethod($service, $call)
-    {
-        $services = self::getServiceConditionals($call[1]);
-
-        foreach ($services as $s) {
-            if (!$this->has($s)) {
-                return;
-            }
-        }
-
-        call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->resolveValue($call[1])));
-    }
-
-    /**
-     * Shares a given service in the container.
-     *
-     * @param Definition $definition
-     * @param mixed      $service
-     * @param string     $id
-     *
-     * @throws InactiveScopeException
-     */
-    private function shareService(Definition $definition, $service, $id)
-    {
-        if (self::SCOPE_PROTOTYPE !== $scope = $definition->getScope()) {
-            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;
-            }
-        }
-    }
-
-    private function getExpressionLanguage()
-    {
-        if (null === $this->expressionLanguage) {
-            if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
-                throw new RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.');
-            }
-            $this->expressionLanguage = new ExpressionLanguage(null, $this->expressionLanguageProviders);
-        }
-
-        return $this->expressionLanguage;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/ContainerInterface.php b/vendor/symfony/dependency-injection/ContainerInterface.php
deleted file mode 100644
index 80d6414..0000000
--- a/vendor/symfony/dependency-injection/ContainerInterface.php
+++ /dev/null
@@ -1,133 +0,0 @@
-<?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;
-
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
-use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
-
-/**
- * ContainerInterface is the interface implemented by service container classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-interface ContainerInterface
-{
-    const EXCEPTION_ON_INVALID_REFERENCE = 1;
-    const NULL_ON_INVALID_REFERENCE = 2;
-    const IGNORE_ON_INVALID_REFERENCE = 3;
-    const SCOPE_CONTAINER = 'container';
-    const SCOPE_PROTOTYPE = 'prototype';
-
-    /**
-     * Sets a service.
-     *
-     * @param string $id      The service identifier
-     * @param object $service The service instance
-     * @param string $scope   The scope of the service
-     */
-    public function set($id, $service, $scope = self::SCOPE_CONTAINER);
-
-    /**
-     * Gets a service.
-     *
-     * @param string $id              The service identifier
-     * @param int    $invalidBehavior The behavior when the service does not exist
-     *
-     * @return object The associated service
-     *
-     * @throws ServiceCircularReferenceException When a circular reference is detected
-     * @throws ServiceNotFoundException          When the service is not defined
-     *
-     * @see Reference
-     */
-    public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE);
-
-    /**
-     * Returns true if the given service is defined.
-     *
-     * @param string $id The service identifier
-     *
-     * @return bool true if the service is defined, false otherwise
-     */
-    public function has($id);
-
-    /**
-     * Gets a parameter.
-     *
-     * @param string $name The parameter name
-     *
-     * @return mixed The parameter value
-     *
-     * @throws InvalidArgumentException if the parameter is not defined
-     */
-    public function getParameter($name);
-
-    /**
-     * Checks if a parameter exists.
-     *
-     * @param string $name The parameter name
-     *
-     * @return bool The presence of parameter in container
-     */
-    public function hasParameter($name);
-
-    /**
-     * Sets a parameter.
-     *
-     * @param string $name  The parameter name
-     * @param mixed  $value The parameter value
-     */
-    public function setParameter($name, $value);
-
-    /**
-     * Enters the given scope.
-     *
-     * @param string $name
-     */
-    public function enterScope($name);
-
-    /**
-     * Leaves the current scope, and re-enters the parent scope.
-     *
-     * @param string $name
-     */
-    public function leaveScope($name);
-
-    /**
-     * Adds a scope to the container.
-     *
-     * @param ScopeInterface $scope
-     */
-    public function addScope(ScopeInterface $scope);
-
-    /**
-     * Whether this container has the given scope.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function hasScope($name);
-
-    /**
-     * Determines whether the given scope is currently active.
-     *
-     * It does however not check if the scope actually exists.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function isScopeActive($name);
-}
diff --git a/vendor/symfony/dependency-injection/Definition.php b/vendor/symfony/dependency-injection/Definition.php
deleted file mode 100644
index 777f4a6..0000000
--- a/vendor/symfony/dependency-injection/Definition.php
+++ /dev/null
@@ -1,724 +0,0 @@
-<?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;
-
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Exception\OutOfBoundsException;
-
-/**
- * Definition represents a service definition.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Definition
-{
-    private $class;
-    private $file;
-    private $factory;
-    private $factoryClass;
-    private $factoryMethod;
-    private $factoryService;
-    private $scope = ContainerInterface::SCOPE_CONTAINER;
-    private $properties = array();
-    private $calls = array();
-    private $configurator;
-    private $tags = array();
-    private $public = true;
-    private $synthetic = false;
-    private $abstract = false;
-    private $synchronized = false;
-    private $lazy = false;
-    private $decoratedService;
-
-    protected $arguments;
-
-    /**
-     * Constructor.
-     *
-     * @param string|null $class     The service class
-     * @param array       $arguments An array of arguments to pass to the service constructor
-     */
-    public function __construct($class = null, array $arguments = array())
-    {
-        $this->class = $class;
-        $this->arguments = $arguments;
-    }
-
-    /**
-     * Sets a factory.
-     *
-     * @param string|array $factory A PHP function or an array containing a class/Reference and a method to call
-     *
-     * @return Definition The current instance
-     */
-    public function setFactory($factory)
-    {
-        if (is_string($factory) && strpos($factory, '::') !== false) {
-            $factory = explode('::', $factory, 2);
-        }
-
-        $this->factory = $factory;
-
-        return $this;
-    }
-
-    /**
-     * Gets the factory.
-     *
-     * @return string|array The PHP function or an array containing a class/Reference and a method to call
-     */
-    public function getFactory()
-    {
-        return $this->factory;
-    }
-
-    /**
-     * Sets the name of the class that acts as a factory using the factory method,
-     * which will be invoked statically.
-     *
-     * @param string $factoryClass The factory class name
-     *
-     * @return Definition The current instance
-     *
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    public function setFactoryClass($factoryClass)
-    {
-        @trigger_error(sprintf('%s(%s) is deprecated since version 2.6 and will be removed in 3.0. Use Definition::setFactory() instead.', __METHOD__, $factoryClass), E_USER_DEPRECATED);
-
-        $this->factoryClass = $factoryClass;
-
-        return $this;
-    }
-
-    /**
-     * Gets the factory class.
-     *
-     * @return string|null The factory class name
-     *
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    public function getFactoryClass($triggerDeprecationError = true)
-    {
-        if ($triggerDeprecationError) {
-            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0.', E_USER_DEPRECATED);
-        }
-
-        return $this->factoryClass;
-    }
-
-    /**
-     * Sets the factory method able to create an instance of this class.
-     *
-     * @param string $factoryMethod The factory method name
-     *
-     * @return Definition The current instance
-     *
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    public function setFactoryMethod($factoryMethod)
-    {
-        @trigger_error(sprintf('%s(%s) is deprecated since version 2.6 and will be removed in 3.0. Use Definition::setFactory() instead.', __METHOD__, $factoryMethod), E_USER_DEPRECATED);
-
-        $this->factoryMethod = $factoryMethod;
-
-        return $this;
-    }
-
-    /**
-     * Sets the service that this service is decorating.
-     *
-     * @param null|string $id        The decorated service id, use null to remove decoration
-     * @param null|string $renamedId The new decorated service id
-     *
-     * @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)
-    {
-        if ($renamedId && $id == $renamedId) {
-            throw new \InvalidArgumentException(sprintf('The decorated service inner name for "%s" must be different than the service name itself.', $id));
-        }
-
-        if (null === $id) {
-            $this->decoratedService = null;
-        } else {
-            $this->decoratedService = array($id, $renamedId);
-        }
-
-        return $this;
-    }
-
-    /**
-     * 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
-     */
-    public function getDecoratedService()
-    {
-        return $this->decoratedService;
-    }
-
-    /**
-     * Gets the factory method.
-     *
-     * @return string|null The factory method name
-     *
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    public function getFactoryMethod($triggerDeprecationError = true)
-    {
-        if ($triggerDeprecationError) {
-            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0.', E_USER_DEPRECATED);
-        }
-
-        return $this->factoryMethod;
-    }
-
-    /**
-     * Sets the name of the service that acts as a factory using the factory method.
-     *
-     * @param string $factoryService The factory service id
-     *
-     * @return Definition The current instance
-     *
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    public function setFactoryService($factoryService)
-    {
-        @trigger_error(sprintf('%s(%s) is deprecated since version 2.6 and will be removed in 3.0. Use Definition::setFactory() instead.', __METHOD__, $factoryService), E_USER_DEPRECATED);
-
-        $this->factoryService = $factoryService;
-
-        return $this;
-    }
-
-    /**
-     * Gets the factory service id.
-     *
-     * @return string|null The factory service id
-     *
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    public function getFactoryService($triggerDeprecationError = true)
-    {
-        if ($triggerDeprecationError) {
-            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0.', E_USER_DEPRECATED);
-        }
-
-        return $this->factoryService;
-    }
-
-    /**
-     * Sets the service class.
-     *
-     * @param string $class The service class
-     *
-     * @return Definition The current instance
-     */
-    public function setClass($class)
-    {
-        $this->class = $class;
-
-        return $this;
-    }
-
-    /**
-     * Gets the service class.
-     *
-     * @return string|null The service class
-     */
-    public function getClass()
-    {
-        return $this->class;
-    }
-
-    /**
-     * Sets the arguments to pass to the service constructor/factory method.
-     *
-     * @param array $arguments An array of arguments
-     *
-     * @return Definition The current instance
-     */
-    public function setArguments(array $arguments)
-    {
-        $this->arguments = $arguments;
-
-        return $this;
-    }
-
-    public function setProperties(array $properties)
-    {
-        $this->properties = $properties;
-
-        return $this;
-    }
-
-    public function getProperties()
-    {
-        return $this->properties;
-    }
-
-    public function setProperty($name, $value)
-    {
-        $this->properties[$name] = $value;
-
-        return $this;
-    }
-
-    /**
-     * Adds an argument to pass to the service constructor/factory method.
-     *
-     * @param mixed $argument An argument
-     *
-     * @return Definition The current instance
-     */
-    public function addArgument($argument)
-    {
-        $this->arguments[] = $argument;
-
-        return $this;
-    }
-
-    /**
-     * Sets a specific argument.
-     *
-     * @param int   $index
-     * @param mixed $argument
-     *
-     * @return Definition The current instance
-     *
-     * @throws OutOfBoundsException When the replaced argument does not exist
-     */
-    public function replaceArgument($index, $argument)
-    {
-        if ($index < 0 || $index > count($this->arguments) - 1) {
-            throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, count($this->arguments) - 1));
-        }
-
-        $this->arguments[$index] = $argument;
-
-        return $this;
-    }
-
-    /**
-     * Gets the arguments to pass to the service constructor/factory method.
-     *
-     * @return array The array of arguments
-     */
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    /**
-     * Gets an argument to pass to the service constructor/factory method.
-     *
-     * @param int $index
-     *
-     * @return mixed The argument value
-     *
-     * @throws OutOfBoundsException When the argument does not exist
-     */
-    public function getArgument($index)
-    {
-        if ($index < 0 || $index > count($this->arguments) - 1) {
-            throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, count($this->arguments) - 1));
-        }
-
-        return $this->arguments[$index];
-    }
-
-    /**
-     * Sets the methods to call after service initialization.
-     *
-     * @param array $calls An array of method calls
-     *
-     * @return Definition The current instance
-     */
-    public function setMethodCalls(array $calls = array())
-    {
-        $this->calls = array();
-        foreach ($calls as $call) {
-            $this->addMethodCall($call[0], $call[1]);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Adds a method to call after service initialization.
-     *
-     * @param string $method    The method name to call
-     * @param array  $arguments An array of arguments to pass to the method call
-     *
-     * @return Definition The current instance
-     *
-     * @throws InvalidArgumentException on empty $method param
-     */
-    public function addMethodCall($method, array $arguments = array())
-    {
-        if (empty($method)) {
-            throw new InvalidArgumentException(sprintf('Method name cannot be empty.'));
-        }
-        $this->calls[] = array($method, $arguments);
-
-        return $this;
-    }
-
-    /**
-     * Removes a method to call after service initialization.
-     *
-     * @param string $method The method name to remove
-     *
-     * @return Definition The current instance
-     */
-    public function removeMethodCall($method)
-    {
-        foreach ($this->calls as $i => $call) {
-            if ($call[0] === $method) {
-                unset($this->calls[$i]);
-                break;
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * Check if the current definition has a given method to call after service initialization.
-     *
-     * @param string $method The method name to search for
-     *
-     * @return bool
-     */
-    public function hasMethodCall($method)
-    {
-        foreach ($this->calls as $call) {
-            if ($call[0] === $method) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Gets the methods to call after service initialization.
-     *
-     * @return array An array of method calls
-     */
-    public function getMethodCalls()
-    {
-        return $this->calls;
-    }
-
-    /**
-     * Sets tags for this definition.
-     *
-     * @param array $tags
-     *
-     * @return Definition the current instance
-     */
-    public function setTags(array $tags)
-    {
-        $this->tags = $tags;
-
-        return $this;
-    }
-
-    /**
-     * Returns all tags.
-     *
-     * @return array An array of tags
-     */
-    public function getTags()
-    {
-        return $this->tags;
-    }
-
-    /**
-     * Gets a tag by name.
-     *
-     * @param string $name The tag name
-     *
-     * @return array An array of attributes
-     */
-    public function getTag($name)
-    {
-        return isset($this->tags[$name]) ? $this->tags[$name] : array();
-    }
-
-    /**
-     * Adds a tag for this definition.
-     *
-     * @param string $name       The tag name
-     * @param array  $attributes An array of attributes
-     *
-     * @return Definition The current instance
-     */
-    public function addTag($name, array $attributes = array())
-    {
-        $this->tags[$name][] = $attributes;
-
-        return $this;
-    }
-
-    /**
-     * Whether this definition has a tag with the given name.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function hasTag($name)
-    {
-        return isset($this->tags[$name]);
-    }
-
-    /**
-     * Clears all tags for a given name.
-     *
-     * @param string $name The tag name
-     *
-     * @return Definition
-     */
-    public function clearTag($name)
-    {
-        if (isset($this->tags[$name])) {
-            unset($this->tags[$name]);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Clears the tags for this definition.
-     *
-     * @return Definition The current instance
-     */
-    public function clearTags()
-    {
-        $this->tags = array();
-
-        return $this;
-    }
-
-    /**
-     * Sets a file to require before creating the service.
-     *
-     * @param string $file A full pathname to include
-     *
-     * @return Definition The current instance
-     */
-    public function setFile($file)
-    {
-        $this->file = $file;
-
-        return $this;
-    }
-
-    /**
-     * Gets the file to require before creating the service.
-     *
-     * @return string|null The full pathname to include
-     */
-    public function getFile()
-    {
-        return $this->file;
-    }
-
-    /**
-     * Sets the scope of the service.
-     *
-     * @param string $scope Whether the service must be shared or not
-     *
-     * @return Definition The current instance
-     */
-    public function setScope($scope)
-    {
-        $this->scope = $scope;
-
-        return $this;
-    }
-
-    /**
-     * Returns the scope of the service.
-     *
-     * @return string
-     */
-    public function getScope()
-    {
-        return $this->scope;
-    }
-
-    /**
-     * Sets the visibility of this service.
-     *
-     * @param bool $boolean
-     *
-     * @return Definition The current instance
-     */
-    public function setPublic($boolean)
-    {
-        $this->public = (bool) $boolean;
-
-        return $this;
-    }
-
-    /**
-     * Whether this service is public facing.
-     *
-     * @return bool
-     */
-    public function isPublic()
-    {
-        return $this->public;
-    }
-
-    /**
-     * Sets the synchronized flag of this service.
-     *
-     * @param bool $boolean
-     *
-     * @return Definition The current instance
-     *
-     * @deprecated since version 2.7, will be removed in 3.0.
-     */
-    public function setSynchronized($boolean, $triggerDeprecationError = true)
-    {
-        if ($triggerDeprecationError) {
-            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.7 and will be removed in 3.0.', E_USER_DEPRECATED);
-        }
-
-        $this->synchronized = (bool) $boolean;
-
-        return $this;
-    }
-
-    /**
-     * Whether this service is synchronized.
-     *
-     * @return bool
-     *
-     * @deprecated since version 2.7, will be removed in 3.0.
-     */
-    public function isSynchronized($triggerDeprecationError = true)
-    {
-        if ($triggerDeprecationError) {
-            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.7 and will be removed in 3.0.', E_USER_DEPRECATED);
-        }
-
-        return $this->synchronized;
-    }
-
-    /**
-     * Sets the lazy flag of this service.
-     *
-     * @param bool $lazy
-     *
-     * @return Definition The current instance
-     */
-    public function setLazy($lazy)
-    {
-        $this->lazy = (bool) $lazy;
-
-        return $this;
-    }
-
-    /**
-     * Whether this service is lazy.
-     *
-     * @return bool
-     */
-    public function isLazy()
-    {
-        return $this->lazy;
-    }
-
-    /**
-     * Sets whether this definition is synthetic, that is not constructed by the
-     * container, but dynamically injected.
-     *
-     * @param bool $boolean
-     *
-     * @return Definition the current instance
-     */
-    public function setSynthetic($boolean)
-    {
-        $this->synthetic = (bool) $boolean;
-
-        return $this;
-    }
-
-    /**
-     * Whether this definition is synthetic, that is not constructed by the
-     * container, but dynamically injected.
-     *
-     * @return bool
-     */
-    public function isSynthetic()
-    {
-        return $this->synthetic;
-    }
-
-    /**
-     * Whether this definition is abstract, that means it merely serves as a
-     * template for other definitions.
-     *
-     * @param bool $boolean
-     *
-     * @return Definition the current instance
-     */
-    public function setAbstract($boolean)
-    {
-        $this->abstract = (bool) $boolean;
-
-        return $this;
-    }
-
-    /**
-     * Whether this definition is abstract, that means it merely serves as a
-     * template for other definitions.
-     *
-     * @return bool
-     */
-    public function isAbstract()
-    {
-        return $this->abstract;
-    }
-
-    /**
-     * Sets a configurator to call after the service is fully initialized.
-     *
-     * @param callable $callable A PHP callable
-     *
-     * @return Definition The current instance
-     */
-    public function setConfigurator($callable)
-    {
-        $this->configurator = $callable;
-
-        return $this;
-    }
-
-    /**
-     * Gets the configurator to call after the service is fully initialized.
-     *
-     * @return callable|null The PHP callable to call
-     */
-    public function getConfigurator()
-    {
-        return $this->configurator;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/DefinitionDecorator.php b/vendor/symfony/dependency-injection/DefinitionDecorator.php
deleted file mode 100644
index 334127a..0000000
--- a/vendor/symfony/dependency-injection/DefinitionDecorator.php
+++ /dev/null
@@ -1,212 +0,0 @@
-<?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;
-
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Exception\OutOfBoundsException;
-
-/**
- * This definition decorates another definition.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class DefinitionDecorator extends Definition
-{
-    private $parent;
-    private $changes = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $parent The id of Definition instance to decorate.
-     */
-    public function __construct($parent)
-    {
-        parent::__construct();
-
-        $this->parent = $parent;
-    }
-
-    /**
-     * Returns the Definition being decorated.
-     *
-     * @return string
-     */
-    public function getParent()
-    {
-        return $this->parent;
-    }
-
-    /**
-     * Returns all changes tracked for the Definition object.
-     *
-     * @return array An array of changes for this Definition
-     */
-    public function getChanges()
-    {
-        return $this->changes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setClass($class)
-    {
-        $this->changes['class'] = true;
-
-        return parent::setClass($class);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setFactory($callable)
-    {
-        $this->changes['factory'] = true;
-
-        return parent::setFactory($callable);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     */
-    public function setFactoryClass($class)
-    {
-        $this->changes['factory_class'] = true;
-
-        return parent::setFactoryClass($class);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setFactoryMethod($method)
-    {
-        $this->changes['factory_method'] = true;
-
-        return parent::setFactoryMethod($method);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setFactoryService($service)
-    {
-        $this->changes['factory_service'] = true;
-
-        return parent::setFactoryService($service);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setConfigurator($callable)
-    {
-        $this->changes['configurator'] = true;
-
-        return parent::setConfigurator($callable);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setFile($file)
-    {
-        $this->changes['file'] = true;
-
-        return parent::setFile($file);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setPublic($boolean)
-    {
-        $this->changes['public'] = true;
-
-        return parent::setPublic($boolean);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setLazy($boolean)
-    {
-        $this->changes['lazy'] = true;
-
-        return parent::setLazy($boolean);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setDecoratedService($id, $renamedId = null)
-    {
-        $this->changes['decorated_service'] = true;
-
-        return parent::setDecoratedService($id, $renamedId);
-    }
-
-    /**
-     * Gets an argument to pass to the service constructor/factory method.
-     *
-     * If replaceArgument() has been used to replace an argument, this method
-     * will return the replacement value.
-     *
-     * @param int $index
-     *
-     * @return mixed The argument value
-     *
-     * @throws OutOfBoundsException When the argument does not exist
-     */
-    public function getArgument($index)
-    {
-        if (array_key_exists('index_'.$index, $this->arguments)) {
-            return $this->arguments['index_'.$index];
-        }
-
-        $lastIndex = count(array_filter(array_keys($this->arguments), 'is_int')) - 1;
-
-        if ($index < 0 || $index > $lastIndex) {
-            throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, $lastIndex));
-        }
-
-        return $this->arguments[$index];
-    }
-
-    /**
-     * You should always use this method when overwriting existing arguments
-     * of the parent definition.
-     *
-     * If you directly call setArguments() keep in mind that you must follow
-     * certain conventions when you want to overwrite the arguments of the
-     * parent definition, otherwise your arguments will only be appended.
-     *
-     * @param int   $index
-     * @param mixed $value
-     *
-     * @return DefinitionDecorator the current instance
-     *
-     * @throws InvalidArgumentException when $index isn't an integer
-     */
-    public function replaceArgument($index, $value)
-    {
-        if (!is_int($index)) {
-            throw new InvalidArgumentException('$index must be an integer.');
-        }
-
-        $this->arguments['index_'.$index] = $value;
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Dumper/Dumper.php b/vendor/symfony/dependency-injection/Dumper/Dumper.php
deleted file mode 100644
index 4b9d586..0000000
--- a/vendor/symfony/dependency-injection/Dumper/Dumper.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * Dumper is the abstract class for all built-in dumpers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Dumper implements DumperInterface
-{
-    protected $container;
-
-    /**
-     * Constructor.
-     *
-     * @param ContainerBuilder $container The service container to dump
-     */
-    public function __construct(ContainerBuilder $container)
-    {
-        $this->container = $container;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Dumper/DumperInterface.php b/vendor/symfony/dependency-injection/Dumper/DumperInterface.php
deleted file mode 100644
index dd001e4..0000000
--- a/vendor/symfony/dependency-injection/Dumper/DumperInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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\Dumper;
-
-/**
- * DumperInterface is the interface implemented by service container dumper classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface DumperInterface
-{
-    /**
-     * Dumps the service container.
-     *
-     * @param array $options An array of options
-     *
-     * @return string The representation of the service container
-     */
-    public function dump(array $options = array());
-}
diff --git a/vendor/symfony/dependency-injection/Dumper/GraphvizDumper.php b/vendor/symfony/dependency-injection/Dumper/GraphvizDumper.php
deleted file mode 100644
index f69d1e9..0000000
--- a/vendor/symfony/dependency-injection/Dumper/GraphvizDumper.php
+++ /dev/null
@@ -1,306 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\Parameter;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
-use Symfony\Component\DependencyInjection\Scope;
-
-/**
- * GraphvizDumper dumps a service container as a graphviz file.
- *
- * You can convert the generated dot file with the dot utility (http://www.graphviz.org/):
- *
- *   dot -Tpng container.dot > foo.png
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class GraphvizDumper extends Dumper
-{
-    private $nodes;
-    private $edges;
-    private $options = array(
-            'graph' => array('ratio' => 'compress'),
-            'node' => array('fontsize' => 11, 'fontname' => 'Arial', 'shape' => 'record'),
-            'edge' => array('fontsize' => 9, 'fontname' => 'Arial', 'color' => 'grey', 'arrowhead' => 'open', 'arrowsize' => 0.5),
-            'node.instance' => array('fillcolor' => '#9999ff', 'style' => 'filled'),
-            'node.definition' => array('fillcolor' => '#eeeeee'),
-            'node.missing' => array('fillcolor' => '#ff9999', 'style' => 'filled'),
-        );
-
-    /**
-     * Dumps the service container as a graphviz graph.
-     *
-     * Available options:
-     *
-     *  * graph: The default options for the whole graph
-     *  * node: The default options for nodes
-     *  * edge: The default options for edges
-     *  * node.instance: The default options for services that are defined directly by object instances
-     *  * node.definition: The default options for services that are defined via service definition instances
-     *  * node.missing: The default options for missing services
-     *
-     * @param array $options An array of options
-     *
-     * @return string The dot representation of the service container
-     */
-    public function dump(array $options = array())
-    {
-        foreach (array('graph', 'node', 'edge', 'node.instance', 'node.definition', 'node.missing') as $key) {
-            if (isset($options[$key])) {
-                $this->options[$key] = array_merge($this->options[$key], $options[$key]);
-            }
-        }
-
-        $this->nodes = $this->findNodes();
-
-        $this->edges = array();
-        foreach ($this->container->getDefinitions() as $id => $definition) {
-            $this->edges[$id] = array_merge(
-                $this->findEdges($id, $definition->getArguments(), true, ''),
-                $this->findEdges($id, $definition->getProperties(), false, '')
-            );
-
-            foreach ($definition->getMethodCalls() as $call) {
-                $this->edges[$id] = array_merge(
-                    $this->edges[$id],
-                    $this->findEdges($id, $call[1], false, $call[0].'()')
-                );
-            }
-        }
-
-        return $this->startDot().$this->addNodes().$this->addEdges().$this->endDot();
-    }
-
-    /**
-     * Returns all nodes.
-     *
-     * @return string A string representation of all nodes
-     */
-    private function addNodes()
-    {
-        $code = '';
-        foreach ($this->nodes as $id => $node) {
-            $aliases = $this->getAliases($id);
-
-            $code .= sprintf("  node_%s [label=\"%s\\n%s\\n\", shape=%s%s];\n", $this->dotize($id), $id.($aliases ? ' ('.implode(', ', $aliases).')' : ''), $node['class'], $this->options['node']['shape'], $this->addAttributes($node['attributes']));
-        }
-
-        return $code;
-    }
-
-    /**
-     * Returns all edges.
-     *
-     * @return string A string representation of all edges
-     */
-    private function addEdges()
-    {
-        $code = '';
-        foreach ($this->edges as $id => $edges) {
-            foreach ($edges as $edge) {
-                $code .= sprintf("  node_%s -> node_%s [label=\"%s\" style=\"%s\"];\n", $this->dotize($id), $this->dotize($edge['to']), $edge['name'], $edge['required'] ? 'filled' : 'dashed');
-            }
-        }
-
-        return $code;
-    }
-
-    /**
-     * Finds all edges belonging to a specific service id.
-     *
-     * @param string $id        The service id used to find edges
-     * @param array  $arguments An array of arguments
-     * @param bool   $required
-     * @param string $name
-     *
-     * @return array An array of edges
-     */
-    private function findEdges($id, $arguments, $required, $name)
-    {
-        $edges = array();
-        foreach ($arguments as $argument) {
-            if ($argument instanceof Parameter) {
-                $argument = $this->container->hasParameter($argument) ? $this->container->getParameter($argument) : null;
-            } elseif (is_string($argument) && preg_match('/^%([^%]+)%$/', $argument, $match)) {
-                $argument = $this->container->hasParameter($match[1]) ? $this->container->getParameter($match[1]) : null;
-            }
-
-            if ($argument instanceof Reference) {
-                if (!$this->container->has((string) $argument)) {
-                    $this->nodes[(string) $argument] = array('name' => $name, 'required' => $required, 'class' => '', 'attributes' => $this->options['node.missing']);
-                }
-
-                $edges[] = array('name' => $name, 'required' => $required, 'to' => $argument);
-            } elseif (is_array($argument)) {
-                $edges = array_merge($edges, $this->findEdges($id, $argument, $required, $name));
-            }
-        }
-
-        return $edges;
-    }
-
-    /**
-     * Finds all nodes.
-     *
-     * @return array An array of all nodes
-     */
-    private function findNodes()
-    {
-        $nodes = array();
-
-        $container = $this->cloneContainer();
-
-        foreach ($container->getDefinitions() as $id => $definition) {
-            $class = $definition->getClass();
-
-            if ('\\' === substr($class, 0, 1)) {
-                $class = substr($class, 1);
-            }
-
-            try {
-                $class = $this->container->getParameterBag()->resolveValue($class);
-            } 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')));
-            $container->setDefinition($id, new Definition('stdClass'));
-        }
-
-        foreach ($container->getServiceIds() as $id) {
-            $service = $container->get($id);
-
-            if (array_key_exists($id, $container->getAliases())) {
-                continue;
-            }
-
-            if (!$container->hasDefinition($id)) {
-                $class = ('service_container' === $id) ? get_class($this->container) : get_class($service);
-                $nodes[$id] = array('class' => str_replace('\\', '\\\\', $class), 'attributes' => $this->options['node.instance']);
-            }
-        }
-
-        return $nodes;
-    }
-
-    private function cloneContainer()
-    {
-        $parameterBag = new ParameterBag($this->container->getParameterBag()->all());
-
-        $container = new ContainerBuilder($parameterBag);
-        $container->setDefinitions($this->container->getDefinitions());
-        $container->setAliases($this->container->getAliases());
-        $container->setResources($this->container->getResources());
-        foreach ($this->container->getScopes() as $scope => $parentScope) {
-            $container->addScope(new Scope($scope, $parentScope));
-        }
-        foreach ($this->container->getExtensions() as $extension) {
-            $container->registerExtension($extension);
-        }
-
-        return $container;
-    }
-
-    /**
-     * Returns the start dot.
-     *
-     * @return string The string representation of a start dot
-     */
-    private function startDot()
-    {
-        return sprintf("digraph sc {\n  %s\n  node [%s];\n  edge [%s];\n\n",
-            $this->addOptions($this->options['graph']),
-            $this->addOptions($this->options['node']),
-            $this->addOptions($this->options['edge'])
-        );
-    }
-
-    /**
-     * Returns the end dot.
-     *
-     * @return string
-     */
-    private function endDot()
-    {
-        return "}\n";
-    }
-
-    /**
-     * Adds attributes.
-     *
-     * @param array $attributes An array of attributes
-     *
-     * @return string A comma separated list of attributes
-     */
-    private function addAttributes($attributes)
-    {
-        $code = array();
-        foreach ($attributes as $k => $v) {
-            $code[] = sprintf('%s="%s"', $k, $v);
-        }
-
-        return $code ? ', '.implode(', ', $code) : '';
-    }
-
-    /**
-     * Adds options.
-     *
-     * @param array $options An array of options
-     *
-     * @return string A space separated list of options
-     */
-    private function addOptions($options)
-    {
-        $code = array();
-        foreach ($options as $k => $v) {
-            $code[] = sprintf('%s="%s"', $k, $v);
-        }
-
-        return implode(' ', $code);
-    }
-
-    /**
-     * Dotizes an identifier.
-     *
-     * @param string $id The identifier to dotize
-     *
-     * @return string A dotized string
-     */
-    private function dotize($id)
-    {
-        return strtolower(preg_replace('/\W/i', '_', $id));
-    }
-
-    /**
-     * Compiles an array of aliases for a specified service id.
-     *
-     * @param string $id A service id
-     *
-     * @return array An array of aliases
-     */
-    private function getAliases($id)
-    {
-        $aliases = array();
-        foreach ($this->container->getAliases() as $alias => $origin) {
-            if ($id == $origin) {
-                $aliases[] = $alias;
-            }
-        }
-
-        return $aliases;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Dumper/PhpDumper.php b/vendor/symfony/dependency-injection/Dumper/PhpDumper.php
deleted file mode 100644
index bb3df8b..0000000
--- a/vendor/symfony/dependency-injection/Dumper/PhpDumper.php
+++ /dev/null
@@ -1,1560 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\DependencyInjection\Variable;
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\Parameter;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
-use Symfony\Component\DependencyInjection\LazyProxy\PhpDumper\DumperInterface as ProxyDumper;
-use Symfony\Component\DependencyInjection\LazyProxy\PhpDumper\NullDumper;
-use Symfony\Component\DependencyInjection\ExpressionLanguage;
-use Symfony\Component\ExpressionLanguage\Expression;
-use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
-
-/**
- * PhpDumper dumps a service container as a PHP class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class PhpDumper extends Dumper
-{
-    /**
-     * Characters that might appear in the generated variable name as first character.
-     *
-     * @var string
-     */
-    const FIRST_CHARS = 'abcdefghijklmnopqrstuvwxyz';
-
-    /**
-     * Characters that might appear in the generated variable name as any but the first character.
-     *
-     * @var string
-     */
-    const NON_FIRST_CHARS = 'abcdefghijklmnopqrstuvwxyz0123456789_';
-
-    private $inlinedDefinitions;
-    private $definitionVariables;
-    private $referenceVariables;
-    private $variableCount;
-    private $reservedVariables = array('instance', 'class');
-    private $expressionLanguage;
-    private $targetDirRegex;
-    private $targetDirMaxMatches;
-
-    /**
-     * @var ExpressionFunctionProviderInterface[]
-     */
-    private $expressionLanguageProviders = array();
-
-    /**
-     * @var \Symfony\Component\DependencyInjection\LazyProxy\PhpDumper\DumperInterface
-     */
-    private $proxyDumper;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct(ContainerBuilder $container)
-    {
-        parent::__construct($container);
-
-        $this->inlinedDefinitions = new \SplObjectStorage();
-    }
-
-    /**
-     * Sets the dumper to be used when dumping proxies in the generated container.
-     *
-     * @param ProxyDumper $proxyDumper
-     */
-    public function setProxyDumper(ProxyDumper $proxyDumper)
-    {
-        $this->proxyDumper = $proxyDumper;
-    }
-
-    /**
-     * Dumps the service container as a PHP class.
-     *
-     * Available options:
-     *
-     *  * class:      The class name
-     *  * base_class: The base class name
-     *  * namespace:  The class namespace
-     *
-     * @param array $options An array of options
-     *
-     * @return string A PHP class representing of the service container
-     */
-    public function dump(array $options = array())
-    {
-        $this->targetDirRegex = null;
-        $options = array_merge(array(
-            'class' => 'ProjectServiceContainer',
-            'base_class' => 'Container',
-            'namespace' => '',
-        ), $options);
-
-        if (!empty($options['file']) && is_dir($dir = dirname($options['file']))) {
-            // Build a regexp where the first root dirs are mandatory,
-            // but every other sub-dir is optional up to the full path in $dir
-            // Mandate at least 2 root dirs and not more that 5 optional dirs.
-
-            $dir = explode(DIRECTORY_SEPARATOR, realpath($dir));
-            $i = count($dir);
-
-            if (3 <= $i) {
-                $regex = '';
-                $lastOptionalDir = $i > 8 ? $i - 5 : 3;
-                $this->targetDirMaxMatches = $i - $lastOptionalDir;
-
-                while (--$i >= $lastOptionalDir) {
-                    $regex = sprintf('(%s%s)?', preg_quote(DIRECTORY_SEPARATOR.$dir[$i], '#'), $regex);
-                }
-
-                do {
-                    $regex = preg_quote(DIRECTORY_SEPARATOR.$dir[$i], '#').$regex;
-                } while (0 < --$i);
-
-                $this->targetDirRegex = '#'.preg_quote($dir[0], '#').$regex.'#';
-            }
-        }
-
-        $code = $this->startClass($options['class'], $options['base_class'], $options['namespace']);
-
-        if ($this->container->isFrozen()) {
-            $code .= $this->addFrozenConstructor();
-            $code .= $this->addFrozenCompile();
-        } else {
-            $code .= $this->addConstructor();
-        }
-
-        $code .=
-            $this->addServices().
-            $this->addDefaultParametersMethod().
-            $this->endClass().
-            $this->addProxyClasses()
-        ;
-        $this->targetDirRegex = null;
-
-        return $code;
-    }
-
-    /**
-     * Retrieves the currently set proxy dumper or instantiates one.
-     *
-     * @return ProxyDumper
-     */
-    private function getProxyDumper()
-    {
-        if (!$this->proxyDumper) {
-            $this->proxyDumper = new NullDumper();
-        }
-
-        return $this->proxyDumper;
-    }
-
-    /**
-     * Generates Service local temp variables.
-     *
-     * @param string $cId
-     * @param string $definition
-     *
-     * @return string
-     */
-    private function addServiceLocalTempVariables($cId, $definition)
-    {
-        static $template = "        \$%s = %s;\n";
-
-        $localDefinitions = array_merge(
-            array($definition),
-            $this->getInlinedDefinitions($definition)
-        );
-
-        $calls = $behavior = array();
-        foreach ($localDefinitions as $iDefinition) {
-            $this->getServiceCallsFromArguments($iDefinition->getArguments(), $calls, $behavior);
-            $this->getServiceCallsFromArguments($iDefinition->getMethodCalls(), $calls, $behavior);
-            $this->getServiceCallsFromArguments($iDefinition->getProperties(), $calls, $behavior);
-            $this->getServiceCallsFromArguments(array($iDefinition->getConfigurator()), $calls, $behavior);
-            $this->getServiceCallsFromArguments(array($iDefinition->getFactory()), $calls, $behavior);
-        }
-
-        $code = '';
-        foreach ($calls as $id => $callCount) {
-            if ('service_container' === $id || $id === $cId) {
-                continue;
-            }
-
-            if ($callCount > 1) {
-                $name = $this->getNextVariableName();
-                $this->referenceVariables[$id] = new Variable($name);
-
-                if (ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE === $behavior[$id]) {
-                    $code .= sprintf($template, $name, $this->getServiceCall($id));
-                } else {
-                    $code .= sprintf($template, $name, $this->getServiceCall($id, new Reference($id, ContainerInterface::NULL_ON_INVALID_REFERENCE)));
-                }
-            }
-        }
-
-        if ('' !== $code) {
-            $code .= "\n";
-        }
-
-        return $code;
-    }
-
-    /**
-     * Generates code for the proxies to be attached after the container class.
-     *
-     * @return string
-     */
-    private function addProxyClasses()
-    {
-        /* @var $definitions Definition[] */
-        $definitions = array_filter(
-            $this->container->getDefinitions(),
-            array($this->getProxyDumper(), 'isProxyCandidate')
-        );
-        $code = '';
-
-        foreach ($definitions as $definition) {
-            $code .= "\n".$this->getProxyDumper()->getProxyCode($definition);
-        }
-
-        return $code;
-    }
-
-    /**
-     * Generates the require_once statement for service includes.
-     *
-     * @param string     $id         The service id
-     * @param Definition $definition
-     *
-     * @return string
-     */
-    private function addServiceInclude($id, $definition)
-    {
-        $template = "        require_once %s;\n";
-        $code = '';
-
-        if (null !== $file = $definition->getFile()) {
-            $code .= sprintf($template, $this->dumpValue($file));
-        }
-
-        foreach ($this->getInlinedDefinitions($definition) as $definition) {
-            if (null !== $file = $definition->getFile()) {
-                $code .= sprintf($template, $this->dumpValue($file));
-            }
-        }
-
-        if ('' !== $code) {
-            $code .= "\n";
-        }
-
-        return $code;
-    }
-
-    /**
-     * Generates the inline definition of a service.
-     *
-     * @param string     $id
-     * @param Definition $definition
-     *
-     * @return string
-     *
-     * @throws RuntimeException                  When the factory definition is incomplete
-     * @throws ServiceCircularReferenceException When a circular reference is detected
-     */
-    private function addServiceInlinedDefinitions($id, $definition)
-    {
-        $code = '';
-        $variableMap = $this->definitionVariables;
-        $nbOccurrences = new \SplObjectStorage();
-        $processed = new \SplObjectStorage();
-        $inlinedDefinitions = $this->getInlinedDefinitions($definition);
-
-        foreach ($inlinedDefinitions as $definition) {
-            if (false === $nbOccurrences->contains($definition)) {
-                $nbOccurrences->offsetSet($definition, 1);
-            } else {
-                $i = $nbOccurrences->offsetGet($definition);
-                $nbOccurrences->offsetSet($definition, $i + 1);
-            }
-        }
-
-        foreach ($inlinedDefinitions as $sDefinition) {
-            if ($processed->contains($sDefinition)) {
-                continue;
-            }
-            $processed->offsetSet($sDefinition);
-
-            $class = $this->dumpValue($sDefinition->getClass());
-            if ($nbOccurrences->offsetGet($sDefinition) > 1 || $sDefinition->getMethodCalls() || $sDefinition->getProperties() || null !== $sDefinition->getConfigurator() || false !== strpos($class, '$')) {
-                $name = $this->getNextVariableName();
-                $variableMap->offsetSet($sDefinition, new Variable($name));
-
-                // a construct like:
-                // $a = new ServiceA(ServiceB $b); $b = new ServiceB(ServiceA $a);
-                // this is an indication for a wrong implementation, you can circumvent this problem
-                // by setting up your service structure like this:
-                // $b = new ServiceB();
-                // $a = new ServiceA(ServiceB $b);
-                // $b->setServiceA(ServiceA $a);
-                if ($this->hasReference($id, $sDefinition->getArguments())) {
-                    throw new ServiceCircularReferenceException($id, array($id));
-                }
-
-                $code .= $this->addNewInstance($id, $sDefinition, '$'.$name, ' = ');
-
-                if (!$this->hasReference($id, $sDefinition->getMethodCalls(), true) && !$this->hasReference($id, $sDefinition->getProperties(), true)) {
-                    $code .= $this->addServiceMethodCalls(null, $sDefinition, $name);
-                    $code .= $this->addServiceProperties(null, $sDefinition, $name);
-                    $code .= $this->addServiceConfigurator(null, $sDefinition, $name);
-                }
-
-                $code .= "\n";
-            }
-        }
-
-        return $code;
-    }
-
-    /**
-     * Adds the service return statement.
-     *
-     * @param string     $id         Service id
-     * @param Definition $definition
-     *
-     * @return string
-     */
-    private function addServiceReturn($id, $definition)
-    {
-        if ($this->isSimpleInstance($id, $definition)) {
-            return "    }\n";
-        }
-
-        return "\n        return \$instance;\n    }\n";
-    }
-
-    /**
-     * Generates the service instance.
-     *
-     * @param string     $id
-     * @param Definition $definition
-     *
-     * @return string
-     *
-     * @throws InvalidArgumentException
-     * @throws RuntimeException
-     */
-    private function addServiceInstance($id, $definition)
-    {
-        $class = $definition->getClass();
-
-        if ('\\' === substr($class, 0, 1)) {
-            $class = substr($class, 1);
-        }
-
-        $class = $this->dumpValue($class);
-
-        if (0 === strpos($class, "'") && !preg_match('/^\'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\\\{2}[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*\'$/', $class)) {
-            throw new InvalidArgumentException(sprintf('"%s" is not a valid class name for the "%s" service.', $class, $id));
-        }
-
-        $simple = $this->isSimpleInstance($id, $definition);
-        $isProxyCandidate = $this->getProxyDumper()->isProxyCandidate($definition);
-        $instantiation = '';
-
-        if (!$isProxyCandidate && ContainerInterface::SCOPE_CONTAINER === $definition->getScope()) {
-            $instantiation = "\$this->services['$id'] = ".($simple ? '' : '$instance');
-        } elseif (!$isProxyCandidate && ContainerInterface::SCOPE_PROTOTYPE !== $scope = $definition->getScope()) {
-            $instantiation = "\$this->services['$id'] = \$this->scopedServices['$scope']['$id'] = ".($simple ? '' : '$instance');
-        } elseif (!$simple) {
-            $instantiation = '$instance';
-        }
-
-        $return = '';
-        if ($simple) {
-            $return = 'return ';
-        } else {
-            $instantiation .= ' = ';
-        }
-
-        $code = $this->addNewInstance($id, $definition, $return, $instantiation);
-
-        if (!$simple) {
-            $code .= "\n";
-        }
-
-        return $code;
-    }
-
-    /**
-     * Checks if the definition is a simple instance.
-     *
-     * @param string     $id
-     * @param Definition $definition
-     *
-     * @return bool
-     */
-    private function isSimpleInstance($id, $definition)
-    {
-        foreach (array_merge(array($definition), $this->getInlinedDefinitions($definition)) as $sDefinition) {
-            if ($definition !== $sDefinition && !$this->hasReference($id, $sDefinition->getMethodCalls())) {
-                continue;
-            }
-
-            if ($sDefinition->getMethodCalls() || $sDefinition->getProperties() || $sDefinition->getConfigurator()) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Adds method calls to a service definition.
-     *
-     * @param string     $id
-     * @param Definition $definition
-     * @param string     $variableName
-     *
-     * @return string
-     */
-    private function addServiceMethodCalls($id, $definition, $variableName = 'instance')
-    {
-        $calls = '';
-        foreach ($definition->getMethodCalls() as $call) {
-            $arguments = array();
-            foreach ($call[1] as $value) {
-                $arguments[] = $this->dumpValue($value);
-            }
-
-            $calls .= $this->wrapServiceConditionals($call[1], sprintf("        \$%s->%s(%s);\n", $variableName, $call[0], implode(', ', $arguments)));
-        }
-
-        return $calls;
-    }
-
-    private function addServiceProperties($id, $definition, $variableName = 'instance')
-    {
-        $code = '';
-        foreach ($definition->getProperties() as $name => $value) {
-            $code .= sprintf("        \$%s->%s = %s;\n", $variableName, $name, $this->dumpValue($value));
-        }
-
-        return $code;
-    }
-
-    /**
-     * Generates the inline definition setup.
-     *
-     * @param string     $id
-     * @param Definition $definition
-     *
-     * @return string
-     *
-     * @throws ServiceCircularReferenceException when the container contains a circular reference
-     */
-    private function addServiceInlinedDefinitionsSetup($id, $definition)
-    {
-        $this->referenceVariables[$id] = new Variable('instance');
-
-        $code = '';
-        $processed = new \SplObjectStorage();
-        foreach ($this->getInlinedDefinitions($definition) as $iDefinition) {
-            if ($processed->contains($iDefinition)) {
-                continue;
-            }
-            $processed->offsetSet($iDefinition);
-
-            if (!$this->hasReference($id, $iDefinition->getMethodCalls(), true) && !$this->hasReference($id, $iDefinition->getProperties(), true)) {
-                continue;
-            }
-
-            // if the instance is simple, the return statement has already been generated
-            // so, the only possible way to get there is because of a circular reference
-            if ($this->isSimpleInstance($id, $definition)) {
-                throw new ServiceCircularReferenceException($id, array($id));
-            }
-
-            $name = (string) $this->definitionVariables->offsetGet($iDefinition);
-            $code .= $this->addServiceMethodCalls(null, $iDefinition, $name);
-            $code .= $this->addServiceProperties(null, $iDefinition, $name);
-            $code .= $this->addServiceConfigurator(null, $iDefinition, $name);
-        }
-
-        if ('' !== $code) {
-            $code .= "\n";
-        }
-
-        return $code;
-    }
-
-    /**
-     * Adds configurator definition.
-     *
-     * @param string     $id
-     * @param Definition $definition
-     * @param string     $variableName
-     *
-     * @return string
-     */
-    private function addServiceConfigurator($id, $definition, $variableName = 'instance')
-    {
-        if (!$callable = $definition->getConfigurator()) {
-            return '';
-        }
-
-        if (is_array($callable)) {
-            if ($callable[0] instanceof Reference
-                || ($callable[0] instanceof Definition && $this->definitionVariables->contains($callable[0]))) {
-                return sprintf("        %s->%s(\$%s);\n", $this->dumpValue($callable[0]), $callable[1], $variableName);
-            }
-
-            $class = $this->dumpValue($callable[0]);
-            // If the class is a string we can optimize call_user_func away
-            if (strpos($class, "'") === 0) {
-                return sprintf("        %s::%s(\$%s);\n", $this->dumpLiteralClass($class), $callable[1], $variableName);
-            }
-
-            return sprintf("        call_user_func(array(%s, '%s'), \$%s);\n", $this->dumpValue($callable[0]), $callable[1], $variableName);
-        }
-
-        return sprintf("        %s(\$%s);\n", $callable, $variableName);
-    }
-
-    /**
-     * Adds a service.
-     *
-     * @param string     $id
-     * @param Definition $definition
-     *
-     * @return string
-     */
-    private function addService($id, $definition)
-    {
-        $this->definitionVariables = new \SplObjectStorage();
-        $this->referenceVariables = array();
-        $this->variableCount = 0;
-
-        $return = array();
-
-        if ($definition->isSynthetic()) {
-            $return[] = '@throws RuntimeException always since this service is expected to be injected dynamically';
-        } elseif ($class = $definition->getClass()) {
-            $return[] = sprintf('@return %s A %s instance.', 0 === strpos($class, '%') ? 'object' : '\\'.ltrim($class, '\\'), ltrim($class, '\\'));
-        } elseif ($definition->getFactory()) {
-            $factory = $definition->getFactory();
-            if (is_string($factory)) {
-                $return[] = sprintf('@return object An instance returned by %s().', $factory);
-            } elseif (is_array($factory) && (is_string($factory[0]) || $factory[0] instanceof Definition || $factory[0] instanceof Reference)) {
-                if (is_string($factory[0]) || $factory[0] instanceof Reference) {
-                    $return[] = sprintf('@return object An instance returned by %s::%s().', (string) $factory[0], $factory[1]);
-                } elseif ($factory[0] instanceof Definition) {
-                    $return[] = sprintf('@return object An instance returned by %s::%s().', $factory[0]->getClass(), $factory[1]);
-                }
-            }
-        } elseif ($definition->getFactoryClass(false)) {
-            $return[] = sprintf('@return object An instance returned by %s::%s().', $definition->getFactoryClass(false), $definition->getFactoryMethod(false));
-        } elseif ($definition->getFactoryService(false)) {
-            $return[] = sprintf('@return object An instance returned by %s::%s().', $definition->getFactoryService(false), $definition->getFactoryMethod(false));
-        }
-
-        $scope = $definition->getScope();
-        if (!in_array($scope, array(ContainerInterface::SCOPE_CONTAINER, ContainerInterface::SCOPE_PROTOTYPE))) {
-            if ($return && 0 === strpos($return[count($return) - 1], '@return')) {
-                $return[] = '';
-            }
-            $return[] = sprintf("@throws InactiveScopeException when the '%s' service is requested while the '%s' scope is not active", $id, $scope);
-        }
-
-        $return = implode("\n     * ", $return);
-
-        $doc = '';
-        if (ContainerInterface::SCOPE_PROTOTYPE !== $scope) {
-            $doc .= <<<EOF
-
-     *
-     * This service is shared.
-     * This method always returns the same instance of the service.
-EOF;
-        }
-
-        if (!$definition->isPublic()) {
-            $doc .= <<<EOF
-
-     *
-     * This service is private.
-     * If you want to be able to request this service from the container directly,
-     * make it public, otherwise you might end up with broken code.
-EOF;
-        }
-
-        if ($definition->isLazy()) {
-            $lazyInitialization = '$lazyLoad = true';
-            $lazyInitializationDoc = "\n     * @param bool    \$lazyLoad whether to try lazy-loading the service with a proxy\n     *";
-        } else {
-            $lazyInitialization = '';
-            $lazyInitializationDoc = '';
-        }
-
-        // with proxies, for 5.3.3 compatibility, the getter must be public to be accessible to the initializer
-        $isProxyCandidate = $this->getProxyDumper()->isProxyCandidate($definition);
-        $visibility = $isProxyCandidate ? 'public' : 'protected';
-        $code = <<<EOF
-
-    /**
-     * Gets the '$id' service.$doc
-     *$lazyInitializationDoc
-     * $return
-     */
-    {$visibility} function get{$this->camelize($id)}Service($lazyInitialization)
-    {
-
-EOF;
-
-        $code .= $isProxyCandidate ? $this->getProxyDumper()->getProxyFactoryCode($definition, $id) : '';
-
-        if (!in_array($scope, array(ContainerInterface::SCOPE_CONTAINER, ContainerInterface::SCOPE_PROTOTYPE))) {
-            $code .= <<<EOF
-        if (!isset(\$this->scopedServices['$scope'])) {
-            throw new InactiveScopeException('$id', '$scope');
-        }
-
-
-EOF;
-        }
-
-        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 {
-            $code .=
-                $this->addServiceInclude($id, $definition).
-                $this->addServiceLocalTempVariables($id, $definition).
-                $this->addServiceInlinedDefinitions($id, $definition).
-                $this->addServiceInstance($id, $definition).
-                $this->addServiceInlinedDefinitionsSetup($id, $definition).
-                $this->addServiceMethodCalls($id, $definition).
-                $this->addServiceProperties($id, $definition).
-                $this->addServiceConfigurator($id, $definition).
-                $this->addServiceReturn($id, $definition)
-            ;
-        }
-
-        $this->definitionVariables = null;
-        $this->referenceVariables = null;
-
-        return $code;
-    }
-
-    /**
-     * Adds multiple services.
-     *
-     * @return string
-     */
-    private function addServices()
-    {
-        $publicServices = $privateServices = $synchronizers = '';
-        $definitions = $this->container->getDefinitions();
-        ksort($definitions);
-        foreach ($definitions as $id => $definition) {
-            if ($definition->isPublic()) {
-                $publicServices .= $this->addService($id, $definition);
-            } else {
-                $privateServices .= $this->addService($id, $definition);
-            }
-
-            $synchronizers .= $this->addServiceSynchronizer($id, $definition);
-        }
-
-        return $publicServices.$synchronizers.$privateServices;
-    }
-
-    /**
-     * Adds synchronizer methods.
-     *
-     * @param string     $id         A service identifier
-     * @param Definition $definition A Definition instance
-     *
-     * @return string|null
-     *
-     * @deprecated since version 2.7, will be removed in 3.0.
-     */
-    private function addServiceSynchronizer($id, Definition $definition)
-    {
-        if (!$definition->isSynchronized(false)) {
-            return;
-        }
-
-        if ('request' !== $id) {
-            @trigger_error('Synchronized services were deprecated in version 2.7 and won\'t work anymore in 3.0.', E_USER_DEPRECATED);
-        }
-
-        $code = '';
-        foreach ($this->container->getDefinitions() as $definitionId => $definition) {
-            foreach ($definition->getMethodCalls() as $call) {
-                foreach ($call[1] as $argument) {
-                    if ($argument instanceof Reference && $id == (string) $argument) {
-                        $arguments = array();
-                        foreach ($call[1] as $value) {
-                            $arguments[] = $this->dumpValue($value);
-                        }
-
-                        $call = $this->wrapServiceConditionals($call[1], sprintf("\$this->get('%s')->%s(%s);", $definitionId, $call[0], implode(', ', $arguments)));
-
-                        $code .= <<<EOF
-        if (\$this->initialized('$definitionId')) {
-            $call
-        }
-
-EOF;
-                    }
-                }
-            }
-        }
-
-        if (!$code) {
-            return;
-        }
-
-        return <<<EOF
-
-    /**
-     * Updates the '$id' service.
-     */
-    protected function synchronize{$this->camelize($id)}Service()
-    {
-$code    }
-
-EOF;
-    }
-
-    private function addNewInstance($id, Definition $definition, $return, $instantiation)
-    {
-        $class = $this->dumpValue($definition->getClass());
-
-        $arguments = array();
-        foreach ($definition->getArguments() as $value) {
-            $arguments[] = $this->dumpValue($value);
-        }
-
-        if (null !== $definition->getFactory()) {
-            $callable = $definition->getFactory();
-            if (is_array($callable)) {
-                if ($callable[0] instanceof Reference
-                    || ($callable[0] instanceof Definition && $this->definitionVariables->contains($callable[0]))) {
-                    return sprintf("        $return{$instantiation}%s->%s(%s);\n", $this->dumpValue($callable[0]), $callable[1], $arguments ? implode(', ', $arguments) : '');
-                }
-
-                $class = $this->dumpValue($callable[0]);
-                // If the class is a string we can optimize call_user_func away
-                if (strpos($class, "'") === 0) {
-                    return sprintf("        $return{$instantiation}%s::%s(%s);\n", $this->dumpLiteralClass($class), $callable[1], $arguments ? implode(', ', $arguments) : '');
-                }
-
-                return sprintf("        $return{$instantiation}call_user_func(array(%s, '%s')%s);\n", $this->dumpValue($callable[0]), $callable[1], $arguments ? ', '.implode(', ', $arguments) : '');
-            }
-
-            return sprintf("        $return{$instantiation}\\%s(%s);\n", $callable, $arguments ? implode(', ', $arguments) : '');
-        } elseif (null !== $definition->getFactoryMethod(false)) {
-            if (null !== $definition->getFactoryClass(false)) {
-                $class = $this->dumpValue($definition->getFactoryClass(false));
-
-                // If the class is a string we can optimize call_user_func away
-                if (strpos($class, "'") === 0) {
-                    return sprintf("        $return{$instantiation}%s::%s(%s);\n", $this->dumpLiteralClass($class), $definition->getFactoryMethod(false), $arguments ? implode(', ', $arguments) : '');
-                }
-
-                return sprintf("        $return{$instantiation}call_user_func(array(%s, '%s')%s);\n", $this->dumpValue($definition->getFactoryClass(false)), $definition->getFactoryMethod(false), $arguments ? ', '.implode(', ', $arguments) : '');
-            }
-
-            if (null !== $definition->getFactoryService(false)) {
-                return sprintf("        $return{$instantiation}%s->%s(%s);\n", $this->getServiceCall($definition->getFactoryService(false)), $definition->getFactoryMethod(false), implode(', ', $arguments));
-            }
-
-            throw new RuntimeException(sprintf('Factory method requires a factory service or factory class in service definition for %s', $id));
-        }
-
-        if (false !== strpos($class, '$')) {
-            return sprintf("        \$class = %s;\n\n        $return{$instantiation}new \$class(%s);\n", $class, implode(', ', $arguments));
-        }
-
-        return sprintf("        $return{$instantiation}new %s(%s);\n", $this->dumpLiteralClass($class), implode(', ', $arguments));
-    }
-
-    /**
-     * Adds the class headers.
-     *
-     * @param string $class     Class name
-     * @param string $baseClass The name of the base class
-     * @param string $namespace The class namespace
-     *
-     * @return string
-     */
-    private function startClass($class, $baseClass, $namespace)
-    {
-        $bagClass = $this->container->isFrozen() ? 'use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;' : 'use Symfony\Component\DependencyInjection\ParameterBag\\ParameterBag;';
-        $namespaceLine = $namespace ? "namespace $namespace;\n" : '';
-
-        return <<<EOF
-<?php
-$namespaceLine
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\DependencyInjection\Exception\InactiveScopeException;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Exception\LogicException;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-$bagClass
-
-/**
- * $class.
- *
- * This class has been auto-generated
- * by the Symfony Dependency Injection Component.
- */
-class $class extends $baseClass
-{
-    private \$parameters;
-    private \$targetDirs = array();
-
-EOF;
-    }
-
-    /**
-     * Adds the constructor.
-     *
-     * @return string
-     */
-    private function addConstructor()
-    {
-        $targetDirs = $this->exportTargetDirs();
-        $arguments = $this->container->getParameterBag()->all() ? 'new ParameterBag($this->getDefaultParameters())' : null;
-
-        $code = <<<EOF
-
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {{$targetDirs}
-        parent::__construct($arguments);
-
-EOF;
-
-        if (count($scopes = $this->container->getScopes()) > 0) {
-            $code .= "\n";
-            $code .= '        $this->scopes = '.$this->dumpValue($scopes).";\n";
-            $code .= '        $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren()).";\n";
-        }
-
-        $code .= $this->addMethodMap();
-        $code .= $this->addAliases();
-
-        $code .= <<<EOF
-    }
-
-EOF;
-
-        return $code;
-    }
-
-    /**
-     * Adds the constructor for a frozen container.
-     *
-     * @return string
-     */
-    private function addFrozenConstructor()
-    {
-        $targetDirs = $this->exportTargetDirs();
-
-        $code = <<<EOF
-
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {{$targetDirs}
-EOF;
-
-        if ($this->container->getParameterBag()->all()) {
-            $code .= "\n        \$this->parameters = \$this->getDefaultParameters();\n";
-        }
-
-        $code .= <<<EOF
-
-        \$this->services =
-        \$this->scopedServices =
-        \$this->scopeStacks = array();
-EOF;
-
-        $code .= "\n";
-        if (count($scopes = $this->container->getScopes()) > 0) {
-            $code .= '        $this->scopes = '.$this->dumpValue($scopes).";\n";
-            $code .= '        $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren()).";\n";
-        } else {
-            $code .= "        \$this->scopes = array();\n";
-            $code .= "        \$this->scopeChildren = array();\n";
-        }
-
-        $code .= $this->addMethodMap();
-        $code .= $this->addAliases();
-
-        $code .= <<<EOF
-    }
-
-EOF;
-
-        return $code;
-    }
-
-    /**
-     * Adds the constructor for a frozen container.
-     *
-     * @return string
-     */
-    private function addFrozenCompile()
-    {
-        return <<<EOF
-
-    /**
-     * {@inheritdoc}
-     */
-    public function compile()
-    {
-        throw new LogicException('You cannot compile a dumped frozen container.');
-    }
-
-EOF;
-    }
-
-    /**
-     * Adds the methodMap property definition.
-     *
-     * @return string
-     */
-    private function addMethodMap()
-    {
-        if (!$definitions = $this->container->getDefinitions()) {
-            return '';
-        }
-
-        $code = "        \$this->methodMap = array(\n";
-        ksort($definitions);
-        foreach ($definitions as $id => $definition) {
-            $code .= '            '.var_export($id, true).' => '.var_export('get'.$this->camelize($id).'Service', true).",\n";
-        }
-
-        return $code."        );\n";
-    }
-
-    /**
-     * Adds the aliases property definition.
-     *
-     * @return string
-     */
-    private function addAliases()
-    {
-        if (!$aliases = $this->container->getAliases()) {
-            if ($this->container->isFrozen()) {
-                return "\n        \$this->aliases = array();\n";
-            } else {
-                return '';
-            }
-        }
-
-        $code = "        \$this->aliases = array(\n";
-        ksort($aliases);
-        foreach ($aliases as $alias => $id) {
-            $id = (string) $id;
-            while (isset($aliases[$id])) {
-                $id = (string) $aliases[$id];
-            }
-            $code .= '            '.var_export($alias, true).' => '.var_export($id, true).",\n";
-        }
-
-        return $code."        );\n";
-    }
-
-    /**
-     * Adds default parameters method.
-     *
-     * @return string
-     */
-    private function addDefaultParametersMethod()
-    {
-        if (!$this->container->getParameterBag()->all()) {
-            return '';
-        }
-
-        $parameters = $this->exportParameters($this->container->getParameterBag()->all());
-
-        $code = '';
-        if ($this->container->isFrozen()) {
-            $code .= <<<EOF
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getParameter(\$name)
-    {
-        \$name = strtolower(\$name);
-
-        if (!(isset(\$this->parameters[\$name]) || array_key_exists(\$name, \$this->parameters))) {
-            throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', \$name));
-        }
-
-        return \$this->parameters[\$name];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasParameter(\$name)
-    {
-        \$name = strtolower(\$name);
-
-        return isset(\$this->parameters[\$name]) || array_key_exists(\$name, \$this->parameters);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setParameter(\$name, \$value)
-    {
-        throw new LogicException('Impossible to call set() on a frozen ParameterBag.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getParameterBag()
-    {
-        if (null === \$this->parameterBag) {
-            \$this->parameterBag = new FrozenParameterBag(\$this->parameters);
-        }
-
-        return \$this->parameterBag;
-    }
-
-EOF;
-        }
-
-        $code .= <<<EOF
-
-    /**
-     * Gets the default parameters.
-     *
-     * @return array An array of the default parameters
-     */
-    protected function getDefaultParameters()
-    {
-        return $parameters;
-    }
-
-EOF;
-
-        return $code;
-    }
-
-    /**
-     * Exports parameters.
-     *
-     * @param array  $parameters
-     * @param string $path
-     * @param int    $indent
-     *
-     * @return string
-     *
-     * @throws InvalidArgumentException
-     */
-    private function exportParameters($parameters, $path = '', $indent = 12)
-    {
-        $php = array();
-        foreach ($parameters as $key => $value) {
-            if (is_array($value)) {
-                $value = $this->exportParameters($value, $path.'/'.$key, $indent + 4);
-            } elseif ($value instanceof Variable) {
-                throw new InvalidArgumentException(sprintf('You cannot dump a container with parameters that contain variable references. Variable "%s" found in "%s".', $value, $path.'/'.$key));
-            } elseif ($value instanceof Definition) {
-                throw new InvalidArgumentException(sprintf('You cannot dump a container with parameters that contain service definitions. Definition for "%s" found in "%s".', $value->getClass(), $path.'/'.$key));
-            } elseif ($value instanceof Reference) {
-                throw new InvalidArgumentException(sprintf('You cannot dump a container with parameters that contain references to other services (reference to service "%s" found in "%s").', $value, $path.'/'.$key));
-            } elseif ($value instanceof Expression) {
-                throw new InvalidArgumentException(sprintf('You cannot dump a container with parameters that contain expressions. Expression "%s" found in "%s".', $value, $path.'/'.$key));
-            } else {
-                $value = $this->export($value);
-            }
-
-            $php[] = sprintf('%s%s => %s,', str_repeat(' ', $indent), var_export($key, true), $value);
-        }
-
-        return sprintf("array(\n%s\n%s)", implode("\n", $php), str_repeat(' ', $indent - 4));
-    }
-
-    /**
-     * Ends the class definition.
-     *
-     * @return string
-     */
-    private function endClass()
-    {
-        return <<<EOF
-}
-
-EOF;
-    }
-
-    /**
-     * Wraps the service conditionals.
-     *
-     * @param string $value
-     * @param string $code
-     *
-     * @return string
-     */
-    private function wrapServiceConditionals($value, $code)
-    {
-        if (!$services = ContainerBuilder::getServiceConditionals($value)) {
-            return $code;
-        }
-
-        $conditions = array();
-        foreach ($services as $service) {
-            $conditions[] = sprintf("\$this->has('%s')", $service);
-        }
-
-        // re-indent the wrapped code
-        $code = implode("\n", array_map(function ($line) { return $line ? '    '.$line : $line; }, explode("\n", $code)));
-
-        return sprintf("        if (%s) {\n%s        }\n", implode(' && ', $conditions), $code);
-    }
-
-    /**
-     * Builds service calls from arguments.
-     *
-     * @param array $arguments
-     * @param array &$calls    By reference
-     * @param array &$behavior By reference
-     */
-    private function getServiceCallsFromArguments(array $arguments, array &$calls, array &$behavior)
-    {
-        foreach ($arguments as $argument) {
-            if (is_array($argument)) {
-                $this->getServiceCallsFromArguments($argument, $calls, $behavior);
-            } elseif ($argument instanceof Reference) {
-                $id = (string) $argument;
-
-                if (!isset($calls[$id])) {
-                    $calls[$id] = 0;
-                }
-                if (!isset($behavior[$id])) {
-                    $behavior[$id] = $argument->getInvalidBehavior();
-                } elseif (ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE !== $behavior[$id]) {
-                    $behavior[$id] = $argument->getInvalidBehavior();
-                }
-
-                ++$calls[$id];
-            }
-        }
-    }
-
-    /**
-     * Returns the inline definition.
-     *
-     * @param Definition $definition
-     *
-     * @return array
-     */
-    private function getInlinedDefinitions(Definition $definition)
-    {
-        if (false === $this->inlinedDefinitions->contains($definition)) {
-            $definitions = array_merge(
-                $this->getDefinitionsFromArguments($definition->getArguments()),
-                $this->getDefinitionsFromArguments($definition->getMethodCalls()),
-                $this->getDefinitionsFromArguments($definition->getProperties()),
-                $this->getDefinitionsFromArguments(array($definition->getConfigurator())),
-                $this->getDefinitionsFromArguments(array($definition->getFactory()))
-            );
-
-            $this->inlinedDefinitions->offsetSet($definition, $definitions);
-
-            return $definitions;
-        }
-
-        return $this->inlinedDefinitions->offsetGet($definition);
-    }
-
-    /**
-     * Gets the definition from arguments.
-     *
-     * @param array $arguments
-     *
-     * @return array
-     */
-    private function getDefinitionsFromArguments(array $arguments)
-    {
-        $definitions = array();
-        foreach ($arguments as $argument) {
-            if (is_array($argument)) {
-                $definitions = array_merge($definitions, $this->getDefinitionsFromArguments($argument));
-            } elseif ($argument instanceof Definition) {
-                $definitions = array_merge(
-                    $definitions,
-                    $this->getInlinedDefinitions($argument),
-                    array($argument)
-                );
-            }
-        }
-
-        return $definitions;
-    }
-
-    /**
-     * Checks if a service id has a reference.
-     *
-     * @param string $id
-     * @param array  $arguments
-     * @param bool   $deep
-     * @param array  $visited
-     *
-     * @return bool
-     */
-    private function hasReference($id, array $arguments, $deep = false, array &$visited = array())
-    {
-        foreach ($arguments as $argument) {
-            if (is_array($argument)) {
-                if ($this->hasReference($id, $argument, $deep, $visited)) {
-                    return true;
-                }
-            } elseif ($argument instanceof Reference) {
-                $argumentId = (string) $argument;
-                if ($id === $argumentId) {
-                    return true;
-                }
-
-                if ($deep && !isset($visited[$argumentId])) {
-                    $visited[$argumentId] = true;
-
-                    $service = $this->container->getDefinition($argumentId);
-                    $arguments = array_merge($service->getMethodCalls(), $service->getArguments(), $service->getProperties());
-
-                    if ($this->hasReference($id, $arguments, $deep, $visited)) {
-                        return true;
-                    }
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Dumps values.
-     *
-     * @param mixed $value
-     * @param bool  $interpolate
-     *
-     * @return string
-     *
-     * @throws RuntimeException
-     */
-    private function dumpValue($value, $interpolate = true)
-    {
-        if (is_array($value)) {
-            $code = array();
-            foreach ($value as $k => $v) {
-                $code[] = sprintf('%s => %s', $this->dumpValue($k, $interpolate), $this->dumpValue($v, $interpolate));
-            }
-
-            return sprintf('array(%s)', implode(', ', $code));
-        } elseif ($value instanceof Definition) {
-            if (null !== $this->definitionVariables && $this->definitionVariables->contains($value)) {
-                return $this->dumpValue($this->definitionVariables->offsetGet($value), $interpolate);
-            }
-            if (count($value->getMethodCalls()) > 0) {
-                throw new RuntimeException('Cannot dump definitions which have method calls.');
-            }
-            if (null !== $value->getConfigurator()) {
-                throw new RuntimeException('Cannot dump definitions which have a configurator.');
-            }
-
-            $arguments = array();
-            foreach ($value->getArguments() as $argument) {
-                $arguments[] = $this->dumpValue($argument);
-            }
-
-            if (null !== $value->getFactory()) {
-                $factory = $value->getFactory();
-
-                if (is_string($factory)) {
-                    return sprintf('\\%s(%s)', $factory, implode(', ', $arguments));
-                }
-
-                if (is_array($factory)) {
-                    if (is_string($factory[0])) {
-                        return sprintf('\\%s::%s(%s)', $factory[0], $factory[1], implode(', ', $arguments));
-                    }
-
-                    if ($factory[0] instanceof Definition) {
-                        return sprintf("call_user_func(array(%s, '%s')%s)", $this->dumpValue($factory[0]), $factory[1], count($arguments) > 0 ? ', '.implode(', ', $arguments) : '');
-                    }
-
-                    if ($factory[0] instanceof Reference) {
-                        return sprintf('%s->%s(%s)', $this->dumpValue($factory[0]), $factory[1], implode(', ', $arguments));
-                    }
-                }
-
-                throw new RuntimeException('Cannot dump definition because of invalid factory');
-            }
-
-            if (null !== $value->getFactoryMethod(false)) {
-                if (null !== $value->getFactoryClass(false)) {
-                    return sprintf("call_user_func(array(%s, '%s')%s)", $this->dumpValue($value->getFactoryClass(false)), $value->getFactoryMethod(false), count($arguments) > 0 ? ', '.implode(', ', $arguments) : '');
-                } elseif (null !== $value->getFactoryService(false)) {
-                    $service = $this->dumpValue($value->getFactoryService(false));
-
-                    return sprintf('%s->%s(%s)', 0 === strpos($service, '$') ? sprintf('$this->get(%s)', $service) : $this->getServiceCall($value->getFactoryService(false)), $value->getFactoryMethod(false), implode(', ', $arguments));
-                } else {
-                    throw new RuntimeException('Cannot dump definitions which have factory method without factory service or factory class.');
-                }
-            }
-
-            $class = $value->getClass();
-            if (null === $class) {
-                throw new RuntimeException('Cannot dump definitions which have no class nor factory.');
-            }
-            $class = $this->dumpValue($class);
-            if (false !== strpos($class, '$')) {
-                throw new RuntimeException('Cannot dump definitions which have a variable class name.');
-            }
-
-            return sprintf('new \\%s(%s)', substr(str_replace('\\\\', '\\', $class), 1, -1), implode(', ', $arguments));
-        } elseif ($value instanceof Variable) {
-            return '$'.$value;
-        } elseif ($value instanceof Reference) {
-            if (null !== $this->referenceVariables && isset($this->referenceVariables[$id = (string) $value])) {
-                return $this->dumpValue($this->referenceVariables[$id], $interpolate);
-            }
-
-            return $this->getServiceCall((string) $value, $value);
-        } elseif ($value instanceof Expression) {
-            return $this->getExpressionLanguage()->compile((string) $value, array('this' => 'container'));
-        } elseif ($value instanceof Parameter) {
-            return $this->dumpParameter($value);
-        } elseif (true === $interpolate && is_string($value)) {
-            if (preg_match('/^%([^%]+)%$/', $value, $match)) {
-                // we do this to deal with non string values (Boolean, integer, ...)
-                // the preg_replace_callback converts them to strings
-                return $this->dumpParameter(strtolower($match[1]));
-            } else {
-                $that = $this;
-                $replaceParameters = function ($match) use ($that) {
-                    return "'.".$that->dumpParameter(strtolower($match[2])).".'";
-                };
-
-                $code = str_replace('%%', '%', preg_replace_callback('/(?<!%)(%)([^%]+)\1/', $replaceParameters, $this->export($value)));
-
-                return $code;
-            }
-        } elseif (is_object($value) || is_resource($value)) {
-            throw new RuntimeException('Unable to dump a service container if a parameter is an object or a resource.');
-        } else {
-            return $this->export($value);
-        }
-    }
-
-    /**
-     * Dumps a string to a literal (aka PHP Code) class value.
-     *
-     * @param string $class
-     *
-     * @return string
-     */
-    private function dumpLiteralClass($class)
-    {
-        return '\\'.substr(str_replace('\\\\', '\\', $class), 1, -1);
-    }
-
-    /**
-     * Dumps a parameter.
-     *
-     * @param string $name
-     *
-     * @return string
-     */
-    public function dumpParameter($name)
-    {
-        if ($this->container->isFrozen() && $this->container->hasParameter($name)) {
-            return $this->dumpValue($this->container->getParameter($name), false);
-        }
-
-        return sprintf("\$this->getParameter('%s')", strtolower($name));
-    }
-
-    /**
-     * @deprecated since version 2.6.2, to be removed in 3.0.
-     *             Use \Symfony\Component\DependencyInjection\ContainerBuilder::addExpressionLanguageProvider instead.
-     *
-     * @param ExpressionFunctionProviderInterface $provider
-     */
-    public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6.2 and will be removed in 3.0. Use the Symfony\Component\DependencyInjection\ContainerBuilder::addExpressionLanguageProvider method instead.', E_USER_DEPRECATED);
-
-        $this->expressionLanguageProviders[] = $provider;
-    }
-
-    /**
-     * Gets a service call.
-     *
-     * @param string    $id
-     * @param Reference $reference
-     *
-     * @return string
-     */
-    private function getServiceCall($id, Reference $reference = null)
-    {
-        if ('service_container' === $id) {
-            return '$this';
-        }
-
-        if (null !== $reference && ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE !== $reference->getInvalidBehavior()) {
-            return sprintf('$this->get(\'%s\', ContainerInterface::NULL_ON_INVALID_REFERENCE)', $id);
-        } else {
-            if ($this->container->hasAlias($id)) {
-                $id = (string) $this->container->getAlias($id);
-            }
-
-            return sprintf('$this->get(\'%s\')', $id);
-        }
-    }
-
-    /**
-     * Convert a service id to a valid PHP method name.
-     *
-     * @param string $id
-     *
-     * @return string
-     *
-     * @throws InvalidArgumentException
-     */
-    private function camelize($id)
-    {
-        $name = Container::camelize($id);
-
-        if (!preg_match('/^[a-zA-Z0-9_\x7f-\xff]+$/', $name)) {
-            throw new InvalidArgumentException(sprintf('Service id "%s" cannot be converted to a valid PHP method name.', $id));
-        }
-
-        return $name;
-    }
-
-    /**
-     * Returns the next name to use.
-     *
-     * @return string
-     */
-    private function getNextVariableName()
-    {
-        $firstChars = self::FIRST_CHARS;
-        $firstCharsLength = strlen($firstChars);
-        $nonFirstChars = self::NON_FIRST_CHARS;
-        $nonFirstCharsLength = strlen($nonFirstChars);
-
-        while (true) {
-            $name = '';
-            $i = $this->variableCount;
-
-            if ('' === $name) {
-                $name .= $firstChars[$i % $firstCharsLength];
-                $i = (int) ($i / $firstCharsLength);
-            }
-
-            while ($i > 0) {
-                --$i;
-                $name .= $nonFirstChars[$i % $nonFirstCharsLength];
-                $i = (int) ($i / $nonFirstCharsLength);
-            }
-
-            ++$this->variableCount;
-
-            // check that the name is not reserved
-            if (in_array($name, $this->reservedVariables, true)) {
-                continue;
-            }
-
-            return $name;
-        }
-    }
-
-    private function getExpressionLanguage()
-    {
-        if (null === $this->expressionLanguage) {
-            if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
-                throw new RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.');
-            }
-            $providers = array_merge($this->container->getExpressionLanguageProviders(), $this->expressionLanguageProviders);
-            $this->expressionLanguage = new ExpressionLanguage(null, $providers);
-
-            if ($this->container->isTrackingResources()) {
-                foreach ($providers as $provider) {
-                    $this->container->addObjectResource($provider);
-                }
-            }
-        }
-
-        return $this->expressionLanguage;
-    }
-
-    private function exportTargetDirs()
-    {
-        return null === $this->targetDirRegex ? '' : <<<EOF
-
-        \$dir = __DIR__;
-        for (\$i = 1; \$i <= {$this->targetDirMaxMatches}; ++\$i) {
-            \$this->targetDirs[\$i] = \$dir = dirname(\$dir);
-        }
-EOF;
-    }
-
-    private function export($value)
-    {
-        if (null !== $this->targetDirRegex && is_string($value) && preg_match($this->targetDirRegex, $value, $matches, PREG_OFFSET_CAPTURE)) {
-            $prefix = $matches[0][1] ? var_export(substr($value, 0, $matches[0][1]), true).'.' : '';
-            $suffix = $matches[0][1] + strlen($matches[0][0]);
-            $suffix = isset($value[$suffix]) ? '.'.var_export(substr($value, $suffix), true) : '';
-            $dirname = '__DIR__';
-
-            if (0 < $offset = 1 + $this->targetDirMaxMatches - count($matches)) {
-                $dirname = sprintf('$this->targetDirs[%d]', $offset);
-            }
-
-            if ($prefix || $suffix) {
-                return sprintf('(%s%s%s)', $prefix, $dirname, $suffix);
-            }
-
-            return $dirname;
-        }
-
-        return var_export($value, true);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Dumper/XmlDumper.php b/vendor/symfony/dependency-injection/Dumper/XmlDumper.php
deleted file mode 100644
index bd8e200..0000000
--- a/vendor/symfony/dependency-injection/Dumper/XmlDumper.php
+++ /dev/null
@@ -1,356 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Parameter;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\Alias;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-use Symfony\Component\ExpressionLanguage\Expression;
-
-/**
- * XmlDumper dumps a service container as an XML string.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Martin Hasoň <martin.hason@gmail.com>
- */
-class XmlDumper extends Dumper
-{
-    /**
-     * @var \DOMDocument
-     */
-    private $document;
-
-    /**
-     * Dumps the service container as an XML string.
-     *
-     * @param array $options An array of options
-     *
-     * @return string An xml string representing of the service container
-     */
-    public function dump(array $options = array())
-    {
-        $this->document = new \DOMDocument('1.0', 'utf-8');
-        $this->document->formatOutput = true;
-
-        $container = $this->document->createElementNS('http://symfony.com/schema/dic/services', 'container');
-        $container->setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
-        $container->setAttribute('xsi:schemaLocation', 'http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd');
-
-        $this->addParameters($container);
-        $this->addServices($container);
-
-        $this->document->appendChild($container);
-        $xml = $this->document->saveXML();
-        $this->document = null;
-
-        return $xml;
-    }
-
-    /**
-     * Adds parameters.
-     *
-     * @param \DOMElement $parent
-     */
-    private function addParameters(\DOMElement $parent)
-    {
-        $data = $this->container->getParameterBag()->all();
-        if (!$data) {
-            return;
-        }
-
-        if ($this->container->isFrozen()) {
-            $data = $this->escape($data);
-        }
-
-        $parameters = $this->document->createElement('parameters');
-        $parent->appendChild($parameters);
-        $this->convertParameters($data, 'parameter', $parameters);
-    }
-
-    /**
-     * Adds method calls.
-     *
-     * @param array       $methodcalls
-     * @param \DOMElement $parent
-     */
-    private function addMethodCalls(array $methodcalls, \DOMElement $parent)
-    {
-        foreach ($methodcalls as $methodcall) {
-            $call = $this->document->createElement('call');
-            $call->setAttribute('method', $methodcall[0]);
-            if (count($methodcall[1])) {
-                $this->convertParameters($methodcall[1], 'argument', $call);
-            }
-            $parent->appendChild($call);
-        }
-    }
-
-    /**
-     * Adds a service.
-     *
-     * @param Definition  $definition
-     * @param string      $id
-     * @param \DOMElement $parent
-     */
-    private function addService($definition, $id, \DOMElement $parent)
-    {
-        $service = $this->document->createElement('service');
-        if (null !== $id) {
-            $service->setAttribute('id', $id);
-        }
-        if ($class = $definition->getClass()) {
-            if ('\\' === substr($class, 0, 1)) {
-                $class = substr($class, 1);
-            }
-
-            $service->setAttribute('class', $class);
-        }
-        if ($definition->getFactoryMethod(false)) {
-            $service->setAttribute('factory-method', $definition->getFactoryMethod(false));
-        }
-        if ($definition->getFactoryClass(false)) {
-            $service->setAttribute('factory-class', $definition->getFactoryClass(false));
-        }
-        if ($definition->getFactoryService(false)) {
-            $service->setAttribute('factory-service', $definition->getFactoryService(false));
-        }
-        if (ContainerInterface::SCOPE_CONTAINER !== $scope = $definition->getScope()) {
-            $service->setAttribute('scope', $scope);
-        }
-        if (!$definition->isPublic()) {
-            $service->setAttribute('public', 'false');
-        }
-        if ($definition->isSynthetic()) {
-            $service->setAttribute('synthetic', 'true');
-        }
-        if ($definition->isSynchronized(false)) {
-            $service->setAttribute('synchronized', 'true');
-        }
-        if ($definition->isLazy()) {
-            $service->setAttribute('lazy', 'true');
-        }
-        if (null !== $decorated = $definition->getDecoratedService()) {
-            list($decorated, $renamedId) = $decorated;
-            $service->setAttribute('decorates', $decorated);
-            if (null !== $renamedId) {
-                $service->setAttribute('decoration-inner-name', $renamedId);
-            }
-        }
-
-        foreach ($definition->getTags() as $name => $tags) {
-            foreach ($tags as $attributes) {
-                $tag = $this->document->createElement('tag');
-                $tag->setAttribute('name', $name);
-                foreach ($attributes as $key => $value) {
-                    $tag->setAttribute($key, $value);
-                }
-                $service->appendChild($tag);
-            }
-        }
-
-        if ($definition->getFile()) {
-            $file = $this->document->createElement('file');
-            $file->appendChild($this->document->createTextNode($definition->getFile()));
-            $service->appendChild($file);
-        }
-
-        if ($parameters = $definition->getArguments()) {
-            $this->convertParameters($parameters, 'argument', $service);
-        }
-
-        if ($parameters = $definition->getProperties()) {
-            $this->convertParameters($parameters, 'property', $service, 'name');
-        }
-
-        $this->addMethodCalls($definition->getMethodCalls(), $service);
-
-        if ($callable = $definition->getFactory()) {
-            $factory = $this->document->createElement('factory');
-
-            if (is_array($callable) && $callable[0] instanceof Definition) {
-                $this->addService($callable[0], null, $factory);
-                $factory->setAttribute('method', $callable[1]);
-            } elseif (is_array($callable)) {
-                $factory->setAttribute($callable[0] instanceof Reference ? 'service' : 'class', $callable[0]);
-                $factory->setAttribute('method', $callable[1]);
-            } else {
-                $factory->setAttribute('function', $callable);
-            }
-            $service->appendChild($factory);
-        }
-
-        if ($callable = $definition->getConfigurator()) {
-            $configurator = $this->document->createElement('configurator');
-
-            if (is_array($callable) && $callable[0] instanceof Definition) {
-                $this->addService($callable[0], null, $configurator);
-                $configurator->setAttribute('method', $callable[1]);
-            } elseif (is_array($callable)) {
-                $configurator->setAttribute($callable[0] instanceof Reference ? 'service' : 'class', $callable[0]);
-                $configurator->setAttribute('method', $callable[1]);
-            } else {
-                $configurator->setAttribute('function', $callable);
-            }
-            $service->appendChild($configurator);
-        }
-
-        $parent->appendChild($service);
-    }
-
-    /**
-     * Adds a service alias.
-     *
-     * @param string      $alias
-     * @param Alias       $id
-     * @param \DOMElement $parent
-     */
-    private function addServiceAlias($alias, Alias $id, \DOMElement $parent)
-    {
-        $service = $this->document->createElement('service');
-        $service->setAttribute('id', $alias);
-        $service->setAttribute('alias', $id);
-        if (!$id->isPublic()) {
-            $service->setAttribute('public', 'false');
-        }
-        $parent->appendChild($service);
-    }
-
-    /**
-     * Adds services.
-     *
-     * @param \DOMElement $parent
-     */
-    private function addServices(\DOMElement $parent)
-    {
-        $definitions = $this->container->getDefinitions();
-        if (!$definitions) {
-            return;
-        }
-
-        $services = $this->document->createElement('services');
-        foreach ($definitions as $id => $definition) {
-            $this->addService($definition, $id, $services);
-        }
-
-        $aliases = $this->container->getAliases();
-        foreach ($aliases as $alias => $id) {
-            while (isset($aliases[(string) $id])) {
-                $id = $aliases[(string) $id];
-            }
-            $this->addServiceAlias($alias, $id, $services);
-        }
-        $parent->appendChild($services);
-    }
-
-    /**
-     * Converts parameters.
-     *
-     * @param array       $parameters
-     * @param string      $type
-     * @param \DOMElement $parent
-     * @param string      $keyAttribute
-     */
-    private function convertParameters($parameters, $type, \DOMElement $parent, $keyAttribute = 'key')
-    {
-        $withKeys = array_keys($parameters) !== range(0, count($parameters) - 1);
-        foreach ($parameters as $key => $value) {
-            $element = $this->document->createElement($type);
-            if ($withKeys) {
-                $element->setAttribute($keyAttribute, $key);
-            }
-
-            if (is_array($value)) {
-                $element->setAttribute('type', 'collection');
-                $this->convertParameters($value, $type, $element, 'key');
-            } elseif ($value instanceof Reference) {
-                $element->setAttribute('type', 'service');
-                $element->setAttribute('id', (string) $value);
-                $behaviour = $value->getInvalidBehavior();
-                if ($behaviour == ContainerInterface::NULL_ON_INVALID_REFERENCE) {
-                    $element->setAttribute('on-invalid', 'null');
-                } elseif ($behaviour == ContainerInterface::IGNORE_ON_INVALID_REFERENCE) {
-                    $element->setAttribute('on-invalid', 'ignore');
-                }
-                if (!$value->isStrict()) {
-                    $element->setAttribute('strict', 'false');
-                }
-            } elseif ($value instanceof Definition) {
-                $element->setAttribute('type', 'service');
-                $this->addService($value, null, $element);
-            } elseif ($value instanceof Expression) {
-                $element->setAttribute('type', 'expression');
-                $text = $this->document->createTextNode(self::phpToXml((string) $value));
-                $element->appendChild($text);
-            } else {
-                if (in_array($value, array('null', 'true', 'false'), true)) {
-                    $element->setAttribute('type', 'string');
-                }
-                $text = $this->document->createTextNode(self::phpToXml($value));
-                $element->appendChild($text);
-            }
-            $parent->appendChild($element);
-        }
-    }
-
-    /**
-     * Escapes arguments.
-     *
-     * @param array $arguments
-     *
-     * @return array
-     */
-    private function escape($arguments)
-    {
-        $args = array();
-        foreach ($arguments as $k => $v) {
-            if (is_array($v)) {
-                $args[$k] = $this->escape($v);
-            } elseif (is_string($v)) {
-                $args[$k] = str_replace('%', '%%', $v);
-            } else {
-                $args[$k] = $v;
-            }
-        }
-
-        return $args;
-    }
-
-    /**
-     * Converts php types to xml types.
-     *
-     * @param mixed $value Value to convert
-     *
-     * @return string
-     *
-     * @throws RuntimeException When trying to dump object or resource
-     */
-    public static function phpToXml($value)
-    {
-        switch (true) {
-            case null === $value:
-                return 'null';
-            case true === $value:
-                return 'true';
-            case false === $value:
-                return 'false';
-            case $value instanceof Parameter:
-                return '%'.$value.'%';
-            case is_object($value) || is_resource($value):
-                throw new RuntimeException('Unable to dump a service container if a parameter is an object or a resource.');
-            default:
-                return (string) $value;
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Dumper/YamlDumper.php b/vendor/symfony/dependency-injection/Dumper/YamlDumper.php
deleted file mode 100644
index e8e108c..0000000
--- a/vendor/symfony/dependency-injection/Dumper/YamlDumper.php
+++ /dev/null
@@ -1,345 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Yaml\Dumper as YmlDumper;
-use Symfony\Component\DependencyInjection\Alias;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\Parameter;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-use Symfony\Component\ExpressionLanguage\Expression;
-
-/**
- * YamlDumper dumps a service container as a YAML string.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class YamlDumper extends Dumper
-{
-    private $dumper;
-
-    /**
-     * Dumps the service container as an YAML string.
-     *
-     * @param array $options An array of options
-     *
-     * @return string A YAML string representing of the service container
-     */
-    public function dump(array $options = array())
-    {
-        if (!class_exists('Symfony\Component\Yaml\Dumper')) {
-            throw new RuntimeException('Unable to dump the container as the Symfony Yaml Component is not installed.');
-        }
-
-        if (null === $this->dumper) {
-            $this->dumper = new YmlDumper();
-        }
-
-        return $this->addParameters()."\n".$this->addServices();
-    }
-
-    /**
-     * Adds a service.
-     *
-     * @param string     $id
-     * @param Definition $definition
-     *
-     * @return string
-     */
-    private function addService($id, $definition)
-    {
-        $code = "    $id:\n";
-        if ($class = $definition->getClass()) {
-            if ('\\' === substr($class, 0, 1)) {
-                $class = substr($class, 1);
-            }
-
-            $code .= sprintf("        class: %s\n", $class);
-        }
-
-        if (!$definition->isPublic()) {
-            $code .= "        public: false\n";
-        }
-
-        $tagsCode = '';
-        foreach ($definition->getTags() as $name => $tags) {
-            foreach ($tags as $attributes) {
-                $att = array();
-                foreach ($attributes as $key => $value) {
-                    $att[] = sprintf('%s: %s', $this->dumper->dump($key), $this->dumper->dump($value));
-                }
-                $att = $att ? ', '.implode(', ', $att) : '';
-
-                $tagsCode .= sprintf("            - { name: %s%s }\n", $this->dumper->dump($name), $att);
-            }
-        }
-        if ($tagsCode) {
-            $code .= "        tags:\n".$tagsCode;
-        }
-
-        if ($definition->getFile()) {
-            $code .= sprintf("        file: %s\n", $definition->getFile());
-        }
-
-        if ($definition->isSynthetic()) {
-            $code .= sprintf("        synthetic: true\n");
-        }
-
-        if ($definition->isSynchronized(false)) {
-            $code .= sprintf("        synchronized: true\n");
-        }
-
-        if ($definition->getFactoryClass(false)) {
-            $code .= sprintf("        factory_class: %s\n", $definition->getFactoryClass(false));
-        }
-
-        if ($definition->isLazy()) {
-            $code .= sprintf("        lazy: true\n");
-        }
-
-        if ($definition->getFactoryMethod(false)) {
-            $code .= sprintf("        factory_method: %s\n", $definition->getFactoryMethod(false));
-        }
-
-        if ($definition->getFactoryService(false)) {
-            $code .= sprintf("        factory_service: %s\n", $definition->getFactoryService(false));
-        }
-
-        if ($definition->getArguments()) {
-            $code .= sprintf("        arguments: %s\n", $this->dumper->dump($this->dumpValue($definition->getArguments()), 0));
-        }
-
-        if ($definition->getProperties()) {
-            $code .= sprintf("        properties: %s\n", $this->dumper->dump($this->dumpValue($definition->getProperties()), 0));
-        }
-
-        if ($definition->getMethodCalls()) {
-            $code .= sprintf("        calls:\n%s\n", $this->dumper->dump($this->dumpValue($definition->getMethodCalls()), 1, 12));
-        }
-
-        if (ContainerInterface::SCOPE_CONTAINER !== $scope = $definition->getScope()) {
-            $code .= sprintf("        scope: %s\n", $scope);
-        }
-
-        if (null !== $decorated = $definition->getDecoratedService()) {
-            list($decorated, $renamedId) = $decorated;
-            $code .= sprintf("        decorates: %s\n", $decorated);
-            if (null !== $renamedId) {
-                $code .= sprintf("        decoration_inner_name: %s\n", $renamedId);
-            }
-        }
-
-        if ($callable = $definition->getFactory()) {
-            $code .= sprintf("        factory: %s\n", $this->dumper->dump($this->dumpCallable($callable), 0));
-        }
-
-        if ($callable = $definition->getConfigurator()) {
-            $code .= sprintf("        configurator: %s\n", $this->dumper->dump($this->dumpCallable($callable), 0));
-        }
-
-        return $code;
-    }
-
-    /**
-     * Adds a service alias.
-     *
-     * @param string $alias
-     * @param Alias  $id
-     *
-     * @return string
-     */
-    private function addServiceAlias($alias, $id)
-    {
-        if ($id->isPublic()) {
-            return sprintf("    %s: '@%s'\n", $alias, $id);
-        }
-
-        return sprintf("    %s:\n        alias: %s\n        public: false", $alias, $id);
-    }
-
-    /**
-     * Adds services.
-     *
-     * @return string
-     */
-    private function addServices()
-    {
-        if (!$this->container->getDefinitions()) {
-            return '';
-        }
-
-        $code = "services:\n";
-        foreach ($this->container->getDefinitions() as $id => $definition) {
-            $code .= $this->addService($id, $definition);
-        }
-
-        $aliases = $this->container->getAliases();
-        foreach ($aliases as $alias => $id) {
-            while (isset($aliases[(string) $id])) {
-                $id = $aliases[(string) $id];
-            }
-            $code .= $this->addServiceAlias($alias, $id);
-        }
-
-        return $code;
-    }
-
-    /**
-     * Adds parameters.
-     *
-     * @return string
-     */
-    private function addParameters()
-    {
-        if (!$this->container->getParameterBag()->all()) {
-            return '';
-        }
-
-        $parameters = $this->prepareParameters($this->container->getParameterBag()->all(), $this->container->isFrozen());
-
-        return $this->dumper->dump(array('parameters' => $parameters), 2);
-    }
-
-    /**
-     * Dumps callable to YAML format.
-     *
-     * @param callable $callable
-     *
-     * @return callable
-     */
-    private function dumpCallable($callable)
-    {
-        if (is_array($callable)) {
-            if ($callable[0] instanceof Reference) {
-                $callable = array($this->getServiceCall((string) $callable[0], $callable[0]), $callable[1]);
-            } else {
-                $callable = array($callable[0], $callable[1]);
-            }
-        }
-
-        return $callable;
-    }
-
-    /**
-     * Dumps the value to YAML format.
-     *
-     * @param mixed $value
-     *
-     * @return mixed
-     *
-     * @throws RuntimeException When trying to dump object or resource
-     */
-    private function dumpValue($value)
-    {
-        if (is_array($value)) {
-            $code = array();
-            foreach ($value as $k => $v) {
-                $code[$k] = $this->dumpValue($v);
-            }
-
-            return $code;
-        } elseif ($value instanceof Reference) {
-            return $this->getServiceCall((string) $value, $value);
-        } elseif ($value instanceof Parameter) {
-            return $this->getParameterCall((string) $value);
-        } elseif ($value instanceof Expression) {
-            return $this->getExpressionCall((string) $value);
-        } elseif (is_object($value) || is_resource($value)) {
-            throw new RuntimeException('Unable to dump a service container if a parameter is an object or a resource.');
-        }
-
-        return $value;
-    }
-
-    /**
-     * Gets the service call.
-     *
-     * @param string    $id
-     * @param Reference $reference
-     *
-     * @return string
-     */
-    private function getServiceCall($id, Reference $reference = null)
-    {
-        if (null !== $reference && ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE !== $reference->getInvalidBehavior()) {
-            return sprintf('@?%s', $id);
-        }
-
-        return sprintf('@%s', $id);
-    }
-
-    /**
-     * Gets parameter call.
-     *
-     * @param string $id
-     *
-     * @return string
-     */
-    private function getParameterCall($id)
-    {
-        return sprintf('%%%s%%', $id);
-    }
-
-    private function getExpressionCall($expression)
-    {
-        return sprintf('@=%s', $expression);
-    }
-
-    /**
-     * Prepares parameters.
-     *
-     * @param array $parameters
-     * @param bool  $escape
-     *
-     * @return array
-     */
-    private function prepareParameters($parameters, $escape = true)
-    {
-        $filtered = array();
-        foreach ($parameters as $key => $value) {
-            if (is_array($value)) {
-                $value = $this->prepareParameters($value, $escape);
-            } elseif ($value instanceof Reference || is_string($value) && 0 === strpos($value, '@')) {
-                $value = '@'.$value;
-            }
-
-            $filtered[$key] = $value;
-        }
-
-        return $escape ? $this->escape($filtered) : $filtered;
-    }
-
-    /**
-     * Escapes arguments.
-     *
-     * @param array $arguments
-     *
-     * @return array
-     */
-    private function escape($arguments)
-    {
-        $args = array();
-        foreach ($arguments as $k => $v) {
-            if (is_array($v)) {
-                $args[$k] = $this->escape($v);
-            } elseif (is_string($v)) {
-                $args[$k] = str_replace('%', '%%', $v);
-            } else {
-                $args[$k] = $v;
-            }
-        }
-
-        return $args;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Exception/BadMethodCallException.php b/vendor/symfony/dependency-injection/Exception/BadMethodCallException.php
deleted file mode 100644
index 959238e..0000000
--- a/vendor/symfony/dependency-injection/Exception/BadMethodCallException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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\Exception;
-
-/**
- * Base BadMethodCallException for Dependency Injection component.
- */
-class BadMethodCallException extends \BadMethodCallException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/dependency-injection/Exception/ExceptionInterface.php b/vendor/symfony/dependency-injection/Exception/ExceptionInterface.php
deleted file mode 100644
index f5e9099..0000000
--- a/vendor/symfony/dependency-injection/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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\Exception;
-
-/**
- * Base ExceptionInterface for Dependency Injection component.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bulat Shakirzyanov <bulat@theopenskyproject.com>
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/symfony/dependency-injection/Exception/InactiveScopeException.php b/vendor/symfony/dependency-injection/Exception/InactiveScopeException.php
deleted file mode 100644
index 6b3dd3e..0000000
--- a/vendor/symfony/dependency-injection/Exception/InactiveScopeException.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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\Exception;
-
-/**
- * This exception is thrown when you try to create a service of an inactive scope.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class InactiveScopeException extends RuntimeException
-{
-    private $serviceId;
-    private $scope;
-
-    public function __construct($serviceId, $scope, \Exception $previous = null)
-    {
-        parent::__construct(sprintf('You cannot create a service ("%s") of an inactive scope ("%s").', $serviceId, $scope), 0, $previous);
-
-        $this->serviceId = $serviceId;
-        $this->scope = $scope;
-    }
-
-    public function getServiceId()
-    {
-        return $this->serviceId;
-    }
-
-    public function getScope()
-    {
-        return $this->scope;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Exception/InvalidArgumentException.php b/vendor/symfony/dependency-injection/Exception/InvalidArgumentException.php
deleted file mode 100644
index 119bb7d..0000000
--- a/vendor/symfony/dependency-injection/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Base InvalidArgumentException for Dependency Injection component.
- *
- * @author Bulat Shakirzyanov <bulat@theopenskyproject.com>
- */
-class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/dependency-injection/Exception/LogicException.php b/vendor/symfony/dependency-injection/Exception/LogicException.php
deleted file mode 100644
index 17a070c..0000000
--- a/vendor/symfony/dependency-injection/Exception/LogicException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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\Exception;
-
-/**
- * Base LogicException for Dependency Injection component.
- */
-class LogicException extends \LogicException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/dependency-injection/Exception/OutOfBoundsException.php b/vendor/symfony/dependency-injection/Exception/OutOfBoundsException.php
deleted file mode 100644
index a61f143..0000000
--- a/vendor/symfony/dependency-injection/Exception/OutOfBoundsException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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\Exception;
-
-/**
- * Base OutOfBoundsException for Dependency Injection component.
- */
-class OutOfBoundsException extends \OutOfBoundsException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/dependency-injection/Exception/ParameterCircularReferenceException.php b/vendor/symfony/dependency-injection/Exception/ParameterCircularReferenceException.php
deleted file mode 100644
index 2915176..0000000
--- a/vendor/symfony/dependency-injection/Exception/ParameterCircularReferenceException.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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\Exception;
-
-/**
- * This exception is thrown when a circular reference in a parameter is detected.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ParameterCircularReferenceException extends RuntimeException
-{
-    private $parameters;
-
-    public function __construct($parameters, \Exception $previous = null)
-    {
-        parent::__construct(sprintf('Circular reference detected for parameter "%s" ("%s" > "%s").', $parameters[0], implode('" > "', $parameters), $parameters[0]), 0, $previous);
-
-        $this->parameters = $parameters;
-    }
-
-    public function getParameters()
-    {
-        return $this->parameters;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Exception/ParameterNotFoundException.php b/vendor/symfony/dependency-injection/Exception/ParameterNotFoundException.php
deleted file mode 100644
index b529f0f..0000000
--- a/vendor/symfony/dependency-injection/Exception/ParameterNotFoundException.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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\Exception;
-
-/**
- * This exception is thrown when a non-existent parameter is used.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ParameterNotFoundException extends InvalidArgumentException
-{
-    private $key;
-    private $sourceId;
-    private $sourceKey;
-    private $alternatives;
-
-    /**
-     * Constructor.
-     *
-     * @param string     $key          The requested parameter key
-     * @param string     $sourceId     The service id that references the non-existent parameter
-     * @param string     $sourceKey    The parameter key that references the non-existent parameter
-     * @param \Exception $previous     The previous exception
-     * @param string[]   $alternatives Some parameter name alternatives
-     */
-    public function __construct($key, $sourceId = null, $sourceKey = null, \Exception $previous = null, array $alternatives = array())
-    {
-        $this->key = $key;
-        $this->sourceId = $sourceId;
-        $this->sourceKey = $sourceKey;
-        $this->alternatives = $alternatives;
-
-        parent::__construct('', 0, $previous);
-
-        $this->updateRepr();
-    }
-
-    public function updateRepr()
-    {
-        if (null !== $this->sourceId) {
-            $this->message = sprintf('The service "%s" has a dependency on a non-existent parameter "%s".', $this->sourceId, $this->key);
-        } elseif (null !== $this->sourceKey) {
-            $this->message = sprintf('The parameter "%s" has a dependency on a non-existent parameter "%s".', $this->sourceKey, $this->key);
-        } else {
-            $this->message = sprintf('You have requested a non-existent parameter "%s".', $this->key);
-        }
-
-        if ($this->alternatives) {
-            if (1 == count($this->alternatives)) {
-                $this->message .= ' Did you mean this: "';
-            } else {
-                $this->message .= ' Did you mean one of these: "';
-            }
-            $this->message .= implode('", "', $this->alternatives).'"?';
-        }
-    }
-
-    public function getKey()
-    {
-        return $this->key;
-    }
-
-    public function getSourceId()
-    {
-        return $this->sourceId;
-    }
-
-    public function getSourceKey()
-    {
-        return $this->sourceKey;
-    }
-
-    public function setSourceId($sourceId)
-    {
-        $this->sourceId = $sourceId;
-
-        $this->updateRepr();
-    }
-
-    public function setSourceKey($sourceKey)
-    {
-        $this->sourceKey = $sourceKey;
-
-        $this->updateRepr();
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Exception/RuntimeException.php b/vendor/symfony/dependency-injection/Exception/RuntimeException.php
deleted file mode 100644
index 5c24541..0000000
--- a/vendor/symfony/dependency-injection/Exception/RuntimeException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Base RuntimeException for Dependency Injection component.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class RuntimeException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/dependency-injection/Exception/ScopeCrossingInjectionException.php b/vendor/symfony/dependency-injection/Exception/ScopeCrossingInjectionException.php
deleted file mode 100644
index 661fbab..0000000
--- a/vendor/symfony/dependency-injection/Exception/ScopeCrossingInjectionException.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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\Exception;
-
-/**
- * This exception is thrown when the a scope crossing injection is detected.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ScopeCrossingInjectionException extends RuntimeException
-{
-    private $sourceServiceId;
-    private $sourceScope;
-    private $destServiceId;
-    private $destScope;
-
-    public function __construct($sourceServiceId, $sourceScope, $destServiceId, $destScope, \Exception $previous = null)
-    {
-        parent::__construct(sprintf(
-            'Scope Crossing Injection detected: The definition "%s" references the service "%s" which belongs to another scope hierarchy. '
-           .'This service might not be available consistently. Generally, it is safer to either move the definition "%s" to scope "%s", or '
-           .'declare "%s" as a child scope of "%s". If you can be sure that the other scope is always active, you can set the reference to strict=false to get rid of this error.',
-           $sourceServiceId,
-           $destServiceId,
-           $sourceServiceId,
-           $destScope,
-           $sourceScope,
-           $destScope
-        ), 0, $previous);
-
-        $this->sourceServiceId = $sourceServiceId;
-        $this->sourceScope = $sourceScope;
-        $this->destServiceId = $destServiceId;
-        $this->destScope = $destScope;
-    }
-
-    public function getSourceServiceId()
-    {
-        return $this->sourceServiceId;
-    }
-
-    public function getSourceScope()
-    {
-        return $this->sourceScope;
-    }
-
-    public function getDestServiceId()
-    {
-        return $this->destServiceId;
-    }
-
-    public function getDestScope()
-    {
-        return $this->destScope;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Exception/ScopeWideningInjectionException.php b/vendor/symfony/dependency-injection/Exception/ScopeWideningInjectionException.php
deleted file mode 100644
index 86a6684..0000000
--- a/vendor/symfony/dependency-injection/Exception/ScopeWideningInjectionException.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?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\Exception;
-
-/**
- * Thrown when a scope widening injection is detected.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ScopeWideningInjectionException extends RuntimeException
-{
-    private $sourceServiceId;
-    private $sourceScope;
-    private $destServiceId;
-    private $destScope;
-
-    public function __construct($sourceServiceId, $sourceScope, $destServiceId, $destScope, \Exception $previous = null)
-    {
-        parent::__construct(sprintf(
-            'Scope Widening Injection detected: The definition "%s" references the service "%s" which belongs to a narrower scope. '
-           .'Generally, it is safer to either move "%s" to scope "%s" or alternatively rely on the provider pattern by injecting the container itself, and requesting the service "%s" each time it is needed. '
-           .'In rare, special cases however that might not be necessary, then you can set the reference to strict=false to get rid of this error.',
-           $sourceServiceId,
-           $destServiceId,
-           $sourceServiceId,
-           $destScope,
-           $destServiceId
-        ), 0, $previous);
-
-        $this->sourceServiceId = $sourceServiceId;
-        $this->sourceScope = $sourceScope;
-        $this->destServiceId = $destServiceId;
-        $this->destScope = $destScope;
-    }
-
-    public function getSourceServiceId()
-    {
-        return $this->sourceServiceId;
-    }
-
-    public function getSourceScope()
-    {
-        return $this->sourceScope;
-    }
-
-    public function getDestServiceId()
-    {
-        return $this->destServiceId;
-    }
-
-    public function getDestScope()
-    {
-        return $this->destScope;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Exception/ServiceCircularReferenceException.php b/vendor/symfony/dependency-injection/Exception/ServiceCircularReferenceException.php
deleted file mode 100644
index 26e3fb3..0000000
--- a/vendor/symfony/dependency-injection/Exception/ServiceCircularReferenceException.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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\Exception;
-
-/**
- * This exception is thrown when a circular reference is detected.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ServiceCircularReferenceException extends RuntimeException
-{
-    private $serviceId;
-    private $path;
-
-    public function __construct($serviceId, array $path, \Exception $previous = null)
-    {
-        parent::__construct(sprintf('Circular reference detected for service "%s", path: "%s".', $serviceId, implode(' -> ', $path)), 0, $previous);
-
-        $this->serviceId = $serviceId;
-        $this->path = $path;
-    }
-
-    public function getServiceId()
-    {
-        return $this->serviceId;
-    }
-
-    public function getPath()
-    {
-        return $this->path;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Exception/ServiceNotFoundException.php b/vendor/symfony/dependency-injection/Exception/ServiceNotFoundException.php
deleted file mode 100644
index e65da50..0000000
--- a/vendor/symfony/dependency-injection/Exception/ServiceNotFoundException.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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\Exception;
-
-/**
- * This exception is thrown when a non-existent service is requested.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ServiceNotFoundException extends InvalidArgumentException
-{
-    private $id;
-    private $sourceId;
-
-    public function __construct($id, $sourceId = null, \Exception $previous = null, array $alternatives = array())
-    {
-        if (null === $sourceId) {
-            $msg = sprintf('You have requested a non-existent service "%s".', $id);
-        } else {
-            $msg = sprintf('The service "%s" has a dependency on a non-existent service "%s".', $sourceId, $id);
-        }
-
-        if ($alternatives) {
-            if (1 == count($alternatives)) {
-                $msg .= ' Did you mean this: "';
-            } else {
-                $msg .= ' Did you mean one of these: "';
-            }
-            $msg .= implode('", "', $alternatives).'"?';
-        }
-
-        parent::__construct($msg, 0, $previous);
-
-        $this->id = $id;
-        $this->sourceId = $sourceId;
-    }
-
-    public function getId()
-    {
-        return $this->id;
-    }
-
-    public function getSourceId()
-    {
-        return $this->sourceId;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/ExpressionLanguage.php b/vendor/symfony/dependency-injection/ExpressionLanguage.php
deleted file mode 100644
index acc97bc..0000000
--- a/vendor/symfony/dependency-injection/ExpressionLanguage.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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;
-
-use Symfony\Component\ExpressionLanguage\ExpressionLanguage as BaseExpressionLanguage;
-use Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface;
-
-/**
- * Adds some function to the default ExpressionLanguage.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @see ExpressionLanguageProvider
- */
-class ExpressionLanguage extends BaseExpressionLanguage
-{
-    public function __construct(ParserCacheInterface $cache = null, array $providers = array())
-    {
-        // prepend the default provider to let users override it easily
-        array_unshift($providers, new ExpressionLanguageProvider());
-
-        parent::__construct($cache, $providers);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/ExpressionLanguageProvider.php b/vendor/symfony/dependency-injection/ExpressionLanguageProvider.php
deleted file mode 100644
index ce6d695..0000000
--- a/vendor/symfony/dependency-injection/ExpressionLanguageProvider.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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;
-
-use Symfony\Component\ExpressionLanguage\ExpressionFunction;
-use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
-
-/**
- * Define some ExpressionLanguage functions.
- *
- * To get a service, use service('request').
- * To get a parameter, use parameter('kernel.debug').
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ExpressionLanguageProvider implements ExpressionFunctionProviderInterface
-{
-    public function getFunctions()
-    {
-        return array(
-            new ExpressionFunction('service', function ($arg) {
-                return sprintf('$this->get(%s)', $arg);
-            }, function (array $variables, $value) {
-                return $variables['container']->get($value);
-            }),
-
-            new ExpressionFunction('parameter', function ($arg) {
-                return sprintf('$this->getParameter(%s)', $arg);
-            }, function (array $variables, $value) {
-                return $variables['container']->getParameter($value);
-            }),
-        );
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Extension/ConfigurationExtensionInterface.php b/vendor/symfony/dependency-injection/Extension/ConfigurationExtensionInterface.php
deleted file mode 100644
index 705ba38..0000000
--- a/vendor/symfony/dependency-injection/Extension/ConfigurationExtensionInterface.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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\Extension;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\Config\Definition\ConfigurationInterface;
-
-/**
- * ConfigurationExtensionInterface is the interface implemented by container extension classes.
- *
- * @author Kevin Bond <kevinbond@gmail.com>
- */
-interface ConfigurationExtensionInterface
-{
-    /**
-     * Returns extension configuration.
-     *
-     * @param array            $config    An array of configuration values
-     * @param ContainerBuilder $container A ContainerBuilder instance
-     *
-     * @return ConfigurationInterface|null The configuration or null
-     */
-    public function getConfiguration(array $config, ContainerBuilder $container);
-}
diff --git a/vendor/symfony/dependency-injection/Extension/Extension.php b/vendor/symfony/dependency-injection/Extension/Extension.php
deleted file mode 100644
index f8e058b..0000000
--- a/vendor/symfony/dependency-injection/Extension/Extension.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?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\Extension;
-
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\DependencyInjection\Exception\BadMethodCallException;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\Config\Definition\Processor;
-use Symfony\Component\Config\Definition\ConfigurationInterface;
-
-/**
- * Provides useful features shared by many extensions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Extension implements ExtensionInterface, ConfigurationExtensionInterface
-{
-    /**
-     * Returns the base path for the XSD files.
-     *
-     * @return string The XSD base path
-     */
-    public function getXsdValidationBasePath()
-    {
-        return false;
-    }
-
-    /**
-     * Returns the namespace to be used for this extension (XML namespace).
-     *
-     * @return string The XML namespace
-     */
-    public function getNamespace()
-    {
-        return 'http://example.org/schema/dic/'.$this->getAlias();
-    }
-
-    /**
-     * Returns the recommended alias to use in XML.
-     *
-     * This alias is also the mandatory prefix to use when using YAML.
-     *
-     * This convention is to remove the "Extension" postfix from the class
-     * name and then lowercase and underscore the result. So:
-     *
-     *     AcmeHelloExtension
-     *
-     * becomes
-     *
-     *     acme_hello
-     *
-     * This can be overridden in a sub-class to specify the alias manually.
-     *
-     * @return string The alias
-     *
-     * @throws BadMethodCallException When the extension name does not follow conventions
-     */
-    public function getAlias()
-    {
-        $className = get_class($this);
-        if (substr($className, -9) != 'Extension') {
-            throw new BadMethodCallException('This extension does not follow the naming convention; you must overwrite the getAlias() method.');
-        }
-        $classBaseName = substr(strrchr($className, '\\'), 1, -9);
-
-        return Container::underscore($classBaseName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getConfiguration(array $config, ContainerBuilder $container)
-    {
-        $reflected = new \ReflectionClass($this);
-        $namespace = $reflected->getNamespaceName();
-
-        $class = $namespace.'\\Configuration';
-        if (class_exists($class)) {
-            $r = new \ReflectionClass($class);
-            $container->addResource(new FileResource($r->getFileName()));
-
-            if (!method_exists($class, '__construct')) {
-                $configuration = new $class();
-
-                return $configuration;
-            }
-        }
-    }
-
-    final protected function processConfiguration(ConfigurationInterface $configuration, array $configs)
-    {
-        $processor = new Processor();
-
-        return $processor->processConfiguration($configuration, $configs);
-    }
-
-    /**
-     * @param ContainerBuilder $container
-     * @param array            $config
-     *
-     * @return bool Whether the configuration is enabled
-     *
-     * @throws InvalidArgumentException When the config is not enableable
-     */
-    protected function isConfigEnabled(ContainerBuilder $container, array $config)
-    {
-        if (!array_key_exists('enabled', $config)) {
-            throw new InvalidArgumentException("The config array has no 'enabled' key.");
-        }
-
-        return (bool) $container->getParameterBag()->resolveValue($config['enabled']);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Extension/ExtensionInterface.php b/vendor/symfony/dependency-injection/Extension/ExtensionInterface.php
deleted file mode 100644
index 1fd1baa..0000000
--- a/vendor/symfony/dependency-injection/Extension/ExtensionInterface.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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\Extension;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * ExtensionInterface is the interface implemented by container extension classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ExtensionInterface
-{
-    /**
-     * Loads a specific configuration.
-     *
-     * @param array            $config    An array of configuration values
-     * @param ContainerBuilder $container A ContainerBuilder instance
-     *
-     * @throws \InvalidArgumentException When provided tag is not defined in this extension
-     */
-    public function load(array $config, ContainerBuilder $container);
-
-    /**
-     * Returns the namespace to be used for this extension (XML namespace).
-     *
-     * @return string The XML namespace
-     */
-    public function getNamespace();
-
-    /**
-     * Returns the base path for the XSD files.
-     *
-     * @return string The XSD base path
-     */
-    public function getXsdValidationBasePath();
-
-    /**
-     * Returns the recommended alias to use in XML.
-     *
-     * This alias is also the mandatory prefix to use when using YAML.
-     *
-     * @return string The alias
-     */
-    public function getAlias();
-}
diff --git a/vendor/symfony/dependency-injection/Extension/PrependExtensionInterface.php b/vendor/symfony/dependency-injection/Extension/PrependExtensionInterface.php
deleted file mode 100644
index c666bdb..0000000
--- a/vendor/symfony/dependency-injection/Extension/PrependExtensionInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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\Extension;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-interface PrependExtensionInterface
-{
-    /**
-     * Allow an extension to prepend the extension configurations.
-     *
-     * @param ContainerBuilder $container
-     */
-    public function prepend(ContainerBuilder $container);
-}
diff --git a/vendor/symfony/dependency-injection/IntrospectableContainerInterface.php b/vendor/symfony/dependency-injection/IntrospectableContainerInterface.php
deleted file mode 100644
index e630a1e..0000000
--- a/vendor/symfony/dependency-injection/IntrospectableContainerInterface.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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;
-
-/**
- * IntrospectableContainerInterface defines additional introspection functionality
- * for containers, allowing logic to be implemented based on a Container's state.
- *
- * @author Evan Villemez <evillemez@gmail.com>
- */
-interface IntrospectableContainerInterface extends ContainerInterface
-{
-    /**
-     * Check for whether or not a service has been initialized.
-     *
-     * @param string $id
-     *
-     * @return bool true if the service has been initialized, false otherwise
-     */
-    public function initialized($id);
-}
diff --git a/vendor/symfony/dependency-injection/LICENSE b/vendor/symfony/dependency-injection/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/dependency-injection/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/dependency-injection/LazyProxy/Instantiator/InstantiatorInterface.php b/vendor/symfony/dependency-injection/LazyProxy/Instantiator/InstantiatorInterface.php
deleted file mode 100644
index a8dd525..0000000
--- a/vendor/symfony/dependency-injection/LazyProxy/Instantiator/InstantiatorInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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\LazyProxy\Instantiator;
-
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Definition;
-
-/**
- * Lazy proxy instantiator, capable of instantiating a proxy given a container, the
- * service definitions and a callback that produces the real service instance.
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-interface InstantiatorInterface
-{
-    /**
-     * Instantiates a proxy object.
-     *
-     * @param ContainerInterface $container        the container from which the service is being requested
-     * @param Definition         $definition       the definition of the requested service
-     * @param string             $id               identifier of the requested service
-     * @param callable           $realInstantiator zero-argument callback that is capable of producing the real
-     *                                             service instance
-     *
-     * @return object
-     */
-    public function instantiateProxy(ContainerInterface $container, Definition $definition, $id, $realInstantiator);
-}
diff --git a/vendor/symfony/dependency-injection/LazyProxy/Instantiator/RealServiceInstantiator.php b/vendor/symfony/dependency-injection/LazyProxy/Instantiator/RealServiceInstantiator.php
deleted file mode 100644
index cad9320..0000000
--- a/vendor/symfony/dependency-injection/LazyProxy/Instantiator/RealServiceInstantiator.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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\LazyProxy\Instantiator;
-
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Definition;
-
-/**
- * {@inheritdoc}
- *
- * Noop proxy instantiator - simply produces the real service instead of a proxy instance.
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-class RealServiceInstantiator implements InstantiatorInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function instantiateProxy(ContainerInterface $container, Definition $definition, $id, $realInstantiator)
-    {
-        return call_user_func($realInstantiator);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/DumperInterface.php b/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/DumperInterface.php
deleted file mode 100644
index 878d965..0000000
--- a/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/DumperInterface.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?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\LazyProxy\PhpDumper;
-
-use Symfony\Component\DependencyInjection\Definition;
-
-/**
- * Lazy proxy dumper capable of generating the instantiation logic PHP code for proxied services.
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-interface DumperInterface
-{
-    /**
-     * Inspects whether the given definitions should produce proxy instantiation logic in the dumped container.
-     *
-     * @param Definition $definition
-     *
-     * @return bool
-     */
-    public function isProxyCandidate(Definition $definition);
-
-    /**
-     * Generates the code to be used to instantiate a proxy in the dumped factory code.
-     *
-     * @param Definition $definition
-     * @param string     $id         service identifier
-     *
-     * @return string
-     */
-    public function getProxyFactoryCode(Definition $definition, $id);
-
-    /**
-     * Generates the code for the lazy proxy.
-     *
-     * @param Definition $definition
-     *
-     * @return string
-     */
-    public function getProxyCode(Definition $definition);
-}
diff --git a/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/NullDumper.php b/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/NullDumper.php
deleted file mode 100644
index 30911d3..0000000
--- a/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/NullDumper.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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\LazyProxy\PhpDumper;
-
-use Symfony\Component\DependencyInjection\Definition;
-
-/**
- * Null dumper, negates any proxy code generation for any given service definition.
- *
- * @author Marco Pivetta <ocramius@gmail.com>
- */
-class NullDumper implements DumperInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function isProxyCandidate(Definition $definition)
-    {
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getProxyFactoryCode(Definition $definition, $id)
-    {
-        return '';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getProxyCode(Definition $definition)
-    {
-        return '';
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Loader/ClosureLoader.php b/vendor/symfony/dependency-injection/Loader/ClosureLoader.php
deleted file mode 100644
index a5b4e5a..0000000
--- a/vendor/symfony/dependency-injection/Loader/ClosureLoader.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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\DependencyInjection\ContainerBuilder;
-use Symfony\Component\Config\Loader\Loader;
-
-/**
- * ClosureLoader loads service definitions from a PHP closure.
- *
- * The Closure has access to the container as its first argument.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ClosureLoader extends Loader
-{
-    private $container;
-
-    /**
-     * Constructor.
-     *
-     * @param ContainerBuilder $container A ContainerBuilder instance
-     */
-    public function __construct(ContainerBuilder $container)
-    {
-        $this->container = $container;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function load($resource, $type = null)
-    {
-        call_user_func($resource, $this->container);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return $resource instanceof \Closure;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Loader/FileLoader.php b/vendor/symfony/dependency-injection/Loader/FileLoader.php
deleted file mode 100644
index d71eecf..0000000
--- a/vendor/symfony/dependency-injection/Loader/FileLoader.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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\DependencyInjection\ContainerBuilder;
-use Symfony\Component\Config\Loader\FileLoader as BaseFileLoader;
-use Symfony\Component\Config\FileLocatorInterface;
-
-/**
- * FileLoader is the abstract class used by all built-in loaders that are file based.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class FileLoader extends BaseFileLoader
-{
-    protected $container;
-
-    /**
-     * Constructor.
-     *
-     * @param ContainerBuilder     $container A ContainerBuilder instance
-     * @param FileLocatorInterface $locator   A FileLocator instance
-     */
-    public function __construct(ContainerBuilder $container, FileLocatorInterface $locator)
-    {
-        $this->container = $container;
-
-        parent::__construct($locator);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Loader/IniFileLoader.php b/vendor/symfony/dependency-injection/Loader/IniFileLoader.php
deleted file mode 100644
index 16ddf87..0000000
--- a/vendor/symfony/dependency-injection/Loader/IniFileLoader.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?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\FileResource;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-
-/**
- * IniFileLoader loads parameters from INI files.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class IniFileLoader extends FileLoader
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function load($resource, $type = null)
-    {
-        $path = $this->locator->locate($resource);
-
-        $this->container->addResource(new FileResource($path));
-
-        $result = parse_ini_file($path, true);
-        if (false === $result || array() === $result) {
-            throw new InvalidArgumentException(sprintf('The "%s" file is not valid.', $resource));
-        }
-
-        if (isset($result['parameters']) && is_array($result['parameters'])) {
-            foreach ($result['parameters'] as $key => $value) {
-                $this->container->setParameter($key, $value);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return is_string($resource) && 'ini' === pathinfo($resource, PATHINFO_EXTENSION);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Loader/PhpFileLoader.php b/vendor/symfony/dependency-injection/Loader/PhpFileLoader.php
deleted file mode 100644
index 08c1d9a..0000000
--- a/vendor/symfony/dependency-injection/Loader/PhpFileLoader.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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\FileResource;
-
-/**
- * PhpFileLoader loads service definitions from a PHP file.
- *
- * The PHP file is required and the $container variable can be
- * used within the file to change the container.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class PhpFileLoader extends FileLoader
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function load($resource, $type = null)
-    {
-        // the container and loader variables are exposed to the included file below
-        $container = $this->container;
-        $loader = $this;
-
-        $path = $this->locator->locate($resource);
-        $this->setCurrentDir(dirname($path));
-        $this->container->addResource(new FileResource($path));
-
-        include $path;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Loader/XmlFileLoader.php b/vendor/symfony/dependency-injection/Loader/XmlFileLoader.php
deleted file mode 100644
index ebe330b..0000000
--- a/vendor/symfony/dependency-injection/Loader/XmlFileLoader.php
+++ /dev/null
@@ -1,568 +0,0 @@
-<?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\FileResource;
-use Symfony\Component\Config\Util\XmlUtils;
-use Symfony\Component\DependencyInjection\DefinitionDecorator;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Alias;
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-use Symfony\Component\ExpressionLanguage\Expression;
-
-/**
- * XmlFileLoader loads XML files service definitions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class XmlFileLoader extends FileLoader
-{
-    const NS = 'http://symfony.com/schema/dic/services';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function load($resource, $type = null)
-    {
-        $path = $this->locator->locate($resource);
-
-        $xml = $this->parseFileToDOM($path);
-
-        $this->container->addResource(new FileResource($path));
-
-        // anonymous services
-        $this->processAnonymousServices($xml, $path);
-
-        // imports
-        $this->parseImports($xml, $path);
-
-        // parameters
-        $this->parseParameters($xml);
-
-        // extensions
-        $this->loadFromExtensions($xml);
-
-        // services
-        $this->parseDefinitions($xml, $path);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return is_string($resource) && 'xml' === pathinfo($resource, PATHINFO_EXTENSION);
-    }
-
-    /**
-     * Parses parameters.
-     *
-     * @param \DOMDocument $xml
-     */
-    private function parseParameters(\DOMDocument $xml)
-    {
-        if ($parameters = $this->getChildren($xml->documentElement, 'parameters')) {
-            $this->container->getParameterBag()->add($this->getArgumentsAsPhp($parameters[0], 'parameter'));
-        }
-    }
-
-    /**
-     * Parses imports.
-     *
-     * @param \DOMDocument $xml
-     * @param string       $file
-     */
-    private function parseImports(\DOMDocument $xml, $file)
-    {
-        $xpath = new \DOMXPath($xml);
-        $xpath->registerNamespace('container', self::NS);
-
-        if (false === $imports = $xpath->query('//container:imports/container:import')) {
-            return;
-        }
-
-        foreach ($imports as $import) {
-            $this->setCurrentDir(dirname($file));
-            $this->import($import->getAttribute('resource'), null, (bool) XmlUtils::phpize($import->getAttribute('ignore-errors')), $file);
-        }
-    }
-
-    /**
-     * Parses multiple definitions.
-     *
-     * @param \DOMDocument $xml
-     * @param string       $file
-     */
-    private function parseDefinitions(\DOMDocument $xml, $file)
-    {
-        $xpath = new \DOMXPath($xml);
-        $xpath->registerNamespace('container', self::NS);
-
-        if (false === $services = $xpath->query('//container:services/container:service')) {
-            return;
-        }
-
-        foreach ($services as $service) {
-            if (null !== $definition = $this->parseDefinition($service, $file)) {
-                $this->container->setDefinition((string) $service->getAttribute('id'), $definition);
-            }
-        }
-    }
-
-    /**
-     * Parses an individual Definition.
-     *
-     * @param \DOMElement $service
-     * @param string      $file
-     *
-     * @return Definition|null
-     */
-    private function parseDefinition(\DOMElement $service, $file)
-    {
-        if ($alias = $service->getAttribute('alias')) {
-            $public = true;
-            if ($publicAttr = $service->getAttribute('public')) {
-                $public = XmlUtils::phpize($publicAttr);
-            }
-            $this->container->setAlias((string) $service->getAttribute('id'), new Alias($alias, $public));
-
-            return;
-        }
-
-        if ($parent = $service->getAttribute('parent')) {
-            $definition = new DefinitionDecorator($parent);
-        } else {
-            $definition = new Definition();
-        }
-
-        foreach (array('class', 'scope', '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);
-                }
-                $method = 'set'.str_replace('-', '', $key);
-                $definition->$method(XmlUtils::phpize($value));
-            }
-        }
-
-        if ($value = $service->getAttribute('synchronized')) {
-            $triggerDeprecation = 'request' !== (string) $service->getAttribute('id');
-
-            if ($triggerDeprecation) {
-                @trigger_error(sprintf('The "synchronized" attribute of service "%s" in file "%s" is deprecated since version 2.7 and will be removed in 3.0.', (string) $service->getAttribute('id'), $file), E_USER_DEPRECATED);
-            }
-
-            $definition->setSynchronized(XmlUtils::phpize($value), $triggerDeprecation);
-        }
-
-        if ($files = $this->getChildren($service, 'file')) {
-            $definition->setFile($files[0]->nodeValue);
-        }
-
-        $definition->setArguments($this->getArgumentsAsPhp($service, 'argument'));
-        $definition->setProperties($this->getArgumentsAsPhp($service, 'property'));
-
-        if ($factories = $this->getChildren($service, 'factory')) {
-            $factory = $factories[0];
-            if ($function = $factory->getAttribute('function')) {
-                $definition->setFactory($function);
-            } else {
-                $factoryService = $this->getChildren($factory, 'service');
-
-                if (isset($factoryService[0])) {
-                    $class = $this->parseDefinition($factoryService[0], $file);
-                } elseif ($childService = $factory->getAttribute('service')) {
-                    $class = new Reference($childService, ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, false);
-                } else {
-                    $class = $factory->getAttribute('class');
-                }
-
-                $definition->setFactory(array($class, $factory->getAttribute('method')));
-            }
-        }
-
-        if ($configurators = $this->getChildren($service, 'configurator')) {
-            $configurator = $configurators[0];
-            if ($function = $configurator->getAttribute('function')) {
-                $definition->setConfigurator($function);
-            } else {
-                $configuratorService = $this->getChildren($configurator, 'service');
-
-                if (isset($configuratorService[0])) {
-                    $class = $this->parseDefinition($configuratorService[0], $file);
-                } elseif ($childService = $configurator->getAttribute('service')) {
-                    $class = new Reference($childService, ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, false);
-                } else {
-                    $class = $configurator->getAttribute('class');
-                }
-
-                $definition->setConfigurator(array($class, $configurator->getAttribute('method')));
-            }
-        }
-
-        foreach ($this->getChildren($service, 'call') as $call) {
-            $definition->addMethodCall($call->getAttribute('method'), $this->getArgumentsAsPhp($call, 'argument'));
-        }
-
-        foreach ($this->getChildren($service, 'tag') as $tag) {
-            $parameters = array();
-            foreach ($tag->attributes as $name => $node) {
-                if ('name' === $name) {
-                    continue;
-                }
-
-                if (false !== strpos($name, '-') && false === strpos($name, '_') && !array_key_exists($normalizedName = str_replace('-', '_', $name), $parameters)) {
-                    $parameters[$normalizedName] = XmlUtils::phpize($node->nodeValue);
-                }
-                // keep not normalized key for BC too
-                $parameters[$name] = XmlUtils::phpize($node->nodeValue);
-            }
-
-            $definition->addTag($tag->getAttribute('name'), $parameters);
-        }
-
-        if ($value = $service->getAttribute('decorates')) {
-            $renameId = $service->hasAttribute('decoration-inner-name') ? $service->getAttribute('decoration-inner-name') : null;
-            $definition->setDecoratedService($value, $renameId);
-        }
-
-        return $definition;
-    }
-
-    /**
-     * Parses a XML file to a \DOMDocument.
-     *
-     * @param string $file Path to a file
-     *
-     * @return \DOMDocument
-     *
-     * @throws InvalidArgumentException When loading of XML file returns error
-     */
-    private function parseFileToDOM($file)
-    {
-        try {
-            $dom = XmlUtils::loadFile($file, array($this, 'validateSchema'));
-        } catch (\InvalidArgumentException $e) {
-            throw new InvalidArgumentException(sprintf('Unable to parse file "%s".', $file), $e->getCode(), $e);
-        }
-
-        $this->validateExtensions($dom, $file);
-
-        return $dom;
-    }
-
-    /**
-     * Processes anonymous services.
-     *
-     * @param \DOMDocument $xml
-     * @param string       $file
-     */
-    private function processAnonymousServices(\DOMDocument $xml, $file)
-    {
-        $definitions = array();
-        $count = 0;
-
-        $xpath = new \DOMXPath($xml);
-        $xpath->registerNamespace('container', self::NS);
-
-        // anonymous services as arguments/properties
-        if (false !== $nodes = $xpath->query('//container:argument[@type="service"][not(@id)]|//container:property[@type="service"][not(@id)]')) {
-            foreach ($nodes as $node) {
-                // give it a unique name
-                $id = sprintf('%s_%d', hash('sha256', $file), ++$count);
-                $node->setAttribute('id', $id);
-
-                if ($services = $this->getChildren($node, 'service')) {
-                    $definitions[$id] = array($services[0], $file, false);
-                    $services[0]->setAttribute('id', $id);
-                }
-            }
-        }
-
-        // anonymous services "in the wild"
-        if (false !== $nodes = $xpath->query('//container:services/container:service[not(@id)]')) {
-            foreach ($nodes as $node) {
-                // give it a unique name
-                $id = sprintf('%s_%d', hash('sha256', $file), ++$count);
-                $node->setAttribute('id', $id);
-
-                if ($services = $this->getChildren($node, 'service')) {
-                    $definitions[$id] = array($node, $file, true);
-                    $services[0]->setAttribute('id', $id);
-                }
-            }
-        }
-
-        // resolve definitions
-        krsort($definitions);
-        foreach ($definitions as $id => $def) {
-            list($domElement, $file, $wild) = $def;
-
-            // anonymous services are always private
-            // we could not use the constant false here, because of XML parsing
-            $domElement->setAttribute('public', 'false');
-
-            if (null !== $definition = $this->parseDefinition($domElement, $file)) {
-                $this->container->setDefinition($id, $definition);
-            }
-
-            if (true === $wild) {
-                $tmpDomElement = new \DOMElement('_services', null, self::NS);
-                $domElement->parentNode->replaceChild($tmpDomElement, $domElement);
-                $tmpDomElement->setAttribute('id', $id);
-            } else {
-                $domElement->parentNode->removeChild($domElement);
-            }
-        }
-    }
-
-    /**
-     * Returns arguments as valid php types.
-     *
-     * @param \DOMElement $node
-     * @param string      $name
-     * @param bool        $lowercase
-     *
-     * @return mixed
-     */
-    private function getArgumentsAsPhp(\DOMElement $node, $name, $lowercase = true)
-    {
-        $arguments = array();
-        foreach ($this->getChildren($node, $name) as $arg) {
-            if ($arg->hasAttribute('name')) {
-                $arg->setAttribute('key', $arg->getAttribute('name'));
-            }
-
-            if (!$arg->hasAttribute('key')) {
-                $key = !$arguments ? 0 : max(array_keys($arguments)) + 1;
-            } else {
-                $key = $arg->getAttribute('key');
-            }
-
-            // parameter keys are case insensitive
-            if ('parameter' == $name && $lowercase) {
-                $key = strtolower($key);
-            }
-
-            // this is used by DefinitionDecorator to overwrite a specific
-            // argument of the parent definition
-            if ($arg->hasAttribute('index')) {
-                $key = 'index_'.$arg->getAttribute('index');
-            }
-
-            switch ($arg->getAttribute('type')) {
-                case 'service':
-                    $onInvalid = $arg->getAttribute('on-invalid');
-                    $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE;
-                    if ('ignore' == $onInvalid) {
-                        $invalidBehavior = ContainerInterface::IGNORE_ON_INVALID_REFERENCE;
-                    } elseif ('null' == $onInvalid) {
-                        $invalidBehavior = ContainerInterface::NULL_ON_INVALID_REFERENCE;
-                    }
-
-                    if ($strict = $arg->getAttribute('strict')) {
-                        $strict = XmlUtils::phpize($strict);
-                    } else {
-                        $strict = true;
-                    }
-
-                    $arguments[$key] = new Reference($arg->getAttribute('id'), $invalidBehavior, $strict);
-                    break;
-                case 'expression':
-                    $arguments[$key] = new Expression($arg->nodeValue);
-                    break;
-                case 'collection':
-                    $arguments[$key] = $this->getArgumentsAsPhp($arg, $name, false);
-                    break;
-                case 'string':
-                    $arguments[$key] = $arg->nodeValue;
-                    break;
-                case 'constant':
-                    $arguments[$key] = constant($arg->nodeValue);
-                    break;
-                default:
-                    $arguments[$key] = XmlUtils::phpize($arg->nodeValue);
-            }
-        }
-
-        return $arguments;
-    }
-
-    /**
-     * Get child elements by name.
-     *
-     * @param \DOMNode $node
-     * @param mixed    $name
-     *
-     * @return array
-     */
-    private function getChildren(\DOMNode $node, $name)
-    {
-        $children = array();
-        foreach ($node->childNodes as $child) {
-            if ($child instanceof \DOMElement && $child->localName === $name && $child->namespaceURI === self::NS) {
-                $children[] = $child;
-            }
-        }
-
-        return $children;
-    }
-
-    /**
-     * Validates a documents XML schema.
-     *
-     * @param \DOMDocument $dom
-     *
-     * @return bool
-     *
-     * @throws RuntimeException When extension references a non-existent XSD file
-     */
-    public function validateSchema(\DOMDocument $dom)
-    {
-        $schemaLocations = array('http://symfony.com/schema/dic/services' => str_replace('\\', '/', __DIR__.'/schema/dic/services/services-1.0.xsd'));
-
-        if ($element = $dom->documentElement->getAttributeNS('http://www.w3.org/2001/XMLSchema-instance', 'schemaLocation')) {
-            $items = preg_split('/\s+/', $element);
-            for ($i = 0, $nb = count($items); $i < $nb; $i += 2) {
-                if (!$this->container->hasExtension($items[$i])) {
-                    continue;
-                }
-
-                if (($extension = $this->container->getExtension($items[$i])) && false !== $extension->getXsdValidationBasePath()) {
-                    $path = str_replace($extension->getNamespace(), str_replace('\\', '/', $extension->getXsdValidationBasePath()).'/', $items[$i + 1]);
-
-                    if (!is_file($path)) {
-                        throw new RuntimeException(sprintf('Extension "%s" references a non-existent XSD file "%s"', get_class($extension), $path));
-                    }
-
-                    $schemaLocations[$items[$i]] = $path;
-                }
-            }
-        }
-
-        $tmpfiles = array();
-        $imports = '';
-        foreach ($schemaLocations as $namespace => $location) {
-            $parts = explode('/', $location);
-            if (0 === stripos($location, 'phar://')) {
-                $tmpfile = tempnam(sys_get_temp_dir(), 'sf2');
-                if ($tmpfile) {
-                    copy($location, $tmpfile);
-                    $tmpfiles[] = $tmpfile;
-                    $parts = explode('/', str_replace('\\', '/', $tmpfile));
-                }
-            }
-            $drive = '\\' === DIRECTORY_SEPARATOR ? array_shift($parts).'/' : '';
-            $location = 'file:///'.$drive.implode('/', array_map('rawurlencode', $parts));
-
-            $imports .= sprintf('  <xsd:import namespace="%s" schemaLocation="%s" />'."\n", $namespace, $location);
-        }
-
-        $source = <<<EOF
-<?xml version="1.0" encoding="utf-8" ?>
-<xsd:schema xmlns="http://symfony.com/schema"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    targetNamespace="http://symfony.com/schema"
-    elementFormDefault="qualified">
-
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
-$imports
-</xsd:schema>
-EOF
-        ;
-
-        $valid = @$dom->schemaValidateSource($source);
-
-        foreach ($tmpfiles as $tmpfile) {
-            @unlink($tmpfile);
-        }
-
-        return $valid;
-    }
-
-    /**
-     * Validates an extension.
-     *
-     * @param \DOMDocument $dom
-     * @param string       $file
-     *
-     * @throws InvalidArgumentException When no extension is found corresponding to a tag
-     */
-    private function validateExtensions(\DOMDocument $dom, $file)
-    {
-        foreach ($dom->documentElement->childNodes as $node) {
-            if (!$node instanceof \DOMElement || 'http://symfony.com/schema/dic/services' === $node->namespaceURI) {
-                continue;
-            }
-
-            // can it be handled by an extension?
-            if (!$this->container->hasExtension($node->namespaceURI)) {
-                $extensionNamespaces = array_filter(array_map(function ($ext) { return $ext->getNamespace(); }, $this->container->getExtensions()));
-                throw new InvalidArgumentException(sprintf(
-                    'There is no extension able to load the configuration for "%s" (in %s). Looked for namespace "%s", found %s',
-                    $node->tagName,
-                    $file,
-                    $node->namespaceURI,
-                    $extensionNamespaces ? sprintf('"%s"', implode('", "', $extensionNamespaces)) : 'none'
-                ));
-            }
-        }
-    }
-
-    /**
-     * Loads from an extension.
-     *
-     * @param \DOMDocument $xml
-     */
-    private function loadFromExtensions(\DOMDocument $xml)
-    {
-        foreach ($xml->documentElement->childNodes as $node) {
-            if (!$node instanceof \DOMElement || $node->namespaceURI === self::NS) {
-                continue;
-            }
-
-            $values = static::convertDomElementToArray($node);
-            if (!is_array($values)) {
-                $values = array();
-            }
-
-            $this->container->loadFromExtension($node->namespaceURI, $values);
-        }
-    }
-
-    /**
-     * Converts a \DomElement object to a PHP array.
-     *
-     * The following rules applies during the conversion:
-     *
-     *  * Each tag is converted to a key value or an array
-     *    if there is more than one "value"
-     *
-     *  * The content of a tag is set under a "value" key (<foo>bar</foo>)
-     *    if the tag also has some nested tags
-     *
-     *  * The attributes are converted to keys (<foo foo="bar"/>)
-     *
-     *  * The nested-tags are converted to keys (<foo><foo>bar</foo></foo>)
-     *
-     * @param \DomElement $element A \DomElement instance
-     *
-     * @return array A PHP array
-     */
-    public static function convertDomElementToArray(\DomElement $element)
-    {
-        return XmlUtils::convertDomElementToArray($element);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php b/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php
deleted file mode 100644
index 5b3fb46..0000000
--- a/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php
+++ /dev/null
@@ -1,428 +0,0 @@
-<?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\DependencyInjection\DefinitionDecorator;
-use Symfony\Component\DependencyInjection\Alias;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Yaml\Exception\ParseException;
-use Symfony\Component\Yaml\Parser as YamlParser;
-use Symfony\Component\ExpressionLanguage\Expression;
-
-/**
- * YamlFileLoader loads YAML files service definitions.
- *
- * The YAML format does not support anonymous services (cf. the XML loader).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class YamlFileLoader extends FileLoader
-{
-    private $yamlParser;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function load($resource, $type = null)
-    {
-        $path = $this->locator->locate($resource);
-
-        $content = $this->loadFile($path);
-
-        $this->container->addResource(new FileResource($path));
-
-        // empty file
-        if (null === $content) {
-            return;
-        }
-
-        // imports
-        $this->parseImports($content, $path);
-
-        // parameters
-        if (isset($content['parameters'])) {
-            if (!is_array($content['parameters'])) {
-                throw new InvalidArgumentException(sprintf('The "parameters" key should contain an array in %s. Check your YAML syntax.', $resource));
-            }
-
-            foreach ($content['parameters'] as $key => $value) {
-                $this->container->setParameter($key, $this->resolveServices($value));
-            }
-        }
-
-        // extensions
-        $this->loadFromExtensions($content);
-
-        // services
-        $this->parseDefinitions($content, $resource);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return is_string($resource) && in_array(pathinfo($resource, PATHINFO_EXTENSION), array('yml', 'yaml'), true);
-    }
-
-    /**
-     * Parses all imports.
-     *
-     * @param array  $content
-     * @param string $file
-     */
-    private function parseImports($content, $file)
-    {
-        if (!isset($content['imports'])) {
-            return;
-        }
-
-        if (!is_array($content['imports'])) {
-            throw new InvalidArgumentException(sprintf('The "imports" key should contain an array in %s. Check your YAML syntax.', $file));
-        }
-
-        foreach ($content['imports'] as $import) {
-            if (!is_array($import)) {
-                throw new InvalidArgumentException(sprintf('The values in the "imports" key should be arrays in %s. Check your YAML syntax.', $file));
-            }
-
-            $this->setCurrentDir(dirname($file));
-            $this->import($import['resource'], null, isset($import['ignore_errors']) ? (bool) $import['ignore_errors'] : false, $file);
-        }
-    }
-
-    /**
-     * Parses definitions.
-     *
-     * @param array  $content
-     * @param string $file
-     */
-    private function parseDefinitions($content, $file)
-    {
-        if (!isset($content['services'])) {
-            return;
-        }
-
-        if (!is_array($content['services'])) {
-            throw new InvalidArgumentException(sprintf('The "services" key should contain an array in %s. Check your YAML syntax.', $file));
-        }
-
-        foreach ($content['services'] as $id => $service) {
-            $this->parseDefinition($id, $service, $file);
-        }
-    }
-
-    /**
-     * Parses a definition.
-     *
-     * @param string $id
-     * @param array  $service
-     * @param string $file
-     *
-     * @throws InvalidArgumentException When tags are invalid
-     */
-    private function parseDefinition($id, $service, $file)
-    {
-        if (is_string($service) && 0 === strpos($service, '@')) {
-            $this->container->setAlias($id, substr($service, 1));
-
-            return;
-        }
-
-        if (!is_array($service)) {
-            throw new InvalidArgumentException(sprintf('A service definition must be an array or a string starting with "@" but %s found for service "%s" in %s. Check your YAML syntax.', gettype($service), $id, $file));
-        }
-
-        if (isset($service['alias'])) {
-            $public = !array_key_exists('public', $service) || (bool) $service['public'];
-            $this->container->setAlias($id, new Alias($service['alias'], $public));
-
-            return;
-        }
-
-        if (isset($service['parent'])) {
-            $definition = new DefinitionDecorator($service['parent']);
-        } else {
-            $definition = new Definition();
-        }
-
-        if (isset($service['class'])) {
-            $definition->setClass($service['class']);
-        }
-
-        if (isset($service['scope'])) {
-            $definition->setScope($service['scope']);
-        }
-
-        if (isset($service['synthetic'])) {
-            $definition->setSynthetic($service['synthetic']);
-        }
-
-        if (isset($service['synchronized'])) {
-            @trigger_error(sprintf('The "synchronized" key of service "%s" in file "%s" is deprecated since version 2.7 and will be removed in 3.0.', $id, $file), E_USER_DEPRECATED);
-            $definition->setSynchronized($service['synchronized'], 'request' !== $id);
-        }
-
-        if (isset($service['lazy'])) {
-            $definition->setLazy($service['lazy']);
-        }
-
-        if (isset($service['public'])) {
-            $definition->setPublic($service['public']);
-        }
-
-        if (isset($service['abstract'])) {
-            $definition->setAbstract($service['abstract']);
-        }
-
-        if (isset($service['factory'])) {
-            if (is_string($service['factory'])) {
-                if (strpos($service['factory'], ':') !== false && strpos($service['factory'], '::') === false) {
-                    $parts = explode(':', $service['factory']);
-                    $definition->setFactory(array($this->resolveServices('@'.$parts[0]), $parts[1]));
-                } else {
-                    $definition->setFactory($service['factory']);
-                }
-            } else {
-                $definition->setFactory(array($this->resolveServices($service['factory'][0]), $service['factory'][1]));
-            }
-        }
-
-        if (isset($service['factory_class'])) {
-            @trigger_error(sprintf('The "factory_class" key of service "%s" in file "%s" is deprecated since version 2.6 and will be removed in 3.0. Use "factory" instead.', $id, $file), E_USER_DEPRECATED);
-            $definition->setFactoryClass($service['factory_class']);
-        }
-
-        if (isset($service['factory_method'])) {
-            @trigger_error(sprintf('The "factory_method" key of service "%s" in file "%s" is deprecated since version 2.6 and will be removed in 3.0. Use "factory" instead.', $id, $file), E_USER_DEPRECATED);
-            $definition->setFactoryMethod($service['factory_method']);
-        }
-
-        if (isset($service['factory_service'])) {
-            @trigger_error(sprintf('The "factory_service" key of service "%s" in file "%s" is deprecated since version 2.6 and will be removed in 3.0. Use "factory" instead.', $id, $file), E_USER_DEPRECATED);
-            $definition->setFactoryService($service['factory_service']);
-        }
-
-        if (isset($service['file'])) {
-            $definition->setFile($service['file']);
-        }
-
-        if (isset($service['arguments'])) {
-            $definition->setArguments($this->resolveServices($service['arguments']));
-        }
-
-        if (isset($service['properties'])) {
-            $definition->setProperties($this->resolveServices($service['properties']));
-        }
-
-        if (isset($service['configurator'])) {
-            if (is_string($service['configurator'])) {
-                $definition->setConfigurator($service['configurator']);
-            } else {
-                $definition->setConfigurator(array($this->resolveServices($service['configurator'][0]), $service['configurator'][1]));
-            }
-        }
-
-        if (isset($service['calls'])) {
-            if (!is_array($service['calls'])) {
-                throw new InvalidArgumentException(sprintf('Parameter "calls" must be an array for service "%s" in %s. Check your YAML syntax.', $id, $file));
-            }
-
-            foreach ($service['calls'] as $call) {
-                if (isset($call['method'])) {
-                    $method = $call['method'];
-                    $args = isset($call['arguments']) ? $this->resolveServices($call['arguments']) : array();
-                } else {
-                    $method = $call[0];
-                    $args = isset($call[1]) ? $this->resolveServices($call[1]) : array();
-                }
-
-                $definition->addMethodCall($method, $args);
-            }
-        }
-
-        if (isset($service['tags'])) {
-            if (!is_array($service['tags'])) {
-                throw new InvalidArgumentException(sprintf('Parameter "tags" must be an array for service "%s" in %s. Check your YAML syntax.', $id, $file));
-            }
-
-            foreach ($service['tags'] as $tag) {
-                if (!is_array($tag)) {
-                    throw new InvalidArgumentException(sprintf('A "tags" entry must be an array for service "%s" in %s. Check your YAML syntax.', $id, $file));
-                }
-
-                if (!isset($tag['name'])) {
-                    throw new InvalidArgumentException(sprintf('A "tags" entry is missing a "name" key for service "%s" in %s.', $id, $file));
-                }
-
-                $name = $tag['name'];
-                unset($tag['name']);
-
-                foreach ($tag as $attribute => $value) {
-                    if (!is_scalar($value) && null !== $value) {
-                        throw new InvalidArgumentException(sprintf('A "tags" attribute must be of a scalar-type for service "%s", tag "%s", attribute "%s" in %s. Check your YAML syntax.', $id, $name, $attribute, $file));
-                    }
-                }
-
-                $definition->addTag($name, $tag);
-            }
-        }
-
-        if (isset($service['decorates'])) {
-            $renameId = isset($service['decoration_inner_name']) ? $service['decoration_inner_name'] : null;
-            $definition->setDecoratedService($service['decorates'], $renameId);
-        }
-
-        $this->container->setDefinition($id, $definition);
-    }
-
-    /**
-     * Loads a YAML file.
-     *
-     * @param string $file
-     *
-     * @return array The file content
-     *
-     * @throws InvalidArgumentException when the given file is not a local file or when it does not exist
-     */
-    protected function loadFile($file)
-    {
-        if (!class_exists('Symfony\Component\Yaml\Parser')) {
-            throw new RuntimeException('Unable to load YAML config files as the Symfony Yaml Component is not installed.');
-        }
-
-        if (!stream_is_local($file)) {
-            throw new InvalidArgumentException(sprintf('This is not a local file "%s".', $file));
-        }
-
-        if (!file_exists($file)) {
-            throw new InvalidArgumentException(sprintf('The service file "%s" is not valid.', $file));
-        }
-
-        if (null === $this->yamlParser) {
-            $this->yamlParser = new YamlParser();
-        }
-
-        try {
-            $configuration = $this->yamlParser->parse(file_get_contents($file));
-        } catch (ParseException $e) {
-            throw new InvalidArgumentException(sprintf('The file "%s" does not contain valid YAML.', $file), 0, $e);
-        }
-
-        return $this->validate($configuration, $file);
-    }
-
-    /**
-     * Validates a YAML file.
-     *
-     * @param mixed  $content
-     * @param string $file
-     *
-     * @return array
-     *
-     * @throws InvalidArgumentException When service file is not valid
-     */
-    private function validate($content, $file)
-    {
-        if (null === $content) {
-            return $content;
-        }
-
-        if (!is_array($content)) {
-            throw new InvalidArgumentException(sprintf('The service file "%s" is not valid. It should contain an array. Check your YAML syntax.', $file));
-        }
-
-        foreach ($content as $namespace => $data) {
-            if (in_array($namespace, array('imports', 'parameters', 'services'))) {
-                continue;
-            }
-
-            if (!$this->container->hasExtension($namespace)) {
-                $extensionNamespaces = array_filter(array_map(function ($ext) { return $ext->getAlias(); }, $this->container->getExtensions()));
-                throw new InvalidArgumentException(sprintf(
-                    'There is no extension able to load the configuration for "%s" (in %s). Looked for namespace "%s", found %s',
-                    $namespace,
-                    $file,
-                    $namespace,
-                    $extensionNamespaces ? sprintf('"%s"', implode('", "', $extensionNamespaces)) : 'none'
-                ));
-            }
-        }
-
-        return $content;
-    }
-
-    /**
-     * Resolves services.
-     *
-     * @param string|array $value
-     *
-     * @return array|string|Reference
-     */
-    private function resolveServices($value)
-    {
-        if (is_array($value)) {
-            $value = array_map(array($this, 'resolveServices'), $value);
-        } elseif (is_string($value) &&  0 === strpos($value, '@=')) {
-            return new Expression(substr($value, 2));
-        } elseif (is_string($value) &&  0 === strpos($value, '@')) {
-            if (0 === strpos($value, '@@')) {
-                $value = substr($value, 1);
-                $invalidBehavior = null;
-            } elseif (0 === strpos($value, '@?')) {
-                $value = substr($value, 2);
-                $invalidBehavior = ContainerInterface::IGNORE_ON_INVALID_REFERENCE;
-            } else {
-                $value = substr($value, 1);
-                $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE;
-            }
-
-            if ('=' === substr($value, -1)) {
-                $value = substr($value, 0, -1);
-                $strict = false;
-            } else {
-                $strict = true;
-            }
-
-            if (null !== $invalidBehavior) {
-                $value = new Reference($value, $invalidBehavior, $strict);
-            }
-        }
-
-        return $value;
-    }
-
-    /**
-     * Loads from Extensions.
-     *
-     * @param array $content
-     */
-    private function loadFromExtensions($content)
-    {
-        foreach ($content as $namespace => $values) {
-            if (in_array($namespace, array('imports', 'parameters', 'services'))) {
-                continue;
-            }
-
-            if (!is_array($values)) {
-                $values = array();
-            }
-
-            $this->container->loadFromExtension($namespace, $values);
-        }
-    }
-}
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
deleted file mode 100644
index ac2cba7..0000000
--- a/vendor/symfony/dependency-injection/Loader/schema/dic/services/services-1.0.xsd
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<xsd:schema xmlns="http://symfony.com/schema/dic/services"
-     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-     targetNamespace="http://symfony.com/schema/dic/services"
-     elementFormDefault="qualified">
-
-  <xsd:annotation>
-    <xsd:documentation><![CDATA[
-      Symfony XML Services Schema, version 1.0
-      Authors: Fabien Potencier
-
-      This defines a way to describe PHP objects (services) and their
-      dependencies.
-    ]]></xsd:documentation>
-  </xsd:annotation>
-
-  <xsd:element name="container" type="container" />
-
-  <xsd:complexType name="container">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        The root element of a service file.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="imports" type="imports" minOccurs="0" maxOccurs="1" />
-      <xsd:element name="parameters" type="parameters" minOccurs="0" maxOccurs="1" />
-      <xsd:element name="services" type="services" minOccurs="0" maxOccurs="1" />
-      <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="services">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Enclosing element for the definition of all services
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:choice minOccurs="1" maxOccurs="unbounded">
-      <xsd:element name="service" type="service" />
-    </xsd:choice>
-  </xsd:complexType>
-
-  <xsd:complexType name="imports">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Enclosing element for the import elements
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:choice minOccurs="1" maxOccurs="unbounded">
-      <xsd:element name="import" type="import" />
-    </xsd:choice>
-  </xsd:complexType>
-
-  <xsd:complexType name="import">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Import an external resource defining other services or parameters
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:attribute name="resource" type="xsd:string" use="required" />
-    <xsd:attribute name="ignore-errors" type="boolean" />
-  </xsd:complexType>
-
-  <xsd:complexType name="callable">
-    <xsd:choice minOccurs="0" maxOccurs="1">
-      <xsd:element name="service" type="service" minOccurs="0" maxOccurs="1" />
-    </xsd:choice>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="service" type="xsd:string" />
-    <xsd:attribute name="class" type="xsd:string" />
-    <xsd:attribute name="method" type="xsd:string" />
-    <xsd:attribute name="function" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="service">
-    <xsd:choice maxOccurs="unbounded">
-      <xsd:element name="file" type="xsd:string" minOccurs="0" maxOccurs="1" />
-      <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="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:choice>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="class" type="xsd:string" />
-    <xsd:attribute name="scope" type="xsd:string" />
-    <xsd:attribute name="public" type="boolean" />
-    <xsd:attribute name="synthetic" type="boolean" />
-    <xsd:attribute name="synchronized" type="boolean" />
-    <xsd:attribute name="lazy" type="boolean" />
-    <xsd:attribute name="abstract" type="boolean" />
-    <xsd:attribute name="factory-class" type="xsd:string" />
-    <xsd:attribute name="factory-method" type="xsd:string" />
-    <xsd:attribute name="factory-service" type="xsd:string" />
-    <xsd:attribute name="alias" type="xsd:string" />
-    <xsd:attribute name="parent" type="xsd:string" />
-    <xsd:attribute name="decorates" type="xsd:string" />
-    <xsd:attribute name="decoration-inner-name" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="tag">
-    <xsd:attribute name="name" type="xsd:string" />
-    <xsd:anyAttribute namespace="##any" processContents="lax" />
-  </xsd:complexType>
-
-  <xsd:complexType name="parameters">
-    <xsd:choice minOccurs="1" maxOccurs="unbounded">
-      <xsd:element name="parameter" type="parameter" />
-    </xsd:choice>
-    <xsd:attribute name="type" type="parameter_type" />
-    <xsd:attribute name="key" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="parameter" mixed="true">
-    <xsd:choice minOccurs="0" maxOccurs="unbounded">
-      <xsd:element name="parameter" type="parameter" />
-    </xsd:choice>
-    <xsd:attribute name="type" type="parameter_type" />
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="key" type="xsd:string" />
-    <xsd:attribute name="on-invalid" type="invalid_sequence" />
-  </xsd:complexType>
-
-  <xsd:complexType name="property" mixed="true">
-    <xsd:choice minOccurs="0" maxOccurs="1">
-      <xsd:element name="property" type="property" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="service" type="service" />
-    </xsd:choice>
-    <xsd:attribute name="type" type="argument_type" />
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="key" type="xsd:string" />
-    <xsd:attribute name="name" type="xsd:string" />
-    <xsd:attribute name="on-invalid" type="xsd:string" />
-    <xsd:attribute name="strict" type="boolean" />
-  </xsd:complexType>
-
-  <xsd:complexType name="argument" mixed="true">
-    <xsd:choice maxOccurs="unbounded">
-      <xsd:element name="argument" type="argument" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="service" type="service" />
-    </xsd:choice>
-    <xsd:attribute name="type" type="argument_type" />
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="key" type="xsd:string" />
-    <xsd:attribute name="index" type="xsd:integer" />
-    <xsd:attribute name="on-invalid" type="xsd:string" />
-    <xsd:attribute name="strict" type="boolean" />
-  </xsd:complexType>
-
-  <xsd:complexType name="call" mixed="true">
-    <xsd:choice maxOccurs="unbounded">
-      <xsd:element name="argument" type="argument" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="service" type="service" />
-    </xsd:choice>
-    <xsd:attribute name="method" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:simpleType name="parameter_type">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="collection" />
-      <xsd:enumeration value="string" />
-      <xsd:enumeration value="constant" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="argument_type">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="collection" />
-      <xsd:enumeration value="service" />
-      <xsd:enumeration value="expression" />
-      <xsd:enumeration value="string" />
-      <xsd:enumeration value="constant" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="invalid_sequence">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="null" />
-      <xsd:enumeration value="ignore" />
-      <xsd:enumeration value="exception" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="boolean">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="(%.+%|true|false)" />
-    </xsd:restriction>
-  </xsd:simpleType>
-</xsd:schema>
diff --git a/vendor/symfony/dependency-injection/Parameter.php b/vendor/symfony/dependency-injection/Parameter.php
deleted file mode 100644
index 5431ed8..0000000
--- a/vendor/symfony/dependency-injection/Parameter.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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;
-
-/**
- * Parameter represents a parameter reference.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Parameter
-{
-    private $id;
-
-    /**
-     * Constructor.
-     *
-     * @param string $id The parameter key
-     */
-    public function __construct($id)
-    {
-        $this->id = $id;
-    }
-
-    /**
-     * __toString.
-     *
-     * @return string The parameter key
-     */
-    public function __toString()
-    {
-        return (string) $this->id;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/ParameterBag/FrozenParameterBag.php b/vendor/symfony/dependency-injection/ParameterBag/FrozenParameterBag.php
deleted file mode 100644
index d9fe9ec..0000000
--- a/vendor/symfony/dependency-injection/ParameterBag/FrozenParameterBag.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?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\ParameterBag;
-
-use Symfony\Component\DependencyInjection\Exception\LogicException;
-
-/**
- * Holds read-only parameters.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FrozenParameterBag extends ParameterBag
-{
-    /**
-     * Constructor.
-     *
-     * For performance reasons, the constructor assumes that
-     * all keys are already lowercased.
-     *
-     * This is always the case when used internally.
-     *
-     * @param array $parameters An array of parameters
-     */
-    public function __construct(array $parameters = array())
-    {
-        $this->parameters = $parameters;
-        $this->resolved = true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        throw new LogicException('Impossible to call clear() on a frozen ParameterBag.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add(array $parameters)
-    {
-        throw new LogicException('Impossible to call add() on a frozen ParameterBag.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($name, $value)
-    {
-        throw new LogicException('Impossible to call set() on a frozen ParameterBag.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($name)
-    {
-        throw new LogicException('Impossible to call remove() on a frozen ParameterBag.');
-    }
-}
diff --git a/vendor/symfony/dependency-injection/ParameterBag/ParameterBag.php b/vendor/symfony/dependency-injection/ParameterBag/ParameterBag.php
deleted file mode 100644
index 64a7789..0000000
--- a/vendor/symfony/dependency-injection/ParameterBag/ParameterBag.php
+++ /dev/null
@@ -1,286 +0,0 @@
-<?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\ParameterBag;
-
-use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException;
-use Symfony\Component\DependencyInjection\Exception\ParameterCircularReferenceException;
-use Symfony\Component\DependencyInjection\Exception\RuntimeException;
-
-/**
- * Holds parameters.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ParameterBag implements ParameterBagInterface
-{
-    protected $parameters = array();
-    protected $resolved = false;
-
-    /**
-     * Constructor.
-     *
-     * @param array $parameters An array of parameters
-     */
-    public function __construct(array $parameters = array())
-    {
-        $this->add($parameters);
-    }
-
-    /**
-     * Clears all parameters.
-     */
-    public function clear()
-    {
-        $this->parameters = array();
-    }
-
-    /**
-     * Adds parameters to the service container parameters.
-     *
-     * @param array $parameters An array of parameters
-     */
-    public function add(array $parameters)
-    {
-        foreach ($parameters as $key => $value) {
-            $this->parameters[strtolower($key)] = $value;
-        }
-    }
-
-    /**
-     * Gets the service container parameters.
-     *
-     * @return array An array of parameters
-     */
-    public function all()
-    {
-        return $this->parameters;
-    }
-
-    /**
-     * Gets a service container parameter.
-     *
-     * @param string $name The parameter name
-     *
-     * @return mixed The parameter value
-     *
-     * @throws ParameterNotFoundException if the parameter is not defined
-     */
-    public function get($name)
-    {
-        $name = strtolower($name);
-
-        if (!array_key_exists($name, $this->parameters)) {
-            if (!$name) {
-                throw new ParameterNotFoundException($name);
-            }
-
-            $alternatives = array();
-            foreach ($this->parameters as $key => $parameterValue) {
-                $lev = levenshtein($name, $key);
-                if ($lev <= strlen($name) / 3 || false !== strpos($key, $name)) {
-                    $alternatives[] = $key;
-                }
-            }
-
-            throw new ParameterNotFoundException($name, null, null, null, $alternatives);
-        }
-
-        return $this->parameters[$name];
-    }
-
-    /**
-     * Sets a service container parameter.
-     *
-     * @param string $name  The parameter name
-     * @param mixed  $value The parameter value
-     */
-    public function set($name, $value)
-    {
-        $this->parameters[strtolower($name)] = $value;
-    }
-
-    /**
-     * Returns true if a parameter name is defined.
-     *
-     * @param string $name The parameter name
-     *
-     * @return bool true if the parameter name is defined, false otherwise
-     */
-    public function has($name)
-    {
-        return array_key_exists(strtolower($name), $this->parameters);
-    }
-
-    /**
-     * Removes a parameter.
-     *
-     * @param string $name The parameter name
-     */
-    public function remove($name)
-    {
-        unset($this->parameters[strtolower($name)]);
-    }
-
-    /**
-     * Replaces parameter placeholders (%name%) by their values for all parameters.
-     */
-    public function resolve()
-    {
-        if ($this->resolved) {
-            return;
-        }
-
-        $parameters = array();
-        foreach ($this->parameters as $key => $value) {
-            try {
-                $value = $this->resolveValue($value);
-                $parameters[$key] = $this->unescapeValue($value);
-            } catch (ParameterNotFoundException $e) {
-                $e->setSourceKey($key);
-
-                throw $e;
-            }
-        }
-
-        $this->parameters = $parameters;
-        $this->resolved = true;
-    }
-
-    /**
-     * Replaces parameter placeholders (%name%) by their values.
-     *
-     * @param mixed $value     A value
-     * @param array $resolving An array of keys that are being resolved (used internally to detect circular references)
-     *
-     * @return mixed The resolved value
-     *
-     * @throws ParameterNotFoundException          if a placeholder references a parameter that does not exist
-     * @throws ParameterCircularReferenceException if a circular reference if detected
-     * @throws RuntimeException                    when a given parameter has a type problem.
-     */
-    public function resolveValue($value, array $resolving = array())
-    {
-        if (is_array($value)) {
-            $args = array();
-            foreach ($value as $k => $v) {
-                $args[$this->resolveValue($k, $resolving)] = $this->resolveValue($v, $resolving);
-            }
-
-            return $args;
-        }
-
-        if (!is_string($value)) {
-            return $value;
-        }
-
-        return $this->resolveString($value, $resolving);
-    }
-
-    /**
-     * Resolves parameters inside a string.
-     *
-     * @param string $value     The string to resolve
-     * @param array  $resolving An array of keys that are being resolved (used internally to detect circular references)
-     *
-     * @return string The resolved string
-     *
-     * @throws ParameterNotFoundException          if a placeholder references a parameter that does not exist
-     * @throws ParameterCircularReferenceException if a circular reference if detected
-     * @throws RuntimeException                    when a given parameter has a type problem.
-     */
-    public function resolveString($value, array $resolving = array())
-    {
-        // we do this to deal with non string values (Boolean, integer, ...)
-        // as the preg_replace_callback throw an exception when trying
-        // a non-string in a parameter value
-        if (preg_match('/^%([^%\s]+)%$/', $value, $match)) {
-            $key = strtolower($match[1]);
-
-            if (isset($resolving[$key])) {
-                throw new ParameterCircularReferenceException(array_keys($resolving));
-            }
-
-            $resolving[$key] = true;
-
-            return $this->resolved ? $this->get($key) : $this->resolveValue($this->get($key), $resolving);
-        }
-
-        $self = $this;
-
-        return preg_replace_callback('/%%|%([^%\s]+)%/', function ($match) use ($self, $resolving, $value) {
-            // skip %%
-            if (!isset($match[1])) {
-                return '%%';
-            }
-
-            $key = strtolower($match[1]);
-            if (isset($resolving[$key])) {
-                throw new ParameterCircularReferenceException(array_keys($resolving));
-            }
-
-            $resolved = $self->get($key);
-
-            if (!is_string($resolved) && !is_numeric($resolved)) {
-                throw new RuntimeException(sprintf('A string value must be composed of strings and/or numbers, but found parameter "%s" of type %s inside string value "%s".', $key, gettype($resolved), $value));
-            }
-
-            $resolved = (string) $resolved;
-            $resolving[$key] = true;
-
-            return $self->isResolved() ? $resolved : $self->resolveString($resolved, $resolving);
-        }, $value);
-    }
-
-    public function isResolved()
-    {
-        return $this->resolved;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function escapeValue($value)
-    {
-        if (is_string($value)) {
-            return str_replace('%', '%%', $value);
-        }
-
-        if (is_array($value)) {
-            $result = array();
-            foreach ($value as $k => $v) {
-                $result[$k] = $this->escapeValue($v);
-            }
-
-            return $result;
-        }
-
-        return $value;
-    }
-
-    public function unescapeValue($value)
-    {
-        if (is_string($value)) {
-            return str_replace('%%', '%', $value);
-        }
-
-        if (is_array($value)) {
-            $result = array();
-            foreach ($value as $k => $v) {
-                $result[$k] = $this->unescapeValue($v);
-            }
-
-            return $result;
-        }
-
-        return $value;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php b/vendor/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php
deleted file mode 100644
index 3291b37..0000000
--- a/vendor/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?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\ParameterBag;
-
-use Symfony\Component\DependencyInjection\Exception\LogicException;
-use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException;
-
-/**
- * ParameterBagInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ParameterBagInterface
-{
-    /**
-     * Clears all parameters.
-     *
-     * @throws LogicException if the ParameterBagInterface can not be cleared
-     */
-    public function clear();
-
-    /**
-     * Adds parameters to the service container parameters.
-     *
-     * @param array $parameters An array of parameters
-     *
-     * @throws LogicException if the parameter can not be added
-     */
-    public function add(array $parameters);
-
-    /**
-     * Gets the service container parameters.
-     *
-     * @return array An array of parameters
-     */
-    public function all();
-
-    /**
-     * Gets a service container parameter.
-     *
-     * @param string $name The parameter name
-     *
-     * @return mixed The parameter value
-     *
-     * @throws ParameterNotFoundException if the parameter is not defined
-     */
-    public function get($name);
-
-    /**
-     * Sets a service container parameter.
-     *
-     * @param string $name  The parameter name
-     * @param mixed  $value The parameter value
-     *
-     * @throws LogicException if the parameter can not be set
-     */
-    public function set($name, $value);
-
-    /**
-     * Returns true if a parameter name is defined.
-     *
-     * @param string $name The parameter name
-     *
-     * @return bool true if the parameter name is defined, false otherwise
-     */
-    public function has($name);
-
-    /**
-     * Replaces parameter placeholders (%name%) by their values for all parameters.
-     */
-    public function resolve();
-
-    /**
-     * Replaces parameter placeholders (%name%) by their values.
-     *
-     * @param mixed $value A value
-     *
-     * @throws ParameterNotFoundException if a placeholder references a parameter that does not exist
-     */
-    public function resolveValue($value);
-
-    /**
-     * Escape parameter placeholders %.
-     *
-     * @param mixed $value
-     *
-     * @return mixed
-     */
-    public function escapeValue($value);
-
-    /**
-     * Unescape parameter placeholders %.
-     *
-     * @param mixed $value
-     *
-     * @return mixed
-     */
-    public function unescapeValue($value);
-}
diff --git a/vendor/symfony/dependency-injection/README.md b/vendor/symfony/dependency-injection/README.md
deleted file mode 100644
index 19a1142..0000000
--- a/vendor/symfony/dependency-injection/README.md
+++ /dev/null
@@ -1,80 +0,0 @@
-DependencyInjection Component
-=============================
-
-DependencyInjection manages your services via a robust and flexible Dependency
-Injection Container.
-
-Here is a simple example that shows how to register services and parameters:
-
-```php
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-
-$sc = new ContainerBuilder();
-$sc
-    ->register('foo', '%foo.class%')
-    ->addArgument(new Reference('bar'))
-;
-$sc->setParameter('foo.class', 'Foo');
-
-$sc->get('foo');
-```
-
-Method Calls (Setter Injection):
-
-```php
-$sc = new ContainerBuilder();
-
-$sc
-    ->register('bar', '%bar.class%')
-    ->addMethodCall('setFoo', array(new Reference('foo')))
-;
-$sc->setParameter('bar.class', 'Bar');
-
-$sc->get('bar');
-```
-
-Factory Class:
-
-If your service is retrieved by calling a static method:
-
-```php
-$sc = new ContainerBuilder();
-
-$sc
-    ->register('bar', '%bar.class%')
-    ->setFactory(array('%bar.class%', 'getInstance'))
-    ->addArgument('Aarrg!!!')
-;
-$sc->setParameter('bar.class', 'Bar');
-
-$sc->get('bar');
-```
-
-File Include:
-
-For some services, especially those that are difficult or impossible to
-autoload, you may need the container to include a file before
-instantiating your class.
-
-```php
-$sc = new ContainerBuilder();
-
-$sc
-    ->register('bar', '%bar.class%')
-    ->setFile('/path/to/file')
-    ->addArgument('Aarrg!!!')
-;
-$sc->setParameter('bar.class', 'Bar');
-
-$sc->get('bar');
-```
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/DependencyInjection/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/dependency-injection/Reference.php b/vendor/symfony/dependency-injection/Reference.php
deleted file mode 100644
index 6a48249..0000000
--- a/vendor/symfony/dependency-injection/Reference.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?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;
-
-/**
- * Reference represents a service reference.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Reference
-{
-    private $id;
-    private $invalidBehavior;
-    private $strict;
-
-    /**
-     * Constructor.
-     *
-     * @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
-     *
-     * @see Container
-     */
-    public function __construct($id, $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, $strict = true)
-    {
-        $this->id = strtolower($id);
-        $this->invalidBehavior = $invalidBehavior;
-        $this->strict = $strict;
-    }
-
-    /**
-     * __toString.
-     *
-     * @return string The service identifier
-     */
-    public function __toString()
-    {
-        return $this->id;
-    }
-
-    /**
-     * Returns the behavior to be used when the service does not exist.
-     *
-     * @return int
-     */
-    public function getInvalidBehavior()
-    {
-        return $this->invalidBehavior;
-    }
-
-    /**
-     * Returns true when this Reference is strict.
-     *
-     * @return bool
-     */
-    public function isStrict()
-    {
-        return $this->strict;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/Scope.php b/vendor/symfony/dependency-injection/Scope.php
deleted file mode 100644
index 737fe26..0000000
--- a/vendor/symfony/dependency-injection/Scope.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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;
-
-/**
- * Scope class.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class Scope implements ScopeInterface
-{
-    private $name;
-    private $parentName;
-
-    public function __construct($name, $parentName = ContainerInterface::SCOPE_CONTAINER)
-    {
-        $this->name = $name;
-        $this->parentName = $parentName;
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function getParentName()
-    {
-        return $this->parentName;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/ScopeInterface.php b/vendor/symfony/dependency-injection/ScopeInterface.php
deleted file mode 100644
index ea55165..0000000
--- a/vendor/symfony/dependency-injection/ScopeInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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;
-
-/**
- * Scope Interface.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-interface ScopeInterface
-{
-    public function getName();
-
-    public function getParentName();
-}
diff --git a/vendor/symfony/dependency-injection/SimpleXMLElement.php b/vendor/symfony/dependency-injection/SimpleXMLElement.php
deleted file mode 100644
index 63d44ea..0000000
--- a/vendor/symfony/dependency-injection/SimpleXMLElement.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?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;
-
-@trigger_error('The '.__NAMESPACE__.'\SimpleXMLElement method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-use Symfony\Component\Config\Util\XmlUtils;
-use Symfony\Component\ExpressionLanguage\Expression;
-
-/**
- * SimpleXMLElement class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- */
-class SimpleXMLElement extends \SimpleXMLElement
-{
-    /**
-     * Converts an attribute as a PHP type.
-     *
-     * @param string $name
-     *
-     * @return mixed
-     */
-    public function getAttributeAsPhp($name)
-    {
-        return self::phpize($this[$name]);
-    }
-
-    /**
-     * Returns arguments as valid PHP types.
-     *
-     * @param string $name
-     * @param bool   $lowercase
-     *
-     * @return mixed
-     */
-    public function getArgumentsAsPhp($name, $lowercase = true)
-    {
-        $arguments = array();
-        foreach ($this->$name as $arg) {
-            if (isset($arg['name'])) {
-                $arg['key'] = (string) $arg['name'];
-            }
-            $key = isset($arg['key']) ? (string) $arg['key'] : (!$arguments ? 0 : max(array_keys($arguments)) + 1);
-
-            // parameter keys are case insensitive
-            if ('parameter' == $name && $lowercase) {
-                $key = strtolower($key);
-            }
-
-            // this is used by DefinitionDecorator to overwrite a specific
-            // argument of the parent definition
-            if (isset($arg['index'])) {
-                $key = 'index_'.$arg['index'];
-            }
-
-            switch ($arg['type']) {
-                case 'service':
-                    $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE;
-                    if (isset($arg['on-invalid']) && 'ignore' == $arg['on-invalid']) {
-                        $invalidBehavior = ContainerInterface::IGNORE_ON_INVALID_REFERENCE;
-                    } elseif (isset($arg['on-invalid']) && 'null' == $arg['on-invalid']) {
-                        $invalidBehavior = ContainerInterface::NULL_ON_INVALID_REFERENCE;
-                    }
-
-                    if (isset($arg['strict'])) {
-                        $strict = self::phpize($arg['strict']);
-                    } else {
-                        $strict = true;
-                    }
-
-                    $arguments[$key] = new Reference((string) $arg['id'], $invalidBehavior, $strict);
-                    break;
-                case 'expression':
-                    $arguments[$key] = new Expression((string) $arg);
-                    break;
-                case 'collection':
-                    $arguments[$key] = $arg->getArgumentsAsPhp($name, false);
-                    break;
-                case 'string':
-                    $arguments[$key] = (string) $arg;
-                    break;
-                case 'constant':
-                    $arguments[$key] = constant((string) $arg);
-                    break;
-                default:
-                    $arguments[$key] = self::phpize($arg);
-            }
-        }
-
-        return $arguments;
-    }
-
-    /**
-     * Converts an xml value to a PHP type.
-     *
-     * @param mixed $value
-     *
-     * @return mixed
-     */
-    public static function phpize($value)
-    {
-        return XmlUtils::phpize($value);
-    }
-}
diff --git a/vendor/symfony/dependency-injection/TaggedContainerInterface.php b/vendor/symfony/dependency-injection/TaggedContainerInterface.php
deleted file mode 100644
index 90b297f..0000000
--- a/vendor/symfony/dependency-injection/TaggedContainerInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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;
-
-/**
- * TaggedContainerInterface is the interface implemented when a container knows how to deals with tags.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface TaggedContainerInterface extends ContainerInterface
-{
-    /**
-     * Returns service ids for a given tag.
-     *
-     * @param string $name The tag name
-     *
-     * @return array An array of tags
-     */
-    public function findTaggedServiceIds($name);
-}
diff --git a/vendor/symfony/dependency-injection/Variable.php b/vendor/symfony/dependency-injection/Variable.php
deleted file mode 100644
index e502356..0000000
--- a/vendor/symfony/dependency-injection/Variable.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?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;
-
-/**
- * Represents a variable.
- *
- *     $var = new Variable('a');
- *
- * will be dumped as
- *
- *     $a
- *
- * by the PHP dumper.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class Variable
-{
-    private $name;
-
-    /**
-     * Constructor.
-     *
-     * @param string $name
-     */
-    public function __construct($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * Converts the object to a string.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return $this->name;
-    }
-}
diff --git a/vendor/symfony/dependency-injection/composer.json b/vendor/symfony/dependency-injection/composer.json
deleted file mode 100644
index 87ea6fd..0000000
--- a/vendor/symfony/dependency-injection/composer.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-    "name": "symfony/dependency-injection",
-    "type": "library",
-    "description": "Symfony DependencyInjection Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9"
-    },
-    "require-dev": {
-        "symfony/yaml": "~2.1",
-        "symfony/config": "~2.2",
-        "symfony/expression-language": "~2.6"
-    },
-    "conflict": {
-        "symfony/expression-language": "<2.6"
-    },
-    "suggest": {
-        "symfony/yaml": "",
-        "symfony/config": "",
-        "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/dependency-injection/phpunit.xml.dist b/vendor/symfony/dependency-injection/phpunit.xml.dist
deleted file mode 100644
index 86252d0..0000000
--- a/vendor/symfony/dependency-injection/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony DependencyInjection Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/dom-crawler/.gitignore b/vendor/symfony/dom-crawler/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/dom-crawler/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/dom-crawler/CHANGELOG.md b/vendor/symfony/dom-crawler/CHANGELOG.md
deleted file mode 100644
index 48fd323..0000000
--- a/vendor/symfony/dom-crawler/CHANGELOG.md
+++ /dev/null
@@ -1,45 +0,0 @@
-CHANGELOG
-=========
-
-2.5.0
------
-
-* [BC BREAK] The default value for checkbox and radio inputs without a value attribute have changed
-  from '1' to 'on' to match the HTML specification.
-* [BC BREAK] The typehints on the `Link`, `Form` and `FormField` classes have been changed from
-  `\DOMNode` to `DOMElement`. Using any other type of `DOMNode` was triggering fatal errors in previous
-  versions. Code extending these classes will need to update the typehints when overwriting these methods.
-
-2.4.0
------
-
- * `Crawler::addXmlContent()` removes the default document namespace again if it's an only namespace.
- * added support for automatic discovery and explicit registration of document
-   namespaces for `Crawler::filterXPath()` and `Crawler::filter()`
- * improved content type guessing in `Crawler::addContent()`
- * [BC BREAK] `Crawler::addXmlContent()` no longer removes the default document
-   namespace
-
-2.3.0
------
-
- * added Crawler::html()
- * [BC BREAK] Crawler::each() and Crawler::reduce() now return Crawler instances instead of DomElement instances
- * added schema relative URL support to links
- * added support for HTML5 'form' attribute
-
-2.2.0
------
-
- * added a way to set raw path to the file in FileFormField - necessary for
-   simulating HTTP requests
-
-2.1.0
------
-
- * added support for the HTTP PATCH method
- * refactored the Form class internals to support multi-dimensional fields
-   (the public API is backward compatible)
- * added a way to get parsing errors for Crawler::addHtmlContent() and
-   Crawler::addXmlContent() via libxml functions
- * added support for submitting a form without a submit button
diff --git a/vendor/symfony/dom-crawler/Crawler.php b/vendor/symfony/dom-crawler/Crawler.php
deleted file mode 100644
index 94e0a21..0000000
--- a/vendor/symfony/dom-crawler/Crawler.php
+++ /dev/null
@@ -1,1016 +0,0 @@
-<?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\DomCrawler;
-
-use Symfony\Component\CssSelector\CssSelector;
-
-/**
- * Crawler eases navigation of a list of \DOMElement objects.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Crawler extends \SplObjectStorage
-{
-    /**
-     * @var string The current URI
-     */
-    protected $uri;
-
-    /**
-     * @var string The default namespace prefix to be used with XPath and CSS expressions
-     */
-    private $defaultNamespacePrefix = 'default';
-
-    /**
-     * @var array A map of manually registered namespaces
-     */
-    private $namespaces = array();
-
-    /**
-     * @var string The base href value
-     */
-    private $baseHref;
-
-    /**
-     * Constructor.
-     *
-     * @param mixed  $node       A Node to use as the base for the crawling
-     * @param string $currentUri The current URI
-     * @param string $baseHref   The base href value
-     */
-    public function __construct($node = null, $currentUri = null, $baseHref = null)
-    {
-        $this->uri = $currentUri;
-        $this->baseHref = $baseHref ?: $currentUri;
-
-        $this->add($node);
-    }
-
-    /**
-     * Removes all the nodes.
-     */
-    public function clear()
-    {
-        $this->removeAll($this);
-    }
-
-    /**
-     * Adds a node to the current list of nodes.
-     *
-     * This method uses the appropriate specialized add*() method based
-     * on the type of the argument.
-     *
-     * @param \DOMNodeList|\DOMNode|array|string|null $node A node
-     *
-     * @throws \InvalidArgumentException When node is not the expected type.
-     */
-    public function add($node)
-    {
-        if ($node instanceof \DOMNodeList) {
-            $this->addNodeList($node);
-        } elseif ($node instanceof \DOMNode) {
-            $this->addNode($node);
-        } elseif (is_array($node)) {
-            $this->addNodes($node);
-        } elseif (is_string($node)) {
-            $this->addContent($node);
-        } elseif (null !== $node) {
-            throw new \InvalidArgumentException(sprintf('Expecting a DOMNodeList or DOMNode instance, an array, a string, or null, but got "%s".', is_object($node) ? get_class($node) : gettype($node)));
-        }
-    }
-
-    /**
-     * Adds HTML/XML content.
-     *
-     * If the charset is not set via the content type, it is assumed
-     * to be ISO-8859-1, which is the default charset defined by the
-     * HTTP 1.1 specification.
-     *
-     * @param string      $content A string to parse as HTML/XML
-     * @param null|string $type    The content type of the string
-     */
-    public function addContent($content, $type = null)
-    {
-        if (empty($type)) {
-            $type = 0 === strpos($content, '<?xml') ? 'application/xml' : 'text/html';
-        }
-
-        // DOM only for HTML/XML content
-        if (!preg_match('/(x|ht)ml/i', $type, $xmlMatches)) {
-            return;
-        }
-
-        $charset = null;
-        if (false !== $pos = stripos($type, 'charset=')) {
-            $charset = substr($type, $pos + 8);
-            if (false !== $pos = strpos($charset, ';')) {
-                $charset = substr($charset, 0, $pos);
-            }
-        }
-
-        // http://www.w3.org/TR/encoding/#encodings
-        // http://www.w3.org/TR/REC-xml/#NT-EncName
-        if (null === $charset &&
-            preg_match('/\<meta[^\>]+charset *= *["\']?([a-zA-Z\-0-9_:.]+)/i', $content, $matches)) {
-            $charset = $matches[1];
-        }
-
-        if (null === $charset) {
-            $charset = 'ISO-8859-1';
-        }
-
-        if ('x' === $xmlMatches[1]) {
-            $this->addXmlContent($content, $charset);
-        } else {
-            $this->addHtmlContent($content, $charset);
-        }
-    }
-
-    /**
-     * Adds an HTML content to the list of nodes.
-     *
-     * The libxml errors are disabled when the content is parsed.
-     *
-     * If you want to get parsing errors, be sure to enable
-     * internal errors via libxml_use_internal_errors(true)
-     * and then, get the errors via libxml_get_errors(). Be
-     * sure to clear errors with libxml_clear_errors() afterward.
-     *
-     * @param string $content The HTML content
-     * @param string $charset The charset
-     */
-    public function addHtmlContent($content, $charset = 'UTF-8')
-    {
-        $internalErrors = libxml_use_internal_errors(true);
-        $disableEntities = libxml_disable_entity_loader(true);
-
-        $dom = new \DOMDocument('1.0', $charset);
-        $dom->validateOnParse = true;
-
-        set_error_handler(function () {throw new \Exception();});
-
-        try {
-            // Convert charset to HTML-entities to work around bugs in DOMDocument::loadHTML()
-
-            if (function_exists('mb_convert_encoding')) {
-                $content = mb_convert_encoding($content, 'HTML-ENTITIES', $charset);
-            } elseif (function_exists('iconv')) {
-                $content = preg_replace_callback(
-                    '/[\x80-\xFF]+/',
-                    function ($m) {
-                        $m = unpack('C*', $m[0]);
-                        $i = 1;
-                        $entities = '';
-
-                        while (isset($m[$i])) {
-                            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;
-                    },
-                    iconv($charset, 'UTF-8', $content)
-                );
-            }
-        } catch (\Exception $e) {
-        }
-
-        restore_error_handler();
-
-        if ('' !== trim($content)) {
-            @$dom->loadHTML($content);
-        }
-
-        libxml_use_internal_errors($internalErrors);
-        libxml_disable_entity_loader($disableEntities);
-
-        $this->addDocument($dom);
-
-        $base = $this->filterRelativeXPath('descendant-or-self::base')->extract(array('href'));
-
-        $baseHref = current($base);
-        if (count($base) && !empty($baseHref)) {
-            if ($this->baseHref) {
-                $linkNode = $dom->createElement('a');
-                $linkNode->setAttribute('href', $baseHref);
-                $link = new Link($linkNode, $this->baseHref);
-                $this->baseHref = $link->getUri();
-            } else {
-                $this->baseHref = $baseHref;
-            }
-        }
-    }
-
-    /**
-     * Adds an XML content to the list of nodes.
-     *
-     * The libxml errors are disabled when the content is parsed.
-     *
-     * If you want to get parsing errors, be sure to enable
-     * internal errors via libxml_use_internal_errors(true)
-     * and then, get the errors via libxml_get_errors(). Be
-     * sure to clear errors with libxml_clear_errors() afterward.
-     *
-     * @param string $content The XML content
-     * @param string $charset The charset
-     */
-    public function addXmlContent($content, $charset = 'UTF-8')
-    {
-        // remove the default namespace if it's the only namespace to make XPath expressions simpler
-        if (!preg_match('/xmlns:/', $content)) {
-            $content = str_replace('xmlns', 'ns', $content);
-        }
-
-        $internalErrors = libxml_use_internal_errors(true);
-        $disableEntities = libxml_disable_entity_loader(true);
-
-        $dom = new \DOMDocument('1.0', $charset);
-        $dom->validateOnParse = true;
-
-        if ('' !== trim($content)) {
-            @$dom->loadXML($content, LIBXML_NONET);
-        }
-
-        libxml_use_internal_errors($internalErrors);
-        libxml_disable_entity_loader($disableEntities);
-
-        $this->addDocument($dom);
-    }
-
-    /**
-     * Adds a \DOMDocument to the list of nodes.
-     *
-     * @param \DOMDocument $dom A \DOMDocument instance
-     */
-    public function addDocument(\DOMDocument $dom)
-    {
-        if ($dom->documentElement) {
-            $this->addNode($dom->documentElement);
-        }
-    }
-
-    /**
-     * Adds a \DOMNodeList to the list of nodes.
-     *
-     * @param \DOMNodeList $nodes A \DOMNodeList instance
-     */
-    public function addNodeList(\DOMNodeList $nodes)
-    {
-        foreach ($nodes as $node) {
-            if ($node instanceof \DOMNode) {
-                $this->addNode($node);
-            }
-        }
-    }
-
-    /**
-     * Adds an array of \DOMNode instances to the list of nodes.
-     *
-     * @param \DOMNode[] $nodes An array of \DOMNode instances
-     */
-    public function addNodes(array $nodes)
-    {
-        foreach ($nodes as $node) {
-            $this->add($node);
-        }
-    }
-
-    /**
-     * Adds a \DOMNode instance to the list of nodes.
-     *
-     * @param \DOMNode $node A \DOMNode instance
-     */
-    public function addNode(\DOMNode $node)
-    {
-        if ($node instanceof \DOMDocument) {
-            $this->attach($node->documentElement);
-        } else {
-            $this->attach($node);
-        }
-    }
-
-    // Serializing and unserializing a crawler creates DOM objects in a corrupted state. DOM elements are not properly serializable.
-    public function unserialize($serialized)
-    {
-        throw new \BadMethodCallException('A Crawler cannot be serialized.');
-    }
-
-    public function serialize()
-    {
-        throw new \BadMethodCallException('A Crawler cannot be serialized.');
-    }
-
-    /**
-     * Returns a node given its position in the node list.
-     *
-     * @param int $position The position
-     *
-     * @return Crawler A new instance of the Crawler with the selected node, or an empty Crawler if it does not exist.
-     */
-    public function eq($position)
-    {
-        foreach ($this as $i => $node) {
-            if ($i == $position) {
-                return $this->createSubCrawler($node);
-            }
-        }
-
-        return $this->createSubCrawler(null);
-    }
-
-    /**
-     * Calls an anonymous function on each node of the list.
-     *
-     * The anonymous function receives the position and the node wrapped
-     * in a Crawler instance as arguments.
-     *
-     * Example:
-     *
-     *     $crawler->filter('h1')->each(function ($node, $i) {
-     *         return $node->text();
-     *     });
-     *
-     * @param \Closure $closure An anonymous function
-     *
-     * @return array An array of values returned by the anonymous function
-     */
-    public function each(\Closure $closure)
-    {
-        $data = array();
-        foreach ($this as $i => $node) {
-            $data[] = $closure($this->createSubCrawler($node), $i);
-        }
-
-        return $data;
-    }
-
-    /**
-     * Slices the list of nodes by $offset and $length.
-     *
-     * @param int $offset
-     * @param int $length
-     *
-     * @return Crawler A Crawler instance with the sliced nodes
-     */
-    public function slice($offset = 0, $length = -1)
-    {
-        return $this->createSubCrawler(iterator_to_array(new \LimitIterator($this, $offset, $length)));
-    }
-
-    /**
-     * Reduces the list of nodes by calling an anonymous function.
-     *
-     * To remove a node from the list, the anonymous function must return false.
-     *
-     * @param \Closure $closure An anonymous function
-     *
-     * @return Crawler A Crawler instance with the selected nodes.
-     */
-    public function reduce(\Closure $closure)
-    {
-        $nodes = array();
-        foreach ($this as $i => $node) {
-            if (false !== $closure($this->createSubCrawler($node), $i)) {
-                $nodes[] = $node;
-            }
-        }
-
-        return $this->createSubCrawler($nodes);
-    }
-
-    /**
-     * Returns the first node of the current selection.
-     *
-     * @return Crawler A Crawler instance with the first selected node
-     */
-    public function first()
-    {
-        return $this->eq(0);
-    }
-
-    /**
-     * Returns the last node of the current selection.
-     *
-     * @return Crawler A Crawler instance with the last selected node
-     */
-    public function last()
-    {
-        return $this->eq(count($this) - 1);
-    }
-
-    /**
-     * Returns the siblings nodes of the current selection.
-     *
-     * @return Crawler A Crawler instance with the sibling nodes
-     *
-     * @throws \InvalidArgumentException When current node is empty
-     */
-    public function siblings()
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        return $this->createSubCrawler($this->sibling($this->getNode(0)->parentNode->firstChild));
-    }
-
-    /**
-     * Returns the next siblings nodes of the current selection.
-     *
-     * @return Crawler A Crawler instance with the next sibling nodes
-     *
-     * @throws \InvalidArgumentException When current node is empty
-     */
-    public function nextAll()
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        return $this->createSubCrawler($this->sibling($this->getNode(0)));
-    }
-
-    /**
-     * Returns the previous sibling nodes of the current selection.
-     *
-     * @return Crawler A Crawler instance with the previous sibling nodes
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function previousAll()
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        return $this->createSubCrawler($this->sibling($this->getNode(0), 'previousSibling'));
-    }
-
-    /**
-     * Returns the parents nodes of the current selection.
-     *
-     * @return Crawler A Crawler instance with the parents nodes of the current selection
-     *
-     * @throws \InvalidArgumentException When current node is empty
-     */
-    public function parents()
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        $node = $this->getNode(0);
-        $nodes = array();
-
-        while ($node = $node->parentNode) {
-            if (1 === $node->nodeType) {
-                $nodes[] = $node;
-            }
-        }
-
-        return $this->createSubCrawler($nodes);
-    }
-
-    /**
-     * Returns the children nodes of the current selection.
-     *
-     * @return Crawler A Crawler instance with the children nodes
-     *
-     * @throws \InvalidArgumentException When current node is empty
-     */
-    public function children()
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        $node = $this->getNode(0)->firstChild;
-
-        return $this->createSubCrawler($node ? $this->sibling($node) : array());
-    }
-
-    /**
-     * Returns the attribute value of the first node of the list.
-     *
-     * @param string $attribute The attribute name
-     *
-     * @return string|null The attribute value or null if the attribute does not exist
-     *
-     * @throws \InvalidArgumentException When current node is empty
-     */
-    public function attr($attribute)
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        $node = $this->getNode(0);
-
-        return $node->hasAttribute($attribute) ? $node->getAttribute($attribute) : null;
-    }
-
-    /**
-     * Returns the node name of the first node of the list.
-     *
-     * @return string The node name
-     *
-     * @throws \InvalidArgumentException When current node is empty
-     */
-    public function nodeName()
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        return $this->getNode(0)->nodeName;
-    }
-
-    /**
-     * Returns the node value of the first node of the list.
-     *
-     * @return string The node value
-     *
-     * @throws \InvalidArgumentException When current node is empty
-     */
-    public function text()
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        return $this->getNode(0)->nodeValue;
-    }
-
-    /**
-     * Returns the first node of the list as HTML.
-     *
-     * @return string The node html
-     *
-     * @throws \InvalidArgumentException When current node is empty
-     */
-    public function html()
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        $html = '';
-        foreach ($this->getNode(0)->childNodes as $child) {
-            $html .= $child->ownerDocument->saveHTML($child);
-        }
-
-        return $html;
-    }
-
-    /**
-     * Extracts information from the list of nodes.
-     *
-     * You can extract attributes or/and the node value (_text).
-     *
-     * Example:
-     *
-     * $crawler->filter('h1 a')->extract(array('_text', 'href'));
-     *
-     * @param array $attributes An array of attributes
-     *
-     * @return array An array of extracted values
-     */
-    public function extract($attributes)
-    {
-        $attributes = (array) $attributes;
-        $count = count($attributes);
-
-        $data = array();
-        foreach ($this as $node) {
-            $elements = array();
-            foreach ($attributes as $attribute) {
-                if ('_text' === $attribute) {
-                    $elements[] = $node->nodeValue;
-                } else {
-                    $elements[] = $node->getAttribute($attribute);
-                }
-            }
-
-            $data[] = $count > 1 ? $elements : $elements[0];
-        }
-
-        return $data;
-    }
-
-    /**
-     * Filters the list of nodes with an XPath expression.
-     *
-     * The XPath expression is evaluated in the context of the crawler, which
-     * is considered as a fake parent of the elements inside it.
-     * This means that a child selector "div" or "./div" will match only
-     * the div elements of the current crawler, not their children.
-     *
-     * @param string $xpath An XPath expression
-     *
-     * @return Crawler A new instance of Crawler with the filtered list of nodes
-     */
-    public function filterXPath($xpath)
-    {
-        $xpath = $this->relativize($xpath);
-
-        // If we dropped all expressions in the XPath while preparing it, there would be no match
-        if ('' === $xpath) {
-            return $this->createSubCrawler(null);
-        }
-
-        return $this->filterRelativeXPath($xpath);
-    }
-
-    /**
-     * Filters the list of nodes with a CSS selector.
-     *
-     * This method only works if you have installed the CssSelector Symfony Component.
-     *
-     * @param string $selector A CSS selector
-     *
-     * @return Crawler A new instance of Crawler with the filtered list of nodes
-     *
-     * @throws \RuntimeException if the CssSelector Component is not available
-     */
-    public function filter($selector)
-    {
-        if (!class_exists('Symfony\\Component\\CssSelector\\CssSelector')) {
-            throw new \RuntimeException('Unable to filter with a CSS selector as the Symfony CssSelector is not installed (you can use filterXPath instead).');
-        }
-
-        // The CssSelector already prefixes the selector with descendant-or-self::
-        return $this->filterRelativeXPath(CssSelector::toXPath($selector));
-    }
-
-    /**
-     * Selects links by name or alt value for clickable images.
-     *
-     * @param string $value The link text
-     *
-     * @return Crawler A new instance of Crawler with the filtered list of nodes
-     */
-    public function selectLink($value)
-    {
-        $xpath = sprintf('descendant-or-self::a[contains(concat(\' \', normalize-space(string(.)), \' \'), %s) ', static::xpathLiteral(' '.$value.' ')).
-                            sprintf('or ./img[contains(concat(\' \', normalize-space(string(@alt)), \' \'), %s)]]', static::xpathLiteral(' '.$value.' '));
-
-        return $this->filterRelativeXPath($xpath);
-    }
-
-    /**
-     * Selects a button by name or alt value for images.
-     *
-     * @param string $value The button text
-     *
-     * @return Crawler A new instance of Crawler with the filtered list of nodes
-     */
-    public function selectButton($value)
-    {
-        $translate = 'translate(@type, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")';
-        $xpath = sprintf('descendant-or-self::input[((contains(%s, "submit") or contains(%s, "button")) and contains(concat(\' \', normalize-space(string(@value)), \' \'), %s)) ', $translate, $translate, static::xpathLiteral(' '.$value.' ')).
-                         sprintf('or (contains(%s, "image") and contains(concat(\' \', normalize-space(string(@alt)), \' \'), %s)) or @id=%s or @name=%s] ', $translate, static::xpathLiteral(' '.$value.' '), static::xpathLiteral($value), static::xpathLiteral($value)).
-                         sprintf('| descendant-or-self::button[contains(concat(\' \', normalize-space(string(.)), \' \'), %s) or @id=%s or @name=%s]', static::xpathLiteral(' '.$value.' '), static::xpathLiteral($value), static::xpathLiteral($value));
-
-        return $this->filterRelativeXPath($xpath);
-    }
-
-    /**
-     * Returns a Link object for the first node in the list.
-     *
-     * @param string $method The method for the link (get by default)
-     *
-     * @return Link A Link instance
-     *
-     * @throws \InvalidArgumentException If the current node list is empty
-     */
-    public function link($method = 'get')
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        $node = $this->getNode(0);
-
-        return new Link($node, $this->baseHref, $method);
-    }
-
-    /**
-     * Returns an array of Link objects for the nodes in the list.
-     *
-     * @return Link[] An array of Link instances
-     */
-    public function links()
-    {
-        $links = array();
-        foreach ($this as $node) {
-            $links[] = new Link($node, $this->baseHref, 'get');
-        }
-
-        return $links;
-    }
-
-    /**
-     * Returns a Form object for the first node in the list.
-     *
-     * @param array  $values An array of values for the form fields
-     * @param string $method The method for the form
-     *
-     * @return Form A Form instance
-     *
-     * @throws \InvalidArgumentException If the current node list is empty
-     */
-    public function form(array $values = null, $method = null)
-    {
-        if (!count($this)) {
-            throw new \InvalidArgumentException('The current node list is empty.');
-        }
-
-        $form = new Form($this->getNode(0), $this->uri, $method, $this->baseHref);
-
-        if (null !== $values) {
-            $form->setValues($values);
-        }
-
-        return $form;
-    }
-
-    /**
-     * Overloads a default namespace prefix to be used with XPath and CSS expressions.
-     *
-     * @param string $prefix
-     */
-    public function setDefaultNamespacePrefix($prefix)
-    {
-        $this->defaultNamespacePrefix = $prefix;
-    }
-
-    /**
-     * @param string $prefix
-     * @param string $namespace
-     */
-    public function registerNamespace($prefix, $namespace)
-    {
-        $this->namespaces[$prefix] = $namespace;
-    }
-
-    /**
-     * Converts string for XPath expressions.
-     *
-     * Escaped characters are: quotes (") and apostrophe (').
-     *
-     *  Examples:
-     *  <code>
-     *     echo Crawler::xpathLiteral('foo " bar');
-     *     //prints 'foo " bar'
-     *
-     *     echo Crawler::xpathLiteral("foo ' bar");
-     *     //prints "foo ' bar"
-     *
-     *     echo Crawler::xpathLiteral('a\'b"c');
-     *     //prints concat('a', "'", 'b"c')
-     *  </code>
-     *
-     * @param string $s String to be escaped
-     *
-     * @return string Converted string
-     */
-    public static function xpathLiteral($s)
-    {
-        if (false === strpos($s, "'")) {
-            return sprintf("'%s'", $s);
-        }
-
-        if (false === strpos($s, '"')) {
-            return sprintf('"%s"', $s);
-        }
-
-        $string = $s;
-        $parts = array();
-        while (true) {
-            if (false !== $pos = strpos($string, "'")) {
-                $parts[] = sprintf("'%s'", substr($string, 0, $pos));
-                $parts[] = "\"'\"";
-                $string = substr($string, $pos + 1);
-            } else {
-                $parts[] = "'$string'";
-                break;
-            }
-        }
-
-        return sprintf('concat(%s)', implode($parts, ', '));
-    }
-
-    /**
-     * Filters the list of nodes with an XPath expression.
-     *
-     * The XPath expression should already be processed to apply it in the context of each node.
-     *
-     * @param string $xpath
-     *
-     * @return Crawler
-     */
-    private function filterRelativeXPath($xpath)
-    {
-        $prefixes = $this->findNamespacePrefixes($xpath);
-
-        $crawler = $this->createSubCrawler(null);
-
-        foreach ($this as $node) {
-            $domxpath = $this->createDOMXPath($node->ownerDocument, $prefixes);
-            $crawler->add($domxpath->query($xpath, $node));
-        }
-
-        return $crawler;
-    }
-
-    /**
-     * Make the XPath relative to the current context.
-     *
-     * The returned XPath will match elements matching the XPath inside the current crawler
-     * when running in the context of a node of the crawler.
-     *
-     * @param string $xpath
-     *
-     * @return string
-     */
-    private function relativize($xpath)
-    {
-        $expressions = array();
-
-        $unionPattern = '/\|(?![^\[]*\])/';
-        // An expression which will never match to replace expressions which cannot match in the crawler
-        // We cannot simply drop
-        $nonMatchingExpression = 'a[name() = "b"]';
-
-        // Split any unions into individual expressions.
-        foreach (preg_split($unionPattern, $xpath) as $expression) {
-            $expression = trim($expression);
-            $parenthesis = '';
-
-            // If the union is inside some braces, we need to preserve the opening braces and apply
-            // the change only inside it.
-            if (preg_match('/^[\(\s*]+/', $expression, $matches)) {
-                $parenthesis = $matches[0];
-                $expression = substr($expression, strlen($parenthesis));
-            }
-
-            // BC for Symfony 2.4 and lower were elements were adding in a fake _root parent
-            if (0 === strpos($expression, '/_root/')) {
-                $expression = './'.substr($expression, 7);
-            } elseif (0 === strpos($expression, 'self::*/')) {
-                $expression = './'.substr($expression, 8);
-            }
-
-            // add prefix before absolute element selector
-            if (empty($expression)) {
-                $expression = $nonMatchingExpression;
-            } elseif (0 === strpos($expression, '//')) {
-                $expression = 'descendant-or-self::'.substr($expression, 2);
-            } elseif (0 === strpos($expression, './/')) {
-                $expression = 'descendant-or-self::'.substr($expression, 3);
-            } elseif (0 === strpos($expression, './')) {
-                $expression = 'self::'.substr($expression, 2);
-            } elseif (0 === strpos($expression, 'child::')) {
-                $expression = 'self::'.substr($expression, 7);
-            } elseif ('/' === $expression[0] || 0 === strpos($expression, 'self::')) {
-                // the only direct child in Symfony 2.4 and lower is _root, which is already handled previously
-                // so let's drop the expression entirely
-                $expression = $nonMatchingExpression;
-            } elseif ('.' === $expression[0]) {
-                // '.' is the fake root element in Symfony 2.4 and lower, which is excluded from results
-                $expression = $nonMatchingExpression;
-            } elseif (0 === strpos($expression, 'descendant::')) {
-                $expression = 'descendant-or-self::'.substr($expression, strlen('descendant::'));
-            } elseif (preg_match('/^(ancestor|ancestor-or-self|attribute|following|following-sibling|namespace|parent|preceding|preceding-sibling)::/', $expression)) {
-                // the fake root has no parent, preceding or following nodes and also no attributes (even no namespace attributes)
-                $expression = $nonMatchingExpression;
-            } elseif (0 !== strpos($expression, 'descendant-or-self::')) {
-                $expression = 'self::'.$expression;
-            }
-            $expressions[] = $parenthesis.$expression;
-        }
-
-        return implode(' | ', $expressions);
-    }
-
-    /**
-     * @param int $position
-     *
-     * @return \DOMElement|null
-     */
-    public function getNode($position)
-    {
-        foreach ($this as $i => $node) {
-            if ($i == $position) {
-                return $node;
-            }
-        }
-    }
-
-    /**
-     * @param \DOMElement $node
-     * @param string      $siblingDir
-     *
-     * @return array
-     */
-    protected function sibling($node, $siblingDir = 'nextSibling')
-    {
-        $nodes = array();
-
-        do {
-            if ($node !== $this->getNode(0) && $node->nodeType === 1) {
-                $nodes[] = $node;
-            }
-        } while ($node = $node->$siblingDir);
-
-        return $nodes;
-    }
-
-    /**
-     * @param \DOMDocument $document
-     * @param array        $prefixes
-     *
-     * @return \DOMXPath
-     *
-     * @throws \InvalidArgumentException
-     */
-    private function createDOMXPath(\DOMDocument $document, array $prefixes = array())
-    {
-        $domxpath = new \DOMXPath($document);
-
-        foreach ($prefixes as $prefix) {
-            $namespace = $this->discoverNamespace($domxpath, $prefix);
-            if (null !== $namespace) {
-                $domxpath->registerNamespace($prefix, $namespace);
-            }
-        }
-
-        return $domxpath;
-    }
-
-    /**
-     * @param \DOMXPath $domxpath
-     * @param string    $prefix
-     *
-     * @return string
-     *
-     * @throws \InvalidArgumentException
-     */
-    private function discoverNamespace(\DOMXPath $domxpath, $prefix)
-    {
-        if (isset($this->namespaces[$prefix])) {
-            return $this->namespaces[$prefix];
-        }
-
-        // ask for one namespace, otherwise we'd get a collection with an item for each node
-        $namespaces = $domxpath->query(sprintf('(//namespace::*[name()="%s"])[last()]', $this->defaultNamespacePrefix === $prefix ? '' : $prefix));
-
-        if ($node = $namespaces->item(0)) {
-            return $node->nodeValue;
-        }
-    }
-
-    /**
-     * @param string $xpath
-     *
-     * @return array
-     */
-    private function findNamespacePrefixes($xpath)
-    {
-        if (preg_match_all('/(?P<prefix>[a-z_][a-z_0-9\-\.]*+):[^"\/:]/i', $xpath, $matches)) {
-            return array_unique($matches['prefix']);
-        }
-
-        return array();
-    }
-
-    /**
-     * Creates a crawler for some subnodes.
-     *
-     * @param \DOMElement|\DOMElement[]|\DOMNodeList|null $nodes
-     *
-     * @return static
-     */
-    private function createSubCrawler($nodes)
-    {
-        $crawler = new static($nodes, $this->uri, $this->baseHref);
-
-        return $crawler;
-    }
-}
diff --git a/vendor/symfony/dom-crawler/Field/ChoiceFormField.php b/vendor/symfony/dom-crawler/Field/ChoiceFormField.php
deleted file mode 100644
index fcf510c..0000000
--- a/vendor/symfony/dom-crawler/Field/ChoiceFormField.php
+++ /dev/null
@@ -1,319 +0,0 @@
-<?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\DomCrawler\Field;
-
-/**
- * ChoiceFormField represents a choice form field.
- *
- * It is constructed from a HTML select tag, or a HTML checkbox, or radio inputs.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ChoiceFormField extends FormField
-{
-    /**
-     * @var string
-     */
-    private $type;
-    /**
-     * @var bool
-     */
-    private $multiple;
-    /**
-     * @var array
-     */
-    private $options;
-    /**
-     * @var bool
-     */
-    private $validationDisabled = false;
-
-    /**
-     * Returns true if the field should be included in the submitted values.
-     *
-     * @return bool true if the field should be included in the submitted values, false otherwise
-     */
-    public function hasValue()
-    {
-        // don't send a value for unchecked checkboxes
-        if (in_array($this->type, array('checkbox', 'radio')) && null === $this->value) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Check if the current selected option is disabled.
-     *
-     * @return bool
-     */
-    public function isDisabled()
-    {
-        foreach ($this->options as $option) {
-            if ($option['value'] == $this->value && $option['disabled']) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Sets the value of the field.
-     *
-     * @param string $value The value of the field
-     */
-    public function select($value)
-    {
-        $this->setValue($value);
-    }
-
-    /**
-     * Ticks a checkbox.
-     *
-     * @throws \LogicException When the type provided is not correct
-     */
-    public function tick()
-    {
-        if ('checkbox' !== $this->type) {
-            throw new \LogicException(sprintf('You cannot tick "%s" as it is not a checkbox (%s).', $this->name, $this->type));
-        }
-
-        $this->setValue(true);
-    }
-
-    /**
-     * Ticks a checkbox.
-     *
-     * @throws \LogicException When the type provided is not correct
-     */
-    public function untick()
-    {
-        if ('checkbox' !== $this->type) {
-            throw new \LogicException(sprintf('You cannot tick "%s" as it is not a checkbox (%s).', $this->name, $this->type));
-        }
-
-        $this->setValue(false);
-    }
-
-    /**
-     * Sets the value of the field.
-     *
-     * @param string $value The value of the field
-     *
-     * @throws \InvalidArgumentException When value type provided is not correct
-     */
-    public function setValue($value)
-    {
-        if ('checkbox' === $this->type && false === $value) {
-            // uncheck
-            $this->value = null;
-        } elseif ('checkbox' === $this->type && true === $value) {
-            // check
-            $this->value = $this->options[0]['value'];
-        } else {
-            if (is_array($value)) {
-                if (!$this->multiple) {
-                    throw new \InvalidArgumentException(sprintf('The value for "%s" cannot be an array.', $this->name));
-                }
-
-                foreach ($value as $v) {
-                    if (!$this->containsOption($v, $this->options)) {
-                        throw new \InvalidArgumentException(sprintf('Input "%s" cannot take "%s" as a value (possible values: %s).', $this->name, $v, implode(', ', $this->availableOptionValues())));
-                    }
-                }
-            } elseif (!$this->containsOption($value, $this->options)) {
-                throw new \InvalidArgumentException(sprintf('Input "%s" cannot take "%s" as a value (possible values: %s).', $this->name, $value, implode(', ', $this->availableOptionValues())));
-            }
-
-            if ($this->multiple) {
-                $value = (array) $value;
-            }
-
-            if (is_array($value)) {
-                $this->value = $value;
-            } else {
-                parent::setValue($value);
-            }
-        }
-    }
-
-    /**
-     * Adds a choice to the current ones.
-     *
-     * This method should only be used internally.
-     *
-     * @param \DOMElement $node
-     *
-     * @throws \LogicException When choice provided is not multiple nor radio
-     */
-    public function addChoice(\DOMElement $node)
-    {
-        if (!$this->multiple && 'radio' !== $this->type) {
-            throw new \LogicException(sprintf('Unable to add a choice for "%s" as it is not multiple or is not a radio button.', $this->name));
-        }
-
-        $option = $this->buildOptionValue($node);
-        $this->options[] = $option;
-
-        if ($node->hasAttribute('checked')) {
-            $this->value = $option['value'];
-        }
-    }
-
-    /**
-     * Returns the type of the choice field (radio, select, or checkbox).
-     *
-     * @return string The type
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * Returns true if the field accepts multiple values.
-     *
-     * @return bool true if the field accepts multiple values, false otherwise
-     */
-    public function isMultiple()
-    {
-        return $this->multiple;
-    }
-
-    /**
-     * Initializes the form field.
-     *
-     * @throws \LogicException When node type is incorrect
-     */
-    protected function initialize()
-    {
-        if ('input' !== $this->node->nodeName && 'select' !== $this->node->nodeName) {
-            throw new \LogicException(sprintf('A ChoiceFormField can only be created from an input or select tag (%s given).', $this->node->nodeName));
-        }
-
-        if ('input' === $this->node->nodeName && 'checkbox' !== strtolower($this->node->getAttribute('type')) && 'radio' !== strtolower($this->node->getAttribute('type'))) {
-            throw new \LogicException(sprintf('A ChoiceFormField can only be created from an input tag with a type of checkbox or radio (given type is %s).', $this->node->getAttribute('type')));
-        }
-
-        $this->value = null;
-        $this->options = array();
-        $this->multiple = false;
-
-        if ('input' == $this->node->nodeName) {
-            $this->type = strtolower($this->node->getAttribute('type'));
-            $optionValue = $this->buildOptionValue($this->node);
-            $this->options[] = $optionValue;
-
-            if ($this->node->hasAttribute('checked')) {
-                $this->value = $optionValue['value'];
-            }
-        } else {
-            $this->type = 'select';
-            if ($this->node->hasAttribute('multiple')) {
-                $this->multiple = true;
-                $this->value = array();
-                $this->name = str_replace('[]', '', $this->name);
-            }
-
-            $found = false;
-            foreach ($this->xpath->query('descendant::option', $this->node) as $option) {
-                $optionValue = $this->buildOptionValue($option);
-                $this->options[] = $optionValue;
-
-                if ($option->hasAttribute('selected')) {
-                    $found = true;
-                    if ($this->multiple) {
-                        $this->value[] = $optionValue['value'];
-                    } else {
-                        $this->value = $optionValue['value'];
-                    }
-                }
-            }
-
-            // if no option is selected and if it is a simple select box, take the first option as the value
-            if (!$found && !$this->multiple && !empty($this->options)) {
-                $this->value = $this->options[0]['value'];
-            }
-        }
-    }
-
-    /**
-     * Returns option value with associated disabled flag.
-     *
-     * @param \DOMElement $node
-     *
-     * @return array
-     */
-    private function buildOptionValue(\DOMElement $node)
-    {
-        $option = array();
-
-        $defaultValue = (isset($node->nodeValue) && !empty($node->nodeValue)) ? $node->nodeValue : 'on';
-        $option['value'] = $node->hasAttribute('value') ? $node->getAttribute('value') : $defaultValue;
-        $option['disabled'] = $node->hasAttribute('disabled');
-
-        return $option;
-    }
-
-    /**
-     * Checks whether given value is in the existing options.
-     *
-     * @param string $optionValue
-     * @param array  $options
-     *
-     * @return bool
-     */
-    public function containsOption($optionValue, $options)
-    {
-        if ($this->validationDisabled) {
-            return true;
-        }
-
-        foreach ($options as $option) {
-            if ($option['value'] == $optionValue) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns list of available field options.
-     *
-     * @return array
-     */
-    public function availableOptionValues()
-    {
-        $values = array();
-
-        foreach ($this->options as $option) {
-            $values[] = $option['value'];
-        }
-
-        return $values;
-    }
-
-    /**
-     * Disables the internal validation of the field.
-     *
-     * @return self
-     */
-    public function disableValidation()
-    {
-        $this->validationDisabled = true;
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/dom-crawler/Field/FileFormField.php b/vendor/symfony/dom-crawler/Field/FileFormField.php
deleted file mode 100644
index 0e0f943..0000000
--- a/vendor/symfony/dom-crawler/Field/FileFormField.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?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\DomCrawler\Field;
-
-/**
- * FileFormField represents a file form field (an HTML file input tag).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FileFormField extends FormField
-{
-    /**
-     * Sets the PHP error code associated with the field.
-     *
-     * @param int $error The error code (one of UPLOAD_ERR_INI_SIZE, UPLOAD_ERR_FORM_SIZE, UPLOAD_ERR_PARTIAL, UPLOAD_ERR_NO_FILE, UPLOAD_ERR_NO_TMP_DIR, UPLOAD_ERR_CANT_WRITE, or UPLOAD_ERR_EXTENSION)
-     *
-     * @throws \InvalidArgumentException When error code doesn't exist
-     */
-    public function setErrorCode($error)
-    {
-        $codes = array(UPLOAD_ERR_INI_SIZE, UPLOAD_ERR_FORM_SIZE, UPLOAD_ERR_PARTIAL, UPLOAD_ERR_NO_FILE, UPLOAD_ERR_NO_TMP_DIR, UPLOAD_ERR_CANT_WRITE, UPLOAD_ERR_EXTENSION);
-        if (!in_array($error, $codes)) {
-            throw new \InvalidArgumentException(sprintf('The error code %s is not valid.', $error));
-        }
-
-        $this->value = array('name' => '', 'type' => '', 'tmp_name' => '', 'error' => $error, 'size' => 0);
-    }
-
-    /**
-     * Sets the value of the field.
-     *
-     * @param string $value The value of the field
-     */
-    public function upload($value)
-    {
-        $this->setValue($value);
-    }
-
-    /**
-     * Sets the value of the field.
-     *
-     * @param string $value The value of the field
-     */
-    public function setValue($value)
-    {
-        if (null !== $value && is_readable($value)) {
-            $error = UPLOAD_ERR_OK;
-            $size = filesize($value);
-            $info = pathinfo($value);
-            $name = $info['basename'];
-
-            // copy to a tmp location
-            $tmp = sys_get_temp_dir().'/'.sha1(uniqid(mt_rand(), true));
-            if (array_key_exists('extension', $info)) {
-                $tmp .= '.'.$info['extension'];
-            }
-            if (is_file($tmp)) {
-                unlink($tmp);
-            }
-            copy($value, $tmp);
-            $value = $tmp;
-        } else {
-            $error = UPLOAD_ERR_NO_FILE;
-            $size = 0;
-            $name = '';
-            $value = '';
-        }
-
-        $this->value = array('name' => $name, 'type' => '', 'tmp_name' => $value, 'error' => $error, 'size' => $size);
-    }
-
-    /**
-     * Sets path to the file as string for simulating HTTP request.
-     *
-     * @param string $path The path to the file
-     */
-    public function setFilePath($path)
-    {
-        parent::setValue($path);
-    }
-
-    /**
-     * Initializes the form field.
-     *
-     * @throws \LogicException When node type is incorrect
-     */
-    protected function initialize()
-    {
-        if ('input' !== $this->node->nodeName) {
-            throw new \LogicException(sprintf('A FileFormField can only be created from an input tag (%s given).', $this->node->nodeName));
-        }
-
-        if ('file' !== strtolower($this->node->getAttribute('type'))) {
-            throw new \LogicException(sprintf('A FileFormField can only be created from an input tag with a type of file (given type is %s).', $this->node->getAttribute('type')));
-        }
-
-        $this->setValue(null);
-    }
-}
diff --git a/vendor/symfony/dom-crawler/Field/FormField.php b/vendor/symfony/dom-crawler/Field/FormField.php
deleted file mode 100644
index a6b33de..0000000
--- a/vendor/symfony/dom-crawler/Field/FormField.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?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\DomCrawler\Field;
-
-/**
- * FormField is the abstract class for all form fields.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class FormField
-{
-    /**
-     * @var \DOMElement
-     */
-    protected $node;
-    /**
-     * @var string
-     */
-    protected $name;
-    /**
-     * @var string
-     */
-    protected $value;
-    /**
-     * @var \DOMDocument
-     */
-    protected $document;
-    /**
-     * @var \DOMXPath
-     */
-    protected $xpath;
-    /**
-     * @var bool
-     */
-    protected $disabled;
-
-    /**
-     * Constructor.
-     *
-     * @param \DOMElement $node The node associated with this field
-     */
-    public function __construct(\DOMElement $node)
-    {
-        $this->node = $node;
-        $this->name = $node->getAttribute('name');
-        $this->xpath = new \DOMXPath($node->ownerDocument);
-
-        $this->initialize();
-    }
-
-    /**
-     * Returns the name of the field.
-     *
-     * @return string The name of the field
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Gets the value of the field.
-     *
-     * @return string|array The value of the field
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Sets the value of the field.
-     *
-     * @param string $value The value of the field
-     */
-    public function setValue($value)
-    {
-        $this->value = (string) $value;
-    }
-
-    /**
-     * Returns true if the field should be included in the submitted values.
-     *
-     * @return bool true if the field should be included in the submitted values, false otherwise
-     */
-    public function hasValue()
-    {
-        return true;
-    }
-
-    /**
-     * Check if the current field is disabled.
-     *
-     * @return bool
-     */
-    public function isDisabled()
-    {
-        return $this->node->hasAttribute('disabled');
-    }
-
-    /**
-     * Initializes the form field.
-     */
-    abstract protected function initialize();
-}
diff --git a/vendor/symfony/dom-crawler/Field/InputFormField.php b/vendor/symfony/dom-crawler/Field/InputFormField.php
deleted file mode 100644
index 090913e..0000000
--- a/vendor/symfony/dom-crawler/Field/InputFormField.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\DomCrawler\Field;
-
-/**
- * InputFormField represents an input form field (an HTML input tag).
- *
- * For inputs with type of file, checkbox, or radio, there are other more
- * specialized classes (cf. FileFormField and ChoiceFormField).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class InputFormField extends FormField
-{
-    /**
-     * Initializes the form field.
-     *
-     * @throws \LogicException When node type is incorrect
-     */
-    protected function initialize()
-    {
-        if ('input' !== $this->node->nodeName && 'button' !== $this->node->nodeName) {
-            throw new \LogicException(sprintf('An InputFormField can only be created from an input or button tag (%s given).', $this->node->nodeName));
-        }
-
-        if ('checkbox' === strtolower($this->node->getAttribute('type'))) {
-            throw new \LogicException('Checkboxes should be instances of ChoiceFormField.');
-        }
-
-        if ('file' === strtolower($this->node->getAttribute('type'))) {
-            throw new \LogicException('File inputs should be instances of FileFormField.');
-        }
-
-        $this->value = $this->node->getAttribute('value');
-    }
-}
diff --git a/vendor/symfony/dom-crawler/Field/TextareaFormField.php b/vendor/symfony/dom-crawler/Field/TextareaFormField.php
deleted file mode 100644
index 15526e1..0000000
--- a/vendor/symfony/dom-crawler/Field/TextareaFormField.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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\DomCrawler\Field;
-
-/**
- * TextareaFormField represents a textarea form field (an HTML textarea tag).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TextareaFormField extends FormField
-{
-    /**
-     * Initializes the form field.
-     *
-     * @throws \LogicException When node type is incorrect
-     */
-    protected function initialize()
-    {
-        if ('textarea' !== $this->node->nodeName) {
-            throw new \LogicException(sprintf('A TextareaFormField can only be created from a textarea tag (%s given).', $this->node->nodeName));
-        }
-
-        $this->value = '';
-        foreach ($this->node->childNodes as $node) {
-            $this->value .= $node->wholeText;
-        }
-    }
-}
diff --git a/vendor/symfony/dom-crawler/Form.php b/vendor/symfony/dom-crawler/Form.php
deleted file mode 100644
index 0c7a3b2..0000000
--- a/vendor/symfony/dom-crawler/Form.php
+++ /dev/null
@@ -1,471 +0,0 @@
-<?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\DomCrawler;
-
-use Symfony\Component\DomCrawler\Field\ChoiceFormField;
-use Symfony\Component\DomCrawler\Field\FormField;
-
-/**
- * Form represents an HTML form.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Form extends Link implements \ArrayAccess
-{
-    /**
-     * @var \DOMElement
-     */
-    private $button;
-
-    /**
-     * @var FormFieldRegistry
-     */
-    private $fields;
-
-    /**
-     * @var string
-     */
-    private $baseHref;
-
-    /**
-     * Constructor.
-     *
-     * @param \DOMElement $node       A \DOMElement instance
-     * @param string      $currentUri The URI of the page where the form is embedded
-     * @param string      $method     The method to use for the link (if null, it defaults to the method defined by the form)
-     * @param string      $baseHref   The URI of the <base> used for relative links, but not for empty action
-     *
-     * @throws \LogicException if the node is not a button inside a form tag
-     */
-    public function __construct(\DOMElement $node, $currentUri, $method = null, $baseHref = null)
-    {
-        parent::__construct($node, $currentUri, $method);
-        $this->baseHref = $baseHref;
-
-        $this->initialize();
-    }
-
-    /**
-     * Gets the form node associated with this form.
-     *
-     * @return \DOMElement A \DOMElement instance
-     */
-    public function getFormNode()
-    {
-        return $this->node;
-    }
-
-    /**
-     * Sets the value of the fields.
-     *
-     * @param array $values An array of field values
-     *
-     * @return Form
-     */
-    public function setValues(array $values)
-    {
-        foreach ($values as $name => $value) {
-            $this->fields->set($name, $value);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Gets the field values.
-     *
-     * The returned array does not include file fields (@see getFiles).
-     *
-     * @return array An array of field values.
-     */
-    public function getValues()
-    {
-        $values = array();
-        foreach ($this->fields->all() as $name => $field) {
-            if ($field->isDisabled()) {
-                continue;
-            }
-
-            if (!$field instanceof Field\FileFormField && $field->hasValue()) {
-                $values[$name] = $field->getValue();
-            }
-        }
-
-        return $values;
-    }
-
-    /**
-     * Gets the file field values.
-     *
-     * @return array An array of file field values.
-     */
-    public function getFiles()
-    {
-        if (!in_array($this->getMethod(), array('POST', 'PUT', 'DELETE', 'PATCH'))) {
-            return array();
-        }
-
-        $files = array();
-
-        foreach ($this->fields->all() as $name => $field) {
-            if ($field->isDisabled()) {
-                continue;
-            }
-
-            if ($field instanceof Field\FileFormField) {
-                $files[$name] = $field->getValue();
-            }
-        }
-
-        return $files;
-    }
-
-    /**
-     * Gets the field values as PHP.
-     *
-     * This method converts fields with the array notation
-     * (like foo[bar] to arrays) like PHP does.
-     *
-     * @return array An array of field values.
-     */
-    public function getPhpValues()
-    {
-        $values = array();
-        foreach ($this->getValues() as $name => $value) {
-            $qs = http_build_query(array($name => $value), '', '&');
-            if (!empty($qs)) {
-                parse_str($qs, $expandedValue);
-                $varName = substr($name, 0, strlen(key($expandedValue)));
-                $values = array_replace_recursive($values, array($varName => current($expandedValue)));
-            }
-        }
-
-        return $values;
-    }
-
-    /**
-     * Gets the file field values as PHP.
-     *
-     * This method converts fields with the array notation
-     * (like foo[bar] to arrays) like PHP does.
-     *
-     * @return array An array of field values.
-     */
-    public function getPhpFiles()
-    {
-        $values = array();
-        foreach ($this->getFiles() as $name => $value) {
-            $qs = http_build_query(array($name => $value), '', '&');
-            if (!empty($qs)) {
-                parse_str($qs, $expandedValue);
-                $varName = substr($name, 0, strlen(key($expandedValue)));
-                $values = array_replace_recursive($values, array($varName => current($expandedValue)));
-            }
-        }
-
-        return $values;
-    }
-
-    /**
-     * Gets the URI of the form.
-     *
-     * The returned URI is not the same as the form "action" attribute.
-     * This method merges the value if the method is GET to mimics
-     * browser behavior.
-     *
-     * @return string The URI
-     */
-    public function getUri()
-    {
-        $uri = parent::getUri();
-
-        if (!in_array($this->getMethod(), array('POST', 'PUT', 'DELETE', 'PATCH'))) {
-            $query = parse_url($uri, PHP_URL_QUERY);
-            $currentParameters = array();
-            if ($query) {
-                parse_str($query, $currentParameters);
-            }
-
-            $queryString = http_build_query(array_merge($currentParameters, $this->getValues()), null, '&');
-
-            $pos = strpos($uri, '?');
-            $base = false === $pos ? $uri : substr($uri, 0, $pos);
-            $uri = rtrim($base.'?'.$queryString, '?');
-        }
-
-        return $uri;
-    }
-
-    protected function getRawUri()
-    {
-        return $this->node->getAttribute('action');
-    }
-
-    /**
-     * Gets the form method.
-     *
-     * If no method is defined in the form, GET is returned.
-     *
-     * @return string The method
-     */
-    public function getMethod()
-    {
-        if (null !== $this->method) {
-            return $this->method;
-        }
-
-        return $this->node->getAttribute('method') ? strtoupper($this->node->getAttribute('method')) : 'GET';
-    }
-
-    /**
-     * Returns true if the named field exists.
-     *
-     * @param string $name The field name
-     *
-     * @return bool true if the field exists, false otherwise
-     */
-    public function has($name)
-    {
-        return $this->fields->has($name);
-    }
-
-    /**
-     * Removes a field from the form.
-     *
-     * @param string $name The field name
-     *
-     * @throws \InvalidArgumentException when the name is malformed
-     */
-    public function remove($name)
-    {
-        $this->fields->remove($name);
-    }
-
-    /**
-     * Gets a named field.
-     *
-     * @param string $name The field name
-     *
-     * @return FormField The field instance
-     *
-     * @throws \InvalidArgumentException When field is not present in this form
-     */
-    public function get($name)
-    {
-        return $this->fields->get($name);
-    }
-
-    /**
-     * Sets a named field.
-     *
-     * @param FormField $field The field
-     */
-    public function set(FormField $field)
-    {
-        $this->fields->add($field);
-    }
-
-    /**
-     * Gets all fields.
-     *
-     * @return FormField[] An array of fields
-     */
-    public function all()
-    {
-        return $this->fields->all();
-    }
-
-    /**
-     * Returns true if the named field exists.
-     *
-     * @param string $name The field name
-     *
-     * @return bool true if the field exists, false otherwise
-     */
-    public function offsetExists($name)
-    {
-        return $this->has($name);
-    }
-
-    /**
-     * Gets the value of a field.
-     *
-     * @param string $name The field name
-     *
-     * @return FormField The associated Field instance
-     *
-     * @throws \InvalidArgumentException if the field does not exist
-     */
-    public function offsetGet($name)
-    {
-        return $this->fields->get($name);
-    }
-
-    /**
-     * Sets the value of a field.
-     *
-     * @param string       $name  The field name
-     * @param string|array $value The value of the field
-     *
-     * @throws \InvalidArgumentException if the field does not exist
-     */
-    public function offsetSet($name, $value)
-    {
-        $this->fields->set($name, $value);
-    }
-
-    /**
-     * Removes a field from the form.
-     *
-     * @param string $name The field name
-     */
-    public function offsetUnset($name)
-    {
-        $this->fields->remove($name);
-    }
-
-    /**
-     * Disables validation.
-     *
-     * @return self
-     */
-    public function disableValidation()
-    {
-        foreach ($this->fields->all() as $field) {
-            if ($field instanceof Field\ChoiceFormField) {
-                $field->disableValidation();
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sets the node for the form.
-     *
-     * Expects a 'submit' button \DOMElement and finds the corresponding form element, or the form element itself.
-     *
-     * @param \DOMElement $node A \DOMElement instance
-     *
-     * @throws \LogicException If given node is not a button or input or does not have a form ancestor
-     */
-    protected function setNode(\DOMElement $node)
-    {
-        $this->button = $node;
-        if ('button' === $node->nodeName || ('input' === $node->nodeName && in_array(strtolower($node->getAttribute('type')), array('submit', 'button', 'image')))) {
-            if ($node->hasAttribute('form')) {
-                // if the node has the HTML5-compliant 'form' attribute, use it
-                $formId = $node->getAttribute('form');
-                $form = $node->ownerDocument->getElementById($formId);
-                if (null === $form) {
-                    throw new \LogicException(sprintf('The selected node has an invalid form attribute (%s).', $formId));
-                }
-                $this->node = $form;
-
-                return;
-            }
-            // we loop until we find a form ancestor
-            do {
-                if (null === $node = $node->parentNode) {
-                    throw new \LogicException('The selected node does not have a form ancestor.');
-                }
-            } while ('form' !== $node->nodeName);
-        } elseif ('form' !== $node->nodeName) {
-            throw new \LogicException(sprintf('Unable to submit on a "%s" tag.', $node->nodeName));
-        }
-
-        $this->node = $node;
-    }
-
-    /**
-     * Adds form elements related to this form.
-     *
-     * Creates an internal copy of the submitted 'button' element and
-     * the form node or the entire document depending on whether we need
-     * to find non-descendant elements through HTML5 'form' attribute.
-     */
-    private function initialize()
-    {
-        $this->fields = new FormFieldRegistry();
-
-        $xpath = new \DOMXPath($this->node->ownerDocument);
-
-        // add submitted button if it has a valid name
-        if ('form' !== $this->button->nodeName && $this->button->hasAttribute('name') && $this->button->getAttribute('name')) {
-            if ('input' == $this->button->nodeName && 'image' == strtolower($this->button->getAttribute('type'))) {
-                $name = $this->button->getAttribute('name');
-                $this->button->setAttribute('value', '0');
-
-                // temporarily change the name of the input node for the x coordinate
-                $this->button->setAttribute('name', $name.'.x');
-                $this->set(new Field\InputFormField($this->button));
-
-                // temporarily change the name of the input node for the y coordinate
-                $this->button->setAttribute('name', $name.'.y');
-                $this->set(new Field\InputFormField($this->button));
-
-                // restore the original name of the input node
-                $this->button->setAttribute('name', $name);
-            } else {
-                $this->set(new Field\InputFormField($this->button));
-            }
-        }
-
-        // find form elements corresponding to the current form
-        if ($this->node->hasAttribute('id')) {
-            // corresponding elements are either descendants or have a matching HTML5 form attribute
-            $formId = Crawler::xpathLiteral($this->node->getAttribute('id'));
-
-            $fieldNodes = $xpath->query(sprintf('descendant::input[@form=%s] | descendant::button[@form=%s] | descendant::textarea[@form=%s] | descendant::select[@form=%s] | //form[@id=%s]//input[not(@form)] | //form[@id=%s]//button[not(@form)] | //form[@id=%s]//textarea[not(@form)] | //form[@id=%s]//select[not(@form)]', $formId, $formId, $formId, $formId, $formId, $formId, $formId, $formId));
-            foreach ($fieldNodes as $node) {
-                $this->addField($node);
-            }
-        } else {
-            // do the xpath query with $this->node as the context node, to only find descendant elements
-            // however, descendant elements with form attribute are not part of this form
-            $fieldNodes = $xpath->query('descendant::input[not(@form)] | descendant::button[not(@form)] | descendant::textarea[not(@form)] | descendant::select[not(@form)]', $this->node);
-            foreach ($fieldNodes as $node) {
-                $this->addField($node);
-            }
-        }
-
-        if ($this->baseHref && '' !== $this->node->getAttribute('action')) {
-            $this->currentUri = $this->baseHref;
-        }
-    }
-
-    private function addField(\DOMElement $node)
-    {
-        if (!$node->hasAttribute('name') || !$node->getAttribute('name')) {
-            return;
-        }
-
-        $nodeName = $node->nodeName;
-        if ('select' == $nodeName || 'input' == $nodeName && 'checkbox' == strtolower($node->getAttribute('type'))) {
-            $this->set(new Field\ChoiceFormField($node));
-        } elseif ('input' == $nodeName && 'radio' == strtolower($node->getAttribute('type'))) {
-            // there may be other fields with the same name that are no choice
-            // fields already registered (see https://github.com/symfony/symfony/issues/11689)
-            if ($this->has($node->getAttribute('name')) && $this->get($node->getAttribute('name')) instanceof ChoiceFormField) {
-                $this->get($node->getAttribute('name'))->addChoice($node);
-            } else {
-                $this->set(new Field\ChoiceFormField($node));
-            }
-        } elseif ('input' == $nodeName && 'file' == strtolower($node->getAttribute('type'))) {
-            $this->set(new Field\FileFormField($node));
-        } elseif ('input' == $nodeName && !in_array(strtolower($node->getAttribute('type')), array('submit', 'button', 'image'))) {
-            $this->set(new Field\InputFormField($node));
-        } elseif ('textarea' == $nodeName) {
-            $this->set(new Field\TextareaFormField($node));
-        }
-    }
-}
diff --git a/vendor/symfony/dom-crawler/FormFieldRegistry.php b/vendor/symfony/dom-crawler/FormFieldRegistry.php
deleted file mode 100644
index edb2788..0000000
--- a/vendor/symfony/dom-crawler/FormFieldRegistry.php
+++ /dev/null
@@ -1,222 +0,0 @@
-<?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\DomCrawler;
-
-use Symfony\Component\DomCrawler\Field\FormField;
-
-/**
- * This is an internal class that must not be used directly.
- */
-class FormFieldRegistry
-{
-    private $fields = array();
-
-    private $base;
-
-    /**
-     * Adds a field to the registry.
-     *
-     * @param FormField $field The field
-     *
-     * @throws \InvalidArgumentException when the name is malformed
-     */
-    public function add(FormField $field)
-    {
-        $segments = $this->getSegments($field->getName());
-
-        $target = &$this->fields;
-        while ($segments) {
-            if (!is_array($target)) {
-                $target = array();
-            }
-            $path = array_shift($segments);
-            if ('' === $path) {
-                $target = &$target[];
-            } else {
-                $target = &$target[$path];
-            }
-        }
-        $target = $field;
-    }
-
-    /**
-     * Removes a field and its children from the registry.
-     *
-     * @param string $name The fully qualified name of the base field
-     *
-     * @throws \InvalidArgumentException when the name is malformed
-     */
-    public function remove($name)
-    {
-        $segments = $this->getSegments($name);
-        $target = &$this->fields;
-        while (count($segments) > 1) {
-            $path = array_shift($segments);
-            if (!array_key_exists($path, $target)) {
-                return;
-            }
-            $target = &$target[$path];
-        }
-        unset($target[array_shift($segments)]);
-    }
-
-    /**
-     * Returns the value of the field and its children.
-     *
-     * @param string $name The fully qualified name of the field
-     *
-     * @return mixed The value of the field
-     *
-     * @throws \InvalidArgumentException when the name is malformed
-     * @throws \InvalidArgumentException if the field does not exist
-     */
-    public function &get($name)
-    {
-        $segments = $this->getSegments($name);
-        $target = &$this->fields;
-        while ($segments) {
-            $path = array_shift($segments);
-            if (!array_key_exists($path, $target)) {
-                throw new \InvalidArgumentException(sprintf('Unreachable field "%s"', $path));
-            }
-            $target = &$target[$path];
-        }
-
-        return $target;
-    }
-
-    /**
-     * Tests whether the form has the given field.
-     *
-     * @param string $name The fully qualified name of the field
-     *
-     * @return bool Whether the form has the given field
-     */
-    public function has($name)
-    {
-        try {
-            $this->get($name);
-
-            return true;
-        } catch (\InvalidArgumentException $e) {
-            return false;
-        }
-    }
-
-    /**
-     * Set the value of a field and its children.
-     *
-     * @param string $name  The fully qualified name of the field
-     * @param mixed  $value The value
-     *
-     * @throws \InvalidArgumentException when the name is malformed
-     * @throws \InvalidArgumentException if the field does not exist
-     */
-    public function set($name, $value)
-    {
-        $target = &$this->get($name);
-        if ((!is_array($value) && $target instanceof Field\FormField) || $target instanceof Field\ChoiceFormField) {
-            $target->setValue($value);
-        } elseif (is_array($value)) {
-            $fields = self::create($name, $value);
-            foreach ($fields->all() as $k => $v) {
-                $this->set($k, $v);
-            }
-        } else {
-            throw new \InvalidArgumentException(sprintf('Cannot set value on a compound field "%s".', $name));
-        }
-    }
-
-    /**
-     * Returns the list of field with their value.
-     *
-     * @return FormField[] The list of fields as array((string) Fully qualified name => (mixed) value)
-     */
-    public function all()
-    {
-        return $this->walk($this->fields, $this->base);
-    }
-
-    /**
-     * Creates an instance of the class.
-     *
-     * This function is made private because it allows overriding the $base and
-     * the $values properties without any type checking.
-     *
-     * @param string $base   The fully qualified name of the base field
-     * @param array  $values The values of the fields
-     *
-     * @return FormFieldRegistry
-     */
-    private static function create($base, array $values)
-    {
-        $registry = new static();
-        $registry->base = $base;
-        $registry->fields = $values;
-
-        return $registry;
-    }
-
-    /**
-     * Transforms a PHP array in a list of fully qualified name / value.
-     *
-     * @param array  $array  The PHP array
-     * @param string $base   The name of the base field
-     * @param array  $output The initial values
-     *
-     * @return array The list of fields as array((string) Fully qualified name => (mixed) value)
-     */
-    private function walk(array $array, $base = '', array &$output = array())
-    {
-        foreach ($array as $k => $v) {
-            $path = empty($base) ? $k : sprintf('%s[%s]', $base, $k);
-            if (is_array($v)) {
-                $this->walk($v, $path, $output);
-            } else {
-                $output[$path] = $v;
-            }
-        }
-
-        return $output;
-    }
-
-    /**
-     * Splits a field name into segments as a web browser would do.
-     *
-     * <code>
-     *     getSegments('base[foo][3][]') = array('base', 'foo, '3', '');
-     * </code>
-     *
-     * @param string $name The name of the field
-     *
-     * @return string[] The list of segments
-     *
-     * @throws \InvalidArgumentException when the name is malformed
-     */
-    private function getSegments($name)
-    {
-        if (preg_match('/^(?P<base>[^[]+)(?P<extra>(\[.*)|$)/', $name, $m)) {
-            $segments = array($m['base']);
-            while (!empty($m['extra'])) {
-                if (preg_match('/^\[(?P<segment>.*?)\](?P<extra>.*)$/', $m['extra'], $m)) {
-                    $segments[] = $m['segment'];
-                } else {
-                    throw new \InvalidArgumentException(sprintf('Malformed field path "%s"', $name));
-                }
-            }
-
-            return $segments;
-        }
-
-        throw new \InvalidArgumentException(sprintf('Malformed field path "%s"', $name));
-    }
-}
diff --git a/vendor/symfony/dom-crawler/LICENSE b/vendor/symfony/dom-crawler/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/dom-crawler/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/dom-crawler/Link.php b/vendor/symfony/dom-crawler/Link.php
deleted file mode 100644
index ede0991..0000000
--- a/vendor/symfony/dom-crawler/Link.php
+++ /dev/null
@@ -1,224 +0,0 @@
-<?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\DomCrawler;
-
-/**
- * Link represents an HTML link (an HTML a, area or link tag).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Link
-{
-    /**
-     * @var \DOMElement
-     */
-    protected $node;
-
-    /**
-     * @var string The method to use for the link
-     */
-    protected $method;
-
-    /**
-     * @var string The URI of the page where the link is embedded (or the base href)
-     */
-    protected $currentUri;
-
-    /**
-     * Constructor.
-     *
-     * @param \DOMElement $node       A \DOMElement instance
-     * @param string      $currentUri The URI of the page where the link is embedded (or the base href)
-     * @param string      $method     The method to use for the link (get by default)
-     *
-     * @throws \InvalidArgumentException if the node is not a link
-     */
-    public function __construct(\DOMElement $node, $currentUri, $method = 'GET')
-    {
-        if (!in_array(strtolower(substr($currentUri, 0, 4)), array('http', 'file'))) {
-            throw new \InvalidArgumentException(sprintf('Current URI must be an absolute URL ("%s").', $currentUri));
-        }
-
-        $this->setNode($node);
-        $this->method = $method ? strtoupper($method) : null;
-        $this->currentUri = $currentUri;
-    }
-
-    /**
-     * Gets the node associated with this link.
-     *
-     * @return \DOMElement A \DOMElement instance
-     */
-    public function getNode()
-    {
-        return $this->node;
-    }
-
-    /**
-     * Gets the method associated with this link.
-     *
-     * @return string The method
-     */
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    /**
-     * Gets the URI associated with this link.
-     *
-     * @return string The URI
-     */
-    public function getUri()
-    {
-        $uri = trim($this->getRawUri());
-
-        // absolute URL?
-        if (null !== parse_url($uri, PHP_URL_SCHEME)) {
-            return $uri;
-        }
-
-        // empty URI
-        if (!$uri) {
-            return $this->currentUri;
-        }
-
-        // an anchor
-        if ('#' === $uri[0]) {
-            return $this->cleanupAnchor($this->currentUri).$uri;
-        }
-
-        $baseUri = $this->cleanupUri($this->currentUri);
-
-        if ('?' === $uri[0]) {
-            return $baseUri.$uri;
-        }
-
-        // absolute URL with relative schema
-        if (0 === strpos($uri, '//')) {
-            return preg_replace('#^([^/]*)//.*$#', '$1', $baseUri).$uri;
-        }
-
-        $baseUri = preg_replace('#^(.*?//[^/]*)(?:\/.*)?$#', '$1', $baseUri);
-
-        // absolute path
-        if ('/' === $uri[0]) {
-            return $baseUri.$uri;
-        }
-
-        // relative path
-        $path = parse_url(substr($this->currentUri, strlen($baseUri)), PHP_URL_PATH);
-        $path = $this->canonicalizePath(substr($path, 0, strrpos($path, '/')).'/'.$uri);
-
-        return $baseUri.('' === $path || '/' !== $path[0] ? '/' : '').$path;
-    }
-
-    /**
-     * Returns raw URI data.
-     *
-     * @return string
-     */
-    protected function getRawUri()
-    {
-        return $this->node->getAttribute('href');
-    }
-
-    /**
-     * Returns the canonicalized URI path (see RFC 3986, section 5.2.4).
-     *
-     * @param string $path URI path
-     *
-     * @return string
-     */
-    protected function canonicalizePath($path)
-    {
-        if ('' === $path || '/' === $path) {
-            return $path;
-        }
-
-        if ('.' === substr($path, -1)) {
-            $path .= '/';
-        }
-
-        $output = array();
-
-        foreach (explode('/', $path) as $segment) {
-            if ('..' === $segment) {
-                array_pop($output);
-            } elseif ('.' !== $segment) {
-                $output[] = $segment;
-            }
-        }
-
-        return implode('/', $output);
-    }
-
-    /**
-     * Sets current \DOMElement instance.
-     *
-     * @param \DOMElement $node A \DOMElement instance
-     *
-     * @throws \LogicException If given node is not an anchor
-     */
-    protected function setNode(\DOMElement $node)
-    {
-        if ('a' !== $node->nodeName && 'area' !== $node->nodeName && 'link' !== $node->nodeName) {
-            throw new \LogicException(sprintf('Unable to navigate from a "%s" tag.', $node->nodeName));
-        }
-
-        $this->node = $node;
-    }
-
-    /**
-     * Removes the query string and the anchor from the given uri.
-     *
-     * @param string $uri The uri to clean
-     *
-     * @return string
-     */
-    private function cleanupUri($uri)
-    {
-        return $this->cleanupQuery($this->cleanupAnchor($uri));
-    }
-
-    /**
-     * Remove the query string from the uri.
-     *
-     * @param string $uri
-     *
-     * @return string
-     */
-    private function cleanupQuery($uri)
-    {
-        if (false !== $pos = strpos($uri, '?')) {
-            return substr($uri, 0, $pos);
-        }
-
-        return $uri;
-    }
-
-    /**
-     * Remove the anchor from the uri.
-     *
-     * @param string $uri
-     *
-     * @return string
-     */
-    private function cleanupAnchor($uri)
-    {
-        if (false !== $pos = strpos($uri, '#')) {
-            return substr($uri, 0, $pos);
-        }
-
-        return $uri;
-    }
-}
diff --git a/vendor/symfony/dom-crawler/README.md b/vendor/symfony/dom-crawler/README.md
deleted file mode 100644
index d2c8de5..0000000
--- a/vendor/symfony/dom-crawler/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-DomCrawler Component
-====================
-
-DomCrawler eases DOM navigation for HTML and XML documents.
-
-If you are familiar with jQuery, DomCrawler is a PHP equivalent:
-
-```php
-use Symfony\Component\DomCrawler\Crawler;
-
-$crawler = new Crawler();
-$crawler->addContent('<html><body><p>Hello World!</p></body></html>');
-
-print $crawler->filterXPath('descendant-or-self::body/p')->text();
-```
-
-If you are also using the CssSelector component, you can use CSS Selectors
-instead of XPath expressions:
-
-```php
-use Symfony\Component\DomCrawler\Crawler;
-
-$crawler = new Crawler();
-$crawler->addContent('<html><body><p>Hello World!</p></body></html>');
-
-print $crawler->filter('body > p')->text();
-```
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/DomCrawler/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/dom-crawler/composer.json b/vendor/symfony/dom-crawler/composer.json
deleted file mode 100644
index f8033c5..0000000
--- a/vendor/symfony/dom-crawler/composer.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-    "name": "symfony/dom-crawler",
-    "type": "library",
-    "description": "Symfony DomCrawler Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9"
-    },
-    "require-dev": {
-        "symfony/css-selector": "~2.3"
-    },
-    "suggest": {
-        "symfony/css-selector": ""
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\DomCrawler\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/dom-crawler/phpunit.xml.dist b/vendor/symfony/dom-crawler/phpunit.xml.dist
deleted file mode 100644
index d15dd6a..0000000
--- a/vendor/symfony/dom-crawler/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony DomCrawler Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/event-dispatcher/.gitignore b/vendor/symfony/event-dispatcher/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/event-dispatcher/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/event-dispatcher/CHANGELOG.md b/vendor/symfony/event-dispatcher/CHANGELOG.md
deleted file mode 100644
index bb42ee1..0000000
--- a/vendor/symfony/event-dispatcher/CHANGELOG.md
+++ /dev/null
@@ -1,23 +0,0 @@
-CHANGELOG
-=========
-
-2.5.0
------
-
- * added Debug\TraceableEventDispatcher (originally in HttpKernel)
- * changed Debug\TraceableEventDispatcherInterface to extend EventDispatcherInterface
- * added RegisterListenersPass (originally in HttpKernel)
-
-2.1.0
------
-
- * added TraceableEventDispatcherInterface
- * added ContainerAwareEventDispatcher
- * added a reference to the EventDispatcher on the Event
- * added a reference to the Event name on the event
- * added fluid interface to the dispatch() method which now returns the Event
-   object
- * added GenericEvent event class
- * added the possibility for subscribers to subscribe several times for the
-   same event
- * added ImmutableEventDispatcher
diff --git a/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php b/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php
deleted file mode 100644
index b92defe..0000000
--- a/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?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\EventDispatcher;
-
-use Symfony\Component\DependencyInjection\ContainerInterface;
-
-/**
- * Lazily loads listeners and subscribers from the dependency injection
- * container.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @author Jordan Alliot <jordan.alliot@gmail.com>
- */
-class ContainerAwareEventDispatcher extends EventDispatcher
-{
-    /**
-     * The container from where services are loaded.
-     *
-     * @var ContainerInterface
-     */
-    private $container;
-
-    /**
-     * The service IDs of the event listeners and subscribers.
-     *
-     * @var array
-     */
-    private $listenerIds = array();
-
-    /**
-     * The services registered as listeners.
-     *
-     * @var array
-     */
-    private $listeners = array();
-
-    /**
-     * Constructor.
-     *
-     * @param ContainerInterface $container A ContainerInterface instance
-     */
-    public function __construct(ContainerInterface $container)
-    {
-        $this->container = $container;
-    }
-
-    /**
-     * Adds a service as event listener.
-     *
-     * @param string $eventName Event for which the listener is added
-     * @param array  $callback  The service ID of the listener service & the method
-     *                          name that has to be called
-     * @param int    $priority  The higher this value, the earlier an event listener
-     *                          will be triggered in the chain.
-     *                          Defaults to 0.
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function addListenerService($eventName, $callback, $priority = 0)
-    {
-        if (!is_array($callback) || 2 !== count($callback)) {
-            throw new \InvalidArgumentException('Expected an array("service", "method") argument');
-        }
-
-        $this->listenerIds[$eventName][] = array($callback[0], $callback[1], $priority);
-    }
-
-    public function removeListener($eventName, $listener)
-    {
-        $this->lazyLoad($eventName);
-
-        if (isset($this->listenerIds[$eventName])) {
-            foreach ($this->listenerIds[$eventName] as $i => $args) {
-                list($serviceId, $method, $priority) = $args;
-                $key = $serviceId.'.'.$method;
-                if (isset($this->listeners[$eventName][$key]) && $listener === array($this->listeners[$eventName][$key], $method)) {
-                    unset($this->listeners[$eventName][$key]);
-                    if (empty($this->listeners[$eventName])) {
-                        unset($this->listeners[$eventName]);
-                    }
-                    unset($this->listenerIds[$eventName][$i]);
-                    if (empty($this->listenerIds[$eventName])) {
-                        unset($this->listenerIds[$eventName]);
-                    }
-                }
-            }
-        }
-
-        parent::removeListener($eventName, $listener);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasListeners($eventName = null)
-    {
-        if (null === $eventName) {
-            return (bool) count($this->listenerIds) || (bool) count($this->listeners);
-        }
-
-        if (isset($this->listenerIds[$eventName])) {
-            return true;
-        }
-
-        return parent::hasListeners($eventName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListeners($eventName = null)
-    {
-        if (null === $eventName) {
-            foreach ($this->listenerIds as $serviceEventName => $args) {
-                $this->lazyLoad($serviceEventName);
-            }
-        } else {
-            $this->lazyLoad($eventName);
-        }
-
-        return parent::getListeners($eventName);
-    }
-
-    /**
-     * Adds a service as event subscriber.
-     *
-     * @param string $serviceId The service ID of the subscriber service
-     * @param string $class     The service's class name (which must implement EventSubscriberInterface)
-     */
-    public function addSubscriberService($serviceId, $class)
-    {
-        foreach ($class::getSubscribedEvents() as $eventName => $params) {
-            if (is_string($params)) {
-                $this->listenerIds[$eventName][] = array($serviceId, $params, 0);
-            } elseif (is_string($params[0])) {
-                $this->listenerIds[$eventName][] = array($serviceId, $params[0], isset($params[1]) ? $params[1] : 0);
-            } else {
-                foreach ($params as $listener) {
-                    $this->listenerIds[$eventName][] = array($serviceId, $listener[0], isset($listener[1]) ? $listener[1] : 0);
-                }
-            }
-        }
-    }
-
-    public function getContainer()
-    {
-        return $this->container;
-    }
-
-    /**
-     * Lazily loads listeners for this event from the dependency injection
-     * container.
-     *
-     * @param string $eventName The name of the event to dispatch. The name of
-     *                          the event is the name of the method that is
-     *                          invoked on listeners.
-     */
-    protected function lazyLoad($eventName)
-    {
-        if (isset($this->listenerIds[$eventName])) {
-            foreach ($this->listenerIds[$eventName] as $args) {
-                list($serviceId, $method, $priority) = $args;
-                $listener = $this->container->get($serviceId);
-
-                $key = $serviceId.'.'.$method;
-                if (!isset($this->listeners[$eventName][$key])) {
-                    $this->addListener($eventName, array($listener, $method), $priority);
-                } elseif ($listener !== $this->listeners[$eventName][$key]) {
-                    parent::removeListener($eventName, array($this->listeners[$eventName][$key], $method));
-                    $this->addListener($eventName, array($listener, $method), $priority);
-                }
-
-                $this->listeners[$eventName][$key] = $listener;
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
deleted file mode 100644
index 7653ccf..0000000
--- a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
+++ /dev/null
@@ -1,335 +0,0 @@
-<?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\EventDispatcher\Debug;
-
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\Stopwatch\Stopwatch;
-use Psr\Log\LoggerInterface;
-
-/**
- * Collects some data about event listeners.
- *
- * This event dispatcher delegates the dispatching to another one.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TraceableEventDispatcher implements TraceableEventDispatcherInterface
-{
-    protected $logger;
-    protected $stopwatch;
-
-    private $called;
-    private $dispatcher;
-    private $wrappedListeners;
-
-    /**
-     * Constructor.
-     *
-     * @param EventDispatcherInterface $dispatcher An EventDispatcherInterface instance
-     * @param Stopwatch                $stopwatch  A Stopwatch instance
-     * @param LoggerInterface          $logger     A LoggerInterface instance
-     */
-    public function __construct(EventDispatcherInterface $dispatcher, Stopwatch $stopwatch, LoggerInterface $logger = null)
-    {
-        $this->dispatcher = $dispatcher;
-        $this->stopwatch = $stopwatch;
-        $this->logger = $logger;
-        $this->called = array();
-        $this->wrappedListeners = array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addListener($eventName, $listener, $priority = 0)
-    {
-        $this->dispatcher->addListener($eventName, $listener, $priority);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSubscriber(EventSubscriberInterface $subscriber)
-    {
-        $this->dispatcher->addSubscriber($subscriber);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeListener($eventName, $listener)
-    {
-        if (isset($this->wrappedListeners[$eventName])) {
-            foreach ($this->wrappedListeners[$eventName] as $index => $wrappedListener) {
-                if ($wrappedListener->getWrappedListener() === $listener) {
-                    $listener = $wrappedListener;
-                    unset($this->wrappedListeners[$eventName][$index]);
-                    break;
-                }
-            }
-        }
-
-        return $this->dispatcher->removeListener($eventName, $listener);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeSubscriber(EventSubscriberInterface $subscriber)
-    {
-        return $this->dispatcher->removeSubscriber($subscriber);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListeners($eventName = null)
-    {
-        return $this->dispatcher->getListeners($eventName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasListeners($eventName = null)
-    {
-        return $this->dispatcher->hasListeners($eventName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dispatch($eventName, Event $event = null)
-    {
-        if (null === $event) {
-            $event = new Event();
-        }
-
-        $this->preProcess($eventName);
-        $this->preDispatch($eventName, $event);
-
-        $e = $this->stopwatch->start($eventName, 'section');
-
-        $this->dispatcher->dispatch($eventName, $event);
-
-        if ($e->isStarted()) {
-            $e->stop();
-        }
-
-        $this->postDispatch($eventName, $event);
-        $this->postProcess($eventName);
-
-        return $event;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCalledListeners()
-    {
-        $called = array();
-        foreach ($this->called as $eventName => $listeners) {
-            foreach ($listeners as $listener) {
-                $info = $this->getListenerInfo($listener->getWrappedListener(), $eventName);
-                $called[$eventName.'.'.$info['pretty']] = $info;
-            }
-        }
-
-        return $called;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getNotCalledListeners()
-    {
-        try {
-            $allListeners = $this->getListeners();
-        } catch (\Exception $e) {
-            if (null !== $this->logger) {
-                $this->logger->info('An exception was thrown while getting the uncalled listeners.', array('exception' => $e));
-            }
-
-            // unable to retrieve the uncalled listeners
-            return array();
-        }
-
-        $notCalled = array();
-        foreach ($allListeners as $eventName => $listeners) {
-            foreach ($listeners as $listener) {
-                $called = false;
-                if (isset($this->called[$eventName])) {
-                    foreach ($this->called[$eventName] as $l) {
-                        if ($l->getWrappedListener() === $listener) {
-                            $called = true;
-
-                            break;
-                        }
-                    }
-                }
-
-                if (!$called) {
-                    $info = $this->getListenerInfo($listener, $eventName);
-                    $notCalled[$eventName.'.'.$info['pretty']] = $info;
-                }
-            }
-        }
-
-        return $notCalled;
-    }
-
-    /**
-     * Proxies all method calls to the original event dispatcher.
-     *
-     * @param string $method    The method name
-     * @param array  $arguments The method arguments
-     *
-     * @return mixed
-     */
-    public function __call($method, $arguments)
-    {
-        return call_user_func_array(array($this->dispatcher, $method), $arguments);
-    }
-
-    /**
-     * Called before dispatching the event.
-     *
-     * @param string $eventName The event name
-     * @param Event  $event     The event
-     */
-    protected function preDispatch($eventName, Event $event)
-    {
-    }
-
-    /**
-     * Called after dispatching the event.
-     *
-     * @param string $eventName The event name
-     * @param Event  $event     The event
-     */
-    protected function postDispatch($eventName, Event $event)
-    {
-    }
-
-    private function preProcess($eventName)
-    {
-        foreach ($this->dispatcher->getListeners($eventName) as $listener) {
-            $this->dispatcher->removeListener($eventName, $listener);
-            $info = $this->getListenerInfo($listener, $eventName);
-            $name = isset($info['class']) ? $info['class'] : $info['type'];
-            $wrappedListener = new WrappedListener($listener, $name, $this->stopwatch, $this);
-            $this->wrappedListeners[$eventName][] = $wrappedListener;
-            $this->dispatcher->addListener($eventName, $wrappedListener);
-        }
-    }
-
-    private function postProcess($eventName)
-    {
-        unset($this->wrappedListeners[$eventName]);
-        $skipped = false;
-        foreach ($this->dispatcher->getListeners($eventName) as $listener) {
-            if (!$listener instanceof WrappedListener) { // #12845: a new listener was added during dispatch.
-                continue;
-            }
-            // Unwrap listener
-            $this->dispatcher->removeListener($eventName, $listener);
-            $this->dispatcher->addListener($eventName, $listener->getWrappedListener());
-
-            $info = $this->getListenerInfo($listener->getWrappedListener(), $eventName);
-            if ($listener->wasCalled()) {
-                if (null !== $this->logger) {
-                    $this->logger->debug(sprintf('Notified event "%s" to listener "%s".', $eventName, $info['pretty']));
-                }
-
-                if (!isset($this->called[$eventName])) {
-                    $this->called[$eventName] = new \SplObjectStorage();
-                }
-
-                $this->called[$eventName]->attach($listener);
-            }
-
-            if (null !== $this->logger && $skipped) {
-                $this->logger->debug(sprintf('Listener "%s" was not called for event "%s".', $info['pretty'], $eventName));
-            }
-
-            if ($listener->stoppedPropagation()) {
-                if (null !== $this->logger) {
-                    $this->logger->debug(sprintf('Listener "%s" stopped propagation of the event "%s".', $info['pretty'], $eventName));
-                }
-
-                $skipped = true;
-            }
-        }
-    }
-
-    /**
-     * Returns information about the listener.
-     *
-     * @param object $listener  The listener
-     * @param string $eventName The event name
-     *
-     * @return array Information about the listener
-     */
-    private function getListenerInfo($listener, $eventName)
-    {
-        $info = array(
-            'event' => $eventName,
-        );
-        if ($listener instanceof \Closure) {
-            $info += array(
-                'type' => 'Closure',
-                'pretty' => 'closure',
-            );
-        } elseif (is_string($listener)) {
-            try {
-                $r = new \ReflectionFunction($listener);
-                $file = $r->getFileName();
-                $line = $r->getStartLine();
-            } catch (\ReflectionException $e) {
-                $file = null;
-                $line = null;
-            }
-            $info += array(
-                'type' => 'Function',
-                'function' => $listener,
-                'file' => $file,
-                'line' => $line,
-                'pretty' => $listener,
-            );
-        } elseif (is_array($listener) || (is_object($listener) && is_callable($listener))) {
-            if (!is_array($listener)) {
-                $listener = array($listener, '__invoke');
-            }
-            $class = is_object($listener[0]) ? get_class($listener[0]) : $listener[0];
-            try {
-                $r = new \ReflectionMethod($class, $listener[1]);
-                $file = $r->getFileName();
-                $line = $r->getStartLine();
-            } catch (\ReflectionException $e) {
-                $file = null;
-                $line = null;
-            }
-            $info += array(
-                'type' => 'Method',
-                'class' => $class,
-                'method' => $listener[1],
-                'file' => $file,
-                'line' => $line,
-                'pretty' => $class.'::'.$listener[1],
-            );
-        }
-
-        return $info;
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php
deleted file mode 100644
index 5483e81..0000000
--- a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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\EventDispatcher\Debug;
-
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface TraceableEventDispatcherInterface extends EventDispatcherInterface
-{
-    /**
-     * Gets the called listeners.
-     *
-     * @return array An array of called listeners
-     */
-    public function getCalledListeners();
-
-    /**
-     * Gets the not called listeners.
-     *
-     * @return array An array of not called listeners
-     */
-    public function getNotCalledListeners();
-}
diff --git a/vendor/symfony/event-dispatcher/Debug/WrappedListener.php b/vendor/symfony/event-dispatcher/Debug/WrappedListener.php
deleted file mode 100644
index e16627d..0000000
--- a/vendor/symfony/event-dispatcher/Debug/WrappedListener.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?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\EventDispatcher\Debug;
-
-use Symfony\Component\Stopwatch\Stopwatch;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class WrappedListener
-{
-    private $listener;
-    private $name;
-    private $called;
-    private $stoppedPropagation;
-    private $stopwatch;
-    private $dispatcher;
-
-    public function __construct($listener, $name, Stopwatch $stopwatch, EventDispatcherInterface $dispatcher = null)
-    {
-        $this->listener = $listener;
-        $this->name = $name;
-        $this->stopwatch = $stopwatch;
-        $this->dispatcher = $dispatcher;
-        $this->called = false;
-        $this->stoppedPropagation = false;
-    }
-
-    public function getWrappedListener()
-    {
-        return $this->listener;
-    }
-
-    public function wasCalled()
-    {
-        return $this->called;
-    }
-
-    public function stoppedPropagation()
-    {
-        return $this->stoppedPropagation;
-    }
-
-    public function __invoke(Event $event, $eventName, EventDispatcherInterface $dispatcher)
-    {
-        $this->called = true;
-
-        $e = $this->stopwatch->start($this->name, 'event_listener');
-
-        call_user_func($this->listener, $event, $eventName, $this->dispatcher ?: $dispatcher);
-
-        if ($e->isStarted()) {
-            $e->stop();
-        }
-
-        if ($event->isPropagationStopped()) {
-            $this->stoppedPropagation = true;
-        }
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php b/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php
deleted file mode 100644
index 7e74a37..0000000
--- a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?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\EventDispatcher\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-
-/**
- * Compiler pass to register tagged services for an event dispatcher.
- */
-class RegisterListenersPass implements CompilerPassInterface
-{
-    /**
-     * @var string
-     */
-    protected $dispatcherService;
-
-    /**
-     * @var string
-     */
-    protected $listenerTag;
-
-    /**
-     * @var string
-     */
-    protected $subscriberTag;
-
-    /**
-     * Constructor.
-     *
-     * @param string $dispatcherService Service name of the event dispatcher in processed container
-     * @param string $listenerTag       Tag name used for listener
-     * @param string $subscriberTag     Tag name used for subscribers
-     */
-    public function __construct($dispatcherService = 'event_dispatcher', $listenerTag = 'kernel.event_listener', $subscriberTag = 'kernel.event_subscriber')
-    {
-        $this->dispatcherService = $dispatcherService;
-        $this->listenerTag = $listenerTag;
-        $this->subscriberTag = $subscriberTag;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        if (!$container->hasDefinition($this->dispatcherService) && !$container->hasAlias($this->dispatcherService)) {
-            return;
-        }
-
-        $definition = $container->findDefinition($this->dispatcherService);
-
-        foreach ($container->findTaggedServiceIds($this->listenerTag) as $id => $events) {
-            $def = $container->getDefinition($id);
-            if (!$def->isPublic()) {
-                throw new \InvalidArgumentException(sprintf('The service "%s" must be public as event listeners are lazy-loaded.', $id));
-            }
-
-            if ($def->isAbstract()) {
-                throw new \InvalidArgumentException(sprintf('The service "%s" must not be abstract as event listeners are lazy-loaded.', $id));
-            }
-
-            foreach ($events as $event) {
-                $priority = isset($event['priority']) ? $event['priority'] : 0;
-
-                if (!isset($event['event'])) {
-                    throw new \InvalidArgumentException(sprintf('Service "%s" must define the "event" attribute on "%s" tags.', $id, $this->listenerTag));
-                }
-
-                if (!isset($event['method'])) {
-                    $event['method'] = 'on'.preg_replace_callback(array(
-                        '/(?<=\b)[a-z]/i',
-                        '/[^a-z0-9]/i',
-                    ), function ($matches) { return strtoupper($matches[0]); }, $event['event']);
-                    $event['method'] = preg_replace('/[^a-z0-9]/i', '', $event['method']);
-                }
-
-                $definition->addMethodCall('addListenerService', array($event['event'], array($id, $event['method']), $priority));
-            }
-        }
-
-        foreach ($container->findTaggedServiceIds($this->subscriberTag) as $id => $attributes) {
-            $def = $container->getDefinition($id);
-            if (!$def->isPublic()) {
-                throw new \InvalidArgumentException(sprintf('The service "%s" must be public as event subscribers are lazy-loaded.', $id));
-            }
-
-            if ($def->isAbstract()) {
-                throw new \InvalidArgumentException(sprintf('The service "%s" must not be abstract as event subscribers are lazy-loaded.', $id));
-            }
-
-            // We must assume that the class value has been correctly filled, even if the service is created by a factory
-            $class = $container->getParameterBag()->resolveValue($def->getClass());
-
-            $refClass = new \ReflectionClass($class);
-            $interface = 'Symfony\Component\EventDispatcher\EventSubscriberInterface';
-            if (!$refClass->implementsInterface($interface)) {
-                throw new \InvalidArgumentException(sprintf('Service "%s" must implement interface "%s".', $id, $interface));
-            }
-
-            $definition->addMethodCall('addSubscriberService', array($id, $class));
-        }
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Event.php b/vendor/symfony/event-dispatcher/Event.php
deleted file mode 100644
index 4a56349..0000000
--- a/vendor/symfony/event-dispatcher/Event.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?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\EventDispatcher;
-
-/**
- * Event is the base class for classes containing event data.
- *
- * This class contains no event data. It is used by events that do not pass
- * state information to an event handler when an event is raised.
- *
- * You can call the method stopPropagation() to abort the execution of
- * further listeners in your event listener.
- *
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Event
-{
-    /**
-     * @var bool Whether no further event listeners should be triggered
-     */
-    private $propagationStopped = false;
-
-    /**
-     * @var EventDispatcher Dispatcher that dispatched this event
-     */
-    private $dispatcher;
-
-    /**
-     * @var string This event's name
-     */
-    private $name;
-
-    /**
-     * Returns whether further event listeners should be triggered.
-     *
-     * @see Event::stopPropagation()
-     *
-     * @return bool Whether propagation was already stopped for this event.
-     */
-    public function isPropagationStopped()
-    {
-        return $this->propagationStopped;
-    }
-
-    /**
-     * Stops the propagation of the event to further event listeners.
-     *
-     * If multiple event listeners are connected to the same event, no
-     * further event listener will be triggered once any trigger calls
-     * stopPropagation().
-     */
-    public function stopPropagation()
-    {
-        $this->propagationStopped = true;
-    }
-
-    /**
-     * Stores the EventDispatcher that dispatches this Event.
-     *
-     * @param EventDispatcherInterface $dispatcher
-     *
-     * @deprecated since version 2.4, to be removed in 3.0. The event dispatcher is passed to the listener call.
-     */
-    public function setDispatcher(EventDispatcherInterface $dispatcher)
-    {
-        $this->dispatcher = $dispatcher;
-    }
-
-    /**
-     * Returns the EventDispatcher that dispatches this Event.
-     *
-     * @return EventDispatcherInterface
-     *
-     * @deprecated since version 2.4, to be removed in 3.0. The event dispatcher is passed to the listener call.
-     */
-    public function getDispatcher()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in 3.0. The event dispatcher instance can be received in the listener call instead.', E_USER_DEPRECATED);
-
-        return $this->dispatcher;
-    }
-
-    /**
-     * Gets the event's name.
-     *
-     * @return string
-     *
-     * @deprecated since version 2.4, to be removed in 3.0. The event name is passed to the listener call.
-     */
-    public function getName()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in 3.0. The event name can be received in the listener call instead.', E_USER_DEPRECATED);
-
-        return $this->name;
-    }
-
-    /**
-     * Sets the event's name property.
-     *
-     * @param string $name The event name.
-     *
-     * @deprecated since version 2.4, to be removed in 3.0. The event name is passed to the listener call.
-     */
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/EventDispatcher.php b/vendor/symfony/event-dispatcher/EventDispatcher.php
deleted file mode 100644
index b54d07b..0000000
--- a/vendor/symfony/event-dispatcher/EventDispatcher.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?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\EventDispatcher;
-
-/**
- * The EventDispatcherInterface is the central point of Symfony's event listener system.
- *
- * Listeners are registered on the manager and events are dispatched through the
- * manager.
- *
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @author Jordan Alliot <jordan.alliot@gmail.com>
- */
-class EventDispatcher implements EventDispatcherInterface
-{
-    private $listeners = array();
-    private $sorted = array();
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dispatch($eventName, Event $event = null)
-    {
-        if (null === $event) {
-            $event = new Event();
-        }
-
-        $event->setDispatcher($this);
-        $event->setName($eventName);
-
-        if ($listeners = $this->getListeners($eventName)) {
-            $this->doDispatch($listeners, $eventName, $event);
-        }
-
-        return $event;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListeners($eventName = null)
-    {
-        if (null !== $eventName) {
-            if (!isset($this->listeners[$eventName])) {
-                return array();
-            }
-
-            if (!isset($this->sorted[$eventName])) {
-                $this->sortListeners($eventName);
-            }
-
-            return $this->sorted[$eventName];
-        }
-
-        foreach ($this->listeners as $eventName => $eventListeners) {
-            if (!isset($this->sorted[$eventName])) {
-                $this->sortListeners($eventName);
-            }
-        }
-
-        return array_filter($this->sorted);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasListeners($eventName = null)
-    {
-        return (bool) count($this->getListeners($eventName));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addListener($eventName, $listener, $priority = 0)
-    {
-        $this->listeners[$eventName][$priority][] = $listener;
-        unset($this->sorted[$eventName]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeListener($eventName, $listener)
-    {
-        if (!isset($this->listeners[$eventName])) {
-            return;
-        }
-
-        foreach ($this->listeners[$eventName] as $priority => $listeners) {
-            if (false !== ($key = array_search($listener, $listeners, true))) {
-                unset($this->listeners[$eventName][$priority][$key], $this->sorted[$eventName]);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSubscriber(EventSubscriberInterface $subscriber)
-    {
-        foreach ($subscriber->getSubscribedEvents() as $eventName => $params) {
-            if (is_string($params)) {
-                $this->addListener($eventName, array($subscriber, $params));
-            } elseif (is_string($params[0])) {
-                $this->addListener($eventName, array($subscriber, $params[0]), isset($params[1]) ? $params[1] : 0);
-            } else {
-                foreach ($params as $listener) {
-                    $this->addListener($eventName, array($subscriber, $listener[0]), isset($listener[1]) ? $listener[1] : 0);
-                }
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeSubscriber(EventSubscriberInterface $subscriber)
-    {
-        foreach ($subscriber->getSubscribedEvents() as $eventName => $params) {
-            if (is_array($params) && is_array($params[0])) {
-                foreach ($params as $listener) {
-                    $this->removeListener($eventName, array($subscriber, $listener[0]));
-                }
-            } else {
-                $this->removeListener($eventName, array($subscriber, is_string($params) ? $params : $params[0]));
-            }
-        }
-    }
-
-    /**
-     * Triggers the listeners of an event.
-     *
-     * This method can be overridden to add functionality that is executed
-     * for each listener.
-     *
-     * @param callable[] $listeners The event listeners.
-     * @param string     $eventName The name of the event to dispatch.
-     * @param Event      $event     The event object to pass to the event handlers/listeners.
-     */
-    protected function doDispatch($listeners, $eventName, Event $event)
-    {
-        foreach ($listeners as $listener) {
-            call_user_func($listener, $event, $eventName, $this);
-            if ($event->isPropagationStopped()) {
-                break;
-            }
-        }
-    }
-
-    /**
-     * Sorts the internal list of listeners for the given event by priority.
-     *
-     * @param string $eventName The name of the 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/EventDispatcherInterface.php b/vendor/symfony/event-dispatcher/EventDispatcherInterface.php
deleted file mode 100644
index a9bdd2c..0000000
--- a/vendor/symfony/event-dispatcher/EventDispatcherInterface.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?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\EventDispatcher;
-
-/**
- * The EventDispatcherInterface is the central point of Symfony's event listener system.
- * Listeners are registered on the manager and events are dispatched through the
- * manager.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface EventDispatcherInterface
-{
-    /**
-     * Dispatches an event to all registered listeners.
-     *
-     * @param string $eventName The name of the event to dispatch. The name of
-     *                          the event is the name of the method that is
-     *                          invoked on listeners.
-     * @param Event  $event     The event to pass to the event handlers/listeners.
-     *                          If not supplied, an empty Event instance is created.
-     *
-     * @return Event
-     */
-    public function dispatch($eventName, Event $event = null);
-
-    /**
-     * Adds an event listener that listens on the specified events.
-     *
-     * @param string   $eventName The event to listen on
-     * @param callable $listener  The listener
-     * @param int      $priority  The higher this value, the earlier an event
-     *                            listener will be triggered in the chain (defaults to 0)
-     */
-    public function addListener($eventName, $listener, $priority = 0);
-
-    /**
-     * Adds an event subscriber.
-     *
-     * The subscriber is asked for all the events he is
-     * interested in and added as a listener for these events.
-     *
-     * @param EventSubscriberInterface $subscriber The subscriber.
-     */
-    public function addSubscriber(EventSubscriberInterface $subscriber);
-
-    /**
-     * Removes an event listener from the specified events.
-     *
-     * @param string   $eventName The event to remove a listener from
-     * @param callable $listener  The listener to remove
-     */
-    public function removeListener($eventName, $listener);
-
-    /**
-     * Removes an event subscriber.
-     *
-     * @param EventSubscriberInterface $subscriber The subscriber
-     */
-    public function removeSubscriber(EventSubscriberInterface $subscriber);
-
-    /**
-     * Gets the listeners of a specific event or all listeners sorted by descending priority.
-     *
-     * @param string $eventName The name of the event
-     *
-     * @return array The event listeners for the specified event, or all event listeners by event name
-     */
-    public function getListeners($eventName = null);
-
-    /**
-     * Checks whether an event has any registered listeners.
-     *
-     * @param string $eventName The name of the event
-     *
-     * @return bool true if the specified event has any listeners, false otherwise
-     */
-    public function hasListeners($eventName = null);
-}
diff --git a/vendor/symfony/event-dispatcher/EventSubscriberInterface.php b/vendor/symfony/event-dispatcher/EventSubscriberInterface.php
deleted file mode 100644
index ec53e54..0000000
--- a/vendor/symfony/event-dispatcher/EventSubscriberInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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\EventDispatcher;
-
-/**
- * An EventSubscriber knows himself what events he is interested in.
- * If an EventSubscriber is added to an EventDispatcherInterface, the manager invokes
- * {@link getSubscribedEvents} and registers the subscriber as a listener for all
- * returned events.
- *
- * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author Jonathan Wage <jonwage@gmail.com>
- * @author Roman Borschel <roman@code-factory.org>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface EventSubscriberInterface
-{
-    /**
-     * Returns an array of event names this subscriber wants to listen to.
-     *
-     * The array keys are event names and the value can be:
-     *
-     *  * The method name to call (priority defaults to 0)
-     *  * An array composed of the method name to call and the priority
-     *  * An array of arrays composed of the method names to call and respective
-     *    priorities, or 0 if unset
-     *
-     * For instance:
-     *
-     *  * array('eventName' => 'methodName')
-     *  * array('eventName' => array('methodName', $priority))
-     *  * array('eventName' => array(array('methodName1', $priority), array('methodName2'))
-     *
-     * @return array The event names to listen to
-     */
-    public static function getSubscribedEvents();
-}
diff --git a/vendor/symfony/event-dispatcher/GenericEvent.php b/vendor/symfony/event-dispatcher/GenericEvent.php
deleted file mode 100644
index 6458180..0000000
--- a/vendor/symfony/event-dispatcher/GenericEvent.php
+++ /dev/null
@@ -1,186 +0,0 @@
-<?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\EventDispatcher;
-
-/**
- * Event encapsulation class.
- *
- * Encapsulates events thus decoupling the observer from the subject they encapsulate.
- *
- * @author Drak <drak@zikula.org>
- */
-class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate
-{
-    /**
-     * Event subject.
-     *
-     * @var mixed usually object or callable
-     */
-    protected $subject;
-
-    /**
-     * Array of arguments.
-     *
-     * @var array
-     */
-    protected $arguments;
-
-    /**
-     * Encapsulate an event with $subject and $args.
-     *
-     * @param mixed $subject   The subject of the event, usually an object.
-     * @param array $arguments Arguments to store in the event.
-     */
-    public function __construct($subject = null, array $arguments = array())
-    {
-        $this->subject = $subject;
-        $this->arguments = $arguments;
-    }
-
-    /**
-     * Getter for subject property.
-     *
-     * @return mixed $subject The observer subject.
-     */
-    public function getSubject()
-    {
-        return $this->subject;
-    }
-
-    /**
-     * Get argument by key.
-     *
-     * @param string $key Key.
-     *
-     * @throws \InvalidArgumentException If key is not found.
-     *
-     * @return mixed Contents of array key.
-     */
-    public function getArgument($key)
-    {
-        if ($this->hasArgument($key)) {
-            return $this->arguments[$key];
-        }
-
-        throw new \InvalidArgumentException(sprintf('Argument "%s" not found.', $key));
-    }
-
-    /**
-     * Add argument to event.
-     *
-     * @param string $key   Argument name.
-     * @param mixed  $value Value.
-     *
-     * @return GenericEvent
-     */
-    public function setArgument($key, $value)
-    {
-        $this->arguments[$key] = $value;
-
-        return $this;
-    }
-
-    /**
-     * Getter for all arguments.
-     *
-     * @return array
-     */
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    /**
-     * Set args property.
-     *
-     * @param array $args Arguments.
-     *
-     * @return GenericEvent
-     */
-    public function setArguments(array $args = array())
-    {
-        $this->arguments = $args;
-
-        return $this;
-    }
-
-    /**
-     * Has argument.
-     *
-     * @param string $key Key of arguments array.
-     *
-     * @return bool
-     */
-    public function hasArgument($key)
-    {
-        return array_key_exists($key, $this->arguments);
-    }
-
-    /**
-     * ArrayAccess for argument getter.
-     *
-     * @param string $key Array key.
-     *
-     * @throws \InvalidArgumentException If key does not exist in $this->args.
-     *
-     * @return mixed
-     */
-    public function offsetGet($key)
-    {
-        return $this->getArgument($key);
-    }
-
-    /**
-     * ArrayAccess for argument setter.
-     *
-     * @param string $key   Array key to set.
-     * @param mixed  $value Value.
-     */
-    public function offsetSet($key, $value)
-    {
-        $this->setArgument($key, $value);
-    }
-
-    /**
-     * ArrayAccess for unset argument.
-     *
-     * @param string $key Array key.
-     */
-    public function offsetUnset($key)
-    {
-        if ($this->hasArgument($key)) {
-            unset($this->arguments[$key]);
-        }
-    }
-
-    /**
-     * ArrayAccess has argument.
-     *
-     * @param string $key Array key.
-     *
-     * @return bool
-     */
-    public function offsetExists($key)
-    {
-        return $this->hasArgument($key);
-    }
-
-    /**
-     * IteratorAggregate for iterating over the object like an array.
-     *
-     * @return \ArrayIterator
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->arguments);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php b/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php
deleted file mode 100644
index 7ef9ece..0000000
--- a/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?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\EventDispatcher;
-
-/**
- * A read-only proxy for an event dispatcher.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ImmutableEventDispatcher implements EventDispatcherInterface
-{
-    /**
-     * The proxied dispatcher.
-     *
-     * @var EventDispatcherInterface
-     */
-    private $dispatcher;
-
-    /**
-     * Creates an unmodifiable proxy for an event dispatcher.
-     *
-     * @param EventDispatcherInterface $dispatcher The proxied event dispatcher.
-     */
-    public function __construct(EventDispatcherInterface $dispatcher)
-    {
-        $this->dispatcher = $dispatcher;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dispatch($eventName, Event $event = null)
-    {
-        return $this->dispatcher->dispatch($eventName, $event);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addListener($eventName, $listener, $priority = 0)
-    {
-        throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSubscriber(EventSubscriberInterface $subscriber)
-    {
-        throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeListener($eventName, $listener)
-    {
-        throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeSubscriber(EventSubscriberInterface $subscriber)
-    {
-        throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getListeners($eventName = null)
-    {
-        return $this->dispatcher->getListeners($eventName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasListeners($eventName = null)
-    {
-        return $this->dispatcher->hasListeners($eventName);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/LICENSE b/vendor/symfony/event-dispatcher/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/event-dispatcher/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/event-dispatcher/README.md b/vendor/symfony/event-dispatcher/README.md
deleted file mode 100644
index 8031f4d..0000000
--- a/vendor/symfony/event-dispatcher/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-EventDispatcher Component
-=========================
-
-The Symfony EventDispatcher component implements the Mediator pattern in a
-simple and effective way to make your projects truly extensible.
-
-```php
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\Event;
-
-$dispatcher = new EventDispatcher();
-
-$dispatcher->addListener('event_name', function (Event $event) {
-    // ...
-});
-
-$dispatcher->dispatch('event_name');
-```
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/EventDispatcher/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php
deleted file mode 100644
index 2e4c3fd..0000000
--- a/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php
+++ /dev/null
@@ -1,382 +0,0 @@
-<?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\EventDispatcher\Tests;
-
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-abstract class AbstractEventDispatcherTest extends \PHPUnit_Framework_TestCase
-{
-    /* Some pseudo events */
-    const preFoo = 'pre.foo';
-    const postFoo = 'post.foo';
-    const preBar = 'pre.bar';
-    const postBar = 'post.bar';
-
-    /**
-     * @var EventDispatcher
-     */
-    private $dispatcher;
-
-    private $listener;
-
-    protected function setUp()
-    {
-        $this->dispatcher = $this->createEventDispatcher();
-        $this->listener = new TestEventListener();
-    }
-
-    protected function tearDown()
-    {
-        $this->dispatcher = null;
-        $this->listener = null;
-    }
-
-    abstract protected function createEventDispatcher();
-
-    public function testInitialState()
-    {
-        $this->assertEquals(array(), $this->dispatcher->getListeners());
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertFalse($this->dispatcher->hasListeners(self::postFoo));
-    }
-
-    public function testAddListener()
-    {
-        $this->dispatcher->addListener('pre.foo', array($this->listener, 'preFoo'));
-        $this->dispatcher->addListener('post.foo', array($this->listener, 'postFoo'));
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertTrue($this->dispatcher->hasListeners(self::postFoo));
-        $this->assertCount(1, $this->dispatcher->getListeners(self::preFoo));
-        $this->assertCount(1, $this->dispatcher->getListeners(self::postFoo));
-        $this->assertCount(2, $this->dispatcher->getListeners());
-    }
-
-    public function testGetListenersSortsByPriority()
-    {
-        $listener1 = new TestEventListener();
-        $listener2 = new TestEventListener();
-        $listener3 = new TestEventListener();
-        $listener1->name = '1';
-        $listener2->name = '2';
-        $listener3->name = '3';
-
-        $this->dispatcher->addListener('pre.foo', array($listener1, 'preFoo'), -10);
-        $this->dispatcher->addListener('pre.foo', array($listener2, 'preFoo'), 10);
-        $this->dispatcher->addListener('pre.foo', array($listener3, 'preFoo'));
-
-        $expected = array(
-            array($listener2, 'preFoo'),
-            array($listener3, 'preFoo'),
-            array($listener1, 'preFoo'),
-        );
-
-        $this->assertSame($expected, $this->dispatcher->getListeners('pre.foo'));
-    }
-
-    public function testGetAllListenersSortsByPriority()
-    {
-        $listener1 = new TestEventListener();
-        $listener2 = new TestEventListener();
-        $listener3 = new TestEventListener();
-        $listener4 = new TestEventListener();
-        $listener5 = new TestEventListener();
-        $listener6 = new TestEventListener();
-
-        $this->dispatcher->addListener('pre.foo', $listener1, -10);
-        $this->dispatcher->addListener('pre.foo', $listener2);
-        $this->dispatcher->addListener('pre.foo', $listener3, 10);
-        $this->dispatcher->addListener('post.foo', $listener4, -10);
-        $this->dispatcher->addListener('post.foo', $listener5);
-        $this->dispatcher->addListener('post.foo', $listener6, 10);
-
-        $expected = array(
-            'pre.foo' => array($listener3, $listener2, $listener1),
-            'post.foo' => array($listener6, $listener5, $listener4),
-        );
-
-        $this->assertSame($expected, $this->dispatcher->getListeners());
-    }
-
-    public function testDispatch()
-    {
-        $this->dispatcher->addListener('pre.foo', array($this->listener, 'preFoo'));
-        $this->dispatcher->addListener('post.foo', array($this->listener, 'postFoo'));
-        $this->dispatcher->dispatch(self::preFoo);
-        $this->assertTrue($this->listener->preFooInvoked);
-        $this->assertFalse($this->listener->postFooInvoked);
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch('noevent'));
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch(self::preFoo));
-        $event = new Event();
-        $return = $this->dispatcher->dispatch(self::preFoo, $event);
-        $this->assertSame($event, $return);
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyDispatch()
-    {
-        $event = new Event();
-        $return = $this->dispatcher->dispatch(self::preFoo, $event);
-        $this->assertEquals('pre.foo', $event->getName());
-    }
-
-    public function testDispatchForClosure()
-    {
-        $invoked = 0;
-        $listener = function () use (&$invoked) {
-            ++$invoked;
-        };
-        $this->dispatcher->addListener('pre.foo', $listener);
-        $this->dispatcher->addListener('post.foo', $listener);
-        $this->dispatcher->dispatch(self::preFoo);
-        $this->assertEquals(1, $invoked);
-    }
-
-    public function testStopEventPropagation()
-    {
-        $otherListener = new TestEventListener();
-
-        // postFoo() stops the propagation, so only one listener should
-        // be executed
-        // Manually set priority to enforce $this->listener to be called first
-        $this->dispatcher->addListener('post.foo', array($this->listener, 'postFoo'), 10);
-        $this->dispatcher->addListener('post.foo', array($otherListener, 'preFoo'));
-        $this->dispatcher->dispatch(self::postFoo);
-        $this->assertTrue($this->listener->postFooInvoked);
-        $this->assertFalse($otherListener->postFooInvoked);
-    }
-
-    public function testDispatchByPriority()
-    {
-        $invoked = array();
-        $listener1 = function () use (&$invoked) {
-            $invoked[] = '1';
-        };
-        $listener2 = function () use (&$invoked) {
-            $invoked[] = '2';
-        };
-        $listener3 = function () use (&$invoked) {
-            $invoked[] = '3';
-        };
-        $this->dispatcher->addListener('pre.foo', $listener1, -10);
-        $this->dispatcher->addListener('pre.foo', $listener2);
-        $this->dispatcher->addListener('pre.foo', $listener3, 10);
-        $this->dispatcher->dispatch(self::preFoo);
-        $this->assertEquals(array('3', '2', '1'), $invoked);
-    }
-
-    public function testRemoveListener()
-    {
-        $this->dispatcher->addListener('pre.bar', $this->listener);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preBar));
-        $this->dispatcher->removeListener('pre.bar', $this->listener);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preBar));
-        $this->dispatcher->removeListener('notExists', $this->listener);
-    }
-
-    public function testAddSubscriber()
-    {
-        $eventSubscriber = new TestEventSubscriber();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertTrue($this->dispatcher->hasListeners(self::postFoo));
-    }
-
-    public function testAddSubscriberWithPriorities()
-    {
-        $eventSubscriber = new TestEventSubscriber();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-
-        $eventSubscriber = new TestEventSubscriberWithPriorities();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-
-        $listeners = $this->dispatcher->getListeners('pre.foo');
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertCount(2, $listeners);
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Tests\TestEventSubscriberWithPriorities', $listeners[0][0]);
-    }
-
-    public function testAddSubscriberWithMultipleListeners()
-    {
-        $eventSubscriber = new TestEventSubscriberWithMultipleListeners();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-
-        $listeners = $this->dispatcher->getListeners('pre.foo');
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertCount(2, $listeners);
-        $this->assertEquals('preFoo2', $listeners[0][1]);
-    }
-
-    public function testRemoveSubscriber()
-    {
-        $eventSubscriber = new TestEventSubscriber();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertTrue($this->dispatcher->hasListeners(self::postFoo));
-        $this->dispatcher->removeSubscriber($eventSubscriber);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertFalse($this->dispatcher->hasListeners(self::postFoo));
-    }
-
-    public function testRemoveSubscriberWithPriorities()
-    {
-        $eventSubscriber = new TestEventSubscriberWithPriorities();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->dispatcher->removeSubscriber($eventSubscriber);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-    }
-
-    public function testRemoveSubscriberWithMultipleListeners()
-    {
-        $eventSubscriber = new TestEventSubscriberWithMultipleListeners();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertCount(2, $this->dispatcher->getListeners(self::preFoo));
-        $this->dispatcher->removeSubscriber($eventSubscriber);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyEventReceivesTheDispatcherInstance()
-    {
-        $dispatcher = null;
-        $this->dispatcher->addListener('test', function ($event) use (&$dispatcher) {
-            $dispatcher = $event->getDispatcher();
-        });
-        $this->dispatcher->dispatch('test');
-        $this->assertSame($this->dispatcher, $dispatcher);
-    }
-
-    public function testEventReceivesTheDispatcherInstanceAsArgument()
-    {
-        $listener = new TestWithDispatcher();
-        $this->dispatcher->addListener('test', array($listener, 'foo'));
-        $this->assertNull($listener->name);
-        $this->assertNull($listener->dispatcher);
-        $this->dispatcher->dispatch('test');
-        $this->assertEquals('test', $listener->name);
-        $this->assertSame($this->dispatcher, $listener->dispatcher);
-    }
-
-    /**
-     * @see https://bugs.php.net/bug.php?id=62976
-     *
-     * This bug affects:
-     *  - The PHP 5.3 branch for versions < 5.3.18
-     *  - The PHP 5.4 branch for versions < 5.4.8
-     *  - The PHP 5.5 branch is not affected
-     */
-    public function testWorkaroundForPhpBug62976()
-    {
-        $dispatcher = $this->createEventDispatcher();
-        $dispatcher->addListener('bug.62976', new CallableClass());
-        $dispatcher->removeListener('bug.62976', function () {});
-        $this->assertTrue($dispatcher->hasListeners('bug.62976'));
-    }
-
-    public function testHasListenersWhenAddedCallbackListenerIsRemoved()
-    {
-        $listener = function () {};
-        $this->dispatcher->addListener('foo', $listener);
-        $this->dispatcher->removeListener('foo', $listener);
-        $this->assertFalse($this->dispatcher->hasListeners());
-    }
-
-    public function testGetListenersWhenAddedCallbackListenerIsRemoved()
-    {
-        $listener = function () {};
-        $this->dispatcher->addListener('foo', $listener);
-        $this->dispatcher->removeListener('foo', $listener);
-        $this->assertSame(array(), $this->dispatcher->getListeners());
-    }
-
-    public function testHasListenersWithoutEventsReturnsFalseAfterHasListenersWithEventHasBeenCalled()
-    {
-        $this->assertFalse($this->dispatcher->hasListeners('foo'));
-        $this->assertFalse($this->dispatcher->hasListeners());
-    }
-}
-
-class CallableClass
-{
-    public function __invoke()
-    {
-    }
-}
-
-class TestEventListener
-{
-    public $preFooInvoked = false;
-    public $postFooInvoked = false;
-
-    /* Listener methods */
-
-    public function preFoo(Event $e)
-    {
-        $this->preFooInvoked = true;
-    }
-
-    public function postFoo(Event $e)
-    {
-        $this->postFooInvoked = true;
-
-        $e->stopPropagation();
-    }
-}
-
-class TestWithDispatcher
-{
-    public $name;
-    public $dispatcher;
-
-    public function foo(Event $e, $name, $dispatcher)
-    {
-        $this->name = $name;
-        $this->dispatcher = $dispatcher;
-    }
-}
-
-class TestEventSubscriber implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return array('pre.foo' => 'preFoo', 'post.foo' => 'postFoo');
-    }
-}
-
-class TestEventSubscriberWithPriorities implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return array(
-            'pre.foo' => array('preFoo', 10),
-            'post.foo' => array('postFoo'),
-            );
-    }
-}
-
-class TestEventSubscriberWithMultipleListeners implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return array('pre.foo' => array(
-            array('preFoo1'),
-            array('preFoo2', 10),
-        ));
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php
deleted file mode 100644
index 6f2fbcb..0000000
--- a/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php
+++ /dev/null
@@ -1,249 +0,0 @@
-<?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\EventDispatcher\Tests;
-
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\DependencyInjection\Scope;
-use Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-class ContainerAwareEventDispatcherTest extends AbstractEventDispatcherTest
-{
-    protected function createEventDispatcher()
-    {
-        $container = new Container();
-
-        return new ContainerAwareEventDispatcher($container);
-    }
-
-    public function testAddAListenerService()
-    {
-        $event = new Event();
-
-        $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service');
-
-        $service
-            ->expects($this->once())
-            ->method('onEvent')
-            ->with($event)
-        ;
-
-        $container = new Container();
-        $container->set('service.listener', $service);
-
-        $dispatcher = new ContainerAwareEventDispatcher($container);
-        $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'));
-
-        $dispatcher->dispatch('onEvent', $event);
-    }
-
-    public function testAddASubscriberService()
-    {
-        $event = new Event();
-
-        $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\SubscriberService');
-
-        $service
-            ->expects($this->once())
-            ->method('onEvent')
-            ->with($event)
-        ;
-
-        $container = new Container();
-        $container->set('service.subscriber', $service);
-
-        $dispatcher = new ContainerAwareEventDispatcher($container);
-        $dispatcher->addSubscriberService('service.subscriber', 'Symfony\Component\EventDispatcher\Tests\SubscriberService');
-
-        $dispatcher->dispatch('onEvent', $event);
-    }
-
-    public function testPreventDuplicateListenerService()
-    {
-        $event = new Event();
-
-        $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service');
-
-        $service
-            ->expects($this->once())
-            ->method('onEvent')
-            ->with($event)
-        ;
-
-        $container = new Container();
-        $container->set('service.listener', $service);
-
-        $dispatcher = new ContainerAwareEventDispatcher($container);
-        $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'), 5);
-        $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'), 10);
-
-        $dispatcher->dispatch('onEvent', $event);
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     */
-    public function testTriggerAListenerServiceOutOfScope()
-    {
-        $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service');
-
-        $scope = new Scope('scope');
-        $container = new Container();
-        $container->addScope($scope);
-        $container->enterScope('scope');
-
-        $container->set('service.listener', $service, 'scope');
-
-        $dispatcher = new ContainerAwareEventDispatcher($container);
-        $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'));
-
-        $container->leaveScope('scope');
-        $dispatcher->dispatch('onEvent');
-    }
-
-    public function testReEnteringAScope()
-    {
-        $event = new Event();
-
-        $service1 = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service');
-
-        $service1
-            ->expects($this->exactly(2))
-            ->method('onEvent')
-            ->with($event)
-        ;
-
-        $scope = new Scope('scope');
-        $container = new Container();
-        $container->addScope($scope);
-        $container->enterScope('scope');
-
-        $container->set('service.listener', $service1, 'scope');
-
-        $dispatcher = new ContainerAwareEventDispatcher($container);
-        $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'));
-        $dispatcher->dispatch('onEvent', $event);
-
-        $service2 = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service');
-
-        $service2
-            ->expects($this->once())
-            ->method('onEvent')
-            ->with($event)
-        ;
-
-        $container->enterScope('scope');
-        $container->set('service.listener', $service2, 'scope');
-
-        $dispatcher->dispatch('onEvent', $event);
-
-        $container->leaveScope('scope');
-
-        $dispatcher->dispatch('onEvent');
-    }
-
-    public function testHasListenersOnLazyLoad()
-    {
-        $event = new Event();
-
-        $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service');
-
-        $container = new Container();
-        $container->set('service.listener', $service);
-
-        $dispatcher = new ContainerAwareEventDispatcher($container);
-        $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'));
-
-        $event->setDispatcher($dispatcher);
-        $event->setName('onEvent');
-
-        $service
-            ->expects($this->once())
-            ->method('onEvent')
-            ->with($event)
-        ;
-
-        $this->assertTrue($dispatcher->hasListeners());
-
-        if ($dispatcher->hasListeners('onEvent')) {
-            $dispatcher->dispatch('onEvent');
-        }
-    }
-
-    public function testGetListenersOnLazyLoad()
-    {
-        $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service');
-
-        $container = new Container();
-        $container->set('service.listener', $service);
-
-        $dispatcher = new ContainerAwareEventDispatcher($container);
-        $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'));
-
-        $listeners = $dispatcher->getListeners();
-
-        $this->assertTrue(isset($listeners['onEvent']));
-
-        $this->assertCount(1, $dispatcher->getListeners('onEvent'));
-    }
-
-    public function testRemoveAfterDispatch()
-    {
-        $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service');
-
-        $container = new Container();
-        $container->set('service.listener', $service);
-
-        $dispatcher = new ContainerAwareEventDispatcher($container);
-        $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'));
-
-        $dispatcher->dispatch('onEvent', new Event());
-        $dispatcher->removeListener('onEvent', array($container->get('service.listener'), 'onEvent'));
-        $this->assertFalse($dispatcher->hasListeners('onEvent'));
-    }
-
-    public function testRemoveBeforeDispatch()
-    {
-        $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service');
-
-        $container = new Container();
-        $container->set('service.listener', $service);
-
-        $dispatcher = new ContainerAwareEventDispatcher($container);
-        $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'));
-
-        $dispatcher->removeListener('onEvent', array($container->get('service.listener'), 'onEvent'));
-        $this->assertFalse($dispatcher->hasListeners('onEvent'));
-    }
-}
-
-class Service
-{
-    public function onEvent(Event $e)
-    {
-    }
-}
-
-class SubscriberService implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return array(
-            'onEvent' => array('onEvent'),
-        );
-    }
-
-    public function onEvent(Event $e)
-    {
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
deleted file mode 100644
index 4aa6226..0000000
--- a/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?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\EventDispatcher\Tests\Debug;
-
-use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-class TraceableEventDispatcherTest extends \PHPUnit_Framework_TestCase
-{
-    public function testAddRemoveListener()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $tdispatcher->addListener('foo', $listener = function () {; });
-        $listeners = $dispatcher->getListeners('foo');
-        $this->assertCount(1, $listeners);
-        $this->assertSame($listener, $listeners[0]);
-
-        $tdispatcher->removeListener('foo', $listener);
-        $this->assertCount(0, $dispatcher->getListeners('foo'));
-    }
-
-    public function testGetListeners()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $tdispatcher->addListener('foo', $listener = function () {; });
-        $this->assertSame($dispatcher->getListeners('foo'), $tdispatcher->getListeners('foo'));
-    }
-
-    public function testHasListeners()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $this->assertFalse($dispatcher->hasListeners('foo'));
-        $this->assertFalse($tdispatcher->hasListeners('foo'));
-
-        $tdispatcher->addListener('foo', $listener = function () {; });
-        $this->assertTrue($dispatcher->hasListeners('foo'));
-        $this->assertTrue($tdispatcher->hasListeners('foo'));
-    }
-
-    public function testAddRemoveSubscriber()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $subscriber = new EventSubscriber();
-
-        $tdispatcher->addSubscriber($subscriber);
-        $listeners = $dispatcher->getListeners('foo');
-        $this->assertCount(1, $listeners);
-        $this->assertSame(array($subscriber, 'call'), $listeners[0]);
-
-        $tdispatcher->removeSubscriber($subscriber);
-        $this->assertCount(0, $dispatcher->getListeners('foo'));
-    }
-
-    public function testGetCalledListeners()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-        $tdispatcher->addListener('foo', $listener = function () {; });
-
-        $this->assertEquals(array(), $tdispatcher->getCalledListeners());
-        $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'type' => 'Closure', 'pretty' => 'closure')), $tdispatcher->getNotCalledListeners());
-
-        $tdispatcher->dispatch('foo');
-
-        $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'type' => 'Closure', 'pretty' => 'closure')), $tdispatcher->getCalledListeners());
-        $this->assertEquals(array(), $tdispatcher->getNotCalledListeners());
-    }
-
-    public function testGetCalledListenersNested()
-    {
-        $tdispatcher = null;
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $dispatcher->addListener('foo', function (Event $event, $eventName, $dispatcher) use (&$tdispatcher) {
-            $tdispatcher = $dispatcher;
-            $dispatcher->dispatch('bar');
-        });
-        $dispatcher->addListener('bar', function (Event $event) {});
-        $dispatcher->dispatch('foo');
-        $this->assertSame($dispatcher, $tdispatcher);
-        $this->assertCount(2, $dispatcher->getCalledListeners());
-    }
-
-    public function testLogger()
-    {
-        $logger = $this->getMock('Psr\Log\LoggerInterface');
-
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger);
-        $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".');
-
-        $tdispatcher->dispatch('foo');
-    }
-
-    public function testLoggerWithStoppedEvent()
-    {
-        $logger = $this->getMock('Psr\Log\LoggerInterface');
-
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger);
-        $tdispatcher->addListener('foo', $listener1 = function (Event $event) { $event->stopPropagation(); });
-        $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".');
-        $logger->expects($this->at(2))->method('debug')->with('Listener "closure" was not called for event "foo".');
-
-        $tdispatcher->dispatch('foo');
-    }
-
-    public function testDispatchCallListeners()
-    {
-        $called = array();
-
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-        $tdispatcher->addListener('foo', $listener1 = function () use (&$called) { $called[] = 'foo1'; });
-        $tdispatcher->addListener('foo', $listener2 = function () use (&$called) { $called[] = 'foo2'; });
-
-        $tdispatcher->dispatch('foo');
-
-        $this->assertEquals(array('foo1', 'foo2'), $called);
-    }
-
-    public function testDispatchNested()
-    {
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $loop = 1;
-        $dispatcher->addListener('foo', $listener1 = function () use ($dispatcher, &$loop) {
-            ++$loop;
-            if (2 == $loop) {
-                $dispatcher->dispatch('foo');
-            }
-        });
-
-        $dispatcher->dispatch('foo');
-    }
-
-    public function testDispatchReusedEventNested()
-    {
-        $nestedCall = false;
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $dispatcher->addListener('foo', function (Event $e) use ($dispatcher) {
-            $dispatcher->dispatch('bar', $e);
-        });
-        $dispatcher->addListener('bar', function (Event $e) use (&$nestedCall) {
-            $nestedCall = true;
-        });
-
-        $this->assertFalse($nestedCall);
-        $dispatcher->dispatch('foo');
-        $this->assertTrue($nestedCall);
-    }
-
-    public function testListenerCanRemoveItselfWhenExecuted()
-    {
-        $eventDispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $listener1 = function ($event, $eventName, EventDispatcherInterface $dispatcher) use (&$listener1) {
-            $dispatcher->removeListener('foo', $listener1);
-        };
-        $eventDispatcher->addListener('foo', $listener1);
-        $eventDispatcher->addListener('foo', function () {});
-        $eventDispatcher->dispatch('foo');
-
-        $this->assertCount(1, $eventDispatcher->getListeners('foo'), 'expected listener1 to be removed');
-    }
-}
-
-class EventSubscriber implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return array('foo' => 'call');
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php b/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
deleted file mode 100644
index 0fdd637..0000000
--- a/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?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\EventDispatcher\Tests\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass;
-
-class RegisterListenersPassTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * Tests that event subscribers not implementing EventSubscriberInterface
-     * trigger an exception.
-     *
-     * @expectedException \InvalidArgumentException
-     */
-    public function testEventSubscriberWithoutInterface()
-    {
-        // one service, not implementing any interface
-        $services = array(
-            'my_event_subscriber' => array(0 => array()),
-        );
-
-        $definition = $this->getMock('Symfony\Component\DependencyInjection\Definition');
-        $definition->expects($this->atLeastOnce())
-            ->method('isPublic')
-            ->will($this->returnValue(true));
-        $definition->expects($this->atLeastOnce())
-            ->method('getClass')
-            ->will($this->returnValue('stdClass'));
-
-        $builder = $this->getMock(
-            'Symfony\Component\DependencyInjection\ContainerBuilder',
-            array('hasDefinition', 'findTaggedServiceIds', 'getDefinition')
-        );
-        $builder->expects($this->any())
-            ->method('hasDefinition')
-            ->will($this->returnValue(true));
-
-        // We don't test kernel.event_listener here
-        $builder->expects($this->atLeastOnce())
-            ->method('findTaggedServiceIds')
-            ->will($this->onConsecutiveCalls(array(), $services));
-
-        $builder->expects($this->atLeastOnce())
-            ->method('getDefinition')
-            ->will($this->returnValue($definition));
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($builder);
-    }
-
-    public function testValidEventSubscriber()
-    {
-        $services = array(
-            'my_event_subscriber' => array(0 => array()),
-        );
-
-        $definition = $this->getMock('Symfony\Component\DependencyInjection\Definition');
-        $definition->expects($this->atLeastOnce())
-            ->method('isPublic')
-            ->will($this->returnValue(true));
-        $definition->expects($this->atLeastOnce())
-            ->method('getClass')
-            ->will($this->returnValue('Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService'));
-
-        $builder = $this->getMock(
-            'Symfony\Component\DependencyInjection\ContainerBuilder',
-            array('hasDefinition', 'findTaggedServiceIds', 'getDefinition', 'findDefinition')
-        );
-        $builder->expects($this->any())
-            ->method('hasDefinition')
-            ->will($this->returnValue(true));
-
-        // We don't test kernel.event_listener here
-        $builder->expects($this->atLeastOnce())
-            ->method('findTaggedServiceIds')
-            ->will($this->onConsecutiveCalls(array(), $services));
-
-        $builder->expects($this->atLeastOnce())
-            ->method('getDefinition')
-            ->will($this->returnValue($definition));
-
-        $builder->expects($this->atLeastOnce())
-            ->method('findDefinition')
-            ->will($this->returnValue($definition));
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($builder);
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage The service "foo" must be public as event listeners are lazy-loaded.
-     */
-    public function testPrivateEventListener()
-    {
-        $container = new ContainerBuilder();
-        $container->register('foo', 'stdClass')->setPublic(false)->addTag('kernel.event_listener', array());
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage The service "foo" must be public as event subscribers are lazy-loaded.
-     */
-    public function testPrivateEventSubscriber()
-    {
-        $container = new ContainerBuilder();
-        $container->register('foo', 'stdClass')->setPublic(false)->addTag('kernel.event_subscriber', array());
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage The service "foo" must not be abstract as event listeners are lazy-loaded.
-     */
-    public function testAbstractEventListener()
-    {
-        $container = new ContainerBuilder();
-        $container->register('foo', 'stdClass')->setAbstract(true)->addTag('kernel.event_listener', array());
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage The service "foo" must not be abstract as event subscribers are lazy-loaded.
-     */
-    public function testAbstractEventSubscriber()
-    {
-        $container = new ContainerBuilder();
-        $container->register('foo', 'stdClass')->setAbstract(true)->addTag('kernel.event_subscriber', array());
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-
-    public function testEventSubscriberResolvableClassName()
-    {
-        $container = new ContainerBuilder();
-
-        $container->setParameter('subscriber.class', 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService');
-        $container->register('foo', '%subscriber.class%')->addTag('kernel.event_subscriber', array());
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-
-        $definition = $container->getDefinition('event_dispatcher');
-        $expected_calls = array(
-            array(
-                'addSubscriberService',
-                array(
-                    'foo',
-                    'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService',
-                ),
-            ),
-        );
-        $this->assertSame($expected_calls, $definition->getMethodCalls());
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage You have requested a non-existent parameter "subscriber.class"
-     */
-    public function testEventSubscriberUnresolvableClassName()
-    {
-        $container = new ContainerBuilder();
-        $container->register('foo', '%subscriber.class%')->addTag('kernel.event_subscriber', array());
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-}
-
-class SubscriberService implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php
deleted file mode 100644
index 5faa5c8..0000000
--- a/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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\EventDispatcher\Tests;
-
-use Symfony\Component\EventDispatcher\EventDispatcher;
-
-class EventDispatcherTest extends AbstractEventDispatcherTest
-{
-    protected function createEventDispatcher()
-    {
-        return new EventDispatcher();
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/EventTest.php b/vendor/symfony/event-dispatcher/Tests/EventTest.php
deleted file mode 100644
index 9a82267..0000000
--- a/vendor/symfony/event-dispatcher/Tests/EventTest.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?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\EventDispatcher\Tests;
-
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-
-/**
- * Test class for Event.
- */
-class EventTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var \Symfony\Component\EventDispatcher\Event
-     */
-    protected $event;
-
-    /**
-     * @var \Symfony\Component\EventDispatcher\EventDispatcher
-     */
-    protected $dispatcher;
-
-    /**
-     * Sets up the fixture, for example, opens a network connection.
-     * This method is called before a test is executed.
-     */
-    protected function setUp()
-    {
-        $this->event = new Event();
-        $this->dispatcher = new EventDispatcher();
-    }
-
-    /**
-     * Tears down the fixture, for example, closes a network connection.
-     * This method is called after a test is executed.
-     */
-    protected function tearDown()
-    {
-        $this->event = null;
-        $this->dispatcher = null;
-    }
-
-    public function testIsPropagationStopped()
-    {
-        $this->assertFalse($this->event->isPropagationStopped());
-    }
-
-    public function testStopPropagationAndIsPropagationStopped()
-    {
-        $this->event->stopPropagation();
-        $this->assertTrue($this->event->isPropagationStopped());
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacySetDispatcher()
-    {
-        $this->event->setDispatcher($this->dispatcher);
-        $this->assertSame($this->dispatcher, $this->event->getDispatcher());
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyGetDispatcher()
-    {
-        $this->assertNull($this->event->getDispatcher());
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyGetName()
-    {
-        $this->assertNull($this->event->getName());
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacySetName()
-    {
-        $this->event->setName('foo');
-        $this->assertEquals('foo', $this->event->getName());
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php b/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php
deleted file mode 100644
index aebd82d..0000000
--- a/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?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\EventDispatcher\Tests;
-
-use Symfony\Component\EventDispatcher\GenericEvent;
-
-/**
- * Test class for Event.
- */
-class GenericEventTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var GenericEvent
-     */
-    private $event;
-
-    private $subject;
-
-    /**
-     * Prepares the environment before running a test.
-     */
-    protected function setUp()
-    {
-        parent::setUp();
-
-        $this->subject = new \stdClass();
-        $this->event = new GenericEvent($this->subject, array('name' => 'Event'));
-    }
-
-    /**
-     * Cleans up the environment after running a test.
-     */
-    protected function tearDown()
-    {
-        $this->subject = null;
-        $this->event = null;
-
-        parent::tearDown();
-    }
-
-    public function testConstruct()
-    {
-        $this->assertEquals($this->event, new GenericEvent($this->subject, array('name' => 'Event')));
-    }
-
-    /**
-     * Tests Event->getArgs().
-     */
-    public function testGetArguments()
-    {
-        // test getting all
-        $this->assertSame(array('name' => 'Event'), $this->event->getArguments());
-    }
-
-    public function testSetArguments()
-    {
-        $result = $this->event->setArguments(array('foo' => 'bar'));
-        $this->assertAttributeSame(array('foo' => 'bar'), 'arguments', $this->event);
-        $this->assertSame($this->event, $result);
-    }
-
-    public function testSetArgument()
-    {
-        $result = $this->event->setArgument('foo2', 'bar2');
-        $this->assertAttributeSame(array('name' => 'Event', 'foo2' => 'bar2'), 'arguments', $this->event);
-        $this->assertEquals($this->event, $result);
-    }
-
-    public function testGetArgument()
-    {
-        // test getting key
-        $this->assertEquals('Event', $this->event->getArgument('name'));
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     */
-    public function testGetArgException()
-    {
-        $this->event->getArgument('nameNotExist');
-    }
-
-    public function testOffsetGet()
-    {
-        // test getting key
-        $this->assertEquals('Event', $this->event['name']);
-
-        // test getting invalid arg
-        $this->setExpectedException('InvalidArgumentException');
-        $this->assertFalse($this->event['nameNotExist']);
-    }
-
-    public function testOffsetSet()
-    {
-        $this->event['foo2'] = 'bar2';
-        $this->assertAttributeSame(array('name' => 'Event', 'foo2' => 'bar2'), 'arguments', $this->event);
-    }
-
-    public function testOffsetUnset()
-    {
-        unset($this->event['name']);
-        $this->assertAttributeSame(array(), 'arguments', $this->event);
-    }
-
-    public function testOffsetIsset()
-    {
-        $this->assertTrue(isset($this->event['name']));
-        $this->assertFalse(isset($this->event['nameNotExist']));
-    }
-
-    public function testHasArgument()
-    {
-        $this->assertTrue($this->event->hasArgument('name'));
-        $this->assertFalse($this->event->hasArgument('nameNotExist'));
-    }
-
-    public function testGetSubject()
-    {
-        $this->assertSame($this->subject, $this->event->getSubject());
-    }
-
-    public function testHasIterator()
-    {
-        $data = array();
-        foreach ($this->event as $key => $value) {
-            $data[$key] = $value;
-        }
-        $this->assertEquals(array('name' => 'Event'), $data);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php
deleted file mode 100644
index 80a7e43..0000000
--- a/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?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\EventDispatcher\Tests;
-
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\ImmutableEventDispatcher;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ImmutableEventDispatcherTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    private $innerDispatcher;
-
-    /**
-     * @var ImmutableEventDispatcher
-     */
-    private $dispatcher;
-
-    protected function setUp()
-    {
-        $this->innerDispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface');
-        $this->dispatcher = new ImmutableEventDispatcher($this->innerDispatcher);
-    }
-
-    public function testDispatchDelegates()
-    {
-        $event = new Event();
-
-        $this->innerDispatcher->expects($this->once())
-            ->method('dispatch')
-            ->with('event', $event)
-            ->will($this->returnValue('result'));
-
-        $this->assertSame('result', $this->dispatcher->dispatch('event', $event));
-    }
-
-    public function testGetListenersDelegates()
-    {
-        $this->innerDispatcher->expects($this->once())
-            ->method('getListeners')
-            ->with('event')
-            ->will($this->returnValue('result'));
-
-        $this->assertSame('result', $this->dispatcher->getListeners('event'));
-    }
-
-    public function testHasListenersDelegates()
-    {
-        $this->innerDispatcher->expects($this->once())
-            ->method('hasListeners')
-            ->with('event')
-            ->will($this->returnValue('result'));
-
-        $this->assertSame('result', $this->dispatcher->hasListeners('event'));
-    }
-
-    /**
-     * @expectedException \BadMethodCallException
-     */
-    public function testAddListenerDisallowed()
-    {
-        $this->dispatcher->addListener('event', function () { return 'foo'; });
-    }
-
-    /**
-     * @expectedException \BadMethodCallException
-     */
-    public function testAddSubscriberDisallowed()
-    {
-        $subscriber = $this->getMock('Symfony\Component\EventDispatcher\EventSubscriberInterface');
-
-        $this->dispatcher->addSubscriber($subscriber);
-    }
-
-    /**
-     * @expectedException \BadMethodCallException
-     */
-    public function testRemoveListenerDisallowed()
-    {
-        $this->dispatcher->removeListener('event', function () { return 'foo'; });
-    }
-
-    /**
-     * @expectedException \BadMethodCallException
-     */
-    public function testRemoveSubscriberDisallowed()
-    {
-        $subscriber = $this->getMock('Symfony\Component\EventDispatcher\EventSubscriberInterface');
-
-        $this->dispatcher->removeSubscriber($subscriber);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/composer.json b/vendor/symfony/event-dispatcher/composer.json
deleted file mode 100644
index 8a6a750..0000000
--- a/vendor/symfony/event-dispatcher/composer.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-    "name": "symfony/event-dispatcher",
-    "type": "library",
-    "description": "Symfony EventDispatcher Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "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",
-        "psr/log": "~1.0"
-    },
-    "suggest": {
-        "symfony/dependency-injection": "",
-        "symfony/http-kernel": ""
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/phpunit.xml.dist b/vendor/symfony/event-dispatcher/phpunit.xml.dist
deleted file mode 100644
index ae0586e..0000000
--- a/vendor/symfony/event-dispatcher/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony EventDispatcher Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/http-foundation/.gitignore b/vendor/symfony/http-foundation/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/http-foundation/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/http-foundation/AcceptHeader.php b/vendor/symfony/http-foundation/AcceptHeader.php
deleted file mode 100644
index 2260787..0000000
--- a/vendor/symfony/http-foundation/AcceptHeader.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * Represents an Accept-* header.
- *
- * An accept header is compound with a list of items,
- * sorted by descending quality.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-class AcceptHeader
-{
-    /**
-     * @var AcceptHeaderItem[]
-     */
-    private $items = array();
-
-    /**
-     * @var bool
-     */
-    private $sorted = true;
-
-    /**
-     * Constructor.
-     *
-     * @param AcceptHeaderItem[] $items
-     */
-    public function __construct(array $items)
-    {
-        foreach ($items as $item) {
-            $this->add($item);
-        }
-    }
-
-    /**
-     * Builds an AcceptHeader instance from a string.
-     *
-     * @param string $headerValue
-     *
-     * @return AcceptHeader
-     */
-    public static function fromString($headerValue)
-    {
-        $index = 0;
-
-        return new self(array_map(function ($itemValue) use (&$index) {
-            $item = AcceptHeaderItem::fromString($itemValue);
-            $item->setIndex($index++);
-
-            return $item;
-        }, preg_split('/\s*(?:,*("[^"]+"),*|,*(\'[^\']+\'),*|,+)\s*/', $headerValue, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE)));
-    }
-
-    /**
-     * Returns header value's string representation.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return implode(',', $this->items);
-    }
-
-    /**
-     * Tests if header has given value.
-     *
-     * @param string $value
-     *
-     * @return bool
-     */
-    public function has($value)
-    {
-        return isset($this->items[$value]);
-    }
-
-    /**
-     * Returns given value's item, if exists.
-     *
-     * @param string $value
-     *
-     * @return AcceptHeaderItem|null
-     */
-    public function get($value)
-    {
-        return isset($this->items[$value]) ? $this->items[$value] : null;
-    }
-
-    /**
-     * Adds an item.
-     *
-     * @param AcceptHeaderItem $item
-     *
-     * @return AcceptHeader
-     */
-    public function add(AcceptHeaderItem $item)
-    {
-        $this->items[$item->getValue()] = $item;
-        $this->sorted = false;
-
-        return $this;
-    }
-
-    /**
-     * Returns all items.
-     *
-     * @return AcceptHeaderItem[]
-     */
-    public function all()
-    {
-        $this->sort();
-
-        return $this->items;
-    }
-
-    /**
-     * Filters items on their value using given regex.
-     *
-     * @param string $pattern
-     *
-     * @return AcceptHeader
-     */
-    public function filter($pattern)
-    {
-        return new self(array_filter($this->items, function (AcceptHeaderItem $item) use ($pattern) {
-            return preg_match($pattern, $item->getValue());
-        }));
-    }
-
-    /**
-     * Returns first item.
-     *
-     * @return AcceptHeaderItem|null
-     */
-    public function first()
-    {
-        $this->sort();
-
-        return !empty($this->items) ? reset($this->items) : null;
-    }
-
-    /**
-     * Sorts items by descending quality.
-     */
-    private function sort()
-    {
-        if (!$this->sorted) {
-            uasort($this->items, function ($a, $b) {
-                $qA = $a->getQuality();
-                $qB = $b->getQuality();
-
-                if ($qA === $qB) {
-                    return $a->getIndex() > $b->getIndex() ? 1 : -1;
-                }
-
-                return $qA > $qB ? -1 : 1;
-            });
-
-            $this->sorted = true;
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/AcceptHeaderItem.php b/vendor/symfony/http-foundation/AcceptHeaderItem.php
deleted file mode 100644
index 21a5d15..0000000
--- a/vendor/symfony/http-foundation/AcceptHeaderItem.php
+++ /dev/null
@@ -1,226 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * Represents an Accept-* header item.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-class AcceptHeaderItem
-{
-    /**
-     * @var string
-     */
-    private $value;
-
-    /**
-     * @var float
-     */
-    private $quality = 1.0;
-
-    /**
-     * @var int
-     */
-    private $index = 0;
-
-    /**
-     * @var array
-     */
-    private $attributes = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $value
-     * @param array  $attributes
-     */
-    public function __construct($value, array $attributes = array())
-    {
-        $this->value = $value;
-        foreach ($attributes as $name => $value) {
-            $this->setAttribute($name, $value);
-        }
-    }
-
-    /**
-     * Builds an AcceptHeaderInstance instance from a string.
-     *
-     * @param string $itemValue
-     *
-     * @return AcceptHeaderItem
-     */
-    public static function fromString($itemValue)
-    {
-        $bits = preg_split('/\s*(?:;*("[^"]+");*|;*(\'[^\']+\');*|;+)\s*/', $itemValue, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
-        $value = array_shift($bits);
-        $attributes = array();
-
-        $lastNullAttribute = null;
-        foreach ($bits as $bit) {
-            if (($start = substr($bit, 0, 1)) === ($end = substr($bit, -1)) && ($start === '"' || $start === '\'')) {
-                $attributes[$lastNullAttribute] = substr($bit, 1, -1);
-            } elseif ('=' === $end) {
-                $lastNullAttribute = $bit = substr($bit, 0, -1);
-                $attributes[$bit] = null;
-            } else {
-                $parts = explode('=', $bit);
-                $attributes[$parts[0]] = isset($parts[1]) && strlen($parts[1]) > 0 ? $parts[1] : '';
-            }
-        }
-
-        return new self(($start = substr($value, 0, 1)) === ($end = substr($value, -1)) && ($start === '"' || $start === '\'') ? substr($value, 1, -1) : $value, $attributes);
-    }
-
-    /**
-     * Returns header  value's string representation.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        $string = $this->value.($this->quality < 1 ? ';q='.$this->quality : '');
-        if (count($this->attributes) > 0) {
-            $string .= ';'.implode(';', array_map(function ($name, $value) {
-                return sprintf(preg_match('/[,;=]/', $value) ? '%s="%s"' : '%s=%s', $name, $value);
-            }, array_keys($this->attributes), $this->attributes));
-        }
-
-        return $string;
-    }
-
-    /**
-     * Set the item value.
-     *
-     * @param string $value
-     *
-     * @return AcceptHeaderItem
-     */
-    public function setValue($value)
-    {
-        $this->value = $value;
-
-        return $this;
-    }
-
-    /**
-     * Returns the item value.
-     *
-     * @return string
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Set the item quality.
-     *
-     * @param float $quality
-     *
-     * @return AcceptHeaderItem
-     */
-    public function setQuality($quality)
-    {
-        $this->quality = $quality;
-
-        return $this;
-    }
-
-    /**
-     * Returns the item quality.
-     *
-     * @return float
-     */
-    public function getQuality()
-    {
-        return $this->quality;
-    }
-
-    /**
-     * Set the item index.
-     *
-     * @param int $index
-     *
-     * @return AcceptHeaderItem
-     */
-    public function setIndex($index)
-    {
-        $this->index = $index;
-
-        return $this;
-    }
-
-    /**
-     * Returns the item index.
-     *
-     * @return int
-     */
-    public function getIndex()
-    {
-        return $this->index;
-    }
-
-    /**
-     * Tests if an attribute exists.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function hasAttribute($name)
-    {
-        return isset($this->attributes[$name]);
-    }
-
-    /**
-     * Returns an attribute by its name.
-     *
-     * @param string $name
-     * @param mixed  $default
-     *
-     * @return mixed
-     */
-    public function getAttribute($name, $default = null)
-    {
-        return isset($this->attributes[$name]) ? $this->attributes[$name] : $default;
-    }
-
-    /**
-     * Returns all attributes.
-     *
-     * @return array
-     */
-    public function getAttributes()
-    {
-        return $this->attributes;
-    }
-
-    /**
-     * Set an attribute.
-     *
-     * @param string $name
-     * @param string $value
-     *
-     * @return AcceptHeaderItem
-     */
-    public function setAttribute($name, $value)
-    {
-        if ('q' === $name) {
-            $this->quality = (float) $value;
-        } else {
-            $this->attributes[$name] = (string) $value;
-        }
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/http-foundation/ApacheRequest.php b/vendor/symfony/http-foundation/ApacheRequest.php
deleted file mode 100644
index 84803eb..0000000
--- a/vendor/symfony/http-foundation/ApacheRequest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * Request represents an HTTP request from an Apache server.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ApacheRequest extends Request
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function prepareRequestUri()
-    {
-        return $this->server->get('REQUEST_URI');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function prepareBaseUrl()
-    {
-        $baseUrl = $this->server->get('SCRIPT_NAME');
-
-        if (false === strpos($this->server->get('REQUEST_URI'), $baseUrl)) {
-            // assume mod_rewrite
-            return rtrim(dirname($baseUrl), '/\\');
-        }
-
-        return $baseUrl;
-    }
-}
diff --git a/vendor/symfony/http-foundation/BinaryFileResponse.php b/vendor/symfony/http-foundation/BinaryFileResponse.php
deleted file mode 100644
index ca407b4..0000000
--- a/vendor/symfony/http-foundation/BinaryFileResponse.php
+++ /dev/null
@@ -1,322 +0,0 @@
-<?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\HttpFoundation;
-
-use Symfony\Component\HttpFoundation\File\File;
-use Symfony\Component\HttpFoundation\File\Exception\FileException;
-
-/**
- * BinaryFileResponse represents an HTTP response delivering a file.
- *
- * @author Niklas Fiekas <niklas.fiekas@tu-clausthal.de>
- * @author stealth35 <stealth35-php@live.fr>
- * @author Igor Wiedler <igor@wiedler.ch>
- * @author Jordan Alliot <jordan.alliot@gmail.com>
- * @author Sergey Linnik <linniksa@gmail.com>
- */
-class BinaryFileResponse extends Response
-{
-    protected static $trustXSendfileTypeHeader = false;
-
-    protected $file;
-    protected $offset;
-    protected $maxlen;
-    protected $deleteFileAfterSend = false;
-
-    /**
-     * Constructor.
-     *
-     * @param \SplFileInfo|string $file               The file to stream
-     * @param int                 $status             The response status code
-     * @param array               $headers            An array of response headers
-     * @param bool                $public             Files are public by default
-     * @param null|string         $contentDisposition The type of Content-Disposition to set automatically with the filename
-     * @param bool                $autoEtag           Whether the ETag header should be automatically set
-     * @param bool                $autoLastModified   Whether the Last-Modified header should be automatically set
-     */
-    public function __construct($file, $status = 200, $headers = array(), $public = true, $contentDisposition = null, $autoEtag = false, $autoLastModified = true)
-    {
-        parent::__construct(null, $status, $headers);
-
-        $this->setFile($file, $contentDisposition, $autoEtag, $autoLastModified);
-
-        if ($public) {
-            $this->setPublic();
-        }
-    }
-
-    /**
-     * @param \SplFileInfo|string $file               The file to stream
-     * @param int                 $status             The response status code
-     * @param array               $headers            An array of response headers
-     * @param bool                $public             Files are public by default
-     * @param null|string         $contentDisposition The type of Content-Disposition to set automatically with the filename
-     * @param bool                $autoEtag           Whether the ETag header should be automatically set
-     * @param bool                $autoLastModified   Whether the Last-Modified header should be automatically set
-     *
-     * @return BinaryFileResponse The created response
-     */
-    public static function create($file = null, $status = 200, $headers = array(), $public = true, $contentDisposition = null, $autoEtag = false, $autoLastModified = true)
-    {
-        return new static($file, $status, $headers, $public, $contentDisposition, $autoEtag, $autoLastModified);
-    }
-
-    /**
-     * Sets the file to stream.
-     *
-     * @param \SplFileInfo|string $file               The file to stream
-     * @param string              $contentDisposition
-     * @param bool                $autoEtag
-     * @param bool                $autoLastModified
-     *
-     * @return BinaryFileResponse
-     *
-     * @throws FileException
-     */
-    public function setFile($file, $contentDisposition = null, $autoEtag = false, $autoLastModified = true)
-    {
-        if (!$file instanceof File) {
-            if ($file instanceof \SplFileInfo) {
-                $file = new File($file->getPathname());
-            } else {
-                $file = new File((string) $file);
-            }
-        }
-
-        if (!$file->isReadable()) {
-            throw new FileException('File must be readable.');
-        }
-
-        $this->file = $file;
-
-        if ($autoEtag) {
-            $this->setAutoEtag();
-        }
-
-        if ($autoLastModified) {
-            $this->setAutoLastModified();
-        }
-
-        if ($contentDisposition) {
-            $this->setContentDisposition($contentDisposition);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Gets the file.
-     *
-     * @return File The file to stream
-     */
-    public function getFile()
-    {
-        return $this->file;
-    }
-
-    /**
-     * Automatically sets the Last-Modified header according the file modification date.
-     */
-    public function setAutoLastModified()
-    {
-        $this->setLastModified(\DateTime::createFromFormat('U', $this->file->getMTime()));
-
-        return $this;
-    }
-
-    /**
-     * Automatically sets the ETag header according to the checksum of the file.
-     */
-    public function setAutoEtag()
-    {
-        $this->setEtag(sha1_file($this->file->getPathname()));
-
-        return $this;
-    }
-
-    /**
-     * Sets the Content-Disposition header with the given filename.
-     *
-     * @param string $disposition      ResponseHeaderBag::DISPOSITION_INLINE or ResponseHeaderBag::DISPOSITION_ATTACHMENT
-     * @param string $filename         Optionally use this filename instead of the real name of the file
-     * @param string $filenameFallback A fallback filename, containing only ASCII characters. Defaults to an automatically encoded filename
-     *
-     * @return BinaryFileResponse
-     */
-    public function setContentDisposition($disposition, $filename = '', $filenameFallback = '')
-    {
-        if ($filename === '') {
-            $filename = $this->file->getFilename();
-        }
-
-        $dispositionHeader = $this->headers->makeDisposition($disposition, $filename, $filenameFallback);
-        $this->headers->set('Content-Disposition', $dispositionHeader);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function prepare(Request $request)
-    {
-        $this->headers->set('Content-Length', $this->file->getSize());
-
-        if (!$this->headers->has('Accept-Ranges')) {
-            // Only accept ranges on safe HTTP methods
-            $this->headers->set('Accept-Ranges', $request->isMethodSafe() ? 'bytes' : 'none');
-        }
-
-        if (!$this->headers->has('Content-Type')) {
-            $this->headers->set('Content-Type', $this->file->getMimeType() ?: 'application/octet-stream');
-        }
-
-        if ('HTTP/1.0' != $request->server->get('SERVER_PROTOCOL')) {
-            $this->setProtocolVersion('1.1');
-        }
-
-        $this->ensureIEOverSSLCompatibility($request);
-
-        $this->offset = 0;
-        $this->maxlen = -1;
-
-        if (self::$trustXSendfileTypeHeader && $request->headers->has('X-Sendfile-Type')) {
-            // Use X-Sendfile, do not send any content.
-            $type = $request->headers->get('X-Sendfile-Type');
-            $path = $this->file->getRealPath();
-            if (strtolower($type) == 'x-accel-redirect') {
-                // Do X-Accel-Mapping substitutions.
-                // @link http://wiki.nginx.org/X-accel#X-Accel-Redirect
-                foreach (explode(',', $request->headers->get('X-Accel-Mapping', '')) as $mapping) {
-                    $mapping = explode('=', $mapping, 2);
-
-                    if (2 == count($mapping)) {
-                        $pathPrefix = trim($mapping[0]);
-                        $location = trim($mapping[1]);
-
-                        if (substr($path, 0, strlen($pathPrefix)) == $pathPrefix) {
-                            $path = $location.substr($path, strlen($pathPrefix));
-                            break;
-                        }
-                    }
-                }
-            }
-            $this->headers->set($type, $path);
-            $this->maxlen = 0;
-        } elseif ($request->headers->has('Range')) {
-            // Process the range headers.
-            if (!$request->headers->has('If-Range') || $this->getEtag() == $request->headers->get('If-Range')) {
-                $range = $request->headers->get('Range');
-                $fileSize = $this->file->getSize();
-
-                list($start, $end) = explode('-', substr($range, 6), 2) + array(0);
-
-                $end = ('' === $end) ? $fileSize - 1 : (int) $end;
-
-                if ('' === $start) {
-                    $start = $fileSize - $end;
-                    $end = $fileSize - 1;
-                } else {
-                    $start = (int) $start;
-                }
-
-                if ($start <= $end) {
-                    if ($start < 0 || $end > $fileSize - 1) {
-                        $this->setStatusCode(416);
-                    } elseif ($start !== 0 || $end !== $fileSize - 1) {
-                        $this->maxlen = $end < $fileSize ? $end - $start + 1 : -1;
-                        $this->offset = $start;
-
-                        $this->setStatusCode(206);
-                        $this->headers->set('Content-Range', sprintf('bytes %s-%s/%s', $start, $end, $fileSize));
-                        $this->headers->set('Content-Length', $end - $start + 1);
-                    }
-                }
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sends the file.
-     */
-    public function sendContent()
-    {
-        if (!$this->isSuccessful()) {
-            parent::sendContent();
-
-            return;
-        }
-
-        if (0 === $this->maxlen) {
-            return;
-        }
-
-        $out = fopen('php://output', 'wb');
-        $file = fopen($this->file->getPathname(), 'rb');
-
-        stream_copy_to_stream($file, $out, $this->maxlen, $this->offset);
-
-        fclose($out);
-        fclose($file);
-
-        if ($this->deleteFileAfterSend) {
-            unlink($this->file->getPathname());
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws \LogicException when the content is not null
-     */
-    public function setContent($content)
-    {
-        if (null !== $content) {
-            throw new \LogicException('The content cannot be set on a BinaryFileResponse instance.');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return false
-     */
-    public function getContent()
-    {
-        return false;
-    }
-
-    /**
-     * Trust X-Sendfile-Type header.
-     */
-    public static function trustXSendfileTypeHeader()
-    {
-        self::$trustXSendfileTypeHeader = true;
-    }
-
-    /**
-     * If this is set to true, the file will be unlinked after the request is send
-     * Note: If the X-Sendfile header is used, the deleteFileAfterSend setting will not be used.
-     *
-     * @param bool $shouldDelete
-     *
-     * @return BinaryFileResponse
-     */
-    public function deleteFileAfterSend($shouldDelete)
-    {
-        $this->deleteFileAfterSend = $shouldDelete;
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/http-foundation/CHANGELOG.md b/vendor/symfony/http-foundation/CHANGELOG.md
deleted file mode 100644
index dcdeb4e..0000000
--- a/vendor/symfony/http-foundation/CHANGELOG.md
+++ /dev/null
@@ -1,122 +0,0 @@
-CHANGELOG
-=========
-
-2.6.0
------
-
- * PdoSessionHandler changes
-   - implemented different session locking strategies to prevent loss of data by concurrent access to the same session
-   - [BC BREAK] save session data in a binary column without base64_encode
-   - [BC BREAK] added lifetime column to the session table which allows to have different lifetimes for each session
-   - implemented lazy connections that are only opened when a session is used by either passing a dsn string
-     explicitly or falling back to session.save_path ini setting
-   - added a createTable method that initializes a correctly defined table depending on the database vendor
-
-2.5.0
------
-
- * added `JsonResponse::setEncodingOptions()` & `JsonResponse::getEncodingOptions()` for easier manipulation
-   of the options used while encoding data to JSON format.
-
-2.4.0
------
-
- * added RequestStack
- * added Request::getEncodings()
- * added accessors methods to session handlers
-
-2.3.0
------
-
- * added support for ranges of IPs in trusted proxies
- * `UploadedFile::isValid` now returns false if the file was not uploaded via HTTP (in a non-test mode)
- * Improved error-handling of `\Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler`
-   to ensure the supplied PDO handler throws Exceptions on error (as the class expects). Added related test cases
-   to verify that Exceptions are properly thrown when the PDO queries fail.
-
-2.2.0
------
-
- * fixed the Request::create() precedence (URI information always take precedence now)
- * added Request::getTrustedProxies()
- * deprecated Request::isProxyTrusted()
- * [BC BREAK] JsonResponse does not turn a top level empty array to an object anymore, use an ArrayObject to enforce objects
- * added a IpUtils class to check if an IP belongs to a CIDR
- * added Request::getRealMethod() to get the "real" HTTP method (getMethod() returns the "intended" HTTP method)
- * disabled _method request parameter support by default (call Request::enableHttpMethodParameterOverride() to
-   enable it, and Request::getHttpMethodParameterOverride() to check if it is supported)
- * Request::splitHttpAcceptHeader() method is deprecated and will be removed in 2.3
- * Deprecated Flashbag::count() and \Countable interface, will be removed in 2.3
-
-2.1.0
------
-
- * added Request::getSchemeAndHttpHost() and Request::getUserInfo()
- * added a fluent interface to the Response class
- * added Request::isProxyTrusted()
- * added JsonResponse
- * added a getTargetUrl method to RedirectResponse
- * added support for streamed responses
- * made Response::prepare() method the place to enforce HTTP specification
- * [BC BREAK] moved management of the locale from the Session class to the Request class
- * added a generic access to the PHP built-in filter mechanism: ParameterBag::filter()
- * made FileBinaryMimeTypeGuesser command configurable
- * added Request::getUser() and Request::getPassword()
- * added support for the PATCH method in Request
- * removed the ContentTypeMimeTypeGuesser class as it is deprecated and never used on PHP 5.3
- * added ResponseHeaderBag::makeDisposition() (implements RFC 6266)
- * made mimetype to extension conversion configurable
- * [BC BREAK] Moved all session related classes and interfaces into own namespace, as
-   `Symfony\Component\HttpFoundation\Session` and renamed classes accordingly.
-   Session handlers are located in the subnamespace `Symfony\Component\HttpFoundation\Session\Handler`.
- * SessionHandlers must implement `\SessionHandlerInterface` or extend from the
-   `Symfony\Component\HttpFoundation\Storage\Handler\NativeSessionHandler` base class.
- * Added internal storage driver proxy mechanism for forward compatibility with
-   PHP 5.4 `\SessionHandler` class.
- * Added session handlers for custom Memcache, Memcached and Null session save handlers.
- * [BC BREAK] Removed `NativeSessionStorage` and replaced with `NativeFileSessionHandler`.
- * [BC BREAK] `SessionStorageInterface` methods removed: `write()`, `read()` and
-   `remove()`.  Added `getBag()`, `registerBag()`.  The `NativeSessionStorage` class
-   is a mediator for the session storage internals including the session handlers
-   which do the real work of participating in the internal PHP session workflow.
- * [BC BREAK] Introduced mock implementations of `SessionStorage` to enable unit
-   and functional testing without starting real PHP sessions.  Removed
-   `ArraySessionStorage`, and replaced with `MockArraySessionStorage` for unit
-   tests; removed `FilesystemSessionStorage`, and replaced with`MockFileSessionStorage`
-   for functional tests.  These do not interact with global session ini
-   configuration values, session functions or `$_SESSION` superglobal. This means
-   they can be configured directly allowing multiple instances to work without
-   conflicting in the same PHP process.
- * [BC BREAK] Removed the `close()` method from the `Session` class, as this is
-   now redundant.
- * Deprecated the following methods from the Session class: `setFlash()`, `setFlashes()`
-   `getFlash()`, `hasFlash()`, and `removeFlash()`. Use `getFlashBag()` instead
-   which returns a `FlashBagInterface`.
- * `Session->clear()` now only clears session attributes as before it cleared
-   flash messages and attributes. `Session->getFlashBag()->all()` clears flashes now.
- * Session data is now managed by `SessionBagInterface` to better encapsulate
-   session data.
- * Refactored session attribute and flash messages system to their own
-  `SessionBagInterface` implementations.
- * Added `FlashBag`. Flashes expire when retrieved by `get()` or `all()`. This
-   implementation is ESI compatible.
- * Added `AutoExpireFlashBag` (default) to replicate Symfony 2.0.x auto expire
-   behaviour of messages auto expiring after one page page load.  Messages must
-   be retrieved by `get()` or `all()`.
- * Added `Symfony\Component\HttpFoundation\Attribute\AttributeBag` to replicate
-   attributes storage behaviour from 2.0.x (default).
- * Added `Symfony\Component\HttpFoundation\Attribute\NamespacedAttributeBag` for
-   namespace session attributes.
- * Flash API can stores messages in an array so there may be multiple messages
-   per flash type.  The old `Session` class API remains without BC break as it
-   will allow single messages as before.
- * Added basic session meta-data to the session to record session create time,
-   last updated time, and the lifetime of the session cookie that was provided
-   to the client.
- * Request::getClientIp() method doesn't take a parameter anymore but bases
-   itself on the trustProxy parameter.
- * Added isMethod() to Request object.
- * [BC BREAK] The methods `getPathInfo()`, `getBaseUrl()` and `getBasePath()` of
-   a `Request` now all return a raw value (vs a urldecoded value before). Any call
-   to one of these methods must be checked and wrapped in a `rawurldecode()` if
-   needed.
diff --git a/vendor/symfony/http-foundation/Cookie.php b/vendor/symfony/http-foundation/Cookie.php
deleted file mode 100644
index 061703d..0000000
--- a/vendor/symfony/http-foundation/Cookie.php
+++ /dev/null
@@ -1,190 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * Represents a cookie.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class Cookie
-{
-    protected $name;
-    protected $value;
-    protected $domain;
-    protected $expire;
-    protected $path;
-    protected $secure;
-    protected $httpOnly;
-
-    /**
-     * Constructor.
-     *
-     * @param string               $name     The name of the cookie
-     * @param string               $value    The value of the cookie
-     * @param int|string|\DateTime $expire   The time the cookie expires
-     * @param string               $path     The path on the server in which the cookie will be available on
-     * @param string               $domain   The domain that the cookie is available to
-     * @param bool                 $secure   Whether the cookie should only be transmitted over a secure HTTPS connection from the client
-     * @param bool                 $httpOnly Whether the cookie will be made accessible only through the HTTP protocol
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function __construct($name, $value = null, $expire = 0, $path = '/', $domain = null, $secure = false, $httpOnly = true)
-    {
-        // from PHP source code
-        if (preg_match("/[=,; \t\r\n\013\014]/", $name)) {
-            throw new \InvalidArgumentException(sprintf('The cookie name "%s" contains invalid characters.', $name));
-        }
-
-        if (empty($name)) {
-            throw new \InvalidArgumentException('The cookie name cannot be empty.');
-        }
-
-        // convert expiration time to a Unix timestamp
-        if ($expire instanceof \DateTime) {
-            $expire = $expire->format('U');
-        } elseif (!is_numeric($expire)) {
-            $expire = strtotime($expire);
-
-            if (false === $expire || -1 === $expire) {
-                throw new \InvalidArgumentException('The cookie expiration time is not valid.');
-            }
-        }
-
-        $this->name = $name;
-        $this->value = $value;
-        $this->domain = $domain;
-        $this->expire = $expire;
-        $this->path = empty($path) ? '/' : $path;
-        $this->secure = (bool) $secure;
-        $this->httpOnly = (bool) $httpOnly;
-    }
-
-    /**
-     * Returns the cookie as a string.
-     *
-     * @return string The cookie
-     */
-    public function __toString()
-    {
-        $str = urlencode($this->getName()).'=';
-
-        if ('' === (string) $this->getValue()) {
-            $str .= 'deleted; expires='.gmdate('D, d-M-Y H:i:s T', time() - 31536001);
-        } else {
-            $str .= urlencode($this->getValue());
-
-            if ($this->getExpiresTime() !== 0) {
-                $str .= '; expires='.gmdate('D, d-M-Y H:i:s T', $this->getExpiresTime());
-            }
-        }
-
-        if ($this->path) {
-            $str .= '; path='.$this->path;
-        }
-
-        if ($this->getDomain()) {
-            $str .= '; domain='.$this->getDomain();
-        }
-
-        if (true === $this->isSecure()) {
-            $str .= '; secure';
-        }
-
-        if (true === $this->isHttpOnly()) {
-            $str .= '; httponly';
-        }
-
-        return $str;
-    }
-
-    /**
-     * Gets the name of the cookie.
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Gets the value of the cookie.
-     *
-     * @return string
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Gets the domain that the cookie is available to.
-     *
-     * @return string
-     */
-    public function getDomain()
-    {
-        return $this->domain;
-    }
-
-    /**
-     * Gets the time the cookie expires.
-     *
-     * @return int
-     */
-    public function getExpiresTime()
-    {
-        return $this->expire;
-    }
-
-    /**
-     * Gets the path on the server in which the cookie will be available on.
-     *
-     * @return string
-     */
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    /**
-     * Checks whether the cookie should only be transmitted over a secure HTTPS connection from the client.
-     *
-     * @return bool
-     */
-    public function isSecure()
-    {
-        return $this->secure;
-    }
-
-    /**
-     * Checks whether the cookie will be made accessible only through the HTTP protocol.
-     *
-     * @return bool
-     */
-    public function isHttpOnly()
-    {
-        return $this->httpOnly;
-    }
-
-    /**
-     * Whether this cookie is about to be cleared.
-     *
-     * @return bool
-     */
-    public function isCleared()
-    {
-        return $this->expire < time();
-    }
-}
diff --git a/vendor/symfony/http-foundation/ExpressionRequestMatcher.php b/vendor/symfony/http-foundation/ExpressionRequestMatcher.php
deleted file mode 100644
index e9c8441..0000000
--- a/vendor/symfony/http-foundation/ExpressionRequestMatcher.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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\HttpFoundation;
-
-use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
-
-/**
- * ExpressionRequestMatcher uses an expression to match a Request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ExpressionRequestMatcher extends RequestMatcher
-{
-    private $language;
-    private $expression;
-
-    public function setExpression(ExpressionLanguage $language, $expression)
-    {
-        $this->language = $language;
-        $this->expression = $expression;
-    }
-
-    public function matches(Request $request)
-    {
-        if (!$this->language) {
-            throw new \LogicException('Unable to match the request as the expression language is not available.');
-        }
-
-        return $this->language->evaluate($this->expression, array(
-            'request' => $request,
-            'method' => $request->getMethod(),
-            'path' => rawurldecode($request->getPathInfo()),
-            'host' => $request->getHost(),
-            'ip' => $request->getClientIp(),
-            'attributes' => $request->attributes->all(),
-        )) && parent::matches($request);
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php b/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php
deleted file mode 100644
index 41f7a46..0000000
--- a/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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\HttpFoundation\File\Exception;
-
-/**
- * Thrown when the access on a file was denied.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class AccessDeniedException extends FileException
-{
-    /**
-     * Constructor.
-     *
-     * @param string $path The path to the accessed file
-     */
-    public function __construct($path)
-    {
-        parent::__construct(sprintf('The file %s could not be accessed', $path));
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/FileException.php b/vendor/symfony/http-foundation/File/Exception/FileException.php
deleted file mode 100644
index fad5133..0000000
--- a/vendor/symfony/http-foundation/File/Exception/FileException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an error occurred in the component File.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FileException extends \RuntimeException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php b/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php
deleted file mode 100644
index ac90d40..0000000
--- a/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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\HttpFoundation\File\Exception;
-
-/**
- * Thrown when a file was not found.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FileNotFoundException extends FileException
-{
-    /**
-     * Constructor.
-     *
-     * @param string $path The path to the file that was not found
-     */
-    public function __construct($path)
-    {
-        parent::__construct(sprintf('The file "%s" does not exist', $path));
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php b/vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php
deleted file mode 100644
index 0444b87..0000000
--- a/vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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\HttpFoundation\File\Exception;
-
-class UnexpectedTypeException extends FileException
-{
-    public function __construct($value, $expectedType)
-    {
-        parent::__construct(sprintf('Expected argument of type %s, %s given', $expectedType, is_object($value) ? get_class($value) : gettype($value)));
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/Exception/UploadException.php b/vendor/symfony/http-foundation/File/Exception/UploadException.php
deleted file mode 100644
index 7074e76..0000000
--- a/vendor/symfony/http-foundation/File/Exception/UploadException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\HttpFoundation\File\Exception;
-
-/**
- * Thrown when an error occurred during file upload.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class UploadException extends FileException
-{
-}
diff --git a/vendor/symfony/http-foundation/File/File.php b/vendor/symfony/http-foundation/File/File.php
deleted file mode 100644
index f1b28b4..0000000
--- a/vendor/symfony/http-foundation/File/File.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?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\HttpFoundation\File;
-
-use Symfony\Component\HttpFoundation\File\Exception\FileException;
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
-use Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser;
-
-/**
- * A file in the file system.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class File extends \SplFileInfo
-{
-    /**
-     * Constructs a new file from the given path.
-     *
-     * @param string $path      The path to the file
-     * @param bool   $checkPath Whether to check the path or not
-     *
-     * @throws FileNotFoundException If the given path is not a file
-     */
-    public function __construct($path, $checkPath = true)
-    {
-        if ($checkPath && !is_file($path)) {
-            throw new FileNotFoundException($path);
-        }
-
-        parent::__construct($path);
-    }
-
-    /**
-     * Returns the extension based on the mime type.
-     *
-     * If the mime type is unknown, returns null.
-     *
-     * This method uses the mime type as guessed by getMimeType()
-     * to guess the file extension.
-     *
-     * @return string|null The guessed extension or null if it cannot be guessed
-     *
-     * @see ExtensionGuesser
-     * @see getMimeType()
-     */
-    public function guessExtension()
-    {
-        $type = $this->getMimeType();
-        $guesser = ExtensionGuesser::getInstance();
-
-        return $guesser->guess($type);
-    }
-
-    /**
-     * Returns the mime type of the file.
-     *
-     * The mime type is guessed using a MimeTypeGuesser instance, which uses finfo(),
-     * mime_content_type() and the system binary "file" (in this order), depending on
-     * which of those are available.
-     *
-     * @return string|null The guessed mime type (i.e. "application/pdf")
-     *
-     * @see MimeTypeGuesser
-     */
-    public function getMimeType()
-    {
-        $guesser = MimeTypeGuesser::getInstance();
-
-        return $guesser->guess($this->getPathname());
-    }
-
-    /**
-     * Moves the file to a new location.
-     *
-     * @param string $directory The destination folder
-     * @param string $name      The new file name
-     *
-     * @return File A File object representing the new file
-     *
-     * @throws FileException if the target file could not be created
-     */
-    public function move($directory, $name = null)
-    {
-        $target = $this->getTargetFile($directory, $name);
-
-        if (!@rename($this->getPathname(), $target)) {
-            $error = error_get_last();
-            throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s)', $this->getPathname(), $target, strip_tags($error['message'])));
-        }
-
-        @chmod($target, 0666 & ~umask());
-
-        return $target;
-    }
-
-    protected function getTargetFile($directory, $name = null)
-    {
-        if (!is_dir($directory)) {
-            if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) {
-                throw new FileException(sprintf('Unable to create the "%s" directory', $directory));
-            }
-        } elseif (!is_writable($directory)) {
-            throw new FileException(sprintf('Unable to write in the "%s" directory', $directory));
-        }
-
-        $target = rtrim($directory, '/\\').DIRECTORY_SEPARATOR.(null === $name ? $this->getBasename() : $this->getName($name));
-
-        return new self($target, false);
-    }
-
-    /**
-     * Returns locale independent base name of the given path.
-     *
-     * @param string $name The new file name
-     *
-     * @return string containing
-     */
-    protected function getName($name)
-    {
-        $originalName = str_replace('\\', '/', $name);
-        $pos = strrpos($originalName, '/');
-        $originalName = false === $pos ? $originalName : substr($originalName, $pos + 1);
-
-        return $originalName;
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php b/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php
deleted file mode 100644
index ec9b78a..0000000
--- a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?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\HttpFoundation\File\MimeType;
-
-/**
- * A singleton mime type to file extension guesser.
- *
- * A default guesser is provided.
- * You can register custom guessers by calling the register()
- * method on the singleton instance:
- *
- *     $guesser = ExtensionGuesser::getInstance();
- *     $guesser->register(new MyCustomExtensionGuesser());
- *
- * The last registered guesser is preferred over previously registered ones.
- */
-class ExtensionGuesser implements ExtensionGuesserInterface
-{
-    /**
-     * The singleton instance.
-     *
-     * @var ExtensionGuesser
-     */
-    private static $instance = null;
-
-    /**
-     * All registered ExtensionGuesserInterface instances.
-     *
-     * @var array
-     */
-    protected $guessers = array();
-
-    /**
-     * Returns the singleton instance.
-     *
-     * @return ExtensionGuesser
-     */
-    public static function getInstance()
-    {
-        if (null === self::$instance) {
-            self::$instance = new self();
-        }
-
-        return self::$instance;
-    }
-
-    /**
-     * Registers all natively provided extension guessers.
-     */
-    private function __construct()
-    {
-        $this->register(new MimeTypeExtensionGuesser());
-    }
-
-    /**
-     * Registers a new extension guesser.
-     *
-     * When guessing, this guesser is preferred over previously registered ones.
-     *
-     * @param ExtensionGuesserInterface $guesser
-     */
-    public function register(ExtensionGuesserInterface $guesser)
-    {
-        array_unshift($this->guessers, $guesser);
-    }
-
-    /**
-     * Tries to guess the extension.
-     *
-     * The mime type is passed to each registered mime type guesser in reverse order
-     * of their registration (last registered is queried first). Once a guesser
-     * returns a value that is not NULL, this method terminates and returns the
-     * value.
-     *
-     * @param string $mimeType The mime type
-     *
-     * @return string The guessed extension or NULL, if none could be guessed
-     */
-    public function guess($mimeType)
-    {
-        foreach ($this->guessers as $guesser) {
-            if (null !== $extension = $guesser->guess($mimeType)) {
-                return $extension;
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesserInterface.php b/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesserInterface.php
deleted file mode 100644
index d19a0e5..0000000
--- a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesserInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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\HttpFoundation\File\MimeType;
-
-/**
- * Guesses the file extension corresponding to a given mime type.
- */
-interface ExtensionGuesserInterface
-{
-    /**
-     * Makes a best guess for a file extension, given a mime type.
-     *
-     * @param string $mimeType The mime type
-     *
-     * @return string The guessed extension or NULL, if none could be guessed
-     */
-    public function guess($mimeType);
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php
deleted file mode 100644
index f917a06..0000000
--- a/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?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\HttpFoundation\File\MimeType;
-
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
-
-/**
- * Guesses the mime type with the binary "file" (only available on *nix).
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
-{
-    private $cmd;
-
-    /**
-     * Constructor.
-     *
-     * The $cmd pattern must contain a "%s" string that will be replaced
-     * with the file name to guess.
-     *
-     * The command output must start with the mime type of the file.
-     *
-     * @param string $cmd The command to run to get the mime type of a file
-     */
-    public function __construct($cmd = 'file -b --mime %s 2>/dev/null')
-    {
-        $this->cmd = $cmd;
-    }
-
-    /**
-     * Returns whether this guesser is supported on the current OS.
-     *
-     * @return bool
-     */
-    public static function isSupported()
-    {
-        return '\\' !== DIRECTORY_SEPARATOR && function_exists('passthru') && function_exists('escapeshellarg');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function guess($path)
-    {
-        if (!is_file($path)) {
-            throw new FileNotFoundException($path);
-        }
-
-        if (!is_readable($path)) {
-            throw new AccessDeniedException($path);
-        }
-
-        if (!self::isSupported()) {
-            return;
-        }
-
-        ob_start();
-
-        // need to use --mime instead of -i. see #6641
-        passthru(sprintf($this->cmd, escapeshellarg($path)), $return);
-        if ($return > 0) {
-            ob_end_clean();
-
-            return;
-        }
-
-        $type = trim(ob_get_clean());
-
-        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\.]+)#i', $type, $match)) {
-            // it's not a type, but an error message
-            return;
-        }
-
-        return $match[1];
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php
deleted file mode 100644
index a7e4ae2..0000000
--- a/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?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\HttpFoundation\File\MimeType;
-
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
-
-/**
- * Guesses the mime type using the PECL extension FileInfo.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
-{
-    private $magicFile;
-
-    /**
-     * Constructor.
-     *
-     * @param string $magicFile A magic file to use with the finfo instance
-     *
-     * @link http://www.php.net/manual/en/function.finfo-open.php
-     */
-    public function __construct($magicFile = null)
-    {
-        $this->magicFile = $magicFile;
-    }
-
-    /**
-     * Returns whether this guesser is supported on the current OS/PHP setup.
-     *
-     * @return bool
-     */
-    public static function isSupported()
-    {
-        return function_exists('finfo_open');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function guess($path)
-    {
-        if (!is_file($path)) {
-            throw new FileNotFoundException($path);
-        }
-
-        if (!is_readable($path)) {
-            throw new AccessDeniedException($path);
-        }
-
-        if (!self::isSupported()) {
-            return;
-        }
-
-        if (!$finfo = new \finfo(FILEINFO_MIME_TYPE, $this->magicFile)) {
-            return;
-        }
-
-        return $finfo->file($path);
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php
deleted file mode 100644
index 75eeefb..0000000
--- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php
+++ /dev/null
@@ -1,807 +0,0 @@
-<?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\HttpFoundation\File\MimeType;
-
-/**
- * Provides a best-guess mapping of mime type to file extension.
- */
-class MimeTypeExtensionGuesser implements ExtensionGuesserInterface
-{
-    /**
-     * A map of mime types and their default extensions.
-     *
-     * This list has been placed under the public domain by the Apache HTTPD project.
-     * This list has been updated from upstream on 2013-04-23.
-     *
-     * @see http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
-     *
-     * @var array
-     */
-    protected $defaultExtensions = array(
-        'application/andrew-inset' => 'ez',
-        'application/applixware' => 'aw',
-        'application/atom+xml' => 'atom',
-        'application/atomcat+xml' => 'atomcat',
-        'application/atomsvc+xml' => 'atomsvc',
-        'application/ccxml+xml' => 'ccxml',
-        'application/cdmi-capability' => 'cdmia',
-        'application/cdmi-container' => 'cdmic',
-        'application/cdmi-domain' => 'cdmid',
-        'application/cdmi-object' => 'cdmio',
-        'application/cdmi-queue' => 'cdmiq',
-        'application/cu-seeme' => 'cu',
-        'application/davmount+xml' => 'davmount',
-        'application/docbook+xml' => 'dbk',
-        'application/dssc+der' => 'dssc',
-        'application/dssc+xml' => 'xdssc',
-        'application/ecmascript' => 'ecma',
-        'application/emma+xml' => 'emma',
-        'application/epub+zip' => 'epub',
-        'application/exi' => 'exi',
-        'application/font-tdpfr' => 'pfr',
-        'application/gml+xml' => 'gml',
-        'application/gpx+xml' => 'gpx',
-        'application/gxf' => 'gxf',
-        'application/hyperstudio' => 'stk',
-        'application/inkml+xml' => 'ink',
-        'application/ipfix' => 'ipfix',
-        'application/java-archive' => 'jar',
-        'application/java-serialized-object' => 'ser',
-        'application/java-vm' => 'class',
-        'application/javascript' => 'js',
-        'application/json' => 'json',
-        'application/jsonml+json' => 'jsonml',
-        'application/lost+xml' => 'lostxml',
-        'application/mac-binhex40' => 'hqx',
-        'application/mac-compactpro' => 'cpt',
-        'application/mads+xml' => 'mads',
-        'application/marc' => 'mrc',
-        'application/marcxml+xml' => 'mrcx',
-        'application/mathematica' => 'ma',
-        'application/mathml+xml' => 'mathml',
-        'application/mbox' => 'mbox',
-        'application/mediaservercontrol+xml' => 'mscml',
-        'application/metalink+xml' => 'metalink',
-        'application/metalink4+xml' => 'meta4',
-        'application/mets+xml' => 'mets',
-        'application/mods+xml' => 'mods',
-        'application/mp21' => 'm21',
-        'application/mp4' => 'mp4s',
-        'application/msword' => 'doc',
-        'application/mxf' => 'mxf',
-        'application/octet-stream' => 'bin',
-        'application/oda' => 'oda',
-        'application/oebps-package+xml' => 'opf',
-        'application/ogg' => 'ogx',
-        'application/omdoc+xml' => 'omdoc',
-        'application/onenote' => 'onetoc',
-        'application/oxps' => 'oxps',
-        'application/patch-ops-error+xml' => 'xer',
-        'application/pdf' => 'pdf',
-        'application/pgp-encrypted' => 'pgp',
-        'application/pgp-signature' => 'asc',
-        'application/pics-rules' => 'prf',
-        'application/pkcs10' => 'p10',
-        'application/pkcs7-mime' => 'p7m',
-        'application/pkcs7-signature' => 'p7s',
-        'application/pkcs8' => 'p8',
-        'application/pkix-attr-cert' => 'ac',
-        'application/pkix-cert' => 'cer',
-        'application/pkix-crl' => 'crl',
-        'application/pkix-pkipath' => 'pkipath',
-        'application/pkixcmp' => 'pki',
-        'application/pls+xml' => 'pls',
-        'application/postscript' => 'ai',
-        'application/prs.cww' => 'cww',
-        'application/pskc+xml' => 'pskcxml',
-        'application/rdf+xml' => 'rdf',
-        'application/reginfo+xml' => 'rif',
-        'application/relax-ng-compact-syntax' => 'rnc',
-        'application/resource-lists+xml' => 'rl',
-        'application/resource-lists-diff+xml' => 'rld',
-        'application/rls-services+xml' => 'rs',
-        'application/rpki-ghostbusters' => 'gbr',
-        'application/rpki-manifest' => 'mft',
-        'application/rpki-roa' => 'roa',
-        'application/rsd+xml' => 'rsd',
-        'application/rss+xml' => 'rss',
-        'application/rtf' => 'rtf',
-        'application/sbml+xml' => 'sbml',
-        'application/scvp-cv-request' => 'scq',
-        'application/scvp-cv-response' => 'scs',
-        'application/scvp-vp-request' => 'spq',
-        'application/scvp-vp-response' => 'spp',
-        'application/sdp' => 'sdp',
-        'application/set-payment-initiation' => 'setpay',
-        'application/set-registration-initiation' => 'setreg',
-        'application/shf+xml' => 'shf',
-        'application/smil+xml' => 'smi',
-        'application/sparql-query' => 'rq',
-        'application/sparql-results+xml' => 'srx',
-        'application/srgs' => 'gram',
-        'application/srgs+xml' => 'grxml',
-        'application/sru+xml' => 'sru',
-        'application/ssdl+xml' => 'ssdl',
-        'application/ssml+xml' => 'ssml',
-        'application/tei+xml' => 'tei',
-        'application/thraud+xml' => 'tfi',
-        'application/timestamped-data' => 'tsd',
-        'application/vnd.3gpp.pic-bw-large' => 'plb',
-        'application/vnd.3gpp.pic-bw-small' => 'psb',
-        'application/vnd.3gpp.pic-bw-var' => 'pvb',
-        'application/vnd.3gpp2.tcap' => 'tcap',
-        'application/vnd.3m.post-it-notes' => 'pwn',
-        'application/vnd.accpac.simply.aso' => 'aso',
-        'application/vnd.accpac.simply.imp' => 'imp',
-        'application/vnd.acucobol' => 'acu',
-        'application/vnd.acucorp' => 'atc',
-        'application/vnd.adobe.air-application-installer-package+zip' => 'air',
-        'application/vnd.adobe.formscentral.fcdt' => 'fcdt',
-        'application/vnd.adobe.fxp' => 'fxp',
-        'application/vnd.adobe.xdp+xml' => 'xdp',
-        'application/vnd.adobe.xfdf' => 'xfdf',
-        'application/vnd.ahead.space' => 'ahead',
-        'application/vnd.airzip.filesecure.azf' => 'azf',
-        'application/vnd.airzip.filesecure.azs' => 'azs',
-        'application/vnd.amazon.ebook' => 'azw',
-        'application/vnd.americandynamics.acc' => 'acc',
-        'application/vnd.amiga.ami' => 'ami',
-        'application/vnd.android.package-archive' => 'apk',
-        'application/vnd.anser-web-certificate-issue-initiation' => 'cii',
-        'application/vnd.anser-web-funds-transfer-initiation' => 'fti',
-        'application/vnd.antix.game-component' => 'atx',
-        'application/vnd.apple.installer+xml' => 'mpkg',
-        'application/vnd.apple.mpegurl' => 'm3u8',
-        'application/vnd.aristanetworks.swi' => 'swi',
-        'application/vnd.astraea-software.iota' => 'iota',
-        'application/vnd.audiograph' => 'aep',
-        'application/vnd.blueice.multipass' => 'mpm',
-        'application/vnd.bmi' => 'bmi',
-        'application/vnd.businessobjects' => 'rep',
-        'application/vnd.chemdraw+xml' => 'cdxml',
-        'application/vnd.chipnuts.karaoke-mmd' => 'mmd',
-        'application/vnd.cinderella' => 'cdy',
-        'application/vnd.claymore' => 'cla',
-        'application/vnd.cloanto.rp9' => 'rp9',
-        'application/vnd.clonk.c4group' => 'c4g',
-        'application/vnd.cluetrust.cartomobile-config' => 'c11amc',
-        'application/vnd.cluetrust.cartomobile-config-pkg' => 'c11amz',
-        'application/vnd.commonspace' => 'csp',
-        'application/vnd.contact.cmsg' => 'cdbcmsg',
-        'application/vnd.cosmocaller' => 'cmc',
-        'application/vnd.crick.clicker' => 'clkx',
-        'application/vnd.crick.clicker.keyboard' => 'clkk',
-        'application/vnd.crick.clicker.palette' => 'clkp',
-        'application/vnd.crick.clicker.template' => 'clkt',
-        'application/vnd.crick.clicker.wordbank' => 'clkw',
-        'application/vnd.criticaltools.wbs+xml' => 'wbs',
-        'application/vnd.ctc-posml' => 'pml',
-        'application/vnd.cups-ppd' => 'ppd',
-        'application/vnd.curl.car' => 'car',
-        'application/vnd.curl.pcurl' => 'pcurl',
-        'application/vnd.dart' => 'dart',
-        'application/vnd.data-vision.rdz' => 'rdz',
-        'application/vnd.dece.data' => 'uvf',
-        'application/vnd.dece.ttml+xml' => 'uvt',
-        'application/vnd.dece.unspecified' => 'uvx',
-        'application/vnd.dece.zip' => 'uvz',
-        'application/vnd.denovo.fcselayout-link' => 'fe_launch',
-        'application/vnd.dna' => 'dna',
-        'application/vnd.dolby.mlp' => 'mlp',
-        'application/vnd.dpgraph' => 'dpg',
-        'application/vnd.dreamfactory' => 'dfac',
-        'application/vnd.ds-keypoint' => 'kpxx',
-        'application/vnd.dvb.ait' => 'ait',
-        'application/vnd.dvb.service' => 'svc',
-        'application/vnd.dynageo' => 'geo',
-        'application/vnd.ecowin.chart' => 'mag',
-        'application/vnd.enliven' => 'nml',
-        'application/vnd.epson.esf' => 'esf',
-        'application/vnd.epson.msf' => 'msf',
-        'application/vnd.epson.quickanime' => 'qam',
-        'application/vnd.epson.salt' => 'slt',
-        'application/vnd.epson.ssf' => 'ssf',
-        'application/vnd.eszigno3+xml' => 'es3',
-        'application/vnd.ezpix-album' => 'ez2',
-        'application/vnd.ezpix-package' => 'ez3',
-        'application/vnd.fdf' => 'fdf',
-        'application/vnd.fdsn.mseed' => 'mseed',
-        'application/vnd.fdsn.seed' => 'seed',
-        'application/vnd.flographit' => 'gph',
-        'application/vnd.fluxtime.clip' => 'ftc',
-        'application/vnd.framemaker' => 'fm',
-        'application/vnd.frogans.fnc' => 'fnc',
-        'application/vnd.frogans.ltf' => 'ltf',
-        'application/vnd.fsc.weblaunch' => 'fsc',
-        'application/vnd.fujitsu.oasys' => 'oas',
-        'application/vnd.fujitsu.oasys2' => 'oa2',
-        'application/vnd.fujitsu.oasys3' => 'oa3',
-        'application/vnd.fujitsu.oasysgp' => 'fg5',
-        'application/vnd.fujitsu.oasysprs' => 'bh2',
-        'application/vnd.fujixerox.ddd' => 'ddd',
-        'application/vnd.fujixerox.docuworks' => 'xdw',
-        'application/vnd.fujixerox.docuworks.binder' => 'xbd',
-        'application/vnd.fuzzysheet' => 'fzs',
-        'application/vnd.genomatix.tuxedo' => 'txd',
-        'application/vnd.geogebra.file' => 'ggb',
-        'application/vnd.geogebra.tool' => 'ggt',
-        'application/vnd.geometry-explorer' => 'gex',
-        'application/vnd.geonext' => 'gxt',
-        'application/vnd.geoplan' => 'g2w',
-        'application/vnd.geospace' => 'g3w',
-        'application/vnd.gmx' => 'gmx',
-        'application/vnd.google-earth.kml+xml' => 'kml',
-        'application/vnd.google-earth.kmz' => 'kmz',
-        'application/vnd.grafeq' => 'gqf',
-        'application/vnd.groove-account' => 'gac',
-        'application/vnd.groove-help' => 'ghf',
-        'application/vnd.groove-identity-message' => 'gim',
-        'application/vnd.groove-injector' => 'grv',
-        'application/vnd.groove-tool-message' => 'gtm',
-        'application/vnd.groove-tool-template' => 'tpl',
-        'application/vnd.groove-vcard' => 'vcg',
-        'application/vnd.hal+xml' => 'hal',
-        'application/vnd.handheld-entertainment+xml' => 'zmm',
-        'application/vnd.hbci' => 'hbci',
-        'application/vnd.hhe.lesson-player' => 'les',
-        'application/vnd.hp-hpgl' => 'hpgl',
-        'application/vnd.hp-hpid' => 'hpid',
-        'application/vnd.hp-hps' => 'hps',
-        'application/vnd.hp-jlyt' => 'jlt',
-        'application/vnd.hp-pcl' => 'pcl',
-        'application/vnd.hp-pclxl' => 'pclxl',
-        'application/vnd.hydrostatix.sof-data' => 'sfd-hdstx',
-        'application/vnd.ibm.minipay' => 'mpy',
-        'application/vnd.ibm.modcap' => 'afp',
-        'application/vnd.ibm.rights-management' => 'irm',
-        'application/vnd.ibm.secure-container' => 'sc',
-        'application/vnd.iccprofile' => 'icc',
-        'application/vnd.igloader' => 'igl',
-        'application/vnd.immervision-ivp' => 'ivp',
-        'application/vnd.immervision-ivu' => 'ivu',
-        'application/vnd.insors.igm' => 'igm',
-        'application/vnd.intercon.formnet' => 'xpw',
-        'application/vnd.intergeo' => 'i2g',
-        'application/vnd.intu.qbo' => 'qbo',
-        'application/vnd.intu.qfx' => 'qfx',
-        'application/vnd.ipunplugged.rcprofile' => 'rcprofile',
-        'application/vnd.irepository.package+xml' => 'irp',
-        'application/vnd.is-xpr' => 'xpr',
-        'application/vnd.isac.fcs' => 'fcs',
-        'application/vnd.jam' => 'jam',
-        'application/vnd.jcp.javame.midlet-rms' => 'rms',
-        'application/vnd.jisp' => 'jisp',
-        'application/vnd.joost.joda-archive' => 'joda',
-        'application/vnd.kahootz' => 'ktz',
-        'application/vnd.kde.karbon' => 'karbon',
-        'application/vnd.kde.kchart' => 'chrt',
-        'application/vnd.kde.kformula' => 'kfo',
-        'application/vnd.kde.kivio' => 'flw',
-        'application/vnd.kde.kontour' => 'kon',
-        'application/vnd.kde.kpresenter' => 'kpr',
-        'application/vnd.kde.kspread' => 'ksp',
-        'application/vnd.kde.kword' => 'kwd',
-        'application/vnd.kenameaapp' => 'htke',
-        'application/vnd.kidspiration' => 'kia',
-        'application/vnd.kinar' => 'kne',
-        'application/vnd.koan' => 'skp',
-        'application/vnd.kodak-descriptor' => 'sse',
-        'application/vnd.las.las+xml' => 'lasxml',
-        'application/vnd.llamagraphics.life-balance.desktop' => 'lbd',
-        'application/vnd.llamagraphics.life-balance.exchange+xml' => 'lbe',
-        'application/vnd.lotus-1-2-3' => '123',
-        'application/vnd.lotus-approach' => 'apr',
-        'application/vnd.lotus-freelance' => 'pre',
-        'application/vnd.lotus-notes' => 'nsf',
-        'application/vnd.lotus-organizer' => 'org',
-        'application/vnd.lotus-screencam' => 'scm',
-        'application/vnd.lotus-wordpro' => 'lwp',
-        'application/vnd.macports.portpkg' => 'portpkg',
-        'application/vnd.mcd' => 'mcd',
-        'application/vnd.medcalcdata' => 'mc1',
-        'application/vnd.mediastation.cdkey' => 'cdkey',
-        'application/vnd.mfer' => 'mwf',
-        'application/vnd.mfmp' => 'mfm',
-        'application/vnd.micrografx.flo' => 'flo',
-        'application/vnd.micrografx.igx' => 'igx',
-        'application/vnd.mif' => 'mif',
-        'application/vnd.mobius.daf' => 'daf',
-        'application/vnd.mobius.dis' => 'dis',
-        'application/vnd.mobius.mbk' => 'mbk',
-        'application/vnd.mobius.mqy' => 'mqy',
-        'application/vnd.mobius.msl' => 'msl',
-        'application/vnd.mobius.plc' => 'plc',
-        'application/vnd.mobius.txf' => 'txf',
-        'application/vnd.mophun.application' => 'mpn',
-        'application/vnd.mophun.certificate' => 'mpc',
-        'application/vnd.mozilla.xul+xml' => 'xul',
-        'application/vnd.ms-artgalry' => 'cil',
-        'application/vnd.ms-cab-compressed' => 'cab',
-        'application/vnd.ms-excel' => 'xls',
-        'application/vnd.ms-excel.addin.macroenabled.12' => 'xlam',
-        'application/vnd.ms-excel.sheet.binary.macroenabled.12' => 'xlsb',
-        'application/vnd.ms-excel.sheet.macroenabled.12' => 'xlsm',
-        'application/vnd.ms-excel.template.macroenabled.12' => 'xltm',
-        'application/vnd.ms-fontobject' => 'eot',
-        'application/vnd.ms-htmlhelp' => 'chm',
-        'application/vnd.ms-ims' => 'ims',
-        'application/vnd.ms-lrm' => 'lrm',
-        'application/vnd.ms-officetheme' => 'thmx',
-        'application/vnd.ms-pki.seccat' => 'cat',
-        'application/vnd.ms-pki.stl' => 'stl',
-        'application/vnd.ms-powerpoint' => 'ppt',
-        'application/vnd.ms-powerpoint.addin.macroenabled.12' => 'ppam',
-        'application/vnd.ms-powerpoint.presentation.macroenabled.12' => 'pptm',
-        'application/vnd.ms-powerpoint.slide.macroenabled.12' => 'sldm',
-        'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => 'ppsm',
-        'application/vnd.ms-powerpoint.template.macroenabled.12' => 'potm',
-        'application/vnd.ms-project' => 'mpp',
-        'application/vnd.ms-word.document.macroenabled.12' => 'docm',
-        'application/vnd.ms-word.template.macroenabled.12' => 'dotm',
-        'application/vnd.ms-works' => 'wps',
-        'application/vnd.ms-wpl' => 'wpl',
-        'application/vnd.ms-xpsdocument' => 'xps',
-        'application/vnd.mseq' => 'mseq',
-        'application/vnd.musician' => 'mus',
-        'application/vnd.muvee.style' => 'msty',
-        'application/vnd.mynfc' => 'taglet',
-        'application/vnd.neurolanguage.nlu' => 'nlu',
-        'application/vnd.nitf' => 'ntf',
-        'application/vnd.noblenet-directory' => 'nnd',
-        'application/vnd.noblenet-sealer' => 'nns',
-        'application/vnd.noblenet-web' => 'nnw',
-        'application/vnd.nokia.n-gage.data' => 'ngdat',
-        'application/vnd.nokia.n-gage.symbian.install' => 'n-gage',
-        'application/vnd.nokia.radio-preset' => 'rpst',
-        'application/vnd.nokia.radio-presets' => 'rpss',
-        'application/vnd.novadigm.edm' => 'edm',
-        'application/vnd.novadigm.edx' => 'edx',
-        'application/vnd.novadigm.ext' => 'ext',
-        'application/vnd.oasis.opendocument.chart' => 'odc',
-        'application/vnd.oasis.opendocument.chart-template' => 'otc',
-        'application/vnd.oasis.opendocument.database' => 'odb',
-        'application/vnd.oasis.opendocument.formula' => 'odf',
-        'application/vnd.oasis.opendocument.formula-template' => 'odft',
-        'application/vnd.oasis.opendocument.graphics' => 'odg',
-        'application/vnd.oasis.opendocument.graphics-template' => 'otg',
-        'application/vnd.oasis.opendocument.image' => 'odi',
-        'application/vnd.oasis.opendocument.image-template' => 'oti',
-        'application/vnd.oasis.opendocument.presentation' => 'odp',
-        'application/vnd.oasis.opendocument.presentation-template' => 'otp',
-        'application/vnd.oasis.opendocument.spreadsheet' => 'ods',
-        'application/vnd.oasis.opendocument.spreadsheet-template' => 'ots',
-        'application/vnd.oasis.opendocument.text' => 'odt',
-        'application/vnd.oasis.opendocument.text-master' => 'odm',
-        'application/vnd.oasis.opendocument.text-template' => 'ott',
-        'application/vnd.oasis.opendocument.text-web' => 'oth',
-        'application/vnd.olpc-sugar' => 'xo',
-        'application/vnd.oma.dd2+xml' => 'dd2',
-        'application/vnd.openofficeorg.extension' => 'oxt',
-        'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx',
-        'application/vnd.openxmlformats-officedocument.presentationml.slide' => 'sldx',
-        'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'ppsx',
-        'application/vnd.openxmlformats-officedocument.presentationml.template' => 'potx',
-        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx',
-        'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => 'xltx',
-        'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx',
-        'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 'dotx',
-        'application/vnd.osgeo.mapguide.package' => 'mgp',
-        'application/vnd.osgi.dp' => 'dp',
-        'application/vnd.osgi.subsystem' => 'esa',
-        'application/vnd.palm' => 'pdb',
-        'application/vnd.pawaafile' => 'paw',
-        'application/vnd.pg.format' => 'str',
-        'application/vnd.pg.osasli' => 'ei6',
-        'application/vnd.picsel' => 'efif',
-        'application/vnd.pmi.widget' => 'wg',
-        'application/vnd.pocketlearn' => 'plf',
-        'application/vnd.powerbuilder6' => 'pbd',
-        'application/vnd.previewsystems.box' => 'box',
-        'application/vnd.proteus.magazine' => 'mgz',
-        'application/vnd.publishare-delta-tree' => 'qps',
-        'application/vnd.pvi.ptid1' => 'ptid',
-        'application/vnd.quark.quarkxpress' => 'qxd',
-        'application/vnd.realvnc.bed' => 'bed',
-        'application/vnd.recordare.musicxml' => 'mxl',
-        'application/vnd.recordare.musicxml+xml' => 'musicxml',
-        'application/vnd.rig.cryptonote' => 'cryptonote',
-        'application/vnd.rim.cod' => 'cod',
-        'application/vnd.rn-realmedia' => 'rm',
-        'application/vnd.rn-realmedia-vbr' => 'rmvb',
-        'application/vnd.route66.link66+xml' => 'link66',
-        'application/vnd.sailingtracker.track' => 'st',
-        'application/vnd.seemail' => 'see',
-        'application/vnd.sema' => 'sema',
-        'application/vnd.semd' => 'semd',
-        'application/vnd.semf' => 'semf',
-        'application/vnd.shana.informed.formdata' => 'ifm',
-        'application/vnd.shana.informed.formtemplate' => 'itp',
-        'application/vnd.shana.informed.interchange' => 'iif',
-        'application/vnd.shana.informed.package' => 'ipk',
-        'application/vnd.simtech-mindmapper' => 'twd',
-        'application/vnd.smaf' => 'mmf',
-        'application/vnd.smart.teacher' => 'teacher',
-        'application/vnd.solent.sdkm+xml' => 'sdkm',
-        'application/vnd.spotfire.dxp' => 'dxp',
-        'application/vnd.spotfire.sfs' => 'sfs',
-        'application/vnd.stardivision.calc' => 'sdc',
-        'application/vnd.stardivision.draw' => 'sda',
-        'application/vnd.stardivision.impress' => 'sdd',
-        'application/vnd.stardivision.math' => 'smf',
-        'application/vnd.stardivision.writer' => 'sdw',
-        'application/vnd.stardivision.writer-global' => 'sgl',
-        'application/vnd.stepmania.package' => 'smzip',
-        'application/vnd.stepmania.stepchart' => 'sm',
-        'application/vnd.sun.xml.calc' => 'sxc',
-        'application/vnd.sun.xml.calc.template' => 'stc',
-        'application/vnd.sun.xml.draw' => 'sxd',
-        'application/vnd.sun.xml.draw.template' => 'std',
-        'application/vnd.sun.xml.impress' => 'sxi',
-        'application/vnd.sun.xml.impress.template' => 'sti',
-        'application/vnd.sun.xml.math' => 'sxm',
-        'application/vnd.sun.xml.writer' => 'sxw',
-        'application/vnd.sun.xml.writer.global' => 'sxg',
-        'application/vnd.sun.xml.writer.template' => 'stw',
-        'application/vnd.sus-calendar' => 'sus',
-        'application/vnd.svd' => 'svd',
-        'application/vnd.symbian.install' => 'sis',
-        'application/vnd.syncml+xml' => 'xsm',
-        'application/vnd.syncml.dm+wbxml' => 'bdm',
-        'application/vnd.syncml.dm+xml' => 'xdm',
-        'application/vnd.tao.intent-module-archive' => 'tao',
-        'application/vnd.tcpdump.pcap' => 'pcap',
-        'application/vnd.tmobile-livetv' => 'tmo',
-        'application/vnd.trid.tpt' => 'tpt',
-        'application/vnd.triscape.mxs' => 'mxs',
-        'application/vnd.trueapp' => 'tra',
-        'application/vnd.ufdl' => 'ufd',
-        'application/vnd.uiq.theme' => 'utz',
-        'application/vnd.umajin' => 'umj',
-        'application/vnd.unity' => 'unityweb',
-        'application/vnd.uoml+xml' => 'uoml',
-        'application/vnd.vcx' => 'vcx',
-        'application/vnd.visio' => 'vsd',
-        'application/vnd.visionary' => 'vis',
-        'application/vnd.vsf' => 'vsf',
-        'application/vnd.wap.wbxml' => 'wbxml',
-        'application/vnd.wap.wmlc' => 'wmlc',
-        'application/vnd.wap.wmlscriptc' => 'wmlsc',
-        'application/vnd.webturbo' => 'wtb',
-        'application/vnd.wolfram.player' => 'nbp',
-        'application/vnd.wordperfect' => 'wpd',
-        'application/vnd.wqd' => 'wqd',
-        'application/vnd.wt.stf' => 'stf',
-        'application/vnd.xara' => 'xar',
-        'application/vnd.xfdl' => 'xfdl',
-        'application/vnd.yamaha.hv-dic' => 'hvd',
-        'application/vnd.yamaha.hv-script' => 'hvs',
-        'application/vnd.yamaha.hv-voice' => 'hvp',
-        'application/vnd.yamaha.openscoreformat' => 'osf',
-        'application/vnd.yamaha.openscoreformat.osfpvg+xml' => 'osfpvg',
-        'application/vnd.yamaha.smaf-audio' => 'saf',
-        'application/vnd.yamaha.smaf-phrase' => 'spf',
-        'application/vnd.yellowriver-custom-menu' => 'cmp',
-        'application/vnd.zul' => 'zir',
-        'application/vnd.zzazz.deck+xml' => 'zaz',
-        'application/voicexml+xml' => 'vxml',
-        'application/widget' => 'wgt',
-        'application/winhlp' => 'hlp',
-        'application/wsdl+xml' => 'wsdl',
-        'application/wspolicy+xml' => 'wspolicy',
-        'application/x-7z-compressed' => '7z',
-        'application/x-abiword' => 'abw',
-        'application/x-ace-compressed' => 'ace',
-        'application/x-apple-diskimage' => 'dmg',
-        'application/x-authorware-bin' => 'aab',
-        'application/x-authorware-map' => 'aam',
-        'application/x-authorware-seg' => 'aas',
-        'application/x-bcpio' => 'bcpio',
-        'application/x-bittorrent' => 'torrent',
-        'application/x-blorb' => 'blb',
-        'application/x-bzip' => 'bz',
-        'application/x-bzip2' => 'bz2',
-        'application/x-cbr' => 'cbr',
-        'application/x-cdlink' => 'vcd',
-        'application/x-cfs-compressed' => 'cfs',
-        'application/x-chat' => 'chat',
-        'application/x-chess-pgn' => 'pgn',
-        'application/x-conference' => 'nsc',
-        'application/x-cpio' => 'cpio',
-        'application/x-csh' => 'csh',
-        'application/x-debian-package' => 'deb',
-        'application/x-dgc-compressed' => 'dgc',
-        'application/x-director' => 'dir',
-        'application/x-doom' => 'wad',
-        'application/x-dtbncx+xml' => 'ncx',
-        'application/x-dtbook+xml' => 'dtb',
-        'application/x-dtbresource+xml' => 'res',
-        'application/x-dvi' => 'dvi',
-        'application/x-envoy' => 'evy',
-        'application/x-eva' => 'eva',
-        'application/x-font-bdf' => 'bdf',
-        'application/x-font-ghostscript' => 'gsf',
-        'application/x-font-linux-psf' => 'psf',
-        'application/x-font-otf' => 'otf',
-        'application/x-font-pcf' => 'pcf',
-        'application/x-font-snf' => 'snf',
-        'application/x-font-ttf' => 'ttf',
-        'application/x-font-type1' => 'pfa',
-        'application/x-font-woff' => 'woff',
-        'application/x-freearc' => 'arc',
-        'application/x-futuresplash' => 'spl',
-        'application/x-gca-compressed' => 'gca',
-        'application/x-glulx' => 'ulx',
-        'application/x-gnumeric' => 'gnumeric',
-        'application/x-gramps-xml' => 'gramps',
-        'application/x-gtar' => 'gtar',
-        'application/x-hdf' => 'hdf',
-        'application/x-install-instructions' => 'install',
-        'application/x-iso9660-image' => 'iso',
-        'application/x-java-jnlp-file' => 'jnlp',
-        'application/x-latex' => 'latex',
-        'application/x-lzh-compressed' => 'lzh',
-        'application/x-mie' => 'mie',
-        'application/x-mobipocket-ebook' => 'prc',
-        'application/x-ms-application' => 'application',
-        'application/x-ms-shortcut' => 'lnk',
-        'application/x-ms-wmd' => 'wmd',
-        'application/x-ms-wmz' => 'wmz',
-        'application/x-ms-xbap' => 'xbap',
-        'application/x-msaccess' => 'mdb',
-        'application/x-msbinder' => 'obd',
-        'application/x-mscardfile' => 'crd',
-        'application/x-msclip' => 'clp',
-        'application/x-msdownload' => 'exe',
-        'application/x-msmediaview' => 'mvb',
-        'application/x-msmetafile' => 'wmf',
-        'application/x-msmoney' => 'mny',
-        'application/x-mspublisher' => 'pub',
-        'application/x-msschedule' => 'scd',
-        'application/x-msterminal' => 'trm',
-        'application/x-mswrite' => 'wri',
-        'application/x-netcdf' => 'nc',
-        'application/x-nzb' => 'nzb',
-        'application/x-pkcs12' => 'p12',
-        'application/x-pkcs7-certificates' => 'p7b',
-        'application/x-pkcs7-certreqresp' => 'p7r',
-        'application/x-rar-compressed' => 'rar',
-        'application/x-rar' => 'rar',
-        'application/x-research-info-systems' => 'ris',
-        'application/x-sh' => 'sh',
-        'application/x-shar' => 'shar',
-        'application/x-shockwave-flash' => 'swf',
-        'application/x-silverlight-app' => 'xap',
-        'application/x-sql' => 'sql',
-        'application/x-stuffit' => 'sit',
-        'application/x-stuffitx' => 'sitx',
-        'application/x-subrip' => 'srt',
-        'application/x-sv4cpio' => 'sv4cpio',
-        'application/x-sv4crc' => 'sv4crc',
-        'application/x-t3vm-image' => 't3',
-        'application/x-tads' => 'gam',
-        'application/x-tar' => 'tar',
-        'application/x-tcl' => 'tcl',
-        'application/x-tex' => 'tex',
-        'application/x-tex-tfm' => 'tfm',
-        'application/x-texinfo' => 'texinfo',
-        'application/x-tgif' => 'obj',
-        'application/x-ustar' => 'ustar',
-        'application/x-wais-source' => 'src',
-        'application/x-x509-ca-cert' => 'der',
-        'application/x-xfig' => 'fig',
-        'application/x-xliff+xml' => 'xlf',
-        'application/x-xpinstall' => 'xpi',
-        'application/x-xz' => 'xz',
-        'application/x-zmachine' => 'z1',
-        'application/xaml+xml' => 'xaml',
-        'application/xcap-diff+xml' => 'xdf',
-        'application/xenc+xml' => 'xenc',
-        'application/xhtml+xml' => 'xhtml',
-        'application/xml' => 'xml',
-        'application/xml-dtd' => 'dtd',
-        'application/xop+xml' => 'xop',
-        'application/xproc+xml' => 'xpl',
-        'application/xslt+xml' => 'xslt',
-        'application/xspf+xml' => 'xspf',
-        'application/xv+xml' => 'mxml',
-        'application/yang' => 'yang',
-        'application/yin+xml' => 'yin',
-        'application/zip' => 'zip',
-        'audio/adpcm' => 'adp',
-        'audio/basic' => 'au',
-        'audio/midi' => 'mid',
-        'audio/mp4' => 'mp4a',
-        'audio/mpeg' => 'mpga',
-        'audio/ogg' => 'oga',
-        'audio/s3m' => 's3m',
-        'audio/silk' => 'sil',
-        'audio/vnd.dece.audio' => 'uva',
-        'audio/vnd.digital-winds' => 'eol',
-        'audio/vnd.dra' => 'dra',
-        'audio/vnd.dts' => 'dts',
-        'audio/vnd.dts.hd' => 'dtshd',
-        'audio/vnd.lucent.voice' => 'lvp',
-        'audio/vnd.ms-playready.media.pya' => 'pya',
-        'audio/vnd.nuera.ecelp4800' => 'ecelp4800',
-        'audio/vnd.nuera.ecelp7470' => 'ecelp7470',
-        'audio/vnd.nuera.ecelp9600' => 'ecelp9600',
-        'audio/vnd.rip' => 'rip',
-        'audio/webm' => 'weba',
-        'audio/x-aac' => 'aac',
-        'audio/x-aiff' => 'aif',
-        'audio/x-caf' => 'caf',
-        'audio/x-flac' => 'flac',
-        'audio/x-matroska' => 'mka',
-        'audio/x-mpegurl' => 'm3u',
-        'audio/x-ms-wax' => 'wax',
-        'audio/x-ms-wma' => 'wma',
-        'audio/x-pn-realaudio' => 'ram',
-        'audio/x-pn-realaudio-plugin' => 'rmp',
-        'audio/x-wav' => 'wav',
-        'audio/xm' => 'xm',
-        'chemical/x-cdx' => 'cdx',
-        'chemical/x-cif' => 'cif',
-        'chemical/x-cmdf' => 'cmdf',
-        'chemical/x-cml' => 'cml',
-        'chemical/x-csml' => 'csml',
-        'chemical/x-xyz' => 'xyz',
-        'image/bmp' => 'bmp',
-        'image/x-ms-bmp' => 'bmp',
-        'image/cgm' => 'cgm',
-        'image/g3fax' => 'g3',
-        'image/gif' => 'gif',
-        'image/ief' => 'ief',
-        'image/jpeg' => 'jpeg',
-        'image/ktx' => 'ktx',
-        'image/png' => 'png',
-        'image/prs.btif' => 'btif',
-        'image/sgi' => 'sgi',
-        'image/svg+xml' => 'svg',
-        'image/tiff' => 'tiff',
-        'image/vnd.adobe.photoshop' => 'psd',
-        'image/vnd.dece.graphic' => 'uvi',
-        'image/vnd.dvb.subtitle' => 'sub',
-        'image/vnd.djvu' => 'djvu',
-        'image/vnd.dwg' => 'dwg',
-        'image/vnd.dxf' => 'dxf',
-        'image/vnd.fastbidsheet' => 'fbs',
-        'image/vnd.fpx' => 'fpx',
-        'image/vnd.fst' => 'fst',
-        'image/vnd.fujixerox.edmics-mmr' => 'mmr',
-        'image/vnd.fujixerox.edmics-rlc' => 'rlc',
-        'image/vnd.ms-modi' => 'mdi',
-        'image/vnd.ms-photo' => 'wdp',
-        'image/vnd.net-fpx' => 'npx',
-        'image/vnd.wap.wbmp' => 'wbmp',
-        'image/vnd.xiff' => 'xif',
-        'image/webp' => 'webp',
-        'image/x-3ds' => '3ds',
-        'image/x-cmu-raster' => 'ras',
-        'image/x-cmx' => 'cmx',
-        'image/x-freehand' => 'fh',
-        'image/x-icon' => 'ico',
-        'image/x-mrsid-image' => 'sid',
-        'image/x-pcx' => 'pcx',
-        'image/x-pict' => 'pic',
-        'image/x-portable-anymap' => 'pnm',
-        'image/x-portable-bitmap' => 'pbm',
-        'image/x-portable-graymap' => 'pgm',
-        'image/x-portable-pixmap' => 'ppm',
-        'image/x-rgb' => 'rgb',
-        'image/x-tga' => 'tga',
-        'image/x-xbitmap' => 'xbm',
-        'image/x-xpixmap' => 'xpm',
-        'image/x-xwindowdump' => 'xwd',
-        'message/rfc822' => 'eml',
-        'model/iges' => 'igs',
-        'model/mesh' => 'msh',
-        'model/vnd.collada+xml' => 'dae',
-        'model/vnd.dwf' => 'dwf',
-        'model/vnd.gdl' => 'gdl',
-        'model/vnd.gtw' => 'gtw',
-        'model/vnd.mts' => 'mts',
-        'model/vnd.vtu' => 'vtu',
-        'model/vrml' => 'wrl',
-        'model/x3d+binary' => 'x3db',
-        'model/x3d+vrml' => 'x3dv',
-        'model/x3d+xml' => 'x3d',
-        'text/cache-manifest' => 'appcache',
-        'text/calendar' => 'ics',
-        'text/css' => 'css',
-        'text/csv' => 'csv',
-        'text/html' => 'html',
-        'text/n3' => 'n3',
-        'text/plain' => 'txt',
-        'text/prs.lines.tag' => 'dsc',
-        'text/richtext' => 'rtx',
-        'text/rtf' => 'rtf',
-        'text/sgml' => 'sgml',
-        'text/tab-separated-values' => 'tsv',
-        'text/troff' => 't',
-        'text/turtle' => 'ttl',
-        'text/uri-list' => 'uri',
-        'text/vcard' => 'vcard',
-        'text/vnd.curl' => 'curl',
-        'text/vnd.curl.dcurl' => 'dcurl',
-        'text/vnd.curl.scurl' => 'scurl',
-        'text/vnd.curl.mcurl' => 'mcurl',
-        'text/vnd.dvb.subtitle' => 'sub',
-        'text/vnd.fly' => 'fly',
-        'text/vnd.fmi.flexstor' => 'flx',
-        'text/vnd.graphviz' => 'gv',
-        'text/vnd.in3d.3dml' => '3dml',
-        'text/vnd.in3d.spot' => 'spot',
-        'text/vnd.sun.j2me.app-descriptor' => 'jad',
-        'text/vnd.wap.wml' => 'wml',
-        'text/vnd.wap.wmlscript' => 'wmls',
-        'text/x-asm' => 's',
-        'text/x-c' => 'c',
-        'text/x-fortran' => 'f',
-        'text/x-pascal' => 'p',
-        'text/x-java-source' => 'java',
-        'text/x-opml' => 'opml',
-        'text/x-nfo' => 'nfo',
-        'text/x-setext' => 'etx',
-        'text/x-sfv' => 'sfv',
-        'text/x-uuencode' => 'uu',
-        'text/x-vcalendar' => 'vcs',
-        'text/x-vcard' => 'vcf',
-        'video/3gpp' => '3gp',
-        'video/3gpp2' => '3g2',
-        'video/h261' => 'h261',
-        'video/h263' => 'h263',
-        'video/h264' => 'h264',
-        'video/jpeg' => 'jpgv',
-        'video/jpm' => 'jpm',
-        'video/mj2' => 'mj2',
-        'video/mp4' => 'mp4',
-        'video/mpeg' => 'mpeg',
-        'video/ogg' => 'ogv',
-        'video/quicktime' => 'qt',
-        'video/vnd.dece.hd' => 'uvh',
-        'video/vnd.dece.mobile' => 'uvm',
-        'video/vnd.dece.pd' => 'uvp',
-        'video/vnd.dece.sd' => 'uvs',
-        'video/vnd.dece.video' => 'uvv',
-        'video/vnd.dvb.file' => 'dvb',
-        'video/vnd.fvt' => 'fvt',
-        'video/vnd.mpegurl' => 'mxu',
-        'video/vnd.ms-playready.media.pyv' => 'pyv',
-        'video/vnd.uvvu.mp4' => 'uvu',
-        'video/vnd.vivo' => 'viv',
-        'video/webm' => 'webm',
-        'video/x-f4v' => 'f4v',
-        'video/x-fli' => 'fli',
-        'video/x-flv' => 'flv',
-        'video/x-m4v' => 'm4v',
-        'video/x-matroska' => 'mkv',
-        'video/x-mng' => 'mng',
-        'video/x-ms-asf' => 'asf',
-        'video/x-ms-vob' => 'vob',
-        'video/x-ms-wm' => 'wm',
-        'video/x-ms-wmv' => 'wmv',
-        'video/x-ms-wmx' => 'wmx',
-        'video/x-ms-wvx' => 'wvx',
-        'video/x-msvideo' => 'avi',
-        'video/x-sgi-movie' => 'movie',
-        'video/x-smv' => 'smv',
-        'x-conference/x-cooltalk' => 'ice',
-    );
-
-    /**
-     * {@inheritdoc}
-     */
-    public function guess($mimeType)
-    {
-        return isset($this->defaultExtensions[$mimeType]) ? $this->defaultExtensions[$mimeType] : null;
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php
deleted file mode 100644
index ecc8a30..0000000
--- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?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\HttpFoundation\File\MimeType;
-
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
-
-/**
- * A singleton mime type guesser.
- *
- * By default, all mime type guessers provided by the framework are installed
- * (if available on the current OS/PHP setup).
- *
- * You can register custom guessers by calling the register() method on the
- * singleton instance. Custom guessers are always called before any default ones.
- *
- *     $guesser = MimeTypeGuesser::getInstance();
- *     $guesser->register(new MyCustomMimeTypeGuesser());
- *
- * If you want to change the order of the default guessers, just re-register your
- * preferred one as a custom one. The last registered guesser is preferred over
- * previously registered ones.
- *
- * Re-registering a built-in guesser also allows you to configure it:
- *
- *     $guesser = MimeTypeGuesser::getInstance();
- *     $guesser->register(new FileinfoMimeTypeGuesser('/path/to/magic/file'));
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class MimeTypeGuesser implements MimeTypeGuesserInterface
-{
-    /**
-     * The singleton instance.
-     *
-     * @var MimeTypeGuesser
-     */
-    private static $instance = null;
-
-    /**
-     * All registered MimeTypeGuesserInterface instances.
-     *
-     * @var array
-     */
-    protected $guessers = array();
-
-    /**
-     * Returns the singleton instance.
-     *
-     * @return MimeTypeGuesser
-     */
-    public static function getInstance()
-    {
-        if (null === self::$instance) {
-            self::$instance = new self();
-        }
-
-        return self::$instance;
-    }
-
-    /**
-     * Resets the singleton instance.
-     */
-    public static function reset()
-    {
-        self::$instance = null;
-    }
-
-    /**
-     * Registers all natively provided mime type guessers.
-     */
-    private function __construct()
-    {
-        if (FileBinaryMimeTypeGuesser::isSupported()) {
-            $this->register(new FileBinaryMimeTypeGuesser());
-        }
-
-        if (FileinfoMimeTypeGuesser::isSupported()) {
-            $this->register(new FileinfoMimeTypeGuesser());
-        }
-    }
-
-    /**
-     * Registers a new mime type guesser.
-     *
-     * When guessing, this guesser is preferred over previously registered ones.
-     *
-     * @param MimeTypeGuesserInterface $guesser
-     */
-    public function register(MimeTypeGuesserInterface $guesser)
-    {
-        array_unshift($this->guessers, $guesser);
-    }
-
-    /**
-     * Tries to guess the mime type of the given file.
-     *
-     * The file is passed to each registered mime type guesser in reverse order
-     * of their registration (last registered is queried first). Once a guesser
-     * returns a value that is not NULL, this method terminates and returns the
-     * value.
-     *
-     * @param string $path The path to the file
-     *
-     * @return string The mime type or NULL, if none could be guessed
-     *
-     * @throws \LogicException
-     * @throws FileNotFoundException
-     * @throws AccessDeniedException
-     */
-    public function guess($path)
-    {
-        if (!is_file($path)) {
-            throw new FileNotFoundException($path);
-        }
-
-        if (!is_readable($path)) {
-            throw new AccessDeniedException($path);
-        }
-
-        if (!$this->guessers) {
-            $msg = 'Unable to guess the mime type as no guessers are available';
-            if (!FileinfoMimeTypeGuesser::isSupported()) {
-                $msg .= ' (Did you enable the php_fileinfo extension?)';
-            }
-            throw new \LogicException($msg);
-        }
-
-        foreach ($this->guessers as $guesser) {
-            if (null !== $mimeType = $guesser->guess($path)) {
-                return $mimeType;
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesserInterface.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesserInterface.php
deleted file mode 100644
index f8c3ad2..0000000
--- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesserInterface.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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\HttpFoundation\File\MimeType;
-
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
-
-/**
- * Guesses the mime type of a file.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface MimeTypeGuesserInterface
-{
-    /**
-     * Guesses the mime type of the file with the given path.
-     *
-     * @param string $path The path to the file
-     *
-     * @return string The mime type or NULL, if none could be guessed
-     *
-     * @throws FileNotFoundException If the file does not exist
-     * @throws AccessDeniedException If the file could not be read
-     */
-    public function guess($path);
-}
diff --git a/vendor/symfony/http-foundation/File/UploadedFile.php b/vendor/symfony/http-foundation/File/UploadedFile.php
deleted file mode 100644
index 6b869e0..0000000
--- a/vendor/symfony/http-foundation/File/UploadedFile.php
+++ /dev/null
@@ -1,293 +0,0 @@
-<?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\HttpFoundation\File;
-
-use Symfony\Component\HttpFoundation\File\Exception\FileException;
-use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
-use Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser;
-
-/**
- * A file uploaded through a form.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @author Florian Eckerstorfer <florian@eckerstorfer.org>
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class UploadedFile extends File
-{
-    /**
-     * Whether the test mode is activated.
-     *
-     * Local files are used in test mode hence the code should not enforce HTTP uploads.
-     *
-     * @var bool
-     */
-    private $test = false;
-
-    /**
-     * The original name of the uploaded file.
-     *
-     * @var string
-     */
-    private $originalName;
-
-    /**
-     * The mime type provided by the uploader.
-     *
-     * @var string
-     */
-    private $mimeType;
-
-    /**
-     * The file size provided by the uploader.
-     *
-     * @var string
-     */
-    private $size;
-
-    /**
-     * The UPLOAD_ERR_XXX constant provided by the uploader.
-     *
-     * @var int
-     */
-    private $error;
-
-    /**
-     * Accepts the information of the uploaded file as provided by the PHP global $_FILES.
-     *
-     * The file object is only created when the uploaded file is valid (i.e. when the
-     * isValid() method returns true). Otherwise the only methods that could be called
-     * on an UploadedFile instance are:
-     *
-     *   * getClientOriginalName,
-     *   * getClientMimeType,
-     *   * isValid,
-     *   * getError.
-     *
-     * Calling any other method on an non-valid instance will cause an unpredictable result.
-     *
-     * @param string $path         The full temporary path to the file
-     * @param string $originalName The original file name
-     * @param string $mimeType     The type of the file as provided by PHP
-     * @param int    $size         The file size
-     * @param int    $error        The error constant of the upload (one of PHP's UPLOAD_ERR_XXX constants)
-     * @param bool   $test         Whether the test mode is active
-     *
-     * @throws FileException         If file_uploads is disabled
-     * @throws FileNotFoundException If the file does not exist
-     */
-    public function __construct($path, $originalName, $mimeType = null, $size = null, $error = null, $test = false)
-    {
-        $this->originalName = $this->getName($originalName);
-        $this->mimeType = $mimeType ?: 'application/octet-stream';
-        $this->size = $size;
-        $this->error = $error ?: UPLOAD_ERR_OK;
-        $this->test = (bool) $test;
-
-        parent::__construct($path, UPLOAD_ERR_OK === $this->error);
-    }
-
-    /**
-     * Returns the original file name.
-     *
-     * It is extracted from the request from which the file has been uploaded.
-     * Then it should not be considered as a safe value.
-     *
-     * @return string|null The original name
-     */
-    public function getClientOriginalName()
-    {
-        return $this->originalName;
-    }
-
-    /**
-     * Returns the original file extension.
-     *
-     * It is extracted from the original file name that was uploaded.
-     * Then it should not be considered as a safe value.
-     *
-     * @return string The extension
-     */
-    public function getClientOriginalExtension()
-    {
-        return pathinfo($this->originalName, PATHINFO_EXTENSION);
-    }
-
-    /**
-     * Returns the file mime type.
-     *
-     * The client mime type is extracted from the request from which the file
-     * was uploaded, so it should not be considered as a safe value.
-     *
-     * For a trusted mime type, use getMimeType() instead (which guesses the mime
-     * type based on the file content).
-     *
-     * @return string|null The mime type
-     *
-     * @see getMimeType()
-     */
-    public function getClientMimeType()
-    {
-        return $this->mimeType;
-    }
-
-    /**
-     * Returns the extension based on the client mime type.
-     *
-     * If the mime type is unknown, returns null.
-     *
-     * This method uses the mime type as guessed by getClientMimeType()
-     * to guess the file extension. As such, the extension returned
-     * by this method cannot be trusted.
-     *
-     * For a trusted extension, use guessExtension() instead (which guesses
-     * the extension based on the guessed mime type for the file).
-     *
-     * @return string|null The guessed extension or null if it cannot be guessed
-     *
-     * @see guessExtension()
-     * @see getClientMimeType()
-     */
-    public function guessClientExtension()
-    {
-        $type = $this->getClientMimeType();
-        $guesser = ExtensionGuesser::getInstance();
-
-        return $guesser->guess($type);
-    }
-
-    /**
-     * Returns the file size.
-     *
-     * It is extracted from the request from which the file has been uploaded.
-     * Then it should not be considered as a safe value.
-     *
-     * @return int|null The file size
-     */
-    public function getClientSize()
-    {
-        return $this->size;
-    }
-
-    /**
-     * Returns the upload error.
-     *
-     * If the upload was successful, the constant UPLOAD_ERR_OK is returned.
-     * Otherwise one of the other UPLOAD_ERR_XXX constants is returned.
-     *
-     * @return int The upload error
-     */
-    public function getError()
-    {
-        return $this->error;
-    }
-
-    /**
-     * Returns whether the file was uploaded successfully.
-     *
-     * @return bool True if the file has been uploaded with HTTP and no error occurred.
-     */
-    public function isValid()
-    {
-        $isOk = $this->error === UPLOAD_ERR_OK;
-
-        return $this->test ? $isOk : $isOk && is_uploaded_file($this->getPathname());
-    }
-
-    /**
-     * Moves the file to a new location.
-     *
-     * @param string $directory The destination folder
-     * @param string $name      The new file name
-     *
-     * @return File A File object representing the new file
-     *
-     * @throws FileException if, for any reason, the file could not have been moved
-     */
-    public function move($directory, $name = null)
-    {
-        if ($this->isValid()) {
-            if ($this->test) {
-                return parent::move($directory, $name);
-            }
-
-            $target = $this->getTargetFile($directory, $name);
-
-            if (!@move_uploaded_file($this->getPathname(), $target)) {
-                $error = error_get_last();
-                throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s)', $this->getPathname(), $target, strip_tags($error['message'])));
-            }
-
-            @chmod($target, 0666 & ~umask());
-
-            return $target;
-        }
-
-        throw new FileException($this->getErrorMessage());
-    }
-
-    /**
-     * Returns the maximum size of an uploaded file as configured in php.ini.
-     *
-     * @return int The maximum size of an uploaded file in bytes
-     */
-    public static function getMaxFilesize()
-    {
-        $iniMax = strtolower(ini_get('upload_max_filesize'));
-
-        if ('' === $iniMax) {
-            return PHP_INT_MAX;
-        }
-
-        $max = ltrim($iniMax, '+');
-        if (0 === strpos($max, '0x')) {
-            $max = intval($max, 16);
-        } elseif (0 === strpos($max, '0')) {
-            $max = intval($max, 8);
-        } else {
-            $max = (int) $max;
-        }
-
-        switch (substr($iniMax, -1)) {
-            case 't': $max *= 1024;
-            case 'g': $max *= 1024;
-            case 'm': $max *= 1024;
-            case 'k': $max *= 1024;
-        }
-
-        return $max;
-    }
-
-    /**
-     * Returns an informative upload error message.
-     *
-     * @return string The error message regarding the specified error code
-     */
-    public function getErrorMessage()
-    {
-        static $errors = array(
-            UPLOAD_ERR_INI_SIZE => 'The file "%s" exceeds your upload_max_filesize ini directive (limit is %d KiB).',
-            UPLOAD_ERR_FORM_SIZE => 'The file "%s" exceeds the upload limit defined in your form.',
-            UPLOAD_ERR_PARTIAL => 'The file "%s" was only partially uploaded.',
-            UPLOAD_ERR_NO_FILE => 'No file was uploaded.',
-            UPLOAD_ERR_CANT_WRITE => 'The file "%s" could not be written on disk.',
-            UPLOAD_ERR_NO_TMP_DIR => 'File could not be uploaded: missing temporary directory.',
-            UPLOAD_ERR_EXTENSION => 'File upload was stopped by a PHP extension.',
-        );
-
-        $errorCode = $this->error;
-        $maxFilesize = $errorCode === UPLOAD_ERR_INI_SIZE ? self::getMaxFilesize() / 1024 : 0;
-        $message = isset($errors[$errorCode]) ? $errors[$errorCode] : 'The file "%s" was not uploaded due to an unknown error.';
-
-        return sprintf($message, $this->getClientOriginalName(), $maxFilesize);
-    }
-}
diff --git a/vendor/symfony/http-foundation/FileBag.php b/vendor/symfony/http-foundation/FileBag.php
deleted file mode 100644
index 197eab4..0000000
--- a/vendor/symfony/http-foundation/FileBag.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?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\HttpFoundation;
-
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-
-/**
- * FileBag is a container for uploaded files.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- */
-class FileBag extends ParameterBag
-{
-    private static $fileKeys = array('error', 'name', 'size', 'tmp_name', 'type');
-
-    /**
-     * Constructor.
-     *
-     * @param array $parameters An array of HTTP files
-     */
-    public function __construct(array $parameters = array())
-    {
-        $this->replace($parameters);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function replace(array $files = array())
-    {
-        $this->parameters = array();
-        $this->add($files);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($key, $value)
-    {
-        if (!is_array($value) && !$value instanceof UploadedFile) {
-            throw new \InvalidArgumentException('An uploaded file must be an array or an instance of UploadedFile.');
-        }
-
-        parent::set($key, $this->convertFileInformation($value));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add(array $files = array())
-    {
-        foreach ($files as $key => $file) {
-            $this->set($key, $file);
-        }
-    }
-
-    /**
-     * Converts uploaded files to UploadedFile instances.
-     *
-     * @param array|UploadedFile $file A (multi-dimensional) array of uploaded file information
-     *
-     * @return array A (multi-dimensional) array of UploadedFile instances
-     */
-    protected function convertFileInformation($file)
-    {
-        if ($file instanceof UploadedFile) {
-            return $file;
-        }
-
-        $file = $this->fixPhpFilesArray($file);
-        if (is_array($file)) {
-            $keys = array_keys($file);
-            sort($keys);
-
-            if ($keys == self::$fileKeys) {
-                if (UPLOAD_ERR_NO_FILE == $file['error']) {
-                    $file = null;
-                } else {
-                    $file = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['size'], $file['error']);
-                }
-            } else {
-                $file = array_map(array($this, 'convertFileInformation'), $file);
-            }
-        }
-
-        return $file;
-    }
-
-    /**
-     * Fixes a malformed PHP $_FILES array.
-     *
-     * PHP has a bug that the format of the $_FILES array differs, depending on
-     * whether the uploaded file fields had normal field names or array-like
-     * field names ("normal" vs. "parent[child]").
-     *
-     * This method fixes the array to look like the "normal" $_FILES array.
-     *
-     * It's safe to pass an already converted array, in which case this method
-     * just returns the original array unmodified.
-     *
-     * @param array $data
-     *
-     * @return array
-     */
-    protected function fixPhpFilesArray($data)
-    {
-        if (!is_array($data)) {
-            return $data;
-        }
-
-        $keys = array_keys($data);
-        sort($keys);
-
-        if (self::$fileKeys != $keys || !isset($data['name']) || !is_array($data['name'])) {
-            return $data;
-        }
-
-        $files = $data;
-        foreach (self::$fileKeys as $k) {
-            unset($files[$k]);
-        }
-
-        foreach ($data['name'] as $key => $name) {
-            $files[$key] = $this->fixPhpFilesArray(array(
-                'error' => $data['error'][$key],
-                'name' => $name,
-                'type' => $data['type'][$key],
-                'tmp_name' => $data['tmp_name'][$key],
-                'size' => $data['size'][$key],
-            ));
-        }
-
-        return $files;
-    }
-}
diff --git a/vendor/symfony/http-foundation/HeaderBag.php b/vendor/symfony/http-foundation/HeaderBag.php
deleted file mode 100644
index dc12000..0000000
--- a/vendor/symfony/http-foundation/HeaderBag.php
+++ /dev/null
@@ -1,324 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * HeaderBag is a container for HTTP headers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HeaderBag implements \IteratorAggregate, \Countable
-{
-    protected $headers = array();
-    protected $cacheControl = array();
-
-    /**
-     * Constructor.
-     *
-     * @param array $headers An array of HTTP headers
-     */
-    public function __construct(array $headers = array())
-    {
-        foreach ($headers as $key => $values) {
-            $this->set($key, $values);
-        }
-    }
-
-    /**
-     * Returns the headers as a string.
-     *
-     * @return string The headers
-     */
-    public function __toString()
-    {
-        if (!$this->headers) {
-            return '';
-        }
-
-        $max = max(array_map('strlen', array_keys($this->headers))) + 1;
-        $content = '';
-        ksort($this->headers);
-        foreach ($this->headers as $name => $values) {
-            $name = implode('-', array_map('ucfirst', explode('-', $name)));
-            foreach ($values as $value) {
-                $content .= sprintf("%-{$max}s %s\r\n", $name.':', $value);
-            }
-        }
-
-        return $content;
-    }
-
-    /**
-     * Returns the headers.
-     *
-     * @return array An array of headers
-     */
-    public function all()
-    {
-        return $this->headers;
-    }
-
-    /**
-     * Returns the parameter keys.
-     *
-     * @return array An array of parameter keys
-     */
-    public function keys()
-    {
-        return array_keys($this->headers);
-    }
-
-    /**
-     * Replaces the current HTTP headers by a new set.
-     *
-     * @param array $headers An array of HTTP headers
-     */
-    public function replace(array $headers = array())
-    {
-        $this->headers = array();
-        $this->add($headers);
-    }
-
-    /**
-     * Adds new headers the current HTTP headers set.
-     *
-     * @param array $headers An array of HTTP headers
-     */
-    public function add(array $headers)
-    {
-        foreach ($headers as $key => $values) {
-            $this->set($key, $values);
-        }
-    }
-
-    /**
-     * Returns a header value by name.
-     *
-     * @param string $key     The header name
-     * @param mixed  $default The default value
-     * @param bool   $first   Whether to return the first value or all header values
-     *
-     * @return string|array The first header value if $first is true, an array of values otherwise
-     */
-    public function get($key, $default = null, $first = true)
-    {
-        $key = strtr(strtolower($key), '_', '-');
-
-        if (!array_key_exists($key, $this->headers)) {
-            if (null === $default) {
-                return $first ? null : array();
-            }
-
-            return $first ? $default : array($default);
-        }
-
-        if ($first) {
-            return count($this->headers[$key]) ? $this->headers[$key][0] : $default;
-        }
-
-        return $this->headers[$key];
-    }
-
-    /**
-     * Sets a header by name.
-     *
-     * @param string       $key     The key
-     * @param string|array $values  The value or an array of values
-     * @param bool         $replace Whether to replace the actual value or not (true by default)
-     */
-    public function set($key, $values, $replace = true)
-    {
-        $key = strtr(strtolower($key), '_', '-');
-
-        $values = array_values((array) $values);
-
-        if (true === $replace || !isset($this->headers[$key])) {
-            $this->headers[$key] = $values;
-        } else {
-            $this->headers[$key] = array_merge($this->headers[$key], $values);
-        }
-
-        if ('cache-control' === $key) {
-            $this->cacheControl = $this->parseCacheControl($values[0]);
-        }
-    }
-
-    /**
-     * Returns true if the HTTP header is defined.
-     *
-     * @param string $key The HTTP header
-     *
-     * @return bool true if the parameter exists, false otherwise
-     */
-    public function has($key)
-    {
-        return array_key_exists(strtr(strtolower($key), '_', '-'), $this->headers);
-    }
-
-    /**
-     * Returns true if the given HTTP header contains the given value.
-     *
-     * @param string $key   The HTTP header name
-     * @param string $value The HTTP value
-     *
-     * @return bool true if the value is contained in the header, false otherwise
-     */
-    public function contains($key, $value)
-    {
-        return in_array($value, $this->get($key, null, false));
-    }
-
-    /**
-     * Removes a header.
-     *
-     * @param string $key The HTTP header name
-     */
-    public function remove($key)
-    {
-        $key = strtr(strtolower($key), '_', '-');
-
-        unset($this->headers[$key]);
-
-        if ('cache-control' === $key) {
-            $this->cacheControl = array();
-        }
-    }
-
-    /**
-     * Returns the HTTP header value converted to a date.
-     *
-     * @param string    $key     The parameter key
-     * @param \DateTime $default The default value
-     *
-     * @return null|\DateTime The parsed DateTime or the default value if the header does not exist
-     *
-     * @throws \RuntimeException When the HTTP header is not parseable
-     */
-    public function getDate($key, \DateTime $default = null)
-    {
-        if (null === $value = $this->get($key)) {
-            return $default;
-        }
-
-        if (false === $date = \DateTime::createFromFormat(DATE_RFC2822, $value)) {
-            throw new \RuntimeException(sprintf('The %s HTTP header is not parseable (%s).', $key, $value));
-        }
-
-        return $date;
-    }
-
-    /**
-     * Adds a custom Cache-Control directive.
-     *
-     * @param string $key   The Cache-Control directive name
-     * @param mixed  $value The Cache-Control directive value
-     */
-    public function addCacheControlDirective($key, $value = true)
-    {
-        $this->cacheControl[$key] = $value;
-
-        $this->set('Cache-Control', $this->getCacheControlHeader());
-    }
-
-    /**
-     * Returns true if the Cache-Control directive is defined.
-     *
-     * @param string $key The Cache-Control directive
-     *
-     * @return bool true if the directive exists, false otherwise
-     */
-    public function hasCacheControlDirective($key)
-    {
-        return array_key_exists($key, $this->cacheControl);
-    }
-
-    /**
-     * Returns a Cache-Control directive value by name.
-     *
-     * @param string $key The directive name
-     *
-     * @return mixed|null The directive value if defined, null otherwise
-     */
-    public function getCacheControlDirective($key)
-    {
-        return array_key_exists($key, $this->cacheControl) ? $this->cacheControl[$key] : null;
-    }
-
-    /**
-     * Removes a Cache-Control directive.
-     *
-     * @param string $key The Cache-Control directive
-     */
-    public function removeCacheControlDirective($key)
-    {
-        unset($this->cacheControl[$key]);
-
-        $this->set('Cache-Control', $this->getCacheControlHeader());
-    }
-
-    /**
-     * Returns an iterator for headers.
-     *
-     * @return \ArrayIterator An \ArrayIterator instance
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->headers);
-    }
-
-    /**
-     * Returns the number of headers.
-     *
-     * @return int The number of headers
-     */
-    public function count()
-    {
-        return count($this->headers);
-    }
-
-    protected function getCacheControlHeader()
-    {
-        $parts = array();
-        ksort($this->cacheControl);
-        foreach ($this->cacheControl as $key => $value) {
-            if (true === $value) {
-                $parts[] = $key;
-            } else {
-                if (preg_match('#[^a-zA-Z0-9._-]#', $value)) {
-                    $value = '"'.$value.'"';
-                }
-
-                $parts[] = "$key=$value";
-            }
-        }
-
-        return implode(', ', $parts);
-    }
-
-    /**
-     * Parses a Cache-Control HTTP header.
-     *
-     * @param string $header The value of the Cache-Control HTTP header
-     *
-     * @return array An array representing the attribute values
-     */
-    protected function parseCacheControl($header)
-    {
-        $cacheControl = array();
-        preg_match_all('#([a-zA-Z][a-zA-Z_-]*)\s*(?:=(?:"([^"]*)"|([^ \t",;]*)))?#', $header, $matches, PREG_SET_ORDER);
-        foreach ($matches as $match) {
-            $cacheControl[strtolower($match[1])] = isset($match[3]) ? $match[3] : (isset($match[2]) ? $match[2] : true);
-        }
-
-        return $cacheControl;
-    }
-}
diff --git a/vendor/symfony/http-foundation/IpUtils.php b/vendor/symfony/http-foundation/IpUtils.php
deleted file mode 100644
index e08301e..0000000
--- a/vendor/symfony/http-foundation/IpUtils.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * Http utility functions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class IpUtils
-{
-    /**
-     * This class should not be instantiated.
-     */
-    private function __construct()
-    {
-    }
-
-    /**
-     * Checks if an IPv4 or IPv6 address is contained in the list of given IPs or subnets.
-     *
-     * @param string       $requestIp IP to check
-     * @param string|array $ips       List of IPs or subnets (can be a string if only a single one)
-     *
-     * @return bool Whether the IP is valid
-     */
-    public static function checkIp($requestIp, $ips)
-    {
-        if (!is_array($ips)) {
-            $ips = array($ips);
-        }
-
-        $method = substr_count($requestIp, ':') > 1 ? 'checkIp6' : 'checkIp4';
-
-        foreach ($ips as $ip) {
-            if (self::$method($requestIp, $ip)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Compares two IPv4 addresses.
-     * In case a subnet is given, it checks if it contains the request IP.
-     *
-     * @param string $requestIp IPv4 address to check
-     * @param string $ip        IPv4 address or subnet in CIDR notation
-     *
-     * @return bool Whether the request IP matches the IP, or whether the request IP is within the CIDR subnet.
-     */
-    public static function checkIp4($requestIp, $ip)
-    {
-        if (false !== strpos($ip, '/')) {
-            list($address, $netmask) = explode('/', $ip, 2);
-
-            if ($netmask === '0') {
-                // Ensure IP is valid - using ip2long below implicitly validates, but we need to do it manually here
-                return filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
-            }
-
-            if ($netmask < 0 || $netmask > 32) {
-                return false;
-            }
-        } else {
-            $address = $ip;
-            $netmask = 32;
-        }
-
-        return 0 === substr_compare(sprintf('%032b', ip2long($requestIp)), sprintf('%032b', ip2long($address)), 0, $netmask);
-    }
-
-    /**
-     * Compares two IPv6 addresses.
-     * In case a subnet is given, it checks if it contains the request IP.
-     *
-     * @author David Soria Parra <dsp at php dot net>
-     *
-     * @see https://github.com/dsp/v6tools
-     *
-     * @param string $requestIp IPv6 address to check
-     * @param string $ip        IPv6 address or subnet in CIDR notation
-     *
-     * @return bool Whether the IP is valid
-     *
-     * @throws \RuntimeException When IPV6 support is not enabled
-     */
-    public static function checkIp6($requestIp, $ip)
-    {
-        if (!((extension_loaded('sockets') && defined('AF_INET6')) || @inet_pton('::1'))) {
-            throw new \RuntimeException('Unable to check Ipv6. Check that PHP was not compiled with option "disable-ipv6".');
-        }
-
-        if (false !== strpos($ip, '/')) {
-            list($address, $netmask) = explode('/', $ip, 2);
-
-            if ($netmask < 1 || $netmask > 128) {
-                return false;
-            }
-        } else {
-            $address = $ip;
-            $netmask = 128;
-        }
-
-        $bytesAddr = unpack('n*', inet_pton($address));
-        $bytesTest = unpack('n*', inet_pton($requestIp));
-
-        for ($i = 1, $ceil = ceil($netmask / 16); $i <= $ceil; ++$i) {
-            $left = $netmask - 16 * ($i - 1);
-            $left = ($left <= 16) ? $left : 16;
-            $mask = ~(0xffff >> $left) & 0xffff;
-            if (($bytesAddr[$i] & $mask) != ($bytesTest[$i] & $mask)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/symfony/http-foundation/JsonResponse.php b/vendor/symfony/http-foundation/JsonResponse.php
deleted file mode 100644
index 5399d1b..0000000
--- a/vendor/symfony/http-foundation/JsonResponse.php
+++ /dev/null
@@ -1,226 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * Response represents an HTTP response in JSON format.
- *
- * Note that this class does not force the returned JSON content to be an
- * object. It is however recommended that you do return an object as it
- * protects yourself against XSSI and JSON-JavaScript Hijacking.
- *
- * @see https://www.owasp.org/index.php/OWASP_AJAX_Security_Guidelines#Always_return_JSON_with_an_Object_on_the_outside
- *
- * @author Igor Wiedler <igor@wiedler.ch>
- */
-class JsonResponse extends Response
-{
-    protected $data;
-    protected $callback;
-
-    // Encode <, >, ', &, and " for RFC4627-compliant JSON, which may also be embedded into HTML.
-    // 15 === JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT
-    protected $encodingOptions = 15;
-
-    /**
-     * Constructor.
-     *
-     * @param mixed $data    The response data
-     * @param int   $status  The response status code
-     * @param array $headers An array of response headers
-     */
-    public function __construct($data = null, $status = 200, $headers = array())
-    {
-        parent::__construct('', $status, $headers);
-
-        if (null === $data) {
-            $data = new \ArrayObject();
-        }
-
-        $this->setData($data);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public static function create($data = null, $status = 200, $headers = array())
-    {
-        return new static($data, $status, $headers);
-    }
-
-    /**
-     * Sets the JSONP callback.
-     *
-     * @param string|null $callback The JSONP callback or null to use none
-     *
-     * @return JsonResponse
-     *
-     * @throws \InvalidArgumentException When the callback name is not valid
-     */
-    public function setCallback($callback = null)
-    {
-        if (null !== $callback) {
-            // taken from http://www.geekality.net/2011/08/03/valid-javascript-identifier/
-            $pattern = '/^[$_\p{L}][$_\p{L}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{200C}\x{200D}]*+$/u';
-            $parts = explode('.', $callback);
-            foreach ($parts as $part) {
-                if (!preg_match($pattern, $part)) {
-                    throw new \InvalidArgumentException('The callback name is not valid.');
-                }
-            }
-        }
-
-        $this->callback = $callback;
-
-        return $this->update();
-    }
-
-    /**
-     * Sets the data to be sent as JSON.
-     *
-     * @param mixed $data
-     *
-     * @return JsonResponse
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setData($data = array())
-    {
-        if (defined('HHVM_VERSION')) {
-            // HHVM does not trigger any warnings and let exceptions
-            // thrown from a JsonSerializable object pass through.
-            // If only PHP did the same...
-            $data = json_encode($data, $this->encodingOptions);
-        } else {
-            try {
-                if (PHP_VERSION_ID < 50400) {
-                    // PHP 5.3 triggers annoying warnings for some
-                    // types that can't be serialized as JSON (INF, resources, etc.)
-                    // but doesn't provide the JsonSerializable interface.
-                    set_error_handler('var_dump', 0);
-                    $data = @json_encode($data, $this->encodingOptions);
-                } else {
-                    // PHP 5.4 and up wrap exceptions thrown by JsonSerializable
-                    // objects in a new exception that needs to be removed.
-                    // Fortunately, PHP 5.5 and up do not trigger any warning anymore.
-                    if (PHP_VERSION_ID < 50500) {
-                        // Clear json_last_error()
-                        json_encode(null);
-                        $errorHandler = set_error_handler('var_dump');
-                        restore_error_handler();
-                        set_error_handler(function () use ($errorHandler) {
-                            if (JSON_ERROR_NONE === json_last_error()) {
-                                return $errorHandler && false !== call_user_func_array($errorHandler, func_get_args());
-                            }
-                        });
-                    }
-
-                    $data = json_encode($data, $this->encodingOptions);
-                }
-
-                if (PHP_VERSION_ID < 50500) {
-                    restore_error_handler();
-                }
-            } catch (\Exception $e) {
-                if (PHP_VERSION_ID < 50500) {
-                    restore_error_handler();
-                }
-                if (PHP_VERSION_ID >= 50400 && 'Exception' === get_class($e) && 0 === strpos($e->getMessage(), 'Failed calling ')) {
-                    throw $e->getPrevious() ?: $e;
-                }
-                throw $e;
-            }
-        }
-
-        if (JSON_ERROR_NONE !== json_last_error()) {
-            throw new \InvalidArgumentException($this->transformJsonError());
-        }
-
-        $this->data = $data;
-
-        return $this->update();
-    }
-
-    /**
-     * Returns options used while encoding data to JSON.
-     *
-     * @return int
-     */
-    public function getEncodingOptions()
-    {
-        return $this->encodingOptions;
-    }
-
-    /**
-     * Sets options used while encoding data to JSON.
-     *
-     * @param int $encodingOptions
-     *
-     * @return JsonResponse
-     */
-    public function setEncodingOptions($encodingOptions)
-    {
-        $this->encodingOptions = (int) $encodingOptions;
-
-        return $this->setData(json_decode($this->data));
-    }
-
-    /**
-     * Updates the content and headers according to the JSON data and callback.
-     *
-     * @return JsonResponse
-     */
-    protected function update()
-    {
-        if (null !== $this->callback) {
-            // Not using application/javascript for compatibility reasons with older browsers.
-            $this->headers->set('Content-Type', 'text/javascript');
-
-            return $this->setContent(sprintf('/**/%s(%s);', $this->callback, $this->data));
-        }
-
-        // Only set the header when there is none or when it equals 'text/javascript' (from a previous update with callback)
-        // in order to not overwrite a custom definition.
-        if (!$this->headers->has('Content-Type') || 'text/javascript' === $this->headers->get('Content-Type')) {
-            $this->headers->set('Content-Type', 'application/json');
-        }
-
-        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/LICENSE b/vendor/symfony/http-foundation/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/http-foundation/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/http-foundation/ParameterBag.php b/vendor/symfony/http-foundation/ParameterBag.php
deleted file mode 100644
index ecc0de1..0000000
--- a/vendor/symfony/http-foundation/ParameterBag.php
+++ /dev/null
@@ -1,291 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * ParameterBag is a container for key/value pairs.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ParameterBag implements \IteratorAggregate, \Countable
-{
-    /**
-     * Parameter storage.
-     *
-     * @var array
-     */
-    protected $parameters;
-
-    /**
-     * Constructor.
-     *
-     * @param array $parameters An array of parameters
-     */
-    public function __construct(array $parameters = array())
-    {
-        $this->parameters = $parameters;
-    }
-
-    /**
-     * Returns the parameters.
-     *
-     * @return array An array of parameters
-     */
-    public function all()
-    {
-        return $this->parameters;
-    }
-
-    /**
-     * Returns the parameter keys.
-     *
-     * @return array An array of parameter keys
-     */
-    public function keys()
-    {
-        return array_keys($this->parameters);
-    }
-
-    /**
-     * Replaces the current parameters by a new set.
-     *
-     * @param array $parameters An array of parameters
-     */
-    public function replace(array $parameters = array())
-    {
-        $this->parameters = $parameters;
-    }
-
-    /**
-     * Adds parameters.
-     *
-     * @param array $parameters An array of parameters
-     */
-    public function add(array $parameters = array())
-    {
-        $this->parameters = array_replace($this->parameters, $parameters);
-    }
-
-    /**
-     * Returns a parameter by name.
-     *
-     * @param string $path    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
-     *
-     * @return mixed
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function get($path, $default = null, $deep = false)
-    {
-        if (!$deep || false === $pos = strpos($path, '[')) {
-            return array_key_exists($path, $this->parameters) ? $this->parameters[$path] : $default;
-        }
-
-        $root = substr($path, 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];
-
-            if ('[' === $char) {
-                if (null !== $currentKey) {
-                    throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "[" at position %d.', $i));
-                }
-
-                $currentKey = '';
-            } elseif (']' === $char) {
-                if (null === $currentKey) {
-                    throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "]" at position %d.', $i));
-                }
-
-                if (!is_array($value) || !array_key_exists($currentKey, $value)) {
-                    return $default;
-                }
-
-                $value = $value[$currentKey];
-                $currentKey = null;
-            } else {
-                if (null === $currentKey) {
-                    throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "%s" at position %d.', $char, $i));
-                }
-
-                $currentKey .= $char;
-            }
-        }
-
-        if (null !== $currentKey) {
-            throw new \InvalidArgumentException(sprintf('Malformed path. Path must end with "]".'));
-        }
-
-        return $value;
-    }
-
-    /**
-     * Sets a parameter by name.
-     *
-     * @param string $key   The key
-     * @param mixed  $value The value
-     */
-    public function set($key, $value)
-    {
-        $this->parameters[$key] = $value;
-    }
-
-    /**
-     * Returns true if the parameter is defined.
-     *
-     * @param string $key The key
-     *
-     * @return bool true if the parameter exists, false otherwise
-     */
-    public function has($key)
-    {
-        return array_key_exists($key, $this->parameters);
-    }
-
-    /**
-     * Removes a parameter.
-     *
-     * @param string $key The key
-     */
-    public function remove($key)
-    {
-        unset($this->parameters[$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 bool   $deep    If true, a path like foo[bar] will find deeper items
-     *
-     * @return string The filtered value
-     */
-    public function getAlpha($key, $default = '', $deep = false)
-    {
-        return preg_replace('/[^[:alpha:]]/', '', $this->get($key, $default, $deep));
-    }
-
-    /**
-     * 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 bool   $deep    If true, a path like foo[bar] will find deeper items
-     *
-     * @return string The filtered value
-     */
-    public function getAlnum($key, $default = '', $deep = false)
-    {
-        return preg_replace('/[^[:alnum:]]/', '', $this->get($key, $default, $deep));
-    }
-
-    /**
-     * 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 bool   $deep    If true, a path like foo[bar] will find deeper items
-     *
-     * @return string The filtered value
-     */
-    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));
-    }
-
-    /**
-     * 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 bool   $deep    If true, a path like foo[bar] will find deeper items
-     *
-     * @return int The filtered value
-     */
-    public function getInt($key, $default = 0, $deep = false)
-    {
-        return (int) $this->get($key, $default, $deep);
-    }
-
-    /**
-     * Returns the parameter value converted to boolean.
-     *
-     * @param string $key     The parameter 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
-     *
-     * @return bool The filtered value
-     */
-    public function getBoolean($key, $default = false, $deep = false)
-    {
-        return $this->filter($key, $default, $deep, FILTER_VALIDATE_BOOLEAN);
-    }
-
-    /**
-     * Filter key.
-     *
-     * @param string $key     Key.
-     * @param mixed  $default Default = null.
-     * @param bool   $deep    Default = false.
-     * @param int    $filter  FILTER_* constant.
-     * @param mixed  $options Filter options.
-     *
-     * @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())
-    {
-        $value = $this->get($key, $default, $deep);
-
-        // Always turn $options into an array - this allows filter_var option shortcuts.
-        if (!is_array($options) && $options) {
-            $options = array('flags' => $options);
-        }
-
-        // Add a convenience check for arrays.
-        if (is_array($value) && !isset($options['flags'])) {
-            $options['flags'] = FILTER_REQUIRE_ARRAY;
-        }
-
-        return filter_var($value, $filter, $options);
-    }
-
-    /**
-     * Returns an iterator for parameters.
-     *
-     * @return \ArrayIterator An \ArrayIterator instance
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->parameters);
-    }
-
-    /**
-     * Returns the number of parameters.
-     *
-     * @return int The number of parameters
-     */
-    public function count()
-    {
-        return count($this->parameters);
-    }
-}
diff --git a/vendor/symfony/http-foundation/README.md b/vendor/symfony/http-foundation/README.md
deleted file mode 100644
index 11ad6ee..0000000
--- a/vendor/symfony/http-foundation/README.md
+++ /dev/null
@@ -1,56 +0,0 @@
-HttpFoundation Component
-========================
-
-HttpFoundation defines an object-oriented layer for the HTTP specification.
-
-It provides an abstraction for requests, responses, uploaded files, cookies,
-sessions, ...
-
-In this example, we get a Request object from the current PHP global
-variables:
-
-```php
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-$request = Request::createFromGlobals();
-echo $request->getPathInfo();
-```
-
-You can also create a Request directly -- that's interesting for unit testing:
-
-```php
-$request = Request::create('/?foo=bar', 'GET');
-echo $request->getPathInfo();
-```
-
-And here is how to create and send a Response:
-
-```php
-$response = new Response('Not Found', 404, array('Content-Type' => 'text/plain'));
-$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
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/HttpFoundation/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/http-foundation/RedirectResponse.php b/vendor/symfony/http-foundation/RedirectResponse.php
deleted file mode 100644
index a21eb5c..0000000
--- a/vendor/symfony/http-foundation/RedirectResponse.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * RedirectResponse represents an HTTP response doing a redirect.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RedirectResponse extends Response
-{
-    protected $targetUrl;
-
-    /**
-     * Creates a redirect response so that it conforms to the rules defined for a redirect status code.
-     *
-     * @param string $url     The URL to redirect to
-     * @param int    $status  The status code (302 by default)
-     * @param array  $headers The headers (Location is always set to the given URL)
-     *
-     * @throws \InvalidArgumentException
-     *
-     * @see http://tools.ietf.org/html/rfc2616#section-10.3
-     */
-    public function __construct($url, $status = 302, $headers = array())
-    {
-        if (empty($url)) {
-            throw new \InvalidArgumentException('Cannot redirect to an empty URL.');
-        }
-
-        parent::__construct('', $status, $headers);
-
-        $this->setTargetUrl($url);
-
-        if (!$this->isRedirect()) {
-            throw new \InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $status));
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public static function create($url = '', $status = 302, $headers = array())
-    {
-        return new static($url, $status, $headers);
-    }
-
-    /**
-     * Returns the target URL.
-     *
-     * @return string target URL
-     */
-    public function getTargetUrl()
-    {
-        return $this->targetUrl;
-    }
-
-    /**
-     * Sets the redirect target of this response.
-     *
-     * @param string $url The URL to redirect to
-     *
-     * @return RedirectResponse The current response.
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setTargetUrl($url)
-    {
-        if (empty($url)) {
-            throw new \InvalidArgumentException('Cannot redirect to an empty URL.');
-        }
-
-        $this->targetUrl = $url;
-
-        $this->setContent(
-            sprintf('<!DOCTYPE html>
-<html>
-    <head>
-        <meta charset="UTF-8" />
-        <meta http-equiv="refresh" content="1;url=%1$s" />
-
-        <title>Redirecting to %1$s</title>
-    </head>
-    <body>
-        Redirecting to <a href="%1$s">%1$s</a>.
-    </body>
-</html>', htmlspecialchars($url, ENT_QUOTES, 'UTF-8')));
-
-        $this->headers->set('Location', $url);
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Request.php b/vendor/symfony/http-foundation/Request.php
deleted file mode 100644
index ff8d411..0000000
--- a/vendor/symfony/http-foundation/Request.php
+++ /dev/null
@@ -1,1920 +0,0 @@
-<?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\HttpFoundation;
-
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-
-/**
- * Request represents an HTTP request.
- *
- * The methods dealing with URL accept / return a raw path (% encoded):
- *   * getBasePath
- *   * getBaseUrl
- *   * getPathInfo
- *   * getRequestUri
- *   * getUri
- *   * getUriForPath
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Request
-{
-    const HEADER_FORWARDED = 'forwarded';
-    const HEADER_CLIENT_IP = 'client_ip';
-    const HEADER_CLIENT_HOST = 'client_host';
-    const HEADER_CLIENT_PROTO = 'client_proto';
-    const HEADER_CLIENT_PORT = 'client_port';
-
-    const METHOD_HEAD = 'HEAD';
-    const METHOD_GET = 'GET';
-    const METHOD_POST = 'POST';
-    const METHOD_PUT = 'PUT';
-    const METHOD_PATCH = 'PATCH';
-    const METHOD_DELETE = 'DELETE';
-    const METHOD_PURGE = 'PURGE';
-    const METHOD_OPTIONS = 'OPTIONS';
-    const METHOD_TRACE = 'TRACE';
-    const METHOD_CONNECT = 'CONNECT';
-
-    /**
-     * @var string[]
-     */
-    protected static $trustedProxies = array();
-
-    /**
-     * @var string[]
-     */
-    protected static $trustedHostPatterns = array();
-
-    /**
-     * @var string[]
-     */
-    protected static $trustedHosts = array();
-
-    /**
-     * Names for headers that can be trusted when
-     * using trusted proxies.
-     *
-     * The FORWARDED header is the standard as of rfc7239.
-     *
-     * The other headers are non-standard, but widely used
-     * by popular reverse proxies (like Apache mod_proxy or Amazon EC2).
-     */
-    protected static $trustedHeaders = array(
-        self::HEADER_FORWARDED => 'FORWARDED',
-        self::HEADER_CLIENT_IP => 'X_FORWARDED_FOR',
-        self::HEADER_CLIENT_HOST => 'X_FORWARDED_HOST',
-        self::HEADER_CLIENT_PROTO => 'X_FORWARDED_PROTO',
-        self::HEADER_CLIENT_PORT => 'X_FORWARDED_PORT',
-    );
-
-    protected static $httpMethodParameterOverride = false;
-
-    /**
-     * Custom parameters.
-     *
-     * @var \Symfony\Component\HttpFoundation\ParameterBag
-     */
-    public $attributes;
-
-    /**
-     * Request body parameters ($_POST).
-     *
-     * @var \Symfony\Component\HttpFoundation\ParameterBag
-     */
-    public $request;
-
-    /**
-     * Query string parameters ($_GET).
-     *
-     * @var \Symfony\Component\HttpFoundation\ParameterBag
-     */
-    public $query;
-
-    /**
-     * Server and execution environment parameters ($_SERVER).
-     *
-     * @var \Symfony\Component\HttpFoundation\ServerBag
-     */
-    public $server;
-
-    /**
-     * Uploaded files ($_FILES).
-     *
-     * @var \Symfony\Component\HttpFoundation\FileBag
-     */
-    public $files;
-
-    /**
-     * Cookies ($_COOKIE).
-     *
-     * @var \Symfony\Component\HttpFoundation\ParameterBag
-     */
-    public $cookies;
-
-    /**
-     * Headers (taken from the $_SERVER).
-     *
-     * @var \Symfony\Component\HttpFoundation\HeaderBag
-     */
-    public $headers;
-
-    /**
-     * @var string
-     */
-    protected $content;
-
-    /**
-     * @var array
-     */
-    protected $languages;
-
-    /**
-     * @var array
-     */
-    protected $charsets;
-
-    /**
-     * @var array
-     */
-    protected $encodings;
-
-    /**
-     * @var array
-     */
-    protected $acceptableContentTypes;
-
-    /**
-     * @var string
-     */
-    protected $pathInfo;
-
-    /**
-     * @var string
-     */
-    protected $requestUri;
-
-    /**
-     * @var string
-     */
-    protected $baseUrl;
-
-    /**
-     * @var string
-     */
-    protected $basePath;
-
-    /**
-     * @var string
-     */
-    protected $method;
-
-    /**
-     * @var string
-     */
-    protected $format;
-
-    /**
-     * @var \Symfony\Component\HttpFoundation\Session\SessionInterface
-     */
-    protected $session;
-
-    /**
-     * @var string
-     */
-    protected $locale;
-
-    /**
-     * @var string
-     */
-    protected $defaultLocale = 'en';
-
-    /**
-     * @var array
-     */
-    protected static $formats;
-
-    protected static $requestFactory;
-
-    /**
-     * Constructor.
-     *
-     * @param array           $query      The GET parameters
-     * @param array           $request    The POST parameters
-     * @param array           $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
-     * @param array           $cookies    The COOKIE parameters
-     * @param array           $files      The FILES parameters
-     * @param array           $server     The SERVER parameters
-     * @param string|resource $content    The raw body data
-     */
-    public function __construct(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
-    {
-        $this->initialize($query, $request, $attributes, $cookies, $files, $server, $content);
-    }
-
-    /**
-     * Sets the parameters for this request.
-     *
-     * This method also re-initializes all properties.
-     *
-     * @param array           $query      The GET parameters
-     * @param array           $request    The POST parameters
-     * @param array           $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
-     * @param array           $cookies    The COOKIE parameters
-     * @param array           $files      The FILES parameters
-     * @param array           $server     The SERVER parameters
-     * @param string|resource $content    The raw body data
-     */
-    public function initialize(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
-    {
-        $this->request = new ParameterBag($request);
-        $this->query = new ParameterBag($query);
-        $this->attributes = new ParameterBag($attributes);
-        $this->cookies = new ParameterBag($cookies);
-        $this->files = new FileBag($files);
-        $this->server = new ServerBag($server);
-        $this->headers = new HeaderBag($this->server->getHeaders());
-
-        $this->content = $content;
-        $this->languages = null;
-        $this->charsets = null;
-        $this->encodings = null;
-        $this->acceptableContentTypes = null;
-        $this->pathInfo = null;
-        $this->requestUri = null;
-        $this->baseUrl = null;
-        $this->basePath = null;
-        $this->method = null;
-        $this->format = null;
-    }
-
-    /**
-     * Creates a new request with values from PHP's super globals.
-     *
-     * @return Request A new request
-     */
-    public static function createFromGlobals()
-    {
-        // With the php's bug #66606, the php's built-in web server
-        // stores the Content-Type and Content-Length header values in
-        // HTTP_CONTENT_TYPE and HTTP_CONTENT_LENGTH fields.
-        $server = $_SERVER;
-        if ('cli-server' === php_sapi_name()) {
-            if (array_key_exists('HTTP_CONTENT_LENGTH', $_SERVER)) {
-                $server['CONTENT_LENGTH'] = $_SERVER['HTTP_CONTENT_LENGTH'];
-            }
-            if (array_key_exists('HTTP_CONTENT_TYPE', $_SERVER)) {
-                $server['CONTENT_TYPE'] = $_SERVER['HTTP_CONTENT_TYPE'];
-            }
-        }
-
-        $request = self::createRequestFromFactory($_GET, $_POST, array(), $_COOKIE, $_FILES, $server);
-
-        if (0 === strpos($request->headers->get('CONTENT_TYPE'), 'application/x-www-form-urlencoded')
-            && in_array(strtoupper($request->server->get('REQUEST_METHOD', 'GET')), array('PUT', 'DELETE', 'PATCH'))
-        ) {
-            parse_str($request->getContent(), $data);
-            $request->request = new ParameterBag($data);
-        }
-
-        return $request;
-    }
-
-    /**
-     * Creates a Request based on a given URI and configuration.
-     *
-     * The information contained in the URI always take precedence
-     * over the other information (server and parameters).
-     *
-     * @param string $uri        The URI
-     * @param string $method     The HTTP method
-     * @param array  $parameters The query (GET) or request (POST) parameters
-     * @param array  $cookies    The request cookies ($_COOKIE)
-     * @param array  $files      The request files ($_FILES)
-     * @param array  $server     The server parameters ($_SERVER)
-     * @param string $content    The raw body data
-     *
-     * @return Request A Request instance
-     */
-    public static function create($uri, $method = 'GET', $parameters = array(), $cookies = array(), $files = array(), $server = array(), $content = null)
-    {
-        $server = array_replace(array(
-            'SERVER_NAME' => 'localhost',
-            'SERVER_PORT' => 80,
-            'HTTP_HOST' => 'localhost',
-            'HTTP_USER_AGENT' => 'Symfony/2.X',
-            'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
-            'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5',
-            'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
-            'REMOTE_ADDR' => '127.0.0.1',
-            'SCRIPT_NAME' => '',
-            'SCRIPT_FILENAME' => '',
-            'SERVER_PROTOCOL' => 'HTTP/1.1',
-            'REQUEST_TIME' => time(),
-        ), $server);
-
-        $server['PATH_INFO'] = '';
-        $server['REQUEST_METHOD'] = strtoupper($method);
-
-        $components = parse_url($uri);
-        if (isset($components['host'])) {
-            $server['SERVER_NAME'] = $components['host'];
-            $server['HTTP_HOST'] = $components['host'];
-        }
-
-        if (isset($components['scheme'])) {
-            if ('https' === $components['scheme']) {
-                $server['HTTPS'] = 'on';
-                $server['SERVER_PORT'] = 443;
-            } else {
-                unset($server['HTTPS']);
-                $server['SERVER_PORT'] = 80;
-            }
-        }
-
-        if (isset($components['port'])) {
-            $server['SERVER_PORT'] = $components['port'];
-            $server['HTTP_HOST'] = $server['HTTP_HOST'].':'.$components['port'];
-        }
-
-        if (isset($components['user'])) {
-            $server['PHP_AUTH_USER'] = $components['user'];
-        }
-
-        if (isset($components['pass'])) {
-            $server['PHP_AUTH_PW'] = $components['pass'];
-        }
-
-        if (!isset($components['path'])) {
-            $components['path'] = '/';
-        }
-
-        switch (strtoupper($method)) {
-            case 'POST':
-            case 'PUT':
-            case 'DELETE':
-                if (!isset($server['CONTENT_TYPE'])) {
-                    $server['CONTENT_TYPE'] = 'application/x-www-form-urlencoded';
-                }
-                // no break
-            case 'PATCH':
-                $request = $parameters;
-                $query = array();
-                break;
-            default:
-                $request = array();
-                $query = $parameters;
-                break;
-        }
-
-        $queryString = '';
-        if (isset($components['query'])) {
-            parse_str(html_entity_decode($components['query']), $qs);
-
-            if ($query) {
-                $query = array_replace($qs, $query);
-                $queryString = http_build_query($query, '', '&');
-            } else {
-                $query = $qs;
-                $queryString = $components['query'];
-            }
-        } elseif ($query) {
-            $queryString = http_build_query($query, '', '&');
-        }
-
-        $server['REQUEST_URI'] = $components['path'].('' !== $queryString ? '?'.$queryString : '');
-        $server['QUERY_STRING'] = $queryString;
-
-        return self::createRequestFromFactory($query, $request, array(), $cookies, $files, $server, $content);
-    }
-
-    /**
-     * Sets a callable able to create a Request instance.
-     *
-     * This is mainly useful when you need to override the Request class
-     * to keep BC with an existing system. It should not be used for any
-     * other purpose.
-     *
-     * @param callable|null $callable A PHP callable
-     */
-    public static function setFactory($callable)
-    {
-        self::$requestFactory = $callable;
-    }
-
-    /**
-     * Clones a request and overrides some of its parameters.
-     *
-     * @param array $query      The GET parameters
-     * @param array $request    The POST parameters
-     * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
-     * @param array $cookies    The COOKIE parameters
-     * @param array $files      The FILES parameters
-     * @param array $server     The SERVER parameters
-     *
-     * @return Request The duplicated request
-     */
-    public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null)
-    {
-        $dup = clone $this;
-        if ($query !== null) {
-            $dup->query = new ParameterBag($query);
-        }
-        if ($request !== null) {
-            $dup->request = new ParameterBag($request);
-        }
-        if ($attributes !== null) {
-            $dup->attributes = new ParameterBag($attributes);
-        }
-        if ($cookies !== null) {
-            $dup->cookies = new ParameterBag($cookies);
-        }
-        if ($files !== null) {
-            $dup->files = new FileBag($files);
-        }
-        if ($server !== null) {
-            $dup->server = new ServerBag($server);
-            $dup->headers = new HeaderBag($dup->server->getHeaders());
-        }
-        $dup->languages = null;
-        $dup->charsets = null;
-        $dup->encodings = null;
-        $dup->acceptableContentTypes = null;
-        $dup->pathInfo = null;
-        $dup->requestUri = null;
-        $dup->baseUrl = null;
-        $dup->basePath = null;
-        $dup->method = null;
-        $dup->format = null;
-
-        if (!$dup->get('_format') && $this->get('_format')) {
-            $dup->attributes->set('_format', $this->get('_format'));
-        }
-
-        if (!$dup->getRequestFormat(null)) {
-            $dup->setRequestFormat($this->getRequestFormat(null));
-        }
-
-        return $dup;
-    }
-
-    /**
-     * Clones the current request.
-     *
-     * Note that the session is not cloned as duplicated requests
-     * are most of the time sub-requests of the main one.
-     */
-    public function __clone()
-    {
-        $this->query = clone $this->query;
-        $this->request = clone $this->request;
-        $this->attributes = clone $this->attributes;
-        $this->cookies = clone $this->cookies;
-        $this->files = clone $this->files;
-        $this->server = clone $this->server;
-        $this->headers = clone $this->headers;
-    }
-
-    /**
-     * Returns the request as a string.
-     *
-     * @return string The request
-     */
-    public function __toString()
-    {
-        try {
-            $content = $this->getContent();
-        } catch (\LogicException $e) {
-            return trigger_error($e, E_USER_ERROR);
-        }
-
-        return
-            sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL'))."\r\n".
-            $this->headers."\r\n".
-            $content;
-    }
-
-    /**
-     * Overrides the PHP global variables according to this request instance.
-     *
-     * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE.
-     * $_FILES is never overridden, see rfc1867
-     */
-    public function overrideGlobals()
-    {
-        $this->server->set('QUERY_STRING', static::normalizeQueryString(http_build_query($this->query->all(), null, '&')));
-
-        $_GET = $this->query->all();
-        $_POST = $this->request->all();
-        $_SERVER = $this->server->all();
-        $_COOKIE = $this->cookies->all();
-
-        foreach ($this->headers->all() as $key => $value) {
-            $key = strtoupper(str_replace('-', '_', $key));
-            if (in_array($key, array('CONTENT_TYPE', 'CONTENT_LENGTH'))) {
-                $_SERVER[$key] = implode(', ', $value);
-            } else {
-                $_SERVER['HTTP_'.$key] = implode(', ', $value);
-            }
-        }
-
-        $request = array('g' => $_GET, 'p' => $_POST, 'c' => $_COOKIE);
-
-        $requestOrder = ini_get('request_order') ?: ini_get('variables_order');
-        $requestOrder = preg_replace('#[^cgp]#', '', strtolower($requestOrder)) ?: 'gp';
-
-        $_REQUEST = array();
-        foreach (str_split($requestOrder) as $order) {
-            $_REQUEST = array_merge($_REQUEST, $request[$order]);
-        }
-    }
-
-    /**
-     * Sets a list of trusted proxies.
-     *
-     * You should only list the reverse proxies that you manage directly.
-     *
-     * @param array $proxies A list of trusted proxies
-     */
-    public static function setTrustedProxies(array $proxies)
-    {
-        self::$trustedProxies = $proxies;
-    }
-
-    /**
-     * Gets the list of trusted proxies.
-     *
-     * @return array An array of trusted proxies.
-     */
-    public static function getTrustedProxies()
-    {
-        return self::$trustedProxies;
-    }
-
-    /**
-     * Sets a list of trusted host patterns.
-     *
-     * You should only list the hosts you manage using regexs.
-     *
-     * @param array $hostPatterns A list of trusted host patterns
-     */
-    public static function setTrustedHosts(array $hostPatterns)
-    {
-        self::$trustedHostPatterns = array_map(function ($hostPattern) {
-            return sprintf('#%s#i', $hostPattern);
-        }, $hostPatterns);
-        // we need to reset trusted hosts on trusted host patterns change
-        self::$trustedHosts = array();
-    }
-
-    /**
-     * Gets the list of trusted host patterns.
-     *
-     * @return array An array of trusted host patterns.
-     */
-    public static function getTrustedHosts()
-    {
-        return self::$trustedHostPatterns;
-    }
-
-    /**
-     * Sets the name for trusted headers.
-     *
-     * The following header keys are supported:
-     *
-     *  * Request::HEADER_CLIENT_IP:    defaults to X-Forwarded-For   (see getClientIp())
-     *  * Request::HEADER_CLIENT_HOST:  defaults to X-Forwarded-Host  (see getHost())
-     *  * Request::HEADER_CLIENT_PORT:  defaults to X-Forwarded-Port  (see getPort())
-     *  * Request::HEADER_CLIENT_PROTO: defaults to X-Forwarded-Proto (see getScheme() and isSecure())
-     *
-     * Setting an empty value allows to disable the trusted header for the given key.
-     *
-     * @param string $key   The header key
-     * @param string $value The header name
-     *
-     * @throws \InvalidArgumentException
-     */
-    public static function setTrustedHeaderName($key, $value)
-    {
-        if (!array_key_exists($key, self::$trustedHeaders)) {
-            throw new \InvalidArgumentException(sprintf('Unable to set the trusted header name for key "%s".', $key));
-        }
-
-        self::$trustedHeaders[$key] = $value;
-    }
-
-    /**
-     * Gets the trusted proxy header name.
-     *
-     * @param string $key The header key
-     *
-     * @return string The header name
-     *
-     * @throws \InvalidArgumentException
-     */
-    public static function getTrustedHeaderName($key)
-    {
-        if (!array_key_exists($key, self::$trustedHeaders)) {
-            throw new \InvalidArgumentException(sprintf('Unable to get the trusted header name for key "%s".', $key));
-        }
-
-        return self::$trustedHeaders[$key];
-    }
-
-    /**
-     * Normalizes a query string.
-     *
-     * It builds a normalized query string, where keys/value pairs are alphabetized,
-     * have consistent escaping and unneeded delimiters are removed.
-     *
-     * @param string $qs Query string
-     *
-     * @return string A normalized query string for the Request
-     */
-    public static function normalizeQueryString($qs)
-    {
-        if ('' == $qs) {
-            return '';
-        }
-
-        $parts = array();
-        $order = array();
-
-        foreach (explode('&', $qs) as $param) {
-            if ('' === $param || '=' === $param[0]) {
-                // Ignore useless delimiters, e.g. "x=y&".
-                // Also ignore pairs with empty key, even if there was a value, e.g. "=value", as such nameless values cannot be retrieved anyway.
-                // PHP also does not include them when building _GET.
-                continue;
-            }
-
-            $keyValuePair = explode('=', $param, 2);
-
-            // GET parameters, that are submitted from a HTML form, encode spaces as "+" by default (as defined in enctype application/x-www-form-urlencoded).
-            // PHP also converts "+" to spaces when filling the global _GET or when using the function parse_str. This is why we use urldecode and then normalize to
-            // RFC 3986 with rawurlencode.
-            $parts[] = isset($keyValuePair[1]) ?
-                rawurlencode(urldecode($keyValuePair[0])).'='.rawurlencode(urldecode($keyValuePair[1])) :
-                rawurlencode(urldecode($keyValuePair[0]));
-            $order[] = urldecode($keyValuePair[0]);
-        }
-
-        array_multisort($order, SORT_ASC, $parts);
-
-        return implode('&', $parts);
-    }
-
-    /**
-     * Enables support for the _method request parameter to determine the intended HTTP method.
-     *
-     * Be warned that enabling this feature might lead to CSRF issues in your code.
-     * Check that you are using CSRF tokens when required.
-     * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered
-     * and used to send a "PUT" or "DELETE" request via the _method request parameter.
-     * If these methods are not protected against CSRF, this presents a possible vulnerability.
-     *
-     * The HTTP method can only be overridden when the real HTTP method is POST.
-     */
-    public static function enableHttpMethodParameterOverride()
-    {
-        self::$httpMethodParameterOverride = true;
-    }
-
-    /**
-     * Checks whether support for the _method request parameter is enabled.
-     *
-     * @return bool True when the _method request parameter is enabled, false otherwise
-     */
-    public static function getHttpMethodParameterOverride()
-    {
-        return self::$httpMethodParameterOverride;
-    }
-
-    /**
-     * Gets a "parameter" value.
-     *
-     * This method is mainly useful for libraries that want to provide some flexibility.
-     *
-     * Order of precedence: GET, PATH, POST
-     *
-     * Avoid using this method in controllers:
-     *
-     *  * slow
-     *  * prefer to get from a "named" source
-     *
-     * It is better to explicitly get request parameters from the appropriate
-     * public property instead (query, attributes, request).
-     *
-     * @param string $key     the key
-     * @param mixed  $default the default value
-     * @param bool   $deep    is parameter deep in multidimensional array
-     *
-     * @return mixed
-     */
-    public function get($key, $default = null, $deep = false)
-    {
-        if ($this !== $result = $this->query->get($key, $this, $deep)) {
-            return $result;
-        }
-
-        if ($this !== $result = $this->attributes->get($key, $this, $deep)) {
-            return $result;
-        }
-
-        if ($this !== $result = $this->request->get($key, $this, $deep)) {
-            return $result;
-        }
-
-        return $default;
-    }
-
-    /**
-     * Gets the Session.
-     *
-     * @return SessionInterface|null The session
-     */
-    public function getSession()
-    {
-        return $this->session;
-    }
-
-    /**
-     * Whether the request contains a Session which was started in one of the
-     * previous requests.
-     *
-     * @return bool
-     */
-    public function hasPreviousSession()
-    {
-        // the check for $this->session avoids malicious users trying to fake a session cookie with proper name
-        return $this->hasSession() && $this->cookies->has($this->session->getName());
-    }
-
-    /**
-     * Whether the request contains a Session object.
-     *
-     * This method does not give any information about the state of the session object,
-     * like whether the session is started or not. It is just a way to check if this Request
-     * is associated with a Session instance.
-     *
-     * @return bool true when the Request contains a Session object, false otherwise
-     */
-    public function hasSession()
-    {
-        return null !== $this->session;
-    }
-
-    /**
-     * Sets the Session.
-     *
-     * @param SessionInterface $session The Session
-     */
-    public function setSession(SessionInterface $session)
-    {
-        $this->session = $session;
-    }
-
-    /**
-     * Returns the client IP addresses.
-     *
-     * In the returned array the most trusted IP address is first, and the
-     * least trusted one last. The "real" client IP address is the last one,
-     * but this is also the least trusted one. Trusted proxies are stripped.
-     *
-     * Use this method carefully; you should use getClientIp() instead.
-     *
-     * @return array The client IP addresses
-     *
-     * @see getClientIp()
-     */
-    public function getClientIps()
-    {
-        $clientIps = array();
-        $ip = $this->server->get('REMOTE_ADDR');
-
-        if (!$this->isFromTrustedProxy()) {
-            return array($ip);
-        }
-
-        if (self::$trustedHeaders[self::HEADER_FORWARDED] && $this->headers->has(self::$trustedHeaders[self::HEADER_FORWARDED])) {
-            $forwardedHeader = $this->headers->get(self::$trustedHeaders[self::HEADER_FORWARDED]);
-            preg_match_all('{(for)=("?\[?)([a-z0-9\.:_\-/]*)}', $forwardedHeader, $matches);
-            $clientIps = $matches[3];
-        } elseif (self::$trustedHeaders[self::HEADER_CLIENT_IP] && $this->headers->has(self::$trustedHeaders[self::HEADER_CLIENT_IP])) {
-            $clientIps = array_map('trim', explode(',', $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_IP])));
-        }
-
-        $clientIps[] = $ip; // Complete the IP chain with the IP the request actually came from
-        $ip = $clientIps[0]; // Fallback to this when the client IP falls into the range of trusted proxies
-
-        foreach ($clientIps as $key => $clientIp) {
-            // Remove port (unfortunately, it does happen)
-            if (preg_match('{((?:\d+\.){3}\d+)\:\d+}', $clientIp, $match)) {
-                $clientIps[$key] = $clientIp = $match[1];
-            }
-
-            if (IpUtils::checkIp($clientIp, self::$trustedProxies)) {
-                unset($clientIps[$key]);
-            }
-        }
-
-        // Now the IP chain contains only untrusted proxies and the client IP
-        return $clientIps ? array_reverse($clientIps) : array($ip);
-    }
-
-    /**
-     * Returns the client IP address.
-     *
-     * This method can read the client IP address from the "X-Forwarded-For" header
-     * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For"
-     * header value is a comma+space separated list of IP addresses, the left-most
-     * being the original client, and each successive proxy that passed the request
-     * adding the IP address where it received the request from.
-     *
-     * If your reverse proxy uses a different header name than "X-Forwarded-For",
-     * ("Client-Ip" for instance), configure it via "setTrustedHeaderName()" with
-     * the "client-ip" key.
-     *
-     * @return string The client IP address
-     *
-     * @see getClientIps()
-     * @see http://en.wikipedia.org/wiki/X-Forwarded-For
-     */
-    public function getClientIp()
-    {
-        $ipAddresses = $this->getClientIps();
-
-        return $ipAddresses[0];
-    }
-
-    /**
-     * Returns current script name.
-     *
-     * @return string
-     */
-    public function getScriptName()
-    {
-        return $this->server->get('SCRIPT_NAME', $this->server->get('ORIG_SCRIPT_NAME', ''));
-    }
-
-    /**
-     * Returns the path being requested relative to the executed script.
-     *
-     * The path info always starts with a /.
-     *
-     * Suppose this request is instantiated from /mysite on localhost:
-     *
-     *  * http://localhost/mysite              returns an empty string
-     *  * http://localhost/mysite/about        returns '/about'
-     *  * http://localhost/mysite/enco%20ded   returns '/enco%20ded'
-     *  * http://localhost/mysite/about?var=1  returns '/about'
-     *
-     * @return string The raw path (i.e. not urldecoded)
-     */
-    public function getPathInfo()
-    {
-        if (null === $this->pathInfo) {
-            $this->pathInfo = $this->preparePathInfo();
-        }
-
-        return $this->pathInfo;
-    }
-
-    /**
-     * Returns the root path from which this request is executed.
-     *
-     * Suppose that an index.php file instantiates this request object:
-     *
-     *  * http://localhost/index.php         returns an empty string
-     *  * http://localhost/index.php/page    returns an empty string
-     *  * http://localhost/web/index.php     returns '/web'
-     *  * http://localhost/we%20b/index.php  returns '/we%20b'
-     *
-     * @return string The raw path (i.e. not urldecoded)
-     */
-    public function getBasePath()
-    {
-        if (null === $this->basePath) {
-            $this->basePath = $this->prepareBasePath();
-        }
-
-        return $this->basePath;
-    }
-
-    /**
-     * Returns the root URL from which this request is executed.
-     *
-     * The base URL never ends with a /.
-     *
-     * This is similar to getBasePath(), except that it also includes the
-     * script filename (e.g. index.php) if one exists.
-     *
-     * @return string The raw URL (i.e. not urldecoded)
-     */
-    public function getBaseUrl()
-    {
-        if (null === $this->baseUrl) {
-            $this->baseUrl = $this->prepareBaseUrl();
-        }
-
-        return $this->baseUrl;
-    }
-
-    /**
-     * Gets the request's scheme.
-     *
-     * @return string
-     */
-    public function getScheme()
-    {
-        return $this->isSecure() ? 'https' : 'http';
-    }
-
-    /**
-     * Returns the port on which the request is made.
-     *
-     * This method can read the client port from the "X-Forwarded-Port" header
-     * when trusted proxies were set via "setTrustedProxies()".
-     *
-     * The "X-Forwarded-Port" header must contain the client port.
-     *
-     * If your reverse proxy uses a different header name than "X-Forwarded-Port",
-     * configure it via "setTrustedHeaderName()" with the "client-port" key.
-     *
-     * @return string
-     */
-    public function getPort()
-    {
-        if ($this->isFromTrustedProxy()) {
-            if (self::$trustedHeaders[self::HEADER_CLIENT_PORT] && $port = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PORT])) {
-                return $port;
-            }
-
-            if (self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && 'https' === $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO], 'http')) {
-                return 443;
-            }
-        }
-
-        if ($host = $this->headers->get('HOST')) {
-            if ($host[0] === '[') {
-                $pos = strpos($host, ':', strrpos($host, ']'));
-            } else {
-                $pos = strrpos($host, ':');
-            }
-
-            if (false !== $pos) {
-                return (int) substr($host, $pos + 1);
-            }
-
-            return 'https' === $this->getScheme() ? 443 : 80;
-        }
-
-        return $this->server->get('SERVER_PORT');
-    }
-
-    /**
-     * Returns the user.
-     *
-     * @return string|null
-     */
-    public function getUser()
-    {
-        return $this->headers->get('PHP_AUTH_USER');
-    }
-
-    /**
-     * Returns the password.
-     *
-     * @return string|null
-     */
-    public function getPassword()
-    {
-        return $this->headers->get('PHP_AUTH_PW');
-    }
-
-    /**
-     * Gets the user info.
-     *
-     * @return string A user name and, optionally, scheme-specific information about how to gain authorization to access the server
-     */
-    public function getUserInfo()
-    {
-        $userinfo = $this->getUser();
-
-        $pass = $this->getPassword();
-        if ('' != $pass) {
-            $userinfo .= ":$pass";
-        }
-
-        return $userinfo;
-    }
-
-    /**
-     * Returns the HTTP host being requested.
-     *
-     * The port name will be appended to the host if it's non-standard.
-     *
-     * @return string
-     */
-    public function getHttpHost()
-    {
-        $scheme = $this->getScheme();
-        $port = $this->getPort();
-
-        if (('http' == $scheme && $port == 80) || ('https' == $scheme && $port == 443)) {
-            return $this->getHost();
-        }
-
-        return $this->getHost().':'.$port;
-    }
-
-    /**
-     * Returns the requested URI (path and query string).
-     *
-     * @return string The raw URI (i.e. not URI decoded)
-     */
-    public function getRequestUri()
-    {
-        if (null === $this->requestUri) {
-            $this->requestUri = $this->prepareRequestUri();
-        }
-
-        return $this->requestUri;
-    }
-
-    /**
-     * Gets the scheme and HTTP host.
-     *
-     * If the URL was called with basic authentication, the user
-     * and the password are not added to the generated string.
-     *
-     * @return string The scheme and HTTP host
-     */
-    public function getSchemeAndHttpHost()
-    {
-        return $this->getScheme().'://'.$this->getHttpHost();
-    }
-
-    /**
-     * Generates a normalized URI (URL) for the Request.
-     *
-     * @return string A normalized URI (URL) for the Request
-     *
-     * @see getQueryString()
-     */
-    public function getUri()
-    {
-        if (null !== $qs = $this->getQueryString()) {
-            $qs = '?'.$qs;
-        }
-
-        return $this->getSchemeAndHttpHost().$this->getBaseUrl().$this->getPathInfo().$qs;
-    }
-
-    /**
-     * Generates a normalized URI for the given path.
-     *
-     * @param string $path A path to use instead of the current one
-     *
-     * @return string The normalized URI for the path
-     */
-    public function getUriForPath($path)
-    {
-        return $this->getSchemeAndHttpHost().$this->getBaseUrl().$path;
-    }
-
-    /**
-     * Returns the path as relative reference from the current Request path.
-     *
-     * Only the URIs path component (no schema, host etc.) is relevant and must be given.
-     * Both paths must be absolute and not contain relative parts.
-     * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives.
-     * Furthermore, they can be used to reduce the link size in documents.
-     *
-     * Example target paths, given a base path of "/a/b/c/d":
-     * - "/a/b/c/d"     -> ""
-     * - "/a/b/c/"      -> "./"
-     * - "/a/b/"        -> "../"
-     * - "/a/b/c/other" -> "other"
-     * - "/a/x/y"       -> "../../x/y"
-     *
-     * @param string $path The target path
-     *
-     * @return string The relative target path
-     */
-    public function getRelativeUriForPath($path)
-    {
-        // be sure that we are dealing with an absolute path
-        if (!isset($path[0]) || '/' !== $path[0]) {
-            return $path;
-        }
-
-        if ($path === $basePath = $this->getPathInfo()) {
-            return '';
-        }
-
-        $sourceDirs = explode('/', isset($basePath[0]) && '/' === $basePath[0] ? substr($basePath, 1) : $basePath);
-        $targetDirs = explode('/', isset($path[0]) && '/' === $path[0] ? substr($path, 1) : $path);
-        array_pop($sourceDirs);
-        $targetFile = array_pop($targetDirs);
-
-        foreach ($sourceDirs as $i => $dir) {
-            if (isset($targetDirs[$i]) && $dir === $targetDirs[$i]) {
-                unset($sourceDirs[$i], $targetDirs[$i]);
-            } else {
-                break;
-            }
-        }
-
-        $targetDirs[] = $targetFile;
-        $path = str_repeat('../', count($sourceDirs)).implode('/', $targetDirs);
-
-        // A reference to the same base directory or an empty subdirectory must be prefixed with "./".
-        // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used
-        // as the first segment of a relative-path reference, as it would be mistaken for a scheme name
-        // (see http://tools.ietf.org/html/rfc3986#section-4.2).
-        return !isset($path[0]) || '/' === $path[0]
-            || false !== ($colonPos = strpos($path, ':')) && ($colonPos < ($slashPos = strpos($path, '/')) || false === $slashPos)
-            ? "./$path" : $path;
-    }
-
-    /**
-     * Generates the normalized query string for the Request.
-     *
-     * It builds a normalized query string, where keys/value pairs are alphabetized
-     * and have consistent escaping.
-     *
-     * @return string|null A normalized query string for the Request
-     */
-    public function getQueryString()
-    {
-        $qs = static::normalizeQueryString($this->server->get('QUERY_STRING'));
-
-        return '' === $qs ? null : $qs;
-    }
-
-    /**
-     * Checks whether the request is secure or not.
-     *
-     * This method can read the client protocol from the "X-Forwarded-Proto" header
-     * when trusted proxies were set via "setTrustedProxies()".
-     *
-     * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http".
-     *
-     * If your reverse proxy uses a different header name than "X-Forwarded-Proto"
-     * ("SSL_HTTPS" for instance), configure it via "setTrustedHeaderName()" with
-     * the "client-proto" key.
-     *
-     * @return bool
-     */
-    public function isSecure()
-    {
-        if ($this->isFromTrustedProxy() && self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && $proto = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO])) {
-            return in_array(strtolower(current(explode(',', $proto))), array('https', 'on', 'ssl', '1'));
-        }
-
-        $https = $this->server->get('HTTPS');
-
-        return !empty($https) && 'off' !== strtolower($https);
-    }
-
-    /**
-     * Returns the host name.
-     *
-     * This method can read the client host name from the "X-Forwarded-Host" header
-     * when trusted proxies were set via "setTrustedProxies()".
-     *
-     * The "X-Forwarded-Host" header must contain the client host name.
-     *
-     * If your reverse proxy uses a different header name than "X-Forwarded-Host",
-     * configure it via "setTrustedHeaderName()" with the "client-host" key.
-     *
-     * @return string
-     *
-     * @throws \UnexpectedValueException when the host name is invalid
-     */
-    public function getHost()
-    {
-        if ($this->isFromTrustedProxy() && self::$trustedHeaders[self::HEADER_CLIENT_HOST] && $host = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_HOST])) {
-            $elements = explode(',', $host);
-
-            $host = $elements[count($elements) - 1];
-        } elseif (!$host = $this->headers->get('HOST')) {
-            if (!$host = $this->server->get('SERVER_NAME')) {
-                $host = $this->server->get('SERVER_ADDR', '');
-            }
-        }
-
-        // trim and remove port number from host
-        // host is lowercase as per RFC 952/2181
-        $host = strtolower(preg_replace('/:\d+$/', '', trim($host)));
-
-        // as the host can come from the user (HTTP_HOST and depending on the configuration, SERVER_NAME too can come from the user)
-        // check that it does not contain forbidden characters (see RFC 952 and RFC 2181)
-        // use preg_replace() instead of preg_match() to prevent DoS attacks with long host names
-        if ($host && '' !== preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/', '', $host)) {
-            throw new \UnexpectedValueException(sprintf('Invalid Host "%s"', $host));
-        }
-
-        if (count(self::$trustedHostPatterns) > 0) {
-            // to avoid host header injection attacks, you should provide a list of trusted host patterns
-
-            if (in_array($host, self::$trustedHosts)) {
-                return $host;
-            }
-
-            foreach (self::$trustedHostPatterns as $pattern) {
-                if (preg_match($pattern, $host)) {
-                    self::$trustedHosts[] = $host;
-
-                    return $host;
-                }
-            }
-
-            throw new \UnexpectedValueException(sprintf('Untrusted Host "%s"', $host));
-        }
-
-        return $host;
-    }
-
-    /**
-     * Sets the request method.
-     *
-     * @param string $method
-     */
-    public function setMethod($method)
-    {
-        $this->method = null;
-        $this->server->set('REQUEST_METHOD', $method);
-    }
-
-    /**
-     * Gets the request "intended" method.
-     *
-     * If the X-HTTP-Method-Override header is set, and if the method is a POST,
-     * then it is used to determine the "real" intended HTTP method.
-     *
-     * The _method request parameter can also be used to determine the HTTP method,
-     * but only if enableHttpMethodParameterOverride() has been called.
-     *
-     * The method is always an uppercased string.
-     *
-     * @return string The request method
-     *
-     * @see getRealMethod()
-     */
-    public function getMethod()
-    {
-        if (null === $this->method) {
-            $this->method = strtoupper($this->server->get('REQUEST_METHOD', 'GET'));
-
-            if ('POST' === $this->method) {
-                if ($method = $this->headers->get('X-HTTP-METHOD-OVERRIDE')) {
-                    $this->method = strtoupper($method);
-                } elseif (self::$httpMethodParameterOverride) {
-                    $this->method = strtoupper($this->request->get('_method', $this->query->get('_method', 'POST')));
-                }
-            }
-        }
-
-        return $this->method;
-    }
-
-    /**
-     * Gets the "real" request method.
-     *
-     * @return string The request method
-     *
-     * @see getMethod()
-     */
-    public function getRealMethod()
-    {
-        return strtoupper($this->server->get('REQUEST_METHOD', 'GET'));
-    }
-
-    /**
-     * Gets the mime type associated with the format.
-     *
-     * @param string $format The format
-     *
-     * @return string The associated mime type (null if not found)
-     */
-    public function getMimeType($format)
-    {
-        if (null === static::$formats) {
-            static::initializeFormats();
-        }
-
-        return isset(static::$formats[$format]) ? static::$formats[$format][0] : null;
-    }
-
-    /**
-     * Gets the format associated with the mime type.
-     *
-     * @param string $mimeType The associated mime type
-     *
-     * @return string|null The format (null if not found)
-     */
-    public function getFormat($mimeType)
-    {
-        if (false !== $pos = strpos($mimeType, ';')) {
-            $mimeType = substr($mimeType, 0, $pos);
-        }
-
-        if (null === static::$formats) {
-            static::initializeFormats();
-        }
-
-        foreach (static::$formats as $format => $mimeTypes) {
-            if (in_array($mimeType, (array) $mimeTypes)) {
-                return $format;
-            }
-        }
-    }
-
-    /**
-     * Associates a format with mime types.
-     *
-     * @param string       $format    The format
-     * @param string|array $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type)
-     */
-    public function setFormat($format, $mimeTypes)
-    {
-        if (null === static::$formats) {
-            static::initializeFormats();
-        }
-
-        static::$formats[$format] = is_array($mimeTypes) ? $mimeTypes : array($mimeTypes);
-    }
-
-    /**
-     * Gets the request format.
-     *
-     * Here is the process to determine the format:
-     *
-     *  * format defined by the user (with setRequestFormat())
-     *  * _format request parameter
-     *  * $default
-     *
-     * @param string $default The default format
-     *
-     * @return string The request format
-     */
-    public function getRequestFormat($default = 'html')
-    {
-        if (null === $this->format) {
-            $this->format = $this->get('_format', $default);
-        }
-
-        return $this->format;
-    }
-
-    /**
-     * Sets the request format.
-     *
-     * @param string $format The request format.
-     */
-    public function setRequestFormat($format)
-    {
-        $this->format = $format;
-    }
-
-    /**
-     * Gets the format associated with the request.
-     *
-     * @return string|null The format (null if no content type is present)
-     */
-    public function getContentType()
-    {
-        return $this->getFormat($this->headers->get('CONTENT_TYPE'));
-    }
-
-    /**
-     * Sets the default locale.
-     *
-     * @param string $locale
-     */
-    public function setDefaultLocale($locale)
-    {
-        $this->defaultLocale = $locale;
-
-        if (null === $this->locale) {
-            $this->setPhpDefaultLocale($locale);
-        }
-    }
-
-    /**
-     * Get the default locale.
-     *
-     * @return string
-     */
-    public function getDefaultLocale()
-    {
-        return $this->defaultLocale;
-    }
-
-    /**
-     * Sets the locale.
-     *
-     * @param string $locale
-     */
-    public function setLocale($locale)
-    {
-        $this->setPhpDefaultLocale($this->locale = $locale);
-    }
-
-    /**
-     * Get the locale.
-     *
-     * @return string
-     */
-    public function getLocale()
-    {
-        return null === $this->locale ? $this->defaultLocale : $this->locale;
-    }
-
-    /**
-     * Checks if the request method is of specified type.
-     *
-     * @param string $method Uppercase request method (GET, POST etc).
-     *
-     * @return bool
-     */
-    public function isMethod($method)
-    {
-        return $this->getMethod() === strtoupper($method);
-    }
-
-    /**
-     * Checks whether the method is safe or not.
-     *
-     * @return bool
-     */
-    public function isMethodSafe()
-    {
-        return in_array($this->getMethod(), array('GET', 'HEAD'));
-    }
-
-    /**
-     * Returns the request body content.
-     *
-     * @param bool $asResource If true, a resource will be returned
-     *
-     * @return string|resource The request body content or a resource to read the body stream.
-     *
-     * @throws \LogicException
-     */
-    public function getContent($asResource = false)
-    {
-        $currentContentIsResource = is_resource($this->content);
-        if (PHP_VERSION_ID < 50600 && false === $this->content) {
-            throw new \LogicException('getContent() can only be called once when using the resource return type and PHP below 5.6.');
-        }
-
-        if (true === $asResource) {
-            if ($currentContentIsResource) {
-                rewind($this->content);
-
-                return $this->content;
-            }
-
-            // Content passed in parameter (test)
-            if (is_string($this->content)) {
-                $resource = fopen('php://temp', 'r+');
-                fwrite($resource, $this->content);
-                rewind($resource);
-
-                return $resource;
-            }
-
-            $this->content = false;
-
-            return fopen('php://input', 'rb');
-        }
-
-        if ($currentContentIsResource) {
-            rewind($this->content);
-
-            return stream_get_contents($this->content);
-        }
-
-        if (null === $this->content) {
-            $this->content = file_get_contents('php://input');
-        }
-
-        return $this->content;
-    }
-
-    /**
-     * Gets the Etags.
-     *
-     * @return array The entity tags
-     */
-    public function getETags()
-    {
-        return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), null, PREG_SPLIT_NO_EMPTY);
-    }
-
-    /**
-     * @return bool
-     */
-    public function isNoCache()
-    {
-        return $this->headers->hasCacheControlDirective('no-cache') || 'no-cache' == $this->headers->get('Pragma');
-    }
-
-    /**
-     * Returns the preferred language.
-     *
-     * @param array $locales An array of ordered available locales
-     *
-     * @return string|null The preferred locale
-     */
-    public function getPreferredLanguage(array $locales = null)
-    {
-        $preferredLanguages = $this->getLanguages();
-
-        if (empty($locales)) {
-            return isset($preferredLanguages[0]) ? $preferredLanguages[0] : null;
-        }
-
-        if (!$preferredLanguages) {
-            return $locales[0];
-        }
-
-        $extendedPreferredLanguages = array();
-        foreach ($preferredLanguages as $language) {
-            $extendedPreferredLanguages[] = $language;
-            if (false !== $position = strpos($language, '_')) {
-                $superLanguage = substr($language, 0, $position);
-                if (!in_array($superLanguage, $preferredLanguages)) {
-                    $extendedPreferredLanguages[] = $superLanguage;
-                }
-            }
-        }
-
-        $preferredLanguages = array_values(array_intersect($extendedPreferredLanguages, $locales));
-
-        return isset($preferredLanguages[0]) ? $preferredLanguages[0] : $locales[0];
-    }
-
-    /**
-     * Gets a list of languages acceptable by the client browser.
-     *
-     * @return array Languages ordered in the user browser preferences
-     */
-    public function getLanguages()
-    {
-        if (null !== $this->languages) {
-            return $this->languages;
-        }
-
-        $languages = AcceptHeader::fromString($this->headers->get('Accept-Language'))->all();
-        $this->languages = array();
-        foreach ($languages as $lang => $acceptHeaderItem) {
-            if (false !== strpos($lang, '-')) {
-                $codes = explode('-', $lang);
-                if ('i' === $codes[0]) {
-                    // Language not listed in ISO 639 that are not variants
-                    // of any listed language, which can be registered with the
-                    // i-prefix, such as i-cherokee
-                    if (count($codes) > 1) {
-                        $lang = $codes[1];
-                    }
-                } else {
-                    for ($i = 0, $max = count($codes); $i < $max; ++$i) {
-                        if ($i === 0) {
-                            $lang = strtolower($codes[0]);
-                        } else {
-                            $lang .= '_'.strtoupper($codes[$i]);
-                        }
-                    }
-                }
-            }
-
-            $this->languages[] = $lang;
-        }
-
-        return $this->languages;
-    }
-
-    /**
-     * Gets a list of charsets acceptable by the client browser.
-     *
-     * @return array List of charsets in preferable order
-     */
-    public function getCharsets()
-    {
-        if (null !== $this->charsets) {
-            return $this->charsets;
-        }
-
-        return $this->charsets = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all());
-    }
-
-    /**
-     * Gets a list of encodings acceptable by the client browser.
-     *
-     * @return array List of encodings in preferable order
-     */
-    public function getEncodings()
-    {
-        if (null !== $this->encodings) {
-            return $this->encodings;
-        }
-
-        return $this->encodings = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all());
-    }
-
-    /**
-     * Gets a list of content types acceptable by the client browser.
-     *
-     * @return array List of content types in preferable order
-     */
-    public function getAcceptableContentTypes()
-    {
-        if (null !== $this->acceptableContentTypes) {
-            return $this->acceptableContentTypes;
-        }
-
-        return $this->acceptableContentTypes = array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all());
-    }
-
-    /**
-     * Returns true if the request is a XMLHttpRequest.
-     *
-     * It works if your JavaScript library sets an X-Requested-With HTTP header.
-     * It is known to work with common JavaScript frameworks:
-     *
-     * @link http://en.wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript
-     *
-     * @return bool true if the request is an XMLHttpRequest, false otherwise
-     */
-    public function isXmlHttpRequest()
-    {
-        return 'XMLHttpRequest' == $this->headers->get('X-Requested-With');
-    }
-
-    /*
-     * The following methods are derived from code of the Zend Framework (1.10dev - 2010-01-24)
-     *
-     * Code subject to the new BSD license (http://framework.zend.com/license/new-bsd).
-     *
-     * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
-     */
-
-    protected function prepareRequestUri()
-    {
-        $requestUri = '';
-
-        if ($this->headers->has('X_ORIGINAL_URL')) {
-            // IIS with Microsoft Rewrite Module
-            $requestUri = $this->headers->get('X_ORIGINAL_URL');
-            $this->headers->remove('X_ORIGINAL_URL');
-            $this->server->remove('HTTP_X_ORIGINAL_URL');
-            $this->server->remove('UNENCODED_URL');
-            $this->server->remove('IIS_WasUrlRewritten');
-        } elseif ($this->headers->has('X_REWRITE_URL')) {
-            // IIS with ISAPI_Rewrite
-            $requestUri = $this->headers->get('X_REWRITE_URL');
-            $this->headers->remove('X_REWRITE_URL');
-        } elseif ($this->server->get('IIS_WasUrlRewritten') == '1' && $this->server->get('UNENCODED_URL') != '') {
-            // IIS7 with URL Rewrite: make sure we get the unencoded URL (double slash problem)
-            $requestUri = $this->server->get('UNENCODED_URL');
-            $this->server->remove('UNENCODED_URL');
-            $this->server->remove('IIS_WasUrlRewritten');
-        } elseif ($this->server->has('REQUEST_URI')) {
-            $requestUri = $this->server->get('REQUEST_URI');
-            // HTTP proxy reqs setup request URI with scheme and host [and port] + the URL path, only use URL path
-            $schemeAndHttpHost = $this->getSchemeAndHttpHost();
-            if (strpos($requestUri, $schemeAndHttpHost) === 0) {
-                $requestUri = substr($requestUri, strlen($schemeAndHttpHost));
-            }
-        } elseif ($this->server->has('ORIG_PATH_INFO')) {
-            // IIS 5.0, PHP as CGI
-            $requestUri = $this->server->get('ORIG_PATH_INFO');
-            if ('' != $this->server->get('QUERY_STRING')) {
-                $requestUri .= '?'.$this->server->get('QUERY_STRING');
-            }
-            $this->server->remove('ORIG_PATH_INFO');
-        }
-
-        // normalize the request URI to ease creating sub-requests from this request
-        $this->server->set('REQUEST_URI', $requestUri);
-
-        return $requestUri;
-    }
-
-    /**
-     * Prepares the base URL.
-     *
-     * @return string
-     */
-    protected function prepareBaseUrl()
-    {
-        $filename = basename($this->server->get('SCRIPT_FILENAME'));
-
-        if (basename($this->server->get('SCRIPT_NAME')) === $filename) {
-            $baseUrl = $this->server->get('SCRIPT_NAME');
-        } elseif (basename($this->server->get('PHP_SELF')) === $filename) {
-            $baseUrl = $this->server->get('PHP_SELF');
-        } elseif (basename($this->server->get('ORIG_SCRIPT_NAME')) === $filename) {
-            $baseUrl = $this->server->get('ORIG_SCRIPT_NAME'); // 1and1 shared hosting compatibility
-        } else {
-            // Backtrack up the script_filename to find the portion matching
-            // php_self
-            $path = $this->server->get('PHP_SELF', '');
-            $file = $this->server->get('SCRIPT_FILENAME', '');
-            $segs = explode('/', trim($file, '/'));
-            $segs = array_reverse($segs);
-            $index = 0;
-            $last = count($segs);
-            $baseUrl = '';
-            do {
-                $seg = $segs[$index];
-                $baseUrl = '/'.$seg.$baseUrl;
-                ++$index;
-            } while ($last > $index && (false !== $pos = strpos($path, $baseUrl)) && 0 != $pos);
-        }
-
-        // Does the baseUrl have anything in common with the request_uri?
-        $requestUri = $this->getRequestUri();
-
-        if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) {
-            // full $baseUrl matches
-            return $prefix;
-        }
-
-        if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, rtrim(dirname($baseUrl), '/'.DIRECTORY_SEPARATOR).'/')) {
-            // directory portion of $baseUrl matches
-            return rtrim($prefix, '/'.DIRECTORY_SEPARATOR);
-        }
-
-        $truncatedRequestUri = $requestUri;
-        if (false !== $pos = strpos($requestUri, '?')) {
-            $truncatedRequestUri = substr($requestUri, 0, $pos);
-        }
-
-        $basename = basename($baseUrl);
-        if (empty($basename) || !strpos(rawurldecode($truncatedRequestUri), $basename)) {
-            // no match whatsoever; set it blank
-            return '';
-        }
-
-        // If using mod_rewrite or ISAPI_Rewrite strip the script filename
-        // out of baseUrl. $pos !== 0 makes sure it is not matching a value
-        // from PATH_INFO or QUERY_STRING
-        if (strlen($requestUri) >= strlen($baseUrl) && (false !== $pos = strpos($requestUri, $baseUrl)) && $pos !== 0) {
-            $baseUrl = substr($requestUri, 0, $pos + strlen($baseUrl));
-        }
-
-        return rtrim($baseUrl, '/'.DIRECTORY_SEPARATOR);
-    }
-
-    /**
-     * Prepares the base path.
-     *
-     * @return string base path
-     */
-    protected function prepareBasePath()
-    {
-        $filename = basename($this->server->get('SCRIPT_FILENAME'));
-        $baseUrl = $this->getBaseUrl();
-        if (empty($baseUrl)) {
-            return '';
-        }
-
-        if (basename($baseUrl) === $filename) {
-            $basePath = dirname($baseUrl);
-        } else {
-            $basePath = $baseUrl;
-        }
-
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            $basePath = str_replace('\\', '/', $basePath);
-        }
-
-        return rtrim($basePath, '/');
-    }
-
-    /**
-     * Prepares the path info.
-     *
-     * @return string path info
-     */
-    protected function preparePathInfo()
-    {
-        $baseUrl = $this->getBaseUrl();
-
-        if (null === ($requestUri = $this->getRequestUri())) {
-            return '/';
-        }
-
-        $pathInfo = '/';
-
-        // Remove the query string from REQUEST_URI
-        if ($pos = strpos($requestUri, '?')) {
-            $requestUri = substr($requestUri, 0, $pos);
-        }
-
-        $pathInfo = substr($requestUri, strlen($baseUrl));
-        if (null !== $baseUrl && (false === $pathInfo || '' === $pathInfo)) {
-            // If substr() returns false then PATH_INFO is set to an empty string
-            return '/';
-        } elseif (null === $baseUrl) {
-            return $requestUri;
-        }
-
-        return (string) $pathInfo;
-    }
-
-    /**
-     * Initializes HTTP request formats.
-     */
-    protected static function initializeFormats()
-    {
-        static::$formats = array(
-            'html' => array('text/html', 'application/xhtml+xml'),
-            'txt' => array('text/plain'),
-            'js' => array('application/javascript', 'application/x-javascript', 'text/javascript'),
-            'css' => array('text/css'),
-            'json' => array('application/json', 'application/x-json'),
-            'xml' => array('text/xml', 'application/xml', 'application/x-xml'),
-            'rdf' => array('application/rdf+xml'),
-            'atom' => array('application/atom+xml'),
-            'rss' => array('application/rss+xml'),
-            'form' => array('application/x-www-form-urlencoded'),
-        );
-    }
-
-    /**
-     * Sets the default PHP locale.
-     *
-     * @param string $locale
-     */
-    private function setPhpDefaultLocale($locale)
-    {
-        // if either the class Locale doesn't exist, or an exception is thrown when
-        // setting the default locale, the intl module is not installed, and
-        // the call can be ignored:
-        try {
-            if (class_exists('Locale', false)) {
-                \Locale::setDefault($locale);
-            }
-        } catch (\Exception $e) {
-        }
-    }
-
-    /*
-     * Returns the prefix as encoded in the string when the string starts with
-     * the given prefix, false otherwise.
-     *
-     * @param string $string The urlencoded string
-     * @param string $prefix The prefix not encoded
-     *
-     * @return string|false The prefix as it is encoded in $string, or false
-     */
-    private function getUrlencodedPrefix($string, $prefix)
-    {
-        if (0 !== strpos(rawurldecode($string), $prefix)) {
-            return false;
-        }
-
-        $len = strlen($prefix);
-
-        if (preg_match(sprintf('#^(%%[[:xdigit:]]{2}|.){%d}#', $len), $string, $match)) {
-            return $match[0];
-        }
-
-        return false;
-    }
-
-    private static function createRequestFromFactory(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
-    {
-        if (self::$requestFactory) {
-            $request = call_user_func(self::$requestFactory, $query, $request, $attributes, $cookies, $files, $server, $content);
-
-            if (!$request instanceof self) {
-                throw new \LogicException('The Request factory must return an instance of Symfony\Component\HttpFoundation\Request.');
-            }
-
-            return $request;
-        }
-
-        return new static($query, $request, $attributes, $cookies, $files, $server, $content);
-    }
-
-    private function isFromTrustedProxy()
-    {
-        return self::$trustedProxies && IpUtils::checkIp($this->server->get('REMOTE_ADDR'), self::$trustedProxies);
-    }
-}
diff --git a/vendor/symfony/http-foundation/RequestMatcher.php b/vendor/symfony/http-foundation/RequestMatcher.php
deleted file mode 100644
index ca094ca..0000000
--- a/vendor/symfony/http-foundation/RequestMatcher.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * RequestMatcher compares a pre-defined set of checks against a Request instance.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RequestMatcher implements RequestMatcherInterface
-{
-    /**
-     * @var string
-     */
-    private $path;
-
-    /**
-     * @var string
-     */
-    private $host;
-
-    /**
-     * @var array
-     */
-    private $methods = array();
-
-    /**
-     * @var string
-     */
-    private $ips = array();
-
-    /**
-     * @var array
-     */
-    private $attributes = array();
-
-    /**
-     * @var string[]
-     */
-    private $schemes = array();
-
-    /**
-     * @param string|null          $path
-     * @param string|null          $host
-     * @param string|string[]|null $methods
-     * @param string|string[]|null $ips
-     * @param array                $attributes
-     * @param string|string[]|null $schemes
-     */
-    public function __construct($path = null, $host = null, $methods = null, $ips = null, array $attributes = array(), $schemes = null)
-    {
-        $this->matchPath($path);
-        $this->matchHost($host);
-        $this->matchMethod($methods);
-        $this->matchIps($ips);
-        $this->matchScheme($schemes);
-
-        foreach ($attributes as $k => $v) {
-            $this->matchAttribute($k, $v);
-        }
-    }
-
-    /**
-     * Adds a check for the HTTP scheme.
-     *
-     * @param string|string[]|null $scheme An HTTP scheme or an array of HTTP schemes
-     */
-    public function matchScheme($scheme)
-    {
-        $this->schemes = array_map('strtolower', (array) $scheme);
-    }
-
-    /**
-     * Adds a check for the URL host name.
-     *
-     * @param string $regexp A Regexp
-     */
-    public function matchHost($regexp)
-    {
-        $this->host = $regexp;
-    }
-
-    /**
-     * Adds a check for the URL path info.
-     *
-     * @param string $regexp A Regexp
-     */
-    public function matchPath($regexp)
-    {
-        $this->path = $regexp;
-    }
-
-    /**
-     * Adds a check for the client IP.
-     *
-     * @param string $ip A specific IP address or a range specified using IP/netmask like 192.168.1.0/24
-     */
-    public function matchIp($ip)
-    {
-        $this->matchIps($ip);
-    }
-
-    /**
-     * Adds a check for the client IP.
-     *
-     * @param string|string[] $ips A specific IP address or a range specified using IP/netmask like 192.168.1.0/24
-     */
-    public function matchIps($ips)
-    {
-        $this->ips = (array) $ips;
-    }
-
-    /**
-     * Adds a check for the HTTP method.
-     *
-     * @param string|string[] $method An HTTP method or an array of HTTP methods
-     */
-    public function matchMethod($method)
-    {
-        $this->methods = array_map('strtoupper', (array) $method);
-    }
-
-    /**
-     * Adds a check for request attribute.
-     *
-     * @param string $key    The request attribute name
-     * @param string $regexp A Regexp
-     */
-    public function matchAttribute($key, $regexp)
-    {
-        $this->attributes[$key] = $regexp;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function matches(Request $request)
-    {
-        if ($this->schemes && !in_array($request->getScheme(), $this->schemes)) {
-            return false;
-        }
-
-        if ($this->methods && !in_array($request->getMethod(), $this->methods)) {
-            return false;
-        }
-
-        foreach ($this->attributes as $key => $pattern) {
-            if (!preg_match('{'.$pattern.'}', $request->attributes->get($key))) {
-                return false;
-            }
-        }
-
-        if (null !== $this->path && !preg_match('{'.$this->path.'}', rawurldecode($request->getPathInfo()))) {
-            return false;
-        }
-
-        if (null !== $this->host && !preg_match('{'.$this->host.'}i', $request->getHost())) {
-            return false;
-        }
-
-        if (IpUtils::checkIp($request->getClientIp(), $this->ips)) {
-            return true;
-        }
-
-        // Note to future implementors: add additional checks above the
-        // foreach above or else your check might not be run!
-        return count($this->ips) === 0;
-    }
-}
diff --git a/vendor/symfony/http-foundation/RequestMatcherInterface.php b/vendor/symfony/http-foundation/RequestMatcherInterface.php
deleted file mode 100644
index 066e7e8..0000000
--- a/vendor/symfony/http-foundation/RequestMatcherInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * RequestMatcherInterface is an interface for strategies to match a Request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RequestMatcherInterface
-{
-    /**
-     * Decides whether the rule(s) implemented by the strategy matches the supplied request.
-     *
-     * @param Request $request The request to check for a match
-     *
-     * @return bool true if the request matches, false otherwise
-     */
-    public function matches(Request $request);
-}
diff --git a/vendor/symfony/http-foundation/RequestStack.php b/vendor/symfony/http-foundation/RequestStack.php
deleted file mode 100644
index 3d9cfd0..0000000
--- a/vendor/symfony/http-foundation/RequestStack.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * Request stack that controls the lifecycle of requests.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class RequestStack
-{
-    /**
-     * @var Request[]
-     */
-    private $requests = array();
-
-    /**
-     * Pushes a Request on the stack.
-     *
-     * This method should generally not be called directly as the stack
-     * management should be taken care of by the application itself.
-     */
-    public function push(Request $request)
-    {
-        $this->requests[] = $request;
-    }
-
-    /**
-     * Pops the current request from the stack.
-     *
-     * This operation lets the current request go out of scope.
-     *
-     * This method should generally not be called directly as the stack
-     * management should be taken care of by the application itself.
-     *
-     * @return Request|null
-     */
-    public function pop()
-    {
-        if (!$this->requests) {
-            return;
-        }
-
-        return array_pop($this->requests);
-    }
-
-    /**
-     * @return Request|null
-     */
-    public function getCurrentRequest()
-    {
-        return end($this->requests) ?: null;
-    }
-
-    /**
-     * Gets the master Request.
-     *
-     * Be warned that making your code aware of the master request
-     * might make it un-compatible with other features of your framework
-     * like ESI support.
-     *
-     * @return Request|null
-     */
-    public function getMasterRequest()
-    {
-        if (!$this->requests) {
-            return;
-        }
-
-        return $this->requests[0];
-    }
-
-    /**
-     * Returns the parent request of the current.
-     *
-     * Be warned that making your code aware of the parent request
-     * might make it un-compatible with other features of your framework
-     * like ESI support.
-     *
-     * If current Request is the master request, it returns null.
-     *
-     * @return Request|null
-     */
-    public function getParentRequest()
-    {
-        $pos = count($this->requests) - 2;
-
-        if (!isset($this->requests[$pos])) {
-            return;
-        }
-
-        return $this->requests[$pos];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Resources/stubs/SessionHandlerInterface.php b/vendor/symfony/http-foundation/Resources/stubs/SessionHandlerInterface.php
deleted file mode 100644
index 9baa7bc..0000000
--- a/vendor/symfony/http-foundation/Resources/stubs/SessionHandlerInterface.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?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.
- */
-
-/**
- * SessionHandlerInterface for PHP < 5.4.
- *
- * The order in which these methods are invoked by PHP are:
- * 1. open [session_start]
- * 2. read
- * 3. gc [optional depending on probability settings: gc_probability / gc_divisor]
- * 4. destroy [optional when session_regenerate_id(true) is used]
- * 5. write [session_write_close] or destroy [session_destroy]
- * 6. close
- *
- * Extensive documentation can be found at php.net, see links:
- *
- * @see http://php.net/sessionhandlerinterface
- * @see http://php.net/session.customhandler
- * @see http://php.net/session-set-save-handler
- *
- * @author Drak <drak@zikula.org>
- * @author Tobias Schultze <http://tobion.de>
- */
-interface SessionHandlerInterface
-{
-    /**
-     * Re-initializes existing session, or creates a new one.
-     *
-     * @see http://php.net/sessionhandlerinterface.open
-     *
-     * @param string $savePath    Save path
-     * @param string $sessionName Session name, see http://php.net/function.session-name.php
-     *
-     * @return bool true on success, false on failure
-     */
-    public function open($savePath, $sessionName);
-
-    /**
-     * Closes the current session.
-     *
-     * @see http://php.net/sessionhandlerinterface.close
-     *
-     * @return bool true on success, false on failure
-     */
-    public function close();
-
-    /**
-     * Reads the session data.
-     *
-     * @see http://php.net/sessionhandlerinterface.read
-     *
-     * @param string $sessionId Session ID, see http://php.net/function.session-id
-     *
-     * @return string Same session data as passed in write() or empty string when non-existent or on failure
-     */
-    public function read($sessionId);
-
-    /**
-     * Writes the session data to the storage.
-     *
-     * Care, the session ID passed to write() can be different from the one previously
-     * received in read() when the session ID changed due to session_regenerate_id().
-     *
-     * @see http://php.net/sessionhandlerinterface.write
-     *
-     * @param string $sessionId Session ID , see http://php.net/function.session-id
-     * @param string $data      Serialized session data to save
-     *
-     * @return bool true on success, false on failure
-     */
-    public function write($sessionId, $data);
-
-    /**
-     * Destroys a session.
-     *
-     * @see http://php.net/sessionhandlerinterface.destroy
-     *
-     * @param string $sessionId Session ID, see http://php.net/function.session-id
-     *
-     * @return bool true on success, false on failure
-     */
-    public function destroy($sessionId);
-
-    /**
-     * Cleans up expired sessions (garbage collection).
-     *
-     * @see http://php.net/sessionhandlerinterface.gc
-     *
-     * @param string|int $maxlifetime Sessions that have not updated for the last maxlifetime seconds will be removed
-     *
-     * @return bool true on success, false on failure
-     */
-    public function gc($maxlifetime);
-}
diff --git a/vendor/symfony/http-foundation/Response.php b/vendor/symfony/http-foundation/Response.php
deleted file mode 100644
index cb706d5..0000000
--- a/vendor/symfony/http-foundation/Response.php
+++ /dev/null
@@ -1,1171 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * Response represents an HTTP response.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Response
-{
-    const HTTP_CONTINUE = 100;
-    const HTTP_SWITCHING_PROTOCOLS = 101;
-    const HTTP_PROCESSING = 102;            // RFC2518
-    const HTTP_OK = 200;
-    const HTTP_CREATED = 201;
-    const HTTP_ACCEPTED = 202;
-    const HTTP_NON_AUTHORITATIVE_INFORMATION = 203;
-    const HTTP_NO_CONTENT = 204;
-    const HTTP_RESET_CONTENT = 205;
-    const HTTP_PARTIAL_CONTENT = 206;
-    const HTTP_MULTI_STATUS = 207;          // RFC4918
-    const HTTP_ALREADY_REPORTED = 208;      // RFC5842
-    const HTTP_IM_USED = 226;               // RFC3229
-    const HTTP_MULTIPLE_CHOICES = 300;
-    const HTTP_MOVED_PERMANENTLY = 301;
-    const HTTP_FOUND = 302;
-    const HTTP_SEE_OTHER = 303;
-    const HTTP_NOT_MODIFIED = 304;
-    const HTTP_USE_PROXY = 305;
-    const HTTP_RESERVED = 306;
-    const HTTP_TEMPORARY_REDIRECT = 307;
-    const HTTP_PERMANENTLY_REDIRECT = 308;  // RFC7238
-    const HTTP_BAD_REQUEST = 400;
-    const HTTP_UNAUTHORIZED = 401;
-    const HTTP_PAYMENT_REQUIRED = 402;
-    const HTTP_FORBIDDEN = 403;
-    const HTTP_NOT_FOUND = 404;
-    const HTTP_METHOD_NOT_ALLOWED = 405;
-    const HTTP_NOT_ACCEPTABLE = 406;
-    const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407;
-    const HTTP_REQUEST_TIMEOUT = 408;
-    const HTTP_CONFLICT = 409;
-    const HTTP_GONE = 410;
-    const HTTP_LENGTH_REQUIRED = 411;
-    const HTTP_PRECONDITION_FAILED = 412;
-    const HTTP_REQUEST_ENTITY_TOO_LARGE = 413;
-    const HTTP_REQUEST_URI_TOO_LONG = 414;
-    const HTTP_UNSUPPORTED_MEDIA_TYPE = 415;
-    const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
-    const HTTP_EXPECTATION_FAILED = 417;
-    const HTTP_I_AM_A_TEAPOT = 418;                                               // RFC2324
-    const HTTP_UNPROCESSABLE_ENTITY = 422;                                        // RFC4918
-    const HTTP_LOCKED = 423;                                                      // RFC4918
-    const HTTP_FAILED_DEPENDENCY = 424;                                           // RFC4918
-    const HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL = 425;   // RFC2817
-    const HTTP_UPGRADE_REQUIRED = 426;                                            // RFC2817
-    const HTTP_PRECONDITION_REQUIRED = 428;                                       // RFC6585
-    const HTTP_TOO_MANY_REQUESTS = 429;                                           // RFC6585
-    const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;                             // RFC6585
-    const HTTP_INTERNAL_SERVER_ERROR = 500;
-    const HTTP_NOT_IMPLEMENTED = 501;
-    const HTTP_BAD_GATEWAY = 502;
-    const HTTP_SERVICE_UNAVAILABLE = 503;
-    const HTTP_GATEWAY_TIMEOUT = 504;
-    const HTTP_VERSION_NOT_SUPPORTED = 505;
-    const HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL = 506;                        // RFC2295
-    const HTTP_INSUFFICIENT_STORAGE = 507;                                        // RFC4918
-    const HTTP_LOOP_DETECTED = 508;                                               // RFC5842
-    const HTTP_NOT_EXTENDED = 510;                                                // RFC2774
-    const HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511;                             // RFC6585
-
-    /**
-     * @var \Symfony\Component\HttpFoundation\ResponseHeaderBag
-     */
-    public $headers;
-
-    /**
-     * @var string
-     */
-    protected $content;
-
-    /**
-     * @var string
-     */
-    protected $version;
-
-    /**
-     * @var int
-     */
-    protected $statusCode;
-
-    /**
-     * @var string
-     */
-    protected $statusText;
-
-    /**
-     * @var string
-     */
-    protected $charset;
-
-    /**
-     * Status codes translation table.
-     *
-     * 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).
-     *
-     * Unless otherwise noted, the status code is defined in RFC2616.
-     *
-     * @var array
-     */
-    public static $statusTexts = array(
-        100 => 'Continue',
-        101 => 'Switching Protocols',
-        102 => 'Processing',            // RFC2518
-        200 => 'OK',
-        201 => 'Created',
-        202 => 'Accepted',
-        203 => 'Non-Authoritative Information',
-        204 => 'No Content',
-        205 => 'Reset Content',
-        206 => 'Partial Content',
-        207 => 'Multi-Status',          // RFC4918
-        208 => 'Already Reported',      // RFC5842
-        226 => 'IM Used',               // RFC3229
-        300 => 'Multiple Choices',
-        301 => 'Moved Permanently',
-        302 => 'Found',
-        303 => 'See Other',
-        304 => 'Not Modified',
-        305 => 'Use Proxy',
-        306 => 'Reserved',
-        307 => 'Temporary Redirect',
-        308 => 'Permanent Redirect',    // RFC7238
-        400 => 'Bad Request',
-        401 => 'Unauthorized',
-        402 => 'Payment Required',
-        403 => 'Forbidden',
-        404 => 'Not Found',
-        405 => 'Method Not Allowed',
-        406 => 'Not Acceptable',
-        407 => 'Proxy Authentication Required',
-        408 => 'Request Timeout',
-        409 => 'Conflict',
-        410 => 'Gone',
-        411 => 'Length Required',
-        412 => 'Precondition Failed',
-        413 => 'Request Entity Too Large',
-        414 => 'Request-URI Too Long',
-        415 => 'Unsupported Media Type',
-        416 => 'Requested Range Not Satisfiable',
-        417 => 'Expectation Failed',
-        418 => 'I\'m a teapot',                                               // RFC2324
-        422 => 'Unprocessable Entity',                                        // RFC4918
-        423 => 'Locked',                                                      // RFC4918
-        424 => 'Failed Dependency',                                           // RFC4918
-        425 => 'Reserved for WebDAV advanced collections expired proposal',   // RFC2817
-        426 => 'Upgrade Required',                                            // RFC2817
-        428 => 'Precondition Required',                                       // RFC6585
-        429 => 'Too Many Requests',                                           // RFC6585
-        431 => 'Request Header Fields Too Large',                             // RFC6585
-        500 => 'Internal Server Error',
-        501 => 'Not Implemented',
-        502 => 'Bad Gateway',
-        503 => 'Service Unavailable',
-        504 => 'Gateway Timeout',
-        505 => 'HTTP Version Not Supported',
-        506 => 'Variant Also Negotiates (Experimental)',                      // RFC2295
-        507 => 'Insufficient Storage',                                        // RFC4918
-        508 => 'Loop Detected',                                               // RFC5842
-        510 => 'Not Extended',                                                // RFC2774
-        511 => 'Network Authentication Required',                             // RFC6585
-    );
-
-    /**
-     * Constructor.
-     *
-     * @param mixed $content The response content, see setContent()
-     * @param int   $status  The response status code
-     * @param array $headers An array of response headers
-     *
-     * @throws \InvalidArgumentException When the HTTP status code is not valid
-     */
-    public function __construct($content = '', $status = 200, $headers = array())
-    {
-        $this->headers = new ResponseHeaderBag($headers);
-        $this->setContent($content);
-        $this->setStatusCode($status);
-        $this->setProtocolVersion('1.0');
-        if (!$this->headers->has('Date')) {
-            $this->setDate(\DateTime::createFromFormat('U', time(), new \DateTimeZone('UTC')));
-        }
-    }
-
-    /**
-     * Factory method for chainability.
-     *
-     * Example:
-     *
-     *     return Response::create($body, 200)
-     *         ->setSharedMaxAge(300);
-     *
-     * @param mixed $content The response content, see setContent()
-     * @param int   $status  The response status code
-     * @param array $headers An array of response headers
-     *
-     * @return Response
-     */
-    public static function create($content = '', $status = 200, $headers = array())
-    {
-        return new static($content, $status, $headers);
-    }
-
-    /**
-     * Returns the Response as an HTTP string.
-     *
-     * The string representation of the Response is the same as the
-     * one that will be sent to the client only if the prepare() method
-     * has been called before.
-     *
-     * @return string The Response as an HTTP string
-     *
-     * @see prepare()
-     */
-    public function __toString()
-    {
-        return
-            sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText)."\r\n".
-            $this->headers."\r\n".
-            $this->getContent();
-    }
-
-    /**
-     * Clones the current Response instance.
-     */
-    public function __clone()
-    {
-        $this->headers = clone $this->headers;
-    }
-
-    /**
-     * Prepares the Response before it is sent to the client.
-     *
-     * This method tweaks the Response to ensure that it is
-     * compliant with RFC 2616. Most of the changes are based on
-     * the Request that is "associated" with this Response.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return Response The current response.
-     */
-    public function prepare(Request $request)
-    {
-        $headers = $this->headers;
-
-        if ($this->isInformational() || $this->isEmpty()) {
-            $this->setContent(null);
-            $headers->remove('Content-Type');
-            $headers->remove('Content-Length');
-        } else {
-            // Content-type based on the Request
-            if (!$headers->has('Content-Type')) {
-                $format = $request->getRequestFormat();
-                if (null !== $format && $mimeType = $request->getMimeType($format)) {
-                    $headers->set('Content-Type', $mimeType);
-                }
-            }
-
-            // Fix Content-Type
-            $charset = $this->charset ?: 'UTF-8';
-            if (!$headers->has('Content-Type')) {
-                $headers->set('Content-Type', 'text/html; charset='.$charset);
-            } elseif (0 === stripos($headers->get('Content-Type'), 'text/') && false === stripos($headers->get('Content-Type'), 'charset')) {
-                // add the charset
-                $headers->set('Content-Type', $headers->get('Content-Type').'; charset='.$charset);
-            }
-
-            // Fix Content-Length
-            if ($headers->has('Transfer-Encoding')) {
-                $headers->remove('Content-Length');
-            }
-
-            if ($request->isMethod('HEAD')) {
-                // cf. RFC2616 14.13
-                $length = $headers->get('Content-Length');
-                $this->setContent(null);
-                if ($length) {
-                    $headers->set('Content-Length', $length);
-                }
-            }
-        }
-
-        // Fix protocol
-        if ('HTTP/1.0' != $request->server->get('SERVER_PROTOCOL')) {
-            $this->setProtocolVersion('1.1');
-        }
-
-        // Check if we need to send extra expire info headers
-        if ('1.0' == $this->getProtocolVersion() && 'no-cache' == $this->headers->get('Cache-Control')) {
-            $this->headers->set('pragma', 'no-cache');
-            $this->headers->set('expires', -1);
-        }
-
-        $this->ensureIEOverSSLCompatibility($request);
-
-        return $this;
-    }
-
-    /**
-     * Sends HTTP headers.
-     *
-     * @return Response
-     */
-    public function sendHeaders()
-    {
-        // headers have already been sent by the developer
-        if (headers_sent()) {
-            return $this;
-        }
-
-        // status
-        header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode);
-
-        // headers
-        foreach ($this->headers->allPreserveCase() as $name => $values) {
-            foreach ($values as $value) {
-                header($name.': '.$value, false, $this->statusCode);
-            }
-        }
-
-        // cookies
-        foreach ($this->headers->getCookies() as $cookie) {
-            setcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sends content for the current web response.
-     *
-     * @return Response
-     */
-    public function sendContent()
-    {
-        echo $this->content;
-
-        return $this;
-    }
-
-    /**
-     * Sends HTTP headers and content.
-     *
-     * @return Response
-     */
-    public function send()
-    {
-        $this->sendHeaders();
-        $this->sendContent();
-
-        if (function_exists('fastcgi_finish_request')) {
-            fastcgi_finish_request();
-        } elseif ('cli' !== PHP_SAPI) {
-            static::closeOutputBuffers(0, true);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sets the response content.
-     *
-     * Valid types are strings, numbers, null, and objects that implement a __toString() method.
-     *
-     * @param mixed $content Content that can be cast to string
-     *
-     * @return Response
-     *
-     * @throws \UnexpectedValueException
-     */
-    public function setContent($content)
-    {
-        if (null !== $content && !is_string($content) && !is_numeric($content) && !is_callable(array($content, '__toString'))) {
-            throw new \UnexpectedValueException(sprintf('The Response content must be a string or object implementing __toString(), "%s" given.', gettype($content)));
-        }
-
-        $this->content = (string) $content;
-
-        return $this;
-    }
-
-    /**
-     * Gets the current response content.
-     *
-     * @return string Content
-     */
-    public function getContent()
-    {
-        return $this->content;
-    }
-
-    /**
-     * Sets the HTTP protocol version (1.0 or 1.1).
-     *
-     * @param string $version The HTTP protocol version
-     *
-     * @return Response
-     */
-    public function setProtocolVersion($version)
-    {
-        $this->version = $version;
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTP protocol version.
-     *
-     * @return string The HTTP protocol version
-     */
-    public function getProtocolVersion()
-    {
-        return $this->version;
-    }
-
-    /**
-     * Sets the response status code.
-     *
-     * @param int   $code HTTP status code
-     * @param mixed $text HTTP status text
-     *
-     * If the status text is null it will be automatically populated for the known
-     * status codes and left empty otherwise.
-     *
-     * @return Response
-     *
-     * @throws \InvalidArgumentException When the HTTP status code is not valid
-     */
-    public function setStatusCode($code, $text = null)
-    {
-        $this->statusCode = $code = (int) $code;
-        if ($this->isInvalid()) {
-            throw new \InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $code));
-        }
-
-        if (null === $text) {
-            $this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : '';
-
-            return $this;
-        }
-
-        if (false === $text) {
-            $this->statusText = '';
-
-            return $this;
-        }
-
-        $this->statusText = $text;
-
-        return $this;
-    }
-
-    /**
-     * Retrieves the status code for the current web response.
-     *
-     * @return int Status code
-     */
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    /**
-     * Sets the response charset.
-     *
-     * @param string $charset Character set
-     *
-     * @return Response
-     */
-    public function setCharset($charset)
-    {
-        $this->charset = $charset;
-
-        return $this;
-    }
-
-    /**
-     * Retrieves the response charset.
-     *
-     * @return string Character set
-     */
-    public function getCharset()
-    {
-        return $this->charset;
-    }
-
-    /**
-     * Returns true if the response is worth caching under any circumstance.
-     *
-     * Responses marked "private" with an explicit Cache-Control directive are
-     * considered uncacheable.
-     *
-     * Responses with neither a freshness lifetime (Expires, max-age) nor cache
-     * validator (Last-Modified, ETag) are considered uncacheable.
-     *
-     * @return bool true if the response is worth caching, false otherwise
-     */
-    public function isCacheable()
-    {
-        if (!in_array($this->statusCode, array(200, 203, 300, 301, 302, 404, 410))) {
-            return false;
-        }
-
-        if ($this->headers->hasCacheControlDirective('no-store') || $this->headers->getCacheControlDirective('private')) {
-            return false;
-        }
-
-        return $this->isValidateable() || $this->isFresh();
-    }
-
-    /**
-     * Returns true if the response is "fresh".
-     *
-     * Fresh responses may be served from cache without any interaction with the
-     * origin. A response is considered fresh when it includes a Cache-Control/max-age
-     * indicator or Expires header and the calculated age is less than the freshness lifetime.
-     *
-     * @return bool true if the response is fresh, false otherwise
-     */
-    public function isFresh()
-    {
-        return $this->getTtl() > 0;
-    }
-
-    /**
-     * Returns true if the response includes headers that can be used to validate
-     * the response with the origin server using a conditional GET request.
-     *
-     * @return bool true if the response is validateable, false otherwise
-     */
-    public function isValidateable()
-    {
-        return $this->headers->has('Last-Modified') || $this->headers->has('ETag');
-    }
-
-    /**
-     * Marks the response as "private".
-     *
-     * It makes the response ineligible for serving other clients.
-     *
-     * @return Response
-     */
-    public function setPrivate()
-    {
-        $this->headers->removeCacheControlDirective('public');
-        $this->headers->addCacheControlDirective('private');
-
-        return $this;
-    }
-
-    /**
-     * Marks the response as "public".
-     *
-     * It makes the response eligible for serving other clients.
-     *
-     * @return Response
-     */
-    public function setPublic()
-    {
-        $this->headers->addCacheControlDirective('public');
-        $this->headers->removeCacheControlDirective('private');
-
-        return $this;
-    }
-
-    /**
-     * Returns true if the response must be revalidated by caches.
-     *
-     * This method indicates that the response must not be served stale by a
-     * cache in any circumstance without first revalidating with the origin.
-     * When present, the TTL of the response should not be overridden to be
-     * greater than the value provided by the origin.
-     *
-     * @return bool true if the response must be revalidated by a cache, false otherwise
-     */
-    public function mustRevalidate()
-    {
-        return $this->headers->hasCacheControlDirective('must-revalidate') || $this->headers->hasCacheControlDirective('proxy-revalidate');
-    }
-
-    /**
-     * Returns the Date header as a DateTime instance.
-     *
-     * @return \DateTime A \DateTime instance
-     *
-     * @throws \RuntimeException When the header is not parseable
-     */
-    public function getDate()
-    {
-        return $this->headers->getDate('Date', new \DateTime());
-    }
-
-    /**
-     * Sets the Date header.
-     *
-     * @param \DateTime $date A \DateTime instance
-     *
-     * @return Response
-     */
-    public function setDate(\DateTime $date)
-    {
-        $date->setTimezone(new \DateTimeZone('UTC'));
-        $this->headers->set('Date', $date->format('D, d M Y H:i:s').' GMT');
-
-        return $this;
-    }
-
-    /**
-     * Returns the age of the response.
-     *
-     * @return int The age of the response in seconds
-     */
-    public function getAge()
-    {
-        if (null !== $age = $this->headers->get('Age')) {
-            return (int) $age;
-        }
-
-        return max(time() - $this->getDate()->format('U'), 0);
-    }
-
-    /**
-     * Marks the response stale by setting the Age header to be equal to the maximum age of the response.
-     *
-     * @return Response
-     */
-    public function expire()
-    {
-        if ($this->isFresh()) {
-            $this->headers->set('Age', $this->getMaxAge());
-        }
-
-        return $this;
-    }
-
-    /**
-     * Returns the value of the Expires header as a DateTime instance.
-     *
-     * @return \DateTime|null A DateTime instance or null if the header does not exist
-     */
-    public function getExpires()
-    {
-        try {
-            return $this->headers->getDate('Expires');
-        } catch (\RuntimeException $e) {
-            // according to RFC 2616 invalid date formats (e.g. "0" and "-1") must be treated as in the past
-            return \DateTime::createFromFormat(DATE_RFC2822, 'Sat, 01 Jan 00 00:00:00 +0000');
-        }
-    }
-
-    /**
-     * Sets the Expires HTTP header with a DateTime instance.
-     *
-     * Passing null as value will remove the header.
-     *
-     * @param \DateTime|null $date A \DateTime instance or null to remove the header
-     *
-     * @return Response
-     */
-    public function setExpires(\DateTime $date = null)
-    {
-        if (null === $date) {
-            $this->headers->remove('Expires');
-        } else {
-            $date = clone $date;
-            $date->setTimezone(new \DateTimeZone('UTC'));
-            $this->headers->set('Expires', $date->format('D, d M Y H:i:s').' GMT');
-        }
-
-        return $this;
-    }
-
-    /**
-     * Returns the number of seconds after the time specified in the response's Date
-     * header when the response should no longer be considered fresh.
-     *
-     * First, it checks for a s-maxage directive, then a max-age directive, and then it falls
-     * back on an expires header. It returns null when no maximum age can be established.
-     *
-     * @return int|null Number of seconds
-     */
-    public function getMaxAge()
-    {
-        if ($this->headers->hasCacheControlDirective('s-maxage')) {
-            return (int) $this->headers->getCacheControlDirective('s-maxage');
-        }
-
-        if ($this->headers->hasCacheControlDirective('max-age')) {
-            return (int) $this->headers->getCacheControlDirective('max-age');
-        }
-
-        if (null !== $this->getExpires()) {
-            return $this->getExpires()->format('U') - $this->getDate()->format('U');
-        }
-    }
-
-    /**
-     * Sets the number of seconds after which the response should no longer be considered fresh.
-     *
-     * This methods sets the Cache-Control max-age directive.
-     *
-     * @param int $value Number of seconds
-     *
-     * @return Response
-     */
-    public function setMaxAge($value)
-    {
-        $this->headers->addCacheControlDirective('max-age', $value);
-
-        return $this;
-    }
-
-    /**
-     * Sets the number of seconds after which the response should no longer be considered fresh by shared caches.
-     *
-     * This methods sets the Cache-Control s-maxage directive.
-     *
-     * @param int $value Number of seconds
-     *
-     * @return Response
-     */
-    public function setSharedMaxAge($value)
-    {
-        $this->setPublic();
-        $this->headers->addCacheControlDirective('s-maxage', $value);
-
-        return $this;
-    }
-
-    /**
-     * Returns the response's time-to-live in seconds.
-     *
-     * It returns null when no freshness information is present in the response.
-     *
-     * When the responses TTL is <= 0, the response may not be served from cache without first
-     * revalidating with the origin.
-     *
-     * @return int|null The TTL in seconds
-     */
-    public function getTtl()
-    {
-        if (null !== $maxAge = $this->getMaxAge()) {
-            return $maxAge - $this->getAge();
-        }
-    }
-
-    /**
-     * Sets the response's time-to-live for shared caches.
-     *
-     * This method adjusts the Cache-Control/s-maxage directive.
-     *
-     * @param int $seconds Number of seconds
-     *
-     * @return Response
-     */
-    public function setTtl($seconds)
-    {
-        $this->setSharedMaxAge($this->getAge() + $seconds);
-
-        return $this;
-    }
-
-    /**
-     * Sets the response's time-to-live for private/client caches.
-     *
-     * This method adjusts the Cache-Control/max-age directive.
-     *
-     * @param int $seconds Number of seconds
-     *
-     * @return Response
-     */
-    public function setClientTtl($seconds)
-    {
-        $this->setMaxAge($this->getAge() + $seconds);
-
-        return $this;
-    }
-
-    /**
-     * Returns the Last-Modified HTTP header as a DateTime instance.
-     *
-     * @return \DateTime|null A DateTime instance or null if the header does not exist
-     *
-     * @throws \RuntimeException When the HTTP header is not parseable
-     */
-    public function getLastModified()
-    {
-        return $this->headers->getDate('Last-Modified');
-    }
-
-    /**
-     * Sets the Last-Modified HTTP header with a DateTime instance.
-     *
-     * Passing null as value will remove the header.
-     *
-     * @param \DateTime|null $date A \DateTime instance or null to remove the header
-     *
-     * @return Response
-     */
-    public function setLastModified(\DateTime $date = null)
-    {
-        if (null === $date) {
-            $this->headers->remove('Last-Modified');
-        } else {
-            $date = clone $date;
-            $date->setTimezone(new \DateTimeZone('UTC'));
-            $this->headers->set('Last-Modified', $date->format('D, d M Y H:i:s').' GMT');
-        }
-
-        return $this;
-    }
-
-    /**
-     * Returns the literal value of the ETag HTTP header.
-     *
-     * @return string|null The ETag HTTP header or null if it does not exist
-     */
-    public function getEtag()
-    {
-        return $this->headers->get('ETag');
-    }
-
-    /**
-     * Sets the ETag value.
-     *
-     * @param string|null $etag The ETag unique identifier or null to remove the header
-     * @param bool        $weak Whether you want a weak ETag or not
-     *
-     * @return Response
-     */
-    public function setEtag($etag = null, $weak = false)
-    {
-        if (null === $etag) {
-            $this->headers->remove('Etag');
-        } else {
-            if (0 !== strpos($etag, '"')) {
-                $etag = '"'.$etag.'"';
-            }
-
-            $this->headers->set('ETag', (true === $weak ? 'W/' : '').$etag);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sets the response's cache headers (validation and/or expiration).
-     *
-     * Available options are: etag, last_modified, max_age, s_maxage, private, and public.
-     *
-     * @param array $options An array of cache options
-     *
-     * @return Response
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setCache(array $options)
-    {
-        if ($diff = array_diff(array_keys($options), array('etag', 'last_modified', 'max_age', 's_maxage', 'private', 'public'))) {
-            throw new \InvalidArgumentException(sprintf('Response does not support the following options: "%s".', implode('", "', array_values($diff))));
-        }
-
-        if (isset($options['etag'])) {
-            $this->setEtag($options['etag']);
-        }
-
-        if (isset($options['last_modified'])) {
-            $this->setLastModified($options['last_modified']);
-        }
-
-        if (isset($options['max_age'])) {
-            $this->setMaxAge($options['max_age']);
-        }
-
-        if (isset($options['s_maxage'])) {
-            $this->setSharedMaxAge($options['s_maxage']);
-        }
-
-        if (isset($options['public'])) {
-            if ($options['public']) {
-                $this->setPublic();
-            } else {
-                $this->setPrivate();
-            }
-        }
-
-        if (isset($options['private'])) {
-            if ($options['private']) {
-                $this->setPrivate();
-            } else {
-                $this->setPublic();
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * Modifies the response so that it conforms to the rules defined for a 304 status code.
-     *
-     * This sets the status, removes the body, and discards any headers
-     * that MUST NOT be included in 304 responses.
-     *
-     * @return Response
-     *
-     * @see http://tools.ietf.org/html/rfc2616#section-10.3.5
-     */
-    public function setNotModified()
-    {
-        $this->setStatusCode(304);
-        $this->setContent(null);
-
-        // remove headers that MUST NOT be included with 304 Not Modified responses
-        foreach (array('Allow', 'Content-Encoding', 'Content-Language', 'Content-Length', 'Content-MD5', 'Content-Type', 'Last-Modified') as $header) {
-            $this->headers->remove($header);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Returns true if the response includes a Vary header.
-     *
-     * @return bool true if the response includes a Vary header, false otherwise
-     */
-    public function hasVary()
-    {
-        return null !== $this->headers->get('Vary');
-    }
-
-    /**
-     * Returns an array of header names given in the Vary header.
-     *
-     * @return array An array of Vary names
-     */
-    public function getVary()
-    {
-        if (!$vary = $this->headers->get('Vary', null, false)) {
-            return array();
-        }
-
-        $ret = array();
-        foreach ($vary as $item) {
-            $ret = array_merge($ret, preg_split('/[\s,]+/', $item));
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Sets the Vary header.
-     *
-     * @param string|array $headers
-     * @param bool         $replace Whether to replace the actual value of not (true by default)
-     *
-     * @return Response
-     */
-    public function setVary($headers, $replace = true)
-    {
-        $this->headers->set('Vary', $headers, $replace);
-
-        return $this;
-    }
-
-    /**
-     * Determines if the Response validators (ETag, Last-Modified) match
-     * a conditional value specified in the Request.
-     *
-     * If the Response is not modified, it sets the status code to 304 and
-     * removes the actual content by calling the setNotModified() method.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return bool true if the Response validators match the Request, false otherwise
-     */
-    public function isNotModified(Request $request)
-    {
-        if (!$request->isMethodSafe()) {
-            return false;
-        }
-
-        $notModified = false;
-        $lastModified = $this->headers->get('Last-Modified');
-        $modifiedSince = $request->headers->get('If-Modified-Since');
-
-        if ($etags = $request->getETags()) {
-            $notModified = in_array($this->getEtag(), $etags) || in_array('*', $etags);
-        }
-
-        if ($modifiedSince && $lastModified) {
-            $notModified = strtotime($modifiedSince) >= strtotime($lastModified) && (!$etags || $notModified);
-        }
-
-        if ($notModified) {
-            $this->setNotModified();
-        }
-
-        return $notModified;
-    }
-
-    // http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
-    /**
-     * Is response invalid?
-     *
-     * @return bool
-     */
-    public function isInvalid()
-    {
-        return $this->statusCode < 100 || $this->statusCode >= 600;
-    }
-
-    /**
-     * Is response informative?
-     *
-     * @return bool
-     */
-    public function isInformational()
-    {
-        return $this->statusCode >= 100 && $this->statusCode < 200;
-    }
-
-    /**
-     * Is response successful?
-     *
-     * @return bool
-     */
-    public function isSuccessful()
-    {
-        return $this->statusCode >= 200 && $this->statusCode < 300;
-    }
-
-    /**
-     * Is the response a redirect?
-     *
-     * @return bool
-     */
-    public function isRedirection()
-    {
-        return $this->statusCode >= 300 && $this->statusCode < 400;
-    }
-
-    /**
-     * Is there a client error?
-     *
-     * @return bool
-     */
-    public function isClientError()
-    {
-        return $this->statusCode >= 400 && $this->statusCode < 500;
-    }
-
-    /**
-     * Was there a server side error?
-     *
-     * @return bool
-     */
-    public function isServerError()
-    {
-        return $this->statusCode >= 500 && $this->statusCode < 600;
-    }
-
-    /**
-     * Is the response OK?
-     *
-     * @return bool
-     */
-    public function isOk()
-    {
-        return 200 === $this->statusCode;
-    }
-
-    /**
-     * Is the response forbidden?
-     *
-     * @return bool
-     */
-    public function isForbidden()
-    {
-        return 403 === $this->statusCode;
-    }
-
-    /**
-     * Is the response a not found error?
-     *
-     * @return bool
-     */
-    public function isNotFound()
-    {
-        return 404 === $this->statusCode;
-    }
-
-    /**
-     * Is the response a redirect of some form?
-     *
-     * @param string $location
-     *
-     * @return bool
-     */
-    public function isRedirect($location = null)
-    {
-        return in_array($this->statusCode, array(201, 301, 302, 303, 307, 308)) && (null === $location ?: $location == $this->headers->get('Location'));
-    }
-
-    /**
-     * Is the response empty?
-     *
-     * @return bool
-     */
-    public function isEmpty()
-    {
-        return in_array($this->statusCode, array(204, 304));
-    }
-
-    /**
-     * Cleans or flushes output buffers up to target level.
-     *
-     * Resulting level can be greater than target level if a non-removable buffer has been encountered.
-     *
-     * @param int  $targetLevel The target output buffering level
-     * @param bool $flush       Whether to flush or clean the buffers
-     */
-    public static function closeOutputBuffers($targetLevel, $flush)
-    {
-        $status = ob_get_status(true);
-        $level = count($status);
-        $flags = defined('PHP_OUTPUT_HANDLER_REMOVABLE') ? PHP_OUTPUT_HANDLER_REMOVABLE | ($flush ? PHP_OUTPUT_HANDLER_FLUSHABLE : PHP_OUTPUT_HANDLER_CLEANABLE) : -1;
-
-        while ($level-- > $targetLevel && ($s = $status[$level]) && (!isset($s['del']) ? !isset($s['flags']) || $flags === ($s['flags'] & $flags) : $s['del'])) {
-            if ($flush) {
-                ob_end_flush();
-            } else {
-                ob_end_clean();
-            }
-        }
-    }
-
-    /**
-     * Checks if we need to remove Cache-Control for SSL encrypted downloads when using IE < 9.
-     *
-     * @link http://support.microsoft.com/kb/323308
-     */
-    protected function ensureIEOverSSLCompatibility(Request $request)
-    {
-        if (false !== stripos($this->headers->get('Content-Disposition'), 'attachment') && preg_match('/MSIE (.*?);/i', $request->server->get('HTTP_USER_AGENT'), $match) == 1 && true === $request->isSecure()) {
-            if ((int) preg_replace('/(MSIE )(.*?);/', '$2', $match[0]) < 9) {
-                $this->headers->remove('Cache-Control');
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/ResponseHeaderBag.php b/vendor/symfony/http-foundation/ResponseHeaderBag.php
deleted file mode 100644
index 328bf49..0000000
--- a/vendor/symfony/http-foundation/ResponseHeaderBag.php
+++ /dev/null
@@ -1,304 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * ResponseHeaderBag is a container for Response HTTP headers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ResponseHeaderBag extends HeaderBag
-{
-    const COOKIES_FLAT = 'flat';
-    const COOKIES_ARRAY = 'array';
-
-    const DISPOSITION_ATTACHMENT = 'attachment';
-    const DISPOSITION_INLINE = 'inline';
-
-    /**
-     * @var array
-     */
-    protected $computedCacheControl = array();
-
-    /**
-     * @var array
-     */
-    protected $cookies = array();
-
-    /**
-     * @var array
-     */
-    protected $headerNames = array();
-
-    /**
-     * Constructor.
-     *
-     * @param array $headers An array of HTTP headers
-     */
-    public function __construct(array $headers = array())
-    {
-        parent::__construct($headers);
-
-        if (!isset($this->headers['cache-control'])) {
-            $this->set('Cache-Control', '');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        $cookies = '';
-        foreach ($this->getCookies() as $cookie) {
-            $cookies .= 'Set-Cookie: '.$cookie."\r\n";
-        }
-
-        ksort($this->headerNames);
-
-        return parent::__toString().$cookies;
-    }
-
-    /**
-     * Returns the headers, with original capitalizations.
-     *
-     * @return array An array of headers
-     */
-    public function allPreserveCase()
-    {
-        return array_combine($this->headerNames, $this->headers);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function replace(array $headers = array())
-    {
-        $this->headerNames = array();
-
-        parent::replace($headers);
-
-        if (!isset($this->headers['cache-control'])) {
-            $this->set('Cache-Control', '');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($key, $values, $replace = true)
-    {
-        parent::set($key, $values, $replace);
-
-        $uniqueKey = strtr(strtolower($key), '_', '-');
-        $this->headerNames[$uniqueKey] = $key;
-
-        // ensure the cache-control header has sensible defaults
-        if (in_array($uniqueKey, array('cache-control', 'etag', 'last-modified', 'expires'))) {
-            $computed = $this->computeCacheControlValue();
-            $this->headers['cache-control'] = array($computed);
-            $this->headerNames['cache-control'] = 'Cache-Control';
-            $this->computedCacheControl = $this->parseCacheControl($computed);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($key)
-    {
-        parent::remove($key);
-
-        $uniqueKey = strtr(strtolower($key), '_', '-');
-        unset($this->headerNames[$uniqueKey]);
-
-        if ('cache-control' === $uniqueKey) {
-            $this->computedCacheControl = array();
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasCacheControlDirective($key)
-    {
-        return array_key_exists($key, $this->computedCacheControl);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCacheControlDirective($key)
-    {
-        return array_key_exists($key, $this->computedCacheControl) ? $this->computedCacheControl[$key] : null;
-    }
-
-    /**
-     * Sets a cookie.
-     *
-     * @param Cookie $cookie
-     */
-    public function setCookie(Cookie $cookie)
-    {
-        $this->cookies[$cookie->getDomain()][$cookie->getPath()][$cookie->getName()] = $cookie;
-    }
-
-    /**
-     * Removes a cookie from the array, but does not unset it in the browser.
-     *
-     * @param string $name
-     * @param string $path
-     * @param string $domain
-     */
-    public function removeCookie($name, $path = '/', $domain = null)
-    {
-        if (null === $path) {
-            $path = '/';
-        }
-
-        unset($this->cookies[$domain][$path][$name]);
-
-        if (empty($this->cookies[$domain][$path])) {
-            unset($this->cookies[$domain][$path]);
-
-            if (empty($this->cookies[$domain])) {
-                unset($this->cookies[$domain]);
-            }
-        }
-    }
-
-    /**
-     * Returns an array with all cookies.
-     *
-     * @param string $format
-     *
-     * @throws \InvalidArgumentException When the $format is invalid
-     *
-     * @return array
-     */
-    public function getCookies($format = self::COOKIES_FLAT)
-    {
-        if (!in_array($format, array(self::COOKIES_FLAT, self::COOKIES_ARRAY))) {
-            throw new \InvalidArgumentException(sprintf('Format "%s" invalid (%s).', $format, implode(', ', array(self::COOKIES_FLAT, self::COOKIES_ARRAY))));
-        }
-
-        if (self::COOKIES_ARRAY === $format) {
-            return $this->cookies;
-        }
-
-        $flattenedCookies = array();
-        foreach ($this->cookies as $path) {
-            foreach ($path as $cookies) {
-                foreach ($cookies as $cookie) {
-                    $flattenedCookies[] = $cookie;
-                }
-            }
-        }
-
-        return $flattenedCookies;
-    }
-
-    /**
-     * Clears a cookie in the browser.
-     *
-     * @param string $name
-     * @param string $path
-     * @param string $domain
-     * @param bool   $secure
-     * @param bool   $httpOnly
-     */
-    public function clearCookie($name, $path = '/', $domain = null, $secure = false, $httpOnly = true)
-    {
-        $this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly));
-    }
-
-    /**
-     * Generates a HTTP Content-Disposition field-value.
-     *
-     * @param string $disposition      One of "inline" or "attachment"
-     * @param string $filename         A unicode string
-     * @param string $filenameFallback A string containing only ASCII characters that
-     *                                 is semantically equivalent to $filename. If the filename is already ASCII,
-     *                                 it can be omitted, or just copied from $filename
-     *
-     * @return string A string suitable for use as a Content-Disposition field-value.
-     *
-     * @throws \InvalidArgumentException
-     *
-     * @see RFC 6266
-     */
-    public function makeDisposition($disposition, $filename, $filenameFallback = '')
-    {
-        if (!in_array($disposition, array(self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE))) {
-            throw new \InvalidArgumentException(sprintf('The disposition must be either "%s" or "%s".', self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE));
-        }
-
-        if ('' == $filenameFallback) {
-            $filenameFallback = $filename;
-        }
-
-        // filenameFallback is not ASCII.
-        if (!preg_match('/^[\x20-\x7e]*$/', $filenameFallback)) {
-            throw new \InvalidArgumentException('The filename fallback must only contain ASCII characters.');
-        }
-
-        // percent characters aren't safe in fallback.
-        if (false !== strpos($filenameFallback, '%')) {
-            throw new \InvalidArgumentException('The filename fallback cannot contain the "%" character.');
-        }
-
-        // path separators aren't allowed in either.
-        if (false !== strpos($filename, '/') || false !== strpos($filename, '\\') || false !== strpos($filenameFallback, '/') || false !== strpos($filenameFallback, '\\')) {
-            throw new \InvalidArgumentException('The filename and the fallback cannot contain the "/" and "\\" characters.');
-        }
-
-        $output = sprintf('%s; filename="%s"', $disposition, str_replace('"', '\\"', $filenameFallback));
-
-        if ($filename !== $filenameFallback) {
-            $output .= sprintf("; filename*=utf-8''%s", rawurlencode($filename));
-        }
-
-        return $output;
-    }
-
-    /**
-     * Returns the calculated value of the cache-control header.
-     *
-     * This considers several other headers and calculates or modifies the
-     * cache-control header to a sensible, conservative value.
-     *
-     * @return string
-     */
-    protected function computeCacheControlValue()
-    {
-        if (!$this->cacheControl && !$this->has('ETag') && !$this->has('Last-Modified') && !$this->has('Expires')) {
-            return 'no-cache';
-        }
-
-        if (!$this->cacheControl) {
-            // conservative by default
-            return 'private, must-revalidate';
-        }
-
-        $header = $this->getCacheControlHeader();
-        if (isset($this->cacheControl['public']) || isset($this->cacheControl['private'])) {
-            return $header;
-        }
-
-        // public if s-maxage is defined, private otherwise
-        if (!isset($this->cacheControl['s-maxage'])) {
-            return $header.', private';
-        }
-
-        return $header;
-    }
-}
diff --git a/vendor/symfony/http-foundation/ServerBag.php b/vendor/symfony/http-foundation/ServerBag.php
deleted file mode 100644
index fa1cb2f..0000000
--- a/vendor/symfony/http-foundation/ServerBag.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * ServerBag is a container for HTTP headers from the $_SERVER variable.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- * @author Robert Kiss <kepten@gmail.com>
- */
-class ServerBag extends ParameterBag
-{
-    /**
-     * Gets the HTTP headers.
-     *
-     * @return array
-     */
-    public function getHeaders()
-    {
-        $headers = array();
-        $contentHeaders = array('CONTENT_LENGTH' => true, 'CONTENT_MD5' => true, 'CONTENT_TYPE' => true);
-        foreach ($this->parameters as $key => $value) {
-            if (0 === strpos($key, 'HTTP_')) {
-                $headers[substr($key, 5)] = $value;
-            }
-            // CONTENT_* are not prefixed with HTTP_
-            elseif (isset($contentHeaders[$key])) {
-                $headers[$key] = $value;
-            }
-        }
-
-        if (isset($this->parameters['PHP_AUTH_USER'])) {
-            $headers['PHP_AUTH_USER'] = $this->parameters['PHP_AUTH_USER'];
-            $headers['PHP_AUTH_PW'] = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] : '';
-        } else {
-            /*
-             * php-cgi under Apache does not pass HTTP Basic user/pass to PHP by default
-             * For this workaround to work, add these lines to your .htaccess file:
-             * RewriteCond %{HTTP:Authorization} ^(.+)$
-             * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
-             *
-             * A sample .htaccess file:
-             * RewriteEngine On
-             * RewriteCond %{HTTP:Authorization} ^(.+)$
-             * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
-             * RewriteCond %{REQUEST_FILENAME} !-f
-             * RewriteRule ^(.*)$ app.php [QSA,L]
-             */
-
-            $authorizationHeader = null;
-            if (isset($this->parameters['HTTP_AUTHORIZATION'])) {
-                $authorizationHeader = $this->parameters['HTTP_AUTHORIZATION'];
-            } elseif (isset($this->parameters['REDIRECT_HTTP_AUTHORIZATION'])) {
-                $authorizationHeader = $this->parameters['REDIRECT_HTTP_AUTHORIZATION'];
-            }
-
-            if (null !== $authorizationHeader) {
-                if (0 === stripos($authorizationHeader, 'basic ')) {
-                    // Decode AUTHORIZATION header into PHP_AUTH_USER and PHP_AUTH_PW when authorization header is basic
-                    $exploded = explode(':', base64_decode(substr($authorizationHeader, 6)), 2);
-                    if (count($exploded) == 2) {
-                        list($headers['PHP_AUTH_USER'], $headers['PHP_AUTH_PW']) = $exploded;
-                    }
-                } elseif (empty($this->parameters['PHP_AUTH_DIGEST']) && (0 === stripos($authorizationHeader, 'digest '))) {
-                    // In some circumstances PHP_AUTH_DIGEST needs to be set
-                    $headers['PHP_AUTH_DIGEST'] = $authorizationHeader;
-                    $this->parameters['PHP_AUTH_DIGEST'] = $authorizationHeader;
-                } elseif (0 === stripos($authorizationHeader, 'bearer ')) {
-                    /*
-                     * XXX: Since there is no PHP_AUTH_BEARER in PHP predefined variables,
-                     *      I'll just set $headers['AUTHORIZATION'] here.
-                     *      http://php.net/manual/en/reserved.variables.server.php
-                     */
-                    $headers['AUTHORIZATION'] = $authorizationHeader;
-                }
-            }
-        }
-
-        // PHP_AUTH_USER/PHP_AUTH_PW
-        if (isset($headers['PHP_AUTH_USER'])) {
-            $headers['AUTHORIZATION'] = 'Basic '.base64_encode($headers['PHP_AUTH_USER'].':'.$headers['PHP_AUTH_PW']);
-        } elseif (isset($headers['PHP_AUTH_DIGEST'])) {
-            $headers['AUTHORIZATION'] = $headers['PHP_AUTH_DIGEST'];
-        }
-
-        return $headers;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php b/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php
deleted file mode 100644
index af292e3..0000000
--- a/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?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\HttpFoundation\Session\Attribute;
-
-/**
- * This class relates to session attribute storage.
- */
-class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Countable
-{
-    private $name = 'attributes';
-
-    /**
-     * @var string
-     */
-    private $storageKey;
-
-    /**
-     * @var array
-     */
-    protected $attributes = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $storageKey The key used to store attributes in the session
-     */
-    public function __construct($storageKey = '_sf2_attributes')
-    {
-        $this->storageKey = $storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initialize(array &$attributes)
-    {
-        $this->attributes = &$attributes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStorageKey()
-    {
-        return $this->storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($name)
-    {
-        return array_key_exists($name, $this->attributes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($name, $default = null)
-    {
-        return array_key_exists($name, $this->attributes) ? $this->attributes[$name] : $default;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($name, $value)
-    {
-        $this->attributes[$name] = $value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function all()
-    {
-        return $this->attributes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function replace(array $attributes)
-    {
-        $this->attributes = array();
-        foreach ($attributes as $key => $value) {
-            $this->set($key, $value);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($name)
-    {
-        $retval = null;
-        if (array_key_exists($name, $this->attributes)) {
-            $retval = $this->attributes[$name];
-            unset($this->attributes[$name]);
-        }
-
-        return $retval;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        $return = $this->attributes;
-        $this->attributes = array();
-
-        return $return;
-    }
-
-    /**
-     * Returns an iterator for attributes.
-     *
-     * @return \ArrayIterator An \ArrayIterator instance
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->attributes);
-    }
-
-    /**
-     * Returns the number of attributes.
-     *
-     * @return int The number of attributes
-     */
-    public function count()
-    {
-        return count($this->attributes);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php b/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php
deleted file mode 100644
index 0d8d179..0000000
--- a/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?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\HttpFoundation\Session\Attribute;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-
-/**
- * Attributes store.
- *
- * @author Drak <drak@zikula.org>
- */
-interface AttributeBagInterface extends SessionBagInterface
-{
-    /**
-     * Checks if an attribute is defined.
-     *
-     * @param string $name The attribute name
-     *
-     * @return bool true if the attribute is defined, false otherwise
-     */
-    public function has($name);
-
-    /**
-     * Returns an attribute.
-     *
-     * @param string $name    The attribute name
-     * @param mixed  $default The default value if not found
-     *
-     * @return mixed
-     */
-    public function get($name, $default = null);
-
-    /**
-     * Sets an attribute.
-     *
-     * @param string $name
-     * @param mixed  $value
-     */
-    public function set($name, $value);
-
-    /**
-     * Returns attributes.
-     *
-     * @return array Attributes
-     */
-    public function all();
-
-    /**
-     * Sets attributes.
-     *
-     * @param array $attributes Attributes
-     */
-    public function replace(array $attributes);
-
-    /**
-     * Removes an attribute.
-     *
-     * @param string $name
-     *
-     * @return mixed The removed value or null when it does not exist
-     */
-    public function remove($name);
-}
diff --git a/vendor/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php b/vendor/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php
deleted file mode 100644
index 68cecf6..0000000
--- a/vendor/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?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\HttpFoundation\Session\Attribute;
-
-/**
- * This class provides structured storage of session attributes using
- * a name spacing character in the key.
- *
- * @author Drak <drak@zikula.org>
- */
-class NamespacedAttributeBag extends AttributeBag
-{
-    /**
-     * Namespace character.
-     *
-     * @var string
-     */
-    private $namespaceCharacter;
-
-    /**
-     * Constructor.
-     *
-     * @param string $storageKey         Session storage key.
-     * @param string $namespaceCharacter Namespace character to use in keys.
-     */
-    public function __construct($storageKey = '_sf2_attributes', $namespaceCharacter = '/')
-    {
-        $this->namespaceCharacter = $namespaceCharacter;
-        parent::__construct($storageKey);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($name)
-    {
-        // reference mismatch: if fixed, re-introduced in array_key_exists; keep as it is
-        $attributes = $this->resolveAttributePath($name);
-        $name = $this->resolveKey($name);
-
-        if (null === $attributes) {
-            return false;
-        }
-
-        return array_key_exists($name, $attributes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($name, $default = null)
-    {
-        // reference mismatch: if fixed, re-introduced in array_key_exists; keep as it is
-        $attributes = $this->resolveAttributePath($name);
-        $name = $this->resolveKey($name);
-
-        if (null === $attributes) {
-            return $default;
-        }
-
-        return array_key_exists($name, $attributes) ? $attributes[$name] : $default;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($name, $value)
-    {
-        $attributes = &$this->resolveAttributePath($name, true);
-        $name = $this->resolveKey($name);
-        $attributes[$name] = $value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($name)
-    {
-        $retval = null;
-        $attributes = &$this->resolveAttributePath($name);
-        $name = $this->resolveKey($name);
-        if (null !== $attributes && array_key_exists($name, $attributes)) {
-            $retval = $attributes[$name];
-            unset($attributes[$name]);
-        }
-
-        return $retval;
-    }
-
-    /**
-     * Resolves a path in attributes property and returns it as a reference.
-     *
-     * This method allows structured namespacing of session attributes.
-     *
-     * @param string $name         Key name
-     * @param bool   $writeContext Write context, default false
-     *
-     * @return array
-     */
-    protected function &resolveAttributePath($name, $writeContext = false)
-    {
-        $array = &$this->attributes;
-        $name = (strpos($name, $this->namespaceCharacter) === 0) ? substr($name, 1) : $name;
-
-        // Check if there is anything to do, else return
-        if (!$name) {
-            return $array;
-        }
-
-        $parts = explode($this->namespaceCharacter, $name);
-        if (count($parts) < 2) {
-            if (!$writeContext) {
-                return $array;
-            }
-
-            $array[$parts[0]] = array();
-
-            return $array;
-        }
-
-        unset($parts[count($parts) - 1]);
-
-        foreach ($parts as $part) {
-            if (null !== $array && !array_key_exists($part, $array)) {
-                $array[$part] = $writeContext ? array() : null;
-            }
-
-            $array = &$array[$part];
-        }
-
-        return $array;
-    }
-
-    /**
-     * Resolves the key from the name.
-     *
-     * This is the last part in a dot separated string.
-     *
-     * @param string $name
-     *
-     * @return string
-     */
-    protected function resolveKey($name)
-    {
-        if (false !== $pos = strrpos($name, $this->namespaceCharacter)) {
-            $name = substr($name, $pos + 1);
-        }
-
-        return $name;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php b/vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php
deleted file mode 100644
index b9de5ce..0000000
--- a/vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?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\HttpFoundation\Session\Flash;
-
-/**
- * AutoExpireFlashBag flash message container.
- *
- * @author Drak <drak@zikula.org>
- */
-class AutoExpireFlashBag implements FlashBagInterface
-{
-    private $name = 'flashes';
-
-    /**
-     * Flash messages.
-     *
-     * @var array
-     */
-    private $flashes = array('display' => array(), 'new' => array());
-
-    /**
-     * The storage key for flashes in the session.
-     *
-     * @var string
-     */
-    private $storageKey;
-
-    /**
-     * Constructor.
-     *
-     * @param string $storageKey The key used to store flashes in the session.
-     */
-    public function __construct($storageKey = '_sf2_flashes')
-    {
-        $this->storageKey = $storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initialize(array &$flashes)
-    {
-        $this->flashes = &$flashes;
-
-        // The logic: messages from the last request will be stored in new, so we move them to previous
-        // This request we will show what is in 'display'.  What is placed into 'new' this time round will
-        // be moved to display next time round.
-        $this->flashes['display'] = array_key_exists('new', $this->flashes) ? $this->flashes['new'] : array();
-        $this->flashes['new'] = array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add($type, $message)
-    {
-        $this->flashes['new'][$type][] = $message;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function peek($type, array $default = array())
-    {
-        return $this->has($type) ? $this->flashes['display'][$type] : $default;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function peekAll()
-    {
-        return array_key_exists('display', $this->flashes) ? (array) $this->flashes['display'] : array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($type, array $default = array())
-    {
-        $return = $default;
-
-        if (!$this->has($type)) {
-            return $return;
-        }
-
-        if (isset($this->flashes['display'][$type])) {
-            $return = $this->flashes['display'][$type];
-            unset($this->flashes['display'][$type]);
-        }
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function all()
-    {
-        $return = $this->flashes['display'];
-        $this->flashes = array('new' => array(), 'display' => array());
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setAll(array $messages)
-    {
-        $this->flashes['new'] = $messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($type, $messages)
-    {
-        $this->flashes['new'][$type] = (array) $messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($type)
-    {
-        return array_key_exists($type, $this->flashes['display']) && $this->flashes['display'][$type];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function keys()
-    {
-        return array_keys($this->flashes['display']);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStorageKey()
-    {
-        return $this->storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        return $this->all();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Flash/FlashBag.php b/vendor/symfony/http-foundation/Session/Flash/FlashBag.php
deleted file mode 100644
index 0da7715..0000000
--- a/vendor/symfony/http-foundation/Session/Flash/FlashBag.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?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\HttpFoundation\Session\Flash;
-
-/**
- * FlashBag flash message container.
- *
- * \IteratorAggregate implementation is deprecated and will be removed in 3.0.
- *
- * @author Drak <drak@zikula.org>
- */
-class FlashBag implements FlashBagInterface, \IteratorAggregate
-{
-    private $name = 'flashes';
-
-    /**
-     * Flash messages.
-     *
-     * @var array
-     */
-    private $flashes = array();
-
-    /**
-     * The storage key for flashes in the session.
-     *
-     * @var string
-     */
-    private $storageKey;
-
-    /**
-     * Constructor.
-     *
-     * @param string $storageKey The key used to store flashes in the session.
-     */
-    public function __construct($storageKey = '_sf2_flashes')
-    {
-        $this->storageKey = $storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initialize(array &$flashes)
-    {
-        $this->flashes = &$flashes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add($type, $message)
-    {
-        $this->flashes[$type][] = $message;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function peek($type, array $default = array())
-    {
-        return $this->has($type) ? $this->flashes[$type] : $default;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function peekAll()
-    {
-        return $this->flashes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($type, array $default = array())
-    {
-        if (!$this->has($type)) {
-            return $default;
-        }
-
-        $return = $this->flashes[$type];
-
-        unset($this->flashes[$type]);
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function all()
-    {
-        $return = $this->peekAll();
-        $this->flashes = array();
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($type, $messages)
-    {
-        $this->flashes[$type] = (array) $messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setAll(array $messages)
-    {
-        $this->flashes = $messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($type)
-    {
-        return array_key_exists($type, $this->flashes) && $this->flashes[$type];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function keys()
-    {
-        return array_keys($this->flashes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStorageKey()
-    {
-        return $this->storageKey;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        return $this->all();
-    }
-
-    /**
-     * Returns an iterator for flashes.
-     *
-     * @deprecated since version 2.4, to be removed in 3.0.
-     *
-     * @return \ArrayIterator An \ArrayIterator instance
-     */
-    public function getIterator()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        return new \ArrayIterator($this->all());
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php b/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php
deleted file mode 100644
index be79d9d..0000000
--- a/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?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\HttpFoundation\Session\Flash;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-
-/**
- * FlashBagInterface.
- *
- * @author Drak <drak@zikula.org>
- */
-interface FlashBagInterface extends SessionBagInterface
-{
-    /**
-     * Adds a flash message for type.
-     *
-     * @param string $type
-     * @param string $message
-     */
-    public function add($type, $message);
-
-    /**
-     * Registers a message for a given type.
-     *
-     * @param string       $type
-     * @param string|array $message
-     */
-    public function set($type, $message);
-
-    /**
-     * Gets flash messages for a given type.
-     *
-     * @param string $type    Message category type.
-     * @param array  $default Default value if $type does not exist.
-     *
-     * @return array
-     */
-    public function peek($type, array $default = array());
-
-    /**
-     * Gets all flash messages.
-     *
-     * @return array
-     */
-    public function peekAll();
-
-    /**
-     * Gets and clears flash from the stack.
-     *
-     * @param string $type
-     * @param array  $default Default value if $type does not exist.
-     *
-     * @return array
-     */
-    public function get($type, array $default = array());
-
-    /**
-     * Gets and clears flashes from the stack.
-     *
-     * @return array
-     */
-    public function all();
-
-    /**
-     * Sets all flash messages.
-     */
-    public function setAll(array $messages);
-
-    /**
-     * Has flash messages for a given type?
-     *
-     * @param string $type
-     *
-     * @return bool
-     */
-    public function has($type);
-
-    /**
-     * Returns a list of all defined types.
-     *
-     * @return array
-     */
-    public function keys();
-}
diff --git a/vendor/symfony/http-foundation/Session/Session.php b/vendor/symfony/http-foundation/Session/Session.php
deleted file mode 100644
index b743fe1..0000000
--- a/vendor/symfony/http-foundation/Session/Session.php
+++ /dev/null
@@ -1,249 +0,0 @@
-<?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\HttpFoundation\Session;
-
-use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-/**
- * Session.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Drak <drak@zikula.org>
- */
-class Session implements SessionInterface, \IteratorAggregate, \Countable
-{
-    /**
-     * Storage driver.
-     *
-     * @var SessionStorageInterface
-     */
-    protected $storage;
-
-    /**
-     * @var string
-     */
-    private $flashName;
-
-    /**
-     * @var string
-     */
-    private $attributeName;
-
-    /**
-     * Constructor.
-     *
-     * @param SessionStorageInterface $storage    A SessionStorageInterface instance.
-     * @param AttributeBagInterface   $attributes An AttributeBagInterface instance, (defaults null for default AttributeBag)
-     * @param FlashBagInterface       $flashes    A FlashBagInterface instance (defaults null for default FlashBag)
-     */
-    public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null)
-    {
-        $this->storage = $storage ?: new NativeSessionStorage();
-
-        $attributes = $attributes ?: new AttributeBag();
-        $this->attributeName = $attributes->getName();
-        $this->registerBag($attributes);
-
-        $flashes = $flashes ?: new FlashBag();
-        $this->flashName = $flashes->getName();
-        $this->registerBag($flashes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        return $this->storage->start();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($name)
-    {
-        return $this->storage->getBag($this->attributeName)->has($name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($name, $default = null)
-    {
-        return $this->storage->getBag($this->attributeName)->get($name, $default);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($name, $value)
-    {
-        $this->storage->getBag($this->attributeName)->set($name, $value);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function all()
-    {
-        return $this->storage->getBag($this->attributeName)->all();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function replace(array $attributes)
-    {
-        $this->storage->getBag($this->attributeName)->replace($attributes);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($name)
-    {
-        return $this->storage->getBag($this->attributeName)->remove($name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        $this->storage->getBag($this->attributeName)->clear();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isStarted()
-    {
-        return $this->storage->isStarted();
-    }
-
-    /**
-     * Returns an iterator for attributes.
-     *
-     * @return \ArrayIterator An \ArrayIterator instance
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->storage->getBag($this->attributeName)->all());
-    }
-
-    /**
-     * Returns the number of attributes.
-     *
-     * @return int The number of attributes
-     */
-    public function count()
-    {
-        return count($this->storage->getBag($this->attributeName)->all());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function invalidate($lifetime = null)
-    {
-        $this->storage->clear();
-
-        return $this->migrate(true, $lifetime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function migrate($destroy = false, $lifetime = null)
-    {
-        return $this->storage->regenerate($destroy, $lifetime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function save()
-    {
-        $this->storage->save();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getId()
-    {
-        return $this->storage->getId();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setId($id)
-    {
-        $this->storage->setId($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->storage->getName();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setName($name)
-    {
-        $this->storage->setName($name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataBag()
-    {
-        return $this->storage->getMetadataBag();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function registerBag(SessionBagInterface $bag)
-    {
-        $this->storage->registerBag($bag);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getBag($name)
-    {
-        return $this->storage->getBag($name);
-    }
-
-    /**
-     * Gets the flashbag interface.
-     *
-     * @return FlashBagInterface
-     */
-    public function getFlashBag()
-    {
-        return $this->getBag($this->flashName);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/SessionBagInterface.php b/vendor/symfony/http-foundation/Session/SessionBagInterface.php
deleted file mode 100644
index 182a47d..0000000
--- a/vendor/symfony/http-foundation/Session/SessionBagInterface.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?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\HttpFoundation\Session;
-
-/**
- * Session Bag store.
- *
- * @author Drak <drak@zikula.org>
- */
-interface SessionBagInterface
-{
-    /**
-     * Gets this bag's name.
-     *
-     * @return string
-     */
-    public function getName();
-
-    /**
-     * Initializes the Bag.
-     *
-     * @param array $array
-     */
-    public function initialize(array &$array);
-
-    /**
-     * Gets the storage key for this bag.
-     *
-     * @return string
-     */
-    public function getStorageKey();
-
-    /**
-     * Clears out data from bag.
-     *
-     * @return mixed Whatever data was contained.
-     */
-    public function clear();
-}
diff --git a/vendor/symfony/http-foundation/Session/SessionInterface.php b/vendor/symfony/http-foundation/Session/SessionInterface.php
deleted file mode 100644
index e2b6584..0000000
--- a/vendor/symfony/http-foundation/Session/SessionInterface.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?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\HttpFoundation\Session;
-
-use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag;
-
-/**
- * Interface for the session.
- *
- * @author Drak <drak@zikula.org>
- */
-interface SessionInterface
-{
-    /**
-     * Starts the session storage.
-     *
-     * @return bool True if session started.
-     *
-     * @throws \RuntimeException If session fails to start.
-     */
-    public function start();
-
-    /**
-     * Returns the session ID.
-     *
-     * @return string The session ID.
-     */
-    public function getId();
-
-    /**
-     * Sets the session ID.
-     *
-     * @param string $id
-     */
-    public function setId($id);
-
-    /**
-     * Returns the session name.
-     *
-     * @return mixed The session name.
-     */
-    public function getName();
-
-    /**
-     * Sets the session name.
-     *
-     * @param string $name
-     */
-    public function setName($name);
-
-    /**
-     * Invalidates the current session.
-     *
-     * Clears all session attributes and flashes and regenerates the
-     * session and deletes the old session from persistence.
-     *
-     * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value
-     *                      will leave the system settings unchanged, 0 sets the cookie
-     *                      to expire with browser session. Time is in seconds, and is
-     *                      not a Unix timestamp.
-     *
-     * @return bool True if session invalidated, false if error.
-     */
-    public function invalidate($lifetime = null);
-
-    /**
-     * Migrates the current session to a new session id while maintaining all
-     * session attributes.
-     *
-     * @param bool $destroy  Whether to delete the old session or leave it to garbage collection.
-     * @param int  $lifetime Sets the cookie lifetime for the session cookie. A null value
-     *                       will leave the system settings unchanged, 0 sets the cookie
-     *                       to expire with browser session. Time is in seconds, and is
-     *                       not a Unix timestamp.
-     *
-     * @return bool True if session migrated, false if error.
-     */
-    public function migrate($destroy = false, $lifetime = null);
-
-    /**
-     * Force the session to be saved and closed.
-     *
-     * This method is generally not required for real sessions as
-     * the session will be automatically saved at the end of
-     * code execution.
-     */
-    public function save();
-
-    /**
-     * Checks if an attribute is defined.
-     *
-     * @param string $name The attribute name
-     *
-     * @return bool true if the attribute is defined, false otherwise
-     */
-    public function has($name);
-
-    /**
-     * Returns an attribute.
-     *
-     * @param string $name    The attribute name
-     * @param mixed  $default The default value if not found.
-     *
-     * @return mixed
-     */
-    public function get($name, $default = null);
-
-    /**
-     * Sets an attribute.
-     *
-     * @param string $name
-     * @param mixed  $value
-     */
-    public function set($name, $value);
-
-    /**
-     * Returns attributes.
-     *
-     * @return array Attributes
-     */
-    public function all();
-
-    /**
-     * Sets attributes.
-     *
-     * @param array $attributes Attributes
-     */
-    public function replace(array $attributes);
-
-    /**
-     * Removes an attribute.
-     *
-     * @param string $name
-     *
-     * @return mixed The removed value or null when it does not exist
-     */
-    public function remove($name);
-
-    /**
-     * Clears all attributes.
-     */
-    public function clear();
-
-    /**
-     * Checks if the session was started.
-     *
-     * @return bool
-     */
-    public function isStarted();
-
-    /**
-     * Registers a SessionBagInterface with the session.
-     *
-     * @param SessionBagInterface $bag
-     */
-    public function registerBag(SessionBagInterface $bag);
-
-    /**
-     * Gets a bag instance by name.
-     *
-     * @param string $name
-     *
-     * @return SessionBagInterface
-     */
-    public function getBag($name);
-
-    /**
-     * Gets session meta.
-     *
-     * @return MetadataBag
-     */
-    public function getMetadataBag();
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/LegacyPdoSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/LegacyPdoSessionHandler.php
deleted file mode 100644
index 111541d..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/LegacyPdoSessionHandler.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Handler;
-
-@trigger_error('The '.__NAMESPACE__.'\LegacyPdoSessionHandler class is deprecated since version 2.6 and will be removed in 3.0. Use the Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler class instead.', E_USER_DEPRECATED);
-
-/**
- * Session handler using a PDO connection to read and write data.
- *
- * Session data is a binary string that can contain non-printable characters like the null byte.
- * For this reason this handler base64 encodes the data to be able to save it in a character column.
- *
- * This version of the PdoSessionHandler does NOT implement locking. So concurrent requests to the
- * same session can result in data loss due to race conditions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Michael Williams <michael.williams@funsational.com>
- * @author Tobias Schultze <http://tobion.de>
- *
- * @deprecated since version 2.6, to be removed in 3.0. Use
- *             {@link PdoSessionHandler} instead.
- */
-class LegacyPdoSessionHandler implements \SessionHandlerInterface
-{
-    /**
-     * @var \PDO PDO instance
-     */
-    private $pdo;
-
-    /**
-     * @var string Table name
-     */
-    private $table;
-
-    /**
-     * @var string Column for session id
-     */
-    private $idCol;
-
-    /**
-     * @var string Column for session data
-     */
-    private $dataCol;
-
-    /**
-     * @var string Column for timestamp
-     */
-    private $timeCol;
-
-    /**
-     * Constructor.
-     *
-     * List of available options:
-     *  * db_table: The name of the table [required]
-     *  * db_id_col: The column where to store the session id [default: sess_id]
-     *  * db_data_col: The column where to store the session data [default: sess_data]
-     *  * db_time_col: The column where to store the timestamp [default: sess_time]
-     *
-     * @param \PDO  $pdo       A \PDO instance
-     * @param array $dbOptions An associative array of DB options
-     *
-     * @throws \InvalidArgumentException When "db_table" option is not provided
-     */
-    public function __construct(\PDO $pdo, array $dbOptions = array())
-    {
-        if (!array_key_exists('db_table', $dbOptions)) {
-            throw new \InvalidArgumentException('You must provide the "db_table" option for a PdoSessionStorage.');
-        }
-        if (\PDO::ERRMODE_EXCEPTION !== $pdo->getAttribute(\PDO::ATTR_ERRMODE)) {
-            throw new \InvalidArgumentException(sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION))', __CLASS__));
-        }
-
-        $this->pdo = $pdo;
-        $dbOptions = array_merge(array(
-            'db_id_col' => 'sess_id',
-            'db_data_col' => 'sess_data',
-            'db_time_col' => 'sess_time',
-        ), $dbOptions);
-
-        $this->table = $dbOptions['db_table'];
-        $this->idCol = $dbOptions['db_id_col'];
-        $this->dataCol = $dbOptions['db_data_col'];
-        $this->timeCol = $dbOptions['db_time_col'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function open($savePath, $sessionName)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function destroy($sessionId)
-    {
-        // delete the record associated with this id
-        $sql = "DELETE FROM $this->table WHERE $this->idCol = :id";
-
-        try {
-            $stmt = $this->pdo->prepare($sql);
-            $stmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-            $stmt->execute();
-        } catch (\PDOException $e) {
-            throw new \RuntimeException(sprintf('PDOException was thrown when trying to delete a session: %s', $e->getMessage()), 0, $e);
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function gc($maxlifetime)
-    {
-        // delete the session records that have expired
-        $sql = "DELETE FROM $this->table WHERE $this->timeCol < :time";
-
-        try {
-            $stmt = $this->pdo->prepare($sql);
-            $stmt->bindValue(':time', time() - $maxlifetime, \PDO::PARAM_INT);
-            $stmt->execute();
-        } catch (\PDOException $e) {
-            throw new \RuntimeException(sprintf('PDOException was thrown when trying to delete expired sessions: %s', $e->getMessage()), 0, $e);
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($sessionId)
-    {
-        $sql = "SELECT $this->dataCol FROM $this->table WHERE $this->idCol = :id";
-
-        try {
-            $stmt = $this->pdo->prepare($sql);
-            $stmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-            $stmt->execute();
-
-            // We use fetchAll instead of fetchColumn to make sure the DB cursor gets closed
-            $sessionRows = $stmt->fetchAll(\PDO::FETCH_NUM);
-
-            if ($sessionRows) {
-                return base64_decode($sessionRows[0][0]);
-            }
-
-            return '';
-        } catch (\PDOException $e) {
-            throw new \RuntimeException(sprintf('PDOException was thrown when trying to read the session data: %s', $e->getMessage()), 0, $e);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($sessionId, $data)
-    {
-        $encoded = base64_encode($data);
-
-        try {
-            // We use a single MERGE SQL query when supported by the database.
-            $mergeSql = $this->getMergeSql();
-
-            if (null !== $mergeSql) {
-                $mergeStmt = $this->pdo->prepare($mergeSql);
-                $mergeStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-                $mergeStmt->bindParam(':data', $encoded, \PDO::PARAM_STR);
-                $mergeStmt->bindValue(':time', time(), \PDO::PARAM_INT);
-                $mergeStmt->execute();
-
-                return true;
-            }
-
-            $updateStmt = $this->pdo->prepare(
-                "UPDATE $this->table SET $this->dataCol = :data, $this->timeCol = :time WHERE $this->idCol = :id"
-            );
-            $updateStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-            $updateStmt->bindParam(':data', $encoded, \PDO::PARAM_STR);
-            $updateStmt->bindValue(':time', time(), \PDO::PARAM_INT);
-            $updateStmt->execute();
-
-            // When MERGE is not supported, like in Postgres, we have to use this approach that can result in
-            // duplicate key errors when the same session is written simultaneously. We can just catch such an
-            // error and re-execute the update. This is similar to a serializable transaction with retry logic
-            // on serialization failures but without the overhead and without possible false positives due to
-            // longer gap locking.
-            if (!$updateStmt->rowCount()) {
-                try {
-                    $insertStmt = $this->pdo->prepare(
-                        "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->timeCol) VALUES (:id, :data, :time)"
-                    );
-                    $insertStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-                    $insertStmt->bindParam(':data', $encoded, \PDO::PARAM_STR);
-                    $insertStmt->bindValue(':time', time(), \PDO::PARAM_INT);
-                    $insertStmt->execute();
-                } catch (\PDOException $e) {
-                    // Handle integrity violation SQLSTATE 23000 (or a subclass like 23505 in Postgres) for duplicate keys
-                    if (0 === strpos($e->getCode(), '23')) {
-                        $updateStmt->execute();
-                    } else {
-                        throw $e;
-                    }
-                }
-            }
-        } catch (\PDOException $e) {
-            throw new \RuntimeException(sprintf('PDOException was thrown when trying to write the session data: %s', $e->getMessage()), 0, $e);
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns a merge/upsert (i.e. insert or update) SQL query when supported by the database.
-     *
-     * @return string|null The SQL string or null when not supported
-     */
-    private function getMergeSql()
-    {
-        $driver = $this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME);
-
-        switch ($driver) {
-            case 'mysql':
-                return "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->timeCol) VALUES (:id, :data, :time) ".
-                "ON DUPLICATE KEY UPDATE $this->dataCol = VALUES($this->dataCol), $this->timeCol = VALUES($this->timeCol)";
-            case 'oci':
-                // DUAL is Oracle specific dummy table
-                return "MERGE INTO $this->table USING DUAL ON ($this->idCol = :id) ".
-                "WHEN NOT MATCHED THEN INSERT ($this->idCol, $this->dataCol, $this->timeCol) VALUES (:id, :data, :time) ".
-                "WHEN MATCHED THEN UPDATE SET $this->dataCol = :data, $this->timeCol = :time";
-            case 'sqlsrv' === $driver && version_compare($this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION), '10', '>='):
-                // MERGE is only available since SQL Server 2008 and must be terminated by semicolon
-                // It also requires HOLDLOCK according to http://weblogs.sqlteam.com/dang/archive/2009/01/31/UPSERT-Race-Condition-With-MERGE.aspx
-                return "MERGE INTO $this->table WITH (HOLDLOCK) USING (SELECT 1 AS dummy) AS src ON ($this->idCol = :id) ".
-                "WHEN NOT MATCHED THEN INSERT ($this->idCol, $this->dataCol, $this->timeCol) VALUES (:id, :data, :time) ".
-                "WHEN MATCHED THEN UPDATE SET $this->dataCol = :data, $this->timeCol = :time;";
-            case 'sqlite':
-                return "INSERT OR REPLACE INTO $this->table ($this->idCol, $this->dataCol, $this->timeCol) VALUES (:id, :data, :time)";
-        }
-    }
-
-    /**
-     * Return a PDO instance.
-     *
-     * @return \PDO
-     */
-    protected function getConnection()
-    {
-        return $this->pdo;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcacheSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MemcacheSessionHandler.php
deleted file mode 100644
index f6f99ed..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcacheSessionHandler.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Handler;
-
-/**
- * MemcacheSessionHandler.
- *
- * @author Drak <drak@zikula.org>
- */
-class MemcacheSessionHandler implements \SessionHandlerInterface
-{
-    /**
-     * @var \Memcache Memcache driver.
-     */
-    private $memcache;
-
-    /**
-     * @var int Time to live in seconds
-     */
-    private $ttl;
-
-    /**
-     * @var string Key prefix for shared environments.
-     */
-    private $prefix;
-
-    /**
-     * Constructor.
-     *
-     * List of available options:
-     *  * prefix: The prefix to use for the memcache keys in order to avoid collision
-     *  * expiretime: The time to live in seconds
-     *
-     * @param \Memcache $memcache A \Memcache instance
-     * @param array     $options  An associative array of Memcache options
-     *
-     * @throws \InvalidArgumentException When unsupported options are passed
-     */
-    public function __construct(\Memcache $memcache, array $options = array())
-    {
-        if ($diff = array_diff(array_keys($options), array('prefix', 'expiretime'))) {
-            throw new \InvalidArgumentException(sprintf(
-                'The following options are not supported "%s"', implode(', ', $diff)
-            ));
-        }
-
-        $this->memcache = $memcache;
-        $this->ttl = isset($options['expiretime']) ? (int) $options['expiretime'] : 86400;
-        $this->prefix = isset($options['prefix']) ? $options['prefix'] : 'sf2s';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function open($savePath, $sessionName)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        return $this->memcache->close();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($sessionId)
-    {
-        return $this->memcache->get($this->prefix.$sessionId) ?: '';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($sessionId, $data)
-    {
-        return $this->memcache->set($this->prefix.$sessionId, $data, 0, time() + $this->ttl);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function destroy($sessionId)
-    {
-        return $this->memcache->delete($this->prefix.$sessionId);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function gc($maxlifetime)
-    {
-        // not required here because memcache will auto expire the records anyhow.
-        return true;
-    }
-
-    /**
-     * Return a Memcache instance.
-     *
-     * @return \Memcache
-     */
-    protected function getMemcache()
-    {
-        return $this->memcache;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php
deleted file mode 100644
index d87bef8..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Handler;
-
-/**
- * MemcachedSessionHandler.
- *
- * Memcached based session storage handler based on the Memcached class
- * provided by the PHP memcached extension.
- *
- * @see http://php.net/memcached
- *
- * @author Drak <drak@zikula.org>
- */
-class MemcachedSessionHandler implements \SessionHandlerInterface
-{
-    /**
-     * @var \Memcached Memcached driver.
-     */
-    private $memcached;
-
-    /**
-     * @var int Time to live in seconds
-     */
-    private $ttl;
-
-    /**
-     * @var string Key prefix for shared environments.
-     */
-    private $prefix;
-
-    /**
-     * Constructor.
-     *
-     * List of available options:
-     *  * prefix: The prefix to use for the memcached keys in order to avoid collision
-     *  * expiretime: The time to live in seconds
-     *
-     * @param \Memcached $memcached A \Memcached instance
-     * @param array      $options   An associative array of Memcached options
-     *
-     * @throws \InvalidArgumentException When unsupported options are passed
-     */
-    public function __construct(\Memcached $memcached, array $options = array())
-    {
-        $this->memcached = $memcached;
-
-        if ($diff = array_diff(array_keys($options), array('prefix', 'expiretime'))) {
-            throw new \InvalidArgumentException(sprintf(
-                'The following options are not supported "%s"', implode(', ', $diff)
-            ));
-        }
-
-        $this->ttl = isset($options['expiretime']) ? (int) $options['expiretime'] : 86400;
-        $this->prefix = isset($options['prefix']) ? $options['prefix'] : 'sf2s';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function open($savePath, $sessionName)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($sessionId)
-    {
-        return $this->memcached->get($this->prefix.$sessionId) ?: '';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($sessionId, $data)
-    {
-        return $this->memcached->set($this->prefix.$sessionId, $data, time() + $this->ttl);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function destroy($sessionId)
-    {
-        return $this->memcached->delete($this->prefix.$sessionId);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function gc($maxlifetime)
-    {
-        // not required here because memcached will auto expire the records anyhow.
-        return true;
-    }
-
-    /**
-     * Return a Memcached instance.
-     *
-     * @return \Memcached
-     */
-    protected function getMemcached()
-    {
-        return $this->memcached;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php
deleted file mode 100644
index f1df25d..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Handler;
-
-/**
- * MongoDB session handler.
- *
- * @author Markus Bachmann <markus.bachmann@bachi.biz>
- */
-class MongoDbSessionHandler implements \SessionHandlerInterface
-{
-    /**
-     * @var \Mongo
-     */
-    private $mongo;
-
-    /**
-     * @var \MongoCollection
-     */
-    private $collection;
-
-    /**
-     * @var array
-     */
-    private $options;
-
-    /**
-     * Constructor.
-     *
-     * List of available options:
-     *  * database: The name of the database [required]
-     *  * collection: The name of the collection [required]
-     *  * id_field: The field name for storing the session id [default: _id]
-     *  * data_field: The field name for storing the session data [default: data]
-     *  * time_field: The field name for storing the timestamp [default: time]
-     *  * expiry_field: The field name for storing the expiry-timestamp [default: expires_at]
-     *
-     * It is strongly recommended to put an index on the `expiry_field` for
-     * garbage-collection. Alternatively it's possible to automatically expire
-     * the sessions in the database as described below:
-     *
-     * A TTL collections can be used on MongoDB 2.2+ to cleanup expired sessions
-     * automatically. Such an index can for example look like this:
-     *
-     *     db.<session-collection>.ensureIndex(
-     *         { "<expiry-field>": 1 },
-     *         { "expireAfterSeconds": 0 }
-     *     )
-     *
-     * More details on: http://docs.mongodb.org/manual/tutorial/expire-data/
-     *
-     * If you use such an index, you can drop `gc_probability` to 0 since
-     * no garbage-collection is required.
-     *
-     * @param \Mongo|\MongoClient $mongo   A MongoClient or Mongo instance
-     * @param array               $options An associative array of field options
-     *
-     * @throws \InvalidArgumentException When MongoClient or Mongo instance not provided
-     * @throws \InvalidArgumentException When "database" or "collection" not provided
-     */
-    public function __construct($mongo, array $options)
-    {
-        if (!($mongo instanceof \MongoClient || $mongo instanceof \Mongo)) {
-            throw new \InvalidArgumentException('MongoClient or Mongo instance required');
-        }
-
-        if (!isset($options['database']) || !isset($options['collection'])) {
-            throw new \InvalidArgumentException('You must provide the "database" and "collection" option for MongoDBSessionHandler');
-        }
-
-        $this->mongo = $mongo;
-
-        $this->options = array_merge(array(
-            'id_field' => '_id',
-            'data_field' => 'data',
-            'time_field' => 'time',
-            'expiry_field' => 'expires_at',
-        ), $options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function open($savePath, $sessionName)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function destroy($sessionId)
-    {
-        $this->getCollection()->remove(array(
-            $this->options['id_field'] => $sessionId,
-        ));
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function gc($maxlifetime)
-    {
-        $this->getCollection()->remove(array(
-            $this->options['expiry_field'] => array('$lt' => new \MongoDate()),
-        ));
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($sessionId, $data)
-    {
-        $expiry = new \MongoDate(time() + (int) ini_get('session.gc_maxlifetime'));
-
-        $fields = array(
-            $this->options['data_field'] => new \MongoBinData($data, \MongoBinData::BYTE_ARRAY),
-            $this->options['time_field'] => new \MongoDate(),
-            $this->options['expiry_field'] => $expiry,
-        );
-
-        $this->getCollection()->update(
-            array($this->options['id_field'] => $sessionId),
-            array('$set' => $fields),
-            array('upsert' => true, 'multiple' => false)
-        );
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($sessionId)
-    {
-        $dbData = $this->getCollection()->findOne(array(
-            $this->options['id_field'] => $sessionId,
-            $this->options['expiry_field'] => array('$gte' => new \MongoDate()),
-        ));
-
-        return null === $dbData ? '' : $dbData[$this->options['data_field']]->bin;
-    }
-
-    /**
-     * Return a "MongoCollection" instance.
-     *
-     * @return \MongoCollection
-     */
-    private function getCollection()
-    {
-        if (null === $this->collection) {
-            $this->collection = $this->mongo->selectCollection($this->options['database'], $this->options['collection']);
-        }
-
-        return $this->collection;
-    }
-
-    /**
-     * Return a Mongo instance.
-     *
-     * @return \Mongo
-     */
-    protected function getMongo()
-    {
-        return $this->mongo;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php
deleted file mode 100644
index f39235c..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Handler;
-
-/**
- * NativeFileSessionHandler.
- *
- * Native session handler using PHP's built in file storage.
- *
- * @author Drak <drak@zikula.org>
- */
-class NativeFileSessionHandler extends NativeSessionHandler
-{
-    /**
-     * Constructor.
-     *
-     * @param string $savePath Path of directory to save session files.
-     *                         Default null will leave setting as defined by PHP.
-     *                         '/path', 'N;/path', or 'N;octal-mode;/path
-     *
-     * @see http://php.net/session.configuration.php#ini.session.save-path for further details.
-     *
-     * @throws \InvalidArgumentException On invalid $savePath
-     */
-    public function __construct($savePath = null)
-    {
-        if (null === $savePath) {
-            $savePath = ini_get('session.save_path');
-        }
-
-        $baseDir = $savePath;
-
-        if ($count = substr_count($savePath, ';')) {
-            if ($count > 2) {
-                throw new \InvalidArgumentException(sprintf('Invalid argument $savePath \'%s\'', $savePath));
-            }
-
-            // characters after last ';' are the path
-            $baseDir = ltrim(strrchr($savePath, ';'), ';');
-        }
-
-        if ($baseDir && !is_dir($baseDir)) {
-            mkdir($baseDir, 0777, true);
-        }
-
-        ini_set('session.save_path', $savePath);
-        ini_set('session.save_handler', 'files');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NativeSessionHandler.php
deleted file mode 100644
index 95d5cdb..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeSessionHandler.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Handler;
-
-// Adds SessionHandler functionality if available.
-// @see http://php.net/sessionhandler
-if (PHP_VERSION_ID >= 50400) {
-    class NativeSessionHandler extends \SessionHandler
-    {
-    }
-} else {
-    class NativeSessionHandler
-    {
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php
deleted file mode 100644
index 1516d43..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Handler;
-
-/**
- * NullSessionHandler.
- *
- * Can be used in unit testing or in a situations where persisted sessions are not desired.
- *
- * @author Drak <drak@zikula.org>
- */
-class NullSessionHandler implements \SessionHandlerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function open($savePath, $sessionName)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($sessionId)
-    {
-        return '';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($sessionId, $data)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function destroy($sessionId)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function gc($maxlifetime)
-    {
-        return true;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php
deleted file mode 100644
index 48e81ee..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php
+++ /dev/null
@@ -1,695 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Handler;
-
-/**
- * Session handler using a PDO connection to read and write data.
- *
- * It works with MySQL, PostgreSQL, Oracle, SQL Server and SQLite and implements
- * different locking strategies to handle concurrent access to the same session.
- * Locking is necessary to prevent loss of data due to race conditions and to keep
- * the session data consistent between read() and write(). With locking, requests
- * for the same session will wait until the other one finished writing. For this
- * reason it's best practice to close a session as early as possible to improve
- * concurrency. PHPs internal files session handler also implements locking.
- *
- * Attention: Since SQLite does not support row level locks but locks the whole database,
- * it means only one session can be accessed at a time. Even different sessions would wait
- * for another to finish. So saving session in SQLite should only be considered for
- * development or prototypes.
- *
- * Session data is a binary string that can contain non-printable characters like the null byte.
- * For this reason it must be saved in a binary column in the database like BLOB in MySQL.
- * Saving it in a character column could corrupt the data. You can use createTable()
- * to initialize a correctly defined table.
- *
- * @see http://php.net/sessionhandlerinterface
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Michael Williams <michael.williams@funsational.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class PdoSessionHandler implements \SessionHandlerInterface
-{
-    /**
-     * No locking is done. This means sessions are prone to loss of data due to
-     * race conditions of concurrent requests to the same session. The last session
-     * write will win in this case. It might be useful when you implement your own
-     * logic to deal with this like an optimistic approach.
-     */
-    const LOCK_NONE = 0;
-
-    /**
-     * Creates an application-level lock on a session. The disadvantage is that the
-     * lock is not enforced by the database and thus other, unaware parts of the
-     * application could still concurrently modify the session. The advantage is it
-     * does not require a transaction.
-     * This mode is not available for SQLite and not yet implemented for oci and sqlsrv.
-     */
-    const LOCK_ADVISORY = 1;
-
-    /**
-     * Issues a real row lock. Since it uses a transaction between opening and
-     * closing a session, you have to be careful when you use same database connection
-     * that you also use for your application logic. This mode is the default because
-     * it's the only reliable solution across DBMSs.
-     */
-    const LOCK_TRANSACTIONAL = 2;
-
-    /**
-     * @var \PDO|null PDO instance or null when not connected yet
-     */
-    private $pdo;
-
-    /**
-     * @var string|null|false DSN string or null for session.save_path or false when lazy connection disabled
-     */
-    private $dsn = false;
-
-    /**
-     * @var string Database driver
-     */
-    private $driver;
-
-    /**
-     * @var string Table name
-     */
-    private $table = 'sessions';
-
-    /**
-     * @var string Column for session id
-     */
-    private $idCol = 'sess_id';
-
-    /**
-     * @var string Column for session data
-     */
-    private $dataCol = 'sess_data';
-
-    /**
-     * @var string Column for lifetime
-     */
-    private $lifetimeCol = 'sess_lifetime';
-
-    /**
-     * @var string Column for timestamp
-     */
-    private $timeCol = 'sess_time';
-
-    /**
-     * @var string Username when lazy-connect
-     */
-    private $username = '';
-
-    /**
-     * @var string Password when lazy-connect
-     */
-    private $password = '';
-
-    /**
-     * @var array Connection options when lazy-connect
-     */
-    private $connectionOptions = array();
-
-    /**
-     * @var int The strategy for locking, see constants
-     */
-    private $lockMode = self::LOCK_TRANSACTIONAL;
-
-    /**
-     * It's an array to support multiple reads before closing which is manual, non-standard usage.
-     *
-     * @var \PDOStatement[] An array of statements to release advisory locks
-     */
-    private $unlockStatements = array();
-
-    /**
-     * @var bool True when the current session exists but expired according to session.gc_maxlifetime
-     */
-    private $sessionExpired = false;
-
-    /**
-     * @var bool Whether a transaction is active
-     */
-    private $inTransaction = false;
-
-    /**
-     * @var bool Whether gc() has been called
-     */
-    private $gcCalled = false;
-
-    /**
-     * Constructor.
-     *
-     * You can either pass an existing database connection as PDO instance or
-     * pass a DSN string that will be used to lazy-connect to the database
-     * when the session is actually used. Furthermore it's possible to pass null
-     * which will then use the session.save_path ini setting as PDO DSN parameter.
-     *
-     * List of available options:
-     *  * db_table: The name of the table [default: sessions]
-     *  * db_id_col: The column where to store the session id [default: sess_id]
-     *  * db_data_col: The column where to store the session data [default: sess_data]
-     *  * db_lifetime_col: The column where to store the lifetime [default: sess_lifetime]
-     *  * db_time_col: The column where to store the timestamp [default: sess_time]
-     *  * db_username: The username when lazy-connect [default: '']
-     *  * db_password: The password when lazy-connect [default: '']
-     *  * db_connection_options: An array of driver-specific connection options [default: array()]
-     *  * lock_mode: The strategy for locking, see constants [default: LOCK_TRANSACTIONAL]
-     *
-     * @param \PDO|string|null $pdoOrDsn A \PDO instance or DSN string or null
-     * @param array            $options  An associative array of options
-     *
-     * @throws \InvalidArgumentException When PDO error mode is not PDO::ERRMODE_EXCEPTION
-     */
-    public function __construct($pdoOrDsn = null, array $options = array())
-    {
-        if ($pdoOrDsn instanceof \PDO) {
-            if (\PDO::ERRMODE_EXCEPTION !== $pdoOrDsn->getAttribute(\PDO::ATTR_ERRMODE)) {
-                throw new \InvalidArgumentException(sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION))', __CLASS__));
-            }
-
-            $this->pdo = $pdoOrDsn;
-            $this->driver = $this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME);
-        } else {
-            $this->dsn = $pdoOrDsn;
-        }
-
-        $this->table = isset($options['db_table']) ? $options['db_table'] : $this->table;
-        $this->idCol = isset($options['db_id_col']) ? $options['db_id_col'] : $this->idCol;
-        $this->dataCol = isset($options['db_data_col']) ? $options['db_data_col'] : $this->dataCol;
-        $this->lifetimeCol = isset($options['db_lifetime_col']) ? $options['db_lifetime_col'] : $this->lifetimeCol;
-        $this->timeCol = isset($options['db_time_col']) ? $options['db_time_col'] : $this->timeCol;
-        $this->username = isset($options['db_username']) ? $options['db_username'] : $this->username;
-        $this->password = isset($options['db_password']) ? $options['db_password'] : $this->password;
-        $this->connectionOptions = isset($options['db_connection_options']) ? $options['db_connection_options'] : $this->connectionOptions;
-        $this->lockMode = isset($options['lock_mode']) ? $options['lock_mode'] : $this->lockMode;
-    }
-
-    /**
-     * Creates the table to store sessions which can be called once for setup.
-     *
-     * Session ID is saved in a column of maximum length 128 because that is enough even
-     * for a 512 bit configured session.hash_function like Whirlpool. Session data is
-     * saved in a BLOB. One could also use a shorter inlined varbinary column
-     * if one was sure the data fits into it.
-     *
-     * @throws \PDOException    When the table already exists
-     * @throws \DomainException When an unsupported PDO driver is used
-     */
-    public function createTable()
-    {
-        // connect if we are not yet
-        $this->getConnection();
-
-        switch ($this->driver) {
-            case 'mysql':
-                // We use varbinary for the ID column because it prevents unwanted conversions:
-                // - character set conversions between server and client
-                // - trailing space removal
-                // - case-insensitivity
-                // - language processing like é == e
-                $sql = "CREATE TABLE $this->table ($this->idCol VARBINARY(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol MEDIUMINT NOT NULL, $this->timeCol INTEGER UNSIGNED NOT NULL) COLLATE utf8_bin, ENGINE = InnoDB";
-                break;
-            case 'sqlite':
-                $sql = "CREATE TABLE $this->table ($this->idCol TEXT NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)";
-                break;
-            case 'pgsql':
-                $sql = "CREATE TABLE $this->table ($this->idCol VARCHAR(128) NOT NULL PRIMARY KEY, $this->dataCol BYTEA NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)";
-                break;
-            case 'oci':
-                $sql = "CREATE TABLE $this->table ($this->idCol VARCHAR2(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)";
-                break;
-            case 'sqlsrv':
-                $sql = "CREATE TABLE $this->table ($this->idCol VARCHAR(128) NOT NULL PRIMARY KEY, $this->dataCol VARBINARY(MAX) NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)";
-                break;
-            default:
-                throw new \DomainException(sprintf('Creating the session table is currently not implemented for PDO driver "%s".', $this->driver));
-        }
-
-        try {
-            $this->pdo->exec($sql);
-        } catch (\PDOException $e) {
-            $this->rollback();
-
-            throw $e;
-        }
-    }
-
-    /**
-     * Returns true when the current session exists but expired according to session.gc_maxlifetime.
-     *
-     * Can be used to distinguish between a new session and one that expired due to inactivity.
-     *
-     * @return bool Whether current session expired
-     */
-    public function isSessionExpired()
-    {
-        return $this->sessionExpired;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function open($savePath, $sessionName)
-    {
-        if (null === $this->pdo) {
-            $this->connect($this->dsn ?: $savePath);
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($sessionId)
-    {
-        try {
-            return $this->doRead($sessionId);
-        } catch (\PDOException $e) {
-            $this->rollback();
-
-            throw $e;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function gc($maxlifetime)
-    {
-        // We delay gc() to close() so that it is executed outside the transactional and blocking read-write process.
-        // This way, pruning expired sessions does not block them from being started while the current session is used.
-        $this->gcCalled = true;
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function destroy($sessionId)
-    {
-        // delete the record associated with this id
-        $sql = "DELETE FROM $this->table WHERE $this->idCol = :id";
-
-        try {
-            $stmt = $this->pdo->prepare($sql);
-            $stmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-            $stmt->execute();
-        } catch (\PDOException $e) {
-            $this->rollback();
-
-            throw $e;
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($sessionId, $data)
-    {
-        $maxlifetime = (int) ini_get('session.gc_maxlifetime');
-
-        try {
-            // We use a single MERGE SQL query when supported by the database.
-            $mergeSql = $this->getMergeSql();
-
-            if (null !== $mergeSql) {
-                $mergeStmt = $this->pdo->prepare($mergeSql);
-                $mergeStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-                $mergeStmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-                $mergeStmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
-                $mergeStmt->bindValue(':time', time(), \PDO::PARAM_INT);
-                $mergeStmt->execute();
-
-                return true;
-            }
-
-            $updateStmt = $this->pdo->prepare(
-                "UPDATE $this->table SET $this->dataCol = :data, $this->lifetimeCol = :lifetime, $this->timeCol = :time WHERE $this->idCol = :id"
-            );
-            $updateStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-            $updateStmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-            $updateStmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
-            $updateStmt->bindValue(':time', time(), \PDO::PARAM_INT);
-            $updateStmt->execute();
-
-            // When MERGE is not supported, like in Postgres, we have to use this approach that can result in
-            // duplicate key errors when the same session is written simultaneously (given the LOCK_NONE behavior).
-            // We can just catch such an error and re-execute the update. This is similar to a serializable
-            // transaction with retry logic on serialization failures but without the overhead and without possible
-            // false positives due to longer gap locking.
-            if (!$updateStmt->rowCount()) {
-                try {
-                    $insertStmt = $this->pdo->prepare(
-                        "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time)"
-                    );
-                    $insertStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-                    $insertStmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-                    $insertStmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
-                    $insertStmt->bindValue(':time', time(), \PDO::PARAM_INT);
-                    $insertStmt->execute();
-                } catch (\PDOException $e) {
-                    // Handle integrity violation SQLSTATE 23000 (or a subclass like 23505 in Postgres) for duplicate keys
-                    if (0 === strpos($e->getCode(), '23')) {
-                        $updateStmt->execute();
-                    } else {
-                        throw $e;
-                    }
-                }
-            }
-        } catch (\PDOException $e) {
-            $this->rollback();
-
-            throw $e;
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        $this->commit();
-
-        while ($unlockStmt = array_shift($this->unlockStatements)) {
-            $unlockStmt->execute();
-        }
-
-        if ($this->gcCalled) {
-            $this->gcCalled = false;
-
-            // delete the session records that have expired
-            $sql = "DELETE FROM $this->table WHERE $this->lifetimeCol + $this->timeCol < :time";
-
-            $stmt = $this->pdo->prepare($sql);
-            $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
-            $stmt->execute();
-        }
-
-        if (false !== $this->dsn) {
-            $this->pdo = null; // only close lazy-connection
-        }
-
-        return true;
-    }
-
-    /**
-     * Lazy-connects to the database.
-     *
-     * @param string $dsn DSN string
-     */
-    private function connect($dsn)
-    {
-        $this->pdo = new \PDO($dsn, $this->username, $this->password, $this->connectionOptions);
-        $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
-        $this->driver = $this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME);
-    }
-
-    /**
-     * Helper method to begin a transaction.
-     *
-     * Since SQLite does not support row level locks, we have to acquire a reserved lock
-     * on the database immediately. Because of https://bugs.php.net/42766 we have to create
-     * such a transaction manually which also means we cannot use PDO::commit or
-     * PDO::rollback or PDO::inTransaction for SQLite.
-     *
-     * Also MySQLs default isolation, REPEATABLE READ, causes deadlock for different sessions
-     * due to http://www.mysqlperformanceblog.com/2013/12/12/one-more-innodb-gap-lock-to-avoid/ .
-     * So we change it to READ COMMITTED.
-     */
-    private function beginTransaction()
-    {
-        if (!$this->inTransaction) {
-            if ('sqlite' === $this->driver) {
-                $this->pdo->exec('BEGIN IMMEDIATE TRANSACTION');
-            } else {
-                if ('mysql' === $this->driver) {
-                    $this->pdo->exec('SET TRANSACTION ISOLATION LEVEL READ COMMITTED');
-                }
-                $this->pdo->beginTransaction();
-            }
-            $this->inTransaction = true;
-        }
-    }
-
-    /**
-     * Helper method to commit a transaction.
-     */
-    private function commit()
-    {
-        if ($this->inTransaction) {
-            try {
-                // commit read-write transaction which also releases the lock
-                if ('sqlite' === $this->driver) {
-                    $this->pdo->exec('COMMIT');
-                } else {
-                    $this->pdo->commit();
-                }
-                $this->inTransaction = false;
-            } catch (\PDOException $e) {
-                $this->rollback();
-
-                throw $e;
-            }
-        }
-    }
-
-    /**
-     * Helper method to rollback a transaction.
-     */
-    private function rollback()
-    {
-        // We only need to rollback if we are in a transaction. Otherwise the resulting
-        // error would hide the real problem why rollback was called. We might not be
-        // in a transaction when not using the transactional locking behavior or when
-        // two callbacks (e.g. destroy and write) are invoked that both fail.
-        if ($this->inTransaction) {
-            if ('sqlite' === $this->driver) {
-                $this->pdo->exec('ROLLBACK');
-            } else {
-                $this->pdo->rollBack();
-            }
-            $this->inTransaction = false;
-        }
-    }
-
-    /**
-     * Reads the session data in respect to the different locking strategies.
-     *
-     * We need to make sure we do not return session data that is already considered garbage according
-     * to the session.gc_maxlifetime setting because gc() is called after read() and only sometimes.
-     *
-     * @param string $sessionId Session ID
-     *
-     * @return string The session data
-     */
-    private function doRead($sessionId)
-    {
-        $this->sessionExpired = false;
-
-        if (self::LOCK_ADVISORY === $this->lockMode) {
-            $this->unlockStatements[] = $this->doAdvisoryLock($sessionId);
-        }
-
-        $selectSql = $this->getSelectSql();
-        $selectStmt = $this->pdo->prepare($selectSql);
-        $selectStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-        $selectStmt->execute();
-
-        $sessionRows = $selectStmt->fetchAll(\PDO::FETCH_NUM);
-
-        if ($sessionRows) {
-            if ($sessionRows[0][1] + $sessionRows[0][2] < time()) {
-                $this->sessionExpired = true;
-
-                return '';
-            }
-
-            return is_resource($sessionRows[0][0]) ? stream_get_contents($sessionRows[0][0]) : $sessionRows[0][0];
-        }
-
-        if (self::LOCK_TRANSACTIONAL === $this->lockMode && 'sqlite' !== $this->driver) {
-            // Exclusive-reading of non-existent rows does not block, so we need to do an insert to block
-            // until other connections to the session are committed.
-            try {
-                $insertStmt = $this->pdo->prepare(
-                    "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time)"
-                );
-                $insertStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-                $insertStmt->bindValue(':data', '', \PDO::PARAM_LOB);
-                $insertStmt->bindValue(':lifetime', 0, \PDO::PARAM_INT);
-                $insertStmt->bindValue(':time', time(), \PDO::PARAM_INT);
-                $insertStmt->execute();
-            } catch (\PDOException $e) {
-                // Catch duplicate key error because other connection created the session already.
-                // It would only not be the case when the other connection destroyed the session.
-                if (0 === strpos($e->getCode(), '23')) {
-                    // Retrieve finished session data written by concurrent connection. SELECT
-                    // FOR UPDATE is necessary to avoid deadlock of connection that starts reading
-                    // before we write (transform intention to real lock).
-                    $selectStmt->execute();
-                    $sessionRows = $selectStmt->fetchAll(\PDO::FETCH_NUM);
-
-                    if ($sessionRows) {
-                        return is_resource($sessionRows[0][0]) ? stream_get_contents($sessionRows[0][0]) : $sessionRows[0][0];
-                    }
-
-                    return '';
-                }
-
-                throw $e;
-            }
-        }
-
-        return '';
-    }
-
-    /**
-     * Executes an application-level lock on the database.
-     *
-     * @param string $sessionId Session ID
-     *
-     * @return \PDOStatement The statement that needs to be executed later to release the lock
-     *
-     * @throws \DomainException When an unsupported PDO driver is used
-     *
-     * @todo implement missing advisory locks
-     *       - for oci using DBMS_LOCK.REQUEST
-     *       - for sqlsrv using sp_getapplock with LockOwner = Session
-     */
-    private function doAdvisoryLock($sessionId)
-    {
-        switch ($this->driver) {
-            case 'mysql':
-                // should we handle the return value? 0 on timeout, null on error
-                // we use a timeout of 50 seconds which is also the default for innodb_lock_wait_timeout
-                $stmt = $this->pdo->prepare('SELECT GET_LOCK(:key, 50)');
-                $stmt->bindValue(':key', $sessionId, \PDO::PARAM_STR);
-                $stmt->execute();
-
-                $releaseStmt = $this->pdo->prepare('DO RELEASE_LOCK(:key)');
-                $releaseStmt->bindValue(':key', $sessionId, \PDO::PARAM_STR);
-
-                return $releaseStmt;
-            case 'pgsql':
-                // Obtaining an exclusive session level advisory lock requires an integer key.
-                // So we convert the HEX representation of the session id to an integer.
-                // Since integers are signed, we have to skip one hex char to fit in the range.
-                if (4 === PHP_INT_SIZE) {
-                    $sessionInt1 = hexdec(substr($sessionId, 0, 7));
-                    $sessionInt2 = hexdec(substr($sessionId, 7, 7));
-
-                    $stmt = $this->pdo->prepare('SELECT pg_advisory_lock(:key1, :key2)');
-                    $stmt->bindValue(':key1', $sessionInt1, \PDO::PARAM_INT);
-                    $stmt->bindValue(':key2', $sessionInt2, \PDO::PARAM_INT);
-                    $stmt->execute();
-
-                    $releaseStmt = $this->pdo->prepare('SELECT pg_advisory_unlock(:key1, :key2)');
-                    $releaseStmt->bindValue(':key1', $sessionInt1, \PDO::PARAM_INT);
-                    $releaseStmt->bindValue(':key2', $sessionInt2, \PDO::PARAM_INT);
-                } else {
-                    $sessionBigInt = hexdec(substr($sessionId, 0, 15));
-
-                    $stmt = $this->pdo->prepare('SELECT pg_advisory_lock(:key)');
-                    $stmt->bindValue(':key', $sessionBigInt, \PDO::PARAM_INT);
-                    $stmt->execute();
-
-                    $releaseStmt = $this->pdo->prepare('SELECT pg_advisory_unlock(:key)');
-                    $releaseStmt->bindValue(':key', $sessionBigInt, \PDO::PARAM_INT);
-                }
-
-                return $releaseStmt;
-            case 'sqlite':
-                throw new \DomainException('SQLite does not support advisory locks.');
-            default:
-                throw new \DomainException(sprintf('Advisory locks are currently not implemented for PDO driver "%s".', $this->driver));
-        }
-    }
-
-    /**
-     * Return a locking or nonlocking SQL query to read session information.
-     *
-     * @return string The SQL string
-     *
-     * @throws \DomainException When an unsupported PDO driver is used
-     */
-    private function getSelectSql()
-    {
-        if (self::LOCK_TRANSACTIONAL === $this->lockMode) {
-            $this->beginTransaction();
-
-            switch ($this->driver) {
-                case 'mysql':
-                case 'oci':
-                case 'pgsql':
-                    return "SELECT $this->dataCol, $this->lifetimeCol, $this->timeCol FROM $this->table WHERE $this->idCol = :id FOR UPDATE";
-                case 'sqlsrv':
-                    return "SELECT $this->dataCol, $this->lifetimeCol, $this->timeCol FROM $this->table WITH (UPDLOCK, ROWLOCK) WHERE $this->idCol = :id";
-                case 'sqlite':
-                    // we already locked when starting transaction
-                    break;
-                default:
-                    throw new \DomainException(sprintf('Transactional locks are currently not implemented for PDO driver "%s".', $this->driver));
-            }
-        }
-
-        return "SELECT $this->dataCol, $this->lifetimeCol, $this->timeCol FROM $this->table WHERE $this->idCol = :id";
-    }
-
-    /**
-     * Returns a merge/upsert (i.e. insert or update) SQL query when supported by the database for writing session data.
-     *
-     * @return string|null The SQL string or null when not supported
-     */
-    private function getMergeSql()
-    {
-        switch ($this->driver) {
-            case 'mysql':
-                return "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time) ".
-                    "ON DUPLICATE KEY UPDATE $this->dataCol = VALUES($this->dataCol), $this->lifetimeCol = VALUES($this->lifetimeCol), $this->timeCol = VALUES($this->timeCol)";
-            case 'oci':
-                // DUAL is Oracle specific dummy table
-                return "MERGE INTO $this->table USING DUAL ON ($this->idCol = :id) ".
-                    "WHEN NOT MATCHED THEN INSERT ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time) ".
-                    "WHEN MATCHED THEN UPDATE SET $this->dataCol = :data, $this->lifetimeCol = :lifetime, $this->timeCol = :time";
-            case 'sqlsrv' === $this->driver && version_compare($this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION), '10', '>='):
-                // MERGE is only available since SQL Server 2008 and must be terminated by semicolon
-                // It also requires HOLDLOCK according to http://weblogs.sqlteam.com/dang/archive/2009/01/31/UPSERT-Race-Condition-With-MERGE.aspx
-                return "MERGE INTO $this->table WITH (HOLDLOCK) USING (SELECT 1 AS dummy) AS src ON ($this->idCol = :id) ".
-                    "WHEN NOT MATCHED THEN INSERT ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time) ".
-                    "WHEN MATCHED THEN UPDATE SET $this->dataCol = :data, $this->lifetimeCol = :lifetime, $this->timeCol = :time;";
-            case 'sqlite':
-                return "INSERT OR REPLACE INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time)";
-        }
-    }
-
-    /**
-     * Return a PDO instance.
-     *
-     * @return \PDO
-     */
-    protected function getConnection()
-    {
-        if (null === $this->pdo) {
-            $this->connect($this->dsn ?: ini_get('session.save_path'));
-        }
-
-        return $this->pdo;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/WriteCheckSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/WriteCheckSessionHandler.php
deleted file mode 100644
index d49c36c..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/WriteCheckSessionHandler.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Handler;
-
-/**
- * Wraps another SessionHandlerInterface to only write the session when it has been modified.
- *
- * @author Adrien Brault <adrien.brault@gmail.com>
- */
-class WriteCheckSessionHandler implements \SessionHandlerInterface
-{
-    /**
-     * @var \SessionHandlerInterface
-     */
-    private $wrappedSessionHandler;
-
-    /**
-     * @var array sessionId => session
-     */
-    private $readSessions;
-
-    public function __construct(\SessionHandlerInterface $wrappedSessionHandler)
-    {
-        $this->wrappedSessionHandler = $wrappedSessionHandler;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        return $this->wrappedSessionHandler->close();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function destroy($sessionId)
-    {
-        return $this->wrappedSessionHandler->destroy($sessionId);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function gc($maxlifetime)
-    {
-        return $this->wrappedSessionHandler->gc($maxlifetime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function open($savePath, $sessionName)
-    {
-        return $this->wrappedSessionHandler->open($savePath, $sessionName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($sessionId)
-    {
-        $session = $this->wrappedSessionHandler->read($sessionId);
-
-        $this->readSessions[$sessionId] = $session;
-
-        return $session;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($sessionId, $data)
-    {
-        if (isset($this->readSessions[$sessionId]) && $data === $this->readSessions[$sessionId]) {
-            return true;
-        }
-
-        return $this->wrappedSessionHandler->write($sessionId, $data);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php b/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php
deleted file mode 100644
index ec7b267..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?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\HttpFoundation\Session\Storage;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-
-/**
- * Metadata container.
- *
- * Adds metadata to the session.
- *
- * @author Drak <drak@zikula.org>
- */
-class MetadataBag implements SessionBagInterface
-{
-    const CREATED = 'c';
-    const UPDATED = 'u';
-    const LIFETIME = 'l';
-
-    /**
-     * @var string
-     */
-    private $name = '__metadata';
-
-    /**
-     * @var string
-     */
-    private $storageKey;
-
-    /**
-     * @var array
-     */
-    protected $meta = array(self::CREATED => 0, self::UPDATED => 0, self::LIFETIME => 0);
-
-    /**
-     * Unix timestamp.
-     *
-     * @var int
-     */
-    private $lastUsed;
-
-    /**
-     * @var int
-     */
-    private $updateThreshold;
-
-    /**
-     * Constructor.
-     *
-     * @param string $storageKey      The key used to store bag in the session.
-     * @param int    $updateThreshold The time to wait between two UPDATED updates
-     */
-    public function __construct($storageKey = '_sf2_meta', $updateThreshold = 0)
-    {
-        $this->storageKey = $storageKey;
-        $this->updateThreshold = $updateThreshold;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initialize(array &$array)
-    {
-        $this->meta = &$array;
-
-        if (isset($array[self::CREATED])) {
-            $this->lastUsed = $this->meta[self::UPDATED];
-
-            $timeStamp = time();
-            if ($timeStamp - $array[self::UPDATED] >= $this->updateThreshold) {
-                $this->meta[self::UPDATED] = $timeStamp;
-            }
-        } else {
-            $this->stampCreated();
-        }
-    }
-
-    /**
-     * Gets the lifetime that the session cookie was set with.
-     *
-     * @return int
-     */
-    public function getLifetime()
-    {
-        return $this->meta[self::LIFETIME];
-    }
-
-    /**
-     * Stamps a new session's metadata.
-     *
-     * @param int $lifetime Sets the cookie lifetime for the session cookie. A null value
-     *                      will leave the system settings unchanged, 0 sets the cookie
-     *                      to expire with browser session. Time is in seconds, and is
-     *                      not a Unix timestamp.
-     */
-    public function stampNew($lifetime = null)
-    {
-        $this->stampCreated($lifetime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStorageKey()
-    {
-        return $this->storageKey;
-    }
-
-    /**
-     * Gets the created timestamp metadata.
-     *
-     * @return int Unix timestamp
-     */
-    public function getCreated()
-    {
-        return $this->meta[self::CREATED];
-    }
-
-    /**
-     * Gets the last used metadata.
-     *
-     * @return int Unix timestamp
-     */
-    public function getLastUsed()
-    {
-        return $this->lastUsed;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        // nothing to do
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Sets name.
-     *
-     * @param string $name
-     */
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    private function stampCreated($lifetime = null)
-    {
-        $timeStamp = time();
-        $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp;
-        $this->meta[self::LIFETIME] = (null === $lifetime) ? ini_get('session.cookie_lifetime') : $lifetime;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php
deleted file mode 100644
index bc13737..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php
+++ /dev/null
@@ -1,268 +0,0 @@
-<?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\HttpFoundation\Session\Storage;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-
-/**
- * MockArraySessionStorage mocks the session for unit tests.
- *
- * No PHP session is actually started since a session can be initialized
- * and shutdown only once per PHP execution cycle.
- *
- * When doing functional testing, you should use MockFileSessionStorage instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- * @author Drak <drak@zikula.org>
- */
-class MockArraySessionStorage implements SessionStorageInterface
-{
-    /**
-     * @var string
-     */
-    protected $id = '';
-
-    /**
-     * @var string
-     */
-    protected $name;
-
-    /**
-     * @var bool
-     */
-    protected $started = false;
-
-    /**
-     * @var bool
-     */
-    protected $closed = false;
-
-    /**
-     * @var array
-     */
-    protected $data = array();
-
-    /**
-     * @var MetadataBag
-     */
-    protected $metadataBag;
-
-    /**
-     * @var array
-     */
-    protected $bags;
-
-    /**
-     * Constructor.
-     *
-     * @param string      $name    Session name
-     * @param MetadataBag $metaBag MetadataBag instance.
-     */
-    public function __construct($name = 'MOCKSESSID', MetadataBag $metaBag = null)
-    {
-        $this->name = $name;
-        $this->setMetadataBag($metaBag);
-    }
-
-    /**
-     * Sets the session data.
-     *
-     * @param array $array
-     */
-    public function setSessionData(array $array)
-    {
-        $this->data = $array;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        if ($this->started) {
-            return true;
-        }
-
-        if (empty($this->id)) {
-            $this->id = $this->generateId();
-        }
-
-        $this->loadSession();
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function regenerate($destroy = false, $lifetime = null)
-    {
-        if (!$this->started) {
-            $this->start();
-        }
-
-        $this->metadataBag->stampNew($lifetime);
-        $this->id = $this->generateId();
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getId()
-    {
-        return $this->id;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setId($id)
-    {
-        if ($this->started) {
-            throw new \LogicException('Cannot set session ID after the session has started.');
-        }
-
-        $this->id = $id;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function save()
-    {
-        if (!$this->started || $this->closed) {
-            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed');
-        }
-        // nothing to do since we don't persist the session data
-        $this->closed = false;
-        $this->started = false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        // clear out the bags
-        foreach ($this->bags as $bag) {
-            $bag->clear();
-        }
-
-        // clear out the session
-        $this->data = array();
-
-        // reconnect the bags to the session
-        $this->loadSession();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function registerBag(SessionBagInterface $bag)
-    {
-        $this->bags[$bag->getName()] = $bag;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getBag($name)
-    {
-        if (!isset($this->bags[$name])) {
-            throw new \InvalidArgumentException(sprintf('The SessionBagInterface %s is not registered.', $name));
-        }
-
-        if (!$this->started) {
-            $this->start();
-        }
-
-        return $this->bags[$name];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isStarted()
-    {
-        return $this->started;
-    }
-
-    /**
-     * Sets the MetadataBag.
-     *
-     * @param MetadataBag $bag
-     */
-    public function setMetadataBag(MetadataBag $bag = null)
-    {
-        if (null === $bag) {
-            $bag = new MetadataBag();
-        }
-
-        $this->metadataBag = $bag;
-    }
-
-    /**
-     * Gets the MetadataBag.
-     *
-     * @return MetadataBag
-     */
-    public function getMetadataBag()
-    {
-        return $this->metadataBag;
-    }
-
-    /**
-     * Generates a session ID.
-     *
-     * This doesn't need to be particularly cryptographically secure since this is just
-     * a mock.
-     *
-     * @return string
-     */
-    protected function generateId()
-    {
-        return hash('sha256', uniqid('ss_mock_', true));
-    }
-
-    protected function loadSession()
-    {
-        $bags = array_merge($this->bags, array($this->metadataBag));
-
-        foreach ($bags as $bag) {
-            $key = $bag->getStorageKey();
-            $this->data[$key] = isset($this->data[$key]) ? $this->data[$key] : array();
-            $bag->initialize($this->data[$key]);
-        }
-
-        $this->started = true;
-        $this->closed = false;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php
deleted file mode 100644
index 1f4117b..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?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\HttpFoundation\Session\Storage;
-
-/**
- * MockFileSessionStorage is used to mock sessions for
- * functional testing when done in a single PHP process.
- *
- * No PHP session is actually started since a session can be initialized
- * and shutdown only once per PHP execution cycle and this class does
- * not pollute any session related globals, including session_*() functions
- * or session.* PHP ini directives.
- *
- * @author Drak <drak@zikula.org>
- */
-class MockFileSessionStorage extends MockArraySessionStorage
-{
-    /**
-     * @var string
-     */
-    private $savePath;
-
-    /**
-     * Constructor.
-     *
-     * @param string      $savePath Path of directory to save session files.
-     * @param string      $name     Session name.
-     * @param MetadataBag $metaBag  MetadataBag instance.
-     */
-    public function __construct($savePath = null, $name = 'MOCKSESSID', MetadataBag $metaBag = null)
-    {
-        if (null === $savePath) {
-            $savePath = sys_get_temp_dir();
-        }
-
-        if (!is_dir($savePath)) {
-            mkdir($savePath, 0777, true);
-        }
-
-        $this->savePath = $savePath;
-
-        parent::__construct($name, $metaBag);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        if ($this->started) {
-            return true;
-        }
-
-        if (!$this->id) {
-            $this->id = $this->generateId();
-        }
-
-        $this->read();
-
-        $this->started = true;
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function regenerate($destroy = false, $lifetime = null)
-    {
-        if (!$this->started) {
-            $this->start();
-        }
-
-        if ($destroy) {
-            $this->destroy();
-        }
-
-        return parent::regenerate($destroy, $lifetime);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function save()
-    {
-        if (!$this->started) {
-            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed');
-        }
-
-        file_put_contents($this->getFilePath(), serialize($this->data));
-
-        // this is needed for Silex, where the session object is re-used across requests
-        // in functional tests. In Symfony, the container is rebooted, so we don't have
-        // this issue
-        $this->started = false;
-    }
-
-    /**
-     * Deletes a session from persistent storage.
-     * Deliberately leaves session data in memory intact.
-     */
-    private function destroy()
-    {
-        if (is_file($this->getFilePath())) {
-            unlink($this->getFilePath());
-        }
-    }
-
-    /**
-     * Calculate path to file.
-     *
-     * @return string File path
-     */
-    private function getFilePath()
-    {
-        return $this->savePath.'/'.$this->id.'.mocksess';
-    }
-
-    /**
-     * Reads session from storage and loads session.
-     */
-    private function read()
-    {
-        $filePath = $this->getFilePath();
-        $this->data = is_readable($filePath) && is_file($filePath) ? unserialize(file_get_contents($filePath)) : array();
-
-        $this->loadSession();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
deleted file mode 100644
index fd03dc8..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
+++ /dev/null
@@ -1,430 +0,0 @@
-<?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\HttpFoundation\Session\Storage;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\NativeProxy;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;
-
-/**
- * This provides a base class for session attribute storage.
- *
- * @author Drak <drak@zikula.org>
- */
-class NativeSessionStorage implements SessionStorageInterface
-{
-    /**
-     * Array of SessionBagInterface.
-     *
-     * @var SessionBagInterface[]
-     */
-    protected $bags;
-
-    /**
-     * @var bool
-     */
-    protected $started = false;
-
-    /**
-     * @var bool
-     */
-    protected $closed = false;
-
-    /**
-     * @var AbstractProxy
-     */
-    protected $saveHandler;
-
-    /**
-     * @var MetadataBag
-     */
-    protected $metadataBag;
-
-    /**
-     * Constructor.
-     *
-     * Depending on how you want the storage driver to behave you probably
-     * want to override this constructor entirely.
-     *
-     * List of options for $options array with their defaults.
-     *
-     * @see http://php.net/session.configuration for options
-     * but we omit 'session.' from the beginning of the keys for convenience.
-     *
-     * ("auto_start", is not supported as it tells PHP to start a session before
-     * PHP starts to execute user-land code. Setting during runtime has no effect).
-     *
-     * cache_limiter, "" (use "0" to prevent headers from being sent entirely).
-     * cookie_domain, ""
-     * cookie_httponly, ""
-     * cookie_lifetime, "0"
-     * cookie_path, "/"
-     * cookie_secure, ""
-     * entropy_file, ""
-     * entropy_length, "0"
-     * gc_divisor, "100"
-     * gc_maxlifetime, "1440"
-     * gc_probability, "1"
-     * hash_bits_per_character, "4"
-     * hash_function, "0"
-     * name, "PHPSESSID"
-     * referer_check, ""
-     * serialize_handler, "php"
-     * use_cookies, "1"
-     * use_only_cookies, "1"
-     * use_trans_sid, "0"
-     * upload_progress.enabled, "1"
-     * upload_progress.cleanup, "1"
-     * upload_progress.prefix, "upload_progress_"
-     * upload_progress.name, "PHP_SESSION_UPLOAD_PROGRESS"
-     * upload_progress.freq, "1%"
-     * upload_progress.min-freq, "1"
-     * url_rewriter.tags, "a=href,area=href,frame=src,form=,fieldset="
-     *
-     * @param array                                                            $options Session configuration options.
-     * @param AbstractProxy|NativeSessionHandler|\SessionHandlerInterface|null $handler
-     * @param MetadataBag                                                      $metaBag MetadataBag.
-     */
-    public function __construct(array $options = array(), $handler = null, MetadataBag $metaBag = null)
-    {
-        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');
-        }
-
-        $this->setMetadataBag($metaBag);
-        $this->setOptions($options);
-        $this->setSaveHandler($handler);
-    }
-
-    /**
-     * Gets the save handler instance.
-     *
-     * @return AbstractProxy
-     */
-    public function getSaveHandler()
-    {
-        return $this->saveHandler;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        if ($this->started) {
-            return true;
-        }
-
-        if (PHP_VERSION_ID >= 50400 && \PHP_SESSION_ACTIVE === session_status()) {
-            throw new \RuntimeException('Failed to start the session: already started by PHP.');
-        }
-
-        if (PHP_VERSION_ID < 50400 && !$this->closed && isset($_SESSION) && session_id()) {
-            // not 100% fool-proof, but is the most reliable way to determine if a session is active in PHP 5.3
-            throw new \RuntimeException('Failed to start the session: already started by PHP ($_SESSION is set).');
-        }
-
-        if (ini_get('session.use_cookies') && headers_sent($file, $line)) {
-            throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line));
-        }
-
-        // ok to try and start the session
-        if (!session_start()) {
-            throw new \RuntimeException('Failed to start the session');
-        }
-
-        $this->loadSession();
-        if (!$this->saveHandler->isWrapper() && !$this->saveHandler->isSessionHandlerInterface()) {
-            // This condition matches only PHP 5.3 with internal save handlers
-            $this->saveHandler->setActive(true);
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getId()
-    {
-        return $this->saveHandler->getId();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setId($id)
-    {
-        $this->saveHandler->setId($id);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->saveHandler->getName();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setName($name)
-    {
-        $this->saveHandler->setName($name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function regenerate($destroy = false, $lifetime = null)
-    {
-        // Cannot regenerate the session ID for non-active sessions.
-        if (PHP_VERSION_ID >= 50400 && \PHP_SESSION_ACTIVE !== session_status()) {
-            return false;
-        }
-
-        // Check if session ID exists in PHP 5.3
-        if (PHP_VERSION_ID < 50400 && '' === session_id()) {
-            return false;
-        }
-
-        if (null !== $lifetime) {
-            ini_set('session.cookie_lifetime', $lifetime);
-        }
-
-        if ($destroy) {
-            $this->metadataBag->stampNew();
-        }
-
-        $isRegenerated = session_regenerate_id($destroy);
-
-        // The reference to $_SESSION in session bags is lost in PHP7 and we need to re-create it.
-        // @see https://bugs.php.net/bug.php?id=70013
-        $this->loadSession();
-
-        return $isRegenerated;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function save()
-    {
-        session_write_close();
-
-        if (!$this->saveHandler->isWrapper() && !$this->saveHandler->isSessionHandlerInterface()) {
-            // This condition matches only PHP 5.3 with internal save handlers
-            $this->saveHandler->setActive(false);
-        }
-
-        $this->closed = true;
-        $this->started = false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        // clear out the bags
-        foreach ($this->bags as $bag) {
-            $bag->clear();
-        }
-
-        // clear out the session
-        $_SESSION = array();
-
-        // reconnect the bags to the session
-        $this->loadSession();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function registerBag(SessionBagInterface $bag)
-    {
-        $this->bags[$bag->getName()] = $bag;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getBag($name)
-    {
-        if (!isset($this->bags[$name])) {
-            throw new \InvalidArgumentException(sprintf('The SessionBagInterface %s is not registered.', $name));
-        }
-
-        if ($this->saveHandler->isActive() && !$this->started) {
-            $this->loadSession();
-        } elseif (!$this->started) {
-            $this->start();
-        }
-
-        return $this->bags[$name];
-    }
-
-    /**
-     * Sets the MetadataBag.
-     *
-     * @param MetadataBag $metaBag
-     */
-    public function setMetadataBag(MetadataBag $metaBag = null)
-    {
-        if (null === $metaBag) {
-            $metaBag = new MetadataBag();
-        }
-
-        $this->metadataBag = $metaBag;
-    }
-
-    /**
-     * Gets the MetadataBag.
-     *
-     * @return MetadataBag
-     */
-    public function getMetadataBag()
-    {
-        return $this->metadataBag;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isStarted()
-    {
-        return $this->started;
-    }
-
-    /**
-     * Sets session.* ini variables.
-     *
-     * For convenience we omit 'session.' from the beginning of the keys.
-     * Explicitly ignores other ini keys.
-     *
-     * @param array $options Session ini directives array(key => value).
-     *
-     * @see http://php.net/session.configuration
-     */
-    public function setOptions(array $options)
-    {
-        $validOptions = array_flip(array(
-            'cache_limiter', 'cookie_domain', 'cookie_httponly',
-            'cookie_lifetime', 'cookie_path', 'cookie_secure',
-            'entropy_file', 'entropy_length', 'gc_divisor',
-            'gc_maxlifetime', 'gc_probability', 'hash_bits_per_character',
-            'hash_function', 'name', 'referer_check',
-            'serialize_handler', 'use_cookies',
-            'use_only_cookies', 'use_trans_sid', 'upload_progress.enabled',
-            'upload_progress.cleanup', 'upload_progress.prefix', 'upload_progress.name',
-            'upload_progress.freq', 'upload_progress.min-freq', 'url_rewriter.tags',
-        ));
-
-        foreach ($options as $key => $value) {
-            if (isset($validOptions[$key])) {
-                ini_set('session.'.$key, $value);
-            }
-        }
-    }
-
-    /**
-     * Registers session save handler as a PHP session handler.
-     *
-     * To use internal PHP session save handlers, override this method using ini_set with
-     * session.save_handler and session.save_path e.g.
-     *
-     *     ini_set('session.save_handler', 'files');
-     *     ini_set('session.save_path', /tmp');
-     *
-     * or pass in a NativeSessionHandler instance which configures session.save_handler in the
-     * constructor, for a template see NativeFileSessionHandler or use handlers in
-     * composer package drak/native-session
-     *
-     * @see http://php.net/session-set-save-handler
-     * @see http://php.net/sessionhandlerinterface
-     * @see http://php.net/sessionhandler
-     * @see http://github.com/drak/NativeSession
-     *
-     * @param AbstractProxy|NativeSessionHandler|\SessionHandlerInterface|null $saveHandler
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setSaveHandler($saveHandler = null)
-    {
-        if (!$saveHandler instanceof AbstractProxy &&
-            !$saveHandler instanceof NativeSessionHandler &&
-            !$saveHandler instanceof \SessionHandlerInterface &&
-            null !== $saveHandler) {
-            throw new \InvalidArgumentException('Must be instance of AbstractProxy or NativeSessionHandler; implement \SessionHandlerInterface; or be null.');
-        }
-
-        // Wrap $saveHandler in proxy and prevent double wrapping of proxy
-        if (!$saveHandler instanceof AbstractProxy && $saveHandler instanceof \SessionHandlerInterface) {
-            $saveHandler = new SessionHandlerProxy($saveHandler);
-        } elseif (!$saveHandler instanceof AbstractProxy) {
-            $saveHandler = PHP_VERSION_ID >= 50400 ?
-                new SessionHandlerProxy(new \SessionHandler()) : new NativeProxy();
-        }
-        $this->saveHandler = $saveHandler;
-
-        if ($this->saveHandler instanceof \SessionHandlerInterface) {
-            if (PHP_VERSION_ID >= 50400) {
-                session_set_save_handler($this->saveHandler, false);
-            } else {
-                session_set_save_handler(
-                    array($this->saveHandler, 'open'),
-                    array($this->saveHandler, 'close'),
-                    array($this->saveHandler, 'read'),
-                    array($this->saveHandler, 'write'),
-                    array($this->saveHandler, 'destroy'),
-                    array($this->saveHandler, 'gc')
-                );
-            }
-        }
-    }
-
-    /**
-     * Load the session with attributes.
-     *
-     * After starting the session, PHP retrieves the session from whatever handlers
-     * are set to (either PHP's internal, or a custom save handler set with session_set_save_handler()).
-     * PHP takes the return value from the read() handler, unserializes it
-     * and populates $_SESSION with the result automatically.
-     *
-     * @param array|null $session
-     */
-    protected function loadSession(array &$session = null)
-    {
-        if (null === $session) {
-            $session = &$_SESSION;
-        }
-
-        $bags = array_merge($this->bags, array($this->metadataBag));
-
-        foreach ($bags as $bag) {
-            $key = $bag->getStorageKey();
-            $session[$key] = isset($session[$key]) ? $session[$key] : array();
-            $bag->initialize($session[$key]);
-        }
-
-        $this->started = true;
-        $this->closed = false;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php
deleted file mode 100644
index ced706f..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?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\HttpFoundation\Session\Storage;
-
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeSessionHandler;
-
-/**
- * Allows session to be started by PHP and managed by Symfony.
- *
- * @author Drak <drak@zikula.org>
- */
-class PhpBridgeSessionStorage extends NativeSessionStorage
-{
-    /**
-     * Constructor.
-     *
-     * @param AbstractProxy|NativeSessionHandler|\SessionHandlerInterface|null $handler
-     * @param MetadataBag                                                      $metaBag MetadataBag
-     */
-    public function __construct($handler = null, MetadataBag $metaBag = null)
-    {
-        $this->setMetadataBag($metaBag);
-        $this->setSaveHandler($handler);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start()
-    {
-        if ($this->started) {
-            return true;
-        }
-
-        $this->loadSession();
-        if (!$this->saveHandler->isWrapper() && !$this->saveHandler->isSessionHandlerInterface()) {
-            // This condition matches only PHP 5.3 + internal save handlers
-            $this->saveHandler->setActive(true);
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear()
-    {
-        // clear out the bags and nothing else that may be set
-        // since the purpose of this driver is to share a handler
-        foreach ($this->bags as $bag) {
-            $bag->clear();
-        }
-
-        // reconnect the bags to the session
-        $this->loadSession();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php b/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php
deleted file mode 100644
index 1036818..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Proxy;
-
-/**
- * AbstractProxy.
- *
- * @author Drak <drak@zikula.org>
- */
-abstract class AbstractProxy
-{
-    /**
-     * Flag if handler wraps an internal PHP session handler (using \SessionHandler).
-     *
-     * @var bool
-     */
-    protected $wrapper = false;
-
-    /**
-     * @var bool
-     */
-    protected $active = false;
-
-    /**
-     * @var string
-     */
-    protected $saveHandlerName;
-
-    /**
-     * Gets the session.save_handler name.
-     *
-     * @return string
-     */
-    public function getSaveHandlerName()
-    {
-        return $this->saveHandlerName;
-    }
-
-    /**
-     * Is this proxy handler and instance of \SessionHandlerInterface.
-     *
-     * @return bool
-     */
-    public function isSessionHandlerInterface()
-    {
-        return ($this instanceof \SessionHandlerInterface);
-    }
-
-    /**
-     * Returns true if this handler wraps an internal PHP session save handler using \SessionHandler.
-     *
-     * @return bool
-     */
-    public function isWrapper()
-    {
-        return $this->wrapper;
-    }
-
-    /**
-     * Has a session started?
-     *
-     * @return bool
-     */
-    public function isActive()
-    {
-        if (PHP_VERSION_ID >= 50400) {
-            return $this->active = \PHP_SESSION_ACTIVE === session_status();
-        }
-
-        return $this->active;
-    }
-
-    /**
-     * Sets the active flag.
-     *
-     * Has no effect under PHP 5.4+ as status is detected
-     * automatically in isActive()
-     *
-     * @internal
-     *
-     * @param bool $flag
-     *
-     * @throws \LogicException
-     */
-    public function setActive($flag)
-    {
-        if (PHP_VERSION_ID >= 50400) {
-            throw new \LogicException('This method is disabled in PHP 5.4.0+');
-        }
-
-        $this->active = (bool) $flag;
-    }
-
-    /**
-     * Gets the session ID.
-     *
-     * @return string
-     */
-    public function getId()
-    {
-        return session_id();
-    }
-
-    /**
-     * Sets the session ID.
-     *
-     * @param string $id
-     *
-     * @throws \LogicException
-     */
-    public function setId($id)
-    {
-        if ($this->isActive()) {
-            throw new \LogicException('Cannot change the ID of an active session');
-        }
-
-        session_id($id);
-    }
-
-    /**
-     * Gets the session name.
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return session_name();
-    }
-
-    /**
-     * Sets the session name.
-     *
-     * @param string $name
-     *
-     * @throws \LogicException
-     */
-    public function setName($name)
-    {
-        if ($this->isActive()) {
-            throw new \LogicException('Cannot change the name of an active session');
-        }
-
-        session_name($name);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Proxy/NativeProxy.php b/vendor/symfony/http-foundation/Session/Storage/Proxy/NativeProxy.php
deleted file mode 100644
index 5bb2c71..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Proxy/NativeProxy.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Proxy;
-
-/**
- * NativeProxy.
- *
- * This proxy is built-in session handlers in PHP 5.3.x
- *
- * @author Drak <drak@zikula.org>
- */
-class NativeProxy extends AbstractProxy
-{
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {
-        // this makes an educated guess as to what the handler is since it should already be set.
-        $this->saveHandlerName = ini_get('session.save_handler');
-    }
-
-    /**
-     * Returns true if this handler wraps an internal PHP session save handler using \SessionHandler.
-     *
-     * @return bool False.
-     */
-    public function isWrapper()
-    {
-        return false;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php b/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php
deleted file mode 100644
index 81643c7..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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\HttpFoundation\Session\Storage\Proxy;
-
-/**
- * SessionHandler proxy.
- *
- * @author Drak <drak@zikula.org>
- */
-class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterface
-{
-    /**
-     * @var \SessionHandlerInterface
-     */
-    protected $handler;
-
-    /**
-     * Constructor.
-     *
-     * @param \SessionHandlerInterface $handler
-     */
-    public function __construct(\SessionHandlerInterface $handler)
-    {
-        $this->handler = $handler;
-        $this->wrapper = ($handler instanceof \SessionHandler);
-        $this->saveHandlerName = $this->wrapper ? ini_get('session.save_handler') : 'user';
-    }
-
-    // \SessionHandlerInterface
-
-    /**
-     * {@inheritdoc}
-     */
-    public function open($savePath, $sessionName)
-    {
-        $return = (bool) $this->handler->open($savePath, $sessionName);
-
-        if (true === $return) {
-            $this->active = true;
-        }
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        $this->active = false;
-
-        return (bool) $this->handler->close();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($sessionId)
-    {
-        return (string) $this->handler->read($sessionId);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($sessionId, $data)
-    {
-        return (bool) $this->handler->write($sessionId, $data);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function destroy($sessionId)
-    {
-        return (bool) $this->handler->destroy($sessionId);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function gc($maxlifetime)
-    {
-        return (bool) $this->handler->gc($maxlifetime);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php b/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php
deleted file mode 100644
index 9f81847..0000000
--- a/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?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\HttpFoundation\Session\Storage;
-
-use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
-
-/**
- * StorageInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Drak <drak@zikula.org>
- */
-interface SessionStorageInterface
-{
-    /**
-     * Starts the session.
-     *
-     * @throws \RuntimeException If something goes wrong starting the session.
-     *
-     * @return bool True if started.
-     */
-    public function start();
-
-    /**
-     * Checks if the session is started.
-     *
-     * @return bool True if started, false otherwise.
-     */
-    public function isStarted();
-
-    /**
-     * Returns the session ID.
-     *
-     * @return string The session ID or empty.
-     */
-    public function getId();
-
-    /**
-     * Sets the session ID.
-     *
-     * @param string $id
-     */
-    public function setId($id);
-
-    /**
-     * Returns the session name.
-     *
-     * @return mixed The session name.
-     */
-    public function getName();
-
-    /**
-     * Sets the session name.
-     *
-     * @param string $name
-     */
-    public function setName($name);
-
-    /**
-     * Regenerates id that represents this storage.
-     *
-     * This method must invoke session_regenerate_id($destroy) unless
-     * this interface is used for a storage object designed for unit
-     * or functional testing where a real PHP session would interfere
-     * with testing.
-     *
-     * Note regenerate+destroy should not clear the session data in memory
-     * only delete the session data from persistent storage.
-     *
-     * Care: When regenerating the session ID no locking is involved in PHPs
-     * session design. See https://bugs.php.net/bug.php?id=61470 for a discussion.
-     * So you must make sure the regenerated session is saved BEFORE sending the
-     * headers with the new ID. Symfonys HttpKernel offers a listener for this.
-     * See Symfony\Component\HttpKernel\EventListener\SaveSessionListener.
-     * Otherwise session data could get lost again for concurrent requests with the
-     * new ID. One result could be that you get logged out after just logging in.
-     *
-     * @param bool $destroy  Destroy session when regenerating?
-     * @param int  $lifetime Sets the cookie lifetime for the session cookie. A null value
-     *                       will leave the system settings unchanged, 0 sets the cookie
-     *                       to expire with browser session. Time is in seconds, and is
-     *                       not a Unix timestamp.
-     *
-     * @return bool True if session regenerated, false if error
-     *
-     * @throws \RuntimeException If an error occurs while regenerating this storage
-     */
-    public function regenerate($destroy = false, $lifetime = null);
-
-    /**
-     * Force the session to be saved and closed.
-     *
-     * This method must invoke session_write_close() unless this interface is
-     * used for a storage object design for unit or functional testing where
-     * a real PHP session would interfere with testing, in which case it
-     * it should actually persist the session data if required.
-     *
-     * @throws \RuntimeException If the session is saved without being started, or if the session
-     *                           is already closed.
-     */
-    public function save();
-
-    /**
-     * Clear all session data in memory.
-     */
-    public function clear();
-
-    /**
-     * Gets a SessionBagInterface by name.
-     *
-     * @param string $name
-     *
-     * @return SessionBagInterface
-     *
-     * @throws \InvalidArgumentException If the bag does not exist
-     */
-    public function getBag($name);
-
-    /**
-     * Registers a SessionBagInterface for use.
-     *
-     * @param SessionBagInterface $bag
-     */
-    public function registerBag(SessionBagInterface $bag);
-
-    /**
-     * @return MetadataBag
-     */
-    public function getMetadataBag();
-}
diff --git a/vendor/symfony/http-foundation/StreamedResponse.php b/vendor/symfony/http-foundation/StreamedResponse.php
deleted file mode 100644
index 4b936a1..0000000
--- a/vendor/symfony/http-foundation/StreamedResponse.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?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\HttpFoundation;
-
-/**
- * StreamedResponse represents a streamed HTTP response.
- *
- * A StreamedResponse uses a callback for its content.
- *
- * The callback should use the standard PHP functions like echo
- * to stream the response back to the client. The flush() method
- * can also be used if needed.
- *
- * @see flush()
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class StreamedResponse extends Response
-{
-    protected $callback;
-    protected $streamed;
-
-    /**
-     * Constructor.
-     *
-     * @param callable|null $callback A valid PHP callback or null to set it later
-     * @param int           $status   The response status code
-     * @param array         $headers  An array of response headers
-     */
-    public function __construct($callback = null, $status = 200, $headers = array())
-    {
-        parent::__construct(null, $status, $headers);
-
-        if (null !== $callback) {
-            $this->setCallback($callback);
-        }
-        $this->streamed = false;
-    }
-
-    /**
-     * Factory method for chainability.
-     *
-     * @param callable|null $callback A valid PHP callback or null to set it later
-     * @param int           $status   The response status code
-     * @param array         $headers  An array of response headers
-     *
-     * @return StreamedResponse
-     */
-    public static function create($callback = null, $status = 200, $headers = array())
-    {
-        return new static($callback, $status, $headers);
-    }
-
-    /**
-     * Sets the PHP callback associated with this Response.
-     *
-     * @param callable $callback A valid PHP callback
-     *
-     * @throws \LogicException
-     */
-    public function setCallback($callback)
-    {
-        if (!is_callable($callback)) {
-            throw new \LogicException('The Response callback must be a valid PHP callable.');
-        }
-        $this->callback = $callback;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * This method only sends the content once.
-     */
-    public function sendContent()
-    {
-        if ($this->streamed) {
-            return;
-        }
-
-        $this->streamed = true;
-
-        if (null === $this->callback) {
-            throw new \LogicException('The Response callback must not be null.');
-        }
-
-        call_user_func($this->callback);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws \LogicException when the content is not null
-     */
-    public function setContent($content)
-    {
-        if (null !== $content) {
-            throw new \LogicException('The content cannot be set on a StreamedResponse instance.');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return false
-     */
-    public function getContent()
-    {
-        return false;
-    }
-}
diff --git a/vendor/symfony/http-foundation/composer.json b/vendor/symfony/http-foundation/composer.json
deleted file mode 100644
index 09f9679..0000000
--- a/vendor/symfony/http-foundation/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-    "name": "symfony/http-foundation",
-    "type": "library",
-    "description": "Symfony HttpFoundation Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9"
-    },
-    "require-dev": {
-        "symfony/expression-language": "~2.4"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" },
-        "classmap": [ "Resources/stubs" ]
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/phpunit.xml.dist b/vendor/symfony/http-foundation/phpunit.xml.dist
deleted file mode 100644
index 9ffdb43..0000000
--- a/vendor/symfony/http-foundation/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony HttpFoundation Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/http-kernel/.gitignore b/vendor/symfony/http-kernel/.gitignore
deleted file mode 100644
index 94a6a25..0000000
--- a/vendor/symfony/http-kernel/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
-Tests/Fixtures/cache/
-Tests/Fixtures/logs/
diff --git a/vendor/symfony/http-kernel/Bundle/Bundle.php b/vendor/symfony/http-kernel/Bundle/Bundle.php
deleted file mode 100644
index ebec7ff..0000000
--- a/vendor/symfony/http-kernel/Bundle/Bundle.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?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\Bundle;
-
-use Symfony\Component\DependencyInjection\ContainerAware;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\Console\Application;
-use Symfony\Component\Finder\Finder;
-use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
-
-/**
- * An implementation of BundleInterface that adds a few conventions
- * for DependencyInjection extensions and Console commands.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Bundle extends ContainerAware implements BundleInterface
-{
-    protected $name;
-    protected $extension;
-    protected $path;
-
-    /**
-     * Boots the Bundle.
-     */
-    public function boot()
-    {
-    }
-
-    /**
-     * Shutdowns the Bundle.
-     */
-    public function shutdown()
-    {
-    }
-
-    /**
-     * Builds the bundle.
-     *
-     * It is only ever called once when the cache is empty.
-     *
-     * This method can be overridden to register compilation passes,
-     * other extensions, ...
-     *
-     * @param ContainerBuilder $container A ContainerBuilder instance
-     */
-    public function build(ContainerBuilder $container)
-    {
-    }
-
-    /**
-     * Returns the bundle's container extension.
-     *
-     * @return ExtensionInterface|null The container extension
-     *
-     * @throws \LogicException
-     */
-    public function getContainerExtension()
-    {
-        if (null === $this->extension) {
-            $class = $this->getContainerExtensionClass();
-            if (class_exists($class)) {
-                $extension = new $class();
-
-                if (!$extension instanceof ExtensionInterface) {
-                    throw new \LogicException(sprintf('Extension %s must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', $class));
-                }
-
-                // 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.',
-                        $expectedAlias, $extension->getAlias()
-                    ));
-                }
-
-                $this->extension = $extension;
-            } else {
-                $this->extension = false;
-            }
-        }
-
-        if ($this->extension) {
-            return $this->extension;
-        }
-    }
-
-    /**
-     * Gets the Bundle namespace.
-     *
-     * @return string The Bundle namespace
-     */
-    public function getNamespace()
-    {
-        $class = get_class($this);
-
-        return substr($class, 0, strrpos($class, '\\'));
-    }
-
-    /**
-     * Gets the Bundle directory path.
-     *
-     * @return string The Bundle absolute path
-     */
-    public function getPath()
-    {
-        if (null === $this->path) {
-            $reflected = new \ReflectionObject($this);
-            $this->path = dirname($reflected->getFileName());
-        }
-
-        return $this->path;
-    }
-
-    /**
-     * Returns the bundle parent name.
-     *
-     * @return string The Bundle parent name it overrides or null if no parent
-     */
-    public function getParent()
-    {
-    }
-
-    /**
-     * Returns the bundle name (the class short name).
-     *
-     * @return string The Bundle name
-     */
-    final public function getName()
-    {
-        if (null !== $this->name) {
-            return $this->name;
-        }
-
-        $name = get_class($this);
-        $pos = strrpos($name, '\\');
-
-        return $this->name = false === $pos ? $name : substr($name, $pos + 1);
-    }
-
-    /**
-     * Finds and registers Commands.
-     *
-     * Override this method if your bundle commands do not follow the conventions:
-     *
-     * * Commands are in the 'Command' sub-directory
-     * * Commands extend Symfony\Component\Console\Command\Command
-     *
-     * @param Application $application An Application instance
-     */
-    public function registerCommands(Application $application)
-    {
-        if (!is_dir($dir = $this->getPath().'/Command')) {
-            return;
-        }
-
-        $finder = new Finder();
-        $finder->files()->name('*Command.php')->in($dir);
-
-        $prefix = $this->getNamespace().'\\Command';
-        foreach ($finder as $file) {
-            $ns = $prefix;
-            if ($relativePath = $file->getRelativePath()) {
-                $ns .= '\\'.strtr($relativePath, '/', '\\');
-            }
-            $class = $ns.'\\'.$file->getBasename('.php');
-            if ($this->container) {
-                $alias = 'console.command.'.strtolower(str_replace('\\', '_', $class));
-                if ($this->container->has($alias)) {
-                    continue;
-                }
-            }
-            $r = new \ReflectionClass($class);
-            if ($r->isSubclassOf('Symfony\\Component\\Console\\Command\\Command') && !$r->isAbstract() && !$r->getConstructor()->getNumberOfRequiredParameters()) {
-                $application->add($r->newInstance());
-            }
-        }
-    }
-
-    /**
-     * Returns the bundle's container extension class.
-     *
-     * @return string
-     */
-    protected function getContainerExtensionClass()
-    {
-        $basename = preg_replace('/Bundle$/', '', $this->getName());
-
-        return $this->getNamespace().'\\DependencyInjection\\'.$basename.'Extension';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Bundle/BundleInterface.php b/vendor/symfony/http-kernel/Bundle/BundleInterface.php
deleted file mode 100644
index 25eea1d..0000000
--- a/vendor/symfony/http-kernel/Bundle/BundleInterface.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?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\Bundle;
-
-use Symfony\Component\DependencyInjection\ContainerAwareInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
-
-/**
- * BundleInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface BundleInterface extends ContainerAwareInterface
-{
-    /**
-     * Boots the Bundle.
-     */
-    public function boot();
-
-    /**
-     * Shutdowns the Bundle.
-     */
-    public function shutdown();
-
-    /**
-     * Builds the bundle.
-     *
-     * It is only ever called once when the cache is empty.
-     *
-     * @param ContainerBuilder $container A ContainerBuilder instance
-     */
-    public function build(ContainerBuilder $container);
-
-    /**
-     * Returns the container extension that should be implicitly loaded.
-     *
-     * @return ExtensionInterface|null The default extension or null if there is none
-     */
-    public function getContainerExtension();
-
-    /**
-     * Returns the bundle name that this bundle overrides.
-     *
-     * Despite its name, this method does not imply any parent/child relationship
-     * between the bundles, just a way to extend and override an existing
-     * bundle.
-     *
-     * @return string The Bundle name it overrides or null if no parent
-     */
-    public function getParent();
-
-    /**
-     * Returns the bundle name (the class short name).
-     *
-     * @return string The Bundle name
-     */
-    public function getName();
-
-    /**
-     * Gets the Bundle namespace.
-     *
-     * @return string The Bundle namespace
-     */
-    public function getNamespace();
-
-    /**
-     * Gets the Bundle directory path.
-     *
-     * The path should always be returned as a Unix path (with /).
-     *
-     * @return string The Bundle absolute path
-     */
-    public function getPath();
-}
diff --git a/vendor/symfony/http-kernel/CHANGELOG.md b/vendor/symfony/http-kernel/CHANGELOG.md
deleted file mode 100644
index ad27886..0000000
--- a/vendor/symfony/http-kernel/CHANGELOG.md
+++ /dev/null
@@ -1,73 +0,0 @@
-CHANGELOG
-=========
-
-2.7.0
------
-
- * added the HTTP status code to profiles
-
-2.6.0
------
-
- * deprecated `Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener`, use `Symfony\Component\HttpKernel\EventListener\DebugHandlersListener` instead
- * deprecated unused method `Symfony\Component\HttpKernel\Kernel::isClassInActiveBundle` and `Symfony\Component\HttpKernel\KernelInterface::isClassInActiveBundle`
-
-2.5.0
------
-
- * deprecated `Symfony\Component\HttpKernel\DependencyInjection\RegisterListenersPass`, use `Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass` instead
-
-2.4.0
------
-
- * added event listeners for the session
- * added the KernelEvents::FINISH_REQUEST event
-
-2.3.0
------
-
- * [BC BREAK] renamed `Symfony\Component\HttpKernel\EventListener\DeprecationLoggerListener` to `Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener` and changed its constructor
- * deprecated `Symfony\Component\HttpKernel\Debug\ErrorHandler`, `Symfony\Component\HttpKernel\Debug\ExceptionHandler`,
-   `Symfony\Component\HttpKernel\Exception\FatalErrorException` and `Symfony\Component\HttpKernel\Exception\FlattenException`
- * deprecated `Symfony\Component\HttpKernel\Kernel::init()``
- * added the possibility to specify an id an extra attributes to hinclude tags
- * added the collect of data if a controller is a Closure in the Request collector
- * pass exceptions from the ExceptionListener to the logger using the logging context to allow for more
-   detailed messages
-
-2.2.0
------
-
- * [BC BREAK] the path info for sub-request is now always _fragment (or whatever you configured instead of the default)
- * added Symfony\Component\HttpKernel\EventListener\FragmentListener
- * added Symfony\Component\HttpKernel\UriSigner
- * added Symfony\Component\HttpKernel\FragmentRenderer and rendering strategies (in Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface)
- * added Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel
- * added ControllerReference to create reference of Controllers (used in the FragmentRenderer class)
- * [BC BREAK] renamed TimeDataCollector::getTotalTime() to
-   TimeDataCollector::getDuration()
- * updated the MemoryDataCollector to include the memory used in the
-   kernel.terminate event listeners
- * moved the Stopwatch classes to a new component
- * added TraceableControllerResolver
- * added TraceableEventDispatcher (removed ContainerAwareTraceableEventDispatcher)
- * added support for WinCache opcode cache in ConfigDataCollector
-
-2.1.0
------
-
- * [BC BREAK] the charset is now configured via the Kernel::getCharset() method
- * [BC BREAK] the current locale for the user is not stored anymore in the session
- * added the HTTP method to the profiler storage
- * updated all listeners to implement EventSubscriberInterface
- * added TimeDataCollector
- * added ContainerAwareTraceableEventDispatcher
- * moved TraceableEventDispatcherInterface to the EventDispatcher component
- * added RouterListener, LocaleListener, and StreamedResponseListener
- * added CacheClearerInterface (and ChainCacheClearer)
- * added a kernel.terminate event (via TerminableInterface and PostResponseEvent)
- * added a Stopwatch class
- * added WarmableInterface
- * improved extensibility between bundles
- * added profiler storages for Memcache(d), File-based, MongoDB, Redis
- * moved Filesystem class to its own component
diff --git a/vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php b/vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php
deleted file mode 100644
index d4a2db3..0000000
--- a/vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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\CacheClearer;
-
-/**
- * CacheClearerInterface.
- *
- * @author Dustin Dobervich <ddobervich@gmail.com>
- */
-interface CacheClearerInterface
-{
-    /**
-     * Clears any caches necessary.
-     *
-     * @param string $cacheDir The cache directory.
-     */
-    public function clear($cacheDir);
-}
diff --git a/vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php b/vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php
deleted file mode 100644
index 81c43b6..0000000
--- a/vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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\CacheClearer;
-
-/**
- * ChainCacheClearer.
- *
- * @author Dustin Dobervich <ddobervich@gmail.com>
- */
-class ChainCacheClearer implements CacheClearerInterface
-{
-    /**
-     * @var array
-     */
-    protected $clearers;
-
-    /**
-     * Constructs a new instance of ChainCacheClearer.
-     *
-     * @param array $clearers The initial clearers.
-     */
-    public function __construct(array $clearers = array())
-    {
-        $this->clearers = $clearers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function clear($cacheDir)
-    {
-        foreach ($this->clearers as $clearer) {
-            $clearer->clear($cacheDir);
-        }
-    }
-
-    /**
-     * Adds a cache clearer to the aggregate.
-     *
-     * @param CacheClearerInterface $clearer
-     */
-    public function add(CacheClearerInterface $clearer)
-    {
-        $this->clearers[] = $clearer;
-    }
-}
diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php
deleted file mode 100644
index 948b3ff..0000000
--- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\CacheWarmer;
-
-/**
- * Abstract cache warmer that knows how to write a file to the cache.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class CacheWarmer implements CacheWarmerInterface
-{
-    protected function writeCacheFile($file, $content)
-    {
-        $tmpFile = tempnam(dirname($file), basename($file));
-        if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $file)) {
-            @chmod($file, 0666 & ~umask());
-
-            return;
-        }
-
-        throw new \RuntimeException(sprintf('Failed to write cache file "%s".', $file));
-    }
-}
diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php
deleted file mode 100644
index e5f4e4f..0000000
--- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?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\CacheWarmer;
-
-/**
- * Aggregates several cache warmers into a single one.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CacheWarmerAggregate implements CacheWarmerInterface
-{
-    protected $warmers = array();
-    protected $optionalsEnabled = false;
-
-    public function __construct(array $warmers = array())
-    {
-        foreach ($warmers as $warmer) {
-            $this->add($warmer);
-        }
-    }
-
-    public function enableOptionalWarmers()
-    {
-        $this->optionalsEnabled = true;
-    }
-
-    /**
-     * Warms up the cache.
-     *
-     * @param string $cacheDir The cache directory
-     */
-    public function warmUp($cacheDir)
-    {
-        foreach ($this->warmers as $warmer) {
-            if (!$this->optionalsEnabled && $warmer->isOptional()) {
-                continue;
-            }
-
-            $warmer->warmUp($cacheDir);
-        }
-    }
-
-    /**
-     * Checks whether this warmer is optional or not.
-     *
-     * @return bool always false
-     */
-    public function isOptional()
-    {
-        return false;
-    }
-
-    public function setWarmers(array $warmers)
-    {
-        $this->warmers = array();
-        foreach ($warmers as $warmer) {
-            $this->add($warmer);
-        }
-    }
-
-    public function add(CacheWarmerInterface $warmer)
-    {
-        $this->warmers[] = $warmer;
-    }
-}
diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php
deleted file mode 100644
index 8fece5e..0000000
--- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\CacheWarmer;
-
-/**
- * Interface for classes able to warm up the cache.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface CacheWarmerInterface extends WarmableInterface
-{
-    /**
-     * Checks whether this warmer is optional or not.
-     *
-     * Optional warmers can be ignored on certain conditions.
-     *
-     * A warmer should return true if the cache can be
-     * generated incrementally and on-demand.
-     *
-     * @return bool true if the warmer is optional, false otherwise
-     */
-    public function isOptional();
-}
diff --git a/vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php b/vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php
deleted file mode 100644
index 25d8ee8..0000000
--- a/vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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\CacheWarmer;
-
-/**
- * Interface for classes that support warming their cache.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface WarmableInterface
-{
-    /**
-     * Warms up the cache.
-     *
-     * @param string $cacheDir The cache directory
-     */
-    public function warmUp($cacheDir);
-}
diff --git a/vendor/symfony/http-kernel/Client.php b/vendor/symfony/http-kernel/Client.php
deleted file mode 100644
index b344fa1..0000000
--- a/vendor/symfony/http-kernel/Client.php
+++ /dev/null
@@ -1,226 +0,0 @@
-<?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;
-
-use Symfony\Component\BrowserKit\Client as BaseClient;
-use Symfony\Component\BrowserKit\Request as DomRequest;
-use Symfony\Component\BrowserKit\Response as DomResponse;
-use Symfony\Component\BrowserKit\Cookie as DomCookie;
-use Symfony\Component\BrowserKit\History;
-use Symfony\Component\BrowserKit\CookieJar;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Client simulates a browser and makes requests to a Kernel object.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Client extends BaseClient
-{
-    protected $kernel;
-
-    /**
-     * Constructor.
-     *
-     * @param HttpKernelInterface $kernel    An HttpKernel instance
-     * @param array               $server    The server parameters (equivalent of $_SERVER)
-     * @param History             $history   A History instance to store the browser history
-     * @param CookieJar           $cookieJar A CookieJar instance to store the cookies
-     */
-    public function __construct(HttpKernelInterface $kernel, array $server = array(), History $history = null, CookieJar $cookieJar = null)
-    {
-        // These class properties must be set before calling the parent constructor, as it may depend on it.
-        $this->kernel = $kernel;
-        $this->followRedirects = false;
-
-        parent::__construct($server, $history, $cookieJar);
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return Request|null A Request instance
-     */
-    public function getRequest()
-    {
-        return parent::getRequest();
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return Response|null A Response instance
-     */
-    public function getResponse()
-    {
-        return parent::getResponse();
-    }
-
-    /**
-     * Makes a request.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return Response A Response instance
-     */
-    protected function doRequest($request)
-    {
-        $response = $this->kernel->handle($request);
-
-        if ($this->kernel instanceof TerminableInterface) {
-            $this->kernel->terminate($request, $response);
-        }
-
-        return $response;
-    }
-
-    /**
-     * Returns the script to execute when the request must be insulated.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return string
-     */
-    protected function getScript($request)
-    {
-        $kernel = str_replace("'", "\\'", serialize($this->kernel));
-        $request = str_replace("'", "\\'", serialize($request));
-
-        $r = new \ReflectionClass('\\Symfony\\Component\\ClassLoader\\ClassLoader');
-        $requirePath = str_replace("'", "\\'", $r->getFileName());
-        $symfonyPath = str_replace("'", "\\'", dirname(dirname(dirname(__DIR__))));
-        $errorReporting = error_reporting();
-
-        $code = <<<EOF
-<?php
-
-error_reporting($errorReporting & ~E_USER_DEPRECATED);
-
-require_once '$requirePath';
-
-\$loader = new Symfony\Component\ClassLoader\ClassLoader();
-\$loader->addPrefix('Symfony', '$symfonyPath');
-\$loader->register();
-
-\$kernel = unserialize('$kernel');
-\$request = unserialize('$request');
-EOF;
-
-        return $code.$this->getHandleScript();
-    }
-
-    protected function getHandleScript()
-    {
-        return <<<'EOF'
-$response = $kernel->handle($request);
-
-if ($kernel instanceof Symfony\Component\HttpKernel\TerminableInterface) {
-    $kernel->terminate($request, $response);
-}
-
-echo serialize($response);
-EOF;
-    }
-
-    /**
-     * Converts the BrowserKit request to a HttpKernel request.
-     *
-     * @param DomRequest $request A DomRequest instance
-     *
-     * @return Request A Request instance
-     */
-    protected function filterRequest(DomRequest $request)
-    {
-        $httpRequest = Request::create($request->getUri(), $request->getMethod(), $request->getParameters(), $request->getCookies(), $request->getFiles(), $request->getServer(), $request->getContent());
-
-        foreach ($this->filterFiles($httpRequest->files->all()) as $key => $value) {
-            $httpRequest->files->set($key, $value);
-        }
-
-        return $httpRequest;
-    }
-
-    /**
-     * Filters an array of files.
-     *
-     * This method created test instances of UploadedFile so that the move()
-     * method can be called on those instances.
-     *
-     * If the size of a file is greater than the allowed size (from php.ini) then
-     * an invalid UploadedFile is returned with an error set to UPLOAD_ERR_INI_SIZE.
-     *
-     * @see UploadedFile
-     *
-     * @param array $files An array of files
-     *
-     * @return array An array with all uploaded files marked as already moved
-     */
-    protected function filterFiles(array $files)
-    {
-        $filtered = array();
-        foreach ($files as $key => $value) {
-            if (is_array($value)) {
-                $filtered[$key] = $this->filterFiles($value);
-            } elseif ($value instanceof UploadedFile) {
-                if ($value->isValid() && $value->getSize() > UploadedFile::getMaxFilesize()) {
-                    $filtered[$key] = new UploadedFile(
-                        '',
-                        $value->getClientOriginalName(),
-                        $value->getClientMimeType(),
-                        0,
-                        UPLOAD_ERR_INI_SIZE,
-                        true
-                    );
-                } else {
-                    $filtered[$key] = new UploadedFile(
-                        $value->getPathname(),
-                        $value->getClientOriginalName(),
-                        $value->getClientMimeType(),
-                        $value->getClientSize(),
-                        $value->getError(),
-                        true
-                    );
-                }
-            }
-        }
-
-        return $filtered;
-    }
-
-    /**
-     * Converts the HttpKernel response to a BrowserKit response.
-     *
-     * @param Response $response A Response instance
-     *
-     * @return DomResponse A DomResponse instance
-     */
-    protected function filterResponse($response)
-    {
-        $headers = $response->headers->all();
-        if ($response->headers->getCookies()) {
-            $cookies = array();
-            foreach ($response->headers->getCookies() as $cookie) {
-                $cookies[] = new DomCookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
-            }
-            $headers['Set-Cookie'] = $cookies;
-        }
-
-        // this is needed to support StreamedResponse
-        ob_start();
-        $response->sendContent();
-        $content = ob_get_clean();
-
-        return new DomResponse($content, $response->getStatusCode(), $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Config/EnvParametersResource.php b/vendor/symfony/http-kernel/Config/EnvParametersResource.php
deleted file mode 100644
index 5f54450..0000000
--- a/vendor/symfony/http-kernel/Config/EnvParametersResource.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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\Config;
-
-use Symfony\Component\Config\Resource\ResourceInterface;
-
-/**
- * EnvParametersResource represents resources stored in prefixed environment variables.
- *
- * @author Chris Wilkinson <chriswilkinson84@gmail.com>
- */
-class EnvParametersResource implements ResourceInterface, \Serializable
-{
-    /**
-     * @var string
-     */
-    private $prefix;
-
-    /**
-     * @var string
-     */
-    private $variables;
-
-    /**
-     * Constructor.
-     *
-     * @param string $prefix
-     */
-    public function __construct($prefix)
-    {
-        $this->prefix = $prefix;
-        $this->variables = $this->findVariables();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        return serialize($this->getResource());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getResource()
-    {
-        return array('prefix' => $this->prefix, 'variables' => $this->variables);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isFresh($timestamp)
-    {
-        return $this->findVariables() === $this->variables;
-    }
-
-    public function serialize()
-    {
-        return serialize(array('prefix' => $this->prefix, 'variables' => $this->variables));
-    }
-
-    public function unserialize($serialized)
-    {
-        $unserialized = unserialize($serialized);
-
-        $this->prefix = $unserialized['prefix'];
-        $this->variables = $unserialized['variables'];
-    }
-
-    private function findVariables()
-    {
-        $variables = array();
-
-        foreach ($_SERVER as $key => $value) {
-            if (0 === strpos($key, $this->prefix)) {
-                $variables[$key] = $value;
-            }
-        }
-
-        ksort($variables);
-
-        return $variables;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Config/FileLocator.php b/vendor/symfony/http-kernel/Config/FileLocator.php
deleted file mode 100644
index 169c9ad..0000000
--- a/vendor/symfony/http-kernel/Config/FileLocator.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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\Config;
-
-use Symfony\Component\Config\FileLocator as BaseFileLocator;
-use Symfony\Component\HttpKernel\KernelInterface;
-
-/**
- * FileLocator uses the KernelInterface to locate resources in bundles.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FileLocator extends BaseFileLocator
-{
-    private $kernel;
-    private $path;
-
-    /**
-     * Constructor.
-     *
-     * @param KernelInterface $kernel A KernelInterface instance
-     * @param null|string     $path   The path the global resource directory
-     * @param array           $paths  An array of paths where to look for resources
-     */
-    public function __construct(KernelInterface $kernel, $path = null, array $paths = array())
-    {
-        $this->kernel = $kernel;
-        if (null !== $path) {
-            $this->path = $path;
-            $paths[] = $path;
-        }
-
-        parent::__construct($paths);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function locate($file, $currentPath = null, $first = true)
-    {
-        if (isset($file[0]) && '@' === $file[0]) {
-            return $this->kernel->locateResource($file, $this->path, $first);
-        }
-
-        return parent::locate($file, $currentPath, $first);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ControllerReference.php b/vendor/symfony/http-kernel/Controller/ControllerReference.php
deleted file mode 100644
index 3d1592e..0000000
--- a/vendor/symfony/http-kernel/Controller/ControllerReference.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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\Controller;
-
-use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
-
-/**
- * Acts as a marker and a data holder for a Controller.
- *
- * Some methods in Symfony accept both a URI (as a string) or a controller as
- * an argument. In the latter case, instead of passing an array representing
- * the controller, you can use an instance of this class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @see FragmentRendererInterface
- */
-class ControllerReference
-{
-    public $controller;
-    public $attributes = array();
-    public $query = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $controller The controller name
-     * @param array  $attributes An array of parameters to add to the Request attributes
-     * @param array  $query      An array of parameters to add to the Request query string
-     */
-    public function __construct($controller, array $attributes = array(), array $query = array())
-    {
-        $this->controller = $controller;
-        $this->attributes = $attributes;
-        $this->query = $query;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ControllerResolver.php b/vendor/symfony/http-kernel/Controller/ControllerResolver.php
deleted file mode 100644
index 0be0b68..0000000
--- a/vendor/symfony/http-kernel/Controller/ControllerResolver.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?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\Controller;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * ControllerResolver.
- *
- * This implementation uses the '_controller' request attribute to determine
- * the controller to execute and uses the request attributes to determine
- * the controller method arguments.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ControllerResolver implements ControllerResolverInterface
-{
-    private $logger;
-
-    /**
-     * Constructor.
-     *
-     * @param LoggerInterface $logger A LoggerInterface instance
-     */
-    public function __construct(LoggerInterface $logger = null)
-    {
-        $this->logger = $logger;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * This method looks for a '_controller' request attribute that represents
-     * the controller name (a string like ClassName::MethodName).
-     */
-    public function getController(Request $request)
-    {
-        if (!$controller = $request->attributes->get('_controller')) {
-            if (null !== $this->logger) {
-                $this->logger->warning('Unable to look for the controller as the "_controller" parameter is missing.');
-            }
-
-            return false;
-        }
-
-        if (is_array($controller)) {
-            return $controller;
-        }
-
-        if (is_object($controller)) {
-            if (method_exists($controller, '__invoke')) {
-                return $controller;
-            }
-
-            throw new \InvalidArgumentException(sprintf('Controller "%s" for URI "%s" is not callable.', get_class($controller), $request->getPathInfo()));
-        }
-
-        if (false === strpos($controller, ':')) {
-            if (method_exists($controller, '__invoke')) {
-                return $this->instantiateController($controller);
-            } elseif (function_exists($controller)) {
-                return $controller;
-            }
-        }
-
-        $callable = $this->createController($controller);
-
-        if (!is_callable($callable)) {
-            throw new \InvalidArgumentException(sprintf('Controller "%s" for URI "%s" is not callable.', $controller, $request->getPathInfo()));
-        }
-
-        return $callable;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getArguments(Request $request, $controller)
-    {
-        if (is_array($controller)) {
-            $r = new \ReflectionMethod($controller[0], $controller[1]);
-        } elseif (is_object($controller) && !$controller instanceof \Closure) {
-            $r = new \ReflectionObject($controller);
-            $r = $r->getMethod('__invoke');
-        } else {
-            $r = new \ReflectionFunction($controller);
-        }
-
-        return $this->doGetArguments($request, $controller, $r->getParameters());
-    }
-
-    protected function doGetArguments(Request $request, $controller, array $parameters)
-    {
-        $attributes = $request->attributes->all();
-        $arguments = array();
-        foreach ($parameters as $param) {
-            if (array_key_exists($param->name, $attributes)) {
-                $arguments[] = $attributes[$param->name];
-            } elseif ($param->getClass() && $param->getClass()->isInstance($request)) {
-                $arguments[] = $request;
-            } elseif ($param->isDefaultValueAvailable()) {
-                $arguments[] = $param->getDefaultValue();
-            } else {
-                if (is_array($controller)) {
-                    $repr = sprintf('%s::%s()', get_class($controller[0]), $controller[1]);
-                } elseif (is_object($controller)) {
-                    $repr = get_class($controller);
-                } else {
-                    $repr = $controller;
-                }
-
-                throw new \RuntimeException(sprintf('Controller "%s" requires that you provide a value for the "$%s" argument (because there is no default value or because there is a non optional argument after this one).', $repr, $param->name));
-            }
-        }
-
-        return $arguments;
-    }
-
-    /**
-     * Returns a callable for the given controller.
-     *
-     * @param string $controller A Controller string
-     *
-     * @return callable A PHP callable
-     *
-     * @throws \InvalidArgumentException
-     */
-    protected function createController($controller)
-    {
-        if (false === strpos($controller, '::')) {
-            throw new \InvalidArgumentException(sprintf('Unable to find controller "%s".', $controller));
-        }
-
-        list($class, $method) = explode('::', $controller, 2);
-
-        if (!class_exists($class)) {
-            throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class));
-        }
-
-        return array($this->instantiateController($class), $method);
-    }
-
-    /**
-     * Returns an instantiated controller.
-     *
-     * @param string $class A class name
-     *
-     * @return object
-     */
-    protected function instantiateController($class)
-    {
-        return new $class();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Controller/ControllerResolverInterface.php b/vendor/symfony/http-kernel/Controller/ControllerResolverInterface.php
deleted file mode 100644
index f7b19ed..0000000
--- a/vendor/symfony/http-kernel/Controller/ControllerResolverInterface.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?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\Controller;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * A ControllerResolverInterface implementation knows how to determine the
- * controller to execute based on a Request object.
- *
- * It can also determine the arguments to pass to the Controller.
- *
- * A Controller can be any valid PHP callable.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ControllerResolverInterface
-{
-    /**
-     * Returns the Controller instance associated with a Request.
-     *
-     * As several resolvers can exist for a single application, a resolver must
-     * return false when it is not able to determine the controller.
-     *
-     * The resolver must only throw an exception when it should be able to load
-     * controller but cannot because of some errors made by the developer.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return callable|false A PHP callable representing the Controller,
-     *                        or false if this resolver is not able to determine the controller
-     *
-     * @throws \LogicException If the controller can't be found
-     */
-    public function getController(Request $request);
-
-    /**
-     * Returns the arguments to pass to the controller.
-     *
-     * @param Request  $request    A Request instance
-     * @param callable $controller A PHP callable
-     *
-     * @return array An array of arguments to pass to the controller
-     *
-     * @throws \RuntimeException When value for argument given is not provided
-     */
-    public function getArguments(Request $request, $controller);
-}
diff --git a/vendor/symfony/http-kernel/Controller/TraceableControllerResolver.php b/vendor/symfony/http-kernel/Controller/TraceableControllerResolver.php
deleted file mode 100644
index f8de31c..0000000
--- a/vendor/symfony/http-kernel/Controller/TraceableControllerResolver.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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\Controller;
-
-use Symfony\Component\Stopwatch\Stopwatch;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * TraceableControllerResolver.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TraceableControllerResolver implements ControllerResolverInterface
-{
-    private $resolver;
-    private $stopwatch;
-
-    /**
-     * Constructor.
-     *
-     * @param ControllerResolverInterface $resolver  A ControllerResolverInterface instance
-     * @param Stopwatch                   $stopwatch A Stopwatch instance
-     */
-    public function __construct(ControllerResolverInterface $resolver, Stopwatch $stopwatch)
-    {
-        $this->resolver = $resolver;
-        $this->stopwatch = $stopwatch;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getController(Request $request)
-    {
-        $e = $this->stopwatch->start('controller.get_callable');
-
-        $ret = $this->resolver->getController($request);
-
-        $e->stop();
-
-        return $ret;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getArguments(Request $request, $controller)
-    {
-        $e = $this->stopwatch->start('controller.get_arguments');
-
-        $ret = $this->resolver->getArguments($request, $controller);
-
-        $e->stop();
-
-        return $ret;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php b/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php
deleted file mode 100644
index 853adcb..0000000
--- a/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php
+++ /dev/null
@@ -1,291 +0,0 @@
-<?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\HttpKernel\KernelInterface;
-use Symfony\Component\HttpKernel\Kernel;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * ConfigDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ConfigDataCollector extends DataCollector
-{
-    /**
-     * @var KernelInterface
-     */
-    private $kernel;
-    private $name;
-    private $version;
-    private $cacheVersionInfo = true;
-
-    /**
-     * Constructor.
-     *
-     * @param string $name    The name of the application using the web profiler
-     * @param string $version The version of the application using the web profiler
-     */
-    public function __construct($name = null, $version = null)
-    {
-        $this->name = $name;
-        $this->version = $version;
-    }
-
-    /**
-     * Sets the Kernel associated with this Request.
-     *
-     * @param KernelInterface $kernel A KernelInterface instance
-     */
-    public function setKernel(KernelInterface $kernel = null)
-    {
-        $this->kernel = $kernel;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        $this->data = array(
-            'app_name' => $this->name,
-            'app_version' => $this->version,
-            'token' => $response->headers->get('X-Debug-Token'),
-            'symfony_version' => Kernel::VERSION,
-            'symfony_state' => 'unknown',
-            'name' => isset($this->kernel) ? $this->kernel->getName() : 'n/a',
-            'env' => isset($this->kernel) ? $this->kernel->getEnvironment() : 'n/a',
-            'debug' => isset($this->kernel) ? $this->kernel->isDebug() : 'n/a',
-            'php_version' => PHP_VERSION,
-            'xdebug_enabled' => extension_loaded('xdebug'),
-            'eaccel_enabled' => extension_loaded('eaccelerator') && ini_get('eaccelerator.enable'),
-            'apc_enabled' => extension_loaded('apc') && ini_get('apc.enabled'),
-            'xcache_enabled' => extension_loaded('xcache') && ini_get('xcache.cacher'),
-            'wincache_enabled' => extension_loaded('wincache') && ini_get('wincache.ocenabled'),
-            'zend_opcache_enabled' => extension_loaded('Zend OPcache') && ini_get('opcache.enable'),
-            'bundles' => array(),
-            'sapi_name' => php_sapi_name(),
-        );
-
-        if (isset($this->kernel)) {
-            foreach ($this->kernel->getBundles() as $name => $bundle) {
-                $this->data['bundles'][$name] = $bundle->getPath();
-            }
-
-            $this->data['symfony_state'] = $this->determineSymfonyState();
-        }
-    }
-
-    public function getApplicationName()
-    {
-        return $this->data['app_name'];
-    }
-
-    public function getApplicationVersion()
-    {
-        return $this->data['app_version'];
-    }
-
-    /**
-     * Gets the token.
-     *
-     * @return string The token
-     */
-    public function getToken()
-    {
-        return $this->data['token'];
-    }
-
-    /**
-     * Gets the Symfony version.
-     *
-     * @return string The Symfony version
-     */
-    public function getSymfonyVersion()
-    {
-        return $this->data['symfony_version'];
-    }
-
-    /**
-     * Returns the state of the current Symfony release.
-     *
-     * @return string One of: unknown, dev, stable, eom, eol
-     */
-    public function getSymfonyState()
-    {
-        return $this->data['symfony_state'];
-    }
-
-    public function setCacheVersionInfo($cacheVersionInfo)
-    {
-        $this->cacheVersionInfo = $cacheVersionInfo;
-    }
-
-    /**
-     * Gets the PHP version.
-     *
-     * @return string The PHP version
-     */
-    public function getPhpVersion()
-    {
-        return $this->data['php_version'];
-    }
-
-    /**
-     * Gets the application name.
-     *
-     * @return string The application name
-     */
-    public function getAppName()
-    {
-        return $this->data['name'];
-    }
-
-    /**
-     * Gets the environment.
-     *
-     * @return string The environment
-     */
-    public function getEnv()
-    {
-        return $this->data['env'];
-    }
-
-    /**
-     * Returns true if the debug is enabled.
-     *
-     * @return bool true if debug is enabled, false otherwise
-     */
-    public function isDebug()
-    {
-        return $this->data['debug'];
-    }
-
-    /**
-     * Returns true if the XDebug is enabled.
-     *
-     * @return bool true if XDebug is enabled, false otherwise
-     */
-    public function hasXDebug()
-    {
-        return $this->data['xdebug_enabled'];
-    }
-
-    /**
-     * Returns true if EAccelerator is enabled.
-     *
-     * @return bool true if EAccelerator is enabled, false otherwise
-     */
-    public function hasEAccelerator()
-    {
-        return $this->data['eaccel_enabled'];
-    }
-
-    /**
-     * Returns true if APC is enabled.
-     *
-     * @return bool true if APC is enabled, false otherwise
-     */
-    public function hasApc()
-    {
-        return $this->data['apc_enabled'];
-    }
-
-    /**
-     * Returns true if Zend OPcache is enabled.
-     *
-     * @return bool true if Zend OPcache is enabled, false otherwise
-     */
-    public function hasZendOpcache()
-    {
-        return $this->data['zend_opcache_enabled'];
-    }
-
-    /**
-     * Returns true if XCache is enabled.
-     *
-     * @return bool true if XCache is enabled, false otherwise
-     */
-    public function hasXCache()
-    {
-        return $this->data['xcache_enabled'];
-    }
-
-    /**
-     * Returns true if WinCache is enabled.
-     *
-     * @return bool true if WinCache is enabled, false otherwise
-     */
-    public function hasWinCache()
-    {
-        return $this->data['wincache_enabled'];
-    }
-
-    /**
-     * Returns true if any accelerator is enabled.
-     *
-     * @return bool true if any accelerator is enabled, false otherwise
-     */
-    public function hasAccelerator()
-    {
-        return $this->hasApc() || $this->hasZendOpcache() || $this->hasEAccelerator() || $this->hasXCache() || $this->hasWinCache();
-    }
-
-    public function getBundles()
-    {
-        return $this->data['bundles'];
-    }
-
-    /**
-     * Gets the PHP SAPI name.
-     *
-     * @return string The environment
-     */
-    public function getSapiName()
-    {
-        return $this->data['sapi_name'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'config';
-    }
-
-    /**
-     * Tries to retrieve information about the current Symfony version.
-     *
-     * @return string One of: dev, stable, eom, eol
-     */
-    private function determineSymfonyState()
-    {
-        $now = new \DateTime();
-        $eom = \DateTime::createFromFormat('m/Y', Kernel::END_OF_MAINTENANCE)->modify('last day of this month');
-        $eol = \DateTime::createFromFormat('m/Y', Kernel::END_OF_LIFE)->modify('last day of this month');
-
-        if ($now > $eol) {
-            $versionState = 'eol';
-        } elseif ($now > $eom) {
-            $versionState = 'eom';
-        } elseif ('' !== Kernel::EXTRA_VERSION) {
-            $versionState = 'dev';
-        } else {
-            $versionState = 'stable';
-        }
-
-        return $versionState;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollector.php b/vendor/symfony/http-kernel/DataCollector/DataCollector.php
deleted file mode 100644
index 5dca652..0000000
--- a/vendor/symfony/http-kernel/DataCollector/DataCollector.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\HttpKernel\DataCollector\Util\ValueExporter;
-
-/**
- * DataCollector.
- *
- * Children of this class must store the collected data in the data property.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bernhard Schussek <bschussek@symfony.com>
- */
-abstract class DataCollector implements DataCollectorInterface, \Serializable
-{
-    protected $data = array();
-
-    /**
-     * @var ValueExporter
-     */
-    private $valueExporter;
-
-    public function serialize()
-    {
-        return serialize($this->data);
-    }
-
-    public function unserialize($data)
-    {
-        $this->data = unserialize($data);
-    }
-
-    /**
-     * Converts a PHP variable to a string.
-     *
-     * @param mixed $var A PHP variable
-     *
-     * @return string The string representation of the variable
-     */
-    protected function varToString($var)
-    {
-        if (null === $this->valueExporter) {
-            $this->valueExporter = new ValueExporter();
-        }
-
-        return $this->valueExporter->exportValue($var);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php b/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php
deleted file mode 100644
index 2820ad5..0000000
--- a/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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;
-
-/**
- * DataCollectorInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface DataCollectorInterface
-{
-    /**
-     * Collects data for the given Request and Response.
-     *
-     * @param Request    $request   A Request instance
-     * @param Response   $response  A Response instance
-     * @param \Exception $exception An Exception instance
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null);
-
-    /**
-     * Returns the name of the collector.
-     *
-     * @return string The collector name
-     */
-    public function getName();
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php b/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php
deleted file mode 100644
index c50bf7a..0000000
--- a/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php
+++ /dev/null
@@ -1,304 +0,0 @@
-<?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\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\Stopwatch\Stopwatch;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-use Symfony\Component\VarDumper\Dumper\CliDumper;
-use Symfony\Component\VarDumper\Dumper\HtmlDumper;
-use Symfony\Component\VarDumper\Dumper\DataDumperInterface;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DumpDataCollector extends DataCollector implements DataDumperInterface
-{
-    private $stopwatch;
-    private $fileLinkFormat;
-    private $dataCount = 0;
-    private $isCollected = true;
-    private $clonesCount = 0;
-    private $clonesIndex = 0;
-    private $rootRefs;
-    private $charset;
-    private $requestStack;
-    private $dumper;
-    private $dumperIsInjected;
-
-    public function __construct(Stopwatch $stopwatch = null, $fileLinkFormat = null, $charset = null, RequestStack $requestStack = null, DataDumperInterface $dumper = null)
-    {
-        $this->stopwatch = $stopwatch;
-        $this->fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
-        $this->charset = $charset ?: ini_get('php.output_encoding') ?: ini_get('default_charset') ?: 'UTF-8';
-        $this->requestStack = $requestStack;
-        $this->dumper = $dumper;
-        $this->dumperIsInjected = null !== $dumper;
-
-        // All clones share these properties by reference:
-        $this->rootRefs = array(
-            &$this->data,
-            &$this->dataCount,
-            &$this->isCollected,
-            &$this->clonesCount,
-        );
-    }
-
-    public function __clone()
-    {
-        $this->clonesIndex = ++$this->clonesCount;
-    }
-
-    public function dump(Data $data)
-    {
-        if ($this->stopwatch) {
-            $this->stopwatch->start('dump');
-        }
-        if ($this->isCollected) {
-            $this->isCollected = false;
-        }
-
-        $trace = DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS;
-        if (PHP_VERSION_ID >= 50400) {
-            $trace = debug_backtrace($trace, 7);
-        } else {
-            $trace = debug_backtrace($trace);
-        }
-
-        $file = $trace[0]['file'];
-        $line = $trace[0]['line'];
-        $name = false;
-        $fileExcerpt = false;
-
-        for ($i = 1; $i < 7; ++$i) {
-            if (isset($trace[$i]['class'], $trace[$i]['function'])
-                && 'dump' === $trace[$i]['function']
-                && 'Symfony\Component\VarDumper\VarDumper' === $trace[$i]['class']
-            ) {
-                $file = $trace[$i]['file'];
-                $line = $trace[$i]['line'];
-
-                while (++$i < 7) {
-                    if (isset($trace[$i]['function'], $trace[$i]['file']) && empty($trace[$i]['class']) && 0 !== strpos($trace[$i]['function'], 'call_user_func')) {
-                        $file = $trace[$i]['file'];
-                        $line = $trace[$i]['line'];
-
-                        break;
-                    } elseif (isset($trace[$i]['object']) && $trace[$i]['object'] instanceof \Twig_Template) {
-                        $info = $trace[$i]['object'];
-                        $name = $info->getTemplateName();
-                        $src = method_exists($info, 'getSource') ? $info->getSource() : $info->getEnvironment()->getLoader()->getSource($name);
-                        $info = $info->getDebugInfo();
-                        if (null !== $src && isset($info[$trace[$i - 1]['line']])) {
-                            $file = false;
-                            $line = $info[$trace[$i - 1]['line']];
-                            $src = explode("\n", $src);
-                            $fileExcerpt = array();
-
-                            for ($i = max($line - 3, 1), $max = min($line + 3, count($src)); $i <= $max; ++$i) {
-                                $fileExcerpt[] = '<li'.($i === $line ? ' class="selected"' : '').'><code>'.$this->htmlEncode($src[$i - 1]).'</code></li>';
-                            }
-
-                            $fileExcerpt = '<ol start="'.max($line - 3, 1).'">'.implode("\n", $fileExcerpt).'</ol>';
-                        }
-                        break;
-                    }
-                }
-                break;
-            }
-        }
-
-        if (false === $name) {
-            $name = str_replace('\\', '/', $file);
-            $name = substr($name, strrpos($name, '/') + 1);
-        }
-
-        if ($this->dumper) {
-            $this->doDump($data, $name, $file, $line);
-        }
-
-        $this->data[] = compact('data', 'name', 'file', 'line', 'fileExcerpt');
-        ++$this->dataCount;
-
-        if ($this->stopwatch) {
-            $this->stopwatch->stop('dump');
-        }
-    }
-
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        // Sub-requests and programmatic calls stay in the collected profile.
-        if ($this->dumper || ($this->requestStack && $this->requestStack->getMasterRequest() !== $request) || $request->isXmlHttpRequest() || $request->headers->has('Origin')) {
-            return;
-        }
-
-        // In all other conditions that remove the web debug toolbar, dumps are written on the output.
-        if (!$this->requestStack
-            || !$response->headers->has('X-Debug-Token')
-            || $response->isRedirection()
-            || ($response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html'))
-            || 'html' !== $request->getRequestFormat()
-            || false === strripos($response->getContent(), '</body>')
-        ) {
-            if ($response->headers->has('Content-Type') && false !== strpos($response->headers->get('Content-Type'), 'html')) {
-                $this->dumper = new HtmlDumper('php://output', $this->charset);
-            } else {
-                $this->dumper = new CliDumper('php://output', $this->charset);
-            }
-
-            foreach ($this->data as $dump) {
-                $this->doDump($dump['data'], $dump['name'], $dump['file'], $dump['line']);
-            }
-        }
-    }
-
-    public function serialize()
-    {
-        if ($this->clonesCount !== $this->clonesIndex) {
-            return 'a:0:{}';
-        }
-
-        $ser = serialize($this->data);
-        $this->data = array();
-        $this->dataCount = 0;
-        $this->isCollected = true;
-        if (!$this->dumperIsInjected) {
-            $this->dumper = null;
-        }
-
-        return $ser;
-    }
-
-    public function unserialize($data)
-    {
-        parent::unserialize($data);
-        $this->dataCount = count($this->data);
-        self::__construct($this->stopwatch);
-    }
-
-    public function getDumpsCount()
-    {
-        return $this->dataCount;
-    }
-
-    public function getDumps($format, $maxDepthLimit = -1, $maxItemsPerDepth = -1)
-    {
-        $data = fopen('php://memory', 'r+b');
-
-        if ('html' === $format) {
-            $dumper = new HtmlDumper($data, $this->charset);
-        } else {
-            throw new \InvalidArgumentException(sprintf('Invalid dump format: %s', $format));
-        }
-        $dumps = array();
-
-        foreach ($this->data as $dump) {
-            if (method_exists($dump['data'], 'withMaxDepth')) {
-                $dumper->dump($dump['data']->withMaxDepth($maxDepthLimit)->withMaxItemsPerDepth($maxItemsPerDepth));
-            } else {
-                // getLimitedClone is @deprecated, to be removed in 3.0
-                $dumper->dump($dump['data']->getLimitedClone($maxDepthLimit, $maxItemsPerDepth));
-            }
-            rewind($data);
-            $dump['data'] = stream_get_contents($data);
-            ftruncate($data, 0);
-            rewind($data);
-            $dumps[] = $dump;
-        }
-
-        return $dumps;
-    }
-
-    public function getName()
-    {
-        return 'dump';
-    }
-
-    public function __destruct()
-    {
-        if (0 === $this->clonesCount-- && !$this->isCollected && $this->data) {
-            $this->clonesCount = 0;
-            $this->isCollected = true;
-
-            $h = headers_list();
-            $i = count($h);
-            array_unshift($h, 'Content-Type: '.ini_get('default_mimetype'));
-            while (0 !== stripos($h[$i], 'Content-Type:')) {
-                --$i;
-            }
-
-            if ('cli' !== PHP_SAPI && stripos($h[$i], 'html')) {
-                $this->dumper = new HtmlDumper('php://output', $this->charset);
-            } else {
-                $this->dumper = new CliDumper('php://output', $this->charset);
-            }
-
-            foreach ($this->data as $i => $dump) {
-                $this->data[$i] = null;
-                $this->doDump($dump['data'], $dump['name'], $dump['file'], $dump['line']);
-            }
-
-            $this->data = array();
-            $this->dataCount = 0;
-        }
-    }
-
-    private function doDump($data, $name, $file, $line)
-    {
-        if (PHP_VERSION_ID >= 50400 && $this->dumper instanceof CliDumper) {
-            $contextDumper = function ($name, $file, $line, $fileLinkFormat) {
-                if ($this instanceof HtmlDumper) {
-                    if ('' !== $file) {
-                        $s = $this->style('meta', '%s');
-                        $name = strip_tags($this->style('', $name));
-                        $file = strip_tags($this->style('', $file));
-                        if ($fileLinkFormat) {
-                            $link = strtr(strip_tags($this->style('', $fileLinkFormat)), array('%f' => $file, '%l' => (int) $line));
-                            $name = sprintf('<a href="%s" title="%s">'.$s.'</a>', $link, $file, $name);
-                        } else {
-                            $name = sprintf('<abbr title="%s">'.$s.'</abbr>', $file, $name);
-                        }
-                    } else {
-                        $name = $this->style('meta', $name);
-                    }
-                    $this->line = $name.' on line '.$this->style('meta', $line).':';
-                } else {
-                    $this->line = $this->style('meta', $name).' on line '.$this->style('meta', $line).':';
-                }
-                $this->dumpLine(0);
-            };
-            $contextDumper = $contextDumper->bindTo($this->dumper, $this->dumper);
-            $contextDumper($name, $file, $line, $this->fileLinkFormat);
-        } else {
-            $cloner = new VarCloner();
-            $this->dumper->dump($cloner->cloneVar($name.' on line '.$line.':'));
-        }
-        $this->dumper->dump($data);
-    }
-
-    private function htmlEncode($s)
-    {
-        $html = '';
-
-        $dumper = new HtmlDumper(function ($line) use (&$html) {$html .= $line;}, $this->charset);
-        $dumper->setDumpHeader('');
-        $dumper->setDumpBoundaries('', '');
-
-        $cloner = new VarCloner();
-        $dumper->dump($cloner->cloneVar($s));
-
-        return substr(strip_tags($html), 1, -1);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php b/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php
deleted file mode 100644
index 0a87bc3..0000000
--- a/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?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;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcherInterface;
-
-/**
- * EventDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class EventDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    protected $dispatcher;
-
-    public function __construct(EventDispatcherInterface $dispatcher = null)
-    {
-        $this->dispatcher = $dispatcher;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        $this->data = array(
-            'called_listeners' => array(),
-            'not_called_listeners' => array(),
-        );
-    }
-
-    public function lateCollect()
-    {
-        if ($this->dispatcher instanceof TraceableEventDispatcherInterface) {
-            $this->setCalledListeners($this->dispatcher->getCalledListeners());
-            $this->setNotCalledListeners($this->dispatcher->getNotCalledListeners());
-        }
-    }
-
-    /**
-     * Sets the called listeners.
-     *
-     * @param array $listeners An array of called listeners
-     *
-     * @see TraceableEventDispatcherInterface
-     */
-    public function setCalledListeners(array $listeners)
-    {
-        $this->data['called_listeners'] = $listeners;
-    }
-
-    /**
-     * Gets the called listeners.
-     *
-     * @return array An array of called listeners
-     *
-     * @see TraceableEventDispatcherInterface
-     */
-    public function getCalledListeners()
-    {
-        return $this->data['called_listeners'];
-    }
-
-    /**
-     * Sets the not called listeners.
-     *
-     * @param array $listeners An array of not called listeners
-     *
-     * @see TraceableEventDispatcherInterface
-     */
-    public function setNotCalledListeners(array $listeners)
-    {
-        $this->data['not_called_listeners'] = $listeners;
-    }
-
-    /**
-     * Gets the not called listeners.
-     *
-     * @return array An array of not called listeners
-     *
-     * @see TraceableEventDispatcherInterface
-     */
-    public function getNotCalledListeners()
-    {
-        return $this->data['not_called_listeners'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'events';
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php b/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php
deleted file mode 100644
index 9fe8264..0000000
--- a/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?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\Debug\Exception\FlattenException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * ExceptionDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ExceptionDataCollector extends DataCollector
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        if (null !== $exception) {
-            $this->data = array(
-                'exception' => FlattenException::create($exception),
-            );
-        }
-    }
-
-    /**
-     * Checks if the exception is not null.
-     *
-     * @return bool true if the exception is not null, false otherwise
-     */
-    public function hasException()
-    {
-        return isset($this->data['exception']);
-    }
-
-    /**
-     * Gets the exception.
-     *
-     * @return \Exception The exception
-     */
-    public function getException()
-    {
-        return $this->data['exception'];
-    }
-
-    /**
-     * Gets the exception message.
-     *
-     * @return string The exception message
-     */
-    public function getMessage()
-    {
-        return $this->data['exception']->getMessage();
-    }
-
-    /**
-     * Gets the exception code.
-     *
-     * @return int The exception code
-     */
-    public function getCode()
-    {
-        return $this->data['exception']->getCode();
-    }
-
-    /**
-     * Gets the status code.
-     *
-     * @return int The status code
-     */
-    public function getStatusCode()
-    {
-        return $this->data['exception']->getStatusCode();
-    }
-
-    /**
-     * Gets the exception trace.
-     *
-     * @return array The exception trace
-     */
-    public function getTrace()
-    {
-        return $this->data['exception']->getTrace();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'exception';
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/LateDataCollectorInterface.php b/vendor/symfony/http-kernel/DataCollector/LateDataCollectorInterface.php
deleted file mode 100644
index 012332d..0000000
--- a/vendor/symfony/http-kernel/DataCollector/LateDataCollectorInterface.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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;
-
-/**
- * LateDataCollectorInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface LateDataCollectorInterface
-{
-    /**
-     * Collects data as late as possible.
-     */
-    public function lateCollect();
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php b/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php
deleted file mode 100644
index 1258434..0000000
--- a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?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;
-use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
-
-/**
- * LogDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class LoggerDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    private $logger;
-
-    public function __construct($logger = null)
-    {
-        if (null !== $logger && $logger instanceof DebugLoggerInterface) {
-            $this->logger = $logger;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        // everything is done as late as possible
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function lateCollect()
-    {
-        if (null !== $this->logger) {
-            $this->data = $this->computeErrorsCount();
-            $this->data['logs'] = $this->sanitizeLogs($this->logger->getLogs());
-        }
-    }
-
-    /**
-     * Gets the called events.
-     *
-     * @return array An array of called events
-     *
-     * @see TraceableEventDispatcherInterface
-     */
-    public function countErrors()
-    {
-        return isset($this->data['error_count']) ? $this->data['error_count'] : 0;
-    }
-
-    /**
-     * Gets the logs.
-     *
-     * @return array An array of logs
-     */
-    public function getLogs()
-    {
-        return isset($this->data['logs']) ? $this->data['logs'] : array();
-    }
-
-    public function getPriorities()
-    {
-        return isset($this->data['priorities']) ? $this->data['priorities'] : array();
-    }
-
-    public function countDeprecations()
-    {
-        return isset($this->data['deprecation_count']) ? $this->data['deprecation_count'] : 0;
-    }
-
-    public function countScreams()
-    {
-        return isset($this->data['scream_count']) ? $this->data['scream_count'] : 0;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'logger';
-    }
-
-    private function sanitizeLogs($logs)
-    {
-        $errorContextById = array();
-        $sanitizedLogs = array();
-
-        foreach ($logs as $log) {
-            $context = $this->sanitizeContext($log['context']);
-
-            if (isset($context['type'], $context['file'], $context['line'], $context['level'])) {
-                $errorId = md5("{$context['type']}/{$context['line']}/{$context['file']}\x00{$log['message']}", true);
-                $silenced = !($context['type'] & $context['level']);
-
-                if (isset($errorContextById[$errorId])) {
-                    if (isset($errorContextById[$errorId]['errorCount'])) {
-                        ++$errorContextById[$errorId]['errorCount'];
-                    } else {
-                        $errorContextById[$errorId]['errorCount'] = 2;
-                    }
-
-                    if (!$silenced && isset($errorContextById[$errorId]['scream'])) {
-                        unset($errorContextById[$errorId]['scream']);
-                        $errorContextById[$errorId]['level'] = $context['level'];
-                    }
-
-                    continue;
-                }
-
-                $errorContextById[$errorId] = &$context;
-                if ($silenced) {
-                    $context['scream'] = true;
-                }
-
-                $log['context'] = &$context;
-                unset($context);
-            } else {
-                $log['context'] = $context;
-            }
-
-            $sanitizedLogs[] = $log;
-        }
-
-        return $sanitizedLogs;
-    }
-
-    private function sanitizeContext($context)
-    {
-        if (is_array($context)) {
-            foreach ($context as $key => $value) {
-                $context[$key] = $this->sanitizeContext($value);
-            }
-
-            return $context;
-        }
-
-        if (is_resource($context)) {
-            return sprintf('Resource(%s)', get_resource_type($context));
-        }
-
-        if (is_object($context)) {
-            return sprintf('Object(%s)', get_class($context));
-        }
-
-        return $context;
-    }
-
-    private function computeErrorsCount()
-    {
-        $count = array(
-            'error_count' => $this->logger->countErrors(),
-            'deprecation_count' => 0,
-            'scream_count' => 0,
-            'priorities' => array(),
-        );
-
-        foreach ($this->logger->getLogs() as $log) {
-            if (isset($count['priorities'][$log['priority']])) {
-                ++$count['priorities'][$log['priority']]['count'];
-            } else {
-                $count['priorities'][$log['priority']] = array(
-                    'count' => 1,
-                    'name' => $log['priorityName'],
-                );
-            }
-
-            if (isset($log['context']['type'], $log['context']['level'])) {
-                if (E_DEPRECATED === $log['context']['type'] || E_USER_DEPRECATED === $log['context']['type']) {
-                    ++$count['deprecation_count'];
-                } elseif (!($log['context']['type'] & $log['context']['level'])) {
-                    ++$count['scream_count'];
-                }
-            }
-        }
-
-        ksort($count['priorities']);
-
-        return $count;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php b/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php
deleted file mode 100644
index 9385010..0000000
--- a/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?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;
-
-/**
- * MemoryDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class MemoryDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    public function __construct()
-    {
-        $this->data = array(
-            'memory' => 0,
-            'memory_limit' => $this->convertToBytes(ini_get('memory_limit')),
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        $this->updateMemoryUsage();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function lateCollect()
-    {
-        $this->updateMemoryUsage();
-    }
-
-    /**
-     * Gets the memory.
-     *
-     * @return int The memory
-     */
-    public function getMemory()
-    {
-        return $this->data['memory'];
-    }
-
-    /**
-     * Gets the PHP memory limit.
-     *
-     * @return int The memory limit
-     */
-    public function getMemoryLimit()
-    {
-        return $this->data['memory_limit'];
-    }
-
-    /**
-     * Updates the memory usage data.
-     */
-    public function updateMemoryUsage()
-    {
-        $this->data['memory'] = memory_get_peak_usage(true);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'memory';
-    }
-
-    private function convertToBytes($memoryLimit)
-    {
-        if ('-1' === $memoryLimit) {
-            return -1;
-        }
-
-        $memoryLimit = strtolower($memoryLimit);
-        $max = strtolower(ltrim($memoryLimit, '+'));
-        if (0 === strpos($max, '0x')) {
-            $max = intval($max, 16);
-        } elseif (0 === strpos($max, '0')) {
-            $max = intval($max, 8);
-        } else {
-            $max = (int) $max;
-        }
-
-        switch (substr($memoryLimit, -1)) {
-            case 't': $max *= 1024;
-            case 'g': $max *= 1024;
-            case 'm': $max *= 1024;
-            case 'k': $max *= 1024;
-        }
-
-        return $max;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php b/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php
deleted file mode 100644
index 9a499a7..0000000
--- a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php
+++ /dev/null
@@ -1,342 +0,0 @@
-<?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\ParameterBag;
-use Symfony\Component\HttpFoundation\HeaderBag;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\ResponseHeaderBag;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * RequestDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RequestDataCollector extends DataCollector implements EventSubscriberInterface
-{
-    protected $controllers;
-
-    public function __construct()
-    {
-        $this->controllers = new \SplObjectStorage();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        $responseHeaders = $response->headers->all();
-        $cookies = array();
-        foreach ($response->headers->getCookies() as $cookie) {
-            $cookies[] = $this->getCookieHeader($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
-        }
-        if (count($cookies) > 0) {
-            $responseHeaders['Set-Cookie'] = $cookies;
-        }
-
-        // attributes are serialized and as they can be anything, they need to be converted to strings.
-        $attributes = array();
-        foreach ($request->attributes->all() as $key => $value) {
-            if ('_route' === $key && is_object($value)) {
-                $attributes[$key] = $this->varToString($value->getPath());
-            } elseif ('_route_params' === $key) {
-                // we need to keep route params as an array (see getRouteParams())
-                foreach ($value as $k => $v) {
-                    $value[$k] = $this->varToString($v);
-                }
-                $attributes[$key] = $value;
-            } else {
-                $attributes[$key] = $this->varToString($value);
-            }
-        }
-
-        $content = null;
-        try {
-            $content = $request->getContent();
-        } catch (\LogicException $e) {
-            // the user already got the request content as a resource
-            $content = false;
-        }
-
-        $sessionMetadata = array();
-        $sessionAttributes = array();
-        $flashes = array();
-        if ($request->hasSession()) {
-            $session = $request->getSession();
-            if ($session->isStarted()) {
-                $sessionMetadata['Created'] = date(DATE_RFC822, $session->getMetadataBag()->getCreated());
-                $sessionMetadata['Last used'] = date(DATE_RFC822, $session->getMetadataBag()->getLastUsed());
-                $sessionMetadata['Lifetime'] = $session->getMetadataBag()->getLifetime();
-                $sessionAttributes = $session->all();
-                $flashes = $session->getFlashBag()->peekAll();
-            }
-        }
-
-        $statusCode = $response->getStatusCode();
-
-        $this->data = array(
-            'format' => $request->getRequestFormat(),
-            'content' => $content,
-            'content_type' => $response->headers->get('Content-Type', 'text/html'),
-            'status_text' => isset(Response::$statusTexts[$statusCode]) ? Response::$statusTexts[$statusCode] : '',
-            'status_code' => $statusCode,
-            'request_query' => $request->query->all(),
-            'request_request' => $request->request->all(),
-            'request_headers' => $request->headers->all(),
-            'request_server' => $request->server->all(),
-            'request_cookies' => $request->cookies->all(),
-            'request_attributes' => $attributes,
-            'response_headers' => $responseHeaders,
-            'session_metadata' => $sessionMetadata,
-            'session_attributes' => $sessionAttributes,
-            'flashes' => $flashes,
-            'path_info' => $request->getPathInfo(),
-            'controller' => 'n/a',
-            'locale' => $request->getLocale(),
-        );
-
-        if (isset($this->data['request_headers']['php-auth-pw'])) {
-            $this->data['request_headers']['php-auth-pw'] = '******';
-        }
-
-        if (isset($this->data['request_server']['PHP_AUTH_PW'])) {
-            $this->data['request_server']['PHP_AUTH_PW'] = '******';
-        }
-
-        if (isset($this->data['request_request']['_password'])) {
-            $this->data['request_request']['_password'] = '******';
-        }
-
-        if (isset($this->controllers[$request])) {
-            $controller = $this->controllers[$request];
-            if (is_array($controller)) {
-                try {
-                    $r = new \ReflectionMethod($controller[0], $controller[1]);
-                    $this->data['controller'] = array(
-                        'class' => is_object($controller[0]) ? get_class($controller[0]) : $controller[0],
-                        'method' => $controller[1],
-                        'file' => $r->getFileName(),
-                        'line' => $r->getStartLine(),
-                    );
-                } catch (\ReflectionException $e) {
-                    if (is_callable($controller)) {
-                        // using __call or  __callStatic
-                        $this->data['controller'] = array(
-                            'class' => is_object($controller[0]) ? get_class($controller[0]) : $controller[0],
-                            'method' => $controller[1],
-                            'file' => 'n/a',
-                            'line' => 'n/a',
-                        );
-                    }
-                }
-            } elseif ($controller instanceof \Closure) {
-                $r = new \ReflectionFunction($controller);
-                $this->data['controller'] = array(
-                    'class' => $r->getName(),
-                    'method' => null,
-                    'file' => $r->getFileName(),
-                    'line' => $r->getStartLine(),
-                );
-            } elseif (is_object($controller)) {
-                $r = new \ReflectionClass($controller);
-                $this->data['controller'] = array(
-                    'class' => $r->getName(),
-                    'method' => null,
-                    'file' => $r->getFileName(),
-                    'line' => $r->getStartLine(),
-                );
-            } else {
-                $this->data['controller'] = (string) $controller ?: 'n/a';
-            }
-            unset($this->controllers[$request]);
-        }
-    }
-
-    public function getPathInfo()
-    {
-        return $this->data['path_info'];
-    }
-
-    public function getRequestRequest()
-    {
-        return new ParameterBag($this->data['request_request']);
-    }
-
-    public function getRequestQuery()
-    {
-        return new ParameterBag($this->data['request_query']);
-    }
-
-    public function getRequestHeaders()
-    {
-        return new HeaderBag($this->data['request_headers']);
-    }
-
-    public function getRequestServer()
-    {
-        return new ParameterBag($this->data['request_server']);
-    }
-
-    public function getRequestCookies()
-    {
-        return new ParameterBag($this->data['request_cookies']);
-    }
-
-    public function getRequestAttributes()
-    {
-        return new ParameterBag($this->data['request_attributes']);
-    }
-
-    public function getResponseHeaders()
-    {
-        return new ResponseHeaderBag($this->data['response_headers']);
-    }
-
-    public function getSessionMetadata()
-    {
-        return $this->data['session_metadata'];
-    }
-
-    public function getSessionAttributes()
-    {
-        return $this->data['session_attributes'];
-    }
-
-    public function getFlashes()
-    {
-        return $this->data['flashes'];
-    }
-
-    public function getContent()
-    {
-        return $this->data['content'];
-    }
-
-    public function getContentType()
-    {
-        return $this->data['content_type'];
-    }
-
-    public function getStatusText()
-    {
-        return $this->data['status_text'];
-    }
-
-    public function getStatusCode()
-    {
-        return $this->data['status_code'];
-    }
-
-    public function getFormat()
-    {
-        return $this->data['format'];
-    }
-
-    public function getLocale()
-    {
-        return $this->data['locale'];
-    }
-
-    /**
-     * Gets the route name.
-     *
-     * The _route request attributes is automatically set by the Router Matcher.
-     *
-     * @return string The route
-     */
-    public function getRoute()
-    {
-        return isset($this->data['request_attributes']['_route']) ? $this->data['request_attributes']['_route'] : '';
-    }
-
-    /**
-     * Gets the route parameters.
-     *
-     * The _route_params request attributes is automatically set by the RouterListener.
-     *
-     * @return array The parameters
-     */
-    public function getRouteParams()
-    {
-        return isset($this->data['request_attributes']['_route_params']) ? $this->data['request_attributes']['_route_params'] : array();
-    }
-
-    /**
-     * Gets the controller.
-     *
-     * @return string The controller as a string
-     */
-    public function getController()
-    {
-        return $this->data['controller'];
-    }
-
-    public function onKernelController(FilterControllerEvent $event)
-    {
-        $this->controllers[$event->getRequest()] = $event->getController();
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(KernelEvents::CONTROLLER => 'onKernelController');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'request';
-    }
-
-    private function getCookieHeader($name, $value, $expires, $path, $domain, $secure, $httponly)
-    {
-        $cookie = sprintf('%s=%s', $name, urlencode($value));
-
-        if (0 !== $expires) {
-            if (is_numeric($expires)) {
-                $expires = (int) $expires;
-            } elseif ($expires instanceof \DateTime) {
-                $expires = $expires->getTimestamp();
-            } else {
-                $tmp = strtotime($expires);
-                if (false === $tmp || -1 == $tmp) {
-                    throw new \InvalidArgumentException(sprintf('The "expires" cookie parameter is not valid (%s).', $expires));
-                }
-                $expires = $tmp;
-            }
-
-            $cookie .= '; expires='.str_replace('+0000', '', \DateTime::createFromFormat('U', $expires, new \DateTimeZone('GMT'))->format('D, d-M-Y H:i:s T'));
-        }
-
-        if ($domain) {
-            $cookie .= '; domain='.$domain;
-        }
-
-        $cookie .= '; path='.$path;
-
-        if ($secure) {
-            $cookie .= '; secure';
-        }
-
-        if ($httponly) {
-            $cookie .= '; httponly';
-        }
-
-        return $cookie;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php b/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
deleted file mode 100644
index 76d9623..0000000
--- a/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?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;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
-
-/**
- * RouterDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RouterDataCollector extends DataCollector
-{
-    protected $controllers;
-
-    public function __construct()
-    {
-        $this->controllers = new \SplObjectStorage();
-
-        $this->data = array(
-            'redirect' => false,
-            'url' => null,
-            'route' => null,
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        if ($response instanceof RedirectResponse) {
-            $this->data['redirect'] = true;
-            $this->data['url'] = $response->getTargetUrl();
-
-            if ($this->controllers->contains($request)) {
-                $this->data['route'] = $this->guessRoute($request, $this->controllers[$request]);
-            }
-        }
-
-        unset($this->controllers[$request]);
-    }
-
-    protected function guessRoute(Request $request, $controller)
-    {
-        return 'n/a';
-    }
-
-    /**
-     * Remembers the controller associated to each request.
-     *
-     * @param FilterControllerEvent $event The filter controller event
-     */
-    public function onKernelController(FilterControllerEvent $event)
-    {
-        $this->controllers[$event->getRequest()] = $event->getController();
-    }
-
-    /**
-     * @return bool Whether this request will result in a redirect
-     */
-    public function getRedirect()
-    {
-        return $this->data['redirect'];
-    }
-
-    /**
-     * @return string|null The target URL
-     */
-    public function getTargetUrl()
-    {
-        return $this->data['url'];
-    }
-
-    /**
-     * @return string|null The target route
-     */
-    public function getTargetRoute()
-    {
-        return $this->data['route'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'router';
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php b/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php
deleted file mode 100644
index 4ccaafa..0000000
--- a/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?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;
-use Symfony\Component\HttpKernel\KernelInterface;
-
-/**
- * TimeDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TimeDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    protected $kernel;
-    protected $stopwatch;
-
-    public function __construct(KernelInterface $kernel = null, $stopwatch = null)
-    {
-        $this->kernel = $kernel;
-        $this->stopwatch = $stopwatch;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        if (null !== $this->kernel) {
-            $startTime = $this->kernel->getStartTime();
-        } else {
-            $startTime = $request->server->get('REQUEST_TIME_FLOAT', $request->server->get('REQUEST_TIME'));
-        }
-
-        $this->data = array(
-            'token' => $response->headers->get('X-Debug-Token'),
-            'start_time' => $startTime * 1000,
-            'events' => array(),
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function lateCollect()
-    {
-        if (null !== $this->stopwatch && isset($this->data['token'])) {
-            $this->setEvents($this->stopwatch->getSectionEvents($this->data['token']));
-        }
-        unset($this->data['token']);
-    }
-
-    /**
-     * Sets the request events.
-     *
-     * @param array $events The request events
-     */
-    public function setEvents(array $events)
-    {
-        foreach ($events as $event) {
-            $event->ensureStopped();
-        }
-
-        $this->data['events'] = $events;
-    }
-
-    /**
-     * Gets the request events.
-     *
-     * @return array The request events
-     */
-    public function getEvents()
-    {
-        return $this->data['events'];
-    }
-
-    /**
-     * Gets the request elapsed time.
-     *
-     * @return float The elapsed time
-     */
-    public function getDuration()
-    {
-        if (!isset($this->data['events']['__section__'])) {
-            return 0;
-        }
-
-        $lastEvent = $this->data['events']['__section__'];
-
-        return $lastEvent->getOrigin() + $lastEvent->getDuration() - $this->getStartTime();
-    }
-
-    /**
-     * Gets the initialization time.
-     *
-     * This is the time spent until the beginning of the request handling.
-     *
-     * @return float The elapsed time
-     */
-    public function getInitTime()
-    {
-        if (!isset($this->data['events']['__section__'])) {
-            return 0;
-        }
-
-        return $this->data['events']['__section__']->getOrigin() - $this->getStartTime();
-    }
-
-    /**
-     * Gets the request time.
-     *
-     * @return int The time
-     */
-    public function getStartTime()
-    {
-        return $this->data['start_time'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'time';
-    }
-}
diff --git a/vendor/symfony/http-kernel/DataCollector/Util/ValueExporter.php b/vendor/symfony/http-kernel/DataCollector/Util/ValueExporter.php
deleted file mode 100644
index d2f0898..0000000
--- a/vendor/symfony/http-kernel/DataCollector/Util/ValueExporter.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?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\Util;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ValueExporter
-{
-    /**
-     * Converts a PHP value to a string.
-     *
-     * @param mixed $value The PHP value
-     * @param int   $depth only for internal usage
-     * @param bool  $deep  only for internal usage
-     *
-     * @return string The string representation of the given value
-     */
-    public function exportValue($value, $depth = 1, $deep = false)
-    {
-        if (is_object($value)) {
-            if ($value instanceof \DateTime || $value instanceof \DateTimeInterface) {
-                return sprintf('Object(%s) - %s', get_class($value), $value->format(\DateTime::ISO8601));
-            }
-
-            return sprintf('Object(%s)', get_class($value));
-        }
-
-        if (is_array($value)) {
-            if (empty($value)) {
-                return '[]';
-            }
-
-            $indent = str_repeat('  ', $depth);
-
-            $a = array();
-            foreach ($value as $k => $v) {
-                if (is_array($v)) {
-                    $deep = true;
-                }
-                $a[] = sprintf('%s => %s', $k, $this->exportValue($v, $depth + 1, $deep));
-            }
-
-            if ($deep) {
-                return sprintf("[\n%s%s\n%s]", $indent, implode(sprintf(", \n%s", $indent), $a), str_repeat('  ', $depth - 1));
-            }
-
-            return sprintf('[%s]', implode(', ', $a));
-        }
-
-        if (is_resource($value)) {
-            return sprintf('Resource(%s#%d)', get_resource_type($value), $value);
-        }
-
-        if (null === $value) {
-            return 'null';
-        }
-
-        if (false === $value) {
-            return 'false';
-        }
-
-        if (true === $value) {
-            return 'true';
-        }
-
-        return (string) $value;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Debug/ErrorHandler.php b/vendor/symfony/http-kernel/Debug/ErrorHandler.php
deleted file mode 100644
index af714a3..0000000
--- a/vendor/symfony/http-kernel/Debug/ErrorHandler.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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\Debug;
-
-@trigger_error('The '.__NAMESPACE__.'\ErrorHandler class is deprecated since version 2.3 and will be removed in 3.0. Use the Symfony\Component\Debug\ErrorHandler class instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Debug\ErrorHandler as DebugErrorHandler;
-
-/**
- * ErrorHandler.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.3, to be removed in 3.0. Use the same class from the Debug component instead.
- */
-class ErrorHandler extends DebugErrorHandler
-{
-}
diff --git a/vendor/symfony/http-kernel/Debug/ExceptionHandler.php b/vendor/symfony/http-kernel/Debug/ExceptionHandler.php
deleted file mode 100644
index 50755d9..0000000
--- a/vendor/symfony/http-kernel/Debug/ExceptionHandler.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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\Debug;
-
-@trigger_error('The '.__NAMESPACE__.'\ExceptionHandler class is deprecated since version 2.3 and will be removed in 3.0. Use the Symfony\Component\Debug\ExceptionHandler class instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Debug\ExceptionHandler as DebugExceptionHandler;
-
-/**
- * ExceptionHandler converts an exception to a Response object.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.3, to be removed in 3.0. Use the same class from the Debug component instead.
- */
-class ExceptionHandler extends DebugExceptionHandler
-{
-}
diff --git a/vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php b/vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php
deleted file mode 100644
index eb1d8a8..0000000
--- a/vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?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\Debug;
-
-use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher as BaseTraceableEventDispatcher;
-use Symfony\Component\HttpKernel\Profiler\Profiler;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\EventDispatcher\Event;
-
-/**
- * Collects some data about event listeners.
- *
- * This event dispatcher delegates the dispatching to another one.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TraceableEventDispatcher extends BaseTraceableEventDispatcher
-{
-    /**
-     * Sets the profiler.
-     *
-     * The traceable event dispatcher does not use the profiler anymore.
-     * The job is now done directly by the Profiler listener and the
-     * data collectors themselves.
-     *
-     * @param Profiler|null $profiler A Profiler instance
-     *
-     * @deprecated since version 2.4, to be removed in 3.0.
-     */
-    public function setProfiler(Profiler $profiler = null)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in 3.0.', E_USER_DEPRECATED);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function preDispatch($eventName, Event $event)
-    {
-        switch ($eventName) {
-            case KernelEvents::REQUEST:
-                $this->stopwatch->openSection();
-                break;
-            case KernelEvents::VIEW:
-            case KernelEvents::RESPONSE:
-                // stop only if a controller has been executed
-                if ($this->stopwatch->isStarted('controller')) {
-                    $this->stopwatch->stop('controller');
-                }
-                break;
-            case KernelEvents::TERMINATE:
-                $token = $event->getResponse()->headers->get('X-Debug-Token');
-                // There is a very special case when using built-in AppCache class as kernel wrapper, in the case
-                // of an ESI request leading to a `stale` response [B]  inside a `fresh` cached response [A].
-                // In this case, `$token` contains the [B] debug token, but the  open `stopwatch` section ID
-                // is equal to the [A] debug token. Trying to reopen section with the [B] token throws an exception
-                // which must be caught.
-                try {
-                    $this->stopwatch->openSection($token);
-                } catch (\LogicException $e) {
-                }
-                break;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function postDispatch($eventName, Event $event)
-    {
-        switch ($eventName) {
-            case KernelEvents::CONTROLLER:
-                $this->stopwatch->start('controller', 'section');
-                break;
-            case KernelEvents::RESPONSE:
-                $token = $event->getResponse()->headers->get('X-Debug-Token');
-                $this->stopwatch->stopSection($token);
-                break;
-            case KernelEvents::TERMINATE:
-                // In the special case described in the `preDispatch` method above, the `$token` section
-                // does not exist, then closing it throws an exception which must be caught.
-                $token = $event->getResponse()->headers->get('X-Debug-Token');
-                try {
-                    $this->stopwatch->stopSection($token);
-                } catch (\LogicException $e) {
-                }
-                break;
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/AddClassesToCachePass.php b/vendor/symfony/http-kernel/DependencyInjection/AddClassesToCachePass.php
deleted file mode 100644
index 09af6bd..0000000
--- a/vendor/symfony/http-kernel/DependencyInjection/AddClassesToCachePass.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\HttpKernel\Kernel;
-
-/**
- * Sets the classes to compile in the cache for the container.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AddClassesToCachePass implements CompilerPassInterface
-{
-    private $kernel;
-
-    public function __construct(Kernel $kernel)
-    {
-        $this->kernel = $kernel;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function process(ContainerBuilder $container)
-    {
-        $classes = array();
-        foreach ($container->getExtensions() as $extension) {
-            if ($extension instanceof Extension) {
-                $classes = array_merge($classes, $extension->getClassesToCompile());
-            }
-        }
-
-        $this->kernel->setClassCache(array_unique($container->getParameterBag()->resolveValue($classes)));
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/ConfigurableExtension.php b/vendor/symfony/http-kernel/DependencyInjection/ConfigurableExtension.php
deleted file mode 100644
index c7eca30..0000000
--- a/vendor/symfony/http-kernel/DependencyInjection/ConfigurableExtension.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * This extension sub-class provides first-class integration with the
- * Config/Definition Component.
- *
- * You can use this as base class if
- *
- *    a) you use the Config/Definition component for configuration,
- *    b) your configuration class is named "Configuration", and
- *    c) the configuration class resides in the DependencyInjection sub-folder.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-abstract class ConfigurableExtension extends Extension
-{
-    /**
-     * {@inheritdoc}
-     */
-    final public function load(array $configs, ContainerBuilder $container)
-    {
-        $this->loadInternal($this->processConfiguration($this->getConfiguration($configs, $container), $configs), $container);
-    }
-
-    /**
-     * Configures the passed container according to the merged configuration.
-     *
-     * @param array            $mergedConfig
-     * @param ContainerBuilder $container
-     */
-    abstract protected function loadInternal(array $mergedConfig, ContainerBuilder $container);
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/ContainerAwareHttpKernel.php b/vendor/symfony/http-kernel/DependencyInjection/ContainerAwareHttpKernel.php
deleted file mode 100644
index 97aa740..0000000
--- a/vendor/symfony/http-kernel/DependencyInjection/ContainerAwareHttpKernel.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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\DependencyInjection;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Scope;
-
-/**
- * Adds a managed request scope.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- *
- * @deprecated since version 2.7, to be removed in 3.0.
- */
-class ContainerAwareHttpKernel extends HttpKernel
-{
-    protected $container;
-
-    /**
-     * Constructor.
-     *
-     * @param EventDispatcherInterface    $dispatcher         An EventDispatcherInterface instance
-     * @param ContainerInterface          $container          A ContainerInterface instance
-     * @param ControllerResolverInterface $controllerResolver A ControllerResolverInterface instance
-     * @param RequestStack                $requestStack       A stack for master/sub requests
-     * @param bool                        $triggerDeprecation Whether or not to trigger the deprecation warning for the ContainerAwareHttpKernel
-     */
-    public function __construct(EventDispatcherInterface $dispatcher, ContainerInterface $container, ControllerResolverInterface $controllerResolver, RequestStack $requestStack = null, $triggerDeprecation = true)
-    {
-        parent::__construct($dispatcher, $controllerResolver, $requestStack);
-
-        if ($triggerDeprecation) {
-            @trigger_error('The '.__CLASS__.' class is deprecated since version 2.7 and will be removed in 3.0. Use the Symfony\Component\HttpKernel\HttpKernel class instead.', E_USER_DEPRECATED);
-        }
-
-        $this->container = $container;
-
-        // the request scope might have been created before (see FrameworkBundle)
-        if (!$container->hasScope('request')) {
-            $container->addScope(new Scope('request'));
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
-    {
-        $this->container->enterScope('request');
-        $this->container->set('request', $request, 'request');
-
-        try {
-            $response = parent::handle($request, $type, $catch);
-        } catch (\Exception $e) {
-            $this->container->set('request', null, 'request');
-            $this->container->leaveScope('request');
-
-            throw $e;
-        }
-
-        $this->container->set('request', null, 'request');
-        $this->container->leaveScope('request');
-
-        return $response;
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/Extension.php b/vendor/symfony/http-kernel/DependencyInjection/Extension.php
deleted file mode 100644
index 2ca0f13..0000000
--- a/vendor/symfony/http-kernel/DependencyInjection/Extension.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Extension\Extension as BaseExtension;
-
-/**
- * Allow adding classes to the class cache.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Extension extends BaseExtension
-{
-    private $classes = array();
-
-    /**
-     * Gets the classes to cache.
-     *
-     * @return array An array of classes
-     */
-    public function getClassesToCompile()
-    {
-        return $this->classes;
-    }
-
-    /**
-     * Adds classes to the class cache.
-     *
-     * @param array $classes An array of classes
-     */
-    public function addClassesToCompile(array $classes)
-    {
-        $this->classes = array_merge($this->classes, $classes);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php b/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php
deleted file mode 100644
index dc44b2d..0000000
--- a/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?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\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-
-/**
- * Adds services tagged kernel.fragment_renderer as HTTP content rendering strategies.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FragmentRendererPass implements CompilerPassInterface
-{
-    private $handlerService;
-    private $rendererTag;
-
-    /**
-     * @param string $handlerService Service name of the fragment handler in the container
-     * @param string $rendererTag    Tag name used for fragments
-     */
-    public function __construct($handlerService = 'fragment.handler', $rendererTag = 'kernel.fragment_renderer')
-    {
-        $this->handlerService = $handlerService;
-        $this->rendererTag = $rendererTag;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        if (!$container->hasDefinition($this->handlerService)) {
-            return;
-        }
-
-        $definition = $container->getDefinition($this->handlerService);
-        foreach ($container->findTaggedServiceIds($this->rendererTag) as $id => $tags) {
-            $def = $container->getDefinition($id);
-            if (!$def->isPublic()) {
-                throw new \InvalidArgumentException(sprintf('The service "%s" must be public as fragment renderer are lazy-loaded.', $id));
-            }
-
-            if ($def->isAbstract()) {
-                throw new \InvalidArgumentException(sprintf('The service "%s" must not be abstract as fragment renderer are lazy-loaded.', $id));
-            }
-
-            $refClass = new \ReflectionClass($container->getParameterBag()->resolveValue($def->getClass()));
-            $interface = 'Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface';
-            if (!$refClass->implementsInterface($interface)) {
-                throw new \InvalidArgumentException(sprintf('Service "%s" must implement interface "%s".', $id, $interface));
-            }
-
-            foreach ($tags as $tag) {
-                if (!isset($tag['alias'])) {
-                    @trigger_error(sprintf('Service "%s" will have to define the "alias" attribute on the "%s" tag as of Symfony 3.0.', $id, $this->rendererTag), E_USER_DEPRECATED);
-
-                    // register the handler as a non-lazy-loaded one
-                    $definition->addMethodCall('addRenderer', array(new Reference($id)));
-                } else {
-                    $definition->addMethodCall('addRendererService', array($tag['alias'], $id));
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php b/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php
deleted file mode 100644
index 4efe7cb..0000000
--- a/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Fragment\FragmentHandler;
-
-/**
- * Lazily loads fragment renderers from the dependency injection container.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class LazyLoadingFragmentHandler extends FragmentHandler
-{
-    private $container;
-    private $rendererIds = array();
-
-    public function __construct(ContainerInterface $container, $debug = false, RequestStack $requestStack = null)
-    {
-        $this->container = $container;
-
-        parent::__construct(array(), $debug, $requestStack);
-    }
-
-    /**
-     * Adds a service as a fragment renderer.
-     *
-     * @param string $renderer The render service id
-     */
-    public function addRendererService($name, $renderer)
-    {
-        $this->rendererIds[$name] = $renderer;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function render($uri, $renderer = 'inline', array $options = array())
-    {
-        if (isset($this->rendererIds[$renderer])) {
-            $this->addRenderer($this->container->get($this->rendererIds[$renderer]));
-
-            unset($this->rendererIds[$renderer]);
-        }
-
-        return parent::render($uri, $renderer, $options);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php b/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php
deleted file mode 100644
index dcd7382..0000000
--- a/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\Compiler\MergeExtensionConfigurationPass as BaseMergeExtensionConfigurationPass;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-/**
- * Ensures certain extensions are always loaded.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class MergeExtensionConfigurationPass extends BaseMergeExtensionConfigurationPass
-{
-    private $extensions;
-
-    public function __construct(array $extensions)
-    {
-        $this->extensions = $extensions;
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        foreach ($this->extensions as $extension) {
-            if (!count($container->getExtensionConfig($extension))) {
-                $container->loadFromExtension($extension, array());
-            }
-        }
-
-        parent::process($container);
-    }
-}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/RegisterListenersPass.php b/vendor/symfony/http-kernel/DependencyInjection/RegisterListenersPass.php
deleted file mode 100644
index f1c2247..0000000
--- a/vendor/symfony/http-kernel/DependencyInjection/RegisterListenersPass.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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\DependencyInjection;
-
-@trigger_error('The '.__NAMESPACE__.'\RegisterListenersPass is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass class instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass as BaseRegisterListenersPass;
-
-/**
- * Compiler pass to register tagged services for an event dispatcher.
- *
- * @deprecated since version 2.5, to be removed in 3.0. Use the Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass class instead.
- */
-class RegisterListenersPass extends BaseRegisterListenersPass
-{
-}
diff --git a/vendor/symfony/http-kernel/Event/FilterControllerEvent.php b/vendor/symfony/http-kernel/Event/FilterControllerEvent.php
deleted file mode 100644
index 77a5c1a..0000000
--- a/vendor/symfony/http-kernel/Event/FilterControllerEvent.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?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\Event;
-
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Allows filtering of a controller callable.
- *
- * You can call getController() to retrieve the current controller. With
- * setController() you can set a new controller that is used in the processing
- * of the request.
- *
- * Controllers should be callables.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FilterControllerEvent extends KernelEvent
-{
-    /**
-     * The current controller.
-     */
-    private $controller;
-
-    public function __construct(HttpKernelInterface $kernel, $controller, Request $request, $requestType)
-    {
-        parent::__construct($kernel, $request, $requestType);
-
-        $this->setController($controller);
-    }
-
-    /**
-     * Returns the current controller.
-     *
-     * @return callable
-     */
-    public function getController()
-    {
-        return $this->controller;
-    }
-
-    /**
-     * Sets a new controller.
-     *
-     * @param callable $controller
-     *
-     * @throws \LogicException
-     */
-    public function setController($controller)
-    {
-        // controller must be a callable
-        if (!is_callable($controller)) {
-            throw new \LogicException(sprintf('The controller must be a callable (%s given).', $this->varToString($controller)));
-        }
-
-        $this->controller = $controller;
-    }
-
-    private function varToString($var)
-    {
-        if (is_object($var)) {
-            return sprintf('Object(%s)', get_class($var));
-        }
-
-        if (is_array($var)) {
-            $a = array();
-            foreach ($var as $k => $v) {
-                $a[] = sprintf('%s => %s', $k, $this->varToString($v));
-            }
-
-            return sprintf('Array(%s)', implode(', ', $a));
-        }
-
-        if (is_resource($var)) {
-            return sprintf('Resource(%s)', get_resource_type($var));
-        }
-
-        if (null === $var) {
-            return 'null';
-        }
-
-        if (false === $var) {
-            return 'false';
-        }
-
-        if (true === $var) {
-            return 'true';
-        }
-
-        return (string) $var;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/FilterResponseEvent.php b/vendor/symfony/http-kernel/Event/FilterResponseEvent.php
deleted file mode 100644
index ed816a9..0000000
--- a/vendor/symfony/http-kernel/Event/FilterResponseEvent.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?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\Event;
-
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Allows to filter a Response object.
- *
- * You can call getResponse() to retrieve the current response. With
- * setResponse() you can set a new response that will be returned to the
- * browser.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FilterResponseEvent extends KernelEvent
-{
-    /**
-     * The current response object.
-     *
-     * @var Response
-     */
-    private $response;
-
-    public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, Response $response)
-    {
-        parent::__construct($kernel, $request, $requestType);
-
-        $this->setResponse($response);
-    }
-
-    /**
-     * Returns the current response object.
-     *
-     * @return Response
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-
-    /**
-     * Sets a new response object.
-     *
-     * @param Response $response
-     */
-    public function setResponse(Response $response)
-    {
-        $this->response = $response;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/FinishRequestEvent.php b/vendor/symfony/http-kernel/Event/FinishRequestEvent.php
deleted file mode 100644
index ee72484..0000000
--- a/vendor/symfony/http-kernel/Event/FinishRequestEvent.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Event;
-
-/**
- * Triggered whenever a request is fully processed.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class FinishRequestEvent extends KernelEvent
-{
-}
diff --git a/vendor/symfony/http-kernel/Event/GetResponseEvent.php b/vendor/symfony/http-kernel/Event/GetResponseEvent.php
deleted file mode 100644
index 4c96a4b..0000000
--- a/vendor/symfony/http-kernel/Event/GetResponseEvent.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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\Event;
-
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Allows to create a response for a request.
- *
- * Call setResponse() to set the response that will be returned for the
- * current request. The propagation of this event is stopped as soon as a
- * response is set.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class GetResponseEvent extends KernelEvent
-{
-    /**
-     * The response object.
-     *
-     * @var Response
-     */
-    private $response;
-
-    /**
-     * Returns the response object.
-     *
-     * @return Response
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-
-    /**
-     * Sets a response and stops event propagation.
-     *
-     * @param Response $response
-     */
-    public function setResponse(Response $response)
-    {
-        $this->response = $response;
-
-        $this->stopPropagation();
-    }
-
-    /**
-     * Returns whether a response was set.
-     *
-     * @return bool Whether a response was set
-     */
-    public function hasResponse()
-    {
-        return null !== $this->response;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/GetResponseForControllerResultEvent.php b/vendor/symfony/http-kernel/Event/GetResponseForControllerResultEvent.php
deleted file mode 100644
index f70ce09..0000000
--- a/vendor/symfony/http-kernel/Event/GetResponseForControllerResultEvent.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?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\Event;
-
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Allows to create a response for the return value of a controller.
- *
- * Call setResponse() to set the response that will be returned for the
- * current request. The propagation of this event is stopped as soon as a
- * response is set.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class GetResponseForControllerResultEvent extends GetResponseEvent
-{
-    /**
-     * The return value of the controller.
-     *
-     * @var mixed
-     */
-    private $controllerResult;
-
-    public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, $controllerResult)
-    {
-        parent::__construct($kernel, $request, $requestType);
-
-        $this->controllerResult = $controllerResult;
-    }
-
-    /**
-     * Returns the return value of the controller.
-     *
-     * @return mixed The controller return value
-     */
-    public function getControllerResult()
-    {
-        return $this->controllerResult;
-    }
-
-    /**
-     * Assigns the return value of the controller.
-     *
-     * @param mixed $controllerResult The controller return value
-     */
-    public function setControllerResult($controllerResult)
-    {
-        $this->controllerResult = $controllerResult;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php b/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php
deleted file mode 100644
index 003953f..0000000
--- a/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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\Event;
-
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Allows to create a response for a thrown exception.
- *
- * Call setResponse() to set the response that will be returned for the
- * current request. The propagation of this event is stopped as soon as a
- * response is set.
- *
- * You can also call setException() to replace the thrown exception. This
- * exception will be thrown if no response is set during processing of this
- * event.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class GetResponseForExceptionEvent extends GetResponseEvent
-{
-    /**
-     * The exception object.
-     *
-     * @var \Exception
-     */
-    private $exception;
-
-    public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, \Exception $e)
-    {
-        parent::__construct($kernel, $request, $requestType);
-
-        $this->setException($e);
-    }
-
-    /**
-     * Returns the thrown exception.
-     *
-     * @return \Exception The thrown exception
-     */
-    public function getException()
-    {
-        return $this->exception;
-    }
-
-    /**
-     * Replaces the thrown exception.
-     *
-     * This exception will be thrown if no response is set in the event.
-     *
-     * @param \Exception $exception The thrown exception
-     */
-    public function setException(\Exception $exception)
-    {
-        $this->exception = $exception;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/KernelEvent.php b/vendor/symfony/http-kernel/Event/KernelEvent.php
deleted file mode 100644
index 2043a01..0000000
--- a/vendor/symfony/http-kernel/Event/KernelEvent.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?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\Event;
-
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\EventDispatcher\Event;
-
-/**
- * Base class for events thrown in the HttpKernel component.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class KernelEvent extends Event
-{
-    /**
-     * The kernel in which this event was thrown.
-     *
-     * @var HttpKernelInterface
-     */
-    private $kernel;
-
-    /**
-     * The request the kernel is currently processing.
-     *
-     * @var Request
-     */
-    private $request;
-
-    /**
-     * The request type the kernel is currently processing.  One of
-     * HttpKernelInterface::MASTER_REQUEST and HttpKernelInterface::SUB_REQUEST.
-     *
-     * @var int
-     */
-    private $requestType;
-
-    public function __construct(HttpKernelInterface $kernel, Request $request, $requestType)
-    {
-        $this->kernel = $kernel;
-        $this->request = $request;
-        $this->requestType = $requestType;
-    }
-
-    /**
-     * Returns the kernel in which this event was thrown.
-     *
-     * @return HttpKernelInterface
-     */
-    public function getKernel()
-    {
-        return $this->kernel;
-    }
-
-    /**
-     * Returns the request the kernel is currently processing.
-     *
-     * @return Request
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Returns the request type the kernel is currently processing.
-     *
-     * @return int One of HttpKernelInterface::MASTER_REQUEST and
-     *             HttpKernelInterface::SUB_REQUEST
-     */
-    public function getRequestType()
-    {
-        return $this->requestType;
-    }
-
-    /**
-     * Checks if this is a master request.
-     *
-     * @return bool True if the request is a master request
-     */
-    public function isMasterRequest()
-    {
-        return HttpKernelInterface::MASTER_REQUEST === $this->requestType;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Event/PostResponseEvent.php b/vendor/symfony/http-kernel/Event/PostResponseEvent.php
deleted file mode 100644
index 5d4450b..0000000
--- a/vendor/symfony/http-kernel/Event/PostResponseEvent.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?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\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.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class PostResponseEvent extends Event
-{
-    /**
-     * 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;
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * Returns the response for which this event was thrown.
-     *
-     * @return Response
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php b/vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php
deleted file mode 100644
index 14a5d43..0000000
--- a/vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-
-/**
- * Adds configured formats to each request.
- *
- * @author Gildas Quemener <gildas.quemener@gmail.com>
- */
-class AddRequestFormatsListener implements EventSubscriberInterface
-{
-    /**
-     * @var array
-     */
-    protected $formats;
-
-    /**
-     * @param array $formats
-     */
-    public function __construct(array $formats)
-    {
-        $this->formats = $formats;
-    }
-
-    /**
-     * Adds request formats.
-     *
-     * @param GetResponseEvent $event
-     */
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        foreach ($this->formats as $format => $mimeTypes) {
-            $event->getRequest()->setFormat($format, $mimeTypes);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public static function getSubscribedEvents()
-    {
-        return array(KernelEvents::REQUEST => 'onKernelRequest');
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php b/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php
deleted file mode 100644
index f50e4d6..0000000
--- a/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?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\EventListener;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Debug\ErrorHandler;
-use Symfony\Component\Debug\ExceptionHandler;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\Event\KernelEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\Console\ConsoleEvents;
-use Symfony\Component\Console\Event\ConsoleEvent;
-use Symfony\Component\Console\Output\ConsoleOutputInterface;
-
-/**
- * Configures errors and exceptions handlers.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DebugHandlersListener implements EventSubscriberInterface
-{
-    private $exceptionHandler;
-    private $logger;
-    private $levels;
-    private $throwAt;
-    private $scream;
-    private $fileLinkFormat;
-    private $firstCall = true;
-
-    /**
-     * @param callable|null        $exceptionHandler A handler that will be called on Exception
-     * @param LoggerInterface|null $logger           A PSR-3 logger
-     * @param array|int            $levels           An array map of E_* to LogLevel::* or an integer bit field of E_* constants
-     * @param int|null             $throwAt          Thrown errors in a bit field of E_* constants, or null to keep the current value
-     * @param bool                 $scream           Enables/disables screaming mode, where even silenced errors are logged
-     * @param string               $fileLinkFormat   The format for links to source files
-     */
-    public function __construct($exceptionHandler, LoggerInterface $logger = null, $levels = null, $throwAt = -1, $scream = true, $fileLinkFormat = null)
-    {
-        $this->exceptionHandler = $exceptionHandler;
-        $this->logger = $logger;
-        $this->levels = $levels;
-        $this->throwAt = is_numeric($throwAt) ? (int) $throwAt : (null === $throwAt ? null : ($throwAt ? -1 : null));
-        $this->scream = (bool) $scream;
-        $this->fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
-    }
-
-    /**
-     * Configures the error handler.
-     *
-     * @param Event|null $event The triggering event
-     */
-    public function configure(Event $event = null)
-    {
-        if (!$this->firstCall) {
-            return;
-        }
-        $this->firstCall = false;
-        if ($this->logger || null !== $this->throwAt) {
-            $handler = set_error_handler('var_dump', 0);
-            $handler = is_array($handler) ? $handler[0] : null;
-            restore_error_handler();
-            if ($handler instanceof ErrorHandler) {
-                if ($this->logger) {
-                    $handler->setDefaultLogger($this->logger, $this->levels);
-                    if (is_array($this->levels)) {
-                        $scream = 0;
-                        foreach ($this->levels as $type => $log) {
-                            $scream |= $type;
-                        }
-                    } else {
-                        $scream = null === $this->levels ? E_ALL | E_STRICT : $this->levels;
-                    }
-                    if ($this->scream) {
-                        $handler->screamAt($scream);
-                    }
-                    $this->logger = $this->levels = null;
-                }
-                if (null !== $this->throwAt) {
-                    $handler->throwAt($this->throwAt, true);
-                }
-            }
-        }
-        if (!$this->exceptionHandler) {
-            if ($event instanceof KernelEvent) {
-                $this->exceptionHandler = array($event->getKernel(), 'terminateWithException');
-            } elseif ($event instanceof ConsoleEvent && $app = $event->getCommand()->getApplication()) {
-                $output = $event->getOutput();
-                if ($output instanceof ConsoleOutputInterface) {
-                    $output = $output->getErrorOutput();
-                }
-                $this->exceptionHandler = function ($e) use ($app, $output) {
-                    $app->renderException($e, $output);
-                };
-            }
-        }
-        if ($this->exceptionHandler) {
-            $handler = set_exception_handler('var_dump');
-            $handler = is_array($handler) ? $handler[0] : null;
-            restore_exception_handler();
-            if ($handler instanceof ErrorHandler) {
-                $h = $handler->setExceptionHandler('var_dump') ?: $this->exceptionHandler;
-                $handler->setExceptionHandler($h);
-                $handler = is_array($h) ? $h[0] : null;
-            }
-            if ($handler instanceof ExceptionHandler) {
-                $handler->setHandler($this->exceptionHandler);
-                if (null !== $this->fileLinkFormat) {
-                    $handler->setFileLinkFormat($this->fileLinkFormat);
-                }
-            }
-            $this->exceptionHandler = null;
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        $events = array(KernelEvents::REQUEST => array('configure', 2048));
-
-        if (defined('Symfony\Component\Console\ConsoleEvents::COMMAND')) {
-            $events[ConsoleEvents::COMMAND] = array('configure', 2048);
-        }
-
-        return $events;
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/DumpListener.php b/vendor/symfony/http-kernel/EventListener/DumpListener.php
deleted file mode 100644
index bccde8e..0000000
--- a/vendor/symfony/http-kernel/EventListener/DumpListener.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\VarDumper\Cloner\ClonerInterface;
-use Symfony\Component\VarDumper\Dumper\DataDumperInterface;
-use Symfony\Component\VarDumper\VarDumper;
-
-/**
- * Configures dump() handler.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DumpListener implements EventSubscriberInterface
-{
-    private $cloner;
-    private $dumper;
-
-    /**
-     * @param ClonerInterface     $cloner Cloner service.
-     * @param DataDumperInterface $dumper Dumper service.
-     */
-    public function __construct(ClonerInterface $cloner, DataDumperInterface $dumper)
-    {
-        $this->cloner = $cloner;
-        $this->dumper = $dumper;
-    }
-
-    public function configure()
-    {
-        $cloner = $this->cloner;
-        $dumper = $this->dumper;
-
-        VarDumper::setHandler(function ($var) use ($cloner, $dumper) {
-            $dumper->dump($cloner->cloneVar($var));
-        });
-    }
-
-    public static function getSubscribedEvents()
-    {
-        // Register early to have a working dump() as early as possible
-        return array(KernelEvents::REQUEST => array('configure', 1024));
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/ErrorsLoggerListener.php b/vendor/symfony/http-kernel/EventListener/ErrorsLoggerListener.php
deleted file mode 100644
index 80c3fe5..0000000
--- a/vendor/symfony/http-kernel/EventListener/ErrorsLoggerListener.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?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\EventListener;
-
-@trigger_error('The '.__NAMESPACE__.'\ErrorsLoggerListener class is deprecated since version 2.6 and will be removed in 3.0. Use the Symfony\Component\HttpKernel\EventListener\DebugHandlersListener class instead.', E_USER_DEPRECATED);
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Debug\ErrorHandler;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Injects the logger into the ErrorHandler, so that it can log various errors.
- *
- * @author Colin Frei <colin@colinfrei.com>
- * @author Konstantin Myakshin <koc-dp@yandex.ru>
- *
- * @deprecated since version 2.6, to be removed in 3.0. Use the DebugHandlersListener class instead.
- */
-class ErrorsLoggerListener implements EventSubscriberInterface
-{
-    private $channel;
-    private $logger;
-
-    public function __construct($channel, LoggerInterface $logger = null)
-    {
-        $this->channel = $channel;
-        $this->logger = $logger;
-    }
-
-    public function injectLogger()
-    {
-        if (null !== $this->logger) {
-            ErrorHandler::setLogger($this->logger, $this->channel);
-            $this->logger = null;
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(KernelEvents::REQUEST => array('injectLogger', 2048));
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/EsiListener.php b/vendor/symfony/http-kernel/EventListener/EsiListener.php
deleted file mode 100644
index bceb672..0000000
--- a/vendor/symfony/http-kernel/EventListener/EsiListener.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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\EventListener;
-
-@trigger_error('The '.__NAMESPACE__.'\EsiListener class is deprecated since version 2.6 and will be removed in 3.0. Use the Symfony\Component\HttpKernel\EventListener\SurrogateListener class instead.', E_USER_DEPRECATED);
-
-/**
- * EsiListener adds a Surrogate-Control HTTP header when the Response needs to be parsed for ESI.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.6, to be removed in 3.0. Use SurrogateListener instead
- */
-class EsiListener extends SurrogateListener
-{
-}
diff --git a/vendor/symfony/http-kernel/EventListener/ExceptionListener.php b/vendor/symfony/http-kernel/EventListener/ExceptionListener.php
deleted file mode 100644
index fc2efed..0000000
--- a/vendor/symfony/http-kernel/EventListener/ExceptionListener.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?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\EventListener;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Debug\Exception\FlattenException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * ExceptionListener.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ExceptionListener implements EventSubscriberInterface
-{
-    protected $controller;
-    protected $logger;
-
-    public function __construct($controller, LoggerInterface $logger = null)
-    {
-        $this->controller = $controller;
-        $this->logger = $logger;
-    }
-
-    public function onKernelException(GetResponseForExceptionEvent $event)
-    {
-        $exception = $event->getException();
-        $request = $event->getRequest();
-
-        $this->logException($exception, sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', get_class($exception), $exception->getMessage(), $exception->getFile(), $exception->getLine()));
-
-        $request = $this->duplicateRequest($exception, $request);
-
-        try {
-            $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false);
-        } catch (\Exception $e) {
-            $this->logException($e, sprintf('Exception thrown when handling an exception (%s: %s at %s line %s)', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine()), false);
-
-            $wrapper = $e;
-
-            while ($prev = $wrapper->getPrevious()) {
-                if ($exception === $wrapper = $prev) {
-                    throw $e;
-                }
-            }
-
-            $prev = new \ReflectionProperty('Exception', 'previous');
-            $prev->setAccessible(true);
-            $prev->setValue($wrapper, $exception);
-
-            throw $e;
-        }
-
-        $event->setResponse($response);
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::EXCEPTION => array('onKernelException', -128),
-        );
-    }
-
-    /**
-     * Logs an exception.
-     *
-     * @param \Exception $exception The \Exception instance
-     * @param string     $message   The error message to log
-     */
-    protected function logException(\Exception $exception, $message)
-    {
-        if (null !== $this->logger) {
-            if (!$exception instanceof HttpExceptionInterface || $exception->getStatusCode() >= 500) {
-                $this->logger->critical($message, array('exception' => $exception));
-            } else {
-                $this->logger->error($message, array('exception' => $exception));
-            }
-        }
-    }
-
-    /**
-     * Clones the request for the exception.
-     *
-     * @param \Exception $exception The thrown exception.
-     * @param Request    $request   The original request.
-     *
-     * @return Request $request The cloned request.
-     */
-    protected function duplicateRequest(\Exception $exception, Request $request)
-    {
-        $attributes = array(
-            '_controller' => $this->controller,
-            'exception' => FlattenException::create($exception),
-            'logger' => $this->logger instanceof DebugLoggerInterface ? $this->logger : null,
-            // keep for BC -- as $format can be an argument of the controller callable
-            // see src/Symfony/Bundle/TwigBundle/Controller/ExceptionController.php
-            // @deprecated since version 2.4, to be removed in 3.0
-            'format' => $request->getRequestFormat(),
-        );
-        $request = $request->duplicate(null, null, $attributes);
-        $request->setMethod('GET');
-
-        return $request;
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/FragmentListener.php b/vendor/symfony/http-kernel/EventListener/FragmentListener.php
deleted file mode 100644
index 302faa1..0000000
--- a/vendor/symfony/http-kernel/EventListener/FragmentListener.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
-use Symfony\Component\HttpKernel\UriSigner;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Handles content fragments represented by special URIs.
- *
- * All URL paths starting with /_fragment are handled as
- * content fragments by this listener.
- *
- * If throws an AccessDeniedHttpException exception if the request
- * is not signed or if it is not an internal sub-request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class FragmentListener implements EventSubscriberInterface
-{
-    private $signer;
-    private $fragmentPath;
-
-    /**
-     * Constructor.
-     *
-     * @param UriSigner $signer       A UriSigner instance
-     * @param string    $fragmentPath The path that triggers this listener
-     */
-    public function __construct(UriSigner $signer, $fragmentPath = '/_fragment')
-    {
-        $this->signer = $signer;
-        $this->fragmentPath = $fragmentPath;
-    }
-
-    /**
-     * Fixes request attributes when the path is '/_fragment'.
-     *
-     * @param GetResponseEvent $event A GetResponseEvent instance
-     *
-     * @throws AccessDeniedHttpException if the request does not come from a trusted IP.
-     */
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-
-        if ($request->attributes->has('_controller') || $this->fragmentPath !== rawurldecode($request->getPathInfo())) {
-            return;
-        }
-
-        if ($event->isMasterRequest()) {
-            $this->validateRequest($request);
-        }
-
-        parse_str($request->query->get('_path', ''), $attributes);
-        $request->attributes->add($attributes);
-        $request->attributes->set('_route_params', array_replace($request->attributes->get('_route_params', array()), $attributes));
-        $request->query->remove('_path');
-    }
-
-    protected function validateRequest(Request $request)
-    {
-        // is the Request safe?
-        if (!$request->isMethodSafe()) {
-            throw new AccessDeniedHttpException();
-        }
-
-        // is the Request signed?
-        // we cannot use $request->getUri() here as we want to work with the original URI (no query string reordering)
-        if ($this->signer->check($request->getSchemeAndHttpHost().$request->getBaseUrl().$request->getPathInfo().(null !== ($qs = $request->server->get('QUERY_STRING')) ? '?'.$qs : ''))) {
-            return;
-        }
-
-        throw new AccessDeniedHttpException();
-    }
-
-    /**
-     * @deprecated since version 2.3.19, to be removed in 3.0.
-     *
-     * @return string[]
-     */
-    protected function getLocalIpAddresses()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.3.19 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        return array('127.0.0.1', 'fe80::1', '::1');
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::REQUEST => array(array('onKernelRequest', 48)),
-        );
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/LocaleListener.php b/vendor/symfony/http-kernel/EventListener/LocaleListener.php
deleted file mode 100644
index 564f6dc..0000000
--- a/vendor/symfony/http-kernel/EventListener/LocaleListener.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\RequestContextAwareInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Initializes the locale based on the current request.
- *
- * This listener works in 2 modes:
- *
- *  * 2.3 compatibility mode where you must call setRequest whenever the Request changes.
- *  * 2.4+ mode where you must pass a RequestStack instance in the constructor.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class LocaleListener implements EventSubscriberInterface
-{
-    private $router;
-    private $defaultLocale;
-    private $requestStack;
-
-    /**
-     * RequestStack will become required in 3.0.
-     */
-    public function __construct($defaultLocale = 'en', RequestContextAwareInterface $router = null, RequestStack $requestStack = null)
-    {
-        $this->defaultLocale = $defaultLocale;
-        $this->requestStack = $requestStack;
-        $this->router = $router;
-    }
-
-    /**
-     * Sets the current Request.
-     *
-     * This method was used to synchronize the Request, but as the HttpKernel
-     * is doing that automatically now, you should never call it directly.
-     * It is kept public for BC with the 2.3 version.
-     *
-     * @param Request|null $request A Request instance
-     *
-     * @deprecated since version 2.4, to be removed in 3.0.
-     */
-    public function setRequest(Request $request = null)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        if (null === $request) {
-            return;
-        }
-
-        $this->setLocale($request);
-        $this->setRouterContext($request);
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-        $request->setDefaultLocale($this->defaultLocale);
-
-        $this->setLocale($request);
-        $this->setRouterContext($request);
-    }
-
-    public function onKernelFinishRequest(FinishRequestEvent $event)
-    {
-        if (null === $this->requestStack) {
-            return; // removed when requestStack is required
-        }
-
-        if (null !== $parentRequest = $this->requestStack->getParentRequest()) {
-            $this->setRouterContext($parentRequest);
-        }
-    }
-
-    private function setLocale(Request $request)
-    {
-        if ($locale = $request->attributes->get('_locale')) {
-            $request->setLocale($locale);
-        }
-    }
-
-    private function setRouterContext(Request $request)
-    {
-        if (null !== $this->router) {
-            $this->router->getContext()->setParameter('_locale', $request->getLocale());
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            // must be registered after the Router to have access to the _locale
-            KernelEvents::REQUEST => array(array('onKernelRequest', 16)),
-            KernelEvents::FINISH_REQUEST => array(array('onKernelFinishRequest', 0)),
-        );
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php b/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
deleted file mode 100644
index 06a5bbf..0000000
--- a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
+++ /dev/null
@@ -1,165 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\Event\PostResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Profiler\Profiler;
-use Symfony\Component\HttpFoundation\RequestMatcherInterface;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * ProfilerListener collects data for the current request by listening to the kernel events.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ProfilerListener implements EventSubscriberInterface
-{
-    protected $profiler;
-    protected $matcher;
-    protected $onlyException;
-    protected $onlyMasterRequests;
-    protected $exception;
-    protected $requests = array();
-    protected $profiles;
-    protected $requestStack;
-    protected $parents;
-
-    /**
-     * Constructor.
-     *
-     * @param Profiler                     $profiler           A Profiler 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)
-    {
-        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);
-        }
-
-        $this->profiler = $profiler;
-        $this->matcher = $matcher;
-        $this->onlyException = (bool) $onlyException;
-        $this->onlyMasterRequests = (bool) $onlyMasterRequests;
-        $this->profiles = new \SplObjectStorage();
-        $this->parents = new \SplObjectStorage();
-        $this->requestStack = $requestStack;
-    }
-
-    /**
-     * Handles the onKernelException event.
-     *
-     * @param GetResponseForExceptionEvent $event A GetResponseForExceptionEvent instance
-     */
-    public function onKernelException(GetResponseForExceptionEvent $event)
-    {
-        if ($this->onlyMasterRequests && !$event->isMasterRequest()) {
-            return;
-        }
-
-        $this->exception = $event->getException();
-    }
-
-    /**
-     * @deprecated since version 2.4, to be removed in 3.0.
-     */
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        if (null === $this->requestStack) {
-            $this->requests[] = $event->getRequest();
-        }
-    }
-
-    /**
-     * Handles the onKernelResponse event.
-     *
-     * @param FilterResponseEvent $event A FilterResponseEvent instance
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        $master = $event->isMasterRequest();
-        if ($this->onlyMasterRequests && !$master) {
-            return;
-        }
-
-        if ($this->onlyException && null === $this->exception) {
-            return;
-        }
-
-        $request = $event->getRequest();
-        $exception = $this->exception;
-        $this->exception = null;
-
-        if (null !== $this->matcher && !$this->matcher->matches($request)) {
-            return;
-        }
-
-        if (!$profile = $this->profiler->collect($request, $event->getResponse(), $exception)) {
-            return;
-        }
-
-        $this->profiles[$request] = $profile;
-
-        if (null !== $this->requestStack) {
-            $this->parents[$request] = $this->requestStack->getParentRequest();
-        } elseif (!$master) {
-            // to be removed when requestStack is required
-            array_pop($this->requests);
-
-            $this->parents[$request] = end($this->requests);
-        }
-    }
-
-    public function onKernelTerminate(PostResponseEvent $event)
-    {
-        // attach children to parents
-        foreach ($this->profiles as $request) {
-            // isset call should be removed when requestStack is required
-            if (isset($this->parents[$request]) && null !== $parentRequest = $this->parents[$request]) {
-                if (isset($this->profiles[$parentRequest])) {
-                    $this->profiles[$parentRequest]->addChild($this->profiles[$request]);
-                }
-            }
-        }
-
-        // save profiles
-        foreach ($this->profiles as $request) {
-            $this->profiler->saveProfile($this->profiles[$request]);
-        }
-
-        $this->profiles = new \SplObjectStorage();
-        $this->parents = new \SplObjectStorage();
-        $this->requests = array();
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            // kernel.request must be registered as early as possible to not break
-            // when an exception is thrown in any other kernel.request listener
-            KernelEvents::REQUEST => array('onKernelRequest', 1024),
-            KernelEvents::RESPONSE => array('onKernelResponse', -100),
-            KernelEvents::EXCEPTION => 'onKernelException',
-            KernelEvents::TERMINATE => array('onKernelTerminate', -1024),
-        );
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/ResponseListener.php b/vendor/symfony/http-kernel/EventListener/ResponseListener.php
deleted file mode 100644
index eeb2b0f..0000000
--- a/vendor/symfony/http-kernel/EventListener/ResponseListener.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * ResponseListener fixes the Response headers based on the Request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ResponseListener implements EventSubscriberInterface
-{
-    private $charset;
-
-    public function __construct($charset)
-    {
-        $this->charset = $charset;
-    }
-
-    /**
-     * Filters the Response.
-     *
-     * @param FilterResponseEvent $event A FilterResponseEvent instance
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $response = $event->getResponse();
-
-        if (null === $response->getCharset()) {
-            $response->setCharset($this->charset);
-        }
-
-        $response->prepare($event->getRequest());
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::RESPONSE => 'onKernelResponse',
-        );
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/RouterListener.php b/vendor/symfony/http-kernel/EventListener/RouterListener.php
deleted file mode 100644
index 297aab6..0000000
--- a/vendor/symfony/http-kernel/EventListener/RouterListener.php
+++ /dev/null
@@ -1,174 +0,0 @@
-<?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\EventListener;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
-use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RequestContextAwareInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Initializes the context from the request and sets request attributes based on a matching route.
- *
- * This listener works in 2 modes:
- *
- *  * 2.3 compatibility mode where you must call setRequest whenever the Request changes.
- *  * 2.4+ mode where you must pass a RequestStack instance in the constructor.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RouterListener implements EventSubscriberInterface
-{
-    private $matcher;
-    private $context;
-    private $logger;
-    private $request;
-    private $requestStack;
-
-    /**
-     * Constructor.
-     *
-     * RequestStack will become required in 3.0.
-     *
-     * @param UrlMatcherInterface|RequestMatcherInterface $matcher      The Url or Request matcher
-     * @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)
-    {
-        if (!$matcher instanceof UrlMatcherInterface && !$matcher instanceof RequestMatcherInterface) {
-            throw new \InvalidArgumentException('Matcher must either implement UrlMatcherInterface or RequestMatcherInterface.');
-        }
-
-        if (null === $context && !$matcher instanceof RequestContextAwareInterface) {
-            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;
-        $this->logger = $logger;
-    }
-
-    /**
-     * Sets the current Request.
-     *
-     * This method was used to synchronize the Request, but as the HttpKernel
-     * is doing that automatically now, you should never call it directly.
-     * It is kept public for BC with the 2.3 version.
-     *
-     * @param Request|null $request A Request instance
-     *
-     * @deprecated since version 2.4, to be removed in 3.0.
-     */
-    public function setRequest(Request $request = null)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be made private in 3.0.', E_USER_DEPRECATED);
-
-        $this->setCurrentRequest($request);
-    }
-
-    private function setCurrentRequest(Request $request = null)
-    {
-        if (null !== $request && $this->request !== $request) {
-            $this->context->fromRequest($request);
-        }
-
-        $this->request = $request;
-    }
-
-    public function onKernelFinishRequest(FinishRequestEvent $event)
-    {
-        if (null === $this->requestStack) {
-            return; // removed when requestStack is required
-        }
-
-        $this->setCurrentRequest($this->requestStack->getParentRequest());
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-
-        // initialize the context that is also used by the generator (assuming matcher and generator share the same context instance)
-        // we call setCurrentRequest even if most of the time, it has already been done to keep compatibility
-        // with frameworks which do not use the Symfony service container
-        // when we have a RequestStack, no need to do it
-        if (null !== $this->requestStack) {
-            $this->setCurrentRequest($request);
-        }
-
-        if ($request->attributes->has('_controller')) {
-            // routing is already done
-            return;
-        }
-
-        // add attributes based on the request (routing)
-        try {
-            // matching a request is more powerful than matching a URL path + context, so try that first
-            if ($this->matcher instanceof RequestMatcherInterface) {
-                $parameters = $this->matcher->matchRequest($request);
-            } else {
-                $parameters = $this->matcher->match($request->getPathInfo());
-            }
-
-            if (null !== $this->logger) {
-                $this->logger->info(sprintf('Matched route "%s".', isset($parameters['_route']) ? $parameters['_route'] : 'n/a'), array(
-                    'route_parameters' => $parameters,
-                    'request_uri' => $request->getUri(),
-                ));
-            }
-
-            $request->attributes->add($parameters);
-            unset($parameters['_route'], $parameters['_controller']);
-            $request->attributes->set('_route_params', $parameters);
-        } catch (ResourceNotFoundException $e) {
-            $message = sprintf('No route found for "%s %s"', $request->getMethod(), $request->getPathInfo());
-
-            if ($referer = $request->headers->get('referer')) {
-                $message .= sprintf(' (from "%s")', $referer);
-            }
-
-            throw new NotFoundHttpException($message, $e);
-        } catch (MethodNotAllowedException $e) {
-            $message = sprintf('No route found for "%s %s": Method Not Allowed (Allow: %s)', $request->getMethod(), $request->getPathInfo(), implode(', ', $e->getAllowedMethods()));
-
-            throw new MethodNotAllowedHttpException($e->getAllowedMethods(), $message, $e);
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::REQUEST => array(array('onKernelRequest', 32)),
-            KernelEvents::FINISH_REQUEST => array(array('onKernelFinishRequest', 0)),
-        );
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php b/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php
deleted file mode 100644
index 36809b5..0000000
--- a/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Saves the session, in case it is still open, before sending the response/headers.
- *
- * This ensures several things in case the developer did not save the session explicitly:
- *
- *  * If a session save handler without locking is used, it ensures the data is available
- *    on the next request, e.g. after a redirect. PHPs auto-save at script end via
- *    session_register_shutdown is executed after fastcgi_finish_request. So in this case
- *    the data could be missing the next request because it might not be saved the moment
- *    the new request is processed.
- *  * A locking save handler (e.g. the native 'files') circumvents concurrency problems like
- *    the one above. But by saving the session before long-running things in the terminate event,
- *    we ensure the session is not blocked longer than needed.
- *  * When regenerating the session ID no locking is involved in PHPs session design. See
- *    https://bugs.php.net/bug.php?id=61470 for a discussion. So in this case, the session must
- *    be saved anyway before sending the headers with the new session ID. Otherwise session
- *    data could get lost again for concurrent requests with the new ID. One result could be
- *    that you get logged out after just logging in.
- *
- * This listener should be executed as one of the last listeners, so that previous listeners
- * can still operate on the open session. This prevents the overhead of restarting it.
- * Listeners after closing the session can still work with the session as usual because
- * Symfonys session implementation starts the session on demand. So writing to it after
- * it is saved will just restart it.
- *
- * @author Tobias Schultze <http://tobion.de>
- */
-class SaveSessionListener implements EventSubscriberInterface
-{
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $session = $event->getRequest()->getSession();
-        if ($session && $session->isStarted()) {
-            $session->save();
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            // low priority but higher than StreamedResponseListener
-            KernelEvents::RESPONSE => array(array('onKernelResponse', -1000)),
-        );
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/SessionListener.php b/vendor/symfony/http-kernel/EventListener/SessionListener.php
deleted file mode 100644
index ecf065f..0000000
--- a/vendor/symfony/http-kernel/EventListener/SessionListener.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Sets the session in the request.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-abstract class SessionListener implements EventSubscriberInterface
-{
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $request = $event->getRequest();
-        $session = $this->getSession();
-        if (null === $session || $request->hasSession()) {
-            return;
-        }
-
-        $request->setSession($session);
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::REQUEST => array('onKernelRequest', 128),
-        );
-    }
-
-    /**
-     * Gets the session object.
-     *
-     * @return SessionInterface|null A SessionInterface instance or null if no session is available
-     */
-    abstract protected function getSession();
-}
diff --git a/vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php b/vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php
deleted file mode 100644
index 571cd74..0000000
--- a/vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\HttpFoundation\StreamedResponse;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * StreamedResponseListener is responsible for sending the Response
- * to the client.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class StreamedResponseListener implements EventSubscriberInterface
-{
-    /**
-     * Filters the Response.
-     *
-     * @param FilterResponseEvent $event A FilterResponseEvent instance
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $response = $event->getResponse();
-
-        if ($response instanceof StreamedResponse) {
-            $response->send();
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::RESPONSE => array('onKernelResponse', -1024),
-        );
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/SurrogateListener.php b/vendor/symfony/http-kernel/EventListener/SurrogateListener.php
deleted file mode 100644
index dc815a2..0000000
--- a/vendor/symfony/http-kernel/EventListener/SurrogateListener.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\HttpCache\SurrogateInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * SurrogateListener adds a Surrogate-Control HTTP header when the Response needs to be parsed for Surrogates.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SurrogateListener implements EventSubscriberInterface
-{
-    private $surrogate;
-
-    /**
-     * Constructor.
-     *
-     * @param SurrogateInterface $surrogate An SurrogateInterface instance
-     */
-    public function __construct(SurrogateInterface $surrogate = null)
-    {
-        $this->surrogate = $surrogate;
-    }
-
-    /**
-     * Filters the Response.
-     *
-     * @param FilterResponseEvent $event A FilterResponseEvent instance
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest() || null === $this->surrogate) {
-            return;
-        }
-
-        $this->surrogate->addSurrogateControl($event->getResponse());
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::RESPONSE => 'onKernelResponse',
-        );
-    }
-}
diff --git a/vendor/symfony/http-kernel/EventListener/TestSessionListener.php b/vendor/symfony/http-kernel/EventListener/TestSessionListener.php
deleted file mode 100644
index 8fc8e57..0000000
--- a/vendor/symfony/http-kernel/EventListener/TestSessionListener.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * TestSessionListener.
- *
- * Saves session in test environment.
- *
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class TestSessionListener implements EventSubscriberInterface
-{
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        // bootstrap the session
-        $session = $this->getSession();
-        if (!$session) {
-            return;
-        }
-
-        $cookies = $event->getRequest()->cookies;
-
-        if ($cookies->has($session->getName())) {
-            $session->setId($cookies->get($session->getName()));
-        }
-    }
-
-    /**
-     * Checks if session was initialized and saves if current request is master
-     * Runs on 'kernel.response' in test environment.
-     *
-     * @param FilterResponseEvent $event
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (!$event->isMasterRequest()) {
-            return;
-        }
-
-        $session = $event->getRequest()->getSession();
-        if ($session && $session->isStarted()) {
-            $session->save();
-            $params = session_get_cookie_params();
-            $event->getResponse()->headers->setCookie(new Cookie($session->getName(), $session->getId(), 0 === $params['lifetime'] ? 0 : time() + $params['lifetime'], $params['path'], $params['domain'], $params['secure'], $params['httponly']));
-        }
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::REQUEST => array('onKernelRequest', 192),
-            KernelEvents::RESPONSE => array('onKernelResponse', -128),
-        );
-    }
-
-    /**
-     * Gets the session object.
-     *
-     * @return SessionInterface|null A SessionInterface instance or null if no session is available
-     */
-    abstract protected function getSession();
-}
diff --git a/vendor/symfony/http-kernel/EventListener/TranslatorListener.php b/vendor/symfony/http-kernel/EventListener/TranslatorListener.php
deleted file mode 100644
index 6967ad0..0000000
--- a/vendor/symfony/http-kernel/EventListener/TranslatorListener.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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\EventListener;
-
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\Translation\TranslatorInterface;
-
-/**
- * Synchronizes the locale between the request and the translator.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TranslatorListener implements EventSubscriberInterface
-{
-    private $translator;
-    private $requestStack;
-
-    public function __construct(TranslatorInterface $translator, RequestStack $requestStack)
-    {
-        $this->translator = $translator;
-        $this->requestStack = $requestStack;
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $this->setLocale($event->getRequest());
-    }
-
-    public function onKernelFinishRequest(FinishRequestEvent $event)
-    {
-        if (null === $parentRequest = $this->requestStack->getParentRequest()) {
-            return;
-        }
-
-        $this->setLocale($parentRequest);
-    }
-
-    public static function getSubscribedEvents()
-    {
-        return array(
-            // must be registered after the Locale listener
-            KernelEvents::REQUEST => array(array('onKernelRequest', 10)),
-            KernelEvents::FINISH_REQUEST => array(array('onKernelFinishRequest', 0)),
-        );
-    }
-
-    private function setLocale(Request $request)
-    {
-        try {
-            $this->translator->setLocale($request->getLocale());
-        } catch (\InvalidArgumentException $e) {
-            $this->translator->setLocale($request->getDefaultLocale());
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php b/vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php
deleted file mode 100644
index 79d8639..0000000
--- a/vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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\Exception;
-
-/**
- * AccessDeniedHttpException.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Christophe Coevoet <stof@notk.org>
- */
-class AccessDeniedHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(403, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/BadRequestHttpException.php b/vendor/symfony/http-kernel/Exception/BadRequestHttpException.php
deleted file mode 100644
index 5f68172..0000000
--- a/vendor/symfony/http-kernel/Exception/BadRequestHttpException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Exception;
-
-/**
- * BadRequestHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class BadRequestHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(400, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/ConflictHttpException.php b/vendor/symfony/http-kernel/Exception/ConflictHttpException.php
deleted file mode 100644
index 34d738e..0000000
--- a/vendor/symfony/http-kernel/Exception/ConflictHttpException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Exception;
-
-/**
- * ConflictHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class ConflictHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(409, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/FatalErrorException.php b/vendor/symfony/http-kernel/Exception/FatalErrorException.php
deleted file mode 100644
index 0d2b4f9..0000000
--- a/vendor/symfony/http-kernel/Exception/FatalErrorException.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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\Exception;
-
-@trigger_error('The '.__NAMESPACE__.'\FatalErrorException class is deprecated since version 2.3 and will be removed in 3.0. Use the Symfony\Component\Debug\Exception\FatalErrorException class instead.', E_USER_DEPRECATED);
-
-/*
- * Fatal Error Exception.
- *
- * @author Konstanton Myakshin <koc-dp@yandex.ru>
- *
- * @deprecated since version 2.3, to be removed in 3.0. Use the same class from the Debug component instead.
- */
-class_exists('Symfony\Component\Debug\Exception\FatalErrorException');
diff --git a/vendor/symfony/http-kernel/Exception/FlattenException.php b/vendor/symfony/http-kernel/Exception/FlattenException.php
deleted file mode 100644
index 599aa95..0000000
--- a/vendor/symfony/http-kernel/Exception/FlattenException.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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\Exception;
-
-@trigger_error('The '.__NAMESPACE__.'\FlattenException class is deprecated since version 2.3 and will be removed in 3.0. Use the Symfony\Component\Debug\Exception\FlattenException class instead.', E_USER_DEPRECATED);
-
-/*
- * FlattenException wraps a PHP Exception to be able to serialize it.
- *
- * Basically, this class removes all objects from the trace.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.3, to be removed in 3.0. Use the same class from the Debug component instead.
- */
-class_exists('Symfony\Component\Debug\Exception\FlattenException');
diff --git a/vendor/symfony/http-kernel/Exception/GoneHttpException.php b/vendor/symfony/http-kernel/Exception/GoneHttpException.php
deleted file mode 100644
index 16ea223..0000000
--- a/vendor/symfony/http-kernel/Exception/GoneHttpException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Exception;
-
-/**
- * GoneHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class GoneHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(410, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/HttpException.php b/vendor/symfony/http-kernel/Exception/HttpException.php
deleted file mode 100644
index 4e1b526..0000000
--- a/vendor/symfony/http-kernel/Exception/HttpException.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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\Exception;
-
-/**
- * HttpException.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class HttpException extends \RuntimeException implements HttpExceptionInterface
-{
-    private $statusCode;
-    private $headers;
-
-    public function __construct($statusCode, $message = null, \Exception $previous = null, array $headers = array(), $code = 0)
-    {
-        $this->statusCode = $statusCode;
-        $this->headers = $headers;
-
-        parent::__construct($message, $code, $previous);
-    }
-
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    public function getHeaders()
-    {
-        return $this->headers;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php b/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php
deleted file mode 100644
index 8aa50a9..0000000
--- a/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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\Exception;
-
-/**
- * Interface for HTTP error exceptions.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-interface HttpExceptionInterface
-{
-    /**
-     * Returns the status code.
-     *
-     * @return int An HTTP response status code
-     */
-    public function getStatusCode();
-
-    /**
-     * Returns response headers.
-     *
-     * @return array Response headers
-     */
-    public function getHeaders();
-}
diff --git a/vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php b/vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php
deleted file mode 100644
index 0c4b943..0000000
--- a/vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Exception;
-
-/**
- * LengthRequiredHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class LengthRequiredHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(411, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php b/vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php
deleted file mode 100644
index 78dd26b..0000000
--- a/vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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\Exception;
-
-/**
- * MethodNotAllowedHttpException.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class MethodNotAllowedHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param array      $allow    An array of allowed methods
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct(array $allow, $message = null, \Exception $previous = null, $code = 0)
-    {
-        $headers = array('Allow' => strtoupper(implode(', ', $allow)));
-
-        parent::__construct(405, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php b/vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php
deleted file mode 100644
index cc6be4b..0000000
--- a/vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Exception;
-
-/**
- * NotAcceptableHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class NotAcceptableHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(406, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/NotFoundHttpException.php b/vendor/symfony/http-kernel/Exception/NotFoundHttpException.php
deleted file mode 100644
index 4639e37..0000000
--- a/vendor/symfony/http-kernel/Exception/NotFoundHttpException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Exception;
-
-/**
- * NotFoundHttpException.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class NotFoundHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(404, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php b/vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php
deleted file mode 100644
index 9df0e7b..0000000
--- a/vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Exception;
-
-/**
- * PreconditionFailedHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class PreconditionFailedHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(412, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php b/vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php
deleted file mode 100644
index 08ebca2..0000000
--- a/vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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\Exception;
-
-/**
- * PreconditionRequiredHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- *
- * @see http://tools.ietf.org/html/rfc6585
- */
-class PreconditionRequiredHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(428, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php b/vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php
deleted file mode 100644
index 32b9e2d..0000000
--- a/vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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\Exception;
-
-/**
- * ServiceUnavailableHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class ServiceUnavailableHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param int|string $retryAfter The number of seconds or HTTP-date after which the request may be retried
-     * @param string     $message    The internal exception message
-     * @param \Exception $previous   The previous exception
-     * @param int        $code       The internal exception code
-     */
-    public function __construct($retryAfter = null, $message = null, \Exception $previous = null, $code = 0)
-    {
-        $headers = array();
-        if ($retryAfter) {
-            $headers = array('Retry-After' => $retryAfter);
-        }
-
-        parent::__construct(503, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php b/vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php
deleted file mode 100644
index ab86e09..0000000
--- a/vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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\Exception;
-
-/**
- * TooManyRequestsHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- *
- * @see http://tools.ietf.org/html/rfc6585
- */
-class TooManyRequestsHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param int|string $retryAfter The number of seconds or HTTP-date after which the request may be retried
-     * @param string     $message    The internal exception message
-     * @param \Exception $previous   The previous exception
-     * @param int        $code       The internal exception code
-     */
-    public function __construct($retryAfter = null, $message = null, \Exception $previous = null, $code = 0)
-    {
-        $headers = array();
-        if ($retryAfter) {
-            $headers = array('Retry-After' => $retryAfter);
-        }
-
-        parent::__construct(429, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php b/vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php
deleted file mode 100644
index 0dfe42d..0000000
--- a/vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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\Exception;
-
-/**
- * UnauthorizedHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class UnauthorizedHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $challenge WWW-Authenticate challenge string
-     * @param string     $message   The internal exception message
-     * @param \Exception $previous  The previous exception
-     * @param int        $code      The internal exception code
-     */
-    public function __construct($challenge, $message = null, \Exception $previous = null, $code = 0)
-    {
-        $headers = array('WWW-Authenticate' => $challenge);
-
-        parent::__construct(401, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php b/vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php
deleted file mode 100644
index eb13f56..0000000
--- a/vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Exception;
-
-/**
- * UnprocessableEntityHttpException.
- *
- * @author Steve Hutchins <hutchinsteve@gmail.com>
- */
-class UnprocessableEntityHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(422, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php b/vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php
deleted file mode 100644
index a9d8fa0..0000000
--- a/vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Exception;
-
-/**
- * UnsupportedMediaTypeHttpException.
- *
- * @author Ben Ramsey <ben@benramsey.com>
- */
-class UnsupportedMediaTypeHttpException extends HttpException
-{
-    /**
-     * Constructor.
-     *
-     * @param string     $message  The internal exception message
-     * @param \Exception $previous The previous exception
-     * @param int        $code     The internal exception code
-     */
-    public function __construct($message = null, \Exception $previous = null, $code = 0)
-    {
-        parent::__construct(415, $message, $previous, array(), $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
deleted file mode 100644
index 1968001..0000000
--- a/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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\Fragment;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\HttpCache\SurrogateInterface;
-use Symfony\Component\HttpKernel\UriSigner;
-
-/**
- * Implements Surrogate rendering strategy.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class AbstractSurrogateFragmentRenderer extends RoutableFragmentRenderer
-{
-    private $surrogate;
-    private $inlineStrategy;
-    private $signer;
-
-    /**
-     * Constructor.
-     *
-     * The "fallback" strategy when surrogate is not available should always be an
-     * instance of InlineFragmentRenderer.
-     *
-     * @param SurrogateInterface        $surrogate      An Surrogate instance
-     * @param FragmentRendererInterface $inlineStrategy The inline strategy to use when the surrogate is not supported
-     * @param UriSigner                 $signer
-     */
-    public function __construct(SurrogateInterface $surrogate = null, FragmentRendererInterface $inlineStrategy, UriSigner $signer = null)
-    {
-        $this->surrogate = $surrogate;
-        $this->inlineStrategy = $inlineStrategy;
-        $this->signer = $signer;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Note that if the current Request has no surrogate capability, this method
-     * falls back to use the inline rendering strategy.
-     *
-     * Additional available options:
-     *
-     *  * alt: an alternative URI to render in case of an error
-     *  * comment: a comment to add when returning the surrogate tag
-     *
-     * Note, that not all surrogate strategies support all options. For now
-     * 'alt' and 'comment' are only supported by ESI.
-     *
-     * @see Symfony\Component\HttpKernel\HttpCache\SurrogateInterface
-     */
-    public function render($uri, Request $request, array $options = array())
-    {
-        if (!$this->surrogate || !$this->surrogate->hasSurrogateCapability($request)) {
-            return $this->inlineStrategy->render($uri, $request, $options);
-        }
-
-        if ($uri instanceof ControllerReference) {
-            $uri = $this->generateSignedFragmentUri($uri, $request);
-        }
-
-        $alt = isset($options['alt']) ? $options['alt'] : null;
-        if ($alt instanceof ControllerReference) {
-            $alt = $this->generateSignedFragmentUri($alt, $request);
-        }
-
-        $tag = $this->surrogate->renderIncludeTag($uri, $alt, isset($options['ignore_errors']) ? $options['ignore_errors'] : false, isset($options['comment']) ? $options['comment'] : '');
-
-        return new Response($tag);
-    }
-
-    private function generateSignedFragmentUri($uri, Request $request)
-    {
-        if (null === $this->signer) {
-            throw new \LogicException('You must use a URI when using the ESI rendering strategy or set a URL signer.');
-        }
-
-        // we need to sign the absolute URI, but want to return the path only.
-        $fragmentUri = $this->signer->sign($this->generateFragmentUri($uri, $request, true));
-
-        return substr($fragmentUri, strlen($request->getSchemeAndHttpHost()));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/EsiFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/EsiFragmentRenderer.php
deleted file mode 100644
index a4570e3..0000000
--- a/vendor/symfony/http-kernel/Fragment/EsiFragmentRenderer.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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\Fragment;
-
-/**
- * Implements the ESI rendering strategy.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class EsiFragmentRenderer extends AbstractSurrogateFragmentRenderer
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'esi';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php b/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
deleted file mode 100644
index 774870a..0000000
--- a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?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\Fragment;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-
-/**
- * Renders a URI that represents a resource fragment.
- *
- * This class handles the rendering of resource fragments that are included into
- * a main resource. The handling of the rendering is managed by specialized renderers.
- *
- * This listener works in 2 modes:
- *
- *  * 2.3 compatibility mode where you must call setRequest whenever the Request changes.
- *  * 2.4+ mode where you must pass a RequestStack instance in the constructor.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @see FragmentRendererInterface
- */
-class FragmentHandler
-{
-    private $debug;
-    private $renderers = array();
-    private $request;
-    private $requestStack;
-
-    /**
-     * Constructor.
-     *
-     * RequestStack will become required in 3.0.
-     *
-     * @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)
-    {
-        $this->requestStack = $requestStack;
-        foreach ($renderers as $renderer) {
-            $this->addRenderer($renderer);
-        }
-        $this->debug = $debug;
-    }
-
-    /**
-     * Adds a renderer.
-     *
-     * @param FragmentRendererInterface $renderer A FragmentRendererInterface instance
-     */
-    public function addRenderer(FragmentRendererInterface $renderer)
-    {
-        $this->renderers[$renderer->getName()] = $renderer;
-    }
-
-    /**
-     * Sets the current Request.
-     *
-     * This method was used to synchronize the Request, but as the HttpKernel
-     * is doing that automatically now, you should never call it directly.
-     * It is kept public for BC with the 2.3 version.
-     *
-     * @param Request|null $request A Request instance
-     *
-     * @deprecated since version 2.4, to be removed in 3.0.
-     */
-    public function setRequest(Request $request = null)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        $this->request = $request;
-    }
-
-    /**
-     * Renders a URI and returns the Response content.
-     *
-     * Available options:
-     *
-     *  * ignore_errors: true to return an empty string in case of an error
-     *
-     * @param string|ControllerReference $uri      A URI as a string or a ControllerReference instance
-     * @param string                     $renderer The renderer name
-     * @param array                      $options  An array of options
-     *
-     * @return string|null The Response content or null when the Response is streamed
-     *
-     * @throws \InvalidArgumentException when the renderer does not exist
-     * @throws \LogicException           when no master request is being handled
-     */
-    public function render($uri, $renderer = 'inline', array $options = array())
-    {
-        if (!isset($options['ignore_errors'])) {
-            $options['ignore_errors'] = !$this->debug;
-        }
-
-        if (!isset($this->renderers[$renderer])) {
-            throw new \InvalidArgumentException(sprintf('The "%s" renderer does not exist.', $renderer));
-        }
-
-        if (!$request = $this->getRequest()) {
-            throw new \LogicException('Rendering a fragment can only be done when handling a Request.');
-        }
-
-        return $this->deliver($this->renderers[$renderer]->render($uri, $request, $options));
-    }
-
-    /**
-     * Delivers the Response as a string.
-     *
-     * When the Response is a StreamedResponse, the content is streamed immediately
-     * instead of being returned.
-     *
-     * @param Response $response A Response instance
-     *
-     * @return string|null The Response content or null when the Response is streamed
-     *
-     * @throws \RuntimeException when the Response is not successful
-     */
-    protected function deliver(Response $response)
-    {
-        if (!$response->isSuccessful()) {
-            throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $this->getRequest()->getUri(), $response->getStatusCode()));
-        }
-
-        if (!$response instanceof StreamedResponse) {
-            return $response->getContent();
-        }
-
-        $response->sendContent();
-    }
-
-    private function getRequest()
-    {
-        return $this->requestStack ? $this->requestStack->getCurrentRequest() : $this->request;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php b/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php
deleted file mode 100644
index b177c3a..0000000
--- a/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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\Fragment;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Interface implemented by all rendering strategies.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface FragmentRendererInterface
-{
-    /**
-     * Renders a URI and returns the Response content.
-     *
-     * @param string|ControllerReference $uri     A URI as a string or a ControllerReference instance
-     * @param Request                    $request A Request instance
-     * @param array                      $options An array of options
-     *
-     * @return Response A Response instance
-     */
-    public function render($uri, Request $request, array $options = array());
-
-    /**
-     * Gets the name of the strategy.
-     *
-     * @return string The strategy name
-     */
-    public function getName();
-}
diff --git a/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
deleted file mode 100644
index 56c96b3..0000000
--- a/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?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\Fragment;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\Templating\EngineInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\UriSigner;
-
-/**
- * Implements the Hinclude rendering strategy.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HIncludeFragmentRenderer extends RoutableFragmentRenderer
-{
-    private $globalDefaultTemplate;
-    private $signer;
-    private $templating;
-    private $charset;
-
-    /**
-     * Constructor.
-     *
-     * @param EngineInterface|\Twig_Environment $templating            An EngineInterface or a \Twig_Environment instance
-     * @param UriSigner                         $signer                A UriSigner instance
-     * @param string                            $globalDefaultTemplate The global default content (it can be a template name or the content)
-     * @param string                            $charset
-     */
-    public function __construct($templating = null, UriSigner $signer = null, $globalDefaultTemplate = null, $charset = 'utf-8')
-    {
-        $this->setTemplating($templating);
-        $this->globalDefaultTemplate = $globalDefaultTemplate;
-        $this->signer = $signer;
-        $this->charset = $charset;
-    }
-
-    /**
-     * Sets the templating engine to use to render the default content.
-     *
-     * @param EngineInterface|\Twig_Environment|null $templating An EngineInterface or a \Twig_Environment instance
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setTemplating($templating)
-    {
-        if (null !== $templating && !$templating instanceof EngineInterface && !$templating instanceof \Twig_Environment) {
-            throw new \InvalidArgumentException('The hinclude rendering strategy needs an instance of \Twig_Environment or Symfony\Component\Templating\EngineInterface');
-        }
-
-        $this->templating = $templating;
-    }
-
-    /**
-     * Checks if a templating engine has been set.
-     *
-     * @return bool true if the templating engine has been set, false otherwise
-     */
-    public function hasTemplating()
-    {
-        return null !== $this->templating;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Additional available options:
-     *
-     *  * default:    The default content (it can be a template name or the content)
-     *  * id:         An optional hx:include tag id attribute
-     *  * attributes: An optional array of hx:include tag attributes
-     */
-    public function render($uri, Request $request, array $options = array())
-    {
-        if ($uri instanceof ControllerReference) {
-            if (null === $this->signer) {
-                throw new \LogicException('You must use a proper URI when using the Hinclude rendering strategy or set a URL signer.');
-            }
-
-            // we need to sign the absolute URI, but want to return the path only.
-            $uri = substr($this->signer->sign($this->generateFragmentUri($uri, $request, true)), strlen($request->getSchemeAndHttpHost()));
-        }
-
-        // We need to replace ampersands in the URI with the encoded form in order to return valid html/xml content.
-        $uri = str_replace('&', '&amp;', $uri);
-
-        $template = isset($options['default']) ? $options['default'] : $this->globalDefaultTemplate;
-        if (null !== $this->templating && $template && $this->templateExists($template)) {
-            $content = $this->templating->render($template);
-        } else {
-            $content = $template;
-        }
-
-        $attributes = isset($options['attributes']) && is_array($options['attributes']) ? $options['attributes'] : array();
-        if (isset($options['id']) && $options['id']) {
-            $attributes['id'] = $options['id'];
-        }
-        $renderedAttributes = '';
-        if (count($attributes) > 0) {
-            if (PHP_VERSION_ID >= 50400) {
-                $flags = ENT_QUOTES | ENT_SUBSTITUTE;
-            } else {
-                $flags = ENT_QUOTES;
-            }
-            foreach ($attributes as $attribute => $value) {
-                $renderedAttributes .= sprintf(
-                    ' %s="%s"',
-                    htmlspecialchars($attribute, $flags, $this->charset, false),
-                    htmlspecialchars($value, $flags, $this->charset, false)
-                );
-            }
-        }
-
-        return new Response(sprintf('<hx:include src="%s"%s>%s</hx:include>', $uri, $renderedAttributes, $content));
-    }
-
-    /**
-     * @param string $template
-     *
-     * @return bool
-     */
-    private function templateExists($template)
-    {
-        if ($this->templating instanceof EngineInterface) {
-            try {
-                return $this->templating->exists($template);
-            } catch (\InvalidArgumentException $e) {
-                return false;
-            }
-        }
-
-        $loader = $this->templating->getLoader();
-        if ($loader instanceof \Twig_ExistsLoaderInterface) {
-            return $loader->exists($template);
-        }
-
-        try {
-            $loader->getSource($template);
-
-            return true;
-        } catch (\Twig_Error_Loader $e) {
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'hinclude';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php
deleted file mode 100644
index a6ab82e..0000000
--- a/vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?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\Fragment;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-
-/**
- * Implements the inline rendering strategy where the Request is rendered by the current HTTP kernel.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class InlineFragmentRenderer extends RoutableFragmentRenderer
-{
-    private $kernel;
-    private $dispatcher;
-
-    /**
-     * Constructor.
-     *
-     * @param HttpKernelInterface      $kernel     A HttpKernelInterface instance
-     * @param EventDispatcherInterface $dispatcher A EventDispatcherInterface instance
-     */
-    public function __construct(HttpKernelInterface $kernel, EventDispatcherInterface $dispatcher = null)
-    {
-        $this->kernel = $kernel;
-        $this->dispatcher = $dispatcher;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Additional available options:
-     *
-     *  * alt: an alternative URI to render in case of an error
-     */
-    public function render($uri, Request $request, array $options = array())
-    {
-        $reference = null;
-        if ($uri instanceof ControllerReference) {
-            $reference = $uri;
-
-            // Remove attributes from the generated URI because if not, the Symfony
-            // routing system will use them to populate the Request attributes. We don't
-            // want that as we want to preserve objects (so we manually set Request attributes
-            // below instead)
-            $attributes = $reference->attributes;
-            $reference->attributes = array();
-
-            // The request format and locale might have been overridden by the user
-            foreach (array('_format', '_locale') as $key) {
-                if (isset($attributes[$key])) {
-                    $reference->attributes[$key] = $attributes[$key];
-                }
-            }
-
-            $uri = $this->generateFragmentUri($uri, $request, false, false);
-
-            $reference->attributes = array_merge($attributes, $reference->attributes);
-        }
-
-        $subRequest = $this->createSubRequest($uri, $request);
-
-        // override Request attributes as they can be objects (which are not supported by the generated URI)
-        if (null !== $reference) {
-            $subRequest->attributes->add($reference->attributes);
-        }
-
-        $level = ob_get_level();
-        try {
-            return $this->kernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false);
-        } catch (\Exception $e) {
-            // we dispatch the exception event to trigger the logging
-            // the response that comes back is simply ignored
-            if (isset($options['ignore_errors']) && $options['ignore_errors'] && $this->dispatcher) {
-                $event = new GetResponseForExceptionEvent($this->kernel, $request, HttpKernelInterface::SUB_REQUEST, $e);
-
-                $this->dispatcher->dispatch(KernelEvents::EXCEPTION, $event);
-            }
-
-            // let's clean up the output buffers that were created by the sub-request
-            Response::closeOutputBuffers($level, false);
-
-            if (isset($options['alt'])) {
-                $alt = $options['alt'];
-                unset($options['alt']);
-
-                return $this->render($alt, $request, $options);
-            }
-
-            if (!isset($options['ignore_errors']) || !$options['ignore_errors']) {
-                throw $e;
-            }
-
-            return new Response();
-        }
-    }
-
-    protected function createSubRequest($uri, Request $request)
-    {
-        $cookies = $request->cookies->all();
-        $server = $request->server->all();
-
-        // Override the arguments to emulate a sub-request.
-        // Sub-request object will point to localhost as client ip and real client ip
-        // will be included into trusted header for client ip
-        try {
-            if ($trustedHeaderName = Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) {
-                $currentXForwardedFor = $request->headers->get($trustedHeaderName, '');
-
-                $server['HTTP_'.$trustedHeaderName] = ($currentXForwardedFor ? $currentXForwardedFor.', ' : '').$request->getClientIp();
-            }
-        } catch (\InvalidArgumentException $e) {
-            // Do nothing
-        }
-
-        $server['REMOTE_ADDR'] = '127.0.0.1';
-
-        $subRequest = Request::create($uri, 'get', array(), $cookies, array(), $server);
-        if ($request->headers->has('Surrogate-Capability')) {
-            $subRequest->headers->set('Surrogate-Capability', $request->headers->get('Surrogate-Capability'));
-        }
-
-        if ($session = $request->getSession()) {
-            $subRequest->setSession($session);
-        }
-
-        return $subRequest;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'inline';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php
deleted file mode 100644
index d7eeb89..0000000
--- a/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?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\Fragment;
-
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\EventListener\FragmentListener;
-
-/**
- * Adds the possibility to generate a fragment URI for a given Controller.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class RoutableFragmentRenderer implements FragmentRendererInterface
-{
-    private $fragmentPath = '/_fragment';
-
-    /**
-     * Sets the fragment path that triggers the fragment listener.
-     *
-     * @param string $path The path
-     *
-     * @see FragmentListener
-     */
-    public function setFragmentPath($path)
-    {
-        $this->fragmentPath = $path;
-    }
-
-    /**
-     * Generates a fragment URI for a given controller.
-     *
-     * @param ControllerReference $reference A ControllerReference instance
-     * @param Request             $request   A Request instance
-     * @param bool                $absolute  Whether to generate an absolute URL or not
-     * @param bool                $strict    Whether to allow non-scalar attributes or not
-     *
-     * @return string A fragment URI
-     */
-    protected function generateFragmentUri(ControllerReference $reference, Request $request, $absolute = false, $strict = true)
-    {
-        if ($strict) {
-            $this->checkNonScalar($reference->attributes);
-        }
-
-        // We need to forward the current _format and _locale values as we don't have
-        // a proper routing pattern to do the job for us.
-        // This makes things inconsistent if you switch from rendering a controller
-        // to rendering a route if the route pattern does not contain the special
-        // _format and _locale placeholders.
-        if (!isset($reference->attributes['_format'])) {
-            $reference->attributes['_format'] = $request->getRequestFormat();
-        }
-        if (!isset($reference->attributes['_locale'])) {
-            $reference->attributes['_locale'] = $request->getLocale();
-        }
-
-        $reference->attributes['_controller'] = $reference->controller;
-
-        $reference->query['_path'] = http_build_query($reference->attributes, '', '&');
-
-        $path = $this->fragmentPath.'?'.http_build_query($reference->query, '', '&');
-
-        if ($absolute) {
-            return $request->getUriForPath($path);
-        }
-
-        return $request->getBaseUrl().$path;
-    }
-
-    private function checkNonScalar($values)
-    {
-        foreach ($values as $key => $value) {
-            if (is_array($value)) {
-                $this->checkNonScalar($value);
-            } elseif (!is_scalar($value) && null !== $value) {
-                throw new \LogicException(sprintf('Controller attributes cannot contain non-scalar/non-null values (value for key "%s" is not a scalar or null).', $key));
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Fragment/SsiFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/SsiFragmentRenderer.php
deleted file mode 100644
index 45e7122..0000000
--- a/vendor/symfony/http-kernel/Fragment/SsiFragmentRenderer.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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\Fragment;
-
-/**
- * Implements the SSI rendering strategy.
- *
- * @author Sebastian Krebs <krebs.seb@gmail.com>
- */
-class SsiFragmentRenderer extends AbstractSurrogateFragmentRenderer
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'ssi';
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/Esi.php b/vendor/symfony/http-kernel/HttpCache/Esi.php
deleted file mode 100644
index bc344c6..0000000
--- a/vendor/symfony/http-kernel/HttpCache/Esi.php
+++ /dev/null
@@ -1,295 +0,0 @@
-<?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\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * Esi implements the ESI capabilities to Request and Response instances.
- *
- * For more information, read the following W3C notes:
- *
- *  * ESI Language Specification 1.0 (http://www.w3.org/TR/esi-lang)
- *
- *  * Edge Architecture Specification (http://www.w3.org/TR/edge-arch)
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Esi implements SurrogateInterface
-{
-    private $contentTypes;
-    private $phpEscapeMap = array(
-        array('<?', '<%', '<s', '<S'),
-        array('<?php echo "<?"; ?>', '<?php echo "<%"; ?>', '<?php echo "<s"; ?>', '<?php echo "<S"; ?>'),
-    );
-
-    /**
-     * Constructor.
-     *
-     * @param array $contentTypes An array of content-type that should be parsed for ESI information.
-     *                            (default: text/html, text/xml, application/xhtml+xml, and application/xml)
-     */
-    public function __construct(array $contentTypes = array('text/html', 'text/xml', 'application/xhtml+xml', 'application/xml'))
-    {
-        $this->contentTypes = $contentTypes;
-    }
-
-    public function getName()
-    {
-        return 'esi';
-    }
-
-    /**
-     * Returns a new cache strategy instance.
-     *
-     * @return ResponseCacheStrategyInterface A ResponseCacheStrategyInterface instance
-     */
-    public function createCacheStrategy()
-    {
-        return new ResponseCacheStrategy();
-    }
-
-    /**
-     * Checks that at least one surrogate has ESI/1.0 capability.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return bool true if one surrogate has ESI/1.0 capability, false otherwise
-     */
-    public function hasSurrogateCapability(Request $request)
-    {
-        if (null === $value = $request->headers->get('Surrogate-Capability')) {
-            return false;
-        }
-
-        return false !== strpos($value, 'ESI/1.0');
-    }
-
-    /**
-     * Checks that at least one surrogate has ESI/1.0 capability.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return bool true if one surrogate has ESI/1.0 capability, false otherwise
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use hasSurrogateCapability() instead
-     */
-    public function hasSurrogateEsiCapability(Request $request)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the hasSurrogateCapability() method instead.', E_USER_DEPRECATED);
-
-        return $this->hasSurrogateCapability($request);
-    }
-
-    /**
-     * Adds ESI/1.0 capability to the given Request.
-     *
-     * @param Request $request A Request instance
-     */
-    public function addSurrogateCapability(Request $request)
-    {
-        $current = $request->headers->get('Surrogate-Capability');
-        $new = 'symfony2="ESI/1.0"';
-
-        $request->headers->set('Surrogate-Capability', $current ? $current.', '.$new : $new);
-    }
-
-    /**
-     * Adds ESI/1.0 capability to the given Request.
-     *
-     * @param Request $request A Request instance
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use addSurrogateCapability() instead
-     */
-    public function addSurrogateEsiCapability(Request $request)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the addSurrogateCapability() method instead.', E_USER_DEPRECATED);
-
-        $this->addSurrogateCapability($request);
-    }
-
-    /**
-     * Adds HTTP headers to specify that the Response needs to be parsed for ESI.
-     *
-     * This method only adds an ESI HTTP header if the Response has some ESI tags.
-     *
-     * @param Response $response A Response instance
-     */
-    public function addSurrogateControl(Response $response)
-    {
-        if (false !== strpos($response->getContent(), '<esi:include')) {
-            $response->headers->set('Surrogate-Control', 'content="ESI/1.0"');
-        }
-    }
-
-    /**
-     * Checks that the Response needs to be parsed for ESI tags.
-     *
-     * @param Response $response A Response instance
-     *
-     * @return bool true if the Response needs to be parsed, false otherwise
-     */
-    public function needsParsing(Response $response)
-    {
-        if (!$control = $response->headers->get('Surrogate-Control')) {
-            return false;
-        }
-
-        return (bool) preg_match('#content="[^"]*ESI/1.0[^"]*"#', $control);
-    }
-
-    /**
-     * Checks that the Response needs to be parsed for ESI tags.
-     *
-     * @param Response $response A Response instance
-     *
-     * @return bool true if the Response needs to be parsed, false otherwise
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use needsParsing() instead
-     */
-    public function needsEsiParsing(Response $response)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the needsParsing() method instead.', E_USER_DEPRECATED);
-
-        return $this->needsParsing($response);
-    }
-
-    /**
-     * Renders an ESI tag.
-     *
-     * @param string $uri          A URI
-     * @param string $alt          An alternate URI
-     * @param bool   $ignoreErrors Whether to ignore errors or not
-     * @param string $comment      A comment to add as an esi:include tag
-     *
-     * @return string
-     */
-    public function renderIncludeTag($uri, $alt = null, $ignoreErrors = true, $comment = '')
-    {
-        $html = sprintf('<esi:include src="%s"%s%s />',
-            $uri,
-            $ignoreErrors ? ' onerror="continue"' : '',
-            $alt ? sprintf(' alt="%s"', $alt) : ''
-        );
-
-        if (!empty($comment)) {
-            return sprintf("<esi:comment text=\"%s\" />\n%s", $comment, $html);
-        }
-
-        return $html;
-    }
-
-    /**
-     * Replaces a Response ESI tags with the included resource content.
-     *
-     * @param Request  $request  A Request instance
-     * @param Response $response A Response instance
-     *
-     * @return Response
-     */
-    public function process(Request $request, Response $response)
-    {
-        $type = $response->headers->get('Content-Type');
-        if (empty($type)) {
-            $type = 'text/html';
-        }
-
-        $parts = explode(';', $type);
-        if (!in_array($parts[0], $this->contentTypes)) {
-            return $response;
-        }
-
-        // we don't use a proper XML parser here as we can have ESI tags in a plain text response
-        $content = $response->getContent();
-        $content = preg_replace('#<esi\:remove>.*?</esi\:remove>#s', '', $content);
-        $content = preg_replace('#<esi\:comment[^>]+>#s', '', $content);
-
-        $chunks = preg_split('#<esi\:include\s+(.*?)\s*(?:/|</esi\:include)>#', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
-        $chunks[0] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[0]);
-
-        $i = 1;
-        while (isset($chunks[$i])) {
-            $options = array();
-            preg_match_all('/(src|onerror|alt)="([^"]*?)"/', $chunks[$i], $matches, PREG_SET_ORDER);
-            foreach ($matches as $set) {
-                $options[$set[1]] = $set[2];
-            }
-
-            if (!isset($options['src'])) {
-                throw new \RuntimeException('Unable to process an ESI tag without a "src" attribute.');
-            }
-
-            $chunks[$i] = sprintf('<?php echo $this->surrogate->handle($this, %s, %s, %s) ?>'."\n",
-                var_export($options['src'], true),
-                var_export(isset($options['alt']) ? $options['alt'] : '', true),
-                isset($options['onerror']) && 'continue' === $options['onerror'] ? 'true' : 'false'
-            );
-            ++$i;
-            $chunks[$i] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[$i]);
-            ++$i;
-        }
-        $content = implode('', $chunks);
-
-        $response->setContent($content);
-        $response->headers->set('X-Body-Eval', 'ESI');
-
-        // remove ESI/1.0 from the Surrogate-Control header
-        if ($response->headers->has('Surrogate-Control')) {
-            $value = $response->headers->get('Surrogate-Control');
-            if ('content="ESI/1.0"' == $value) {
-                $response->headers->remove('Surrogate-Control');
-            } elseif (preg_match('#,\s*content="ESI/1.0"#', $value)) {
-                $response->headers->set('Surrogate-Control', preg_replace('#,\s*content="ESI/1.0"#', '', $value));
-            } elseif (preg_match('#content="ESI/1.0",\s*#', $value)) {
-                $response->headers->set('Surrogate-Control', preg_replace('#content="ESI/1.0",\s*#', '', $value));
-            }
-        }
-    }
-
-    /**
-     * Handles an ESI from the cache.
-     *
-     * @param HttpCache $cache        An HttpCache instance
-     * @param string    $uri          The main URI
-     * @param string    $alt          An alternative URI
-     * @param bool      $ignoreErrors Whether to ignore errors or not
-     *
-     * @return string
-     *
-     * @throws \RuntimeException
-     * @throws \Exception
-     */
-    public function handle(HttpCache $cache, $uri, $alt, $ignoreErrors)
-    {
-        $subRequest = Request::create($uri, 'get', array(), $cache->getRequest()->cookies->all(), array(), $cache->getRequest()->server->all());
-
-        try {
-            $response = $cache->handle($subRequest, HttpKernelInterface::SUB_REQUEST, true);
-
-            if (!$response->isSuccessful()) {
-                throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $subRequest->getUri(), $response->getStatusCode()));
-            }
-
-            return $response->getContent();
-        } catch (\Exception $e) {
-            if ($alt) {
-                return $this->handle($cache, $alt, '', $ignoreErrors);
-            }
-
-            if (!$ignoreErrors) {
-                throw $e;
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/EsiResponseCacheStrategy.php b/vendor/symfony/http-kernel/HttpCache/EsiResponseCacheStrategy.php
deleted file mode 100644
index 636f60e..0000000
--- a/vendor/symfony/http-kernel/HttpCache/EsiResponseCacheStrategy.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- * (based on commit 02d2b48d75bcb63cf1c0c7149c077ad256542801)
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-@trigger_error('The '.__NAMESPACE__.'\EsiResponseCacheStrategy class is deprecated since version 2.6 and will be removed in 3.0. Use the Symfony\Component\HttpKernel\HttpCache\ResponseCacheStrategy class instead.', E_USER_DEPRECATED);
-
-/**
- * EsiResponseCacheStrategy knows how to compute the Response cache HTTP header
- * based on the different ESI response cache headers.
- *
- * This implementation changes the master response TTL to the smallest TTL received
- * or force validation if one of the ESI has validation cache strategy.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.6, to be removed in 3.0. Use ResponseCacheStrategy instead
- */
-class EsiResponseCacheStrategy extends ResponseCacheStrategy implements EsiResponseCacheStrategyInterface
-{
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/EsiResponseCacheStrategyInterface.php b/vendor/symfony/http-kernel/HttpCache/EsiResponseCacheStrategyInterface.php
deleted file mode 100644
index 5388e99..0000000
--- a/vendor/symfony/http-kernel/HttpCache/EsiResponseCacheStrategyInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- * (based on commit 02d2b48d75bcb63cf1c0c7149c077ad256542801)
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-/**
- * ResponseCacheStrategyInterface implementations know how to compute the
- * Response cache HTTP header based on the different response cache headers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.6, to be removed in 3.0. Use ResponseCacheStrategyInterface instead.
- */
-interface EsiResponseCacheStrategyInterface extends ResponseCacheStrategyInterface
-{
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/HttpCache.php b/vendor/symfony/http-kernel/HttpCache/HttpCache.php
deleted file mode 100644
index a16c740..0000000
--- a/vendor/symfony/http-kernel/HttpCache/HttpCache.php
+++ /dev/null
@@ -1,706 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- * (based on commit 02d2b48d75bcb63cf1c0c7149c077ad256542801)
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\TerminableInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Cache provides HTTP caching.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HttpCache implements HttpKernelInterface, TerminableInterface
-{
-    private $kernel;
-    private $store;
-    private $request;
-    private $surrogate;
-    private $surrogateCacheStrategy;
-    private $options = array();
-    private $traces = array();
-
-    /**
-     * Constructor.
-     *
-     * The available options are:
-     *
-     *   * debug:                 If true, the traces are added as a HTTP header to ease debugging
-     *
-     *   * default_ttl            The number of seconds that a cache entry should be considered
-     *                            fresh when no explicit freshness information is provided in
-     *                            a response. Explicit Cache-Control or Expires headers
-     *                            override this value. (default: 0)
-     *
-     *   * private_headers        Set of request headers that trigger "private" cache-control behavior
-     *                            on responses that don't explicitly state whether the response is
-     *                            public or private via a Cache-Control directive. (default: Authorization and Cookie)
-     *
-     *   * allow_reload           Specifies whether the client can force a cache reload by including a
-     *                            Cache-Control "no-cache" directive in the request. Set it to ``true``
-     *                            for compliance with RFC 2616. (default: false)
-     *
-     *   * allow_revalidate       Specifies whether the client can force a cache revalidate by including
-     *                            a Cache-Control "max-age=0" directive in the request. Set it to ``true``
-     *                            for compliance with RFC 2616. (default: false)
-     *
-     *   * stale_while_revalidate Specifies the default number of seconds (the granularity is the second as the
-     *                            Response TTL precision is a second) during which the cache can immediately return
-     *                            a stale response while it revalidates it in the background (default: 2).
-     *                            This setting is overridden by the stale-while-revalidate HTTP Cache-Control
-     *                            extension (see RFC 5861).
-     *
-     *   * stale_if_error         Specifies the default number of seconds (the granularity is the second) during which
-     *                            the cache can serve a stale response when an error is encountered (default: 60).
-     *                            This setting is overridden by the stale-if-error HTTP Cache-Control extension
-     *                            (see RFC 5861).
-     *
-     * @param HttpKernelInterface $kernel    An HttpKernelInterface instance
-     * @param StoreInterface      $store     A Store instance
-     * @param SurrogateInterface  $surrogate A SurrogateInterface instance
-     * @param array               $options   An array of options
-     */
-    public function __construct(HttpKernelInterface $kernel, StoreInterface $store, SurrogateInterface $surrogate = null, array $options = array())
-    {
-        $this->store = $store;
-        $this->kernel = $kernel;
-        $this->surrogate = $surrogate;
-
-        // needed in case there is a fatal error because the backend is too slow to respond
-        register_shutdown_function(array($this->store, 'cleanup'));
-
-        $this->options = array_merge(array(
-            'debug' => false,
-            'default_ttl' => 0,
-            'private_headers' => array('Authorization', 'Cookie'),
-            'allow_reload' => false,
-            'allow_revalidate' => false,
-            'stale_while_revalidate' => 2,
-            'stale_if_error' => 60,
-        ), $options);
-    }
-
-    /**
-     * Gets the current store.
-     *
-     * @return StoreInterface $store A StoreInterface instance
-     */
-    public function getStore()
-    {
-        return $this->store;
-    }
-
-    /**
-     * Returns an array of events that took place during processing of the last request.
-     *
-     * @return array An array of events
-     */
-    public function getTraces()
-    {
-        return $this->traces;
-    }
-
-    /**
-     * Returns a log message for the events of the last request processing.
-     *
-     * @return string A log message
-     */
-    public function getLog()
-    {
-        $log = array();
-        foreach ($this->traces as $request => $traces) {
-            $log[] = sprintf('%s: %s', $request, implode(', ', $traces));
-        }
-
-        return implode('; ', $log);
-    }
-
-    /**
-     * Gets the Request instance associated with the master request.
-     *
-     * @return Request A Request instance
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Gets the Kernel instance.
-     *
-     * @return HttpKernelInterface An HttpKernelInterface instance
-     */
-    public function getKernel()
-    {
-        return $this->kernel;
-    }
-
-    /**
-     * Gets the Surrogate instance.
-     *
-     * @throws \LogicException
-     *
-     * @return SurrogateInterface A Surrogate instance
-     */
-    public function getSurrogate()
-    {
-        if (!$this->surrogate instanceof Esi) {
-            throw new \LogicException('This instance of HttpCache was not set up to use ESI as surrogate handler. You must overwrite and use createSurrogate');
-        }
-
-        return $this->surrogate;
-    }
-
-    /**
-     * Gets the Esi instance.
-     *
-     * @throws \LogicException
-     *
-     * @return Esi An Esi instance
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use getSurrogate() instead
-     */
-    public function getEsi()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the getSurrogate() method instead.', E_USER_DEPRECATED);
-
-        return $this->getSurrogate();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
-    {
-        // FIXME: catch exceptions and implement a 500 error page here? -> in Varnish, there is a built-in error page mechanism
-        if (HttpKernelInterface::MASTER_REQUEST === $type) {
-            $this->traces = array();
-            $this->request = $request;
-            if (null !== $this->surrogate) {
-                $this->surrogateCacheStrategy = $this->surrogate->createCacheStrategy();
-            }
-        }
-
-        $path = $request->getPathInfo();
-        if ($qs = $request->getQueryString()) {
-            $path .= '?'.$qs;
-        }
-        $this->traces[$request->getMethod().' '.$path] = array();
-
-        if (!$request->isMethodSafe()) {
-            $response = $this->invalidate($request, $catch);
-        } elseif ($request->headers->has('expect')) {
-            $response = $this->pass($request, $catch);
-        } else {
-            $response = $this->lookup($request, $catch);
-        }
-
-        $this->restoreResponseBody($request, $response);
-
-        $response->setDate(\DateTime::createFromFormat('U', time(), new \DateTimeZone('UTC')));
-
-        if (HttpKernelInterface::MASTER_REQUEST === $type && $this->options['debug']) {
-            $response->headers->set('X-Symfony-Cache', $this->getLog());
-        }
-
-        if (null !== $this->surrogate) {
-            if (HttpKernelInterface::MASTER_REQUEST === $type) {
-                $this->surrogateCacheStrategy->update($response);
-            } else {
-                $this->surrogateCacheStrategy->add($response);
-            }
-        }
-
-        $response->prepare($request);
-
-        $response->isNotModified($request);
-
-        return $response;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function terminate(Request $request, Response $response)
-    {
-        if ($this->getKernel() instanceof TerminableInterface) {
-            $this->getKernel()->terminate($request, $response);
-        }
-    }
-
-    /**
-     * Forwards the Request to the backend without storing the Response in the cache.
-     *
-     * @param Request $request A Request instance
-     * @param bool    $catch   Whether to process exceptions
-     *
-     * @return Response A Response instance
-     */
-    protected function pass(Request $request, $catch = false)
-    {
-        $this->record($request, 'pass');
-
-        return $this->forward($request, $catch);
-    }
-
-    /**
-     * Invalidates non-safe methods (like POST, PUT, and DELETE).
-     *
-     * @param Request $request A Request instance
-     * @param bool    $catch   Whether to process exceptions
-     *
-     * @return Response A Response instance
-     *
-     * @throws \Exception
-     *
-     * @see RFC2616 13.10
-     */
-    protected function invalidate(Request $request, $catch = false)
-    {
-        $response = $this->pass($request, $catch);
-
-        // invalidate only when the response is successful
-        if ($response->isSuccessful() || $response->isRedirect()) {
-            try {
-                $this->store->invalidate($request, $catch);
-
-                // As per the RFC, invalidate Location and Content-Location URLs if present
-                foreach (array('Location', 'Content-Location') as $header) {
-                    if ($uri = $response->headers->get($header)) {
-                        $subRequest = Request::create($uri, 'get', array(), array(), array(), $request->server->all());
-
-                        $this->store->invalidate($subRequest);
-                    }
-                }
-
-                $this->record($request, 'invalidate');
-            } catch (\Exception $e) {
-                $this->record($request, 'invalidate-failed');
-
-                if ($this->options['debug']) {
-                    throw $e;
-                }
-            }
-        }
-
-        return $response;
-    }
-
-    /**
-     * Lookups a Response from the cache for the given Request.
-     *
-     * When a matching cache entry is found and is fresh, it uses it as the
-     * response without forwarding any request to the backend. When a matching
-     * cache entry is found but is stale, it attempts to "validate" the entry with
-     * the backend using conditional GET. When no matching cache entry is found,
-     * it triggers "miss" processing.
-     *
-     * @param Request $request A Request instance
-     * @param bool    $catch   whether to process exceptions
-     *
-     * @return Response A Response instance
-     *
-     * @throws \Exception
-     */
-    protected function lookup(Request $request, $catch = false)
-    {
-        // if allow_reload and no-cache Cache-Control, allow a cache reload
-        if ($this->options['allow_reload'] && $request->isNoCache()) {
-            $this->record($request, 'reload');
-
-            return $this->fetch($request, $catch);
-        }
-
-        try {
-            $entry = $this->store->lookup($request);
-        } catch (\Exception $e) {
-            $this->record($request, 'lookup-failed');
-
-            if ($this->options['debug']) {
-                throw $e;
-            }
-
-            return $this->pass($request, $catch);
-        }
-
-        if (null === $entry) {
-            $this->record($request, 'miss');
-
-            return $this->fetch($request, $catch);
-        }
-
-        if (!$this->isFreshEnough($request, $entry)) {
-            $this->record($request, 'stale');
-
-            return $this->validate($request, $entry, $catch);
-        }
-
-        $this->record($request, 'fresh');
-
-        $entry->headers->set('Age', $entry->getAge());
-
-        return $entry;
-    }
-
-    /**
-     * Validates that a cache entry is fresh.
-     *
-     * The original request is used as a template for a conditional
-     * GET request with the backend.
-     *
-     * @param Request  $request A Request instance
-     * @param Response $entry   A Response instance to validate
-     * @param bool     $catch   Whether to process exceptions
-     *
-     * @return Response A Response instance
-     */
-    protected function validate(Request $request, Response $entry, $catch = false)
-    {
-        $subRequest = clone $request;
-
-        // send no head requests because we want content
-        $subRequest->setMethod('GET');
-
-        // add our cached last-modified validator
-        $subRequest->headers->set('if_modified_since', $entry->headers->get('Last-Modified'));
-
-        // Add our cached etag validator to the environment.
-        // We keep the etags from the client to handle the case when the client
-        // has a different private valid entry which is not cached here.
-        $cachedEtags = $entry->getEtag() ? array($entry->getEtag()) : array();
-        $requestEtags = $request->getETags();
-        if ($etags = array_unique(array_merge($cachedEtags, $requestEtags))) {
-            $subRequest->headers->set('if_none_match', implode(', ', $etags));
-        }
-
-        $response = $this->forward($subRequest, $catch, $entry);
-
-        if (304 == $response->getStatusCode()) {
-            $this->record($request, 'valid');
-
-            // return the response and not the cache entry if the response is valid but not cached
-            $etag = $response->getEtag();
-            if ($etag && in_array($etag, $requestEtags) && !in_array($etag, $cachedEtags)) {
-                return $response;
-            }
-
-            $entry = clone $entry;
-            $entry->headers->remove('Date');
-
-            foreach (array('Date', 'Expires', 'Cache-Control', 'ETag', 'Last-Modified') as $name) {
-                if ($response->headers->has($name)) {
-                    $entry->headers->set($name, $response->headers->get($name));
-                }
-            }
-
-            $response = $entry;
-        } else {
-            $this->record($request, 'invalid');
-        }
-
-        if ($response->isCacheable()) {
-            $this->store($request, $response);
-        }
-
-        return $response;
-    }
-
-    /**
-     * Forwards the Request to the backend and determines whether the response should be stored.
-     *
-     * This methods is triggered when the cache missed or a reload is required.
-     *
-     * @param Request $request A Request instance
-     * @param bool    $catch   whether to process exceptions
-     *
-     * @return Response A Response instance
-     */
-    protected function fetch(Request $request, $catch = false)
-    {
-        $subRequest = clone $request;
-
-        // send no head requests because we want content
-        $subRequest->setMethod('GET');
-
-        // avoid that the backend sends no content
-        $subRequest->headers->remove('if_modified_since');
-        $subRequest->headers->remove('if_none_match');
-
-        $response = $this->forward($subRequest, $catch);
-
-        if ($response->isCacheable()) {
-            $this->store($request, $response);
-        }
-
-        return $response;
-    }
-
-    /**
-     * Forwards the Request to the backend and returns the Response.
-     *
-     * @param Request  $request A Request instance
-     * @param bool     $catch   Whether to catch exceptions or not
-     * @param Response $entry   A Response instance (the stale entry if present, null otherwise)
-     *
-     * @return Response A Response instance
-     */
-    protected function forward(Request $request, $catch = false, Response $entry = null)
-    {
-        if ($this->surrogate) {
-            $this->surrogate->addSurrogateCapability($request);
-        }
-
-        // modify the X-Forwarded-For header if needed
-        $forwardedFor = $request->headers->get('X-Forwarded-For');
-        if ($forwardedFor) {
-            $request->headers->set('X-Forwarded-For', $forwardedFor.', '.$request->server->get('REMOTE_ADDR'));
-        } else {
-            $request->headers->set('X-Forwarded-For', $request->server->get('REMOTE_ADDR'));
-        }
-
-        // fix the client IP address by setting it to 127.0.0.1 as HttpCache
-        // is always called from the same process as the backend.
-        $request->server->set('REMOTE_ADDR', '127.0.0.1');
-
-        // make sure HttpCache is a trusted proxy
-        if (!in_array('127.0.0.1', $trustedProxies = Request::getTrustedProxies())) {
-            $trustedProxies[] = '127.0.0.1';
-            Request::setTrustedProxies($trustedProxies);
-        }
-
-        // always a "master" request (as the real master request can be in cache)
-        $response = $this->kernel->handle($request, HttpKernelInterface::MASTER_REQUEST, $catch);
-        // FIXME: we probably need to also catch exceptions if raw === true
-
-        // we don't implement the stale-if-error on Requests, which is nonetheless part of the RFC
-        if (null !== $entry && in_array($response->getStatusCode(), array(500, 502, 503, 504))) {
-            if (null === $age = $entry->headers->getCacheControlDirective('stale-if-error')) {
-                $age = $this->options['stale_if_error'];
-            }
-
-            if (abs($entry->getTtl()) < $age) {
-                $this->record($request, 'stale-if-error');
-
-                return $entry;
-            }
-        }
-
-        $this->processResponseBody($request, $response);
-
-        if ($this->isPrivateRequest($request) && !$response->headers->hasCacheControlDirective('public')) {
-            $response->setPrivate(true);
-        } elseif ($this->options['default_ttl'] > 0 && null === $response->getTtl() && !$response->headers->getCacheControlDirective('must-revalidate')) {
-            $response->setTtl($this->options['default_ttl']);
-        }
-
-        return $response;
-    }
-
-    /**
-     * Checks whether the cache entry is "fresh enough" to satisfy the Request.
-     *
-     * @param Request  $request A Request instance
-     * @param Response $entry   A Response instance
-     *
-     * @return bool true if the cache entry if fresh enough, false otherwise
-     */
-    protected function isFreshEnough(Request $request, Response $entry)
-    {
-        if (!$entry->isFresh()) {
-            return $this->lock($request, $entry);
-        }
-
-        if ($this->options['allow_revalidate'] && null !== $maxAge = $request->headers->getCacheControlDirective('max-age')) {
-            return $maxAge > 0 && $maxAge >= $entry->getAge();
-        }
-
-        return true;
-    }
-
-    /**
-     * Locks a Request during the call to the backend.
-     *
-     * @param Request  $request A Request instance
-     * @param Response $entry   A Response instance
-     *
-     * @return bool true if the cache entry can be returned even if it is staled, false otherwise
-     */
-    protected function lock(Request $request, Response $entry)
-    {
-        // try to acquire a lock to call the backend
-        $lock = $this->store->lock($request);
-
-        // there is already another process calling the backend
-        if (true !== $lock) {
-            // check if we can serve the stale entry
-            if (null === $age = $entry->headers->getCacheControlDirective('stale-while-revalidate')) {
-                $age = $this->options['stale_while_revalidate'];
-            }
-
-            if (abs($entry->getTtl()) < $age) {
-                $this->record($request, 'stale-while-revalidate');
-
-                // server the stale response while there is a revalidation
-                return true;
-            }
-
-            // wait for the lock to be released
-            $wait = 0;
-            while ($this->store->isLocked($request) && $wait < 5000000) {
-                usleep(50000);
-                $wait += 50000;
-            }
-
-            if ($wait < 2000000) {
-                // replace the current entry with the fresh one
-                $new = $this->lookup($request);
-                $entry->headers = $new->headers;
-                $entry->setContent($new->getContent());
-                $entry->setStatusCode($new->getStatusCode());
-                $entry->setProtocolVersion($new->getProtocolVersion());
-                foreach ($new->headers->getCookies() as $cookie) {
-                    $entry->headers->setCookie($cookie);
-                }
-            } else {
-                // backend is slow as hell, send a 503 response (to avoid the dog pile effect)
-                $entry->setStatusCode(503);
-                $entry->setContent('503 Service Unavailable');
-                $entry->headers->set('Retry-After', 10);
-            }
-
-            return true;
-        }
-
-        // we have the lock, call the backend
-        return false;
-    }
-
-    /**
-     * Writes the Response to the cache.
-     *
-     * @param Request  $request  A Request instance
-     * @param Response $response A Response instance
-     *
-     * @throws \Exception
-     */
-    protected function store(Request $request, Response $response)
-    {
-        try {
-            $this->store->write($request, $response);
-
-            $this->record($request, 'store');
-
-            $response->headers->set('Age', $response->getAge());
-        } catch (\Exception $e) {
-            $this->record($request, 'store-failed');
-
-            if ($this->options['debug']) {
-                throw $e;
-            }
-        }
-
-        // now that the response is cached, release the lock
-        $this->store->unlock($request);
-    }
-
-    /**
-     * Restores the Response body.
-     *
-     * @param Request  $request  A Request instance
-     * @param Response $response A Response instance
-     */
-    private function restoreResponseBody(Request $request, Response $response)
-    {
-        if ($request->isMethod('HEAD') || 304 === $response->getStatusCode()) {
-            $response->setContent(null);
-            $response->headers->remove('X-Body-Eval');
-            $response->headers->remove('X-Body-File');
-
-            return;
-        }
-
-        if ($response->headers->has('X-Body-Eval')) {
-            ob_start();
-
-            if ($response->headers->has('X-Body-File')) {
-                include $response->headers->get('X-Body-File');
-            } else {
-                eval('; ?>'.$response->getContent().'<?php ;');
-            }
-
-            $response->setContent(ob_get_clean());
-            $response->headers->remove('X-Body-Eval');
-            if (!$response->headers->has('Transfer-Encoding')) {
-                $response->headers->set('Content-Length', strlen($response->getContent()));
-            }
-        } elseif ($response->headers->has('X-Body-File')) {
-            $response->setContent(file_get_contents($response->headers->get('X-Body-File')));
-        } else {
-            return;
-        }
-
-        $response->headers->remove('X-Body-File');
-    }
-
-    protected function processResponseBody(Request $request, Response $response)
-    {
-        if (null !== $this->surrogate && $this->surrogate->needsParsing($response)) {
-            $this->surrogate->process($request, $response);
-        }
-    }
-
-    /**
-     * Checks if the Request includes authorization or other sensitive information
-     * that should cause the Response to be considered private by default.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return bool true if the Request is private, false otherwise
-     */
-    private function isPrivateRequest(Request $request)
-    {
-        foreach ($this->options['private_headers'] as $key) {
-            $key = strtolower(str_replace('HTTP_', '', $key));
-
-            if ('cookie' === $key) {
-                if (count($request->cookies->all())) {
-                    return true;
-                }
-            } elseif ($request->headers->has($key)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Records that an event took place.
-     *
-     * @param Request $request A Request instance
-     * @param string  $event   The event name
-     */
-    private function record(Request $request, $event)
-    {
-        $path = $request->getPathInfo();
-        if ($qs = $request->getQueryString()) {
-            $path .= '?'.$qs;
-        }
-        $this->traces[$request->getMethod().' '.$path][] = $event;
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php b/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php
deleted file mode 100644
index 67ffd97..0000000
--- a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- * (based on commit 02d2b48d75bcb63cf1c0c7149c077ad256542801)
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * ResponseCacheStrategy knows how to compute the Response cache HTTP header
- * based on the different response cache headers.
- *
- * This implementation changes the master response TTL to the smallest TTL received
- * or force validation if one of the surrogates has validation cache strategy.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ResponseCacheStrategy implements ResponseCacheStrategyInterface
-{
-    private $cacheable = true;
-    private $embeddedResponses = 0;
-    private $ttls = array();
-    private $maxAges = array();
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add(Response $response)
-    {
-        if ($response->isValidateable()) {
-            $this->cacheable = false;
-        } else {
-            $this->ttls[] = $response->getTtl();
-            $this->maxAges[] = $response->getMaxAge();
-        }
-
-        ++$this->embeddedResponses;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function update(Response $response)
-    {
-        // if we have no embedded Response, do nothing
-        if (0 === $this->embeddedResponses) {
-            return;
-        }
-
-        // Remove validation related headers in order to avoid browsers using
-        // their own cache, because some of the response content comes from
-        // at least one embedded response (which likely has a different caching strategy).
-        if ($response->isValidateable()) {
-            $response->setEtag(null);
-            $response->setLastModified(null);
-            $this->cacheable = false;
-        }
-
-        if (!$this->cacheable) {
-            $response->headers->set('Cache-Control', 'no-cache, must-revalidate');
-
-            return;
-        }
-
-        $this->ttls[] = $response->getTtl();
-        $this->maxAges[] = $response->getMaxAge();
-
-        if (null !== $maxAge = min($this->maxAges)) {
-            $response->setSharedMaxAge($maxAge);
-            $response->headers->set('Age', $maxAge - min($this->ttls));
-        }
-        $response->setMaxAge(0);
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategyInterface.php b/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategyInterface.php
deleted file mode 100644
index d70c2e0..0000000
--- a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategyInterface.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- * (based on commit 02d2b48d75bcb63cf1c0c7149c077ad256542801)
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * ResponseCacheStrategyInterface implementations know how to compute the
- * Response cache HTTP header based on the different response cache headers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ResponseCacheStrategyInterface
-{
-    /**
-     * Adds a Response.
-     *
-     * @param Response $response
-     */
-    public function add(Response $response);
-
-    /**
-     * Updates the Response HTTP headers based on the embedded Responses.
-     *
-     * @param Response $response
-     */
-    public function update(Response $response);
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/Ssi.php b/vendor/symfony/http-kernel/HttpCache/Ssi.php
deleted file mode 100644
index 43311b6..0000000
--- a/vendor/symfony/http-kernel/HttpCache/Ssi.php
+++ /dev/null
@@ -1,194 +0,0 @@
-<?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\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * Ssi implements the SSI capabilities to Request and Response instances.
- *
- * @author Sebastian Krebs <krebs.seb@gmail.com>
- */
-class Ssi implements SurrogateInterface
-{
-    private $contentTypes;
-    private $phpEscapeMap = array(
-        array('<?', '<%', '<s', '<S'),
-        array('<?php echo "<?"; ?>', '<?php echo "<%"; ?>', '<?php echo "<s"; ?>', '<?php echo "<S"; ?>'),
-    );
-
-    /**
-     * Constructor.
-     *
-     * @param array $contentTypes An array of content-type that should be parsed for SSI information.
-     *                            (default: text/html, text/xml, application/xhtml+xml, and application/xml)
-     */
-    public function __construct(array $contentTypes = array('text/html', 'text/xml', 'application/xhtml+xml', 'application/xml'))
-    {
-        $this->contentTypes = $contentTypes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'ssi';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function createCacheStrategy()
-    {
-        return new ResponseCacheStrategy();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasSurrogateCapability(Request $request)
-    {
-        if (null === $value = $request->headers->get('Surrogate-Capability')) {
-            return false;
-        }
-
-        return false !== strpos($value, 'SSI/1.0');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSurrogateCapability(Request $request)
-    {
-        $current = $request->headers->get('Surrogate-Capability');
-        $new = 'symfony2="SSI/1.0"';
-
-        $request->headers->set('Surrogate-Capability', $current ? $current.', '.$new : $new);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addSurrogateControl(Response $response)
-    {
-        if (false !== strpos($response->getContent(), '<!--#include')) {
-            $response->headers->set('Surrogate-Control', 'content="SSI/1.0"');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function needsParsing(Response $response)
-    {
-        if (!$control = $response->headers->get('Surrogate-Control')) {
-            return false;
-        }
-
-        return (bool) preg_match('#content="[^"]*SSI/1.0[^"]*"#', $control);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function renderIncludeTag($uri, $alt = null, $ignoreErrors = true, $comment = '')
-    {
-        return sprintf('<!--#include virtual="%s" -->', $uri);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function process(Request $request, Response $response)
-    {
-        $type = $response->headers->get('Content-Type');
-        if (empty($type)) {
-            $type = 'text/html';
-        }
-
-        $parts = explode(';', $type);
-        if (!in_array($parts[0], $this->contentTypes)) {
-            return $response;
-        }
-
-        // we don't use a proper XML parser here as we can have SSI tags in a plain text response
-        $content = $response->getContent();
-
-        $chunks = preg_split('#<!--\#include\s+(.*?)\s*-->#', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
-        $chunks[0] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[0]);
-
-        $i = 1;
-        while (isset($chunks[$i])) {
-            $options = array();
-            preg_match_all('/(virtual)="([^"]*?)"/', $chunks[$i], $matches, PREG_SET_ORDER);
-            foreach ($matches as $set) {
-                $options[$set[1]] = $set[2];
-            }
-
-            if (!isset($options['virtual'])) {
-                throw new \RuntimeException('Unable to process an SSI tag without a "virtual" attribute.');
-            }
-
-            $chunks[$i] = sprintf('<?php echo $this->surrogate->handle($this, %s, \'\', false) ?>'."\n",
-                var_export($options['virtual'], true)
-            );
-            ++$i;
-            $chunks[$i] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[$i]);
-            ++$i;
-        }
-        $content = implode('', $chunks);
-
-        $response->setContent($content);
-        $response->headers->set('X-Body-Eval', 'SSI');
-
-        // remove SSI/1.0 from the Surrogate-Control header
-        if ($response->headers->has('Surrogate-Control')) {
-            $value = $response->headers->get('Surrogate-Control');
-            if ('content="SSI/1.0"' == $value) {
-                $response->headers->remove('Surrogate-Control');
-            } elseif (preg_match('#,\s*content="SSI/1.0"#', $value)) {
-                $response->headers->set('Surrogate-Control', preg_replace('#,\s*content="SSI/1.0"#', '', $value));
-            } elseif (preg_match('#content="SSI/1.0",\s*#', $value)) {
-                $response->headers->set('Surrogate-Control', preg_replace('#content="SSI/1.0",\s*#', '', $value));
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(HttpCache $cache, $uri, $alt, $ignoreErrors)
-    {
-        $subRequest = Request::create($uri, 'get', array(), $cache->getRequest()->cookies->all(), array(), $cache->getRequest()->server->all());
-
-        try {
-            $response = $cache->handle($subRequest, HttpKernelInterface::SUB_REQUEST, true);
-
-            if (!$response->isSuccessful()) {
-                throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $subRequest->getUri(), $response->getStatusCode()));
-            }
-
-            return $response->getContent();
-        } catch (\Exception $e) {
-            if ($alt) {
-                return $this->handle($cache, $alt, '', $ignoreErrors);
-            }
-
-            if (!$ignoreErrors) {
-                throw $e;
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/Store.php b/vendor/symfony/http-kernel/HttpCache/Store.php
deleted file mode 100644
index 044d14e..0000000
--- a/vendor/symfony/http-kernel/HttpCache/Store.php
+++ /dev/null
@@ -1,449 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Store implements all the logic for storing cache metadata (Request and Response headers).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Store implements StoreInterface
-{
-    protected $root;
-    private $keyCache;
-    private $locks;
-
-    /**
-     * Constructor.
-     *
-     * @param string $root The path to the cache directory
-     */
-    public function __construct($root)
-    {
-        $this->root = $root;
-        if (!is_dir($this->root)) {
-            mkdir($this->root, 0777, true);
-        }
-        $this->keyCache = new \SplObjectStorage();
-        $this->locks = array();
-    }
-
-    /**
-     * Cleanups storage.
-     */
-    public function cleanup()
-    {
-        // unlock everything
-        foreach ($this->locks as $lock) {
-            if (file_exists($lock)) {
-                @unlink($lock);
-            }
-        }
-
-        $error = error_get_last();
-        if (1 === $error['type'] && false === headers_sent()) {
-            // send a 503
-            header('HTTP/1.0 503 Service Unavailable');
-            header('Retry-After: 10');
-            echo '503 Service Unavailable';
-        }
-    }
-
-    /**
-     * Locks the cache for a given Request.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return bool|string true if the lock is acquired, the path to the current lock otherwise
-     */
-    public function lock(Request $request)
-    {
-        $path = $this->getPath($this->getCacheKey($request).'.lck');
-        if (!is_dir(dirname($path)) && false === @mkdir(dirname($path), 0777, true)) {
-            return false;
-        }
-
-        $lock = @fopen($path, 'x');
-        if (false !== $lock) {
-            fclose($lock);
-
-            $this->locks[] = $path;
-
-            return true;
-        }
-
-        return !file_exists($path) ?: $path;
-    }
-
-    /**
-     * Releases the lock for the given Request.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return bool False if the lock file does not exist or cannot be unlocked, true otherwise
-     */
-    public function unlock(Request $request)
-    {
-        $file = $this->getPath($this->getCacheKey($request).'.lck');
-
-        return is_file($file) ? @unlink($file) : false;
-    }
-
-    public function isLocked(Request $request)
-    {
-        return is_file($this->getPath($this->getCacheKey($request).'.lck'));
-    }
-
-    /**
-     * Locates a cached Response for the Request provided.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return Response|null A Response instance, or null if no cache entry was found
-     */
-    public function lookup(Request $request)
-    {
-        $key = $this->getCacheKey($request);
-
-        if (!$entries = $this->getMetadata($key)) {
-            return;
-        }
-
-        // find a cached entry that matches the request.
-        $match = null;
-        foreach ($entries as $entry) {
-            if ($this->requestsMatch(isset($entry[1]['vary'][0]) ? implode(', ', $entry[1]['vary']) : '', $request->headers->all(), $entry[0])) {
-                $match = $entry;
-
-                break;
-            }
-        }
-
-        if (null === $match) {
-            return;
-        }
-
-        list($req, $headers) = $match;
-        if (is_file($body = $this->getPath($headers['x-content-digest'][0]))) {
-            return $this->restoreResponse($headers, $body);
-        }
-
-        // TODO the metaStore referenced an entity that doesn't exist in
-        // the entityStore. We definitely want to return nil but we should
-        // also purge the entry from the meta-store when this is detected.
-    }
-
-    /**
-     * Writes a cache entry to the store for the given Request and Response.
-     *
-     * Existing entries are read and any that match the response are removed. This
-     * method calls write with the new list of cache entries.
-     *
-     * @param Request  $request  A Request instance
-     * @param Response $response A Response instance
-     *
-     * @return string The key under which the response is stored
-     *
-     * @throws \RuntimeException
-     */
-    public function write(Request $request, Response $response)
-    {
-        $key = $this->getCacheKey($request);
-        $storedEnv = $this->persistRequest($request);
-
-        // write the response body to the entity store if this is the original response
-        if (!$response->headers->has('X-Content-Digest')) {
-            $digest = $this->generateContentDigest($response);
-
-            if (false === $this->save($digest, $response->getContent())) {
-                throw new \RuntimeException('Unable to store the entity.');
-            }
-
-            $response->headers->set('X-Content-Digest', $digest);
-
-            if (!$response->headers->has('Transfer-Encoding')) {
-                $response->headers->set('Content-Length', strlen($response->getContent()));
-            }
-        }
-
-        // read existing cache entries, remove non-varying, and add this one to the list
-        $entries = array();
-        $vary = $response->headers->get('vary');
-        foreach ($this->getMetadata($key) as $entry) {
-            if (!isset($entry[1]['vary'][0])) {
-                $entry[1]['vary'] = array('');
-            }
-
-            if ($vary != $entry[1]['vary'][0] || !$this->requestsMatch($vary, $entry[0], $storedEnv)) {
-                $entries[] = $entry;
-            }
-        }
-
-        $headers = $this->persistResponse($response);
-        unset($headers['age']);
-
-        array_unshift($entries, array($storedEnv, $headers));
-
-        if (false === $this->save($key, serialize($entries))) {
-            throw new \RuntimeException('Unable to store the metadata.');
-        }
-
-        return $key;
-    }
-
-    /**
-     * Returns content digest for $response.
-     *
-     * @param Response $response
-     *
-     * @return string
-     */
-    protected function generateContentDigest(Response $response)
-    {
-        return 'en'.hash('sha256', $response->getContent());
-    }
-
-    /**
-     * Invalidates all cache entries that match the request.
-     *
-     * @param Request $request A Request instance
-     *
-     * @throws \RuntimeException
-     */
-    public function invalidate(Request $request)
-    {
-        $modified = false;
-        $key = $this->getCacheKey($request);
-
-        $entries = array();
-        foreach ($this->getMetadata($key) as $entry) {
-            $response = $this->restoreResponse($entry[1]);
-            if ($response->isFresh()) {
-                $response->expire();
-                $modified = true;
-                $entries[] = array($entry[0], $this->persistResponse($response));
-            } else {
-                $entries[] = $entry;
-            }
-        }
-
-        if ($modified) {
-            if (false === $this->save($key, serialize($entries))) {
-                throw new \RuntimeException('Unable to store the metadata.');
-            }
-        }
-    }
-
-    /**
-     * Determines whether two Request HTTP header sets are non-varying based on
-     * the vary response header value provided.
-     *
-     * @param string $vary A Response vary header
-     * @param array  $env1 A Request HTTP header array
-     * @param array  $env2 A Request HTTP header array
-     *
-     * @return bool true if the two environments match, false otherwise
-     */
-    private function requestsMatch($vary, $env1, $env2)
-    {
-        if (empty($vary)) {
-            return true;
-        }
-
-        foreach (preg_split('/[\s,]+/', $vary) as $header) {
-            $key = strtr(strtolower($header), '_', '-');
-            $v1 = isset($env1[$key]) ? $env1[$key] : null;
-            $v2 = isset($env2[$key]) ? $env2[$key] : null;
-            if ($v1 !== $v2) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Gets all data associated with the given key.
-     *
-     * Use this method only if you know what you are doing.
-     *
-     * @param string $key The store key
-     *
-     * @return array An array of data associated with the key
-     */
-    private function getMetadata($key)
-    {
-        if (false === $entries = $this->load($key)) {
-            return array();
-        }
-
-        return unserialize($entries);
-    }
-
-    /**
-     * Purges data for the given URL.
-     *
-     * @param string $url A URL
-     *
-     * @return bool true if the URL exists and has been purged, false otherwise
-     */
-    public function purge($url)
-    {
-        if (is_file($path = $this->getPath($this->getCacheKey(Request::create($url))))) {
-            unlink($path);
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Loads data for the given key.
-     *
-     * @param string $key The store key
-     *
-     * @return string The data associated with the key
-     */
-    private function load($key)
-    {
-        $path = $this->getPath($key);
-
-        return is_file($path) ? file_get_contents($path) : false;
-    }
-
-    /**
-     * Save data for the given key.
-     *
-     * @param string $key  The store key
-     * @param string $data The data to store
-     *
-     * @return bool
-     */
-    private function save($key, $data)
-    {
-        $path = $this->getPath($key);
-        if (!is_dir(dirname($path)) && false === @mkdir(dirname($path), 0777, true)) {
-            return false;
-        }
-
-        $tmpFile = tempnam(dirname($path), basename($path));
-        if (false === $fp = @fopen($tmpFile, 'wb')) {
-            return false;
-        }
-        @fwrite($fp, $data);
-        @fclose($fp);
-
-        if ($data != file_get_contents($tmpFile)) {
-            return false;
-        }
-
-        if (false === @rename($tmpFile, $path)) {
-            return false;
-        }
-
-        @chmod($path, 0666 & ~umask());
-    }
-
-    public function getPath($key)
-    {
-        return $this->root.DIRECTORY_SEPARATOR.substr($key, 0, 2).DIRECTORY_SEPARATOR.substr($key, 2, 2).DIRECTORY_SEPARATOR.substr($key, 4, 2).DIRECTORY_SEPARATOR.substr($key, 6);
-    }
-
-    /**
-     * Generates a cache key for the given Request.
-     *
-     * This method should return a key that must only depend on a
-     * normalized version of the request URI.
-     *
-     * If the same URI can have more than one representation, based on some
-     * headers, use a Vary header to indicate them, and each representation will
-     * be stored independently under the same cache key.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return string A key for the given Request
-     */
-    protected function generateCacheKey(Request $request)
-    {
-        return 'md'.hash('sha256', $request->getUri());
-    }
-
-    /**
-     * Returns a cache key for the given Request.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return string A key for the given Request
-     */
-    private function getCacheKey(Request $request)
-    {
-        if (isset($this->keyCache[$request])) {
-            return $this->keyCache[$request];
-        }
-
-        return $this->keyCache[$request] = $this->generateCacheKey($request);
-    }
-
-    /**
-     * Persists the Request HTTP headers.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return array An array of HTTP headers
-     */
-    private function persistRequest(Request $request)
-    {
-        return $request->headers->all();
-    }
-
-    /**
-     * Persists the Response HTTP headers.
-     *
-     * @param Response $response A Response instance
-     *
-     * @return array An array of HTTP headers
-     */
-    private function persistResponse(Response $response)
-    {
-        $headers = $response->headers->all();
-        $headers['X-Status'] = array($response->getStatusCode());
-
-        return $headers;
-    }
-
-    /**
-     * Restores a Response from the HTTP headers and body.
-     *
-     * @param array  $headers An array of HTTP headers for the Response
-     * @param string $body    The Response body
-     *
-     * @return Response
-     */
-    private function restoreResponse($headers, $body = null)
-    {
-        $status = $headers['X-Status'][0];
-        unset($headers['X-Status']);
-
-        if (null !== $body) {
-            $headers['X-Body-File'] = array($body);
-        }
-
-        return new Response($body, $status, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/StoreInterface.php b/vendor/symfony/http-kernel/HttpCache/StoreInterface.php
deleted file mode 100644
index ddc0c04..0000000
--- a/vendor/symfony/http-kernel/HttpCache/StoreInterface.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Interface implemented by HTTP cache stores.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface StoreInterface
-{
-    /**
-     * Locates a cached Response for the Request provided.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return Response|null A Response instance, or null if no cache entry was found
-     */
-    public function lookup(Request $request);
-
-    /**
-     * Writes a cache entry to the store for the given Request and Response.
-     *
-     * Existing entries are read and any that match the response are removed. This
-     * method calls write with the new list of cache entries.
-     *
-     * @param Request  $request  A Request instance
-     * @param Response $response A Response instance
-     *
-     * @return string The key under which the response is stored
-     */
-    public function write(Request $request, Response $response);
-
-    /**
-     * Invalidates all cache entries that match the request.
-     *
-     * @param Request $request A Request instance
-     */
-    public function invalidate(Request $request);
-
-    /**
-     * Locks the cache for a given Request.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return bool|string true if the lock is acquired, the path to the current lock otherwise
-     */
-    public function lock(Request $request);
-
-    /**
-     * Releases the lock for the given Request.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return bool False if the lock file does not exist or cannot be unlocked, true otherwise
-     */
-    public function unlock(Request $request);
-
-    /**
-     * Returns whether or not a lock exists.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return bool true if lock exists, false otherwise
-     */
-    public function isLocked(Request $request);
-
-    /**
-     * Purges data for the given URL.
-     *
-     * @param string $url A URL
-     *
-     * @return bool true if the URL exists and has been purged, false otherwise
-     */
-    public function purge($url);
-
-    /**
-     * Cleanups storage.
-     */
-    public function cleanup();
-}
diff --git a/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php b/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php
deleted file mode 100644
index 5d65fd6..0000000
--- a/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?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\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-interface SurrogateInterface
-{
-    /**
-     * Returns surrogate name.
-     *
-     * @return string
-     */
-    public function getName();
-
-    /**
-     * Returns a new cache strategy instance.
-     *
-     * @return ResponseCacheStrategyInterface A ResponseCacheStrategyInterface instance
-     */
-    public function createCacheStrategy();
-
-    /**
-     * Checks that at least one surrogate has Surrogate capability.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return bool true if one surrogate has Surrogate capability, false otherwise
-     */
-    public function hasSurrogateCapability(Request $request);
-
-    /**
-     * Adds Surrogate-capability to the given Request.
-     *
-     * @param Request $request A Request instance
-     */
-    public function addSurrogateCapability(Request $request);
-
-    /**
-     * Adds HTTP headers to specify that the Response needs to be parsed for Surrogate.
-     *
-     * This method only adds an Surrogate HTTP header if the Response has some Surrogate tags.
-     *
-     * @param Response $response A Response instance
-     */
-    public function addSurrogateControl(Response $response);
-
-    /**
-     * Checks that the Response needs to be parsed for Surrogate tags.
-     *
-     * @param Response $response A Response instance
-     *
-     * @return bool true if the Response needs to be parsed, false otherwise
-     */
-    public function needsParsing(Response $response);
-
-    /**
-     * Renders a Surrogate tag.
-     *
-     * @param string $uri          A URI
-     * @param string $alt          An alternate URI
-     * @param bool   $ignoreErrors Whether to ignore errors or not
-     * @param string $comment      A comment to add as an esi:include tag
-     *
-     * @return string
-     */
-    public function renderIncludeTag($uri, $alt = null, $ignoreErrors = true, $comment = '');
-
-    /**
-     * Replaces a Response Surrogate tags with the included resource content.
-     *
-     * @param Request  $request  A Request instance
-     * @param Response $response A Response instance
-     *
-     * @return Response
-     */
-    public function process(Request $request, Response $response);
-
-    /**
-     * Handles a Surrogate from the cache.
-     *
-     * @param HttpCache $cache        An HttpCache instance
-     * @param string    $uri          The main URI
-     * @param string    $alt          An alternative URI
-     * @param bool      $ignoreErrors Whether to ignore errors or not
-     *
-     * @return string
-     *
-     * @throws \RuntimeException
-     * @throws \Exception
-     */
-    public function handle(HttpCache $cache, $uri, $alt, $ignoreErrors);
-}
diff --git a/vendor/symfony/http-kernel/HttpKernel.php b/vendor/symfony/http-kernel/HttpKernel.php
deleted file mode 100644
index 1600b2c..0000000
--- a/vendor/symfony/http-kernel/HttpKernel.php
+++ /dev/null
@@ -1,285 +0,0 @@
-<?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;
-
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\Event\PostResponseEvent;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-
-/**
- * HttpKernel notifies events to convert a Request object to a Response one.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class HttpKernel implements HttpKernelInterface, TerminableInterface
-{
-    protected $dispatcher;
-    protected $resolver;
-    protected $requestStack;
-
-    /**
-     * Constructor.
-     *
-     * @param EventDispatcherInterface    $dispatcher   An EventDispatcherInterface instance
-     * @param ControllerResolverInterface $resolver     A ControllerResolverInterface instance
-     * @param RequestStack                $requestStack A stack for master/sub requests
-     */
-    public function __construct(EventDispatcherInterface $dispatcher, ControllerResolverInterface $resolver, RequestStack $requestStack = null)
-    {
-        $this->dispatcher = $dispatcher;
-        $this->resolver = $resolver;
-        $this->requestStack = $requestStack ?: new RequestStack();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
-    {
-        $request->headers->set('X-Php-Ob-Level', ob_get_level());
-
-        try {
-            return $this->handleRaw($request, $type);
-        } catch (\Exception $e) {
-            if (false === $catch) {
-                $this->finishRequest($request, $type);
-
-                throw $e;
-            }
-
-            return $this->handleException($e, $request, $type);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function terminate(Request $request, Response $response)
-    {
-        $this->dispatcher->dispatch(KernelEvents::TERMINATE, new PostResponseEvent($this, $request, $response));
-    }
-
-    /**
-     * @throws \LogicException If the request stack is empty
-     *
-     * @internal
-     */
-    public function terminateWithException(\Exception $exception)
-    {
-        if (!$request = $this->requestStack->getMasterRequest()) {
-            throw new \LogicException('Request stack is empty', 0, $exception);
-        }
-
-        $response = $this->handleException($exception, $request, self::MASTER_REQUEST);
-
-        $response->sendHeaders();
-        $response->sendContent();
-
-        $this->terminate($request, $response);
-    }
-
-    /**
-     * Handles a request to convert it to a response.
-     *
-     * Exceptions are not caught.
-     *
-     * @param Request $request A Request instance
-     * @param int     $type    The type of the request (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
-     *
-     * @return Response A Response instance
-     *
-     * @throws \LogicException       If one of the listener does not behave as expected
-     * @throws NotFoundHttpException When controller cannot be found
-     */
-    private function handleRaw(Request $request, $type = self::MASTER_REQUEST)
-    {
-        $this->requestStack->push($request);
-
-        // request
-        $event = new GetResponseEvent($this, $request, $type);
-        $this->dispatcher->dispatch(KernelEvents::REQUEST, $event);
-
-        if ($event->hasResponse()) {
-            return $this->filterResponse($event->getResponse(), $request, $type);
-        }
-
-        // load controller
-        if (false === $controller = $this->resolver->getController($request)) {
-            throw new NotFoundHttpException(sprintf('Unable to find the controller for path "%s". The route is wrongly configured.', $request->getPathInfo()));
-        }
-
-        $event = new FilterControllerEvent($this, $controller, $request, $type);
-        $this->dispatcher->dispatch(KernelEvents::CONTROLLER, $event);
-        $controller = $event->getController();
-
-        // controller arguments
-        $arguments = $this->resolver->getArguments($request, $controller);
-
-        // call controller
-        $response = call_user_func_array($controller, $arguments);
-
-        // view
-        if (!$response instanceof Response) {
-            $event = new GetResponseForControllerResultEvent($this, $request, $type, $response);
-            $this->dispatcher->dispatch(KernelEvents::VIEW, $event);
-
-            if ($event->hasResponse()) {
-                $response = $event->getResponse();
-            }
-
-            if (!$response instanceof Response) {
-                $msg = sprintf('The controller must return a response (%s given).', $this->varToString($response));
-
-                // the user may have forgotten to return something
-                if (null === $response) {
-                    $msg .= ' Did you forget to add a return statement somewhere in your controller?';
-                }
-                throw new \LogicException($msg);
-            }
-        }
-
-        return $this->filterResponse($response, $request, $type);
-    }
-
-    /**
-     * Filters a response object.
-     *
-     * @param Response $response A Response instance
-     * @param Request  $request  An error message in case the response is not a Response object
-     * @param int      $type     The type of the request (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
-     *
-     * @return Response The filtered Response instance
-     *
-     * @throws \RuntimeException if the passed object is not a Response instance
-     */
-    private function filterResponse(Response $response, Request $request, $type)
-    {
-        $event = new FilterResponseEvent($this, $request, $type, $response);
-
-        $this->dispatcher->dispatch(KernelEvents::RESPONSE, $event);
-
-        $this->finishRequest($request, $type);
-
-        return $event->getResponse();
-    }
-
-    /**
-     * Publishes the finish request event, then pop the request from the stack.
-     *
-     * Note that the order of the operations is important here, otherwise
-     * operations such as {@link RequestStack::getParentRequest()} can lead to
-     * weird results.
-     *
-     * @param Request $request
-     * @param int     $type
-     */
-    private function finishRequest(Request $request, $type)
-    {
-        $this->dispatcher->dispatch(KernelEvents::FINISH_REQUEST, new FinishRequestEvent($this, $request, $type));
-        $this->requestStack->pop();
-    }
-
-    /**
-     * Handles an exception by trying to convert it to a Response.
-     *
-     * @param \Exception $e       An \Exception instance
-     * @param Request    $request A Request instance
-     * @param int        $type    The type of the request
-     *
-     * @return Response A Response instance
-     *
-     * @throws \Exception
-     */
-    private function handleException(\Exception $e, $request, $type)
-    {
-        $event = new GetResponseForExceptionEvent($this, $request, $type, $e);
-        $this->dispatcher->dispatch(KernelEvents::EXCEPTION, $event);
-
-        // a listener might have replaced the exception
-        $e = $event->getException();
-
-        if (!$event->hasResponse()) {
-            $this->finishRequest($request, $type);
-
-            throw $e;
-        }
-
-        $response = $event->getResponse();
-
-        // the developer asked for a specific status code
-        if ($response->headers->has('X-Status-Code')) {
-            $response->setStatusCode($response->headers->get('X-Status-Code'));
-
-            $response->headers->remove('X-Status-Code');
-        } elseif (!$response->isClientError() && !$response->isServerError() && !$response->isRedirect()) {
-            // ensure that we actually have an error response
-            if ($e instanceof HttpExceptionInterface) {
-                // keep the HTTP status code and headers
-                $response->setStatusCode($e->getStatusCode());
-                $response->headers->add($e->getHeaders());
-            } else {
-                $response->setStatusCode(500);
-            }
-        }
-
-        try {
-            return $this->filterResponse($response, $request, $type);
-        } catch (\Exception $e) {
-            return $response;
-        }
-    }
-
-    private function varToString($var)
-    {
-        if (is_object($var)) {
-            return sprintf('Object(%s)', get_class($var));
-        }
-
-        if (is_array($var)) {
-            $a = array();
-            foreach ($var as $k => $v) {
-                $a[] = sprintf('%s => %s', $k, $this->varToString($v));
-            }
-
-            return sprintf('Array(%s)', implode(', ', $a));
-        }
-
-        if (is_resource($var)) {
-            return sprintf('Resource(%s)', get_resource_type($var));
-        }
-
-        if (null === $var) {
-            return 'null';
-        }
-
-        if (false === $var) {
-            return 'false';
-        }
-
-        if (true === $var) {
-            return 'true';
-        }
-
-        return (string) $var;
-    }
-}
diff --git a/vendor/symfony/http-kernel/HttpKernelInterface.php b/vendor/symfony/http-kernel/HttpKernelInterface.php
deleted file mode 100644
index 5050bfc..0000000
--- a/vendor/symfony/http-kernel/HttpKernelInterface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * HttpKernelInterface handles a Request to convert it to a Response.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface HttpKernelInterface
-{
-    const MASTER_REQUEST = 1;
-    const SUB_REQUEST = 2;
-
-    /**
-     * Handles a Request to convert it to a Response.
-     *
-     * When $catch is true, the implementation must catch all exceptions
-     * and do its best to convert them to a Response instance.
-     *
-     * @param Request $request A Request instance
-     * @param int     $type    The type of the request
-     *                         (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
-     * @param bool    $catch   Whether to catch exceptions or not
-     *
-     * @return Response A Response instance
-     *
-     * @throws \Exception When an Exception occurs during processing
-     */
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true);
-}
diff --git a/vendor/symfony/http-kernel/Kernel.php b/vendor/symfony/http-kernel/Kernel.php
deleted file mode 100644
index a02dcd9..0000000
--- a/vendor/symfony/http-kernel/Kernel.php
+++ /dev/null
@@ -1,761 +0,0 @@
-<?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;
-
-use Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator;
-use Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
-use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
-use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
-use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
-use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
-use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
-use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Bundle\BundleInterface;
-use Symfony\Component\HttpKernel\Config\EnvParametersResource;
-use Symfony\Component\HttpKernel\Config\FileLocator;
-use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass;
-use Symfony\Component\HttpKernel\DependencyInjection\AddClassesToCachePass;
-use Symfony\Component\Config\Loader\LoaderResolver;
-use Symfony\Component\Config\Loader\DelegatingLoader;
-use Symfony\Component\Config\ConfigCache;
-use Symfony\Component\ClassLoader\ClassCollectionLoader;
-
-/**
- * The Kernel is the heart of the Symfony system.
- *
- * It manages an environment made of bundles.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Kernel implements KernelInterface, TerminableInterface
-{
-    /**
-     * @var BundleInterface[]
-     */
-    protected $bundles = array();
-
-    protected $bundleMap;
-    protected $container;
-    protected $rootDir;
-    protected $environment;
-    protected $debug;
-    protected $booted = false;
-    protected $name;
-    protected $startTime;
-    protected $loadClassCache;
-
-    const VERSION = '2.7.6';
-    const VERSION_ID = 20706;
-    const MAJOR_VERSION = 2;
-    const MINOR_VERSION = 7;
-    const RELEASE_VERSION = 6;
-    const EXTRA_VERSION = '';
-
-    const END_OF_MAINTENANCE = '05/2018';
-    const END_OF_LIFE = '05/2019';
-
-    /**
-     * Constructor.
-     *
-     * @param string $environment The environment
-     * @param bool   $debug       Whether to enable debugging or not
-     */
-    public function __construct($environment, $debug)
-    {
-        $this->environment = $environment;
-        $this->debug = (bool) $debug;
-        $this->rootDir = $this->getRootDir();
-        $this->name = $this->getName();
-
-        if ($this->debug) {
-            $this->startTime = microtime(true);
-        }
-
-        $defClass = new \ReflectionMethod($this, 'init');
-        $defClass = $defClass->getDeclaringClass()->name;
-
-        if (__CLASS__ !== $defClass) {
-            @trigger_error(sprintf('Calling the %s::init() method is deprecated since version 2.3 and will be removed in 3.0. Move your logic to the constructor method instead.', $defClass), E_USER_DEPRECATED);
-            $this->init();
-        }
-    }
-
-    /**
-     * @deprecated since version 2.3, to be removed in 3.0. Move your logic in the constructor instead.
-     */
-    public function init()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.3 and will be removed in 3.0. Move your logic to the constructor method instead.', E_USER_DEPRECATED);
-    }
-
-    public function __clone()
-    {
-        if ($this->debug) {
-            $this->startTime = microtime(true);
-        }
-
-        $this->booted = false;
-        $this->container = null;
-    }
-
-    /**
-     * Boots the current kernel.
-     */
-    public function boot()
-    {
-        if (true === $this->booted) {
-            return;
-        }
-
-        if ($this->loadClassCache) {
-            $this->doLoadClassCache($this->loadClassCache[0], $this->loadClassCache[1]);
-        }
-
-        // init bundles
-        $this->initializeBundles();
-
-        // init container
-        $this->initializeContainer();
-
-        foreach ($this->getBundles() as $bundle) {
-            $bundle->setContainer($this->container);
-            $bundle->boot();
-        }
-
-        $this->booted = true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function terminate(Request $request, Response $response)
-    {
-        if (false === $this->booted) {
-            return;
-        }
-
-        if ($this->getHttpKernel() instanceof TerminableInterface) {
-            $this->getHttpKernel()->terminate($request, $response);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function shutdown()
-    {
-        if (false === $this->booted) {
-            return;
-        }
-
-        $this->booted = false;
-
-        foreach ($this->getBundles() as $bundle) {
-            $bundle->shutdown();
-            $bundle->setContainer(null);
-        }
-
-        $this->container = null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
-    {
-        if (false === $this->booted) {
-            $this->boot();
-        }
-
-        return $this->getHttpKernel()->handle($request, $type, $catch);
-    }
-
-    /**
-     * Gets a HTTP kernel from the container.
-     *
-     * @return HttpKernel
-     */
-    protected function getHttpKernel()
-    {
-        return $this->container->get('http_kernel');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getBundles()
-    {
-        return $this->bundles;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    public function isClassInActiveBundle($class)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in version 3.0.', E_USER_DEPRECATED);
-
-        foreach ($this->getBundles() as $bundle) {
-            if (0 === strpos($class, $bundle->getNamespace())) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getBundle($name, $first = true)
-    {
-        if (!isset($this->bundleMap[$name])) {
-            throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() method of your %s.php file?', $name, get_class($this)));
-        }
-
-        if (true === $first) {
-            return $this->bundleMap[$name][0];
-        }
-
-        return $this->bundleMap[$name];
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws \RuntimeException if a custom resource is hidden by a resource in a derived bundle
-     */
-    public function locateResource($name, $dir = null, $first = true)
-    {
-        if ('@' !== $name[0]) {
-            throw new \InvalidArgumentException(sprintf('A resource name must start with @ ("%s" given).', $name));
-        }
-
-        if (false !== strpos($name, '..')) {
-            throw new \RuntimeException(sprintf('File name "%s" contains invalid characters (..).', $name));
-        }
-
-        $bundleName = substr($name, 1);
-        $path = '';
-        if (false !== strpos($bundleName, '/')) {
-            list($bundleName, $path) = explode('/', $bundleName, 2);
-        }
-
-        $isResource = 0 === strpos($path, 'Resources') && null !== $dir;
-        $overridePath = substr($path, 9);
-        $resourceBundle = null;
-        $bundles = $this->getBundle($bundleName, false);
-        $files = array();
-
-        foreach ($bundles as $bundle) {
-            if ($isResource && file_exists($file = $dir.'/'.$bundle->getName().$overridePath)) {
-                if (null !== $resourceBundle) {
-                    throw new \RuntimeException(sprintf('"%s" resource is hidden by a resource from the "%s" derived bundle. Create a "%s" file to override the bundle resource.',
-                        $file,
-                        $resourceBundle,
-                        $dir.'/'.$bundles[0]->getName().$overridePath
-                    ));
-                }
-
-                if ($first) {
-                    return $file;
-                }
-                $files[] = $file;
-            }
-
-            if (file_exists($file = $bundle->getPath().'/'.$path)) {
-                if ($first && !$isResource) {
-                    return $file;
-                }
-                $files[] = $file;
-                $resourceBundle = $bundle->getName();
-            }
-        }
-
-        if (count($files) > 0) {
-            return $first && $isResource ? $files[0] : $files;
-        }
-
-        throw new \InvalidArgumentException(sprintf('Unable to find file "%s".', $name));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        if (null === $this->name) {
-            $this->name = preg_replace('/[^a-zA-Z0-9_]+/', '', basename($this->rootDir));
-        }
-
-        return $this->name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getEnvironment()
-    {
-        return $this->environment;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isDebug()
-    {
-        return $this->debug;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRootDir()
-    {
-        if (null === $this->rootDir) {
-            $r = new \ReflectionObject($this);
-            $this->rootDir = dirname($r->getFileName());
-        }
-
-        return $this->rootDir;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContainer()
-    {
-        return $this->container;
-    }
-
-    /**
-     * Loads the PHP class cache.
-     *
-     * This methods only registers the fact that you want to load the cache classes.
-     * The cache will actually only be loaded when the Kernel is booted.
-     *
-     * That optimization is mainly useful when using the HttpCache class in which
-     * case the class cache is not loaded if the Response is in the cache.
-     *
-     * @param string $name      The cache name prefix
-     * @param string $extension File extension of the resulting file
-     */
-    public function loadClassCache($name = 'classes', $extension = '.php')
-    {
-        $this->loadClassCache = array($name, $extension);
-    }
-
-    /**
-     * Used internally.
-     */
-    public function setClassCache(array $classes)
-    {
-        file_put_contents($this->getCacheDir().'/classes.map', sprintf('<?php return %s;', var_export($classes, true)));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStartTime()
-    {
-        return $this->debug ? $this->startTime : -INF;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCacheDir()
-    {
-        return $this->rootDir.'/cache/'.$this->environment;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getLogDir()
-    {
-        return $this->rootDir.'/logs';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCharset()
-    {
-        return 'UTF-8';
-    }
-
-    protected function doLoadClassCache($name, $extension)
-    {
-        if (!$this->booted && is_file($this->getCacheDir().'/classes.map')) {
-            ClassCollectionLoader::load(include($this->getCacheDir().'/classes.map'), $this->getCacheDir(), $name, $this->debug, false, $extension);
-        }
-    }
-
-    /**
-     * Initializes the data structures related to the bundle management.
-     *
-     *  - the bundles property maps a bundle name to the bundle instance,
-     *  - the bundleMap property maps a bundle name to the bundle inheritance hierarchy (most derived bundle first).
-     *
-     * @throws \LogicException if two bundles share a common name
-     * @throws \LogicException if a bundle tries to extend a non-registered bundle
-     * @throws \LogicException if a bundle tries to extend itself
-     * @throws \LogicException if two bundles extend the same ancestor
-     */
-    protected function initializeBundles()
-    {
-        // init bundles
-        $this->bundles = array();
-        $topMostBundles = array();
-        $directChildren = array();
-
-        foreach ($this->registerBundles() as $bundle) {
-            $name = $bundle->getName();
-            if (isset($this->bundles[$name])) {
-                throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s"', $name));
-            }
-            $this->bundles[$name] = $bundle;
-
-            if ($parentName = $bundle->getParent()) {
-                if (isset($directChildren[$parentName])) {
-                    throw new \LogicException(sprintf('Bundle "%s" is directly extended by two bundles "%s" and "%s".', $parentName, $name, $directChildren[$parentName]));
-                }
-                if ($parentName == $name) {
-                    throw new \LogicException(sprintf('Bundle "%s" can not extend itself.', $name));
-                }
-                $directChildren[$parentName] = $name;
-            } else {
-                $topMostBundles[$name] = $bundle;
-            }
-        }
-
-        // look for orphans
-        if (!empty($directChildren) && count($diff = array_diff_key($directChildren, $this->bundles))) {
-            $diff = array_keys($diff);
-
-            throw new \LogicException(sprintf('Bundle "%s" extends bundle "%s", which is not registered.', $directChildren[$diff[0]], $diff[0]));
-        }
-
-        // inheritance
-        $this->bundleMap = array();
-        foreach ($topMostBundles as $name => $bundle) {
-            $bundleMap = array($bundle);
-            $hierarchy = array($name);
-
-            while (isset($directChildren[$name])) {
-                $name = $directChildren[$name];
-                array_unshift($bundleMap, $this->bundles[$name]);
-                $hierarchy[] = $name;
-            }
-
-            foreach ($hierarchy as $bundle) {
-                $this->bundleMap[$bundle] = $bundleMap;
-                array_pop($bundleMap);
-            }
-        }
-    }
-
-    /**
-     * Gets the container class.
-     *
-     * @return string The container class
-     */
-    protected function getContainerClass()
-    {
-        return $this->name.ucfirst($this->environment).($this->debug ? 'Debug' : '').'ProjectContainer';
-    }
-
-    /**
-     * Gets the container's base class.
-     *
-     * All names except Container must be fully qualified.
-     *
-     * @return string
-     */
-    protected function getContainerBaseClass()
-    {
-        return 'Container';
-    }
-
-    /**
-     * Initializes the service container.
-     *
-     * The cached version of the service container is used when fresh, otherwise the
-     * container is built.
-     */
-    protected function initializeContainer()
-    {
-        $class = $this->getContainerClass();
-        $cache = new ConfigCache($this->getCacheDir().'/'.$class.'.php', $this->debug);
-        $fresh = true;
-        if (!$cache->isFresh()) {
-            $container = $this->buildContainer();
-            $container->compile();
-            $this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass());
-
-            $fresh = false;
-        }
-
-        require_once $cache->getPath();
-
-        $this->container = new $class();
-        $this->container->set('kernel', $this);
-
-        if (!$fresh && $this->container->has('cache_warmer')) {
-            $this->container->get('cache_warmer')->warmUp($this->container->getParameter('kernel.cache_dir'));
-        }
-    }
-
-    /**
-     * Returns the kernel parameters.
-     *
-     * @return array An array of kernel parameters
-     */
-    protected function getKernelParameters()
-    {
-        $bundles = array();
-        foreach ($this->bundles as $name => $bundle) {
-            $bundles[$name] = get_class($bundle);
-        }
-
-        return array_merge(
-            array(
-                'kernel.root_dir' => realpath($this->rootDir) ?: $this->rootDir,
-                'kernel.environment' => $this->environment,
-                'kernel.debug' => $this->debug,
-                'kernel.name' => $this->name,
-                'kernel.cache_dir' => realpath($this->getCacheDir()) ?: $this->getCacheDir(),
-                'kernel.logs_dir' => realpath($this->getLogDir()) ?: $this->getLogDir(),
-                'kernel.bundles' => $bundles,
-                'kernel.charset' => $this->getCharset(),
-                'kernel.container_class' => $this->getContainerClass(),
-            ),
-            $this->getEnvParameters()
-        );
-    }
-
-    /**
-     * Gets the environment parameters.
-     *
-     * Only the parameters starting with "SYMFONY__" are considered.
-     *
-     * @return array An array of parameters
-     */
-    protected function getEnvParameters()
-    {
-        $parameters = array();
-        foreach ($_SERVER as $key => $value) {
-            if (0 === strpos($key, 'SYMFONY__')) {
-                $parameters[strtolower(str_replace('__', '.', substr($key, 9)))] = $value;
-            }
-        }
-
-        return $parameters;
-    }
-
-    /**
-     * Builds the service container.
-     *
-     * @return ContainerBuilder The compiled service container
-     *
-     * @throws \RuntimeException
-     */
-    protected function buildContainer()
-    {
-        foreach (array('cache' => $this->getCacheDir(), 'logs' => $this->getLogDir()) as $name => $dir) {
-            if (!is_dir($dir)) {
-                if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) {
-                    throw new \RuntimeException(sprintf("Unable to create the %s directory (%s)\n", $name, $dir));
-                }
-            } elseif (!is_writable($dir)) {
-                throw new \RuntimeException(sprintf("Unable to write in the %s directory (%s)\n", $name, $dir));
-            }
-        }
-
-        $container = $this->getContainerBuilder();
-        $container->addObjectResource($this);
-        $this->prepareContainer($container);
-
-        if (null !== $cont = $this->registerContainerConfiguration($this->getContainerLoader($container))) {
-            $container->merge($cont);
-        }
-
-        $container->addCompilerPass(new AddClassesToCachePass($this));
-        $container->addResource(new EnvParametersResource('SYMFONY__'));
-
-        return $container;
-    }
-
-    /**
-     * Prepares the ContainerBuilder before it is compiled.
-     *
-     * @param ContainerBuilder $container A ContainerBuilder instance
-     */
-    protected function prepareContainer(ContainerBuilder $container)
-    {
-        $extensions = array();
-        foreach ($this->bundles as $bundle) {
-            if ($extension = $bundle->getContainerExtension()) {
-                $container->registerExtension($extension);
-                $extensions[] = $extension->getAlias();
-            }
-
-            if ($this->debug) {
-                $container->addObjectResource($bundle);
-            }
-        }
-        foreach ($this->bundles as $bundle) {
-            $bundle->build($container);
-        }
-
-        // ensure these extensions are implicitly loaded
-        $container->getCompilerPassConfig()->setMergePass(new MergeExtensionConfigurationPass($extensions));
-    }
-
-    /**
-     * Gets a new ContainerBuilder instance used to build the service container.
-     *
-     * @return ContainerBuilder
-     */
-    protected function getContainerBuilder()
-    {
-        $container = new ContainerBuilder(new ParameterBag($this->getKernelParameters()));
-
-        if (class_exists('ProxyManager\Configuration') && class_exists('Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator')) {
-            $container->setProxyInstantiator(new RuntimeInstantiator());
-        }
-
-        return $container;
-    }
-
-    /**
-     * Dumps the service container to PHP code in the cache.
-     *
-     * @param ConfigCache      $cache     The config cache
-     * @param ContainerBuilder $container The service container
-     * @param string           $class     The name of the class to generate
-     * @param string           $baseClass The name of the container's base class
-     */
-    protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, $class, $baseClass)
-    {
-        // cache the container
-        $dumper = new PhpDumper($container);
-
-        if (class_exists('ProxyManager\Configuration') && class_exists('Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper')) {
-            $dumper->setProxyDumper(new ProxyDumper(md5($cache->getPath())));
-        }
-
-        $content = $dumper->dump(array('class' => $class, 'base_class' => $baseClass, 'file' => $cache->getPath()));
-        if (!$this->debug) {
-            $content = static::stripComments($content);
-        }
-
-        $cache->write($content, $container->getResources());
-    }
-
-    /**
-     * Returns a loader for the container.
-     *
-     * @param ContainerInterface $container The service container
-     *
-     * @return DelegatingLoader The loader
-     */
-    protected function getContainerLoader(ContainerInterface $container)
-    {
-        $locator = new FileLocator($this);
-        $resolver = new LoaderResolver(array(
-            new XmlFileLoader($container, $locator),
-            new YamlFileLoader($container, $locator),
-            new IniFileLoader($container, $locator),
-            new PhpFileLoader($container, $locator),
-            new ClosureLoader($container),
-        ));
-
-        return new DelegatingLoader($resolver);
-    }
-
-    /**
-     * Removes comments from a PHP source string.
-     *
-     * We don't use the PHP php_strip_whitespace() function
-     * as we want the content to be readable and well-formatted.
-     *
-     * @param string $source A PHP string
-     *
-     * @return string The PHP string with the comments removed
-     */
-    public static function stripComments($source)
-    {
-        if (!function_exists('token_get_all')) {
-            return $source;
-        }
-
-        $rawChunk = '';
-        $output = '';
-        $tokens = token_get_all($source);
-        $ignoreSpace = false;
-        for (reset($tokens); false !== $token = current($tokens); next($tokens)) {
-            if (is_string($token)) {
-                $rawChunk .= $token;
-            } elseif (T_START_HEREDOC === $token[0]) {
-                $output .= $rawChunk.$token[1];
-                do {
-                    $token = next($tokens);
-                    $output .= $token[1];
-                } while ($token[0] !== T_END_HEREDOC);
-                $rawChunk = '';
-            } elseif (T_WHITESPACE === $token[0]) {
-                if ($ignoreSpace) {
-                    $ignoreSpace = false;
-
-                    continue;
-                }
-
-                // replace multiple new lines with a single newline
-                $rawChunk .= preg_replace(array('/\n{2,}/S'), "\n", $token[1]);
-            } elseif (in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) {
-                $ignoreSpace = true;
-            } else {
-                $rawChunk .= $token[1];
-
-                // The PHP-open tag already has a new-line
-                if (T_OPEN_TAG === $token[0]) {
-                    $ignoreSpace = true;
-                }
-            }
-        }
-
-        $output .= $rawChunk;
-
-        return $output;
-    }
-
-    public function serialize()
-    {
-        return serialize(array($this->environment, $this->debug));
-    }
-
-    public function unserialize($data)
-    {
-        list($environment, $debug) = unserialize($data);
-
-        $this->__construct($environment, $debug);
-    }
-}
diff --git a/vendor/symfony/http-kernel/KernelEvents.php b/vendor/symfony/http-kernel/KernelEvents.php
deleted file mode 100644
index 8768979..0000000
--- a/vendor/symfony/http-kernel/KernelEvents.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?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;
-
-/**
- * Contains all events thrown in the HttpKernel component.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-final class KernelEvents
-{
-    /**
-     * The REQUEST event occurs at the very beginning of request
-     * dispatching.
-     *
-     * This event allows you to create a response for a request before any
-     * other code in the framework is executed. The event listener method
-     * receives a Symfony\Component\HttpKernel\Event\GetResponseEvent
-     * instance.
-     *
-     * @Event
-     *
-     * @var string
-     */
-    const REQUEST = 'kernel.request';
-
-    /**
-     * The EXCEPTION event occurs when an uncaught exception appears.
-     *
-     * This event allows you to create a response for a thrown exception or
-     * to modify the thrown exception. The event listener method receives
-     * a Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent
-     * instance.
-     *
-     * @Event
-     *
-     * @var string
-     */
-    const EXCEPTION = 'kernel.exception';
-
-    /**
-     * The VIEW event occurs when the return value of a controller
-     * is not a Response instance.
-     *
-     * This event allows you to create a response for the return value of the
-     * controller. The event listener method receives a
-     * Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent
-     * instance.
-     *
-     * @Event
-     *
-     * @var string
-     */
-    const VIEW = 'kernel.view';
-
-    /**
-     * The CONTROLLER event occurs once a controller was found for
-     * handling a request.
-     *
-     * This event allows you to change the controller that will handle the
-     * request. The event listener method receives a
-     * Symfony\Component\HttpKernel\Event\FilterControllerEvent instance.
-     *
-     * @Event
-     *
-     * @var string
-     */
-    const CONTROLLER = 'kernel.controller';
-
-    /**
-     * The RESPONSE event occurs once a response was created for
-     * replying to a request.
-     *
-     * This event allows you to modify or replace the response that will be
-     * replied. The event listener method receives a
-     * Symfony\Component\HttpKernel\Event\FilterResponseEvent instance.
-     *
-     * @Event
-     *
-     * @var string
-     */
-    const RESPONSE = 'kernel.response';
-
-    /**
-     * The TERMINATE event occurs once a response was sent.
-     *
-     * This event allows you to run expensive post-response jobs.
-     * The event listener method receives a
-     * Symfony\Component\HttpKernel\Event\PostResponseEvent instance.
-     *
-     * @Event
-     *
-     * @var string
-     */
-    const TERMINATE = 'kernel.terminate';
-
-    /**
-     * The FINISH_REQUEST event occurs when a response was generated for a request.
-     *
-     * This event allows you to reset the global and environmental state of
-     * the application, when it was changed during the request.
-     *
-     * @var string
-     */
-    const FINISH_REQUEST = 'kernel.finish_request';
-}
diff --git a/vendor/symfony/http-kernel/KernelInterface.php b/vendor/symfony/http-kernel/KernelInterface.php
deleted file mode 100644
index ee5d273..0000000
--- a/vendor/symfony/http-kernel/KernelInterface.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?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;
-
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\HttpKernel\Bundle\BundleInterface;
-use Symfony\Component\Config\Loader\LoaderInterface;
-
-/**
- * The Kernel is the heart of the Symfony system.
- *
- * It manages an environment made of bundles.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface KernelInterface extends HttpKernelInterface, \Serializable
-{
-    /**
-     * Returns an array of bundles to register.
-     *
-     * @return BundleInterface[] An array of bundle instances.
-     */
-    public function registerBundles();
-
-    /**
-     * Loads the container configuration.
-     *
-     * @param LoaderInterface $loader A LoaderInterface instance
-     */
-    public function registerContainerConfiguration(LoaderInterface $loader);
-
-    /**
-     * Boots the current kernel.
-     */
-    public function boot();
-
-    /**
-     * Shutdowns the kernel.
-     *
-     * This method is mainly useful when doing functional testing.
-     */
-    public function shutdown();
-
-    /**
-     * Gets the registered bundle instances.
-     *
-     * @return BundleInterface[] An array of registered bundle instances
-     */
-    public function getBundles();
-
-    /**
-     * Checks if a given class name belongs to an active bundle.
-     *
-     * @param string $class A class name
-     *
-     * @return bool true if the class belongs to an active bundle, false otherwise
-     *
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    public function isClassInActiveBundle($class);
-
-    /**
-     * Returns a bundle and optionally its descendants by its name.
-     *
-     * @param string $name  Bundle name
-     * @param bool   $first Whether to return the first bundle only or together with its descendants
-     *
-     * @return BundleInterface|BundleInterface[] A BundleInterface instance or an array of BundleInterface instances if $first is false
-     *
-     * @throws \InvalidArgumentException when the bundle is not enabled
-     */
-    public function getBundle($name, $first = true);
-
-    /**
-     * Returns the file path for a given resource.
-     *
-     * A Resource can be a file or a directory.
-     *
-     * The resource name must follow the following pattern:
-     *
-     *     "@BundleName/path/to/a/file.something"
-     *
-     * where BundleName is the name of the bundle
-     * and the remaining part is the relative path in the bundle.
-     *
-     * If $dir is passed, and the first segment of the path is "Resources",
-     * this method will look for a file named:
-     *
-     *     $dir/<BundleName>/path/without/Resources
-     *
-     * before looking in the bundle resource folder.
-     *
-     * @param string $name  A resource name to locate
-     * @param string $dir   A directory where to look for the resource first
-     * @param bool   $first Whether to return the first path or paths for all matching bundles
-     *
-     * @return string|array The absolute path of the resource or an array if $first is false
-     *
-     * @throws \InvalidArgumentException if the file cannot be found or the name is not valid
-     * @throws \RuntimeException         if the name contains invalid/unsafe characters
-     */
-    public function locateResource($name, $dir = null, $first = true);
-
-    /**
-     * Gets the name of the kernel.
-     *
-     * @return string The kernel name
-     */
-    public function getName();
-
-    /**
-     * Gets the environment.
-     *
-     * @return string The current environment
-     */
-    public function getEnvironment();
-
-    /**
-     * Checks if debug mode is enabled.
-     *
-     * @return bool true if debug mode is enabled, false otherwise
-     */
-    public function isDebug();
-
-    /**
-     * Gets the application root dir.
-     *
-     * @return string The application root dir
-     */
-    public function getRootDir();
-
-    /**
-     * Gets the current container.
-     *
-     * @return ContainerInterface A ContainerInterface instance
-     */
-    public function getContainer();
-
-    /**
-     * Gets the request start time (not available if debug is disabled).
-     *
-     * @return int The request start timestamp
-     */
-    public function getStartTime();
-
-    /**
-     * Gets the cache directory.
-     *
-     * @return string The cache directory
-     */
-    public function getCacheDir();
-
-    /**
-     * Gets the log directory.
-     *
-     * @return string The log directory
-     */
-    public function getLogDir();
-
-    /**
-     * Gets the charset of the application.
-     *
-     * @return string The charset
-     */
-    public function getCharset();
-}
diff --git a/vendor/symfony/http-kernel/LICENSE b/vendor/symfony/http-kernel/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/http-kernel/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/http-kernel/Log/DebugLoggerInterface.php b/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php
deleted file mode 100644
index 5635a21..0000000
--- a/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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\Log;
-
-/**
- * DebugLoggerInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface DebugLoggerInterface
-{
-    /**
-     * Returns an array of logs.
-     *
-     * A log is an array with the following mandatory keys:
-     * timestamp, message, priority, and priorityName.
-     * It can also have an optional context key containing an array.
-     *
-     * @return array An array of logs
-     */
-    public function getLogs();
-
-    /**
-     * Returns the number of errors.
-     *
-     * @return int The number of errors
-     */
-    public function countErrors();
-}
diff --git a/vendor/symfony/http-kernel/Log/LoggerInterface.php b/vendor/symfony/http-kernel/Log/LoggerInterface.php
deleted file mode 100644
index cad38e5..0000000
--- a/vendor/symfony/http-kernel/Log/LoggerInterface.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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\Log;
-
-use Psr\Log\LoggerInterface as PsrLogger;
-
-/**
- * LoggerInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.2, to be removed in 3.0. Type-hint \Psr\Log\LoggerInterface instead.
- */
-interface LoggerInterface extends PsrLogger
-{
-    /**
-     * @deprecated since version 2.2, to be removed in 3.0. Use emergency() which is PSR-3 compatible.
-     */
-    public function emerg($message, array $context = array());
-
-    /**
-     * @deprecated since version 2.2, to be removed in 3.0. Use critical() which is PSR-3 compatible.
-     */
-    public function crit($message, array $context = array());
-
-    /**
-     * @deprecated since version 2.2, to be removed in 3.0. Use error() which is PSR-3 compatible.
-     */
-    public function err($message, array $context = array());
-
-    /**
-     * @deprecated since version 2.2, to be removed in 3.0. Use warning() which is PSR-3 compatible.
-     */
-    public function warn($message, array $context = array());
-}
diff --git a/vendor/symfony/http-kernel/Log/NullLogger.php b/vendor/symfony/http-kernel/Log/NullLogger.php
deleted file mode 100644
index 36a857d..0000000
--- a/vendor/symfony/http-kernel/Log/NullLogger.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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\Log;
-
-@trigger_error('The '.__NAMESPACE__.'\NullLogger class is deprecated since version 2.2 and will be removed in 3.0. Use the Psr\Log\NullLogger class instead from the psr/log Composer package.', E_USER_DEPRECATED);
-
-use Psr\Log\NullLogger as PsrNullLogger;
-
-/**
- * NullLogger.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class NullLogger extends PsrNullLogger implements LoggerInterface
-{
-    public function emerg($message, array $context = array())
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. You should use the new emergency() method instead, which is PSR-3 compatible.', E_USER_DEPRECATED);
-    }
-
-    public function crit($message, array $context = array())
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. You should use the new critical() method instead, which is PSR-3 compatible.', E_USER_DEPRECATED);
-    }
-
-    public function err($message, array $context = array())
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. You should use the new error() method instead, which is PSR-3 compatible.', E_USER_DEPRECATED);
-    }
-
-    public function warn($message, array $context = array())
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. You should use the new warning() method instead, which is PSR-3 compatible.', E_USER_DEPRECATED);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/BaseMemcacheProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/BaseMemcacheProfilerStorage.php
deleted file mode 100644
index c6395bd..0000000
--- a/vendor/symfony/http-kernel/Profiler/BaseMemcacheProfilerStorage.php
+++ /dev/null
@@ -1,310 +0,0 @@
-<?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\Profiler;
-
-/**
- * Base Memcache storage for profiling information in a Memcache.
- *
- * @author Andrej Hudec <pulzarraider@gmail.com>
- */
-abstract class BaseMemcacheProfilerStorage implements ProfilerStorageInterface
-{
-    const TOKEN_PREFIX = 'sf_profiler_';
-
-    protected $dsn;
-    protected $lifetime;
-
-    /**
-     * Constructor.
-     *
-     * @param string $dsn      A data source name
-     * @param string $username
-     * @param string $password
-     * @param int    $lifetime The lifetime to use for the purge
-     */
-    public function __construct($dsn, $username = '', $password = '', $lifetime = 86400)
-    {
-        $this->dsn = $dsn;
-        $this->lifetime = (int) $lifetime;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null)
-    {
-        $indexName = $this->getIndexName();
-
-        $indexContent = $this->getValue($indexName);
-        if (!$indexContent) {
-            return array();
-        }
-
-        $profileList = explode("\n", $indexContent);
-        $result = array();
-
-        foreach ($profileList as $item) {
-            if ($limit === 0) {
-                break;
-            }
-
-            if ($item == '') {
-                continue;
-            }
-
-            $values = explode("\t", $item, 7);
-            list($itemToken, $itemIp, $itemMethod, $itemUrl, $itemTime, $itemParent) = $values;
-            $statusCode = isset($values[6]) ? $values[6] : null;
-
-            $itemTime = (int) $itemTime;
-
-            if ($ip && false === strpos($itemIp, $ip) || $url && false === strpos($itemUrl, $url) || $method && false === strpos($itemMethod, $method)) {
-                continue;
-            }
-
-            if (!empty($start) && $itemTime < $start) {
-                continue;
-            }
-
-            if (!empty($end) && $itemTime > $end) {
-                continue;
-            }
-
-            $result[$itemToken] = array(
-                'token' => $itemToken,
-                'ip' => $itemIp,
-                'method' => $itemMethod,
-                'url' => $itemUrl,
-                'time' => $itemTime,
-                'parent' => $itemParent,
-                'status_code' => $statusCode,
-            );
-            --$limit;
-        }
-
-        usort($result, function ($a, $b) {
-            if ($a['time'] === $b['time']) {
-                return 0;
-            }
-
-            return $a['time'] > $b['time'] ? -1 : 1;
-        });
-
-        return $result;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function purge()
-    {
-        // delete only items from index
-        $indexName = $this->getIndexName();
-
-        $indexContent = $this->getValue($indexName);
-
-        if (!$indexContent) {
-            return false;
-        }
-
-        $profileList = explode("\n", $indexContent);
-
-        foreach ($profileList as $item) {
-            if ($item == '') {
-                continue;
-            }
-
-            if (false !== $pos = strpos($item, "\t")) {
-                $this->delete($this->getItemName(substr($item, 0, $pos)));
-            }
-        }
-
-        return $this->delete($indexName);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($token)
-    {
-        if (empty($token)) {
-            return false;
-        }
-
-        $profile = $this->getValue($this->getItemName($token));
-
-        if (false !== $profile) {
-            $profile = $this->createProfileFromData($token, $profile);
-        }
-
-        return $profile;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write(Profile $profile)
-    {
-        $data = array(
-            'token' => $profile->getToken(),
-            'parent' => $profile->getParentToken(),
-            'children' => array_map(function ($p) { return $p->getToken(); }, $profile->getChildren()),
-            'data' => $profile->getCollectors(),
-            'ip' => $profile->getIp(),
-            'method' => $profile->getMethod(),
-            'url' => $profile->getUrl(),
-            'time' => $profile->getTime(),
-        );
-
-        $profileIndexed = false !== $this->getValue($this->getItemName($profile->getToken()));
-
-        if ($this->setValue($this->getItemName($profile->getToken()), $data, $this->lifetime)) {
-            if (!$profileIndexed) {
-                // Add to index
-                $indexName = $this->getIndexName();
-
-                $indexRow = implode("\t", array(
-                    $profile->getToken(),
-                    $profile->getIp(),
-                    $profile->getMethod(),
-                    $profile->getUrl(),
-                    $profile->getTime(),
-                    $profile->getParentToken(),
-                    $profile->getStatusCode(),
-                ))."\n";
-
-                return $this->appendValue($indexName, $indexRow, $this->lifetime);
-            }
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Retrieve item from the memcache server.
-     *
-     * @param string $key
-     *
-     * @return mixed
-     */
-    abstract protected function getValue($key);
-
-    /**
-     * Store an item on the memcache server under the specified key.
-     *
-     * @param string $key
-     * @param mixed  $value
-     * @param int    $expiration
-     *
-     * @return bool
-     */
-    abstract protected function setValue($key, $value, $expiration = 0);
-
-    /**
-     * Delete item from the memcache server.
-     *
-     * @param string $key
-     *
-     * @return bool
-     */
-    abstract protected function delete($key);
-
-    /**
-     * Append data to an existing item on the memcache server.
-     *
-     * @param string $key
-     * @param string $value
-     * @param int    $expiration
-     *
-     * @return bool
-     */
-    abstract protected function appendValue($key, $value, $expiration = 0);
-
-    private function createProfileFromData($token, $data, $parent = null)
-    {
-        $profile = new Profile($token);
-        $profile->setIp($data['ip']);
-        $profile->setMethod($data['method']);
-        $profile->setUrl($data['url']);
-        $profile->setTime($data['time']);
-        $profile->setCollectors($data['data']);
-
-        if (!$parent && $data['parent']) {
-            $parent = $this->read($data['parent']);
-        }
-
-        if ($parent) {
-            $profile->setParent($parent);
-        }
-
-        foreach ($data['children'] as $token) {
-            if (!$token) {
-                continue;
-            }
-
-            if (!$childProfileData = $this->getValue($this->getItemName($token))) {
-                continue;
-            }
-
-            $profile->addChild($this->createProfileFromData($token, $childProfileData, $profile));
-        }
-
-        return $profile;
-    }
-
-    /**
-     * Get item name.
-     *
-     * @param string $token
-     *
-     * @return string
-     */
-    private function getItemName($token)
-    {
-        $name = self::TOKEN_PREFIX.$token;
-
-        if ($this->isItemNameValid($name)) {
-            return $name;
-        }
-
-        return false;
-    }
-
-    /**
-     * Get name of index.
-     *
-     * @return string
-     */
-    private function getIndexName()
-    {
-        $name = self::TOKEN_PREFIX.'index';
-
-        if ($this->isItemNameValid($name)) {
-            return $name;
-        }
-
-        return false;
-    }
-
-    private function isItemNameValid($name)
-    {
-        $length = strlen($name);
-
-        if ($length > 250) {
-            throw new \RuntimeException(sprintf('The memcache item key "%s" is too long (%s bytes). Allowed maximum size is 250 bytes.', $name, $length));
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
deleted file mode 100644
index 581ab64..0000000
--- a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
+++ /dev/null
@@ -1,282 +0,0 @@
-<?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\Profiler;
-
-/**
- * Storage for profiler using files.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-class FileProfilerStorage implements ProfilerStorageInterface
-{
-    /**
-     * Folder where profiler data are stored.
-     *
-     * @var string
-     */
-    private $folder;
-
-    /**
-     * Constructs the file storage using a "dsn-like" path.
-     *
-     * Example : "file:/path/to/the/storage/folder"
-     *
-     * @param string $dsn The DSN
-     *
-     * @throws \RuntimeException
-     */
-    public function __construct($dsn)
-    {
-        if (0 !== strpos($dsn, 'file:')) {
-            throw new \RuntimeException(sprintf('Please check your configuration. You are trying to use FileStorage with an invalid dsn "%s". The expected format is "file:/path/to/the/storage/folder".', $dsn));
-        }
-        $this->folder = substr($dsn, 5);
-
-        if (!is_dir($this->folder)) {
-            mkdir($this->folder, 0777, true);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null)
-    {
-        $file = $this->getIndexFilename();
-
-        if (!file_exists($file)) {
-            return array();
-        }
-
-        $file = fopen($file, 'r');
-        fseek($file, 0, SEEK_END);
-
-        $result = array();
-        while (count($result) < $limit && $line = $this->readLineFromFile($file)) {
-            $values = str_getcsv($line);
-            list($csvToken, $csvIp, $csvMethod, $csvUrl, $csvTime, $csvParent) = $values;
-            $csvStatusCode = isset($values[6]) ? $values[6] : null;
-
-            $csvTime = (int) $csvTime;
-
-            if ($ip && false === strpos($csvIp, $ip) || $url && false === strpos($csvUrl, $url) || $method && false === strpos($csvMethod, $method)) {
-                continue;
-            }
-
-            if (!empty($start) && $csvTime < $start) {
-                continue;
-            }
-
-            if (!empty($end) && $csvTime > $end) {
-                continue;
-            }
-
-            $result[$csvToken] = array(
-                'token' => $csvToken,
-                'ip' => $csvIp,
-                'method' => $csvMethod,
-                'url' => $csvUrl,
-                'time' => $csvTime,
-                'parent' => $csvParent,
-                'status_code' => $csvStatusCode,
-            );
-        }
-
-        fclose($file);
-
-        return array_values($result);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function purge()
-    {
-        $flags = \FilesystemIterator::SKIP_DOTS;
-        $iterator = new \RecursiveDirectoryIterator($this->folder, $flags);
-        $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::CHILD_FIRST);
-
-        foreach ($iterator as $file) {
-            if (is_file($file)) {
-                unlink($file);
-            } else {
-                rmdir($file);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($token)
-    {
-        if (!$token || !file_exists($file = $this->getFilename($token))) {
-            return;
-        }
-
-        return $this->createProfileFromData($token, unserialize(file_get_contents($file)));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write(Profile $profile)
-    {
-        $file = $this->getFilename($profile->getToken());
-
-        $profileIndexed = is_file($file);
-        if (!$profileIndexed) {
-            // Create directory
-            $dir = dirname($file);
-            if (!is_dir($dir)) {
-                mkdir($dir, 0777, true);
-            }
-        }
-
-        // Store profile
-        $data = array(
-            'token' => $profile->getToken(),
-            'parent' => $profile->getParentToken(),
-            'children' => array_map(function ($p) { return $p->getToken(); }, $profile->getChildren()),
-            'data' => $profile->getCollectors(),
-            'ip' => $profile->getIp(),
-            'method' => $profile->getMethod(),
-            'url' => $profile->getUrl(),
-            'time' => $profile->getTime(),
-        );
-
-        if (false === file_put_contents($file, serialize($data))) {
-            return false;
-        }
-
-        if (!$profileIndexed) {
-            // Add to index
-            if (false === $file = fopen($this->getIndexFilename(), 'a')) {
-                return false;
-            }
-
-            fputcsv($file, array(
-                $profile->getToken(),
-                $profile->getIp(),
-                $profile->getMethod(),
-                $profile->getUrl(),
-                $profile->getTime(),
-                $profile->getParentToken(),
-                $profile->getStatusCode(),
-            ));
-            fclose($file);
-        }
-
-        return true;
-    }
-
-    /**
-     * Gets filename to store data, associated to the token.
-     *
-     * @param string $token
-     *
-     * @return string The profile filename
-     */
-    protected function getFilename($token)
-    {
-        // Uses 4 last characters, because first are mostly the same.
-        $folderA = substr($token, -2, 2);
-        $folderB = substr($token, -4, 2);
-
-        return $this->folder.'/'.$folderA.'/'.$folderB.'/'.$token;
-    }
-
-    /**
-     * Gets the index filename.
-     *
-     * @return string The index filename
-     */
-    protected function getIndexFilename()
-    {
-        return $this->folder.'/index.csv';
-    }
-
-    /**
-     * Reads a line in the file, backward.
-     *
-     * This function automatically skips the empty lines and do not include the line return in result value.
-     *
-     * @param resource $file The file resource, with the pointer placed at the end of the line to read
-     *
-     * @return mixed A string representing the line or null if beginning of file is reached
-     */
-    protected function readLineFromFile($file)
-    {
-        $line = '';
-        $position = ftell($file);
-
-        if (0 === $position) {
-            return;
-        }
-
-        while (true) {
-            $chunkSize = min($position, 1024);
-            $position -= $chunkSize;
-            fseek($file, $position);
-
-            if (0 === $chunkSize) {
-                // bof reached
-                break;
-            }
-
-            $buffer = fread($file, $chunkSize);
-
-            if (false === ($upTo = strrpos($buffer, "\n"))) {
-                $line = $buffer.$line;
-                continue;
-            }
-
-            $position += $upTo;
-            $line = substr($buffer, $upTo + 1).$line;
-            fseek($file, max(0, $position), SEEK_SET);
-
-            if ('' !== $line) {
-                break;
-            }
-        }
-
-        return '' === $line ? null : $line;
-    }
-
-    protected function createProfileFromData($token, $data, $parent = null)
-    {
-        $profile = new Profile($token);
-        $profile->setIp($data['ip']);
-        $profile->setMethod($data['method']);
-        $profile->setUrl($data['url']);
-        $profile->setTime($data['time']);
-        $profile->setCollectors($data['data']);
-
-        if (!$parent && $data['parent']) {
-            $parent = $this->read($data['parent']);
-        }
-
-        if ($parent) {
-            $profile->setParent($parent);
-        }
-
-        foreach ($data['children'] as $token) {
-            if (!$token || !file_exists($file = $this->getFilename($token))) {
-                continue;
-            }
-
-            $profile->addChild($this->createProfileFromData($token, unserialize(file_get_contents($file)), $profile));
-        }
-
-        return $profile;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/MemcacheProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/MemcacheProfilerStorage.php
deleted file mode 100644
index 2727405..0000000
--- a/vendor/symfony/http-kernel/Profiler/MemcacheProfilerStorage.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?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\Profiler;
-
-/**
- * Memcache Profiler Storage.
- *
- * @author Andrej Hudec <pulzarraider@gmail.com>
- */
-class MemcacheProfilerStorage extends BaseMemcacheProfilerStorage
-{
-    /**
-     * @var \Memcache
-     */
-    private $memcache;
-
-    /**
-     * Internal convenience method that returns the instance of the Memcache.
-     *
-     * @return \Memcache
-     *
-     * @throws \RuntimeException
-     */
-    protected function getMemcache()
-    {
-        if (null === $this->memcache) {
-            if (!preg_match('#^memcache://(?(?=\[.*\])\[(.*)\]|(.*)):(.*)$#', $this->dsn, $matches)) {
-                throw new \RuntimeException(sprintf('Please check your configuration. You are trying to use Memcache with an invalid dsn "%s". The expected format is "memcache://[host]:port".', $this->dsn));
-            }
-
-            $host = $matches[1] ?: $matches[2];
-            $port = $matches[3];
-
-            $memcache = new \Memcache();
-            $memcache->addserver($host, $port);
-
-            $this->memcache = $memcache;
-        }
-
-        return $this->memcache;
-    }
-
-    /**
-     * Set instance of the Memcache.
-     *
-     * @param \Memcache $memcache
-     */
-    public function setMemcache($memcache)
-    {
-        $this->memcache = $memcache;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getValue($key)
-    {
-        return $this->getMemcache()->get($key);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function setValue($key, $value, $expiration = 0)
-    {
-        return $this->getMemcache()->set($key, $value, false, time() + $expiration);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function delete($key)
-    {
-        return $this->getMemcache()->delete($key);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function appendValue($key, $value, $expiration = 0)
-    {
-        $memcache = $this->getMemcache();
-
-        if (method_exists($memcache, 'append')) {
-            // Memcache v3.0
-            if (!$result = $memcache->append($key, $value, false, $expiration)) {
-                return $memcache->set($key, $value, false, $expiration);
-            }
-
-            return $result;
-        }
-
-        // simulate append in Memcache <3.0
-        $content = $memcache->get($key);
-
-        return $memcache->set($key, $content.$value, false, $expiration);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/MemcachedProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/MemcachedProfilerStorage.php
deleted file mode 100644
index 0c57373..0000000
--- a/vendor/symfony/http-kernel/Profiler/MemcachedProfilerStorage.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?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\Profiler;
-
-/**
- * Memcached Profiler Storage.
- *
- * @author Andrej Hudec <pulzarraider@gmail.com>
- */
-class MemcachedProfilerStorage extends BaseMemcacheProfilerStorage
-{
-    /**
-     * @var \Memcached
-     */
-    private $memcached;
-
-    /**
-     * Internal convenience method that returns the instance of the Memcached.
-     *
-     * @return \Memcached
-     *
-     * @throws \RuntimeException
-     */
-    protected function getMemcached()
-    {
-        if (null === $this->memcached) {
-            if (!preg_match('#^memcached://(?(?=\[.*\])\[(.*)\]|(.*)):(.*)$#', $this->dsn, $matches)) {
-                throw new \RuntimeException(sprintf('Please check your configuration. You are trying to use Memcached with an invalid dsn "%s". The expected format is "memcached://[host]:port".', $this->dsn));
-            }
-
-            $host = $matches[1] ?: $matches[2];
-            $port = $matches[3];
-
-            $memcached = new \Memcached();
-
-            // disable compression to allow appending
-            $memcached->setOption(\Memcached::OPT_COMPRESSION, false);
-
-            $memcached->addServer($host, $port);
-
-            $this->memcached = $memcached;
-        }
-
-        return $this->memcached;
-    }
-
-    /**
-     * Set instance of the Memcached.
-     *
-     * @param \Memcached $memcached
-     */
-    public function setMemcached($memcached)
-    {
-        $this->memcached = $memcached;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getValue($key)
-    {
-        return $this->getMemcached()->get($key);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function setValue($key, $value, $expiration = 0)
-    {
-        return $this->getMemcached()->set($key, $value, time() + $expiration);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function delete($key)
-    {
-        return $this->getMemcached()->delete($key);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function appendValue($key, $value, $expiration = 0)
-    {
-        $memcached = $this->getMemcached();
-
-        if (!$result = $memcached->append($key, $value)) {
-            return $memcached->set($key, $value, $expiration);
-        }
-
-        return $result;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/MongoDbProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/MongoDbProfilerStorage.php
deleted file mode 100644
index f35a7f7..0000000
--- a/vendor/symfony/http-kernel/Profiler/MongoDbProfilerStorage.php
+++ /dev/null
@@ -1,259 +0,0 @@
-<?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\Profiler;
-
-class MongoDbProfilerStorage implements ProfilerStorageInterface
-{
-    protected $dsn;
-    protected $lifetime;
-    private $mongo;
-
-    /**
-     * Constructor.
-     *
-     * @param string $dsn      A data source name
-     * @param string $username Not used
-     * @param string $password Not used
-     * @param int    $lifetime The lifetime to use for the purge
-     */
-    public function __construct($dsn, $username = '', $password = '', $lifetime = 86400)
-    {
-        $this->dsn = $dsn;
-        $this->lifetime = (int) $lifetime;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null)
-    {
-        $cursor = $this->getMongo()->find($this->buildQuery($ip, $url, $method, $start, $end), array('_id', 'parent', 'ip', 'method', 'url', 'time', 'status_code'))->sort(array('time' => -1))->limit($limit);
-
-        $tokens = array();
-        foreach ($cursor as $profile) {
-            $tokens[] = $this->getData($profile);
-        }
-
-        return $tokens;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function purge()
-    {
-        $this->getMongo()->remove(array());
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($token)
-    {
-        $profile = $this->getMongo()->findOne(array('_id' => $token, 'data' => array('$exists' => true)));
-
-        if (null !== $profile) {
-            $profile = $this->createProfileFromData($this->getData($profile));
-        }
-
-        return $profile;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write(Profile $profile)
-    {
-        $this->cleanup();
-
-        $record = array(
-            '_id' => $profile->getToken(),
-            'parent' => $profile->getParentToken(),
-            'data' => base64_encode(serialize($profile->getCollectors())),
-            'ip' => $profile->getIp(),
-            'method' => $profile->getMethod(),
-            'url' => $profile->getUrl(),
-            'time' => $profile->getTime(),
-            'status_code' => $profile->getStatusCode(),
-        );
-
-        $result = $this->getMongo()->update(array('_id' => $profile->getToken()), array_filter($record, function ($v) { return !empty($v); }), array('upsert' => true));
-
-        return (bool) (isset($result['ok']) ? $result['ok'] : $result);
-    }
-
-    /**
-     * Internal convenience method that returns the instance of the MongoDB Collection.
-     *
-     * @return \MongoCollection
-     *
-     * @throws \RuntimeException
-     */
-    protected function getMongo()
-    {
-        if (null !== $this->mongo) {
-            return $this->mongo;
-        }
-
-        if (!$parsedDsn = $this->parseDsn($this->dsn)) {
-            throw new \RuntimeException(sprintf('Please check your configuration. You are trying to use MongoDB with an invalid dsn "%s". The expected format is "mongodb://[user:pass@]host/database/collection"', $this->dsn));
-        }
-
-        list($server, $database, $collection) = $parsedDsn;
-        $mongoClass = version_compare(phpversion('mongo'), '1.3.0', '<') ? '\Mongo' : '\MongoClient';
-        $mongo = new $mongoClass($server);
-
-        return $this->mongo = $mongo->selectCollection($database, $collection);
-    }
-
-    /**
-     * @param array $data
-     *
-     * @return Profile
-     */
-    protected function createProfileFromData(array $data)
-    {
-        $profile = $this->getProfile($data);
-
-        if ($data['parent']) {
-            $parent = $this->getMongo()->findOne(array('_id' => $data['parent'], 'data' => array('$exists' => true)));
-            if ($parent) {
-                $profile->setParent($this->getProfile($this->getData($parent)));
-            }
-        }
-
-        $profile->setChildren($this->readChildren($data['token']));
-
-        return $profile;
-    }
-
-    /**
-     * @param string $token
-     *
-     * @return Profile[] An array of Profile instances
-     */
-    protected function readChildren($token)
-    {
-        $profiles = array();
-
-        $cursor = $this->getMongo()->find(array('parent' => $token, 'data' => array('$exists' => true)));
-        foreach ($cursor as $d) {
-            $profiles[] = $this->getProfile($this->getData($d));
-        }
-
-        return $profiles;
-    }
-
-    protected function cleanup()
-    {
-        $this->getMongo()->remove(array('time' => array('$lt' => time() - $this->lifetime)));
-    }
-
-    /**
-     * @param string $ip
-     * @param string $url
-     * @param string $method
-     * @param int    $start
-     * @param int    $end
-     *
-     * @return array
-     */
-    private function buildQuery($ip, $url, $method, $start, $end)
-    {
-        $query = array();
-
-        if (!empty($ip)) {
-            $query['ip'] = $ip;
-        }
-
-        if (!empty($url)) {
-            $query['url'] = $url;
-        }
-
-        if (!empty($method)) {
-            $query['method'] = $method;
-        }
-
-        if (!empty($start) || !empty($end)) {
-            $query['time'] = array();
-        }
-
-        if (!empty($start)) {
-            $query['time']['$gte'] = $start;
-        }
-
-        if (!empty($end)) {
-            $query['time']['$lte'] = $end;
-        }
-
-        return $query;
-    }
-
-    /**
-     * @param array $data
-     *
-     * @return array
-     */
-    private function getData(array $data)
-    {
-        return array(
-            'token' => $data['_id'],
-            'parent' => isset($data['parent']) ? $data['parent'] : null,
-            'ip' => isset($data['ip']) ? $data['ip'] : null,
-            'method' => isset($data['method']) ? $data['method'] : null,
-            'url' => isset($data['url']) ? $data['url'] : null,
-            'time' => isset($data['time']) ? $data['time'] : null,
-            'data' => isset($data['data']) ? $data['data'] : null,
-            'status_code' => isset($data['status_code']) ? $data['status_code'] : null,
-        );
-    }
-
-    /**
-     * @param array $data
-     *
-     * @return Profile
-     */
-    private function getProfile(array $data)
-    {
-        $profile = new Profile($data['token']);
-        $profile->setIp($data['ip']);
-        $profile->setMethod($data['method']);
-        $profile->setUrl($data['url']);
-        $profile->setTime($data['time']);
-        $profile->setCollectors(unserialize(base64_decode($data['data'])));
-
-        return $profile;
-    }
-
-    /**
-     * @param string $dsn
-     *
-     * @return null|array Array($server, $database, $collection)
-     */
-    private function parseDsn($dsn)
-    {
-        if (!preg_match('#^(mongodb://.*)/(.*)/(.*)$#', $dsn, $matches)) {
-            return;
-        }
-
-        $server = $matches[1];
-        $database = $matches[2];
-        $collection = $matches[3];
-        preg_match('#^mongodb://(([^:]+):?(.*)(?=@))?@?([^/]*)(.*)$#', $server, $matchesServer);
-
-        if ('' == $matchesServer[5] && '' != $matches[2]) {
-            $server .= '/'.$matches[2];
-        }
-
-        return array($server, $database, $collection);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/MysqlProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/MysqlProfilerStorage.php
deleted file mode 100644
index 92e8a1b..0000000
--- a/vendor/symfony/http-kernel/Profiler/MysqlProfilerStorage.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?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\Profiler;
-
-/**
- * A ProfilerStorage for Mysql.
- *
- * @author Jan Schumann <js@schumann-it.com>
- */
-class MysqlProfilerStorage extends PdoProfilerStorage
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function initDb()
-    {
-        if (null === $this->db) {
-            if (0 !== strpos($this->dsn, 'mysql')) {
-                throw new \RuntimeException(sprintf('Please check your configuration. You are trying to use Mysql with an invalid dsn "%s". The expected format is "mysql:dbname=database_name;host=host_name".', $this->dsn));
-            }
-
-            if (!class_exists('PDO') || !in_array('mysql', \PDO::getAvailableDrivers(), true)) {
-                throw new \RuntimeException('You need to enable PDO_Mysql extension for the profiler to run properly.');
-            }
-
-            $db = new \PDO($this->dsn, $this->username, $this->password);
-            $db->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token VARCHAR(255) PRIMARY KEY, data LONGTEXT, ip VARCHAR(64), method VARCHAR(6), url VARCHAR(255), time INTEGER UNSIGNED, parent VARCHAR(255), created_at INTEGER UNSIGNED, status_code SMALLINT UNSIGNED, KEY (created_at), KEY (ip), KEY (method), KEY (url), KEY (parent))');
-
-            $this->db = $db;
-        }
-
-        return $this->db;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function buildCriteria($ip, $url, $start, $end, $limit, $method)
-    {
-        $criteria = array();
-        $args = array();
-
-        if ($ip = preg_replace('/[^\d\.]/', '', $ip)) {
-            $criteria[] = 'ip LIKE :ip';
-            $args[':ip'] = '%'.$ip.'%';
-        }
-
-        if ($url) {
-            $criteria[] = 'url LIKE :url';
-            $args[':url'] = '%'.addcslashes($url, '%_\\').'%';
-        }
-
-        if ($method) {
-            $criteria[] = 'method = :method';
-            $args[':method'] = $method;
-        }
-
-        if (!empty($start)) {
-            $criteria[] = 'time >= :start';
-            $args[':start'] = $start;
-        }
-
-        if (!empty($end)) {
-            $criteria[] = 'time <= :end';
-            $args[':end'] = $end;
-        }
-
-        return array($criteria, $args);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/PdoProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/PdoProfilerStorage.php
deleted file mode 100644
index 48f813f..0000000
--- a/vendor/symfony/http-kernel/Profiler/PdoProfilerStorage.php
+++ /dev/null
@@ -1,263 +0,0 @@
-<?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\Profiler;
-
-/**
- * Base PDO storage for profiling information in a PDO database.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Jan Schumann <js@schumann-it.com>
- */
-abstract class PdoProfilerStorage implements ProfilerStorageInterface
-{
-    protected $dsn;
-    protected $username;
-    protected $password;
-    protected $lifetime;
-    protected $db;
-
-    /**
-     * Constructor.
-     *
-     * @param string $dsn      A data source name
-     * @param string $username The username for the database
-     * @param string $password The password for the database
-     * @param int    $lifetime The lifetime to use for the purge
-     */
-    public function __construct($dsn, $username = '', $password = '', $lifetime = 86400)
-    {
-        $this->dsn = $dsn;
-        $this->username = $username;
-        $this->password = $password;
-        $this->lifetime = (int) $lifetime;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null)
-    {
-        if (null === $start) {
-            $start = 0;
-        }
-
-        if (null === $end) {
-            $end = time();
-        }
-
-        list($criteria, $args) = $this->buildCriteria($ip, $url, $start, $end, $limit, $method);
-
-        $criteria = $criteria ? 'WHERE '.implode(' AND ', $criteria) : '';
-
-        $db = $this->initDb();
-        $tokens = $this->fetch($db, 'SELECT token, ip, method, url, time, parent, status_code FROM sf_profiler_data '.$criteria.' ORDER BY time DESC LIMIT '.((int) $limit), $args);
-        $this->close($db);
-
-        return $tokens;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($token)
-    {
-        $db = $this->initDb();
-        $args = array(':token' => $token);
-        $data = $this->fetch($db, 'SELECT data, parent, ip, method, url, time FROM sf_profiler_data WHERE token = :token LIMIT 1', $args);
-        $this->close($db);
-        if (isset($data[0]['data'])) {
-            return $this->createProfileFromData($token, $data[0]);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write(Profile $profile)
-    {
-        $db = $this->initDb();
-        $args = array(
-            ':token' => $profile->getToken(),
-            ':parent' => $profile->getParentToken(),
-            ':data' => base64_encode(serialize($profile->getCollectors())),
-            ':ip' => $profile->getIp(),
-            ':method' => $profile->getMethod(),
-            ':url' => $profile->getUrl(),
-            ':time' => $profile->getTime(),
-            ':created_at' => time(),
-            ':status_code' => $profile->getStatusCode(),
-        );
-
-        try {
-            if ($this->has($profile->getToken())) {
-                $this->exec($db, 'UPDATE sf_profiler_data SET parent = :parent, data = :data, ip = :ip, method = :method, url = :url, time = :time, created_at = :created_at, status_code = :status_code WHERE token = :token', $args);
-            } else {
-                $this->exec($db, 'INSERT INTO sf_profiler_data (token, parent, data, ip, method, url, time, created_at, status_code) VALUES (:token, :parent, :data, :ip, :method, :url, :time, :created_at, :status_code)', $args);
-            }
-            $this->cleanup();
-            $status = true;
-        } catch (\Exception $e) {
-            $status = false;
-        }
-
-        $this->close($db);
-
-        return $status;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function purge()
-    {
-        $db = $this->initDb();
-        $this->exec($db, 'DELETE FROM sf_profiler_data');
-        $this->close($db);
-    }
-
-    /**
-     * Build SQL criteria to fetch records by ip and url.
-     *
-     * @param string $ip     The IP
-     * @param string $url    The URL
-     * @param string $start  The start period to search from
-     * @param string $end    The end period to search to
-     * @param string $limit  The maximum number of tokens to return
-     * @param string $method The request method
-     *
-     * @return array An array with (criteria, args)
-     */
-    abstract protected function buildCriteria($ip, $url, $start, $end, $limit, $method);
-
-    /**
-     * Initializes the database.
-     *
-     * @throws \RuntimeException When the requested database driver is not installed
-     */
-    abstract protected function initDb();
-
-    protected function cleanup()
-    {
-        $db = $this->initDb();
-        $this->exec($db, 'DELETE FROM sf_profiler_data WHERE created_at < :time', array(':time' => time() - $this->lifetime));
-        $this->close($db);
-    }
-
-    protected function exec($db, $query, array $args = array())
-    {
-        $stmt = $this->prepareStatement($db, $query);
-
-        foreach ($args as $arg => $val) {
-            $stmt->bindValue($arg, $val, is_int($val) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
-        }
-        $success = $stmt->execute();
-        if (!$success) {
-            throw new \RuntimeException(sprintf('Error executing query "%s"', $query));
-        }
-    }
-
-    protected function prepareStatement($db, $query)
-    {
-        try {
-            $stmt = $db->prepare($query);
-        } catch (\Exception $e) {
-            $stmt = false;
-        }
-
-        if (false === $stmt) {
-            throw new \RuntimeException('The database cannot successfully prepare the statement');
-        }
-
-        return $stmt;
-    }
-
-    protected function fetch($db, $query, array $args = array())
-    {
-        $stmt = $this->prepareStatement($db, $query);
-
-        foreach ($args as $arg => $val) {
-            $stmt->bindValue($arg, $val, is_int($val) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
-        }
-        $stmt->execute();
-        $return = $stmt->fetchAll(\PDO::FETCH_ASSOC);
-
-        return $return;
-    }
-
-    protected function close($db)
-    {
-    }
-
-    protected function createProfileFromData($token, $data, $parent = null)
-    {
-        $profile = new Profile($token);
-        $profile->setIp($data['ip']);
-        $profile->setMethod($data['method']);
-        $profile->setUrl($data['url']);
-        $profile->setTime($data['time']);
-        $profile->setCollectors(unserialize(base64_decode($data['data'])));
-
-        if (!$parent && !empty($data['parent'])) {
-            $parent = $this->read($data['parent']);
-        }
-
-        if ($parent) {
-            $profile->setParent($parent);
-        }
-
-        $profile->setChildren($this->readChildren($token, $profile));
-
-        return $profile;
-    }
-
-    /**
-     * Reads the child profiles for the given token.
-     *
-     * @param string $token  The parent token
-     * @param string $parent The parent instance
-     *
-     * @return Profile[] An array of Profile instance
-     */
-    protected function readChildren($token, $parent)
-    {
-        $db = $this->initDb();
-        $data = $this->fetch($db, 'SELECT token, data, ip, method, url, time FROM sf_profiler_data WHERE parent = :token', array(':token' => $token));
-        $this->close($db);
-
-        if (!$data) {
-            return array();
-        }
-
-        $profiles = array();
-        foreach ($data as $d) {
-            $profiles[] = $this->createProfileFromData($d['token'], $d, $parent);
-        }
-
-        return $profiles;
-    }
-
-    /**
-     * Returns whether data for the given token already exists in storage.
-     *
-     * @param string $token The profile token
-     *
-     * @return string
-     */
-    protected function has($token)
-    {
-        $db = $this->initDb();
-        $tokenExists = $this->fetch($db, 'SELECT 1 FROM sf_profiler_data WHERE token = :token LIMIT 1', array(':token' => $token));
-        $this->close($db);
-
-        return !empty($tokenExists);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/Profile.php b/vendor/symfony/http-kernel/Profiler/Profile.php
deleted file mode 100644
index a4e4ba6..0000000
--- a/vendor/symfony/http-kernel/Profiler/Profile.php
+++ /dev/null
@@ -1,292 +0,0 @@
-<?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\Profiler;
-
-use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
-
-/**
- * Profile.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Profile
-{
-    private $token;
-
-    /**
-     * @var DataCollectorInterface[]
-     */
-    private $collectors = array();
-
-    private $ip;
-    private $method;
-    private $url;
-    private $time;
-    private $statusCode;
-
-    /**
-     * @var Profile
-     */
-    private $parent;
-
-    /**
-     * @var Profile[]
-     */
-    private $children = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $token The token
-     */
-    public function __construct($token)
-    {
-        $this->token = $token;
-    }
-
-    /**
-     * Sets the token.
-     *
-     * @param string $token The token
-     */
-    public function setToken($token)
-    {
-        $this->token = $token;
-    }
-
-    /**
-     * Gets the token.
-     *
-     * @return string The token
-     */
-    public function getToken()
-    {
-        return $this->token;
-    }
-
-    /**
-     * Sets the parent token.
-     *
-     * @param Profile $parent The parent Profile
-     */
-    public function setParent(Profile $parent)
-    {
-        $this->parent = $parent;
-    }
-
-    /**
-     * Returns the parent profile.
-     *
-     * @return Profile The parent profile
-     */
-    public function getParent()
-    {
-        return $this->parent;
-    }
-
-    /**
-     * Returns the parent token.
-     *
-     * @return null|string The parent token
-     */
-    public function getParentToken()
-    {
-        return $this->parent ? $this->parent->getToken() : null;
-    }
-
-    /**
-     * Returns the IP.
-     *
-     * @return string The IP
-     */
-    public function getIp()
-    {
-        return $this->ip;
-    }
-
-    /**
-     * Sets the IP.
-     *
-     * @param string $ip
-     */
-    public function setIp($ip)
-    {
-        $this->ip = $ip;
-    }
-
-    /**
-     * Returns the request method.
-     *
-     * @return string The request method
-     */
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    public function setMethod($method)
-    {
-        $this->method = $method;
-    }
-
-    /**
-     * Returns the URL.
-     *
-     * @return string The URL
-     */
-    public function getUrl()
-    {
-        return $this->url;
-    }
-
-    public function setUrl($url)
-    {
-        $this->url = $url;
-    }
-
-    /**
-     * Returns the time.
-     *
-     * @return string The time
-     */
-    public function getTime()
-    {
-        if (null === $this->time) {
-            return 0;
-        }
-
-        return $this->time;
-    }
-
-    public function setTime($time)
-    {
-        $this->time = $time;
-    }
-
-    /**
-     * @param int $statusCode
-     */
-    public function setStatusCode($statusCode)
-    {
-        $this->statusCode = $statusCode;
-    }
-
-    /**
-     * @return int
-     */
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    /**
-     * Finds children profilers.
-     *
-     * @return Profile[] An array of Profile
-     */
-    public function getChildren()
-    {
-        return $this->children;
-    }
-
-    /**
-     * Sets children profiler.
-     *
-     * @param Profile[] $children An array of Profile
-     */
-    public function setChildren(array $children)
-    {
-        $this->children = array();
-        foreach ($children as $child) {
-            $this->addChild($child);
-        }
-    }
-
-    /**
-     * Adds the child token.
-     *
-     * @param Profile $child The child Profile
-     */
-    public function addChild(Profile $child)
-    {
-        $this->children[] = $child;
-        $child->setParent($this);
-    }
-
-    /**
-     * Gets a Collector by name.
-     *
-     * @param string $name A collector name
-     *
-     * @return DataCollectorInterface A DataCollectorInterface instance
-     *
-     * @throws \InvalidArgumentException if the collector does not exist
-     */
-    public function getCollector($name)
-    {
-        if (!isset($this->collectors[$name])) {
-            throw new \InvalidArgumentException(sprintf('Collector "%s" does not exist.', $name));
-        }
-
-        return $this->collectors[$name];
-    }
-
-    /**
-     * Gets the Collectors associated with this profile.
-     *
-     * @return DataCollectorInterface[]
-     */
-    public function getCollectors()
-    {
-        return $this->collectors;
-    }
-
-    /**
-     * Sets the Collectors associated with this profile.
-     *
-     * @param DataCollectorInterface[] $collectors
-     */
-    public function setCollectors(array $collectors)
-    {
-        $this->collectors = array();
-        foreach ($collectors as $collector) {
-            $this->addCollector($collector);
-        }
-    }
-
-    /**
-     * Adds a Collector.
-     *
-     * @param DataCollectorInterface $collector A DataCollectorInterface instance
-     */
-    public function addCollector(DataCollectorInterface $collector)
-    {
-        $this->collectors[$collector->getName()] = $collector;
-    }
-
-    /**
-     * Returns true if a Collector for the given name exists.
-     *
-     * @param string $name A collector name
-     *
-     * @return bool
-     */
-    public function hasCollector($name)
-    {
-        return isset($this->collectors[$name]);
-    }
-
-    public function __sleep()
-    {
-        return array('token', 'parent', 'children', 'collectors', 'ip', 'method', 'url', 'time');
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/Profiler.php b/vendor/symfony/http-kernel/Profiler/Profiler.php
deleted file mode 100644
index 864f624..0000000
--- a/vendor/symfony/http-kernel/Profiler/Profiler.php
+++ /dev/null
@@ -1,296 +0,0 @@
-<?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\Profiler;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
-use Symfony\Component\HttpKernel\DataCollector\LateDataCollectorInterface;
-use Psr\Log\LoggerInterface;
-
-/**
- * Profiler.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Profiler
-{
-    /**
-     * @var ProfilerStorageInterface
-     */
-    private $storage;
-
-    /**
-     * @var DataCollectorInterface[]
-     */
-    private $collectors = array();
-
-    /**
-     * @var LoggerInterface
-     */
-    private $logger;
-
-    /**
-     * @var bool
-     */
-    private $enabled = true;
-
-    /**
-     * Constructor.
-     *
-     * @param ProfilerStorageInterface $storage A ProfilerStorageInterface instance
-     * @param LoggerInterface          $logger  A LoggerInterface instance
-     */
-    public function __construct(ProfilerStorageInterface $storage, LoggerInterface $logger = null)
-    {
-        $this->storage = $storage;
-        $this->logger = $logger;
-    }
-
-    /**
-     * Disables the profiler.
-     */
-    public function disable()
-    {
-        $this->enabled = false;
-    }
-
-    /**
-     * Enables the profiler.
-     */
-    public function enable()
-    {
-        $this->enabled = true;
-    }
-
-    /**
-     * Loads the Profile for the given Response.
-     *
-     * @param Response $response A Response instance
-     *
-     * @return Profile A Profile instance
-     */
-    public function loadProfileFromResponse(Response $response)
-    {
-        if (!$token = $response->headers->get('X-Debug-Token')) {
-            return false;
-        }
-
-        return $this->loadProfile($token);
-    }
-
-    /**
-     * Loads the Profile for the given token.
-     *
-     * @param string $token A token
-     *
-     * @return Profile A Profile instance
-     */
-    public function loadProfile($token)
-    {
-        return $this->storage->read($token);
-    }
-
-    /**
-     * Saves a Profile.
-     *
-     * @param Profile $profile A Profile instance
-     *
-     * @return bool
-     */
-    public function saveProfile(Profile $profile)
-    {
-        // late collect
-        foreach ($profile->getCollectors() as $collector) {
-            if ($collector instanceof LateDataCollectorInterface) {
-                $collector->lateCollect();
-            }
-        }
-
-        if (!($ret = $this->storage->write($profile)) && null !== $this->logger) {
-            $this->logger->warning('Unable to store the profiler information.', array('configured_storage' => get_class($this->storage)));
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Purges all data from the storage.
-     */
-    public function purge()
-    {
-        $this->storage->purge();
-    }
-
-    /**
-     * Exports the current profiler data.
-     *
-     * @param Profile $profile A Profile instance
-     *
-     * @return string The exported data
-     */
-    public function export(Profile $profile)
-    {
-        return base64_encode(serialize($profile));
-    }
-
-    /**
-     * Imports data into the profiler storage.
-     *
-     * @param string $data A data string as exported by the export() method
-     *
-     * @return Profile A Profile instance
-     */
-    public function import($data)
-    {
-        $profile = unserialize(base64_decode($data));
-
-        if ($this->storage->read($profile->getToken())) {
-            return false;
-        }
-
-        $this->saveProfile($profile);
-
-        return $profile;
-    }
-
-    /**
-     * Finds profiler tokens for the given criteria.
-     *
-     * @param string $ip     The IP
-     * @param string $url    The URL
-     * @param string $limit  The maximum number of tokens to return
-     * @param string $method The request method
-     * @param string $start  The start date to search from
-     * @param string $end    The end date to search to
-     *
-     * @return array An array of tokens
-     *
-     * @see http://php.net/manual/en/datetime.formats.php for the supported date/time formats
-     */
-    public function find($ip, $url, $limit, $method, $start, $end)
-    {
-        return $this->storage->find($ip, $url, $limit, $method, $this->getTimestamp($start), $this->getTimestamp($end));
-    }
-
-    /**
-     * Collects data for the given Response.
-     *
-     * @param Request    $request   A Request instance
-     * @param Response   $response  A Response instance
-     * @param \Exception $exception An exception instance if the request threw one
-     *
-     * @return Profile|null A Profile instance or null if the profiler is disabled
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        if (false === $this->enabled) {
-            return;
-        }
-
-        $profile = new Profile(substr(hash('sha256', uniqid(mt_rand(), true)), 0, 6));
-        $profile->setTime(time());
-        $profile->setUrl($request->getUri());
-        $profile->setIp($request->getClientIp());
-        $profile->setMethod($request->getMethod());
-        $profile->setStatusCode($response->getStatusCode());
-
-        $response->headers->set('X-Debug-Token', $profile->getToken());
-
-        foreach ($this->collectors as $collector) {
-            $collector->collect($request, $response, $exception);
-
-            // we need to clone for sub-requests
-            $profile->addCollector(clone $collector);
-        }
-
-        return $profile;
-    }
-
-    /**
-     * Gets the Collectors associated with this profiler.
-     *
-     * @return array An array of collectors
-     */
-    public function all()
-    {
-        return $this->collectors;
-    }
-
-    /**
-     * Sets the Collectors associated with this profiler.
-     *
-     * @param DataCollectorInterface[] $collectors An array of collectors
-     */
-    public function set(array $collectors = array())
-    {
-        $this->collectors = array();
-        foreach ($collectors as $collector) {
-            $this->add($collector);
-        }
-    }
-
-    /**
-     * Adds a Collector.
-     *
-     * @param DataCollectorInterface $collector A DataCollectorInterface instance
-     */
-    public function add(DataCollectorInterface $collector)
-    {
-        $this->collectors[$collector->getName()] = $collector;
-    }
-
-    /**
-     * Returns true if a Collector for the given name exists.
-     *
-     * @param string $name A collector name
-     *
-     * @return bool
-     */
-    public function has($name)
-    {
-        return isset($this->collectors[$name]);
-    }
-
-    /**
-     * Gets a Collector by name.
-     *
-     * @param string $name A collector name
-     *
-     * @return DataCollectorInterface A DataCollectorInterface instance
-     *
-     * @throws \InvalidArgumentException if the collector does not exist
-     */
-    public function get($name)
-    {
-        if (!isset($this->collectors[$name])) {
-            throw new \InvalidArgumentException(sprintf('Collector "%s" does not exist.', $name));
-        }
-
-        return $this->collectors[$name];
-    }
-
-    private function getTimestamp($value)
-    {
-        if (null === $value || '' == $value) {
-            return;
-        }
-
-        try {
-            $value = new \DateTime(is_numeric($value) ? '@'.$value : $value);
-        } catch (\Exception $e) {
-            return;
-        }
-
-        return $value->getTimestamp();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php b/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
deleted file mode 100644
index ea72af2..0000000
--- a/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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\Profiler;
-
-/**
- * ProfilerStorageInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ProfilerStorageInterface
-{
-    /**
-     * Finds profiler tokens for the given criteria.
-     *
-     * @param string   $ip     The IP
-     * @param string   $url    The URL
-     * @param string   $limit  The maximum number of tokens to return
-     * @param string   $method The request method
-     * @param int|null $start  The start date to search from
-     * @param int|null $end    The end date to search to
-     *
-     * @return array An array of tokens
-     */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null);
-
-    /**
-     * Reads data associated with the given token.
-     *
-     * The method returns false if the token does not exist in the storage.
-     *
-     * @param string $token A token
-     *
-     * @return Profile The profile associated with token
-     */
-    public function read($token);
-
-    /**
-     * Saves a Profile.
-     *
-     * @param Profile $profile A Profile instance
-     *
-     * @return bool Write operation successful
-     */
-    public function write(Profile $profile);
-
-    /**
-     * Purges all data from the database.
-     */
-    public function purge();
-}
diff --git a/vendor/symfony/http-kernel/Profiler/RedisProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/RedisProfilerStorage.php
deleted file mode 100644
index b0e14ea..0000000
--- a/vendor/symfony/http-kernel/Profiler/RedisProfilerStorage.php
+++ /dev/null
@@ -1,394 +0,0 @@
-<?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\Profiler;
-
-/**
- * RedisProfilerStorage stores profiling information in Redis.
- *
- * @author Andrej Hudec <pulzarraider@gmail.com>
- * @author Stephane PY <py.stephane1@gmail.com>
- */
-class RedisProfilerStorage implements ProfilerStorageInterface
-{
-    const TOKEN_PREFIX = 'sf_profiler_';
-
-    const REDIS_OPT_SERIALIZER = 1;
-    const REDIS_OPT_PREFIX = 2;
-    const REDIS_SERIALIZER_NONE = 0;
-    const REDIS_SERIALIZER_PHP = 1;
-
-    protected $dsn;
-    protected $lifetime;
-
-    /**
-     * @var \Redis
-     */
-    private $redis;
-
-    /**
-     * Constructor.
-     *
-     * @param string $dsn      A data source name
-     * @param string $username Not used
-     * @param string $password Not used
-     * @param int    $lifetime The lifetime to use for the purge
-     */
-    public function __construct($dsn, $username = '', $password = '', $lifetime = 86400)
-    {
-        $this->dsn = $dsn;
-        $this->lifetime = (int) $lifetime;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null)
-    {
-        $indexName = $this->getIndexName();
-
-        if (!$indexContent = $this->getValue($indexName, self::REDIS_SERIALIZER_NONE)) {
-            return array();
-        }
-
-        $profileList = array_reverse(explode("\n", $indexContent));
-        $result = array();
-
-        foreach ($profileList as $item) {
-            if ($limit === 0) {
-                break;
-            }
-
-            if ($item == '') {
-                continue;
-            }
-
-            $values = explode("\t", $item, 7);
-            list($itemToken, $itemIp, $itemMethod, $itemUrl, $itemTime, $itemParent) = $values;
-            $statusCode = isset($values[6]) ? $values[6] : null;
-
-            $itemTime = (int) $itemTime;
-
-            if ($ip && false === strpos($itemIp, $ip) || $url && false === strpos($itemUrl, $url) || $method && false === strpos($itemMethod, $method)) {
-                continue;
-            }
-
-            if (!empty($start) && $itemTime < $start) {
-                continue;
-            }
-
-            if (!empty($end) && $itemTime > $end) {
-                continue;
-            }
-
-            $result[] = array(
-                'token' => $itemToken,
-                'ip' => $itemIp,
-                'method' => $itemMethod,
-                'url' => $itemUrl,
-                'time' => $itemTime,
-                'parent' => $itemParent,
-                'status_code' => $statusCode,
-            );
-            --$limit;
-        }
-
-        return $result;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function purge()
-    {
-        // delete only items from index
-        $indexName = $this->getIndexName();
-
-        $indexContent = $this->getValue($indexName, self::REDIS_SERIALIZER_NONE);
-
-        if (!$indexContent) {
-            return false;
-        }
-
-        $profileList = explode("\n", $indexContent);
-
-        $result = array();
-
-        foreach ($profileList as $item) {
-            if ($item == '') {
-                continue;
-            }
-
-            if (false !== $pos = strpos($item, "\t")) {
-                $result[] = $this->getItemName(substr($item, 0, $pos));
-            }
-        }
-
-        $result[] = $indexName;
-
-        return $this->delete($result);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($token)
-    {
-        if (empty($token)) {
-            return false;
-        }
-
-        $profile = $this->getValue($this->getItemName($token), self::REDIS_SERIALIZER_PHP);
-
-        if (false !== $profile) {
-            $profile = $this->createProfileFromData($token, $profile);
-        }
-
-        return $profile;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write(Profile $profile)
-    {
-        $data = array(
-            'token' => $profile->getToken(),
-            'parent' => $profile->getParentToken(),
-            'children' => array_map(function ($p) { return $p->getToken(); }, $profile->getChildren()),
-            'data' => $profile->getCollectors(),
-            'ip' => $profile->getIp(),
-            'method' => $profile->getMethod(),
-            'url' => $profile->getUrl(),
-            'time' => $profile->getTime(),
-        );
-
-        $profileIndexed = false !== $this->getValue($this->getItemName($profile->getToken()));
-
-        if ($this->setValue($this->getItemName($profile->getToken()), $data, $this->lifetime, self::REDIS_SERIALIZER_PHP)) {
-            if (!$profileIndexed) {
-                // Add to index
-                $indexName = $this->getIndexName();
-
-                $indexRow = implode("\t", array(
-                    $profile->getToken(),
-                    $profile->getIp(),
-                    $profile->getMethod(),
-                    $profile->getUrl(),
-                    $profile->getTime(),
-                    $profile->getParentToken(),
-                    $profile->getStatusCode(),
-                ))."\n";
-
-                return $this->appendValue($indexName, $indexRow, $this->lifetime);
-            }
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Internal convenience method that returns the instance of Redis.
-     *
-     * @return \Redis
-     *
-     * @throws \RuntimeException
-     */
-    protected function getRedis()
-    {
-        if (null === $this->redis) {
-            $data = parse_url($this->dsn);
-
-            if (false === $data || !isset($data['scheme']) || $data['scheme'] !== 'redis' || !isset($data['host']) || !isset($data['port'])) {
-                throw new \RuntimeException(sprintf('Please check your configuration. You are trying to use Redis with an invalid dsn "%s". The minimal expected format is "redis://[host]:port".', $this->dsn));
-            }
-
-            if (!extension_loaded('redis')) {
-                throw new \RuntimeException('RedisProfilerStorage requires that the redis extension is loaded.');
-            }
-
-            $redis = new \Redis();
-            $redis->connect($data['host'], $data['port']);
-
-            if (isset($data['path'])) {
-                $redis->select(substr($data['path'], 1));
-            }
-
-            if (isset($data['pass'])) {
-                $redis->auth($data['pass']);
-            }
-
-            $redis->setOption(self::REDIS_OPT_PREFIX, self::TOKEN_PREFIX);
-
-            $this->redis = $redis;
-        }
-
-        return $this->redis;
-    }
-
-    /**
-     * Set instance of the Redis.
-     *
-     * @param \Redis $redis
-     */
-    public function setRedis($redis)
-    {
-        $this->redis = $redis;
-    }
-
-    private function createProfileFromData($token, $data, $parent = null)
-    {
-        $profile = new Profile($token);
-        $profile->setIp($data['ip']);
-        $profile->setMethod($data['method']);
-        $profile->setUrl($data['url']);
-        $profile->setTime($data['time']);
-        $profile->setCollectors($data['data']);
-
-        if (!$parent && $data['parent']) {
-            $parent = $this->read($data['parent']);
-        }
-
-        if ($parent) {
-            $profile->setParent($parent);
-        }
-
-        foreach ($data['children'] as $token) {
-            if (!$token) {
-                continue;
-            }
-
-            if (!$childProfileData = $this->getValue($this->getItemName($token), self::REDIS_SERIALIZER_PHP)) {
-                continue;
-            }
-
-            $profile->addChild($this->createProfileFromData($token, $childProfileData, $profile));
-        }
-
-        return $profile;
-    }
-
-    /**
-     * Gets the item name.
-     *
-     * @param string $token
-     *
-     * @return string
-     */
-    private function getItemName($token)
-    {
-        $name = $token;
-
-        if ($this->isItemNameValid($name)) {
-            return $name;
-        }
-
-        return false;
-    }
-
-    /**
-     * Gets the name of the index.
-     *
-     * @return string
-     */
-    private function getIndexName()
-    {
-        $name = 'index';
-
-        if ($this->isItemNameValid($name)) {
-            return $name;
-        }
-
-        return false;
-    }
-
-    private function isItemNameValid($name)
-    {
-        $length = strlen($name);
-
-        if ($length > 2147483648) {
-            throw new \RuntimeException(sprintf('The Redis item key "%s" is too long (%s bytes). Allowed maximum size is 2^31 bytes.', $name, $length));
-        }
-
-        return true;
-    }
-
-    /**
-     * Retrieves an item from the Redis server.
-     *
-     * @param string $key
-     * @param int    $serializer
-     *
-     * @return mixed
-     */
-    private function getValue($key, $serializer = self::REDIS_SERIALIZER_NONE)
-    {
-        $redis = $this->getRedis();
-        $redis->setOption(self::REDIS_OPT_SERIALIZER, $serializer);
-
-        return $redis->get($key);
-    }
-
-    /**
-     * Stores an item on the Redis server under the specified key.
-     *
-     * @param string $key
-     * @param mixed  $value
-     * @param int    $expiration
-     * @param int    $serializer
-     *
-     * @return bool
-     */
-    private function setValue($key, $value, $expiration = 0, $serializer = self::REDIS_SERIALIZER_NONE)
-    {
-        $redis = $this->getRedis();
-        $redis->setOption(self::REDIS_OPT_SERIALIZER, $serializer);
-
-        return $redis->setex($key, $expiration, $value);
-    }
-
-    /**
-     * Appends data to an existing item on the Redis server.
-     *
-     * @param string $key
-     * @param string $value
-     * @param int    $expiration
-     *
-     * @return bool
-     */
-    private function appendValue($key, $value, $expiration = 0)
-    {
-        $redis = $this->getRedis();
-        $redis->setOption(self::REDIS_OPT_SERIALIZER, self::REDIS_SERIALIZER_NONE);
-
-        if ($redis->exists($key)) {
-            $redis->append($key, $value);
-
-            return $redis->setTimeout($key, $expiration);
-        }
-
-        return $redis->setex($key, $expiration, $value);
-    }
-
-    /**
-     * Removes the specified keys.
-     *
-     * @param array $keys
-     *
-     * @return bool
-     */
-    private function delete(array $keys)
-    {
-        return (bool) $this->getRedis()->delete($keys);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Profiler/SqliteProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/SqliteProfilerStorage.php
deleted file mode 100644
index 4a996fd..0000000
--- a/vendor/symfony/http-kernel/Profiler/SqliteProfilerStorage.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?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\Profiler;
-
-/**
- * SqliteProfilerStorage stores profiling information in a SQLite database.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class SqliteProfilerStorage extends PdoProfilerStorage
-{
-    /**
-     * @throws \RuntimeException When neither of SQLite3 or PDO_SQLite extension is enabled
-     */
-    protected function initDb()
-    {
-        if (null === $this->db || $this->db instanceof \SQLite3) {
-            if (0 !== strpos($this->dsn, 'sqlite')) {
-                throw new \RuntimeException(sprintf('Please check your configuration. You are trying to use Sqlite with an invalid dsn "%s". The expected format is "sqlite:/path/to/the/db/file".', $this->dsn));
-            }
-            if (class_exists('SQLite3')) {
-                $db = new \SQLite3(substr($this->dsn, 7, strlen($this->dsn)), \SQLITE3_OPEN_READWRITE | \SQLITE3_OPEN_CREATE);
-                if (method_exists($db, 'busyTimeout')) {
-                    // busyTimeout only exists for PHP >= 5.3.3
-                    $db->busyTimeout(1000);
-                }
-            } elseif (class_exists('PDO') && in_array('sqlite', \PDO::getAvailableDrivers(), true)) {
-                $db = new \PDO($this->dsn);
-            } else {
-                throw new \RuntimeException('You need to enable either the SQLite3 or PDO_SQLite extension for the profiler to run properly.');
-            }
-
-            $db->exec('PRAGMA temp_store=MEMORY; PRAGMA journal_mode=MEMORY;');
-            $db->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token STRING, data STRING, ip STRING, method STRING, url STRING, time INTEGER, parent STRING, created_at INTEGER, status_code INTEGER)');
-            $db->exec('CREATE INDEX IF NOT EXISTS data_created_at ON sf_profiler_data (created_at)');
-            $db->exec('CREATE INDEX IF NOT EXISTS data_ip ON sf_profiler_data (ip)');
-            $db->exec('CREATE INDEX IF NOT EXISTS data_method ON sf_profiler_data (method)');
-            $db->exec('CREATE INDEX IF NOT EXISTS data_url ON sf_profiler_data (url)');
-            $db->exec('CREATE INDEX IF NOT EXISTS data_parent ON sf_profiler_data (parent)');
-            $db->exec('CREATE UNIQUE INDEX IF NOT EXISTS data_token ON sf_profiler_data (token)');
-
-            $this->db = $db;
-        }
-
-        return $this->db;
-    }
-
-    protected function exec($db, $query, array $args = array())
-    {
-        if ($db instanceof \SQLite3) {
-            $stmt = $this->prepareStatement($db, $query);
-            foreach ($args as $arg => $val) {
-                $stmt->bindValue($arg, $val, is_int($val) ? \SQLITE3_INTEGER : \SQLITE3_TEXT);
-            }
-
-            $res = $stmt->execute();
-            if (false === $res) {
-                throw new \RuntimeException(sprintf('Error executing SQLite query "%s"', $query));
-            }
-            $res->finalize();
-        } else {
-            parent::exec($db, $query, $args);
-        }
-    }
-
-    protected function fetch($db, $query, array $args = array())
-    {
-        $return = array();
-
-        if ($db instanceof \SQLite3) {
-            $stmt = $this->prepareStatement($db, $query, true);
-            foreach ($args as $arg => $val) {
-                $stmt->bindValue($arg, $val, is_int($val) ? \SQLITE3_INTEGER : \SQLITE3_TEXT);
-            }
-            $res = $stmt->execute();
-            while ($row = $res->fetchArray(\SQLITE3_ASSOC)) {
-                $return[] = $row;
-            }
-            $res->finalize();
-            $stmt->close();
-        } else {
-            $return = parent::fetch($db, $query, $args);
-        }
-
-        return $return;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function buildCriteria($ip, $url, $start, $end, $limit, $method)
-    {
-        $criteria = array();
-        $args = array();
-
-        if ($ip = preg_replace('/[^\d\.]/', '', $ip)) {
-            $criteria[] = 'ip LIKE :ip';
-            $args[':ip'] = '%'.$ip.'%';
-        }
-
-        if ($url) {
-            $criteria[] = 'url LIKE :url ESCAPE "\"';
-            $args[':url'] = '%'.addcslashes($url, '%_\\').'%';
-        }
-
-        if ($method) {
-            $criteria[] = 'method = :method';
-            $args[':method'] = $method;
-        }
-
-        if (!empty($start)) {
-            $criteria[] = 'time >= :start';
-            $args[':start'] = $start;
-        }
-
-        if (!empty($end)) {
-            $criteria[] = 'time <= :end';
-            $args[':end'] = $end;
-        }
-
-        return array($criteria, $args);
-    }
-
-    protected function close($db)
-    {
-        if ($db instanceof \SQLite3) {
-            $db->close();
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/README.md b/vendor/symfony/http-kernel/README.md
deleted file mode 100644
index 9ec8c04..0000000
--- a/vendor/symfony/http-kernel/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-HttpKernel Component
-====================
-
-HttpKernel provides the building blocks to create flexible and fast HTTP-based
-frameworks.
-
-``HttpKernelInterface`` is the core interface of the Symfony full-stack
-framework:
-
-```php
-interface HttpKernelInterface
-{
-    /**
-     * Handles a Request to convert it to a Response.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return Response A Response instance
-     */
-    function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true);
-}
-```
-
-It takes a ``Request`` as an input and should return a ``Response`` as an
-output. Using this interface makes your code compatible with all frameworks
-using the Symfony components. And this will give you many cool features for
-free.
-
-Creating a framework based on the Symfony components is really easy. Here is
-a very simple, but fully-featured framework based on the Symfony components:
-
-```php
-$routes = new RouteCollection();
-$routes->add('hello', new Route('/hello', array('_controller' =>
-    function (Request $request) {
-        return new Response(sprintf("Hello %s", $request->get('name')));
-    }
-)));
-
-$request = Request::createFromGlobals();
-
-$context = new RequestContext();
-$context->fromRequest($request);
-
-$matcher = new UrlMatcher($routes, $context);
-
-$dispatcher = new EventDispatcher();
-$dispatcher->addSubscriber(new RouterListener($matcher));
-
-$resolver = new ControllerResolver();
-
-$kernel = new HttpKernel($dispatcher, $resolver);
-
-$kernel->handle($request)->send();
-```
-
-This is all you need to create a flexible framework with the Symfony
-components.
-
-Want to add an HTTP reverse proxy and benefit from HTTP caching and Edge Side
-Includes?
-
-```php
-$kernel = new HttpKernel($dispatcher, $resolver);
-
-$kernel = new HttpCache($kernel, new Store(__DIR__.'/cache'));
-```
-
-Want to functional test this small framework?
-
-```php
-$client = new Client($kernel);
-$crawler = $client->request('GET', '/hello/Fabien');
-
-$this->assertEquals('Fabien', $crawler->filter('p > span')->text());
-```
-
-Want nice error pages instead of ugly PHP exceptions?
-
-```php
-$dispatcher->addSubscriber(new ExceptionListener(function (Request $request) {
-    $msg = 'Something went wrong! ('.$request->get('exception')->getMessage().')';
-
-    return new Response($msg, 500);
-}));
-```
-
-And that's why the simple looking ``HttpKernelInterface`` is so powerful. It
-gives you access to a lot of cool features, ready to be used out of the box,
-with no efforts.
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/HttpKernel/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/http-kernel/TerminableInterface.php b/vendor/symfony/http-kernel/TerminableInterface.php
deleted file mode 100644
index d55a15b..0000000
--- a/vendor/symfony/http-kernel/TerminableInterface.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Terminable extends the Kernel request/response cycle with dispatching a post
- * response event after sending the response and before shutting down the kernel.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @author Pierre Minnieur <pierre.minnieur@sensiolabs.de>
- */
-interface TerminableInterface
-{
-    /**
-     * Terminates a request/response cycle.
-     *
-     * Should be called after sending the response and before shutting down the kernel.
-     *
-     * @param Request  $request  A Request instance
-     * @param Response $response A Response instance
-     */
-    public function terminate(Request $request, Response $response);
-}
diff --git a/vendor/symfony/http-kernel/UriSigner.php b/vendor/symfony/http-kernel/UriSigner.php
deleted file mode 100644
index 6ddce87..0000000
--- a/vendor/symfony/http-kernel/UriSigner.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?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;
-
-/**
- * Signs URIs.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class UriSigner
-{
-    private $secret;
-
-    /**
-     * Constructor.
-     *
-     * @param string $secret A secret
-     */
-    public function __construct($secret)
-    {
-        $this->secret = $secret;
-    }
-
-    /**
-     * Signs a URI.
-     *
-     * The given URI is signed by adding a _hash query string parameter
-     * which value depends on the URI and the secret.
-     *
-     * @param string $uri A URI to sign
-     *
-     * @return string The signed URI
-     */
-    public function sign($uri)
-    {
-        $url = parse_url($uri);
-        if (isset($url['query'])) {
-            parse_str($url['query'], $params);
-        } else {
-            $params = array();
-        }
-
-        $uri = $this->buildUrl($url, $params);
-
-        return $uri.(false === (strpos($uri, '?')) ? '?' : '&').'_hash='.$this->computeHash($uri);
-    }
-
-    /**
-     * Checks that a URI contains the correct hash.
-     *
-     * The _hash query string parameter must be the last one
-     * (as it is generated that way by the sign() method, it should
-     * never be a problem).
-     *
-     * @param string $uri A signed URI
-     *
-     * @return bool True if the URI is signed correctly, false otherwise
-     */
-    public function check($uri)
-    {
-        $url = parse_url($uri);
-        if (isset($url['query'])) {
-            parse_str($url['query'], $params);
-        } else {
-            $params = array();
-        }
-
-        if (empty($params['_hash'])) {
-            return false;
-        }
-
-        $hash = urlencode($params['_hash']);
-        unset($params['_hash']);
-
-        return $this->computeHash($this->buildUrl($url, $params)) === $hash;
-    }
-
-    private function computeHash($uri)
-    {
-        return urlencode(base64_encode(hash_hmac('sha256', $uri, $this->secret, true)));
-    }
-
-    private function buildUrl(array $url, array $params = array())
-    {
-        ksort($params);
-        $url['query'] = http_build_query($params, '', '&');
-
-        $scheme = isset($url['scheme']) ? $url['scheme'].'://' : '';
-        $host = isset($url['host']) ? $url['host'] : '';
-        $port = isset($url['port']) ? ':'.$url['port'] : '';
-        $user = isset($url['user']) ? $url['user'] : '';
-        $pass = isset($url['pass']) ? ':'.$url['pass']  : '';
-        $pass = ($user || $pass) ? "$pass@" : '';
-        $path = isset($url['path']) ? $url['path'] : '';
-        $query = isset($url['query']) && $url['query'] ? '?'.$url['query'] : '';
-        $fragment = isset($url['fragment']) ? '#'.$url['fragment'] : '';
-
-        return $scheme.$user.$pass.$host.$port.$path.$query.$fragment;
-    }
-}
diff --git a/vendor/symfony/http-kernel/composer.json b/vendor/symfony/http-kernel/composer.json
deleted file mode 100644
index 623d732..0000000
--- a/vendor/symfony/http-kernel/composer.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-    "name": "symfony/http-kernel",
-    "type": "library",
-    "description": "Symfony HttpKernel Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9",
-        "symfony/event-dispatcher": "~2.6,>=2.6.7",
-        "symfony/http-foundation": "~2.5,>=2.5.4",
-        "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"
-    },
-    "conflict": {
-        "symfony/config": "<2.7"
-    },
-    "suggest": {
-        "symfony/browser-kit": "",
-        "symfony/class-loader": "",
-        "symfony/config": "",
-        "symfony/console": "",
-        "symfony/dependency-injection": "",
-        "symfony/finder": "",
-        "symfony/var-dumper": ""
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\HttpKernel\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/phpunit.xml.dist b/vendor/symfony/http-kernel/phpunit.xml.dist
deleted file mode 100644
index 1314966..0000000
--- a/vendor/symfony/http-kernel/phpunit.xml.dist
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony HttpKernel Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/process/.gitignore b/vendor/symfony/process/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/process/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/process/CHANGELOG.md b/vendor/symfony/process/CHANGELOG.md
deleted file mode 100644
index 2f3c1be..0000000
--- a/vendor/symfony/process/CHANGELOG.md
+++ /dev/null
@@ -1,40 +0,0 @@
-CHANGELOG
-=========
-
-2.5.0
------
-
- * added support for PTY mode
- * added the convenience method "mustRun"
- * deprecation: Process::setStdin() is deprecated in favor of Process::setInput()
- * deprecation: Process::getStdin() is deprecated in favor of Process::getInput()
- * deprecation: Process::setInput() and ProcessBuilder::setInput() do not accept non-scalar types
-
-2.4.0
------
-
- * added the ability to define an idle timeout
-
-2.3.0
------
-
- * added ProcessUtils::escapeArgument() to fix the bug in escapeshellarg() function on Windows
- * added Process::signal()
- * added Process::getPid()
- * added support for a TTY mode
-
-2.2.0
------
-
- * added ProcessBuilder::setArguments() to reset the arguments on a builder
- * added a way to retrieve the standard and error output incrementally
- * added Process:restart()
-
-2.1.0
------
-
- * added support for non-blocking processes (start(), wait(), isRunning(), stop())
- * enhanced Windows compatibility
- * added Process::getExitCodeText() that returns a string representation for
-   the exit code returned by the process
- * added ProcessBuilder
diff --git a/vendor/symfony/process/Exception/ExceptionInterface.php b/vendor/symfony/process/Exception/ExceptionInterface.php
deleted file mode 100644
index 75c1c9e..0000000
--- a/vendor/symfony/process/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Process\Exception;
-
-/**
- * Marker Interface for the Process Component.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/symfony/process/Exception/InvalidArgumentException.php b/vendor/symfony/process/Exception/InvalidArgumentException.php
deleted file mode 100644
index 926ee21..0000000
--- a/vendor/symfony/process/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Process\Exception;
-
-/**
- * InvalidArgumentException for the Process Component.
- *
- * @author Romain Neutron <imprec@gmail.com>
- */
-class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/process/Exception/LogicException.php b/vendor/symfony/process/Exception/LogicException.php
deleted file mode 100644
index be3d490..0000000
--- a/vendor/symfony/process/Exception/LogicException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Process\Exception;
-
-/**
- * LogicException for the Process Component.
- *
- * @author Romain Neutron <imprec@gmail.com>
- */
-class LogicException extends \LogicException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/process/Exception/ProcessFailedException.php b/vendor/symfony/process/Exception/ProcessFailedException.php
deleted file mode 100644
index 7523a5e..0000000
--- a/vendor/symfony/process/Exception/ProcessFailedException.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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\Process\Exception;
-
-use Symfony\Component\Process\Process;
-
-/**
- * Exception for failed processes.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ProcessFailedException extends RuntimeException
-{
-    private $process;
-
-    public function __construct(Process $process)
-    {
-        if ($process->isSuccessful()) {
-            throw new InvalidArgumentException('Expected a failed process, but the given process was successful.');
-        }
-
-        $error = sprintf('The command "%s" failed.'."\nExit Code: %s(%s)",
-            $process->getCommandLine(),
-            $process->getExitCode(),
-            $process->getExitCodeText()
-        );
-
-        if (!$process->isOutputDisabled()) {
-            $error .= sprintf("\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s",
-                $process->getOutput(),
-                $process->getErrorOutput()
-            );
-        }
-
-        parent::__construct($error);
-
-        $this->process = $process;
-    }
-
-    public function getProcess()
-    {
-        return $this->process;
-    }
-}
diff --git a/vendor/symfony/process/Exception/ProcessTimedOutException.php b/vendor/symfony/process/Exception/ProcessTimedOutException.php
deleted file mode 100644
index d451146..0000000
--- a/vendor/symfony/process/Exception/ProcessTimedOutException.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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\Process\Exception;
-
-use Symfony\Component\Process\Process;
-
-/**
- * Exception that is thrown when a process times out.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ProcessTimedOutException extends RuntimeException
-{
-    const TYPE_GENERAL = 1;
-    const TYPE_IDLE = 2;
-
-    private $process;
-    private $timeoutType;
-
-    public function __construct(Process $process, $timeoutType)
-    {
-        $this->process = $process;
-        $this->timeoutType = $timeoutType;
-
-        parent::__construct(sprintf(
-            'The process "%s" exceeded the timeout of %s seconds.',
-            $process->getCommandLine(),
-            $this->getExceededTimeout()
-        ));
-    }
-
-    public function getProcess()
-    {
-        return $this->process;
-    }
-
-    public function isGeneralTimeout()
-    {
-        return $this->timeoutType === self::TYPE_GENERAL;
-    }
-
-    public function isIdleTimeout()
-    {
-        return $this->timeoutType === self::TYPE_IDLE;
-    }
-
-    public function getExceededTimeout()
-    {
-        switch ($this->timeoutType) {
-            case self::TYPE_GENERAL:
-                return $this->process->getTimeout();
-
-            case self::TYPE_IDLE:
-                return $this->process->getIdleTimeout();
-
-            default:
-                throw new \LogicException(sprintf('Unknown timeout type "%d".', $this->timeoutType));
-        }
-    }
-}
diff --git a/vendor/symfony/process/Exception/RuntimeException.php b/vendor/symfony/process/Exception/RuntimeException.php
deleted file mode 100644
index adead25..0000000
--- a/vendor/symfony/process/Exception/RuntimeException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Process\Exception;
-
-/**
- * RuntimeException for the Process Component.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class RuntimeException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/process/ExecutableFinder.php b/vendor/symfony/process/ExecutableFinder.php
deleted file mode 100644
index fa11cb6..0000000
--- a/vendor/symfony/process/ExecutableFinder.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?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\Process;
-
-/**
- * Generic executable finder.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class ExecutableFinder
-{
-    private $suffixes = array('.exe', '.bat', '.cmd', '.com');
-
-    /**
-     * Replaces default suffixes of executable.
-     *
-     * @param array $suffixes
-     */
-    public function setSuffixes(array $suffixes)
-    {
-        $this->suffixes = $suffixes;
-    }
-
-    /**
-     * Adds new possible suffix to check for executable.
-     *
-     * @param string $suffix
-     */
-    public function addSuffix($suffix)
-    {
-        $this->suffixes[] = $suffix;
-    }
-
-    /**
-     * Finds an executable by name.
-     *
-     * @param string $name      The executable name (without the extension)
-     * @param string $default   The default to return if no executable is found
-     * @param array  $extraDirs Additional dirs to check into
-     *
-     * @return string The executable path or default value
-     */
-    public function find($name, $default = null, array $extraDirs = array())
-    {
-        if (ini_get('open_basedir')) {
-            $searchPath = explode(PATH_SEPARATOR, ini_get('open_basedir'));
-            $dirs = array();
-            foreach ($searchPath as $path) {
-                // Silencing against https://bugs.php.net/69240
-                if (@is_dir($path)) {
-                    $dirs[] = $path;
-                } else {
-                    if (basename($path) == $name && is_executable($path)) {
-                        return $path;
-                    }
-                }
-            }
-        } else {
-            $dirs = array_merge(
-                explode(PATH_SEPARATOR, getenv('PATH') ?: getenv('Path')),
-                $extraDirs
-            );
-        }
-
-        $suffixes = array('');
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            $pathExt = getenv('PATHEXT');
-            $suffixes = $pathExt ? explode(PATH_SEPARATOR, $pathExt) : $this->suffixes;
-        }
-        foreach ($suffixes as $suffix) {
-            foreach ($dirs as $dir) {
-                if (is_file($file = $dir.DIRECTORY_SEPARATOR.$name.$suffix) && ('\\' === DIRECTORY_SEPARATOR || is_executable($file))) {
-                    return $file;
-                }
-            }
-        }
-
-        return $default;
-    }
-}
diff --git a/vendor/symfony/process/LICENSE b/vendor/symfony/process/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/process/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/process/PhpExecutableFinder.php b/vendor/symfony/process/PhpExecutableFinder.php
deleted file mode 100644
index f8f57cc..0000000
--- a/vendor/symfony/process/PhpExecutableFinder.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?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\Process;
-
-/**
- * An executable finder specifically designed for the PHP executable.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class PhpExecutableFinder
-{
-    private $executableFinder;
-
-    public function __construct()
-    {
-        $this->executableFinder = new ExecutableFinder();
-    }
-
-    /**
-     * Finds The PHP executable.
-     *
-     * @param bool $includeArgs Whether or not include command arguments
-     *
-     * @return string|false The PHP executable path or false if it cannot be found
-     */
-    public function find($includeArgs = true)
-    {
-        // HHVM support
-        if (defined('HHVM_VERSION')) {
-            return (getenv('PHP_BINARY') ?: PHP_BINARY).($includeArgs ? ' '.implode(' ', $this->findArguments()) : '');
-        }
-
-        // 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 ($php = getenv('PHP_PATH')) {
-            if (!is_executable($php)) {
-                return false;
-            }
-
-            return $php;
-        }
-
-        if ($php = getenv('PHP_PEAR_PHP_BIN')) {
-            if (is_executable($php)) {
-                return $php;
-            }
-        }
-
-        $dirs = array(PHP_BINDIR);
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            $dirs[] = 'C:\xampp\php\\';
-        }
-
-        return $this->executableFinder->find('php', false, $dirs);
-    }
-
-    /**
-     * Finds the PHP executable arguments.
-     *
-     * @return array The PHP executable arguments
-     */
-    public function findArguments()
-    {
-        $arguments = array();
-
-        // HHVM support
-        if (defined('HHVM_VERSION')) {
-            $arguments[] = '--php';
-        }
-
-        return $arguments;
-    }
-}
diff --git a/vendor/symfony/process/PhpProcess.php b/vendor/symfony/process/PhpProcess.php
deleted file mode 100644
index 1adbd97..0000000
--- a/vendor/symfony/process/PhpProcess.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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\Process;
-
-use Symfony\Component\Process\Exception\RuntimeException;
-
-/**
- * PhpProcess runs a PHP script in an independent process.
- *
- * $p = new PhpProcess('<?php echo "foo"; ?>');
- * $p->run();
- * print $p->getOutput()."\n";
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class PhpProcess extends Process
-{
-    /**
-     * Constructor.
-     *
-     * @param string      $script  The PHP script to run (as a string)
-     * @param string|null $cwd     The working directory or null to use the working dir of the current PHP process
-     * @param array|null  $env     The environment variables or null to use the same environment as the current PHP process
-     * @param int         $timeout The timeout in seconds
-     * @param array       $options An array of options for proc_open
-     */
-    public function __construct($script, $cwd = null, array $env = null, $timeout = 60, array $options = array())
-    {
-        $executableFinder = new PhpExecutableFinder();
-        if (false === $php = $executableFinder->find()) {
-            $php = null;
-        }
-
-        parent::__construct($php, $cwd, $env, $script, $timeout, $options);
-    }
-
-    /**
-     * Sets the path to the PHP binary to use.
-     */
-    public function setPhpBinary($php)
-    {
-        $this->setCommandLine($php);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function start($callback = null)
-    {
-        if (null === $this->getCommandLine()) {
-            throw new RuntimeException('Unable to find the PHP executable.');
-        }
-
-        parent::start($callback);
-    }
-}
diff --git a/vendor/symfony/process/Pipes/AbstractPipes.php b/vendor/symfony/process/Pipes/AbstractPipes.php
deleted file mode 100644
index 1ca8573..0000000
--- a/vendor/symfony/process/Pipes/AbstractPipes.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?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\Process\Pipes;
-
-/**
- * @author Romain Neutron <imprec@gmail.com>
- *
- * @internal
- */
-abstract class AbstractPipes implements PipesInterface
-{
-    /** @var array */
-    public $pipes = array();
-
-    /** @var string */
-    protected $inputBuffer = '';
-    /** @var resource|null */
-    protected $input;
-
-    /** @var bool */
-    private $blocked = true;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        foreach ($this->pipes as $pipe) {
-            fclose($pipe);
-        }
-        $this->pipes = array();
-    }
-
-    /**
-     * Returns true if a system call has been interrupted.
-     *
-     * @return bool
-     */
-    protected function hasSystemCallBeenInterrupted()
-    {
-        $lastError = error_get_last();
-
-        // stream_select returns false when the `select` system call is interrupted by an incoming signal
-        return isset($lastError['message']) && false !== stripos($lastError['message'], 'interrupted system call');
-    }
-
-    /**
-     * Unblocks streams.
-     */
-    protected function unblock()
-    {
-        if (!$this->blocked) {
-            return;
-        }
-
-        foreach ($this->pipes as $pipe) {
-            stream_set_blocking($pipe, 0);
-        }
-        if (null !== $this->input) {
-            stream_set_blocking($this->input, 0);
-        }
-
-        $this->blocked = false;
-    }
-}
diff --git a/vendor/symfony/process/Pipes/PipesInterface.php b/vendor/symfony/process/Pipes/PipesInterface.php
deleted file mode 100644
index 09d3f61..0000000
--- a/vendor/symfony/process/Pipes/PipesInterface.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?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\Process\Pipes;
-
-/**
- * PipesInterface manages descriptors and pipes for the use of proc_open.
- *
- * @author Romain Neutron <imprec@gmail.com>
- *
- * @internal
- */
-interface PipesInterface
-{
-    const CHUNK_SIZE = 16384;
-
-    /**
-     * Returns an array of descriptors for the use of proc_open.
-     *
-     * @return array
-     */
-    public function getDescriptors();
-
-    /**
-     * Returns an array of filenames indexed by their related stream in case these pipes use temporary files.
-     *
-     * @return string[]
-     */
-    public function getFiles();
-
-    /**
-     * Reads data in file handles and pipes.
-     *
-     * @param bool $blocking Whether to use blocking calls or not.
-     * @param bool $close    Whether to close pipes if they've reached EOF.
-     *
-     * @return string[] An array of read data indexed by their fd.
-     */
-    public function readAndWrite($blocking, $close = false);
-
-    /**
-     * Returns if the current state has open file handles or pipes.
-     *
-     * @return bool
-     */
-    public function areOpen();
-
-    /**
-     * Closes file handles and pipes.
-     */
-    public function close();
-}
diff --git a/vendor/symfony/process/Pipes/UnixPipes.php b/vendor/symfony/process/Pipes/UnixPipes.php
deleted file mode 100644
index f8a0d19..0000000
--- a/vendor/symfony/process/Pipes/UnixPipes.php
+++ /dev/null
@@ -1,214 +0,0 @@
-<?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\Process\Pipes;
-
-use Symfony\Component\Process\Process;
-
-/**
- * UnixPipes implementation uses unix pipes as handles.
- *
- * @author Romain Neutron <imprec@gmail.com>
- *
- * @internal
- */
-class UnixPipes extends AbstractPipes
-{
-    /** @var bool */
-    private $ttyMode;
-    /** @var bool */
-    private $ptyMode;
-    /** @var bool */
-    private $disableOutput;
-
-    public function __construct($ttyMode, $ptyMode, $input, $disableOutput)
-    {
-        $this->ttyMode = (bool) $ttyMode;
-        $this->ptyMode = (bool) $ptyMode;
-        $this->disableOutput = (bool) $disableOutput;
-
-        if (is_resource($input)) {
-            $this->input = $input;
-        } else {
-            $this->inputBuffer = (string) $input;
-        }
-    }
-
-    public function __destruct()
-    {
-        $this->close();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDescriptors()
-    {
-        if ($this->disableOutput) {
-            $nullstream = fopen('/dev/null', 'c');
-
-            return array(
-                array('pipe', 'r'),
-                $nullstream,
-                $nullstream,
-            );
-        }
-
-        if ($this->ttyMode) {
-            return array(
-                array('file', '/dev/tty', 'r'),
-                array('file', '/dev/tty', 'w'),
-                array('file', '/dev/tty', 'w'),
-            );
-        }
-
-        if ($this->ptyMode && Process::isPtySupported()) {
-            return array(
-                array('pty'),
-                array('pty'),
-                array('pty'),
-            );
-        }
-
-        return array(
-            array('pipe', 'r'),
-            array('pipe', 'w'), // stdout
-            array('pipe', 'w'), // stderr
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFiles()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function readAndWrite($blocking, $close = false)
-    {
-        // only stdin is left open, job has been done !
-        // we can now close it
-        if (1 === count($this->pipes) && array(0) === array_keys($this->pipes)) {
-            fclose($this->pipes[0]);
-            unset($this->pipes[0]);
-        }
-
-        if (empty($this->pipes)) {
-            return array();
-        }
-
-        $this->unblock();
-
-        $read = array();
-
-        if (null !== $this->input) {
-            // if input is a resource, let's add it to stream_select argument to
-            // fill a buffer
-            $r = array_merge($this->pipes, array('input' => $this->input));
-        } else {
-            $r = $this->pipes;
-        }
-        // discard read on stdin
-        unset($r[0]);
-
-        $w = isset($this->pipes[0]) ? array($this->pipes[0]) : null;
-        $e = null;
-
-        // let's have a look if something changed in streams
-        if (false === $n = @stream_select($r, $w, $e, 0, $blocking ? Process::TIMEOUT_PRECISION * 1E6 : 0)) {
-            // if a system call has been interrupted, forget about it, let's try again
-            // otherwise, an error occurred, let's reset pipes
-            if (!$this->hasSystemCallBeenInterrupted()) {
-                $this->pipes = array();
-            }
-
-            return $read;
-        }
-
-        // nothing has changed
-        if (0 === $n) {
-            return $read;
-        }
-
-        foreach ($r as $pipe) {
-            // prior PHP 5.4 the array passed to stream_select is modified and
-            // lose key association, we have to find back the key
-            $type = (false !== $found = array_search($pipe, $this->pipes)) ? $found : 'input';
-            $data = '';
-            while ('' !== $dataread = (string) fread($pipe, self::CHUNK_SIZE)) {
-                $data .= $dataread;
-            }
-
-            if ('' !== $data) {
-                if ($type === 'input') {
-                    $this->inputBuffer .= $data;
-                } else {
-                    $read[$type] = $data;
-                }
-            }
-
-            if (false === $data || (true === $close && feof($pipe) && '' === $data)) {
-                if ($type === 'input') {
-                    // no more data to read on input resource
-                    // use an empty buffer in the next reads
-                    $this->input = null;
-                } else {
-                    fclose($this->pipes[$type]);
-                    unset($this->pipes[$type]);
-                }
-            }
-        }
-
-        if (null !== $w && 0 < count($w)) {
-            while (strlen($this->inputBuffer)) {
-                $written = fwrite($w[0], $this->inputBuffer, 2 << 18); // write 512k
-                if ($written > 0) {
-                    $this->inputBuffer = (string) substr($this->inputBuffer, $written);
-                } else {
-                    break;
-                }
-            }
-        }
-
-        // no input to read on resource, buffer is empty and stdin still open
-        if ('' === $this->inputBuffer && null === $this->input && isset($this->pipes[0])) {
-            fclose($this->pipes[0]);
-            unset($this->pipes[0]);
-        }
-
-        return $read;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function areOpen()
-    {
-        return (bool) $this->pipes;
-    }
-
-    /**
-     * Creates a new UnixPipes instance.
-     *
-     * @param Process         $process
-     * @param string|resource $input
-     *
-     * @return UnixPipes
-     */
-    public static function create(Process $process, $input)
-    {
-        return new static($process->isTty(), $process->isPty(), $input, $process->isOutputDisabled());
-    }
-}
diff --git a/vendor/symfony/process/Pipes/WindowsPipes.php b/vendor/symfony/process/Pipes/WindowsPipes.php
deleted file mode 100644
index 1472f8c..0000000
--- a/vendor/symfony/process/Pipes/WindowsPipes.php
+++ /dev/null
@@ -1,253 +0,0 @@
-<?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\Process\Pipes;
-
-use Symfony\Component\Process\Process;
-use Symfony\Component\Process\Exception\RuntimeException;
-
-/**
- * WindowsPipes implementation uses temporary files as handles.
- *
- * @see https://bugs.php.net/bug.php?id=51800
- * @see https://bugs.php.net/bug.php?id=65650
- *
- * @author Romain Neutron <imprec@gmail.com>
- *
- * @internal
- */
-class WindowsPipes extends AbstractPipes
-{
-    /** @var array */
-    private $files = array();
-    /** @var array */
-    private $fileHandles = array();
-    /** @var array */
-    private $readBytes = array(
-        Process::STDOUT => 0,
-        Process::STDERR => 0,
-    );
-    /** @var bool */
-    private $disableOutput;
-
-    public function __construct($disableOutput, $input)
-    {
-        $this->disableOutput = (bool) $disableOutput;
-
-        if (!$this->disableOutput) {
-            // Fix for PHP bug #51800: reading from STDOUT pipe hangs forever on Windows if the output is too big.
-            // Workaround for this problem is to use temporary files instead of pipes on Windows platform.
-            //
-            // @see https://bugs.php.net/bug.php?id=51800
-            $this->files = array(
-                Process::STDOUT => tempnam(sys_get_temp_dir(), 'out_sf_proc'),
-                Process::STDERR => tempnam(sys_get_temp_dir(), 'err_sf_proc'),
-            );
-            foreach ($this->files as $offset => $file) {
-                if (false === $file || false === $this->fileHandles[$offset] = fopen($file, 'rb')) {
-                    throw new RuntimeException('A temporary file could not be opened to write the process output to, verify that your TEMP environment variable is writable');
-                }
-            }
-        }
-
-        if (is_resource($input)) {
-            $this->input = $input;
-        } else {
-            $this->inputBuffer = $input;
-        }
-    }
-
-    public function __destruct()
-    {
-        $this->close();
-        $this->removeFiles();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDescriptors()
-    {
-        if ($this->disableOutput) {
-            $nullstream = fopen('NUL', 'c');
-
-            return array(
-                array('pipe', 'r'),
-                $nullstream,
-                $nullstream,
-            );
-        }
-
-        // We're not using pipe on Windows platform as it hangs (https://bugs.php.net/bug.php?id=51800)
-        // We're not using file handles as it can produce corrupted output https://bugs.php.net/bug.php?id=65650
-        // So we redirect output within the commandline and pass the nul device to the process
-        return array(
-            array('pipe', 'r'),
-            array('file', 'NUL', 'w'),
-            array('file', 'NUL', 'w'),
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFiles()
-    {
-        return $this->files;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function readAndWrite($blocking, $close = false)
-    {
-        $this->write($blocking, $close);
-
-        $read = array();
-        $fh = $this->fileHandles;
-        foreach ($fh as $type => $fileHandle) {
-            if (0 !== fseek($fileHandle, $this->readBytes[$type])) {
-                continue;
-            }
-            $data = '';
-            $dataread = null;
-            while (!feof($fileHandle)) {
-                if (false !== $dataread = fread($fileHandle, self::CHUNK_SIZE)) {
-                    $data .= $dataread;
-                }
-            }
-            if (0 < $length = strlen($data)) {
-                $this->readBytes[$type] += $length;
-                $read[$type] = $data;
-            }
-
-            if (false === $dataread || (true === $close && feof($fileHandle) && '' === $data)) {
-                fclose($this->fileHandles[$type]);
-                unset($this->fileHandles[$type]);
-            }
-        }
-
-        return $read;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function areOpen()
-    {
-        return (bool) $this->pipes && (bool) $this->fileHandles;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        parent::close();
-        foreach ($this->fileHandles as $handle) {
-            fclose($handle);
-        }
-        $this->fileHandles = array();
-    }
-
-    /**
-     * Creates a new WindowsPipes instance.
-     *
-     * @param Process $process The process
-     * @param $input
-     *
-     * @return WindowsPipes
-     */
-    public static function create(Process $process, $input)
-    {
-        return new static($process->isOutputDisabled(), $input);
-    }
-
-    /**
-     * Removes temporary files.
-     */
-    private function removeFiles()
-    {
-        foreach ($this->files as $filename) {
-            if (file_exists($filename)) {
-                @unlink($filename);
-            }
-        }
-        $this->files = array();
-    }
-
-    /**
-     * Writes input to stdin.
-     *
-     * @param bool $blocking
-     * @param bool $close
-     */
-    private function write($blocking, $close)
-    {
-        if (empty($this->pipes)) {
-            return;
-        }
-
-        $this->unblock();
-
-        $r = null !== $this->input ? array('input' => $this->input) : null;
-        $w = isset($this->pipes[0]) ? array($this->pipes[0]) : null;
-        $e = null;
-
-        // let's have a look if something changed in streams
-        if (false === $n = @stream_select($r, $w, $e, 0, $blocking ? Process::TIMEOUT_PRECISION * 1E6 : 0)) {
-            // if a system call has been interrupted, forget about it, let's try again
-            // otherwise, an error occurred, let's reset pipes
-            if (!$this->hasSystemCallBeenInterrupted()) {
-                $this->pipes = array();
-            }
-
-            return;
-        }
-
-        // nothing has changed
-        if (0 === $n) {
-            return;
-        }
-
-        if (null !== $w && 0 < count($r)) {
-            $data = '';
-            while ($dataread = fread($r['input'], self::CHUNK_SIZE)) {
-                $data .= $dataread;
-            }
-
-            $this->inputBuffer .= $data;
-
-            if (false === $data || (true === $close && feof($r['input']) && '' === $data)) {
-                // no more data to read on input resource
-                // use an empty buffer in the next reads
-                $this->input = null;
-            }
-        }
-
-        if (null !== $w && 0 < count($w)) {
-            while (strlen($this->inputBuffer)) {
-                $written = fwrite($w[0], $this->inputBuffer, 2 << 18);
-                if ($written > 0) {
-                    $this->inputBuffer = (string) substr($this->inputBuffer, $written);
-                } else {
-                    break;
-                }
-            }
-        }
-
-        // no input to read on resource, buffer is empty and stdin still open
-        if ('' === $this->inputBuffer && null === $this->input && isset($this->pipes[0])) {
-            fclose($this->pipes[0]);
-            unset($this->pipes[0]);
-        }
-    }
-}
diff --git a/vendor/symfony/process/Process.php b/vendor/symfony/process/Process.php
deleted file mode 100644
index 699151f..0000000
--- a/vendor/symfony/process/Process.php
+++ /dev/null
@@ -1,1504 +0,0 @@
-<?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\Process;
-
-use Symfony\Component\Process\Exception\InvalidArgumentException;
-use Symfony\Component\Process\Exception\LogicException;
-use Symfony\Component\Process\Exception\ProcessFailedException;
-use Symfony\Component\Process\Exception\ProcessTimedOutException;
-use Symfony\Component\Process\Exception\RuntimeException;
-use Symfony\Component\Process\Pipes\PipesInterface;
-use Symfony\Component\Process\Pipes\UnixPipes;
-use Symfony\Component\Process\Pipes\WindowsPipes;
-
-/**
- * Process is a thin wrapper around proc_* functions to easily
- * start independent PHP processes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Romain Neutron <imprec@gmail.com>
- */
-class Process
-{
-    const ERR = 'err';
-    const OUT = 'out';
-
-    const STATUS_READY = 'ready';
-    const STATUS_STARTED = 'started';
-    const STATUS_TERMINATED = 'terminated';
-
-    const STDIN = 0;
-    const STDOUT = 1;
-    const STDERR = 2;
-
-    // Timeout Precision in seconds.
-    const TIMEOUT_PRECISION = 0.2;
-
-    private $callback;
-    private $commandline;
-    private $cwd;
-    private $env;
-    private $input;
-    private $starttime;
-    private $lastOutputTime;
-    private $timeout;
-    private $idleTimeout;
-    private $options;
-    private $exitcode;
-    private $fallbackExitcode;
-    private $processInformation;
-    private $outputDisabled = false;
-    private $stdout;
-    private $stderr;
-    private $enhanceWindowsCompatibility = true;
-    private $enhanceSigchildCompatibility;
-    private $process;
-    private $status = self::STATUS_READY;
-    private $incrementalOutputOffset = 0;
-    private $incrementalErrorOutputOffset = 0;
-    private $tty;
-    private $pty;
-
-    private $useFileHandles = false;
-    /** @var PipesInterface */
-    private $processPipes;
-
-    private $latestSignal;
-
-    private static $sigchild;
-
-    /**
-     * Exit codes translation table.
-     *
-     * User-defined errors must use exit codes in the 64-113 range.
-     *
-     * @var array
-     */
-    public static $exitCodes = array(
-        0 => 'OK',
-        1 => 'General error',
-        2 => 'Misuse of shell builtins',
-
-        126 => 'Invoked command cannot execute',
-        127 => 'Command not found',
-        128 => 'Invalid exit argument',
-
-        // signals
-        129 => 'Hangup',
-        130 => 'Interrupt',
-        131 => 'Quit and dump core',
-        132 => 'Illegal instruction',
-        133 => 'Trace/breakpoint trap',
-        134 => 'Process aborted',
-        135 => 'Bus error: "access to undefined portion of memory object"',
-        136 => 'Floating point exception: "erroneous arithmetic operation"',
-        137 => 'Kill (terminate immediately)',
-        138 => 'User-defined 1',
-        139 => 'Segmentation violation',
-        140 => 'User-defined 2',
-        141 => 'Write to pipe with no one reading',
-        142 => 'Signal raised by alarm',
-        143 => 'Termination (request to terminate)',
-        // 144 - not defined
-        145 => 'Child process terminated, stopped (or continued*)',
-        146 => 'Continue if stopped',
-        147 => 'Stop executing temporarily',
-        148 => 'Terminal stop signal',
-        149 => 'Background process attempting to read from tty ("in")',
-        150 => 'Background process attempting to write to tty ("out")',
-        151 => 'Urgent data available on socket',
-        152 => 'CPU time limit exceeded',
-        153 => 'File size limit exceeded',
-        154 => 'Signal raised by timer counting virtual time: "virtual timer expired"',
-        155 => 'Profiling timer expired',
-        // 156 - not defined
-        157 => 'Pollable event',
-        // 158 - not defined
-        159 => 'Bad syscall',
-    );
-
-    /**
-     * Constructor.
-     *
-     * @param string         $commandline The command line to run
-     * @param string|null    $cwd         The working directory or null to use the working dir of the current PHP process
-     * @param array|null     $env         The environment variables or null to use the same environment as the current PHP process
-     * @param string|null    $input       The input
-     * @param int|float|null $timeout     The timeout in seconds or null to disable
-     * @param array          $options     An array of options for proc_open
-     *
-     * @throws RuntimeException When proc_open is not installed
-     */
-    public function __construct($commandline, $cwd = null, array $env = null, $input = null, $timeout = 60, array $options = array())
-    {
-        if (!function_exists('proc_open')) {
-            throw new RuntimeException('The Process class relies on proc_open, which is not available on your PHP installation.');
-        }
-
-        $this->commandline = $commandline;
-        $this->cwd = $cwd;
-
-        // on Windows, if the cwd changed via chdir(), proc_open defaults to the dir where PHP was started
-        // on Gnu/Linux, PHP builds with --enable-maintainer-zts are also affected
-        // @see : https://bugs.php.net/bug.php?id=51800
-        // @see : https://bugs.php.net/bug.php?id=50524
-        if (null === $this->cwd && (defined('ZEND_THREAD_SAFE') || '\\' === DIRECTORY_SEPARATOR)) {
-            $this->cwd = getcwd();
-        }
-        if (null !== $env) {
-            $this->setEnv($env);
-        }
-
-        $this->input = $input;
-        $this->setTimeout($timeout);
-        $this->useFileHandles = '\\' === DIRECTORY_SEPARATOR;
-        $this->pty = false;
-        $this->enhanceWindowsCompatibility = true;
-        $this->enhanceSigchildCompatibility = '\\' !== DIRECTORY_SEPARATOR && $this->isSigchildEnabled();
-        $this->options = array_replace(array('suppress_errors' => true, 'binary_pipes' => true), $options);
-    }
-
-    public function __destruct()
-    {
-        // stop() will check if we have a process running.
-        $this->stop();
-    }
-
-    public function __clone()
-    {
-        $this->resetProcessData();
-    }
-
-    /**
-     * Runs the process.
-     *
-     * The callback receives the type of output (out or err) and
-     * some bytes from the output in real-time. It allows to have feedback
-     * from the independent process during execution.
-     *
-     * The STDOUT and STDERR are also available after the process is finished
-     * via the getOutput() and getErrorOutput() methods.
-     *
-     * @param callable|null $callback A PHP callback to run whenever there is some
-     *                                output available on STDOUT or STDERR
-     *
-     * @return int The exit status code
-     *
-     * @throws RuntimeException When process can't be launched
-     * @throws RuntimeException When process stopped after receiving signal
-     * @throws LogicException   In case a callback is provided and output has been disabled
-     */
-    public function run($callback = null)
-    {
-        $this->start($callback);
-
-        return $this->wait();
-    }
-
-    /**
-     * Runs the process.
-     *
-     * This is identical to run() except that an exception is thrown if the process
-     * exits with a non-zero exit code.
-     *
-     * @param callable|null $callback
-     *
-     * @return self
-     *
-     * @throws RuntimeException       if PHP was compiled with --enable-sigchild and the enhanced sigchild compatibility mode is not enabled
-     * @throws ProcessFailedException if the process didn't terminate successfully
-     */
-    public function mustRun($callback = null)
-    {
-        if ($this->isSigchildEnabled() && !$this->enhanceSigchildCompatibility) {
-            throw new RuntimeException('This PHP has been compiled with --enable-sigchild. You must use setEnhanceSigchildCompatibility() to use this method.');
-        }
-
-        if (0 !== $this->run($callback)) {
-            throw new ProcessFailedException($this);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Starts the process and returns after writing the input to STDIN.
-     *
-     * This method blocks until all STDIN data is sent to the process then it
-     * returns while the process runs in the background.
-     *
-     * The termination of the process can be awaited with wait().
-     *
-     * The callback receives the type of output (out or err) and some bytes from
-     * the output in real-time while writing the standard input to the process.
-     * It allows to have feedback from the independent process during execution.
-     * If there is no callback passed, the wait() method can be called
-     * with true as a second parameter then the callback will get all data occurred
-     * in (and since) the start call.
-     *
-     * @param callable|null $callback A PHP callback to run whenever there is some
-     *                                output available on STDOUT or STDERR
-     *
-     * @throws RuntimeException When process can't be launched
-     * @throws RuntimeException When process is already running
-     * @throws LogicException   In case a callback is provided and output has been disabled
-     */
-    public function start($callback = null)
-    {
-        if ($this->isRunning()) {
-            throw new RuntimeException('Process is already running');
-        }
-        if ($this->outputDisabled && null !== $callback) {
-            throw new LogicException('Output has been disabled, enable it to allow the use of a callback.');
-        }
-
-        $this->resetProcessData();
-        $this->starttime = $this->lastOutputTime = microtime(true);
-        $this->callback = $this->buildCallback($callback);
-        $descriptors = $this->getDescriptors();
-
-        $commandline = $this->commandline;
-
-        if ('\\' === DIRECTORY_SEPARATOR && $this->enhanceWindowsCompatibility) {
-            $commandline = 'cmd /V:ON /E:ON /D /C "('.$commandline.')';
-            foreach ($this->processPipes->getFiles() as $offset => $filename) {
-                $commandline .= ' '.$offset.'>'.ProcessUtils::escapeArgument($filename);
-            }
-            $commandline .= '"';
-
-            if (!isset($this->options['bypass_shell'])) {
-                $this->options['bypass_shell'] = true;
-            }
-        }
-
-        $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $this->env, $this->options);
-
-        if (!is_resource($this->process)) {
-            throw new RuntimeException('Unable to launch a new process.');
-        }
-        $this->status = self::STATUS_STARTED;
-
-        if ($this->tty) {
-            return;
-        }
-
-        $this->updateStatus(false);
-        $this->checkTimeout();
-    }
-
-    /**
-     * Restarts the process.
-     *
-     * Be warned that the process is cloned before being started.
-     *
-     * @param callable|null $callback A PHP callback to run whenever there is some
-     *                                output available on STDOUT or STDERR
-     *
-     * @return Process The new process
-     *
-     * @throws RuntimeException When process can't be launched
-     * @throws RuntimeException When process is already running
-     *
-     * @see start()
-     */
-    public function restart($callback = null)
-    {
-        if ($this->isRunning()) {
-            throw new RuntimeException('Process is already running');
-        }
-
-        $process = clone $this;
-        $process->start($callback);
-
-        return $process;
-    }
-
-    /**
-     * Waits for the process to terminate.
-     *
-     * The callback receives the type of output (out or err) and some bytes
-     * from the output in real-time while writing the standard input to the process.
-     * It allows to have feedback from the independent process during execution.
-     *
-     * @param callable|null $callback A valid PHP callback
-     *
-     * @return int The exitcode of the process
-     *
-     * @throws RuntimeException When process timed out
-     * @throws RuntimeException When process stopped after receiving signal
-     * @throws LogicException   When process is not yet started
-     */
-    public function wait($callback = null)
-    {
-        $this->requireProcessIsStarted(__FUNCTION__);
-
-        $this->updateStatus(false);
-        if (null !== $callback) {
-            $this->callback = $this->buildCallback($callback);
-        }
-
-        do {
-            $this->checkTimeout();
-            $running = '\\' === DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen();
-            $close = '\\' !== DIRECTORY_SEPARATOR || !$running;
-            $this->readPipes(true, $close);
-        } while ($running);
-
-        while ($this->isRunning()) {
-            usleep(1000);
-        }
-
-        if ($this->processInformation['signaled'] && $this->processInformation['termsig'] !== $this->latestSignal) {
-            throw new RuntimeException(sprintf('The process has been signaled with signal "%s".', $this->processInformation['termsig']));
-        }
-
-        return $this->exitcode;
-    }
-
-    /**
-     * Returns the Pid (process identifier), if applicable.
-     *
-     * @return int|null The process id if running, null otherwise
-     *
-     * @throws RuntimeException In case --enable-sigchild is activated
-     */
-    public function getPid()
-    {
-        if ($this->isSigchildEnabled()) {
-            throw new RuntimeException('This PHP has been compiled with --enable-sigchild. The process identifier can not be retrieved.');
-        }
-
-        $this->updateStatus(false);
-
-        return $this->isRunning() ? $this->processInformation['pid'] : null;
-    }
-
-    /**
-     * Sends a POSIX signal to the process.
-     *
-     * @param int $signal A valid POSIX signal (see http://www.php.net/manual/en/pcntl.constants.php)
-     *
-     * @return Process
-     *
-     * @throws LogicException   In case the process is not running
-     * @throws RuntimeException In case --enable-sigchild is activated
-     * @throws RuntimeException In case of failure
-     */
-    public function signal($signal)
-    {
-        $this->doSignal($signal, true);
-
-        return $this;
-    }
-
-    /**
-     * Disables fetching output and error output from the underlying process.
-     *
-     * @return Process
-     *
-     * @throws RuntimeException In case the process is already running
-     * @throws LogicException   if an idle timeout is set
-     */
-    public function disableOutput()
-    {
-        if ($this->isRunning()) {
-            throw new RuntimeException('Disabling output while the process is running is not possible.');
-        }
-        if (null !== $this->idleTimeout) {
-            throw new LogicException('Output can not be disabled while an idle timeout is set.');
-        }
-
-        $this->outputDisabled = true;
-
-        return $this;
-    }
-
-    /**
-     * Enables fetching output and error output from the underlying process.
-     *
-     * @return Process
-     *
-     * @throws RuntimeException In case the process is already running
-     */
-    public function enableOutput()
-    {
-        if ($this->isRunning()) {
-            throw new RuntimeException('Enabling output while the process is running is not possible.');
-        }
-
-        $this->outputDisabled = false;
-
-        return $this;
-    }
-
-    /**
-     * Returns true in case the output is disabled, false otherwise.
-     *
-     * @return bool
-     */
-    public function isOutputDisabled()
-    {
-        return $this->outputDisabled;
-    }
-
-    /**
-     * Returns the current output of the process (STDOUT).
-     *
-     * @return string The process output
-     *
-     * @throws LogicException in case the output has been disabled
-     * @throws LogicException In case the process is not started
-     */
-    public function getOutput()
-    {
-        if ($this->outputDisabled) {
-            throw new LogicException('Output has been disabled.');
-        }
-
-        $this->requireProcessIsStarted(__FUNCTION__);
-
-        $this->readPipes(false, '\\' === DIRECTORY_SEPARATOR ? !$this->processInformation['running'] : true);
-
-        return $this->stdout;
-    }
-
-    /**
-     * Returns the output incrementally.
-     *
-     * In comparison with the getOutput method which always return the whole
-     * output, this one returns the new output since the last call.
-     *
-     * @throws LogicException in case the output has been disabled
-     * @throws LogicException In case the process is not started
-     *
-     * @return string The process output since the last call
-     */
-    public function getIncrementalOutput()
-    {
-        $this->requireProcessIsStarted(__FUNCTION__);
-
-        $data = $this->getOutput();
-
-        $latest = substr($data, $this->incrementalOutputOffset);
-
-        if (false === $latest) {
-            return '';
-        }
-
-        $this->incrementalOutputOffset = strlen($data);
-
-        return $latest;
-    }
-
-    /**
-     * Clears the process output.
-     *
-     * @return Process
-     */
-    public function clearOutput()
-    {
-        $this->stdout = '';
-        $this->incrementalOutputOffset = 0;
-
-        return $this;
-    }
-
-    /**
-     * Returns the current error output of the process (STDERR).
-     *
-     * @return string The process error output
-     *
-     * @throws LogicException in case the output has been disabled
-     * @throws LogicException In case the process is not started
-     */
-    public function getErrorOutput()
-    {
-        if ($this->outputDisabled) {
-            throw new LogicException('Output has been disabled.');
-        }
-
-        $this->requireProcessIsStarted(__FUNCTION__);
-
-        $this->readPipes(false, '\\' === DIRECTORY_SEPARATOR ? !$this->processInformation['running'] : true);
-
-        return $this->stderr;
-    }
-
-    /**
-     * Returns the errorOutput incrementally.
-     *
-     * In comparison with the getErrorOutput method which always return the
-     * whole error output, this one returns the new error output since the last
-     * call.
-     *
-     * @throws LogicException in case the output has been disabled
-     * @throws LogicException In case the process is not started
-     *
-     * @return string The process error output since the last call
-     */
-    public function getIncrementalErrorOutput()
-    {
-        $this->requireProcessIsStarted(__FUNCTION__);
-
-        $data = $this->getErrorOutput();
-
-        $latest = substr($data, $this->incrementalErrorOutputOffset);
-
-        if (false === $latest) {
-            return '';
-        }
-
-        $this->incrementalErrorOutputOffset = strlen($data);
-
-        return $latest;
-    }
-
-    /**
-     * Clears the process output.
-     *
-     * @return Process
-     */
-    public function clearErrorOutput()
-    {
-        $this->stderr = '';
-        $this->incrementalErrorOutputOffset = 0;
-
-        return $this;
-    }
-
-    /**
-     * Returns the exit code returned by the process.
-     *
-     * @return null|int The exit status code, null if the Process is not terminated
-     *
-     * @throws RuntimeException In case --enable-sigchild is activated and the sigchild compatibility mode is disabled
-     */
-    public function getExitCode()
-    {
-        if ($this->isSigchildEnabled() && !$this->enhanceSigchildCompatibility) {
-            throw new RuntimeException('This PHP has been compiled with --enable-sigchild. You must use setEnhanceSigchildCompatibility() to use this method.');
-        }
-
-        $this->updateStatus(false);
-
-        return $this->exitcode;
-    }
-
-    /**
-     * Returns a string representation for the exit code returned by the process.
-     *
-     * This method relies on the Unix exit code status standardization
-     * and might not be relevant for other operating systems.
-     *
-     * @return null|string A string representation for the exit status code, null if the Process is not terminated.
-     *
-     * @throws RuntimeException In case --enable-sigchild is activated and the sigchild compatibility mode is disabled
-     *
-     * @see http://tldp.org/LDP/abs/html/exitcodes.html
-     * @see http://en.wikipedia.org/wiki/Unix_signal
-     */
-    public function getExitCodeText()
-    {
-        if (null === $exitcode = $this->getExitCode()) {
-            return;
-        }
-
-        return isset(self::$exitCodes[$exitcode]) ? self::$exitCodes[$exitcode] : 'Unknown error';
-    }
-
-    /**
-     * Checks if the process ended successfully.
-     *
-     * @return bool true if the process ended successfully, false otherwise
-     */
-    public function isSuccessful()
-    {
-        return 0 === $this->getExitCode();
-    }
-
-    /**
-     * Returns true if the child process has been terminated by an uncaught signal.
-     *
-     * It always returns false on Windows.
-     *
-     * @return bool
-     *
-     * @throws RuntimeException In case --enable-sigchild is activated
-     * @throws LogicException   In case the process is not terminated
-     */
-    public function hasBeenSignaled()
-    {
-        $this->requireProcessIsTerminated(__FUNCTION__);
-
-        if ($this->isSigchildEnabled()) {
-            throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal can not be retrieved.');
-        }
-
-        $this->updateStatus(false);
-
-        return $this->processInformation['signaled'];
-    }
-
-    /**
-     * Returns the number of the signal that caused the child process to terminate its execution.
-     *
-     * It is only meaningful if hasBeenSignaled() returns true.
-     *
-     * @return int
-     *
-     * @throws RuntimeException In case --enable-sigchild is activated
-     * @throws LogicException   In case the process is not terminated
-     */
-    public function getTermSignal()
-    {
-        $this->requireProcessIsTerminated(__FUNCTION__);
-
-        if ($this->isSigchildEnabled()) {
-            throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal can not be retrieved.');
-        }
-
-        $this->updateStatus(false);
-
-        return $this->processInformation['termsig'];
-    }
-
-    /**
-     * Returns true if the child process has been stopped by a signal.
-     *
-     * It always returns false on Windows.
-     *
-     * @return bool
-     *
-     * @throws LogicException In case the process is not terminated
-     */
-    public function hasBeenStopped()
-    {
-        $this->requireProcessIsTerminated(__FUNCTION__);
-
-        $this->updateStatus(false);
-
-        return $this->processInformation['stopped'];
-    }
-
-    /**
-     * Returns the number of the signal that caused the child process to stop its execution.
-     *
-     * It is only meaningful if hasBeenStopped() returns true.
-     *
-     * @return int
-     *
-     * @throws LogicException In case the process is not terminated
-     */
-    public function getStopSignal()
-    {
-        $this->requireProcessIsTerminated(__FUNCTION__);
-
-        $this->updateStatus(false);
-
-        return $this->processInformation['stopsig'];
-    }
-
-    /**
-     * Checks if the process is currently running.
-     *
-     * @return bool true if the process is currently running, false otherwise
-     */
-    public function isRunning()
-    {
-        if (self::STATUS_STARTED !== $this->status) {
-            return false;
-        }
-
-        $this->updateStatus(false);
-
-        return $this->processInformation['running'];
-    }
-
-    /**
-     * Checks if the process has been started with no regard to the current state.
-     *
-     * @return bool true if status is ready, false otherwise
-     */
-    public function isStarted()
-    {
-        return $this->status != self::STATUS_READY;
-    }
-
-    /**
-     * Checks if the process is terminated.
-     *
-     * @return bool true if process is terminated, false otherwise
-     */
-    public function isTerminated()
-    {
-        $this->updateStatus(false);
-
-        return $this->status == self::STATUS_TERMINATED;
-    }
-
-    /**
-     * Gets the process status.
-     *
-     * The status is one of: ready, started, terminated.
-     *
-     * @return string The current process status
-     */
-    public function getStatus()
-    {
-        $this->updateStatus(false);
-
-        return $this->status;
-    }
-
-    /**
-     * 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
-     *
-     * @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 {
-                usleep(1000);
-            } 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);
-                }
-            }
-        }
-
-        $this->updateStatus(false);
-        if ($this->processInformation['running']) {
-            $this->close();
-        }
-
-        return $this->exitcode;
-    }
-
-    /**
-     * Adds a line to the STDOUT stream.
-     *
-     * @param string $line The line to append
-     */
-    public function addOutput($line)
-    {
-        $this->lastOutputTime = microtime(true);
-        $this->stdout .= $line;
-    }
-
-    /**
-     * Adds a line to the STDERR stream.
-     *
-     * @param string $line The line to append
-     */
-    public function addErrorOutput($line)
-    {
-        $this->lastOutputTime = microtime(true);
-        $this->stderr .= $line;
-    }
-
-    /**
-     * Gets the command line to be executed.
-     *
-     * @return string The command to execute
-     */
-    public function getCommandLine()
-    {
-        return $this->commandline;
-    }
-
-    /**
-     * Sets the command line to be executed.
-     *
-     * @param string $commandline The command to execute
-     *
-     * @return self The current Process instance
-     */
-    public function setCommandLine($commandline)
-    {
-        $this->commandline = $commandline;
-
-        return $this;
-    }
-
-    /**
-     * Gets the process timeout (max. runtime).
-     *
-     * @return float|null The timeout in seconds or null if it's disabled
-     */
-    public function getTimeout()
-    {
-        return $this->timeout;
-    }
-
-    /**
-     * Gets the process idle timeout (max. time since last output).
-     *
-     * @return float|null The timeout in seconds or null if it's disabled
-     */
-    public function getIdleTimeout()
-    {
-        return $this->idleTimeout;
-    }
-
-    /**
-     * Sets the process timeout (max. runtime).
-     *
-     * To disable the timeout, set this value to null.
-     *
-     * @param int|float|null $timeout The timeout in seconds
-     *
-     * @return self The current Process instance
-     *
-     * @throws InvalidArgumentException if the timeout is negative
-     */
-    public function setTimeout($timeout)
-    {
-        $this->timeout = $this->validateTimeout($timeout);
-
-        return $this;
-    }
-
-    /**
-     * Sets the process idle timeout (max. time since last output).
-     *
-     * To disable the timeout, set this value to null.
-     *
-     * @param int|float|null $timeout The timeout in seconds
-     *
-     * @return self The current Process instance.
-     *
-     * @throws LogicException           if the output is disabled
-     * @throws InvalidArgumentException if the timeout is negative
-     */
-    public function setIdleTimeout($timeout)
-    {
-        if (null !== $timeout && $this->outputDisabled) {
-            throw new LogicException('Idle timeout can not be set while the output is disabled.');
-        }
-
-        $this->idleTimeout = $this->validateTimeout($timeout);
-
-        return $this;
-    }
-
-    /**
-     * Enables or disables the TTY mode.
-     *
-     * @param bool $tty True to enabled and false to disable
-     *
-     * @return self The current Process instance
-     *
-     * @throws RuntimeException In case the TTY mode is not supported
-     */
-    public function setTty($tty)
-    {
-        if ('\\' === DIRECTORY_SEPARATOR && $tty) {
-            throw new RuntimeException('TTY mode is not supported on Windows platform.');
-        }
-        if ($tty && (!file_exists('/dev/tty') || !is_readable('/dev/tty'))) {
-            throw new RuntimeException('TTY mode requires /dev/tty to be readable.');
-        }
-
-        $this->tty = (bool) $tty;
-
-        return $this;
-    }
-
-    /**
-     * Checks if the TTY mode is enabled.
-     *
-     * @return bool true if the TTY mode is enabled, false otherwise
-     */
-    public function isTty()
-    {
-        return $this->tty;
-    }
-
-    /**
-     * Sets PTY mode.
-     *
-     * @param bool $bool
-     *
-     * @return self
-     */
-    public function setPty($bool)
-    {
-        $this->pty = (bool) $bool;
-
-        return $this;
-    }
-
-    /**
-     * Returns PTY state.
-     *
-     * @return bool
-     */
-    public function isPty()
-    {
-        return $this->pty;
-    }
-
-    /**
-     * Gets the working directory.
-     *
-     * @return string|null The current working directory or null on failure
-     */
-    public function getWorkingDirectory()
-    {
-        if (null === $this->cwd) {
-            // getcwd() will return false if any one of the parent directories does not have
-            // the readable or search mode set, even if the current directory does
-            return getcwd() ?: null;
-        }
-
-        return $this->cwd;
-    }
-
-    /**
-     * Sets the current working directory.
-     *
-     * @param string $cwd The new working directory
-     *
-     * @return self The current Process instance
-     */
-    public function setWorkingDirectory($cwd)
-    {
-        $this->cwd = $cwd;
-
-        return $this;
-    }
-
-    /**
-     * Gets the environment variables.
-     *
-     * @return array The current environment variables
-     */
-    public function getEnv()
-    {
-        return $this->env;
-    }
-
-    /**
-     * Sets the environment variables.
-     *
-     * An environment variable value should be a string.
-     * If it is an array, the variable is ignored.
-     *
-     * That happens in PHP when 'argv' is registered into
-     * the $_ENV array for instance.
-     *
-     * @param array $env The new environment variables
-     *
-     * @return self The current Process instance
-     */
-    public function setEnv(array $env)
-    {
-        // Process can not handle env values that are arrays
-        $env = array_filter($env, function ($value) {
-            return !is_array($value);
-        });
-
-        $this->env = array();
-        foreach ($env as $key => $value) {
-            $this->env[$key] = (string) $value;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Gets the contents of STDIN.
-     *
-     * @return string|null The current contents
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Use setInput() instead.
-     *             This method is deprecated in favor of getInput.
-     */
-    public function getStdin()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Use the getInput() method instead.', E_USER_DEPRECATED);
-
-        return $this->getInput();
-    }
-
-    /**
-     * Gets the Process input.
-     *
-     * @return null|string The Process input
-     */
-    public function getInput()
-    {
-        return $this->input;
-    }
-
-    /**
-     * Sets the contents of STDIN.
-     *
-     * @param string|null $stdin The new contents
-     *
-     * @return self The current Process instance
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Use setInput() instead.
-     *
-     * @throws LogicException           In case the process is running
-     * @throws InvalidArgumentException In case the argument is invalid
-     */
-    public function setStdin($stdin)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Use the setInput() method instead.', E_USER_DEPRECATED);
-
-        return $this->setInput($stdin);
-    }
-
-    /**
-     * Sets the input.
-     *
-     * This content will be passed to the underlying process standard input.
-     *
-     * @param mixed $input The content
-     *
-     * @return self The current Process instance
-     *
-     * @throws LogicException In case the process is running
-     *
-     * Passing an object as an input is deprecated since version 2.5 and will be removed in 3.0.
-     */
-    public function setInput($input)
-    {
-        if ($this->isRunning()) {
-            throw new LogicException('Input can not be set while the process is running.');
-        }
-
-        $this->input = ProcessUtils::validateInput(sprintf('%s::%s', __CLASS__, __FUNCTION__), $input);
-
-        return $this;
-    }
-
-    /**
-     * Gets the options for proc_open.
-     *
-     * @return array The current options
-     */
-    public function getOptions()
-    {
-        return $this->options;
-    }
-
-    /**
-     * Sets the options for proc_open.
-     *
-     * @param array $options The new options
-     *
-     * @return self The current Process instance
-     */
-    public function setOptions(array $options)
-    {
-        $this->options = $options;
-
-        return $this;
-    }
-
-    /**
-     * Gets whether or not Windows compatibility is enabled.
-     *
-     * This is true by default.
-     *
-     * @return bool
-     */
-    public function getEnhanceWindowsCompatibility()
-    {
-        return $this->enhanceWindowsCompatibility;
-    }
-
-    /**
-     * Sets whether or not Windows compatibility is enabled.
-     *
-     * @param bool $enhance
-     *
-     * @return self The current Process instance
-     */
-    public function setEnhanceWindowsCompatibility($enhance)
-    {
-        $this->enhanceWindowsCompatibility = (bool) $enhance;
-
-        return $this;
-    }
-
-    /**
-     * Returns whether sigchild compatibility mode is activated or not.
-     *
-     * @return bool
-     */
-    public function getEnhanceSigchildCompatibility()
-    {
-        return $this->enhanceSigchildCompatibility;
-    }
-
-    /**
-     * Activates sigchild compatibility mode.
-     *
-     * Sigchild compatibility mode is required to get the exit code and
-     * determine the success of a process when PHP has been compiled with
-     * the --enable-sigchild option
-     *
-     * @param bool $enhance
-     *
-     * @return self The current Process instance
-     */
-    public function setEnhanceSigchildCompatibility($enhance)
-    {
-        $this->enhanceSigchildCompatibility = (bool) $enhance;
-
-        return $this;
-    }
-
-    /**
-     * Performs a check between the timeout definition and the time the process started.
-     *
-     * In case you run a background process (with the start method), you should
-     * trigger this method regularly to ensure the process timeout
-     *
-     * @throws ProcessTimedOutException In case the timeout was reached
-     */
-    public function checkTimeout()
-    {
-        if ($this->status !== self::STATUS_STARTED) {
-            return;
-        }
-
-        if (null !== $this->timeout && $this->timeout < microtime(true) - $this->starttime) {
-            $this->stop(0);
-
-            throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_GENERAL);
-        }
-
-        if (null !== $this->idleTimeout && $this->idleTimeout < microtime(true) - $this->lastOutputTime) {
-            $this->stop(0);
-
-            throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_IDLE);
-        }
-    }
-
-    /**
-     * Returns whether PTY is supported on the current operating system.
-     *
-     * @return bool
-     */
-    public static function isPtySupported()
-    {
-        static $result;
-
-        if (null !== $result) {
-            return $result;
-        }
-
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            return $result = false;
-        }
-
-        $proc = @proc_open('echo 1', array(array('pty'), array('pty'), array('pty')), $pipes);
-        if (is_resource($proc)) {
-            proc_close($proc);
-
-            return $result = true;
-        }
-
-        return $result = false;
-    }
-
-    /**
-     * Creates the descriptors needed by the proc_open.
-     *
-     * @return array
-     */
-    private function getDescriptors()
-    {
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            $this->processPipes = WindowsPipes::create($this, $this->input);
-        } else {
-            $this->processPipes = UnixPipes::create($this, $this->input);
-        }
-        $descriptors = $this->processPipes->getDescriptors($this->outputDisabled);
-
-        if (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) {
-            // last exit code is output on the fourth pipe and caught to work around --enable-sigchild
-            $descriptors = array_merge($descriptors, array(array('pipe', 'w')));
-
-            $this->commandline = '('.$this->commandline.') 3>/dev/null; code=$?; echo $code >&3; exit $code';
-        }
-
-        return $descriptors;
-    }
-
-    /**
-     * Builds up the callback used by wait().
-     *
-     * The callbacks adds all occurred output to the specific buffer and calls
-     * the user callback (if present) with the received output.
-     *
-     * @param callable|null $callback The user defined PHP callback
-     *
-     * @return \Closure A PHP closure
-     */
-    protected function buildCallback($callback)
-    {
-        $that = $this;
-        $out = self::OUT;
-        $callback = function ($type, $data) use ($that, $callback, $out) {
-            if ($out == $type) {
-                $that->addOutput($data);
-            } else {
-                $that->addErrorOutput($data);
-            }
-
-            if (null !== $callback) {
-                call_user_func($callback, $type, $data);
-            }
-        };
-
-        return $callback;
-    }
-
-    /**
-     * Updates the status of the process, reads pipes.
-     *
-     * @param bool $blocking Whether to use a blocking read call.
-     */
-    protected function updateStatus($blocking)
-    {
-        if (self::STATUS_STARTED !== $this->status) {
-            return;
-        }
-
-        $this->processInformation = proc_get_status($this->process);
-        $this->captureExitCode();
-
-        $this->readPipes($blocking, '\\' === DIRECTORY_SEPARATOR ? !$this->processInformation['running'] : true);
-
-        if (!$this->processInformation['running']) {
-            $this->close();
-        }
-    }
-
-    /**
-     * Returns whether PHP has been compiled with the '--enable-sigchild' option or not.
-     *
-     * @return bool
-     */
-    protected function isSigchildEnabled()
-    {
-        if (null !== self::$sigchild) {
-            return self::$sigchild;
-        }
-
-        if (!function_exists('phpinfo')) {
-            return self::$sigchild = false;
-        }
-
-        ob_start();
-        phpinfo(INFO_GENERAL);
-
-        return self::$sigchild = false !== strpos(ob_get_clean(), '--enable-sigchild');
-    }
-
-    /**
-     * Validates and returns the filtered timeout.
-     *
-     * @param int|float|null $timeout
-     *
-     * @return float|null
-     *
-     * @throws InvalidArgumentException if the given timeout is a negative number
-     */
-    private function validateTimeout($timeout)
-    {
-        $timeout = (float) $timeout;
-
-        if (0.0 === $timeout) {
-            $timeout = null;
-        } elseif ($timeout < 0) {
-            throw new InvalidArgumentException('The timeout value must be a valid positive integer or float number.');
-        }
-
-        return $timeout;
-    }
-
-    /**
-     * Reads pipes, executes callback.
-     *
-     * @param bool $blocking Whether to use blocking calls or not.
-     * @param bool $close    Whether to close file handles or not.
-     */
-    private function readPipes($blocking, $close)
-    {
-        $result = $this->processPipes->readAndWrite($blocking, $close);
-
-        $callback = $this->callback;
-        foreach ($result as $type => $data) {
-            if (3 == $type) {
-                $this->fallbackExitcode = (int) $data;
-            } else {
-                $callback($type === self::STDOUT ? self::OUT : self::ERR, $data);
-            }
-        }
-    }
-
-    /**
-     * Captures the exitcode if mentioned in the process information.
-     */
-    private function captureExitCode()
-    {
-        if (isset($this->processInformation['exitcode']) && -1 != $this->processInformation['exitcode']) {
-            $this->exitcode = $this->processInformation['exitcode'];
-        }
-    }
-
-    /**
-     * Closes process resource, closes file handles, sets the exitcode.
-     *
-     * @return int The exitcode
-     */
-    private function close()
-    {
-        $this->processPipes->close();
-        if (is_resource($this->process)) {
-            $exitcode = proc_close($this->process);
-        } else {
-            $exitcode = -1;
-        }
-
-        $this->exitcode = -1 !== $exitcode ? $exitcode : (null !== $this->exitcode ? $this->exitcode : -1);
-        $this->status = self::STATUS_TERMINATED;
-
-        if (-1 === $this->exitcode && null !== $this->fallbackExitcode) {
-            $this->exitcode = $this->fallbackExitcode;
-        } elseif (-1 === $this->exitcode && $this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) {
-            // if process has been signaled, no exitcode but a valid termsig, apply Unix convention
-            $this->exitcode = 128 + $this->processInformation['termsig'];
-        }
-
-        return $this->exitcode;
-    }
-
-    /**
-     * Resets data related to the latest run of the process.
-     */
-    private function resetProcessData()
-    {
-        $this->starttime = null;
-        $this->callback = null;
-        $this->exitcode = null;
-        $this->fallbackExitcode = null;
-        $this->processInformation = null;
-        $this->stdout = null;
-        $this->stderr = null;
-        $this->process = null;
-        $this->latestSignal = null;
-        $this->status = self::STATUS_READY;
-        $this->incrementalOutputOffset = 0;
-        $this->incrementalErrorOutputOffset = 0;
-    }
-
-    /**
-     * Sends a POSIX signal to the process.
-     *
-     * @param int  $signal         A valid POSIX signal (see http://www.php.net/manual/en/pcntl.constants.php)
-     * @param bool $throwException Whether to throw exception in case signal failed
-     *
-     * @return bool True if the signal was sent successfully, false otherwise
-     *
-     * @throws LogicException   In case the process is not running
-     * @throws RuntimeException In case --enable-sigchild is activated
-     * @throws RuntimeException In case of failure
-     */
-    private function doSignal($signal, $throwException)
-    {
-        if (!$this->isRunning()) {
-            if ($throwException) {
-                throw new LogicException('Can not send signal on a non running process.');
-            }
-
-            return false;
-        }
-
-        if ($this->isSigchildEnabled()) {
-            if ($throwException) {
-                throw new RuntimeException('This PHP has been compiled with --enable-sigchild. The process can not be signaled.');
-            }
-
-            return false;
-        }
-
-        if (true !== @proc_terminate($this->process, $signal)) {
-            if ($throwException) {
-                throw new RuntimeException(sprintf('Error while sending signal `%s`.', $signal));
-            }
-
-            return false;
-        }
-
-        $this->latestSignal = $signal;
-
-        return true;
-    }
-
-    /**
-     * Ensures the process is running or terminated, throws a LogicException if the process has a not started.
-     *
-     * @param string $functionName The function name that was called.
-     *
-     * @throws LogicException If the process has not run.
-     */
-    private function requireProcessIsStarted($functionName)
-    {
-        if (!$this->isStarted()) {
-            throw new LogicException(sprintf('Process must be started before calling %s.', $functionName));
-        }
-    }
-
-    /**
-     * Ensures the process is terminated, throws a LogicException if the process has a status different than `terminated`.
-     *
-     * @param string $functionName The function name that was called.
-     *
-     * @throws LogicException If the process is not yet terminated.
-     */
-    private function requireProcessIsTerminated($functionName)
-    {
-        if (!$this->isTerminated()) {
-            throw new LogicException(sprintf('Process must be terminated before calling %s.', $functionName));
-        }
-    }
-}
diff --git a/vendor/symfony/process/ProcessBuilder.php b/vendor/symfony/process/ProcessBuilder.php
deleted file mode 100644
index a782fd6..0000000
--- a/vendor/symfony/process/ProcessBuilder.php
+++ /dev/null
@@ -1,287 +0,0 @@
-<?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\Process;
-
-use Symfony\Component\Process\Exception\InvalidArgumentException;
-use Symfony\Component\Process\Exception\LogicException;
-
-/**
- * Process builder.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class ProcessBuilder
-{
-    private $arguments;
-    private $cwd;
-    private $env = array();
-    private $input;
-    private $timeout = 60;
-    private $options = array();
-    private $inheritEnv = true;
-    private $prefix = array();
-    private $outputDisabled = false;
-
-    /**
-     * Constructor.
-     *
-     * @param string[] $arguments An array of arguments
-     */
-    public function __construct(array $arguments = array())
-    {
-        $this->arguments = $arguments;
-    }
-
-    /**
-     * Creates a process builder instance.
-     *
-     * @param string[] $arguments An array of arguments
-     *
-     * @return ProcessBuilder
-     */
-    public static function create(array $arguments = array())
-    {
-        return new static($arguments);
-    }
-
-    /**
-     * Adds an unescaped argument to the command string.
-     *
-     * @param string $argument A command argument
-     *
-     * @return ProcessBuilder
-     */
-    public function add($argument)
-    {
-        $this->arguments[] = $argument;
-
-        return $this;
-    }
-
-    /**
-     * Adds a prefix to the command string.
-     *
-     * The prefix is preserved when resetting arguments.
-     *
-     * @param string|array $prefix A command prefix or an array of command prefixes
-     *
-     * @return ProcessBuilder
-     */
-    public function setPrefix($prefix)
-    {
-        $this->prefix = is_array($prefix) ? $prefix : array($prefix);
-
-        return $this;
-    }
-
-    /**
-     * Sets the arguments of the process.
-     *
-     * Arguments must not be escaped.
-     * Previous arguments are removed.
-     *
-     * @param string[] $arguments
-     *
-     * @return ProcessBuilder
-     */
-    public function setArguments(array $arguments)
-    {
-        $this->arguments = $arguments;
-
-        return $this;
-    }
-
-    /**
-     * Sets the working directory.
-     *
-     * @param null|string $cwd The working directory
-     *
-     * @return ProcessBuilder
-     */
-    public function setWorkingDirectory($cwd)
-    {
-        $this->cwd = $cwd;
-
-        return $this;
-    }
-
-    /**
-     * Sets whether environment variables will be inherited or not.
-     *
-     * @param bool $inheritEnv
-     *
-     * @return ProcessBuilder
-     */
-    public function inheritEnvironmentVariables($inheritEnv = true)
-    {
-        $this->inheritEnv = $inheritEnv;
-
-        return $this;
-    }
-
-    /**
-     * Sets an environment variable.
-     *
-     * Setting a variable overrides its previous value. Use `null` to unset a
-     * defined environment variable.
-     *
-     * @param string      $name  The variable name
-     * @param null|string $value The variable value
-     *
-     * @return ProcessBuilder
-     */
-    public function setEnv($name, $value)
-    {
-        $this->env[$name] = $value;
-
-        return $this;
-    }
-
-    /**
-     * Adds a set of environment variables.
-     *
-     * Already existing environment variables with the same name will be
-     * overridden by the new values passed to this method. Pass `null` to unset
-     * a variable.
-     *
-     * @param array $variables The variables
-     *
-     * @return ProcessBuilder
-     */
-    public function addEnvironmentVariables(array $variables)
-    {
-        $this->env = array_replace($this->env, $variables);
-
-        return $this;
-    }
-
-    /**
-     * Sets the input of the process.
-     *
-     * @param mixed $input The input as a string
-     *
-     * @return ProcessBuilder
-     *
-     * @throws InvalidArgumentException In case the argument is invalid
-     *
-     * Passing an object as an input is deprecated since version 2.5 and will be removed in 3.0.
-     */
-    public function setInput($input)
-    {
-        $this->input = ProcessUtils::validateInput(sprintf('%s::%s', __CLASS__, __FUNCTION__), $input);
-
-        return $this;
-    }
-
-    /**
-     * Sets the process timeout.
-     *
-     * To disable the timeout, set this value to null.
-     *
-     * @param float|null $timeout
-     *
-     * @return ProcessBuilder
-     *
-     * @throws InvalidArgumentException
-     */
-    public function setTimeout($timeout)
-    {
-        if (null === $timeout) {
-            $this->timeout = null;
-
-            return $this;
-        }
-
-        $timeout = (float) $timeout;
-
-        if ($timeout < 0) {
-            throw new InvalidArgumentException('The timeout value must be a valid positive integer or float number.');
-        }
-
-        $this->timeout = $timeout;
-
-        return $this;
-    }
-
-    /**
-     * Adds a proc_open option.
-     *
-     * @param string $name  The option name
-     * @param string $value The option value
-     *
-     * @return ProcessBuilder
-     */
-    public function setOption($name, $value)
-    {
-        $this->options[$name] = $value;
-
-        return $this;
-    }
-
-    /**
-     * Disables fetching output and error output from the underlying process.
-     *
-     * @return ProcessBuilder
-     */
-    public function disableOutput()
-    {
-        $this->outputDisabled = true;
-
-        return $this;
-    }
-
-    /**
-     * Enables fetching output and error output from the underlying process.
-     *
-     * @return ProcessBuilder
-     */
-    public function enableOutput()
-    {
-        $this->outputDisabled = false;
-
-        return $this;
-    }
-
-    /**
-     * Creates a Process instance and returns it.
-     *
-     * @return Process
-     *
-     * @throws LogicException In case no arguments have been provided
-     */
-    public function getProcess()
-    {
-        if (0 === count($this->prefix) && 0 === count($this->arguments)) {
-            throw new LogicException('You must add() command arguments before calling getProcess().');
-        }
-
-        $options = $this->options;
-
-        $arguments = array_merge($this->prefix, $this->arguments);
-        $script = implode(' ', array_map(array(__NAMESPACE__.'\\ProcessUtils', 'escapeArgument'), $arguments));
-
-        if ($this->inheritEnv) {
-            // include $_ENV for BC purposes
-            $env = array_replace($_ENV, $_SERVER, $this->env);
-        } else {
-            $env = $this->env;
-        }
-
-        $process = new Process($script, $this->cwd, $env, $this->input, $this->timeout, $options);
-
-        if ($this->outputDisabled) {
-            $process->disableOutput();
-        }
-
-        return $process;
-    }
-}
diff --git a/vendor/symfony/process/ProcessUtils.php b/vendor/symfony/process/ProcessUtils.php
deleted file mode 100644
index 4f30b63..0000000
--- a/vendor/symfony/process/ProcessUtils.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?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\Process;
-
-use Symfony\Component\Process\Exception\InvalidArgumentException;
-
-/**
- * ProcessUtils is a bunch of utility methods.
- *
- * This class contains static methods only and is not meant to be instantiated.
- *
- * @author Martin Hasoň <martin.hason@gmail.com>
- */
-class ProcessUtils
-{
-    /**
-     * This class should not be instantiated.
-     */
-    private function __construct()
-    {
-    }
-
-    /**
-     * Escapes a string to be used as a shell argument.
-     *
-     * @param string $argument The argument that will be escaped
-     *
-     * @return string The escaped argument
-     */
-    public static function escapeArgument($argument)
-    {
-        //Fix for PHP bug #43784 escapeshellarg removes % from given string
-        //Fix for PHP bug #49446 escapeshellarg doesn't work on Windows
-        //@see https://bugs.php.net/bug.php?id=43784
-        //@see https://bugs.php.net/bug.php?id=49446
-        if ('\\' === DIRECTORY_SEPARATOR) {
-            if ('' === $argument) {
-                return escapeshellarg($argument);
-            }
-
-            $escapedArgument = '';
-            $quote = false;
-            foreach (preg_split('/(")/', $argument, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE) as $part) {
-                if ('"' === $part) {
-                    $escapedArgument .= '\\"';
-                } elseif (self::isSurroundedBy($part, '%')) {
-                    // Avoid environment variable expansion
-                    $escapedArgument .= '^%"'.substr($part, 1, -1).'"^%';
-                } else {
-                    // escape trailing backslash
-                    if ('\\' === substr($part, -1)) {
-                        $part .= '\\';
-                    }
-                    $quote = true;
-                    $escapedArgument .= $part;
-                }
-            }
-            if ($quote) {
-                $escapedArgument = '"'.$escapedArgument.'"';
-            }
-
-            return $escapedArgument;
-        }
-
-        return escapeshellarg($argument);
-    }
-
-    /**
-     * Validates and normalizes a Process input.
-     *
-     * @param string $caller The name of method call that validates the input
-     * @param mixed  $input  The input to validate
-     *
-     * @return string The validated input
-     *
-     * @throws InvalidArgumentException In case the input is not valid
-     *
-     * Passing an object as an input is deprecated since version 2.5 and will be removed in 3.0.
-     */
-    public static function validateInput($caller, $input)
-    {
-        if (null !== $input) {
-            if (is_resource($input)) {
-                return $input;
-            }
-            if (is_scalar($input)) {
-                return (string) $input;
-            }
-            // deprecated as of Symfony 2.5, to be removed in 3.0
-            if (is_object($input) && method_exists($input, '__toString')) {
-                @trigger_error('Passing an object as an input is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-                return (string) $input;
-            }
-
-            throw new InvalidArgumentException(sprintf('%s only accepts strings or stream resources.', $caller));
-        }
-
-        return $input;
-    }
-
-    private static function isSurroundedBy($arg, $char)
-    {
-        return 2 < strlen($arg) && $char === $arg[0] && $char === $arg[strlen($arg) - 1];
-    }
-}
diff --git a/vendor/symfony/process/README.md b/vendor/symfony/process/README.md
deleted file mode 100644
index 7222fe8..0000000
--- a/vendor/symfony/process/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-Process Component
-=================
-
-Process executes commands in sub-processes.
-
-In this example, we run a simple directory listing and get the result back:
-
-```php
-use Symfony\Component\Process\Process;
-use Symfony\Component\Process\Exception\ProcessFailedException;
-
-$process = new Process('ls -lsa');
-$process->setTimeout(3600);
-$process->run();
-if (!$process->isSuccessful()) {
-    throw new ProcessFailedException($process);
-}
-
-print $process->getOutput();
-```
-
-You can think that this is easy to achieve with plain PHP but it's not especially
-if you want to take care of the subtle differences between the different platforms.
-
-You can simplify the code by using `mustRun()` instead of `run()`, which will
-throw a `ProcessFailedException` automatically in case of a problem:
-
-```php
-use Symfony\Component\Process\Process;
-
-$process = new Process('ls -lsa');
-$process->setTimeout(3600);
-$process->mustRun();
-
-print $process->getOutput();
-```
-
-And if you want to be able to get some feedback in real-time, just pass an
-anonymous function to the ``run()`` method and you will get the output buffer
-as it becomes available:
-
-```php
-use Symfony\Component\Process\Process;
-
-$process = new Process('ls -lsa');
-$process->run(function ($type, $buffer) {
-    if (Process::ERR === $type) {
-        echo 'ERR > '.$buffer;
-    } else {
-        echo 'OUT > '.$buffer;
-    }
-});
-```
-
-That's great if you want to execute a long running command (like rsync-ing files to a
-remote server) and give feedback to the user in real-time.
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/Process/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/process/composer.json b/vendor/symfony/process/composer.json
deleted file mode 100644
index 8d21baf..0000000
--- a/vendor/symfony/process/composer.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-    "name": "symfony/process",
-    "type": "library",
-    "description": "Symfony Process Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Process\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/process/phpunit.xml.dist b/vendor/symfony/process/phpunit.xml.dist
deleted file mode 100644
index b5d605c..0000000
--- a/vendor/symfony/process/phpunit.xml.dist
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Process Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Tests</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/psr-http-message-bridge/.travis.yml b/vendor/symfony/psr-http-message-bridge/.travis.yml
deleted file mode 100644
index 39e7eb6..0000000
--- a/vendor/symfony/psr-http-message-bridge/.travis.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-language: php
-
-sudo: false
-
-matrix:
-    include:
-        - php: 5.3
-        - php: 5.4
-        - php: 5.5
-        - php: 5.6
-        - php: 5.3
-          env: deps=low
-        - php: 5.6
-          env: deps=high
-        - php: nightly
-        - php: hhvm
-    allow_failures:
-        - php: nightly
-        - php: hhvm
-    fast_finish: true
-
-env:
-    global:
-        - deps=no
-        - SYMFONY_DEPRECATIONS_HELPER=weak
-
-before_install:
-    - composer self-update
-    - if [[ "$TRAVIS_PHP_VERSION" != "nightly" ]] && [[ "$TRAVIS_PHP_VERSION" != "hhvm" ]]; then phpenv config-rm xdebug.ini; fi;
-    - if [[ "$TRAVIS_PHP_VERSION" != "nightly" ]] && [[ "$TRAVIS_PHP_VERSION" != "hhvm" ]] && [ $(php -r "echo PHP_MINOR_VERSION;") -le 4 ]; then echo "extension = apc.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;
-    - if [[ "$TRAVIS_PHP_VERSION" != "nightly" ]] && [[ "$TRAVIS_PHP_VERSION" != "hhvm" ]]; then php -i; fi;
-    # Set the COMPOSER_ROOT_VERSION to the right version according to the branch being built
-    - if [ "$TRAVIS_BRANCH" = "master" ]; then export COMPOSER_ROOT_VERSION=dev-master; else export COMPOSER_ROOT_VERSION="$TRAVIS_BRANCH".x-dev; fi;
-
-install:
-    - if [[ "$TRAVIS_PHP_VERSION" != "5.3" ]] && [[ "$TRAVIS_PHP_VERSION" != "5.4" ]]; then composer require --no-update zendframework/zend-diactoros; fi;
-    - if [ "$deps" = "no" ]; then export SYMFONY_DEPRECATIONS_HELPER=strict; fi;
-    - if [ "$deps" = "no" ]; then composer --prefer-source install; fi;
-    - if [ "$deps" = "high" ]; then composer --prefer-source update; fi;
-    - if [ "$deps" = "low" ]; then composer --prefer-source --prefer-lowest --prefer-stable update; fi;
-
-script:
-    - phpunit
diff --git a/vendor/symfony/psr-http-message-bridge/CHANGELOG.md b/vendor/symfony/psr-http-message-bridge/CHANGELOG.md
deleted file mode 100644
index 569522f..0000000
--- a/vendor/symfony/psr-http-message-bridge/CHANGELOG.md
+++ /dev/null
@@ -1,7 +0,0 @@
-CHANGELOG
-=========
-
-2.8.0
------
-
- * added the component
diff --git a/vendor/symfony/psr-http-message-bridge/Factory/DiactorosFactory.php b/vendor/symfony/psr-http-message-bridge/Factory/DiactorosFactory.php
deleted file mode 100644
index 31726f1..0000000
--- a/vendor/symfony/psr-http-message-bridge/Factory/DiactorosFactory.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?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\Bridge\PsrHttpMessage\Factory;
-
-use Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface;
-use Symfony\Component\HttpFoundation\BinaryFileResponse;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-use Zend\Diactoros\Response as DiactorosResponse;
-use Zend\Diactoros\ServerRequest;
-use Zend\Diactoros\ServerRequestFactory as DiactorosRequestFactory;
-use Zend\Diactoros\Stream as DiactorosStream;
-use Zend\Diactoros\UploadedFile as DiactorosUploadedFile;
-
-/**
- * Builds Psr\HttpMessage instances using the Zend Diactoros implementation.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class DiactorosFactory implements HttpMessageFactoryInterface
-{
-    public function __construct()
-    {
-        if (!class_exists('Zend\Diactoros\ServerRequestFactory')) {
-            throw new \RuntimeException('Zend Diactoros must be installed to use the DiactorosFactory.');
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function createRequest(Request $symfonyRequest)
-    {
-        $server = DiactorosRequestFactory::normalizeServer($symfonyRequest->server->all());
-        $headers = $symfonyRequest->headers->all();
-
-        try {
-            $body = new DiactorosStream($symfonyRequest->getContent(true));
-        } catch (\LogicException $e) {
-            $body = new DiactorosStream('php://temp', 'wb+');
-            $body->write($symfonyRequest->getContent());
-        }
-
-        $request = new ServerRequest(
-            $server,
-            DiactorosRequestFactory::normalizeFiles($this->getFiles($symfonyRequest->files->all())),
-            $symfonyRequest->getUri(),
-            $symfonyRequest->getMethod(),
-            $body,
-            $headers
-        );
-
-        $request = $request
-            ->withCookieParams($symfonyRequest->cookies->all())
-            ->withQueryParams($symfonyRequest->query->all())
-            ->withParsedBody($symfonyRequest->request->all())
-        ;
-
-        foreach ($symfonyRequest->attributes->all() as $key => $value) {
-            $request = $request->withAttribute($key, $value);
-        }
-
-        return $request;
-    }
-
-    /**
-     * Converts Symfony uploaded files array to the PSR one.
-     *
-     * @param array $uploadedFiles
-     *
-     * @return array
-     */
-    private function getFiles(array $uploadedFiles)
-    {
-        $files = array();
-
-        foreach ($uploadedFiles as $key => $value) {
-            if ($value instanceof UploadedFile) {
-                $files[$key] = $this->createUploadedFile($value);
-            } else {
-                $files[$key] = $this->getFiles($value);
-            }
-        }
-
-        return $files;
-    }
-
-    /**
-     * Creates a PSR-7 UploadedFile instance from a Symfony one.
-     *
-     * @param UploadedFile $symfonyUploadedFile
-     *
-     * @return UploadedFileInterface
-     */
-    private function createUploadedFile(UploadedFile $symfonyUploadedFile)
-    {
-        return new DiactorosUploadedFile(
-            $symfonyUploadedFile->getRealPath(),
-            $symfonyUploadedFile->getSize(),
-            $symfonyUploadedFile->getError(),
-            $symfonyUploadedFile->getClientOriginalName(),
-            $symfonyUploadedFile->getClientMimeType()
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function createResponse(Response $symfonyResponse)
-    {
-        if ($symfonyResponse instanceof BinaryFileResponse) {
-            $stream = new DiactorosStream($symfonyResponse->getFile()->getPathname(), 'r');
-        } else {
-            $stream = new DiactorosStream('php://temp', 'wb+');
-            if ($symfonyResponse instanceof StreamedResponse) {
-                ob_start(function ($buffer) use ($stream) {
-                    $stream->write($buffer);
-
-                    return false;
-                });
-
-                $symfonyResponse->sendContent();
-                ob_end_clean();
-            } else {
-                $stream->write($symfonyResponse->getContent());
-            }
-        }
-
-        $headers = $symfonyResponse->headers->all();
-
-        $cookies = $symfonyResponse->headers->getCookies();
-        if (!empty($cookies)) {
-            $headers['Set-Cookie'] = array();
-
-            foreach ($cookies as $cookie) {
-                $headers['Set-Cookie'][] = $cookie->__toString();
-            }
-        }
-
-        $response = new DiactorosResponse(
-            $stream,
-            $symfonyResponse->getStatusCode(),
-            $headers
-        );
-
-        $protocolVersion = $symfonyResponse->getProtocolVersion();
-        if ('1.1' !== $protocolVersion) {
-            $response = $response->withProtocolVersion($protocolVersion);
-        }
-
-        return $response;
-    }
-}
diff --git a/vendor/symfony/psr-http-message-bridge/Factory/HttpFoundationFactory.php b/vendor/symfony/psr-http-message-bridge/Factory/HttpFoundationFactory.php
deleted file mode 100644
index 2c356fd..0000000
--- a/vendor/symfony/psr-http-message-bridge/Factory/HttpFoundationFactory.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?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\Bridge\PsrHttpMessage\Factory;
-
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\UploadedFileInterface;
-use Symfony\Bridge\PsrHttpMessage\HttpFoundationFactoryInterface;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * {@inheritdoc}
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class HttpFoundationFactory implements HttpFoundationFactoryInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function createRequest(ServerRequestInterface $psrRequest)
-    {
-        $parsedBody = $psrRequest->getParsedBody();
-        $parsedBody = is_array($parsedBody) ? $parsedBody : array();
-
-        $request = new Request(
-            $psrRequest->getQueryParams(),
-            $parsedBody,
-            $psrRequest->getAttributes(),
-            $psrRequest->getCookieParams(),
-            $this->getFiles($psrRequest->getUploadedFiles()),
-            $psrRequest->getServerParams(),
-            $psrRequest->getBody()->__toString()
-        );
-        $request->headers->replace($psrRequest->getHeaders());
-
-        return $request;
-    }
-
-    /**
-     * Converts to the input array to $_FILES structure.
-     *
-     * @param array $uploadedFiles
-     *
-     * @return array
-     */
-    private function getFiles(array $uploadedFiles)
-    {
-        $files = array();
-
-        foreach ($uploadedFiles as $key => $value) {
-            if ($value instanceof UploadedFileInterface) {
-                $files[$key] = $this->createUploadedFile($value);
-            } else {
-                $files[$key] = $this->getFiles($value);
-            }
-        }
-
-        return $files;
-    }
-
-    /**
-     * Creates Symfony UploadedFile instance from PSR-7 ones.
-     *
-     * @param UploadedFileInterface $psrUploadedFile
-     *
-     * @return UploadedFile
-     */
-    private function createUploadedFile(UploadedFileInterface $psrUploadedFile)
-    {
-        $temporaryPath = $this->getTemporaryPath();
-        $psrUploadedFile->moveTo($temporaryPath);
-
-        $clientFileName = $psrUploadedFile->getClientFilename();
-
-        return new UploadedFile(
-            $temporaryPath,
-            null === $clientFileName ? '' : $clientFileName,
-            $psrUploadedFile->getClientMediaType(),
-            $psrUploadedFile->getSize(),
-            $psrUploadedFile->getError(),
-            true
-        );
-    }
-
-    /**
-     * Gets a temporary file path.
-     *
-     * @return string
-     */
-    protected function getTemporaryPath()
-    {
-        return tempnam(sys_get_temp_dir(), uniqid('symfony', true));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function createResponse(ResponseInterface $psrResponse)
-    {
-        $response = new Response(
-            $psrResponse->getBody()->__toString(),
-            $psrResponse->getStatusCode(),
-            $psrResponse->getHeaders()
-        );
-        $response->setProtocolVersion($psrResponse->getProtocolVersion());
-
-        foreach ($psrResponse->getHeader('Set-Cookie') as $cookie) {
-            $response->headers->setCookie($this->createCookie($cookie));
-        }
-
-        return $response;
-    }
-
-    /**
-     * Creates a Cookie instance from a cookie string.
-     *
-     * Some snippets have been taken from the Guzzle project: https://github.com/guzzle/guzzle/blob/5.3/src/Cookie/SetCookie.php#L34
-     *
-     * @param string $cookie
-     *
-     * @return Cookie
-     *
-     * @throws \InvalidArgumentException
-     */
-    private function createCookie($cookie)
-    {
-        foreach (explode(';', $cookie) as $part) {
-            $part = trim($part);
-
-            $data = explode('=', $part, 2);
-            $name = $data[0];
-            $value = isset($data[1]) ? trim($data[1], " \n\r\t\0\x0B\"") : null;
-
-            if (!isset($cookieName)) {
-                $cookieName = $name;
-                $cookieValue = $value;
-
-                continue;
-            }
-
-            if ('expires' === strtolower($name) && null !== $value) {
-                $cookieExpire = new \DateTime($value);
-
-                continue;
-            }
-
-            if ('path' === strtolower($name) && null !== $value) {
-                $cookiePath = $value;
-
-                continue;
-            }
-
-            if ('domain' === strtolower($name) && null !== $value) {
-                $cookieDomain = $value;
-
-                continue;
-            }
-
-            if ('secure' === strtolower($name)) {
-                $cookieSecure = true;
-
-                continue;
-            }
-
-            if ('httponly' === strtolower($name)) {
-                $cookieHttpOnly = true;
-
-                continue;
-            }
-        }
-
-        if (!isset($cookieName)) {
-            throw new \InvalidArgumentException('The value of the Set-Cookie header is malformed.');
-        }
-
-        return new Cookie(
-            $cookieName,
-            $cookieValue,
-            isset($cookieExpire) ? $cookieExpire : 0,
-            isset($cookiePath) ? $cookiePath : '/',
-            isset($cookieDomain) ? $cookieDomain : null,
-            isset($cookieSecure),
-            isset($cookieHttpOnly)
-        );
-    }
-}
diff --git a/vendor/symfony/psr-http-message-bridge/HttpFoundationFactoryInterface.php b/vendor/symfony/psr-http-message-bridge/HttpFoundationFactoryInterface.php
deleted file mode 100644
index 32ec456..0000000
--- a/vendor/symfony/psr-http-message-bridge/HttpFoundationFactoryInterface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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\Bridge\PsrHttpMessage;
-
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Creates Symfony Request and Response instances from PSR-7 ones.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-interface HttpFoundationFactoryInterface
-{
-    /**
-     * Creates a Symfony Request instance from a PSR-7 one.
-     *
-     * @param ServerRequestInterface $psrRequest
-     *
-     * @return Request
-     */
-    public function createRequest(ServerRequestInterface $psrRequest);
-
-    /**
-     * Creates a Symfony Response instance from a PSR-7 one.
-     *
-     * @param ResponseInterface $psrResponse
-     *
-     * @return Response
-     */
-    public function createResponse(ResponseInterface $psrResponse);
-}
diff --git a/vendor/symfony/psr-http-message-bridge/HttpMessageFactoryInterface.php b/vendor/symfony/psr-http-message-bridge/HttpMessageFactoryInterface.php
deleted file mode 100644
index 1367c8c..0000000
--- a/vendor/symfony/psr-http-message-bridge/HttpMessageFactoryInterface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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\Bridge\PsrHttpMessage;
-
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Creates PSR HTTP Request and Response instances from Symfony ones.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-interface HttpMessageFactoryInterface
-{
-    /**
-     * Creates a PSR-7 Request instance from a Symfony one.
-     *
-     * @param Request $symfonyRequest
-     *
-     * @return ServerRequestInterface
-     */
-    public function createRequest(Request $symfonyRequest);
-
-    /**
-     * Creates a PSR-7 Response instance from a Symfony one.
-     *
-     * @param Response $symfonyResponse
-     *
-     * @return ResponseInterface
-     */
-    public function createResponse(Response $symfonyResponse);
-}
diff --git a/vendor/symfony/psr-http-message-bridge/LICENSE b/vendor/symfony/psr-http-message-bridge/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/psr-http-message-bridge/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/psr-http-message-bridge/README.md b/vendor/symfony/psr-http-message-bridge/README.md
deleted file mode 100644
index d2b2d37..0000000
--- a/vendor/symfony/psr-http-message-bridge/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-PSR-7 Bridge
-============
-
-Provides integration for PSR7.
-
-Resources
----------
-
-If you want to run the unit tests, install dev dependencies before
-running PHPUnit:
-
-    $ cd path/to/Symfony/Bridge/PsrHttpMessage/
-    $ composer.phar install
-    $ phpunit
diff --git a/vendor/symfony/psr-http-message-bridge/composer.json b/vendor/symfony/psr-http-message-bridge/composer.json
deleted file mode 100644
index 9dc9ce7..0000000
--- a/vendor/symfony/psr-http-message-bridge/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-    "name": "symfony/psr-http-message-bridge",
-    "type": "symfony-bridge",
-    "description": "PSR HTTP message bridge",
-    "keywords": ["http", "psr-7", "http-message"],
-    "homepage": "http://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "http://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.3",
-        "psr/http-message": "~1.0",
-        "symfony/http-foundation": "~2.3|~3.0"
-    },
-    "require-dev": {
-        "symfony/phpunit-bridge": "~2.7|~3.0"
-    },
-    "suggest": {
-        "zendframework/zend-diactoros": "To use the Zend Diactoros factory"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Bridge\\PsrHttpMessage\\": "" }
-    },
-    "minimum-stability": "dev"
-}
diff --git a/vendor/symfony/psr-http-message-bridge/phpunit.xml.dist b/vendor/symfony/psr-http-message-bridge/phpunit.xml.dist
deleted file mode 100644
index 9a6e477..0000000
--- a/vendor/symfony/psr-http-message-bridge/phpunit.xml.dist
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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="vendor/autoload.php"
->
-    <testsuites>
-        <testsuite name="Symfony PSR-7 HTTP message Bridge Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/routing/.gitignore b/vendor/symfony/routing/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/routing/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/routing/Annotation/Route.php b/vendor/symfony/routing/Annotation/Route.php
deleted file mode 100644
index 7e7e056..0000000
--- a/vendor/symfony/routing/Annotation/Route.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?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\Annotation;
-
-/**
- * Annotation class for @Route().
- *
- * @Annotation
- * @Target({"CLASS", "METHOD"})
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Route
-{
-    private $path;
-    private $name;
-    private $requirements = array();
-    private $options = array();
-    private $defaults = array();
-    private $host;
-    private $methods = array();
-    private $schemes = array();
-    private $condition;
-
-    /**
-     * Constructor.
-     *
-     * @param array $data An array of key/value parameters.
-     *
-     * @throws \BadMethodCallException
-     */
-    public function __construct(array $data)
-    {
-        if (isset($data['value'])) {
-            $data['path'] = $data['value'];
-            unset($data['value']);
-        }
-
-        foreach ($data as $key => $value) {
-            $method = 'set'.str_replace('_', '', $key);
-            if (!method_exists($this, $method)) {
-                throw new \BadMethodCallException(sprintf('Unknown property "%s" on annotation "%s".', $key, get_class($this)));
-            }
-            $this->$method($value);
-        }
-    }
-
-    /**
-     * @deprecated since version 2.2, to be removed in 3.0. Use setPath instead.
-     */
-    public function setPattern($pattern)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. Use the setPath() method instead and use the "path" option instead of the "pattern" option in the route definition.', E_USER_DEPRECATED);
-
-        $this->path = $pattern;
-    }
-
-    /**
-     * @deprecated since version 2.2, to be removed in 3.0. Use getPath instead.
-     */
-    public function getPattern()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. Use the getPath() method instead and use the "path" option instead of the "pattern" option in the route definition.', E_USER_DEPRECATED);
-
-        return $this->path;
-    }
-
-    public function setPath($path)
-    {
-        $this->path = $path;
-    }
-
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    public function setHost($pattern)
-    {
-        $this->host = $pattern;
-    }
-
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function setRequirements($requirements)
-    {
-        if (isset($requirements['_method'])) {
-            if (0 === count($this->methods)) {
-                $this->methods = explode('|', $requirements['_method']);
-            }
-
-            @trigger_error('The "_method" requirement is deprecated since version 2.2 and will be removed in 3.0. Use the "methods" option instead.', E_USER_DEPRECATED);
-        }
-
-        if (isset($requirements['_scheme'])) {
-            if (0 === count($this->schemes)) {
-                $this->schemes = explode('|', $requirements['_scheme']);
-            }
-
-            @trigger_error('The "_scheme" requirement is deprecated since version 2.2 and will be removed in 3.0. Use the "schemes" option instead.', E_USER_DEPRECATED);
-        }
-
-        $this->requirements = $requirements;
-    }
-
-    public function getRequirements()
-    {
-        return $this->requirements;
-    }
-
-    public function setOptions($options)
-    {
-        $this->options = $options;
-    }
-
-    public function getOptions()
-    {
-        return $this->options;
-    }
-
-    public function setDefaults($defaults)
-    {
-        $this->defaults = $defaults;
-    }
-
-    public function getDefaults()
-    {
-        return $this->defaults;
-    }
-
-    public function setSchemes($schemes)
-    {
-        $this->schemes = is_array($schemes) ? $schemes : array($schemes);
-    }
-
-    public function getSchemes()
-    {
-        return $this->schemes;
-    }
-
-    public function setMethods($methods)
-    {
-        $this->methods = is_array($methods) ? $methods : array($methods);
-    }
-
-    public function getMethods()
-    {
-        return $this->methods;
-    }
-
-    public function setCondition($condition)
-    {
-        $this->condition = $condition;
-    }
-
-    public function getCondition()
-    {
-        return $this->condition;
-    }
-}
diff --git a/vendor/symfony/routing/CHANGELOG.md b/vendor/symfony/routing/CHANGELOG.md
deleted file mode 100644
index b5fd9db..0000000
--- a/vendor/symfony/routing/CHANGELOG.md
+++ /dev/null
@@ -1,177 +0,0 @@
-CHANGELOG
-=========
-
-2.5.0
------
-
- * [DEPRECATION] The `ApacheMatcherDumper` and `ApacheUrlMatcher` were deprecated and
-   will be removed in Symfony 3.0, since the performance gains were minimal and
-   it's hard to replicate the behaviour of PHP implementation.
-
-2.3.0
------
-
- * added RequestContext::getQueryString()
-
-2.2.0
------
-
- * [DEPRECATION] Several route settings have been renamed (the old ones will be removed in 3.0):
-
-    * The `pattern` setting for a route has been deprecated in favor of `path`
-    * The `_scheme` and `_method` requirements have been moved to the `schemes` and `methods` settings
-
-   Before:
-
-   ```yaml
-   article_edit:
-       pattern: /article/{id}
-       requirements: { '_method': 'POST|PUT', '_scheme': 'https', 'id': '\d+' }
-   ```
-
-   ```xml
-   <route id="article_edit" pattern="/article/{id}">
-       <requirement key="_method">POST|PUT</requirement>
-       <requirement key="_scheme">https</requirement>
-       <requirement key="id">\d+</requirement>
-   </route>
-   ```
-
-   ```php
-   $route = new Route();
-   $route->setPattern('/article/{id}');
-   $route->setRequirement('_method', 'POST|PUT');
-   $route->setRequirement('_scheme', 'https');
-   ```
-
-   After:
-
-   ```yaml
-   article_edit:
-       path: /article/{id}
-       methods: [POST, PUT]
-       schemes: https
-       requirements: { 'id': '\d+' }
-   ```
-
-   ```xml
-   <route id="article_edit" pattern="/article/{id}" methods="POST PUT" schemes="https">
-       <requirement key="id">\d+</requirement>
-   </route>
-   ```
-
-   ```php
-   $route = new Route();
-   $route->setPath('/article/{id}');
-   $route->setMethods(array('POST', 'PUT'));
-   $route->setSchemes('https');
-   ```
-
- * [BC BREAK] RouteCollection does not behave like a tree structure anymore but as
-   a flat array of Routes. So when using PHP to build the RouteCollection, you must
-   make sure to add routes to the sub-collection before adding it to the parent
-   collection (this is not relevant when using YAML or XML for Route definitions).
-
-   Before:
-
-   ```php
-   $rootCollection = new RouteCollection();
-   $subCollection = new RouteCollection();
-   $rootCollection->addCollection($subCollection);
-   $subCollection->add('foo', new Route('/foo'));
-   ```
-
-   After:
-
-   ```php
-   $rootCollection = new RouteCollection();
-   $subCollection = new RouteCollection();
-   $subCollection->add('foo', new Route('/foo'));
-   $rootCollection->addCollection($subCollection);
-   ```
-
-   Also one must call `addCollection` from the bottom to the top hierarchy.
-   So the correct sequence is the following (and not the reverse):
-
-   ```php
-   $childCollection->addCollection($grandchildCollection);
-   $rootCollection->addCollection($childCollection);
-   ```
-
- * [DEPRECATION] The methods `RouteCollection::getParent()` and `RouteCollection::getRoot()`
-   have been deprecated and will be removed in Symfony 2.3.
- * [BC BREAK] Misusing the `RouteCollection::addPrefix` method to add defaults, requirements
-   or options without adding a prefix is not supported anymore. So if you called `addPrefix`
-   with an empty prefix or `/` only (both have no relevance), like
-   `addPrefix('', $defaultsArray, $requirementsArray, $optionsArray)`
-   you need to use the new dedicated methods `addDefaults($defaultsArray)`,
-   `addRequirements($requirementsArray)` or `addOptions($optionsArray)` instead.
- * [DEPRECATION] The `$options` parameter to `RouteCollection::addPrefix()` has been deprecated
-   because adding options has nothing to do with adding a path prefix. If you want to add options
-   to all child routes of a RouteCollection, you can use `addOptions()`.
- * [DEPRECATION] The method `RouteCollection::getPrefix()` has been deprecated
-   because it suggested that all routes in the collection would have this prefix, which is
-   not necessarily true. On top of that, since there is no tree structure anymore, this method
-   is also useless. Don't worry about performance, prefix optimization for matching is still done
-   in the dumper, which was also improved in 2.2.0 to find even more grouping possibilities.
- * [DEPRECATION] `RouteCollection::addCollection(RouteCollection $collection)` should now only be
-   used with a single parameter. The other params `$prefix`, `$default`, `$requirements` and `$options`
-   will still work, but have been deprecated. The `addPrefix` method should be used for this
-   use-case instead.
-   Before: `$parentCollection->addCollection($collection, '/prefix', array(...), array(...))`
-   After:
-   ```php
-   $collection->addPrefix('/prefix', array(...), array(...));
-   $parentCollection->addCollection($collection);
-   ```
- * added support for the method default argument values when defining a @Route
- * Adjacent placeholders without separator work now, e.g. `/{x}{y}{z}.{_format}`.
- * Characters that function as separator between placeholders are now whitelisted
-   to fix routes with normal text around a variable, e.g. `/prefix{var}suffix`.
- * [BC BREAK] The default requirement of a variable has been changed slightly.
-   Previously it disallowed the previous and the next char around a variable. Now
-   it disallows the slash (`/`) and the next char. Using the previous char added
-   no value and was problematic because the route `/index.{_format}` would be
-   matched by `/index.ht/ml`.
- * The default requirement now uses possessive quantifiers when possible which
-   improves matching performance by up to 20% because it prevents backtracking
-   when it's not needed.
- * The ConfigurableRequirementsInterface can now also be used to disable the requirements
-   check on URL generation completely by calling `setStrictRequirements(null)`. It
-   improves performance in production environment as you should know that params always
-   pass the requirements (otherwise it would break your link anyway).
- * There is no restriction on the route name anymore. So non-alphanumeric characters
-   are now also allowed.
- * [BC BREAK] `RouteCompilerInterface::compile(Route $route)` was made static
-   (only relevant if you implemented your own RouteCompiler).
- * Added possibility to generate relative paths and network paths in the UrlGenerator, e.g.
-   "../parent-file" and "//example.com/dir/file". The third parameter in
-   `UrlGeneratorInterface::generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH)`
-   now accepts more values and you should use the constants defined in `UrlGeneratorInterface` for
-   claritiy. The old method calls with a Boolean parameter will continue to work because they
-   equal the signature using the constants.
-
-2.1.0
------
-
- * added RequestMatcherInterface
- * added RequestContext::fromRequest()
- * the UrlMatcher does not throw a \LogicException anymore when the required
-   scheme is not the current one
- * added TraceableUrlMatcher
- * added the possibility to define options, default values and requirements
-   for placeholders in prefix, including imported routes
- * added RouterInterface::getRouteCollection
- * [BC BREAK] the UrlMatcher urldecodes the route parameters only once, they
-   were decoded twice before. Note that the `urldecode()` calls have been
-   changed for a single `rawurldecode()` in order to support `+` for input
-   paths.
- * added RouteCollection::getRoot method to retrieve the root of a
-   RouteCollection tree
- * [BC BREAK] made RouteCollection::setParent private which could not have
-   been used anyway without creating inconsistencies
- * [BC BREAK] RouteCollection::remove also removes a route from parent
-   collections (not only from its children)
- * added ConfigurableRequirementsInterface that allows to disable exceptions
-   (and generate empty URLs instead) when generating a route with an invalid
-   parameter value
diff --git a/vendor/symfony/routing/CompiledRoute.php b/vendor/symfony/routing/CompiledRoute.php
deleted file mode 100644
index 3eca9ec..0000000
--- a/vendor/symfony/routing/CompiledRoute.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?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;
-
-/**
- * CompiledRoutes are returned by the RouteCompiler class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class CompiledRoute implements \Serializable
-{
-    private $variables;
-    private $tokens;
-    private $staticPrefix;
-    private $regex;
-    private $pathVariables;
-    private $hostVariables;
-    private $hostRegex;
-    private $hostTokens;
-
-    /**
-     * Constructor.
-     *
-     * @param string      $staticPrefix  The static prefix of the compiled route
-     * @param string      $regex         The regular expression to use to match this route
-     * @param array       $tokens        An array of tokens to use to generate URL for this route
-     * @param array       $pathVariables An array of path variables
-     * @param string|null $hostRegex     Host regex
-     * @param array       $hostTokens    Host tokens
-     * @param array       $hostVariables An array of host variables
-     * @param array       $variables     An array of variables (variables defined in the path and in the host patterns)
-     */
-    public function __construct($staticPrefix, $regex, array $tokens, array $pathVariables, $hostRegex = null, array $hostTokens = array(), array $hostVariables = array(), array $variables = array())
-    {
-        $this->staticPrefix = (string) $staticPrefix;
-        $this->regex = $regex;
-        $this->tokens = $tokens;
-        $this->pathVariables = $pathVariables;
-        $this->hostRegex = $hostRegex;
-        $this->hostTokens = $hostTokens;
-        $this->hostVariables = $hostVariables;
-        $this->variables = $variables;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function serialize()
-    {
-        return serialize(array(
-            'vars' => $this->variables,
-            'path_prefix' => $this->staticPrefix,
-            'path_regex' => $this->regex,
-            'path_tokens' => $this->tokens,
-            'path_vars' => $this->pathVariables,
-            'host_regex' => $this->hostRegex,
-            'host_tokens' => $this->hostTokens,
-            'host_vars' => $this->hostVariables,
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function unserialize($serialized)
-    {
-        $data = unserialize($serialized);
-        $this->variables = $data['vars'];
-        $this->staticPrefix = $data['path_prefix'];
-        $this->regex = $data['path_regex'];
-        $this->tokens = $data['path_tokens'];
-        $this->pathVariables = $data['path_vars'];
-        $this->hostRegex = $data['host_regex'];
-        $this->hostTokens = $data['host_tokens'];
-        $this->hostVariables = $data['host_vars'];
-    }
-
-    /**
-     * Returns the static prefix.
-     *
-     * @return string The static prefix
-     */
-    public function getStaticPrefix()
-    {
-        return $this->staticPrefix;
-    }
-
-    /**
-     * Returns the regex.
-     *
-     * @return string The regex
-     */
-    public function getRegex()
-    {
-        return $this->regex;
-    }
-
-    /**
-     * Returns the host regex.
-     *
-     * @return string|null The host regex or null
-     */
-    public function getHostRegex()
-    {
-        return $this->hostRegex;
-    }
-
-    /**
-     * Returns the tokens.
-     *
-     * @return array The tokens
-     */
-    public function getTokens()
-    {
-        return $this->tokens;
-    }
-
-    /**
-     * Returns the host tokens.
-     *
-     * @return array The tokens
-     */
-    public function getHostTokens()
-    {
-        return $this->hostTokens;
-    }
-
-    /**
-     * Returns the variables.
-     *
-     * @return array The variables
-     */
-    public function getVariables()
-    {
-        return $this->variables;
-    }
-
-    /**
-     * Returns the path variables.
-     *
-     * @return array The variables
-     */
-    public function getPathVariables()
-    {
-        return $this->pathVariables;
-    }
-
-    /**
-     * Returns the host variables.
-     *
-     * @return array The variables
-     */
-    public function getHostVariables()
-    {
-        return $this->hostVariables;
-    }
-}
diff --git a/vendor/symfony/routing/Exception/ExceptionInterface.php b/vendor/symfony/routing/Exception/ExceptionInterface.php
deleted file mode 100644
index db76362..0000000
--- a/vendor/symfony/routing/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * ExceptionInterface.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/symfony/routing/Exception/InvalidParameterException.php b/vendor/symfony/routing/Exception/InvalidParameterException.php
deleted file mode 100644
index 94d841f..0000000
--- a/vendor/symfony/routing/Exception/InvalidParameterException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Exception thrown when a parameter is not valid.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-class InvalidParameterException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/routing/Exception/MethodNotAllowedException.php b/vendor/symfony/routing/Exception/MethodNotAllowedException.php
deleted file mode 100644
index f684c74..0000000
--- a/vendor/symfony/routing/Exception/MethodNotAllowedException.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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\Exception;
-
-/**
- * The resource was found but the request method is not allowed.
- *
- * This exception should trigger an HTTP 405 response in your application code.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class MethodNotAllowedException extends \RuntimeException implements ExceptionInterface
-{
-    /**
-     * @var array
-     */
-    protected $allowedMethods = array();
-
-    public function __construct(array $allowedMethods, $message = null, $code = 0, \Exception $previous = null)
-    {
-        $this->allowedMethods = array_map('strtoupper', $allowedMethods);
-
-        parent::__construct($message, $code, $previous);
-    }
-
-    /**
-     * Gets the allowed HTTP methods.
-     *
-     * @return array
-     */
-    public function getAllowedMethods()
-    {
-        return $this->allowedMethods;
-    }
-}
diff --git a/vendor/symfony/routing/Exception/MissingMandatoryParametersException.php b/vendor/symfony/routing/Exception/MissingMandatoryParametersException.php
deleted file mode 100644
index 57f3a40..0000000
--- a/vendor/symfony/routing/Exception/MissingMandatoryParametersException.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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\Exception;
-
-/**
- * Exception thrown when a route cannot be generated because of missing
- * mandatory parameters.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-class MissingMandatoryParametersException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/routing/Exception/ResourceNotFoundException.php b/vendor/symfony/routing/Exception/ResourceNotFoundException.php
deleted file mode 100644
index ccbca15..0000000
--- a/vendor/symfony/routing/Exception/ResourceNotFoundException.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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\Exception;
-
-/**
- * The resource was not found.
- *
- * This exception should trigger an HTTP 404 response in your application code.
- *
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class ResourceNotFoundException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/routing/Exception/RouteNotFoundException.php b/vendor/symfony/routing/Exception/RouteNotFoundException.php
deleted file mode 100644
index 24ab0b4..0000000
--- a/vendor/symfony/routing/Exception/RouteNotFoundException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Exception thrown when a route does not exist.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-class RouteNotFoundException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php b/vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php
deleted file mode 100644
index dc97b7e..0000000
--- a/vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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\Generator;
-
-/**
- * ConfigurableRequirementsInterface must be implemented by URL generators that
- * can be configured whether an exception should be generated when the parameters
- * do not match the requirements. It is also possible to disable the requirements
- * check for URL generation completely.
- *
- * The possible configurations and use-cases:
- * - setStrictRequirements(true): Throw an exception for mismatching requirements. This
- *   is mostly useful in development environment.
- * - setStrictRequirements(false): Don't throw an exception but return null as URL for
- *   mismatching requirements and log the problem. Useful when you cannot control all
- *   params because they come from third party libs but don't want to have a 404 in
- *   production environment. It should log the mismatch so one can review it.
- * - setStrictRequirements(null): Return the URL with the given parameters without
- *   checking the requirements at all. When generating a URL you should either trust
- *   your params or you validated them beforehand because otherwise it would break your
- *   link anyway. So in production environment you should know that params always pass
- *   the requirements. Thus this option allows to disable the check on URL generation for
- *   performance reasons (saving a preg_match for each requirement every time a URL is
- *   generated).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-interface ConfigurableRequirementsInterface
-{
-    /**
-     * Enables or disables the exception on incorrect parameters.
-     * Passing null will deactivate the requirements check completely.
-     *
-     * @param bool|null $enabled
-     */
-    public function setStrictRequirements($enabled);
-
-    /**
-     * Returns whether to throw an exception on incorrect parameters.
-     * Null means the requirements check is deactivated completely.
-     *
-     * @return bool|null
-     */
-    public function isStrictRequirements();
-}
diff --git a/vendor/symfony/routing/Generator/Dumper/GeneratorDumper.php b/vendor/symfony/routing/Generator/Dumper/GeneratorDumper.php
deleted file mode 100644
index 4739bd8..0000000
--- a/vendor/symfony/routing/Generator/Dumper/GeneratorDumper.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\Generator\Dumper;
-
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * GeneratorDumper is the base class for all built-in generator dumpers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class GeneratorDumper implements GeneratorDumperInterface
-{
-    /**
-     * @var RouteCollection
-     */
-    private $routes;
-
-    /**
-     * Constructor.
-     *
-     * @param RouteCollection $routes The RouteCollection to dump
-     */
-    public function __construct(RouteCollection $routes)
-    {
-        $this->routes = $routes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRoutes()
-    {
-        return $this->routes;
-    }
-}
diff --git a/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php b/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php
deleted file mode 100644
index fed3472..0000000
--- a/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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\Generator\Dumper;
-
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * GeneratorDumperInterface is the interface that all generator dumper classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface GeneratorDumperInterface
-{
-    /**
-     * Dumps a set of routes to a string representation of executable code
-     * that can then be used to generate a URL of such a route.
-     *
-     * @param array $options An array of options
-     *
-     * @return string Executable code
-     */
-    public function dump(array $options = array());
-
-    /**
-     * Gets the routes to dump.
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function getRoutes();
-}
diff --git a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php b/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
deleted file mode 100644
index b53caaf..0000000
--- a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?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\Generator\Dumper;
-
-/**
- * PhpGeneratorDumper creates a PHP class able to generate URLs for a given set of routes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class PhpGeneratorDumper extends GeneratorDumper
-{
-    /**
-     * Dumps a set of routes to a PHP class.
-     *
-     * Available options:
-     *
-     *  * class:      The class name
-     *  * base_class: The base class name
-     *
-     * @param array $options An array of options
-     *
-     * @return string A PHP class representing the generator class
-     */
-    public function dump(array $options = array())
-    {
-        $options = array_merge(array(
-            'class' => 'ProjectUrlGenerator',
-            'base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator',
-        ), $options);
-
-        return <<<EOF
-<?php
-
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Psr\Log\LoggerInterface;
-
-/**
- * {$options['class']}
- *
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class {$options['class']} extends {$options['base_class']}
-{
-    private static \$declaredRoutes = {$this->generateDeclaredRoutes()};
-
-    /**
-     * Constructor.
-     */
-    public function __construct(RequestContext \$context, LoggerInterface \$logger = null)
-    {
-        \$this->context = \$context;
-        \$this->logger = \$logger;
-    }
-
-{$this->generateGenerateMethod()}
-}
-
-EOF;
-    }
-
-    /**
-     * Generates PHP code representing an array of defined routes
-     * together with the routes properties (e.g. requirements).
-     *
-     * @return string PHP code
-     */
-    private function generateDeclaredRoutes()
-    {
-        $routes = "array(\n";
-        foreach ($this->getRoutes()->all() as $name => $route) {
-            $compiledRoute = $route->compile();
-
-            $properties = array();
-            $properties[] = $compiledRoute->getVariables();
-            $properties[] = $route->getDefaults();
-            $properties[] = $route->getRequirements();
-            $properties[] = $compiledRoute->getTokens();
-            $properties[] = $compiledRoute->getHostTokens();
-            $properties[] = $route->getSchemes();
-
-            $routes .= sprintf("        '%s' => %s,\n", $name, str_replace("\n", '', var_export($properties, true)));
-        }
-        $routes .= '    )';
-
-        return $routes;
-    }
-
-    /**
-     * Generates PHP code representing the `generate` method that implements the UrlGeneratorInterface.
-     *
-     * @return string PHP code
-     */
-    private function generateGenerateMethod()
-    {
-        return <<<EOF
-    public function generate(\$name, \$parameters = array(), \$referenceType = self::ABSOLUTE_PATH)
-    {
-        if (!isset(self::\$declaredRoutes[\$name])) {
-            throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', \$name));
-        }
-
-        list(\$variables, \$defaults, \$requirements, \$tokens, \$hostTokens, \$requiredSchemes) = self::\$declaredRoutes[\$name];
-
-        return \$this->doGenerate(\$variables, \$defaults, \$requirements, \$tokens, \$parameters, \$name, \$referenceType, \$hostTokens, \$requiredSchemes);
-    }
-EOF;
-    }
-}
diff --git a/vendor/symfony/routing/Generator/UrlGenerator.php b/vendor/symfony/routing/Generator/UrlGenerator.php
deleted file mode 100644
index 6798951..0000000
--- a/vendor/symfony/routing/Generator/UrlGenerator.php
+++ /dev/null
@@ -1,336 +0,0 @@
-<?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\Generator;
-
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Exception\InvalidParameterException;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\Exception\MissingMandatoryParametersException;
-use Psr\Log\LoggerInterface;
-
-/**
- * UrlGenerator can generate a URL or a path for any route in the RouteCollection
- * based on the passed parameters.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInterface
-{
-    /**
-     * @var RouteCollection
-     */
-    protected $routes;
-
-    /**
-     * @var RequestContext
-     */
-    protected $context;
-
-    /**
-     * @var bool|null
-     */
-    protected $strictRequirements = true;
-
-    /**
-     * @var LoggerInterface|null
-     */
-    protected $logger;
-
-    /**
-     * This array defines the characters (besides alphanumeric ones) that will not be percent-encoded in the path segment of the generated URL.
-     *
-     * PHP's rawurlencode() encodes all chars except "a-zA-Z0-9-._~" according to RFC 3986. But we want to allow some chars
-     * to be used in their literal form (reasons below). Other chars inside the path must of course be encoded, e.g.
-     * "?" and "#" (would be interpreted wrongly as query and fragment identifier),
-     * "'" and """ (are used as delimiters in HTML).
-     */
-    protected $decodedChars = array(
-        // the slash can be used to designate a hierarchical structure and we want allow using it with this meaning
-        // some webservers don't allow the slash in encoded form in the path for security reasons anyway
-        // see http://stackoverflow.com/questions/4069002/http-400-if-2f-part-of-get-url-in-jboss
-        '%2F' => '/',
-        // the following chars are general delimiters in the URI specification but have only special meaning in the authority component
-        // so they can safely be used in the path in unencoded form
-        '%40' => '@',
-        '%3A' => ':',
-        // these chars are only sub-delimiters that have no predefined meaning and can therefore be used literally
-        // so URI producing applications can use these chars to delimit subcomponents in a path segment without being encoded for better readability
-        '%3B' => ';',
-        '%2C' => ',',
-        '%3D' => '=',
-        '%2B' => '+',
-        '%21' => '!',
-        '%2A' => '*',
-        '%7C' => '|',
-    );
-
-    /**
-     * Constructor.
-     *
-     * @param RouteCollection      $routes  A RouteCollection instance
-     * @param RequestContext       $context The context
-     * @param LoggerInterface|null $logger  A logger instance
-     */
-    public function __construct(RouteCollection $routes, RequestContext $context, LoggerInterface $logger = null)
-    {
-        $this->routes = $routes;
-        $this->context = $context;
-        $this->logger = $logger;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContext(RequestContext $context)
-    {
-        $this->context = $context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setStrictRequirements($enabled)
-    {
-        $this->strictRequirements = null === $enabled ? null : (bool) $enabled;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isStrictRequirements()
-    {
-        return $this->strictRequirements;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH)
-    {
-        if (null === $route = $this->routes->get($name)) {
-            throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name));
-        }
-
-        // the Route has a cache of its own and is not recompiled as long as it does not get modified
-        $compiledRoute = $route->compile();
-
-        return $this->doGenerate($compiledRoute->getVariables(), $route->getDefaults(), $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $name, $referenceType, $compiledRoute->getHostTokens(), $route->getSchemes());
-    }
-
-    /**
-     * @throws MissingMandatoryParametersException When some parameters are missing that are mandatory for the route
-     * @throws InvalidParameterException           When a parameter value for a placeholder is not correct because
-     *                                             it does not match the requirement
-     */
-    protected function doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, array $requiredSchemes = array())
-    {
-        $variables = array_flip($variables);
-        $mergedParams = array_replace($defaults, $this->context->getParameters(), $parameters);
-
-        // all params must be given
-        if ($diff = array_diff_key($variables, $mergedParams)) {
-            throw new MissingMandatoryParametersException(sprintf('Some mandatory parameters are missing ("%s") to generate a URL for route "%s".', implode('", "', array_keys($diff)), $name));
-        }
-
-        $url = '';
-        $optional = true;
-        foreach ($tokens as $token) {
-            if ('variable' === $token[0]) {
-                if (!$optional || !array_key_exists($token[3], $defaults) || null !== $mergedParams[$token[3]] && (string) $mergedParams[$token[3]] !== (string) $defaults[$token[3]]) {
-                    // check requirement
-                    if (null !== $this->strictRequirements && !preg_match('#^'.$token[2].'$#', $mergedParams[$token[3]])) {
-                        $message = sprintf('Parameter "%s" for route "%s" must match "%s" ("%s" given) to generate a corresponding URL.', $token[3], $name, $token[2], $mergedParams[$token[3]]);
-                        if ($this->strictRequirements) {
-                            throw new InvalidParameterException($message);
-                        }
-
-                        if ($this->logger) {
-                            $this->logger->error($message);
-                        }
-
-                        return;
-                    }
-
-                    $url = $token[1].$mergedParams[$token[3]].$url;
-                    $optional = false;
-                }
-            } else {
-                // static text
-                $url = $token[1].$url;
-                $optional = false;
-            }
-        }
-
-        if ('' === $url) {
-            $url = '/';
-        }
-
-        // the contexts base URL is already encoded (see Symfony\Component\HttpFoundation\Request)
-        $url = strtr(rawurlencode($url), $this->decodedChars);
-
-        // the path segments "." and ".." are interpreted as relative reference when resolving a URI; see http://tools.ietf.org/html/rfc3986#section-3.3
-        // so we need to encode them as they are not used for this purpose here
-        // otherwise we would generate a URI that, when followed by a user agent (e.g. browser), does not match this route
-        $url = strtr($url, array('/../' => '/%2E%2E/', '/./' => '/%2E/'));
-        if ('/..' === substr($url, -3)) {
-            $url = substr($url, 0, -2).'%2E%2E';
-        } elseif ('/.' === substr($url, -2)) {
-            $url = substr($url, 0, -1).'%2E';
-        }
-
-        $schemeAuthority = '';
-        if ($host = $this->context->getHost()) {
-            $scheme = $this->context->getScheme();
-
-            if ($requiredSchemes) {
-                $schemeMatched = false;
-                foreach ($requiredSchemes as $requiredScheme) {
-                    if ($scheme === $requiredScheme) {
-                        $schemeMatched = true;
-
-                        break;
-                    }
-                }
-
-                if (!$schemeMatched) {
-                    $referenceType = self::ABSOLUTE_URL;
-                    $scheme = current($requiredSchemes);
-                }
-            } elseif (isset($requirements['_scheme']) && ($req = strtolower($requirements['_scheme'])) && $scheme !== $req) {
-                // We do this for BC; to be removed if _scheme is not supported anymore
-                $referenceType = self::ABSOLUTE_URL;
-                $scheme = $req;
-            }
-
-            if ($hostTokens) {
-                $routeHost = '';
-                foreach ($hostTokens as $token) {
-                    if ('variable' === $token[0]) {
-                        if (null !== $this->strictRequirements && !preg_match('#^'.$token[2].'$#i', $mergedParams[$token[3]])) {
-                            $message = sprintf('Parameter "%s" for route "%s" must match "%s" ("%s" given) to generate a corresponding URL.', $token[3], $name, $token[2], $mergedParams[$token[3]]);
-
-                            if ($this->strictRequirements) {
-                                throw new InvalidParameterException($message);
-                            }
-
-                            if ($this->logger) {
-                                $this->logger->error($message);
-                            }
-
-                            return;
-                        }
-
-                        $routeHost = $token[1].$mergedParams[$token[3]].$routeHost;
-                    } else {
-                        $routeHost = $token[1].$routeHost;
-                    }
-                }
-
-                if ($routeHost !== $host) {
-                    $host = $routeHost;
-                    if (self::ABSOLUTE_URL !== $referenceType) {
-                        $referenceType = self::NETWORK_PATH;
-                    }
-                }
-            }
-
-            if (self::ABSOLUTE_URL === $referenceType || self::NETWORK_PATH === $referenceType) {
-                $port = '';
-                if ('http' === $scheme && 80 != $this->context->getHttpPort()) {
-                    $port = ':'.$this->context->getHttpPort();
-                } elseif ('https' === $scheme && 443 != $this->context->getHttpsPort()) {
-                    $port = ':'.$this->context->getHttpsPort();
-                }
-
-                $schemeAuthority = self::NETWORK_PATH === $referenceType ? '//' : "$scheme://";
-                $schemeAuthority .= $host.$port;
-            }
-        }
-
-        if (self::RELATIVE_PATH === $referenceType) {
-            $url = self::getRelativePath($this->context->getPathInfo(), $url);
-        } else {
-            $url = $schemeAuthority.$this->context->getBaseUrl().$url;
-        }
-
-        // add a query string if needed
-        $extra = array_diff_key($parameters, $variables, $defaults);
-        if ($extra && $query = http_build_query($extra, '', '&')) {
-            // "/" and "?" can be left decoded for better user experience, see
-            // http://tools.ietf.org/html/rfc3986#section-3.4
-            $url .= '?'.strtr($query, array('%2F' => '/'));
-        }
-
-        return $url;
-    }
-
-    /**
-     * Returns the target path as relative reference from the base path.
-     *
-     * Only the URIs path component (no schema, host etc.) is relevant and must be given, starting with a slash.
-     * Both paths must be absolute and not contain relative parts.
-     * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives.
-     * Furthermore, they can be used to reduce the link size in documents.
-     *
-     * Example target paths, given a base path of "/a/b/c/d":
-     * - "/a/b/c/d"     -> ""
-     * - "/a/b/c/"      -> "./"
-     * - "/a/b/"        -> "../"
-     * - "/a/b/c/other" -> "other"
-     * - "/a/x/y"       -> "../../x/y"
-     *
-     * @param string $basePath   The base path
-     * @param string $targetPath The target path
-     *
-     * @return string The relative target path
-     */
-    public static function getRelativePath($basePath, $targetPath)
-    {
-        if ($basePath === $targetPath) {
-            return '';
-        }
-
-        $sourceDirs = explode('/', isset($basePath[0]) && '/' === $basePath[0] ? substr($basePath, 1) : $basePath);
-        $targetDirs = explode('/', isset($targetPath[0]) && '/' === $targetPath[0] ? substr($targetPath, 1) : $targetPath);
-        array_pop($sourceDirs);
-        $targetFile = array_pop($targetDirs);
-
-        foreach ($sourceDirs as $i => $dir) {
-            if (isset($targetDirs[$i]) && $dir === $targetDirs[$i]) {
-                unset($sourceDirs[$i], $targetDirs[$i]);
-            } else {
-                break;
-            }
-        }
-
-        $targetDirs[] = $targetFile;
-        $path = str_repeat('../', count($sourceDirs)).implode('/', $targetDirs);
-
-        // A reference to the same base directory or an empty subdirectory must be prefixed with "./".
-        // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used
-        // as the first segment of a relative-path reference, as it would be mistaken for a scheme name
-        // (see http://tools.ietf.org/html/rfc3986#section-4.2).
-        return '' === $path || '/' === $path[0]
-            || false !== ($colonPos = strpos($path, ':')) && ($colonPos < ($slashPos = strpos($path, '/')) || false === $slashPos)
-            ? "./$path" : $path;
-    }
-}
diff --git a/vendor/symfony/routing/Generator/UrlGeneratorInterface.php b/vendor/symfony/routing/Generator/UrlGeneratorInterface.php
deleted file mode 100644
index fc294b7..0000000
--- a/vendor/symfony/routing/Generator/UrlGeneratorInterface.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?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\Generator;
-
-use Symfony\Component\Routing\Exception\InvalidParameterException;
-use Symfony\Component\Routing\Exception\MissingMandatoryParametersException;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
-use Symfony\Component\Routing\RequestContextAwareInterface;
-
-/**
- * UrlGeneratorInterface is the interface that all URL generator classes must implement.
- *
- * The constants in this interface define the different types of resource references that
- * are declared in RFC 3986: http://tools.ietf.org/html/rfc3986
- * We are using the term "URL" instead of "URI" as this is more common in web applications
- * and we do not need to distinguish them as the difference is mostly semantical and
- * less technical. Generating URIs, i.e. representation-independent resource identifiers,
- * is also possible.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-interface UrlGeneratorInterface extends RequestContextAwareInterface
-{
-    /**
-     * Generates an absolute URL, e.g. "http://example.com/dir/file".
-     */
-    const ABSOLUTE_URL = true;
-
-    /**
-     * Generates an absolute path, e.g. "/dir/file".
-     */
-    const ABSOLUTE_PATH = false;
-
-    /**
-     * Generates a relative path based on the current request path, e.g. "../parent-file".
-     *
-     * @see UrlGenerator::getRelativePath()
-     */
-    const RELATIVE_PATH = 'relative';
-
-    /**
-     * Generates a network path, e.g. "//example.com/dir/file".
-     * Such reference reuses the current scheme but specifies the host.
-     */
-    const NETWORK_PATH = 'network';
-
-    /**
-     * Generates a URL or path for a specific route based on the given parameters.
-     *
-     * Parameters that reference placeholders in the route pattern will substitute them in the
-     * path or host. Extra params are added as query string to the URL.
-     *
-     * When the passed reference type cannot be generated for the route because it requires a different
-     * host or scheme than the current one, the method will return a more comprehensive reference
-     * that includes the required params. For example, when you call this method with $referenceType = ABSOLUTE_PATH
-     * but the route requires the https scheme whereas the current scheme is http, it will instead return an
-     * ABSOLUTE_URL with the https scheme and the current host. This makes sure the generated URL matches
-     * the route in any case.
-     *
-     * 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)
-     *
-     * @return string The generated URL
-     *
-     * @throws RouteNotFoundException              If the named route doesn't exist
-     * @throws MissingMandatoryParametersException When some parameters are missing that are mandatory for the route
-     * @throws InvalidParameterException           When a parameter value for a placeholder is not correct because
-     *                                             it does not match the requirement
-     */
-    public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH);
-}
diff --git a/vendor/symfony/routing/LICENSE b/vendor/symfony/routing/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/routing/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/routing/Loader/AnnotationClassLoader.php b/vendor/symfony/routing/Loader/AnnotationClassLoader.php
deleted file mode 100644
index 7b0ef25..0000000
--- a/vendor/symfony/routing/Loader/AnnotationClassLoader.php
+++ /dev/null
@@ -1,268 +0,0 @@
-<?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 Doctrine\Common\Annotations\Reader;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\Config\Loader\LoaderResolverInterface;
-
-/**
- * AnnotationClassLoader loads routing information from a PHP class and its methods.
- *
- * You need to define an implementation for the getRouteDefaults() method. Most of the
- * time, this method should define some PHP callable to be called for the route
- * (a controller in MVC speak).
- *
- * The @Route annotation can be set on the class (for global parameters),
- * and on each method.
- *
- * The @Route annotation main value is the route path. The annotation also
- * recognizes several parameters: requirements, options, defaults, schemes,
- * methods, host, and name. The name parameter is mandatory.
- * Here is an example of how you should be able to use it:
- *
- *     /**
- *      * @Route("/Blog")
- *      * /
- *     class Blog
- *     {
- *         /**
- *          * @Route("/", name="blog_index")
- *          * /
- *         public function index()
- *         {
- *         }
- *
- *         /**
- *          * @Route("/{id}", name="blog_post", requirements = {"id" = "\d+"})
- *          * /
- *         public function show()
- *         {
- *         }
- *     }
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class AnnotationClassLoader implements LoaderInterface
-{
-    /**
-     * @var Reader
-     */
-    protected $reader;
-
-    /**
-     * @var string
-     */
-    protected $routeAnnotationClass = 'Symfony\\Component\\Routing\\Annotation\\Route';
-
-    /**
-     * @var int
-     */
-    protected $defaultRouteIndex = 0;
-
-    /**
-     * Constructor.
-     *
-     * @param Reader $reader
-     */
-    public function __construct(Reader $reader)
-    {
-        $this->reader = $reader;
-    }
-
-    /**
-     * Sets the annotation class to read route properties from.
-     *
-     * @param string $class A fully-qualified class name
-     */
-    public function setRouteAnnotationClass($class)
-    {
-        $this->routeAnnotationClass = $class;
-    }
-
-    /**
-     * Loads from annotations from a class.
-     *
-     * @param string      $class A class name
-     * @param string|null $type  The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     *
-     * @throws \InvalidArgumentException When route can't be parsed
-     */
-    public function load($class, $type = null)
-    {
-        if (!class_exists($class)) {
-            throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class));
-        }
-
-        $class = new \ReflectionClass($class);
-        if ($class->isAbstract()) {
-            throw new \InvalidArgumentException(sprintf('Annotations from class "%s" cannot be read as it is abstract.', $class));
-        }
-
-        $globals = $this->getGlobals($class);
-
-        $collection = new RouteCollection();
-        $collection->addResource(new FileResource($class->getFileName()));
-
-        foreach ($class->getMethods() as $method) {
-            $this->defaultRouteIndex = 0;
-            foreach ($this->reader->getMethodAnnotations($method) as $annot) {
-                if ($annot instanceof $this->routeAnnotationClass) {
-                    $this->addRoute($collection, $annot, $globals, $class, $method);
-                }
-            }
-        }
-
-        return $collection;
-    }
-
-    protected function addRoute(RouteCollection $collection, $annot, $globals, \ReflectionClass $class, \ReflectionMethod $method)
-    {
-        $name = $annot->getName();
-        if (null === $name) {
-            $name = $this->getDefaultRouteName($class, $method);
-        }
-
-        $defaults = array_replace($globals['defaults'], $annot->getDefaults());
-        foreach ($method->getParameters() as $param) {
-            if (!isset($defaults[$param->getName()]) && $param->isDefaultValueAvailable()) {
-                $defaults[$param->getName()] = $param->getDefaultValue();
-            }
-        }
-        $requirements = array_replace($globals['requirements'], $annot->getRequirements());
-        $options = array_replace($globals['options'], $annot->getOptions());
-        $schemes = array_merge($globals['schemes'], $annot->getSchemes());
-        $methods = array_merge($globals['methods'], $annot->getMethods());
-
-        $host = $annot->getHost();
-        if (null === $host) {
-            $host = $globals['host'];
-        }
-
-        $condition = $annot->getCondition();
-        if (null === $condition) {
-            $condition = $globals['condition'];
-        }
-
-        $route = $this->createRoute($globals['path'].$annot->getPath(), $defaults, $requirements, $options, $host, $schemes, $methods, $condition);
-
-        $this->configureRoute($route, $class, $method, $annot);
-
-        $collection->add($name, $route);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return is_string($resource) && preg_match('/^(?:\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)+$/', $resource) && (!$type || 'annotation' === $type);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setResolver(LoaderResolverInterface $resolver)
-    {
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getResolver()
-    {
-    }
-
-    /**
-     * Gets the default route name for a class method.
-     *
-     * @param \ReflectionClass  $class
-     * @param \ReflectionMethod $method
-     *
-     * @return string
-     */
-    protected function getDefaultRouteName(\ReflectionClass $class, \ReflectionMethod $method)
-    {
-        $name = strtolower(str_replace('\\', '_', $class->name).'_'.$method->name);
-        if ($this->defaultRouteIndex > 0) {
-            $name .= '_'.$this->defaultRouteIndex;
-        }
-        ++$this->defaultRouteIndex;
-
-        return $name;
-    }
-
-    protected function getGlobals(\ReflectionClass $class)
-    {
-        $globals = array(
-            'path' => '',
-            'requirements' => array(),
-            'options' => array(),
-            'defaults' => array(),
-            'schemes' => array(),
-            'methods' => array(),
-            'host' => '',
-            'condition' => '',
-        );
-
-        if ($annot = $this->reader->getClassAnnotation($class, $this->routeAnnotationClass)) {
-            // for BC reasons
-            if (null !== $annot->getPath()) {
-                $globals['path'] = $annot->getPath();
-            } elseif (null !== $annot->getPattern()) {
-                $globals['path'] = $annot->getPattern();
-            }
-
-            if (null !== $annot->getRequirements()) {
-                $globals['requirements'] = $annot->getRequirements();
-            }
-
-            if (null !== $annot->getOptions()) {
-                $globals['options'] = $annot->getOptions();
-            }
-
-            if (null !== $annot->getDefaults()) {
-                $globals['defaults'] = $annot->getDefaults();
-            }
-
-            if (null !== $annot->getSchemes()) {
-                $globals['schemes'] = $annot->getSchemes();
-            }
-
-            if (null !== $annot->getMethods()) {
-                $globals['methods'] = $annot->getMethods();
-            }
-
-            if (null !== $annot->getHost()) {
-                $globals['host'] = $annot->getHost();
-            }
-
-            if (null !== $annot->getCondition()) {
-                $globals['condition'] = $annot->getCondition();
-            }
-        }
-
-        return $globals;
-    }
-
-    protected function createRoute($path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition)
-    {
-        return new Route($path, $defaults, $requirements, $options, $host, $schemes, $methods, $condition);
-    }
-
-    abstract protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot);
-}
diff --git a/vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php b/vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php
deleted file mode 100644
index abd68ed..0000000
--- a/vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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\Routing\RouteCollection;
-use Symfony\Component\Config\Resource\DirectoryResource;
-
-/**
- * AnnotationDirectoryLoader loads routing information from annotations set
- * on PHP classes and methods.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AnnotationDirectoryLoader extends AnnotationFileLoader
-{
-    /**
-     * Loads from annotations from a directory.
-     *
-     * @param string      $path A directory path
-     * @param string|null $type The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     *
-     * @throws \InvalidArgumentException When the directory does not exist or its routes cannot be parsed
-     */
-    public function load($path, $type = null)
-    {
-        $dir = $this->locator->locate($path);
-
-        $collection = new RouteCollection();
-        $collection->addResource(new DirectoryResource($dir, '/\.php$/'));
-        $files = iterator_to_array(new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir), \RecursiveIteratorIterator::LEAVES_ONLY));
-        usort($files, function (\SplFileInfo $a, \SplFileInfo $b) {
-            return (string) $a > (string) $b ? 1 : -1;
-        });
-
-        foreach ($files as $file) {
-            if (!$file->isFile() || '.php' !== substr($file->getFilename(), -4)) {
-                continue;
-            }
-
-            if ($class = $this->findClass($file)) {
-                $refl = new \ReflectionClass($class);
-                if ($refl->isAbstract()) {
-                    continue;
-                }
-
-                $collection->addCollection($this->loader->load($class, $type));
-            }
-        }
-
-        return $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        try {
-            $path = $this->locator->locate($resource);
-        } catch (\Exception $e) {
-            return false;
-        }
-
-        return is_string($resource) && is_dir($path) && (!$type || 'annotation' === $type);
-    }
-}
diff --git a/vendor/symfony/routing/Loader/AnnotationFileLoader.php b/vendor/symfony/routing/Loader/AnnotationFileLoader.php
deleted file mode 100644
index 8ce57ac..0000000
--- a/vendor/symfony/routing/Loader/AnnotationFileLoader.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?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\Routing\RouteCollection;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Config\Loader\FileLoader;
-use Symfony\Component\Config\FileLocatorInterface;
-
-/**
- * AnnotationFileLoader loads routing information from annotations set
- * on a PHP class and its methods.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class AnnotationFileLoader extends FileLoader
-{
-    protected $loader;
-
-    /**
-     * Constructor.
-     *
-     * @param FileLocatorInterface  $locator A FileLocator instance
-     * @param AnnotationClassLoader $loader  An AnnotationClassLoader instance
-     *
-     * @throws \RuntimeException
-     */
-    public function __construct(FileLocatorInterface $locator, AnnotationClassLoader $loader)
-    {
-        if (!function_exists('token_get_all')) {
-            throw new \RuntimeException('The Tokenizer extension is required for the routing annotation loaders.');
-        }
-
-        parent::__construct($locator);
-
-        $this->loader = $loader;
-    }
-
-    /**
-     * Loads from annotations from a file.
-     *
-     * @param string      $file A PHP file path
-     * @param string|null $type The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     *
-     * @throws \InvalidArgumentException When the file does not exist or its routes cannot be parsed
-     */
-    public function load($file, $type = null)
-    {
-        $path = $this->locator->locate($file);
-
-        $collection = new RouteCollection();
-        if ($class = $this->findClass($path)) {
-            $collection->addResource(new FileResource($path));
-            $collection->addCollection($this->loader->load($class, $type));
-        }
-
-        return $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION) && (!$type || 'annotation' === $type);
-    }
-
-    /**
-     * Returns the full class name for the first class in the file.
-     *
-     * @param string $file A PHP file path
-     *
-     * @return string|false Full class name if found, false otherwise
-     */
-    protected function findClass($file)
-    {
-        $class = false;
-        $namespace = false;
-        $tokens = token_get_all(file_get_contents($file));
-        for ($i = 0, $count = count($tokens); $i < $count; ++$i) {
-            $token = $tokens[$i];
-
-            if (!is_array($token)) {
-                continue;
-            }
-
-            if (true === $class && T_STRING === $token[0]) {
-                return $namespace.'\\'.$token[1];
-            }
-
-            if (true === $namespace && T_STRING === $token[0]) {
-                $namespace = '';
-                do {
-                    $namespace .= $token[1];
-                    $token = $tokens[++$i];
-                } while ($i < $count && is_array($token) && in_array($token[0], array(T_NS_SEPARATOR, T_STRING)));
-            }
-
-            if (T_CLASS === $token[0]) {
-                $class = true;
-            }
-
-            if (T_NAMESPACE === $token[0]) {
-                $namespace = true;
-            }
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/routing/Loader/ClosureLoader.php b/vendor/symfony/routing/Loader/ClosureLoader.php
deleted file mode 100644
index 5df9f6a..0000000
--- a/vendor/symfony/routing/Loader/ClosureLoader.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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\Routing\RouteCollection;
-
-/**
- * ClosureLoader loads routes from a PHP closure.
- *
- * The Closure must return a RouteCollection instance.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ClosureLoader extends Loader
-{
-    /**
-     * Loads a Closure.
-     *
-     * @param \Closure    $closure A Closure
-     * @param string|null $type    The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function load($closure, $type = null)
-    {
-        return $closure();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return $resource instanceof \Closure && (!$type || 'closure' === $type);
-    }
-}
diff --git a/vendor/symfony/routing/Loader/PhpFileLoader.php b/vendor/symfony/routing/Loader/PhpFileLoader.php
deleted file mode 100644
index b4ba5fb..0000000
--- a/vendor/symfony/routing/Loader/PhpFileLoader.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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\Config\Resource\FileResource;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * PhpFileLoader loads routes from a PHP file.
- *
- * The file must return a RouteCollection instance.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class PhpFileLoader extends FileLoader
-{
-    /**
-     * Loads a PHP file.
-     *
-     * @param string      $file A PHP file path
-     * @param string|null $type The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function load($file, $type = null)
-    {
-        $path = $this->locator->locate($file);
-        $this->setCurrentDir(dirname($path));
-
-        $collection = self::includeFile($path, $this);
-        $collection->addResource(new FileResource($path));
-
-        return $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION) && (!$type || 'php' === $type);
-    }
-
-    /**
-     * Safe include. Used for scope isolation.
-     *
-     * @param string        $file   File to include
-     * @param PhpFileLoader $loader the loader variable is exposed to the included file below
-     *
-     * @return RouteCollection
-     */
-    private static function includeFile($file, PhpFileLoader $loader)
-    {
-        return include $file;
-    }
-}
diff --git a/vendor/symfony/routing/Loader/XmlFileLoader.php b/vendor/symfony/routing/Loader/XmlFileLoader.php
deleted file mode 100644
index b5c24f9..0000000
--- a/vendor/symfony/routing/Loader/XmlFileLoader.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?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\Routing\RouteCollection;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Config\Loader\FileLoader;
-use Symfony\Component\Config\Util\XmlUtils;
-
-/**
- * XmlFileLoader loads XML routing files.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class XmlFileLoader extends FileLoader
-{
-    const NAMESPACE_URI = 'http://symfony.com/schema/routing';
-    const SCHEME_PATH = '/schema/routing/routing-1.0.xsd';
-
-    /**
-     * Loads an XML file.
-     *
-     * @param string      $file An XML file path
-     * @param string|null $type The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     *
-     * @throws \InvalidArgumentException When the file cannot be loaded or when the XML cannot be
-     *                                   parsed because it does not validate against the scheme.
-     */
-    public function load($file, $type = null)
-    {
-        $path = $this->locator->locate($file);
-
-        $xml = $this->loadFile($path);
-
-        $collection = new RouteCollection();
-        $collection->addResource(new FileResource($path));
-
-        // process routes and imports
-        foreach ($xml->documentElement->childNodes as $node) {
-            if (!$node instanceof \DOMElement) {
-                continue;
-            }
-
-            $this->parseNode($collection, $node, $path, $file);
-        }
-
-        return $collection;
-    }
-
-    /**
-     * Parses a node from a loaded XML file.
-     *
-     * @param RouteCollection $collection Collection to associate with the node
-     * @param \DOMElement     $node       Element to parse
-     * @param string          $path       Full path of the XML file being processed
-     * @param string          $file       Loaded file name
-     *
-     * @throws \InvalidArgumentException When the XML is invalid
-     */
-    protected function parseNode(RouteCollection $collection, \DOMElement $node, $path, $file)
-    {
-        if (self::NAMESPACE_URI !== $node->namespaceURI) {
-            return;
-        }
-
-        switch ($node->localName) {
-            case 'route':
-                $this->parseRoute($collection, $node, $path);
-                break;
-            case 'import':
-                $this->parseImport($collection, $node, $path, $file);
-                break;
-            default:
-                throw new \InvalidArgumentException(sprintf('Unknown tag "%s" used in file "%s". Expected "route" or "import".', $node->localName, $path));
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return is_string($resource) && 'xml' === pathinfo($resource, PATHINFO_EXTENSION) && (!$type || 'xml' === $type);
-    }
-
-    /**
-     * Parses a route and adds it to the RouteCollection.
-     *
-     * @param RouteCollection $collection RouteCollection instance
-     * @param \DOMElement     $node       Element to parse that represents a Route
-     * @param string          $path       Full path of the XML file being processed
-     *
-     * @throws \InvalidArgumentException When the XML is invalid
-     */
-    protected function parseRoute(RouteCollection $collection, \DOMElement $node, $path)
-    {
-        if ('' === ($id = $node->getAttribute('id')) || (!$node->hasAttribute('pattern') && !$node->hasAttribute('path'))) {
-            throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must have an "id" and a "path" attribute.', $path));
-        }
-
-        if ($node->hasAttribute('pattern')) {
-            if ($node->hasAttribute('path')) {
-                throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" cannot define both a "path" and a "pattern" attribute. Use only "path".', $path));
-            }
-
-            @trigger_error(sprintf('The "pattern" option in file "%s" is deprecated since version 2.2 and will be removed in 3.0. Use the "path" option in the route definition instead.', $path), E_USER_DEPRECATED);
-
-            $node->setAttribute('path', $node->getAttribute('pattern'));
-            $node->removeAttribute('pattern');
-        }
-
-        $schemes = preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, PREG_SPLIT_NO_EMPTY);
-        $methods = preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, PREG_SPLIT_NO_EMPTY);
-
-        list($defaults, $requirements, $options, $condition) = $this->parseConfigs($node, $path);
-
-        if (isset($requirements['_method'])) {
-            if (0 === count($methods)) {
-                $methods = explode('|', $requirements['_method']);
-            }
-
-            unset($requirements['_method']);
-            @trigger_error(sprintf('The "_method" requirement of route "%s" in file "%s" is deprecated since version 2.2 and will be removed in 3.0. Use the "methods" attribute instead.', $id, $path), E_USER_DEPRECATED);
-        }
-
-        if (isset($requirements['_scheme'])) {
-            if (0 === count($schemes)) {
-                $schemes = explode('|', $requirements['_scheme']);
-            }
-
-            unset($requirements['_scheme']);
-            @trigger_error(sprintf('The "_scheme" requirement of route "%s" in file "%s" is deprecated since version 2.2 and will be removed in 3.0. Use the "schemes" attribute instead.', $id, $path), E_USER_DEPRECATED);
-        }
-
-        $route = new Route($node->getAttribute('path'), $defaults, $requirements, $options, $node->getAttribute('host'), $schemes, $methods, $condition);
-        $collection->add($id, $route);
-    }
-
-    /**
-     * Parses an import and adds the routes in the resource to the RouteCollection.
-     *
-     * @param RouteCollection $collection RouteCollection instance
-     * @param \DOMElement     $node       Element to parse that represents a Route
-     * @param string          $path       Full path of the XML file being processed
-     * @param string          $file       Loaded file name
-     *
-     * @throws \InvalidArgumentException When the XML is invalid
-     */
-    protected function parseImport(RouteCollection $collection, \DOMElement $node, $path, $file)
-    {
-        if ('' === $resource = $node->getAttribute('resource')) {
-            throw new \InvalidArgumentException(sprintf('The <import> element in file "%s" must have a "resource" attribute.', $path));
-        }
-
-        $type = $node->getAttribute('type');
-        $prefix = $node->getAttribute('prefix');
-        $host = $node->hasAttribute('host') ? $node->getAttribute('host') : null;
-        $schemes = $node->hasAttribute('schemes') ? preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, PREG_SPLIT_NO_EMPTY) : null;
-        $methods = $node->hasAttribute('methods') ? preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, PREG_SPLIT_NO_EMPTY) : null;
-
-        list($defaults, $requirements, $options, $condition) = $this->parseConfigs($node, $path);
-
-        $this->setCurrentDir(dirname($path));
-
-        $subCollection = $this->import($resource, ('' !== $type ? $type : null), false, $file);
-        /* @var $subCollection RouteCollection */
-        $subCollection->addPrefix($prefix);
-        if (null !== $host) {
-            $subCollection->setHost($host);
-        }
-        if (null !== $condition) {
-            $subCollection->setCondition($condition);
-        }
-        if (null !== $schemes) {
-            $subCollection->setSchemes($schemes);
-        }
-        if (null !== $methods) {
-            $subCollection->setMethods($methods);
-        }
-        $subCollection->addDefaults($defaults);
-        $subCollection->addRequirements($requirements);
-        $subCollection->addOptions($options);
-
-        $collection->addCollection($subCollection);
-    }
-
-    /**
-     * Loads an XML file.
-     *
-     * @param string $file An XML file path
-     *
-     * @return \DOMDocument
-     *
-     * @throws \InvalidArgumentException When loading of XML file fails because of syntax errors
-     *                                   or when the XML structure is not as expected by the scheme -
-     *                                   see validate()
-     */
-    protected function loadFile($file)
-    {
-        return XmlUtils::loadFile($file, __DIR__.static::SCHEME_PATH);
-    }
-
-    /**
-     * Parses the config elements (default, requirement, option).
-     *
-     * @param \DOMElement $node Element to parse that contains the configs
-     * @param string      $path Full path of the XML file being processed
-     *
-     * @return array An array with the defaults as first item, requirements as second and options as third.
-     *
-     * @throws \InvalidArgumentException When the XML is invalid
-     */
-    private function parseConfigs(\DOMElement $node, $path)
-    {
-        $defaults = array();
-        $requirements = array();
-        $options = array();
-        $condition = null;
-
-        foreach ($node->getElementsByTagNameNS(self::NAMESPACE_URI, '*') as $n) {
-            switch ($n->localName) {
-                case 'default':
-                    if ($this->isElementValueNull($n)) {
-                        $defaults[$n->getAttribute('key')] = null;
-                    } else {
-                        $defaults[$n->getAttribute('key')] = trim($n->textContent);
-                    }
-
-                    break;
-                case 'requirement':
-                    $requirements[$n->getAttribute('key')] = trim($n->textContent);
-                    break;
-                case 'option':
-                    $options[$n->getAttribute('key')] = trim($n->textContent);
-                    break;
-                case 'condition':
-                    $condition = trim($n->textContent);
-                    break;
-                default:
-                    throw new \InvalidArgumentException(sprintf('Unknown tag "%s" used in file "%s". Expected "default", "requirement" or "option".', $n->localName, $path));
-            }
-        }
-
-        return array($defaults, $requirements, $options, $condition);
-    }
-
-    private function isElementValueNull(\DOMElement $element)
-    {
-        $namespaceUri = 'http://www.w3.org/2001/XMLSchema-instance';
-
-        if (!$element->hasAttributeNS($namespaceUri, 'nil')) {
-            return false;
-        }
-
-        return 'true' === $element->getAttributeNS($namespaceUri, 'nil') || '1' === $element->getAttributeNS($namespaceUri, 'nil');
-    }
-}
diff --git a/vendor/symfony/routing/Loader/YamlFileLoader.php b/vendor/symfony/routing/Loader/YamlFileLoader.php
deleted file mode 100644
index 817714a..0000000
--- a/vendor/symfony/routing/Loader/YamlFileLoader.php
+++ /dev/null
@@ -1,236 +0,0 @@
-<?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\Routing\RouteCollection;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Yaml\Exception\ParseException;
-use Symfony\Component\Yaml\Parser as YamlParser;
-use Symfony\Component\Config\Loader\FileLoader;
-
-/**
- * YamlFileLoader loads Yaml routing files.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class YamlFileLoader extends FileLoader
-{
-    private static $availableKeys = array(
-        'resource', 'type', 'prefix', 'pattern', 'path', 'host', 'schemes', 'methods', 'defaults', 'requirements', 'options', 'condition',
-    );
-    private $yamlParser;
-
-    /**
-     * Loads a Yaml file.
-     *
-     * @param string      $file A Yaml file path
-     * @param string|null $type The resource type
-     *
-     * @return RouteCollection A RouteCollection instance
-     *
-     * @throws \InvalidArgumentException When a route can't be parsed because YAML is invalid
-     */
-    public function load($file, $type = null)
-    {
-        $path = $this->locator->locate($file);
-
-        if (!stream_is_local($path)) {
-            throw new \InvalidArgumentException(sprintf('This is not a local file "%s".', $path));
-        }
-
-        if (!file_exists($path)) {
-            throw new \InvalidArgumentException(sprintf('File "%s" not found.', $path));
-        }
-
-        if (null === $this->yamlParser) {
-            $this->yamlParser = new YamlParser();
-        }
-
-        try {
-            $parsedConfig = $this->yamlParser->parse(file_get_contents($path));
-        } catch (ParseException $e) {
-            throw new \InvalidArgumentException(sprintf('The file "%s" does not contain valid YAML.', $path), 0, $e);
-        }
-
-        $collection = new RouteCollection();
-        $collection->addResource(new FileResource($path));
-
-        // empty file
-        if (null === $parsedConfig) {
-            return $collection;
-        }
-
-        // not an array
-        if (!is_array($parsedConfig)) {
-            throw new \InvalidArgumentException(sprintf('The file "%s" must contain a YAML array.', $path));
-        }
-
-        foreach ($parsedConfig as $name => $config) {
-            if (isset($config['pattern'])) {
-                if (isset($config['path'])) {
-                    throw new \InvalidArgumentException(sprintf('The file "%s" cannot define both a "path" and a "pattern" attribute. Use only "path".', $path));
-                }
-
-                @trigger_error(sprintf('The "pattern" option in file "%s" is deprecated since version 2.2 and will be removed in 3.0. Use the "path" option in the route definition instead.', $path), E_USER_DEPRECATED);
-
-                $config['path'] = $config['pattern'];
-                unset($config['pattern']);
-            }
-
-            $this->validate($config, $name, $path);
-
-            if (isset($config['resource'])) {
-                $this->parseImport($collection, $config, $path, $file);
-            } else {
-                $this->parseRoute($collection, $name, $config, $path);
-            }
-        }
-
-        return $collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supports($resource, $type = null)
-    {
-        return is_string($resource) && in_array(pathinfo($resource, PATHINFO_EXTENSION), array('yml', 'yaml'), true) && (!$type || 'yaml' === $type);
-    }
-
-    /**
-     * Parses a route and adds it to the RouteCollection.
-     *
-     * @param RouteCollection $collection A RouteCollection instance
-     * @param string          $name       Route name
-     * @param array           $config     Route definition
-     * @param string          $path       Full path of the YAML file being processed
-     */
-    protected function parseRoute(RouteCollection $collection, $name, array $config, $path)
-    {
-        $defaults = isset($config['defaults']) ? $config['defaults'] : array();
-        $requirements = isset($config['requirements']) ? $config['requirements'] : array();
-        $options = isset($config['options']) ? $config['options'] : array();
-        $host = isset($config['host']) ? $config['host'] : '';
-        $schemes = isset($config['schemes']) ? $config['schemes'] : array();
-        $methods = isset($config['methods']) ? $config['methods'] : array();
-        $condition = isset($config['condition']) ? $config['condition'] : null;
-
-        if (isset($requirements['_method'])) {
-            if (0 === count($methods)) {
-                $methods = explode('|', $requirements['_method']);
-            }
-
-            unset($requirements['_method']);
-            @trigger_error(sprintf('The "_method" requirement of route "%s" in file "%s" is deprecated since version 2.2 and will be removed in 3.0. Use the "methods" option instead.', $name, $path), E_USER_DEPRECATED);
-        }
-
-        if (isset($requirements['_scheme'])) {
-            if (0 === count($schemes)) {
-                $schemes = explode('|', $requirements['_scheme']);
-            }
-
-            unset($requirements['_scheme']);
-            @trigger_error(sprintf('The "_scheme" requirement of route "%s" in file "%s" is deprecated since version 2.2 and will be removed in 3.0. Use the "schemes" option instead.', $name, $path), E_USER_DEPRECATED);
-        }
-
-        $route = new Route($config['path'], $defaults, $requirements, $options, $host, $schemes, $methods, $condition);
-
-        $collection->add($name, $route);
-    }
-
-    /**
-     * Parses an import and adds the routes in the resource to the RouteCollection.
-     *
-     * @param RouteCollection $collection A RouteCollection instance
-     * @param array           $config     Route definition
-     * @param string          $path       Full path of the YAML file being processed
-     * @param string          $file       Loaded file name
-     */
-    protected function parseImport(RouteCollection $collection, array $config, $path, $file)
-    {
-        $type = isset($config['type']) ? $config['type'] : null;
-        $prefix = isset($config['prefix']) ? $config['prefix'] : '';
-        $defaults = isset($config['defaults']) ? $config['defaults'] : array();
-        $requirements = isset($config['requirements']) ? $config['requirements'] : array();
-        $options = isset($config['options']) ? $config['options'] : array();
-        $host = isset($config['host']) ? $config['host'] : null;
-        $condition = isset($config['condition']) ? $config['condition'] : null;
-        $schemes = isset($config['schemes']) ? $config['schemes'] : null;
-        $methods = isset($config['methods']) ? $config['methods'] : null;
-
-        $this->setCurrentDir(dirname($path));
-
-        $subCollection = $this->import($config['resource'], $type, false, $file);
-        /* @var $subCollection RouteCollection */
-        $subCollection->addPrefix($prefix);
-        if (null !== $host) {
-            $subCollection->setHost($host);
-        }
-        if (null !== $condition) {
-            $subCollection->setCondition($condition);
-        }
-        if (null !== $schemes) {
-            $subCollection->setSchemes($schemes);
-        }
-        if (null !== $methods) {
-            $subCollection->setMethods($methods);
-        }
-        $subCollection->addDefaults($defaults);
-        $subCollection->addRequirements($requirements);
-        $subCollection->addOptions($options);
-
-        $collection->addCollection($subCollection);
-    }
-
-    /**
-     * Validates the route configuration.
-     *
-     * @param array  $config A resource config
-     * @param string $name   The config key
-     * @param string $path   The loaded file path
-     *
-     * @throws \InvalidArgumentException If one of the provided config keys is not supported,
-     *                                   something is missing or the combination is nonsense
-     */
-    protected function validate($config, $name, $path)
-    {
-        if (!is_array($config)) {
-            throw new \InvalidArgumentException(sprintf('The definition of "%s" in "%s" must be a YAML array.', $name, $path));
-        }
-        if ($extraKeys = array_diff(array_keys($config), self::$availableKeys)) {
-            throw new \InvalidArgumentException(sprintf(
-                'The routing file "%s" contains unsupported keys for "%s": "%s". Expected one of: "%s".',
-                $path, $name, implode('", "', $extraKeys), implode('", "', self::$availableKeys)
-            ));
-        }
-        if (isset($config['resource']) && isset($config['path'])) {
-            throw new \InvalidArgumentException(sprintf(
-                'The routing file "%s" must not specify both the "resource" key and the "path" key for "%s". Choose between an import and a route definition.',
-                $path, $name
-            ));
-        }
-        if (!isset($config['resource']) && isset($config['type'])) {
-            throw new \InvalidArgumentException(sprintf(
-                'The "type" key for the route definition "%s" in "%s" is unsupported. It is only available for imports in combination with the "resource" key.',
-                $name, $path
-            ));
-        }
-        if (!isset($config['resource']) && !isset($config['path'])) {
-            throw new \InvalidArgumentException(sprintf(
-                'You must define a "path" for the route "%s" in file "%s".',
-                $name, $path
-            ));
-        }
-    }
-}
diff --git a/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd b/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd
deleted file mode 100644
index d40aa42..0000000
--- a/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<xsd:schema xmlns="http://symfony.com/schema/routing"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    targetNamespace="http://symfony.com/schema/routing"
-    elementFormDefault="qualified">
-
-  <xsd:annotation>
-    <xsd:documentation><![CDATA[
-      Symfony XML Routing Schema, version 1.0
-      Authors: Fabien Potencier, Tobias Schultze
-
-      This scheme defines the elements and attributes that can be used to define
-      routes. A route maps an HTTP request to a set of configuration variables.
-    ]]></xsd:documentation>
-  </xsd:annotation>
-
-  <xsd:element name="routes" type="routes" />
-
-  <xsd:complexType name="routes">
-    <xsd:choice minOccurs="0" maxOccurs="unbounded">
-      <xsd:element name="import" type="import" />
-      <xsd:element name="route" type="route" />
-    </xsd:choice>
-  </xsd:complexType>
-
-  <xsd:group name="configs">
-    <xsd:choice>
-      <xsd:element name="default" nillable="true" type="element" />
-      <xsd:element name="requirement" type="element" />
-      <xsd:element name="option" type="element" />
-      <xsd:element name="condition" type="xsd:string" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="route">
-    <xsd:group ref="configs" minOccurs="0" maxOccurs="unbounded" />
-
-    <xsd:attribute name="id" type="xsd:string" use="required" />
-    <xsd:attribute name="path" type="xsd:string" />
-    <xsd:attribute name="pattern" type="xsd:string" />
-    <xsd:attribute name="host" type="xsd:string" />
-    <xsd:attribute name="schemes" type="xsd:string" />
-    <xsd:attribute name="methods" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="import">
-    <xsd:group ref="configs" minOccurs="0" maxOccurs="unbounded" />
-
-    <xsd:attribute name="resource" type="xsd:string" use="required" />
-    <xsd:attribute name="type" type="xsd:string" />
-    <xsd:attribute name="prefix" type="xsd:string" />
-    <xsd:attribute name="host" type="xsd:string" />
-    <xsd:attribute name="schemes" type="xsd:string" />
-    <xsd:attribute name="methods" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="element">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="key" type="xsd:string" use="required" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-</xsd:schema>
diff --git a/vendor/symfony/routing/Matcher/ApacheUrlMatcher.php b/vendor/symfony/routing/Matcher/ApacheUrlMatcher.php
deleted file mode 100644
index c0474f2..0000000
--- a/vendor/symfony/routing/Matcher/ApacheUrlMatcher.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?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\Matcher;
-
-@trigger_error('The '.__NAMESPACE__.'\ApacheUrlMatcher class is deprecated since version 2.5 and will be removed in 3.0. It\'s hard to replicate the behaviour of the PHP implementation and the performance gains are minimal.', E_USER_DEPRECATED);
-
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-
-/**
- * ApacheUrlMatcher matches URL based on Apache mod_rewrite matching (see ApacheMatcherDumper).
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             The performance gains are minimal and it's very hard to replicate
- *             the behavior of PHP implementation.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- */
-class ApacheUrlMatcher extends UrlMatcher
-{
-    /**
-     * Tries to match a URL based on Apache mod_rewrite matching.
-     *
-     * Returns false if no route matches the URL.
-     *
-     * @param string $pathinfo The pathinfo to be parsed
-     *
-     * @return array An array of parameters
-     *
-     * @throws MethodNotAllowedException If the current method is not allowed
-     */
-    public function match($pathinfo)
-    {
-        $parameters = array();
-        $defaults = array();
-        $allow = array();
-        $route = null;
-
-        foreach ($this->denormalizeValues($_SERVER) as $key => $value) {
-            $name = $key;
-
-            // skip non-routing variables
-            // this improves performance when $_SERVER contains many usual
-            // variables like HTTP_*, DOCUMENT_ROOT, REQUEST_URI, ...
-            if (false === strpos($name, '_ROUTING_')) {
-                continue;
-            }
-
-            while (0 === strpos($name, 'REDIRECT_')) {
-                $name = substr($name, 9);
-            }
-
-            // expect _ROUTING_<type>_<name>
-            // or _ROUTING_<type>
-
-            if (0 !== strpos($name, '_ROUTING_')) {
-                continue;
-            }
-            if (false !== $pos = strpos($name, '_', 9)) {
-                $type = substr($name, 9, $pos - 9);
-                $name = substr($name, $pos + 1);
-            } else {
-                $type = substr($name, 9);
-            }
-
-            if ('param' === $type) {
-                if ('' !== $value) {
-                    $parameters[$name] = $value;
-                }
-            } elseif ('default' === $type) {
-                $defaults[$name] = $value;
-            } elseif ('route' === $type) {
-                $route = $value;
-            } elseif ('allow' === $type) {
-                $allow[] = $name;
-            }
-
-            unset($_SERVER[$key]);
-        }
-
-        if (null !== $route) {
-            $parameters['_route'] = $route;
-
-            return $this->mergeDefaults($parameters, $defaults);
-        } elseif (0 < count($allow)) {
-            throw new MethodNotAllowedException($allow);
-        } else {
-            return parent::match($pathinfo);
-        }
-    }
-
-    /**
-     * Denormalizes an array of values.
-     *
-     * @param string[] $values
-     *
-     * @return array
-     */
-    private function denormalizeValues(array $values)
-    {
-        $normalizedValues = array();
-        foreach ($values as $key => $value) {
-            if (preg_match('~^(.*)\[(\d+)\]$~', $key, $matches)) {
-                if (!isset($normalizedValues[$matches[1]])) {
-                    $normalizedValues[$matches[1]] = array();
-                }
-                $normalizedValues[$matches[1]][(int) $matches[2]] = $value;
-            } else {
-                $normalizedValues[$key] = $value;
-            }
-        }
-
-        return $normalizedValues;
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/ApacheMatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/ApacheMatcherDumper.php
deleted file mode 100644
index 1eb5185..0000000
--- a/vendor/symfony/routing/Matcher/Dumper/ApacheMatcherDumper.php
+++ /dev/null
@@ -1,278 +0,0 @@
-<?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\Matcher\Dumper;
-
-@trigger_error('The '.__NAMESPACE__.'\ApacheMatcherDumper class is deprecated since version 2.5 and will be removed in 3.0. It\'s hard to replicate the behaviour of the PHP implementation and the performance gains are minimal.', E_USER_DEPRECATED);
-
-use Symfony\Component\Routing\Route;
-
-/**
- * Dumps a set of Apache mod_rewrite rules.
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             The performance gains are minimal and it's very hard to replicate
- *             the behavior of PHP implementation.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Kris Wallsmith <kris@symfony.com>
- */
-class ApacheMatcherDumper extends MatcherDumper
-{
-    /**
-     * Dumps a set of Apache mod_rewrite rules.
-     *
-     * Available options:
-     *
-     *  * script_name: The script name (app.php by default)
-     *  * base_uri:    The base URI ("" by default)
-     *
-     * @param array $options An array of options
-     *
-     * @return string A string to be used as Apache rewrite rules
-     *
-     * @throws \LogicException When the route regex is invalid
-     */
-    public function dump(array $options = array())
-    {
-        $options = array_merge(array(
-            'script_name' => 'app.php',
-            'base_uri' => '',
-        ), $options);
-
-        $options['script_name'] = self::escape($options['script_name'], ' ', '\\');
-
-        $rules = array("# skip \"real\" requests\nRewriteCond %{REQUEST_FILENAME} -f\nRewriteRule .* - [QSA,L]");
-        $methodVars = array();
-        $hostRegexUnique = 0;
-        $prevHostRegex = '';
-
-        foreach ($this->getRoutes()->all() as $name => $route) {
-            if ($route->getCondition()) {
-                throw new \LogicException(sprintf('Unable to dump the routes for Apache as route "%s" has a condition.', $name));
-            }
-
-            $compiledRoute = $route->compile();
-            $hostRegex = $compiledRoute->getHostRegex();
-
-            if (null !== $hostRegex && $prevHostRegex !== $hostRegex) {
-                $prevHostRegex = $hostRegex;
-                ++$hostRegexUnique;
-
-                $rule = array();
-
-                $regex = $this->regexToApacheRegex($hostRegex);
-                $regex = self::escape($regex, ' ', '\\');
-
-                $rule[] = sprintf('RewriteCond %%{HTTP:Host} %s', $regex);
-
-                $variables = array();
-                $variables[] = sprintf('E=__ROUTING_host_%s:1', $hostRegexUnique);
-
-                foreach ($compiledRoute->getHostVariables() as $i => $variable) {
-                    $variables[] = sprintf('E=__ROUTING_host_%s_%s:%%%d', $hostRegexUnique, $variable, $i + 1);
-                }
-
-                $variables = implode(',', $variables);
-
-                $rule[] = sprintf('RewriteRule .? - [%s]', $variables);
-
-                $rules[] = implode("\n", $rule);
-            }
-
-            $rules[] = $this->dumpRoute($name, $route, $options, $hostRegexUnique);
-
-            $methodVars = array_merge($methodVars, $route->getMethods());
-        }
-        if (0 < count($methodVars)) {
-            $rule = array('# 405 Method Not Allowed');
-            $methodVars = array_values(array_unique($methodVars));
-            if (in_array('GET', $methodVars) && !in_array('HEAD', $methodVars)) {
-                $methodVars[] = 'HEAD';
-            }
-            foreach ($methodVars as $i => $methodVar) {
-                $rule[] = sprintf('RewriteCond %%{ENV:_ROUTING__allow_%s} =1%s', $methodVar, isset($methodVars[$i + 1]) ? ' [OR]' : '');
-            }
-            $rule[] = sprintf('RewriteRule .* %s [QSA,L]', $options['script_name']);
-
-            $rules[] = implode("\n", $rule);
-        }
-
-        return implode("\n\n", $rules)."\n";
-    }
-
-    /**
-     * Dumps a single route.
-     *
-     * @param string $name            Route name
-     * @param Route  $route           The route
-     * @param array  $options         Options
-     * @param bool   $hostRegexUnique Unique identifier for the host regex
-     *
-     * @return string The compiled route
-     */
-    private function dumpRoute($name, $route, array $options, $hostRegexUnique)
-    {
-        $compiledRoute = $route->compile();
-
-        // prepare the apache regex
-        $regex = $this->regexToApacheRegex($compiledRoute->getRegex());
-        $regex = '^'.self::escape(preg_quote($options['base_uri']).substr($regex, 1), ' ', '\\');
-
-        $methods = $this->getRouteMethods($route);
-
-        $hasTrailingSlash = (!$methods || in_array('HEAD', $methods)) && '/$' === substr($regex, -2) && '^/$' !== $regex;
-
-        $variables = array('E=_ROUTING_route:'.$name);
-        foreach ($compiledRoute->getHostVariables() as $variable) {
-            $variables[] = sprintf('E=_ROUTING_param_%s:%%{ENV:__ROUTING_host_%s_%s}', $variable, $hostRegexUnique, $variable);
-        }
-        foreach ($compiledRoute->getPathVariables() as $i => $variable) {
-            $variables[] = 'E=_ROUTING_param_'.$variable.':%'.($i + 1);
-        }
-        foreach ($this->normalizeValues($route->getDefaults()) as $key => $value) {
-            $variables[] = 'E=_ROUTING_default_'.$key.':'.strtr($value, array(
-                ':' => '\\:',
-                '=' => '\\=',
-                '\\' => '\\\\',
-                ' ' => '\\ ',
-            ));
-        }
-        $variables = implode(',', $variables);
-
-        $rule = array("# $name");
-
-        // method mismatch
-        if (0 < count($methods)) {
-            $allow = array();
-            foreach ($methods as $method) {
-                $allow[] = 'E=_ROUTING_allow_'.$method.':1';
-            }
-
-            if ($compiledRoute->getHostRegex()) {
-                $rule[] = sprintf('RewriteCond %%{ENV:__ROUTING_host_%s} =1', $hostRegexUnique);
-            }
-
-            $rule[] = "RewriteCond %{REQUEST_URI} $regex";
-            $rule[] = sprintf('RewriteCond %%{REQUEST_METHOD} !^(%s)$ [NC]', implode('|', $methods));
-            $rule[] = sprintf('RewriteRule .* - [S=%d,%s]', $hasTrailingSlash ? 2 : 1, implode(',', $allow));
-        }
-
-        // redirect with trailing slash appended
-        if ($hasTrailingSlash) {
-            if ($compiledRoute->getHostRegex()) {
-                $rule[] = sprintf('RewriteCond %%{ENV:__ROUTING_host_%s} =1', $hostRegexUnique);
-            }
-
-            $rule[] = 'RewriteCond %{REQUEST_URI} '.substr($regex, 0, -2).'$';
-            $rule[] = 'RewriteRule .* $0/ [QSA,L,R=301]';
-        }
-
-        // the main rule
-
-        if ($compiledRoute->getHostRegex()) {
-            $rule[] = sprintf('RewriteCond %%{ENV:__ROUTING_host_%s} =1', $hostRegexUnique);
-        }
-
-        $rule[] = "RewriteCond %{REQUEST_URI} $regex";
-        $rule[] = "RewriteRule .* {$options['script_name']} [QSA,L,$variables]";
-
-        return implode("\n", $rule);
-    }
-
-    /**
-     * Returns methods allowed for a route.
-     *
-     * @param Route $route The route
-     *
-     * @return array The methods
-     */
-    private function getRouteMethods(Route $route)
-    {
-        $methods = $route->getMethods();
-
-        // GET and HEAD are equivalent
-        if (in_array('GET', $methods) && !in_array('HEAD', $methods)) {
-            $methods[] = 'HEAD';
-        }
-
-        return $methods;
-    }
-
-    /**
-     * Converts a regex to make it suitable for mod_rewrite.
-     *
-     * @param string $regex The regex
-     *
-     * @return string The converted regex
-     */
-    private function regexToApacheRegex($regex)
-    {
-        $regexPatternEnd = strrpos($regex, $regex[0]);
-
-        return preg_replace('/\?P<.+?>/', '', substr($regex, 1, $regexPatternEnd - 1));
-    }
-
-    /**
-     * Escapes a string.
-     *
-     * @param string $string The string to be escaped
-     * @param string $char   The character to be escaped
-     * @param string $with   The character to be used for escaping
-     *
-     * @return string The escaped string
-     */
-    private static function escape($string, $char, $with)
-    {
-        $escaped = false;
-        $output = '';
-        foreach (str_split($string) as $symbol) {
-            if ($escaped) {
-                $output .= $symbol;
-                $escaped = false;
-                continue;
-            }
-            if ($symbol === $char) {
-                $output .= $with.$char;
-                continue;
-            }
-            if ($symbol === $with) {
-                $escaped = true;
-            }
-            $output .= $symbol;
-        }
-
-        return $output;
-    }
-
-    /**
-     * Normalizes an array of values.
-     *
-     * @param array $values
-     *
-     * @return string[]
-     */
-    private function normalizeValues(array $values)
-    {
-        $normalizedValues = array();
-        foreach ($values as $key => $value) {
-            if (is_array($value)) {
-                foreach ($value as $index => $bit) {
-                    $normalizedValues[sprintf('%s[%s]', $key, $index)] = $bit;
-                }
-            } else {
-                $normalizedValues[$key] = (string) $value;
-            }
-        }
-
-        return $normalizedValues;
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/DumperCollection.php b/vendor/symfony/routing/Matcher/Dumper/DumperCollection.php
deleted file mode 100644
index e7dea88..0000000
--- a/vendor/symfony/routing/Matcher/Dumper/DumperCollection.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?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\Matcher\Dumper;
-
-/**
- * Collection of routes.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @internal
- */
-class DumperCollection implements \IteratorAggregate
-{
-    /**
-     * @var DumperCollection|null
-     */
-    private $parent;
-
-    /**
-     * @var (DumperCollection|DumperRoute)[]
-     */
-    private $children = array();
-
-    /**
-     * @var array
-     */
-    private $attributes = array();
-
-    /**
-     * Returns the children routes and collections.
-     *
-     * @return (DumperCollection|DumperRoute)[] Array of DumperCollection|DumperRoute
-     */
-    public function all()
-    {
-        return $this->children;
-    }
-
-    /**
-     * Adds a route or collection.
-     *
-     * @param DumperRoute|DumperCollection The route or collection
-     */
-    public function add($child)
-    {
-        if ($child instanceof self) {
-            $child->setParent($this);
-        }
-        $this->children[] = $child;
-    }
-
-    /**
-     * Sets children.
-     *
-     * @param array $children The children
-     */
-    public function setAll(array $children)
-    {
-        foreach ($children as $child) {
-            if ($child instanceof self) {
-                $child->setParent($this);
-            }
-        }
-        $this->children = $children;
-    }
-
-    /**
-     * Returns an iterator over the children.
-     *
-     * @return \Iterator The iterator
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->children);
-    }
-
-    /**
-     * Returns the root of the collection.
-     *
-     * @return DumperCollection The root collection
-     */
-    public function getRoot()
-    {
-        return (null !== $this->parent) ? $this->parent->getRoot() : $this;
-    }
-
-    /**
-     * Returns the parent collection.
-     *
-     * @return DumperCollection|null The parent collection or null if the collection has no parent
-     */
-    protected function getParent()
-    {
-        return $this->parent;
-    }
-
-    /**
-     * Sets the parent collection.
-     *
-     * @param DumperCollection $parent The parent collection
-     */
-    protected function setParent(DumperCollection $parent)
-    {
-        $this->parent = $parent;
-    }
-
-    /**
-     * Returns true if the attribute is defined.
-     *
-     * @param string $name The attribute name
-     *
-     * @return bool true if the attribute is defined, false otherwise
-     */
-    public function hasAttribute($name)
-    {
-        return array_key_exists($name, $this->attributes);
-    }
-
-    /**
-     * Returns an attribute by name.
-     *
-     * @param string $name    The attribute name
-     * @param mixed  $default Default value is the attribute doesn't exist
-     *
-     * @return mixed The attribute value
-     */
-    public function getAttribute($name, $default = null)
-    {
-        return $this->hasAttribute($name) ? $this->attributes[$name] : $default;
-    }
-
-    /**
-     * Sets an attribute by name.
-     *
-     * @param string $name  The attribute name
-     * @param mixed  $value The attribute value
-     */
-    public function setAttribute($name, $value)
-    {
-        $this->attributes[$name] = $value;
-    }
-
-    /**
-     * Sets multiple attributes.
-     *
-     * @param array $attributes The attributes
-     */
-    public function setAttributes($attributes)
-    {
-        $this->attributes = $attributes;
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/DumperPrefixCollection.php b/vendor/symfony/routing/Matcher/Dumper/DumperPrefixCollection.php
deleted file mode 100644
index dd1a0d9..0000000
--- a/vendor/symfony/routing/Matcher/Dumper/DumperPrefixCollection.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?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\Matcher\Dumper;
-
-/**
- * Prefix tree of routes preserving routes order.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @internal
- */
-class DumperPrefixCollection extends DumperCollection
-{
-    /**
-     * @var string
-     */
-    private $prefix = '';
-
-    /**
-     * Returns the prefix.
-     *
-     * @return string The prefix
-     */
-    public function getPrefix()
-    {
-        return $this->prefix;
-    }
-
-    /**
-     * Sets the prefix.
-     *
-     * @param string $prefix The prefix
-     */
-    public function setPrefix($prefix)
-    {
-        $this->prefix = $prefix;
-    }
-
-    /**
-     * Adds a route in the tree.
-     *
-     * @param DumperRoute $route The route
-     *
-     * @return DumperPrefixCollection The node the route was added to
-     *
-     * @throws \LogicException
-     */
-    public function addPrefixRoute(DumperRoute $route)
-    {
-        $prefix = $route->getRoute()->compile()->getStaticPrefix();
-
-        for ($collection = $this; null !== $collection; $collection = $collection->getParent()) {
-            // Same prefix, add to current leave
-            if ($collection->prefix === $prefix) {
-                $collection->add($route);
-
-                return $collection;
-            }
-
-            // Prefix starts with route's prefix
-            if ('' === $collection->prefix || 0 === strpos($prefix, $collection->prefix)) {
-                $child = new self();
-                $child->setPrefix(substr($prefix, 0, strlen($collection->prefix) + 1));
-                $collection->add($child);
-
-                return $child->addPrefixRoute($route);
-            }
-        }
-
-        // Reached only if the root has a non empty prefix
-        throw new \LogicException('The collection root must not have a prefix');
-    }
-
-    /**
-     * Merges nodes whose prefix ends with a slash.
-     *
-     * Children of a node whose prefix ends with a slash are moved to the parent node
-     */
-    public function mergeSlashNodes()
-    {
-        $children = array();
-
-        foreach ($this as $child) {
-            if ($child instanceof self) {
-                $child->mergeSlashNodes();
-                if ('/' === substr($child->prefix, -1)) {
-                    $children = array_merge($children, $child->all());
-                } else {
-                    $children[] = $child;
-                }
-            } else {
-                $children[] = $child;
-            }
-        }
-
-        $this->setAll($children);
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/DumperRoute.php b/vendor/symfony/routing/Matcher/Dumper/DumperRoute.php
deleted file mode 100644
index 3ad08c2..0000000
--- a/vendor/symfony/routing/Matcher/Dumper/DumperRoute.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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\Matcher\Dumper;
-
-use Symfony\Component\Routing\Route;
-
-/**
- * Container for a Route.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @internal
- */
-class DumperRoute
-{
-    /**
-     * @var string
-     */
-    private $name;
-
-    /**
-     * @var Route
-     */
-    private $route;
-
-    /**
-     * Constructor.
-     *
-     * @param string $name  The route name
-     * @param Route  $route The route
-     */
-    public function __construct($name, Route $route)
-    {
-        $this->name = $name;
-        $this->route = $route;
-    }
-
-    /**
-     * Returns the route name.
-     *
-     * @return string The route name
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Returns the route.
-     *
-     * @return Route The route
-     */
-    public function getRoute()
-    {
-        return $this->route;
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/MatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/MatcherDumper.php
deleted file mode 100644
index 52edc01..0000000
--- a/vendor/symfony/routing/Matcher/Dumper/MatcherDumper.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\Matcher\Dumper;
-
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * MatcherDumper is the abstract class for all built-in matcher dumpers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class MatcherDumper implements MatcherDumperInterface
-{
-    /**
-     * @var RouteCollection
-     */
-    private $routes;
-
-    /**
-     * Constructor.
-     *
-     * @param RouteCollection $routes The RouteCollection to dump
-     */
-    public function __construct(RouteCollection $routes)
-    {
-        $this->routes = $routes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRoutes()
-    {
-        return $this->routes;
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php b/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php
deleted file mode 100644
index 5e7c134..0000000
--- a/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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\Matcher\Dumper;
-
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * MatcherDumperInterface is the interface that all matcher dumper classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface MatcherDumperInterface
-{
-    /**
-     * Dumps a set of routes to a string representation of executable code
-     * that can then be used to match a request against these routes.
-     *
-     * @param array $options An array of options
-     *
-     * @return string Executable code
-     */
-    public function dump(array $options = array());
-
-    /**
-     * Gets the routes to dump.
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function getRoutes();
-}
diff --git a/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php
deleted file mode 100644
index aa7df8a..0000000
--- a/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php
+++ /dev/null
@@ -1,409 +0,0 @@
-<?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\Matcher\Dumper;
-
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
-use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
-
-/**
- * PhpMatcherDumper creates a PHP class able to match URLs for a given set of routes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- */
-class PhpMatcherDumper extends MatcherDumper
-{
-    private $expressionLanguage;
-
-    /**
-     * @var ExpressionFunctionProviderInterface[]
-     */
-    private $expressionLanguageProviders = array();
-
-    /**
-     * Dumps a set of routes to a PHP class.
-     *
-     * Available options:
-     *
-     *  * class:      The class name
-     *  * base_class: The base class name
-     *
-     * @param array $options An array of options
-     *
-     * @return string A PHP class representing the matcher class
-     */
-    public function dump(array $options = array())
-    {
-        $options = array_replace(array(
-            'class' => 'ProjectUrlMatcher',
-            'base_class' => 'Symfony\\Component\\Routing\\Matcher\\UrlMatcher',
-        ), $options);
-
-        // trailing slash support is only enabled if we know how to redirect the user
-        $interfaces = class_implements($options['base_class']);
-        $supportsRedirections = isset($interfaces['Symfony\\Component\\Routing\\Matcher\\RedirectableUrlMatcherInterface']);
-
-        return <<<EOF
-<?php
-
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * {$options['class']}.
- *
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class {$options['class']} extends {$options['base_class']}
-{
-    /**
-     * Constructor.
-     */
-    public function __construct(RequestContext \$context)
-    {
-        \$this->context = \$context;
-    }
-
-{$this->generateMatchMethod($supportsRedirections)}
-}
-
-EOF;
-    }
-
-    public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
-    {
-        $this->expressionLanguageProviders[] = $provider;
-    }
-
-    /**
-     * Generates the code for the match method implementing UrlMatcherInterface.
-     *
-     * @param bool $supportsRedirections Whether redirections are supported by the base class
-     *
-     * @return string Match method as PHP code
-     */
-    private function generateMatchMethod($supportsRedirections)
-    {
-        $code = rtrim($this->compileRoutes($this->getRoutes(), $supportsRedirections), "\n");
-
-        return <<<EOF
-    public function match(\$pathinfo)
-    {
-        \$allow = array();
-        \$pathinfo = rawurldecode(\$pathinfo);
-        \$context = \$this->context;
-        \$request = \$this->request;
-
-$code
-
-        throw 0 < count(\$allow) ? new MethodNotAllowedException(array_unique(\$allow)) : new ResourceNotFoundException();
-    }
-EOF;
-    }
-
-    /**
-     * Generates PHP code to match a RouteCollection with all its routes.
-     *
-     * @param RouteCollection $routes               A RouteCollection instance
-     * @param bool            $supportsRedirections Whether redirections are supported by the base class
-     *
-     * @return string PHP code
-     */
-    private function compileRoutes(RouteCollection $routes, $supportsRedirections)
-    {
-        $fetchedHost = false;
-
-        $groups = $this->groupRoutesByHostRegex($routes);
-        $code = '';
-
-        foreach ($groups as $collection) {
-            if (null !== $regex = $collection->getAttribute('host_regex')) {
-                if (!$fetchedHost) {
-                    $code .= "        \$host = \$this->context->getHost();\n\n";
-                    $fetchedHost = true;
-                }
-
-                $code .= sprintf("        if (preg_match(%s, \$host, \$hostMatches)) {\n", var_export($regex, true));
-            }
-
-            $tree = $this->buildPrefixTree($collection);
-            $groupCode = $this->compilePrefixRoutes($tree, $supportsRedirections);
-
-            if (null !== $regex) {
-                // apply extra indention at each line (except empty ones)
-                $groupCode = preg_replace('/^.{2,}$/m', '    $0', $groupCode);
-                $code .= $groupCode;
-                $code .= "        }\n\n";
-            } else {
-                $code .= $groupCode;
-            }
-        }
-
-        return $code;
-    }
-
-    /**
-     * Generates PHP code recursively to match a tree of routes.
-     *
-     * @param DumperPrefixCollection $collection           A DumperPrefixCollection instance
-     * @param bool                   $supportsRedirections Whether redirections are supported by the base class
-     * @param string                 $parentPrefix         Prefix of the parent collection
-     *
-     * @return string PHP code
-     */
-    private function compilePrefixRoutes(DumperPrefixCollection $collection, $supportsRedirections, $parentPrefix = '')
-    {
-        $code = '';
-        $prefix = $collection->getPrefix();
-        $optimizable = 1 < strlen($prefix) && 1 < count($collection->all());
-        $optimizedPrefix = $parentPrefix;
-
-        if ($optimizable) {
-            $optimizedPrefix = $prefix;
-
-            $code .= sprintf("    if (0 === strpos(\$pathinfo, %s)) {\n", var_export($prefix, true));
-        }
-
-        foreach ($collection as $route) {
-            if ($route instanceof DumperCollection) {
-                $code .= $this->compilePrefixRoutes($route, $supportsRedirections, $optimizedPrefix);
-            } else {
-                $code .= $this->compileRoute($route->getRoute(), $route->getName(), $supportsRedirections, $optimizedPrefix)."\n";
-            }
-        }
-
-        if ($optimizable) {
-            $code .= "    }\n\n";
-            // apply extra indention at each line (except empty ones)
-            $code = preg_replace('/^.{2,}$/m', '    $0', $code);
-        }
-
-        return $code;
-    }
-
-    /**
-     * Compiles a single Route to PHP code used to match it against the path info.
-     *
-     * @param Route       $route                A Route instance
-     * @param string      $name                 The name of the Route
-     * @param bool        $supportsRedirections Whether redirections are supported by the base class
-     * @param string|null $parentPrefix         The prefix of the parent collection used to optimize the code
-     *
-     * @return string PHP code
-     *
-     * @throws \LogicException
-     */
-    private function compileRoute(Route $route, $name, $supportsRedirections, $parentPrefix = null)
-    {
-        $code = '';
-        $compiledRoute = $route->compile();
-        $conditions = array();
-        $hasTrailingSlash = false;
-        $matches = false;
-        $hostMatches = false;
-        $methods = $route->getMethods();
-
-        // GET and HEAD are equivalent
-        if (in_array('GET', $methods) && !in_array('HEAD', $methods)) {
-            $methods[] = 'HEAD';
-        }
-
-        $supportsTrailingSlash = $supportsRedirections && (!$methods || in_array('HEAD', $methods));
-
-        if (!count($compiledRoute->getPathVariables()) && false !== preg_match('#^(.)\^(?P<url>.*?)\$\1#', $compiledRoute->getRegex(), $m)) {
-            if ($supportsTrailingSlash && substr($m['url'], -1) === '/') {
-                $conditions[] = sprintf("rtrim(\$pathinfo, '/') === %s", var_export(rtrim(str_replace('\\', '', $m['url']), '/'), true));
-                $hasTrailingSlash = true;
-            } else {
-                $conditions[] = sprintf('$pathinfo === %s', var_export(str_replace('\\', '', $m['url']), true));
-            }
-        } else {
-            if ($compiledRoute->getStaticPrefix() && $compiledRoute->getStaticPrefix() !== $parentPrefix) {
-                $conditions[] = sprintf('0 === strpos($pathinfo, %s)', var_export($compiledRoute->getStaticPrefix(), true));
-            }
-
-            $regex = $compiledRoute->getRegex();
-            if ($supportsTrailingSlash && $pos = strpos($regex, '/$')) {
-                $regex = substr($regex, 0, $pos).'/?$'.substr($regex, $pos + 2);
-                $hasTrailingSlash = true;
-            }
-            $conditions[] = sprintf('preg_match(%s, $pathinfo, $matches)', var_export($regex, true));
-
-            $matches = true;
-        }
-
-        if ($compiledRoute->getHostVariables()) {
-            $hostMatches = true;
-        }
-
-        if ($route->getCondition()) {
-            $conditions[] = $this->getExpressionLanguage()->compile($route->getCondition(), array('context', 'request'));
-        }
-
-        $conditions = implode(' && ', $conditions);
-
-        $code .= <<<EOF
-        // $name
-        if ($conditions) {
-
-EOF;
-
-        $gotoname = 'not_'.preg_replace('/[^A-Za-z0-9_]/', '', $name);
-        if ($methods) {
-            if (1 === count($methods)) {
-                $code .= <<<EOF
-            if (\$this->context->getMethod() != '$methods[0]') {
-                \$allow[] = '$methods[0]';
-                goto $gotoname;
-            }
-
-
-EOF;
-            } else {
-                $methods = implode("', '", $methods);
-                $code .= <<<EOF
-            if (!in_array(\$this->context->getMethod(), array('$methods'))) {
-                \$allow = array_merge(\$allow, array('$methods'));
-                goto $gotoname;
-            }
-
-
-EOF;
-            }
-        }
-
-        if ($hasTrailingSlash) {
-            $code .= <<<EOF
-            if (substr(\$pathinfo, -1) !== '/') {
-                return \$this->redirect(\$pathinfo.'/', '$name');
-            }
-
-
-EOF;
-        }
-
-        if ($schemes = $route->getSchemes()) {
-            if (!$supportsRedirections) {
-                throw new \LogicException('The "schemes" requirement is only supported for URL matchers that implement RedirectableUrlMatcherInterface.');
-            }
-            $schemes = str_replace("\n", '', var_export(array_flip($schemes), true));
-            $code .= <<<EOF
-            \$requiredSchemes = $schemes;
-            if (!isset(\$requiredSchemes[\$this->context->getScheme()])) {
-                return \$this->redirect(\$pathinfo, '$name', key(\$requiredSchemes));
-            }
-
-
-EOF;
-        }
-
-        // optimize parameters array
-        if ($matches || $hostMatches) {
-            $vars = array();
-            if ($hostMatches) {
-                $vars[] = '$hostMatches';
-            }
-            if ($matches) {
-                $vars[] = '$matches';
-            }
-            $vars[] = "array('_route' => '$name')";
-
-            $code .= sprintf(
-                "            return \$this->mergeDefaults(array_replace(%s), %s);\n",
-                implode(', ', $vars),
-                str_replace("\n", '', var_export($route->getDefaults(), true))
-            );
-        } elseif ($route->getDefaults()) {
-            $code .= sprintf("            return %s;\n", str_replace("\n", '', var_export(array_replace($route->getDefaults(), array('_route' => $name)), true)));
-        } else {
-            $code .= sprintf("            return array('_route' => '%s');\n", $name);
-        }
-        $code .= "        }\n";
-
-        if ($methods) {
-            $code .= "        $gotoname:\n";
-        }
-
-        return $code;
-    }
-
-    /**
-     * Groups consecutive routes having the same host regex.
-     *
-     * The result is a collection of collections of routes having the same host regex.
-     *
-     * @param RouteCollection $routes A flat RouteCollection
-     *
-     * @return DumperCollection A collection with routes grouped by host regex in sub-collections
-     */
-    private function groupRoutesByHostRegex(RouteCollection $routes)
-    {
-        $groups = new DumperCollection();
-
-        $currentGroup = new DumperCollection();
-        $currentGroup->setAttribute('host_regex', null);
-        $groups->add($currentGroup);
-
-        foreach ($routes as $name => $route) {
-            $hostRegex = $route->compile()->getHostRegex();
-            if ($currentGroup->getAttribute('host_regex') !== $hostRegex) {
-                $currentGroup = new DumperCollection();
-                $currentGroup->setAttribute('host_regex', $hostRegex);
-                $groups->add($currentGroup);
-            }
-            $currentGroup->add(new DumperRoute($name, $route));
-        }
-
-        return $groups;
-    }
-
-    /**
-     * Organizes the routes into a prefix tree.
-     *
-     * Routes order is preserved such that traversing the tree will traverse the
-     * routes in the origin order.
-     *
-     * @param DumperCollection $collection A collection of routes
-     *
-     * @return DumperPrefixCollection
-     */
-    private function buildPrefixTree(DumperCollection $collection)
-    {
-        $tree = new DumperPrefixCollection();
-        $current = $tree;
-
-        foreach ($collection as $route) {
-            $current = $current->addPrefixRoute($route);
-        }
-
-        $tree->mergeSlashNodes();
-
-        return $tree;
-    }
-
-    private function getExpressionLanguage()
-    {
-        if (null === $this->expressionLanguage) {
-            if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
-                throw new \RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.');
-            }
-            $this->expressionLanguage = new ExpressionLanguage(null, $this->expressionLanguageProviders);
-        }
-
-        return $this->expressionLanguage;
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php b/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php
deleted file mode 100644
index 463bc0d..0000000
--- a/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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\Matcher;
-
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Route;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class RedirectableUrlMatcher extends UrlMatcher implements RedirectableUrlMatcherInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function match($pathinfo)
-    {
-        try {
-            $parameters = parent::match($pathinfo);
-        } catch (ResourceNotFoundException $e) {
-            if ('/' === substr($pathinfo, -1) || !in_array($this->context->getMethod(), array('HEAD', 'GET'))) {
-                throw $e;
-            }
-
-            try {
-                parent::match($pathinfo.'/');
-
-                return $this->redirect($pathinfo.'/', null);
-            } catch (ResourceNotFoundException $e2) {
-                throw $e;
-            }
-        }
-
-        return $parameters;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function handleRouteRequirements($pathinfo, $name, Route $route)
-    {
-        // expression condition
-        if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), array('context' => $this->context, 'request' => $this->request))) {
-            return array(self::REQUIREMENT_MISMATCH, null);
-        }
-
-        // check HTTP scheme requirement
-        $scheme = $this->context->getScheme();
-        $schemes = $route->getSchemes();
-        if ($schemes && !$route->hasScheme($scheme)) {
-            return array(self::ROUTE_MATCH, $this->redirect($pathinfo, $name, current($schemes)));
-        }
-
-        return array(self::REQUIREMENT_MATCH, null);
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php b/vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php
deleted file mode 100644
index 4dd8969..0000000
--- a/vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Matcher;
-
-/**
- * RedirectableUrlMatcherInterface knows how to redirect the user.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RedirectableUrlMatcherInterface
-{
-    /**
-     * Redirects the user to another URL.
-     *
-     * @param string      $path   The path info to redirect to.
-     * @param string      $route  The route name that matched
-     * @param string|null $scheme The URL scheme (null to keep the current one)
-     *
-     * @return array An array of parameters
-     */
-    public function redirect($path, $route, $scheme = null);
-}
diff --git a/vendor/symfony/routing/Matcher/RequestMatcherInterface.php b/vendor/symfony/routing/Matcher/RequestMatcherInterface.php
deleted file mode 100644
index b5def3d..0000000
--- a/vendor/symfony/routing/Matcher/RequestMatcherInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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\Matcher;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-
-/**
- * RequestMatcherInterface is the interface that all request matcher classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RequestMatcherInterface
-{
-    /**
-     * Tries to match a request with a set of routes.
-     *
-     * If the matcher can not find information, it must throw one of the exceptions documented
-     * below.
-     *
-     * @param Request $request The request to match
-     *
-     * @return array An array of parameters
-     *
-     * @throws ResourceNotFoundException If no matching resource could be found
-     * @throws MethodNotAllowedException If a matching resource was found but the request method is not allowed
-     */
-    public function matchRequest(Request $request);
-}
diff --git a/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php b/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php
deleted file mode 100644
index ef4f24c..0000000
--- a/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?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\Matcher;
-
-use Symfony\Component\Routing\Exception\ExceptionInterface;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * TraceableUrlMatcher helps debug path info matching by tracing the match.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TraceableUrlMatcher extends UrlMatcher
-{
-    const ROUTE_DOES_NOT_MATCH = 0;
-    const ROUTE_ALMOST_MATCHES = 1;
-    const ROUTE_MATCHES = 2;
-
-    protected $traces;
-
-    public function getTraces($pathinfo)
-    {
-        $this->traces = array();
-
-        try {
-            $this->match($pathinfo);
-        } catch (ExceptionInterface $e) {
-        }
-
-        return $this->traces;
-    }
-
-    protected function matchCollection($pathinfo, RouteCollection $routes)
-    {
-        foreach ($routes as $name => $route) {
-            $compiledRoute = $route->compile();
-
-            if (!preg_match($compiledRoute->getRegex(), $pathinfo, $matches)) {
-                // does it match without any requirements?
-                $r = new Route($route->getPath(), $route->getDefaults(), array(), $route->getOptions());
-                $cr = $r->compile();
-                if (!preg_match($cr->getRegex(), $pathinfo)) {
-                    $this->addTrace(sprintf('Path "%s" does not match', $route->getPath()), self::ROUTE_DOES_NOT_MATCH, $name, $route);
-
-                    continue;
-                }
-
-                foreach ($route->getRequirements() as $n => $regex) {
-                    $r = new Route($route->getPath(), $route->getDefaults(), array($n => $regex), $route->getOptions());
-                    $cr = $r->compile();
-
-                    if (in_array($n, $cr->getVariables()) && !preg_match($cr->getRegex(), $pathinfo)) {
-                        $this->addTrace(sprintf('Requirement for "%s" does not match (%s)', $n, $regex), self::ROUTE_ALMOST_MATCHES, $name, $route);
-
-                        continue 2;
-                    }
-                }
-
-                continue;
-            }
-
-            // check host requirement
-            $hostMatches = array();
-            if ($compiledRoute->getHostRegex() && !preg_match($compiledRoute->getHostRegex(), $this->context->getHost(), $hostMatches)) {
-                $this->addTrace(sprintf('Host "%s" does not match the requirement ("%s")', $this->context->getHost(), $route->getHost()), self::ROUTE_ALMOST_MATCHES, $name, $route);
-
-                continue;
-            }
-
-            // check HTTP method requirement
-            if ($requiredMethods = $route->getMethods()) {
-                // HEAD and GET are equivalent as per RFC
-                if ('HEAD' === $method = $this->context->getMethod()) {
-                    $method = 'GET';
-                }
-
-                if (!in_array($method, $requiredMethods)) {
-                    $this->allow = array_merge($this->allow, $requiredMethods);
-
-                    $this->addTrace(sprintf('Method "%s" does not match any of the required methods (%s)', $this->context->getMethod(), implode(', ', $requiredMethods)), self::ROUTE_ALMOST_MATCHES, $name, $route);
-
-                    continue;
-                }
-            }
-
-            // check condition
-            if ($condition = $route->getCondition()) {
-                if (!$this->getExpressionLanguage()->evaluate($condition, array('context' => $this->context, 'request' => $this->request))) {
-                    $this->addTrace(sprintf('Condition "%s" does not evaluate to "true"', $condition), self::ROUTE_ALMOST_MATCHES, $name, $route);
-
-                    continue;
-                }
-            }
-
-            // check HTTP scheme requirement
-            if ($requiredSchemes = $route->getSchemes()) {
-                $scheme = $this->context->getScheme();
-
-                if (!$route->hasScheme($scheme)) {
-                    $this->addTrace(sprintf('Scheme "%s" does not match any of the required schemes (%s); the user will be redirected to first required scheme', $scheme, implode(', ', $requiredSchemes)), self::ROUTE_ALMOST_MATCHES, $name, $route);
-
-                    return true;
-                }
-            }
-
-            $this->addTrace('Route matches!', self::ROUTE_MATCHES, $name, $route);
-
-            return true;
-        }
-    }
-
-    private function addTrace($log, $level = self::ROUTE_DOES_NOT_MATCH, $name = null, $route = null)
-    {
-        $this->traces[] = array(
-            'log' => $log,
-            'name' => $name,
-            'level' => $level,
-            'path' => null !== $route ? $route->getPath() : null,
-        );
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/UrlMatcher.php b/vendor/symfony/routing/Matcher/UrlMatcher.php
deleted file mode 100644
index 9786a9b..0000000
--- a/vendor/symfony/routing/Matcher/UrlMatcher.php
+++ /dev/null
@@ -1,251 +0,0 @@
-<?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\Matcher;
-
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
-use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
-
-/**
- * UrlMatcher matches URL based on a set of routes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
-{
-    const REQUIREMENT_MATCH = 0;
-    const REQUIREMENT_MISMATCH = 1;
-    const ROUTE_MATCH = 2;
-
-    /**
-     * @var RequestContext
-     */
-    protected $context;
-
-    /**
-     * @var array
-     */
-    protected $allow = array();
-
-    /**
-     * @var RouteCollection
-     */
-    protected $routes;
-
-    protected $request;
-    protected $expressionLanguage;
-
-    /**
-     * @var ExpressionFunctionProviderInterface[]
-     */
-    protected $expressionLanguageProviders = array();
-
-    /**
-     * Constructor.
-     *
-     * @param RouteCollection $routes  A RouteCollection instance
-     * @param RequestContext  $context The context
-     */
-    public function __construct(RouteCollection $routes, RequestContext $context)
-    {
-        $this->routes = $routes;
-        $this->context = $context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContext(RequestContext $context)
-    {
-        $this->context = $context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function match($pathinfo)
-    {
-        $this->allow = array();
-
-        if ($ret = $this->matchCollection(rawurldecode($pathinfo), $this->routes)) {
-            return $ret;
-        }
-
-        throw 0 < count($this->allow)
-            ? new MethodNotAllowedException(array_unique($this->allow))
-            : new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function matchRequest(Request $request)
-    {
-        $this->request = $request;
-
-        $ret = $this->match($request->getPathInfo());
-
-        $this->request = null;
-
-        return $ret;
-    }
-
-    public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
-    {
-        $this->expressionLanguageProviders[] = $provider;
-    }
-
-    /**
-     * Tries to match a URL with a set of routes.
-     *
-     * @param string          $pathinfo The path info to be parsed
-     * @param RouteCollection $routes   The set of routes
-     *
-     * @return array An array of parameters
-     *
-     * @throws ResourceNotFoundException If the resource could not be found
-     * @throws MethodNotAllowedException If the resource was found but the request method is not allowed
-     */
-    protected function matchCollection($pathinfo, RouteCollection $routes)
-    {
-        foreach ($routes as $name => $route) {
-            $compiledRoute = $route->compile();
-
-            // check the static prefix of the URL first. Only use the more expensive preg_match when it matches
-            if ('' !== $compiledRoute->getStaticPrefix() && 0 !== strpos($pathinfo, $compiledRoute->getStaticPrefix())) {
-                continue;
-            }
-
-            if (!preg_match($compiledRoute->getRegex(), $pathinfo, $matches)) {
-                continue;
-            }
-
-            $hostMatches = array();
-            if ($compiledRoute->getHostRegex() && !preg_match($compiledRoute->getHostRegex(), $this->context->getHost(), $hostMatches)) {
-                continue;
-            }
-
-            // check HTTP method requirement
-            if ($requiredMethods = $route->getMethods()) {
-                // HEAD and GET are equivalent as per RFC
-                if ('HEAD' === $method = $this->context->getMethod()) {
-                    $method = 'GET';
-                }
-
-                if (!in_array($method, $requiredMethods)) {
-                    $this->allow = array_merge($this->allow, $requiredMethods);
-
-                    continue;
-                }
-            }
-
-            $status = $this->handleRouteRequirements($pathinfo, $name, $route);
-
-            if (self::ROUTE_MATCH === $status[0]) {
-                return $status[1];
-            }
-
-            if (self::REQUIREMENT_MISMATCH === $status[0]) {
-                continue;
-            }
-
-            return $this->getAttributes($route, $name, array_replace($matches, $hostMatches));
-        }
-    }
-
-    /**
-     * Returns an array of values to use as request attributes.
-     *
-     * As this method requires the Route object, it is not available
-     * in matchers that do not have access to the matched Route instance
-     * (like the PHP and Apache matcher dumpers).
-     *
-     * @param Route  $route      The route we are matching against
-     * @param string $name       The name of the route
-     * @param array  $attributes An array of attributes from the matcher
-     *
-     * @return array An array of parameters
-     */
-    protected function getAttributes(Route $route, $name, array $attributes)
-    {
-        $attributes['_route'] = $name;
-
-        return $this->mergeDefaults($attributes, $route->getDefaults());
-    }
-
-    /**
-     * Handles specific route requirements.
-     *
-     * @param string $pathinfo The path
-     * @param string $name     The route name
-     * @param Route  $route    The route
-     *
-     * @return array The first element represents the status, the second contains additional information
-     */
-    protected function handleRouteRequirements($pathinfo, $name, Route $route)
-    {
-        // expression condition
-        if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), array('context' => $this->context, 'request' => $this->request))) {
-            return array(self::REQUIREMENT_MISMATCH, null);
-        }
-
-        // check HTTP scheme requirement
-        $scheme = $this->context->getScheme();
-        $status = $route->getSchemes() && !$route->hasScheme($scheme) ? self::REQUIREMENT_MISMATCH : self::REQUIREMENT_MATCH;
-
-        return array($status, null);
-    }
-
-    /**
-     * Get merged default parameters.
-     *
-     * @param array $params   The parameters
-     * @param array $defaults The defaults
-     *
-     * @return array Merged default parameters
-     */
-    protected function mergeDefaults($params, $defaults)
-    {
-        foreach ($params as $key => $value) {
-            if (!is_int($key)) {
-                $defaults[$key] = $value;
-            }
-        }
-
-        return $defaults;
-    }
-
-    protected function getExpressionLanguage()
-    {
-        if (null === $this->expressionLanguage) {
-            if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
-                throw new \RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.');
-            }
-            $this->expressionLanguage = new ExpressionLanguage(null, $this->expressionLanguageProviders);
-        }
-
-        return $this->expressionLanguage;
-    }
-}
diff --git a/vendor/symfony/routing/Matcher/UrlMatcherInterface.php b/vendor/symfony/routing/Matcher/UrlMatcherInterface.php
deleted file mode 100644
index af38662..0000000
--- a/vendor/symfony/routing/Matcher/UrlMatcherInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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\Matcher;
-
-use Symfony\Component\Routing\RequestContextAwareInterface;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-
-/**
- * UrlMatcherInterface is the interface that all URL matcher classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface UrlMatcherInterface extends RequestContextAwareInterface
-{
-    /**
-     * Tries to match a URL path with a set of routes.
-     *
-     * If the matcher can not find information, it must throw one of the exceptions documented
-     * below.
-     *
-     * @param string $pathinfo The path info to be parsed (raw format, i.e. not urldecoded)
-     *
-     * @return array An array of parameters
-     *
-     * @throws ResourceNotFoundException If the resource could not be found
-     * @throws MethodNotAllowedException If the resource was found but the request method is not allowed
-     */
-    public function match($pathinfo);
-}
diff --git a/vendor/symfony/routing/README.md b/vendor/symfony/routing/README.md
deleted file mode 100644
index 1a94583..0000000
--- a/vendor/symfony/routing/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Routing Component
-=================
-
-Routing associates a request with the code that will convert it to a response.
-
-The example below demonstrates how you can set up a fully working routing
-system:
-
-```php
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Route;
-
-$routes = new RouteCollection();
-$routes->add('hello', new Route('/hello', array('controller' => 'foo')));
-
-$context = new RequestContext();
-
-// this is optional and can be done without a Request instance
-$context->fromRequest(Request::createFromGlobals());
-
-$matcher = new UrlMatcher($routes, $context);
-
-$parameters = $matcher->match('/hello');
-```
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/Routing/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/routing/RequestContext.php b/vendor/symfony/routing/RequestContext.php
deleted file mode 100644
index 862b824..0000000
--- a/vendor/symfony/routing/RequestContext.php
+++ /dev/null
@@ -1,344 +0,0 @@
-<?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\HttpFoundation\Request;
-
-/**
- * Holds information about the current request.
- *
- * This class implements a fluent interface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class RequestContext
-{
-    private $baseUrl;
-    private $pathInfo;
-    private $method;
-    private $host;
-    private $scheme;
-    private $httpPort;
-    private $httpsPort;
-    private $queryString;
-
-    /**
-     * @var array
-     */
-    private $parameters = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $baseUrl     The base URL
-     * @param string $method      The HTTP method
-     * @param string $host        The HTTP host name
-     * @param string $scheme      The HTTP scheme
-     * @param int    $httpPort    The HTTP port
-     * @param int    $httpsPort   The HTTPS port
-     * @param string $path        The path
-     * @param string $queryString The query string
-     */
-    public function __construct($baseUrl = '', $method = 'GET', $host = 'localhost', $scheme = 'http', $httpPort = 80, $httpsPort = 443, $path = '/', $queryString = '')
-    {
-        $this->setBaseUrl($baseUrl);
-        $this->setMethod($method);
-        $this->setHost($host);
-        $this->setScheme($scheme);
-        $this->setHttpPort($httpPort);
-        $this->setHttpsPort($httpsPort);
-        $this->setPathInfo($path);
-        $this->setQueryString($queryString);
-    }
-
-    /**
-     * Updates the RequestContext information based on a HttpFoundation Request.
-     *
-     * @param Request $request A Request instance
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function fromRequest(Request $request)
-    {
-        $this->setBaseUrl($request->getBaseUrl());
-        $this->setPathInfo($request->getPathInfo());
-        $this->setMethod($request->getMethod());
-        $this->setHost($request->getHost());
-        $this->setScheme($request->getScheme());
-        $this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort());
-        $this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort);
-        $this->setQueryString($request->server->get('QUERY_STRING', ''));
-
-        return $this;
-    }
-
-    /**
-     * Gets the base URL.
-     *
-     * @return string The base URL
-     */
-    public function getBaseUrl()
-    {
-        return $this->baseUrl;
-    }
-
-    /**
-     * Sets the base URL.
-     *
-     * @param string $baseUrl The base URL
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function setBaseUrl($baseUrl)
-    {
-        $this->baseUrl = $baseUrl;
-
-        return $this;
-    }
-
-    /**
-     * Gets the path info.
-     *
-     * @return string The path info
-     */
-    public function getPathInfo()
-    {
-        return $this->pathInfo;
-    }
-
-    /**
-     * Sets the path info.
-     *
-     * @param string $pathInfo The path info
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function setPathInfo($pathInfo)
-    {
-        $this->pathInfo = $pathInfo;
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTP method.
-     *
-     * The method is always an uppercased string.
-     *
-     * @return string The HTTP method
-     */
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    /**
-     * Sets the HTTP method.
-     *
-     * @param string $method The HTTP method
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function setMethod($method)
-    {
-        $this->method = strtoupper($method);
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTP host.
-     *
-     * The host is always lowercased because it must be treated case-insensitive.
-     *
-     * @return string The HTTP host
-     */
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    /**
-     * Sets the HTTP host.
-     *
-     * @param string $host The HTTP host
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function setHost($host)
-    {
-        $this->host = strtolower($host);
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTP scheme.
-     *
-     * @return string The HTTP scheme
-     */
-    public function getScheme()
-    {
-        return $this->scheme;
-    }
-
-    /**
-     * Sets the HTTP scheme.
-     *
-     * @param string $scheme The HTTP scheme
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function setScheme($scheme)
-    {
-        $this->scheme = strtolower($scheme);
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTP port.
-     *
-     * @return int The HTTP port
-     */
-    public function getHttpPort()
-    {
-        return $this->httpPort;
-    }
-
-    /**
-     * Sets the HTTP port.
-     *
-     * @param int $httpPort The HTTP port
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function setHttpPort($httpPort)
-    {
-        $this->httpPort = (int) $httpPort;
-
-        return $this;
-    }
-
-    /**
-     * Gets the HTTPS port.
-     *
-     * @return int The HTTPS port
-     */
-    public function getHttpsPort()
-    {
-        return $this->httpsPort;
-    }
-
-    /**
-     * Sets the HTTPS port.
-     *
-     * @param int $httpsPort The HTTPS port
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function setHttpsPort($httpsPort)
-    {
-        $this->httpsPort = (int) $httpsPort;
-
-        return $this;
-    }
-
-    /**
-     * Gets the query string.
-     *
-     * @return string The query string without the "?"
-     */
-    public function getQueryString()
-    {
-        return $this->queryString;
-    }
-
-    /**
-     * Sets the query string.
-     *
-     * @param string $queryString The query string (after "?")
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function setQueryString($queryString)
-    {
-        // string cast to be fault-tolerant, accepting null
-        $this->queryString = (string) $queryString;
-
-        return $this;
-    }
-
-    /**
-     * Returns the parameters.
-     *
-     * @return array The parameters
-     */
-    public function getParameters()
-    {
-        return $this->parameters;
-    }
-
-    /**
-     * Sets the parameters.
-     *
-     * @param array $parameters The parameters
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function setParameters(array $parameters)
-    {
-        $this->parameters = $parameters;
-
-        return $this;
-    }
-
-    /**
-     * Gets a parameter value.
-     *
-     * @param string $name A parameter name
-     *
-     * @return mixed The parameter value or null if nonexistent
-     */
-    public function getParameter($name)
-    {
-        return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
-    }
-
-    /**
-     * Checks if a parameter value is set for the given parameter.
-     *
-     * @param string $name A parameter name
-     *
-     * @return bool True if the parameter value is set, false otherwise
-     */
-    public function hasParameter($name)
-    {
-        return array_key_exists($name, $this->parameters);
-    }
-
-    /**
-     * Sets a parameter value.
-     *
-     * @param string $name      A parameter name
-     * @param mixed  $parameter The parameter value
-     *
-     * @return RequestContext The current instance, implementing a fluent interface
-     */
-    public function setParameter($name, $parameter)
-    {
-        $this->parameters[$name] = $parameter;
-
-        return $this;
-    }
-}
diff --git a/vendor/symfony/routing/RequestContextAwareInterface.php b/vendor/symfony/routing/RequestContextAwareInterface.php
deleted file mode 100644
index ebb0ef4..0000000
--- a/vendor/symfony/routing/RequestContextAwareInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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;
-
-interface RequestContextAwareInterface
-{
-    /**
-     * Sets the request context.
-     *
-     * @param RequestContext $context The context
-     */
-    public function setContext(RequestContext $context);
-
-    /**
-     * Gets the request context.
-     *
-     * @return RequestContext The context
-     */
-    public function getContext();
-}
diff --git a/vendor/symfony/routing/Route.php b/vendor/symfony/routing/Route.php
deleted file mode 100644
index b485bde..0000000
--- a/vendor/symfony/routing/Route.php
+++ /dev/null
@@ -1,659 +0,0 @@
-<?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;
-
-/**
- * A Route describes a route and its parameters.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class Route implements \Serializable
-{
-    /**
-     * @var string
-     */
-    private $path = '/';
-
-    /**
-     * @var string
-     */
-    private $host = '';
-
-    /**
-     * @var array
-     */
-    private $schemes = array();
-
-    /**
-     * @var array
-     */
-    private $methods = array();
-
-    /**
-     * @var array
-     */
-    private $defaults = array();
-
-    /**
-     * @var array
-     */
-    private $requirements = array();
-
-    /**
-     * @var array
-     */
-    private $options = array();
-
-    /**
-     * @var null|CompiledRoute
-     */
-    private $compiled;
-
-    /**
-     * @var string
-     */
-    private $condition = '';
-
-    /**
-     * Constructor.
-     *
-     * Available options:
-     *
-     *  * compiler_class: A class name able to compile this route instance (RouteCompiler by default)
-     *
-     * @param string       $path         The path pattern to match
-     * @param array        $defaults     An array of default parameter values
-     * @param array        $requirements An array of requirements for parameters (regexes)
-     * @param array        $options      An array of options
-     * @param string       $host         The host pattern to match
-     * @param string|array $schemes      A required URI scheme or an array of restricted schemes
-     * @param string|array $methods      A required HTTP method or an array of restricted methods
-     * @param string       $condition    A condition that should evaluate to true for the route to match
-     */
-    public function __construct($path, array $defaults = array(), array $requirements = array(), array $options = array(), $host = '', $schemes = array(), $methods = array(), $condition = '')
-    {
-        $this->setPath($path);
-        $this->setDefaults($defaults);
-        $this->setRequirements($requirements);
-        $this->setOptions($options);
-        $this->setHost($host);
-        // The conditions make sure that an initial empty $schemes/$methods does not override the corresponding requirement.
-        // They can be removed when the BC layer is removed.
-        if ($schemes) {
-            $this->setSchemes($schemes);
-        }
-        if ($methods) {
-            $this->setMethods($methods);
-        }
-        $this->setCondition($condition);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function serialize()
-    {
-        return serialize(array(
-            'path' => $this->path,
-            'host' => $this->host,
-            'defaults' => $this->defaults,
-            'requirements' => $this->requirements,
-            'options' => $this->options,
-            'schemes' => $this->schemes,
-            'methods' => $this->methods,
-            'condition' => $this->condition,
-            'compiled' => $this->compiled,
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function unserialize($serialized)
-    {
-        $data = unserialize($serialized);
-        $this->path = $data['path'];
-        $this->host = $data['host'];
-        $this->defaults = $data['defaults'];
-        $this->requirements = $data['requirements'];
-        $this->options = $data['options'];
-        $this->schemes = $data['schemes'];
-        $this->methods = $data['methods'];
-
-        if (isset($data['condition'])) {
-            $this->condition = $data['condition'];
-        }
-        if (isset($data['compiled'])) {
-            $this->compiled = $data['compiled'];
-        }
-    }
-
-    /**
-     * Returns the pattern for the path.
-     *
-     * @return string The pattern
-     *
-     * @deprecated since version 2.2, to be removed in 3.0. Use getPath instead.
-     */
-    public function getPattern()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. Use the getPath() method instead.', E_USER_DEPRECATED);
-
-        return $this->path;
-    }
-
-    /**
-     * Sets the pattern for the path.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string $pattern The path pattern
-     *
-     * @return Route The current Route instance
-     *
-     * @deprecated since version 2.2, to be removed in 3.0. Use setPath instead.
-     */
-    public function setPattern($pattern)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. Use the setPath() method instead.', E_USER_DEPRECATED);
-
-        return $this->setPath($pattern);
-    }
-
-    /**
-     * Returns the pattern for the path.
-     *
-     * @return string The path pattern
-     */
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    /**
-     * Sets the pattern for the path.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string $pattern The path pattern
-     *
-     * @return Route The current Route instance
-     */
-    public function setPath($pattern)
-    {
-        // A pattern must start with a slash and must not have multiple slashes at the beginning because the
-        // generated path for this route would be confused with a network path, e.g. '//domain.com/path'.
-        $this->path = '/'.ltrim(trim($pattern), '/');
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the pattern for the host.
-     *
-     * @return string The host pattern
-     */
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    /**
-     * Sets the pattern for the host.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string $pattern The host pattern
-     *
-     * @return Route The current Route instance
-     */
-    public function setHost($pattern)
-    {
-        $this->host = (string) $pattern;
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the lowercased schemes this route is restricted to.
-     * So an empty array means that any scheme is allowed.
-     *
-     * @return array The schemes
-     */
-    public function getSchemes()
-    {
-        return $this->schemes;
-    }
-
-    /**
-     * Sets the schemes (e.g. 'https') this route is restricted to.
-     * So an empty array means that any scheme is allowed.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string|array $schemes The scheme or an array of schemes
-     *
-     * @return Route The current Route instance
-     */
-    public function setSchemes($schemes)
-    {
-        $this->schemes = array_map('strtolower', (array) $schemes);
-
-        // this is to keep BC and will be removed in a future version
-        if ($this->schemes) {
-            $this->requirements['_scheme'] = implode('|', $this->schemes);
-        } else {
-            unset($this->requirements['_scheme']);
-        }
-
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Checks if a scheme requirement has been set.
-     *
-     * @param string $scheme
-     *
-     * @return bool true if the scheme requirement exists, otherwise false
-     */
-    public function hasScheme($scheme)
-    {
-        return in_array(strtolower($scheme), $this->schemes, true);
-    }
-
-    /**
-     * Returns the uppercased HTTP methods this route is restricted to.
-     * So an empty array means that any method is allowed.
-     *
-     * @return array The methods
-     */
-    public function getMethods()
-    {
-        return $this->methods;
-    }
-
-    /**
-     * Sets the HTTP methods (e.g. 'POST') this route is restricted to.
-     * So an empty array means that any method is allowed.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string|array $methods The method or an array of methods
-     *
-     * @return Route The current Route instance
-     */
-    public function setMethods($methods)
-    {
-        $this->methods = array_map('strtoupper', (array) $methods);
-
-        // this is to keep BC and will be removed in a future version
-        if ($this->methods) {
-            $this->requirements['_method'] = implode('|', $this->methods);
-        } else {
-            unset($this->requirements['_method']);
-        }
-
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the options.
-     *
-     * @return array The options
-     */
-    public function getOptions()
-    {
-        return $this->options;
-    }
-
-    /**
-     * Sets the options.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $options The options
-     *
-     * @return Route The current Route instance
-     */
-    public function setOptions(array $options)
-    {
-        $this->options = array(
-            'compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler',
-        );
-
-        return $this->addOptions($options);
-    }
-
-    /**
-     * Adds options.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $options The options
-     *
-     * @return Route The current Route instance
-     */
-    public function addOptions(array $options)
-    {
-        foreach ($options as $name => $option) {
-            $this->options[$name] = $option;
-        }
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Sets an option value.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string $name  An option name
-     * @param mixed  $value The option value
-     *
-     * @return Route The current Route instance
-     */
-    public function setOption($name, $value)
-    {
-        $this->options[$name] = $value;
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Get an option value.
-     *
-     * @param string $name An option name
-     *
-     * @return mixed The option value or null when not given
-     */
-    public function getOption($name)
-    {
-        return isset($this->options[$name]) ? $this->options[$name] : null;
-    }
-
-    /**
-     * Checks if an option has been set.
-     *
-     * @param string $name An option name
-     *
-     * @return bool true if the option is set, false otherwise
-     */
-    public function hasOption($name)
-    {
-        return array_key_exists($name, $this->options);
-    }
-
-    /**
-     * Returns the defaults.
-     *
-     * @return array The defaults
-     */
-    public function getDefaults()
-    {
-        return $this->defaults;
-    }
-
-    /**
-     * Sets the defaults.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $defaults The defaults
-     *
-     * @return Route The current Route instance
-     */
-    public function setDefaults(array $defaults)
-    {
-        $this->defaults = array();
-
-        return $this->addDefaults($defaults);
-    }
-
-    /**
-     * Adds defaults.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $defaults The defaults
-     *
-     * @return Route The current Route instance
-     */
-    public function addDefaults(array $defaults)
-    {
-        foreach ($defaults as $name => $default) {
-            $this->defaults[$name] = $default;
-        }
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Gets a default value.
-     *
-     * @param string $name A variable name
-     *
-     * @return mixed The default value or null when not given
-     */
-    public function getDefault($name)
-    {
-        return isset($this->defaults[$name]) ? $this->defaults[$name] : null;
-    }
-
-    /**
-     * Checks if a default value is set for the given variable.
-     *
-     * @param string $name A variable name
-     *
-     * @return bool true if the default value is set, false otherwise
-     */
-    public function hasDefault($name)
-    {
-        return array_key_exists($name, $this->defaults);
-    }
-
-    /**
-     * Sets a default value.
-     *
-     * @param string $name    A variable name
-     * @param mixed  $default The default value
-     *
-     * @return Route The current Route instance
-     */
-    public function setDefault($name, $default)
-    {
-        $this->defaults[$name] = $default;
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the requirements.
-     *
-     * @return array The requirements
-     */
-    public function getRequirements()
-    {
-        return $this->requirements;
-    }
-
-    /**
-     * Sets the requirements.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $requirements The requirements
-     *
-     * @return Route The current Route instance
-     */
-    public function setRequirements(array $requirements)
-    {
-        $this->requirements = array();
-
-        return $this->addRequirements($requirements);
-    }
-
-    /**
-     * Adds requirements.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $requirements The requirements
-     *
-     * @return Route The current Route instance
-     */
-    public function addRequirements(array $requirements)
-    {
-        foreach ($requirements as $key => $regex) {
-            $this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
-        }
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the requirement for the given key.
-     *
-     * @param string $key The key
-     *
-     * @return string|null The regex or null when not given
-     */
-    public function getRequirement($key)
-    {
-        if ('_scheme' === $key) {
-            @trigger_error('The "_scheme" requirement is deprecated since version 2.2 and will be removed in 3.0. Use getSchemes() instead.', E_USER_DEPRECATED);
-        } elseif ('_method' === $key) {
-            @trigger_error('The "_method" requirement is deprecated since version 2.2 and will be removed in 3.0. Use getMethods() instead.', E_USER_DEPRECATED);
-        }
-
-        return isset($this->requirements[$key]) ? $this->requirements[$key] : null;
-    }
-
-    /**
-     * Checks if a requirement is set for the given key.
-     *
-     * @param string $key A variable name
-     *
-     * @return bool true if a requirement is specified, false otherwise
-     */
-    public function hasRequirement($key)
-    {
-        return array_key_exists($key, $this->requirements);
-    }
-
-    /**
-     * Sets a requirement for the given key.
-     *
-     * @param string $key   The key
-     * @param string $regex The regex
-     *
-     * @return Route The current Route instance
-     */
-    public function setRequirement($key, $regex)
-    {
-        $this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Returns the condition.
-     *
-     * @return string The condition
-     */
-    public function getCondition()
-    {
-        return $this->condition;
-    }
-
-    /**
-     * Sets the condition.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param string $condition The condition
-     *
-     * @return Route The current Route instance
-     */
-    public function setCondition($condition)
-    {
-        $this->condition = (string) $condition;
-        $this->compiled = null;
-
-        return $this;
-    }
-
-    /**
-     * Compiles the route.
-     *
-     * @return CompiledRoute A CompiledRoute instance
-     *
-     * @throws \LogicException If the Route cannot be compiled because the
-     *                         path or host pattern is invalid
-     *
-     * @see RouteCompiler which is responsible for the compilation process
-     */
-    public function compile()
-    {
-        if (null !== $this->compiled) {
-            return $this->compiled;
-        }
-
-        $class = $this->getOption('compiler_class');
-
-        return $this->compiled = $class::compile($this);
-    }
-
-    private function sanitizeRequirement($key, $regex)
-    {
-        if (!is_string($regex)) {
-            throw new \InvalidArgumentException(sprintf('Routing requirement for "%s" must be a string.', $key));
-        }
-
-        if ('' !== $regex && '^' === $regex[0]) {
-            $regex = (string) substr($regex, 1); // returns false for a single character
-        }
-
-        if ('$' === substr($regex, -1)) {
-            $regex = substr($regex, 0, -1);
-        }
-
-        if ('' === $regex) {
-            throw new \InvalidArgumentException(sprintf('Routing requirement for "%s" cannot be empty.', $key));
-        }
-
-        // this is to keep BC and will be removed in a future version
-        if ('_scheme' === $key) {
-            @trigger_error('The "_scheme" requirement is deprecated since version 2.2 and will be removed in 3.0. Use the setSchemes() method instead.', E_USER_DEPRECATED);
-
-            $this->setSchemes(explode('|', $regex));
-        } elseif ('_method' === $key) {
-            @trigger_error('The "_method" requirement is deprecated since version 2.2 and will be removed in 3.0. Use the setMethods() method instead.', E_USER_DEPRECATED);
-
-            $this->setMethods(explode('|', $regex));
-        }
-
-        return $regex;
-    }
-}
diff --git a/vendor/symfony/routing/RouteCollection.php b/vendor/symfony/routing/RouteCollection.php
deleted file mode 100644
index d6ac840..0000000
--- a/vendor/symfony/routing/RouteCollection.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?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\Resource\ResourceInterface;
-
-/**
- * A RouteCollection represents a set of Route instances.
- *
- * When adding a route at the end of the collection, an existing route
- * with the same name is removed first. So there can only be one route
- * with a given name.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class RouteCollection implements \IteratorAggregate, \Countable
-{
-    /**
-     * @var Route[]
-     */
-    private $routes = array();
-
-    /**
-     * @var array
-     */
-    private $resources = array();
-
-    public function __clone()
-    {
-        foreach ($this->routes as $name => $route) {
-            $this->routes[$name] = clone $route;
-        }
-    }
-
-    /**
-     * Gets the current RouteCollection as an Iterator that includes all routes.
-     *
-     * It implements \IteratorAggregate.
-     *
-     * @see all()
-     *
-     * @return \ArrayIterator An \ArrayIterator object for iterating over routes
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->routes);
-    }
-
-    /**
-     * Gets the number of Routes in this collection.
-     *
-     * @return int The number of routes
-     */
-    public function count()
-    {
-        return count($this->routes);
-    }
-
-    /**
-     * Adds a route.
-     *
-     * @param string $name  The route name
-     * @param Route  $route A Route instance
-     */
-    public function add($name, Route $route)
-    {
-        unset($this->routes[$name]);
-
-        $this->routes[$name] = $route;
-    }
-
-    /**
-     * Returns all routes in this collection.
-     *
-     * @return Route[] An array of routes
-     */
-    public function all()
-    {
-        return $this->routes;
-    }
-
-    /**
-     * Gets a route by name.
-     *
-     * @param string $name The route name
-     *
-     * @return Route|null A Route instance or null when not found
-     */
-    public function get($name)
-    {
-        return isset($this->routes[$name]) ? $this->routes[$name] : null;
-    }
-
-    /**
-     * Removes a route or an array of routes by name from the collection.
-     *
-     * @param string|array $name The route name or an array of route names
-     */
-    public function remove($name)
-    {
-        foreach ((array) $name as $n) {
-            unset($this->routes[$n]);
-        }
-    }
-
-    /**
-     * Adds a route collection at the end of the current set by appending all
-     * routes of the added collection.
-     *
-     * @param RouteCollection $collection A RouteCollection instance
-     */
-    public function addCollection(RouteCollection $collection)
-    {
-        // we need to remove all routes with the same names first because just replacing them
-        // would not place the new route at the end of the merged array
-        foreach ($collection->all() as $name => $route) {
-            unset($this->routes[$name]);
-            $this->routes[$name] = $route;
-        }
-
-        $this->resources = array_merge($this->resources, $collection->getResources());
-    }
-
-    /**
-     * Adds a prefix to the path of all child routes.
-     *
-     * @param string $prefix       An optional prefix to add before each pattern of the route collection
-     * @param array  $defaults     An array of default values
-     * @param array  $requirements An array of requirements
-     */
-    public function addPrefix($prefix, array $defaults = array(), array $requirements = array())
-    {
-        $prefix = trim(trim($prefix), '/');
-
-        if ('' === $prefix) {
-            return;
-        }
-
-        foreach ($this->routes as $route) {
-            $route->setPath('/'.$prefix.$route->getPath());
-            $route->addDefaults($defaults);
-            $route->addRequirements($requirements);
-        }
-    }
-
-    /**
-     * Sets the host pattern on all routes.
-     *
-     * @param string $pattern      The pattern
-     * @param array  $defaults     An array of default values
-     * @param array  $requirements An array of requirements
-     */
-    public function setHost($pattern, array $defaults = array(), array $requirements = array())
-    {
-        foreach ($this->routes as $route) {
-            $route->setHost($pattern);
-            $route->addDefaults($defaults);
-            $route->addRequirements($requirements);
-        }
-    }
-
-    /**
-     * Sets a condition on all routes.
-     *
-     * Existing conditions will be overridden.
-     *
-     * @param string $condition The condition
-     */
-    public function setCondition($condition)
-    {
-        foreach ($this->routes as $route) {
-            $route->setCondition($condition);
-        }
-    }
-
-    /**
-     * Adds defaults to all routes.
-     *
-     * An existing default value under the same name in a route will be overridden.
-     *
-     * @param array $defaults An array of default values
-     */
-    public function addDefaults(array $defaults)
-    {
-        if ($defaults) {
-            foreach ($this->routes as $route) {
-                $route->addDefaults($defaults);
-            }
-        }
-    }
-
-    /**
-     * Adds requirements to all routes.
-     *
-     * An existing requirement under the same name in a route will be overridden.
-     *
-     * @param array $requirements An array of requirements
-     */
-    public function addRequirements(array $requirements)
-    {
-        if ($requirements) {
-            foreach ($this->routes as $route) {
-                $route->addRequirements($requirements);
-            }
-        }
-    }
-
-    /**
-     * Adds options to all routes.
-     *
-     * An existing option value under the same name in a route will be overridden.
-     *
-     * @param array $options An array of options
-     */
-    public function addOptions(array $options)
-    {
-        if ($options) {
-            foreach ($this->routes as $route) {
-                $route->addOptions($options);
-            }
-        }
-    }
-
-    /**
-     * Sets the schemes (e.g. 'https') all child routes are restricted to.
-     *
-     * @param string|array $schemes The scheme or an array of schemes
-     */
-    public function setSchemes($schemes)
-    {
-        foreach ($this->routes as $route) {
-            $route->setSchemes($schemes);
-        }
-    }
-
-    /**
-     * Sets the HTTP methods (e.g. 'POST') all child routes are restricted to.
-     *
-     * @param string|array $methods The method or an array of methods
-     */
-    public function setMethods($methods)
-    {
-        foreach ($this->routes as $route) {
-            $route->setMethods($methods);
-        }
-    }
-
-    /**
-     * Returns an array of resources loaded to build this collection.
-     *
-     * @return ResourceInterface[] An array of resources
-     */
-    public function getResources()
-    {
-        return array_unique($this->resources);
-    }
-
-    /**
-     * Adds a resource for this collection.
-     *
-     * @param ResourceInterface $resource A resource instance
-     */
-    public function addResource(ResourceInterface $resource)
-    {
-        $this->resources[] = $resource;
-    }
-}
diff --git a/vendor/symfony/routing/RouteCompiler.php b/vendor/symfony/routing/RouteCompiler.php
deleted file mode 100644
index f6637da..0000000
--- a/vendor/symfony/routing/RouteCompiler.php
+++ /dev/null
@@ -1,229 +0,0 @@
-<?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;
-
-/**
- * RouteCompiler compiles Route instances to CompiledRoute instances.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Tobias Schultze <http://tobion.de>
- */
-class RouteCompiler implements RouteCompilerInterface
-{
-    const REGEX_DELIMITER = '#';
-
-    /**
-     * This string defines the characters that are automatically considered separators in front of
-     * optional placeholders (with default and no static text following). Such a single separator
-     * can be left out together with the optional placeholder from matching and generating URLs.
-     */
-    const SEPARATORS = '/,;.:-_~+*=@|';
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws \LogicException  If a variable is referenced more than once
-     * @throws \DomainException If a variable name is numeric because PHP raises an error for such
-     *                          subpatterns in PCRE and thus would break matching, e.g. "(?P<123>.+)".
-     */
-    public static function compile(Route $route)
-    {
-        $hostVariables = array();
-        $variables = array();
-        $hostRegex = null;
-        $hostTokens = array();
-
-        if ('' !== $host = $route->getHost()) {
-            $result = self::compilePattern($route, $host, true);
-
-            $hostVariables = $result['variables'];
-            $variables = $hostVariables;
-
-            $hostTokens = $result['tokens'];
-            $hostRegex = $result['regex'];
-        }
-
-        $path = $route->getPath();
-
-        $result = self::compilePattern($route, $path, false);
-
-        $staticPrefix = $result['staticPrefix'];
-
-        $pathVariables = $result['variables'];
-        $variables = array_merge($variables, $pathVariables);
-
-        $tokens = $result['tokens'];
-        $regex = $result['regex'];
-
-        return new CompiledRoute(
-            $staticPrefix,
-            $regex,
-            $tokens,
-            $pathVariables,
-            $hostRegex,
-            $hostTokens,
-            $hostVariables,
-            array_unique($variables)
-        );
-    }
-
-    private static function compilePattern(Route $route, $pattern, $isHost)
-    {
-        $tokens = array();
-        $variables = array();
-        $matches = array();
-        $pos = 0;
-        $defaultSeparator = $isHost ? '.' : '/';
-
-        // Match all variables enclosed in "{}" and iterate over them. But we only want to match the innermost variable
-        // in case of nested "{}", e.g. {foo{bar}}. This in ensured because \w does not match "{" or "}" itself.
-        preg_match_all('#\{\w+\}#', $pattern, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
-        foreach ($matches as $match) {
-            $varName = substr($match[0][0], 1, -1);
-            // get all static text preceding the current variable
-            $precedingText = substr($pattern, $pos, $match[0][1] - $pos);
-            $pos = $match[0][1] + strlen($match[0][0]);
-            $precedingChar = strlen($precedingText) > 0 ? substr($precedingText, -1) : '';
-            $isSeparator = '' !== $precedingChar && false !== strpos(static::SEPARATORS, $precedingChar);
-
-            if (is_numeric($varName)) {
-                throw new \DomainException(sprintf('Variable name "%s" cannot be numeric in route pattern "%s". Please use a different name.', $varName, $pattern));
-            }
-            if (in_array($varName, $variables)) {
-                throw new \LogicException(sprintf('Route pattern "%s" cannot reference variable name "%s" more than once.', $pattern, $varName));
-            }
-
-            if ($isSeparator && strlen($precedingText) > 1) {
-                $tokens[] = array('text', substr($precedingText, 0, -1));
-            } elseif (!$isSeparator && strlen($precedingText) > 0) {
-                $tokens[] = array('text', $precedingText);
-            }
-
-            $regexp = $route->getRequirement($varName);
-            if (null === $regexp) {
-                $followingPattern = (string) substr($pattern, $pos);
-                // Find the next static character after the variable that functions as a separator. By default, this separator and '/'
-                // are disallowed for the variable. This default requirement makes sure that optional variables can be matched at all
-                // and that the generating-matching-combination of URLs unambiguous, i.e. the params used for generating the URL are
-                // the same that will be matched. Example: new Route('/{page}.{_format}', array('_format' => 'html'))
-                // If {page} would also match the separating dot, {_format} would never match as {page} will eagerly consume everything.
-                // Also even if {_format} was not optional the requirement prevents that {page} matches something that was originally
-                // part of {_format} when generating the URL, e.g. _format = 'mobile.html'.
-                $nextSeparator = self::findNextSeparator($followingPattern);
-                $regexp = sprintf(
-                    '[^%s%s]+',
-                    preg_quote($defaultSeparator, self::REGEX_DELIMITER),
-                    $defaultSeparator !== $nextSeparator && '' !== $nextSeparator ? preg_quote($nextSeparator, self::REGEX_DELIMITER) : ''
-                );
-                if (('' !== $nextSeparator && !preg_match('#^\{\w+\}#', $followingPattern)) || '' === $followingPattern) {
-                    // When we have a separator, which is disallowed for the variable, we can optimize the regex with a possessive
-                    // quantifier. This prevents useless backtracking of PCRE and improves performance by 20% for matching those patterns.
-                    // Given the above example, there is no point in backtracking into {page} (that forbids the dot) when a dot must follow
-                    // after it. This optimization cannot be applied when the next char is no real separator or when the next variable is
-                    // directly adjacent, e.g. '/{x}{y}'.
-                    $regexp .= '+';
-                }
-            }
-
-            $tokens[] = array('variable', $isSeparator ? $precedingChar : '', $regexp, $varName);
-            $variables[] = $varName;
-        }
-
-        if ($pos < strlen($pattern)) {
-            $tokens[] = array('text', substr($pattern, $pos));
-        }
-
-        // find the first optional token
-        $firstOptional = PHP_INT_MAX;
-        if (!$isHost) {
-            for ($i = count($tokens) - 1; $i >= 0; --$i) {
-                $token = $tokens[$i];
-                if ('variable' === $token[0] && $route->hasDefault($token[3])) {
-                    $firstOptional = $i;
-                } else {
-                    break;
-                }
-            }
-        }
-
-        // compute the matching regexp
-        $regexp = '';
-        for ($i = 0, $nbToken = count($tokens); $i < $nbToken; ++$i) {
-            $regexp .= self::computeRegexp($tokens, $i, $firstOptional);
-        }
-
-        return array(
-            'staticPrefix' => 'text' === $tokens[0][0] ? $tokens[0][1] : '',
-            'regex' => self::REGEX_DELIMITER.'^'.$regexp.'$'.self::REGEX_DELIMITER.'s'.($isHost ? 'i' : ''),
-            'tokens' => array_reverse($tokens),
-            'variables' => $variables,
-        );
-    }
-
-    /**
-     * Returns the next static character in the Route pattern that will serve as a separator.
-     *
-     * @param string $pattern The route pattern
-     *
-     * @return string The next static character that functions as separator (or empty string when none available)
-     */
-    private static function findNextSeparator($pattern)
-    {
-        if ('' == $pattern) {
-            // return empty string if pattern is empty or false (false which can be returned by substr)
-            return '';
-        }
-        // first remove all placeholders from the pattern so we can find the next real static character
-        $pattern = preg_replace('#\{\w+\}#', '', $pattern);
-
-        return isset($pattern[0]) && false !== strpos(static::SEPARATORS, $pattern[0]) ? $pattern[0] : '';
-    }
-
-    /**
-     * Computes the regexp used to match a specific token. It can be static text or a subpattern.
-     *
-     * @param array $tokens        The route tokens
-     * @param int   $index         The index of the current token
-     * @param int   $firstOptional The index of the first optional token
-     *
-     * @return string The regexp pattern for a single token
-     */
-    private static function computeRegexp(array $tokens, $index, $firstOptional)
-    {
-        $token = $tokens[$index];
-        if ('text' === $token[0]) {
-            // Text tokens
-            return preg_quote($token[1], self::REGEX_DELIMITER);
-        } else {
-            // Variable tokens
-            if (0 === $index && 0 === $firstOptional) {
-                // When the only token is an optional variable token, the separator is required
-                return sprintf('%s(?P<%s>%s)?', preg_quote($token[1], self::REGEX_DELIMITER), $token[3], $token[2]);
-            } else {
-                $regexp = sprintf('%s(?P<%s>%s)', preg_quote($token[1], self::REGEX_DELIMITER), $token[3], $token[2]);
-                if ($index >= $firstOptional) {
-                    // Enclose each optional token in a subpattern to make it optional.
-                    // "?:" means it is non-capturing, i.e. the portion of the subject string that
-                    // matched the optional subpattern is not passed back.
-                    $regexp = "(?:$regexp";
-                    $nbTokens = count($tokens);
-                    if ($nbTokens - 1 == $index) {
-                        // Close the optional subpatterns
-                        $regexp .= str_repeat(')?', $nbTokens - $firstOptional - (0 === $firstOptional ? 1 : 0));
-                    }
-                }
-
-                return $regexp;
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/routing/RouteCompilerInterface.php b/vendor/symfony/routing/RouteCompilerInterface.php
deleted file mode 100644
index e6f8ee6d..0000000
--- a/vendor/symfony/routing/RouteCompilerInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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;
-
-/**
- * RouteCompilerInterface is the interface that all RouteCompiler classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RouteCompilerInterface
-{
-    /**
-     * Compiles the current route instance.
-     *
-     * @param Route $route A Route instance
-     *
-     * @return CompiledRoute A CompiledRoute instance
-     *
-     * @throws \LogicException If the Route cannot be compiled because the
-     *                         path or host pattern is invalid
-     */
-    public static function compile(Route $route);
-}
diff --git a/vendor/symfony/routing/Router.php b/vendor/symfony/routing/Router.php
deleted file mode 100644
index 2cbbb2b..0000000
--- a/vendor/symfony/routing/Router.php
+++ /dev/null
@@ -1,394 +0,0 @@
-<?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\Loader\LoaderInterface;
-use Symfony\Component\Config\ConfigCacheInterface;
-use Symfony\Component\Config\ConfigCacheFactoryInterface;
-use Symfony\Component\Config\ConfigCacheFactory;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Routing\Generator\ConfigurableRequirementsInterface;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\Generator\Dumper\GeneratorDumperInterface;
-use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
-use Symfony\Component\Routing\Matcher\Dumper\MatcherDumperInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
-
-/**
- * The Router class is an example of the integration of all pieces of the
- * routing system for easier use.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Router implements RouterInterface, RequestMatcherInterface
-{
-    /**
-     * @var UrlMatcherInterface|null
-     */
-    protected $matcher;
-
-    /**
-     * @var UrlGeneratorInterface|null
-     */
-    protected $generator;
-
-    /**
-     * @var RequestContext
-     */
-    protected $context;
-
-    /**
-     * @var LoaderInterface
-     */
-    protected $loader;
-
-    /**
-     * @var RouteCollection|null
-     */
-    protected $collection;
-
-    /**
-     * @var mixed
-     */
-    protected $resource;
-
-    /**
-     * @var array
-     */
-    protected $options = array();
-
-    /**
-     * @var LoggerInterface|null
-     */
-    protected $logger;
-
-    /**
-     * @var ConfigCacheFactoryInterface|null
-     */
-    private $configCacheFactory;
-
-    /**
-     * @var ExpressionFunctionProviderInterface[]
-     */
-    private $expressionLanguageProviders = array();
-
-    /**
-     * Constructor.
-     *
-     * @param LoaderInterface $loader   A LoaderInterface instance
-     * @param mixed           $resource The main resource to load
-     * @param array           $options  An array of options
-     * @param RequestContext  $context  The context
-     * @param LoggerInterface $logger   A logger instance
-     */
-    public function __construct(LoaderInterface $loader, $resource, array $options = array(), RequestContext $context = null, LoggerInterface $logger = null)
-    {
-        $this->loader = $loader;
-        $this->resource = $resource;
-        $this->logger = $logger;
-        $this->context = $context ?: new RequestContext();
-        $this->setOptions($options);
-    }
-
-    /**
-     * Sets options.
-     *
-     * Available options:
-     *
-     *   * cache_dir:     The cache directory (or null to disable caching)
-     *   * debug:         Whether to enable debugging or not (false by default)
-     *   * resource_type: Type hint for the main resource (optional)
-     *
-     * @param array $options An array of options
-     *
-     * @throws \InvalidArgumentException When unsupported option is provided
-     */
-    public function setOptions(array $options)
-    {
-        $this->options = array(
-            'cache_dir' => null,
-            'debug' => false,
-            'generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator',
-            'generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator',
-            'generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper',
-            'generator_cache_class' => 'ProjectUrlGenerator',
-            'matcher_class' => 'Symfony\\Component\\Routing\\Matcher\\UrlMatcher',
-            'matcher_base_class' => 'Symfony\\Component\\Routing\\Matcher\\UrlMatcher',
-            'matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper',
-            'matcher_cache_class' => 'ProjectUrlMatcher',
-            'resource_type' => null,
-            'strict_requirements' => true,
-        );
-
-        // check option names and live merge, if errors are encountered Exception will be thrown
-        $invalid = array();
-        foreach ($options as $key => $value) {
-            if (array_key_exists($key, $this->options)) {
-                $this->options[$key] = $value;
-            } else {
-                $invalid[] = $key;
-            }
-        }
-
-        if ($invalid) {
-            throw new \InvalidArgumentException(sprintf('The Router does not support the following options: "%s".', implode('", "', $invalid)));
-        }
-    }
-
-    /**
-     * Sets an option.
-     *
-     * @param string $key   The key
-     * @param mixed  $value The value
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setOption($key, $value)
-    {
-        if (!array_key_exists($key, $this->options)) {
-            throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key));
-        }
-
-        $this->options[$key] = $value;
-    }
-
-    /**
-     * Gets an option value.
-     *
-     * @param string $key The key
-     *
-     * @return mixed The value
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function getOption($key)
-    {
-        if (!array_key_exists($key, $this->options)) {
-            throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key));
-        }
-
-        return $this->options[$key];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRouteCollection()
-    {
-        if (null === $this->collection) {
-            $this->collection = $this->loader->load($this->resource, $this->options['resource_type']);
-        }
-
-        return $this->collection;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setContext(RequestContext $context)
-    {
-        $this->context = $context;
-
-        if (null !== $this->matcher) {
-            $this->getMatcher()->setContext($context);
-        }
-        if (null !== $this->generator) {
-            $this->getGenerator()->setContext($context);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContext()
-    {
-        return $this->context;
-    }
-
-    /**
-     * Sets the ConfigCache factory to use.
-     *
-     * @param ConfigCacheFactoryInterface $configCacheFactory The factory to use.
-     */
-    public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory)
-    {
-        $this->configCacheFactory = $configCacheFactory;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH)
-    {
-        return $this->getGenerator()->generate($name, $parameters, $referenceType);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function match($pathinfo)
-    {
-        return $this->getMatcher()->match($pathinfo);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function matchRequest(Request $request)
-    {
-        $matcher = $this->getMatcher();
-        if (!$matcher instanceof RequestMatcherInterface) {
-            // fallback to the default UrlMatcherInterface
-            return $matcher->match($request->getPathInfo());
-        }
-
-        return $matcher->matchRequest($request);
-    }
-
-    /**
-     * Gets the UrlMatcher instance associated with this Router.
-     *
-     * @return UrlMatcherInterface A UrlMatcherInterface instance
-     */
-    public function getMatcher()
-    {
-        if (null !== $this->matcher) {
-            return $this->matcher;
-        }
-
-        if (null === $this->options['cache_dir'] || null === $this->options['matcher_cache_class']) {
-            $this->matcher = new $this->options['matcher_class']($this->getRouteCollection(), $this->context);
-            if (method_exists($this->matcher, 'addExpressionLanguageProvider')) {
-                foreach ($this->expressionLanguageProviders as $provider) {
-                    $this->matcher->addExpressionLanguageProvider($provider);
-                }
-            }
-
-            return $this->matcher;
-        }
-
-        $class = $this->options['matcher_cache_class'];
-        $baseClass = $this->options['matcher_base_class'];
-        $expressionLanguageProviders = $this->expressionLanguageProviders;
-        $that = $this; // required for PHP 5.3 where "$this" cannot be use()d in anonymous functions. Change in Symfony 3.0.
-
-        $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$class.'.php',
-            function (ConfigCacheInterface $cache) use ($that, $class, $baseClass, $expressionLanguageProviders) {
-                $dumper = $that->getMatcherDumperInstance();
-                if (method_exists($dumper, 'addExpressionLanguageProvider')) {
-                    foreach ($expressionLanguageProviders as $provider) {
-                        $dumper->addExpressionLanguageProvider($provider);
-                    }
-                }
-
-                $options = array(
-                    'class' => $class,
-                    'base_class' => $baseClass,
-                );
-
-                $cache->write($dumper->dump($options), $that->getRouteCollection()->getResources());
-            }
-        );
-
-        require_once $cache->getPath();
-
-        return $this->matcher = new $class($this->context);
-    }
-
-    /**
-     * Gets the UrlGenerator instance associated with this Router.
-     *
-     * @return UrlGeneratorInterface A UrlGeneratorInterface instance
-     */
-    public function getGenerator()
-    {
-        if (null !== $this->generator) {
-            return $this->generator;
-        }
-
-        if (null === $this->options['cache_dir'] || null === $this->options['generator_cache_class']) {
-            $this->generator = new $this->options['generator_class']($this->getRouteCollection(), $this->context, $this->logger);
-        } else {
-            $class = $this->options['generator_cache_class'];
-            $baseClass = $this->options['generator_base_class'];
-            $that = $this; // required for PHP 5.3 where "$this" cannot be use()d in anonymous functions. Change in Symfony 3.0.
-            $cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$class.'.php',
-                function (ConfigCacheInterface $cache) use ($that, $class, $baseClass) {
-                    $dumper = $that->getGeneratorDumperInstance();
-
-                    $options = array(
-                        'class' => $class,
-                        'base_class' => $baseClass,
-                    );
-
-                    $cache->write($dumper->dump($options), $that->getRouteCollection()->getResources());
-                }
-            );
-
-            require_once $cache->getPath();
-
-            $this->generator = new $class($this->context, $this->logger);
-        }
-
-        if ($this->generator instanceof ConfigurableRequirementsInterface) {
-            $this->generator->setStrictRequirements($this->options['strict_requirements']);
-        }
-
-        return $this->generator;
-    }
-
-    public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
-    {
-        $this->expressionLanguageProviders[] = $provider;
-    }
-
-    /**
-     * This method is public because it needs to be callable from a closure in PHP 5.3. It should be converted back to protected in 3.0.
-     *
-     * @internal
-     *
-     * @return GeneratorDumperInterface
-     */
-    public function getGeneratorDumperInstance()
-    {
-        return new $this->options['generator_dumper_class']($this->getRouteCollection());
-    }
-
-    /**
-     * This method is public because it needs to be callable from a closure in PHP 5.3. It should be converted back to protected in 3.0.
-     *
-     * @internal
-     *
-     * @return MatcherDumperInterface
-     */
-    public function getMatcherDumperInstance()
-    {
-        return new $this->options['matcher_dumper_class']($this->getRouteCollection());
-    }
-
-    /**
-     * Provides the ConfigCache factory implementation, falling back to a
-     * default implementation if necessary.
-     *
-     * @return ConfigCacheFactoryInterface $configCacheFactory
-     */
-    private function getConfigCacheFactory()
-    {
-        if (null === $this->configCacheFactory) {
-            $this->configCacheFactory = new ConfigCacheFactory($this->options['debug']);
-        }
-
-        return $this->configCacheFactory;
-    }
-}
diff --git a/vendor/symfony/routing/RouterInterface.php b/vendor/symfony/routing/RouterInterface.php
deleted file mode 100644
index a10ae34..0000000
--- a/vendor/symfony/routing/RouterInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
-
-/**
- * RouterInterface is the interface that all Router classes must implement.
- *
- * This interface is the concatenation of UrlMatcherInterface and UrlGeneratorInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface RouterInterface extends UrlMatcherInterface, UrlGeneratorInterface
-{
-    /**
-     * Gets the RouteCollection instance associated with this Router.
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    public function getRouteCollection();
-}
diff --git a/vendor/symfony/routing/composer.json b/vendor/symfony/routing/composer.json
deleted file mode 100644
index 02837f6..0000000
--- a/vendor/symfony/routing/composer.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-    "name": "symfony/routing",
-    "type": "library",
-    "description": "Symfony Routing Component",
-    "keywords": ["routing", "router", "URL", "URI"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "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",
-        "doctrine/annotations": "~1.0",
-        "doctrine/common": "~2.2",
-        "psr/log": "~1.0"
-    },
-    "conflict": {
-        "symfony/config": "<2.7"
-    },
-    "suggest": {
-        "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"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Routing\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/routing/phpunit.xml.dist b/vendor/symfony/routing/phpunit.xml.dist
deleted file mode 100644
index a908308..0000000
--- a/vendor/symfony/routing/phpunit.xml.dist
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Routing Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./vendor</directory>
-                <directory>./Tests</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/serializer/.gitignore b/vendor/symfony/serializer/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/serializer/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/serializer/Annotation/Groups.php b/vendor/symfony/serializer/Annotation/Groups.php
deleted file mode 100644
index 519837a..0000000
--- a/vendor/symfony/serializer/Annotation/Groups.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?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\Annotation;
-
-use Symfony\Component\Serializer\Exception\InvalidArgumentException;
-
-/**
- * Annotation class for @Groups().
- *
- * @Annotation
- * @Target({"PROPERTY", "METHOD"})
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class Groups
-{
-    /**
-     * @var array
-     */
-    private $groups;
-
-    /**
-     * @param array $data
-     *
-     * @throws InvalidArgumentException
-     */
-    public function __construct(array $data)
-    {
-        if (!isset($data['value']) || !$data['value']) {
-            throw new InvalidArgumentException(sprintf('Parameter of annotation "%s" cannot be empty.', get_class($this)));
-        }
-
-        if (!is_array($data['value'])) {
-            throw new InvalidArgumentException(sprintf('Parameter of annotation "%s" must be an array of strings.', get_class($this)));
-        }
-
-        foreach ($data['value'] as $group) {
-            if (!is_string($group)) {
-                throw new InvalidArgumentException(sprintf('Parameter of annotation "%s" must be an array of strings.', get_class($this)));
-            }
-        }
-
-        $this->groups = $data['value'];
-    }
-
-    /**
-     * Gets groups.
-     *
-     * @return array
-     */
-    public function getGroups()
-    {
-        return $this->groups;
-    }
-}
diff --git a/vendor/symfony/serializer/CHANGELOG.md b/vendor/symfony/serializer/CHANGELOG.md
deleted file mode 100644
index ceeeeb1..0000000
--- a/vendor/symfony/serializer/CHANGELOG.md
+++ /dev/null
@@ -1,96 +0,0 @@
-CHANGELOG
-=========
-
-2.7.0
------
-
- * added support for serialization and deserialization groups including
-   annotations, XML and YAML mapping.
- * added `AbstractNormalizer` to factorise code and ease normalizers development
- * added circular references handling for `PropertyNormalizer`
- * added support for a context key called `object_to_populate` in `AbstractNormalizer`
-   to reuse existing objects in the deserialization process
- * added `NameConverterInterface` and `CamelCaseToSnakeCaseNameConverter`
- * [DEPRECATION] `GetSetMethodNormalizer::setCamelizedAttributes()` and
-   `PropertyNormalizer::setCamelizedAttributes()` are replaced by
-   `CamelCaseToSnakeCaseNameConverter`
- * [DEPRECATION] the `Exception` interface has been renamed to `ExceptionInterface`
- * added `ObjectNormalizer` leveraging the `PropertyAccess` component to normalize
-   objects containing both properties and getters / setters / issers / hassers methods.
-
-2.6.0
------
-
- * added a new serializer: `PropertyNormalizer`. Like `GetSetMethodNormalizer`,
-   this normalizer will map an object's properties to an array.
- * added circular references handling for `GetSetMethodNormalizer`
-
-2.5.0
------
-
- * added support for `is.*` getters in `GetSetMethodNormalizer`
-
-2.4.0
------
-
- * added `$context` support for XMLEncoder.
- * [DEPRECATION] JsonEncode and JsonDecode where modified to throw
-   an exception if error found. No need for get*Error() functions
-
-2.3.0
------
-
- * added `GetSetMethodNormalizer::setCamelizedAttributes` to allow calling
-   camel cased methods for underscored properties
-
-2.2.0
------
-
- * [BC BREAK] All Serializer, Normalizer and Encoder interfaces have been
-   modified to include an optional `$context` array parameter.
- * The XML Root name can now be configured with the `xml_root_name`
-   parameter in the context option to the `XmlEncoder`.
- * Options to `json_encode` and `json_decode` can be passed through
-   the context options of `JsonEncode` and `JsonDecode` encoder/decoders.
-
-2.1.0
------
-
- * added DecoderInterface::supportsDecoding(),
-   EncoderInterface::supportsEncoding()
- * removed NormalizableInterface::denormalize(),
-   NormalizerInterface::denormalize(),
-   NormalizerInterface::supportsDenormalization()
- * removed normalize() denormalize() encode() decode() supportsSerialization()
-   supportsDeserialization() supportsEncoding() supportsDecoding()
-   getEncoder() from SerializerInterface
- * Serializer now implements NormalizerInterface, DenormalizerInterface,
-   EncoderInterface, DecoderInterface in addition to SerializerInterface
- * added DenormalizableInterface and DenormalizerInterface
- * [BC BREAK] changed `GetSetMethodNormalizer`'s key names from all lowercased
-   to camelCased (e.g. `mypropertyvalue` to `myPropertyValue`)
- * [BC BREAK] convert the `item` XML tag to an array
-
-    ``` xml
-    <?xml version="1.0"?>
-    <response>
-        <item><title><![CDATA[title1]]></title></item><item><title><![CDATA[title2]]></title></item>
-    </response>
-    ```
-
-    Before:
-
-        Array()
-
-    After:
-
-        Array(
-            [item] => Array(
-                [0] => Array(
-                    [title] => title1
-                )
-                [1] => Array(
-                    [title] => title2
-                )
-            )
-        )
diff --git a/vendor/symfony/serializer/Encoder/ChainDecoder.php b/vendor/symfony/serializer/Encoder/ChainDecoder.php
deleted file mode 100644
index f8f17b4..0000000
--- a/vendor/symfony/serializer/Encoder/ChainDecoder.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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\Encoder;
-
-use Symfony\Component\Serializer\Exception\RuntimeException;
-
-/**
- * Decoder delegating the decoding to a chain of decoders.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- * @author Lukas Kahwe Smith <smith@pooteeweet.org>
- */
-class ChainDecoder implements DecoderInterface
-{
-    protected $decoders = array();
-    protected $decoderByFormat = array();
-
-    public function __construct(array $decoders = array())
-    {
-        $this->decoders = $decoders;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    final public function decode($data, $format, array $context = array())
-    {
-        return $this->getDecoder($format)->decode($data, $format, $context);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsDecoding($format)
-    {
-        try {
-            $this->getDecoder($format);
-        } catch (RuntimeException $e) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Gets the decoder supporting the format.
-     *
-     * @param string $format
-     *
-     * @return DecoderInterface
-     *
-     * @throws RuntimeException if no decoder is found
-     */
-    private function getDecoder($format)
-    {
-        if (isset($this->decoderByFormat[$format])
-            && isset($this->decoders[$this->decoderByFormat[$format]])
-        ) {
-            return $this->decoders[$this->decoderByFormat[$format]];
-        }
-
-        foreach ($this->decoders as $i => $decoder) {
-            if ($decoder->supportsDecoding($format)) {
-                $this->decoderByFormat[$format] = $i;
-
-                return $decoder;
-            }
-        }
-
-        throw new RuntimeException(sprintf('No decoder found for format "%s".', $format));
-    }
-}
diff --git a/vendor/symfony/serializer/Encoder/ChainEncoder.php b/vendor/symfony/serializer/Encoder/ChainEncoder.php
deleted file mode 100644
index 5ee352a..0000000
--- a/vendor/symfony/serializer/Encoder/ChainEncoder.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?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\Encoder;
-
-use Symfony\Component\Serializer\Exception\RuntimeException;
-
-/**
- * Encoder delegating the decoding to a chain of encoders.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- * @author Lukas Kahwe Smith <smith@pooteeweet.org>
- */
-class ChainEncoder implements EncoderInterface
-{
-    protected $encoders = array();
-    protected $encoderByFormat = array();
-
-    public function __construct(array $encoders = array())
-    {
-        $this->encoders = $encoders;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    final public function encode($data, $format, array $context = array())
-    {
-        return $this->getEncoder($format)->encode($data, $format, $context);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsEncoding($format)
-    {
-        try {
-            $this->getEncoder($format);
-        } catch (RuntimeException $e) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Checks whether the normalization is needed for the given format.
-     *
-     * @param string $format
-     *
-     * @return bool
-     */
-    public function needsNormalization($format)
-    {
-        $encoder = $this->getEncoder($format);
-
-        if (!$encoder instanceof NormalizationAwareInterface) {
-            return true;
-        }
-
-        if ($encoder instanceof self) {
-            return $encoder->needsNormalization($format);
-        }
-
-        return false;
-    }
-
-    /**
-     * Gets the encoder supporting the format.
-     *
-     * @param string $format
-     *
-     * @return EncoderInterface
-     *
-     * @throws RuntimeException if no encoder is found
-     */
-    private function getEncoder($format)
-    {
-        if (isset($this->encoderByFormat[$format])
-            && isset($this->encoders[$this->encoderByFormat[$format]])
-        ) {
-            return $this->encoders[$this->encoderByFormat[$format]];
-        }
-
-        foreach ($this->encoders as $i => $encoder) {
-            if ($encoder->supportsEncoding($format)) {
-                $this->encoderByFormat[$format] = $i;
-
-                return $encoder;
-            }
-        }
-
-        throw new RuntimeException(sprintf('No encoder found for format "%s".', $format));
-    }
-}
diff --git a/vendor/symfony/serializer/Encoder/DecoderInterface.php b/vendor/symfony/serializer/Encoder/DecoderInterface.php
deleted file mode 100644
index 910f4ce..0000000
--- a/vendor/symfony/serializer/Encoder/DecoderInterface.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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\Encoder;
-
-use Symfony\Component\Serializer\Exception\UnexpectedValueException;
-
-/**
- * Defines the interface of decoders.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface DecoderInterface
-{
-    /**
-     * Decodes a string into PHP data.
-     *
-     * @param string $data    Data to decode
-     * @param string $format  Format name
-     * @param array  $context options that decoders have access to.
-     *
-     * The format parameter specifies which format the data is in; valid values
-     * depend on the specific implementation. Authors implementing this interface
-     * are encouraged to document which formats they support in a non-inherited
-     * phpdoc comment.
-     *
-     * @return mixed
-     *
-     * @throws UnexpectedValueException
-     */
-    public function decode($data, $format, array $context = array());
-
-    /**
-     * Checks whether the deserializer can decode from given format.
-     *
-     * @param string $format format name
-     *
-     * @return bool
-     */
-    public function supportsDecoding($format);
-}
diff --git a/vendor/symfony/serializer/Encoder/EncoderInterface.php b/vendor/symfony/serializer/Encoder/EncoderInterface.php
deleted file mode 100644
index fe7e777..0000000
--- a/vendor/symfony/serializer/Encoder/EncoderInterface.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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\Encoder;
-
-use Symfony\Component\Serializer\Exception\UnexpectedValueException;
-
-/**
- * Defines the interface of encoders.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface EncoderInterface
-{
-    /**
-     * Encodes data into the given format.
-     *
-     * @param mixed  $data    Data to encode
-     * @param string $format  Format name
-     * @param array  $context options that normalizers/encoders have access to.
-     *
-     * @return scalar
-     *
-     * @throws UnexpectedValueException
-     */
-    public function encode($data, $format, array $context = array());
-
-    /**
-     * Checks whether the serializer can encode to given format.
-     *
-     * @param string $format format name
-     *
-     * @return bool
-     */
-    public function supportsEncoding($format);
-}
diff --git a/vendor/symfony/serializer/Encoder/JsonDecode.php b/vendor/symfony/serializer/Encoder/JsonDecode.php
deleted file mode 100644
index 5f5f289..0000000
--- a/vendor/symfony/serializer/Encoder/JsonDecode.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?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\Encoder;
-
-use Symfony\Component\Serializer\Exception\UnexpectedValueException;
-
-/**
- * Decodes JSON data.
- *
- * @author Sander Coolen <sander@jibber.nl>
- */
-class JsonDecode implements DecoderInterface
-{
-    /**
-     * Specifies if the returned result should be an associative array or a nested stdClass object hierarchy.
-     *
-     * @var bool
-     */
-    private $associative;
-
-    /**
-     * Specifies the recursion depth.
-     *
-     * @var int
-     */
-    private $recursionDepth;
-
-    private $lastError = JSON_ERROR_NONE;
-
-    protected $serializer;
-
-    /**
-     * Constructs a new JsonDecode instance.
-     *
-     * @param bool $associative True to return the result associative array, false for a nested stdClass hierarchy
-     * @param int  $depth       Specifies the recursion depth
-     */
-    public function __construct($associative = false, $depth = 512)
-    {
-        $this->associative = $associative;
-        $this->recursionDepth = (int) $depth;
-    }
-
-    /**
-     * Returns the last decoding error (if any).
-     *
-     * @return int
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             The {@self decode()} method throws an exception if error found.
-     * @see http://php.net/manual/en/function.json-last-error.php json_last_error
-     */
-    public function getLastError()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Catch the exception raised by the decode() method instead to get the last JSON decoding error.', E_USER_DEPRECATED);
-
-        return $this->lastError;
-    }
-
-    /**
-     * Decodes data.
-     *
-     * @param string $data    The encoded JSON string to decode
-     * @param string $format  Must be set to JsonEncoder::FORMAT
-     * @param array  $context An optional set of options for the JSON decoder; see below
-     *
-     * The $context array is a simple key=>value array, with the following supported keys:
-     *
-     * json_decode_associative: boolean
-     *      If true, returns the object as associative array.
-     *      If false, returns the object as nested stdClass
-     *      If not specified, this method will use the default set in JsonDecode::__construct
-     *
-     * json_decode_recursion_depth: integer
-     *      Specifies the maximum recursion depth
-     *      If not specified, this method will use the default set in JsonDecode::__construct
-     *
-     * json_decode_options: integer
-     *      Specifies additional options as per documentation for json_decode. Only supported with PHP 5.4.0 and higher
-     *
-     * @return mixed
-     *
-     * @throws UnexpectedValueException
-     *
-     * @see http://php.net/json_decode json_decode
-     */
-    public function decode($data, $format, array $context = array())
-    {
-        $context = $this->resolveContext($context);
-
-        $associative = $context['json_decode_associative'];
-        $recursionDepth = $context['json_decode_recursion_depth'];
-        $options = $context['json_decode_options'];
-
-        if (PHP_VERSION_ID >= 50400) {
-            $decodedData = json_decode($data, $associative, $recursionDepth, $options);
-        } else {
-            $decodedData = json_decode($data, $associative, $recursionDepth);
-        }
-
-        if (JSON_ERROR_NONE !== $this->lastError = json_last_error()) {
-            throw new UnexpectedValueException(JsonEncoder::getLastErrorMessage());
-        }
-
-        return $decodedData;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsDecoding($format)
-    {
-        return JsonEncoder::FORMAT === $format;
-    }
-
-    /**
-     * Merges the default options of the Json Decoder with the passed context.
-     *
-     * @param array $context
-     *
-     * @return array
-     */
-    private function resolveContext(array $context)
-    {
-        $defaultOptions = array(
-            'json_decode_associative' => $this->associative,
-            'json_decode_recursion_depth' => $this->recursionDepth,
-            'json_decode_options' => 0,
-        );
-
-        return array_merge($defaultOptions, $context);
-    }
-}
diff --git a/vendor/symfony/serializer/Encoder/JsonEncode.php b/vendor/symfony/serializer/Encoder/JsonEncode.php
deleted file mode 100644
index 3a6b2fd..0000000
--- a/vendor/symfony/serializer/Encoder/JsonEncode.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?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\Encoder;
-
-use Symfony\Component\Serializer\Exception\UnexpectedValueException;
-
-/**
- * Encodes JSON data.
- *
- * @author Sander Coolen <sander@jibber.nl>
- */
-class JsonEncode implements EncoderInterface
-{
-    private $options;
-    private $lastError = JSON_ERROR_NONE;
-
-    public function __construct($bitmask = 0)
-    {
-        $this->options = $bitmask;
-    }
-
-    /**
-     * Returns the last encoding error (if any).
-     *
-     * @return int
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             The {@self encode()} throws an exception if error found.
-     * @see http://php.net/manual/en/function.json-last-error.php json_last_error
-     */
-    public function getLastError()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Catch the exception raised by the encode() method instead to get the last JSON encoding error.', E_USER_DEPRECATED);
-
-        return $this->lastError;
-    }
-
-    /**
-     * Encodes PHP data to a JSON string.
-     *
-     * {@inheritdoc}
-     */
-    public function encode($data, $format, array $context = array())
-    {
-        $context = $this->resolveContext($context);
-
-        $encodedJson = json_encode($data, $context['json_encode_options']);
-
-        if (JSON_ERROR_NONE !== $this->lastError = json_last_error()) {
-            throw new UnexpectedValueException(JsonEncoder::getLastErrorMessage());
-        }
-
-        return $encodedJson;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsEncoding($format)
-    {
-        return JsonEncoder::FORMAT === $format;
-    }
-
-    /**
-     * Merge default json encode options with context.
-     *
-     * @param array $context
-     *
-     * @return array
-     */
-    private function resolveContext(array $context = array())
-    {
-        return array_merge(array('json_encode_options' => $this->options), $context);
-    }
-}
diff --git a/vendor/symfony/serializer/Encoder/JsonEncoder.php b/vendor/symfony/serializer/Encoder/JsonEncoder.php
deleted file mode 100644
index 284f579..0000000
--- a/vendor/symfony/serializer/Encoder/JsonEncoder.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?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\Encoder;
-
-/**
- * Encodes JSON data.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class JsonEncoder implements EncoderInterface, DecoderInterface
-{
-    const FORMAT = 'json';
-
-    /**
-     * @var JsonEncode
-     */
-    protected $encodingImpl;
-
-    /**
-     * @var JsonDecode
-     */
-    protected $decodingImpl;
-
-    public function __construct(JsonEncode $encodingImpl = null, JsonDecode $decodingImpl = null)
-    {
-        $this->encodingImpl = $encodingImpl ?: new JsonEncode();
-        $this->decodingImpl = $decodingImpl ?: new JsonDecode(true);
-    }
-
-    /**
-     * Returns the last encoding error (if any).
-     *
-     * @return int
-     *
-     * @deprecated since version 2.5, to be removed in 3.0. JsonEncode throws exception if an error is found.
-     */
-    public function getLastEncodingError()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Catch the exception raised by the Symfony\Component\Serializer\Encoder\JsonEncode::encode() method instead to get the last JSON encoding error.', E_USER_DEPRECATED);
-
-        return $this->encodingImpl->getLastError();
-    }
-
-    /**
-     * Returns the last decoding error (if any).
-     *
-     * @return int
-     *
-     * @deprecated since version 2.5, to be removed in 3.0. JsonDecode throws exception if an error is found.
-     */
-    public function getLastDecodingError()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Catch the exception raised by the Symfony\Component\Serializer\Encoder\JsonDecode::decode() method instead to get the last JSON decoding error.', E_USER_DEPRECATED);
-
-        return $this->decodingImpl->getLastError();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function encode($data, $format, array $context = array())
-    {
-        return $this->encodingImpl->encode($data, self::FORMAT, $context);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function decode($data, $format, array $context = array())
-    {
-        return $this->decodingImpl->decode($data, self::FORMAT, $context);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsEncoding($format)
-    {
-        return self::FORMAT === $format;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsDecoding($format)
-    {
-        return self::FORMAT === $format;
-    }
-
-    /**
-     * Resolves json_last_error message.
-     *
-     * @return string
-     */
-    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';
-        }
-    }
-}
diff --git a/vendor/symfony/serializer/Encoder/NormalizationAwareInterface.php b/vendor/symfony/serializer/Encoder/NormalizationAwareInterface.php
deleted file mode 100644
index c066bd7..0000000
--- a/vendor/symfony/serializer/Encoder/NormalizationAwareInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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\Encoder;
-
-/**
- * Defines the interface of encoders that will normalize data themselves.
- *
- * Implementing this interface essentially just tells the Serializer that the
- * data should not be pre-normalized before being passed to this Encoder.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface NormalizationAwareInterface
-{
-}
diff --git a/vendor/symfony/serializer/Encoder/SerializerAwareEncoder.php b/vendor/symfony/serializer/Encoder/SerializerAwareEncoder.php
deleted file mode 100644
index a3d8ff3..0000000
--- a/vendor/symfony/serializer/Encoder/SerializerAwareEncoder.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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\Encoder;
-
-use Symfony\Component\Serializer\SerializerInterface;
-use Symfony\Component\Serializer\SerializerAwareInterface;
-
-/**
- * SerializerAware Encoder implementation.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-abstract class SerializerAwareEncoder implements SerializerAwareInterface
-{
-    protected $serializer;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setSerializer(SerializerInterface $serializer)
-    {
-        $this->serializer = $serializer;
-    }
-}
diff --git a/vendor/symfony/serializer/Encoder/XmlEncoder.php b/vendor/symfony/serializer/Encoder/XmlEncoder.php
deleted file mode 100644
index ce0c475..0000000
--- a/vendor/symfony/serializer/Encoder/XmlEncoder.php
+++ /dev/null
@@ -1,536 +0,0 @@
-<?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\Encoder;
-
-use Symfony\Component\Serializer\Exception\UnexpectedValueException;
-
-/**
- * Encodes XML data.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @author John Wards <jwards@whiteoctober.co.uk>
- * @author Fabian Vogler <fabian@equivalence.ch>
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, DecoderInterface, NormalizationAwareInterface
-{
-    /**
-     * @var \DOMDocument
-     */
-    private $dom;
-    private $format;
-    private $context;
-    private $rootNodeName = 'response';
-
-    /**
-     * Construct new XmlEncoder and allow to change the root node element name.
-     *
-     * @param string $rootNodeName
-     */
-    public function __construct($rootNodeName = 'response')
-    {
-        $this->rootNodeName = $rootNodeName;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function encode($data, $format, array $context = array())
-    {
-        if ($data instanceof \DOMDocument) {
-            return $data->saveXML();
-        }
-
-        $xmlRootNodeName = $this->resolveXmlRootName($context);
-
-        $this->dom = $this->createDomDocument($context);
-        $this->format = $format;
-        $this->context = $context;
-
-        if (null !== $data && !is_scalar($data)) {
-            $root = $this->dom->createElement($xmlRootNodeName);
-            $this->dom->appendChild($root);
-            $this->buildXml($root, $data, $xmlRootNodeName);
-        } else {
-            $this->appendNode($this->dom, $data, $xmlRootNodeName);
-        }
-
-        return $this->dom->saveXML();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function decode($data, $format, array $context = array())
-    {
-        if ('' === trim($data)) {
-            throw new UnexpectedValueException('Invalid XML data, it can not be empty.');
-        }
-
-        $internalErrors = libxml_use_internal_errors(true);
-        $disableEntities = libxml_disable_entity_loader(true);
-        libxml_clear_errors();
-
-        $dom = new \DOMDocument();
-        $dom->loadXML($data, LIBXML_NONET | LIBXML_NOBLANKS);
-
-        libxml_use_internal_errors($internalErrors);
-        libxml_disable_entity_loader($disableEntities);
-
-        if ($error = libxml_get_last_error()) {
-            libxml_clear_errors();
-
-            throw new UnexpectedValueException($error->message);
-        }
-
-        foreach ($dom->childNodes as $child) {
-            if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) {
-                throw new UnexpectedValueException('Document types are not allowed.');
-            }
-        }
-
-        $rootNode = $dom->firstChild;
-
-        // todo: throw an exception if the root node name is not correctly configured (bc)
-
-        if ($rootNode->hasChildNodes()) {
-            $xpath = new \DOMXPath($dom);
-            $data = array();
-            foreach ($xpath->query('namespace::*', $dom->documentElement) as $nsNode) {
-                $data['@'.$nsNode->nodeName] = $nsNode->nodeValue;
-            }
-
-            unset($data['@xmlns:xml']);
-
-            if (empty($data)) {
-                return $this->parseXml($rootNode);
-            }
-
-            return array_merge($data, (array) $this->parseXml($rootNode));
-        }
-
-        if (!$rootNode->hasAttributes()) {
-            return $rootNode->nodeValue;
-        }
-
-        $data = array();
-
-        foreach ($rootNode->attributes as $attrKey => $attr) {
-            $data['@'.$attrKey] = $attr->nodeValue;
-        }
-
-        $data['#'] = $rootNode->nodeValue;
-
-        return $data;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsEncoding($format)
-    {
-        return 'xml' === $format;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsDecoding($format)
-    {
-        return 'xml' === $format;
-    }
-
-    /**
-     * Sets the root node name.
-     *
-     * @param string $name root node name
-     */
-    public function setRootNodeName($name)
-    {
-        $this->rootNodeName = $name;
-    }
-
-    /**
-     * Returns the root node name.
-     *
-     * @return string
-     */
-    public function getRootNodeName()
-    {
-        return $this->rootNodeName;
-    }
-
-    /**
-     * @param \DOMNode $node
-     * @param string   $val
-     *
-     * @return bool
-     */
-    final protected function appendXMLString(\DOMNode $node, $val)
-    {
-        if (strlen($val) > 0) {
-            $frag = $this->dom->createDocumentFragment();
-            $frag->appendXML($val);
-            $node->appendChild($frag);
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * @param \DOMNode $node
-     * @param string   $val
-     *
-     * @return bool
-     */
-    final protected function appendText(\DOMNode $node, $val)
-    {
-        $nodeText = $this->dom->createTextNode($val);
-        $node->appendChild($nodeText);
-
-        return true;
-    }
-
-    /**
-     * @param \DOMNode $node
-     * @param string   $val
-     *
-     * @return bool
-     */
-    final protected function appendCData(\DOMNode $node, $val)
-    {
-        $nodeText = $this->dom->createCDATASection($val);
-        $node->appendChild($nodeText);
-
-        return true;
-    }
-
-    /**
-     * @param \DOMNode             $node
-     * @param \DOMDocumentFragment $fragment
-     *
-     * @return bool
-     */
-    final protected function appendDocumentFragment(\DOMNode $node, $fragment)
-    {
-        if ($fragment instanceof \DOMDocumentFragment) {
-            $node->appendChild($fragment);
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Checks the name is a valid xml element name.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    final protected function isElementNameValid($name)
-    {
-        return $name &&
-            false === strpos($name, ' ') &&
-            preg_match('#^[\pL_][\pL0-9._:-]*$#ui', $name);
-    }
-
-    /**
-     * Parse the input DOMNode into an array or a string.
-     *
-     * @param \DOMNode $node xml to parse
-     *
-     * @return array|string
-     */
-    private function parseXml(\DOMNode $node)
-    {
-        $data = $this->parseXmlAttributes($node);
-
-        $value = $this->parseXmlValue($node);
-
-        if (!count($data)) {
-            return $value;
-        }
-
-        if (!is_array($value)) {
-            $data['#'] = $value;
-
-            return $data;
-        }
-
-        if (1 === count($value) && key($value)) {
-            $data[key($value)] = current($value);
-
-            return $data;
-        }
-
-        foreach ($value as $key => $val) {
-            $data[$key] = $val;
-        }
-
-        return $data;
-    }
-
-    /**
-     * Parse the input DOMNode attributes into an array.
-     *
-     * @param \DOMNode $node xml to parse
-     *
-     * @return array
-     */
-    private function parseXmlAttributes(\DOMNode $node)
-    {
-        if (!$node->hasAttributes()) {
-            return array();
-        }
-
-        $data = array();
-
-        foreach ($node->attributes as $attr) {
-            if (ctype_digit($attr->nodeValue)) {
-                $data['@'.$attr->nodeName] = (int) $attr->nodeValue;
-            } else {
-                $data['@'.$attr->nodeName] = $attr->nodeValue;
-            }
-        }
-
-        return $data;
-    }
-
-    /**
-     * Parse the input DOMNode value (content and children) into an array or a string.
-     *
-     * @param \DOMNode $node xml to parse
-     *
-     * @return array|string
-     */
-    private function parseXmlValue(\DOMNode $node)
-    {
-        if (!$node->hasChildNodes()) {
-            return $node->nodeValue;
-        }
-
-        if (1 === $node->childNodes->length && in_array($node->firstChild->nodeType, array(XML_TEXT_NODE, XML_CDATA_SECTION_NODE))) {
-            return $node->firstChild->nodeValue;
-        }
-
-        $value = array();
-
-        foreach ($node->childNodes as $subnode) {
-            $val = $this->parseXml($subnode);
-
-            if ('item' === $subnode->nodeName && isset($val['@key'])) {
-                if (isset($val['#'])) {
-                    $value[$val['@key']] = $val['#'];
-                } else {
-                    $value[$val['@key']] = $val;
-                }
-            } else {
-                $value[$subnode->nodeName][] = $val;
-            }
-        }
-
-        foreach ($value as $key => $val) {
-            if (is_array($val) && 1 === count($val)) {
-                $value[$key] = current($val);
-            }
-        }
-
-        return $value;
-    }
-
-    /**
-     * Parse the data and convert it to DOMElements.
-     *
-     * @param \DOMNode     $parentNode
-     * @param array|object $data
-     * @param string|null  $xmlRootNodeName
-     *
-     * @return bool
-     *
-     * @throws UnexpectedValueException
-     */
-    private function buildXml(\DOMNode $parentNode, $data, $xmlRootNodeName = null)
-    {
-        $append = true;
-
-        if (is_array($data) || $data instanceof \Traversable) {
-            foreach ($data as $key => $data) {
-                //Ah this is the magic @ attribute types.
-                if (0 === strpos($key, '@') && is_scalar($data) && $this->isElementNameValid($attributeName = substr($key, 1))) {
-                    $parentNode->setAttribute($attributeName, $data);
-                } elseif ($key === '#') {
-                    $append = $this->selectNodeType($parentNode, $data);
-                } elseif (is_array($data) && false === is_numeric($key)) {
-                    // Is this array fully numeric keys?
-                    if (ctype_digit(implode('', array_keys($data)))) {
-                        /*
-                         * Create nodes to append to $parentNode based on the $key of this array
-                         * Produces <xml><item>0</item><item>1</item></xml>
-                         * From array("item" => array(0,1));.
-                         */
-                        foreach ($data as $subData) {
-                            $append = $this->appendNode($parentNode, $subData, $key);
-                        }
-                    } else {
-                        $append = $this->appendNode($parentNode, $data, $key);
-                    }
-                } elseif (is_numeric($key) || !$this->isElementNameValid($key)) {
-                    $append = $this->appendNode($parentNode, $data, 'item', $key);
-                } else {
-                    $append = $this->appendNode($parentNode, $data, $key);
-                }
-            }
-
-            return $append;
-        }
-
-        if (is_object($data)) {
-            $data = $this->serializer->normalize($data, $this->format, $this->context);
-            if (null !== $data && !is_scalar($data)) {
-                return $this->buildXml($parentNode, $data, $xmlRootNodeName);
-            }
-
-            // top level data object was normalized into a scalar
-            if (!$parentNode->parentNode->parentNode) {
-                $root = $parentNode->parentNode;
-                $root->removeChild($parentNode);
-
-                return $this->appendNode($root, $data, $xmlRootNodeName);
-            }
-
-            return $this->appendNode($parentNode, $data, 'data');
-        }
-
-        throw new UnexpectedValueException(sprintf('An unexpected value could not be serialized: %s', var_export($data, true)));
-    }
-
-    /**
-     * Selects the type of node to create and appends it to the parent.
-     *
-     * @param \DOMNode     $parentNode
-     * @param array|object $data
-     * @param string       $nodeName
-     * @param string       $key
-     *
-     * @return bool
-     */
-    private function appendNode(\DOMNode $parentNode, $data, $nodeName, $key = null)
-    {
-        $node = $this->dom->createElement($nodeName);
-        if (null !== $key) {
-            $node->setAttribute('key', $key);
-        }
-        $appendNode = $this->selectNodeType($node, $data);
-        // we may have decided not to append this node, either in error or if its $nodeName is not valid
-        if ($appendNode) {
-            $parentNode->appendChild($node);
-        }
-
-        return $appendNode;
-    }
-
-    /**
-     * Checks if a value contains any characters which would require CDATA wrapping.
-     *
-     * @param string $val
-     *
-     * @return bool
-     */
-    private function needsCdataWrapping($val)
-    {
-        return preg_match('/[<>&]/', $val);
-    }
-
-    /**
-     * Tests the value being passed and decide what sort of element to create.
-     *
-     * @param \DOMNode $node
-     * @param mixed    $val
-     *
-     * @return bool
-     */
-    private function selectNodeType(\DOMNode $node, $val)
-    {
-        if (is_array($val)) {
-            return $this->buildXml($node, $val);
-        } elseif ($val instanceof \SimpleXMLElement) {
-            $child = $this->dom->importNode(dom_import_simplexml($val), true);
-            $node->appendChild($child);
-        } elseif ($val instanceof \Traversable) {
-            $this->buildXml($node, $val);
-        } elseif (is_object($val)) {
-            return $this->buildXml($node, $this->serializer->normalize($val, $this->format, $this->context));
-        } elseif (is_numeric($val)) {
-            return $this->appendText($node, (string) $val);
-        } elseif (is_string($val) && $this->needsCdataWrapping($val)) {
-            return $this->appendCData($node, $val);
-        } elseif (is_string($val)) {
-            return $this->appendText($node, $val);
-        } elseif (is_bool($val)) {
-            return $this->appendText($node, (int) $val);
-        } elseif ($val instanceof \DOMNode) {
-            $child = $this->dom->importNode($val, true);
-            $node->appendChild($child);
-        }
-
-        return true;
-    }
-
-    /**
-     * Get real XML root node name, taking serializer options into account.
-     *
-     * @param array $context
-     *
-     * @return string
-     */
-    private function resolveXmlRootName(array $context = array())
-    {
-        return isset($context['xml_root_node_name'])
-            ? $context['xml_root_node_name']
-            : $this->rootNodeName;
-    }
-
-    /**
-     * Create a DOM document, taking serializer options into account.
-     *
-     * @param array $context options that the encoder has access to.
-     *
-     * @return \DOMDocument
-     */
-    private function createDomDocument(array $context)
-    {
-        $document = new \DOMDocument();
-
-        // Set an attribute on the DOM document specifying, as part of the XML declaration,
-        $xmlOptions = array(
-            // nicely formats output with indentation and extra space
-            'xml_format_output' => 'formatOutput',
-            // the version number of the document
-            'xml_version' => 'xmlVersion',
-            // the encoding of the document
-            'xml_encoding' => 'encoding',
-            // whether the document is standalone
-            'xml_standalone' => 'xmlStandalone',
-        );
-        foreach ($xmlOptions as $xmlOption => $documentProperty) {
-            if (isset($context[$xmlOption])) {
-                $document->$documentProperty = $context[$xmlOption];
-            }
-        }
-
-        return $document;
-    }
-}
diff --git a/vendor/symfony/serializer/Exception/CircularReferenceException.php b/vendor/symfony/serializer/Exception/CircularReferenceException.php
deleted file mode 100644
index dc84183..0000000
--- a/vendor/symfony/serializer/Exception/CircularReferenceException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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;
-
-/**
- * CircularReferenceException.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class CircularReferenceException extends RuntimeException
-{
-}
diff --git a/vendor/symfony/serializer/Exception/Exception.php b/vendor/symfony/serializer/Exception/Exception.php
deleted file mode 100644
index fc0606e..0000000
--- a/vendor/symfony/serializer/Exception/Exception.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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;
-
-/**
- * Base exception.
- *
- * @deprecated since version 2.7, to be removed in 3.0. Use ExceptionInterface instead.
- */
-interface Exception
-{
-}
diff --git a/vendor/symfony/serializer/Exception/ExceptionInterface.php b/vendor/symfony/serializer/Exception/ExceptionInterface.php
deleted file mode 100644
index ff67edb..0000000
--- a/vendor/symfony/serializer/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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;
-
-/**
- * Base exception interface.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-interface ExceptionInterface extends Exception
-{
-}
diff --git a/vendor/symfony/serializer/Exception/InvalidArgumentException.php b/vendor/symfony/serializer/Exception/InvalidArgumentException.php
deleted file mode 100644
index f4e645c..0000000
--- a/vendor/symfony/serializer/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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;
-
-/**
- * InvalidArgumentException.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/serializer/Exception/LogicException.php b/vendor/symfony/serializer/Exception/LogicException.php
deleted file mode 100644
index 08c53e0..0000000
--- a/vendor/symfony/serializer/Exception/LogicException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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;
-
-/**
- * LogicException.
- *
- * @author Lukas Kahwe Smith <smith@pooteeweet.org>
- */
-class LogicException extends \LogicException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/serializer/Exception/MappingException.php b/vendor/symfony/serializer/Exception/MappingException.php
deleted file mode 100644
index 4df4eec..0000000
--- a/vendor/symfony/serializer/Exception/MappingException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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;
-
-/**
- * MappingException.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class MappingException extends RuntimeException
-{
-}
diff --git a/vendor/symfony/serializer/Exception/RuntimeException.php b/vendor/symfony/serializer/Exception/RuntimeException.php
deleted file mode 100644
index a287d97..0000000
--- a/vendor/symfony/serializer/Exception/RuntimeException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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;
-
-/**
- * RuntimeException.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class RuntimeException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/serializer/Exception/UnexpectedValueException.php b/vendor/symfony/serializer/Exception/UnexpectedValueException.php
deleted file mode 100644
index 2a63c5b..0000000
--- a/vendor/symfony/serializer/Exception/UnexpectedValueException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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;
-
-/**
- * UnexpectedValueException.
- *
- * @author Lukas Kahwe Smith <smith@pooteeweet.org>
- */
-class UnexpectedValueException extends \UnexpectedValueException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/serializer/Exception/UnsupportedException.php b/vendor/symfony/serializer/Exception/UnsupportedException.php
deleted file mode 100644
index 7dc44ee..0000000
--- a/vendor/symfony/serializer/Exception/UnsupportedException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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;
-
-/**
- * UnsupportedException.
- *
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
-class UnsupportedException extends InvalidArgumentException
-{
-}
diff --git a/vendor/symfony/serializer/LICENSE b/vendor/symfony/serializer/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/serializer/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/serializer/Mapping/AttributeMetadata.php b/vendor/symfony/serializer/Mapping/AttributeMetadata.php
deleted file mode 100644
index 7a1d3db..0000000
--- a/vendor/symfony/serializer/Mapping/AttributeMetadata.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?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\Mapping;
-
-/**
- * {@inheritdoc}
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class AttributeMetadata implements AttributeMetadataInterface
-{
-    /**
-     * @var string
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getName()} instead.
-     */
-    public $name;
-
-    /**
-     * @var array
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getGroups()} instead.
-     */
-    public $groups = array();
-
-    /**
-     * Constructs a metadata for the given attribute.
-     *
-     * @param string $name
-     */
-    public function __construct($name)
-    {
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addGroup($group)
-    {
-        if (!in_array($group, $this->groups)) {
-            $this->groups[] = $group;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getGroups()
-    {
-        return $this->groups;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function merge(AttributeMetadataInterface $attributeMetadata)
-    {
-        foreach ($attributeMetadata->getGroups() as $group) {
-            $this->addGroup($group);
-        }
-    }
-
-    /**
-     * Returns the names of the properties that should be serialized.
-     *
-     * @return string[]
-     */
-    public function __sleep()
-    {
-        return array('name', 'groups');
-    }
-}
diff --git a/vendor/symfony/serializer/Mapping/AttributeMetadataInterface.php b/vendor/symfony/serializer/Mapping/AttributeMetadataInterface.php
deleted file mode 100644
index 0701a58..0000000
--- a/vendor/symfony/serializer/Mapping/AttributeMetadataInterface.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?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\Mapping;
-
-/**
- * Stores metadata needed for serializing and deserializing attributes.
- *
- * Primarily, the metadata stores serialization groups.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-interface AttributeMetadataInterface
-{
-    /**
-     * Gets the attribute name.
-     *
-     * @return string
-     */
-    public function getName();
-
-    /**
-     * Adds this attribute to the given group.
-     *
-     * @param string $group
-     */
-    public function addGroup($group);
-
-    /**
-     * Gets groups of this attribute.
-     *
-     * @return string[]
-     */
-    public function getGroups();
-
-    /**
-     * Merges an {@see AttributeMetadataInterface} with in the current one.
-     *
-     * @param AttributeMetadataInterface $attributeMetadata
-     */
-    public function merge(AttributeMetadataInterface $attributeMetadata);
-}
diff --git a/vendor/symfony/serializer/Mapping/ClassMetadata.php b/vendor/symfony/serializer/Mapping/ClassMetadata.php
deleted file mode 100644
index 55ddf52..0000000
--- a/vendor/symfony/serializer/Mapping/ClassMetadata.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?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\Mapping;
-
-/**
- * {@inheritdoc}
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class ClassMetadata implements ClassMetadataInterface
-{
-    /**
-     * @var string
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getName()} instead.
-     */
-    public $name;
-
-    /**
-     * @var AttributeMetadataInterface[]
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getAttributesMetadata()} instead.
-     */
-    public $attributesMetadata = array();
-
-    /**
-     * @var \ReflectionClass
-     */
-    private $reflClass;
-
-    /**
-     * Constructs a metadata for the given class.
-     *
-     * @param string $class
-     */
-    public function __construct($class)
-    {
-        $this->name = $class;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addAttributeMetadata(AttributeMetadataInterface $attributeMetadata)
-    {
-        $this->attributesMetadata[$attributeMetadata->getName()] = $attributeMetadata;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getAttributesMetadata()
-    {
-        return $this->attributesMetadata;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function merge(ClassMetadataInterface $classMetadata)
-    {
-        foreach ($classMetadata->getAttributesMetadata() as $attributeMetadata) {
-            if (isset($this->attributesMetadata[$attributeMetadata->getName()])) {
-                $this->attributesMetadata[$attributeMetadata->getName()]->merge($attributeMetadata);
-            } else {
-                $this->addAttributeMetadata($attributeMetadata);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getReflectionClass()
-    {
-        if (!$this->reflClass) {
-            $this->reflClass = new \ReflectionClass($this->getName());
-        }
-
-        return $this->reflClass;
-    }
-
-    /**
-     * Returns the names of the properties that should be serialized.
-     *
-     * @return string[]
-     */
-    public function __sleep()
-    {
-        return array(
-            'name',
-            'attributesMetadata',
-        );
-    }
-}
diff --git a/vendor/symfony/serializer/Mapping/ClassMetadataInterface.php b/vendor/symfony/serializer/Mapping/ClassMetadataInterface.php
deleted file mode 100644
index c967666..0000000
--- a/vendor/symfony/serializer/Mapping/ClassMetadataInterface.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?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\Mapping;
-
-/**
- * Stores metadata needed for serializing and deserializing objects of specific class.
- *
- * Primarily, the metadata stores the list of attributes to serialize or deserialize.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-interface ClassMetadataInterface
-{
-    /**
-     * Returns the name of the backing PHP class.
-     *
-     * @return string The name of the backing class.
-     */
-    public function getName();
-
-    /**
-     * Adds an {@link AttributeMetadataInterface}.
-     *
-     * @param AttributeMetadataInterface $attributeMetadata
-     */
-    public function addAttributeMetadata(AttributeMetadataInterface $attributeMetadata);
-
-    /**
-     * Gets the list of {@link AttributeMetadataInterface}.
-     *
-     * @return AttributeMetadataInterface[]
-     */
-    public function getAttributesMetadata();
-
-    /**
-     * Merges a {@link ClassMetadataInterface} in the current one.
-     *
-     * @param ClassMetadataInterface $classMetadata
-     */
-    public function merge(ClassMetadataInterface $classMetadata);
-
-    /**
-     * Returns a {@link \ReflectionClass} instance for this class.
-     *
-     * @return \ReflectionClass
-     */
-    public function getReflectionClass();
-}
diff --git a/vendor/symfony/serializer/Mapping/Factory/ClassMetadataFactory.php b/vendor/symfony/serializer/Mapping/Factory/ClassMetadataFactory.php
deleted file mode 100644
index 3a354e3..0000000
--- a/vendor/symfony/serializer/Mapping/Factory/ClassMetadataFactory.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?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\Mapping\Factory;
-
-use Doctrine\Common\Cache\Cache;
-use Symfony\Component\Serializer\Exception\InvalidArgumentException;
-use Symfony\Component\Serializer\Mapping\ClassMetadata;
-use Symfony\Component\Serializer\Mapping\Loader\LoaderInterface;
-
-/**
- * Returns a {@link ClassMetadata}.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class ClassMetadataFactory implements ClassMetadataFactoryInterface
-{
-    /**
-     * @var LoaderInterface
-     */
-    private $loader;
-    /**
-     * @var Cache
-     */
-    private $cache;
-    /**
-     * @var array
-     */
-    private $loadedClasses;
-
-    /**
-     * @param LoaderInterface $loader
-     * @param Cache|null      $cache
-     */
-    public function __construct(LoaderInterface $loader, Cache $cache = null)
-    {
-        $this->loader = $loader;
-        $this->cache = $cache;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFor($value)
-    {
-        $class = $this->getClass($value);
-        if (!$class) {
-            throw new InvalidArgumentException(sprintf('Cannot create metadata for non-objects. Got: "%s"', gettype($value)));
-        }
-
-        if (isset($this->loadedClasses[$class])) {
-            return $this->loadedClasses[$class];
-        }
-
-        if ($this->cache && ($this->loadedClasses[$class] = $this->cache->fetch($class))) {
-            return $this->loadedClasses[$class];
-        }
-
-        if (!class_exists($class) && !interface_exists($class)) {
-            throw new InvalidArgumentException(sprintf('The class or interface "%s" does not exist.', $class));
-        }
-
-        $classMetadata = new ClassMetadata($class);
-        $this->loader->loadClassMetadata($classMetadata);
-
-        $reflectionClass = $classMetadata->getReflectionClass();
-
-        // Include metadata from the parent class
-        if ($parent = $reflectionClass->getParentClass()) {
-            $classMetadata->merge($this->getMetadataFor($parent->name));
-        }
-
-        // Include metadata from all implemented interfaces
-        foreach ($reflectionClass->getInterfaces() as $interface) {
-            $classMetadata->merge($this->getMetadataFor($interface->name));
-        }
-
-        if ($this->cache) {
-            $this->cache->save($class, $classMetadata);
-        }
-
-        return $this->loadedClasses[$class] = $classMetadata;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasMetadataFor($value)
-    {
-        $class = $this->getClass($value);
-
-        return class_exists($class) || interface_exists($class);
-    }
-
-    /**
-     * Gets a class name for a given class or instance.
-     *
-     * @param mixed $value
-     *
-     * @return string|bool
-     */
-    private function getClass($value)
-    {
-        if (!is_object($value) && !is_string($value)) {
-            return false;
-        }
-
-        return ltrim(is_object($value) ? get_class($value) : $value, '\\');
-    }
-}
diff --git a/vendor/symfony/serializer/Mapping/Factory/ClassMetadataFactoryInterface.php b/vendor/symfony/serializer/Mapping/Factory/ClassMetadataFactoryInterface.php
deleted file mode 100644
index 7ef91a8..0000000
--- a/vendor/symfony/serializer/Mapping/Factory/ClassMetadataFactoryInterface.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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\Mapping\Factory;
-
-use Symfony\Component\Serializer\Exception\InvalidArgumentException;
-use Symfony\Component\Serializer\Mapping\ClassMetadataInterface;
-
-/**
- * Returns a {@see ClassMetadataInterface}.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-interface ClassMetadataFactoryInterface
-{
-    /**
-     * If the method was called with the same class name (or an object of that
-     * class) before, the same metadata instance is returned.
-     *
-     * If the factory was configured with a cache, this method will first look
-     * for an existing metadata instance in the cache. If an existing instance
-     * is found, it will be returned without further ado.
-     *
-     * Otherwise, a new metadata instance is created. If the factory was
-     * configured with a loader, the metadata is passed to the
-     * {@link \Symfony\Component\Serializer\Mapping\Loader\LoaderInterface::loadClassMetadata()} method for further
-     * configuration. At last, the new object is returned.
-     *
-     * @param string|object $value
-     *
-     * @return ClassMetadataInterface
-     *
-     * @throws InvalidArgumentException
-     */
-    public function getMetadataFor($value);
-
-    /**
-     * Checks if class has metadata.
-     *
-     * @param mixed $value
-     *
-     * @return bool
-     */
-    public function hasMetadataFor($value);
-}
diff --git a/vendor/symfony/serializer/Mapping/Loader/AnnotationLoader.php b/vendor/symfony/serializer/Mapping/Loader/AnnotationLoader.php
deleted file mode 100644
index 6c563b4..0000000
--- a/vendor/symfony/serializer/Mapping/Loader/AnnotationLoader.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?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\Mapping\Loader;
-
-use Doctrine\Common\Annotations\Reader;
-use Symfony\Component\Serializer\Annotation\Groups;
-use Symfony\Component\Serializer\Exception\MappingException;
-use Symfony\Component\Serializer\Mapping\AttributeMetadata;
-use Symfony\Component\Serializer\Mapping\ClassMetadataInterface;
-
-/**
- * Annotation loader.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class AnnotationLoader implements LoaderInterface
-{
-    /**
-     * @var Reader
-     */
-    private $reader;
-
-    /**
-     * @param Reader $reader
-     */
-    public function __construct(Reader $reader)
-    {
-        $this->reader = $reader;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadClassMetadata(ClassMetadataInterface $classMetadata)
-    {
-        $reflectionClass = $classMetadata->getReflectionClass();
-        $className = $reflectionClass->name;
-        $loaded = false;
-
-        $attributesMetadata = $classMetadata->getAttributesMetadata();
-
-        foreach ($reflectionClass->getProperties() as $property) {
-            if (!isset($attributesMetadata[$property->name])) {
-                $attributesMetadata[$property->name] = new AttributeMetadata($property->name);
-                $classMetadata->addAttributeMetadata($attributesMetadata[$property->name]);
-            }
-
-            if ($property->getDeclaringClass()->name === $className) {
-                foreach ($this->reader->getPropertyAnnotations($property) as $groups) {
-                    if ($groups instanceof Groups) {
-                        foreach ($groups->getGroups() as $group) {
-                            $attributesMetadata[$property->name]->addGroup($group);
-                        }
-                    }
-
-                    $loaded = true;
-                }
-            }
-        }
-
-        foreach ($reflectionClass->getMethods() as $method) {
-            if ($method->getDeclaringClass()->name === $className) {
-                foreach ($this->reader->getMethodAnnotations($method) as $groups) {
-                    if ($groups instanceof Groups) {
-                        if (preg_match('/^(get|is|has|set)(.+)$/i', $method->name, $matches)) {
-                            $attributeName = lcfirst($matches[2]);
-
-                            if (isset($attributesMetadata[$attributeName])) {
-                                $attributeMetadata = $attributesMetadata[$attributeName];
-                            } else {
-                                $attributesMetadata[$attributeName] = $attributeMetadata = new AttributeMetadata($attributeName);
-                                $classMetadata->addAttributeMetadata($attributeMetadata);
-                            }
-
-                            foreach ($groups->getGroups() as $group) {
-                                $attributeMetadata->addGroup($group);
-                            }
-                        } else {
-                            throw new MappingException(sprintf('Groups on "%s::%s" cannot be added. Groups can only be added on methods beginning with "get", "is", "has" or "set".', $className, $method->name));
-                        }
-                    }
-
-                    $loaded = true;
-                }
-            }
-        }
-
-        return $loaded;
-    }
-}
diff --git a/vendor/symfony/serializer/Mapping/Loader/FileLoader.php b/vendor/symfony/serializer/Mapping/Loader/FileLoader.php
deleted file mode 100644
index 38bb593..0000000
--- a/vendor/symfony/serializer/Mapping/Loader/FileLoader.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Serializer\Exception\MappingException;
-
-/**
- * Base class for all file based loaders.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-abstract class FileLoader implements LoaderInterface
-{
-    /**
-     * @var string
-     */
-    protected $file;
-
-    /**
-     * Constructor.
-     *
-     * @param string $file The mapping file to load
-     *
-     * @throws MappingException if the mapping file does not exist or is not readable
-     */
-    public function __construct($file)
-    {
-        if (!is_file($file)) {
-            throw new MappingException(sprintf('The mapping file %s does not exist', $file));
-        }
-
-        if (!is_readable($file)) {
-            throw new MappingException(sprintf('The mapping file %s is not readable', $file));
-        }
-
-        $this->file = $file;
-    }
-}
diff --git a/vendor/symfony/serializer/Mapping/Loader/LoaderChain.php b/vendor/symfony/serializer/Mapping/Loader/LoaderChain.php
deleted file mode 100644
index 8bf1c17..0000000
--- a/vendor/symfony/serializer/Mapping/Loader/LoaderChain.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Serializer\Exception\MappingException;
-use Symfony\Component\Serializer\Mapping\ClassMetadataInterface;
-
-/**
- * Calls multiple {@link LoaderInterface} instances in a chain.
- *
- * This class accepts multiple instances of LoaderInterface to be passed to the
- * constructor. When {@link loadClassMetadata()} is called, the same method is called
- * in <em>all</em> of these loaders, regardless of whether any of them was
- * successful or not.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class LoaderChain implements LoaderInterface
-{
-    /**
-     * @var LoaderInterface[]
-     */
-    private $loaders;
-
-    /**
-     * Accepts a list of LoaderInterface instances.
-     *
-     * @param LoaderInterface[] $loaders An array of LoaderInterface instances
-     *
-     * @throws MappingException If any of the loaders does not implement LoaderInterface
-     */
-    public function __construct(array $loaders)
-    {
-        foreach ($loaders as $loader) {
-            if (!$loader instanceof LoaderInterface) {
-                throw new MappingException(sprintf('Class %s is expected to implement LoaderInterface', get_class($loader)));
-            }
-        }
-
-        $this->loaders = $loaders;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadClassMetadata(ClassMetadataInterface $metadata)
-    {
-        $success = false;
-
-        foreach ($this->loaders as $loader) {
-            $success = $loader->loadClassMetadata($metadata) || $success;
-        }
-
-        return $success;
-    }
-}
diff --git a/vendor/symfony/serializer/Mapping/Loader/LoaderInterface.php b/vendor/symfony/serializer/Mapping/Loader/LoaderInterface.php
deleted file mode 100644
index ebf84b6..0000000
--- a/vendor/symfony/serializer/Mapping/Loader/LoaderInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Serializer\Mapping\ClassMetadataInterface;
-
-/**
- * Loads {@link ClassMetadataInterface}.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-interface LoaderInterface
-{
-    /**
-     * Load class metadata.
-     *
-     * @param ClassMetadataInterface $classMetadata A metadata
-     *
-     * @return bool
-     */
-    public function loadClassMetadata(ClassMetadataInterface $classMetadata);
-}
diff --git a/vendor/symfony/serializer/Mapping/Loader/XmlFileLoader.php b/vendor/symfony/serializer/Mapping/Loader/XmlFileLoader.php
deleted file mode 100644
index 0da2f7d..0000000
--- a/vendor/symfony/serializer/Mapping/Loader/XmlFileLoader.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Config\Util\XmlUtils;
-use Symfony\Component\Serializer\Exception\MappingException;
-use Symfony\Component\Serializer\Mapping\AttributeMetadata;
-use Symfony\Component\Serializer\Mapping\ClassMetadataInterface;
-
-/**
- * Loads XML mapping files.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class XmlFileLoader extends FileLoader
-{
-    /**
-     * An array of {@class \SimpleXMLElement} instances.
-     *
-     * @var \SimpleXMLElement[]|null
-     */
-    private $classes;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadClassMetadata(ClassMetadataInterface $classMetadata)
-    {
-        if (null === $this->classes) {
-            $this->classes = array();
-            $xml = $this->parseFile($this->file);
-
-            foreach ($xml->class as $class) {
-                $this->classes[(string) $class['name']] = $class;
-            }
-        }
-
-        $attributesMetadata = $classMetadata->getAttributesMetadata();
-
-        if (isset($this->classes[$classMetadata->getName()])) {
-            $xml = $this->classes[$classMetadata->getName()];
-
-            foreach ($xml->attribute as $attribute) {
-                $attributeName = (string) $attribute['name'];
-
-                if (isset($attributesMetadata[$attributeName])) {
-                    $attributeMetadata = $attributesMetadata[$attributeName];
-                } else {
-                    $attributeMetadata = new AttributeMetadata($attributeName);
-                    $classMetadata->addAttributeMetadata($attributeMetadata);
-                }
-
-                foreach ($attribute->group as $group) {
-                    $attributeMetadata->addGroup((string) $group);
-                }
-            }
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Parses a XML File.
-     *
-     * @param string $file Path of file
-     *
-     * @return \SimpleXMLElement
-     *
-     * @throws MappingException
-     */
-    private function parseFile($file)
-    {
-        try {
-            $dom = XmlUtils::loadFile($file, __DIR__.'/schema/dic/serializer-mapping/serializer-mapping-1.0.xsd');
-        } catch (\Exception $e) {
-            throw new MappingException($e->getMessage(), $e->getCode(), $e);
-        }
-
-        return simplexml_import_dom($dom);
-    }
-}
diff --git a/vendor/symfony/serializer/Mapping/Loader/YamlFileLoader.php b/vendor/symfony/serializer/Mapping/Loader/YamlFileLoader.php
deleted file mode 100644
index 1c84698..0000000
--- a/vendor/symfony/serializer/Mapping/Loader/YamlFileLoader.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Serializer\Exception\MappingException;
-use Symfony\Component\Serializer\Mapping\AttributeMetadata;
-use Symfony\Component\Serializer\Mapping\ClassMetadataInterface;
-use Symfony\Component\Yaml\Parser;
-
-/**
- * YAML File Loader.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class YamlFileLoader extends FileLoader
-{
-    private $yamlParser;
-
-    /**
-     * An array of YAML class descriptions.
-     *
-     * @var array
-     */
-    private $classes = null;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadClassMetadata(ClassMetadataInterface $classMetadata)
-    {
-        if (null === $this->classes) {
-            if (!stream_is_local($this->file)) {
-                throw new MappingException(sprintf('This is not a local file "%s".', $this->file));
-            }
-
-            if (null === $this->yamlParser) {
-                $this->yamlParser = new Parser();
-            }
-
-            $classes = $this->yamlParser->parse(file_get_contents($this->file));
-
-            if (empty($classes)) {
-                return false;
-            }
-
-            // not an array
-            if (!is_array($classes)) {
-                throw new MappingException(sprintf('The file "%s" must contain a YAML array.', $this->file));
-            }
-
-            $this->classes = $classes;
-        }
-
-        if (isset($this->classes[$classMetadata->getName()])) {
-            $yaml = $this->classes[$classMetadata->getName()];
-
-            if (isset($yaml['attributes']) && is_array($yaml['attributes'])) {
-                $attributesMetadata = $classMetadata->getAttributesMetadata();
-                foreach ($yaml['attributes'] as $attribute => $data) {
-                    if (isset($attributesMetadata[$attribute])) {
-                        $attributeMetadata = $attributesMetadata[$attribute];
-                    } else {
-                        $attributeMetadata = new AttributeMetadata($attribute);
-                        $classMetadata->addAttributeMetadata($attributeMetadata);
-                    }
-
-                    if (isset($data['groups'])) {
-                        foreach ($data['groups'] as $group) {
-                            $attributeMetadata->addGroup($group);
-                        }
-                    }
-                }
-            }
-
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/serializer/Mapping/Loader/schema/dic/serializer-mapping/serializer-mapping-1.0.xsd b/vendor/symfony/serializer/Mapping/Loader/schema/dic/serializer-mapping/serializer-mapping-1.0.xsd
deleted file mode 100644
index cd5a9a9..0000000
--- a/vendor/symfony/serializer/Mapping/Loader/schema/dic/serializer-mapping/serializer-mapping-1.0.xsd
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" ?>
-
-<xsd:schema xmlns="http://symfony.com/schema/dic/serializer-mapping"
-            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-            targetNamespace="http://symfony.com/schema/dic/serializer-mapping"
-            elementFormDefault="qualified">
-
-    <xsd:annotation>
-        <xsd:documentation><![CDATA[
-      Symfony Serializer Mapping Schema, version 1.0
-      Authors: Kévin Dunglas
-
-      A serializer mapping connects attributes with serialization groups.
-    ]]></xsd:documentation>
-    </xsd:annotation>
-
-    <xsd:element name="serializer" type="serializer" />
-
-    <xsd:complexType name="serializer">
-        <xsd:annotation>
-            <xsd:documentation><![CDATA[
-        The root element of the serializer mapping definition.
-      ]]></xsd:documentation>
-        </xsd:annotation>
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-            <xsd:element name="class" type="class" />
-        </xsd:choice>
-    </xsd:complexType>
-
-    <xsd:complexType name="class">
-        <xsd:annotation>
-            <xsd:documentation><![CDATA[
-        Contains serialization groups for a single class.
-
-        Nested elements may be class property and/or getter definitions.
-      ]]></xsd:documentation>
-        </xsd:annotation>
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-            <xsd:element name="attribute" type="attribute" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:choice>
-        <xsd:attribute name="name" type="xsd:string" use="required" />
-    </xsd:complexType>
-
-    <xsd:complexType name="attribute">
-        <xsd:annotation>
-            <xsd:documentation><![CDATA[
-        Contains serialization groups for a attributes. The name of the attribute should be given in the "name" option.
-      ]]></xsd:documentation>
-        </xsd:annotation>
-        <xsd:sequence>
-            <xsd:element name="group" type="xsd:string" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="name" type="xsd:string" use="required" />
-    </xsd:complexType>
-
-</xsd:schema>
diff --git a/vendor/symfony/serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php b/vendor/symfony/serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php
deleted file mode 100644
index 8ef851c..0000000
--- a/vendor/symfony/serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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\NameConverter;
-
-/**
- * CamelCase to Underscore name converter.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class CamelCaseToSnakeCaseNameConverter implements NameConverterInterface
-{
-    /**
-     * @var array|null
-     */
-    private $attributes;
-    /**
-     * @var bool
-     */
-    private $lowerCamelCase;
-
-    /**
-     * @param null|array $attributes     The list of attributes to rename or null for all attributes.
-     * @param bool       $lowerCamelCase Use lowerCamelCase style.
-     */
-    public function __construct(array $attributes = null, $lowerCamelCase = true)
-    {
-        $this->attributes = $attributes;
-        $this->lowerCamelCase = $lowerCamelCase;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function normalize($propertyName)
-    {
-        if (null === $this->attributes || in_array($propertyName, $this->attributes)) {
-            $snakeCasedName = '';
-
-            $len = strlen($propertyName);
-            for ($i = 0; $i < $len; ++$i) {
-                if (ctype_upper($propertyName[$i])) {
-                    $snakeCasedName .= '_'.strtolower($propertyName[$i]);
-                } else {
-                    $snakeCasedName .= strtolower($propertyName[$i]);
-                }
-            }
-
-            return $snakeCasedName;
-        }
-
-        return $propertyName;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function denormalize($propertyName)
-    {
-        $camelCasedName = preg_replace_callback('/(^|_|\.)+(.)/', function ($match) {
-            return ('.' === $match[1] ? '_' : '').strtoupper($match[2]);
-        }, $propertyName);
-
-        if ($this->lowerCamelCase) {
-            $camelCasedName = lcfirst($camelCasedName);
-        }
-
-        if (null === $this->attributes || in_array($camelCasedName, $this->attributes)) {
-            return $this->lowerCamelCase ? lcfirst($camelCasedName) : $camelCasedName;
-        }
-
-        return $propertyName;
-    }
-}
diff --git a/vendor/symfony/serializer/NameConverter/NameConverterInterface.php b/vendor/symfony/serializer/NameConverter/NameConverterInterface.php
deleted file mode 100644
index c9f66b0..0000000
--- a/vendor/symfony/serializer/NameConverter/NameConverterInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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\NameConverter;
-
-/**
- * Defines the interface for property name converters.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-interface NameConverterInterface
-{
-    /**
-     * Converts a property name to its normalized value.
-     *
-     * @param string $propertyName
-     *
-     * @return string
-     */
-    public function normalize($propertyName);
-
-    /**
-     * Converts a property name to its denormalized value.
-     *
-     * @param string $propertyName
-     *
-     * @return string
-     */
-    public function denormalize($propertyName);
-}
diff --git a/vendor/symfony/serializer/Normalizer/AbstractNormalizer.php b/vendor/symfony/serializer/Normalizer/AbstractNormalizer.php
deleted file mode 100644
index 55c60c0..0000000
--- a/vendor/symfony/serializer/Normalizer/AbstractNormalizer.php
+++ /dev/null
@@ -1,345 +0,0 @@
-<?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\CircularReferenceException;
-use Symfony\Component\Serializer\Exception\InvalidArgumentException;
-use Symfony\Component\Serializer\Exception\LogicException;
-use Symfony\Component\Serializer\Exception\RuntimeException;
-use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface;
-use Symfony\Component\Serializer\Mapping\AttributeMetadataInterface;
-use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
-use Symfony\Component\Serializer\NameConverter\NameConverterInterface;
-
-/**
- * Normalizer implementation.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-abstract class AbstractNormalizer extends SerializerAwareNormalizer implements NormalizerInterface, DenormalizerInterface
-{
-    /**
-     * @var int
-     */
-    protected $circularReferenceLimit = 1;
-    /**
-     * @var callable
-     */
-    protected $circularReferenceHandler;
-    /**
-     * @var ClassMetadataFactoryInterface|null
-     */
-    protected $classMetadataFactory;
-    /**
-     * @var NameConverterInterface|null
-     */
-    protected $nameConverter;
-    /**
-     * @var array
-     */
-    protected $callbacks = array();
-    /**
-     * @var array
-     */
-    protected $ignoredAttributes = array();
-    /**
-     * @var array
-     */
-    protected $camelizedAttributes = array();
-
-    /**
-     * Sets the {@link ClassMetadataFactoryInterface} to use.
-     *
-     * @param ClassMetadataFactoryInterface|null $classMetadataFactory
-     * @param NameConverterInterface|null        $nameConverter
-     */
-    public function __construct(ClassMetadataFactoryInterface $classMetadataFactory = null, NameConverterInterface $nameConverter = null)
-    {
-        $this->classMetadataFactory = $classMetadataFactory;
-        $this->nameConverter = $nameConverter;
-    }
-
-    /**
-     * Set circular reference limit.
-     *
-     * @param int $circularReferenceLimit limit of iterations for the same object
-     *
-     * @return self
-     */
-    public function setCircularReferenceLimit($circularReferenceLimit)
-    {
-        $this->circularReferenceLimit = $circularReferenceLimit;
-
-        return $this;
-    }
-
-    /**
-     * Set circular reference handler.
-     *
-     * @param callable $circularReferenceHandler
-     *
-     * @return self
-     *
-     * @throws InvalidArgumentException
-     */
-    public function setCircularReferenceHandler($circularReferenceHandler)
-    {
-        if (!is_callable($circularReferenceHandler)) {
-            throw new InvalidArgumentException('The given circular reference handler is not callable.');
-        }
-
-        $this->circularReferenceHandler = $circularReferenceHandler;
-
-        return $this;
-    }
-
-    /**
-     * Set normalization callbacks.
-     *
-     * @param callable[] $callbacks help normalize the result
-     *
-     * @return self
-     *
-     * @throws InvalidArgumentException if a non-callable callback is set
-     */
-    public function setCallbacks(array $callbacks)
-    {
-        foreach ($callbacks as $attribute => $callback) {
-            if (!is_callable($callback)) {
-                throw new InvalidArgumentException(sprintf(
-                    'The given callback for attribute "%s" is not callable.',
-                    $attribute
-                ));
-            }
-        }
-        $this->callbacks = $callbacks;
-
-        return $this;
-    }
-
-    /**
-     * Set ignored attributes for normalization and denormalization.
-     *
-     * @param array $ignoredAttributes
-     *
-     * @return self
-     */
-    public function setIgnoredAttributes(array $ignoredAttributes)
-    {
-        $this->ignoredAttributes = $ignoredAttributes;
-
-        return $this;
-    }
-
-    /**
-     * Set attributes to be camelized on denormalize.
-     *
-     * @deprecated Deprecated since version 2.7, to be removed in 3.0. Use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter instead.
-     *
-     * @param array $camelizedAttributes
-     *
-     * @return self
-     *
-     * @throws LogicException
-     */
-    public function setCamelizedAttributes(array $camelizedAttributes)
-    {
-        @trigger_error(sprintf('%s is deprecated since version 2.7 and will be removed in 3.0. Use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter instead.', __METHOD__), E_USER_DEPRECATED);
-
-        if ($this->nameConverter && !$this->nameConverter instanceof CamelCaseToSnakeCaseNameConverter) {
-            throw new LogicException(sprintf('%s cannot be called if a custom Name Converter is defined.', __METHOD__));
-        }
-
-        $attributes = array();
-        foreach ($camelizedAttributes as $camelizedAttribute) {
-            $attributes[] = lcfirst(preg_replace_callback('/(^|_|\.)+(.)/', function ($match) {
-                return ('.' === $match[1] ? '_' : '').strtoupper($match[2]);
-            }, $camelizedAttribute));
-        }
-
-        $this->nameConverter = new CamelCaseToSnakeCaseNameConverter($attributes);
-
-        return $this;
-    }
-
-    /**
-     * Detects if the configured circular reference limit is reached.
-     *
-     * @param object $object
-     * @param array  $context
-     *
-     * @return bool
-     *
-     * @throws CircularReferenceException
-     */
-    protected function isCircularReference($object, &$context)
-    {
-        $objectHash = spl_object_hash($object);
-
-        if (isset($context['circular_reference_limit'][$objectHash])) {
-            if ($context['circular_reference_limit'][$objectHash] >= $this->circularReferenceLimit) {
-                unset($context['circular_reference_limit'][$objectHash]);
-
-                return true;
-            }
-
-            ++$context['circular_reference_limit'][$objectHash];
-        } else {
-            $context['circular_reference_limit'][$objectHash] = 1;
-        }
-
-        return false;
-    }
-
-    /**
-     * Handles a circular reference.
-     *
-     * If a circular reference handler is set, it will be called. Otherwise, a
-     * {@class CircularReferenceException} will be thrown.
-     *
-     * @param object $object
-     *
-     * @return mixed
-     *
-     * @throws CircularReferenceException
-     */
-    protected function handleCircularReference($object)
-    {
-        if ($this->circularReferenceHandler) {
-            return call_user_func($this->circularReferenceHandler, $object);
-        }
-
-        throw new CircularReferenceException(sprintf('A circular reference has been detected (configured limit: %d).', $this->circularReferenceLimit));
-    }
-
-    /**
-     * Format an attribute name, for example to convert a snake_case name to camelCase.
-     *
-     * @deprecated Deprecated since version 2.7, to be removed in 3.0. Use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter instead.
-     *
-     * @param string $attributeName
-     *
-     * @return string
-     */
-    protected function formatAttribute($attributeName)
-    {
-        @trigger_error(sprintf('%s is deprecated since version 2.7 and will be removed in 3.0. Use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter instead.', __METHOD__), E_USER_DEPRECATED);
-
-        return $this->nameConverter ? $this->nameConverter->normalize($attributeName) : $attributeName;
-    }
-
-    /**
-     * Gets attributes to normalize using groups.
-     *
-     * @param string|object $classOrObject
-     * @param array         $context
-     * @param bool          $attributesAsString If false, return an array of {@link AttributeMetadataInterface}
-     *
-     * @return string[]|AttributeMetadataInterface[]|bool
-     */
-    protected function getAllowedAttributes($classOrObject, array $context, $attributesAsString = false)
-    {
-        if (!$this->classMetadataFactory || !isset($context['groups']) || !is_array($context['groups'])) {
-            return false;
-        }
-
-        $allowedAttributes = array();
-        foreach ($this->classMetadataFactory->getMetadataFor($classOrObject)->getAttributesMetadata() as $attributeMetadata) {
-            if (count(array_intersect($attributeMetadata->getGroups(), $context['groups']))) {
-                $allowedAttributes[] = $attributesAsString ? $attributeMetadata->getName() : $attributeMetadata;
-            }
-        }
-
-        return array_unique($allowedAttributes);
-    }
-
-    /**
-     * Normalizes the given data to an array. It's particularly useful during
-     * the denormalization process.
-     *
-     * @param object|array $data
-     *
-     * @return array
-     */
-    protected function prepareForDenormalization($data)
-    {
-        return (array) $data;
-    }
-
-    /**
-     * Instantiates an object using constructor parameters when needed.
-     *
-     * This method also allows to denormalize data into an existing object if
-     * it is present in the context with the object_to_populate key.
-     *
-     * @param array            $data
-     * @param string           $class
-     * @param array            $context
-     * @param \ReflectionClass $reflectionClass
-     * @param array|bool       $allowedAttributes
-     *
-     * @return object
-     *
-     * @throws RuntimeException
-     */
-    protected function instantiateObject(array &$data, $class, array &$context, \ReflectionClass $reflectionClass, $allowedAttributes)
-    {
-        if (
-            isset($context['object_to_populate']) &&
-            is_object($context['object_to_populate']) &&
-            $class === get_class($context['object_to_populate'])
-        ) {
-            return $context['object_to_populate'];
-        }
-
-        $constructor = $reflectionClass->getConstructor();
-        if ($constructor) {
-            $constructorParameters = $constructor->getParameters();
-
-            $params = array();
-            foreach ($constructorParameters as $constructorParameter) {
-                $paramName = $constructorParameter->name;
-                $key = $this->nameConverter ? $this->nameConverter->normalize($paramName) : $paramName;
-
-                $allowed = $allowedAttributes === false || in_array($paramName, $allowedAttributes);
-                $ignored = in_array($paramName, $this->ignoredAttributes);
-                if (method_exists($constructorParameter, 'isVariadic') && $constructorParameter->isVariadic()) {
-                    if ($allowed && !$ignored && (isset($data[$key]) || array_key_exists($key, $data))) {
-                        if (!is_array($data[$paramName])) {
-                            throw new RuntimeException(sprintf('Cannot create an instance of %s from serialized data because the variadic parameter %s can only accept an array.', $class, $constructorParameter->name));
-                        }
-
-                        $params = array_merge($params, $data[$paramName]);
-                    }
-                } elseif ($allowed && !$ignored && (isset($data[$key]) || array_key_exists($key, $data))) {
-                    $params[] = $data[$key];
-                    // don't run set for a parameter passed to the constructor
-                    unset($data[$key]);
-                } elseif ($constructorParameter->isDefaultValueAvailable()) {
-                    $params[] = $constructorParameter->getDefaultValue();
-                } else {
-                    throw new RuntimeException(
-                        sprintf(
-                            'Cannot create an instance of %s from serialized data because its constructor requires parameter "%s" to be present.',
-                            $class,
-                            $constructorParameter->name
-                        )
-                    );
-                }
-            }
-
-            return $reflectionClass->newInstanceArgs($params);
-        }
-
-        return new $class();
-    }
-}
diff --git a/vendor/symfony/serializer/Normalizer/CustomNormalizer.php b/vendor/symfony/serializer/Normalizer/CustomNormalizer.php
deleted file mode 100644
index 83c3c14..0000000
--- a/vendor/symfony/serializer/Normalizer/CustomNormalizer.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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;
-
-/**
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class CustomNormalizer extends SerializerAwareNormalizer implements NormalizerInterface, DenormalizerInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function normalize($object, $format = null, array $context = array())
-    {
-        return $object->normalize($this->serializer, $format, $context);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function denormalize($data, $class, $format = null, array $context = array())
-    {
-        $object = new $class();
-        $object->denormalize($this->serializer, $data, $format, $context);
-
-        return $object;
-    }
-
-    /**
-     * Checks if the given class implements the NormalizableInterface.
-     *
-     * @param mixed  $data   Data to normalize.
-     * @param string $format The format being (de-)serialized from or into.
-     *
-     * @return bool
-     */
-    public function supportsNormalization($data, $format = null)
-    {
-        return $data instanceof NormalizableInterface;
-    }
-
-    /**
-     * Checks if the given class implements the NormalizableInterface.
-     *
-     * @param mixed  $data   Data to denormalize from.
-     * @param string $type   The class to which the data should be denormalized.
-     * @param string $format The format being deserialized from.
-     *
-     * @return bool
-     */
-    public function supportsDenormalization($data, $type, $format = null)
-    {
-        $class = new \ReflectionClass($type);
-
-        return $class->isSubclassOf('Symfony\Component\Serializer\Normalizer\DenormalizableInterface');
-    }
-}
diff --git a/vendor/symfony/serializer/Normalizer/DenormalizableInterface.php b/vendor/symfony/serializer/Normalizer/DenormalizableInterface.php
deleted file mode 100644
index 86c2702..0000000
--- a/vendor/symfony/serializer/Normalizer/DenormalizableInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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;
-
-/**
- * Defines the most basic interface a class must implement to be denormalizable.
- *
- * If a denormalizer is registered for the class and it doesn't implement
- * the Denormalizable interfaces, the normalizer will be used instead
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface DenormalizableInterface
-{
-    /**
-     * Denormalizes the object back from an array of scalars|arrays.
-     *
-     * It is important to understand that the denormalize() call should denormalize
-     * recursively all child objects of the implementor.
-     *
-     * @param DenormalizerInterface $denormalizer The denormalizer is given so that you
-     *                                            can use it to denormalize objects contained within this object
-     * @param array|scalar          $data         The data from which to re-create the object.
-     * @param string|null           $format       The format is optionally given to be able to denormalize differently
-     *                                            based on different input formats
-     * @param array                 $context      options for denormalizing
-     */
-    public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null, array $context = array());
-}
diff --git a/vendor/symfony/serializer/Normalizer/DenormalizerInterface.php b/vendor/symfony/serializer/Normalizer/DenormalizerInterface.php
deleted file mode 100644
index 8b6c233..0000000
--- a/vendor/symfony/serializer/Normalizer/DenormalizerInterface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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;
-
-/**
- * Defines the interface of denormalizers.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface DenormalizerInterface
-{
-    /**
-     * Denormalizes data back into an object of the given class.
-     *
-     * @param mixed  $data    data to restore
-     * @param string $class   the expected class to instantiate
-     * @param string $format  format the given data was extracted from
-     * @param array  $context options available to the denormalizer
-     *
-     * @return object
-     */
-    public function denormalize($data, $class, $format = null, array $context = array());
-
-    /**
-     * Checks whether the given class is supported for denormalization by this normalizer.
-     *
-     * @param mixed  $data   Data to denormalize from.
-     * @param string $type   The class to which the data should be denormalized.
-     * @param string $format The format being deserialized from.
-     *
-     * @return bool
-     */
-    public function supportsDenormalization($data, $type, $format = null);
-}
diff --git a/vendor/symfony/serializer/Normalizer/GetSetMethodNormalizer.php b/vendor/symfony/serializer/Normalizer/GetSetMethodNormalizer.php
deleted file mode 100644
index 44a71cf..0000000
--- a/vendor/symfony/serializer/Normalizer/GetSetMethodNormalizer.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?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\CircularReferenceException;
-use Symfony\Component\Serializer\Exception\LogicException;
-use Symfony\Component\Serializer\Exception\RuntimeException;
-
-/**
- * Converts between objects with getter and setter methods and arrays.
- *
- * The normalization process looks at all public methods and calls the ones
- * which have a name starting with get and take no parameters. The result is a
- * map from property names (method name stripped of the get prefix and converted
- * to lower case) to property values. Property values are normalized through the
- * serializer.
- *
- * The denormalization first looks at the constructor of the given class to see
- * if any of the parameters have the same name as one of the properties. The
- * constructor is then called with all parameters or an exception is thrown if
- * any required parameters were not present as properties. Then the denormalizer
- * walks through the given map of property names to property values to see if a
- * setter method exists for any of the properties. If a setter exists it is
- * called with the property value. No automatic denormalization of the value
- * takes place.
- *
- * @author Nils Adermann <naderman@naderman.de>
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class GetSetMethodNormalizer extends AbstractNormalizer
-{
-    /**
-     * {@inheritdoc}
-     *
-     * @throws LogicException
-     * @throws CircularReferenceException
-     */
-    public function normalize($object, $format = null, array $context = array())
-    {
-        if ($this->isCircularReference($object, $context)) {
-            return $this->handleCircularReference($object);
-        }
-
-        $reflectionObject = new \ReflectionObject($object);
-        $reflectionMethods = $reflectionObject->getMethods(\ReflectionMethod::IS_PUBLIC);
-        $allowedAttributes = $this->getAllowedAttributes($object, $context, true);
-
-        $attributes = array();
-        foreach ($reflectionMethods as $method) {
-            if ($this->isGetMethod($method)) {
-                $attributeName = lcfirst(substr($method->name, 0 === strpos($method->name, 'is') ? 2 : 3));
-                if (in_array($attributeName, $this->ignoredAttributes)) {
-                    continue;
-                }
-
-                if (false !== $allowedAttributes && !in_array($attributeName, $allowedAttributes)) {
-                    continue;
-                }
-
-                $attributeValue = $method->invoke($object);
-                if (isset($this->callbacks[$attributeName])) {
-                    $attributeValue = call_user_func($this->callbacks[$attributeName], $attributeValue);
-                }
-                if (null !== $attributeValue && !is_scalar($attributeValue)) {
-                    if (!$this->serializer instanceof NormalizerInterface) {
-                        throw new LogicException(sprintf('Cannot normalize attribute "%s" because injected serializer is not a normalizer', $attributeName));
-                    }
-
-                    $attributeValue = $this->serializer->normalize($attributeValue, $format, $context);
-                }
-
-                if ($this->nameConverter) {
-                    $attributeName = $this->nameConverter->normalize($attributeName);
-                }
-
-                $attributes[$attributeName] = $attributeValue;
-            }
-        }
-
-        return $attributes;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws RuntimeException
-     */
-    public function denormalize($data, $class, $format = null, array $context = array())
-    {
-        $allowedAttributes = $this->getAllowedAttributes($class, $context, true);
-        $normalizedData = $this->prepareForDenormalization($data);
-
-        $reflectionClass = new \ReflectionClass($class);
-        $object = $this->instantiateObject($normalizedData, $class, $context, $reflectionClass, $allowedAttributes);
-
-        $classMethods = get_class_methods($object);
-        foreach ($normalizedData as $attribute => $value) {
-            if ($this->nameConverter) {
-                $attribute = $this->nameConverter->denormalize($attribute);
-            }
-
-            $allowed = $allowedAttributes === false || in_array($attribute, $allowedAttributes);
-            $ignored = in_array($attribute, $this->ignoredAttributes);
-
-            if ($allowed && !$ignored) {
-                $setter = 'set'.ucfirst($attribute);
-
-                if (in_array($setter, $classMethods)) {
-                    $object->$setter($value);
-                }
-            }
-        }
-
-        return $object;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsNormalization($data, $format = null)
-    {
-        return is_object($data) && !$data instanceof \Traversable && $this->supports(get_class($data));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsDenormalization($data, $type, $format = null)
-    {
-        return $this->supports($type);
-    }
-
-    /**
-     * Checks if the given class has any get{Property} method.
-     *
-     * @param string $class
-     *
-     * @return bool
-     */
-    private function supports($class)
-    {
-        $class = new \ReflectionClass($class);
-        $methods = $class->getMethods(\ReflectionMethod::IS_PUBLIC);
-        foreach ($methods as $method) {
-            if ($this->isGetMethod($method)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Checks if a method's name is get.* or is.*, and can be called without parameters.
-     *
-     * @param \ReflectionMethod $method the method to check
-     *
-     * @return bool whether the method is a getter or boolean getter.
-     */
-    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()
-        );
-    }
-}
diff --git a/vendor/symfony/serializer/Normalizer/NormalizableInterface.php b/vendor/symfony/serializer/Normalizer/NormalizableInterface.php
deleted file mode 100644
index b9fefe8..0000000
--- a/vendor/symfony/serializer/Normalizer/NormalizableInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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;
-
-/**
- * Defines the most basic interface a class must implement to be normalizable.
- *
- * If a normalizer is registered for the class and it doesn't implement
- * the Normalizable interfaces, the normalizer will be used instead.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface NormalizableInterface
-{
-    /**
-     * Normalizes the object into an array of scalars|arrays.
-     *
-     * It is important to understand that the normalize() call should normalize
-     * recursively all child objects of the implementor.
-     *
-     * @param NormalizerInterface $normalizer The normalizer is given so that you
-     *                                        can use it to normalize objects contained within this object.
-     * @param string|null         $format     The format is optionally given to be able to normalize differently
-     *                                        based on different output formats.
-     * @param array               $context    Options for normalizing this object
-     *
-     * @return array|string|bool|int|float|null
-     */
-    public function normalize(NormalizerInterface $normalizer, $format = null, array $context = array());
-}
diff --git a/vendor/symfony/serializer/Normalizer/NormalizerInterface.php b/vendor/symfony/serializer/Normalizer/NormalizerInterface.php
deleted file mode 100644
index 2a51d63..0000000
--- a/vendor/symfony/serializer/Normalizer/NormalizerInterface.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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;
-
-/**
- * Defines the interface of normalizers.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface NormalizerInterface
-{
-    /**
-     * Normalizes an object into a set of arrays/scalars.
-     *
-     * @param object $object  object to normalize
-     * @param string $format  format the normalization result will be encoded as
-     * @param array  $context Context options for the normalizer
-     *
-     * @return array|string|bool|int|float|null
-     */
-    public function normalize($object, $format = null, array $context = array());
-
-    /**
-     * Checks whether the given class is supported for normalization by this normalizer.
-     *
-     * @param mixed  $data   Data to normalize.
-     * @param string $format The format being (de-)serialized from or into.
-     *
-     * @return bool
-     */
-    public function supportsNormalization($data, $format = null);
-}
diff --git a/vendor/symfony/serializer/Normalizer/ObjectNormalizer.php b/vendor/symfony/serializer/Normalizer/ObjectNormalizer.php
deleted file mode 100644
index ba84ac7..0000000
--- a/vendor/symfony/serializer/Normalizer/ObjectNormalizer.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?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\PropertyAccess\Exception\NoSuchPropertyException;
-use Symfony\Component\PropertyAccess\PropertyAccess;
-use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
-use Symfony\Component\Serializer\Exception\CircularReferenceException;
-use Symfony\Component\Serializer\Exception\LogicException;
-use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface;
-use Symfony\Component\Serializer\NameConverter\NameConverterInterface;
-
-/**
- * Converts between objects and arrays using the PropertyAccess component.
- *
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class ObjectNormalizer extends AbstractNormalizer
-{
-    /**
-     * @var PropertyAccessorInterface
-     */
-    protected $propertyAccessor;
-
-    public function __construct(ClassMetadataFactoryInterface $classMetadataFactory = null, NameConverterInterface $nameConverter = null, PropertyAccessorInterface $propertyAccessor = null)
-    {
-        parent::__construct($classMetadataFactory, $nameConverter);
-
-        $this->propertyAccessor = $propertyAccessor ?: PropertyAccess::createPropertyAccessor();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsNormalization($data, $format = null)
-    {
-        return is_object($data) && !$data instanceof \Traversable;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws CircularReferenceException
-     */
-    public function normalize($object, $format = null, array $context = array())
-    {
-        if ($this->isCircularReference($object, $context)) {
-            return $this->handleCircularReference($object);
-        }
-
-        $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);
-        }
-
-        foreach ($attributes as $attribute) {
-            if (in_array($attribute, $this->ignoredAttributes)) {
-                continue;
-            }
-
-            $attributeValue = $this->propertyAccessor->getValue($object, $attribute);
-
-            if (isset($this->callbacks[$attribute])) {
-                $attributeValue = call_user_func($this->callbacks[$attribute], $attributeValue);
-            }
-
-            if (null !== $attributeValue && !is_scalar($attributeValue)) {
-                if (!$this->serializer instanceof NormalizerInterface) {
-                    throw new LogicException(sprintf('Cannot normalize attribute "%s" because injected serializer is not a normalizer', $attribute));
-                }
-
-                $attributeValue = $this->serializer->normalize($attributeValue, $format, $context);
-            }
-
-            if ($this->nameConverter) {
-                $attribute = $this->nameConverter->normalize($attribute);
-            }
-
-            $data[$attribute] = $attributeValue;
-        }
-
-        return $data;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsDenormalization($data, $type, $format = null)
-    {
-        return class_exists($type);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function denormalize($data, $class, $format = null, array $context = array())
-    {
-        $allowedAttributes = $this->getAllowedAttributes($class, $context, true);
-        $normalizedData = $this->prepareForDenormalization($data);
-
-        $reflectionClass = new \ReflectionClass($class);
-        $object = $this->instantiateObject($normalizedData, $class, $context, $reflectionClass, $allowedAttributes);
-
-        foreach ($normalizedData as $attribute => $value) {
-            if ($this->nameConverter) {
-                $attribute = $this->nameConverter->denormalize($attribute);
-            }
-
-            $allowed = $allowedAttributes === false || in_array($attribute, $allowedAttributes);
-            $ignored = in_array($attribute, $this->ignoredAttributes);
-
-            if ($allowed && !$ignored) {
-                try {
-                    $this->propertyAccessor->setValue($object, $attribute, $value);
-                } catch (NoSuchPropertyException $exception) {
-                    // Properties not found are ignored
-                }
-            }
-        }
-
-        return $object;
-    }
-}
diff --git a/vendor/symfony/serializer/Normalizer/PropertyNormalizer.php b/vendor/symfony/serializer/Normalizer/PropertyNormalizer.php
deleted file mode 100644
index c8e83d1..0000000
--- a/vendor/symfony/serializer/Normalizer/PropertyNormalizer.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?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\CircularReferenceException;
-use Symfony\Component\Serializer\Exception\LogicException;
-use Symfony\Component\Serializer\Exception\RuntimeException;
-
-/**
- * Converts between objects and arrays by mapping properties.
- *
- * The normalization process looks for all the object's properties (public and private).
- * The result is a map from property names to property values. Property values
- * are normalized through the serializer.
- *
- * The denormalization first looks at the constructor of the given class to see
- * if any of the parameters have the same name as one of the properties. The
- * constructor is then called with all parameters or an exception is thrown if
- * any required parameters were not present as properties. Then the denormalizer
- * walks through the given map of property names to property values to see if a
- * property with the corresponding name exists. If found, the property gets the value.
- *
- * @author Matthieu Napoli <matthieu@mnapoli.fr>
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class PropertyNormalizer extends AbstractNormalizer
-{
-    /**
-     * {@inheritdoc}
-     *
-     * @throws CircularReferenceException
-     */
-    public function normalize($object, $format = null, array $context = array())
-    {
-        if ($this->isCircularReference($object, $context)) {
-            return $this->handleCircularReference($object);
-        }
-
-        $reflectionObject = new \ReflectionObject($object);
-        $attributes = array();
-        $allowedAttributes = $this->getAllowedAttributes($object, $context, true);
-
-        foreach ($reflectionObject->getProperties() as $property) {
-            if (in_array($property->name, $this->ignoredAttributes)) {
-                continue;
-            }
-
-            if (false !== $allowedAttributes && !in_array($property->name, $allowedAttributes)) {
-                continue;
-            }
-
-            // Override visibility
-            if (!$property->isPublic()) {
-                $property->setAccessible(true);
-            }
-
-            $attributeValue = $property->getValue($object);
-
-            if (isset($this->callbacks[$property->name])) {
-                $attributeValue = call_user_func($this->callbacks[$property->name], $attributeValue);
-            }
-            if (null !== $attributeValue && !is_scalar($attributeValue)) {
-                if (!$this->serializer instanceof NormalizerInterface) {
-                    throw new LogicException(sprintf('Cannot normalize attribute "%s" because injected serializer is not a normalizer', $property->name));
-                }
-
-                $attributeValue = $this->serializer->normalize($attributeValue, $format, $context);
-            }
-
-            $propertyName = $property->name;
-            if ($this->nameConverter) {
-                $propertyName = $this->nameConverter->normalize($propertyName);
-            }
-
-            $attributes[$propertyName] = $attributeValue;
-        }
-
-        return $attributes;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws RuntimeException
-     */
-    public function denormalize($data, $class, $format = null, array $context = array())
-    {
-        $allowedAttributes = $this->getAllowedAttributes($class, $context, true);
-        $data = $this->prepareForDenormalization($data);
-
-        $reflectionClass = new \ReflectionClass($class);
-        $object = $this->instantiateObject($data, $class, $context, $reflectionClass, $allowedAttributes);
-
-        foreach ($data as $propertyName => $value) {
-            if ($this->nameConverter) {
-                $propertyName = $this->nameConverter->denormalize($propertyName);
-            }
-
-            $allowed = $allowedAttributes === false || in_array($propertyName, $allowedAttributes);
-            $ignored = in_array($propertyName, $this->ignoredAttributes);
-            if ($allowed && !$ignored && $reflectionClass->hasProperty($propertyName)) {
-                $property = $reflectionClass->getProperty($propertyName);
-
-                // Override visibility
-                if (!$property->isPublic()) {
-                    $property->setAccessible(true);
-                }
-
-                $property->setValue($object, $value);
-            }
-        }
-
-        return $object;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsNormalization($data, $format = null)
-    {
-        return is_object($data) && !$data instanceof \Traversable && $this->supports(get_class($data));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsDenormalization($data, $type, $format = null)
-    {
-        return $this->supports($type);
-    }
-
-    /**
-     * Checks if the given class has any non-static property.
-     *
-     * @param string $class
-     *
-     * @return bool
-     */
-    private function supports($class)
-    {
-        $class = new \ReflectionClass($class);
-
-        // We look for at least one non-static property
-        foreach ($class->getProperties() as $property) {
-            if (!$property->isStatic()) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/serializer/Normalizer/SerializerAwareNormalizer.php b/vendor/symfony/serializer/Normalizer/SerializerAwareNormalizer.php
deleted file mode 100644
index 3956857..0000000
--- a/vendor/symfony/serializer/Normalizer/SerializerAwareNormalizer.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?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\SerializerInterface;
-use Symfony\Component\Serializer\SerializerAwareInterface;
-
-/**
- * SerializerAware Normalizer implementation.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-abstract class SerializerAwareNormalizer implements SerializerAwareInterface
-{
-    /**
-     * @var SerializerInterface
-     */
-    protected $serializer;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setSerializer(SerializerInterface $serializer)
-    {
-        $this->serializer = $serializer;
-    }
-}
diff --git a/vendor/symfony/serializer/README.md b/vendor/symfony/serializer/README.md
deleted file mode 100644
index 156a288..0000000
--- a/vendor/symfony/serializer/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Serializer Component
-====================
-
-With the Serializer component it's possible to handle serializing data structures,
-including object graphs, into array structures or other formats like XML and JSON.
-It can also handle deserializing XML and JSON back to object graphs.
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/Serializer/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/serializer/Serializer.php b/vendor/symfony/serializer/Serializer.php
deleted file mode 100644
index 4aeddab..0000000
--- a/vendor/symfony/serializer/Serializer.php
+++ /dev/null
@@ -1,310 +0,0 @@
-<?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;
-
-use Symfony\Component\Serializer\Encoder\ChainDecoder;
-use Symfony\Component\Serializer\Encoder\ChainEncoder;
-use Symfony\Component\Serializer\Encoder\EncoderInterface;
-use Symfony\Component\Serializer\Encoder\DecoderInterface;
-use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
-use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
-use Symfony\Component\Serializer\Exception\LogicException;
-use Symfony\Component\Serializer\Exception\UnexpectedValueException;
-
-/**
- * Serializer serializes and deserializes data.
- *
- * objects are turned into arrays by normalizers.
- * arrays are turned into various output formats by encoders.
- *
- * $serializer->serialize($obj, 'xml')
- * $serializer->decode($data, 'xml')
- * $serializer->denormalize($data, 'Class', 'xml')
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- * @author Lukas Kahwe Smith <smith@pooteeweet.org>
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class Serializer implements SerializerInterface, NormalizerInterface, DenormalizerInterface, EncoderInterface, DecoderInterface
-{
-    /**
-     * @var Encoder\ChainEncoder
-     */
-    protected $encoder;
-    /**
-     * @var Encoder\ChainDecoder
-     */
-    protected $decoder;
-    /**
-     * @var array
-     */
-    protected $normalizers = array();
-    /**
-     * @var array
-     */
-    protected $normalizerCache = array();
-    /**
-     * @var array
-     */
-    protected $denormalizerCache = array();
-
-    public function __construct(array $normalizers = array(), array $encoders = array())
-    {
-        foreach ($normalizers as $normalizer) {
-            if ($normalizer instanceof SerializerAwareInterface) {
-                $normalizer->setSerializer($this);
-            }
-        }
-        $this->normalizers = $normalizers;
-
-        $decoders = array();
-        $realEncoders = array();
-        foreach ($encoders as $encoder) {
-            if ($encoder instanceof SerializerAwareInterface) {
-                $encoder->setSerializer($this);
-            }
-            if ($encoder instanceof DecoderInterface) {
-                $decoders[] = $encoder;
-            }
-            if ($encoder instanceof EncoderInterface) {
-                $realEncoders[] = $encoder;
-            }
-        }
-        $this->encoder = new ChainEncoder($realEncoders);
-        $this->decoder = new ChainDecoder($decoders);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    final public function serialize($data, $format, array $context = array())
-    {
-        if (!$this->supportsEncoding($format)) {
-            throw new UnexpectedValueException(sprintf('Serialization for the format %s is not supported', $format));
-        }
-
-        if ($this->encoder->needsNormalization($format)) {
-            $data = $this->normalize($data, $format, $context);
-        }
-
-        return $this->encode($data, $format, $context);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    final public function deserialize($data, $type, $format, array $context = array())
-    {
-        if (!$this->supportsDecoding($format)) {
-            throw new UnexpectedValueException(sprintf('Deserialization for the format %s is not supported', $format));
-        }
-
-        $data = $this->decode($data, $format, $context);
-
-        return $this->denormalize($data, $type, $format, $context);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function normalize($data, $format = null, array $context = array())
-    {
-        // If a normalizer supports the given data, use it
-        if ($normalizer = $this->getNormalizer($data, $format)) {
-            return $normalizer->normalize($data, $format, $context);
-        }
-
-        if (null === $data || is_scalar($data)) {
-            return $data;
-        }
-        if (is_object($data) && $this->supportsNormalization($data, $format)) {
-            return $this->normalizeObject($data, $format, $context);
-        }
-        if ($data instanceof \Traversable) {
-            $normalized = array();
-            foreach ($data as $key => $val) {
-                $normalized[$key] = $this->normalize($val, $format, $context);
-            }
-
-            return $normalized;
-        }
-        if (is_object($data)) {
-            return $this->normalizeObject($data, $format, $context);
-        }
-        if (is_array($data)) {
-            foreach ($data as $key => $val) {
-                $data[$key] = $this->normalize($val, $format, $context);
-            }
-
-            return $data;
-        }
-        throw new UnexpectedValueException(sprintf('An unexpected value could not be normalized: %s', var_export($data, true)));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function denormalize($data, $type, $format = null, array $context = array())
-    {
-        return $this->denormalizeObject($data, $type, $format, $context);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsNormalization($data, $format = null)
-    {
-        return null !== $this->getNormalizer($data, $format);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsDenormalization($data, $type, $format = null)
-    {
-        return null !== $this->getDenormalizer($data, $type, $format);
-    }
-
-    /**
-     * Returns a matching normalizer.
-     *
-     * @param mixed  $data   Data to get the serializer for
-     * @param string $format format name, present to give the option to normalizers to act differently based on formats
-     *
-     * @return NormalizerInterface|null
-     */
-    private function getNormalizer($data, $format)
-    {
-        if ($isObject = is_object($data)) {
-            $class = get_class($data);
-            if (isset($this->normalizerCache[$class][$format])) {
-                return $this->normalizerCache[$class][$format];
-            }
-        }
-
-        foreach ($this->normalizers as $normalizer) {
-            if ($normalizer instanceof NormalizerInterface && $normalizer->supportsNormalization($data, $format)) {
-                if ($isObject) {
-                    $this->normalizerCache[$class][$format] = $normalizer;
-                }
-
-                return $normalizer;
-            }
-        }
-    }
-
-    /**
-     * Returns a matching denormalizer.
-     *
-     * @param mixed  $data   data to restore
-     * @param string $class  the expected class to instantiate
-     * @param string $format format name, present to give the option to normalizers to act differently based on formats
-     *
-     * @return DenormalizerInterface|null
-     */
-    private function getDenormalizer($data, $class, $format)
-    {
-        if (isset($this->denormalizerCache[$class][$format])) {
-            return $this->denormalizerCache[$class][$format];
-        }
-
-        foreach ($this->normalizers as $normalizer) {
-            if ($normalizer instanceof DenormalizerInterface && $normalizer->supportsDenormalization($data, $class, $format)) {
-                $this->denormalizerCache[$class][$format] = $normalizer;
-
-                return $normalizer;
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    final public function encode($data, $format, array $context = array())
-    {
-        return $this->encoder->encode($data, $format, $context);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    final public function decode($data, $format, array $context = array())
-    {
-        return $this->decoder->decode($data, $format, $context);
-    }
-
-    /**
-     * Normalizes an object into a set of arrays/scalars.
-     *
-     * @param object $object  object to normalize
-     * @param string $format  format name, present to give the option to normalizers to act differently based on formats
-     * @param array  $context The context data for this particular normalization
-     *
-     * @return array|string|bool|int|float|null
-     *
-     * @throws LogicException
-     * @throws UnexpectedValueException
-     */
-    private function normalizeObject($object, $format, array $context = array())
-    {
-        if (!$this->normalizers) {
-            throw new LogicException('You must register at least one normalizer to be able to normalize objects.');
-        }
-
-        if ($normalizer = $this->getNormalizer($object, $format)) {
-            return $normalizer->normalize($object, $format, $context);
-        }
-        throw new UnexpectedValueException(sprintf('Could not normalize object of type %s, no supporting normalizer found.', get_class($object)));
-    }
-
-    /**
-     * Denormalizes data back into an object of the given class.
-     *
-     * @param mixed  $data    data to restore
-     * @param string $class   the expected class to instantiate
-     * @param string $format  format name, present to give the option to normalizers to act differently based on formats
-     * @param array  $context The context data for this particular denormalization
-     *
-     * @return object
-     *
-     * @throws LogicException
-     * @throws UnexpectedValueException
-     */
-    private function denormalizeObject($data, $class, $format, array $context = array())
-    {
-        if (!$this->normalizers) {
-            throw new LogicException('You must register at least one normalizer to be able to denormalize objects.');
-        }
-
-        if ($normalizer = $this->getDenormalizer($data, $class, $format)) {
-            return $normalizer->denormalize($data, $class, $format, $context);
-        }
-        throw new UnexpectedValueException(sprintf('Could not denormalize object of type %s, no supporting normalizer found.', $class));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsEncoding($format)
-    {
-        return $this->encoder->supportsEncoding($format);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function supportsDecoding($format)
-    {
-        return $this->decoder->supportsDecoding($format);
-    }
-}
diff --git a/vendor/symfony/serializer/SerializerAwareInterface.php b/vendor/symfony/serializer/SerializerAwareInterface.php
deleted file mode 100644
index dd0a62e..0000000
--- a/vendor/symfony/serializer/SerializerAwareInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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;
-
-/**
- * Defines the interface of encoders.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface SerializerAwareInterface
-{
-    /**
-     * Sets the owning Serializer object.
-     *
-     * @param SerializerInterface $serializer
-     */
-    public function setSerializer(SerializerInterface $serializer);
-}
diff --git a/vendor/symfony/serializer/SerializerInterface.php b/vendor/symfony/serializer/SerializerInterface.php
deleted file mode 100644
index c79db91..0000000
--- a/vendor/symfony/serializer/SerializerInterface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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;
-
-/**
- * Defines the interface of the Serializer.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-interface SerializerInterface
-{
-    /**
-     * Serializes data in the appropriate format.
-     *
-     * @param mixed  $data    any data
-     * @param string $format  format name
-     * @param array  $context options normalizers/encoders have access to
-     *
-     * @return string
-     */
-    public function serialize($data, $format, array $context = array());
-
-    /**
-     * Deserializes data into the given type.
-     *
-     * @param mixed  $data
-     * @param string $type
-     * @param string $format
-     * @param array  $context
-     *
-     * @return object
-     */
-    public function deserialize($data, $type, $format, array $context = array());
-}
diff --git a/vendor/symfony/serializer/composer.json b/vendor/symfony/serializer/composer.json
deleted file mode 100644
index 0db008b..0000000
--- a/vendor/symfony/serializer/composer.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-    "name": "symfony/serializer",
-    "type": "library",
-    "description": "Symfony Serializer Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9"
-    },
-    "require-dev": {
-        "symfony/yaml": "~2.0,>=2.0.5",
-        "symfony/config": "~2.2",
-        "symfony/property-access": "~2.3",
-        "doctrine/annotations": "~1.0",
-        "doctrine/cache": "~1.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/yaml": "For using the default YAML mapping loader.",
-        "symfony/config": "For using the XML mapping loader.",
-        "symfony/property-access": "For using the ObjectNormalizer."
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Serializer\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/serializer/phpunit.xml.dist b/vendor/symfony/serializer/phpunit.xml.dist
deleted file mode 100644
index 279e1eb..0000000
--- a/vendor/symfony/serializer/phpunit.xml.dist
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Serializer Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./vendor</directory>
-                <directory>./Tests</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/translation/.gitignore b/vendor/symfony/translation/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/translation/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/translation/CHANGELOG.md b/vendor/symfony/translation/CHANGELOG.md
deleted file mode 100644
index 157752c..0000000
--- a/vendor/symfony/translation/CHANGELOG.md
+++ /dev/null
@@ -1,47 +0,0 @@
-CHANGELOG
-=========
-
-2.7.0
------
-
- * added DataCollectorTranslator for collecting the translated messages.
-
-2.6.0
------
-
- * added possibility to cache catalogues
- * added TranslatorBagInterface
- * added LoggingTranslator
- * added Translator::getMessages() for retrieving the message catalogue as an array
-
-2.5.0
------
-
- * added relative file path template to the file dumpers
- * added optional backup to the file dumpers
- * changed IcuResFileDumper to extend FileDumper
-
-2.3.0
------
-
- * added classes to make operations on catalogues (like making a diff or a merge on 2 catalogues)
- * added Translator::getFallbackLocales()
- * deprecated Translator::setFallbackLocale() in favor of the new Translator::setFallbackLocales() method
-
-2.2.0
------
-
- * QtTranslationsLoader class renamed to QtFileLoader. QtTranslationsLoader is deprecated and will be removed in 2.3.
- * [BC BREAK] uniformized the exception thrown by the load() method when an error occurs. The load() method now
-   throws Symfony\Component\Translation\Exception\NotFoundResourceException when a resource cannot be found
-   and Symfony\Component\Translation\Exception\InvalidResourceException when a resource is invalid.
- * changed the exception class thrown by some load() methods from \RuntimeException to \InvalidArgumentException
-   (IcuDatFileLoader, IcuResFileLoader and QtFileLoader)
-
-2.1.0
------
-
- * added support for more than one fallback locale
- * added support for extracting translation messages from templates (Twig and PHP)
- * added dumpers for translation catalogs
- * added support for QT, gettext, and ResourceBundles
diff --git a/vendor/symfony/translation/Catalogue/AbstractOperation.php b/vendor/symfony/translation/Catalogue/AbstractOperation.php
deleted file mode 100644
index 062056b..0000000
--- a/vendor/symfony/translation/Catalogue/AbstractOperation.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?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;
-
-use Symfony\Component\Translation\MessageCatalogue;
-use Symfony\Component\Translation\MessageCatalogueInterface;
-
-/**
- * Base catalogues binary operation class.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-abstract class AbstractOperation implements OperationInterface
-{
-    /**
-     * @var MessageCatalogueInterface
-     */
-    protected $source;
-
-    /**
-     * @var MessageCatalogueInterface
-     */
-    protected $target;
-
-    /**
-     * @var MessageCatalogue
-     */
-    protected $result;
-
-    /**
-     * @var null|array
-     */
-    private $domains;
-
-    /**
-     * @var array
-     */
-    protected $messages;
-
-    /**
-     * @param MessageCatalogueInterface $source
-     * @param MessageCatalogueInterface $target
-     *
-     * @throws \LogicException
-     */
-    public function __construct(MessageCatalogueInterface $source, MessageCatalogueInterface $target)
-    {
-        if ($source->getLocale() !== $target->getLocale()) {
-            throw new \LogicException('Operated catalogues must belong to the same locale.');
-        }
-
-        $this->source = $source;
-        $this->target = $target;
-        $this->result = new MessageCatalogue($source->getLocale());
-        $this->domains = null;
-        $this->messages = array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDomains()
-    {
-        if (null === $this->domains) {
-            $this->domains = array_values(array_unique(array_merge($this->source->getDomains(), $this->target->getDomains())));
-        }
-
-        return $this->domains;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMessages($domain)
-    {
-        if (!in_array($domain, $this->getDomains())) {
-            throw new \InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
-        }
-
-        if (!isset($this->messages[$domain]['all'])) {
-            $this->processDomain($domain);
-        }
-
-        return $this->messages[$domain]['all'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getNewMessages($domain)
-    {
-        if (!in_array($domain, $this->getDomains())) {
-            throw new \InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
-        }
-
-        if (!isset($this->messages[$domain]['new'])) {
-            $this->processDomain($domain);
-        }
-
-        return $this->messages[$domain]['new'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getObsoleteMessages($domain)
-    {
-        if (!in_array($domain, $this->getDomains())) {
-            throw new \InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
-        }
-
-        if (!isset($this->messages[$domain]['obsolete'])) {
-            $this->processDomain($domain);
-        }
-
-        return $this->messages[$domain]['obsolete'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getResult()
-    {
-        foreach ($this->getDomains() as $domain) {
-            if (!isset($this->messages[$domain])) {
-                $this->processDomain($domain);
-            }
-        }
-
-        return $this->result;
-    }
-
-    /**
-     * @param string $domain
-     */
-    abstract protected function processDomain($domain);
-}
diff --git a/vendor/symfony/translation/Catalogue/DiffOperation.php b/vendor/symfony/translation/Catalogue/DiffOperation.php
deleted file mode 100644
index 2d1994e..0000000
--- a/vendor/symfony/translation/Catalogue/DiffOperation.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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;
-
-/**
- * Diff operation between two catalogues.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-class DiffOperation extends AbstractOperation
-{
-    /**
-     * {@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
deleted file mode 100644
index 562ca0e..0000000
--- a/vendor/symfony/translation/Catalogue/MergeOperation.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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;
-
-/**
- * Merge operation between two catalogues.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- */
-class MergeOperation extends AbstractOperation
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function processDomain($domain)
-    {
-        $this->messages[$domain] = array(
-            'all' => array(),
-            'new' => array(),
-            'obsolete' => array(),
-        );
-
-        foreach ($this->source->all($domain) as $id => $message) {
-            $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);
-            }
-        }
-
-        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/OperationInterface.php b/vendor/symfony/translation/Catalogue/OperationInterface.php
deleted file mode 100644
index d72378a..0000000
--- a/vendor/symfony/translation/Catalogue/OperationInterface.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?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;
-
-use Symfony\Component\Translation\MessageCatalogueInterface;
-
-/**
- * Represents an operation on catalogue(s).
- *
- * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
- */
-interface OperationInterface
-{
-    /**
-     * Returns domains affected by operation.
-     *
-     * @return array
-     */
-    public function getDomains();
-
-    /**
-     * Returns all valid messages after operation.
-     *
-     * @param string $domain
-     *
-     * @return array
-     */
-    public function getMessages($domain);
-
-    /**
-     * Returns new messages after operation.
-     *
-     * @param string $domain
-     *
-     * @return array
-     */
-    public function getNewMessages($domain);
-
-    /**
-     * Returns obsolete messages after operation.
-     *
-     * @param string $domain
-     *
-     * @return array
-     */
-    public function getObsoleteMessages($domain);
-
-    /**
-     * Returns resulting catalogue.
-     *
-     * @return MessageCatalogueInterface
-     */
-    public function getResult();
-}
diff --git a/vendor/symfony/translation/DataCollector/TranslationDataCollector.php b/vendor/symfony/translation/DataCollector/TranslationDataCollector.php
deleted file mode 100644
index c3c140f..0000000
--- a/vendor/symfony/translation/DataCollector/TranslationDataCollector.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?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\DataCollector;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\DataCollector;
-use Symfony\Component\HttpKernel\DataCollector\LateDataCollectorInterface;
-use Symfony\Component\Translation\DataCollectorTranslator;
-
-/**
- * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
- */
-class TranslationDataCollector extends DataCollector implements LateDataCollectorInterface
-{
-    /**
-     * @var DataCollectorTranslator
-     */
-    private $translator;
-
-    /**
-     * @param DataCollectorTranslator $translator
-     */
-    public function __construct(DataCollectorTranslator $translator)
-    {
-        $this->translator = $translator;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function lateCollect()
-    {
-        $messages = $this->sanitizeCollectedMessages($this->translator->getCollectedMessages());
-
-        $this->data = $this->computeCount($messages);
-        $this->data['messages'] = $messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-    }
-
-    /**
-     * @return array
-     */
-    public function getMessages()
-    {
-        return isset($this->data['messages']) ? $this->data['messages'] : array();
-    }
-
-    /**
-     * @return int
-     */
-    public function getCountMissings()
-    {
-        return isset($this->data[DataCollectorTranslator::MESSAGE_MISSING]) ? $this->data[DataCollectorTranslator::MESSAGE_MISSING] : 0;
-    }
-
-    /**
-     * @return int
-     */
-    public function getCountFallbacks()
-    {
-        return isset($this->data[DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK]) ? $this->data[DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK] : 0;
-    }
-
-    /**
-     * @return int
-     */
-    public function getCountDefines()
-    {
-        return isset($this->data[DataCollectorTranslator::MESSAGE_DEFINED]) ? $this->data[DataCollectorTranslator::MESSAGE_DEFINED] : 0;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'translation';
-    }
-
-    private function sanitizeCollectedMessages($messages)
-    {
-        $result = array();
-        foreach ($messages as $key => $message) {
-            $messageId = $message['locale'].$message['domain'].$message['id'];
-
-            if (!isset($result[$messageId])) {
-                $message['count'] = 1;
-                $messages[$key]['translation'] = $this->sanitizeString($message['translation']);
-                $result[$messageId] = $message;
-            } else {
-                ++$result[$messageId]['count'];
-            }
-
-            unset($messages[$key]);
-        }
-
-        return $result;
-    }
-
-    private function computeCount($messages)
-    {
-        $count = array(
-            DataCollectorTranslator::MESSAGE_DEFINED => 0,
-            DataCollectorTranslator::MESSAGE_MISSING => 0,
-            DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK => 0,
-        );
-
-        foreach ($messages as $message) {
-            ++$count[$message['state']];
-        }
-
-        return $count;
-    }
-
-    private function sanitizeString($string, $length = 80)
-    {
-        $string = trim(preg_replace('/\s+/', ' ', $string));
-
-        if (function_exists('mb_strlen') && false !== $encoding = mb_detect_encoding($string)) {
-            if (mb_strlen($string, $encoding) > $length) {
-                return mb_substr($string, 0, $length - 3, $encoding).'...';
-            }
-        } elseif (strlen($string) > $length) {
-            return substr($string, 0, $length - 3).'...';
-        }
-
-        return $string;
-    }
-}
diff --git a/vendor/symfony/translation/DataCollectorTranslator.php b/vendor/symfony/translation/DataCollectorTranslator.php
deleted file mode 100644
index 4c69ff6..0000000
--- a/vendor/symfony/translation/DataCollectorTranslator.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?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;
-
-/**
- * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
- */
-class DataCollectorTranslator implements TranslatorInterface, TranslatorBagInterface
-{
-    const MESSAGE_DEFINED = 0;
-    const MESSAGE_MISSING = 1;
-    const MESSAGE_EQUALS_FALLBACK = 2;
-
-    /**
-     * @var TranslatorInterface|TranslatorBagInterface
-     */
-    private $translator;
-
-    /**
-     * @var array
-     */
-    private $messages = array();
-
-    /**
-     * @param TranslatorInterface $translator The translator must implement TranslatorBagInterface
-     */
-    public function __construct(TranslatorInterface $translator)
-    {
-        if (!$translator instanceof TranslatorBagInterface) {
-            throw new \InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface and TranslatorBagInterface.', get_class($translator)));
-        }
-
-        $this->translator = $translator;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    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);
-
-        return $trans;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    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);
-
-        return $trans;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setLocale($locale)
-    {
-        $this->translator->setLocale($locale);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getLocale()
-    {
-        return $this->translator->getLocale();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCatalogue($locale = null)
-    {
-        return $this->translator->getCatalogue($locale);
-    }
-
-    /**
-     * Passes through all unknown calls onto the translator object.
-     */
-    public function __call($method, $args)
-    {
-        return call_user_func_array(array($this->translator, $method), $args);
-    }
-
-    /**
-     * @return array
-     */
-    public function getCollectedMessages()
-    {
-        return $this->messages;
-    }
-
-    /**
-     * @param string|null $locale
-     * @param string|null $domain
-     * @param string      $id
-     * @param string      $trans
-     */
-    private function collectMessage($locale, $domain, $id, $translation)
-    {
-        if (null === $domain) {
-            $domain = 'messages';
-        }
-
-        $id = (string) $id;
-        $catalogue = $this->translator->getCatalogue($locale);
-        $locale = $catalogue->getLocale();
-        if ($catalogue->defines($id, $domain)) {
-            $state = self::MESSAGE_DEFINED;
-        } elseif ($catalogue->has($id, $domain)) {
-            $state = self::MESSAGE_EQUALS_FALLBACK;
-
-            $fallbackCatalogue = $catalogue->getFallBackCatalogue();
-            while ($fallbackCatalogue) {
-                if ($fallbackCatalogue->defines($id, $domain)) {
-                    $locale = $fallbackCatalogue->getLocale();
-                    break;
-                }
-
-                $fallbackCatalogue = $fallbackCatalogue->getFallBackCatalogue();
-            }
-        } else {
-            $state = self::MESSAGE_MISSING;
-        }
-
-        $this->messages[] = array(
-            'locale' => $locale,
-            'domain' => $domain,
-            'id' => $id,
-            'translation' => $translation,
-            'state' => $state,
-        );
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/CsvFileDumper.php b/vendor/symfony/translation/Dumper/CsvFileDumper.php
deleted file mode 100644
index 08005b0..0000000
--- a/vendor/symfony/translation/Dumper/CsvFileDumper.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * CsvFileDumper generates a csv formatted string representation of a message catalogue.
- *
- * @author Stealth35
- */
-class CsvFileDumper extends FileDumper
-{
-    private $delimiter = ';';
-    private $enclosure = '"';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function format(MessageCatalogue $messages, $domain = 'messages')
-    {
-        $handle = fopen('php://memory', 'rb+');
-
-        foreach ($messages->all($domain) as $source => $target) {
-            fputcsv($handle, array($source, $target), $this->delimiter, $this->enclosure);
-        }
-
-        rewind($handle);
-        $output = stream_get_contents($handle);
-        fclose($handle);
-
-        return $output;
-    }
-
-    /**
-     * Sets the delimiter and escape character for CSV.
-     *
-     * @param string $delimiter delimiter character
-     * @param string $enclosure enclosure character
-     */
-    public function setCsvControl($delimiter = ';', $enclosure = '"')
-    {
-        $this->delimiter = $delimiter;
-        $this->enclosure = $enclosure;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getExtension()
-    {
-        return 'csv';
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/DumperInterface.php b/vendor/symfony/translation/Dumper/DumperInterface.php
deleted file mode 100644
index cebc65e..0000000
--- a/vendor/symfony/translation/Dumper/DumperInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * DumperInterface is the interface implemented by all translation dumpers.
- * There is no common option.
- *
- * @author Michel Salib <michelsalib@hotmail.com>
- */
-interface DumperInterface
-{
-    /**
-     * Dumps the message catalogue.
-     *
-     * @param MessageCatalogue $messages The message catalogue
-     * @param array            $options  Options that are used by the dumper
-     */
-    public function dump(MessageCatalogue $messages, $options = array());
-}
diff --git a/vendor/symfony/translation/Dumper/FileDumper.php b/vendor/symfony/translation/Dumper/FileDumper.php
deleted file mode 100644
index f2f17d6..0000000
--- a/vendor/symfony/translation/Dumper/FileDumper.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * FileDumper is an implementation of DumperInterface that dump a message catalogue to file(s).
- * Performs backup of already existing files.
- *
- * Options:
- * - path (mandatory): the directory where the files should be saved
- *
- * @author Michel Salib <michelsalib@hotmail.com>
- */
-abstract class FileDumper implements DumperInterface
-{
-    /**
-     * A template for the relative paths to files.
-     *
-     * @var string
-     */
-    protected $relativePathTemplate = '%domain%.%locale%.%extension%';
-
-    /**
-     * Make file backup before the dump.
-     *
-     * @var bool
-     */
-    private $backup = true;
-
-    /**
-     * Sets the template for the relative paths to files.
-     *
-     * @param string $relativePathTemplate A template for the relative paths to files
-     */
-    public function setRelativePathTemplate($relativePathTemplate)
-    {
-        $this->relativePathTemplate = $relativePathTemplate;
-    }
-
-    /**
-     * Sets backup flag.
-     *
-     * @param bool
-     */
-    public function setBackup($backup)
-    {
-        $this->backup = $backup;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dump(MessageCatalogue $messages, $options = array())
-    {
-        if (!array_key_exists('path', $options)) {
-            throw new \InvalidArgumentException('The file dumper needs a path option.');
-        }
-
-        // save a file for each domain
-        foreach ($messages->getDomains() as $domain) {
-            // backup
-            $fullpath = $options['path'].'/'.$this->getRelativePath($domain, $messages->getLocale());
-            if (file_exists($fullpath)) {
-                if ($this->backup) {
-                    copy($fullpath, $fullpath.'~');
-                }
-            } else {
-                $directory = dirname($fullpath);
-                if (!file_exists($directory) && !@mkdir($directory, 0777, true)) {
-                    throw new \RuntimeException(sprintf('Unable to create directory "%s".', $directory));
-                }
-            }
-            // save file
-            file_put_contents($fullpath, $this->format($messages, $domain));
-        }
-    }
-
-    /**
-     * Transforms a domain of a message catalogue to its string representation.
-     *
-     * @param MessageCatalogue $messages
-     * @param string           $domain
-     *
-     * @return string representation
-     */
-    abstract protected function format(MessageCatalogue $messages, $domain);
-
-    /**
-     * Gets the file extension of the dumper.
-     *
-     * @return string file extension
-     */
-    abstract protected function getExtension();
-
-    /**
-     * Gets the relative file path using the template.
-     *
-     * @param string $domain The domain
-     * @param string $locale The locale
-     *
-     * @return string The relative file path
-     */
-    private function getRelativePath($domain, $locale)
-    {
-        return strtr($this->relativePathTemplate, array(
-            '%domain%' => $domain,
-            '%locale%' => $locale,
-            '%extension%' => $this->getExtension(),
-        ));
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/IcuResFileDumper.php b/vendor/symfony/translation/Dumper/IcuResFileDumper.php
deleted file mode 100644
index 0a2ed9f..0000000
--- a/vendor/symfony/translation/Dumper/IcuResFileDumper.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * IcuResDumper generates an ICU ResourceBundle formatted string representation of a message catalogue.
- *
- * @author Stealth35
- */
-class IcuResFileDumper extends FileDumper
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected $relativePathTemplate = '%domain%/%locale%.%extension%';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function format(MessageCatalogue $messages, $domain = 'messages')
-    {
-        $data = $indexes = $resources = '';
-
-        foreach ($messages->all($domain) as $source => $target) {
-            $indexes .= pack('v', strlen($data) + 28);
-            $data    .= $source."\0";
-        }
-
-        $data .= $this->writePadding($data);
-
-        $keyTop = $this->getPosition($data);
-
-        foreach ($messages->all($domain) as $source => $target) {
-            $resources .= pack('V', $this->getPosition($data));
-
-            $data .= pack('V', strlen($target))
-                .mb_convert_encoding($target."\0", 'UTF-16LE', 'UTF-8')
-                .$this->writePadding($data)
-                  ;
-        }
-
-        $resOffset = $this->getPosition($data);
-
-        $data .= pack('v', count($messages))
-            .$indexes
-            .$this->writePadding($data)
-            .$resources
-              ;
-
-        $bundleTop = $this->getPosition($data);
-
-        $root = pack('V7',
-            $resOffset + (2 << 28), // Resource Offset + Resource Type
-            6,                      // Index length
-            $keyTop,                // Index keys top
-            $bundleTop,             // Index resources top
-            $bundleTop,             // Index bundle top
-            count($messages),       // Index max table length
-            0                       // Index attributes
-        );
-
-        $header = pack('vC2v4C12@32',
-            32,                     // Header size
-            0xDA, 0x27,             // Magic number 1 and 2
-            20, 0, 0, 2,            // Rest of the header, ..., Size of a char
-            0x52, 0x65, 0x73, 0x42, // Data format identifier
-            1, 2, 0, 0,             // Data version
-            1, 4, 0, 0              // Unicode version
-        );
-
-        $output = $header
-               .$root
-               .$data;
-
-        return $output;
-    }
-
-    private function writePadding($data)
-    {
-        $padding = strlen($data) % 4;
-
-        if ($padding) {
-            return str_repeat("\xAA", 4 - $padding);
-        }
-    }
-
-    private function getPosition($data)
-    {
-        $position = (strlen($data) + 28) / 4;
-
-        return $position;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getExtension()
-    {
-        return 'res';
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/IniFileDumper.php b/vendor/symfony/translation/Dumper/IniFileDumper.php
deleted file mode 100644
index 45df389..0000000
--- a/vendor/symfony/translation/Dumper/IniFileDumper.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * IniFileDumper generates an ini formatted string representation of a message catalogue.
- *
- * @author Stealth35
- */
-class IniFileDumper extends FileDumper
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function format(MessageCatalogue $messages, $domain = 'messages')
-    {
-        $output = '';
-
-        foreach ($messages->all($domain) as $source => $target) {
-            $escapeTarget = str_replace('"', '\"', $target);
-            $output .= $source.'="'.$escapeTarget."\"\n";
-        }
-
-        return $output;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getExtension()
-    {
-        return 'ini';
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/JsonFileDumper.php b/vendor/symfony/translation/Dumper/JsonFileDumper.php
deleted file mode 100644
index 7ad3518..0000000
--- a/vendor/symfony/translation/Dumper/JsonFileDumper.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * JsonFileDumper generates an json formatted string representation of a message catalogue.
- *
- * @author singles
- */
-class JsonFileDumper extends FileDumper
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function format(MessageCatalogue $messages, $domain = 'messages')
-    {
-        return json_encode($messages->all($domain), defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 0);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getExtension()
-    {
-        return 'json';
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/MoFileDumper.php b/vendor/symfony/translation/Dumper/MoFileDumper.php
deleted file mode 100644
index f8dc6ac..0000000
--- a/vendor/symfony/translation/Dumper/MoFileDumper.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-use Symfony\Component\Translation\Loader\MoFileLoader;
-
-/**
- * MoFileDumper generates a gettext formatted string representation of a message catalogue.
- *
- * @author Stealth35
- */
-class MoFileDumper extends FileDumper
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function format(MessageCatalogue $messages, $domain = 'messages')
-    {
-        $output = $sources = $targets = $sourceOffsets = $targetOffsets = '';
-        $offsets = array();
-        $size = 0;
-
-        foreach ($messages->all($domain) as $source => $target) {
-            $offsets[] = array_map('strlen', array($sources, $source, $targets, $target));
-            $sources .= "\0".$source;
-            $targets .= "\0".$target;
-            ++$size;
-        }
-
-        $header = array(
-            'magicNumber' => MoFileLoader::MO_LITTLE_ENDIAN_MAGIC,
-            'formatRevision' => 0,
-            'count' => $size,
-            'offsetId' => MoFileLoader::MO_HEADER_SIZE,
-            'offsetTranslated' => MoFileLoader::MO_HEADER_SIZE + (8 * $size),
-            'sizeHashes' => 0,
-            'offsetHashes' => MoFileLoader::MO_HEADER_SIZE + (16 * $size),
-        );
-
-        $sourcesSize = strlen($sources);
-        $sourcesStart = $header['offsetHashes'] + 1;
-
-        foreach ($offsets as $offset) {
-            $sourceOffsets .= $this->writeLong($offset[1])
-                          .$this->writeLong($offset[0] + $sourcesStart);
-            $targetOffsets .= $this->writeLong($offset[3])
-                          .$this->writeLong($offset[2] + $sourcesStart + $sourcesSize);
-        }
-
-        $output = implode(array_map(array($this, 'writeLong'), $header))
-               .$sourceOffsets
-               .$targetOffsets
-               .$sources
-               .$targets
-                ;
-
-        return $output;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getExtension()
-    {
-        return 'mo';
-    }
-
-    private function writeLong($str)
-    {
-        return pack('V*', $str);
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/PhpFileDumper.php b/vendor/symfony/translation/Dumper/PhpFileDumper.php
deleted file mode 100644
index b354c12..0000000
--- a/vendor/symfony/translation/Dumper/PhpFileDumper.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * PhpFileDumper generates PHP files from a message catalogue.
- *
- * @author Michel Salib <michelsalib@hotmail.com>
- */
-class PhpFileDumper extends FileDumper
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function format(MessageCatalogue $messages, $domain)
-    {
-        $output = "<?php\n\nreturn ".var_export($messages->all($domain), true).";\n";
-
-        return $output;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getExtension()
-    {
-        return 'php';
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/PoFileDumper.php b/vendor/symfony/translation/Dumper/PoFileDumper.php
deleted file mode 100644
index 983064b..0000000
--- a/vendor/symfony/translation/Dumper/PoFileDumper.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * PoFileDumper generates a gettext formatted string representation of a message catalogue.
- *
- * @author Stealth35
- */
-class PoFileDumper extends FileDumper
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function format(MessageCatalogue $messages, $domain = 'messages')
-    {
-        $output = 'msgid ""'."\n";
-        $output .= 'msgstr ""'."\n";
-        $output .= '"Content-Type: text/plain; charset=UTF-8\n"'."\n";
-        $output .= '"Content-Transfer-Encoding: 8bit\n"'."\n";
-        $output .= '"Language: '.$messages->getLocale().'\n"'."\n";
-        $output .= "\n";
-
-        $newLine = false;
-        foreach ($messages->all($domain) as $source => $target) {
-            if ($newLine) {
-                $output .= "\n";
-            } else {
-                $newLine = true;
-            }
-            $output .= sprintf('msgid "%s"'."\n", $this->escape($source));
-            $output .= sprintf('msgstr "%s"', $this->escape($target));
-        }
-
-        return $output;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getExtension()
-    {
-        return 'po';
-    }
-
-    private function escape($str)
-    {
-        return addcslashes($str, "\0..\37\42\134");
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/QtFileDumper.php b/vendor/symfony/translation/Dumper/QtFileDumper.php
deleted file mode 100644
index 42aa093..0000000
--- a/vendor/symfony/translation/Dumper/QtFileDumper.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * QtFileDumper generates ts files from a message catalogue.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class QtFileDumper extends FileDumper
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function format(MessageCatalogue $messages, $domain)
-    {
-        $dom = new \DOMDocument('1.0', 'utf-8');
-        $dom->formatOutput = true;
-        $ts = $dom->appendChild($dom->createElement('TS'));
-        $context = $ts->appendChild($dom->createElement('context'));
-        $context->appendChild($dom->createElement('name', $domain));
-
-        foreach ($messages->all($domain) as $source => $target) {
-            $message = $context->appendChild($dom->createElement('message'));
-            $message->appendChild($dom->createElement('source', $source));
-            $message->appendChild($dom->createElement('translation', $target));
-        }
-
-        return $dom->saveXML();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getExtension()
-    {
-        return 'ts';
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/XliffFileDumper.php b/vendor/symfony/translation/Dumper/XliffFileDumper.php
deleted file mode 100644
index 58d1973..0000000
--- a/vendor/symfony/translation/Dumper/XliffFileDumper.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * XliffFileDumper generates xliff files from a message catalogue.
- *
- * @author Michel Salib <michelsalib@hotmail.com>
- */
-class XliffFileDumper extends FileDumper
-{
-    /**
-     * @var string
-     */
-    private $defaultLocale;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function dump(MessageCatalogue $messages, $options = array())
-    {
-        if (array_key_exists('default_locale', $options)) {
-            $this->defaultLocale = $options['default_locale'];
-        } else {
-            $this->defaultLocale = \Locale::getDefault();
-        }
-
-        parent::dump($messages, $options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function format(MessageCatalogue $messages, $domain)
-    {
-        $dom = new \DOMDocument('1.0', 'utf-8');
-        $dom->formatOutput = true;
-
-        $xliff = $dom->appendChild($dom->createElement('xliff'));
-        $xliff->setAttribute('version', '1.2');
-        $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('target-language', str_replace('_', '-', $messages->getLocale()));
-        $xliffFile->setAttribute('datatype', 'plaintext');
-        $xliffFile->setAttribute('original', 'file.ext');
-
-        $xliffBody = $xliffFile->appendChild($dom->createElement('body'));
-        foreach ($messages->all($domain) as $source => $target) {
-            $translation = $dom->createElement('trans-unit');
-
-            $translation->setAttribute('id', md5($source));
-            $translation->setAttribute('resname', $source);
-
-            $s = $translation->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);
-
-            $t = $translation->appendChild($dom->createElement('target'));
-            $t->appendChild($text);
-
-            $metadata = $messages->getMetadata($source, $domain);
-            if (null !== $metadata && array_key_exists('notes', $metadata) && is_array($metadata['notes'])) {
-                foreach ($metadata['notes'] as $note) {
-                    if (!isset($note['content'])) {
-                        continue;
-                    }
-
-                    $n = $translation->appendChild($dom->createElement('note'));
-                    $n->appendChild($dom->createTextNode($note['content']));
-
-                    if (isset($note['priority'])) {
-                        $n->setAttribute('priority', $note['priority']);
-                    }
-
-                    if (isset($note['from'])) {
-                        $n->setAttribute('from', $note['from']);
-                    }
-                }
-            }
-
-            $xliffBody->appendChild($translation);
-        }
-
-        return $dom->saveXML();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getExtension()
-    {
-        return 'xlf';
-    }
-}
diff --git a/vendor/symfony/translation/Dumper/YamlFileDumper.php b/vendor/symfony/translation/Dumper/YamlFileDumper.php
deleted file mode 100644
index 870fb98..0000000
--- a/vendor/symfony/translation/Dumper/YamlFileDumper.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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\Dumper;
-
-use Symfony\Component\Translation\MessageCatalogue;
-use Symfony\Component\Yaml\Yaml;
-
-/**
- * YamlFileDumper generates yaml files from a message catalogue.
- *
- * @author Michel Salib <michelsalib@hotmail.com>
- */
-class YamlFileDumper extends FileDumper
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function format(MessageCatalogue $messages, $domain)
-    {
-        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));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function getExtension()
-    {
-        return 'yml';
-    }
-}
diff --git a/vendor/symfony/translation/Exception/ExceptionInterface.php b/vendor/symfony/translation/Exception/ExceptionInterface.php
deleted file mode 100644
index c85fb93..0000000
--- a/vendor/symfony/translation/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Exception interface for all exceptions thrown by the component.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/symfony/translation/Exception/InvalidResourceException.php b/vendor/symfony/translation/Exception/InvalidResourceException.php
deleted file mode 100644
index cf07943..0000000
--- a/vendor/symfony/translation/Exception/InvalidResourceException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Thrown when a resource cannot be loaded.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class InvalidResourceException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/translation/Exception/NotFoundResourceException.php b/vendor/symfony/translation/Exception/NotFoundResourceException.php
deleted file mode 100644
index cff73ae..0000000
--- a/vendor/symfony/translation/Exception/NotFoundResourceException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Thrown when a resource does not exist.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class NotFoundResourceException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/translation/Extractor/AbstractFileExtractor.php b/vendor/symfony/translation/Extractor/AbstractFileExtractor.php
deleted file mode 100644
index 196bc33..0000000
--- a/vendor/symfony/translation/Extractor/AbstractFileExtractor.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?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\Extractor;
-
-/**
- * Base class used by classes that extract translation messages from files.
- *
- * @author Marcos D. Sánchez <marcosdsanchez@gmail.com>
- */
-abstract class AbstractFileExtractor
-{
-    /**
-     * @param string|array $resource files, a file or a directory
-     *
-     * @return array
-     */
-    protected function extractFiles($resource)
-    {
-        if (is_array($resource) || $resource instanceof \Traversable) {
-            $files = array();
-            foreach ($resource as $file) {
-                if ($this->canBeExtracted($file)) {
-                    $files[] = $this->toSplFileInfo($file);
-                }
-            }
-        } elseif (is_file($resource)) {
-            $files = $this->canBeExtracted($resource) ? array($this->toSplFileInfo($resource)) : array();
-        } else {
-            $files = $this->extractFromDirectory($resource);
-        }
-
-        return $files;
-    }
-
-    /**
-     * @param string $file
-     *
-     * @return \SplFileInfo
-     */
-    private function toSplFileInfo($file)
-    {
-        return ($file instanceof \SplFileInfo) ? $file : new \SplFileInfo($file);
-    }
-
-    /**
-     * @param string $file
-     *
-     * @throws \InvalidArgumentException
-     *
-     * @return bool
-     */
-    protected function isFile($file)
-    {
-        if (!is_file($file)) {
-            throw new \InvalidArgumentException(sprintf('The "%s" file does not exist.', $file));
-        }
-
-        return true;
-    }
-
-    /**
-     * @param string $file
-     *
-     * @return bool
-     */
-    abstract protected function canBeExtracted($file);
-
-    /**
-     * @param string|array $resource files, a file or a directory
-     *
-     * @return array files to be extracted
-     */
-    abstract protected function extractFromDirectory($resource);
-}
diff --git a/vendor/symfony/translation/Extractor/ChainExtractor.php b/vendor/symfony/translation/Extractor/ChainExtractor.php
deleted file mode 100644
index 50e3c84..0000000
--- a/vendor/symfony/translation/Extractor/ChainExtractor.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?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\Extractor;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * ChainExtractor extracts translation messages from template files.
- *
- * @author Michel Salib <michelsalib@hotmail.com>
- */
-class ChainExtractor implements ExtractorInterface
-{
-    /**
-     * The extractors.
-     *
-     * @var ExtractorInterface[]
-     */
-    private $extractors = array();
-
-    /**
-     * Adds a loader to the translation extractor.
-     *
-     * @param string             $format    The format of the loader
-     * @param ExtractorInterface $extractor The loader
-     */
-    public function addExtractor($format, ExtractorInterface $extractor)
-    {
-        $this->extractors[$format] = $extractor;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setPrefix($prefix)
-    {
-        foreach ($this->extractors as $extractor) {
-            $extractor->setPrefix($prefix);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function extract($directory, MessageCatalogue $catalogue)
-    {
-        foreach ($this->extractors as $extractor) {
-            $extractor->extract($directory, $catalogue);
-        }
-    }
-}
diff --git a/vendor/symfony/translation/Extractor/ExtractorInterface.php b/vendor/symfony/translation/Extractor/ExtractorInterface.php
deleted file mode 100644
index 438f80b..0000000
--- a/vendor/symfony/translation/Extractor/ExtractorInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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\Extractor;
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-/**
- * Extracts translation messages from a directory or files to the catalogue.
- * New found messages are injected to the catalogue using the prefix.
- *
- * @author Michel Salib <michelsalib@hotmail.com>
- */
-interface ExtractorInterface
-{
-    /**
-     * Extracts translation messages from files, a file or a directory to the catalogue.
-     *
-     * @param string|array     $resource  files, a file or a directory
-     * @param MessageCatalogue $catalogue The catalogue
-     */
-    public function extract($resource, MessageCatalogue $catalogue);
-
-    /**
-     * Sets the prefix that should be used for new found messages.
-     *
-     * @param string $prefix The prefix
-     */
-    public function setPrefix($prefix);
-}
diff --git a/vendor/symfony/translation/IdentityTranslator.php b/vendor/symfony/translation/IdentityTranslator.php
deleted file mode 100644
index 46a0463..0000000
--- a/vendor/symfony/translation/IdentityTranslator.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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;
-
-/**
- * IdentityTranslator does not translate anything.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class IdentityTranslator implements TranslatorInterface
-{
-    private $selector;
-    private $locale;
-
-    /**
-     * Constructor.
-     *
-     * @param MessageSelector|null $selector The message selector for pluralization
-     */
-    public function __construct(MessageSelector $selector = null)
-    {
-        $this->selector = $selector ?: new MessageSelector();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setLocale($locale)
-    {
-        $this->locale = $locale;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getLocale()
-    {
-        return $this->locale ?: \Locale::getDefault();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function trans($id, array $parameters = array(), $domain = null, $locale = null)
-    {
-        return strtr((string) $id, $parameters);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
-    {
-        return strtr($this->selector->choose((string) $id, (int) $number, $locale ?: $this->getLocale()), $parameters);
-    }
-}
diff --git a/vendor/symfony/translation/Interval.php b/vendor/symfony/translation/Interval.php
deleted file mode 100644
index 2a51156..0000000
--- a/vendor/symfony/translation/Interval.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?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;
-
-/**
- * Tests if a given number belongs to a given math interval.
- *
- * An interval can represent a finite set of numbers:
- *
- *  {1,2,3,4}
- *
- * An interval can represent numbers between two numbers:
- *
- *  [1, +Inf]
- *  ]-1,2[
- *
- * The left delimiter can be [ (inclusive) or ] (exclusive).
- * The right delimiter can be [ (exclusive) or ] (inclusive).
- * Beside numbers, you can use -Inf and +Inf for the infinite.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @see    http://en.wikipedia.org/wiki/Interval_%28mathematics%29#The_ISO_notation
- */
-class Interval
-{
-    /**
-     * Tests if the given number is in the math interval.
-     *
-     * @param int    $number   A number
-     * @param string $interval An interval
-     *
-     * @return bool
-     *
-     * @throws \InvalidArgumentException
-     */
-    public static function test($number, $interval)
-    {
-        $interval = trim($interval);
-
-        if (!preg_match('/^'.self::getIntervalRegexp().'$/x', $interval, $matches)) {
-            throw new \InvalidArgumentException(sprintf('"%s" is not a valid interval.', $interval));
-        }
-
-        if ($matches[1]) {
-            foreach (explode(',', $matches[2]) as $n) {
-                if ($number == $n) {
-                    return true;
-                }
-            }
-        } else {
-            $leftNumber = self::convertNumber($matches['left']);
-            $rightNumber = self::convertNumber($matches['right']);
-
-            return
-                ('[' === $matches['left_delimiter'] ? $number >= $leftNumber : $number > $leftNumber)
-                && (']' === $matches['right_delimiter'] ? $number <= $rightNumber : $number < $rightNumber)
-            ;
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns a Regexp that matches valid intervals.
-     *
-     * @return string A Regexp (without the delimiters)
-     */
-    public static function getIntervalRegexp()
-    {
-        return <<<EOF
-        ({\s*
-            (\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*)
-        \s*})
-
-            |
-
-        (?P<left_delimiter>[\[\]])
-            \s*
-            (?P<left>-Inf|\-?\d+(\.\d+)?)
-            \s*,\s*
-            (?P<right>\+?Inf|\-?\d+(\.\d+)?)
-            \s*
-        (?P<right_delimiter>[\[\]])
-EOF;
-    }
-
-    private static function convertNumber($number)
-    {
-        if ('-Inf' === $number) {
-            return log(0);
-        } elseif ('+Inf' === $number || 'Inf' === $number) {
-            return -log(0);
-        }
-
-        return (float) $number;
-    }
-}
diff --git a/vendor/symfony/translation/LICENSE b/vendor/symfony/translation/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/translation/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/translation/Loader/ArrayLoader.php b/vendor/symfony/translation/Loader/ArrayLoader.php
deleted file mode 100644
index 9a595b7..0000000
--- a/vendor/symfony/translation/Loader/ArrayLoader.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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\MessageCatalogue;
-
-/**
- * ArrayLoader loads translations from a PHP array.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ArrayLoader implements LoaderInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function load($resource, $locale, $domain = 'messages')
-    {
-        $this->flatten($resource);
-        $catalogue = new MessageCatalogue($locale);
-        $catalogue->add($resource, $domain);
-
-        return $catalogue;
-    }
-
-    /**
-     * Flattens an nested array of translations.
-     *
-     * The scheme used is:
-     *   'key' => array('key2' => array('key3' => 'value'))
-     * Becomes:
-     *   'key.key2.key3' => 'value'
-     *
-     * This function takes an array by reference and will modify it
-     *
-     * @param array  &$messages The array that will be flattened
-     * @param array  $subnode   Current subnode being parsed, used internally for recursive calls
-     * @param string $path      Current path being parsed, used internally for recursive calls
-     */
-    private function flatten(array &$messages, array $subnode = null, $path = null)
-    {
-        if (null === $subnode) {
-            $subnode = &$messages;
-        }
-        foreach ($subnode as $key => $value) {
-            if (is_array($value)) {
-                $nodePath = $path ? $path.'.'.$key : $key;
-                $this->flatten($messages, $value, $nodePath);
-                if (null === $path) {
-                    unset($messages[$key]);
-                }
-            } elseif (null !== $path) {
-                $messages[$path.'.'.$key] = $value;
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/translation/Loader/CsvFileLoader.php b/vendor/symfony/translation/Loader/CsvFileLoader.php
deleted file mode 100644
index 2240179..0000000
--- a/vendor/symfony/translation/Loader/CsvFileLoader.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?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;
-
-/**
- * CsvFileLoader loads translations from CSV files.
- *
- * @author Saša Stamenković <umpirsky@gmail.com>
- */
-class CsvFileLoader extends ArrayLoader
-{
-    private $delimiter = ';';
-    private $enclosure = '"';
-    private $escape = '\\';
-
-    /**
-     * {@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 = array();
-
-        try {
-            $file = new \SplFileObject($resource, 'rb');
-        } catch (\RuntimeException $e) {
-            throw new NotFoundResourceException(sprintf('Error opening file "%s".', $resource), 0, $e);
-        }
-
-        $file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::SKIP_EMPTY);
-        $file->setCsvControl($this->delimiter, $this->enclosure, $this->escape);
-
-        foreach ($file as $data) {
-            if ('#' !== substr($data[0], 0, 1) && isset($data[1]) && 2 === count($data)) {
-                $messages[$data[0]] = $data[1];
-            }
-        }
-
-        $catalogue = parent::load($messages, $locale, $domain);
-
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource));
-        }
-
-        return $catalogue;
-    }
-
-    /**
-     * Sets the delimiter, enclosure, and escape character for CSV.
-     *
-     * @param string $delimiter delimiter character
-     * @param string $enclosure enclosure character
-     * @param string $escape    escape character
-     */
-    public function setCsvControl($delimiter = ';', $enclosure = '"', $escape = '\\')
-    {
-        $this->delimiter = $delimiter;
-        $this->enclosure = $enclosure;
-        $this->escape = $escape;
-    }
-}
diff --git a/vendor/symfony/translation/Loader/IcuDatFileLoader.php b/vendor/symfony/translation/Loader/IcuDatFileLoader.php
deleted file mode 100644
index 71ba90a..0000000
--- a/vendor/symfony/translation/Loader/IcuDatFileLoader.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?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\MessageCatalogue;
-use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\FileResource;
-
-/**
- * IcuResFileLoader loads translations from a resource bundle.
- *
- * @author stealth35
- */
-class IcuDatFileLoader extends IcuResFileLoader
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function load($resource, $locale, $domain = 'messages')
-    {
-        if (!stream_is_local($resource.'.dat')) {
-            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
-        }
-
-        if (!file_exists($resource.'.dat')) {
-            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
-        }
-
-        try {
-            $rb = new \ResourceBundle($locale, $resource);
-        } catch (\Exception $e) {
-            // HHVM compatibility: constructor throws on invalid resource
-            $rb = null;
-        }
-
-        if (!$rb) {
-            throw new InvalidResourceException(sprintf('Cannot load resource "%s"', $resource));
-        } elseif (intl_is_failure($rb->getErrorCode())) {
-            throw new InvalidResourceException($rb->getErrorMessage(), $rb->getErrorCode());
-        }
-
-        $messages = $this->flatten($rb);
-        $catalogue = new MessageCatalogue($locale);
-        $catalogue->add($messages, $domain);
-
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource.'.dat'));
-        }
-
-        return $catalogue;
-    }
-}
diff --git a/vendor/symfony/translation/Loader/IcuResFileLoader.php b/vendor/symfony/translation/Loader/IcuResFileLoader.php
deleted file mode 100644
index 2f8037f..0000000
--- a/vendor/symfony/translation/Loader/IcuResFileLoader.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?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\MessageCatalogue;
-use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\DirectoryResource;
-
-/**
- * IcuResFileLoader loads translations from a resource bundle.
- *
- * @author stealth35
- */
-class IcuResFileLoader implements LoaderInterface
-{
-    /**
-     * {@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 (!is_dir($resource)) {
-            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
-        }
-
-        try {
-            $rb = new \ResourceBundle($locale, $resource);
-        } catch (\Exception $e) {
-            // HHVM compatibility: constructor throws on invalid resource
-            $rb = null;
-        }
-
-        if (!$rb) {
-            throw new InvalidResourceException(sprintf('Cannot load resource "%s"', $resource));
-        } elseif (intl_is_failure($rb->getErrorCode())) {
-            throw new InvalidResourceException($rb->getErrorMessage(), $rb->getErrorCode());
-        }
-
-        $messages = $this->flatten($rb);
-        $catalogue = new MessageCatalogue($locale);
-        $catalogue->add($messages, $domain);
-
-        if (class_exists('Symfony\Component\Config\Resource\DirectoryResource')) {
-            $catalogue->addResource(new DirectoryResource($resource));
-        }
-
-        return $catalogue;
-    }
-
-    /**
-     * Flattens an ResourceBundle.
-     *
-     * The scheme used is:
-     *   key { key2 { key3 { "value" } } }
-     * Becomes:
-     *   'key.key2.key3' => 'value'
-     *
-     * This function takes an array by reference and will modify it
-     *
-     * @param \ResourceBundle $rb       the ResourceBundle that will be flattened
-     * @param array           $messages used internally for recursive calls
-     * @param string          $path     current path being parsed, used internally for recursive calls
-     *
-     * @return array the flattened ResourceBundle
-     */
-    protected function flatten(\ResourceBundle $rb, array &$messages = array(), $path = null)
-    {
-        foreach ($rb as $key => $value) {
-            $nodePath = $path ? $path.'.'.$key : $key;
-            if ($value instanceof \ResourceBundle) {
-                $this->flatten($value, $messages, $nodePath);
-            } else {
-                $messages[$nodePath] = $value;
-            }
-        }
-
-        return $messages;
-    }
-}
diff --git a/vendor/symfony/translation/Loader/IniFileLoader.php b/vendor/symfony/translation/Loader/IniFileLoader.php
deleted file mode 100644
index 1b3a7b1..0000000
--- a/vendor/symfony/translation/Loader/IniFileLoader.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?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;
-
-/**
- * IniFileLoader loads translations from an ini file.
- *
- * @author stealth35
- */
-class IniFileLoader 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 = 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;
-    }
-}
diff --git a/vendor/symfony/translation/Loader/JsonFileLoader.php b/vendor/symfony/translation/Loader/JsonFileLoader.php
deleted file mode 100644
index 81717f3..0000000
--- a/vendor/symfony/translation/Loader/JsonFileLoader.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?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;
-
-/**
- * JsonFileLoader loads translations from an json file.
- *
- * @author singles
- */
-class JsonFileLoader 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 = array();
-        if ($data = file_get_contents($resource)) {
-            $messages = json_decode($data, true);
-
-            if (0 < $errorCode = json_last_error()) {
-                throw new InvalidResourceException(sprintf('Error parsing JSON - %s', $this->getJSONErrorMessage($errorCode)));
-            }
-        }
-
-        if (null === $messages) {
-            $messages = array();
-        }
-
-        $catalogue = parent::load($messages, $locale, $domain);
-        $catalogue->addResource(new FileResource($resource));
-
-        return $catalogue;
-    }
-
-    /**
-     * Translates JSON_ERROR_* constant into meaningful message.
-     *
-     * @param int $errorCode Error code returned by json_last_error() call
-     *
-     * @return string Message string
-     */
-    private function getJSONErrorMessage($errorCode)
-    {
-        switch ($errorCode) {
-            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/translation/Loader/LoaderInterface.php b/vendor/symfony/translation/Loader/LoaderInterface.php
deleted file mode 100644
index 6b65fe3..0000000
--- a/vendor/symfony/translation/Loader/LoaderInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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\MessageCatalogue;
-use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-
-/**
- * LoaderInterface is the interface implemented by all translation loaders.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface LoaderInterface
-{
-    /**
-     * Loads a locale.
-     *
-     * @param mixed  $resource A resource
-     * @param string $locale   A locale
-     * @param string $domain   The domain
-     *
-     * @return MessageCatalogue A MessageCatalogue instance
-     *
-     * @throws NotFoundResourceException when the resource cannot be found
-     * @throws InvalidResourceException  when the resource cannot be loaded
-     */
-    public function load($resource, $locale, $domain = 'messages');
-}
diff --git a/vendor/symfony/translation/Loader/MoFileLoader.php b/vendor/symfony/translation/Loader/MoFileLoader.php
deleted file mode 100644
index 746fd52..0000000
--- a/vendor/symfony/translation/Loader/MoFileLoader.php
+++ /dev/null
@@ -1,191 +0,0 @@
-<?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;
-
-/**
- * @copyright Copyright (c) 2010, Union of RAD http://union-of-rad.org (http://lithify.me/)
- */
-class MoFileLoader extends ArrayLoader
-{
-    /**
-     * Magic used for validating the format of a MO file as well as
-     * detecting if the machine used to create that file was little endian.
-     *
-     * @var float
-     */
-    const MO_LITTLE_ENDIAN_MAGIC = 0x950412de;
-
-    /**
-     * Magic used for validating the format of a MO file as well as
-     * detecting if the machine used to create that file was big endian.
-     *
-     * @var float
-     */
-    const MO_BIG_ENDIAN_MAGIC = 0xde120495;
-
-    /**
-     * The size of the header of a MO file in bytes.
-     *
-     * @var int Number of bytes.
-     */
-    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.
-     */
-    private function parse($resource)
-    {
-        $stream = fopen($resource, 'r');
-
-        $stat = fstat($stream);
-
-        if ($stat['size'] < self::MO_HEADER_SIZE) {
-            throw new InvalidResourceException('MO stream content has an invalid format.');
-        }
-        $magic = unpack('V1', fread($stream, 4));
-        $magic = hexdec(substr(dechex(current($magic)), -8));
-
-        if ($magic == self::MO_LITTLE_ENDIAN_MAGIC) {
-            $isBigEndian = false;
-        } elseif ($magic == self::MO_BIG_ENDIAN_MAGIC) {
-            $isBigEndian = true;
-        } else {
-            throw new InvalidResourceException('MO stream content has an invalid format.');
-        }
-
-        // formatRevision
-        $this->readLong($stream, $isBigEndian);
-        $count = $this->readLong($stream, $isBigEndian);
-        $offsetId = $this->readLong($stream, $isBigEndian);
-        $offsetTranslated = $this->readLong($stream, $isBigEndian);
-        // sizeHashes
-        $this->readLong($stream, $isBigEndian);
-        // offsetHashes
-        $this->readLong($stream, $isBigEndian);
-
-        $messages = array();
-
-        for ($i = 0; $i < $count; ++$i) {
-            $singularId = $pluralId = null;
-            $translated = null;
-
-            fseek($stream, $offsetId + $i * 8);
-
-            $length = $this->readLong($stream, $isBigEndian);
-            $offset = $this->readLong($stream, $isBigEndian);
-
-            if ($length < 1) {
-                continue;
-            }
-
-            fseek($stream, $offset);
-            $singularId = fread($stream, $length);
-
-            if (strpos($singularId, "\000") !== false) {
-                list($singularId, $pluralId) = explode("\000", $singularId);
-            }
-
-            fseek($stream, $offsetTranslated + $i * 8);
-            $length = $this->readLong($stream, $isBigEndian);
-            $offset = $this->readLong($stream, $isBigEndian);
-
-            if ($length < 1) {
-                continue;
-            }
-
-            fseek($stream, $offset);
-            $translated = fread($stream, $length);
-
-            if (strpos($translated, "\000") !== false) {
-                $translated = explode("\000", $translated);
-            }
-
-            $ids = array('singular' => $singularId, 'plural' => $pluralId);
-            $item = compact('ids', 'translated');
-
-            if (is_array($item['translated'])) {
-                $messages[$item['ids']['singular']] = stripcslashes($item['translated'][0]);
-                if (isset($item['ids']['plural'])) {
-                    $plurals = array();
-                    foreach ($item['translated'] as $plural => $translated) {
-                        $plurals[] = sprintf('{%d} %s', $plural, $translated);
-                    }
-                    $messages[$item['ids']['plural']] = stripcslashes(implode('|', $plurals));
-                }
-            } elseif (!empty($item['ids']['singular'])) {
-                $messages[$item['ids']['singular']] = stripcslashes($item['translated']);
-            }
-        }
-
-        fclose($stream);
-
-        return array_filter($messages);
-    }
-
-    /**
-     * Reads an unsigned long from stream respecting endianess.
-     *
-     * @param resource $stream
-     * @param bool     $isBigEndian
-     *
-     * @return int
-     */
-    private function readLong($stream, $isBigEndian)
-    {
-        $result = unpack($isBigEndian ? 'N1' : 'V1', fread($stream, 4));
-        $result = current($result);
-
-        return (int) substr($result, -8);
-    }
-}
diff --git a/vendor/symfony/translation/Loader/PhpFileLoader.php b/vendor/symfony/translation/Loader/PhpFileLoader.php
deleted file mode 100644
index a52e0bb..0000000
--- a/vendor/symfony/translation/Loader/PhpFileLoader.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?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;
-
-/**
- * PhpFileLoader loads translations from PHP files returning an array of translations.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class PhpFileLoader 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 = require $resource;
-
-        $catalogue = parent::load($messages, $locale, $domain);
-
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource));
-        }
-
-        return $catalogue;
-    }
-}
diff --git a/vendor/symfony/translation/Loader/PoFileLoader.php b/vendor/symfony/translation/Loader/PoFileLoader.php
deleted file mode 100644
index b5d12e9..0000000
--- a/vendor/symfony/translation/Loader/PoFileLoader.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?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;
-
-/**
- * @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
-{
-    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.
-     *
-     * From http://www.gnu.org/software/gettext/manual/gettext.html#PO-Files
-     * we should be able to parse files having:
-     *
-     * white-space
-     * #  translator-comments
-     * #. extracted-comments
-     * #: reference...
-     * #, flag...
-     * #| msgid previous-untranslated-string
-     * msgid untranslated-string
-     * msgstr translated-string
-     *
-     * extra or different lines are:
-     *
-     * #| msgctxt previous-context
-     * #| msgid previous-untranslated-string
-     * msgctxt context
-     *
-     * #| msgid previous-untranslated-string-singular
-     * #| msgid_plural previous-untranslated-string-plural
-     * msgid untranslated-string-singular
-     * msgid_plural untranslated-string-plural
-     * msgstr[0] translated-string-case-0
-     * ...
-     * msgstr[N] translated-string-case-n
-     *
-     * The definition states:
-     * - white-space and comments are optional.
-     * - msgid "" that an empty singleline defines a header.
-     *
-     * This parser sacrifices some features of the reference implementation the
-     * differences to that implementation are as follows.
-     * - No support for comments spanning multiple lines.
-     * - Translator and extracted comments are treated as being the same type.
-     * - Message IDs are allowed to have other encodings as just US-ASCII.
-     *
-     * Items with an empty id are ignored.
-     *
-     * @param resource $resource
-     *
-     * @return array
-     */
-    private function parse($resource)
-    {
-        $stream = fopen($resource, 'r');
-
-        $defaults = array(
-            'ids' => array(),
-            'translated' => null,
-        );
-
-        $messages = array();
-        $item = $defaults;
-
-        while ($line = fgets($stream)) {
-            $line = trim($line);
-
-            if ($line === '') {
-                // Whitespace indicated current item is done
-                $this->addMessage($messages, $item);
-                $item = $defaults;
-            } elseif (substr($line, 0, 7) === 'msgid "') {
-                // We start a new msg so save previous
-                // TODO: this fails when comments or contexts are added
-                $this->addMessage($messages, $item);
-                $item = $defaults;
-                $item['ids']['singular'] = substr($line, 7, -1);
-            } elseif (substr($line, 0, 8) === 'msgstr "') {
-                $item['translated'] = substr($line, 8, -1);
-            } elseif ($line[0] === '"') {
-                $continues = isset($item['translated']) ? 'translated' : 'ids';
-
-                if (is_array($item[$continues])) {
-                    end($item[$continues]);
-                    $item[$continues][key($item[$continues])] .= substr($line, 1, -1);
-                } else {
-                    $item[$continues] .= substr($line, 1, -1);
-                }
-            } elseif (substr($line, 0, 14) === 'msgid_plural "') {
-                $item['ids']['plural'] = substr($line, 14, -1);
-            } elseif (substr($line, 0, 7) === 'msgstr[') {
-                $size = strpos($line, ']');
-                $item['translated'][(int) substr($line, 7, 1)] = substr($line, $size + 3, -1);
-            }
-        }
-        // save last item
-        $this->addMessage($messages, $item);
-        fclose($stream);
-
-        return $messages;
-    }
-
-    /**
-     * Save a translation item to the messages.
-     *
-     * A .po file could contain by error missing plural indexes. We need to
-     * fix these before saving them.
-     *
-     * @param array $messages
-     * @param array $item
-     */
-    private function addMessage(array &$messages, array $item)
-    {
-        if (is_array($item['translated'])) {
-            $messages[stripcslashes($item['ids']['singular'])] = stripcslashes($item['translated'][0]);
-            if (isset($item['ids']['plural'])) {
-                $plurals = $item['translated'];
-                // PO are by definition indexed so sort by index.
-                ksort($plurals);
-                // Make sure every index is filled.
-                end($plurals);
-                $count = key($plurals);
-                // Fill missing spots with '-'.
-                $empties = array_fill(0, $count + 1, '-');
-                $plurals += $empties;
-                ksort($plurals);
-                $messages[stripcslashes($item['ids']['plural'])] = stripcslashes(implode('|', $plurals));
-            }
-        } elseif (!empty($item['ids']['singular'])) {
-            $messages[stripcslashes($item['ids']['singular'])] = stripcslashes($item['translated']);
-        }
-    }
-}
diff --git a/vendor/symfony/translation/Loader/QtFileLoader.php b/vendor/symfony/translation/Loader/QtFileLoader.php
deleted file mode 100644
index 657bd6e..0000000
--- a/vendor/symfony/translation/Loader/QtFileLoader.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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\Config\Util\XmlUtils;
-use Symfony\Component\Translation\MessageCatalogue;
-use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\FileResource;
-
-/**
- * QtFileLoader loads translations from QT Translations XML files.
- *
- * @author Benjamin Eberlei <kontakt@beberlei.de>
- */
-class QtFileLoader implements LoaderInterface
-{
-    /**
-     * {@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));
-        }
-
-        try {
-            $dom = XmlUtils::loadFile($resource);
-        } catch (\InvalidArgumentException $e) {
-            throw new InvalidResourceException(sprintf('Unable to load "%s".', $resource), $e->getCode(), $e);
-        }
-
-        $internalErrors = libxml_use_internal_errors(true);
-        libxml_clear_errors();
-
-        $xpath = new \DOMXPath($dom);
-        $nodes = $xpath->evaluate('//TS/context/name[text()="'.$domain.'"]');
-
-        $catalogue = new MessageCatalogue($locale);
-        if ($nodes->length == 1) {
-            $translations = $nodes->item(0)->nextSibling->parentNode->parentNode->getElementsByTagName('message');
-            foreach ($translations as $translation) {
-                $translationValue = (string) $translation->getElementsByTagName('translation')->item(0)->nodeValue;
-
-                if (!empty($translationValue)) {
-                    $catalogue->set(
-                        (string) $translation->getElementsByTagName('source')->item(0)->nodeValue,
-                        $translationValue,
-                        $domain
-                    );
-                }
-                $translation = $translation->nextSibling;
-            }
-
-            if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-                $catalogue->addResource(new FileResource($resource));
-            }
-        }
-
-        libxml_use_internal_errors($internalErrors);
-
-        return $catalogue;
-    }
-}
diff --git a/vendor/symfony/translation/Loader/XliffFileLoader.php b/vendor/symfony/translation/Loader/XliffFileLoader.php
deleted file mode 100644
index 0e335db..0000000
--- a/vendor/symfony/translation/Loader/XliffFileLoader.php
+++ /dev/null
@@ -1,184 +0,0 @@
-<?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\Config\Util\XmlUtils;
-use Symfony\Component\Translation\MessageCatalogue;
-use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\FileResource;
-
-/**
- * XliffFileLoader loads translations from XLIFF files.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class XliffFileLoader implements LoaderInterface
-{
-    /**
-     * {@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));
-        }
-
-        list($xml, $encoding) = $this->parseFile($resource);
-        $xml->registerXPathNamespace('xliff', 'urn:oasis:names:tc:xliff:document:1.2');
-
-        $catalogue = new MessageCatalogue($locale);
-        foreach ($xml->xpath('//xliff:trans-unit') as $translation) {
-            $attributes = $translation->attributes();
-
-            if (!(isset($attributes['resname']) || isset($translation->source))) {
-                continue;
-            }
-
-            $source = isset($attributes['resname']) && $attributes['resname'] ? $attributes['resname'] : $translation->source;
-            // 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($translation->target) ? $translation->target : $source), $encoding);
-
-            $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'];
-                    }
-
-                    if (isset($noteAttributes['from'])) {
-                        $note['from'] = (string) $noteAttributes['from'];
-                    }
-
-                    $notes[] = $note;
-                }
-
-                $catalogue->setMetadata((string) $source, array('notes' => $notes), $domain);
-            }
-        }
-
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource));
-        }
-
-        return $catalogue;
-    }
-
-    /**
-     * Convert a UTF8 string to the specified encoding.
-     *
-     * @param string $content  String to decode
-     * @param string $encoding Target encoding
-     *
-     * @return string
-     */
-    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 $content;
-    }
-
-    /**
-     * Validates and parses the given file into a SimpleXMLElement.
-     *
-     * @param string $file
-     *
-     * @throws \RuntimeException
-     *
-     * @return \SimpleXMLElement
-     *
-     * @throws InvalidResourceException
-     */
-    private function parseFile($file)
-    {
-        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)) {
-            throw new InvalidResourceException(sprintf('Invalid resource provided: "%s"; Errors: %s', $file, implode("\n", $this->getXmlErrors($internalErrors))));
-        }
-
-        $dom->normalizeDocument();
-
-        libxml_clear_errors();
-        libxml_use_internal_errors($internalErrors);
-
-        return array(simplexml_import_dom($dom), strtoupper($dom->encoding));
-    }
-
-    /**
-     * Returns the XML errors of the internal XML parser.
-     *
-     * @param bool $internalErrors
-     *
-     * @return array An array of errors
-     */
-    private function getXmlErrors($internalErrors)
-    {
-        $errors = array();
-        foreach (libxml_get_errors() as $error) {
-            $errors[] = sprintf('[%s %s] %s (in %s - line %d, column %d)',
-                LIBXML_ERR_WARNING == $error->level ? 'WARNING' : 'ERROR',
-                $error->code,
-                trim($error->message),
-                $error->file ?: 'n/a',
-                $error->line,
-                $error->column
-            );
-        }
-
-        libxml_clear_errors();
-        libxml_use_internal_errors($internalErrors);
-
-        return $errors;
-    }
-}
diff --git a/vendor/symfony/translation/Loader/YamlFileLoader.php b/vendor/symfony/translation/Loader/YamlFileLoader.php
deleted file mode 100644
index a34cf05..0000000
--- a/vendor/symfony/translation/Loader/YamlFileLoader.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?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;
-use Symfony\Component\Yaml\Parser as YamlParser;
-use Symfony\Component\Yaml\Exception\ParseException;
-
-/**
- * YamlFileLoader loads translations from Yaml files.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class YamlFileLoader extends ArrayLoader
-{
-    private $yamlParser;
-
-    /**
-     * {@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));
-        }
-
-        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) {
-            $this->yamlParser = new YamlParser();
-        }
-
-        try {
-            $messages = $this->yamlParser->parse(file_get_contents($resource));
-        } catch (ParseException $e) {
-            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;
-    }
-}
diff --git a/vendor/symfony/translation/Loader/schema/dic/xliff-core/xliff-core-1.2-strict.xsd b/vendor/symfony/translation/Loader/schema/dic/xliff-core/xliff-core-1.2-strict.xsd
deleted file mode 100644
index 3ce2a8e..0000000
--- a/vendor/symfony/translation/Loader/schema/dic/xliff-core/xliff-core-1.2-strict.xsd
+++ /dev/null
@@ -1,2223 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-
-May-19-2004:
-- Changed the <choice> for ElemType_header, moving minOccurs="0" maxOccurs="unbounded" from its elements 
-to <choice> itself.
-- Added <choice> for ElemType_trans-unit to allow "any order" for <context-group>, <count-group>, <prop-group>, <note>, and
-<alt-trans>.
-
-Oct-2005
-- updated version info to 1.2
-- equiv-trans attribute to <trans-unit> element 
-- merged-trans attribute for <group> element
-- Add the <seg-source> element as optional in the <trans-unit> and <alt-trans> content models, at the same level as <source> 
-- Create a new value "seg" for the mtype attribute of the <mrk> element
-- Add mid as an optional attribute for the <alt-trans> element
-
-Nov-14-2005
-- Changed name attribute for <context-group> from required to optional
-- Added extension point at <xliff>
-
-Jan-9-2006
-- Added alttranstype type attribute to <alt-trans>, and values
-
-Jan-10-2006
-- Corrected error with overwritten purposeValueList
-- Corrected name="AttrType_Version",  attribute should have been "name"
-
--->
-<xsd:schema xmlns:xlf="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:oasis:names:tc:xliff:document:1.2" xml:lang="en">
-  <!-- Import for xml:lang and xml:space -->
-  <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-  <!-- Attributes Lists -->
-  <xsd:simpleType name="XTend">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="x-[^\s]+"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="context-typeValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'context-type'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="database">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a database content.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="element">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the content of an element within an XML document.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="elementtitle">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the name of an element within an XML document.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="linenumber">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the line number from the sourcefile (see context-type="sourcefile") where the &lt;source&gt; is found.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="numparams">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a the number of parameters contained within the &lt;source&gt;.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="paramnotes">
-        <xsd:annotation>
-          <xsd:documentation>Indicates notes pertaining to the parameters in the &lt;source&gt;.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="record">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the content of a record within a database.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="recordtitle">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the name of a record within a database.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="sourcefile">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the original source file in the case that multiple files are merged to form the original file from which the XLIFF file is created. This differs from the original &lt;file&gt; attribute in that this sourcefile is one of many that make up that file.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="count-typeValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'count-type'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="num-usages">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the count units are items that are used X times in a certain context; example: this is a reusable text unit which is used 42 times in other texts.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="repetition">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the count units are translation units existing already in the same document.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="total">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a total count.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="InlineDelimitersValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'ctype' when used other elements than &lt;ph&gt; or &lt;x&gt;.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="bold">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a run of bolded text.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="italic">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a run of text in italics.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="underlined">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a run of underlined text.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="link">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a run of hyper-text.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="InlinePlaceholdersValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'ctype' when used with &lt;ph&gt; or &lt;x&gt;.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="image">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a inline image.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="pb">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a page break.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="lb">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a line break.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="mime-typeValueList">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="(text|multipart|message|application|image|audio|video|model)(/.+)*"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="datatypeValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'datatype'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="asp">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Active Server Page data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="c">
-        <xsd:annotation>
-          <xsd:documentation>Indicates C source file data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="cdf">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Channel Definition Format (CDF) data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="cfm">
-        <xsd:annotation>
-          <xsd:documentation>Indicates ColdFusion data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="cpp">
-        <xsd:annotation>
-          <xsd:documentation>Indicates C++ source file data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="csharp">
-        <xsd:annotation>
-          <xsd:documentation>Indicates C-Sharp data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="cstring">
-        <xsd:annotation>
-          <xsd:documentation>Indicates strings from C, ASM, and driver files data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="csv">
-        <xsd:annotation>
-          <xsd:documentation>Indicates comma-separated values data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="database">
-        <xsd:annotation>
-          <xsd:documentation>Indicates database data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="documentfooter">
-        <xsd:annotation>
-          <xsd:documentation>Indicates portions of document that follows data and contains metadata.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="documentheader">
-        <xsd:annotation>
-          <xsd:documentation>Indicates portions of document that precedes data and contains metadata.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="filedialog">
-        <xsd:annotation>
-          <xsd:documentation>Indicates data from standard UI file operations dialogs (e.g., Open, Save, Save As, Export, Import).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="form">
-        <xsd:annotation>
-          <xsd:documentation>Indicates standard user input screen data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="html">
-        <xsd:annotation>
-          <xsd:documentation>Indicates HyperText Markup Language (HTML) data - document instance.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="htmlbody">
-        <xsd:annotation>
-          <xsd:documentation>Indicates content within an HTML document’s &lt;body&gt; element.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="ini">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Windows INI file data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="interleaf">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Interleaf data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="javaclass">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Java source file data (extension '.java').</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="javapropertyresourcebundle">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Java property resource bundle data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="javalistresourcebundle">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Java list resource bundle data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="javascript">
-        <xsd:annotation>
-          <xsd:documentation>Indicates JavaScript source file data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="jscript">
-        <xsd:annotation>
-          <xsd:documentation>Indicates JScript source file data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="layout">
-        <xsd:annotation>
-          <xsd:documentation>Indicates information relating to formatting.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="lisp">
-        <xsd:annotation>
-          <xsd:documentation>Indicates LISP source file data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="margin">
-        <xsd:annotation>
-          <xsd:documentation>Indicates information relating to margin formats.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="menufile">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a file containing menu.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="messagefile">
-        <xsd:annotation>
-          <xsd:documentation>Indicates numerically identified string table.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="mif">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Maker Interchange Format (MIF) data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="mimetype">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the datatype attribute value is a MIME Type value and is defined in the mime-type attribute.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="mo">
-        <xsd:annotation>
-          <xsd:documentation>Indicates GNU Machine Object data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="msglib">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Message Librarian strings created by Novell's Message Librarian Tool.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="pagefooter">
-        <xsd:annotation>
-          <xsd:documentation>Indicates information to be displayed at the bottom of each page of a document.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="pageheader">
-        <xsd:annotation>
-          <xsd:documentation>Indicates information to be displayed at the top of each page of a document.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="parameters">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a list of property values (e.g., settings within INI files or preferences dialog).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="pascal">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Pascal source file data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="php">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Hypertext Preprocessor data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="plaintext">
-        <xsd:annotation>
-          <xsd:documentation>Indicates plain text file (no formatting other than, possibly, wrapping).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="po">
-        <xsd:annotation>
-          <xsd:documentation>Indicates GNU Portable Object file.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="report">
-        <xsd:annotation>
-          <xsd:documentation>Indicates dynamically generated user defined document. e.g. Oracle Report, Crystal Report, etc.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="resources">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Windows .NET binary resources.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="resx">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Windows .NET Resources.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="rtf">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Rich Text Format (RTF) data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="sgml">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Standard Generalized Markup Language (SGML) data - document instance.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="sgmldtd">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Standard Generalized Markup Language (SGML) data - Document Type Definition (DTD).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="svg">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Scalable Vector Graphic (SVG) data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="vbscript">
-        <xsd:annotation>
-          <xsd:documentation>Indicates VisualBasic Script source file.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="warning">
-        <xsd:annotation>
-          <xsd:documentation>Indicates warning message.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="winres">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Windows (Win32) resources (i.e. resources extracted from an RC script, a message file, or a compiled file).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="xhtml">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Extensible HyperText Markup Language (XHTML) data - document instance.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="xml">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Extensible Markup Language (XML) data - document instance.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="xmldtd">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Extensible Markup Language (XML) data - Document Type Definition (DTD).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="xsl">
-        <xsd:annotation>
-          <xsd:documentation>Indicates Extensible Stylesheet Language (XSL) data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="xul">
-        <xsd:annotation>
-          <xsd:documentation>Indicates XUL elements.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="mtypeValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'mtype'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="abbrev">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the marked text is an abbreviation.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="abbreviated-form">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.8: A term resulting from the omission of any part of the full term while designating the same concept.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="abbreviation">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.8.1: An abbreviated form of a simple term resulting from the omission of some of its letters (e.g. 'adj.' for 'adjective').</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="acronym">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.8.4: An abbreviated form of a term made up of letters from the full form of a multiword term strung together into a sequence pronounced only syllabically (e.g. 'radar' for 'radio detecting and ranging').</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="appellation">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620: A proper-name term, such as the name of an agency or other proper entity.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="collocation">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.18.1: A recurrent word combination characterized by cohesion in that the components of the collocation must co-occur within an utterance or series of utterances, even though they do not necessarily have to maintain immediate proximity to one another.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="common-name">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.5: A synonym for an international scientific term that is used in general discourse in a given language.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="datetime">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the marked text is a date and/or time.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="equation">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.15: An expression used to represent a concept based on a statement that two mathematical expressions are, for instance, equal as identified by the equal sign (=), or assigned to one another by a similar sign.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="expanded-form">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.7: The complete representation of a term for which there is an abbreviated form.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="formula">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.14: Figures, symbols or the like used to express a concept briefly, such as a mathematical or chemical formula.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="head-term">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.1: The concept designation that has been chosen to head a terminological record.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="initialism">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.8.3: An abbreviated form of a term consisting of some of the initial letters of the words making up a multiword term or the term elements making up a compound term when these letters are pronounced individually (e.g. 'BSE' for 'bovine spongiform encephalopathy').</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="international-scientific-term">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.4: A term that is part of an international scientific nomenclature as adopted by an appropriate scientific body.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="internationalism">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.6: A term that has the same or nearly identical orthographic or phonemic form in many languages.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="logical-expression">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.16: An expression used to represent a concept based on mathematical or logical relations, such as statements of inequality, set relationships, Boolean operations, and the like.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="materials-management-unit">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.17: A unit to track object.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="name">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the marked text is a name.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="near-synonym">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.3: A term that represents the same or a very similar concept as another term in the same language, but for which interchangeability is limited to some contexts and inapplicable in others.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="part-number">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.17.2: A unique alphanumeric designation assigned to an object in a manufacturing system.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="phrase">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the marked text is a phrase.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="phraseological-unit">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.18: Any group of two or more words that form a unit, the meaning of which frequently cannot be deduced based on the combined sense of the words making up the phrase.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="protected">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the marked text should not be translated.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="romanized-form">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.12: A form of a term resulting from an operation whereby non-Latin writing systems are converted to the Latin alphabet.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="seg">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the marked text represents a segment.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="set-phrase">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.18.2: A fixed, lexicalized phrase.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="short-form">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.8.2: A variant of a multiword term that includes fewer words than the full form of the term (e.g. 'Group of Twenty-four' for 'Intergovernmental Group of Twenty-four on International Monetary Affairs').</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="sku">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.17.1: Stock keeping unit, an inventory item identified by a unique alphanumeric designation assigned to an object in an inventory control system.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="standard-text">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.19: A fixed chunk of recurring text.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="symbol">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.13: A designation of a concept by letters, numerals, pictograms or any combination thereof.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="synonym">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.2: Any term that represents the same or a very similar concept as the main entry term in a term entry.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="synonymous-phrase">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.18.3: Phraseological unit in a language that expresses the same semantic content as another phrase in that same language.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="term">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the marked text is a term.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="transcribed-form">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.11: A form of a term resulting from an operation whereby the characters of one writing system are represented by characters from another writing system, taking into account the pronunciation of the characters converted.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="transliterated-form">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.10: A form of a term resulting from an operation whereby the characters of an alphabetic writing system are represented by characters from another alphabetic writing system.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="truncated-term">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.8.5: An abbreviated form of a term resulting from the omission of one or more term elements or syllables (e.g. 'flu' for 'influenza').</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="variant">
-        <xsd:annotation>
-          <xsd:documentation>ISO-12620 2.1.9: One of the alternate forms of a term.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="restypeValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'restype'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="auto3state">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC AUTO3STATE control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="autocheckbox">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC AUTOCHECKBOX control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="autoradiobutton">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC AUTORADIOBUTTON control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="bedit">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC BEDIT control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="bitmap">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a bitmap, for example a BITMAP resource in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="button">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a button object, for example a BUTTON control Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="caption">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a caption, such as the caption of a dialog box.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="cell">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the cell in a table, for example the content of the &lt;td&gt; element in HTML.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="checkbox">
-        <xsd:annotation>
-          <xsd:documentation>Indicates check box object, for example a CHECKBOX control in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="checkboxmenuitem">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a menu item with an associated checkbox.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="checkedlistbox">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a list box, but with a check-box for each item.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="colorchooser">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a color selection dialog.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="combobox">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a combination of edit box and listbox object, for example a COMBOBOX control in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="comboboxexitem">
-        <xsd:annotation>
-          <xsd:documentation>Indicates an initialization entry of an extended combobox DLGINIT resource block. (code 0x1234).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="comboboxitem">
-        <xsd:annotation>
-          <xsd:documentation>Indicates an initialization entry of a combobox DLGINIT resource block (code 0x0403).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="component">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a UI base class element that cannot be represented by any other element.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="contextmenu">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a context menu.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="ctext">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC CTEXT control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="cursor">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a cursor, for example a CURSOR resource in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="datetimepicker">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a date/time picker.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="defpushbutton">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC DEFPUSHBUTTON control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="dialog">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a dialog box.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="dlginit">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC DLGINIT resource block.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="edit">
-        <xsd:annotation>
-          <xsd:documentation>Indicates an edit box object, for example an EDIT control in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="file">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a filename.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="filechooser">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a file dialog.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="fn">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a footnote.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="font">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a font name.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="footer">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a footer.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="frame">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a frame object.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="grid">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a XUL grid element.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="groupbox">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a groupbox object, for example a GROUPBOX control in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="header">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a header item.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="heading">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a heading, such has the content of &lt;h1&gt;, &lt;h2&gt;, etc. in HTML.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="hedit">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC HEDIT control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="hscrollbar">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a horizontal scrollbar.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="icon">
-        <xsd:annotation>
-          <xsd:documentation>Indicates an icon, for example an ICON resource in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="iedit">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC IEDIT control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="keywords">
-        <xsd:annotation>
-          <xsd:documentation>Indicates keyword list, such as the content of the Keywords meta-data in HTML, or a K footnote in WinHelp RTF.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="label">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a label object.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="linklabel">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a label that is also a HTML link (not necessarily a URL).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="list">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a list (a group of list-items, for example an &lt;ol&gt; or &lt;ul&gt; element in HTML).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="listbox">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a listbox object, for example an LISTBOX control in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="listitem">
-        <xsd:annotation>
-          <xsd:documentation>Indicates an list item (an entry in a list).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="ltext">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC LTEXT control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="menu">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a menu (a group of menu-items).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="menubar">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a toolbar containing one or more tope level menus.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="menuitem">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a menu item (an entry in a menu).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="menuseparator">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a XUL menuseparator element.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="message">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a message, for example an entry in a MESSAGETABLE resource in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="monthcalendar">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a calendar control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="numericupdown">
-        <xsd:annotation>
-          <xsd:documentation>Indicates an edit box beside a spin control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="panel">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a catch all for rectangular areas.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="popupmenu">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a standalone menu not necessarily associated with a menubar.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="pushbox">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a pushbox object, for example a PUSHBOX control in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="pushbutton">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC PUSHBUTTON control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="radio">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a radio button object.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="radiobuttonmenuitem">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a menuitem with associated radio button.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="rcdata">
-        <xsd:annotation>
-          <xsd:documentation>Indicates raw data resources for an application.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="row">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a row in a table.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="rtext">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC RTEXT control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="scrollpane">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a user navigable container used to show a portion of a document.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="separator">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a generic divider object (e.g. menu group separator).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="shortcut">
-        <xsd:annotation>
-          <xsd:documentation>Windows accelerators, shortcuts in resource or property files.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="spinner">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a UI control to indicate process activity but not progress.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="splitter">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a splitter bar.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="state3">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC STATE3 control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="statusbar">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a window for providing feedback to the users, like 'read-only', etc.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="string">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a string, for example an entry in a STRINGTABLE resource in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="tabcontrol">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a layers of controls with a tab to select layers.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="table">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a display and edits regular two-dimensional tables of cells.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="textbox">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a XUL textbox element.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="togglebutton">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a UI button that can be toggled to on or off state.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="toolbar">
-        <xsd:annotation>
-          <xsd:documentation>Indicates an array of controls, usually buttons.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="tooltip">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a pop up tool tip text.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="trackbar">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a bar with a pointer indicating a position within a certain range.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="tree">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a control that displays a set of hierarchical data.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="uri">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a URI (URN or URL).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="userbutton">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a Windows RC USERBUTTON control.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="usercontrol">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a user-defined control like CONTROL control in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="var">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the text of a variable.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="versioninfo">
-        <xsd:annotation>
-          <xsd:documentation>Indicates version information about a resource like VERSIONINFO in Windows.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="vscrollbar">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a vertical scrollbar.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="window">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a graphical window.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="size-unitValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'size-unit'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="byte">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in 8-bit bytes.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="char">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in Unicode characters.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="col">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in columns. Used for HTML text area.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="cm">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in centimeters.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="dlgunit">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in dialog units, as defined in Windows resources.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="em">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in 'font-size' units (as defined in CSS).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="ex">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in 'x-height' units (as defined in CSS).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="glyph">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in glyphs. A glyph is considered to be one or more combined Unicode characters that represent a single displayable text character. Sometimes referred to as a 'grapheme cluster'</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="in">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in inches.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="mm">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in millimeters.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="percent">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in percentage.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="pixel">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in pixels.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="point">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in point.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="row">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a size in rows. Used for HTML text area.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="stateValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'state'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="final">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the terminating state.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="needs-adaptation">
-        <xsd:annotation>
-          <xsd:documentation>Indicates only non-textual information needs adaptation.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="needs-l10n">
-        <xsd:annotation>
-          <xsd:documentation>Indicates both text and non-textual information needs adaptation.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="needs-review-adaptation">
-        <xsd:annotation>
-          <xsd:documentation>Indicates only non-textual information needs review.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="needs-review-l10n">
-        <xsd:annotation>
-          <xsd:documentation>Indicates both text and non-textual information needs review.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="needs-review-translation">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that only the text of the item needs to be reviewed.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="needs-translation">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the item needs to be translated.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="new">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the item is new. For example, translation units that were not in a previous version of the document.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="signed-off">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that changes are reviewed and approved.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="translated">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the item has been translated.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="state-qualifierValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'state-qualifier'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="exact-match">
-        <xsd:annotation>
-          <xsd:documentation>Indicates an exact match. An exact match occurs when a source text of a segment is exactly the same as the source text of a segment that was translated previously.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="fuzzy-match">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a fuzzy match. A fuzzy match occurs when a source text of a segment is very similar to the source text of a segment that was translated previously (e.g. when the difference is casing, a few changed words, white-space discripancy, etc.).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="id-match">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a match based on matching IDs (in addition to matching text).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="leveraged-glossary">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a translation derived from a glossary.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="leveraged-inherited">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a translation derived from existing translation.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="leveraged-mt">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a translation derived from machine translation.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="leveraged-repository">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a translation derived from a translation repository.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="leveraged-tm">
-        <xsd:annotation>
-          <xsd:documentation>Indicates a translation derived from a translation memory.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="mt-suggestion">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the translation is suggested by machine translation.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="rejected-grammar">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the item has been rejected because of incorrect grammar.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="rejected-inaccurate">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the item has been rejected because it is incorrect.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="rejected-length">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the item has been rejected because it is too long or too short.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="rejected-spelling">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the item has been rejected because of incorrect spelling.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="tm-suggestion">
-        <xsd:annotation>
-          <xsd:documentation>Indicates the translation is suggested by translation memory.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="unitValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'unit'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="word">
-        <xsd:annotation>
-          <xsd:documentation>Refers to words.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="page">
-        <xsd:annotation>
-          <xsd:documentation>Refers to pages.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="trans-unit">
-        <xsd:annotation>
-          <xsd:documentation>Refers to &lt;trans-unit&gt; elements.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="bin-unit">
-        <xsd:annotation>
-          <xsd:documentation>Refers to &lt;bin-unit&gt; elements.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="glyph">
-        <xsd:annotation>
-          <xsd:documentation>Refers to glyphs.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="item">
-        <xsd:annotation>
-          <xsd:documentation>Refers to &lt;trans-unit&gt; and/or &lt;bin-unit&gt; elements.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="instance">
-        <xsd:annotation>
-          <xsd:documentation>Refers to the occurrences of instances defined by the count-type value.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="character">
-        <xsd:annotation>
-          <xsd:documentation>Refers to characters.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="line">
-        <xsd:annotation>
-          <xsd:documentation>Refers to lines.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="sentence">
-        <xsd:annotation>
-          <xsd:documentation>Refers to sentences.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="paragraph">
-        <xsd:annotation>
-          <xsd:documentation>Refers to paragraphs.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="segment">
-        <xsd:annotation>
-          <xsd:documentation>Refers to segments.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="placeable">
-        <xsd:annotation>
-          <xsd:documentation>Refers to placeables (inline elements).</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="priorityValueList">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'priority'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:positiveInteger">
-      <xsd:enumeration value="1">
-        <xsd:annotation>
-          <xsd:documentation>Highest priority.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="2">
-        <xsd:annotation>
-          <xsd:documentation>High priority.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="3">
-        <xsd:annotation>
-          <xsd:documentation>High priority, but not as important as 2.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="4">
-        <xsd:annotation>
-          <xsd:documentation>High priority, but not as important as 3.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="5">
-        <xsd:annotation>
-          <xsd:documentation>Medium priority, but more important than 6.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="6">
-        <xsd:annotation>
-          <xsd:documentation>Medium priority, but less important than 5.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="7">
-        <xsd:annotation>
-          <xsd:documentation>Low priority, but more important than 8.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="8">
-        <xsd:annotation>
-          <xsd:documentation>Low priority, but more important than 9.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="9">
-        <xsd:annotation>
-          <xsd:documentation>Low priority.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="10">
-        <xsd:annotation>
-          <xsd:documentation>Lowest priority.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="reformatValueYesNo">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="yes">
-        <xsd:annotation>
-          <xsd:documentation>This value indicates that all properties can be reformatted. This value must be used alone.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="no">
-        <xsd:annotation>
-          <xsd:documentation>This value indicates that no properties should be reformatted. This value must be used alone.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="reformatValueList">
-    <xsd:list>
-      <xsd:simpleType>
-        <xsd:union memberTypes="xlf:XTend">
-          <xsd:simpleType>
-            <xsd:restriction base="xsd:string">
-              <xsd:enumeration value="coord">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that all information in the coord attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="coord-x">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that the x information in the coord attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="coord-y">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that the y information in the coord attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="coord-cx">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that the cx information in the coord attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="coord-cy">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that the cy information in the coord attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="font">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that all the information in the font attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="font-name">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that the name information in the font attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="font-size">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that the size information in the font attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="font-weight">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that the weight information in the font attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="css-style">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that the information in the css-style attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="style">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that the information in the style attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-              <xsd:enumeration value="ex-style">
-                <xsd:annotation>
-                  <xsd:documentation>This value indicates that the information in the exstyle attribute can be modified.</xsd:documentation>
-                </xsd:annotation>
-              </xsd:enumeration>
-            </xsd:restriction>
-          </xsd:simpleType>
-        </xsd:union>
-      </xsd:simpleType>
-    </xsd:list>
-  </xsd:simpleType>
-  <xsd:simpleType name="purposeValueList">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="information">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the context is informational in nature, specifying for example, how a term should be translated. Thus, should be displayed to anyone editing the XLIFF document.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="location">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the context-group is used to specify where the term was found in the translatable source. Thus, it is not displayed.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="match">
-        <xsd:annotation>
-          <xsd:documentation>Indicates that the context information should be used during translation memory lookups. Thus, it is not displayed.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="alttranstypeValueList">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="proposal">
-        <xsd:annotation>
-          <xsd:documentation>Represents a translation proposal from a translation memory or other resource.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="previous-version">
-        <xsd:annotation>
-          <xsd:documentation>Represents a previous version of the target element.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="rejected">
-        <xsd:annotation>
-          <xsd:documentation>Represents a rejected version of the target element.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="reference">
-        <xsd:annotation>
-          <xsd:documentation>Represents a translation to be used for reference purposes only, for example from a related product or a different language.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-      <xsd:enumeration value="accepted">
-        <xsd:annotation>
-          <xsd:documentation>Represents a proposed translation that was used for the translation of the trans-unit, possibly modified.</xsd:documentation>
-        </xsd:annotation>
-      </xsd:enumeration>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- Other Types -->
-  <xsd:complexType name="ElemType_ExternalReference">
-    <xsd:choice>
-      <xsd:element ref="xlf:internal-file"/>
-      <xsd:element ref="xlf:external-file"/>
-    </xsd:choice>
-  </xsd:complexType>
-  <xsd:simpleType name="AttrType_purpose">
-    <xsd:list>
-      <xsd:simpleType>
-        <xsd:union memberTypes="xlf:purposeValueList xlf:XTend"/>
-      </xsd:simpleType>
-    </xsd:list>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_datatype">
-    <xsd:union memberTypes="xlf:datatypeValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_restype">
-    <xsd:union memberTypes="xlf:restypeValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_alttranstype">
-    <xsd:union memberTypes="xlf:alttranstypeValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_context-type">
-    <xsd:union memberTypes="xlf:context-typeValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_state">
-    <xsd:union memberTypes="xlf:stateValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_state-qualifier">
-    <xsd:union memberTypes="xlf:state-qualifierValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_count-type">
-    <xsd:union memberTypes="xlf:restypeValueList xlf:count-typeValueList xlf:datatypeValueList xlf:stateValueList xlf:state-qualifierValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_InlineDelimiters">
-    <xsd:union memberTypes="xlf:InlineDelimitersValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_InlinePlaceholders">
-    <xsd:union memberTypes="xlf:InlinePlaceholdersValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_size-unit">
-    <xsd:union memberTypes="xlf:size-unitValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_mtype">
-    <xsd:union memberTypes="xlf:mtypeValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_unit">
-    <xsd:union memberTypes="xlf:unitValueList xlf:XTend"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_priority">
-    <xsd:union memberTypes="xlf:priorityValueList"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_reformat">
-    <xsd:union memberTypes="xlf:reformatValueYesNo xlf:reformatValueList"/>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_YesNo">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="yes"/>
-      <xsd:enumeration value="no"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_Position">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="open"/>
-      <xsd:enumeration value="close"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_assoc">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="preceding"/>
-      <xsd:enumeration value="following"/>
-      <xsd:enumeration value="both"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_annotates">
-    <xsd:restriction base="xsd:NMTOKEN">
-      <xsd:enumeration value="source"/>
-      <xsd:enumeration value="target"/>
-      <xsd:enumeration value="general"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_Coordinates">
-    <xsd:annotation>
-      <xsd:documentation>Values for the attribute 'coord'.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="(-?\d+|#);(-?\d+|#);(-?\d+|#);(-?\d+|#)"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <xsd:simpleType name="AttrType_Version">
-    <xsd:annotation>
-      <xsd:documentation>Version values: 1.0 and 1.1 are allowed for backward compatibility.</xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="1.2"/>
-      <xsd:enumeration value="1.1"/>
-      <xsd:enumeration value="1.0"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-  <!-- Groups -->
-  <xsd:group name="ElemGroup_TextContent">
-    <xsd:choice>
-      <xsd:element ref="xlf:g"/>
-      <xsd:element ref="xlf:bpt"/>
-      <xsd:element ref="xlf:ept"/>
-      <xsd:element ref="xlf:ph"/>
-      <xsd:element ref="xlf:it"/>
-      <xsd:element ref="xlf:mrk"/>
-      <xsd:element ref="xlf:x"/>
-      <xsd:element ref="xlf:bx"/>
-      <xsd:element ref="xlf:ex"/>
-    </xsd:choice>
-  </xsd:group>
-  <xsd:attributeGroup name="AttrGroup_TextContent">
-    <xsd:attribute name="id" type="xsd:string" use="required"/>
-    <xsd:attribute name="xid" type="xsd:string" use="optional"/>
-    <xsd:attribute name="equiv-text" type="xsd:string" use="optional"/>
-    <xsd:anyAttribute namespace="##other" processContents="strict"/>
-  </xsd:attributeGroup>
-  <!-- XLIFF Structure -->
-  <xsd:element name="xliff">
-    <xsd:complexType>
-      <xsd:sequence maxOccurs="unbounded">
-        <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
-        <xsd:element ref="xlf:file"/>
-      </xsd:sequence>
-      <xsd:attribute name="version" type="xlf:AttrType_Version" use="required"/>
-      <xsd:attribute ref="xml:lang" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="file">
-    <xsd:complexType>
-      <xsd:sequence>
-        <xsd:element minOccurs="0" ref="xlf:header"/>
-        <xsd:element ref="xlf:body"/>
-      </xsd:sequence>
-      <xsd:attribute name="original" type="xsd:string" use="required"/>
-      <xsd:attribute name="source-language" type="xsd:language" use="required"/>
-      <xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="required"/>
-      <xsd:attribute name="tool-id" type="xsd:string" use="optional"/>
-      <xsd:attribute name="date" type="xsd:dateTime" use="optional"/>
-      <xsd:attribute ref="xml:space" use="optional"/>
-      <xsd:attribute name="category" type="xsd:string" use="optional"/>
-      <xsd:attribute name="target-language" type="xsd:language" use="optional"/>
-      <xsd:attribute name="product-name" type="xsd:string" use="optional"/>
-      <xsd:attribute name="product-version" type="xsd:string" use="optional"/>
-      <xsd:attribute name="build-num" type="xsd:string" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-    <xsd:unique name="U_group_id">
-      <xsd:selector xpath=".//xlf:group"/>
-      <xsd:field xpath="@id"/>
-    </xsd:unique>
-    <xsd:key name="K_unit_id">
-      <xsd:selector xpath=".//xlf:trans-unit|.//xlf:bin-unit"/>
-      <xsd:field xpath="@id"/>
-    </xsd:key>
-    <xsd:keyref name="KR_unit_id" refer="xlf:K_unit_id">
-      <xsd:selector xpath=".//bpt|.//ept|.//it|.//ph|.//g|.//x|.//bx|.//ex|.//sub"/>
-      <xsd:field xpath="@xid"/>
-    </xsd:keyref>
-    <xsd:key name="K_tool-id">
-      <xsd:selector xpath="xlf:header/xlf:tool"/>
-      <xsd:field xpath="@tool-id"/>
-    </xsd:key>
-    <xsd:keyref name="KR_file_tool-id" refer="xlf:K_tool-id">
-      <xsd:selector xpath="."/>
-      <xsd:field xpath="@tool-id"/>
-    </xsd:keyref>
-    <xsd:keyref name="KR_phase_tool-id" refer="xlf:K_tool-id">
-      <xsd:selector xpath="xlf:header/xlf:phase-group/xlf:phase"/>
-      <xsd:field xpath="@tool-id"/>
-    </xsd:keyref>
-    <xsd:keyref name="KR_alt-trans_tool-id" refer="xlf:K_tool-id">
-      <xsd:selector xpath=".//xlf:trans-unit/xlf:alt-trans"/>
-      <xsd:field xpath="@tool-id"/>
-    </xsd:keyref>
-    <xsd:key name="K_count-group_name">
-      <xsd:selector xpath=".//xlf:count-group"/>
-      <xsd:field xpath="@name"/>
-    </xsd:key>
-    <xsd:unique name="U_context-group_name">
-      <xsd:selector xpath=".//xlf:context-group"/>
-      <xsd:field xpath="@name"/>
-    </xsd:unique>
-    <xsd:key name="K_phase-name">
-      <xsd:selector xpath="xlf:header/xlf:phase-group/xlf:phase"/>
-      <xsd:field xpath="@phase-name"/>
-    </xsd:key>
-    <xsd:keyref name="KR_phase-name" refer="xlf:K_phase-name">
-      <xsd:selector xpath=".//xlf:count|.//xlf:trans-unit|.//xlf:target|.//bin-unit|.//bin-target"/>
-      <xsd:field xpath="@phase-name"/>
-    </xsd:keyref>
-    <xsd:unique name="U_uid">
-      <xsd:selector xpath=".//xlf:external-file"/>
-      <xsd:field xpath="@uid"/>
-    </xsd:unique>
-  </xsd:element>
-  <xsd:element name="header">
-    <xsd:complexType>
-      <xsd:sequence>
-        <xsd:element minOccurs="0" name="skl" type="xlf:ElemType_ExternalReference"/>
-        <xsd:element minOccurs="0" ref="xlf:phase-group"/>
-        <xsd:choice maxOccurs="unbounded" minOccurs="0">
-          <xsd:element name="glossary" type="xlf:ElemType_ExternalReference"/>
-          <xsd:element name="reference" type="xlf:ElemType_ExternalReference"/>
-          <xsd:element ref="xlf:count-group"/>
-          <xsd:element ref="xlf:note"/>
-          <xsd:element ref="xlf:tool"/>
-        </xsd:choice>
-        <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
-      </xsd:sequence>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="internal-file">
-    <xsd:complexType>
-      <xsd:simpleContent>
-        <xsd:extension base="xsd:string">
-          <xsd:attribute name="form" type="xsd:string"/>
-          <xsd:attribute name="crc" type="xsd:NMTOKEN"/>
-        </xsd:extension>
-      </xsd:simpleContent>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="external-file">
-    <xsd:complexType>
-      <xsd:attribute name="href" type="xsd:string" use="required"/>
-      <xsd:attribute name="crc" type="xsd:NMTOKEN"/>
-      <xsd:attribute name="uid" type="xsd:NMTOKEN"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="note">
-    <xsd:complexType>
-      <xsd:simpleContent>
-        <xsd:extension base="xsd:string">
-          <xsd:attribute ref="xml:lang" use="optional"/>
-          <xsd:attribute default="1" name="priority" type="xlf:AttrType_priority" use="optional"/>
-          <xsd:attribute name="from" type="xsd:string" use="optional"/>
-          <xsd:attribute default="general" name="annotates" type="xlf:AttrType_annotates" use="optional"/>
-        </xsd:extension>
-      </xsd:simpleContent>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="phase-group">
-    <xsd:complexType>
-      <xsd:sequence maxOccurs="unbounded">
-        <xsd:element ref="xlf:phase"/>
-      </xsd:sequence>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="phase">
-    <xsd:complexType>
-      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
-        <xsd:element ref="xlf:note"/>
-      </xsd:sequence>
-      <xsd:attribute name="phase-name" type="xsd:string" use="required"/>
-      <xsd:attribute name="process-name" type="xsd:string" use="required"/>
-      <xsd:attribute name="company-name" type="xsd:string" use="optional"/>
-      <xsd:attribute name="tool-id" type="xsd:string" use="optional"/>
-      <xsd:attribute name="date" type="xsd:dateTime" use="optional"/>
-      <xsd:attribute name="job-id" type="xsd:string" use="optional"/>
-      <xsd:attribute name="contact-name" type="xsd:string" use="optional"/>
-      <xsd:attribute name="contact-email" type="xsd:string" use="optional"/>
-      <xsd:attribute name="contact-phone" type="xsd:string" use="optional"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="count-group">
-    <xsd:complexType>
-      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
-        <xsd:element ref="xlf:count"/>
-      </xsd:sequence>
-      <xsd:attribute name="name" type="xsd:string" use="required"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="count">
-    <xsd:complexType>
-      <xsd:simpleContent>
-        <xsd:extension base="xsd:string">
-          <xsd:attribute name="count-type" type="xlf:AttrType_count-type" use="optional"/>
-          <xsd:attribute name="phase-name" type="xsd:string" use="optional"/>
-          <xsd:attribute default="word" name="unit" type="xlf:AttrType_unit" use="optional"/>
-        </xsd:extension>
-      </xsd:simpleContent>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="context-group">
-    <xsd:complexType>
-      <xsd:sequence maxOccurs="unbounded">
-        <xsd:element ref="xlf:context"/>
-      </xsd:sequence>
-      <xsd:attribute name="name" type="xsd:string" use="optional"/>
-      <xsd:attribute name="crc" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="purpose" type="xlf:AttrType_purpose" use="optional"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="context">
-    <xsd:complexType>
-      <xsd:simpleContent>
-        <xsd:extension base="xsd:string">
-          <xsd:attribute name="context-type" type="xlf:AttrType_context-type" use="required"/>
-          <xsd:attribute default="no" name="match-mandatory" type="xlf:AttrType_YesNo" use="optional"/>
-          <xsd:attribute name="crc" type="xsd:NMTOKEN" use="optional"/>
-        </xsd:extension>
-      </xsd:simpleContent>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="tool">
-    <xsd:complexType mixed="true">
-      <xsd:sequence>
-        <xsd:any namespace="##any" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
-      </xsd:sequence>
-      <xsd:attribute name="tool-id" type="xsd:string" use="required"/>
-      <xsd:attribute name="tool-name" type="xsd:string" use="required"/>
-      <xsd:attribute name="tool-version" type="xsd:string" use="optional"/>
-      <xsd:attribute name="tool-company" type="xsd:string" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="body">
-    <xsd:complexType>
-      <xsd:choice maxOccurs="unbounded" minOccurs="0">
-        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:group"/>
-        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:trans-unit"/>
-        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:bin-unit"/>
-      </xsd:choice>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="group">
-    <xsd:complexType>
-      <xsd:sequence>
-        <xsd:sequence>
-          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:context-group"/>
-          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:count-group"/>
-          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:note"/>
-          <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
-        </xsd:sequence>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:group"/>
-          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:trans-unit"/>
-          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:bin-unit"/>
-        </xsd:choice>
-      </xsd:sequence>
-      <xsd:attribute name="id" type="xsd:string" use="optional"/>
-      <xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
-      <xsd:attribute default="default" ref="xml:space" use="optional"/>
-      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
-      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
-      <xsd:attribute name="extradata" type="xsd:string" use="optional"/>
-      <xsd:attribute name="extype" type="xsd:string" use="optional"/>
-      <xsd:attribute name="help-id" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="menu" type="xsd:string" use="optional"/>
-      <xsd:attribute name="menu-option" type="xsd:string" use="optional"/>
-      <xsd:attribute name="menu-name" type="xsd:string" use="optional"/>
-      <xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
-      <xsd:attribute name="font" type="xsd:string" use="optional"/>
-      <xsd:attribute name="css-style" type="xsd:string" use="optional"/>
-      <xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute default="yes" name="translate" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:attribute default="yes" name="reformat" type="xlf:AttrType_reformat" use="optional"/>
-      <xsd:attribute default="pixel" name="size-unit" type="xlf:AttrType_size-unit" use="optional"/>
-      <xsd:attribute name="maxwidth" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="minwidth" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="maxheight" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="minheight" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="maxbytes" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="minbytes" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="charclass" type="xsd:string" use="optional"/>
-      <xsd:attribute default="no" name="merged-trans" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="trans-unit">
-    <xsd:complexType>
-      <xsd:sequence>
-        <xsd:element ref="xlf:source"/>
-        <xsd:element minOccurs="0" ref="xlf:seg-source"/>
-        <xsd:element minOccurs="0" ref="xlf:target"/>
-        <xsd:choice maxOccurs="unbounded" minOccurs="0">
-          <xsd:element ref="xlf:context-group"/>
-          <xsd:element ref="xlf:count-group"/>
-          <xsd:element ref="xlf:note"/>
-          <xsd:element ref="xlf:alt-trans"/>
-        </xsd:choice>
-        <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
-      </xsd:sequence>
-      <xsd:attribute name="id" type="xsd:string" use="required"/>
-      <xsd:attribute name="approved" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:attribute default="yes" name="translate" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:attribute default="yes" name="reformat" type="xlf:AttrType_reformat" use="optional"/>
-      <xsd:attribute default="default" ref="xml:space" use="optional"/>
-      <xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
-      <xsd:attribute name="phase-name" type="xsd:string" use="optional"/>
-      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
-      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
-      <xsd:attribute name="extradata" type="xsd:string" use="optional"/>
-      <xsd:attribute name="extype" type="xsd:string" use="optional"/>
-      <xsd:attribute name="help-id" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="menu" type="xsd:string" use="optional"/>
-      <xsd:attribute name="menu-option" type="xsd:string" use="optional"/>
-      <xsd:attribute name="menu-name" type="xsd:string" use="optional"/>
-      <xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
-      <xsd:attribute name="font" type="xsd:string" use="optional"/>
-      <xsd:attribute name="css-style" type="xsd:string" use="optional"/>
-      <xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute default="pixel" name="size-unit" type="xlf:AttrType_size-unit" use="optional"/>
-      <xsd:attribute name="maxwidth" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="minwidth" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="maxheight" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="minheight" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="maxbytes" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="minbytes" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="charclass" type="xsd:string" use="optional"/>
-      <xsd:attribute default="yes" name="merged-trans" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-    <xsd:unique name="U_tu_segsrc_mid">
-      <xsd:selector xpath="./xlf:seg-source/xlf:mrk"/>
-      <xsd:field xpath="@mid"/>
-    </xsd:unique>
-    <xsd:keyref name="KR_tu_segsrc_mid" refer="xlf:U_tu_segsrc_mid">
-      <xsd:selector xpath="./xlf:target/xlf:mrk|./xlf:alt-trans"/>
-      <xsd:field xpath="@mid"/>
-    </xsd:keyref>
-  </xsd:element>
-  <xsd:element name="source">
-    <xsd:complexType mixed="true">
-      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
-      <xsd:attribute ref="xml:lang" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-    <xsd:unique name="U_source_bpt_rid">
-      <xsd:selector xpath=".//xlf:bpt"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:unique>
-    <xsd:keyref name="KR_source_ept_rid" refer="xlf:U_source_bpt_rid">
-      <xsd:selector xpath=".//xlf:ept"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:keyref>
-    <xsd:unique name="U_source_bx_rid">
-      <xsd:selector xpath=".//xlf:bx"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:unique>
-    <xsd:keyref name="KR_source_ex_rid" refer="xlf:U_source_bx_rid">
-      <xsd:selector xpath=".//xlf:ex"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:keyref>
-  </xsd:element>
-  <xsd:element name="seg-source">
-    <xsd:complexType mixed="true">
-      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
-      <xsd:attribute ref="xml:lang" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-    <xsd:unique name="U_segsrc_bpt_rid">
-      <xsd:selector xpath=".//xlf:bpt"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:unique>
-    <xsd:keyref name="KR_segsrc_ept_rid" refer="xlf:U_segsrc_bpt_rid">
-      <xsd:selector xpath=".//xlf:ept"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:keyref>
-    <xsd:unique name="U_segsrc_bx_rid">
-      <xsd:selector xpath=".//xlf:bx"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:unique>
-    <xsd:keyref name="KR_segsrc_ex_rid" refer="xlf:U_segsrc_bx_rid">
-      <xsd:selector xpath=".//xlf:ex"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:keyref>
-  </xsd:element>
-  <xsd:element name="target">
-    <xsd:complexType mixed="true">
-      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
-      <xsd:attribute name="state" type="xlf:AttrType_state" use="optional"/>
-      <xsd:attribute name="state-qualifier" type="xlf:AttrType_state-qualifier" use="optional"/>
-      <xsd:attribute name="phase-name" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute ref="xml:lang" use="optional"/>
-      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
-      <xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
-      <xsd:attribute name="font" type="xsd:string" use="optional"/>
-      <xsd:attribute name="css-style" type="xsd:string" use="optional"/>
-      <xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute default="yes" name="equiv-trans" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-    <xsd:unique name="U_target_bpt_rid">
-      <xsd:selector xpath=".//xlf:bpt"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:unique>
-    <xsd:keyref name="KR_target_ept_rid" refer="xlf:U_target_bpt_rid">
-      <xsd:selector xpath=".//xlf:ept"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:keyref>
-    <xsd:unique name="U_target_bx_rid">
-      <xsd:selector xpath=".//xlf:bx"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:unique>
-    <xsd:keyref name="KR_target_ex_rid" refer="xlf:U_target_bx_rid">
-      <xsd:selector xpath=".//xlf:ex"/>
-      <xsd:field xpath="@rid"/>
-    </xsd:keyref>
-  </xsd:element>
-  <xsd:element name="alt-trans">
-    <xsd:complexType>
-      <xsd:sequence>
-        <xsd:element minOccurs="0" ref="xlf:source"/>
-        <xsd:element minOccurs="0" ref="xlf:seg-source"/>
-        <xsd:element maxOccurs="1" ref="xlf:target"/>
-        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:context-group"/>
-        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:note"/>
-        <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
-      </xsd:sequence>
-      <xsd:attribute name="match-quality" type="xsd:string" use="optional"/>
-      <xsd:attribute name="tool-id" type="xsd:string" use="optional"/>
-      <xsd:attribute name="crc" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute ref="xml:lang" use="optional"/>
-      <xsd:attribute name="origin" type="xsd:string" use="optional"/>
-      <xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
-      <xsd:attribute default="default" ref="xml:space" use="optional"/>
-      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
-      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
-      <xsd:attribute name="extradata" type="xsd:string" use="optional"/>
-      <xsd:attribute name="extype" type="xsd:string" use="optional"/>
-      <xsd:attribute name="help-id" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="menu" type="xsd:string" use="optional"/>
-      <xsd:attribute name="menu-option" type="xsd:string" use="optional"/>
-      <xsd:attribute name="menu-name" type="xsd:string" use="optional"/>
-      <xsd:attribute name="mid" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
-      <xsd:attribute name="font" type="xsd:string" use="optional"/>
-      <xsd:attribute name="css-style" type="xsd:string" use="optional"/>
-      <xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="phase-name" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute default="proposal" name="alttranstype" type="xlf:AttrType_alttranstype" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-    <xsd:unique name="U_at_segsrc_mid">
-      <xsd:selector xpath="./xlf:seg-source/xlf:mrk"/>
-      <xsd:field xpath="@mid"/>
-    </xsd:unique>
-    <xsd:keyref name="KR_at_segsrc_mid" refer="xlf:U_at_segsrc_mid">
-      <xsd:selector xpath="./xlf:target/xlf:mrk"/>
-      <xsd:field xpath="@mid"/>
-    </xsd:keyref>
-  </xsd:element>
-  <xsd:element name="bin-unit">
-    <xsd:complexType>
-      <xsd:sequence>
-        <xsd:element ref="xlf:bin-source"/>
-        <xsd:element minOccurs="0" ref="xlf:bin-target"/>
-        <xsd:choice maxOccurs="unbounded" minOccurs="0">
-          <xsd:element ref="xlf:context-group"/>
-          <xsd:element ref="xlf:count-group"/>
-          <xsd:element ref="xlf:note"/>
-          <xsd:element ref="xlf:trans-unit"/>
-        </xsd:choice>
-        <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="strict"/>
-      </xsd:sequence>
-      <xsd:attribute name="id" type="xsd:string" use="required"/>
-      <xsd:attribute name="mime-type" type="xlf:mime-typeValueList" use="required"/>
-      <xsd:attribute name="approved" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:attribute default="yes" name="translate" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:attribute default="yes" name="reformat" type="xlf:AttrType_reformat" use="optional"/>
-      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
-      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
-      <xsd:attribute name="phase-name" type="xsd:string" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="bin-source">
-    <xsd:complexType>
-      <xsd:choice>
-        <xsd:element ref="xlf:internal-file"/>
-        <xsd:element ref="xlf:external-file"/>
-      </xsd:choice>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="bin-target">
-    <xsd:complexType>
-      <xsd:choice>
-        <xsd:element ref="xlf:internal-file"/>
-        <xsd:element ref="xlf:external-file"/>
-      </xsd:choice>
-      <xsd:attribute name="mime-type" type="xlf:mime-typeValueList" use="optional"/>
-      <xsd:attribute name="state" type="xlf:AttrType_state" use="optional"/>
-      <xsd:attribute name="state-qualifier" type="xlf:AttrType_state-qualifier" use="optional"/>
-      <xsd:attribute name="phase-name" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
-      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-  </xsd:element>
-  <!-- Element for inline codes -->
-  <xsd:element name="g">
-    <xsd:complexType mixed="true">
-      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
-      <xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
-      <xsd:attribute default="yes" name="clone" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="x">
-    <xsd:complexType>
-      <xsd:attribute name="ctype" type="xlf:AttrType_InlinePlaceholders" use="optional"/>
-      <xsd:attribute default="yes" name="clone" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="bx">
-    <xsd:complexType>
-      <xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
-      <xsd:attribute default="yes" name="clone" type="xlf:AttrType_YesNo" use="optional"/>
-      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="ex">
-    <xsd:complexType>
-      <xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="ph">
-    <xsd:complexType mixed="true">
-      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
-        <xsd:element ref="xlf:sub"/>
-      </xsd:sequence>
-      <xsd:attribute name="ctype" type="xlf:AttrType_InlinePlaceholders" use="optional"/>
-      <xsd:attribute name="crc" type="xsd:string" use="optional"/>
-      <xsd:attribute name="assoc" type="xlf:AttrType_assoc" use="optional"/>
-      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="bpt">
-    <xsd:complexType mixed="true">
-      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
-        <xsd:element ref="xlf:sub"/>
-      </xsd:sequence>
-      <xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
-      <xsd:attribute name="crc" type="xsd:string" use="optional"/>
-      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="ept">
-    <xsd:complexType mixed="true">
-      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
-        <xsd:element ref="xlf:sub"/>
-      </xsd:sequence>
-      <xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="crc" type="xsd:string" use="optional"/>
-      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="it">
-    <xsd:complexType mixed="true">
-      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
-        <xsd:element ref="xlf:sub"/>
-      </xsd:sequence>
-      <xsd:attribute name="pos" type="xlf:AttrType_Position" use="required"/>
-      <xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
-      <xsd:attribute name="crc" type="xsd:string" use="optional"/>
-      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="sub">
-    <xsd:complexType mixed="true">
-      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
-      <xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
-      <xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
-      <xsd:attribute name="xid" type="xsd:string" use="optional"/>
-    </xsd:complexType>
-  </xsd:element>
-  <xsd:element name="mrk">
-    <xsd:complexType mixed="true">
-      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
-      <xsd:attribute name="mtype" type="xlf:AttrType_mtype" use="required"/>
-      <xsd:attribute name="mid" type="xsd:NMTOKEN" use="optional"/>
-      <xsd:attribute name="comment" type="xsd:string" use="optional"/>
-      <xsd:anyAttribute namespace="##other" processContents="strict"/>
-    </xsd:complexType>
-  </xsd:element>
-</xsd:schema>
diff --git a/vendor/symfony/translation/Loader/schema/dic/xliff-core/xml.xsd b/vendor/symfony/translation/Loader/schema/dic/xliff-core/xml.xsd
deleted file mode 100644
index a46162a..0000000
--- a/vendor/symfony/translation/Loader/schema/dic/xliff-core/xml.xsd
+++ /dev/null
@@ -1,309 +0,0 @@
-<?xml version='1.0'?>
-<?xml-stylesheet href="../2008/09/xsd.xsl" type="text/xsl"?>
-<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" 
-  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
-  xmlns ="http://www.w3.org/1999/xhtml"
-  xml:lang="en">
-
- <xs:annotation>
-  <xs:documentation>
-   <div>
-    <h1>About the XML namespace</h1>
-
-    <div class="bodytext">
-     <p>
-
-      This schema document describes the XML namespace, in a form
-      suitable for import by other schema documents.
-     </p>
-     <p>
-      See <a href="http://www.w3.org/XML/1998/namespace.html">
-      http://www.w3.org/XML/1998/namespace.html</a> and
-      <a href="http://www.w3.org/TR/REC-xml">
-      http://www.w3.org/TR/REC-xml</a> for information 
-      about this namespace.
-     </p>
-
-     <p>
-      Note that local names in this namespace are intended to be
-      defined only by the World Wide Web Consortium or its subgroups.
-      The names currently defined in this namespace are listed below.
-      They should not be used with conflicting semantics by any Working
-      Group, specification, or document instance.
-     </p>
-     <p>   
-      See further below in this document for more information about <a
-      href="#usage">how to refer to this schema document from your own
-      XSD schema documents</a> and about <a href="#nsversioning">the
-      namespace-versioning policy governing this schema document</a>.
-     </p>
-    </div>
-   </div>
-
-  </xs:documentation>
- </xs:annotation>
-
- <xs:attribute name="lang">
-  <xs:annotation>
-   <xs:documentation>
-    <div>
-     
-      <h3>lang (as an attribute name)</h3>
-      <p>
-
-       denotes an attribute whose value
-       is a language code for the natural language of the content of
-       any element; its value is inherited.  This name is reserved
-       by virtue of its definition in the XML specification.</p>
-     
-    </div>
-    <div>
-     <h4>Notes</h4>
-     <p>
-      Attempting to install the relevant ISO 2- and 3-letter
-      codes as the enumerated possible values is probably never
-      going to be a realistic possibility.  
-     </p>
-     <p>
-
-      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
-       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
-      and the IANA language subtag registry at
-      <a href="http://www.iana.org/assignments/language-subtag-registry">
-       http://www.iana.org/assignments/language-subtag-registry</a>
-      for further information.
-     </p>
-     <p>
-
-      The union allows for the 'un-declaration' of xml:lang with
-      the empty string.
-     </p>
-    </div>
-   </xs:documentation>
-  </xs:annotation>
-  <xs:simpleType>
-   <xs:union memberTypes="xs:language">
-    <xs:simpleType>    
-     <xs:restriction base="xs:string">
-      <xs:enumeration value=""/>
-
-     </xs:restriction>
-    </xs:simpleType>
-   </xs:union>
-  </xs:simpleType>
- </xs:attribute>
-
- <xs:attribute name="space">
-  <xs:annotation>
-   <xs:documentation>
-
-    <div>
-     
-      <h3>space (as an attribute name)</h3>
-      <p>
-       denotes an attribute whose
-       value is a keyword indicating what whitespace processing
-       discipline is intended for the content of the element; its
-       value is inherited.  This name is reserved by virtue of its
-       definition in the XML specification.</p>
-     
-    </div>
-   </xs:documentation>
-  </xs:annotation>
-  <xs:simpleType>
-
-   <xs:restriction base="xs:NCName">
-    <xs:enumeration value="default"/>
-    <xs:enumeration value="preserve"/>
-   </xs:restriction>
-  </xs:simpleType>
- </xs:attribute>
- 
- <xs:attribute name="base" type="xs:anyURI"> <xs:annotation>
-   <xs:documentation>
-
-    <div>
-     
-      <h3>base (as an attribute name)</h3>
-      <p>
-       denotes an attribute whose value
-       provides a URI to be used as the base for interpreting any
-       relative URIs in the scope of the element on which it
-       appears; its value is inherited.  This name is reserved
-       by virtue of its definition in the XML Base specification.</p>
-     
-     <p>
-      See <a
-      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
-      for information about this attribute.
-     </p>
-
-    </div>
-   </xs:documentation>
-  </xs:annotation>
- </xs:attribute>
- 
- <xs:attribute name="id" type="xs:ID">
-  <xs:annotation>
-   <xs:documentation>
-    <div>
-     
-      <h3>id (as an attribute name)</h3> 
-      <p>
-
-       denotes an attribute whose value
-       should be interpreted as if declared to be of type ID.
-       This name is reserved by virtue of its definition in the
-       xml:id specification.</p>
-     
-     <p>
-      See <a
-      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
-      for information about this attribute.
-     </p>
-    </div>
-   </xs:documentation>
-  </xs:annotation>
-
- </xs:attribute>
-
- <xs:attributeGroup name="specialAttrs">
-  <xs:attribute ref="xml:base"/>
-  <xs:attribute ref="xml:lang"/>
-  <xs:attribute ref="xml:space"/>
-  <xs:attribute ref="xml:id"/>
- </xs:attributeGroup>
-
- <xs:annotation>
-
-  <xs:documentation>
-   <div>
-   
-    <h3>Father (in any context at all)</h3> 
-
-    <div class="bodytext">
-     <p>
-      denotes Jon Bosak, the chair of 
-      the original XML Working Group.  This name is reserved by 
-      the following decision of the W3C XML Plenary and 
-      XML Coordination groups:
-     </p>
-     <blockquote>
-       <p>
-
-	In appreciation for his vision, leadership and
-	dedication the W3C XML Plenary on this 10th day of
-	February, 2000, reserves for Jon Bosak in perpetuity
-	the XML name "xml:Father".
-       </p>
-     </blockquote>
-    </div>
-   </div>
-  </xs:documentation>
- </xs:annotation>
-
- <xs:annotation>
-  <xs:documentation>
-
-   <div xml:id="usage" id="usage">
-    <h2><a name="usage">About this schema document</a></h2>
-
-    <div class="bodytext">
-     <p>
-      This schema defines attributes and an attribute group suitable
-      for use by schemas wishing to allow <code>xml:base</code>,
-      <code>xml:lang</code>, <code>xml:space</code> or
-      <code>xml:id</code> attributes on elements they define.
-     </p>
-
-     <p>
-      To enable this, such a schema must import this schema for
-      the XML namespace, e.g. as follows:
-     </p>
-     <pre>
-          &lt;schema.. .>
-          .. .
-           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
-                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-     </pre>
-     <p>
-      or
-     </p>
-     <pre>
-
-           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
-                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
-     </pre>
-     <p>
-      Subsequently, qualified reference to any of the attributes or the
-      group defined below will have the desired effect, e.g.
-     </p>
-     <pre>
-          &lt;type.. .>
-          .. .
-           &lt;attributeGroup ref="xml:specialAttrs"/>
-     </pre>
-     <p>
-      will define a type which will schema-validate an instance element
-      with any of those attributes.
-     </p>
-
-    </div>
-   </div>
-  </xs:documentation>
- </xs:annotation>
-
- <xs:annotation>
-  <xs:documentation>
-   <div id="nsversioning" xml:id="nsversioning">
-    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
-
-    <div class="bodytext">
-     <p>
-      In keeping with the XML Schema WG's standard versioning
-      policy, this schema document will persist at
-      <a href="http://www.w3.org/2009/01/xml.xsd">
-       http://www.w3.org/2009/01/xml.xsd</a>.
-     </p>
-     <p>
-      At the date of issue it can also be found at
-      <a href="http://www.w3.org/2001/xml.xsd">
-       http://www.w3.org/2001/xml.xsd</a>.
-     </p>
-
-     <p>
-      The schema document at that URI may however change in the future,
-      in order to remain compatible with the latest version of XML
-      Schema itself, or with the XML namespace itself.  In other words,
-      if the XML Schema or XML namespaces change, the version of this
-      document at <a href="http://www.w3.org/2001/xml.xsd">
-       http://www.w3.org/2001/xml.xsd 
-      </a> 
-      will change accordingly; the version at 
-      <a href="http://www.w3.org/2009/01/xml.xsd">
-       http://www.w3.org/2009/01/xml.xsd 
-      </a> 
-      will not change.
-     </p>
-     <p>
-
-      Previous dated (and unchanging) versions of this schema 
-      document are at:
-     </p>
-     <ul>
-      <li><a href="http://www.w3.org/2009/01/xml.xsd">
-	http://www.w3.org/2009/01/xml.xsd</a></li>
-      <li><a href="http://www.w3.org/2007/08/xml.xsd">
-	http://www.w3.org/2007/08/xml.xsd</a></li>
-      <li><a href="http://www.w3.org/2004/10/xml.xsd">
-
-	http://www.w3.org/2004/10/xml.xsd</a></li>
-      <li><a href="http://www.w3.org/2001/03/xml.xsd">
-	http://www.w3.org/2001/03/xml.xsd</a></li>
-     </ul>
-    </div>
-   </div>
-  </xs:documentation>
- </xs:annotation>
-
-</xs:schema>
diff --git a/vendor/symfony/translation/LoggingTranslator.php b/vendor/symfony/translation/LoggingTranslator.php
deleted file mode 100644
index fa5c5cc..0000000
--- a/vendor/symfony/translation/LoggingTranslator.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?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;
-
-use Psr\Log\LoggerInterface;
-
-/**
- * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
- */
-class LoggingTranslator implements TranslatorInterface, TranslatorBagInterface
-{
-    /**
-     * @var TranslatorInterface|TranslatorBagInterface
-     */
-    private $translator;
-
-    /**
-     * @var LoggerInterface
-     */
-    private $logger;
-
-    /**
-     * @param TranslatorInterface $translator The translator must implement TranslatorBagInterface
-     * @param LoggerInterface     $logger
-     */
-    public function __construct(TranslatorInterface $translator, LoggerInterface $logger)
-    {
-        if (!$translator instanceof TranslatorBagInterface) {
-            throw new \InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface and TranslatorBagInterface.', get_class($translator)));
-        }
-
-        $this->translator = $translator;
-        $this->logger = $logger;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function trans($id, array $parameters = array(), $domain = null, $locale = null)
-    {
-        $trans = $this->translator->trans($id, $parameters, $domain, $locale);
-        $this->log($id, $domain, $locale);
-
-        return $trans;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
-    {
-        $trans = $this->translator->transChoice($id, $number, $parameters, $domain, $locale);
-        $this->log($id, $domain, $locale);
-
-        return $trans;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setLocale($locale)
-    {
-        $this->translator->setLocale($locale);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getLocale()
-    {
-        return $this->translator->getLocale();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCatalogue($locale = null)
-    {
-        return $this->translator->getCatalogue($locale);
-    }
-
-    /**
-     * Passes through all unknown calls onto the translator object.
-     */
-    public function __call($method, $args)
-    {
-        return call_user_func_array(array($this->translator, $method), $args);
-    }
-
-    /**
-     * Logs for missing translations.
-     *
-     * @param string      $id
-     * @param string|null $domain
-     * @param string|null $locale
-     */
-    private function log($id, $domain, $locale)
-    {
-        if (null === $domain) {
-            $domain = 'messages';
-        }
-
-        $id = (string) $id;
-        $catalogue = $this->translator->getCatalogue($locale);
-        if ($catalogue->defines($id, $domain)) {
-            return;
-        }
-
-        if ($catalogue->has($id, $domain)) {
-            $this->logger->debug('Translation use fallback catalogue.', array('id' => $id, 'domain' => $domain, 'locale' => $catalogue->getLocale()));
-        } else {
-            $this->logger->warning('Translation not found.', array('id' => $id, 'domain' => $domain, 'locale' => $catalogue->getLocale()));
-        }
-    }
-}
diff --git a/vendor/symfony/translation/MessageCatalogue.php b/vendor/symfony/translation/MessageCatalogue.php
deleted file mode 100644
index dd354a8..0000000
--- a/vendor/symfony/translation/MessageCatalogue.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?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;
-
-use Symfony\Component\Config\Resource\ResourceInterface;
-
-/**
- * MessageCatalogue.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterface
-{
-    private $messages = array();
-    private $metadata = array();
-    private $resources = array();
-    private $locale;
-    private $fallbackCatalogue;
-    private $parent;
-
-    /**
-     * Constructor.
-     *
-     * @param string $locale   The locale
-     * @param array  $messages An array of messages classified by domain
-     */
-    public function __construct($locale, array $messages = array())
-    {
-        $this->locale = $locale;
-        $this->messages = $messages;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getLocale()
-    {
-        return $this->locale;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDomains()
-    {
-        return array_keys($this->messages);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function all($domain = null)
-    {
-        if (null === $domain) {
-            return $this->messages;
-        }
-
-        return isset($this->messages[$domain]) ? $this->messages[$domain] : array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($id, $translation, $domain = 'messages')
-    {
-        $this->add(array($id => $translation), $domain);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($id, $domain = 'messages')
-    {
-        if (isset($this->messages[$domain][$id])) {
-            return true;
-        }
-
-        if (null !== $this->fallbackCatalogue) {
-            return $this->fallbackCatalogue->has($id, $domain);
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function defines($id, $domain = 'messages')
-    {
-        return isset($this->messages[$domain][$id]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($id, $domain = 'messages')
-    {
-        if (isset($this->messages[$domain][$id])) {
-            return $this->messages[$domain][$id];
-        }
-
-        if (null !== $this->fallbackCatalogue) {
-            return $this->fallbackCatalogue->get($id, $domain);
-        }
-
-        return $id;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function replace($messages, $domain = 'messages')
-    {
-        $this->messages[$domain] = array();
-
-        $this->add($messages, $domain);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add($messages, $domain = 'messages')
-    {
-        if (!isset($this->messages[$domain])) {
-            $this->messages[$domain] = $messages;
-        } else {
-            $this->messages[$domain] = array_replace($this->messages[$domain], $messages);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addCatalogue(MessageCatalogueInterface $catalogue)
-    {
-        if ($catalogue->getLocale() !== $this->locale) {
-            throw new \LogicException(sprintf('Cannot add a catalogue for locale "%s" as the current locale for this catalogue is "%s"', $catalogue->getLocale(), $this->locale));
-        }
-
-        foreach ($catalogue->all() as $domain => $messages) {
-            $this->add($messages, $domain);
-        }
-
-        foreach ($catalogue->getResources() as $resource) {
-            $this->addResource($resource);
-        }
-
-        if ($catalogue instanceof MetadataAwareInterface) {
-            $metadata = $catalogue->getMetadata('', '');
-            $this->addMetadata($metadata);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addFallbackCatalogue(MessageCatalogueInterface $catalogue)
-    {
-        // detect circular references
-        $c = $catalogue;
-        while ($c = $c->getFallbackCatalogue()) {
-            if ($c->getLocale() === $this->getLocale()) {
-                throw new \LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
-            }
-        }
-
-        $c = $this;
-        do {
-            if ($c->getLocale() === $catalogue->getLocale()) {
-                throw new \LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
-            }
-        } while ($c = $c->parent);
-
-        $catalogue->parent = $this;
-        $this->fallbackCatalogue = $catalogue;
-
-        foreach ($catalogue->getResources() as $resource) {
-            $this->addResource($resource);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFallbackCatalogue()
-    {
-        return $this->fallbackCatalogue;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getResources()
-    {
-        return array_values($this->resources);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addResource(ResourceInterface $resource)
-    {
-        $this->resources[$resource->__toString()] = $resource;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadata($key = '', $domain = 'messages')
-    {
-        if ('' == $domain) {
-            return $this->metadata;
-        }
-
-        if (isset($this->metadata[$domain])) {
-            if ('' == $key) {
-                return $this->metadata[$domain];
-            }
-
-            if (isset($this->metadata[$domain][$key])) {
-                return $this->metadata[$domain][$key];
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setMetadata($key, $value, $domain = 'messages')
-    {
-        $this->metadata[$domain][$key] = $value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function deleteMetadata($key = '', $domain = 'messages')
-    {
-        if ('' == $domain) {
-            $this->metadata = array();
-        } elseif ('' == $key) {
-            unset($this->metadata[$domain]);
-        } else {
-            unset($this->metadata[$domain][$key]);
-        }
-    }
-
-    /**
-     * Adds current values with the new values.
-     *
-     * @param array $values Values to add
-     */
-    private function addMetadata(array $values)
-    {
-        foreach ($values as $domain => $keys) {
-            foreach ($keys as $key => $value) {
-                $this->setMetadata($key, $value, $domain);
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/translation/MessageCatalogueInterface.php b/vendor/symfony/translation/MessageCatalogueInterface.php
deleted file mode 100644
index b1b516d..0000000
--- a/vendor/symfony/translation/MessageCatalogueInterface.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?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;
-
-use Symfony\Component\Config\Resource\ResourceInterface;
-
-/**
- * MessageCatalogueInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface MessageCatalogueInterface
-{
-    /**
-     * Gets the catalogue locale.
-     *
-     * @return string The locale
-     */
-    public function getLocale();
-
-    /**
-     * Gets the domains.
-     *
-     * @return array An array of domains
-     */
-    public function getDomains();
-
-    /**
-     * Gets the messages within a given domain.
-     *
-     * If $domain is null, it returns all messages.
-     *
-     * @param string $domain The domain name
-     *
-     * @return array An array of messages
-     */
-    public function all($domain = null);
-
-    /**
-     * Sets a message translation.
-     *
-     * @param string $id          The message id
-     * @param string $translation The messages translation
-     * @param string $domain      The domain name
-     */
-    public function set($id, $translation, $domain = 'messages');
-
-    /**
-     * Checks if a message has a translation.
-     *
-     * @param string $id     The message id
-     * @param string $domain The domain name
-     *
-     * @return bool true if the message has a translation, false otherwise
-     */
-    public function has($id, $domain = 'messages');
-
-    /**
-     * Checks if a message has a translation (it does not take into account the fallback mechanism).
-     *
-     * @param string $id     The message id
-     * @param string $domain The domain name
-     *
-     * @return bool true if the message has a translation, false otherwise
-     */
-    public function defines($id, $domain = 'messages');
-
-    /**
-     * Gets a message translation.
-     *
-     * @param string $id     The message id
-     * @param string $domain The domain name
-     *
-     * @return string The message translation
-     */
-    public function get($id, $domain = 'messages');
-
-    /**
-     * Sets translations for a given domain.
-     *
-     * @param array  $messages An array of translations
-     * @param string $domain   The domain name
-     */
-    public function replace($messages, $domain = 'messages');
-
-    /**
-     * Adds translations for a given domain.
-     *
-     * @param array  $messages An array of translations
-     * @param string $domain   The domain name
-     */
-    public function add($messages, $domain = 'messages');
-
-    /**
-     * Merges translations from the given Catalogue into the current one.
-     *
-     * The two catalogues must have the same locale.
-     *
-     * @param MessageCatalogueInterface $catalogue A MessageCatalogueInterface instance
-     */
-    public function addCatalogue(MessageCatalogueInterface $catalogue);
-
-    /**
-     * Merges translations from the given Catalogue into the current one
-     * only when the translation does not exist.
-     *
-     * This is used to provide default translations when they do not exist for the current locale.
-     *
-     * @param MessageCatalogueInterface $catalogue A MessageCatalogueInterface instance
-     */
-    public function addFallbackCatalogue(MessageCatalogueInterface $catalogue);
-
-    /**
-     * Gets the fallback catalogue.
-     *
-     * @return MessageCatalogueInterface|null A MessageCatalogueInterface instance or null when no fallback has been set
-     */
-    public function getFallbackCatalogue();
-
-    /**
-     * Returns an array of resources loaded to build this collection.
-     *
-     * @return ResourceInterface[] An array of resources
-     */
-    public function getResources();
-
-    /**
-     * Adds a resource for this collection.
-     *
-     * @param ResourceInterface $resource A resource instance
-     */
-    public function addResource(ResourceInterface $resource);
-}
diff --git a/vendor/symfony/translation/MessageSelector.php b/vendor/symfony/translation/MessageSelector.php
deleted file mode 100644
index bdbb0f9..0000000
--- a/vendor/symfony/translation/MessageSelector.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?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;
-
-/**
- * MessageSelector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class MessageSelector
-{
-    /**
-     * Given a message with different plural translations separated by a
-     * pipe (|), this method returns the correct portion of the message based
-     * on the given number, locale and the pluralization rules in the message
-     * itself.
-     *
-     * The message supports two different types of pluralization rules:
-     *
-     * interval: {0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples
-     * indexed:  There is one apple|There are %count% apples
-     *
-     * The indexed solution can also contain labels (e.g. one: There is one apple).
-     * This is purely for making the translations more clear - it does not
-     * affect the functionality.
-     *
-     * The two methods can also be mixed:
-     *     {0} There are no apples|one: There is one apple|more: There are %count% apples
-     *
-     * @param string $message The message being translated
-     * @param int    $number  The number of items represented for the message
-     * @param string $locale  The locale to use for choosing
-     *
-     * @return string
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function choose($message, $number, $locale)
-    {
-        $parts = explode('|', $message);
-        $explicitRules = array();
-        $standardRules = array();
-        foreach ($parts as $part) {
-            $part = trim($part);
-
-            if (preg_match('/^(?P<interval>'.Interval::getIntervalRegexp().')\s*(?P<message>.*?)$/xs', $part, $matches)) {
-                $explicitRules[$matches['interval']] = $matches['message'];
-            } elseif (preg_match('/^\w+\:\s*(.*?)$/', $part, $matches)) {
-                $standardRules[] = $matches[1];
-            } else {
-                $standardRules[] = $part;
-            }
-        }
-
-        // try to match an explicit rule, then fallback to the standard ones
-        foreach ($explicitRules as $interval => $m) {
-            if (Interval::test($number, $interval)) {
-                return $m;
-            }
-        }
-
-        $position = PluralizationRules::get($number, $locale);
-
-        if (!isset($standardRules[$position])) {
-            // when there's exactly one rule given, and that rule is a standard
-            // rule, use this rule
-            if (1 === count($parts) && isset($standardRules[0])) {
-                return $standardRules[0];
-            }
-
-            throw new \InvalidArgumentException(sprintf('Unable to choose a translation for "%s" with locale "%s" for value "%d". Double check that this translation has the correct plural options (e.g. "There is one apple|There are %%count%% apples").', $message, $locale, $number));
-        }
-
-        return $standardRules[$position];
-    }
-}
diff --git a/vendor/symfony/translation/MetadataAwareInterface.php b/vendor/symfony/translation/MetadataAwareInterface.php
deleted file mode 100644
index e93c6fb..0000000
--- a/vendor/symfony/translation/MetadataAwareInterface.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?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;
-
-/**
- * MetadataAwareInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface MetadataAwareInterface
-{
-    /**
-     * Gets metadata for the given domain and key.
-     *
-     * Passing an empty domain will return an array with all metadata indexed by
-     * domain and then by key. Passing an empty key will return an array with all
-     * metadata for the given domain.
-     *
-     * @param string $key    The key
-     * @param string $domain The domain name
-     *
-     * @return mixed The value that was set or an array with the domains/keys or null
-     */
-    public function getMetadata($key = '', $domain = 'messages');
-
-    /**
-     * Adds metadata to a message domain.
-     *
-     * @param string $key    The key
-     * @param mixed  $value  The value
-     * @param string $domain The domain name
-     */
-    public function setMetadata($key, $value, $domain = 'messages');
-
-    /**
-     * Deletes metadata for the given key and domain.
-     *
-     * Passing an empty domain will delete all metadata. Passing an empty key will
-     * delete all metadata for the given domain.
-     *
-     * @param string $key    The key
-     * @param string $domain The domain name
-     */
-    public function deleteMetadata($key = '', $domain = 'messages');
-}
diff --git a/vendor/symfony/translation/PluralizationRules.php b/vendor/symfony/translation/PluralizationRules.php
deleted file mode 100644
index f250423..0000000
--- a/vendor/symfony/translation/PluralizationRules.php
+++ /dev/null
@@ -1,214 +0,0 @@
-<?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;
-
-/**
- * Returns the plural rules for a given locale.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class PluralizationRules
-{
-    private static $rules = array();
-
-    /**
-     * Returns the plural position to use for the given locale and number.
-     *
-     * @param int    $number The number
-     * @param string $locale The locale
-     *
-     * @return int The plural position
-     */
-    public static function get($number, $locale)
-    {
-        if ('pt_BR' === $locale) {
-            // temporary set a locale for brazilian
-            $locale = 'xbr';
-        }
-
-        if (strlen($locale) > 3) {
-            $locale = substr($locale, 0, -strlen(strrchr($locale, '_')));
-        }
-
-        if (isset(self::$rules[$locale])) {
-            $return = call_user_func(self::$rules[$locale], $number);
-
-            if (!is_int($return) || $return < 0) {
-                return 0;
-            }
-
-            return $return;
-        }
-
-        /*
-         * The plural rules are derived from code of the Zend Framework (2010-09-25),
-         * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).
-         * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
-         */
-        switch ($locale) {
-            case 'az':
-            case 'bo':
-            case 'dz':
-            case 'id':
-            case 'ja':
-            case 'jv':
-            case 'ka':
-            case 'km':
-            case 'kn':
-            case 'ko':
-            case 'ms':
-            case 'th':
-            case 'tr':
-            case 'vi':
-            case 'zh':
-                return 0;
-                break;
-
-            case 'af':
-            case 'bn':
-            case 'bg':
-            case 'ca':
-            case 'da':
-            case 'de':
-            case 'el':
-            case 'en':
-            case 'eo':
-            case 'es':
-            case 'et':
-            case 'eu':
-            case 'fa':
-            case 'fi':
-            case 'fo':
-            case 'fur':
-            case 'fy':
-            case 'gl':
-            case 'gu':
-            case 'ha':
-            case 'he':
-            case 'hu':
-            case 'is':
-            case 'it':
-            case 'ku':
-            case 'lb':
-            case 'ml':
-            case 'mn':
-            case 'mr':
-            case 'nah':
-            case 'nb':
-            case 'ne':
-            case 'nl':
-            case 'nn':
-            case 'no':
-            case 'om':
-            case 'or':
-            case 'pa':
-            case 'pap':
-            case 'ps':
-            case 'pt':
-            case 'so':
-            case 'sq':
-            case 'sv':
-            case 'sw':
-            case 'ta':
-            case 'te':
-            case 'tk':
-            case 'ur':
-            case 'zu':
-                return ($number == 1) ? 0 : 1;
-
-            case 'am':
-            case 'bh':
-            case 'fil':
-            case 'fr':
-            case 'gun':
-            case 'hi':
-            case 'ln':
-            case 'mg':
-            case 'nso':
-            case 'xbr':
-            case 'ti':
-            case 'wa':
-                return (($number == 0) || ($number == 1)) ? 0 : 1;
-
-            case 'be':
-            case 'bs':
-            case 'hr':
-            case 'ru':
-            case 'sr':
-            case 'uk':
-                return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2);
-
-            case 'cs':
-            case 'sk':
-                return ($number == 1) ? 0 : ((($number >= 2) && ($number <= 4)) ? 1 : 2);
-
-            case 'ga':
-                return ($number == 1) ? 0 : (($number == 2) ? 1 : 2);
-
-            case 'lt':
-                return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2);
-
-            case 'sl':
-                return ($number % 100 == 1) ? 0 : (($number % 100 == 2) ? 1 : ((($number % 100 == 3) || ($number % 100 == 4)) ? 2 : 3));
-
-            case 'mk':
-                return ($number % 10 == 1) ? 0 : 1;
-
-            case 'mt':
-                return ($number == 1) ? 0 : ((($number == 0) || (($number % 100 > 1) && ($number % 100 < 11))) ? 1 : ((($number % 100 > 10) && ($number % 100 < 20)) ? 2 : 3));
-
-            case 'lv':
-                return ($number == 0) ? 0 : ((($number % 10 == 1) && ($number % 100 != 11)) ? 1 : 2);
-
-            case 'pl':
-                return ($number == 1) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 12) || ($number % 100 > 14))) ? 1 : 2);
-
-            case 'cy':
-                return ($number == 1) ? 0 : (($number == 2) ? 1 : ((($number == 8) || ($number == 11)) ? 2 : 3));
-
-            case 'ro':
-                return ($number == 1) ? 0 : ((($number == 0) || (($number % 100 > 0) && ($number % 100 < 20))) ? 1 : 2);
-
-            case 'ar':
-                return ($number == 0) ? 0 : (($number == 1) ? 1 : (($number == 2) ? 2 : ((($number % 100 >= 3) && ($number % 100 <= 10)) ? 3 : ((($number % 100 >= 11) && ($number % 100 <= 99)) ? 4 : 5))));
-
-            default:
-                return 0;
-        }
-    }
-
-    /**
-     * Overrides the default plural rule for a given locale.
-     *
-     * @param callable $rule   A PHP callable
-     * @param string   $locale The locale
-     *
-     * @throws \LogicException
-     */
-    public static function set($rule, $locale)
-    {
-        if ('pt_BR' === $locale) {
-            // temporary set a locale for brazilian
-            $locale = 'xbr';
-        }
-
-        if (strlen($locale) > 3) {
-            $locale = substr($locale, 0, -strlen(strrchr($locale, '_')));
-        }
-
-        if (!is_callable($rule)) {
-            throw new \LogicException('The given rule can not be called');
-        }
-
-        self::$rules[$locale] = $rule;
-    }
-}
diff --git a/vendor/symfony/translation/README.md b/vendor/symfony/translation/README.md
deleted file mode 100644
index 2b46b51..0000000
--- a/vendor/symfony/translation/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-Translation Component
-=====================
-
-Translation provides tools for loading translation files and generating
-translated strings from these including support for pluralization.
-
-```php
-use Symfony\Component\Translation\Translator;
-use Symfony\Component\Translation\MessageSelector;
-use Symfony\Component\Translation\Loader\ArrayLoader;
-
-$translator = new Translator('fr_FR', new MessageSelector());
-$translator->setFallbackLocales(array('fr'));
-$translator->addLoader('array', new ArrayLoader());
-$translator->addResource('array', array(
-    'Hello World!' => 'Bonjour',
-), 'fr');
-
-echo $translator->trans('Hello World!')."\n";
-```
-
-Resources
----------
-
-Silex integration:
-
-https://github.com/silexphp/Silex/blob/master/src/Silex/Provider/TranslationServiceProvider.php
-
-Documentation:
-
-https://symfony.com/doc/2.7/book/translation.html
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/Translation/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/translation/Translator.php b/vendor/symfony/translation/Translator.php
deleted file mode 100644
index c6d8c16..0000000
--- a/vendor/symfony/translation/Translator.php
+++ /dev/null
@@ -1,478 +0,0 @@
-<?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;
-
-use Symfony\Component\Translation\Loader\LoaderInterface;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\ConfigCacheInterface;
-use Symfony\Component\Config\ConfigCacheFactoryInterface;
-use Symfony\Component\Config\ConfigCacheFactory;
-
-/**
- * Translator.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Translator implements TranslatorInterface, TranslatorBagInterface
-{
-    /**
-     * @var MessageCatalogueInterface[]
-     */
-    protected $catalogues = array();
-
-    /**
-     * @var string
-     */
-    protected $locale;
-
-    /**
-     * @var array
-     */
-    private $fallbackLocales = array();
-
-    /**
-     * @var LoaderInterface[]
-     */
-    private $loaders = array();
-
-    /**
-     * @var array
-     */
-    private $resources = array();
-
-    /**
-     * @var MessageSelector
-     */
-    private $selector;
-
-    /**
-     * @var string
-     */
-    private $cacheDir;
-
-    /**
-     * @var bool
-     */
-    private $debug;
-
-    /**
-     * @var ConfigCacheFactoryInterface|null
-     */
-    private $configCacheFactory;
-
-    /**
-     * Constructor.
-     *
-     * @param string               $locale   The locale
-     * @param MessageSelector|null $selector The message selector for pluralization
-     * @param string|null          $cacheDir The directory to use for the cache
-     * @param bool                 $debug    Use cache in debug mode ?
-     *
-     * @throws \InvalidArgumentException If a locale contains invalid characters
-     */
-    public function __construct($locale, MessageSelector $selector = null, $cacheDir = null, $debug = false)
-    {
-        $this->setLocale($locale);
-        $this->selector = $selector ?: new MessageSelector();
-        $this->cacheDir = $cacheDir;
-        $this->debug = $debug;
-    }
-
-    /**
-     * Sets the ConfigCache factory to use.
-     *
-     * @param ConfigCacheFactoryInterface $configCacheFactory
-     */
-    public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory)
-    {
-        $this->configCacheFactory = $configCacheFactory;
-    }
-
-    /**
-     * Adds a Loader.
-     *
-     * @param string          $format The name of the loader (@see addResource())
-     * @param LoaderInterface $loader A LoaderInterface instance
-     */
-    public function addLoader($format, LoaderInterface $loader)
-    {
-        $this->loaders[$format] = $loader;
-    }
-
-    /**
-     * Adds a Resource.
-     *
-     * @param string $format   The name of the loader (@see addLoader())
-     * @param mixed  $resource The resource name
-     * @param string $locale   The locale
-     * @param string $domain   The domain
-     *
-     * @throws \InvalidArgumentException If the locale contains invalid characters
-     */
-    public function addResource($format, $resource, $locale, $domain = null)
-    {
-        if (null === $domain) {
-            $domain = 'messages';
-        }
-
-        $this->assertValidLocale($locale);
-
-        $this->resources[$locale][] = array($format, $resource, $domain);
-
-        if (in_array($locale, $this->fallbackLocales)) {
-            $this->catalogues = array();
-        } else {
-            unset($this->catalogues[$locale]);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setLocale($locale)
-    {
-        $this->assertValidLocale($locale);
-        $this->locale = $locale;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getLocale()
-    {
-        return $this->locale;
-    }
-
-    /**
-     * Sets the fallback locale(s).
-     *
-     * @param string|array $locales The fallback locale(s)
-     *
-     * @throws \InvalidArgumentException If a locale contains invalid characters
-     *
-     * @deprecated since version 2.3, to be removed in 3.0. Use setFallbackLocales() instead.
-     */
-    public function setFallbackLocale($locales)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.3 and will be removed in 3.0. Use the setFallbackLocales() method instead.', E_USER_DEPRECATED);
-
-        $this->setFallbackLocales(is_array($locales) ? $locales : array($locales));
-    }
-
-    /**
-     * Sets the fallback locales.
-     *
-     * @param array $locales The fallback locales
-     *
-     * @throws \InvalidArgumentException If a locale contains invalid characters
-     */
-    public function setFallbackLocales(array $locales)
-    {
-        // needed as the fallback locales are linked to the already loaded catalogues
-        $this->catalogues = array();
-
-        foreach ($locales as $locale) {
-            $this->assertValidLocale($locale);
-        }
-
-        $this->fallbackLocales = $locales;
-    }
-
-    /**
-     * Gets the fallback locales.
-     *
-     * @return array $locales The fallback locales
-     */
-    public function getFallbackLocales()
-    {
-        return $this->fallbackLocales;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function trans($id, array $parameters = array(), $domain = null, $locale = null)
-    {
-        if (null === $domain) {
-            $domain = 'messages';
-        }
-
-        return strtr($this->getCatalogue($locale)->get((string) $id, $domain), $parameters);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
-    {
-        if (null === $domain) {
-            $domain = 'messages';
-        }
-
-        $id = (string) $id;
-        $catalogue = $this->getCatalogue($locale);
-        $locale = $catalogue->getLocale();
-        while (!$catalogue->defines($id, $domain)) {
-            if ($cat = $catalogue->getFallbackCatalogue()) {
-                $catalogue = $cat;
-                $locale = $catalogue->getLocale();
-            } else {
-                break;
-            }
-        }
-
-        return strtr($this->selector->choose($catalogue->get($id, $domain), (int) $number, $locale), $parameters);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCatalogue($locale = null)
-    {
-        if (null === $locale) {
-            $locale = $this->getLocale();
-        } else {
-            $this->assertValidLocale($locale);
-        }
-
-        if (!isset($this->catalogues[$locale])) {
-            $this->loadCatalogue($locale);
-        }
-
-        return $this->catalogues[$locale];
-    }
-
-    /**
-     * Gets the loaders.
-     *
-     * @return array LoaderInterface[]
-     */
-    protected function getLoaders()
-    {
-        return $this->loaders;
-    }
-
-    /**
-     * Collects all messages for the given locale.
-     *
-     * @param string|null $locale Locale of translations, by default is current locale
-     *
-     * @return array[array] indexed by catalog
-     */
-    public function getMessages($locale = null)
-    {
-        $catalogue = $this->getCatalogue($locale);
-        $messages = $catalogue->all();
-        while ($catalogue = $catalogue->getFallbackCatalogue()) {
-            $messages = array_replace_recursive($catalogue->all(), $messages);
-        }
-
-        return $messages;
-    }
-
-    /**
-     * @param string $locale
-     */
-    protected function loadCatalogue($locale)
-    {
-        if (null === $this->cacheDir) {
-            $this->initializeCatalogue($locale);
-        } else {
-            $this->initializeCacheCatalogue($locale);
-        }
-    }
-
-    /**
-     * @param string $locale
-     */
-    protected function initializeCatalogue($locale)
-    {
-        $this->assertValidLocale($locale);
-
-        try {
-            $this->doLoadCatalogue($locale);
-        } catch (NotFoundResourceException $e) {
-            if (!$this->computeFallbackLocales($locale)) {
-                throw $e;
-            }
-        }
-        $this->loadFallbackCatalogues($locale);
-    }
-
-    /**
-     * @param string $locale
-     */
-    private function initializeCacheCatalogue($locale)
-    {
-        if (isset($this->catalogues[$locale])) {
-            /* Catalogue already initialized. */
-            return;
-        }
-
-        $this->assertValidLocale($locale);
-        $self = $this; // required for PHP 5.3 where "$this" cannot be use()d in anonymous functions. Change in Symfony 3.0.
-        $cache = $this->getConfigCacheFactory()->cache($this->getCatalogueCachePath($locale),
-            function (ConfigCacheInterface $cache) use ($self, $locale) {
-                $self->dumpCatalogue($locale, $cache);
-            }
-        );
-
-        if (isset($this->catalogues[$locale])) {
-            /* Catalogue has been initialized as it was written out to cache. */
-            return;
-        }
-
-        /* Read catalogue from cache. */
-        $this->catalogues[$locale] = include $cache->getPath();
-    }
-
-    /**
-     * This method is public because it needs to be callable from a closure in PHP 5.3. It should be made protected (or even private, if possible) in 3.0.
-     *
-     * @internal
-     */
-    public function dumpCatalogue($locale, ConfigCacheInterface $cache)
-    {
-        $this->initializeCatalogue($locale);
-        $fallbackContent = $this->getFallbackContent($this->catalogues[$locale]);
-
-        $content = sprintf(<<<EOF
-<?php
-
-use Symfony\Component\Translation\MessageCatalogue;
-
-\$catalogue = new MessageCatalogue('%s', %s);
-
-%s
-return \$catalogue;
-
-EOF
-            ,
-            $locale,
-            var_export($this->catalogues[$locale]->all(), true),
-            $fallbackContent
-        );
-
-        $cache->write($content, $this->catalogues[$locale]->getResources());
-    }
-
-    private function getFallbackContent(MessageCatalogue $catalogue)
-    {
-        $fallbackContent = '';
-        $current = '';
-        $replacementPattern = '/[^a-z0-9_]/i';
-        $fallbackCatalogue = $catalogue->getFallbackCatalogue();
-        while ($fallbackCatalogue) {
-            $fallback = $fallbackCatalogue->getLocale();
-            $fallbackSuffix = ucfirst(preg_replace($replacementPattern, '_', $fallback));
-            $currentSuffix = ucfirst(preg_replace($replacementPattern, '_', $current));
-
-            $fallbackContent .= sprintf(<<<EOF
-\$catalogue%s = new MessageCatalogue('%s', %s);
-\$catalogue%s->addFallbackCatalogue(\$catalogue%s);
-
-EOF
-                ,
-                $fallbackSuffix,
-                $fallback,
-                var_export($fallbackCatalogue->all(), true),
-                $currentSuffix,
-                $fallbackSuffix
-            );
-            $current = $fallbackCatalogue->getLocale();
-            $fallbackCatalogue = $fallbackCatalogue->getFallbackCatalogue();
-        }
-
-        return $fallbackContent;
-    }
-
-    private function getCatalogueCachePath($locale)
-    {
-        return $this->cacheDir.'/catalogue.'.$locale.'.'.sha1(serialize($this->fallbackLocales)).'.php';
-    }
-
-    private function doLoadCatalogue($locale)
-    {
-        $this->catalogues[$locale] = new MessageCatalogue($locale);
-
-        if (isset($this->resources[$locale])) {
-            foreach ($this->resources[$locale] as $resource) {
-                if (!isset($this->loaders[$resource[0]])) {
-                    throw new \RuntimeException(sprintf('The "%s" translation loader is not registered.', $resource[0]));
-                }
-                $this->catalogues[$locale]->addCatalogue($this->loaders[$resource[0]]->load($resource[1], $locale, $resource[2]));
-            }
-        }
-    }
-
-    private function loadFallbackCatalogues($locale)
-    {
-        $current = $this->catalogues[$locale];
-
-        foreach ($this->computeFallbackLocales($locale) as $fallback) {
-            if (!isset($this->catalogues[$fallback])) {
-                $this->doLoadCatalogue($fallback);
-            }
-
-            $fallbackCatalogue = new MessageCatalogue($fallback, $this->catalogues[$fallback]->all());
-            $current->addFallbackCatalogue($fallbackCatalogue);
-            $current = $fallbackCatalogue;
-        }
-    }
-
-    protected function computeFallbackLocales($locale)
-    {
-        $locales = array();
-        foreach ($this->fallbackLocales as $fallback) {
-            if ($fallback === $locale) {
-                continue;
-            }
-
-            $locales[] = $fallback;
-        }
-
-        if (strrchr($locale, '_') !== false) {
-            array_unshift($locales, substr($locale, 0, -strlen(strrchr($locale, '_'))));
-        }
-
-        return array_unique($locales);
-    }
-
-    /**
-     * Asserts that the locale is valid, throws an Exception if not.
-     *
-     * @param string $locale Locale to tests
-     *
-     * @throws \InvalidArgumentException If the locale contains invalid characters
-     */
-    protected function assertValidLocale($locale)
-    {
-        if (1 !== preg_match('/^[a-z0-9@_\\.\\-]*$/i', $locale)) {
-            throw new \InvalidArgumentException(sprintf('Invalid "%s" locale.', $locale));
-        }
-    }
-
-    /**
-     * Provides the ConfigCache factory implementation, falling back to a
-     * default implementation if necessary.
-     *
-     * @return ConfigCacheFactoryInterface $configCacheFactory
-     */
-    private function getConfigCacheFactory()
-    {
-        if (!$this->configCacheFactory) {
-            $this->configCacheFactory = new ConfigCacheFactory($this->debug);
-        }
-
-        return $this->configCacheFactory;
-    }
-}
diff --git a/vendor/symfony/translation/TranslatorBagInterface.php b/vendor/symfony/translation/TranslatorBagInterface.php
deleted file mode 100644
index 6f650b5..0000000
--- a/vendor/symfony/translation/TranslatorBagInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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;
-
-/**
- * TranslatorBagInterface.
- *
- * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
- */
-interface TranslatorBagInterface
-{
-    /**
-     * Gets the catalogue by locale.
-     *
-     * @param string|null $locale The locale or null to use the default
-     *
-     * @throws \InvalidArgumentException If the locale contains invalid characters
-     *
-     * @return MessageCatalogueInterface
-     */
-    public function getCatalogue($locale = null);
-}
diff --git a/vendor/symfony/translation/TranslatorInterface.php b/vendor/symfony/translation/TranslatorInterface.php
deleted file mode 100644
index 869e0b9..0000000
--- a/vendor/symfony/translation/TranslatorInterface.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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;
-
-/**
- * TranslatorInterface.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface TranslatorInterface
-{
-    /**
-     * Translates the given message.
-     *
-     * @param string      $id         The message id (may also be an object that can be cast to string)
-     * @param array       $parameters An array of parameters for the message
-     * @param string|null $domain     The domain for the message or null to use the default
-     * @param string|null $locale     The locale or null to use the default
-     *
-     * @throws \InvalidArgumentException If the locale contains invalid characters
-     *
-     * @return string The translated string
-     */
-    public function trans($id, array $parameters = array(), $domain = null, $locale = null);
-
-    /**
-     * Translates the given choice message by choosing a translation according to a number.
-     *
-     * @param string      $id         The message id (may also be an object that can be cast to string)
-     * @param int         $number     The number to use to find the indice of the message
-     * @param array       $parameters An array of parameters for the message
-     * @param string|null $domain     The domain for the message or null to use the default
-     * @param string|null $locale     The locale or null to use the default
-     *
-     * @throws \InvalidArgumentException If the locale contains invalid characters
-     *
-     * @return string The translated string
-     */
-    public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null);
-
-    /**
-     * Sets the current locale.
-     *
-     * @param string $locale The locale
-     *
-     * @throws \InvalidArgumentException If the locale contains invalid characters
-     */
-    public function setLocale($locale);
-
-    /**
-     * Returns the current locale.
-     *
-     * @return string The locale
-     */
-    public function getLocale();
-}
diff --git a/vendor/symfony/translation/Writer/TranslationWriter.php b/vendor/symfony/translation/Writer/TranslationWriter.php
deleted file mode 100644
index 44ac182..0000000
--- a/vendor/symfony/translation/Writer/TranslationWriter.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?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\Writer;
-
-use Symfony\Component\Translation\MessageCatalogue;
-use Symfony\Component\Translation\Dumper\DumperInterface;
-
-/**
- * TranslationWriter writes translation messages.
- *
- * @author Michel Salib <michelsalib@hotmail.com>
- */
-class TranslationWriter
-{
-    /**
-     * Dumpers used for export.
-     *
-     * @var array
-     */
-    private $dumpers = array();
-
-    /**
-     * Adds a dumper to the writer.
-     *
-     * @param string          $format The format of the dumper
-     * @param DumperInterface $dumper The dumper
-     */
-    public function addDumper($format, DumperInterface $dumper)
-    {
-        $this->dumpers[$format] = $dumper;
-    }
-
-    /**
-     * Disables dumper backup.
-     */
-    public function disableBackup()
-    {
-        foreach ($this->dumpers as $dumper) {
-            $dumper->setBackup(false);
-        }
-    }
-
-    /**
-     * Obtains the list of supported formats.
-     *
-     * @return array
-     */
-    public function getFormats()
-    {
-        return array_keys($this->dumpers);
-    }
-
-    /**
-     * Writes translation from the catalogue according to the selected format.
-     *
-     * @param MessageCatalogue $catalogue The message catalogue to dump
-     * @param string           $format    The format to use to dump the messages
-     * @param array            $options   Options that are passed to the dumper
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function writeTranslations(MessageCatalogue $catalogue, $format, $options = array())
-    {
-        if (!isset($this->dumpers[$format])) {
-            throw new \InvalidArgumentException(sprintf('There is no dumper associated with format "%s".', $format));
-        }
-
-        // get the right dumper
-        $dumper = $this->dumpers[$format];
-
-        if (isset($options['path']) && !is_dir($options['path'])) {
-            mkdir($options['path'], 0777, true);
-        }
-
-        // save
-        $dumper->dump($catalogue, $options);
-    }
-}
diff --git a/vendor/symfony/translation/composer.json b/vendor/symfony/translation/composer.json
deleted file mode 100644
index ac833a4..0000000
--- a/vendor/symfony/translation/composer.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-    "name": "symfony/translation",
-    "type": "library",
-    "description": "Symfony Translation Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9"
-    },
-    "require-dev": {
-        "symfony/config": "~2.7",
-        "symfony/intl": "~2.4",
-        "symfony/yaml": "~2.2",
-        "psr/log": "~1.0"
-    },
-    "conflict": {
-        "symfony/config": "<2.7"
-    },
-    "suggest": {
-        "symfony/config": "",
-        "symfony/yaml": "",
-        "psr/log": "To use logging capability in translator"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Translation\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/translation/phpunit.xml.dist b/vendor/symfony/translation/phpunit.xml.dist
deleted file mode 100644
index 16cca4a..0000000
--- a/vendor/symfony/translation/phpunit.xml.dist
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Translation Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./vendor</directory>
-                <directory>./Tests</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/validator/.gitignore b/vendor/symfony/validator/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/validator/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/validator/CHANGELOG.md b/vendor/symfony/validator/CHANGELOG.md
deleted file mode 100644
index 4531286..0000000
--- a/vendor/symfony/validator/CHANGELOG.md
+++ /dev/null
@@ -1,170 +0,0 @@
-CHANGELOG
-=========
-
-2.7.0
------
-
- * deprecated `DefaultTranslator` in favor of `Symfony\Component\Translation\IdentityTranslator`
- * deprecated PHP7-incompatible constraints (Null, True, False) and related validators (NullValidator, TrueValidator, FalseValidator) in favor of their `Is`-prefixed equivalent
-
-2.6.0
------
-
- * [BC BREAK] `FileValidator` disallow empty files
- * [BC BREAK] `UserPasswordValidator` source message change
- * [BC BREAK] added internal `ExecutionContextInterface::setConstraint()`
- * added `ConstraintViolation::getConstraint()`
- * [BC BREAK] The `ExpressionValidator` will now evaluate the Expression even when the property value is null or an empty string
- * deprecated `ClassMetadata::hasMemberMetadatas()`
- * deprecated `ClassMetadata::getMemberMetadatas()`
- * deprecated `ClassMetadata::addMemberMetadata()`
- * [BC BREAK] added `Mapping\MetadataInterface::getConstraints()`
- * added generic "payload" option to all constraints for attaching domain-specific data
- * [BC BREAK] added `ConstraintViolationBuilderInterface::setCause()`
-
-2.5.0
------
-
- * deprecated `ApcCache` in favor of `DoctrineCache`
- * added `DoctrineCache` to adapt any Doctrine cache
- * `GroupSequence` now implements `ArrayAccess`, `Countable` and `Traversable`
- * [BC BREAK] changed `ClassMetadata::getGroupSequence()` to return a `GroupSequence` instance instead of an array
- * `Callback` can now be put onto properties (useful when you pass a closure to the constraint)
- * deprecated `ClassBasedInterface`
- * deprecated `MetadataInterface`
- * deprecated `PropertyMetadataInterface`
- * deprecated `PropertyMetadataContainerInterface`
- * deprecated `Mapping\ElementMetadata`
- * added `Mapping\MetadataInterface`
- * added `Mapping\ClassMetadataInterface`
- * added `Mapping\PropertyMetadataInterface`
- * added `Mapping\GenericMetadata`
- * added `Mapping\CascadingStrategy`
- * added `Mapping\TraversalStrategy`
- * deprecated `Mapping\ClassMetadata::accept()`
- * deprecated `Mapping\MemberMetadata::accept()`
- * removed array type hint of `Mapping\ClassMetadata::setGroupSequence()`
- * deprecated `MetadataFactoryInterface`
- * deprecated `Mapping\BlackholeMetadataFactory`
- * deprecated `Mapping\ClassMetadataFactory`
- * added `Mapping\Factory\MetadataFactoryInterface`
- * added `Mapping\Factory\BlackHoleMetadataFactory`
- * added `Mapping\Factory\LazyLoadingMetadataFactory`
- * deprecated `ExecutionContextInterface`
- * deprecated `ExecutionContext`
- * deprecated `GlobalExecutionContextInterface`
- * added `Context\ExecutionContextInterface`
- * added `Context\ExecutionContext`
- * added `Context\ExecutionContextFactoryInterface`
- * added `Context\ExecutionContextFactory`
- * deprecated `ValidatorInterface`
- * deprecated `Validator`
- * deprecated `ValidationVisitorInterface`
- * deprecated `ValidationVisitor`
- * added `Validator\ValidatorInterface`
- * added `Validator\RecursiveValidator`
- * added `Validator\ContextualValidatorInterface`
- * added `Validator\RecursiveContextualValidator`
- * added `Violation\ConstraintViolationBuilderInterface`
- * added `Violation\ConstraintViolationBuilder`
- * added `ConstraintViolation::getParameters()`
- * added `ConstraintViolation::getPlural()`
- * added `Constraints\Traverse`
- * deprecated `$deep` property in `Constraints\Valid`
- * added `ValidatorBuilderInterface::setApiVersion()`
- * added `Validation::API_VERSION_2_4`
- * added `Validation::API_VERSION_2_5`
- * added `Exception\OutOfBoundsException`
- * added `Exception\UnsupportedMetadataException`
- * made `Exception\ValidatorException` extend `Exception\RuntimeException`
- * added `Util\PropertyPath`
- * made the PropertyAccess component an optional dependency
- * deprecated `ValidatorBuilder::setPropertyAccessor()`
- * deprecated `validate` and `validateValue` on `Validator\Context\ExecutionContext` use `getValidator()` together with `inContext()` instead
-
-2.4.0
------
-
- * added a constraint the uses the expression language
- * added `minRatio`, `maxRatio`, `allowSquare`, `allowLandscape`, and `allowPortrait` to Image validator
-
-2.3.29
-------
-
- * fixed compatibility with PHP7 and up by introducing new constraints (IsNull, IsTrue, IsFalse) and related validators (IsNullValidator, IsTrueValidator, IsFalseValidator)
-
-2.3.0
------
-
- * added the ISBN, ISSN, and IBAN validators
- * copied the constraints `Optional` and `Required` to the
-   `Symfony\Component\Validator\Constraints\` namespace and deprecated the original
-   classes.
- * added comparison validators (EqualTo, NotEqualTo, LessThan, LessThanOrEqualTo, GreaterThan, GreaterThanOrEqualTo, IdenticalTo, NotIdenticalTo)
-
-2.2.0
------
-
- * added a CardScheme validator
- * added a Luhn validator
- * moved @api-tags from `Validator` to `ValidatorInterface`
- * moved @api-tags from `ConstraintViolation` to the new `ConstraintViolationInterface`
- * moved @api-tags from `ConstraintViolationList` to the new `ConstraintViolationListInterface`
- * moved @api-tags from `ExecutionContext` to the new `ExecutionContextInterface`
- * [BC BREAK] `ConstraintValidatorInterface::initialize` is now type hinted against `ExecutionContextInterface` instead of `ExecutionContext`
- * [BC BREAK] changed the visibility of the properties in `Validator` from protected to private
- * deprecated `ClassMetadataFactoryInterface` in favor of the new `MetadataFactoryInterface`
- * deprecated `ClassMetadataFactory::getClassMetadata` in favor of `getMetadataFor`
- * created `MetadataInterface`, `PropertyMetadataInterface`, `ClassBasedInterface` and `PropertyMetadataContainerInterface`
- * deprecated `GraphWalker` in favor of the new `ValidationVisitorInterface`
- * deprecated `ExecutionContext::addViolationAtPath`
- * deprecated `ExecutionContext::addViolationAtSubPath` in favor of `ExecutionContextInterface::addViolationAt`
- * deprecated `ExecutionContext::getCurrentClass` in favor of `ExecutionContextInterface::getClassName`
- * deprecated `ExecutionContext::getCurrentProperty` in favor of `ExecutionContextInterface::getPropertyName`
- * deprecated `ExecutionContext::getCurrentValue` in favor of `ExecutionContextInterface::getValue`
- * deprecated `ExecutionContext::getGraphWalker` in favor of `ExecutionContextInterface::validate` and `ExecutionContextInterface::validateValue`
- * improved `ValidatorInterface::validateValue` to accept arrays of constraints
- * changed `ValidatorInterface::getMetadataFactory` to return a `MetadataFactoryInterface` instead of a `ClassMetadataFactoryInterface`
- * removed `ClassMetadataFactoryInterface` type hint from `ValidatorBuilderInterface::setMetadataFactory`.
-   As of Symfony 2.3, this method will be typed against `MetadataFactoryInterface` instead.
- * [BC BREAK] the switches `traverse` and `deep` in the `Valid` constraint and in `GraphWalker::walkReference`
-   are ignored for arrays now. Arrays are always traversed recursively.
- * added dependency to Translation component
- * violation messages are now translated with a TranslatorInterface implementation
- * [BC BREAK] inserted argument `$message` in the constructor of `ConstraintViolation`
- * [BC BREAK] inserted arguments `$translator` and `$translationDomain` in the constructor of `ExecutionContext`
- * [BC BREAK] inserted arguments `$translator` and `$translationDomain` in the constructor of `GraphWalker`
- * [BC BREAK] inserted arguments `$translator` and `$translationDomain` in the constructor of `ValidationVisitor`
- * [BC BREAK] inserted arguments `$translator` and `$translationDomain` in the constructor of `Validator`
- * [BC BREAK] added `setTranslator()` and `setTranslationDomain()` to `ValidatorBuilderInterface`
- * improved the Validator to support pluralized messages by default
- * [BC BREAK] changed the source of all pluralized messages in the translation files to the pluralized version
- * added ExceptionInterface, BadMethodCallException and InvalidArgumentException
-
-2.1.0
------
-
- * added support for `ctype_*` assertions in `TypeValidator`
- * improved the ImageValidator with min width, max width, min height, and max height constraints
- * added support for MIME with wildcard in FileValidator
- * changed Collection validator to add "missing" and "extra" errors to
-   individual fields
- * changed default value for `extraFieldsMessage` and `missingFieldsMessage`
-   in Collection constraint
- * made ExecutionContext immutable
- * deprecated Constraint methods `setMessage`, `getMessageTemplate` and
-   `getMessageParameters`
- * added support for dynamic group sequences with the GroupSequenceProvider pattern
- * [BC BREAK] ConstraintValidatorInterface method `isValid` has been renamed to
-   `validate`, its return value was dropped. ConstraintValidator still contains
-   `isValid` for BC
- * [BC BREAK] collections in fields annotated with `Valid` are not traversed
-   recursively anymore by default. `Valid` contains a new property `deep`
-   which enables the BC behavior.
- * added Count constraint
- * added Length constraint
- * added Range constraint
- * deprecated the Min and Max constraints
- * deprecated the MinLength and MaxLength constraints
- * added Validation and ValidatorBuilderInterface
- * deprecated ValidatorContext, ValidatorContextInterface and ValidatorFactory
diff --git a/vendor/symfony/validator/ClassBasedInterface.php b/vendor/symfony/validator/ClassBasedInterface.php
deleted file mode 100644
index 7c2eb8f..0000000
--- a/vendor/symfony/validator/ClassBasedInterface.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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;
-
-/**
- * An object backed by a PHP class.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link Mapping\ClassMetadataInterface} instead.
- */
-interface ClassBasedInterface
-{
-    /**
-     * Returns the name of the backing PHP class.
-     *
-     * @return string The name of the backing class.
-     */
-    public function getClassName();
-}
diff --git a/vendor/symfony/validator/Constraint.php b/vendor/symfony/validator/Constraint.php
deleted file mode 100644
index dc93d22..0000000
--- a/vendor/symfony/validator/Constraint.php
+++ /dev/null
@@ -1,309 +0,0 @@
-<?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;
-
-use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
-use Symfony\Component\Validator\Exception\InvalidArgumentException;
-use Symfony\Component\Validator\Exception\InvalidOptionsException;
-use Symfony\Component\Validator\Exception\MissingOptionsException;
-
-/**
- * Contains the properties of a constraint definition.
- *
- * A constraint can be defined on a class, an option or a getter method.
- * The Constraint class encapsulates all the configuration required for
- * validating this class, option or getter result successfully.
- *
- * Constraint instances are immutable and serializable.
- *
- * @property array $groups The groups that the constraint belongs to
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-abstract class Constraint
-{
-    /**
-     * The name of the group given to all constraints with no explicit group.
-     *
-     * @var string
-     */
-    const DEFAULT_GROUP = 'Default';
-
-    /**
-     * Marks a constraint that can be put onto classes.
-     *
-     * @var string
-     */
-    const CLASS_CONSTRAINT = 'class';
-
-    /**
-     * Marks a constraint that can be put onto properties.
-     *
-     * @var string
-     */
-    const PROPERTY_CONSTRAINT = 'property';
-
-    /**
-     * Maps error codes to the names of their constants.
-     *
-     * @var array
-     */
-    protected static $errorNames = array();
-
-    /**
-     * Domain-specific data attached to a constraint.
-     *
-     * @var mixed
-     */
-    public $payload;
-
-    /**
-     * Returns the name of the given error code.
-     *
-     * @param int $errorCode The error code
-     *
-     * @return string The name of the error code
-     *
-     * @throws InvalidArgumentException If the error code does not exist
-     */
-    public static function getErrorName($errorCode)
-    {
-        if (!isset(static::$errorNames[$errorCode])) {
-            throw new InvalidArgumentException(sprintf(
-                'The error code "%s" does not exist for constraint of type "%s".',
-                $errorCode,
-                get_called_class()
-            ));
-        }
-
-        return static::$errorNames[$errorCode];
-    }
-
-    /**
-     * Initializes the constraint with options.
-     *
-     * You should pass an associative array. The keys should be the names of
-     * existing properties in this class. The values should be the value for these
-     * properties.
-     *
-     * Alternatively you can override the method getDefaultOption() to return the
-     * name of an existing property. If no associative array is passed, this
-     * property is set instead.
-     *
-     * You can force that certain options are set by overriding
-     * getRequiredOptions() to return the names of these options. If any
-     * option is not set here, an exception is thrown.
-     *
-     * @param mixed $options The options (as associative array)
-     *                       or the value for the default
-     *                       option (any other type)
-     *
-     * @throws InvalidOptionsException       When you pass the names of non-existing
-     *                                       options
-     * @throws MissingOptionsException       When you don't pass any of the options
-     *                                       returned by getRequiredOptions()
-     * @throws ConstraintDefinitionException When you don't pass an associative
-     *                                       array, but getDefaultOption() returns
-     *                                       null
-     */
-    public function __construct($options = null)
-    {
-        $invalidOptions = array();
-        $missingOptions = array_flip((array) $this->getRequiredOptions());
-        $knownOptions = get_object_vars($this);
-
-        // The "groups" option is added to the object lazily
-        $knownOptions['groups'] = true;
-
-        if (is_array($options) && count($options) >= 1 && isset($options['value']) && !property_exists($this, 'value')) {
-            $options[$this->getDefaultOption()] = $options['value'];
-            unset($options['value']);
-        }
-
-        if (is_array($options) && count($options) > 0 && is_string(key($options))) {
-            foreach ($options as $option => $value) {
-                if (array_key_exists($option, $knownOptions)) {
-                    $this->$option = $value;
-                    unset($missingOptions[$option]);
-                } else {
-                    $invalidOptions[] = $option;
-                }
-            }
-        } elseif (null !== $options && !(is_array($options) && count($options) === 0)) {
-            $option = $this->getDefaultOption();
-
-            if (null === $option) {
-                throw new ConstraintDefinitionException(
-                    sprintf('No default option is configured for constraint %s', get_class($this))
-                );
-            }
-
-            if (array_key_exists($option, $knownOptions)) {
-                $this->$option = $options;
-                unset($missingOptions[$option]);
-            } else {
-                $invalidOptions[] = $option;
-            }
-        }
-
-        if (count($invalidOptions) > 0) {
-            throw new InvalidOptionsException(
-                sprintf('The options "%s" do not exist in constraint %s', implode('", "', $invalidOptions), get_class($this)),
-                $invalidOptions
-            );
-        }
-
-        if (count($missingOptions) > 0) {
-            throw new MissingOptionsException(
-                sprintf('The options "%s" must be set for constraint %s', implode('", "', array_keys($missingOptions)), get_class($this)),
-                array_keys($missingOptions)
-            );
-        }
-    }
-
-    /**
-     * Sets the value of a lazily initialized option.
-     *
-     * Corresponding properties are added to the object on first access. Hence
-     * this method will be called at most once per constraint instance and
-     * option name.
-     *
-     * @param string $option The option name
-     * @param mixed  $value  The value to set
-     *
-     * @throws InvalidOptionsException If an invalid option name is given
-     */
-    public function __set($option, $value)
-    {
-        if ('groups' === $option) {
-            $this->groups = (array) $value;
-
-            return;
-        }
-
-        throw new InvalidOptionsException(sprintf('The option "%s" does not exist in constraint %s', $option, get_class($this)), array($option));
-    }
-
-    /**
-     * Returns the value of a lazily initialized option.
-     *
-     * Corresponding properties are added to the object on first access. Hence
-     * this method will be called at most once per constraint instance and
-     * option name.
-     *
-     * @param string $option The option name
-     *
-     * @return mixed The value of the option
-     *
-     * @throws InvalidOptionsException If an invalid option name is given
-     *
-     * @internal This method should not be used or overwritten in userland code.
-     *
-     * @since 2.6
-     */
-    public function __get($option)
-    {
-        if ('groups' === $option) {
-            $this->groups = array(self::DEFAULT_GROUP);
-
-            return $this->groups;
-        }
-
-        throw new InvalidOptionsException(sprintf('The option "%s" does not exist in constraint %s', $option, get_class($this)), array($option));
-    }
-
-    /**
-     * Adds the given group if this constraint is in the Default group.
-     *
-     * @param string $group
-     */
-    public function addImplicitGroupName($group)
-    {
-        if (in_array(self::DEFAULT_GROUP, $this->groups) && !in_array($group, $this->groups)) {
-            $this->groups[] = $group;
-        }
-    }
-
-    /**
-     * Returns the name of the default option.
-     *
-     * Override this method to define a default option.
-     *
-     * @return string
-     *
-     * @see __construct()
-     */
-    public function getDefaultOption()
-    {
-    }
-
-    /**
-     * Returns the name of the required options.
-     *
-     * Override this method if you want to define required options.
-     *
-     * @return array
-     *
-     * @see __construct()
-     */
-    public function getRequiredOptions()
-    {
-        return array();
-    }
-
-    /**
-     * Returns the name of the class that validates this constraint.
-     *
-     * By default, this is the fully qualified name of the constraint class
-     * suffixed with "Validator". You can override this method to change that
-     * behaviour.
-     *
-     * @return string
-     */
-    public function validatedBy()
-    {
-        return get_class($this).'Validator';
-    }
-
-    /**
-     * Returns whether the constraint can be put onto classes, properties or
-     * both.
-     *
-     * This method should return one or more of the constants
-     * Constraint::CLASS_CONSTRAINT and Constraint::PROPERTY_CONSTRAINT.
-     *
-     * @return string|array One or more constant values
-     */
-    public function getTargets()
-    {
-        return self::PROPERTY_CONSTRAINT;
-    }
-
-    /**
-     * Optimizes the serialized value to minimize storage space.
-     *
-     * @return array The properties to serialize
-     *
-     * @internal This method may be replaced by an implementation of
-     *           {@link \Serializable} in the future. Please don't use or
-     *           overwrite it.
-     *
-     * @since 2.6
-     */
-    public function __sleep()
-    {
-        // Initialize "groups" option if it is not set
-        $this->groups;
-
-        return array_keys(get_object_vars($this));
-    }
-}
diff --git a/vendor/symfony/validator/ConstraintValidator.php b/vendor/symfony/validator/ConstraintValidator.php
deleted file mode 100644
index df6e86e..0000000
--- a/vendor/symfony/validator/ConstraintValidator.php
+++ /dev/null
@@ -1,218 +0,0 @@
-<?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;
-
-use Symfony\Component\Validator\Context\ExecutionContextInterface as ExecutionContextInterface2Dot5;
-use Symfony\Component\Validator\Violation\ConstraintViolationBuilderInterface;
-use Symfony\Component\Validator\Violation\LegacyConstraintViolationBuilder;
-
-/**
- * Base class for constraint validators.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-abstract class ConstraintValidator implements ConstraintValidatorInterface
-{
-    /**
-     * Whether to format {@link \DateTime} objects as RFC-3339 dates
-     * ("Y-m-d H:i:s").
-     *
-     * @var int
-     */
-    const PRETTY_DATE = 1;
-
-    /**
-     * Whether to cast objects with a "__toString()" method to strings.
-     *
-     * @var int
-     */
-    const OBJECT_TO_STRING = 2;
-
-    /**
-     * @var ExecutionContextInterface
-     */
-    protected $context;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function initialize(ExecutionContextInterface $context)
-    {
-        $this->context = $context;
-    }
-
-    /**
-     * Wrapper for {@link ExecutionContextInterface::buildViolation} that
-     * supports the 2.4 context API.
-     *
-     * @param string $message    The violation message
-     * @param array  $parameters The message parameters
-     *
-     * @return ConstraintViolationBuilderInterface The violation builder
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    protected function buildViolation($message, array $parameters = array())
-    {
-        @trigger_error('The '.__METHOD__.' is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        if ($this->context instanceof ExecutionContextInterface2Dot5) {
-            return $this->context->buildViolation($message, $parameters);
-        }
-
-        return new LegacyConstraintViolationBuilder($this->context, $message, $parameters);
-    }
-
-    /**
-     * Wrapper for {@link ExecutionContextInterface::buildViolation} that
-     * supports the 2.4 context API.
-     *
-     * @param ExecutionContextInterface $context    The context to use
-     * @param string                    $message    The violation message
-     * @param array                     $parameters The message parameters
-     *
-     * @return ConstraintViolationBuilderInterface The violation builder
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    protected function buildViolationInContext(ExecutionContextInterface $context, $message, array $parameters = array())
-    {
-        @trigger_error('The '.__METHOD__.' is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        if ($context instanceof ExecutionContextInterface2Dot5) {
-            return $context->buildViolation($message, $parameters);
-        }
-
-        return new LegacyConstraintViolationBuilder($context, $message, $parameters);
-    }
-
-    /**
-     * Returns a string representation of the type of the value.
-     *
-     * This method should be used if you pass the type of a value as
-     * message parameter to a constraint violation. Note that such
-     * parameters should usually not be included in messages aimed at
-     * non-technical people.
-     *
-     * @param mixed $value The value to return the type of
-     *
-     * @return string The type of the value
-     */
-    protected function formatTypeOf($value)
-    {
-        return is_object($value) ? get_class($value) : gettype($value);
-    }
-
-    /**
-     * Returns a string representation of the value.
-     *
-     * This method returns the equivalent PHP tokens for most scalar types
-     * (i.e. "false" for false, "1" for 1 etc.). Strings are always wrapped
-     * in double quotes ("). Objects, arrays and resources are formatted as
-     * "object", "array" and "resource". If the parameter $prettyDateTime
-     * is set to true, {@link \DateTime} objects will be formatted as
-     * RFC-3339 dates ("Y-m-d H:i:s").
-     *
-     * Be careful when passing message parameters to a constraint violation
-     * that (may) contain objects, arrays or resources. These parameters
-     * should only be displayed for technical users. Non-technical users
-     * won't know what an "object", "array" or "resource" is and will be
-     * confused by the violation message.
-     *
-     * @param mixed $value  The value to format as string
-     * @param int   $format A bitwise combination of the format
-     *                      constants in this class
-     *
-     * @return string The string representation of the passed value
-     */
-    protected function formatValue($value, $format = 0)
-    {
-        $isDateTime = $value instanceof \DateTime || $value instanceof \DateTimeInterface;
-
-        if (($format & self::PRETTY_DATE) && $isDateTime) {
-            if (class_exists('IntlDateFormatter')) {
-                $locale = \Locale::getDefault();
-                $formatter = new \IntlDateFormatter($locale, \IntlDateFormatter::MEDIUM, \IntlDateFormatter::SHORT);
-
-                // neither the native nor the stub IntlDateFormatter support
-                // DateTimeImmutable as of yet
-                if (!$value instanceof \DateTime) {
-                    $value = new \DateTime(
-                        $value->format('Y-m-d H:i:s.u e'),
-                        $value->getTimezone()
-                    );
-                }
-
-                return $formatter->format($value);
-            }
-
-            return $value->format('Y-m-d H:i:s');
-        }
-
-        if (is_object($value)) {
-            if ($format & self::OBJECT_TO_STRING && method_exists($value, '__toString')) {
-                return $value->__toString();
-            }
-
-            return 'object';
-        }
-
-        if (is_array($value)) {
-            return 'array';
-        }
-
-        if (is_string($value)) {
-            return '"'.$value.'"';
-        }
-
-        if (is_resource($value)) {
-            return 'resource';
-        }
-
-        if (null === $value) {
-            return 'null';
-        }
-
-        if (false === $value) {
-            return 'false';
-        }
-
-        if (true === $value) {
-            return 'true';
-        }
-
-        return (string) $value;
-    }
-
-    /**
-     * Returns a string representation of a list of values.
-     *
-     * Each of the values is converted to a string using
-     * {@link formatValue()}. The values are then concatenated with commas.
-     *
-     * @param array $values A list of values
-     * @param int   $format A bitwise combination of the format
-     *                      constants in this class
-     *
-     * @return string The string representation of the value list
-     *
-     * @see formatValue()
-     */
-    protected function formatValues(array $values, $format = 0)
-    {
-        foreach ($values as $key => $value) {
-            $values[$key] = $this->formatValue($value, $format);
-        }
-
-        return implode(', ', $values);
-    }
-}
diff --git a/vendor/symfony/validator/ConstraintValidatorFactory.php b/vendor/symfony/validator/ConstraintValidatorFactory.php
deleted file mode 100644
index cc6981b..0000000
--- a/vendor/symfony/validator/ConstraintValidatorFactory.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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;
-
-use Symfony\Component\Validator\Constraints\ExpressionValidator;
-
-/**
- * Default implementation of the ConstraintValidatorFactoryInterface.
- *
- * This enforces the convention that the validatedBy() method on any
- * Constraint will return the class name of the ConstraintValidator that
- * should validate the Constraint.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ConstraintValidatorFactory implements ConstraintValidatorFactoryInterface
-{
-    protected $validators = array();
-
-    private $propertyAccessor;
-
-    public function __construct($propertyAccessor = null)
-    {
-        $this->propertyAccessor = $propertyAccessor;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getInstance(Constraint $constraint)
-    {
-        $className = $constraint->validatedBy();
-
-        if (!isset($this->validators[$className])) {
-            $this->validators[$className] = 'validator.expression' === $className
-                ? new ExpressionValidator($this->propertyAccessor)
-                : new $className();
-        }
-
-        return $this->validators[$className];
-    }
-}
diff --git a/vendor/symfony/validator/ConstraintValidatorFactoryInterface.php b/vendor/symfony/validator/ConstraintValidatorFactoryInterface.php
deleted file mode 100644
index 5e21627..0000000
--- a/vendor/symfony/validator/ConstraintValidatorFactoryInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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;
-
-/**
- * Specifies an object able to return the correct ConstraintValidatorInterface
- * instance given a Constraint object.
- */
-interface ConstraintValidatorFactoryInterface
-{
-    /**
-     * Given a Constraint, this returns the ConstraintValidatorInterface
-     * object that should be used to verify its validity.
-     *
-     * @param Constraint $constraint The source constraint
-     *
-     * @return ConstraintValidatorInterface
-     */
-    public function getInstance(Constraint $constraint);
-}
diff --git a/vendor/symfony/validator/ConstraintValidatorInterface.php b/vendor/symfony/validator/ConstraintValidatorInterface.php
deleted file mode 100644
index 85fd451..0000000
--- a/vendor/symfony/validator/ConstraintValidatorInterface.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ConstraintValidatorInterface
-{
-    /**
-     * Initializes the constraint validator.
-     *
-     * @param ExecutionContextInterface $context The current validation context
-     */
-    public function initialize(ExecutionContextInterface $context);
-
-    /**
-     * Checks if the passed value is valid.
-     *
-     * @param mixed      $value      The value that should be validated
-     * @param Constraint $constraint The constraint for the validation
-     */
-    public function validate($value, Constraint $constraint);
-}
diff --git a/vendor/symfony/validator/ConstraintViolation.php b/vendor/symfony/validator/ConstraintViolation.php
deleted file mode 100644
index 31b44d2..0000000
--- a/vendor/symfony/validator/ConstraintViolation.php
+++ /dev/null
@@ -1,243 +0,0 @@
-<?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;
-
-/**
- * Default implementation of {@ConstraintViolationInterface}.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ConstraintViolation implements ConstraintViolationInterface
-{
-    /**
-     * @var string
-     */
-    private $message;
-
-    /**
-     * @var string
-     */
-    private $messageTemplate;
-
-    /**
-     * @var array
-     */
-    private $parameters;
-
-    /**
-     * @var int|null
-     */
-    private $plural;
-
-    /**
-     * @var mixed
-     */
-    private $root;
-
-    /**
-     * @var string
-     */
-    private $propertyPath;
-
-    /**
-     * @var mixed
-     */
-    private $invalidValue;
-
-    /**
-     * @var Constraint|null
-     */
-    private $constraint;
-
-    /**
-     * @var mixed
-     */
-    private $code;
-
-    /**
-     * @var mixed
-     */
-    private $cause;
-
-    /**
-     * Creates a new constraint violation.
-     *
-     * @param string          $message         The violation message
-     * @param string          $messageTemplate The raw violation message
-     * @param array           $parameters      The parameters to substitute in the
-     *                                         raw violation message
-     * @param mixed           $root            The value originally passed to the
-     *                                         validator
-     * @param string          $propertyPath    The property path from the root
-     *                                         value to the invalid value
-     * @param mixed           $invalidValue    The invalid value that caused this
-     *                                         violation
-     * @param int|null        $plural          The number for determining the plural
-     *                                         form when translating the message
-     * @param mixed           $code            The error code of the violation
-     * @param Constraint|null $constraint      The constraint whose validation
-     *                                         caused the violation
-     * @param mixed           $cause           The cause of the violation
-     */
-    public function __construct($message, $messageTemplate, array $parameters, $root, $propertyPath, $invalidValue, $plural = null, $code = null, Constraint $constraint = null, $cause = null)
-    {
-        $this->message = $message;
-        $this->messageTemplate = $messageTemplate;
-        $this->parameters = $parameters;
-        $this->plural = $plural;
-        $this->root = $root;
-        $this->propertyPath = $propertyPath;
-        $this->invalidValue = $invalidValue;
-        $this->constraint = $constraint;
-        $this->code = $code;
-        $this->cause = $cause;
-    }
-
-    /**
-     * Converts the violation into a string for debugging purposes.
-     *
-     * @return string The violation as string.
-     */
-    public function __toString()
-    {
-        if (is_object($this->root)) {
-            $class = 'Object('.get_class($this->root).')';
-        } elseif (is_array($this->root)) {
-            $class = 'Array';
-        } else {
-            $class = (string) $this->root;
-        }
-
-        $propertyPath = (string) $this->propertyPath;
-        $code = $this->code;
-
-        if ('' !== $propertyPath && '[' !== $propertyPath[0] && '' !== $class) {
-            $class .= '.';
-        }
-
-        if (!empty($code)) {
-            $code = ' (code '.$code.')';
-        }
-
-        return $class.$propertyPath.":\n    ".$this->getMessage().$code;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMessageTemplate()
-    {
-        return $this->messageTemplate;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since version 2.7, to be removed in 3.0.
-     *             Use getParameters() instead
-     */
-    public function getMessageParameters()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.7, to be removed in 3.0. Use the ConstraintViolation::getParameters() method instead.', E_USER_DEPRECATED);
-
-        return $this->parameters;
-    }
-
-    /**
-     * Alias of {@link getMessageParameters()}.
-     */
-    public function getParameters()
-    {
-        return $this->parameters;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since version 2.7, to be removed in 3.0.
-     *             Use getPlural() instead
-     */
-    public function getMessagePluralization()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.7, to be removed in 3.0. Use the ConstraintViolation::getPlural() method instead.', E_USER_DEPRECATED);
-
-        return $this->plural;
-    }
-
-    /**
-     * Alias of {@link getMessagePluralization()}.
-     */
-    public function getPlural()
-    {
-        return $this->plural;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMessage()
-    {
-        return $this->message;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRoot()
-    {
-        return $this->root;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPropertyPath()
-    {
-        return $this->propertyPath;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getInvalidValue()
-    {
-        return $this->invalidValue;
-    }
-
-    /**
-     * Returns the constraint whose validation caused the violation.
-     *
-     * @return Constraint|null The constraint or null if it is not known
-     */
-    public function getConstraint()
-    {
-        return $this->constraint;
-    }
-
-    /**
-     * Returns the cause of the violation.
-     *
-     * @return mixed
-     */
-    public function getCause()
-    {
-        return $this->cause;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCode()
-    {
-        return $this->code;
-    }
-}
diff --git a/vendor/symfony/validator/ConstraintViolationInterface.php b/vendor/symfony/validator/ConstraintViolationInterface.php
deleted file mode 100644
index 1ed09b3..0000000
--- a/vendor/symfony/validator/ConstraintViolationInterface.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?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;
-
-/**
- * A violation of a constraint that happened during validation.
- *
- * For each constraint that fails during validation one or more violations are
- * created. The violations store the violation message, the path to the failing
- * element in the validation graph and the root element that was originally
- * passed to the validator. For example, take the following graph:
- *
- * <pre>
- * (Person)---(firstName: string)
- *      \
- *   (address: Address)---(street: string)
- * </pre>
- *
- * If the <tt>Person</tt> object is validated and validation fails for the
- * "firstName" property, the generated violation has the <tt>Person</tt>
- * instance as root and the property path "firstName". If validation fails
- * for the "street" property of the related <tt>Address</tt> instance, the root
- * element is still the person, but the property path is "address.street".
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ConstraintViolationInterface
-{
-    /**
-     * Returns the violation message.
-     *
-     * @return string The violation message.
-     */
-    public function getMessage();
-
-    /**
-     * Returns the raw violation message.
-     *
-     * The raw violation message contains placeholders for the parameters
-     * returned by {@link getMessageParameters}. Typically you'll pass the
-     * message template and parameters to a translation engine.
-     *
-     * @return string The raw violation message.
-     */
-    public function getMessageTemplate();
-
-    /**
-     * Returns the parameters to be inserted into the raw violation message.
-     *
-     * @return array A possibly empty list of parameters indexed by the names
-     *               that appear in the message template.
-     *
-     * @see getMessageTemplate()
-     *
-     * @deprecated since version 2.7, to be replaced by getParameters() in 3.0.
-     */
-    public function getMessageParameters();
-
-    /**
-     * Returns a number for pluralizing the violation message.
-     *
-     * For example, the message template could have different translation based
-     * on a parameter "choices":
-     *
-     * <ul>
-     * <li>Please select exactly one entry. (choices=1)</li>
-     * <li>Please select two entries. (choices=2)</li>
-     * </ul>
-     *
-     * This method returns the value of the parameter for choosing the right
-     * pluralization form (in this case "choices").
-     *
-     * @return int|null The number to use to pluralize of the message.
-     *
-     * @deprecated since version 2.7, to be replaced by getPlural() in 3.0.
-     */
-    public function getMessagePluralization();
-
-    /**
-     * Returns the root element of the validation.
-     *
-     * @return mixed The value that was passed originally to the validator when
-     *               the validation was started. Because the validator traverses
-     *               the object graph, the value at which the violation occurs
-     *               is not necessarily the value that was originally validated.
-     */
-    public function getRoot();
-
-    /**
-     * Returns the property path from the root element to the violation.
-     *
-     * @return string The property path indicates how the validator reached
-     *                the invalid value from the root element. If the root
-     *                element is a <tt>Person</tt> instance with a property
-     *                "address" that contains an <tt>Address</tt> instance
-     *                with an invalid property "street", the generated property
-     *                path is "address.street". Property access is denoted by
-     *                dots, while array access is denoted by square brackets,
-     *                for example "addresses[1].street".
-     */
-    public function getPropertyPath();
-
-    /**
-     * Returns the value that caused the violation.
-     *
-     * @return mixed The invalid value that caused the validated constraint to
-     *               fail.
-     */
-    public function getInvalidValue();
-
-    /**
-     * Returns a machine-digestible error code for the violation.
-     *
-     * @return mixed The error code.
-     */
-    public function getCode();
-}
diff --git a/vendor/symfony/validator/ConstraintViolationList.php b/vendor/symfony/validator/ConstraintViolationList.php
deleted file mode 100644
index cccfa86..0000000
--- a/vendor/symfony/validator/ConstraintViolationList.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?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;
-
-/**
- * Default implementation of {@ConstraintViolationListInterface}.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ConstraintViolationList implements \IteratorAggregate, ConstraintViolationListInterface
-{
-    /**
-     * @var ConstraintViolationInterface[]
-     */
-    private $violations = array();
-
-    /**
-     * Creates a new constraint violation list.
-     *
-     * @param ConstraintViolationInterface[] $violations The constraint violations to add to the list
-     */
-    public function __construct(array $violations = array())
-    {
-        foreach ($violations as $violation) {
-            $this->add($violation);
-        }
-    }
-
-    /**
-     * Converts the violation into a string for debugging purposes.
-     *
-     * @return string The violation as string.
-     */
-    public function __toString()
-    {
-        $string = '';
-
-        foreach ($this->violations as $violation) {
-            $string .= $violation."\n";
-        }
-
-        return $string;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function add(ConstraintViolationInterface $violation)
-    {
-        $this->violations[] = $violation;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addAll(ConstraintViolationListInterface $otherList)
-    {
-        foreach ($otherList as $violation) {
-            $this->violations[] = $violation;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function get($offset)
-    {
-        if (!isset($this->violations[$offset])) {
-            throw new \OutOfBoundsException(sprintf('The offset "%s" does not exist.', $offset));
-        }
-
-        return $this->violations[$offset];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($offset)
-    {
-        return isset($this->violations[$offset]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function set($offset, ConstraintViolationInterface $violation)
-    {
-        $this->violations[$offset] = $violation;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function remove($offset)
-    {
-        unset($this->violations[$offset]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->violations);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function count()
-    {
-        return count($this->violations);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function offsetExists($offset)
-    {
-        return $this->has($offset);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function offsetGet($offset)
-    {
-        return $this->get($offset);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function offsetSet($offset, $violation)
-    {
-        if (null === $offset) {
-            $this->add($violation);
-        } else {
-            $this->set($offset, $violation);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function offsetUnset($offset)
-    {
-        $this->remove($offset);
-    }
-}
diff --git a/vendor/symfony/validator/ConstraintViolationListInterface.php b/vendor/symfony/validator/ConstraintViolationListInterface.php
deleted file mode 100644
index 8d15bd7..0000000
--- a/vendor/symfony/validator/ConstraintViolationListInterface.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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;
-
-/**
- * A list of constraint violations.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ConstraintViolationListInterface extends \Traversable, \Countable, \ArrayAccess
-{
-    /**
-     * Adds a constraint violation to this list.
-     *
-     * @param ConstraintViolationInterface $violation The violation to add.
-     */
-    public function add(ConstraintViolationInterface $violation);
-
-    /**
-     * Merges an existing violation list into this list.
-     *
-     * @param ConstraintViolationListInterface $otherList The list to merge.
-     */
-    public function addAll(ConstraintViolationListInterface $otherList);
-
-    /**
-     * Returns the violation at a given offset.
-     *
-     * @param int $offset The offset of the violation.
-     *
-     * @return ConstraintViolationInterface The violation.
-     *
-     * @throws \OutOfBoundsException If the offset does not exist.
-     */
-    public function get($offset);
-
-    /**
-     * Returns whether the given offset exists.
-     *
-     * @param int $offset The violation offset.
-     *
-     * @return bool Whether the offset exists.
-     */
-    public function has($offset);
-
-    /**
-     * Sets a violation at a given offset.
-     *
-     * @param int                          $offset    The violation offset.
-     * @param ConstraintViolationInterface $violation The violation.
-     */
-    public function set($offset, ConstraintViolationInterface $violation);
-
-    /**
-     * Removes a violation at a given offset.
-     *
-     * @param int $offset The offset to remove.
-     */
-    public function remove($offset);
-}
diff --git a/vendor/symfony/validator/Constraints/AbstractComparison.php b/vendor/symfony/validator/Constraints/AbstractComparison.php
deleted file mode 100644
index fb1f1f3..0000000
--- a/vendor/symfony/validator/Constraints/AbstractComparison.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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\Exception\ConstraintDefinitionException;
-
-/**
- * Used for the comparison of values.
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-abstract class AbstractComparison extends Constraint
-{
-    public $message;
-    public $value;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct($options = null)
-    {
-        if (is_array($options) && !isset($options['value'])) {
-            throw new ConstraintDefinitionException(sprintf(
-                'The %s constraint requires the "value" option to be set.',
-                get_class($this)
-            ));
-        }
-
-        parent::__construct($options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDefaultOption()
-    {
-        return 'value';
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/AbstractComparisonValidator.php b/vendor/symfony/validator/Constraints/AbstractComparisonValidator.php
deleted file mode 100644
index 67d73a5..0000000
--- a/vendor/symfony/validator/Constraints/AbstractComparisonValidator.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Provides a base class for the validation of property comparisons.
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-abstract class AbstractComparisonValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof AbstractComparison) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\AbstractComparison');
-        }
-
-        if (null === $value) {
-            return;
-        }
-
-        $comparedValue = $constraint->value;
-
-        // Convert strings to DateTimes if comparing another DateTime
-        // This allows to compare with any date/time value supported by
-        // the DateTime constructor:
-        // http://php.net/manual/en/datetime.formats.php
-        if (is_string($comparedValue)) {
-            if ($value instanceof \DatetimeImmutable) {
-                // If $value is immutable, convert the compared value to a
-                // DateTimeImmutable too
-                $comparedValue = new \DatetimeImmutable($comparedValue);
-            } elseif ($value instanceof \DateTime || $value instanceof \DateTimeInterface) {
-                // Otherwise use DateTime
-                $comparedValue = new \DateTime($comparedValue);
-            }
-        }
-
-        if (!$this->compareValues($value, $comparedValue)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->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))
-                    ->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))
-                    ->addViolation();
-            }
-        }
-    }
-
-    /**
-     * Compares the two given values to find if their relationship is valid.
-     *
-     * @param mixed $value1 The first value to compare
-     * @param mixed $value2 The second value to compare
-     *
-     * @return bool true if the relationship is valid, false otherwise
-     */
-    abstract protected function compareValues($value1, $value2);
-}
diff --git a/vendor/symfony/validator/Constraints/All.php b/vendor/symfony/validator/Constraints/All.php
deleted file mode 100644
index b531a1d..0000000
--- a/vendor/symfony/validator/Constraints/All.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class All extends Composite
-{
-    public $constraints = array();
-
-    public function getDefaultOption()
-    {
-        return 'constraints';
-    }
-
-    public function getRequiredOptions()
-    {
-        return array('constraints');
-    }
-
-    protected function getCompositeOption()
-    {
-        return 'constraints';
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/AllValidator.php b/vendor/symfony/validator/Constraints/AllValidator.php
deleted file mode 100644
index 94ff819..0000000
--- a/vendor/symfony/validator/Constraints/AllValidator.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class AllValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof All) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\All');
-        }
-
-        if (null === $value) {
-            return;
-        }
-
-        if (!is_array($value) && !$value instanceof \Traversable) {
-            throw new UnexpectedTypeException($value, 'array or Traversable');
-        }
-
-        $context = $this->context;
-
-        if ($context instanceof ExecutionContextInterface) {
-            $validator = $context->getValidator()->inContext($context);
-
-            foreach ($value as $key => $element) {
-                $validator->atPath('['.$key.']')->validate($element, $constraint->constraints);
-            }
-        } else {
-            // 2.4 API
-            foreach ($value as $key => $element) {
-                $context->validateValue($element, $constraint->constraints, '['.$key.']');
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Blank.php b/vendor/symfony/validator/Constraints/Blank.php
deleted file mode 100644
index ad93c74..0000000
--- a/vendor/symfony/validator/Constraints/Blank.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Blank extends Constraint
-{
-    public $message = 'This value should be blank.';
-}
diff --git a/vendor/symfony/validator/Constraints/BlankValidator.php b/vendor/symfony/validator/Constraints/BlankValidator.php
deleted file mode 100644
index de4b49b..0000000
--- a/vendor/symfony/validator/Constraints/BlankValidator.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class BlankValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Blank) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Blank');
-        }
-
-        if ('' !== $value && null !== $value) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Callback.php b/vendor/symfony/validator/Constraints/Callback.php
deleted file mode 100644
index bef94dd..0000000
--- a/vendor/symfony/validator/Constraints/Callback.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?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({"CLASS", "PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Callback extends Constraint
-{
-    /**
-     * @var string|callable
-     *
-     * @since 2.4
-     */
-    public $callback;
-
-    /**
-     * @var array
-     *
-     * @deprecated since version 2.4, to be removed in 3.0.
-     */
-    public $methods;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct($options = null)
-    {
-        // Invocation through annotations with an array parameter only
-        if (is_array($options) && 1 === count($options) && isset($options['value'])) {
-            $options = $options['value'];
-        }
-
-        if (is_array($options) && isset($options['methods'])) {
-            @trigger_error('The "methods" option of the '.__CLASS__.' class is deprecated since version 2.4 and will be removed in 3.0. Use the "callback" option instead.', E_USER_DEPRECATED);
-        }
-
-        if (is_array($options) && !isset($options['callback']) && !isset($options['methods']) && !isset($options['groups'])) {
-            if (is_callable($options) || !$options) {
-                $options = array('callback' => $options);
-            } else {
-                // @deprecated, to be removed in 3.0
-                $options = array('methods' => $options);
-            }
-        }
-
-        parent::__construct($options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDefaultOption()
-    {
-        return 'callback';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTargets()
-    {
-        return array(self::CLASS_CONSTRAINT, self::PROPERTY_CONSTRAINT);
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/CallbackValidator.php b/vendor/symfony/validator/Constraints/CallbackValidator.php
deleted file mode 100644
index df49204..0000000
--- a/vendor/symfony/validator/Constraints/CallbackValidator.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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;
-use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validator for Callback constraint.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class CallbackValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($object, Constraint $constraint)
-    {
-        if (!$constraint instanceof Callback) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Callback');
-        }
-
-        if (null !== $constraint->callback && null !== $constraint->methods) {
-            throw new ConstraintDefinitionException(
-                'The Callback constraint supports either the option "callback" '.
-                'or "methods", but not both at the same time.'
-            );
-        }
-
-        // has to be an array so that we can differentiate between callables
-        // and method names
-        if (null !== $constraint->methods && !is_array($constraint->methods)) {
-            throw new UnexpectedTypeException($constraint->methods, 'array');
-        }
-
-        $methods = $constraint->methods ?: array($constraint->callback);
-
-        foreach ($methods as $method) {
-            if ($method instanceof \Closure) {
-                $method($object, $this->context);
-            } elseif (is_array($method)) {
-                if (!is_callable($method)) {
-                    if (isset($method[0]) && is_object($method[0])) {
-                        $method[0] = get_class($method[0]);
-                    }
-                    throw new ConstraintDefinitionException(sprintf('%s targeted by Callback constraint is not a valid callable', json_encode($method)));
-                }
-
-                call_user_func($method, $object, $this->context);
-            } elseif (null !== $object) {
-                if (!method_exists($object, $method)) {
-                    throw new ConstraintDefinitionException(sprintf('Method "%s" targeted by Callback constraint does not exist in class %s', $method, get_class($object)));
-                }
-
-                $reflMethod = new \ReflectionMethod($object, $method);
-
-                if ($reflMethod->isStatic()) {
-                    $reflMethod->invoke(null, $object, $this->context);
-                } else {
-                    $reflMethod->invoke($object, $this->context);
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/CardScheme.php b/vendor/symfony/validator/Constraints/CardScheme.php
deleted file mode 100644
index 14f3b5d..0000000
--- a/vendor/symfony/validator/Constraints/CardScheme.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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;
-
-/**
- * Metadata for the CardSchemeValidator.
- *
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Tim Nagel <t.nagel@infinite.net.au>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class CardScheme extends Constraint
-{
-    const NOT_NUMERIC_ERROR = 1;
-    const INVALID_FORMAT_ERROR = 2;
-
-    protected static $errorNames = array(
-        self::NOT_NUMERIC_ERROR => 'NOT_NUMERIC_ERROR',
-        self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
-    );
-
-    public $message = 'Unsupported card type or invalid card number.';
-    public $schemes;
-
-    public function getDefaultOption()
-    {
-        return 'schemes';
-    }
-
-    public function getRequiredOptions()
-    {
-        return array('schemes');
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/CardSchemeValidator.php b/vendor/symfony/validator/Constraints/CardSchemeValidator.php
deleted file mode 100644
index 229e0d2..0000000
--- a/vendor/symfony/validator/Constraints/CardSchemeValidator.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates that a card number belongs to a specified scheme.
- *
- * @author Tim Nagel <t.nagel@infinite.net.au>
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see http://en.wikipedia.org/wiki/Bank_card_number
- * @see http://www.regular-expressions.info/creditcard.html
- * @see http://www.barclaycard.co.uk/business/files/Ranges_and_Rules_September_2014.pdf
- */
-class CardSchemeValidator extends ConstraintValidator
-{
-    protected $schemes = array(
-        // American Express card numbers start with 34 or 37 and have 15 digits.
-        'AMEX' => array(
-            '/^3[47][0-9]{13}$/',
-        ),
-        // China UnionPay cards start with 62 and have between 16 and 19 digits.
-        // Please note that these cards do not follow Luhn Algorithm as a checksum.
-        'CHINA_UNIONPAY' => array(
-            '/^62[0-9]{14,17}$/',
-        ),
-        // Diners Club card numbers begin with 300 through 305, 36 or 38. All have 14 digits.
-        // There are Diners Club cards that begin with 5 and have 16 digits.
-        // These are a joint venture between Diners Club and MasterCard, and should be processed like a MasterCard.
-        'DINERS' => array(
-            '/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/',
-        ),
-        // Discover card numbers begin with 6011, 622126 through 622925, 644 through 649 or 65.
-        // All have 16 digits.
-        'DISCOVER' => array(
-            '/^6011[0-9]{12}$/',
-            '/^64[4-9][0-9]{13}$/',
-            '/^65[0-9]{14}$/',
-            '/^622(12[6-9]|1[3-9][0-9]|[2-8][0-9][0-9]|91[0-9]|92[0-5])[0-9]{10}$/',
-        ),
-        // InstaPayment cards begin with 637 through 639 and have 16 digits.
-        'INSTAPAYMENT' => array(
-            '/^63[7-9][0-9]{13}$/',
-        ),
-        // JCB cards beginning with 2131 or 1800 have 15 digits.
-        // JCB cards beginning with 35 have 16 digits.
-        'JCB' => array(
-            '/^(?:2131|1800|35[0-9]{3})[0-9]{11}$/',
-        ),
-        // Laser cards begin with either 6304, 6706, 6709 or 6771 and have between 16 and 19 digits.
-        'LASER' => array(
-            '/^(6304|670[69]|6771)[0-9]{12,15}$/',
-        ),
-        // Maestro international cards begin with 675900..675999 and have between 12 and 19 digits.
-        // Maestro UK cards begin with either 500000..509999 or 560000..699999 and have between 12 and 19 digits.
-        'MAESTRO' => array(
-            '/^(6759[0-9]{2})[0-9]{6,13}$/',
-            '/^(50[0-9]{4})[0-9]{6,13}$/',
-            '/^5[6-9][0-9]{10,17}$/',
-            '/^6[0-9]{11,18}$/',
-        ),
-        // All MasterCard numbers start with the numbers 51 through 55. All have 16 digits.
-        'MASTERCARD' => array(
-            '/^5[1-5][0-9]{14}$/',
-        ),
-        // All Visa card numbers start with a 4. New cards have 16 digits. Old cards have 13.
-        'VISA' => array(
-            '/^4([0-9]{12}|[0-9]{15})$/',
-        ),
-    );
-
-    /**
-     * Validates a creditcard belongs to a specified scheme.
-     *
-     * @param mixed      $value
-     * @param Constraint $constraint
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof CardScheme) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\CardScheme');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_numeric($value)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(CardScheme::NOT_NUMERIC_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(CardScheme::NOT_NUMERIC_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        $schemes = array_flip((array) $constraint->schemes);
-        $schemeRegexes = array_intersect_key($this->schemes, $schemes);
-
-        foreach ($schemeRegexes as $regexes) {
-            foreach ($regexes as $regex) {
-                if (preg_match($regex, $value)) {
-                    return;
-                }
-            }
-        }
-
-        if ($this->context instanceof ExecutionContextInterface) {
-            $this->context->buildViolation($constraint->message)
-                ->setParameter('{{ value }}', $this->formatValue($value))
-                ->setCode(CardScheme::INVALID_FORMAT_ERROR)
-                ->addViolation();
-        } else {
-            $this->buildViolation($constraint->message)
-                ->setParameter('{{ value }}', $this->formatValue($value))
-                ->setCode(CardScheme::INVALID_FORMAT_ERROR)
-                ->addViolation();
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Choice.php b/vendor/symfony/validator/Constraints/Choice.php
deleted file mode 100644
index 4e2c8e7..0000000
--- a/vendor/symfony/validator/Constraints/Choice.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Choice extends Constraint
-{
-    const NO_SUCH_CHOICE_ERROR = 1;
-    const TOO_FEW_ERROR = 2;
-    const TOO_MANY_ERROR = 3;
-
-    protected static $errorNames = array(
-        self::NO_SUCH_CHOICE_ERROR => 'NO_SUCH_CHOICE_ERROR',
-        self::TOO_FEW_ERROR => 'TOO_FEW_ERROR',
-        self::TOO_MANY_ERROR => 'TOO_MANY_ERROR',
-    );
-
-    public $choices;
-    public $callback;
-    public $multiple = false;
-    public $strict = false;
-    public $min;
-    public $max;
-    public $message = 'The value you selected is not a valid choice.';
-    public $multipleMessage = 'One or more of the given values is invalid.';
-    public $minMessage = 'You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.';
-    public $maxMessage = 'You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDefaultOption()
-    {
-        return 'choices';
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/ChoiceValidator.php b/vendor/symfony/validator/Constraints/ChoiceValidator.php
deleted file mode 100644
index 83cfc6e..0000000
--- a/vendor/symfony/validator/Constraints/ChoiceValidator.php
+++ /dev/null
@@ -1,133 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * ChoiceValidator validates that the value is one of the expected values.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Florian Eckerstorfer <florian@eckerstorfer.org>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ChoiceValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Choice) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Choice');
-        }
-
-        if (!is_array($constraint->choices) && !$constraint->callback) {
-            throw new ConstraintDefinitionException('Either "choices" or "callback" must be specified on constraint Choice');
-        }
-
-        if (null === $value) {
-            return;
-        }
-
-        if ($constraint->multiple && !is_array($value)) {
-            throw new UnexpectedTypeException($value, 'array');
-        }
-
-        if ($constraint->callback) {
-            if (!is_callable($choices = array($this->context->getClassName(), $constraint->callback))
-                && !is_callable($choices = $constraint->callback)
-            ) {
-                throw new ConstraintDefinitionException('The Choice constraint expects a valid callback');
-            }
-            $choices = call_user_func($choices);
-        } else {
-            $choices = $constraint->choices;
-        }
-
-        if ($constraint->multiple) {
-            foreach ($value as $_value) {
-                if (!in_array($_value, $choices, $constraint->strict)) {
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->multipleMessage)
-                            ->setParameter('{{ value }}', $this->formatValue($_value))
-                            ->setCode(Choice::NO_SUCH_CHOICE_ERROR)
-                            ->setInvalidValue($_value)
-                            ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->multipleMessage)
-                            ->setParameter('{{ value }}', $this->formatValue($_value))
-                            ->setCode(Choice::NO_SUCH_CHOICE_ERROR)
-                            ->setInvalidValue($_value)
-                            ->addViolation();
-                    }
-
-                    return;
-                }
-            }
-
-            $count = count($value);
-
-            if ($constraint->min !== null && $count < $constraint->min) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->minMessage)
-                        ->setParameter('{{ limit }}', $constraint->min)
-                        ->setPlural((int) $constraint->min)
-                        ->setCode(Choice::TOO_FEW_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->minMessage)
-                        ->setParameter('{{ limit }}', $constraint->min)
-                        ->setPlural((int) $constraint->min)
-                        ->setCode(Choice::TOO_FEW_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-
-            if ($constraint->max !== null && $count > $constraint->max) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->maxMessage)
-                        ->setParameter('{{ limit }}', $constraint->max)
-                        ->setPlural((int) $constraint->max)
-                        ->setCode(Choice::TOO_MANY_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->maxMessage)
-                        ->setParameter('{{ limit }}', $constraint->max)
-                        ->setPlural((int) $constraint->max)
-                        ->setCode(Choice::TOO_MANY_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-        } elseif (!in_array($value, $choices, $constraint->strict)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Choice::NO_SUCH_CHOICE_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Choice::NO_SUCH_CHOICE_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Collection.php b/vendor/symfony/validator/Constraints/Collection.php
deleted file mode 100644
index ae55366..0000000
--- a/vendor/symfony/validator/Constraints/Collection.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?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\Exception\ConstraintDefinitionException;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Collection extends Composite
-{
-    const MISSING_FIELD_ERROR = 1;
-    const NO_SUCH_FIELD_ERROR = 2;
-
-    protected static $errorNames = array(
-        self::MISSING_FIELD_ERROR => 'MISSING_FIELD_ERROR',
-        self::NO_SUCH_FIELD_ERROR => 'NO_SUCH_FIELD_ERROR',
-    );
-
-    public $fields = array();
-    public $allowExtraFields = false;
-    public $allowMissingFields = false;
-    public $extraFieldsMessage = 'This field was not expected.';
-    public $missingFieldsMessage = 'This field is missing.';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct($options = null)
-    {
-        // no known options set? $options is the fields array
-        if (is_array($options)
-            && !array_intersect(array_keys($options), array('groups', 'fields', 'allowExtraFields', 'allowMissingFields', 'extraFieldsMessage', 'missingFieldsMessage'))) {
-            $options = array('fields' => $options);
-        }
-
-        parent::__construct($options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function initializeNestedConstraints()
-    {
-        parent::initializeNestedConstraints();
-
-        if (!is_array($this->fields)) {
-            throw new ConstraintDefinitionException(sprintf('The option "fields" is expected to be an array in constraint %s', __CLASS__));
-        }
-
-        foreach ($this->fields as $fieldName => $field) {
-            // the XmlFileLoader and YamlFileLoader pass the field Optional
-            // and Required constraint as an array with exactly one element
-            if (is_array($field) && count($field) == 1) {
-                $this->fields[$fieldName] = $field = $field[0];
-            }
-
-            if (!$field instanceof Optional && !$field instanceof Required) {
-                $this->fields[$fieldName] = $field = new Required($field);
-            }
-        }
-    }
-
-    public function getRequiredOptions()
-    {
-        return array('fields');
-    }
-
-    protected function getCompositeOption()
-    {
-        return 'fields';
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Collection/Optional.php b/vendor/symfony/validator/Constraints/Collection/Optional.php
deleted file mode 100644
index 68471f9..0000000
--- a/vendor/symfony/validator/Constraints/Collection/Optional.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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\Collection;
-
-@trigger_error('The '.__NAMESPACE__.'\Optional class is deprecated since version 2.3 and will be removed in 3.0. Use the Symfony\Component\Validator\Constraints\Optional class instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Validator\Constraints\Optional as BaseOptional;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.3, to be removed in 3.0.
- *             Use {@link \Symfony\Component\Validator\Constraints\Optional} instead.
- */
-class Optional extends BaseOptional
-{
-}
diff --git a/vendor/symfony/validator/Constraints/Collection/Required.php b/vendor/symfony/validator/Constraints/Collection/Required.php
deleted file mode 100644
index 4b062bb..0000000
--- a/vendor/symfony/validator/Constraints/Collection/Required.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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\Collection;
-
-@trigger_error('The '.__NAMESPACE__.'\Required class is deprecated since version 2.3 and will be removed in 3.0. Use the Symfony\Component\Validator\Constraints\Required class instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Validator\Constraints\Required as BaseRequired;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.3, to be removed in 3.0.
- *             Use {@link \Symfony\Component\Validator\Constraints\Required} instead.
- */
-class Required extends BaseRequired
-{
-}
diff --git a/vendor/symfony/validator/Constraints/CollectionValidator.php b/vendor/symfony/validator/Constraints/CollectionValidator.php
deleted file mode 100644
index 737e880..0000000
--- a/vendor/symfony/validator/Constraints/CollectionValidator.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?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;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class CollectionValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Collection) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Collection');
-        }
-
-        if (null === $value) {
-            return;
-        }
-
-        if (!is_array($value) && !($value instanceof \Traversable && $value instanceof \ArrayAccess)) {
-            throw new UnexpectedTypeException($value, 'array or Traversable and ArrayAccess');
-        }
-
-        // We need to keep the initialized context when CollectionValidator
-        // calls itself recursively (Collection constraints can be nested).
-        // Since the context of the validator is overwritten when initialize()
-        // is called for the nested constraint, the outer validator is
-        // acting on the wrong context when the nested validation terminates.
-        //
-        // A better solution - which should be approached in Symfony 3.0 - is to
-        // remove the initialize() method and pass the context as last argument
-        // to validate() instead.
-        $context = $this->context;
-
-        foreach ($constraint->fields as $field => $fieldConstraint) {
-            // bug fix issue #2779
-            $existsInArray = is_array($value) && array_key_exists($field, $value);
-            $existsInArrayAccess = $value instanceof \ArrayAccess && $value->offsetExists($field);
-
-            if ($existsInArray || $existsInArrayAccess) {
-                if (count($fieldConstraint->constraints) > 0) {
-                    if ($context instanceof ExecutionContextInterface) {
-                        $context->getValidator()
-                            ->inContext($context)
-                            ->atPath('['.$field.']')
-                            ->validate($value[$field], $fieldConstraint->constraints);
-                    } else {
-                        // 2.4 API
-                        $context->validateValue($value[$field], $fieldConstraint->constraints, '['.$field.']');
-                    }
-                }
-            } elseif (!$fieldConstraint instanceof Optional && !$constraint->allowMissingFields) {
-                if ($context instanceof ExecutionContextInterface) {
-                    $context->buildViolation($constraint->missingFieldsMessage)
-                        ->atPath('['.$field.']')
-                        ->setParameter('{{ field }}', $this->formatValue($field))
-                        ->setInvalidValue(null)
-                        ->setCode(Collection::MISSING_FIELD_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolationInContext($context, $constraint->missingFieldsMessage)
-                        ->atPath('['.$field.']')
-                        ->setParameter('{{ field }}', $this->formatValue($field))
-                        ->setInvalidValue(null)
-                        ->setCode(Collection::MISSING_FIELD_ERROR)
-                        ->addViolation();
-                }
-            }
-        }
-
-        if (!$constraint->allowExtraFields) {
-            foreach ($value as $field => $fieldValue) {
-                if (!isset($constraint->fields[$field])) {
-                    if ($context instanceof ExecutionContextInterface) {
-                        $context->buildViolation($constraint->extraFieldsMessage)
-                            ->atPath('['.$field.']')
-                            ->setParameter('{{ field }}', $this->formatValue($field))
-                            ->setInvalidValue($fieldValue)
-                            ->setCode(Collection::NO_SUCH_FIELD_ERROR)
-                            ->addViolation();
-                    } else {
-                        $this->buildViolationInContext($context, $constraint->extraFieldsMessage)
-                            ->atPath('['.$field.']')
-                            ->setParameter('{{ field }}', $this->formatValue($field))
-                            ->setInvalidValue($fieldValue)
-                            ->setCode(Collection::NO_SUCH_FIELD_ERROR)
-                            ->addViolation();
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Composite.php b/vendor/symfony/validator/Constraints/Composite.php
deleted file mode 100644
index 90c9862..0000000
--- a/vendor/symfony/validator/Constraints/Composite.php
+++ /dev/null
@@ -1,153 +0,0 @@
-<?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\Exception\ConstraintDefinitionException;
-
-/**
- * A constraint that is composed of other constraints.
- *
- * You should never use the nested constraint instances anywhere else, because
- * their groups are adapted when passed to the constructor of this class.
- *
- * If you want to create your own composite constraint, extend this class and
- * let {@link getCompositeOption()} return the name of the property which
- * contains the nested constraints.
- *
- * @since  2.6
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-abstract class Composite extends Constraint
-{
-    /**
-     * {@inheritdoc}
-     *
-     * The groups of the composite and its nested constraints are made
-     * consistent using the following strategy:
-     *
-     *   - If groups are passed explicitly to the composite constraint, but
-     *     not to the nested constraints, the options of the composite
-     *     constraint are copied to the nested constraints;
-     *
-     *   - If groups are passed explicitly to the nested constraints, but not
-     *     to the composite constraint, the groups of all nested constraints
-     *     are merged and used as groups for the composite constraint;
-     *
-     *   - If groups are passed explicitly to both the composite and its nested
-     *     constraints, the groups of the nested constraints must be a subset
-     *     of the groups of the composite constraint. If not, a
-     *     {@link ConstraintDefinitionException} is thrown.
-     *
-     * All this is done in the constructor, because constraints can then be
-     * cached. When constraints are loaded from the cache, no more group
-     * checks need to be done.
-     */
-    public function __construct($options = null)
-    {
-        parent::__construct($options);
-
-        $this->initializeNestedConstraints();
-
-        /* @var Constraint[] $nestedConstraints */
-        $compositeOption = $this->getCompositeOption();
-        $nestedConstraints = $this->$compositeOption;
-
-        if (!is_array($nestedConstraints)) {
-            $nestedConstraints = array($nestedConstraints);
-        }
-
-        foreach ($nestedConstraints as $constraint) {
-            if (!$constraint instanceof Constraint) {
-                throw new ConstraintDefinitionException(sprintf('The value %s is not an instance of Constraint in constraint %s', $constraint, get_class($this)));
-            }
-
-            if ($constraint instanceof Valid) {
-                throw new ConstraintDefinitionException(sprintf('The constraint Valid cannot be nested inside constraint %s. You can only declare the Valid constraint directly on a field or method.', get_class($this)));
-            }
-        }
-
-        if (!property_exists($this, 'groups')) {
-            $mergedGroups = array();
-
-            foreach ($nestedConstraints as $constraint) {
-                foreach ($constraint->groups as $group) {
-                    $mergedGroups[$group] = true;
-                }
-            }
-
-            $this->groups = array_keys($mergedGroups);
-            $this->$compositeOption = $nestedConstraints;
-
-            return;
-        }
-
-        foreach ($nestedConstraints as $constraint) {
-            if (property_exists($constraint, 'groups')) {
-                $excessGroups = array_diff($constraint->groups, $this->groups);
-
-                if (count($excessGroups) > 0) {
-                    throw new ConstraintDefinitionException(sprintf(
-                        'The group(s) "%s" passed to the constraint %s '.
-                        'should also be passed to its containing constraint %s',
-                        implode('", "', $excessGroups),
-                        get_class($constraint),
-                        get_class($this)
-                    ));
-                }
-            } else {
-                $constraint->groups = $this->groups;
-            }
-        }
-
-        $this->$compositeOption = $nestedConstraints;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Implicit group names are forwarded to nested constraints.
-     *
-     * @param string $group
-     */
-    public function addImplicitGroupName($group)
-    {
-        parent::addImplicitGroupName($group);
-
-        /** @var Constraint[] $nestedConstraints */
-        $nestedConstraints = $this->{$this->getCompositeOption()};
-
-        foreach ($nestedConstraints as $constraint) {
-            $constraint->addImplicitGroupName($group);
-        }
-    }
-
-    /**
-     * Returns the name of the property that contains the nested constraints.
-     *
-     * @return string The property name
-     */
-    abstract protected function getCompositeOption();
-
-    /**
-     * Initializes the nested constraints.
-     *
-     * This method can be overwritten in subclasses to clean up the nested
-     * constraints passed to the constructor.
-     *
-     * @see Collection::initializeNestedConstraints()
-     */
-    protected function initializeNestedConstraints()
-    {
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Count.php b/vendor/symfony/validator/Constraints/Count.php
deleted file mode 100644
index 3378227..0000000
--- a/vendor/symfony/validator/Constraints/Count.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?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\Exception\MissingOptionsException;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Count extends Constraint
-{
-    const TOO_FEW_ERROR = 1;
-    const TOO_MANY_ERROR = 2;
-
-    protected static $errorNames = array(
-        self::TOO_FEW_ERROR => 'TOO_FEW_ERROR',
-        self::TOO_MANY_ERROR => 'TOO_MANY_ERROR',
-    );
-
-    public $minMessage = 'This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.';
-    public $maxMessage = 'This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.';
-    public $exactMessage = 'This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.';
-    public $min;
-    public $max;
-
-    public function __construct($options = null)
-    {
-        if (null !== $options && !is_array($options)) {
-            $options = array(
-                'min' => $options,
-                'max' => $options,
-            );
-        }
-
-        parent::__construct($options);
-
-        if (null === $this->min && null === $this->max) {
-            throw new MissingOptionsException(sprintf('Either option "min" or "max" must be given for constraint %s', __CLASS__), array('min', 'max'));
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/CountValidator.php b/vendor/symfony/validator/Constraints/CountValidator.php
deleted file mode 100644
index cbe90e0..0000000
--- a/vendor/symfony/validator/Constraints/CountValidator.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class CountValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (null === $value) {
-            return;
-        }
-
-        if (!is_array($value) && !$value instanceof \Countable) {
-            throw new UnexpectedTypeException($value, 'array or \Countable');
-        }
-
-        $count = count($value);
-
-        if (null !== $constraint->max && $count > $constraint->max) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
-                    ->setParameter('{{ count }}', $count)
-                    ->setParameter('{{ limit }}', $constraint->max)
-                    ->setInvalidValue($value)
-                    ->setPlural((int) $constraint->max)
-                    ->setCode(Count::TOO_MANY_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
-                    ->setParameter('{{ count }}', $count)
-                    ->setParameter('{{ limit }}', $constraint->max)
-                    ->setInvalidValue($value)
-                    ->setPlural((int) $constraint->max)
-                    ->setCode(Count::TOO_MANY_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if (null !== $constraint->min && $count < $constraint->min) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage)
-                    ->setParameter('{{ count }}', $count)
-                    ->setParameter('{{ limit }}', $constraint->min)
-                    ->setInvalidValue($value)
-                    ->setPlural((int) $constraint->min)
-                    ->setCode(Count::TOO_FEW_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage)
-                    ->setParameter('{{ count }}', $count)
-                    ->setParameter('{{ limit }}', $constraint->min)
-                    ->setInvalidValue($value)
-                    ->setPlural((int) $constraint->min)
-                    ->setCode(Count::TOO_FEW_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Country.php b/vendor/symfony/validator/Constraints/Country.php
deleted file mode 100644
index d1df3a8..0000000
--- a/vendor/symfony/validator/Constraints/Country.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Country extends Constraint
-{
-    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
deleted file mode 100644
index 22b7909..0000000
--- a/vendor/symfony/validator/Constraints/CountryValidator.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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\Intl\Intl;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates whether a value is a valid country code.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class CountryValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Country) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Country');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-        $countries = Intl::getRegionBundle()->getCountryNames();
-
-        if (!isset($countries[$value])) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Currency.php b/vendor/symfony/validator/Constraints/Currency.php
deleted file mode 100644
index 736af83..0000000
--- a/vendor/symfony/validator/Constraints/Currency.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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 Miha Vrhovnik <miha.vrhovnik@pagein.si>
- */
-class Currency extends Constraint
-{
-    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
deleted file mode 100644
index 4fa91d5..0000000
--- a/vendor/symfony/validator/Constraints/CurrencyValidator.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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\Intl\Intl;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates whether a value is a valid currency.
- *
- * @author Miha Vrhovnik <miha.vrhovnik@pagein.si>
- */
-class CurrencyValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Currency) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Currency');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-        $currencies = Intl::getCurrencyBundle()->getCurrencyNames();
-
-        if (!isset($currencies[$value])) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Date.php b/vendor/symfony/validator/Constraints/Date.php
deleted file mode 100644
index 1001d78..0000000
--- a/vendor/symfony/validator/Constraints/Date.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Date extends Constraint
-{
-    const INVALID_FORMAT_ERROR = 1;
-    const INVALID_DATE_ERROR = 2;
-
-    protected static $errorNames = array(
-        self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
-        self::INVALID_DATE_ERROR => 'INVALID_DATE_ERROR',
-    );
-
-    public $message = 'This value is not a valid date.';
-}
diff --git a/vendor/symfony/validator/Constraints/DateTime.php b/vendor/symfony/validator/Constraints/DateTime.php
deleted file mode 100644
index a71bbbd..0000000
--- a/vendor/symfony/validator/Constraints/DateTime.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class DateTime extends Constraint
-{
-    const INVALID_FORMAT_ERROR = 1;
-    const INVALID_DATE_ERROR = 2;
-    const INVALID_TIME_ERROR = 3;
-
-    protected static $errorNames = array(
-        self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
-        self::INVALID_DATE_ERROR => 'INVALID_DATE_ERROR',
-        self::INVALID_TIME_ERROR => 'INVALID_TIME_ERROR',
-    );
-
-    public $message = 'This value is not a valid datetime.';
-}
diff --git a/vendor/symfony/validator/Constraints/DateTimeValidator.php b/vendor/symfony/validator/Constraints/DateTimeValidator.php
deleted file mode 100644
index 29864b4..0000000
--- a/vendor/symfony/validator/Constraints/DateTimeValidator.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class DateTimeValidator extends DateValidator
-{
-    const PATTERN = '/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof DateTime) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\DateTime');
-        }
-
-        if (null === $value || '' === $value || $value instanceof \DateTime) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-
-        if (!preg_match(static::PATTERN, $value, $matches)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(DateTime::INVALID_FORMAT_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(DateTime::INVALID_FORMAT_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if (!DateValidator::checkDate($matches[1], $matches[2], $matches[3])) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(DateTime::INVALID_DATE_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(DateTime::INVALID_DATE_ERROR)
-                    ->addViolation();
-            }
-        }
-
-        if (!TimeValidator::checkTime($matches[4], $matches[5], $matches[6])) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(DateTime::INVALID_TIME_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(DateTime::INVALID_TIME_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/DateValidator.php b/vendor/symfony/validator/Constraints/DateValidator.php
deleted file mode 100644
index e14791c..0000000
--- a/vendor/symfony/validator/Constraints/DateValidator.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class DateValidator extends ConstraintValidator
-{
-    const PATTERN = '/^(\d{4})-(\d{2})-(\d{2})$/';
-
-    /**
-     * Checks whether a date is valid.
-     *
-     * @param int $year  The year
-     * @param int $month The month
-     * @param int $day   The day
-     *
-     * @return bool Whether the date is valid
-     *
-     * @internal
-     */
-    public static function checkDate($year, $month, $day)
-    {
-        return checkdate($month, $day, $year);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Date) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Date');
-        }
-
-        if (null === $value || '' === $value || $value instanceof \DateTime) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-
-        if (!preg_match(static::PATTERN, $value, $matches)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Date::INVALID_FORMAT_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Date::INVALID_FORMAT_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if (!self::checkDate($matches[1], $matches[2], $matches[3])) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Date::INVALID_DATE_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Date::INVALID_DATE_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Email.php b/vendor/symfony/validator/Constraints/Email.php
deleted file mode 100644
index 96abf2c..0000000
--- a/vendor/symfony/validator/Constraints/Email.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Email extends Constraint
-{
-    const INVALID_FORMAT_ERROR = 1;
-    const MX_CHECK_FAILED_ERROR = 2;
-    const HOST_CHECK_FAILED_ERROR = 3;
-
-    protected static $errorNames = array(
-        self::INVALID_FORMAT_ERROR => 'STRICT_CHECK_FAILED_ERROR',
-        self::MX_CHECK_FAILED_ERROR => 'MX_CHECK_FAILED_ERROR',
-        self::HOST_CHECK_FAILED_ERROR => 'HOST_CHECK_FAILED_ERROR',
-    );
-
-    public $message = 'This value is not a valid email address.';
-    public $checkMX = false;
-    public $checkHost = false;
-    public $strict;
-}
diff --git a/vendor/symfony/validator/Constraints/EmailValidator.php b/vendor/symfony/validator/Constraints/EmailValidator.php
deleted file mode 100644
index 8a8aade..0000000
--- a/vendor/symfony/validator/Constraints/EmailValidator.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\RuntimeException;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class EmailValidator extends ConstraintValidator
-{
-    /**
-     * @var bool
-     */
-    private $isStrict;
-
-    public function __construct($strict = false)
-    {
-        $this->isStrict = $strict;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Email) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Email');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-
-        if (null === $constraint->strict) {
-            $constraint->strict = $this->isStrict;
-        }
-
-        if ($constraint->strict) {
-            if (!class_exists('\Egulias\EmailValidator\EmailValidator')) {
-                throw new RuntimeException('Strict email validation requires egulias/email-validator');
-            }
-
-            $strictValidator = new \Egulias\EmailValidator\EmailValidator();
-
-            if (!$strictValidator->isValid($value, false, true)) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Email::INVALID_FORMAT_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Email::INVALID_FORMAT_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-        } elseif (!preg_match('/^.+\@\S+\.\S+$/', $value)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Email::INVALID_FORMAT_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Email::INVALID_FORMAT_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        $host = substr($value, strpos($value, '@') + 1);
-
-        // Check for host DNS resource records
-        if ($constraint->checkMX) {
-            if (!$this->checkMX($host)) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Email::MX_CHECK_FAILED_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Email::MX_CHECK_FAILED_ERROR)
-                        ->addViolation();
-                }
-            }
-
-            return;
-        }
-
-        if ($constraint->checkHost && !$this->checkHost($host)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Email::HOST_CHECK_FAILED_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Email::HOST_CHECK_FAILED_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-
-    /**
-     * Check DNS Records for MX type.
-     *
-     * @param string $host Host
-     *
-     * @return bool
-     */
-    private function checkMX($host)
-    {
-        return checkdnsrr($host, 'MX');
-    }
-
-    /**
-     * Check if one of MX, A or AAAA DNS RR exists.
-     *
-     * @param string $host Host
-     *
-     * @return bool
-     */
-    private function checkHost($host)
-    {
-        return $this->checkMX($host) || (checkdnsrr($host, 'A') || checkdnsrr($host, 'AAAA'));
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/EqualTo.php b/vendor/symfony/validator/Constraints/EqualTo.php
deleted file mode 100644
index 8d3d752..0000000
--- a/vendor/symfony/validator/Constraints/EqualTo.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class EqualTo extends AbstractComparison
-{
-    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
deleted file mode 100644
index 3739dbe..0000000
--- a/vendor/symfony/validator/Constraints/EqualToValidator.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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;
-
-/**
- * Validates values are equal (==).
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class EqualToValidator extends AbstractComparisonValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function compareValues($value1, $value2)
-    {
-        return $value1 == $value2;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Existence.php b/vendor/symfony/validator/Constraints/Existence.php
deleted file mode 100644
index 5ea6ffe..0000000
--- a/vendor/symfony/validator/Constraints/Existence.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-abstract class Existence extends Composite
-{
-    public $constraints = array();
-
-    public function getDefaultOption()
-    {
-        return 'constraints';
-    }
-
-    protected function getCompositeOption()
-    {
-        return 'constraints';
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Expression.php b/vendor/symfony/validator/Constraints/Expression.php
deleted file mode 100644
index dfa242c..0000000
--- a/vendor/symfony/validator/Constraints/Expression.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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({"CLASS", "PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Expression extends Constraint
-{
-    public $message = 'This value is not valid.';
-    public $expression;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDefaultOption()
-    {
-        return 'expression';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRequiredOptions()
-    {
-        return array('expression');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTargets()
-    {
-        return array(self::CLASS_CONSTRAINT, self::PROPERTY_CONSTRAINT);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validatedBy()
-    {
-        return 'validator.expression';
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/ExpressionValidator.php b/vendor/symfony/validator/Constraints/ExpressionValidator.php
deleted file mode 100644
index 15d51f9..0000000
--- a/vendor/symfony/validator/Constraints/ExpressionValidator.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?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\ExpressionLanguage\ExpressionLanguage;
-use Symfony\Component\PropertyAccess\PropertyAccess;
-use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
-use Symfony\Component\PropertyAccess\PropertyPath;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Exception\RuntimeException;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bernhard Schussek <bschussek@symfony.com>
- */
-class ExpressionValidator extends ConstraintValidator
-{
-    /**
-     * @var PropertyAccessorInterface
-     */
-    private $propertyAccessor;
-
-    /**
-     * @var ExpressionLanguage
-     */
-    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)
-    {
-        if (null !== $propertyAccessor && !$propertyAccessor instanceof PropertyAccessorInterface) {
-            throw new UnexpectedTypeException($propertyAccessor, 'null or \Symfony\Component\PropertyAccess\PropertyAccessorInterface');
-        }
-
-        $this->propertyAccessor = $propertyAccessor;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Expression) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Expression');
-        }
-
-        $variables = array();
-
-        // Symfony 2.5+
-        if ($this->context instanceof ExecutionContextInterface) {
-            $variables['value'] = $value;
-            $variables['this'] = $this->context->getObject();
-        } elseif (null === $this->context->getPropertyName()) {
-            $variables['value'] = $value;
-            $variables['this'] = $value;
-        } else {
-            $root = $this->context->getRoot();
-            $variables['value'] = $value;
-
-            if (is_object($root)) {
-                // Extract the object that the property belongs to from the object
-                // graph
-                $path = new PropertyPath($this->context->getPropertyPath());
-                $parentPath = $path->getParent();
-                $variables['this'] = $parentPath ? $this->getPropertyAccessor()->getValue($root, $parentPath) : $root;
-            } else {
-                $variables['this'] = null;
-            }
-        }
-
-        if (!$this->getExpressionLanguage()->evaluate($constraint->expression, $variables)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-
-    private function getExpressionLanguage()
-    {
-        if (null === $this->expressionLanguage) {
-            if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
-                throw new RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.');
-            }
-            $this->expressionLanguage = new ExpressionLanguage();
-        }
-
-        return $this->expressionLanguage;
-    }
-
-    private function getPropertyAccessor()
-    {
-        if (null === $this->propertyAccessor) {
-            if (!class_exists('Symfony\Component\PropertyAccess\PropertyAccess')) {
-                throw new RuntimeException('Unable to use expressions as the Symfony PropertyAccess component is not installed.');
-            }
-            $this->propertyAccessor = PropertyAccess::createPropertyAccessor();
-        }
-
-        return $this->propertyAccessor;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/False.php b/vendor/symfony/validator/Constraints/False.php
deleted file mode 100644
index 1e103ad..0000000
--- a/vendor/symfony/validator/Constraints/False.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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;
-
-@trigger_error('The '.__NAMESPACE__.'\False class is deprecated since version 2.7 and will be removed in 3.0. Use the IsFalse class in the same namespace instead.', E_USER_DEPRECATED);
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.7, to be removed in 3.0. Use IsFalse instead.
- */
-class False extends IsFalse
-{
-}
diff --git a/vendor/symfony/validator/Constraints/FalseValidator.php b/vendor/symfony/validator/Constraints/FalseValidator.php
deleted file mode 100644
index 9614c30..0000000
--- a/vendor/symfony/validator/Constraints/FalseValidator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-@trigger_error('The '.__NAMESPACE__.'\FalseValidator class is deprecated since version 2.7 and will be removed in 3.0. Use the IsFalseValidator class in the same namespace instead.', E_USER_DEPRECATED);
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.7, to be removed in 3.0. Use IsFalseValidator instead.
- */
-class FalseValidator extends IsFalseValidator
-{
-}
diff --git a/vendor/symfony/validator/Constraints/File.php b/vendor/symfony/validator/Constraints/File.php
deleted file mode 100644
index de9fc00..0000000
--- a/vendor/symfony/validator/Constraints/File.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?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\Exception\ConstraintDefinitionException;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-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;
-
-    protected static $errorNames = array(
-        self::NOT_FOUND_ERROR => 'NOT_FOUND_ERROR',
-        self::NOT_READABLE_ERROR => 'NOT_READABLE_ERROR',
-        self::EMPTY_ERROR => 'EMPTY_ERROR',
-        self::TOO_LARGE_ERROR => 'TOO_LARGE_ERROR',
-        self::INVALID_MIME_TYPE_ERROR => 'INVALID_MIME_TYPE_ERROR',
-    );
-
-    public $binaryFormat;
-    public $mimeTypes = array();
-    public $notFoundMessage = 'The file could not be found.';
-    public $notReadableMessage = 'The file is not readable.';
-    public $maxSizeMessage = 'The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.';
-    public $mimeTypesMessage = 'The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.';
-    public $disallowEmptyMessage = 'An empty file is not allowed.';
-
-    public $uploadIniSizeErrorMessage = 'The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.';
-    public $uploadFormSizeErrorMessage = 'The file is too large.';
-    public $uploadPartialErrorMessage = 'The file was only partially uploaded.';
-    public $uploadNoFileErrorMessage = 'No file was uploaded.';
-    public $uploadNoTmpDirErrorMessage = 'No temporary folder was configured in php.ini.';
-    public $uploadCantWriteErrorMessage = 'Cannot write temporary file to disk.';
-    public $uploadExtensionErrorMessage = 'A PHP extension caused the upload to fail.';
-    public $uploadErrorMessage = 'The file could not be uploaded.';
-
-    protected $maxSize;
-
-    public function __construct($options = null)
-    {
-        parent::__construct($options);
-
-        if (null !== $this->maxSize) {
-            $this->normalizeBinaryFormat($this->maxSize);
-        }
-    }
-
-    public function __set($option, $value)
-    {
-        if ('maxSize' === $option) {
-            $this->normalizeBinaryFormat($value);
-
-            return;
-        }
-
-        parent::__set($option, $value);
-    }
-
-    public function __get($option)
-    {
-        if ('maxSize' === $option) {
-            return $this->maxSize;
-        }
-
-        return parent::__get($option);
-    }
-
-    private function normalizeBinaryFormat($maxSize)
-    {
-        if (ctype_digit((string) $maxSize)) {
-            $this->maxSize = (int) $maxSize;
-            $this->binaryFormat = null === $this->binaryFormat ? false : $this->binaryFormat;
-        } elseif (preg_match('/^\d++k$/i', $maxSize)) {
-            $this->maxSize = $maxSize * 1000;
-            $this->binaryFormat = null === $this->binaryFormat ? false : $this->binaryFormat;
-        } elseif (preg_match('/^\d++M$/i', $maxSize)) {
-            $this->maxSize = $maxSize * 1000000;
-            $this->binaryFormat = null === $this->binaryFormat ? false : $this->binaryFormat;
-        } elseif (preg_match('/^\d++Ki$/i', $maxSize)) {
-            $this->maxSize = $maxSize << 10;
-            $this->binaryFormat = null === $this->binaryFormat ? true : $this->binaryFormat;
-        } elseif (preg_match('/^\d++Mi$/i', $maxSize)) {
-            $this->maxSize = $maxSize << 20;
-            $this->binaryFormat = null === $this->binaryFormat ? true : $this->binaryFormat;
-        } else {
-            throw new ConstraintDefinitionException(sprintf('"%s" is not a valid maximum size', $this->maxSize));
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/FileValidator.php b/vendor/symfony/validator/Constraints/FileValidator.php
deleted file mode 100644
index 34eb0d2..0000000
--- a/vendor/symfony/validator/Constraints/FileValidator.php
+++ /dev/null
@@ -1,329 +0,0 @@
-<?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\HttpFoundation\File\File as FileObject;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class FileValidator extends ConstraintValidator
-{
-    const KB_BYTES = 1000;
-    const MB_BYTES = 1000000;
-    const KIB_BYTES = 1024;
-    const MIB_BYTES = 1048576;
-
-    private static $suffices = array(
-        1 => 'bytes',
-        self::KB_BYTES => 'kB',
-        self::MB_BYTES => 'MB',
-        self::KIB_BYTES => 'KiB',
-        self::MIB_BYTES => 'MiB',
-    );
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof File) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\File');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if ($value instanceof UploadedFile && !$value->isValid()) {
-            switch ($value->getError()) {
-                case UPLOAD_ERR_INI_SIZE:
-                    $iniLimitSize = UploadedFile::getMaxFilesize();
-                    if ($constraint->maxSize && $constraint->maxSize < $iniLimitSize) {
-                        $limitInBytes = $constraint->maxSize;
-                        $binaryFormat = $constraint->binaryFormat;
-                    } else {
-                        $limitInBytes = $iniLimitSize;
-                        $binaryFormat = true;
-                    }
-
-                    list($sizeAsString, $limitAsString, $suffix) = $this->factorizeSizes(0, $limitInBytes, $binaryFormat);
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->uploadIniSizeErrorMessage)
-                            ->setParameter('{{ limit }}', $limitAsString)
-                            ->setParameter('{{ suffix }}', $suffix)
-                            ->setCode(UPLOAD_ERR_INI_SIZE)
-                            ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->uploadIniSizeErrorMessage)
-                            ->setParameter('{{ limit }}', $limitAsString)
-                            ->setParameter('{{ suffix }}', $suffix)
-                            ->setCode(UPLOAD_ERR_INI_SIZE)
-                            ->addViolation();
-                    }
-
-                    return;
-                case UPLOAD_ERR_FORM_SIZE:
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->uploadFormSizeErrorMessage)
-                            ->setCode(UPLOAD_ERR_FORM_SIZE)
-                            ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->uploadFormSizeErrorMessage)
-                            ->setCode(UPLOAD_ERR_FORM_SIZE)
-                            ->addViolation();
-                    }
-
-                    return;
-                case UPLOAD_ERR_PARTIAL:
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->uploadPartialErrorMessage)
-                            ->setCode(UPLOAD_ERR_PARTIAL)
-                            ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->uploadPartialErrorMessage)
-                            ->setCode(UPLOAD_ERR_PARTIAL)
-                            ->addViolation();
-                    }
-
-                    return;
-                case UPLOAD_ERR_NO_FILE:
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->uploadNoFileErrorMessage)
-                            ->setCode(UPLOAD_ERR_NO_FILE)
-                            ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->uploadNoFileErrorMessage)
-                            ->setCode(UPLOAD_ERR_NO_FILE)
-                            ->addViolation();
-                    }
-
-                    return;
-                case UPLOAD_ERR_NO_TMP_DIR:
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->uploadNoTmpDirErrorMessage)
-                            ->setCode(UPLOAD_ERR_NO_TMP_DIR)
-                            ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->uploadNoTmpDirErrorMessage)
-                            ->setCode(UPLOAD_ERR_NO_TMP_DIR)
-                            ->addViolation();
-                    }
-
-                    return;
-                case UPLOAD_ERR_CANT_WRITE:
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->uploadCantWriteErrorMessage)
-                            ->setCode(UPLOAD_ERR_CANT_WRITE)
-                            ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->uploadCantWriteErrorMessage)
-                            ->setCode(UPLOAD_ERR_CANT_WRITE)
-                            ->addViolation();
-                    }
-
-                    return;
-                case UPLOAD_ERR_EXTENSION:
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->uploadExtensionErrorMessage)
-                            ->setCode(UPLOAD_ERR_EXTENSION)
-                            ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->uploadExtensionErrorMessage)
-                            ->setCode(UPLOAD_ERR_EXTENSION)
-                            ->addViolation();
-                    }
-
-                    return;
-                default:
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->uploadErrorMessage)
-                            ->setCode($value->getError())
-                            ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->uploadErrorMessage)
-                            ->setCode($value->getError())
-                            ->addViolation();
-                    }
-
-                    return;
-            }
-        }
-
-        if (!is_scalar($value) && !$value instanceof FileObject && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $path = $value instanceof FileObject ? $value->getPathname() : (string) $value;
-
-        if (!is_file($path)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->notFoundMessage)
-                    ->setParameter('{{ file }}', $this->formatValue($path))
-                    ->setCode(File::NOT_FOUND_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->notFoundMessage)
-                    ->setParameter('{{ file }}', $this->formatValue($path))
-                    ->setCode(File::NOT_FOUND_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if (!is_readable($path)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->notReadableMessage)
-                    ->setParameter('{{ file }}', $this->formatValue($path))
-                    ->setCode(File::NOT_READABLE_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->notReadableMessage)
-                    ->setParameter('{{ file }}', $this->formatValue($path))
-                    ->setCode(File::NOT_READABLE_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        $sizeInBytes = filesize($path);
-
-        if (0 === $sizeInBytes) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->disallowEmptyMessage)
-                    ->setParameter('{{ file }}', $this->formatValue($path))
-                    ->setCode(File::EMPTY_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->disallowEmptyMessage)
-                    ->setParameter('{{ file }}', $this->formatValue($path))
-                    ->setCode(File::EMPTY_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if ($constraint->maxSize) {
-            $limitInBytes = $constraint->maxSize;
-
-            if ($sizeInBytes > $limitInBytes) {
-                list($sizeAsString, $limitAsString, $suffix) = $this->factorizeSizes($sizeInBytes, $limitInBytes, $constraint->binaryFormat);
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->maxSizeMessage)
-                        ->setParameter('{{ file }}', $this->formatValue($path))
-                        ->setParameter('{{ size }}', $sizeAsString)
-                        ->setParameter('{{ limit }}', $limitAsString)
-                        ->setParameter('{{ suffix }}', $suffix)
-                        ->setCode(File::TOO_LARGE_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->maxSizeMessage)
-                        ->setParameter('{{ file }}', $this->formatValue($path))
-                        ->setParameter('{{ size }}', $sizeAsString)
-                        ->setParameter('{{ limit }}', $limitAsString)
-                        ->setParameter('{{ suffix }}', $suffix)
-                        ->setCode(File::TOO_LARGE_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-        }
-
-        if ($constraint->mimeTypes) {
-            if (!$value instanceof FileObject) {
-                $value = new FileObject($value);
-            }
-
-            $mimeTypes = (array) $constraint->mimeTypes;
-            $mime = $value->getMimeType();
-
-            foreach ($mimeTypes as $mimeType) {
-                if ($mimeType === $mime) {
-                    return;
-                }
-
-                if ($discrete = strstr($mimeType, '/*', true)) {
-                    if (strstr($mime, '/', true) === $discrete) {
-                        return;
-                    }
-                }
-            }
-
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->mimeTypesMessage)
-                    ->setParameter('{{ file }}', $this->formatValue($path))
-                    ->setParameter('{{ type }}', $this->formatValue($mime))
-                    ->setParameter('{{ types }}', $this->formatValues($mimeTypes))
-                    ->setCode(File::INVALID_MIME_TYPE_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->mimeTypesMessage)
-                    ->setParameter('{{ file }}', $this->formatValue($path))
-                    ->setParameter('{{ type }}', $this->formatValue($mime))
-                    ->setParameter('{{ types }}', $this->formatValues($mimeTypes))
-                    ->setCode(File::INVALID_MIME_TYPE_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-
-    private static function moreDecimalsThan($double, $numberOfDecimals)
-    {
-        return strlen((string) $double) > strlen(round($double, $numberOfDecimals));
-    }
-
-    /**
-     * Convert the limit to the smallest possible number
-     * (i.e. try "MB", then "kB", then "bytes").
-     */
-    private function factorizeSizes($size, $limit, $binaryFormat)
-    {
-        if ($binaryFormat) {
-            $coef = self::MIB_BYTES;
-            $coefFactor = self::KIB_BYTES;
-        } else {
-            $coef = self::MB_BYTES;
-            $coefFactor = self::KB_BYTES;
-        }
-
-        $limitAsString = (string) ($limit / $coef);
-
-        // Restrict the limit to 2 decimals (without rounding! we
-        // need the precise value)
-        while (self::moreDecimalsThan($limitAsString, 2)) {
-            $coef /= $coefFactor;
-            $limitAsString = (string) ($limit / $coef);
-        }
-
-        // Convert size to the same measure, but round to 2 decimals
-        $sizeAsString = (string) round($size / $coef, 2);
-
-        // If the size and limit produce the same string output
-        // (due to rounding), reduce the coefficient
-        while ($sizeAsString === $limitAsString) {
-            $coef /= $coefFactor;
-            $limitAsString = (string) ($limit / $coef);
-            $sizeAsString = (string) round($size / $coef, 2);
-        }
-
-        return array($sizeAsString, $limitAsString, self::$suffices[$coef]);
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/GreaterThan.php b/vendor/symfony/validator/Constraints/GreaterThan.php
deleted file mode 100644
index ec7fafb..0000000
--- a/vendor/symfony/validator/Constraints/GreaterThan.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class GreaterThan extends AbstractComparison
-{
-    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
deleted file mode 100644
index 36fdd9c..0000000
--- a/vendor/symfony/validator/Constraints/GreaterThanOrEqual.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class GreaterThanOrEqual extends AbstractComparison
-{
-    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
deleted file mode 100644
index 2363204..0000000
--- a/vendor/symfony/validator/Constraints/GreaterThanOrEqualValidator.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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;
-
-/**
- * Validates values are greater than or equal to the previous (>=).
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class GreaterThanOrEqualValidator extends AbstractComparisonValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function compareValues($value1, $value2)
-    {
-        return $value1 >= $value2;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/GreaterThanValidator.php b/vendor/symfony/validator/Constraints/GreaterThanValidator.php
deleted file mode 100644
index fdcf0c1..0000000
--- a/vendor/symfony/validator/Constraints/GreaterThanValidator.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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;
-
-/**
- * Validates values are greater than the previous (>).
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class GreaterThanValidator extends AbstractComparisonValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function compareValues($value1, $value2)
-    {
-        return $value1 > $value2;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/GroupSequence.php b/vendor/symfony/validator/Constraints/GroupSequence.php
deleted file mode 100644
index aea0558..0000000
--- a/vendor/symfony/validator/Constraints/GroupSequence.php
+++ /dev/null
@@ -1,211 +0,0 @@
-<?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\Exception\OutOfBoundsException;
-
-/**
- * A sequence of validation groups.
- *
- * When validating a group sequence, each group will only be validated if all
- * of the previous groups in the sequence succeeded. For example:
- *
- *     $validator->validate($address, null, new GroupSequence('Basic', 'Strict'));
- *
- * In the first step, all constraints that belong to the group "Basic" will be
- * validated. If none of the constraints fail, the validator will then validate
- * the constraints in group "Strict". This is useful, for example, if "Strict"
- * contains expensive checks that require a lot of CPU or slow, external
- * services. You usually don't want to run expensive checks if any of the cheap
- * checks fail.
- *
- * When adding metadata to a class, you can override the "Default" group of
- * that class with a group sequence:
- *
- *     /**
- *      * @GroupSequence({"Address", "Strict"})
- *      *\/
- *     class Address
- *     {
- *         // ...
- *     }
- *
- * Whenever you validate that object in the "Default" group, the group sequence
- * will be validated:
- *
- *     $validator->validate($address);
- *
- * If you want to execute the constraints of the "Default" group for a class
- * with an overridden default group, pass the class name as group name instead:
- *
- *     $validator->validate($address, null, "Address")
- *
- * @Annotation
- * @Target({"CLASS", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * Implementing \ArrayAccess, \IteratorAggregate and \Countable is @deprecated since 2.5 and will be removed in 3.0.
- */
-class GroupSequence implements \ArrayAccess, \IteratorAggregate, \Countable
-{
-    /**
-     * The groups in the sequence.
-     *
-     * @var string[]|GroupSequence[]
-     */
-    public $groups;
-
-    /**
-     * The group in which cascaded objects are validated when validating
-     * this sequence.
-     *
-     * By default, cascaded objects are validated in each of the groups of
-     * the sequence.
-     *
-     * If a class has a group sequence attached, that sequence replaces the
-     * "Default" group. When validating that class in the "Default" group, the
-     * group sequence is used instead, but still the "Default" group should be
-     * cascaded to other objects.
-     *
-     * @var string|GroupSequence
-     */
-    public $cascadedGroup;
-
-    /**
-     * Creates a new group sequence.
-     *
-     * @param string[] $groups The groups in the sequence
-     */
-    public function __construct(array $groups)
-    {
-        // Support for Doctrine annotations
-        $this->groups = isset($groups['value']) ? $groups['value'] : $groups;
-    }
-
-    /**
-     * Returns an iterator for this group.
-     *
-     * Implemented for backwards compatibility with Symfony < 2.5.
-     *
-     * @return \Traversable The iterator
-     *
-     * @see \IteratorAggregate::getIterator()
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function getIterator()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        return new \ArrayIterator($this->groups);
-    }
-
-    /**
-     * Returns whether the given offset exists in the sequence.
-     *
-     * Implemented for backwards compatibility with Symfony < 2.5.
-     *
-     * @param int $offset The offset
-     *
-     * @return bool Whether the offset exists
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function offsetExists($offset)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        return isset($this->groups[$offset]);
-    }
-
-    /**
-     * Returns the group at the given offset.
-     *
-     * Implemented for backwards compatibility with Symfony < 2.5.
-     *
-     * @param int $offset The offset
-     *
-     * @return string The group a the given offset
-     *
-     * @throws OutOfBoundsException If the object does not exist
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function offsetGet($offset)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        if (!isset($this->groups[$offset])) {
-            throw new OutOfBoundsException(sprintf(
-                'The offset "%s" does not exist.',
-                $offset
-            ));
-        }
-
-        return $this->groups[$offset];
-    }
-
-    /**
-     * Sets the group at the given offset.
-     *
-     * Implemented for backwards compatibility with Symfony < 2.5.
-     *
-     * @param int    $offset The offset
-     * @param string $value  The group name
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function offsetSet($offset, $value)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        if (null !== $offset) {
-            $this->groups[$offset] = $value;
-
-            return;
-        }
-
-        $this->groups[] = $value;
-    }
-
-    /**
-     * Removes the group at the given offset.
-     *
-     * Implemented for backwards compatibility with Symfony < 2.5.
-     *
-     * @param int $offset The offset
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function offsetUnset($offset)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        unset($this->groups[$offset]);
-    }
-
-    /**
-     * Returns the number of groups in the sequence.
-     *
-     * Implemented for backwards compatibility with Symfony < 2.5.
-     *
-     * @return int The number of groups
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function count()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        return count($this->groups);
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/GroupSequenceProvider.php b/vendor/symfony/validator/Constraints/GroupSequenceProvider.php
deleted file mode 100644
index 3904473..0000000
--- a/vendor/symfony/validator/Constraints/GroupSequenceProvider.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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;
-
-/**
- * Annotation to define a group sequence provider.
- *
- * @Annotation
- * @Target({"CLASS", "ANNOTATION"})
- */
-class GroupSequenceProvider
-{
-}
diff --git a/vendor/symfony/validator/Constraints/Iban.php b/vendor/symfony/validator/Constraints/Iban.php
deleted file mode 100644
index c4dc985..0000000
--- a/vendor/symfony/validator/Constraints/Iban.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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 Manuel Reinhard <manu@sprain.ch>
- * @author Michael Schummel
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-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;
-    /** @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;
-
-    protected static $errorNames = array(
-        self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
-        self::INVALID_COUNTRY_CODE_ERROR => 'INVALID_COUNTRY_CODE_ERROR',
-        self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
-        self::INVALID_CASE_ERROR => 'INVALID_CASE_ERROR',
-        self::CHECKSUM_FAILED_ERROR => 'CHECKSUM_FAILED_ERROR',
-        self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
-        self::NOT_SUPPORTED_COUNTRY_CODE_ERROR => 'NOT_SUPPORTED_COUNTRY_CODE_ERROR',
-    );
-
-    public $message = 'This is not a valid International Bank Account Number (IBAN).';
-}
diff --git a/vendor/symfony/validator/Constraints/IbanValidator.php b/vendor/symfony/validator/Constraints/IbanValidator.php
deleted file mode 100644
index 72ae002..0000000
--- a/vendor/symfony/validator/Constraints/IbanValidator.php
+++ /dev/null
@@ -1,294 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Manuel Reinhard <manu@sprain.ch>
- * @author Michael Schummel
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @link http://www.michael-schummel.de/2007/10/05/iban-prufung-mit-php/
- */
-class IbanValidator extends ConstraintValidator
-{
-    /**
-     * IBAN country specific formats.
-     *
-     * The first 2 characters from an IBAN format are the two-character ISO country code.
-     * The following 2 characters represent the check digits calculated from the rest of the IBAN characters.
-     * The rest are up to thirty alphanumeric characters for
-     * a BBAN (Basic Bank Account Number) which has a fixed length per country and,
-     * included within it, a bank identifier with a fixed position and a fixed length per country
-     *
-     * @link http://www.swift.com/dsp/resources/documents/IBAN_Registry.pdf
-     *
-     * @var array
-     */
-    private static $formats = array(
-        'AD' => 'AD\d{2}\d{4}\d{4}[\dA-Z]{12}', // Andorra
-        'AE' => 'AE\d{2}\d{3}\d{16}', // United Arab Emirates
-        'AL' => 'AL\d{2}\d{8}[\dA-Z]{16}', // Albania
-        'AO' => 'AO\d{2}\d{21}', // Angola
-        'AT' => 'AT\d{2}\d{5}\d{11}', // Austria
-        'AX' => 'FI\d{2}\d{6}\d{7}\d{1}', // Aland Islands
-        'AZ' => 'AZ\d{2}[A-Z]{4}[\dA-Z]{20}', // Azerbaijan
-        'BA' => 'BA\d{2}\d{3}\d{3}\d{8}\d{2}', // Bosnia and Herzegovina
-        'BE' => 'BE\d{2}\d{3}\d{7}\d{2}', // Belgium
-        'BF' => 'BF\d{2}\d{23}', // Burkina Faso
-        'BG' => 'BG\d{2}[A-Z]{4}\d{4}\d{2}[\dA-Z]{8}', // Bulgaria
-        'BH' => 'BH\d{2}[A-Z]{4}[\dA-Z]{14}', // Bahrain
-        'BI' => 'BI\d{2}\d{12}', // Burundi
-        'BJ' => 'BJ\d{2}[A-Z]{1}\d{23}', // Benin
-        'BL' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Saint Barthelemy
-        'BR' => 'BR\d{2}\d{8}\d{5}\d{10}[A-Z][\dA-Z]', // Brazil
-        'CG' => 'CG\d{2}\d{23}', // Congo
-        'CH' => 'CH\d{2}\d{5}[\dA-Z]{12}', // Switzerland
-        'CI' => 'CI\d{2}[A-Z]{1}\d{23}', // Ivory Coast
-        'CM' => 'CM\d{2}\d{23}', // Cameron
-        'CR' => 'CR\d{2}\d{3}\d{14}', // Costa Rica
-        'CV' => 'CV\d{2}\d{21}', // Cape Verde
-        'CY' => 'CY\d{2}\d{3}\d{5}[\dA-Z]{16}', // Cyprus
-        'CZ' => 'CZ\d{2}\d{20}', // Czech Republic
-        'DE' => 'DE\d{2}\d{8}\d{10}', // Germany
-        'DO' => 'DO\d{2}[\dA-Z]{4}\d{20}', // Dominican Republic
-        'DK' => 'DK\d{2}\d{4}\d{10}', // Denmark
-        'DZ' => 'DZ\d{2}\d{20}', // Algeria
-        'EE' => 'EE\d{2}\d{2}\d{2}\d{11}\d{1}', // Estonia
-        'ES' => 'ES\d{2}\d{4}\d{4}\d{1}\d{1}\d{10}', // Spain (also includes Canary Islands, Ceuta and Melilla)
-        'FI' => 'FI\d{2}\d{6}\d{7}\d{1}', // Finland
-        'FO' => 'FO\d{2}\d{4}\d{9}\d{1}', // Faroe Islands
-        'FR' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // France
-        'GF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // French Guyana
-        'GB' => 'GB\d{2}[A-Z]{4}\d{6}\d{8}', // United Kingdom of Great Britain and Northern Ireland
-        'GE' => 'GE\d{2}[A-Z]{2}\d{16}', // Georgia
-        'GI' => 'GI\d{2}[A-Z]{4}[\dA-Z]{15}', // Gibraltar
-        'GL' => 'GL\d{2}\d{4}\d{9}\d{1}', // Greenland
-        'GP' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Guadeloupe
-        'GR' => 'GR\d{2}\d{3}\d{4}[\dA-Z]{16}', // Greece
-        'GT' => 'GT\d{2}[\dA-Z]{4}[\dA-Z]{20}', // Guatemala
-        'HR' => 'HR\d{2}\d{7}\d{10}', // Croatia
-        'HU' => 'HU\d{2}\d{3}\d{4}\d{1}\d{15}\d{1}', // Hungary
-        'IE' => 'IE\d{2}[A-Z]{4}\d{6}\d{8}', // Ireland
-        'IL' => 'IL\d{2}\d{3}\d{3}\d{13}', // Israel
-        'IR' => 'IR\d{2}\d{22}', // Iran
-        'IS' => 'IS\d{2}\d{4}\d{2}\d{6}\d{10}', // Iceland
-        'IT' => 'IT\d{2}[A-Z]{1}\d{5}\d{5}[\dA-Z]{12}', // Italy
-        'JO' => 'JO\d{2}[A-Z]{4}\d{4}[\dA-Z]{18}', // Jordan
-        'KW' => 'KW\d{2}[A-Z]{4}\d{22}', // KUWAIT
-        'KZ' => 'KZ\d{2}\d{3}[\dA-Z]{13}', // Kazakhstan
-        'LB' => 'LB\d{2}\d{4}[\dA-Z]{20}', // LEBANON
-        'LI' => 'LI\d{2}\d{5}[\dA-Z]{12}', // Liechtenstein (Principality of)
-        'LT' => 'LT\d{2}\d{5}\d{11}', // Lithuania
-        'LU' => 'LU\d{2}\d{3}[\dA-Z]{13}', // Luxembourg
-        'LV' => 'LV\d{2}[A-Z]{4}[\dA-Z]{13}', // Latvia
-        'MC' => 'MC\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Monaco
-        'MD' => 'MD\d{2}[\dA-Z]{2}[\dA-Z]{18}', // Moldova
-        'ME' => 'ME\d{2}\d{3}\d{13}\d{2}', // Montenegro
-        'MF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Saint Martin (French part)
-        'MG' => 'MG\d{2}\d{23}', // Madagascar
-        'MK' => 'MK\d{2}\d{3}[\dA-Z]{10}\d{2}', // Macedonia, Former Yugoslav Republic of
-        'ML' => 'ML\d{2}[A-Z]{1}\d{23}', // Mali
-        'MQ' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Martinique
-        'MR' => 'MR13\d{5}\d{5}\d{11}\d{2}', // Mauritania
-        'MT' => 'MT\d{2}[A-Z]{4}\d{5}[\dA-Z]{18}', // Malta
-        'MU' => 'MU\d{2}[A-Z]{4}\d{2}\d{2}\d{12}\d{3}[A-Z]{3}', // Mauritius
-        'MZ' => 'MZ\d{2}\d{21}', // Mozambique
-        'NC' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // New Caledonia
-        'NL' => 'NL\d{2}[A-Z]{4}\d{10}', // The Netherlands
-        'NO' => 'NO\d{2}\d{4}\d{6}\d{1}', // Norway
-        'PF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // French Polynesia
-        'PK' => 'PK\d{2}[A-Z]{4}[\dA-Z]{16}', // Pakistan
-        'PL' => 'PL\d{2}\d{8}\d{16}', // Poland
-        'PM' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Saint Pierre et Miquelon
-        'PS' => 'PS\d{2}[A-Z]{4}[\dA-Z]{21}', // Palestine, State of
-        'PT' => 'PT\d{2}\d{4}\d{4}\d{11}\d{2}', // Portugal (plus Azores and Madeira)
-        'QA' => 'QA\d{2}[A-Z]{4}[\dA-Z]{21}', // Qatar
-        'RE' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Reunion
-        'RO' => 'RO\d{2}[A-Z]{4}[\dA-Z]{16}', // Romania
-        'RS' => 'RS\d{2}\d{3}\d{13}\d{2}', // Serbia
-        'SA' => 'SA\d{2}\d{2}[\dA-Z]{18}', // Saudi Arabia
-        'SE' => 'SE\d{2}\d{3}\d{16}\d{1}', // Sweden
-        'SI' => 'SI\d{2}\d{5}\d{8}\d{2}', // Slovenia
-        'SK' => 'SK\d{2}\d{4}\d{6}\d{10}', // Slovak Republic
-        'SM' => 'SM\d{2}[A-Z]{1}\d{5}\d{5}[\dA-Z]{12}', // San Marino
-        'SN' => 'SN\d{2}[A-Z]{1}\d{23}', // Senegal
-        'TF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // French Southern Territories
-        'TL' => 'TL\d{2}\d{3}\d{14}\d{2}', // Timor-Leste
-        'TN' => 'TN59\d{2}\d{3}\d{13}\d{2}', // Tunisia
-        'TR' => 'TR\d{2}\d{5}[\dA-Z]{1}[\dA-Z]{16}', // Turkey
-        'UA' => 'UA\d{2}[A-Z]{6}[\dA-Z]{19}', // Ukraine
-        'VG' => 'VG\d{2}[A-Z]{4}\d{16}', // Virgin Islands, British
-        'WF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Wallis and Futuna Islands
-        'XK' => 'XK\d{2}\d{4}\d{10}\d{2}', // Republic of Kosovo
-        'YT' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Mayotte
-    );
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Iban) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Iban');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-
-        // Remove spaces and convert to uppercase
-        $canonicalized = str_replace(' ', '', strtoupper($value));
-
-        // The IBAN must contain only digits and characters...
-        if (!ctype_alnum($canonicalized)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Iban::INVALID_CHARACTERS_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Iban::INVALID_CHARACTERS_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        // ...start with a two-letter country code
-        $countryCode = substr($canonicalized, 0, 2);
-
-        if (!ctype_alpha($countryCode)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Iban::INVALID_COUNTRY_CODE_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Iban::INVALID_COUNTRY_CODE_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        // ...have a format available
-        if (!array_key_exists($countryCode, self::$formats)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Iban::NOT_SUPPORTED_COUNTRY_CODE_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Iban::NOT_SUPPORTED_COUNTRY_CODE_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        // ...and have a valid format
-        if (!preg_match('/^'.self::$formats[$countryCode].'$/', $canonicalized)
-        ) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Iban::INVALID_FORMAT_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Iban::INVALID_FORMAT_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        // Move the first four characters to the end
-        // e.g. CH93 0076 2011 6238 5295 7
-        //   -> 0076 2011 6238 5295 7 CH93
-        $canonicalized = substr($canonicalized, 4).substr($canonicalized, 0, 4);
-
-        // Convert all remaining letters to their ordinals
-        // The result is an integer, which is too large for PHP's int
-        // data type, so we store it in a string instead.
-        // e.g. 0076 2011 6238 5295 7 CH93
-        //   -> 0076 2011 6238 5295 7 121893
-        $checkSum = self::toBigInt($canonicalized);
-
-        // Do a modulo-97 operation on the large integer
-        // We cannot use PHP's modulo operator, so we calculate the
-        // modulo step-wisely instead
-        if (1 !== self::bigModulo97($checkSum)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Iban::CHECKSUM_FAILED_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Iban::CHECKSUM_FAILED_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-
-    private static function toBigInt($string)
-    {
-        $chars = str_split($string);
-        $bigInt = '';
-
-        foreach ($chars as $char) {
-            // Convert uppercase characters to ordinals, starting with 10 for "A"
-            if (ctype_upper($char)) {
-                $bigInt .= (ord($char) - 55);
-
-                continue;
-            }
-
-            // Simply append digits
-            $bigInt .= $char;
-        }
-
-        return $bigInt;
-    }
-
-    private static function bigModulo97($bigInt)
-    {
-        $parts = str_split($bigInt, 7);
-        $rest = 0;
-
-        foreach ($parts as $part) {
-            $rest = ($rest.$part) % 97;
-        }
-
-        return $rest;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/IdenticalTo.php b/vendor/symfony/validator/Constraints/IdenticalTo.php
deleted file mode 100644
index 6d00286..0000000
--- a/vendor/symfony/validator/Constraints/IdenticalTo.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class IdenticalTo extends AbstractComparison
-{
-    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
deleted file mode 100644
index a186726..0000000
--- a/vendor/symfony/validator/Constraints/IdenticalToValidator.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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;
-
-/**
- * Validates values are identical (===).
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class IdenticalToValidator extends AbstractComparisonValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function compareValues($value1, $value2)
-    {
-        return $value1 === $value2;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Image.php b/vendor/symfony/validator/Constraints/Image.php
deleted file mode 100644
index f75c6a2..0000000
--- a/vendor/symfony/validator/Constraints/Image.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Benjamin Dulau <benjamin.dulau@gmail.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-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;
-
-    // Include the mapping from the base class
-
-    protected static $errorNames = array(
-        self::NOT_FOUND_ERROR => 'NOT_FOUND_ERROR',
-        self::NOT_READABLE_ERROR => 'NOT_READABLE_ERROR',
-        self::EMPTY_ERROR => 'EMPTY_ERROR',
-        self::TOO_LARGE_ERROR => 'TOO_LARGE_ERROR',
-        self::INVALID_MIME_TYPE_ERROR => 'INVALID_MIME_TYPE_ERROR',
-        self::SIZE_NOT_DETECTED_ERROR => 'SIZE_NOT_DETECTED_ERROR',
-        self::TOO_WIDE_ERROR => 'TOO_WIDE_ERROR',
-        self::TOO_NARROW_ERROR => 'TOO_NARROW_ERROR',
-        self::TOO_HIGH_ERROR => 'TOO_HIGH_ERROR',
-        self::TOO_LOW_ERROR => 'TOO_LOW_ERROR',
-        self::RATIO_TOO_BIG_ERROR => 'RATIO_TOO_BIG_ERROR',
-        self::RATIO_TOO_SMALL_ERROR => 'RATIO_TOO_SMALL_ERROR',
-        self::SQUARE_NOT_ALLOWED_ERROR => 'SQUARE_NOT_ALLOWED_ERROR',
-        self::LANDSCAPE_NOT_ALLOWED_ERROR => 'LANDSCAPE_NOT_ALLOWED_ERROR',
-        self::PORTRAIT_NOT_ALLOWED_ERROR => 'PORTRAIT_NOT_ALLOWED_ERROR',
-    );
-
-    public $mimeTypes = 'image/*';
-    public $minWidth;
-    public $maxWidth;
-    public $maxHeight;
-    public $minHeight;
-    public $maxRatio;
-    public $minRatio;
-    public $allowSquare = true;
-    public $allowLandscape = true;
-    public $allowPortrait = true;
-
-    // The constant for a wrong MIME type is taken from the parent class.
-    public $mimeTypesMessage = 'This file is not a valid image.';
-    public $sizeNotDetectedMessage = 'The size of the image could not be detected.';
-    public $maxWidthMessage = 'The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.';
-    public $minWidthMessage = 'The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.';
-    public $maxHeightMessage = 'The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.';
-    public $minHeightMessage = 'The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.';
-    public $maxRatioMessage = 'The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.';
-    public $minRatioMessage = 'The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.';
-    public $allowSquareMessage = 'The image is square ({{ width }}x{{ height }}px). Square images are not allowed.';
-    public $allowLandscapeMessage = 'The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.';
-    public $allowPortraitMessage = 'The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.';
-}
diff --git a/vendor/symfony/validator/Constraints/ImageValidator.php b/vendor/symfony/validator/Constraints/ImageValidator.php
deleted file mode 100644
index a5165e2..0000000
--- a/vendor/symfony/validator/Constraints/ImageValidator.php
+++ /dev/null
@@ -1,261 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates whether a value is a valid image file and is valid
- * against minWidth, maxWidth, minHeight and maxHeight constraints.
- *
- * @author Benjamin Dulau <benjamin.dulau@gmail.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ImageValidator extends FileValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Image) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Image');
-        }
-
-        $violations = count($this->context->getViolations());
-
-        parent::validate($value, $constraint);
-
-        $failed = count($this->context->getViolations()) !== $violations;
-
-        if ($failed || null === $value || '' === $value) {
-            return;
-        }
-
-        if (null === $constraint->minWidth && null === $constraint->maxWidth
-            && null === $constraint->minHeight && null === $constraint->maxHeight
-            && null === $constraint->minRatio && null === $constraint->maxRatio
-            && $constraint->allowSquare && $constraint->allowLandscape && $constraint->allowPortrait) {
-            return;
-        }
-
-        $size = @getimagesize($value);
-
-        if (empty($size) || ($size[0] === 0) || ($size[1] === 0)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->sizeNotDetectedMessage)
-                    ->setCode(Image::SIZE_NOT_DETECTED_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->sizeNotDetectedMessage)
-                    ->setCode(Image::SIZE_NOT_DETECTED_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        $width = $size[0];
-        $height = $size[1];
-
-        if ($constraint->minWidth) {
-            if (!ctype_digit((string) $constraint->minWidth)) {
-                throw new ConstraintDefinitionException(sprintf('"%s" is not a valid minimum width', $constraint->minWidth));
-            }
-
-            if ($width < $constraint->minWidth) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->minWidthMessage)
-                        ->setParameter('{{ width }}', $width)
-                        ->setParameter('{{ min_width }}', $constraint->minWidth)
-                        ->setCode(Image::TOO_NARROW_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->minWidthMessage)
-                        ->setParameter('{{ width }}', $width)
-                        ->setParameter('{{ min_width }}', $constraint->minWidth)
-                        ->setCode(Image::TOO_NARROW_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-        }
-
-        if ($constraint->maxWidth) {
-            if (!ctype_digit((string) $constraint->maxWidth)) {
-                throw new ConstraintDefinitionException(sprintf('"%s" is not a valid maximum width', $constraint->maxWidth));
-            }
-
-            if ($width > $constraint->maxWidth) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->maxWidthMessage)
-                        ->setParameter('{{ width }}', $width)
-                        ->setParameter('{{ max_width }}', $constraint->maxWidth)
-                        ->setCode(Image::TOO_WIDE_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->maxWidthMessage)
-                        ->setParameter('{{ width }}', $width)
-                        ->setParameter('{{ max_width }}', $constraint->maxWidth)
-                        ->setCode(Image::TOO_WIDE_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-        }
-
-        if ($constraint->minHeight) {
-            if (!ctype_digit((string) $constraint->minHeight)) {
-                throw new ConstraintDefinitionException(sprintf('"%s" is not a valid minimum height', $constraint->minHeight));
-            }
-
-            if ($height < $constraint->minHeight) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->minHeightMessage)
-                        ->setParameter('{{ height }}', $height)
-                        ->setParameter('{{ min_height }}', $constraint->minHeight)
-                        ->setCode(Image::TOO_LOW_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->minHeightMessage)
-                        ->setParameter('{{ height }}', $height)
-                        ->setParameter('{{ min_height }}', $constraint->minHeight)
-                        ->setCode(Image::TOO_LOW_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-        }
-
-        if ($constraint->maxHeight) {
-            if (!ctype_digit((string) $constraint->maxHeight)) {
-                throw new ConstraintDefinitionException(sprintf('"%s" is not a valid maximum height', $constraint->maxHeight));
-            }
-
-            if ($height > $constraint->maxHeight) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->maxHeightMessage)
-                        ->setParameter('{{ height }}', $height)
-                        ->setParameter('{{ max_height }}', $constraint->maxHeight)
-                        ->setCode(Image::TOO_HIGH_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->maxHeightMessage)
-                        ->setParameter('{{ height }}', $height)
-                        ->setParameter('{{ max_height }}', $constraint->maxHeight)
-                        ->setCode(Image::TOO_HIGH_ERROR)
-                        ->addViolation();
-                }
-            }
-        }
-
-        $ratio = round($width / $height, 2);
-
-        if (null !== $constraint->minRatio) {
-            if (!is_numeric((string) $constraint->minRatio)) {
-                throw new ConstraintDefinitionException(sprintf('"%s" is not a valid minimum ratio', $constraint->minRatio));
-            }
-
-            if ($ratio < $constraint->minRatio) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->minRatioMessage)
-                        ->setParameter('{{ ratio }}', $ratio)
-                        ->setParameter('{{ min_ratio }}', $constraint->minRatio)
-                        ->setCode(Image::RATIO_TOO_SMALL_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->minRatioMessage)
-                        ->setParameter('{{ ratio }}', $ratio)
-                        ->setParameter('{{ min_ratio }}', $constraint->minRatio)
-                        ->setCode(Image::RATIO_TOO_SMALL_ERROR)
-                        ->addViolation();
-                }
-            }
-        }
-
-        if (null !== $constraint->maxRatio) {
-            if (!is_numeric((string) $constraint->maxRatio)) {
-                throw new ConstraintDefinitionException(sprintf('"%s" is not a valid maximum ratio', $constraint->maxRatio));
-            }
-
-            if ($ratio > $constraint->maxRatio) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->maxRatioMessage)
-                        ->setParameter('{{ ratio }}', $ratio)
-                        ->setParameter('{{ max_ratio }}', $constraint->maxRatio)
-                        ->setCode(Image::RATIO_TOO_BIG_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->maxRatioMessage)
-                        ->setParameter('{{ ratio }}', $ratio)
-                        ->setParameter('{{ max_ratio }}', $constraint->maxRatio)
-                        ->setCode(Image::RATIO_TOO_BIG_ERROR)
-                        ->addViolation();
-                }
-            }
-        }
-
-        if (!$constraint->allowSquare && $width == $height) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->allowSquareMessage)
-                    ->setParameter('{{ width }}', $width)
-                    ->setParameter('{{ height }}', $height)
-                    ->setCode(Image::SQUARE_NOT_ALLOWED_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->allowSquareMessage)
-                    ->setParameter('{{ width }}', $width)
-                    ->setParameter('{{ height }}', $height)
-                    ->setCode(Image::SQUARE_NOT_ALLOWED_ERROR)
-                    ->addViolation();
-            }
-        }
-
-        if (!$constraint->allowLandscape && $width > $height) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->allowLandscapeMessage)
-                    ->setParameter('{{ width }}', $width)
-                    ->setParameter('{{ height }}', $height)
-                    ->setCode(Image::LANDSCAPE_NOT_ALLOWED_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->allowLandscapeMessage)
-                    ->setParameter('{{ width }}', $width)
-                    ->setParameter('{{ height }}', $height)
-                    ->setCode(Image::LANDSCAPE_NOT_ALLOWED_ERROR)
-                    ->addViolation();
-            }
-        }
-
-        if (!$constraint->allowPortrait && $width < $height) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->allowPortraitMessage)
-                    ->setParameter('{{ width }}', $width)
-                    ->setParameter('{{ height }}', $height)
-                    ->setCode(Image::PORTRAIT_NOT_ALLOWED_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->allowPortraitMessage)
-                    ->setParameter('{{ width }}', $width)
-                    ->setParameter('{{ height }}', $height)
-                    ->setCode(Image::PORTRAIT_NOT_ALLOWED_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Ip.php b/vendor/symfony/validator/Constraints/Ip.php
deleted file mode 100644
index 8096502..0000000
--- a/vendor/symfony/validator/Constraints/Ip.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?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\Exception\ConstraintDefinitionException;
-
-/**
- * Validates that a value is a valid IP address.
- *
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @author Joseph Bielawski <stloyd@gmail.com>
- */
-class Ip extends Constraint
-{
-    const V4 = '4';
-    const V6 = '6';
-    const ALL = 'all';
-
-    // adds FILTER_FLAG_NO_PRIV_RANGE flag (skip private ranges)
-    const V4_NO_PRIV = '4_no_priv';
-    const V6_NO_PRIV = '6_no_priv';
-    const ALL_NO_PRIV = 'all_no_priv';
-
-    // adds FILTER_FLAG_NO_RES_RANGE flag (skip reserved ranges)
-    const V4_NO_RES = '4_no_res';
-    const V6_NO_RES = '6_no_res';
-    const ALL_NO_RES = 'all_no_res';
-
-    // adds FILTER_FLAG_NO_PRIV_RANGE and FILTER_FLAG_NO_RES_RANGE flags (skip both)
-    const V4_ONLY_PUBLIC = '4_public';
-    const V6_ONLY_PUBLIC = '6_public';
-    const ALL_ONLY_PUBLIC = 'all_public';
-
-    protected static $versions = array(
-        self::V4,
-        self::V6,
-        self::ALL,
-
-        self::V4_NO_PRIV,
-        self::V6_NO_PRIV,
-        self::ALL_NO_PRIV,
-
-        self::V4_NO_RES,
-        self::V6_NO_RES,
-        self::ALL_NO_RES,
-
-        self::V4_ONLY_PUBLIC,
-        self::V6_ONLY_PUBLIC,
-        self::ALL_ONLY_PUBLIC,
-    );
-
-    public $version = self::V4;
-
-    public $message = 'This is not a valid IP address.';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __construct($options = null)
-    {
-        parent::__construct($options);
-
-        if (!in_array($this->version, self::$versions)) {
-            throw new ConstraintDefinitionException(sprintf('The option "version" must be one of "%s"', implode('", "', self::$versions)));
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/IpValidator.php b/vendor/symfony/validator/Constraints/IpValidator.php
deleted file mode 100644
index 0b17cf7..0000000
--- a/vendor/symfony/validator/Constraints/IpValidator.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates whether a value is a valid IP address.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @author Joseph Bielawski <stloyd@gmail.com>
- */
-class IpValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Ip) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Ip');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-
-        switch ($constraint->version) {
-            case Ip::V4:
-               $flag = FILTER_FLAG_IPV4;
-               break;
-
-            case Ip::V6:
-               $flag = FILTER_FLAG_IPV6;
-               break;
-
-            case Ip::V4_NO_PRIV:
-               $flag = FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE;
-               break;
-
-            case Ip::V6_NO_PRIV:
-               $flag = FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE;
-               break;
-
-            case Ip::ALL_NO_PRIV:
-               $flag = FILTER_FLAG_NO_PRIV_RANGE;
-               break;
-
-            case Ip::V4_NO_RES:
-               $flag = FILTER_FLAG_IPV4 | FILTER_FLAG_NO_RES_RANGE;
-               break;
-
-            case Ip::V6_NO_RES:
-               $flag = FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE;
-               break;
-
-            case Ip::ALL_NO_RES:
-               $flag = FILTER_FLAG_NO_RES_RANGE;
-               break;
-
-            case Ip::V4_ONLY_PUBLIC:
-               $flag = FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE;
-               break;
-
-            case Ip::V6_ONLY_PUBLIC:
-               $flag = FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE;
-               break;
-
-            case Ip::ALL_ONLY_PUBLIC:
-               $flag = FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE;
-               break;
-
-            default:
-                $flag = null;
-                break;
-        }
-
-        if (!filter_var($value, FILTER_VALIDATE_IP, $flag)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/IsFalse.php b/vendor/symfony/validator/Constraints/IsFalse.php
deleted file mode 100644
index 71a0ed6..0000000
--- a/vendor/symfony/validator/Constraints/IsFalse.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class IsFalse extends Constraint
-{
-    public $message = 'This value should be false.';
-}
diff --git a/vendor/symfony/validator/Constraints/IsFalseValidator.php b/vendor/symfony/validator/Constraints/IsFalseValidator.php
deleted file mode 100644
index b78163b..0000000
--- a/vendor/symfony/validator/Constraints/IsFalseValidator.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class IsFalseValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof IsFalse) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\IsFalse');
-        }
-
-        if (null === $value || false === $value || 0 === $value || '0' === $value) {
-            return;
-        }
-
-        if ($this->context instanceof ExecutionContextInterface) {
-            $this->context->buildViolation($constraint->message)
-                ->setParameter('{{ value }}', $this->formatValue($value))
-                ->addViolation();
-        } else {
-            $this->buildViolation($constraint->message)
-                ->setParameter('{{ value }}', $this->formatValue($value))
-                ->addViolation();
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/IsNull.php b/vendor/symfony/validator/Constraints/IsNull.php
deleted file mode 100644
index 64e837a..0000000
--- a/vendor/symfony/validator/Constraints/IsNull.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class IsNull extends Constraint
-{
-    public $message = 'This value should be null.';
-}
diff --git a/vendor/symfony/validator/Constraints/IsNullValidator.php b/vendor/symfony/validator/Constraints/IsNullValidator.php
deleted file mode 100644
index 5615121..0000000
--- a/vendor/symfony/validator/Constraints/IsNullValidator.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class IsNullValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof IsNull) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\IsNull');
-        }
-
-        if (null !== $value) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/IsTrue.php b/vendor/symfony/validator/Constraints/IsTrue.php
deleted file mode 100644
index 653135b..0000000
--- a/vendor/symfony/validator/Constraints/IsTrue.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class IsTrue extends Constraint
-{
-    public $message = 'This value should be true.';
-}
diff --git a/vendor/symfony/validator/Constraints/IsTrueValidator.php b/vendor/symfony/validator/Constraints/IsTrueValidator.php
deleted file mode 100644
index 2882dd6..0000000
--- a/vendor/symfony/validator/Constraints/IsTrueValidator.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class IsTrueValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof IsTrue) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\IsTrue');
-        }
-
-        if (null === $value) {
-            return;
-        }
-
-        if (true !== $value && 1 !== $value && '1' !== $value) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Isbn.php b/vendor/symfony/validator/Constraints/Isbn.php
deleted file mode 100644
index 3878c84..0000000
--- a/vendor/symfony/validator/Constraints/Isbn.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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 The Whole Life To Learn <thewholelifetolearn@gmail.com>
- * @author Manuel Reinhard <manu@sprain.ch>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-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;
-
-    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',
-        self::CHECKSUM_FAILED_ERROR => 'CHECKSUM_FAILED_ERROR',
-        self::TYPE_NOT_RECOGNIZED_ERROR => 'TYPE_NOT_RECOGNIZED_ERROR',
-    );
-
-    public $isbn10Message = 'This value is not a valid ISBN-10.';
-    public $isbn13Message = 'This value is not a valid ISBN-13.';
-    public $bothIsbnMessage = 'This value is neither a valid ISBN-10 nor a valid ISBN-13.';
-    public $type;
-    public $message;
-
-    /**
-     * @deprecated since version 2.5, to be removed in 3.0. Use option "type" instead.
-     *
-     * @var bool
-     */
-    public $isbn10 = false;
-
-    /**
-     * @deprecated since version 2.5, to be removed in 3.0. Use option "type" instead.
-     *
-     * @var bool
-     */
-    public $isbn13 = false;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDefaultOption()
-    {
-        return 'type';
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/IsbnValidator.php b/vendor/symfony/validator/Constraints/IsbnValidator.php
deleted file mode 100644
index aaf52dc..0000000
--- a/vendor/symfony/validator/Constraints/IsbnValidator.php
+++ /dev/null
@@ -1,216 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates whether the value is a valid ISBN-10 or ISBN-13.
- *
- * @author The Whole Life To Learn <thewholelifetolearn@gmail.com>
- * @author Manuel Reinhard <manu@sprain.ch>
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see https://en.wikipedia.org/wiki/Isbn
- */
-class IsbnValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Isbn) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Isbn');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-        $canonical = str_replace('-', '', $value);
-
-        if (null === $constraint->type) {
-            if ($constraint->isbn10 && !$constraint->isbn13) {
-                @trigger_error('The "isbn10" option of the Isbn constraint is deprecated since version 2.5 and will be removed in 3.0. Use the "type" option instead.', E_USER_DEPRECATED);
-                $constraint->type = 'isbn10';
-            } elseif ($constraint->isbn13 && !$constraint->isbn10) {
-                @trigger_error('The "isbn13" option of the Isbn constraint is deprecated since version 2.5 and will be removed in 3.0. Use the "type" option instead.', E_USER_DEPRECATED);
-                $constraint->type = 'isbn13';
-            }
-        }
-
-        // Explicitly validate against ISBN-10
-        if ('isbn10' === $constraint->type) {
-            if (true !== ($code = $this->validateIsbn10($canonical))) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($this->getMessage($constraint, $constraint->type))
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode($code)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($this->getMessage($constraint, $constraint->type))
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode($code)
-                        ->addViolation();
-                }
-            }
-
-            return;
-        }
-
-        // Explicitly validate against ISBN-13
-        if ('isbn13' === $constraint->type) {
-            if (true !== ($code = $this->validateIsbn13($canonical))) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($this->getMessage($constraint, $constraint->type))
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode($code)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($this->getMessage($constraint, $constraint->type))
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode($code)
-                        ->addViolation();
-                }
-            }
-
-            return;
-        }
-
-        // Try both ISBNs
-
-        // First, try ISBN-10
-        $code = $this->validateIsbn10($canonical);
-
-        // The ISBN can only be an ISBN-13 if the value was too long for ISBN-10
-        if (Isbn::TOO_LONG_ERROR === $code) {
-            // Try ISBN-13 now
-            $code = $this->validateIsbn13($canonical);
-
-            // If too short, this means we have 11 or 12 digits
-            if (Isbn::TOO_SHORT_ERROR === $code) {
-                $code = Isbn::TYPE_NOT_RECOGNIZED_ERROR;
-            }
-        }
-
-        if (true !== $code) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($this->getMessage($constraint))
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode($code)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($this->getMessage($constraint))
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode($code)
-                    ->addViolation();
-            }
-        }
-    }
-
-    protected function validateIsbn10($isbn)
-    {
-        // Choose an algorithm so that ERROR_INVALID_CHARACTERS is preferred
-        // over ERROR_TOO_SHORT/ERROR_TOO_LONG
-        // Otherwise "0-45122-5244" passes, but "0-45122_5244" reports
-        // "too long"
-
-        // Error priority:
-        // 1. ERROR_INVALID_CHARACTERS
-        // 2. ERROR_TOO_SHORT/ERROR_TOO_LONG
-        // 3. ERROR_CHECKSUM_FAILED
-
-        $checkSum = 0;
-
-        for ($i = 0; $i < 10; ++$i) {
-            // If we test the length before the loop, we get an ERROR_TOO_SHORT
-            // when actually an ERROR_INVALID_CHARACTERS is wanted, e.g. for
-            // "0-45122_5244" (typo)
-            if (!isset($isbn{$i})) {
-                return Isbn::TOO_SHORT_ERROR;
-            }
-
-            if ('X' === $isbn{$i}) {
-                $digit = 10;
-            } elseif (ctype_digit($isbn{$i})) {
-                $digit = $isbn{$i};
-            } else {
-                return Isbn::INVALID_CHARACTERS_ERROR;
-            }
-
-            $checkSum += $digit * (10 - $i);
-        }
-
-        if (isset($isbn{$i})) {
-            return Isbn::TOO_LONG_ERROR;
-        }
-
-        return 0 === $checkSum % 11 ? true : Isbn::CHECKSUM_FAILED_ERROR;
-    }
-
-    protected function validateIsbn13($isbn)
-    {
-        // Error priority:
-        // 1. ERROR_INVALID_CHARACTERS
-        // 2. ERROR_TOO_SHORT/ERROR_TOO_LONG
-        // 3. ERROR_CHECKSUM_FAILED
-
-        if (!ctype_digit($isbn)) {
-            return Isbn::INVALID_CHARACTERS_ERROR;
-        }
-
-        $length = strlen($isbn);
-
-        if ($length < 13) {
-            return Isbn::TOO_SHORT_ERROR;
-        }
-
-        if ($length > 13) {
-            return Isbn::TOO_LONG_ERROR;
-        }
-
-        $checkSum = 0;
-
-        for ($i = 0; $i < 13; $i += 2) {
-            $checkSum += $isbn{$i};
-        }
-
-        for ($i = 1; $i < 12; $i += 2) {
-            $checkSum += $isbn{$i}
-            * 3;
-        }
-
-        return 0 === $checkSum % 10 ? true : Isbn::CHECKSUM_FAILED_ERROR;
-    }
-
-    protected function getMessage($constraint, $type = null)
-    {
-        if (null !== $constraint->message) {
-            return $constraint->message;
-        } elseif ('isbn10' === $type) {
-            return $constraint->isbn10Message;
-        } elseif ('isbn13' === $type) {
-            return $constraint->isbn13Message;
-        }
-
-        return $constraint->bothIsbnMessage;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Issn.php b/vendor/symfony/validator/Constraints/Issn.php
deleted file mode 100644
index 39716a2..0000000
--- a/vendor/symfony/validator/Constraints/Issn.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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 Antonio J. García Lagar <aj@garcialagar.es>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-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;
-
-    protected static $errorNames = array(
-        self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
-        self::TOO_LONG_ERROR => 'TOO_LONG_ERROR',
-        self::MISSING_HYPHEN_ERROR => 'MISSING_HYPHEN_ERROR',
-        self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
-        self::INVALID_CASE_ERROR => 'INVALID_CASE_ERROR',
-        self::CHECKSUM_FAILED_ERROR => 'CHECKSUM_FAILED_ERROR',
-    );
-
-    public $message = 'This value is not a valid ISSN.';
-    public $caseSensitive = false;
-    public $requireHyphen = false;
-}
diff --git a/vendor/symfony/validator/Constraints/IssnValidator.php b/vendor/symfony/validator/Constraints/IssnValidator.php
deleted file mode 100644
index 000af74..0000000
--- a/vendor/symfony/validator/Constraints/IssnValidator.php
+++ /dev/null
@@ -1,183 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates whether the value is a valid ISSN.
- *
- * @author Antonio J. García Lagar <aj@garcialagar.es>
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see https://en.wikipedia.org/wiki/Issn
- */
-class IssnValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Issn) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Issn');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-        $canonical = $value;
-
-        // 1234-567X
-        //     ^
-        if (isset($canonical{4}) && '-' === $canonical{4}) {
-            // remove hyphen
-            $canonical = substr($canonical, 0, 4).substr($canonical, 5);
-        } elseif ($constraint->requireHyphen) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::MISSING_HYPHEN_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::MISSING_HYPHEN_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        $length = strlen($canonical);
-
-        if ($length < 8) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::TOO_SHORT_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::TOO_SHORT_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if ($length > 8) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::TOO_LONG_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::TOO_LONG_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        // 1234567X
-        // ^^^^^^^ digits only
-        if (!ctype_digit(substr($canonical, 0, 7))) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::INVALID_CHARACTERS_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::INVALID_CHARACTERS_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        // 1234567X
-        //        ^ digit, x or X
-        if (!ctype_digit($canonical{7}) && 'x' !== $canonical{7} && 'X' !== $canonical{7}) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::INVALID_CHARACTERS_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::INVALID_CHARACTERS_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        // 1234567X
-        //        ^ case-sensitive?
-        if ($constraint->caseSensitive && 'x' === $canonical{7}) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::INVALID_CASE_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::INVALID_CASE_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        // Calculate a checksum. "X" equals 10.
-        $checkSum = 'X' === $canonical{7}
-        || 'x' === $canonical{7}
-        ? 10
-            : $canonical{7};
-
-        for ($i = 0; $i < 7; ++$i) {
-            // Multiply the first digit by 8, the second by 7, etc.
-            $checkSum += (8 - $i) * $canonical{$i};
-        }
-
-        if (0 !== $checkSum % 11) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::CHECKSUM_FAILED_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Issn::CHECKSUM_FAILED_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Language.php b/vendor/symfony/validator/Constraints/Language.php
deleted file mode 100644
index c6f513c..0000000
--- a/vendor/symfony/validator/Constraints/Language.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Language extends Constraint
-{
-    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
deleted file mode 100644
index 1f514ab..0000000
--- a/vendor/symfony/validator/Constraints/LanguageValidator.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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\Intl\Intl;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates whether a value is a valid language code.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class LanguageValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Language) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Language');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-        $languages = Intl::getLanguageBundle()->getLanguageNames();
-
-        if (!isset($languages[$value])) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Length.php b/vendor/symfony/validator/Constraints/Length.php
deleted file mode 100644
index bca4edb..0000000
--- a/vendor/symfony/validator/Constraints/Length.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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\Exception\MissingOptionsException;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Length extends Constraint
-{
-    const TOO_SHORT_ERROR = 1;
-    const TOO_LONG_ERROR = 2;
-
-    protected static $errorNames = array(
-        self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
-        self::TOO_LONG_ERROR => 'TOO_LONG_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.';
-    public $minMessage = 'This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.';
-    public $exactMessage = 'This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.';
-    public $charsetMessage = 'This value does not match the expected {{ charset }} charset.';
-    public $max;
-    public $min;
-    public $charset = 'UTF-8';
-
-    public function __construct($options = null)
-    {
-        if (null !== $options && !is_array($options)) {
-            $options = array(
-                'min' => $options,
-                'max' => $options,
-            );
-        }
-
-        parent::__construct($options);
-
-        if (null === $this->min && null === $this->max) {
-            throw new MissingOptionsException(sprintf('Either option "min" or "max" must be given for constraint %s', __CLASS__), array('min', 'max'));
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/LengthValidator.php b/vendor/symfony/validator/Constraints/LengthValidator.php
deleted file mode 100644
index d340749..0000000
--- a/vendor/symfony/validator/Constraints/LengthValidator.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class LengthValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Length) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Length');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $stringValue = (string) $value;
-        $invalidCharset = false;
-
-        if ('UTF8' === $charset = strtoupper($constraint->charset)) {
-            $charset = 'UTF-8';
-        }
-
-        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);
-        }
-
-        if ($invalidCharset) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->charsetMessage)
-                    ->setParameter('{{ value }}', $this->formatValue($stringValue))
-                    ->setParameter('{{ charset }}', $constraint->charset)
-                    ->setInvalidValue($value)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->charsetMessage)
-                    ->setParameter('{{ value }}', $this->formatValue($stringValue))
-                    ->setParameter('{{ charset }}', $constraint->charset)
-                    ->setInvalidValue($value)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if (null !== $constraint->max && $length > $constraint->max) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
-                    ->setParameter('{{ value }}', $this->formatValue($stringValue))
-                    ->setParameter('{{ limit }}', $constraint->max)
-                    ->setInvalidValue($value)
-                    ->setPlural((int) $constraint->max)
-                    ->setCode(Length::TOO_LONG_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
-                    ->setParameter('{{ value }}', $this->formatValue($stringValue))
-                    ->setParameter('{{ limit }}', $constraint->max)
-                    ->setInvalidValue($value)
-                    ->setPlural((int) $constraint->max)
-                    ->setCode(Length::TOO_LONG_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if (null !== $constraint->min && $length < $constraint->min) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage)
-                    ->setParameter('{{ value }}', $this->formatValue($stringValue))
-                    ->setParameter('{{ limit }}', $constraint->min)
-                    ->setInvalidValue($value)
-                    ->setPlural((int) $constraint->min)
-                    ->setCode(Length::TOO_SHORT_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage)
-                    ->setParameter('{{ value }}', $this->formatValue($stringValue))
-                    ->setParameter('{{ limit }}', $constraint->min)
-                    ->setInvalidValue($value)
-                    ->setPlural((int) $constraint->min)
-                    ->setCode(Length::TOO_SHORT_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/LessThan.php b/vendor/symfony/validator/Constraints/LessThan.php
deleted file mode 100644
index b116320..0000000
--- a/vendor/symfony/validator/Constraints/LessThan.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class LessThan extends AbstractComparison
-{
-    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
deleted file mode 100644
index 7faca84..0000000
--- a/vendor/symfony/validator/Constraints/LessThanOrEqual.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class LessThanOrEqual extends AbstractComparison
-{
-    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
deleted file mode 100644
index dcc93b2..0000000
--- a/vendor/symfony/validator/Constraints/LessThanOrEqualValidator.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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;
-
-/**
- * Validates values are less than or equal to the previous (<=).
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class LessThanOrEqualValidator extends AbstractComparisonValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function compareValues($value1, $value2)
-    {
-        return $value1 <= $value2;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/LessThanValidator.php b/vendor/symfony/validator/Constraints/LessThanValidator.php
deleted file mode 100644
index 081316a..0000000
--- a/vendor/symfony/validator/Constraints/LessThanValidator.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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;
-
-/**
- * Validates values are less than the previous (<).
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class LessThanValidator extends AbstractComparisonValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function compareValues($value1, $value2)
-    {
-        return $value1 < $value2;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Locale.php b/vendor/symfony/validator/Constraints/Locale.php
deleted file mode 100644
index cf30eb2..0000000
--- a/vendor/symfony/validator/Constraints/Locale.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Locale extends Constraint
-{
-    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
deleted file mode 100644
index 038a1a4..0000000
--- a/vendor/symfony/validator/Constraints/LocaleValidator.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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\Intl\Intl;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates whether a value is a valid locale code.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class LocaleValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Locale) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Locale');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-        $locales = Intl::getLocaleBundle()->getLocaleNames();
-
-        if (!isset($locales[$value])) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Luhn.php b/vendor/symfony/validator/Constraints/Luhn.php
deleted file mode 100644
index 24f5bc7..0000000
--- a/vendor/symfony/validator/Constraints/Luhn.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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;
-
-/**
- * Metadata for the LuhnValidator.
- *
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Tim Nagel <t.nagel@infinite.net.au>
- * @author Greg Knapp http://gregk.me/2011/php-implementation-of-bank-card-luhn-algorithm/
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Luhn extends Constraint
-{
-    const INVALID_CHARACTERS_ERROR = 1;
-    const CHECKSUM_FAILED_ERROR = 2;
-
-    protected static $errorNames = array(
-        self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
-        self::CHECKSUM_FAILED_ERROR => 'CHECKSUM_FAILED_ERROR',
-    );
-
-    public $message = 'Invalid card number.';
-}
diff --git a/vendor/symfony/validator/Constraints/LuhnValidator.php b/vendor/symfony/validator/Constraints/LuhnValidator.php
deleted file mode 100644
index 31d4497..0000000
--- a/vendor/symfony/validator/Constraints/LuhnValidator.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates a PAN using the LUHN Algorithm.
- *
- * For a list of example card numbers that are used to test this
- * class, please see the LuhnValidatorTest class.
- *
- * @see    http://en.wikipedia.org/wiki/Luhn_algorithm
- *
- * @author Tim Nagel <t.nagel@infinite.net.au>
- * @author Greg Knapp http://gregk.me/2011/php-implementation-of-bank-card-luhn-algorithm/
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class LuhnValidator extends ConstraintValidator
-{
-    /**
-     * Validates a credit card number with the Luhn algorithm.
-     *
-     * @param mixed      $value
-     * @param Constraint $constraint
-     *
-     * @throws UnexpectedTypeException when the given credit card number is no string
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Luhn) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Luhn');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        // Work with strings only, because long numbers are represented as floats
-        // internally and don't work with strlen()
-        if (!is_string($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-
-        if (!ctype_digit($value)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Luhn::INVALID_CHARACTERS_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Luhn::INVALID_CHARACTERS_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        $checkSum = 0;
-        $length = strlen($value);
-
-        // Starting with the last digit and walking left, add every second
-        // digit to the check sum
-        // e.g. 7  9  9  2  7  3  9  8  7  1  3
-        //      ^     ^     ^     ^     ^     ^
-        //    = 7  +  9  +  7  +  9  +  7  +  3
-        for ($i = $length - 1; $i >= 0; $i -= 2) {
-            $checkSum += $value{$i};
-        }
-
-        // Starting with the second last digit and walking left, double every
-        // second digit and add it to the check sum
-        // For doubles greater than 9, sum the individual digits
-        // e.g. 7  9  9  2  7  3  9  8  7  1  3
-        //         ^     ^     ^     ^     ^
-        //    =    1+8 + 4  +  6  +  1+6 + 2
-        for ($i = $length - 2; $i >= 0; $i -= 2) {
-            $checkSum += array_sum(str_split($value{$i} * 2));
-        }
-
-        if (0 === $checkSum || 0 !== $checkSum % 10) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Luhn::CHECKSUM_FAILED_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Luhn::CHECKSUM_FAILED_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/NotBlank.php b/vendor/symfony/validator/Constraints/NotBlank.php
deleted file mode 100644
index 750f412..0000000
--- a/vendor/symfony/validator/Constraints/NotBlank.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class NotBlank extends Constraint
-{
-    public $message = 'This value should not be blank.';
-}
diff --git a/vendor/symfony/validator/Constraints/NotBlankValidator.php b/vendor/symfony/validator/Constraints/NotBlankValidator.php
deleted file mode 100644
index f0d4f21..0000000
--- a/vendor/symfony/validator/Constraints/NotBlankValidator.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class NotBlankValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof NotBlank) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\NotBlank');
-        }
-
-        if (false === $value || (empty($value) && '0' != $value)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/NotEqualTo.php b/vendor/symfony/validator/Constraints/NotEqualTo.php
deleted file mode 100644
index abd8092..0000000
--- a/vendor/symfony/validator/Constraints/NotEqualTo.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class NotEqualTo extends AbstractComparison
-{
-    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
deleted file mode 100644
index 5710a85..0000000
--- a/vendor/symfony/validator/Constraints/NotEqualToValidator.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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;
-
-/**
- * Validates values are all unequal (!=).
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class NotEqualToValidator extends AbstractComparisonValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function compareValues($value1, $value2)
-    {
-        return $value1 != $value2;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/NotIdenticalTo.php b/vendor/symfony/validator/Constraints/NotIdenticalTo.php
deleted file mode 100644
index fb4ef3f..0000000
--- a/vendor/symfony/validator/Constraints/NotIdenticalTo.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class NotIdenticalTo extends AbstractComparison
-{
-    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
deleted file mode 100644
index ed8dc1c..0000000
--- a/vendor/symfony/validator/Constraints/NotIdenticalToValidator.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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;
-
-/**
- * Validates values aren't identical (!==).
- *
- * @author Daniel Holmes <daniel@danielholmes.org>
- */
-class NotIdenticalToValidator extends AbstractComparisonValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    protected function compareValues($value1, $value2)
-    {
-        return $value1 !== $value2;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/NotNull.php b/vendor/symfony/validator/Constraints/NotNull.php
deleted file mode 100644
index 57f2492..0000000
--- a/vendor/symfony/validator/Constraints/NotNull.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class NotNull extends Constraint
-{
-    public $message = 'This value should not be null.';
-}
diff --git a/vendor/symfony/validator/Constraints/NotNullValidator.php b/vendor/symfony/validator/Constraints/NotNullValidator.php
deleted file mode 100644
index 88ffb98..0000000
--- a/vendor/symfony/validator/Constraints/NotNullValidator.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?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;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class NotNullValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof NotNull) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\NotNull');
-        }
-
-        if (null === $value) {
-            $this->context->addViolation($constraint->message);
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Null.php b/vendor/symfony/validator/Constraints/Null.php
deleted file mode 100644
index 705d93f..0000000
--- a/vendor/symfony/validator/Constraints/Null.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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;
-
-@trigger_error('The '.__NAMESPACE__.'\Null class is deprecated since version 2.7 and will be removed in 3.0. Use the IsNull class in the same namespace instead.', E_USER_DEPRECATED);
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.7, to be removed in 3.0. Use IsNull instead.
- */
-class Null extends IsNull
-{
-}
diff --git a/vendor/symfony/validator/Constraints/NullValidator.php b/vendor/symfony/validator/Constraints/NullValidator.php
deleted file mode 100644
index bd17eab..0000000
--- a/vendor/symfony/validator/Constraints/NullValidator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-@trigger_error('The '.__NAMESPACE__.'\NullValidator class is deprecated since version 2.7 and will be removed in 3.0. Use the IsNullValidator class in the same namespace instead.', E_USER_DEPRECATED);
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.7, to be removed in 3.0. Use IsNullValidator instead.
- */
-class NullValidator extends IsNullValidator
-{
-}
diff --git a/vendor/symfony/validator/Constraints/Optional.php b/vendor/symfony/validator/Constraints/Optional.php
deleted file mode 100644
index dab8b43..0000000
--- a/vendor/symfony/validator/Constraints/Optional.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Optional extends Existence
-{
-}
diff --git a/vendor/symfony/validator/Constraints/Range.php b/vendor/symfony/validator/Constraints/Range.php
deleted file mode 100644
index c59c50c..0000000
--- a/vendor/symfony/validator/Constraints/Range.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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\Exception\MissingOptionsException;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Range extends Constraint
-{
-    const INVALID_VALUE_ERROR = 1;
-    const BEYOND_RANGE_ERROR = 2;
-    const BELOW_RANGE_ERROR = 3;
-
-    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',
-    );
-
-    public $minMessage = 'This value should be {{ limit }} or more.';
-    public $maxMessage = 'This value should be {{ limit }} or less.';
-    public $invalidMessage = 'This value should be a valid number.';
-    public $min;
-    public $max;
-
-    public function __construct($options = null)
-    {
-        parent::__construct($options);
-
-        if (null === $this->min && null === $this->max) {
-            throw new MissingOptionsException(sprintf('Either option "min" or "max" must be given for constraint %s', __CLASS__), array('min', 'max'));
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/RangeValidator.php b/vendor/symfony/validator/Constraints/RangeValidator.php
deleted file mode 100644
index 8f5fdda..0000000
--- a/vendor/symfony/validator/Constraints/RangeValidator.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class RangeValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Range) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Range');
-        }
-
-        if (null === $value) {
-            return;
-        }
-
-        if (!is_numeric($value) && !$value instanceof \DateTime && !$value instanceof \DateTimeInterface) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->invalidMessage)
-                    ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
-                    ->setCode(Range::INVALID_VALUE_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->invalidMessage)
-                    ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
-                    ->setCode(Range::INVALID_VALUE_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        $min = $constraint->min;
-        $max = $constraint->max;
-
-        // Convert strings to DateTimes if comparing another DateTime
-        // This allows to compare with any date/time value supported by
-        // the DateTime constructor:
-        // http://php.net/manual/en/datetime.formats.php
-        if ($value instanceof \DateTime || $value instanceof \DateTimeInterface) {
-            if (is_string($min)) {
-                $min = new \DateTime($min);
-            }
-
-            if (is_string($max)) {
-                $max = new \DateTime($max);
-            }
-        }
-
-        if (null !== $constraint->max && $value > $max) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $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)
-                    ->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)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if (null !== $constraint->min && $value < $min) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $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)
-                    ->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)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Regex.php b/vendor/symfony/validator/Constraints/Regex.php
deleted file mode 100644
index 724274a..0000000
--- a/vendor/symfony/validator/Constraints/Regex.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Regex extends Constraint
-{
-    public $message = 'This value is not valid.';
-    public $pattern;
-    public $htmlPattern;
-    public $match = true;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDefaultOption()
-    {
-        return 'pattern';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRequiredOptions()
-    {
-        return array('pattern');
-    }
-
-    /**
-     * Converts the htmlPattern to a suitable format for HTML5 pattern.
-     * Example: /^[a-z]+$/ would be converted to [a-z]+
-     * However, if options are specified, it cannot be converted.
-     *
-     * Pattern is also ignored if match=false since the pattern should
-     * then be reversed before application.
-     *
-     * @link http://dev.w3.org/html5/spec/single-page.html#the-pattern-attribute
-     *
-     * @return string|null
-     */
-    public function getHtmlPattern()
-    {
-        // If htmlPattern is specified, use it
-        if (null !== $this->htmlPattern) {
-            return empty($this->htmlPattern)
-                ? null
-                : $this->htmlPattern;
-        }
-
-        // Quit if delimiters not at very beginning/end (e.g. when options are passed)
-        if ($this->pattern[0] !== $this->pattern[strlen($this->pattern) - 1]) {
-            return;
-        }
-
-        $delimiter = $this->pattern[0];
-
-        // Unescape the delimiter
-        $pattern = str_replace('\\'.$delimiter, $delimiter, substr($this->pattern, 1, -1));
-
-        // If the pattern is inverted, we can simply wrap it in
-        // ((?!pattern).)*
-        if (!$this->match) {
-            return '((?!'.$pattern.').)*';
-        }
-
-        // If the pattern contains an or statement, wrap the pattern in
-        // .*(pattern).* and quit. Otherwise we'd need to parse the pattern
-        if (false !== strpos($pattern, '|')) {
-            return '.*('.$pattern.').*';
-        }
-
-        // Trim leading ^, otherwise prepend .*
-        $pattern = '^' === $pattern[0] ? substr($pattern, 1) : '.*'.$pattern;
-
-        // Trim trailing $, otherwise append .*
-        $pattern = '$' === $pattern[strlen($pattern) - 1] ? substr($pattern, 0, -1) : $pattern.'.*';
-
-        return $pattern;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/RegexValidator.php b/vendor/symfony/validator/Constraints/RegexValidator.php
deleted file mode 100644
index 850d760..0000000
--- a/vendor/symfony/validator/Constraints/RegexValidator.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates whether a value match or not given regexp pattern.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @author Joseph Bielawski <stloyd@gmail.com>
- */
-class RegexValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Regex) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Regex');
-        }
-
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-
-        if ($constraint->match xor preg_match($constraint->pattern, $value)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Required.php b/vendor/symfony/validator/Constraints/Required.php
deleted file mode 100644
index bd77a90..0000000
--- a/vendor/symfony/validator/Constraints/Required.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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;
-
-/**
- * @Annotation
- * @Target({"ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Required extends Existence
-{
-}
diff --git a/vendor/symfony/validator/Constraints/Time.php b/vendor/symfony/validator/Constraints/Time.php
deleted file mode 100644
index 1134c2e..0000000
--- a/vendor/symfony/validator/Constraints/Time.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Time extends Constraint
-{
-    const INVALID_FORMAT_ERROR = 1;
-    const INVALID_TIME_ERROR = 2;
-
-    protected static $errorNames = array(
-        self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
-        self::INVALID_TIME_ERROR => 'INVALID_TIME_ERROR',
-    );
-
-    public $message = 'This value is not a valid time.';
-}
diff --git a/vendor/symfony/validator/Constraints/TimeValidator.php b/vendor/symfony/validator/Constraints/TimeValidator.php
deleted file mode 100644
index b5b7b9c..0000000
--- a/vendor/symfony/validator/Constraints/TimeValidator.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class TimeValidator extends ConstraintValidator
-{
-    const PATTERN = '/^(\d{2}):(\d{2}):(\d{2})$/';
-
-    /**
-     * Checks whether a time is valid.
-     *
-     * @param int $hour   The hour
-     * @param int $minute The minute
-     * @param int $second The second
-     *
-     * @return bool Whether the time is valid
-     *
-     * @internal
-     */
-    public static function checkTime($hour, $minute, $second)
-    {
-        return $hour >= 0 && $hour < 24 && $minute >= 0 && $minute < 60 && $second >= 0 && $second < 60;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Time) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Time');
-        }
-
-        if (null === $value || '' === $value || $value instanceof \DateTime) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-
-        if (!preg_match(static::PATTERN, $value, $matches)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Time::INVALID_FORMAT_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Time::INVALID_FORMAT_ERROR)
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if (!self::checkTime($matches[1], $matches[2], $matches[3])) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Time::INVALID_TIME_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Time::INVALID_TIME_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Traverse.php b/vendor/symfony/validator/Constraints/Traverse.php
deleted file mode 100644
index 5811ad7..0000000
--- a/vendor/symfony/validator/Constraints/Traverse.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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\Exception\ConstraintDefinitionException;
-
-/**
- * @Annotation
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Traverse extends Constraint
-{
-    public $traverse = true;
-
-    public function __construct($options = null)
-    {
-        if (is_array($options) && array_key_exists('groups', $options)) {
-            throw new ConstraintDefinitionException(sprintf(
-                'The option "groups" is not supported by the constraint %s',
-                __CLASS__
-            ));
-        }
-
-        parent::__construct($options);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDefaultOption()
-    {
-        return 'traverse';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTargets()
-    {
-        return self::CLASS_CONSTRAINT;
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/True.php b/vendor/symfony/validator/Constraints/True.php
deleted file mode 100644
index b9efff3..0000000
--- a/vendor/symfony/validator/Constraints/True.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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;
-
-@trigger_error('The '.__NAMESPACE__.'\True class is deprecated since version 2.7 and will be removed in 3.0. Use the IsTrue class in the same namespace instead.', E_USER_DEPRECATED);
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.7, to be removed in 3.0. Use IsTrue instead.
- */
-class True extends IsTrue
-{
-}
diff --git a/vendor/symfony/validator/Constraints/TrueValidator.php b/vendor/symfony/validator/Constraints/TrueValidator.php
deleted file mode 100644
index 14d8798..0000000
--- a/vendor/symfony/validator/Constraints/TrueValidator.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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;
-
-@trigger_error('The '.__NAMESPACE__.'\TrueValidator class is deprecated since version 2.7 and will be removed in 3.0. Use the IsTrueValidator class in the same namespace instead.', E_USER_DEPRECATED);
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.7, to be removed in 3.0. Use IsTrueValidator instead.
- */
-class TrueValidator extends IsTrueValidator
-{
-}
diff --git a/vendor/symfony/validator/Constraints/Type.php b/vendor/symfony/validator/Constraints/Type.php
deleted file mode 100644
index afe5903..0000000
--- a/vendor/symfony/validator/Constraints/Type.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Type extends Constraint
-{
-    public $message = 'This value should be of type {{ type }}.';
-    public $type;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getDefaultOption()
-    {
-        return 'type';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRequiredOptions()
-    {
-        return array('type');
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/TypeValidator.php b/vendor/symfony/validator/Constraints/TypeValidator.php
deleted file mode 100644
index 592f122..0000000
--- a/vendor/symfony/validator/Constraints/TypeValidator.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class TypeValidator extends ConstraintValidator
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Type) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Type');
-        }
-
-        if (null === $value) {
-            return;
-        }
-
-        $type = strtolower($constraint->type);
-        $type = $type == 'boolean' ? 'bool' : $constraint->type;
-        $isFunction = 'is_'.$type;
-        $ctypeFunction = 'ctype_'.$type;
-
-        if (function_exists($isFunction) && $isFunction($value)) {
-            return;
-        } elseif (function_exists($ctypeFunction) && $ctypeFunction($value)) {
-            return;
-        } elseif ($value instanceof $constraint->type) {
-            return;
-        }
-
-        if ($this->context instanceof ExecutionContextInterface) {
-            $this->context->buildViolation($constraint->message)
-                ->setParameter('{{ value }}', $this->formatValue($value))
-                ->setParameter('{{ type }}', $constraint->type)
-                ->addViolation();
-        } else {
-            $this->buildViolation($constraint->message)
-                ->setParameter('{{ value }}', $this->formatValue($value))
-                ->setParameter('{{ type }}', $constraint->type)
-                ->addViolation();
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Url.php b/vendor/symfony/validator/Constraints/Url.php
deleted file mode 100644
index 3637bc1..0000000
--- a/vendor/symfony/validator/Constraints/Url.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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 Bernhard Schussek <bschussek@gmail.com>
- */
-class Url extends Constraint
-{
-    public $message = 'This value is not a valid URL.';
-    public $dnsMessage = 'The host could not be resolved.';
-    public $protocols = array('http', 'https');
-    public $checkDNS = false;
-}
diff --git a/vendor/symfony/validator/Constraints/UrlValidator.php b/vendor/symfony/validator/Constraints/UrlValidator.php
deleted file mode 100644
index 1fd76a8..0000000
--- a/vendor/symfony/validator/Constraints/UrlValidator.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class UrlValidator extends ConstraintValidator
-{
-    const PATTERN = '~^
-            (%s)://                                 # protocol
-            (([\pL\pN-]+:)?([\pL\pN-]+)@)?          # basic auth
-            (
-                ([\pL\pN\pS-\.])+(\.?([\pL]|xn\-\-[\pL\pN-]+)+\.?) # a domain name
-                    |                                              # or
-                \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}                 # a IP address
-                    |                                              # or
-                \[
-                    (?:(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){6})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:::(?:(?:(?:[0-9a-f]{1,4})):){5})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){4})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,1}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){3})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,2}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){2})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,3}(?:(?:[0-9a-f]{1,4})))?::(?:(?:[0-9a-f]{1,4})):)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,4}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,5}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,6}(?:(?:[0-9a-f]{1,4})))?::))))
-                \]  # a IPv6 address
-            )
-            (:[0-9]+)?                              # a port (optional)
-            (/?|/\S+|\?|\#)                         # a /, nothing, a / with something, a query or a fragment
-        $~ixu';
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (!$constraint instanceof Url) {
-            throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Url');
-        }
-
-        if (null === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-        if ('' === $value) {
-            return;
-        }
-
-        $pattern = sprintf(static::PATTERN, implode('|', $constraint->protocols));
-
-        if (!preg_match($pattern, $value)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->addViolation();
-            }
-
-            return;
-        }
-
-        if ($constraint->checkDNS) {
-            $host = parse_url($value, PHP_URL_HOST);
-
-            if (!checkdnsrr($host, 'ANY')) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->dnsMessage)
-                       ->setParameter('{{ value }}', $this->formatValue($host))
-                       ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->dnsMessage)
-                       ->setParameter('{{ value }}', $this->formatValue($host))
-                       ->addViolation();
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Uuid.php b/vendor/symfony/validator/Constraints/Uuid.php
deleted file mode 100644
index 8589b95..0000000
--- a/vendor/symfony/validator/Constraints/Uuid.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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
- *
- * @author Colin O'Dell <colinodell@gmail.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-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;
-
-    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',
-        self::INVALID_HYPHEN_PLACEMENT_ERROR => 'INVALID_HYPHEN_PLACEMENT_ERROR',
-        self::INVALID_VERSION_ERROR => 'INVALID_VERSION_ERROR',
-        self::INVALID_VARIANT_ERROR => 'INVALID_VARIANT_ERROR',
-    );
-
-    // Possible versions defined by RFC 4122
-    const V1_MAC = 1;
-    const V2_DCE = 2;
-    const V3_MD5 = 3;
-    const V4_RANDOM = 4;
-    const V5_SHA1 = 5;
-
-    /**
-     * Message to display when validation fails.
-     *
-     * @var string
-     */
-    public $message = 'This is not a valid UUID.';
-
-    /**
-     * Strict mode only allows UUIDs that meet the formal definition and formatting per RFC 4122.
-     *
-     * Set this to `false` to allow legacy formats with different dash positioning or wrapping characters
-     *
-     * @var bool
-     */
-    public $strict = true;
-
-    /**
-     * Array of allowed versions (see version constants above).
-     *
-     * All UUID versions are allowed by default
-     *
-     * @var int[]
-     */
-    public $versions = array(
-        self::V1_MAC,
-        self::V2_DCE,
-        self::V3_MD5,
-        self::V4_RANDOM,
-        self::V5_SHA1,
-    );
-}
diff --git a/vendor/symfony/validator/Constraints/UuidValidator.php b/vendor/symfony/validator/Constraints/UuidValidator.php
deleted file mode 100644
index 08f9e27..0000000
--- a/vendor/symfony/validator/Constraints/UuidValidator.php
+++ /dev/null
@@ -1,346 +0,0 @@
-<?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\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintValidator;
-use Symfony\Component\Validator\Constraints\Deprecated\UuidValidator as Deprecated;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Validates whether the value is a valid UUID per RFC 4122.
- *
- * @author Colin O'Dell <colinodell@gmail.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see http://tools.ietf.org/html/rfc4122
- * @see https://en.wikipedia.org/wiki/Universally_unique_identifier
- */
-class UuidValidator extends ConstraintValidator
-{
-    // The strict pattern matches UUIDs like this:
-    // xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
-
-    // Roughly speaking:
-    // x = any hexadecimal character
-    // M = any allowed version {1..5}
-    // N = any allowed variant {8, 9, a, b}
-
-    const STRICT_LENGTH = 36;
-    const STRICT_FIRST_HYPHEN_POSITION = 8;
-    const STRICT_LAST_HYPHEN_POSITION = 23;
-    const STRICT_VERSION_POSITION = 14;
-    const STRICT_VARIANT_POSITION = 19;
-
-    // The loose pattern validates similar yet non-compliant UUIDs.
-    // Hyphens are completely optional. If present, they should only appear
-    // between every fourth character:
-    // xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx
-    // xxxxxxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx
-    // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-
-    // The value can also be wrapped with characters like []{}:
-    // {xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx}
-
-    // Neither the version nor the variant is validated by this pattern.
-
-    const LOOSE_MAX_LENGTH = 39;
-    const LOOSE_FIRST_HYPHEN_POSITION = 4;
-
-    /**
-     * @deprecated since version 2.6, to be removed in 3.0
-     */
-    const STRICT_PATTERN = '/^[a-f0-9]{8}-[a-f0-9]{4}-[%s][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/i';
-
-    /**
-     * @deprecated since version 2.6, to be removed in 3.0
-     */
-    const LOOSE_PATTERN = '/^[a-f0-9]{4}(?:-?[a-f0-9]{4}){7}$/i';
-
-    /**
-     * @deprecated since version 2.6, to be removed in 3.0
-     */
-    const STRICT_UUID_LENGTH = 36;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, Constraint $constraint)
-    {
-        if (null === $value || '' === $value) {
-            return;
-        }
-
-        if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
-            throw new UnexpectedTypeException($value, 'string');
-        }
-
-        $value = (string) $value;
-
-        if ($constraint->strict) {
-            $this->validateStrict($value, $constraint);
-
-            return;
-        }
-
-        $this->validateLoose($value, $constraint);
-    }
-
-    private function validateLoose($value, Uuid $constraint)
-    {
-        // Error priority:
-        // 1. ERROR_INVALID_CHARACTERS
-        // 2. ERROR_INVALID_HYPHEN_PLACEMENT
-        // 3. ERROR_TOO_SHORT/ERROR_TOO_LONG
-
-        // Trim any wrapping characters like [] or {} used by some legacy systems
-        $trimmed = trim($value, '[]{}');
-
-        // Position of the next expected hyphen
-        $h = self::LOOSE_FIRST_HYPHEN_POSITION;
-
-        // Expected length
-        $l = self::LOOSE_MAX_LENGTH;
-
-        for ($i = 0; $i < $l; ++$i) {
-            // Check length
-            if (!isset($trimmed{$i})) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Uuid::TOO_SHORT_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Uuid::TOO_SHORT_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-
-            // Hyphens must occur every fifth position
-            // xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx
-            //     ^    ^    ^    ^    ^    ^    ^
-            if ('-' === $trimmed{$i}) {
-                if ($i !== $h) {
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->message)
-                            ->setParameter('{{ value }}', $this->formatValue($value))
-                            ->setCode(Uuid::INVALID_HYPHEN_PLACEMENT_ERROR)
-                            ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->message)
-                            ->setParameter('{{ value }}', $this->formatValue($value))
-                            ->setCode(Uuid::INVALID_HYPHEN_PLACEMENT_ERROR)
-                            ->addViolation();
-                    }
-
-                    return;
-                }
-
-                $h += 5;
-
-                continue;
-            }
-
-            // Missing hyphens are ignored
-            if ($i === $h) {
-                $h += 4;
-                --$l;
-            }
-
-            // Check characters
-            if (!ctype_xdigit($trimmed{$i})) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Uuid::INVALID_CHARACTERS_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Uuid::INVALID_CHARACTERS_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-        }
-
-        // Check length again
-        if (isset($trimmed{$i})) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Uuid::TOO_LONG_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Uuid::TOO_LONG_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-
-    private function validateStrict($value, Uuid $constraint)
-    {
-        // Error priority:
-        // 1. ERROR_INVALID_CHARACTERS
-        // 2. ERROR_INVALID_HYPHEN_PLACEMENT
-        // 3. ERROR_TOO_SHORT/ERROR_TOO_LONG
-        // 4. ERROR_INVALID_VERSION
-        // 5. ERROR_INVALID_VARIANT
-
-        // Position of the next expected hyphen
-        $h = self::STRICT_FIRST_HYPHEN_POSITION;
-
-        for ($i = 0; $i < self::STRICT_LENGTH; ++$i) {
-            // Check length
-            if (!isset($value{$i})) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Uuid::TOO_SHORT_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Uuid::TOO_SHORT_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-
-            // Check hyphen placement
-            // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
-            //         ^    ^    ^    ^
-            if ('-' === $value{$i}) {
-                if ($i !== $h) {
-                    if ($this->context instanceof ExecutionContextInterface) {
-                        $this->context->buildViolation($constraint->message)
-                             ->setParameter(
-                                 '{{ value }}',
-                                 $this->formatValue($value)
-                             )
-                             ->setCode(Uuid::INVALID_HYPHEN_PLACEMENT_ERROR)
-                             ->addViolation();
-                    } else {
-                        $this->buildViolation($constraint->message)
-                              ->setParameter(
-                                  '{{ value }}',
-                                  $this->formatValue($value)
-                              )
-                              ->setCode(Uuid::INVALID_HYPHEN_PLACEMENT_ERROR)
-                              ->addViolation();
-                    }
-
-                    return;
-                }
-
-                // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
-                //                        ^
-                if ($h < self::STRICT_LAST_HYPHEN_POSITION) {
-                    $h += 5;
-                }
-
-                continue;
-            }
-
-            // Check characters
-            if (!ctype_xdigit($value{$i})) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Uuid::INVALID_CHARACTERS_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Uuid::INVALID_CHARACTERS_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-
-            // Missing hyphen
-            if ($i === $h) {
-                if ($this->context instanceof ExecutionContextInterface) {
-                    $this->context->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Uuid::INVALID_HYPHEN_PLACEMENT_ERROR)
-                        ->addViolation();
-                } else {
-                    $this->buildViolation($constraint->message)
-                        ->setParameter('{{ value }}', $this->formatValue($value))
-                        ->setCode(Uuid::INVALID_HYPHEN_PLACEMENT_ERROR)
-                        ->addViolation();
-                }
-
-                return;
-            }
-        }
-
-        // Check length again
-        if (isset($value{$i})) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Uuid::TOO_LONG_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Uuid::TOO_LONG_ERROR)
-                    ->addViolation();
-            }
-        }
-
-        // Check version
-        if (!in_array($value{self::STRICT_VERSION_POSITION}, $constraint->versions)) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Uuid::INVALID_VERSION_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Uuid::INVALID_VERSION_ERROR)
-                    ->addViolation();
-            }
-        }
-
-        // Check variant - first two bits must equal "10"
-        //   0b10xx
-        // & 0b1100 (12)
-        // = 0b1000 (8)
-        if ((hexdec($value{self::STRICT_VARIANT_POSITION}) & 12) !== 8) {
-            if ($this->context instanceof ExecutionContextInterface) {
-                $this->context->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Uuid::INVALID_VARIANT_ERROR)
-                    ->addViolation();
-            } else {
-                $this->buildViolation($constraint->message)
-                    ->setParameter('{{ value }}', $this->formatValue($value))
-                    ->setCode(Uuid::INVALID_VARIANT_ERROR)
-                    ->addViolation();
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Constraints/Valid.php b/vendor/symfony/validator/Constraints/Valid.php
deleted file mode 100644
index 0fb7829..0000000
--- a/vendor/symfony/validator/Constraints/Valid.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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\Exception\ConstraintDefinitionException;
-
-/**
- * @Annotation
- * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class Valid extends Constraint
-{
-    public $traverse = true;
-
-    /**
-     * @deprecated since version 2.5, to be removed in Symfony 3.0.
-     */
-    public $deep = true;
-
-    public function __construct($options = null)
-    {
-        if (is_array($options) && array_key_exists('groups', $options)) {
-            throw new ConstraintDefinitionException(sprintf(
-                'The option "groups" is not supported by the constraint %s',
-                __CLASS__
-            ));
-        }
-
-        if (is_array($options) && array_key_exists('deep', $options)) {
-            @trigger_error('The "deep" option for the Valid constraint is deprecated since version 2.5 and will be removed in 3.0. When traversing arrays, nested arrays are always traversed. When traversing nested objects, their traversal strategy is used.', E_USER_DEPRECATED);
-        }
-
-        parent::__construct($options);
-    }
-}
diff --git a/vendor/symfony/validator/Context/ExecutionContext.php b/vendor/symfony/validator/Context/ExecutionContext.php
deleted file mode 100644
index 722bcc9..0000000
--- a/vendor/symfony/validator/Context/ExecutionContext.php
+++ /dev/null
@@ -1,464 +0,0 @@
-<?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\Context;
-
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Component\Validator\ClassBasedInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\Constraints\Valid;
-use Symfony\Component\Validator\ConstraintViolation;
-use Symfony\Component\Validator\ConstraintViolationList;
-use Symfony\Component\Validator\Mapping\MetadataInterface;
-use Symfony\Component\Validator\Mapping\PropertyMetadataInterface;
-use Symfony\Component\Validator\Util\PropertyPath;
-use Symfony\Component\Validator\Validator\ValidatorInterface;
-use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface;
-use Symfony\Component\Validator\Violation\ConstraintViolationBuilder;
-
-/**
- * The context used and created by {@link ExecutionContextFactory}.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see ExecutionContextInterface
- *
- * @internal You should not instantiate or use this class. Code against
- *           {@link ExecutionContextInterface} instead.
- */
-class ExecutionContext implements ExecutionContextInterface
-{
-    /**
-     * @var ValidatorInterface
-     */
-    private $validator;
-
-    /**
-     * The root value of the validated object graph.
-     *
-     * @var mixed
-     */
-    private $root;
-
-    /**
-     * @var TranslatorInterface
-     */
-    private $translator;
-
-    /**
-     * @var string
-     */
-    private $translationDomain;
-
-    /**
-     * The violations generated in the current context.
-     *
-     * @var ConstraintViolationList
-     */
-    private $violations;
-
-    /**
-     * The currently validated value.
-     *
-     * @var mixed
-     */
-    private $value;
-
-    /**
-     * The currently validated object.
-     *
-     * @var object|null
-     */
-    private $object;
-
-    /**
-     * The property path leading to the current value.
-     *
-     * @var string
-     */
-    private $propertyPath = '';
-
-    /**
-     * The current validation metadata.
-     *
-     * @var MetadataInterface|null
-     */
-    private $metadata;
-
-    /**
-     * The currently validated group.
-     *
-     * @var string|null
-     */
-    private $group;
-
-    /**
-     * The currently validated constraint.
-     *
-     * @var Constraint|null
-     */
-    private $constraint;
-
-    /**
-     * Stores which objects have been validated in which group.
-     *
-     * @var array
-     */
-    private $validatedObjects = array();
-
-    /**
-     * Stores which class constraint has been validated for which object.
-     *
-     * @var array
-     */
-    private $validatedConstraints = array();
-
-    /**
-     * Stores which objects have been initialized.
-     *
-     * @var array
-     */
-    private $initializedObjects;
-
-    /**
-     * Creates a new execution context.
-     *
-     * @param ValidatorInterface  $validator         The validator
-     * @param mixed               $root              The root value of the
-     *                                               validated object graph
-     * @param TranslatorInterface $translator        The translator
-     * @param string|null         $translationDomain The translation domain to
-     *                                               use for translating
-     *                                               violation messages
-     *
-     * @internal Called by {@link ExecutionContextFactory}. Should not be used
-     *           in user code.
-     */
-    public function __construct(ValidatorInterface $validator, $root, TranslatorInterface $translator, $translationDomain = null)
-    {
-        $this->validator = $validator;
-        $this->root = $root;
-        $this->translator = $translator;
-        $this->translationDomain = $translationDomain;
-        $this->violations = new ConstraintViolationList();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setNode($value, $object, MetadataInterface $metadata = null, $propertyPath)
-    {
-        $this->value = $value;
-        $this->object = $object;
-        $this->metadata = $metadata;
-        $this->propertyPath = (string) $propertyPath;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setGroup($group)
-    {
-        $this->group = $group;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setConstraint(Constraint $constraint)
-    {
-        $this->constraint = $constraint;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addViolation($message, array $parameters = array(), $invalidValue = null, $plural = null, $code = null)
-    {
-        // The parameters $invalidValue and following are ignored by the new
-        // API, as they are not present in the new interface anymore.
-        // You should use buildViolation() instead.
-        if (func_num_args() > 2) {
-            @trigger_error('The parameters $invalidValue, $plural and $code in method '.__METHOD__.' are deprecated since version 2.5 and will be removed in 3.0. Use the '.__CLASS__.'::buildViolation method instead.', E_USER_DEPRECATED);
-
-            $this
-                ->buildViolation($message, $parameters)
-                ->setInvalidValue($invalidValue)
-                ->setPlural($plural)
-                ->setCode($code)
-                ->addViolation()
-            ;
-
-            return;
-        }
-
-        $this->violations->add(new ConstraintViolation(
-            $this->translator->trans($message, $parameters, $this->translationDomain),
-            $message,
-            $parameters,
-            $this->root,
-            $this->propertyPath,
-            $this->value,
-            null,
-            null,
-            $this->constraint
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function buildViolation($message, array $parameters = array())
-    {
-        return new ConstraintViolationBuilder(
-            $this->violations,
-            $this->constraint,
-            $message,
-            $parameters,
-            $this->root,
-            $this->propertyPath,
-            $this->value,
-            $this->translator,
-            $this->translationDomain
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getViolations()
-    {
-        return $this->violations;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getValidator()
-    {
-        return $this->validator;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRoot()
-    {
-        return $this->root;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getObject()
-    {
-        return $this->object;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadata()
-    {
-        return $this->metadata;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getGroup()
-    {
-        return $this->group;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getClassName()
-    {
-        return $this->metadata instanceof ClassBasedInterface ? $this->metadata->getClassName() : null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPropertyName()
-    {
-        return $this->metadata instanceof PropertyMetadataInterface ? $this->metadata->getPropertyName() : null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPropertyPath($subPath = '')
-    {
-        return PropertyPath::append($this->propertyPath, $subPath);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addViolationAt($subPath, $message, array $parameters = array(), $invalidValue = null, $plural = null, $code = null)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Use the '.__CLASS__.'::buildViolation method instead.', E_USER_DEPRECATED);
-
-        if (func_num_args() > 2) {
-            $this
-                ->buildViolation($message, $parameters)
-                ->atPath($subPath)
-                ->setInvalidValue($invalidValue)
-                ->setPlural($plural)
-                ->setCode($code)
-                ->addViolation()
-            ;
-
-            return;
-        }
-
-        $this
-            ->buildViolation($message, $parameters)
-            ->atPath($subPath)
-            ->addViolation()
-        ;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, $subPath = '', $groups = null, $traverse = false, $deep = false)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Use the '.__CLASS__.'::getValidator() method instead.', E_USER_DEPRECATED);
-
-        if (is_array($value)) {
-            // The $traverse flag is ignored for arrays
-            $constraint = new Valid(array('traverse' => true, 'deep' => $deep));
-
-            return $this
-                ->getValidator()
-                ->inContext($this)
-                ->atPath($subPath)
-                ->validate($value, $constraint, $groups)
-            ;
-        }
-
-        if ($traverse && $value instanceof \Traversable) {
-            $constraint = new Valid(array('traverse' => true, 'deep' => $deep));
-
-            return $this
-                ->getValidator()
-                ->inContext($this)
-                ->atPath($subPath)
-                ->validate($value, $constraint, $groups)
-            ;
-        }
-
-        return $this
-            ->getValidator()
-            ->inContext($this)
-            ->atPath($subPath)
-            ->validate($value, null, $groups)
-        ;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validateValue($value, $constraints, $subPath = '', $groups = null)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Use the '.__CLASS__.'::getValidator() method instead.', E_USER_DEPRECATED);
-
-        return $this
-            ->getValidator()
-            ->inContext($this)
-            ->atPath($subPath)
-            ->validate($value, $constraints, $groups)
-        ;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFactory()
-    {
-        @trigger_error('The '.__METHOD__.' is deprecated since version 2.5 and will be removed in 3.0. Use the new Symfony\Component\Validator\Context\ExecutionContext::getValidator method in combination with Symfony\Component\Validator\Validator\ValidatorInterface::getMetadataFor or Symfony\Component\Validator\Validator\ValidatorInterface::hasMetadataFor method instead.', E_USER_DEPRECATED);
-
-        $validator = $this->getValidator();
-
-        if ($validator instanceof LegacyValidatorInterface) {
-            return $validator->getMetadataFactory();
-        }
-
-        // The ValidatorInterface extends from the deprecated MetadataFactoryInterface, so return it when we don't have the factory instance itself
-        return $validator;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function markGroupAsValidated($cacheKey, $groupHash)
-    {
-        if (!isset($this->validatedObjects[$cacheKey])) {
-            $this->validatedObjects[$cacheKey] = array();
-        }
-
-        $this->validatedObjects[$cacheKey][$groupHash] = true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isGroupValidated($cacheKey, $groupHash)
-    {
-        return isset($this->validatedObjects[$cacheKey][$groupHash]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function markConstraintAsValidated($cacheKey, $constraintHash)
-    {
-        $this->validatedConstraints[$cacheKey.':'.$constraintHash] = true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isConstraintValidated($cacheKey, $constraintHash)
-    {
-        return isset($this->validatedConstraints[$cacheKey.':'.$constraintHash]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function markObjectAsInitialized($cacheKey)
-    {
-        $this->initializedObjects[$cacheKey] = true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isObjectInitialized($cacheKey)
-    {
-        return isset($this->initializedObjects[$cacheKey]);
-    }
-}
diff --git a/vendor/symfony/validator/Context/ExecutionContextFactory.php b/vendor/symfony/validator/Context/ExecutionContextFactory.php
deleted file mode 100644
index f4f01d9..0000000
--- a/vendor/symfony/validator/Context/ExecutionContextFactory.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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\Context;
-
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Component\Validator\Validator\ValidatorInterface;
-
-/**
- * Creates new {@link ExecutionContext} instances.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @internal You should not instantiate or use this class. Code against
- *           {@link ExecutionContextFactoryInterface} instead.
- */
-class ExecutionContextFactory implements ExecutionContextFactoryInterface
-{
-    /**
-     * @var TranslatorInterface
-     */
-    private $translator;
-
-    /**
-     * @var string|null
-     */
-    private $translationDomain;
-
-    /**
-     * Creates a new context factory.
-     *
-     * @param TranslatorInterface $translator        The translator
-     * @param string|null         $translationDomain The translation domain to
-     *                                               use for translating
-     *                                               violation messages
-     */
-    public function __construct(TranslatorInterface $translator, $translationDomain = null)
-    {
-        $this->translator = $translator;
-        $this->translationDomain = $translationDomain;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function createContext(ValidatorInterface $validator, $root)
-    {
-        return new ExecutionContext(
-            $validator,
-            $root,
-            $this->translator,
-            $this->translationDomain
-        );
-    }
-}
diff --git a/vendor/symfony/validator/Context/ExecutionContextFactoryInterface.php b/vendor/symfony/validator/Context/ExecutionContextFactoryInterface.php
deleted file mode 100644
index e4af667..0000000
--- a/vendor/symfony/validator/Context/ExecutionContextFactoryInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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\Context;
-
-use Symfony\Component\Validator\Validator\ValidatorInterface;
-
-/**
- * Creates instances of {@link ExecutionContextInterface}.
- *
- * You can use a custom factory if you want to customize the execution context
- * that is passed through the validation run.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ExecutionContextFactoryInterface
-{
-    /**
-     * Creates a new execution context.
-     *
-     * @param ValidatorInterface $validator The validator
-     * @param mixed              $root      The root value of the validated
-     *                                      object graph
-     *
-     * @return ExecutionContextInterface The new execution context
-     */
-    public function createContext(ValidatorInterface $validator, $root);
-}
diff --git a/vendor/symfony/validator/Context/ExecutionContextInterface.php b/vendor/symfony/validator/Context/ExecutionContextInterface.php
deleted file mode 100644
index 2ef80b6..0000000
--- a/vendor/symfony/validator/Context/ExecutionContextInterface.php
+++ /dev/null
@@ -1,227 +0,0 @@
-<?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\Context;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ExecutionContextInterface as LegacyExecutionContextInterface;
-use Symfony\Component\Validator\Mapping\MetadataInterface;
-use Symfony\Component\Validator\Validator\ValidatorInterface;
-use Symfony\Component\Validator\Violation\ConstraintViolationBuilderInterface;
-
-/**
- * The context of a validation run.
- *
- * The context collects all violations generated during the validation. By
- * default, validators execute all validations in a new context:
- *
- *     $violations = $validator->validate($object);
- *
- * When you make another call to the validator, while the validation is in
- * progress, the violations will be isolated from each other:
- *
- *     public function validate($value, Constraint $constraint)
- *     {
- *         $validator = $this->context->getValidator();
- *
- *         // The violations are not added to $this->context
- *         $violations = $validator->validate($value);
- *     }
- *
- * However, if you want to add the violations to the current context, use the
- * {@link ValidatorInterface::inContext()} method:
- *
- *     public function validate($value, Constraint $constraint)
- *     {
- *         $validator = $this->context->getValidator();
- *
- *         // The violations are added to $this->context
- *         $validator
- *             ->inContext($this->context)
- *             ->validate($value)
- *         ;
- *     }
- *
- * Additionally, the context provides information about the current state of
- * the validator, such as the currently validated class, the name of the
- * currently validated property and more. These values change over time, so you
- * cannot store a context and expect that the methods still return the same
- * results later on.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ExecutionContextInterface extends LegacyExecutionContextInterface
-{
-    /**
-     * Returns a builder for adding a violation with extended information.
-     *
-     * Call {@link ConstraintViolationBuilderInterface::addViolation()} to
-     * add the violation when you're done with the configuration:
-     *
-     *     $context->buildViolation('Please enter a number between %min% and %max%.')
-     *         ->setParameter('%min%', 3)
-     *         ->setParameter('%max%', 10)
-     *         ->setTranslationDomain('number_validation')
-     *         ->addViolation();
-     *
-     * @param string $message    The error message
-     * @param array  $parameters The parameters substituted in the error message
-     *
-     * @return ConstraintViolationBuilderInterface The violation builder
-     */
-    public function buildViolation($message, array $parameters = array());
-
-    /**
-     * Returns the validator.
-     *
-     * Useful if you want to validate additional constraints:
-     *
-     *     public function validate($value, Constraint $constraint)
-     *     {
-     *         $validator = $this->context->getValidator();
-     *
-     *         $violations = $validator->validateValue($value, new Length(array('min' => 3)));
-     *
-     *         if (count($violations) > 0) {
-     *             // ...
-     *         }
-     *     }
-     *
-     * @return ValidatorInterface
-     */
-    public function getValidator();
-
-    /**
-     * Returns the currently validated object.
-     *
-     * If the validator is currently validating a class constraint, the
-     * object of that class is returned. If it is a validating a property or
-     * getter constraint, the object that the property/getter belongs to is
-     * returned.
-     *
-     * In other cases, null is returned.
-     *
-     * @return object|null The currently validated object or null.
-     */
-    public function getObject();
-
-    /**
-     * Sets the currently validated value.
-     *
-     * @param mixed                  $value        The validated value
-     * @param object|null            $object       The currently validated object
-     * @param MetadataInterface|null $metadata     The validation metadata
-     * @param string                 $propertyPath The property path to the current value
-     *
-     * @internal Used by the validator engine. Should not be called by user
-     *           code.
-     */
-    public function setNode($value, $object, MetadataInterface $metadata = null, $propertyPath);
-
-    /**
-     * Sets the currently validated group.
-     *
-     * @param string|null $group The validated group
-     *
-     * @internal Used by the validator engine. Should not be called by user
-     *           code.
-     */
-    public function setGroup($group);
-
-    /**
-     * Sets the currently validated constraint.
-     *
-     * @param Constraint $constraint The validated constraint
-     *
-     * @internal Used by the validator engine. Should not be called by user
-     *           code.
-     */
-    public function setConstraint(Constraint $constraint);
-
-    /**
-     * Marks an object as validated in a specific validation group.
-     *
-     * @param string $cacheKey  The hash of the object
-     * @param string $groupHash The group's name or hash, if it is group
-     *                          sequence
-     *
-     * @internal Used by the validator engine. Should not be called by user
-     *           code.
-     */
-    public function markGroupAsValidated($cacheKey, $groupHash);
-
-    /**
-     * Returns whether an object was validated in a specific validation group.
-     *
-     * @param string $cacheKey  The hash of the object
-     * @param string $groupHash The group's name or hash, if it is group
-     *                          sequence
-     *
-     * @return bool Whether the object was already validated for that
-     *              group
-     *
-     * @internal Used by the validator engine. Should not be called by user
-     *           code.
-     */
-    public function isGroupValidated($cacheKey, $groupHash);
-
-    /**
-     * Marks a constraint as validated for an object.
-     *
-     * @param string $cacheKey       The hash of the object
-     * @param string $constraintHash The hash of the constraint
-     *
-     * @internal Used by the validator engine. Should not be called by user
-     *           code.
-     */
-    public function markConstraintAsValidated($cacheKey, $constraintHash);
-
-    /**
-     * Returns whether a constraint was validated for an object.
-     *
-     * @param string $cacheKey       The hash of the object
-     * @param string $constraintHash The hash of the constraint
-     *
-     * @return bool Whether the constraint was already validated
-     *
-     * @internal Used by the validator engine. Should not be called by user
-     *           code.
-     */
-    public function isConstraintValidated($cacheKey, $constraintHash);
-
-    /**
-     * Marks that an object was initialized.
-     *
-     * @param string $cacheKey The hash of the object
-     *
-     * @internal Used by the validator engine. Should not be called by user
-     *           code.
-     *
-     * @see ObjectInitializerInterface
-     */
-    public function markObjectAsInitialized($cacheKey);
-
-    /**
-     * Returns whether an object was initialized.
-     *
-     * @param string $cacheKey The hash of the object
-     *
-     * @return bool Whether the object was already initialized
-     *
-     * @internal Used by the validator engine. Should not be called by user
-     *           code.
-     *
-     * @see ObjectInitializerInterface
-     */
-    public function isObjectInitialized($cacheKey);
-}
diff --git a/vendor/symfony/validator/Context/LegacyExecutionContext.php b/vendor/symfony/validator/Context/LegacyExecutionContext.php
deleted file mode 100644
index f52b359..0000000
--- a/vendor/symfony/validator/Context/LegacyExecutionContext.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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\Context;
-
-@trigger_error('The '.__NAMESPACE__.'\LegacyExecutionContext class is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Component\Validator\MetadataFactoryInterface;
-use Symfony\Component\Validator\Validator\ValidatorInterface;
-
-/**
- * An execution context that is compatible with the legacy API (< 2.5).
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- */
-class LegacyExecutionContext extends ExecutionContext
-{
-    /**
-     * @var MetadataFactoryInterface
-     */
-    private $metadataFactory;
-
-    /**
-     * Creates a new context.
-     *
-     * @see ExecutionContext::__construct()
-     *
-     * @internal Called by {@link LegacyExecutionContextFactory}. Should not be used
-     *           in user code.
-     */
-    public function __construct(ValidatorInterface $validator, $root, MetadataFactoryInterface $metadataFactory, TranslatorInterface $translator, $translationDomain = null)
-    {
-        parent::__construct(
-            $validator,
-            $root,
-            $translator,
-            $translationDomain
-        );
-
-        $this->metadataFactory = $metadataFactory;
-    }
-}
diff --git a/vendor/symfony/validator/Context/LegacyExecutionContextFactory.php b/vendor/symfony/validator/Context/LegacyExecutionContextFactory.php
deleted file mode 100644
index c110644..0000000
--- a/vendor/symfony/validator/Context/LegacyExecutionContextFactory.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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\Context;
-
-@trigger_error('The '.__NAMESPACE__.'\LegacyExecutionContextFactory class is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Component\Validator\MetadataFactoryInterface;
-use Symfony\Component\Validator\Validator\ValidatorInterface;
-
-/**
- * Creates new {@link LegacyExecutionContext} instances.
- *
- * Implemented for backward compatibility with Symfony < 2.5.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- */
-class LegacyExecutionContextFactory implements ExecutionContextFactoryInterface
-{
-    /**
-     * @var MetadataFactoryInterface
-     */
-    private $metadataFactory;
-
-    /**
-     * @var TranslatorInterface
-     */
-    private $translator;
-
-    /**
-     * @var string|null
-     */
-    private $translationDomain;
-
-    /**
-     * Creates a new context factory.
-     *
-     * @param MetadataFactoryInterface $metadataFactory   The metadata factory
-     * @param TranslatorInterface      $translator        The translator
-     * @param string|null              $translationDomain The translation domain
-     *                                                    to use for translating
-     *                                                    violation messages
-     */
-    public function __construct(MetadataFactoryInterface $metadataFactory, TranslatorInterface $translator, $translationDomain = null)
-    {
-        $this->metadataFactory = $metadataFactory;
-        $this->translator = $translator;
-        $this->translationDomain = $translationDomain;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function createContext(ValidatorInterface $validator, $root)
-    {
-        return new LegacyExecutionContext(
-            $validator,
-            $root,
-            $this->metadataFactory,
-            $this->translator,
-            $this->translationDomain
-        );
-    }
-}
diff --git a/vendor/symfony/validator/DefaultTranslator.php b/vendor/symfony/validator/DefaultTranslator.php
deleted file mode 100644
index 85853d8..0000000
--- a/vendor/symfony/validator/DefaultTranslator.php
+++ /dev/null
@@ -1,171 +0,0 @@
-<?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;
-
-@trigger_error('The class '.__NAMESPACE__.'\DefaultTranslator is deprecated since version 2.7 and will be removed in 3.0. Use Symfony\Component\Translation\IdentityTranslator instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Component\Validator\Exception\BadMethodCallException;
-use Symfony\Component\Validator\Exception\InvalidArgumentException;
-
-/**
- * Simple translator implementation that simply replaces the parameters in
- * the message IDs.
- *
- * Example usage:
- *
- *     $translator = new DefaultTranslator();
- *
- *     echo $translator->trans(
- *         'This is a {{ var }}.',
- *         array('{{ var }}' => 'donkey')
- *     );
- *
- *     // -> This is a donkey.
- *
- *     echo $translator->transChoice(
- *         'This is {{ count }} donkey.|These are {{ count }} donkeys.',
- *         3,
- *         array('{{ count }}' => 'three')
- *     );
- *
- *     // -> These are three donkeys.
- *
- * This translator does not support message catalogs, translation domains or
- * locales. Instead, it implements a subset of the capabilities of
- * {@link \Symfony\Component\Translation\Translator} and can be used in places
- * where translation is not required by default but should be optional.
- *
- * @deprecated since version 2.7, to be removed in 3.0. Use Symfony\Component\Translation\IdentityTranslator instead.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class DefaultTranslator implements TranslatorInterface
-{
-    /**
-     * Interpolates the given message.
-     *
-     * Parameters are replaced in the message in the same manner that
-     * {@link strtr()} uses.
-     *
-     * Example usage:
-     *
-     *     $translator = new DefaultTranslator();
-     *
-     *     echo $translator->trans(
-     *         'This is a {{ var }}.',
-     *         array('{{ var }}' => 'donkey')
-     *     );
-     *
-     *     // -> This is a donkey.
-     *
-     * @param string $id         The message id
-     * @param array  $parameters An array of parameters for the message
-     * @param string $domain     Ignored
-     * @param string $locale     Ignored
-     *
-     * @return string The interpolated string
-     */
-    public function trans($id, array $parameters = array(), $domain = null, $locale = null)
-    {
-        return strtr($id, $parameters);
-    }
-
-    /**
-     * Interpolates the given choice message by choosing a variant according to a number.
-     *
-     * The variants are passed in the message ID using the format
-     * "<singular>|<plural>". "<singular>" is chosen if the passed $number is
-     * exactly 1. "<plural>" is chosen otherwise.
-     *
-     * This format is consistent with the format supported by
-     * {@link \Symfony\Component\Translation\Translator}, but it does not
-     * have the same expressiveness. While Translator supports intervals in
-     * message translations, which are needed for languages other than English,
-     * this translator does not. You should use Translator or a custom
-     * implementation of {@link \Symfony\Component\Translation\TranslatorInterface} if you need this or similar
-     * functionality.
-     *
-     * Example usage:
-     *
-     *     echo $translator->transChoice(
-     *         'This is {{ count }} donkey.|These are {{ count }} donkeys.',
-     *         0,
-     *         array('{{ count }}' => 0)
-     *     );
-     *
-     *     // -> These are 0 donkeys.
-     *
-     *     echo $translator->transChoice(
-     *         'This is {{ count }} donkey.|These are {{ count }} donkeys.',
-     *         1,
-     *         array('{{ count }}' => 1)
-     *     );
-     *
-     *     // -> This is 1 donkey.
-     *
-     *     echo $translator->transChoice(
-     *         'This is {{ count }} donkey.|These are {{ count }} donkeys.',
-     *         3,
-     *         array('{{ count }}' => 3)
-     *     );
-     *
-     *     // -> These are 3 donkeys.
-     *
-     * @param string $id         The message id
-     * @param int    $number     The number to use to find the index of the message
-     * @param array  $parameters An array of parameters for the message
-     * @param string $domain     Ignored
-     * @param string $locale     Ignored
-     *
-     * @return string The translated string
-     *
-     * @throws InvalidArgumentException If the message id does not have the format
-     *                                  "singular|plural".
-     */
-    public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
-    {
-        $ids = explode('|', $id);
-
-        if (1 == $number) {
-            return strtr($ids[0], $parameters);
-        }
-
-        if (!isset($ids[1])) {
-            throw new InvalidArgumentException(sprintf('The message "%s" cannot be pluralized, because it is missing a plural (e.g. "There is one apple|There are %%count%% apples").', $id));
-        }
-
-        return strtr($ids[1], $parameters);
-    }
-
-    /**
-     * Not supported.
-     *
-     * @param string $locale The locale
-     *
-     * @throws BadMethodCallException
-     */
-    public function setLocale($locale)
-    {
-        throw new BadMethodCallException('Unsupported method.');
-    }
-
-    /**
-     * Returns the locale of the translator.
-     *
-     * @return string Always returns 'en'
-     */
-    public function getLocale()
-    {
-        return 'en';
-    }
-}
diff --git a/vendor/symfony/validator/Exception/BadMethodCallException.php b/vendor/symfony/validator/Exception/BadMethodCallException.php
deleted file mode 100644
index 939161b..0000000
--- a/vendor/symfony/validator/Exception/BadMethodCallException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Base BadMethodCallException for the Validator component.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class BadMethodCallException extends \BadMethodCallException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/validator/Exception/ConstraintDefinitionException.php b/vendor/symfony/validator/Exception/ConstraintDefinitionException.php
deleted file mode 100644
index b24fdd6..0000000
--- a/vendor/symfony/validator/Exception/ConstraintDefinitionException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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\Exception;
-
-class ConstraintDefinitionException extends ValidatorException
-{
-}
diff --git a/vendor/symfony/validator/Exception/ExceptionInterface.php b/vendor/symfony/validator/Exception/ExceptionInterface.php
deleted file mode 100644
index 77d09b9..0000000
--- a/vendor/symfony/validator/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Base ExceptionInterface for the Validator component.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/symfony/validator/Exception/GroupDefinitionException.php b/vendor/symfony/validator/Exception/GroupDefinitionException.php
deleted file mode 100644
index ab7e91d..0000000
--- a/vendor/symfony/validator/Exception/GroupDefinitionException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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\Exception;
-
-class GroupDefinitionException extends ValidatorException
-{
-}
diff --git a/vendor/symfony/validator/Exception/InvalidArgumentException.php b/vendor/symfony/validator/Exception/InvalidArgumentException.php
deleted file mode 100644
index 22da39b..0000000
--- a/vendor/symfony/validator/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Base InvalidArgumentException for the Validator component.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/validator/Exception/InvalidOptionsException.php b/vendor/symfony/validator/Exception/InvalidOptionsException.php
deleted file mode 100644
index ce87c42..0000000
--- a/vendor/symfony/validator/Exception/InvalidOptionsException.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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\Exception;
-
-class InvalidOptionsException extends ValidatorException
-{
-    private $options;
-
-    public function __construct($message, array $options)
-    {
-        parent::__construct($message);
-
-        $this->options = $options;
-    }
-
-    public function getOptions()
-    {
-        return $this->options;
-    }
-}
diff --git a/vendor/symfony/validator/Exception/MappingException.php b/vendor/symfony/validator/Exception/MappingException.php
deleted file mode 100644
index 4c8c057..0000000
--- a/vendor/symfony/validator/Exception/MappingException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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\Exception;
-
-class MappingException extends ValidatorException
-{
-}
diff --git a/vendor/symfony/validator/Exception/MissingOptionsException.php b/vendor/symfony/validator/Exception/MissingOptionsException.php
deleted file mode 100644
index 07c5d9e..0000000
--- a/vendor/symfony/validator/Exception/MissingOptionsException.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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\Exception;
-
-class MissingOptionsException extends ValidatorException
-{
-    private $options;
-
-    public function __construct($message, array $options)
-    {
-        parent::__construct($message);
-
-        $this->options = $options;
-    }
-
-    public function getOptions()
-    {
-        return $this->options;
-    }
-}
diff --git a/vendor/symfony/validator/Exception/NoSuchMetadataException.php b/vendor/symfony/validator/Exception/NoSuchMetadataException.php
deleted file mode 100644
index 4cac74c..0000000
--- a/vendor/symfony/validator/Exception/NoSuchMetadataException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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\Exception;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class NoSuchMetadataException extends ValidatorException
-{
-}
diff --git a/vendor/symfony/validator/Exception/OutOfBoundsException.php b/vendor/symfony/validator/Exception/OutOfBoundsException.php
deleted file mode 100644
index 30906e8..0000000
--- a/vendor/symfony/validator/Exception/OutOfBoundsException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Base OutOfBoundsException for the Validator component.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class OutOfBoundsException extends \OutOfBoundsException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/validator/Exception/RuntimeException.php b/vendor/symfony/validator/Exception/RuntimeException.php
deleted file mode 100644
index df4a50c..0000000
--- a/vendor/symfony/validator/Exception/RuntimeException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * Base RuntimeException for the Validator component.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class RuntimeException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/validator/Exception/UnexpectedTypeException.php b/vendor/symfony/validator/Exception/UnexpectedTypeException.php
deleted file mode 100644
index 49d8cc2..0000000
--- a/vendor/symfony/validator/Exception/UnexpectedTypeException.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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\Exception;
-
-class UnexpectedTypeException extends ValidatorException
-{
-    public function __construct($value, $expectedType)
-    {
-        parent::__construct(sprintf('Expected argument of type "%s", "%s" given', $expectedType, is_object($value) ? get_class($value) : gettype($value)));
-    }
-}
diff --git a/vendor/symfony/validator/Exception/UnsupportedMetadataException.php b/vendor/symfony/validator/Exception/UnsupportedMetadataException.php
deleted file mode 100644
index 97cc5ff..0000000
--- a/vendor/symfony/validator/Exception/UnsupportedMetadataException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Exception;
-
-/**
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class UnsupportedMetadataException extends InvalidArgumentException
-{
-}
diff --git a/vendor/symfony/validator/Exception/ValidatorException.php b/vendor/symfony/validator/Exception/ValidatorException.php
deleted file mode 100644
index 28bd470..0000000
--- a/vendor/symfony/validator/Exception/ValidatorException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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\Exception;
-
-class ValidatorException extends RuntimeException
-{
-}
diff --git a/vendor/symfony/validator/ExecutionContext.php b/vendor/symfony/validator/ExecutionContext.php
deleted file mode 100644
index 5875e94..0000000
--- a/vendor/symfony/validator/ExecutionContext.php
+++ /dev/null
@@ -1,295 +0,0 @@
-<?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;
-
-@trigger_error('The '.__NAMESPACE__.'\ExecutionContext class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Validator\Context\ExecutionContext class instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Translation\TranslatorInterface;
-
-/**
- * Default implementation of {@link ExecutionContextInterface}.
- *
- * This class is immutable by design.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link Context\ExecutionContext} instead.
- */
-class ExecutionContext implements ExecutionContextInterface
-{
-    /**
-     * @var GlobalExecutionContextInterface
-     */
-    private $globalContext;
-
-    /**
-     * @var TranslatorInterface
-     */
-    private $translator;
-
-    /**
-     * @var null|string
-     */
-    private $translationDomain;
-
-    /**
-     * @var MetadataInterface
-     */
-    private $metadata;
-
-    /**
-     * @var mixed
-     */
-    private $value;
-
-    /**
-     * @var string
-     */
-    private $group;
-
-    /**
-     * @var string
-     */
-    private $propertyPath;
-
-    /**
-     * Creates a new execution context.
-     *
-     * @param GlobalExecutionContextInterface $globalContext     The global context storing node-independent state.
-     * @param TranslatorInterface             $translator        The translator for translating violation messages.
-     * @param null|string                     $translationDomain The domain of the validation messages.
-     * @param MetadataInterface               $metadata          The metadata of the validated node.
-     * @param mixed                           $value             The value of the validated node.
-     * @param string                          $group             The current validation group.
-     * @param string                          $propertyPath      The property path to the current node.
-     */
-    public function __construct(GlobalExecutionContextInterface $globalContext, TranslatorInterface $translator, $translationDomain = null, MetadataInterface $metadata = null, $value = null, $group = null, $propertyPath = '')
-    {
-        if (null === $group) {
-            $group = Constraint::DEFAULT_GROUP;
-        }
-
-        $this->globalContext = $globalContext;
-        $this->translator = $translator;
-        $this->translationDomain = $translationDomain;
-        $this->metadata = $metadata;
-        $this->value = $value;
-        $this->propertyPath = $propertyPath;
-        $this->group = $group;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addViolation($message, array $params = array(), $invalidValue = null, $plural = null, $code = null)
-    {
-        if (null === $plural) {
-            $translatedMessage = $this->translator->trans($message, $params, $this->translationDomain);
-        } else {
-            try {
-                $translatedMessage = $this->translator->transChoice($message, $plural, $params, $this->translationDomain);
-            } catch (\InvalidArgumentException $e) {
-                $translatedMessage = $this->translator->trans($message, $params, $this->translationDomain);
-            }
-        }
-
-        $this->globalContext->getViolations()->add(new ConstraintViolation(
-            $translatedMessage,
-            $message,
-            $params,
-            $this->globalContext->getRoot(),
-            $this->propertyPath,
-            // check using func_num_args() to allow passing null values
-            func_num_args() >= 3 ? $invalidValue : $this->value,
-            $plural,
-            $code
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addViolationAt($subPath, $message, array $parameters = array(), $invalidValue = null, $plural = null, $code = null)
-    {
-        $this->globalContext->getViolations()->add(new ConstraintViolation(
-            null === $plural
-                ? $this->translator->trans($message, $parameters, $this->translationDomain)
-                : $this->translator->transChoice($message, $plural, $parameters, $this->translationDomain),
-            $message,
-            $parameters,
-            $this->globalContext->getRoot(),
-            $this->getPropertyPath($subPath),
-            // check using func_num_args() to allow passing null values
-            func_num_args() >= 4 ? $invalidValue : $this->value,
-            $plural,
-            $code
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getViolations()
-    {
-        return $this->globalContext->getViolations();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRoot()
-    {
-        return $this->globalContext->getRoot();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPropertyPath($subPath = '')
-    {
-        if ('' != $subPath && '' !== $this->propertyPath && '[' !== $subPath[0]) {
-            return $this->propertyPath.'.'.$subPath;
-        }
-
-        return $this->propertyPath.$subPath;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getClassName()
-    {
-        if ($this->metadata instanceof ClassBasedInterface) {
-            return $this->metadata->getClassName();
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPropertyName()
-    {
-        if ($this->metadata instanceof PropertyMetadataInterface) {
-            return $this->metadata->getPropertyName();
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getGroup()
-    {
-        return $this->group;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadata()
-    {
-        return $this->metadata;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFor($value)
-    {
-        return $this->globalContext->getMetadataFactory()->getMetadataFor($value);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, $subPath = '', $groups = null, $traverse = false, $deep = false)
-    {
-        $propertyPath = $this->getPropertyPath($subPath);
-
-        foreach ($this->resolveGroups($groups) as $group) {
-            $this->globalContext->getVisitor()->validate($value, $group, $propertyPath, $traverse, $deep);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validateValue($value, $constraints, $subPath = '', $groups = null)
-    {
-        $constraints = is_array($constraints) ? $constraints : array($constraints);
-
-        if (null === $groups && '' === $subPath) {
-            $context = clone $this;
-            $context->value = $value;
-            $context->executeConstraintValidators($value, $constraints);
-
-            return;
-        }
-
-        $propertyPath = $this->getPropertyPath($subPath);
-
-        foreach ($this->resolveGroups($groups) as $group) {
-            $context = clone $this;
-            $context->value = $value;
-            $context->group = $group;
-            $context->propertyPath = $propertyPath;
-            $context->executeConstraintValidators($value, $constraints);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFactory()
-    {
-        return $this->globalContext->getMetadataFactory();
-    }
-
-    /**
-     * Executes the validators of the given constraints for the given value.
-     *
-     * @param mixed        $value       The value to validate.
-     * @param Constraint[] $constraints The constraints to match against.
-     */
-    private function executeConstraintValidators($value, array $constraints)
-    {
-        foreach ($constraints as $constraint) {
-            $validator = $this->globalContext->getValidatorFactory()->getInstance($constraint);
-            $validator->initialize($this);
-            $validator->validate($value, $constraint);
-        }
-    }
-
-    /**
-     * Returns an array of group names.
-     *
-     * @param null|string|string[] $groups The groups to resolve. If a single string is
-     *                                     passed, it is converted to an array. If null
-     *                                     is passed, an array containing the current
-     *                                     group of the context is returned.
-     *
-     * @return array An array of validation groups.
-     */
-    private function resolveGroups($groups)
-    {
-        return $groups ? (array) $groups : (array) $this->group;
-    }
-}
diff --git a/vendor/symfony/validator/ExecutionContextInterface.php b/vendor/symfony/validator/ExecutionContextInterface.php
deleted file mode 100644
index b07e928..0000000
--- a/vendor/symfony/validator/ExecutionContextInterface.php
+++ /dev/null
@@ -1,319 +0,0 @@
-<?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;
-
-/**
- * Stores the validator's state during validation.
- *
- * For example, let's validate the following object graph:
- *
- * <pre>
- * (Person)---($firstName: string)
- *      \
- *   ($address: Address)---($street: string)
- * </pre>
- *
- * We validate the <tt>Person</tt> instance, which becomes the "root" of the
- * validation run (see {@link getRoot}). The state of the context after the
- * first step will be like this:
- *
- * <pre>
- * (Person)---($firstName: string)
- *    ^ \
- *   ($address: Address)---($street: string)
- * </pre>
- *
- * The validator is stopped at the <tt>Person</tt> node, both the root and the
- * value (see {@link getValue}) of the context point to the <tt>Person</tt>
- * instance. The property path is empty at this point (see {@link getPropertyPath}).
- * The metadata of the context is the metadata of the <tt>Person</tt> node
- * (see {@link getMetadata}).
- *
- * After advancing to the property <tt>$firstName</tt> of the <tt>Person</tt>
- * instance, the state of the context looks like this:
- *
- * <pre>
- * (Person)---($firstName: string)
- *      \              ^
- *   ($address: Address)---($street: string)
- * </pre>
- *
- * The validator is stopped at the property <tt>$firstName</tt>. The root still
- * points to the <tt>Person</tt> instance, because this is where the validation
- * started. The property path is now "firstName" and the current value is the
- * value of that property.
- *
- * After advancing to the <tt>$address</tt> property and then to the
- * <tt>$street</tt> property of the <tt>Address</tt> instance, the context state
- * looks like this:
- *
- * <pre>
- * (Person)---($firstName: string)
- *      \
- *   ($address: Address)---($street: string)
- *                               ^
- * </pre>
- *
- * The validator is stopped at the property <tt>$street</tt>. The root still
- * points to the <tt>Person</tt> instance, but the property path is now
- * "address.street" and the validated value is the value of that property.
- *
- * Apart from the root, the property path and the currently validated value,
- * the execution context also knows the metadata of the current node (see
- * {@link getMetadata}) which for example returns a {@link Mapping\PropertyMetadata}
- * or a {@link Mapping\ClassMetadata} object. he context also contains the
- * validation group that is currently being validated (see {@link getGroup}) and
- * the violations that happened up until now (see {@link getViolations}).
- *
- * Apart from reading the execution context, you can also use
- * {@link addViolation} or {@link addViolationAt} to add new violations and
- * {@link validate} or {@link validateValue} to validate values that the
- * validator otherwise would not reach.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link Context\ExecutionContextInterface} instead.
- */
-interface ExecutionContextInterface
-{
-    /**
-     * Adds a violation at the current node of the validation graph.
-     *
-     * Note: the parameters $invalidValue, $plural and $code are deprecated since version 2.5 and will be removed in 3.0.
-     *
-     * @param string   $message      The error message
-     * @param array    $params       The parameters substituted in the error message
-     * @param mixed    $invalidValue The invalid, validated value
-     * @param int|null $plural       The number to use to pluralize of the message
-     * @param int|null $code         The violation code
-     */
-    public function addViolation($message, array $params = array(), $invalidValue = null, $plural = null, $code = null);
-
-    /**
-     * Adds a violation at the validation graph node with the given property
-     * path relative to the current property path.
-     *
-     * @param string   $subPath      The relative property path for the violation
-     * @param string   $message      The error message
-     * @param array    $parameters   The parameters substituted in the error message
-     * @param mixed    $invalidValue The invalid, validated value
-     * @param int|null $plural       The number to use to pluralize of the message
-     * @param int|null $code         The violation code
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Use {@link Context\ExecutionContextInterface::buildViolation()}
-     *             instead.
-     */
-    public function addViolationAt($subPath, $message, array $parameters = array(), $invalidValue = null, $plural = null, $code = null);
-
-    /**
-     * Validates the given value within the scope of the current validation.
-     *
-     * The value may be any value recognized by the used metadata factory
-     * (see {@link MetadataFactoryInterface::getMetadata}), or an array or a
-     * traversable object of such values.
-     *
-     * Usually you validate a value that is not the current node of the
-     * execution context. For this case, you can pass the {@link $subPath}
-     * argument which is appended to the current property path when a violation
-     * is created. For example, take the following object graph:
-     *
-     * <pre>
-     * (Person)---($address: Address)---($phoneNumber: PhoneNumber)
-     *                     ^
-     * </pre>
-     *
-     * When the execution context stops at the <tt>Person</tt> instance, the
-     * property path is "address". When you validate the <tt>PhoneNumber</tt>
-     * instance now, pass "phoneNumber" as sub path to correct the property path
-     * to "address.phoneNumber":
-     *
-     * <pre>
-     * $context->validate($address->phoneNumber, 'phoneNumber');
-     * </pre>
-     *
-     * Any violations generated during the validation will be added to the
-     * violation list that you can access with {@link getViolations}.
-     *
-     * @param mixed                $value    The value to validate.
-     * @param string               $subPath  The path to append to the context's property path.
-     * @param null|string|string[] $groups   The groups to validate in. If you don't pass any
-     *                                       groups here, the current group of the context
-     *                                       will be used.
-     * @param bool                 $traverse Whether to traverse the value if it is an array
-     *                                       or an instance of <tt>\Traversable</tt>.
-     * @param bool                 $deep     Whether to traverse the value recursively if
-     *                                       it is a collection of collections.
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Use {@link Context\ExecutionContextInterface::getValidator()}
-     *             instead.
-     */
-    public function validate($value, $subPath = '', $groups = null, $traverse = false, $deep = false);
-
-    /**
-     * Validates a value against a constraint.
-     *
-     * Use the parameter <tt>$subPath</tt> to adapt the property path for the
-     * validated value. For example, take the following object graph:
-     *
-     * <pre>
-     * (Person)---($address: Address)---($street: string)
-     *                     ^
-     * </pre>
-     *
-     * When the validator validates the <tt>Address</tt> instance, the
-     * property path stored in the execution context is "address". When you
-     * manually validate the property <tt>$street</tt> now, pass the sub path
-     * "street" to adapt the full property path to "address.street":
-     *
-     * <pre>
-     * $context->validate($address->street, new NotNull(), 'street');
-     * </pre>
-     *
-     * @param mixed                   $value       The value to validate.
-     * @param Constraint|Constraint[] $constraints The constraint(s) to validate against.
-     * @param string                  $subPath     The path to append to the context's property path.
-     * @param null|string|string[]    $groups      The groups to validate in. If you don't pass any
-     *                                             groups here, the current group of the context
-     *                                             will be used.
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Use {@link Context\ExecutionContextInterface::getValidator()}
-     *             instead.
-     */
-    public function validateValue($value, $constraints, $subPath = '', $groups = null);
-
-    /**
-     * Returns the violations generated by the validator so far.
-     *
-     * @return ConstraintViolationListInterface The constraint violation list.
-     */
-    public function getViolations();
-
-    /**
-     * Returns the value at which validation was started in the object graph.
-     *
-     * The validator, when given an object, traverses the properties and
-     * related objects and their properties. The root of the validation is the
-     * object from which the traversal started.
-     *
-     * The current value is returned by {@link getValue}.
-     *
-     * @return mixed The root value of the validation.
-     */
-    public function getRoot();
-
-    /**
-     * Returns the value that the validator is currently validating.
-     *
-     * If you want to retrieve the object that was originally passed to the
-     * validator, use {@link getRoot}.
-     *
-     * @return mixed The currently validated value.
-     */
-    public function getValue();
-
-    /**
-     * Returns the metadata for the currently validated value.
-     *
-     * With the core implementation, this method returns a
-     * {@link Mapping\ClassMetadata} instance if the current value is an object,
-     * a {@link Mapping\PropertyMetadata} instance if the current value is
-     * the value of a property and a {@link Mapping\GetterMetadata} instance if
-     * the validated value is the result of a getter method.
-     *
-     * If the validated value is neither of these, for example if the validator
-     * has been called with a plain value and constraint, this method returns
-     * null.
-     *
-     * @return MetadataInterface|null The metadata of the currently validated
-     *                                value.
-     */
-    public function getMetadata();
-
-    /**
-     * Returns the used metadata factory.
-     *
-     * @return MetadataFactoryInterface The metadata factory.
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Use {@link Context\ExecutionContextInterface::getValidator()}
-     *             instead and call
-     *             {@link Validator\ValidatorInterface::getMetadataFor()} or
-     *             {@link Validator\ValidatorInterface::hasMetadataFor()} there.
-     */
-    public function getMetadataFactory();
-
-    /**
-     * Returns the validation group that is currently being validated.
-     *
-     * @return string The current validation group.
-     */
-    public function getGroup();
-
-    /**
-     * Returns the class name of the current node.
-     *
-     * If the metadata of the current node does not implement
-     * {@link ClassBasedInterface} or if no metadata is available for the
-     * current node, this method returns null.
-     *
-     * @return string|null The class name or null, if no class name could be found.
-     */
-    public function getClassName();
-
-    /**
-     * Returns the property name of the current node.
-     *
-     * If the metadata of the current node does not implement
-     * {@link PropertyMetadataInterface} or if no metadata is available for the
-     * current node, this method returns null.
-     *
-     * @return string|null The property name or null, if no property name could be found.
-     */
-    public function getPropertyName();
-
-    /**
-     * Returns the property path to the value that the validator is currently
-     * validating.
-     *
-     * For example, take the following object graph:
-     *
-     * <pre>
-     * (Person)---($address: Address)---($street: string)
-     * </pre>
-     *
-     * When the <tt>Person</tt> instance is passed to the validator, the
-     * property path is initially empty. When the <tt>$address</tt> property
-     * of that person is validated, the property path is "address". When
-     * the <tt>$street</tt> property of the related <tt>Address</tt> instance
-     * is validated, the property path is "address.street".
-     *
-     * Properties of objects are prefixed with a dot in the property path.
-     * Indices of arrays or objects implementing the {@link \ArrayAccess}
-     * interface are enclosed in brackets. For example, if the property in
-     * the previous example is <tt>$addresses</tt> and contains an array
-     * of <tt>Address</tt> instance, the property path generated for the
-     * <tt>$street</tt> property of one of these addresses is for example
-     * "addresses[0].street".
-     *
-     * @param string $subPath Optional. The suffix appended to the current
-     *                        property path.
-     *
-     * @return string The current property path. The result may be an empty
-     *                string if the validator is currently validating the
-     *                root value of the validation graph.
-     */
-    public function getPropertyPath($subPath = '');
-}
diff --git a/vendor/symfony/validator/GlobalExecutionContextInterface.php b/vendor/symfony/validator/GlobalExecutionContextInterface.php
deleted file mode 100644
index 5c646f2..0000000
--- a/vendor/symfony/validator/GlobalExecutionContextInterface.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?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;
-
-/**
- * Stores the node-independent state of a validation run.
- *
- * When the validator validates a graph of objects, it uses two classes to
- * store the state during the validation:
- *
- * <ul>
- * <li>For each node in the validation graph (objects, properties, getters) the
- * validator creates an instance of {@link ExecutionContextInterface} that
- * stores the information about that node.</li>
- * <li>One single <tt>GlobalExecutionContextInterface</tt> stores the state
- * that is independent of the current node.</li>
- * </ul>
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link Context\ExecutionContextInterface} instead.
- */
-interface GlobalExecutionContextInterface
-{
-    /**
-     * Returns the violations generated by the validator so far.
-     *
-     * @return ConstraintViolationListInterface A list of constraint violations.
-     */
-    public function getViolations();
-
-    /**
-     * Returns the value at which validation was started in the object graph.
-     *
-     * @return mixed The root value.
-     *
-     * @see ExecutionContextInterface::getRoot()
-     */
-    public function getRoot();
-
-    /**
-     * Returns the visitor instance used to validate the object graph nodes.
-     *
-     * @return ValidationVisitorInterface The validation visitor.
-     */
-    public function getVisitor();
-
-    /**
-     * Returns the factory for constraint validators.
-     *
-     * @return ConstraintValidatorFactoryInterface The constraint validator factory.
-     */
-    public function getValidatorFactory();
-
-    /**
-     * Returns the factory for validation metadata objects.
-     *
-     * @return MetadataFactoryInterface The metadata factory.
-     */
-    public function getMetadataFactory();
-}
diff --git a/vendor/symfony/validator/GroupSequenceProviderInterface.php b/vendor/symfony/validator/GroupSequenceProviderInterface.php
deleted file mode 100644
index 62e8a5e..0000000
--- a/vendor/symfony/validator/GroupSequenceProviderInterface.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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;
-
-/**
- * Defines the interface for a group sequence provider.
- */
-interface GroupSequenceProviderInterface
-{
-    /**
-     * Returns which validation groups should be used for a certain state
-     * of the object.
-     *
-     * @return array An array of validation groups
-     */
-    public function getGroupSequence();
-}
diff --git a/vendor/symfony/validator/LICENSE b/vendor/symfony/validator/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/validator/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/validator/Mapping/BlackholeMetadataFactory.php b/vendor/symfony/validator/Mapping/BlackholeMetadataFactory.php
deleted file mode 100644
index 01b8013..0000000
--- a/vendor/symfony/validator/Mapping/BlackholeMetadataFactory.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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\Mapping;
-
-@trigger_error('The '.__NAMESPACE__.'\BlackholeMetadataFactory class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Validator\Mapping\Factory\BlackHoleMetadataFactory class instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Validator\Mapping\Factory\BlackHoleMetadataFactory as MappingBlackHoleMetadataFactory;
-
-/**
- * Alias of {@link Factory\BlackHoleMetadataFactory}.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link Factory\BlackHoleMetadataFactory} instead.
- */
-class BlackholeMetadataFactory extends MappingBlackHoleMetadataFactory
-{
-}
diff --git a/vendor/symfony/validator/Mapping/Cache/ApcCache.php b/vendor/symfony/validator/Mapping/Cache/ApcCache.php
deleted file mode 100644
index 63fc8ac..0000000
--- a/vendor/symfony/validator/Mapping/Cache/ApcCache.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?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\Mapping\Cache;
-
-@trigger_error('The '.__NAMESPACE__.'\ApcCache class is deprecated since version 2.5 and will be removed in 3.0. Use DoctrineCache with the Doctrine\Common\Cache\ApcCache class instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-
-/**
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use DoctrineCache with \Doctrine\Common\Cache\ApcCache instead.
- */
-class ApcCache implements CacheInterface
-{
-    private $prefix;
-
-    public function __construct($prefix)
-    {
-        if (!extension_loaded('apc')) {
-            throw new \RuntimeException('Unable to use ApcCache to cache validator mappings as APC is not enabled.');
-        }
-
-        $this->prefix = $prefix;
-    }
-
-    public function has($class)
-    {
-        if (!function_exists('apc_exists')) {
-            $exists = false;
-
-            apc_fetch($this->prefix.$class, $exists);
-
-            return $exists;
-        }
-
-        return apc_exists($this->prefix.$class);
-    }
-
-    public function read($class)
-    {
-        return apc_fetch($this->prefix.$class);
-    }
-
-    public function write(ClassMetadata $metadata)
-    {
-        apc_store($this->prefix.$metadata->getClassName(), $metadata);
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Cache/CacheInterface.php b/vendor/symfony/validator/Mapping/Cache/CacheInterface.php
deleted file mode 100644
index e8047c6..0000000
--- a/vendor/symfony/validator/Mapping/Cache/CacheInterface.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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\Mapping\Cache;
-
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-
-/**
- * Persists ClassMetadata instances in a cache.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface CacheInterface
-{
-    /**
-     * Returns whether metadata for the given class exists in the cache.
-     *
-     * @param string $class
-     */
-    public function has($class);
-
-    /**
-     * Returns the metadata for the given class from the cache.
-     *
-     * @param string $class Class Name
-     *
-     * @return ClassMetadata|false A ClassMetadata instance or false on miss
-     */
-    public function read($class);
-
-    /**
-     * Stores a class metadata in the cache.
-     *
-     * @param ClassMetadata $metadata A Class Metadata
-     */
-    public function write(ClassMetadata $metadata);
-}
diff --git a/vendor/symfony/validator/Mapping/Cache/DoctrineCache.php b/vendor/symfony/validator/Mapping/Cache/DoctrineCache.php
deleted file mode 100644
index 6dd5447..0000000
--- a/vendor/symfony/validator/Mapping/Cache/DoctrineCache.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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\Mapping\Cache;
-
-use Doctrine\Common\Cache\Cache;
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-
-/**
- * Adapts a Doctrine cache to a CacheInterface.
- *
- * @author Florian Voutzinos <florian@voutzinos.com>
- */
-final class DoctrineCache implements CacheInterface
-{
-    private $cache;
-
-    /**
-     * Creates a new Doctrine cache.
-     *
-     * @param Cache $cache The cache to adapt
-     */
-    public function __construct(Cache $cache)
-    {
-        $this->cache = $cache;
-    }
-
-    /**
-     * Sets the cache to adapt.
-     *
-     * @param Cache $cache The cache to adapt
-     */
-    public function setCache(Cache $cache)
-    {
-        $this->cache = $cache;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function has($class)
-    {
-        return $this->cache->contains($class);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($class)
-    {
-        return $this->cache->fetch($class);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write(ClassMetadata $metadata)
-    {
-        $this->cache->save($metadata->getClassName(), $metadata);
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/CascadingStrategy.php b/vendor/symfony/validator/Mapping/CascadingStrategy.php
deleted file mode 100644
index 2b97bdd..0000000
--- a/vendor/symfony/validator/Mapping/CascadingStrategy.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?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\Mapping;
-
-/**
- * Specifies whether an object should be cascaded.
- *
- * Cascading is relevant for any node type but class nodes. If such a node
- * contains an object of value, and if cascading is enabled, then the node
- * traverser will try to find class metadata for that object and validate the
- * object against that metadata.
- *
- * If no metadata is found for a cascaded object, and if that object implements
- * {@link \Traversable}, the node traverser will iterate over the object and
- * cascade each object or collection contained within, unless iteration is
- * prohibited by the specified {@link TraversalStrategy}.
- *
- * Although the constants currently represent a boolean switch, they are
- * implemented as bit mask in order to allow future extensions.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see TraversalStrategy
- */
-class CascadingStrategy
-{
-    /**
-     * Specifies that a node should not be cascaded.
-     */
-    const NONE = 1;
-
-    /**
-     * Specifies that a node should be cascaded.
-     */
-    const CASCADE = 2;
-
-    /**
-     * Not instantiable.
-     */
-    private function __construct()
-    {
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/ClassMetadata.php b/vendor/symfony/validator/Mapping/ClassMetadata.php
deleted file mode 100644
index 3f4f51b..0000000
--- a/vendor/symfony/validator/Mapping/ClassMetadata.php
+++ /dev/null
@@ -1,556 +0,0 @@
-<?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\Mapping;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\Constraints\GroupSequence;
-use Symfony\Component\Validator\Constraints\Traverse;
-use Symfony\Component\Validator\Constraints\Valid;
-use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
-use Symfony\Component\Validator\Exception\GroupDefinitionException;
-use Symfony\Component\Validator\ValidationVisitorInterface;
-
-/**
- * Default implementation of {@link ClassMetadataInterface}.
- *
- * This class supports serialization and cloning.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ClassMetadata extends ElementMetadata implements ClassMetadataInterface
-{
-    /**
-     * @var string
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getClassName()} instead.
-     */
-    public $name;
-
-    /**
-     * @var string
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getDefaultGroup()} instead.
-     */
-    public $defaultGroup;
-
-    /**
-     * @var MemberMetadata[]
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getPropertyMetadata()} instead.
-     */
-    public $members = array();
-
-    /**
-     * @var PropertyMetadata[]
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getPropertyMetadata()} instead.
-     */
-    public $properties = array();
-
-    /**
-     * @var GetterMetadata[]
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getPropertyMetadata()} instead.
-     */
-    public $getters = array();
-
-    /**
-     * @var array
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getGroupSequence()} instead.
-     */
-    public $groupSequence = array();
-
-    /**
-     * @var bool
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link isGroupSequenceProvider()} instead.
-     */
-    public $groupSequenceProvider = false;
-
-    /**
-     * The strategy for traversing traversable objects.
-     *
-     * By default, only instances of {@link \Traversable} are traversed.
-     *
-     * @var int
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getTraversalStrategy()} instead.
-     */
-    public $traversalStrategy = TraversalStrategy::IMPLICIT;
-
-    /**
-     * @var \ReflectionClass
-     */
-    private $reflClass;
-
-    /**
-     * Constructs a metadata for the given class.
-     *
-     * @param string $class
-     */
-    public function __construct($class)
-    {
-        $this->name = $class;
-        // class name without namespace
-        if (false !== $nsSep = strrpos($class, '\\')) {
-            $this->defaultGroup = substr($class, $nsSep + 1);
-        } else {
-            $this->defaultGroup = $class;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function accept(ValidationVisitorInterface $visitor, $value, $group, $propertyPath, $propagatedGroup = null)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        if (null === $propagatedGroup && Constraint::DEFAULT_GROUP === $group
-                && ($this->hasGroupSequence() || $this->isGroupSequenceProvider())) {
-            if ($this->hasGroupSequence()) {
-                $groups = $this->getGroupSequence()->groups;
-            } else {
-                $groups = $value->getGroupSequence();
-            }
-
-            foreach ($groups as $group) {
-                $this->accept($visitor, $value, $group, $propertyPath, Constraint::DEFAULT_GROUP);
-
-                if (count($visitor->getViolations()) > 0) {
-                    break;
-                }
-            }
-
-            return;
-        }
-
-        $visitor->visit($this, $value, $group, $propertyPath);
-
-        if (null !== $value) {
-            $pathPrefix = empty($propertyPath) ? '' : $propertyPath.'.';
-
-            foreach ($this->getConstrainedProperties() as $property) {
-                foreach ($this->getPropertyMetadata($property) as $member) {
-                    $member->accept($visitor, $member->getPropertyValue($value), $group, $pathPrefix.$property, $propagatedGroup);
-                }
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __sleep()
-    {
-        $parentProperties = parent::__sleep();
-
-        // Don't store the cascading strategy. Classes never cascade.
-        unset($parentProperties[array_search('cascadingStrategy', $parentProperties)]);
-
-        return array_merge($parentProperties, array(
-            'getters',
-            'groupSequence',
-            'groupSequenceProvider',
-            'members',
-            'name',
-            'properties',
-            'defaultGroup',
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getClassName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Returns the name of the default group for this class.
-     *
-     * For each class, the group "Default" is an alias for the group
-     * "<ClassName>", where <ClassName> is the non-namespaced name of the
-     * class. All constraints implicitly or explicitly assigned to group
-     * "Default" belong to both of these groups, unless the class defines
-     * a group sequence.
-     *
-     * If a class defines a group sequence, validating the class in "Default"
-     * will validate the group sequence. The constraints assigned to "Default"
-     * can still be validated by validating the class in "<ClassName>".
-     *
-     * @return string The name of the default group
-     */
-    public function getDefaultGroup()
-    {
-        return $this->defaultGroup;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addConstraint(Constraint $constraint)
-    {
-        if (!in_array(Constraint::CLASS_CONSTRAINT, (array) $constraint->getTargets())) {
-            throw new ConstraintDefinitionException(sprintf(
-                'The constraint "%s" cannot be put on classes.',
-                get_class($constraint)
-            ));
-        }
-
-        if ($constraint instanceof Valid) {
-            throw new ConstraintDefinitionException(sprintf(
-                'The constraint "%s" cannot be put on classes.',
-                get_class($constraint)
-            ));
-        }
-
-        if ($constraint instanceof Traverse) {
-            if ($constraint->traverse) {
-                // If traverse is true, traversal should be explicitly enabled
-                $this->traversalStrategy = TraversalStrategy::TRAVERSE;
-            } else {
-                // If traverse is false, traversal should be explicitly disabled
-                $this->traversalStrategy = TraversalStrategy::NONE;
-            }
-
-            // The constraint is not added
-            return $this;
-        }
-
-        $constraint->addImplicitGroupName($this->getDefaultGroup());
-
-        parent::addConstraint($constraint);
-
-        return $this;
-    }
-
-    /**
-     * Adds a constraint to the given property.
-     *
-     * @param string     $property   The name of the property
-     * @param Constraint $constraint The constraint
-     *
-     * @return ClassMetadata This object
-     */
-    public function addPropertyConstraint($property, Constraint $constraint)
-    {
-        if (!isset($this->properties[$property])) {
-            $this->properties[$property] = new PropertyMetadata($this->getClassName(), $property);
-
-            $this->addPropertyMetadata($this->properties[$property]);
-        }
-
-        $constraint->addImplicitGroupName($this->getDefaultGroup());
-
-        $this->properties[$property]->addConstraint($constraint);
-
-        return $this;
-    }
-
-    /**
-     * @param string       $property
-     * @param Constraint[] $constraints
-     *
-     * @return ClassMetadata
-     */
-    public function addPropertyConstraints($property, array $constraints)
-    {
-        foreach ($constraints as $constraint) {
-            $this->addPropertyConstraint($property, $constraint);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Adds a constraint to the getter of the given property.
-     *
-     * The name of the getter is assumed to be the name of the property with an
-     * uppercased first letter and either the prefix "get" or "is".
-     *
-     * @param string     $property   The name of the property
-     * @param Constraint $constraint The constraint
-     *
-     * @return ClassMetadata This object
-     */
-    public function addGetterConstraint($property, Constraint $constraint)
-    {
-        if (!isset($this->getters[$property])) {
-            $this->getters[$property] = new GetterMetadata($this->getClassName(), $property);
-
-            $this->addPropertyMetadata($this->getters[$property]);
-        }
-
-        $constraint->addImplicitGroupName($this->getDefaultGroup());
-
-        $this->getters[$property]->addConstraint($constraint);
-
-        return $this;
-    }
-
-    /**
-     * @param string       $property
-     * @param Constraint[] $constraints
-     *
-     * @return ClassMetadata
-     */
-    public function addGetterConstraints($property, array $constraints)
-    {
-        foreach ($constraints as $constraint) {
-            $this->addGetterConstraint($property, $constraint);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Merges the constraints of the given metadata into this object.
-     *
-     * @param ClassMetadata $source The source metadata
-     */
-    public function mergeConstraints(ClassMetadata $source)
-    {
-        foreach ($source->getConstraints() as $constraint) {
-            $this->addConstraint(clone $constraint);
-        }
-
-        foreach ($source->getConstrainedProperties() as $property) {
-            foreach ($source->getPropertyMetadata($property) as $member) {
-                $member = clone $member;
-
-                foreach ($member->getConstraints() as $constraint) {
-                    $constraint->addImplicitGroupName($this->getDefaultGroup());
-                }
-
-                $this->addPropertyMetadata($member);
-
-                if ($member instanceof MemberMetadata && !$member->isPrivate($this->name)) {
-                    $property = $member->getPropertyName();
-
-                    if ($member instanceof PropertyMetadata && !isset($this->properties[$property])) {
-                        $this->properties[$property] = $member;
-                    } elseif ($member instanceof GetterMetadata && !isset($this->getters[$property])) {
-                        $this->getters[$property] = $member;
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Adds a member metadata.
-     *
-     * @param MemberMetadata $metadata
-     *
-     * @deprecated since version 2.6, to be removed in 3.0.
-     */
-    protected function addMemberMetadata(MemberMetadata $metadata)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the addPropertyMetadata() method instead.', E_USER_DEPRECATED);
-
-        $this->addPropertyMetadata($metadata);
-    }
-
-    /**
-     * Returns true if metadatas of members is present for the given property.
-     *
-     * @param string $property The name of the property
-     *
-     * @return bool
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use {@link hasPropertyMetadata} instead.
-     */
-    public function hasMemberMetadatas($property)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the hasPropertyMetadata() method instead.', E_USER_DEPRECATED);
-
-        return $this->hasPropertyMetadata($property);
-    }
-
-    /**
-     * Returns all metadatas of members describing the given property.
-     *
-     * @param string $property The name of the property
-     *
-     * @return MemberMetadata[] An array of MemberMetadata
-     *
-     * @deprecated since version 2.6, to be removed in 3.0. Use {@link getPropertyMetadata} instead.
-     */
-    public function getMemberMetadatas($property)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the getPropertyMetadata() method instead.', E_USER_DEPRECATED);
-
-        return $this->getPropertyMetadata($property);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasPropertyMetadata($property)
-    {
-        return array_key_exists($property, $this->members);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPropertyMetadata($property)
-    {
-        if (!isset($this->members[$property])) {
-            return array();
-        }
-
-        return $this->members[$property];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getConstrainedProperties()
-    {
-        return array_keys($this->members);
-    }
-
-    /**
-     * Sets the default group sequence for this class.
-     *
-     * @param array $groupSequence An array of group names
-     *
-     * @return ClassMetadata
-     *
-     * @throws GroupDefinitionException
-     */
-    public function setGroupSequence($groupSequence)
-    {
-        if ($this->isGroupSequenceProvider()) {
-            throw new GroupDefinitionException('Defining a static group sequence is not allowed with a group sequence provider');
-        }
-
-        if (is_array($groupSequence)) {
-            $groupSequence = new GroupSequence($groupSequence);
-        }
-
-        if (in_array(Constraint::DEFAULT_GROUP, $groupSequence->groups, true)) {
-            throw new GroupDefinitionException(sprintf('The group "%s" is not allowed in group sequences', Constraint::DEFAULT_GROUP));
-        }
-
-        if (!in_array($this->getDefaultGroup(), $groupSequence->groups, true)) {
-            throw new GroupDefinitionException(sprintf('The group "%s" is missing in the group sequence', $this->getDefaultGroup()));
-        }
-
-        $this->groupSequence = $groupSequence;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasGroupSequence()
-    {
-        return $this->groupSequence && count($this->groupSequence->groups) > 0;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getGroupSequence()
-    {
-        return $this->groupSequence;
-    }
-
-    /**
-     * Returns a ReflectionClass instance for this class.
-     *
-     * @return \ReflectionClass
-     */
-    public function getReflectionClass()
-    {
-        if (!$this->reflClass) {
-            $this->reflClass = new \ReflectionClass($this->getClassName());
-        }
-
-        return $this->reflClass;
-    }
-
-    /**
-     * Sets whether a group sequence provider should be used.
-     *
-     * @param bool $active
-     *
-     * @throws GroupDefinitionException
-     */
-    public function setGroupSequenceProvider($active)
-    {
-        if ($this->hasGroupSequence()) {
-            throw new GroupDefinitionException('Defining a group sequence provider is not allowed with a static group sequence');
-        }
-
-        if (!$this->getReflectionClass()->implementsInterface('Symfony\Component\Validator\GroupSequenceProviderInterface')) {
-            throw new GroupDefinitionException(sprintf('Class "%s" must implement GroupSequenceProviderInterface', $this->name));
-        }
-
-        $this->groupSequenceProvider = $active;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isGroupSequenceProvider()
-    {
-        return $this->groupSequenceProvider;
-    }
-
-    /**
-     * Class nodes are never cascaded.
-     *
-     * {@inheritdoc}
-     */
-    public function getCascadingStrategy()
-    {
-        return CascadingStrategy::NONE;
-    }
-
-    /**
-     * Adds a property metadata.
-     *
-     * @param PropertyMetadataInterface $metadata
-     */
-    private function addPropertyMetadata(PropertyMetadataInterface $metadata)
-    {
-        $property = $metadata->getPropertyName();
-
-        $this->members[$property][] = $metadata;
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/ClassMetadataFactory.php b/vendor/symfony/validator/Mapping/ClassMetadataFactory.php
deleted file mode 100644
index 4069b3f..0000000
--- a/vendor/symfony/validator/Mapping/ClassMetadataFactory.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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\Mapping;
-
-@trigger_error('The '.__NAMESPACE__.'\ClassMetadataFactory class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory class instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory;
-
-/**
- * Alias of {@link LazyLoadingMetadataFactory}.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link LazyLoadingMetadataFactory} instead.
- */
-class ClassMetadataFactory extends LazyLoadingMetadataFactory
-{
-}
diff --git a/vendor/symfony/validator/Mapping/ClassMetadataInterface.php b/vendor/symfony/validator/Mapping/ClassMetadataInterface.php
deleted file mode 100644
index 577440d..0000000
--- a/vendor/symfony/validator/Mapping/ClassMetadataInterface.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?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\Mapping;
-
-use Symfony\Component\Validator\ClassBasedInterface;
-use Symfony\Component\Validator\PropertyMetadataContainerInterface as LegacyPropertyMetadataContainerInterface;
-
-/**
- * Stores all metadata needed for validating objects of specific class.
- *
- * Most importantly, the metadata stores the constraints against which an object
- * and its properties should be validated.
- *
- * Additionally, the metadata stores whether the "Default" group is overridden
- * by a group sequence for that class and whether instances of that class
- * should be traversed or not.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see MetadataInterface
- * @see \Symfony\Component\Validator\Constraints\GroupSequence
- * @see \Symfony\Component\Validator\GroupSequenceProviderInterface
- * @see TraversalStrategy
- */
-interface ClassMetadataInterface extends MetadataInterface, LegacyPropertyMetadataContainerInterface, ClassBasedInterface
-{
-    /**
-     * Returns the names of all constrained properties.
-     *
-     * @return string[] A list of property names
-     */
-    public function getConstrainedProperties();
-
-    /**
-     * Returns whether the "Default" group is overridden by a group sequence.
-     *
-     * If it is, you can access the group sequence with {@link getGroupSequence()}.
-     *
-     * @return bool Returns true if the "Default" group is overridden
-     *
-     * @see \Symfony\Component\Validator\Constraints\GroupSequence
-     */
-    public function hasGroupSequence();
-
-    /**
-     * Returns the group sequence that overrides the "Default" group for this
-     * class.
-     *
-     * @return \Symfony\Component\Validator\Constraints\GroupSequence|null The group sequence or null
-     *
-     * @see \Symfony\Component\Validator\Constraints\GroupSequence
-     */
-    public function getGroupSequence();
-
-    /**
-     * Returns whether the "Default" group is overridden by a dynamic group
-     * sequence obtained by the validated objects.
-     *
-     * If this method returns true, the class must implement
-     * {@link \Symfony\Component\Validator\GroupSequenceProviderInterface}.
-     * This interface will be used to obtain the group sequence when an object
-     * of this class is validated.
-     *
-     * @return bool Returns true if the "Default" group is overridden by
-     *              a dynamic group sequence
-     *
-     * @see \Symfony\Component\Validator\GroupSequenceProviderInterface
-     */
-    public function isGroupSequenceProvider();
-}
diff --git a/vendor/symfony/validator/Mapping/ElementMetadata.php b/vendor/symfony/validator/Mapping/ElementMetadata.php
deleted file mode 100644
index 69fe8bf..0000000
--- a/vendor/symfony/validator/Mapping/ElementMetadata.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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\Mapping;
-
-/**
- * Contains the metadata of a structural element.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Extend {@link GenericMetadata} instead.
- */
-abstract class ElementMetadata extends GenericMetadata
-{
-    public function __construct()
-    {
-        if (!$this instanceof MemberMetadata && !$this instanceof ClassMetadata) {
-            @trigger_error('The '.__CLASS__.' class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Validator\Mapping\GenericMetadata class instead.', E_USER_DEPRECATED);
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Factory/BlackHoleMetadataFactory.php b/vendor/symfony/validator/Mapping/Factory/BlackHoleMetadataFactory.php
deleted file mode 100644
index 5b38d0c..0000000
--- a/vendor/symfony/validator/Mapping/Factory/BlackHoleMetadataFactory.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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\Mapping\Factory;
-
-/**
- * Metadata factory that does not store metadata.
- *
- * This implementation is useful if you want to validate values against
- * constraints only and you don't need to add constraints to classes and
- * properties.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class BlackHoleMetadataFactory implements MetadataFactoryInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFor($value)
-    {
-        throw new \LogicException('This class does not support metadata.');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasMetadataFor($value)
-    {
-        return false;
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Factory/LazyLoadingMetadataFactory.php b/vendor/symfony/validator/Mapping/Factory/LazyLoadingMetadataFactory.php
deleted file mode 100644
index 6c5c277..0000000
--- a/vendor/symfony/validator/Mapping/Factory/LazyLoadingMetadataFactory.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?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\Mapping\Factory;
-
-use Symfony\Component\Validator\Exception\NoSuchMetadataException;
-use Symfony\Component\Validator\Mapping\Cache\CacheInterface;
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-use Symfony\Component\Validator\Mapping\ClassMetadataInterface;
-use Symfony\Component\Validator\Mapping\Loader\LoaderChain;
-use Symfony\Component\Validator\Mapping\Loader\LoaderInterface;
-
-/**
- * Creates new {@link ClassMetadataInterface} instances.
- *
- * Whenever {@link getMetadataFor()} is called for the first time with a given
- * class name or object of that class, a new metadata instance is created and
- * returned. On subsequent requests for the same class, the same metadata
- * instance will be returned.
- *
- * You can optionally pass a {@link LoaderInterface} instance to the constructor.
- * Whenever a new metadata instance is created, it is passed to the loader,
- * which can configure the metadata based on configuration loaded from the
- * filesystem or a database. If you want to use multiple loaders, wrap them in a
- * {@link LoaderChain}.
- *
- * You can also optionally pass a {@link CacheInterface} instance to the
- * constructor. This cache will be used for persisting the generated metadata
- * between multiple PHP requests.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class LazyLoadingMetadataFactory implements MetadataFactoryInterface
-{
-    /**
-     * The loader for loading the class metadata.
-     *
-     * @var LoaderInterface|null
-     */
-    protected $loader;
-
-    /**
-     * The cache for caching class metadata.
-     *
-     * @var CacheInterface|null
-     */
-    protected $cache;
-
-    /**
-     * The loaded metadata, indexed by class name.
-     *
-     * @var ClassMetadata[]
-     */
-    protected $loadedClasses = array();
-
-    /**
-     * Creates a new metadata factory.
-     *
-     * @param LoaderInterface|null $loader The loader for configuring new metadata
-     * @param CacheInterface|null  $cache  The cache for persisting metadata
-     *                                     between multiple PHP requests
-     */
-    public function __construct(LoaderInterface $loader = null, CacheInterface $cache = null)
-    {
-        $this->loader = $loader;
-        $this->cache = $cache;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * If the method was called with the same class name (or an object of that
-     * class) before, the same metadata instance is returned.
-     *
-     * If the factory was configured with a cache, this method will first look
-     * for an existing metadata instance in the cache. If an existing instance
-     * is found, it will be returned without further ado.
-     *
-     * Otherwise, a new metadata instance is created. If the factory was
-     * configured with a loader, the metadata is passed to the
-     * {@link LoaderInterface::loadClassMetadata()} method for further
-     * configuration. At last, the new object is returned.
-     */
-    public function getMetadataFor($value)
-    {
-        if (!is_object($value) && !is_string($value)) {
-            throw new NoSuchMetadataException(sprintf('Cannot create metadata for non-objects. Got: %s', gettype($value)));
-        }
-
-        $class = ltrim(is_object($value) ? get_class($value) : $value, '\\');
-
-        if (isset($this->loadedClasses[$class])) {
-            return $this->loadedClasses[$class];
-        }
-
-        if (null !== $this->cache && false !== ($this->loadedClasses[$class] = $this->cache->read($class))) {
-            return $this->loadedClasses[$class];
-        }
-
-        if (!class_exists($class) && !interface_exists($class)) {
-            throw new NoSuchMetadataException(sprintf('The class or interface "%s" does not exist.', $class));
-        }
-
-        $metadata = new ClassMetadata($class);
-
-        // Include constraints from the parent class
-        if ($parent = $metadata->getReflectionClass()->getParentClass()) {
-            $metadata->mergeConstraints($this->getMetadataFor($parent->name));
-        }
-
-        // Include constraints from all implemented interfaces
-        foreach ($metadata->getReflectionClass()->getInterfaces() as $interface) {
-            if ('Symfony\Component\Validator\GroupSequenceProviderInterface' === $interface->name) {
-                continue;
-            }
-            $metadata->mergeConstraints($this->getMetadataFor($interface->name));
-        }
-
-        if (null !== $this->loader) {
-            $this->loader->loadClassMetadata($metadata);
-        }
-
-        if (null !== $this->cache) {
-            $this->cache->write($metadata);
-        }
-
-        return $this->loadedClasses[$class] = $metadata;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasMetadataFor($value)
-    {
-        if (!is_object($value) && !is_string($value)) {
-            return false;
-        }
-
-        $class = ltrim(is_object($value) ? get_class($value) : $value, '\\');
-
-        if (class_exists($class) || interface_exists($class)) {
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Factory/MetadataFactoryInterface.php b/vendor/symfony/validator/Mapping/Factory/MetadataFactoryInterface.php
deleted file mode 100644
index 6e55e77..0000000
--- a/vendor/symfony/validator/Mapping/Factory/MetadataFactoryInterface.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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\Mapping\Factory;
-
-use Symfony\Component\Validator\MetadataFactoryInterface as LegacyMetadataFactoryInterface;
-
-/**
- * Returns {@link \Symfony\Component\Validator\Mapping\MetadataInterface} instances for values.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface MetadataFactoryInterface extends LegacyMetadataFactoryInterface
-{
-}
diff --git a/vendor/symfony/validator/Mapping/GenericMetadata.php b/vendor/symfony/validator/Mapping/GenericMetadata.php
deleted file mode 100644
index 3459074..0000000
--- a/vendor/symfony/validator/Mapping/GenericMetadata.php
+++ /dev/null
@@ -1,245 +0,0 @@
-<?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\Mapping;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\Constraints\Traverse;
-use Symfony\Component\Validator\Constraints\Valid;
-use Symfony\Component\Validator\Exception\BadMethodCallException;
-use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
-use Symfony\Component\Validator\ValidationVisitorInterface;
-
-/**
- * A generic container of {@link Constraint} objects.
- *
- * This class supports serialization and cloning.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class GenericMetadata implements MetadataInterface
-{
-    /**
-     * @var Constraint[]
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getConstraints()} and {@link findConstraints()} instead.
-     */
-    public $constraints = array();
-
-    /**
-     * @var array
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link findConstraints()} instead.
-     */
-    public $constraintsByGroup = array();
-
-    /**
-     * The strategy for cascading objects.
-     *
-     * By default, objects are not cascaded.
-     *
-     * @var int
-     *
-     * @see CascadingStrategy
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getCascadingStrategy()} instead.
-     */
-    public $cascadingStrategy = CascadingStrategy::NONE;
-
-    /**
-     * The strategy for traversing traversable objects.
-     *
-     * By default, traversable objects are not traversed.
-     *
-     * @var int
-     *
-     * @see TraversalStrategy
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getTraversalStrategy()} instead.
-     */
-    public $traversalStrategy = TraversalStrategy::NONE;
-
-    /**
-     * Returns the names of the properties that should be serialized.
-     *
-     * @return string[]
-     */
-    public function __sleep()
-    {
-        return array(
-            'constraints',
-            'constraintsByGroup',
-            'cascadingStrategy',
-            'traversalStrategy',
-        );
-    }
-
-    /**
-     * Clones this object.
-     */
-    public function __clone()
-    {
-        $constraints = $this->constraints;
-
-        $this->constraints = array();
-        $this->constraintsByGroup = array();
-
-        foreach ($constraints as $constraint) {
-            $this->addConstraint(clone $constraint);
-        }
-    }
-
-    /**
-     * Adds a constraint.
-     *
-     * If the constraint {@link Valid} is added, the cascading strategy will be
-     * changed to {@link CascadingStrategy::CASCADE}. Depending on the
-     * properties $traverse and $deep of that constraint, the traversal strategy
-     * will be set to one of the following:
-     *
-     *  - {@link TraversalStrategy::IMPLICIT} if $traverse is enabled and $deep
-     *    is enabled
-     *  - {@link TraversalStrategy::IMPLICIT} | {@link TraversalStrategy::STOP_RECURSION}
-     *    if $traverse is enabled, but $deep is disabled
-     *  - {@link TraversalStrategy::NONE} if $traverse is disabled
-     *
-     * @param Constraint $constraint The constraint to add
-     *
-     * @return GenericMetadata This object
-     *
-     * @throws ConstraintDefinitionException When trying to add the
-     *                                       {@link Traverse} constraint
-     */
-    public function addConstraint(Constraint $constraint)
-    {
-        if ($constraint instanceof Traverse) {
-            throw new ConstraintDefinitionException(sprintf(
-                'The constraint "%s" can only be put on classes. Please use '.
-                '"Symfony\Component\Validator\Constraints\Valid" instead.',
-                get_class($constraint)
-            ));
-        }
-
-        if ($constraint instanceof Valid) {
-            $this->cascadingStrategy = CascadingStrategy::CASCADE;
-
-            if ($constraint->traverse) {
-                // Traverse unless the value is not traversable
-                $this->traversalStrategy = TraversalStrategy::IMPLICIT;
-
-                if (!$constraint->deep) {
-                    $this->traversalStrategy |= TraversalStrategy::STOP_RECURSION;
-                }
-            } else {
-                $this->traversalStrategy = TraversalStrategy::NONE;
-            }
-
-            return $this;
-        }
-
-        $this->constraints[] = $constraint;
-
-        foreach ($constraint->groups as $group) {
-            $this->constraintsByGroup[$group][] = $constraint;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Adds an list of constraints.
-     *
-     * @param Constraint[] $constraints The constraints to add
-     *
-     * @return GenericMetadata This object
-     */
-    public function addConstraints(array $constraints)
-    {
-        foreach ($constraints as $constraint) {
-            $this->addConstraint($constraint);
-        }
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getConstraints()
-    {
-        return $this->constraints;
-    }
-
-    /**
-     * Returns whether this element has any constraints.
-     *
-     * @return bool
-     */
-    public function hasConstraints()
-    {
-        return count($this->constraints) > 0;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * Aware of the global group (* group).
-     */
-    public function findConstraints($group)
-    {
-        return isset($this->constraintsByGroup[$group])
-            ? $this->constraintsByGroup[$group]
-            : array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCascadingStrategy()
-    {
-        return $this->cascadingStrategy;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTraversalStrategy()
-    {
-        return $this->traversalStrategy;
-    }
-
-    /**
-     * Exists for compatibility with the deprecated
-     * {@link Symfony\Component\Validator\MetadataInterface}.
-     *
-     * Should not be used.
-     *
-     * Implemented for backward compatibility with Symfony < 2.5.
-     *
-     * @throws BadMethodCallException
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function accept(ValidationVisitorInterface $visitor, $value, $group, $propertyPath)
-    {
-        throw new BadMethodCallException('Not supported.');
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/GetterMetadata.php b/vendor/symfony/validator/Mapping/GetterMetadata.php
deleted file mode 100644
index 0cf9992..0000000
--- a/vendor/symfony/validator/Mapping/GetterMetadata.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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\Mapping;
-
-use Symfony\Component\Validator\Exception\ValidatorException;
-
-/**
- * Stores all metadata needed for validating a class property via its getter
- * method.
- *
- * A property getter is any method that is equal to the property's name,
- * prefixed with either "get" or "is". That method will be used to access the
- * property's value.
- *
- * The getter will be invoked by reflection, so the access of private and
- * protected getters is supported.
- *
- * This class supports serialization and cloning.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see PropertyMetadataInterface
- */
-class GetterMetadata extends MemberMetadata
-{
-    /**
-     * Constructor.
-     *
-     * @param string $class    The class the getter is defined on
-     * @param string $property The property which the getter returns
-     *
-     * @throws ValidatorException
-     */
-    public function __construct($class, $property)
-    {
-        $getMethod = 'get'.ucfirst($property);
-        $isMethod = 'is'.ucfirst($property);
-        $hasMethod = 'has'.ucfirst($property);
-
-        if (method_exists($class, $getMethod)) {
-            $method = $getMethod;
-        } elseif (method_exists($class, $isMethod)) {
-            $method = $isMethod;
-        } elseif (method_exists($class, $hasMethod)) {
-            $method = $hasMethod;
-        } else {
-            throw new ValidatorException(sprintf('Neither of these methods exist in class %s: %s, %s, %s', $class, $getMethod, $isMethod, $hasMethod));
-        }
-
-        parent::__construct($class, $method, $property);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPropertyValue($object)
-    {
-        return $this->newReflectionMember($object)->invoke($object);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function newReflectionMember($objectOrClassName)
-    {
-        return new \ReflectionMethod($objectOrClassName, $this->getName());
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/AbstractLoader.php b/vendor/symfony/validator/Mapping/Loader/AbstractLoader.php
deleted file mode 100644
index 2ae8988..0000000
--- a/vendor/symfony/validator/Mapping/Loader/AbstractLoader.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\Exception\MappingException;
-
-/**
- * Base loader for validation metadata.
- *
- * This loader supports the loading of constraints from Symfony's default
- * namespace (see {@link DEFAULT_NAMESPACE}) using the short class names of
- * those constraints. Constraints can also be loaded using their fully
- * qualified class names. At last, namespace aliases can be defined to load
- * constraints with the syntax "alias:ShortName".
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-abstract class AbstractLoader implements LoaderInterface
-{
-    /**
-     * The namespace to load constraints from by default.
-     */
-    const DEFAULT_NAMESPACE = '\\Symfony\\Component\\Validator\\Constraints\\';
-
-    /**
-     * @var array
-     */
-    protected $namespaces = array();
-
-    /**
-     * Adds a namespace alias.
-     *
-     * The namespace alias can be used to reference constraints from specific
-     * namespaces in {@link newConstraint()}:
-     *
-     *     $this->addNamespaceAlias('mynamespace', '\\Acme\\Package\\Constraints\\');
-     *
-     *     $constraint = $this->newConstraint('mynamespace:NotNull');
-     *
-     * @param string $alias     The alias
-     * @param string $namespace The PHP namespace
-     */
-    protected function addNamespaceAlias($alias, $namespace)
-    {
-        $this->namespaces[$alias] = $namespace;
-    }
-
-    /**
-     * Creates a new constraint instance for the given constraint name.
-     *
-     * @param string $name    The constraint name. Either a constraint relative
-     *                        to the default constraint namespace, or a fully
-     *                        qualified class name. Alternatively, the constraint
-     *                        may be preceded by a namespace alias and a colon.
-     *                        The namespace alias must have been defined using
-     *                        {@link addNamespaceAlias()}.
-     * @param mixed  $options The constraint options
-     *
-     * @return Constraint
-     *
-     * @throws MappingException If the namespace prefix is undefined
-     */
-    protected function newConstraint($name, $options = null)
-    {
-        if (strpos($name, '\\') !== false && class_exists($name)) {
-            $className = (string) $name;
-        } elseif (strpos($name, ':') !== false) {
-            list($prefix, $className) = explode(':', $name, 2);
-
-            if (!isset($this->namespaces[$prefix])) {
-                throw new MappingException(sprintf('Undefined namespace prefix "%s"', $prefix));
-            }
-
-            $className = $this->namespaces[$prefix].$className;
-        } else {
-            $className = self::DEFAULT_NAMESPACE.$name;
-        }
-
-        return new $className($options);
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/AnnotationLoader.php b/vendor/symfony/validator/Mapping/Loader/AnnotationLoader.php
deleted file mode 100644
index d1b8c35..0000000
--- a/vendor/symfony/validator/Mapping/Loader/AnnotationLoader.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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\Mapping\Loader;
-
-use Doctrine\Common\Annotations\Reader;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\Constraints\Callback;
-use Symfony\Component\Validator\Constraints\GroupSequence;
-use Symfony\Component\Validator\Constraints\GroupSequenceProvider;
-use Symfony\Component\Validator\Exception\MappingException;
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-
-/**
- * Loads validation metadata using a Doctrine annotation {@link Reader}.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class AnnotationLoader implements LoaderInterface
-{
-    /**
-     * @var Reader
-     */
-    protected $reader;
-
-    public function __construct(Reader $reader)
-    {
-        $this->reader = $reader;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadClassMetadata(ClassMetadata $metadata)
-    {
-        $reflClass = $metadata->getReflectionClass();
-        $className = $reflClass->name;
-        $success = false;
-
-        foreach ($this->reader->getClassAnnotations($reflClass) as $constraint) {
-            if ($constraint instanceof GroupSequence) {
-                $metadata->setGroupSequence($constraint->groups);
-            } elseif ($constraint instanceof GroupSequenceProvider) {
-                $metadata->setGroupSequenceProvider(true);
-            } elseif ($constraint instanceof Constraint) {
-                $metadata->addConstraint($constraint);
-            }
-
-            $success = true;
-        }
-
-        foreach ($reflClass->getProperties() as $property) {
-            if ($property->getDeclaringClass()->name === $className) {
-                foreach ($this->reader->getPropertyAnnotations($property) as $constraint) {
-                    if ($constraint instanceof Constraint) {
-                        $metadata->addPropertyConstraint($property->name, $constraint);
-                    }
-
-                    $success = true;
-                }
-            }
-        }
-
-        foreach ($reflClass->getMethods() as $method) {
-            if ($method->getDeclaringClass()->name === $className) {
-                foreach ($this->reader->getMethodAnnotations($method) as $constraint) {
-                    if ($constraint instanceof Callback) {
-                        $constraint->callback = $method->getName();
-                        $constraint->methods = null;
-
-                        $metadata->addConstraint($constraint);
-                    } elseif ($constraint instanceof Constraint) {
-                        if (preg_match('/^(get|is|has)(.+)$/i', $method->name, $matches)) {
-                            $metadata->addGetterConstraint(lcfirst($matches[2]), $constraint);
-                        } else {
-                            throw new MappingException(sprintf('The constraint on "%s::%s" cannot be added. Constraints can only be added on methods beginning with "get", "is" or "has".', $className, $method->name));
-                        }
-                    }
-
-                    $success = true;
-                }
-            }
-        }
-
-        return $success;
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/FileLoader.php b/vendor/symfony/validator/Mapping/Loader/FileLoader.php
deleted file mode 100644
index 326bbdf..0000000
--- a/vendor/symfony/validator/Mapping/Loader/FileLoader.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Validator\Exception\MappingException;
-
-/**
- * Base loader for loading validation metadata from a file.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see YamlFileLoader
- * @see XmlFileLoader
- */
-abstract class FileLoader extends AbstractLoader
-{
-    /**
-     * The file to load.
-     *
-     * @var string
-     */
-    protected $file;
-
-    /**
-     * Creates a new loader.
-     *
-     * @param string $file The mapping file to load
-     *
-     * @throws MappingException If the file does not exist or is not readable
-     */
-    public function __construct($file)
-    {
-        if (!is_file($file)) {
-            throw new MappingException(sprintf('The mapping file "%s" does not exist', $file));
-        }
-
-        if (!is_readable($file)) {
-            throw new MappingException(sprintf('The mapping file "%s" is not readable', $file));
-        }
-
-        if (!stream_is_local($this->file)) {
-            throw new MappingException(sprintf('The mapping file "%s" is not a local file', $file));
-        }
-
-        $this->file = $file;
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/FilesLoader.php b/vendor/symfony/validator/Mapping/Loader/FilesLoader.php
deleted file mode 100644
index 571c7e7..0000000
--- a/vendor/symfony/validator/Mapping/Loader/FilesLoader.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?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\Mapping\Loader;
-
-/**
- * Base loader for loading validation metadata from a list of files.
- *
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see YamlFilesLoader
- * @see XmlFilesLoader
- */
-abstract class FilesLoader extends LoaderChain
-{
-    /**
-     * Creates a new loader.
-     *
-     * @param array $paths An array of file paths
-     */
-    public function __construct(array $paths)
-    {
-        parent::__construct($this->getFileLoaders($paths));
-    }
-
-    /**
-     * Returns an array of file loaders for the given file paths.
-     *
-     * @param array $paths An array of file paths
-     *
-     * @return LoaderInterface[] The metadata loaders
-     */
-    protected function getFileLoaders($paths)
-    {
-        $loaders = array();
-
-        foreach ($paths as $path) {
-            $loaders[] = $this->getFileLoaderInstance($path);
-        }
-
-        return $loaders;
-    }
-
-    /**
-     * Creates a loader for the given file path.
-     *
-     * @param string $path The file path
-     *
-     * @return LoaderInterface The created loader
-     */
-    abstract protected function getFileLoaderInstance($path);
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/LoaderChain.php b/vendor/symfony/validator/Mapping/Loader/LoaderChain.php
deleted file mode 100644
index 970d906..0000000
--- a/vendor/symfony/validator/Mapping/Loader/LoaderChain.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Validator\Exception\MappingException;
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-
-/**
- * Loads validation metadata from multiple {@link LoaderInterface} instances.
- *
- * Pass the loaders when constructing the chain. Once
- * {@link loadClassMetadata()} is called, that method will be called on all
- * loaders in the chain.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class LoaderChain implements LoaderInterface
-{
-    /**
-     * @var LoaderInterface[]
-     */
-    protected $loaders;
-
-    /**
-     * @param LoaderInterface[] $loaders The metadata loaders to use
-     *
-     * @throws MappingException If any of the loaders has an invalid type
-     */
-    public function __construct(array $loaders)
-    {
-        foreach ($loaders as $loader) {
-            if (!$loader instanceof LoaderInterface) {
-                throw new MappingException(sprintf('Class %s is expected to implement LoaderInterface', get_class($loader)));
-            }
-        }
-
-        $this->loaders = $loaders;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadClassMetadata(ClassMetadata $metadata)
-    {
-        $success = false;
-
-        foreach ($this->loaders as $loader) {
-            $success = $loader->loadClassMetadata($metadata) || $success;
-        }
-
-        return $success;
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/LoaderInterface.php b/vendor/symfony/validator/Mapping/Loader/LoaderInterface.php
deleted file mode 100644
index 5dadc82..0000000
--- a/vendor/symfony/validator/Mapping/Loader/LoaderInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-
-/**
- * Loads validation metadata into {@link ClassMetadata} instances.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface LoaderInterface
-{
-    /**
-     * Loads validation metadata into a {@link ClassMetadata} instance.
-     *
-     * @param ClassMetadata $metadata The metadata to load
-     *
-     * @return bool Whether the loader succeeded
-     */
-    public function loadClassMetadata(ClassMetadata $metadata);
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/StaticMethodLoader.php b/vendor/symfony/validator/Mapping/Loader/StaticMethodLoader.php
deleted file mode 100644
index 4ff2257..0000000
--- a/vendor/symfony/validator/Mapping/Loader/StaticMethodLoader.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Validator\Exception\MappingException;
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-
-/**
- * Loads validation metadata by calling a static method on the loaded class.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class StaticMethodLoader implements LoaderInterface
-{
-    /**
-     * The name of the method to call.
-     *
-     * @var string
-     */
-    protected $methodName;
-
-    /**
-     * Creates a new loader.
-     *
-     * @param string $methodName The name of the static method to call
-     */
-    public function __construct($methodName = 'loadValidatorMetadata')
-    {
-        $this->methodName = $methodName;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadClassMetadata(ClassMetadata $metadata)
-    {
-        /** @var \ReflectionClass $reflClass */
-        $reflClass = $metadata->getReflectionClass();
-
-        if (!$reflClass->isInterface() && $reflClass->hasMethod($this->methodName)) {
-            $reflMethod = $reflClass->getMethod($this->methodName);
-
-            if ($reflMethod->isAbstract()) {
-                return false;
-            }
-
-            if (!$reflMethod->isStatic()) {
-                throw new MappingException(sprintf('The method %s::%s should be static', $reflClass->name, $this->methodName));
-            }
-
-            if ($reflMethod->getDeclaringClass()->name != $reflClass->name) {
-                return false;
-            }
-
-            $reflMethod->invoke(null, $metadata);
-
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/XmlFileLoader.php b/vendor/symfony/validator/Mapping/Loader/XmlFileLoader.php
deleted file mode 100644
index 2961b00..0000000
--- a/vendor/symfony/validator/Mapping/Loader/XmlFileLoader.php
+++ /dev/null
@@ -1,219 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Config\Util\XmlUtils;
-use Symfony\Component\Validator\Exception\MappingException;
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-
-/**
- * Loads validation metadata from an XML file.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class XmlFileLoader extends FileLoader
-{
-    /**
-     * The XML nodes of the mapping file.
-     *
-     * @var \SimpleXMLElement[]|null
-     */
-    protected $classes;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadClassMetadata(ClassMetadata $metadata)
-    {
-        if (null === $this->classes) {
-            // This method may throw an exception. Do not modify the class'
-            // state before it completes
-            $xml = $this->parseFile($this->file);
-
-            $this->classes = array();
-
-            foreach ($xml->namespace as $namespace) {
-                $this->addNamespaceAlias((string) $namespace['prefix'], trim((string) $namespace));
-            }
-
-            foreach ($xml->class as $class) {
-                $this->classes[(string) $class['name']] = $class;
-            }
-        }
-
-        if (isset($this->classes[$metadata->getClassName()])) {
-            $classDescription = $this->classes[$metadata->getClassName()];
-
-            $this->loadClassMetadataFromXml($metadata, $classDescription);
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Parses a collection of "constraint" XML nodes.
-     *
-     * @param \SimpleXMLElement $nodes The XML nodes
-     *
-     * @return array The Constraint instances
-     */
-    protected function parseConstraints(\SimpleXMLElement $nodes)
-    {
-        $constraints = array();
-
-        foreach ($nodes as $node) {
-            if (count($node) > 0) {
-                if (count($node->value) > 0) {
-                    $options = $this->parseValues($node->value);
-                } elseif (count($node->constraint) > 0) {
-                    $options = $this->parseConstraints($node->constraint);
-                } elseif (count($node->option) > 0) {
-                    $options = $this->parseOptions($node->option);
-                } else {
-                    $options = array();
-                }
-            } elseif (strlen((string) $node) > 0) {
-                $options = trim($node);
-            } else {
-                $options = null;
-            }
-
-            $constraints[] = $this->newConstraint((string) $node['name'], $options);
-        }
-
-        return $constraints;
-    }
-
-    /**
-     * Parses a collection of "value" XML nodes.
-     *
-     * @param \SimpleXMLElement $nodes The XML nodes
-     *
-     * @return array The values
-     */
-    protected function parseValues(\SimpleXMLElement $nodes)
-    {
-        $values = array();
-
-        foreach ($nodes as $node) {
-            if (count($node) > 0) {
-                if (count($node->value) > 0) {
-                    $value = $this->parseValues($node->value);
-                } elseif (count($node->constraint) > 0) {
-                    $value = $this->parseConstraints($node->constraint);
-                } else {
-                    $value = array();
-                }
-            } else {
-                $value = trim($node);
-            }
-
-            if (isset($node['key'])) {
-                $values[(string) $node['key']] = $value;
-            } else {
-                $values[] = $value;
-            }
-        }
-
-        return $values;
-    }
-
-    /**
-     * Parses a collection of "option" XML nodes.
-     *
-     * @param \SimpleXMLElement $nodes The XML nodes
-     *
-     * @return array The options
-     */
-    protected function parseOptions(\SimpleXMLElement $nodes)
-    {
-        $options = array();
-
-        foreach ($nodes as $node) {
-            if (count($node) > 0) {
-                if (count($node->value) > 0) {
-                    $value = $this->parseValues($node->value);
-                } elseif (count($node->constraint) > 0) {
-                    $value = $this->parseConstraints($node->constraint);
-                } else {
-                    $value = array();
-                }
-            } else {
-                $value = XmlUtils::phpize($node);
-                if (is_string($value)) {
-                    $value = trim($value);
-                }
-            }
-
-            $options[(string) $node['name']] = $value;
-        }
-
-        return $options;
-    }
-
-    /**
-     * Loads the XML class descriptions from the given file.
-     *
-     * @param string $path The path of the XML file
-     *
-     * @return \SimpleXMLElement The class descriptions
-     *
-     * @throws MappingException If the file could not be loaded
-     */
-    protected function parseFile($path)
-    {
-        try {
-            $dom = XmlUtils::loadFile($path, __DIR__.'/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd');
-        } catch (\Exception $e) {
-            throw new MappingException($e->getMessage(), $e->getCode(), $e);
-        }
-
-        return simplexml_import_dom($dom);
-    }
-
-    /**
-     * Loads the validation metadata from the given XML class description.
-     *
-     * @param ClassMetadata $metadata         The metadata to load
-     * @param array         $classDescription The XML class description
-     */
-    private function loadClassMetadataFromXml(ClassMetadata $metadata, $classDescription)
-    {
-        foreach ($classDescription->{'group-sequence-provider'} as $_) {
-            $metadata->setGroupSequenceProvider(true);
-        }
-
-        foreach ($classDescription->{'group-sequence'} as $groupSequence) {
-            if (count($groupSequence->value) > 0) {
-                $metadata->setGroupSequence($this->parseValues($groupSequence[0]->value));
-            }
-        }
-
-        foreach ($this->parseConstraints($classDescription->constraint) as $constraint) {
-            $metadata->addConstraint($constraint);
-        }
-
-        foreach ($classDescription->property as $property) {
-            foreach ($this->parseConstraints($property->constraint) as $constraint) {
-                $metadata->addPropertyConstraint((string) $property['name'], $constraint);
-            }
-        }
-
-        foreach ($classDescription->getter as $getter) {
-            foreach ($this->parseConstraints($getter->constraint) as $constraint) {
-                $metadata->addGetterConstraint((string) $getter['property'], $constraint);
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/XmlFilesLoader.php b/vendor/symfony/validator/Mapping/Loader/XmlFilesLoader.php
deleted file mode 100644
index 6017c3f..0000000
--- a/vendor/symfony/validator/Mapping/Loader/XmlFilesLoader.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Mapping\Loader;
-
-/**
- * Loads validation metadata from a list of XML files.
- *
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see FilesLoader
- */
-class XmlFilesLoader extends FilesLoader
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getFileLoaderInstance($file)
-    {
-        return new XmlFileLoader($file);
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/YamlFileLoader.php b/vendor/symfony/validator/Mapping/Loader/YamlFileLoader.php
deleted file mode 100644
index cf6dd92..0000000
--- a/vendor/symfony/validator/Mapping/Loader/YamlFileLoader.php
+++ /dev/null
@@ -1,184 +0,0 @@
-<?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\Mapping\Loader;
-
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-use Symfony\Component\Yaml\Exception\ParseException;
-use Symfony\Component\Yaml\Parser as YamlParser;
-
-/**
- * Loads validation metadata from a YAML file.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class YamlFileLoader extends FileLoader
-{
-    /**
-     * An array of YAML class descriptions.
-     *
-     * @var array
-     */
-    protected $classes = null;
-
-    /**
-     * Caches the used YAML parser.
-     *
-     * @var YamlParser
-     */
-    private $yamlParser;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function loadClassMetadata(ClassMetadata $metadata)
-    {
-        if (null === $this->classes) {
-            if (null === $this->yamlParser) {
-                $this->yamlParser = new YamlParser();
-            }
-
-            // This method may throw an exception. Do not modify the class'
-            // state before it completes
-            if (false === ($classes = $this->parseFile($this->file))) {
-                return false;
-            }
-
-            $this->classes = $classes;
-
-            if (isset($this->classes['namespaces'])) {
-                foreach ($this->classes['namespaces'] as $alias => $namespace) {
-                    $this->addNamespaceAlias($alias, $namespace);
-                }
-
-                unset($this->classes['namespaces']);
-            }
-        }
-
-        if (isset($this->classes[$metadata->getClassName()])) {
-            $classDescription = $this->classes[$metadata->getClassName()];
-
-            $this->loadClassMetadataFromYaml($metadata, $classDescription);
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Parses a collection of YAML nodes.
-     *
-     * @param array $nodes The YAML nodes
-     *
-     * @return array An array of values or Constraint instances
-     */
-    protected function parseNodes(array $nodes)
-    {
-        $values = array();
-
-        foreach ($nodes as $name => $childNodes) {
-            if (is_numeric($name) && is_array($childNodes) && 1 === count($childNodes)) {
-                $options = current($childNodes);
-
-                if (is_array($options)) {
-                    $options = $this->parseNodes($options);
-                }
-
-                $values[] = $this->newConstraint(key($childNodes), $options);
-            } else {
-                if (is_array($childNodes)) {
-                    $childNodes = $this->parseNodes($childNodes);
-                }
-
-                $values[$name] = $childNodes;
-            }
-        }
-
-        return $values;
-    }
-
-    /**
-     * Loads the YAML class descriptions from the given file.
-     *
-     * @param string $path The path of the YAML file
-     *
-     * @return array|null The class descriptions or null, if the file was empty
-     *
-     * @throws \InvalidArgumentException If the file could not be loaded or did
-     *                                   not contain a YAML array
-     */
-    private function parseFile($path)
-    {
-        try {
-            $classes = $this->yamlParser->parse(file_get_contents($path));
-        } catch (ParseException $e) {
-            throw new \InvalidArgumentException(sprintf('The file "%s" does not contain valid YAML.', $path), 0, $e);
-        }
-
-        // empty file
-        if (null === $classes) {
-            return;
-        }
-
-        // not an array
-        if (!is_array($classes)) {
-            throw new \InvalidArgumentException(sprintf('The file "%s" must contain a YAML array.', $this->file));
-        }
-
-        return $classes;
-    }
-
-    /**
-     * Loads the validation metadata from the given YAML class description.
-     *
-     * @param ClassMetadata $metadata         The metadata to load
-     * @param array         $classDescription The YAML class description
-     */
-    private function loadClassMetadataFromYaml(ClassMetadata $metadata, array $classDescription)
-    {
-        if (isset($classDescription['group_sequence_provider'])) {
-            $metadata->setGroupSequenceProvider(
-                (bool) $classDescription['group_sequence_provider']
-            );
-        }
-
-        if (isset($classDescription['group_sequence'])) {
-            $metadata->setGroupSequence($classDescription['group_sequence']);
-        }
-
-        if (isset($classDescription['constraints']) && is_array($classDescription['constraints'])) {
-            foreach ($this->parseNodes($classDescription['constraints']) as $constraint) {
-                $metadata->addConstraint($constraint);
-            }
-        }
-
-        if (isset($classDescription['properties']) && is_array($classDescription['properties'])) {
-            foreach ($classDescription['properties'] as $property => $constraints) {
-                if (null !== $constraints) {
-                    foreach ($this->parseNodes($constraints) as $constraint) {
-                        $metadata->addPropertyConstraint($property, $constraint);
-                    }
-                }
-            }
-        }
-
-        if (isset($classDescription['getters']) && is_array($classDescription['getters'])) {
-            foreach ($classDescription['getters'] as $getter => $constraints) {
-                if (null !== $constraints) {
-                    foreach ($this->parseNodes($constraints) as $constraint) {
-                        $metadata->addGetterConstraint($getter, $constraint);
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/YamlFilesLoader.php b/vendor/symfony/validator/Mapping/Loader/YamlFilesLoader.php
deleted file mode 100644
index 235856f..0000000
--- a/vendor/symfony/validator/Mapping/Loader/YamlFilesLoader.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Mapping\Loader;
-
-/**
- * Loads validation metadata from a list of YAML files.
- *
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see FilesLoader
- */
-class YamlFilesLoader extends FilesLoader
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getFileLoaderInstance($file)
-    {
-        return new YamlFileLoader($file);
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/Loader/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd b/vendor/symfony/validator/Mapping/Loader/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd
deleted file mode 100644
index 1ca840b..0000000
--- a/vendor/symfony/validator/Mapping/Loader/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0" ?>
-
-<xsd:schema xmlns="http://symfony.com/schema/dic/constraint-mapping"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    targetNamespace="http://symfony.com/schema/dic/constraint-mapping"
-    elementFormDefault="qualified">
-
-  <xsd:annotation>
-    <xsd:documentation><![CDATA[
-      Symfony Validator Constraint Mapping Schema, version 1.0
-      Authors: Bernhard Schussek
-
-      A constraint mapping connects classes, properties and getters with
-      validation constraints.
-    ]]></xsd:documentation>
-  </xsd:annotation>
-  
-  <xsd:element name="constraint-mapping" type="constraint-mapping" />
-  
-  <xsd:complexType name="constraint-mapping">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        The root element of the constraint mapping definition.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="namespace" type="namespace" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="class" type="class" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-  
-  <xsd:complexType name="namespace">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Contains the abbreviation for a namespace.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="prefix" type="xsd:string" use="required" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-  
-  <xsd:complexType name="class">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Contains constraints for a single class.
-        
-        Nested elements may be class constraints, property and/or getter 
-        definitions.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:choice minOccurs="0" maxOccurs="unbounded">
-      <xsd:element name="group-sequence-provider" type="group-sequence-provider" minOccurs="0" maxOccurs="1" />
-      <xsd:element name="group-sequence" type="group-sequence" minOccurs="0" maxOccurs="1" />
-      <xsd:element name="constraint" type="constraint" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="property" type="property" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="getter" type="getter" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:choice>
-    <xsd:attribute name="name" type="xsd:string" use="required" />
-  </xsd:complexType>
-
-  <xsd:complexType name="group-sequence">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Contains the group sequence of a class. Each group should be written
-        into a "value" tag.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="value" type="value" minOccurs="1" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-  
-  <xsd:complexType name="group-sequence-provider">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Defines the name of the group sequence provider for a class.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-  </xsd:complexType>
-  
-  <xsd:complexType name="property">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Contains constraints for a single property. The name of the property
-        should be given in the "name" option.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="constraint" type="constraint" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="name" type="xsd:string" use="required" />
-  </xsd:complexType>
-  
-  <xsd:complexType name="getter">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Contains constraints for a getter method. The name of the corresponding
-        property should be given in the "property" option.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="constraint" type="constraint" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="property" type="xsd:string" use="required" />
-  </xsd:complexType>
-  
-  <xsd:complexType name="constraint" mixed="true">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Contains a constraint definition. The name of the constraint should be
-        given in the "name" option.
-        
-        May contain a single value, multiple "constraint" elements, 
-        multiple "value" elements or multiple "option" elements.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:choice minOccurs="0">
-      <xsd:element name="constraint" type="constraint" minOccurs="1" maxOccurs="unbounded" />
-      <xsd:element name="option" type="option" minOccurs="1" maxOccurs="unbounded" />
-      <xsd:element name="value" type="value" minOccurs="1" maxOccurs="unbounded" />
-    </xsd:choice>
-    <xsd:attribute name="name" type="xsd:string" use="required" />    
-  </xsd:complexType>
-  
-  <xsd:complexType name="option" mixed="true">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        Contains a constraint option definition. The name of the option
-        should be given in the "name" option.
-        
-        May contain a single value, multiple "value" elements or multiple
-        "constraint" elements.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:choice minOccurs="0">
-      <xsd:element name="constraint" type="constraint" minOccurs="1" maxOccurs="unbounded" />
-      <xsd:element name="value" type="value" minOccurs="1" maxOccurs="unbounded" />
-    </xsd:choice>
-    <xsd:attribute name="name" type="xsd:string" use="required" />  
-  </xsd:complexType>
-  
-  <xsd:complexType name="value" mixed="true">
-    <xsd:annotation>
-      <xsd:documentation><![CDATA[
-        A value of an element.
-        
-        May contain a single value, multiple "value" elements or multiple
-        "constraint" elements.
-      ]]></xsd:documentation>
-    </xsd:annotation>
-    <xsd:choice minOccurs="0">
-      <xsd:element name="constraint" type="constraint" minOccurs="1" maxOccurs="unbounded" />
-      <xsd:element name="value" type="value" minOccurs="1" maxOccurs="unbounded" />
-    </xsd:choice>
-    <xsd:attribute name="key" type="xsd:string" use="optional" /> 
-  </xsd:complexType>
-</xsd:schema>
diff --git a/vendor/symfony/validator/Mapping/MemberMetadata.php b/vendor/symfony/validator/Mapping/MemberMetadata.php
deleted file mode 100644
index 0def248..0000000
--- a/vendor/symfony/validator/Mapping/MemberMetadata.php
+++ /dev/null
@@ -1,259 +0,0 @@
-<?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\Mapping;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
-use Symfony\Component\Validator\ValidationVisitorInterface;
-
-/**
- * Stores all metadata needed for validating a class property.
- *
- * The method of accessing the property's value must be specified by subclasses
- * by implementing the {@link newReflectionMember()} method.
- *
- * This class supports serialization and cloning.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see PropertyMetadataInterface
- */
-abstract class MemberMetadata extends ElementMetadata implements PropertyMetadataInterface
-{
-    /**
-     * @var string
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getClassName()} instead.
-     */
-    public $class;
-
-    /**
-     * @var string
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getName()} instead.
-     */
-    public $name;
-
-    /**
-     * @var string
-     *
-     * @internal This property is public in order to reduce the size of the
-     *           class' serialized representation. Do not access it. Use
-     *           {@link getPropertyName()} instead.
-     */
-    public $property;
-
-    /**
-     * @var \ReflectionMethod[]|\ReflectionProperty[]
-     */
-    private $reflMember = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string $class    The name of the class this member is defined on
-     * @param string $name     The name of the member
-     * @param string $property The property the member belongs to
-     */
-    public function __construct($class, $name, $property)
-    {
-        $this->class = $class;
-        $this->name = $name;
-        $this->property = $property;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function accept(ValidationVisitorInterface $visitor, $value, $group, $propertyPath, $propagatedGroup = null)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-        $visitor->visit($this, $value, $group, $propertyPath);
-
-        if ($this->isCascaded()) {
-            $visitor->validate($value, $propagatedGroup ?: $group, $propertyPath, $this->isCollectionCascaded(), $this->isCollectionCascadedDeeply());
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addConstraint(Constraint $constraint)
-    {
-        if (!in_array(Constraint::PROPERTY_CONSTRAINT, (array) $constraint->getTargets())) {
-            throw new ConstraintDefinitionException(sprintf(
-                'The constraint %s cannot be put on properties or getters',
-                get_class($constraint)
-            ));
-        }
-
-        parent::addConstraint($constraint);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __sleep()
-    {
-        return array_merge(parent::__sleep(), array(
-            'class',
-            'name',
-            'property',
-        ));
-    }
-
-    /**
-     * Returns the name of the member.
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getClassName()
-    {
-        return $this->class;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPropertyName()
-    {
-        return $this->property;
-    }
-
-    /**
-     * Returns whether this member is public.
-     *
-     * @param object|string $objectOrClassName The object or the class name
-     *
-     * @return bool
-     */
-    public function isPublic($objectOrClassName)
-    {
-        return $this->getReflectionMember($objectOrClassName)->isPublic();
-    }
-
-    /**
-     * Returns whether this member is protected.
-     *
-     * @param object|string $objectOrClassName The object or the class name
-     *
-     * @return bool
-     */
-    public function isProtected($objectOrClassName)
-    {
-        return $this->getReflectionMember($objectOrClassName)->isProtected();
-    }
-
-    /**
-     * Returns whether this member is private.
-     *
-     * @param object|string $objectOrClassName The object or the class name
-     *
-     * @return bool
-     */
-    public function isPrivate($objectOrClassName)
-    {
-        return $this->getReflectionMember($objectOrClassName)->isPrivate();
-    }
-
-    /**
-     * Returns whether objects stored in this member should be validated.
-     *
-     * @return bool
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Use {@link getCascadingStrategy()} instead.
-     */
-    public function isCascaded()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Use the getCascadingStrategy() method instead.', E_USER_DEPRECATED);
-
-        return (bool) ($this->cascadingStrategy & CascadingStrategy::CASCADE);
-    }
-
-    /**
-     * Returns whether arrays or traversable objects stored in this member
-     * should be traversed and validated in each entry.
-     *
-     * @return bool
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Use {@link getTraversalStrategy()} instead.
-     */
-    public function isCollectionCascaded()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Use the getTraversalStrategy() method instead.', E_USER_DEPRECATED);
-
-        return (bool) ($this->traversalStrategy & (TraversalStrategy::IMPLICIT | TraversalStrategy::TRAVERSE));
-    }
-
-    /**
-     * Returns whether arrays or traversable objects stored in this member
-     * should be traversed recursively for inner arrays/traversable objects.
-     *
-     * @return bool
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Use {@link getTraversalStrategy()} instead.
-     */
-    public function isCollectionCascadedDeeply()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Use the getTraversalStrategy() method instead.', E_USER_DEPRECATED);
-
-        return !($this->traversalStrategy & TraversalStrategy::STOP_RECURSION);
-    }
-
-    /**
-     * Returns the reflection instance for accessing the member's value.
-     *
-     * @param object|string $objectOrClassName The object or the class name
-     *
-     * @return \ReflectionMethod|\ReflectionProperty The reflection instance
-     */
-    public function getReflectionMember($objectOrClassName)
-    {
-        $className = is_string($objectOrClassName) ? $objectOrClassName : get_class($objectOrClassName);
-        if (!isset($this->reflMember[$className])) {
-            $this->reflMember[$className] = $this->newReflectionMember($objectOrClassName);
-        }
-
-        return $this->reflMember[$className];
-    }
-
-    /**
-     * Creates a new reflection instance for accessing the member's value.
-     *
-     * Must be implemented by subclasses.
-     *
-     * @param object|string $objectOrClassName The object or the class name
-     *
-     * @return \ReflectionMethod|\ReflectionProperty The reflection instance
-     */
-    abstract protected function newReflectionMember($objectOrClassName);
-}
diff --git a/vendor/symfony/validator/Mapping/MetadataInterface.php b/vendor/symfony/validator/Mapping/MetadataInterface.php
deleted file mode 100644
index e5f09e1..0000000
--- a/vendor/symfony/validator/Mapping/MetadataInterface.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?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\Mapping;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\MetadataInterface as LegacyMetadataInterface;
-
-/**
- * A container for validation metadata.
- *
- * Most importantly, the metadata stores the constraints against which an object
- * and its properties should be validated.
- *
- * Additionally, the metadata stores whether objects should be validated
- * against their class' metadata and whether traversable objects should be
- * traversed or not.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see CascadingStrategy
- * @see TraversalStrategy
- */
-interface MetadataInterface extends LegacyMetadataInterface
-{
-    /**
-     * Returns the strategy for cascading objects.
-     *
-     * @return int The cascading strategy
-     *
-     * @see CascadingStrategy
-     */
-    public function getCascadingStrategy();
-
-    /**
-     * Returns the strategy for traversing traversable objects.
-     *
-     * @return int The traversal strategy
-     *
-     * @see TraversalStrategy
-     */
-    public function getTraversalStrategy();
-
-    /**
-     * Returns all constraints of this element.
-     *
-     * @return Constraint[] A list of Constraint instances
-     */
-    public function getConstraints();
-}
diff --git a/vendor/symfony/validator/Mapping/PropertyMetadata.php b/vendor/symfony/validator/Mapping/PropertyMetadata.php
deleted file mode 100644
index 7319294..0000000
--- a/vendor/symfony/validator/Mapping/PropertyMetadata.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?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\Mapping;
-
-use Symfony\Component\Validator\Exception\ValidatorException;
-
-/**
- * Stores all metadata needed for validating a class property.
- *
- * The value of the property is obtained by directly accessing the property.
- * The property will be accessed by reflection, so the access of private and
- * protected properties is supported.
- *
- * This class supports serialization and cloning.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see PropertyMetadataInterface
- */
-class PropertyMetadata extends MemberMetadata
-{
-    /**
-     * Constructor.
-     *
-     * @param string $class The class this property is defined on
-     * @param string $name  The name of this property
-     *
-     * @throws ValidatorException
-     */
-    public function __construct($class, $name)
-    {
-        if (!property_exists($class, $name)) {
-            throw new ValidatorException(sprintf('Property %s does not exist in class %s', $name, $class));
-        }
-
-        parent::__construct($class, $name, $name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPropertyValue($object)
-    {
-        return $this->getReflectionMember($object)->getValue($object);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function newReflectionMember($objectOrClassName)
-    {
-        $class = new \ReflectionClass($objectOrClassName);
-        while (!$class->hasProperty($this->getName())) {
-            $class = $class->getParentClass();
-        }
-
-        $member = new \ReflectionProperty($class->getName(), $this->getName());
-        $member->setAccessible(true);
-
-        return $member;
-    }
-}
diff --git a/vendor/symfony/validator/Mapping/PropertyMetadataInterface.php b/vendor/symfony/validator/Mapping/PropertyMetadataInterface.php
deleted file mode 100644
index 8a77aa8..0000000
--- a/vendor/symfony/validator/Mapping/PropertyMetadataInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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\Mapping;
-
-use Symfony\Component\Validator\ClassBasedInterface;
-use Symfony\Component\Validator\PropertyMetadataInterface as LegacyPropertyMetadataInterface;
-
-/**
- * Stores all metadata needed for validating the value of a class property.
- *
- * Most importantly, the metadata stores the constraints against which the
- * property's value should be validated.
- *
- * Additionally, the metadata stores whether objects stored in the property
- * should be validated against their class' metadata and whether traversable
- * objects should be traversed or not.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see MetadataInterface
- * @see CascadingStrategy
- * @see TraversalStrategy
- */
-interface PropertyMetadataInterface extends MetadataInterface, LegacyPropertyMetadataInterface, ClassBasedInterface
-{
-}
diff --git a/vendor/symfony/validator/Mapping/TraversalStrategy.php b/vendor/symfony/validator/Mapping/TraversalStrategy.php
deleted file mode 100644
index ae76857..0000000
--- a/vendor/symfony/validator/Mapping/TraversalStrategy.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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\Mapping;
-
-/**
- * Specifies whether and how a traversable object should be traversed.
- *
- * If the node traverser traverses a node whose value is an instance of
- * {@link \Traversable}, and if that node is either a class node or if
- * cascading is enabled, then the node's traversal strategy will be checked.
- * Depending on the requested traversal strategy, the node traverser will
- * iterate over the object and cascade each object or collection returned by
- * the iterator.
- *
- * The traversal strategy is ignored for arrays. Arrays are always iterated.
- *
- * @since  2.1
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see CascadingStrategy
- */
-class TraversalStrategy
-{
-    /**
-     * Specifies that a node's value should be iterated only if it is an
-     * instance of {@link \Traversable}.
-     */
-    const IMPLICIT = 1;
-
-    /**
-     * Specifies that a node's value should never be iterated.
-     */
-    const NONE = 2;
-
-    /**
-     * Specifies that a node's value should always be iterated. If the value is
-     * not an instance of {@link \Traversable}, an exception should be thrown.
-     */
-    const TRAVERSE = 4;
-
-    /**
-     * Specifies that nested instances of {@link \Traversable} should never be
-     * iterated. Can be combined with {@link IMPLICIT} or {@link TRAVERSE}.
-     *
-     * @deprecated since version 2.5, to be removed in 3.0. This constant was added for backwards compatibility only.
-     *
-     * @internal
-     */
-    const STOP_RECURSION = 8;
-
-    /**
-     * Not instantiable.
-     */
-    private function __construct()
-    {
-    }
-}
diff --git a/vendor/symfony/validator/MetadataFactoryInterface.php b/vendor/symfony/validator/MetadataFactoryInterface.php
deleted file mode 100644
index 555bea9..0000000
--- a/vendor/symfony/validator/MetadataFactoryInterface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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;
-
-/**
- * Returns {@link MetadataInterface} instances for values.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link Mapping\Factory\MetadataFactoryInterface} instead.
- */
-interface MetadataFactoryInterface
-{
-    /**
-     * Returns the metadata for the given value.
-     *
-     * @param mixed $value Some value
-     *
-     * @return MetadataInterface The metadata for the value
-     *
-     * @throws Exception\NoSuchMetadataException If no metadata exists for the given value
-     */
-    public function getMetadataFor($value);
-
-    /**
-     * Returns whether the class is able to return metadata for the given value.
-     *
-     * @param mixed $value Some value
-     *
-     * @return bool Whether metadata can be returned for that value
-     */
-    public function hasMetadataFor($value);
-}
diff --git a/vendor/symfony/validator/MetadataInterface.php b/vendor/symfony/validator/MetadataInterface.php
deleted file mode 100644
index 2c89449..0000000
--- a/vendor/symfony/validator/MetadataInterface.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?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;
-
-/**
- * A container for validation metadata.
- *
- * The container contains constraints that may belong to different validation
- * groups. Constraints for a specific group can be fetched by calling
- * {@link findConstraints}.
- *
- * Implement this interface to add validation metadata to your own metadata
- * layer. Each metadata may have named properties. Each property can be
- * represented by one or more {@link PropertyMetadataInterface} instances that
- * are returned by {@link getPropertyMetadata}. Since
- * <tt>PropertyMetadataInterface</tt> inherits from <tt>MetadataInterface</tt>,
- * each property may be divided into further properties.
- *
- * The {@link accept} method of each metadata implements the Visitor pattern.
- * The method should forward the call to the visitor's
- * {@link ValidationVisitorInterface::visit} method and additionally call
- * <tt>accept()</tt> on all structurally related metadata instances.
- *
- * For example, to store constraints for PHP classes and their properties,
- * create a class <tt>ClassMetadata</tt> (implementing <tt>MetadataInterface</tt>)
- * and a class <tt>PropertyMetadata</tt> (implementing <tt>PropertyMetadataInterface</tt>).
- * <tt>ClassMetadata::getPropertyMetadata($property)</tt> returns all
- * <tt>PropertyMetadata</tt> instances for a property of that class. Its
- * <tt>accept()</tt>-method simply forwards to <tt>ValidationVisitorInterface::visit()</tt>
- * and calls <tt>accept()</tt> on all contained <tt>PropertyMetadata</tt>
- * instances, which themselves call <tt>ValidationVisitorInterface::visit()</tt>
- * again.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link Mapping\MetadataInterface} instead.
- */
-interface MetadataInterface
-{
-    /**
-     * Implementation of the Visitor design pattern.
-     *
-     * Calls {@link ValidationVisitorInterface::visit} and then forwards the
-     * <tt>accept()</tt>-call to all property metadata instances.
-     *
-     * @param ValidationVisitorInterface $visitor      The visitor implementing the validation logic
-     * @param mixed                      $value        The value to validate
-     * @param string|string[]            $group        The validation group to validate in
-     * @param string                     $propertyPath The current property path in the validation graph
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function accept(ValidationVisitorInterface $visitor, $value, $group, $propertyPath);
-
-    /**
-     * Returns all constraints for a given validation group.
-     *
-     * @param string $group The validation group
-     *
-     * @return Constraint[] A list of constraint instances
-     */
-    public function findConstraints($group);
-}
diff --git a/vendor/symfony/validator/ObjectInitializerInterface.php b/vendor/symfony/validator/ObjectInitializerInterface.php
deleted file mode 100644
index dcbc2cd..0000000
--- a/vendor/symfony/validator/ObjectInitializerInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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;
-
-/**
- * Prepares an object for validation.
- *
- * Concrete implementations of this interface are used by {@link ValidationVisitorInterface}
- * to initialize objects just before validating them.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ObjectInitializerInterface
-{
-    /**
-     * Initializes an object just before validation.
-     *
-     * @param object $object The object to validate
-     */
-    public function initialize($object);
-}
diff --git a/vendor/symfony/validator/PropertyMetadataContainerInterface.php b/vendor/symfony/validator/PropertyMetadataContainerInterface.php
deleted file mode 100644
index 5441be1..0000000
--- a/vendor/symfony/validator/PropertyMetadataContainerInterface.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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;
-
-/**
- * A container for {@link PropertyMetadataInterface} instances.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link Mapping\ClassMetadataInterface} instead.
- */
-interface PropertyMetadataContainerInterface
-{
-    /**
-     * Check if there's any metadata attached to the given named property.
-     *
-     * @param string $property The property name.
-     *
-     * @return bool
-     */
-    public function hasPropertyMetadata($property);
-
-    /**
-     * Returns all metadata instances for the given named property.
-     *
-     * If your implementation does not support properties, simply throw an
-     * exception in this method (for example a <tt>BadMethodCallException</tt>).
-     *
-     * @param string $property The property name.
-     *
-     * @return PropertyMetadataInterface[] A list of metadata instances. Empty if
-     *                                     no metadata exists for the property.
-     */
-    public function getPropertyMetadata($property);
-}
diff --git a/vendor/symfony/validator/PropertyMetadataInterface.php b/vendor/symfony/validator/PropertyMetadataInterface.php
deleted file mode 100644
index 46e7c69..0000000
--- a/vendor/symfony/validator/PropertyMetadataInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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;
-
-/**
- * A container for validation metadata of a property.
- *
- * What exactly you define as "property" is up to you. The validator expects
- * implementations of {@link MetadataInterface} that contain constraints and
- * optionally a list of named properties that also have constraints (and may
- * have further sub properties). Such properties are mapped by implementations
- * of this interface.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see MetadataInterface
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link Mapping\PropertyMetadataInterface} instead.
- */
-interface PropertyMetadataInterface extends MetadataInterface
-{
-    /**
-     * Returns the name of the property.
-     *
-     * @return string The property name.
-     */
-    public function getPropertyName();
-
-    /**
-     * Extracts the value of the property from the given container.
-     *
-     * @param mixed $containingValue The container to extract the property value from.
-     *
-     * @return mixed The value of the property.
-     */
-    public function getPropertyValue($containingValue);
-}
diff --git a/vendor/symfony/validator/README.md b/vendor/symfony/validator/README.md
deleted file mode 100644
index 4555b9a..0000000
--- a/vendor/symfony/validator/README.md
+++ /dev/null
@@ -1,126 +0,0 @@
-Validator Component
-===================
-
-This component is based on the JSR-303 Bean Validation specification and
-enables specifying validation rules for classes using XML, YAML, PHP or
-annotations, which can then be checked against instances of these classes.
-
-Usage
------
-
-The component provides "validation constraints", which are simple objects
-containing the rules for the validation. Let's validate a simple string
-as an example:
-
-```php
-use Symfony\Component\Validator\Validation;
-use Symfony\Component\Validator\Constraints\Length;
-
-$validator = Validation::createValidator();
-
-$violations = $validator->validateValue('Bernhard', new Length(array('min' => 10)));
-```
-
-This validation will fail because the given string is shorter than ten
-characters. The precise errors, here called "constraint violations",  are
-returned by the validator. You can analyze these or return them to the user.
-If the violation list is empty, validation succeeded.
-
-Validation of arrays is possible using the `Collection` constraint:
-
-```php
-use Symfony\Component\Validator\Validation;
-use Symfony\Component\Validator\Constraints as Assert;
-
-$validator = Validation::createValidator();
-
-$constraint = new Assert\Collection(array(
-    'name' => new Assert\Collection(array(
-        'first_name' => new Assert\Length(array('min' => 101)),
-        'last_name' => new Assert\Length(array('min' => 1)),
-    )),
-    'email' => new Assert\Email(),
-    'simple' => new Assert\Length(array('min' => 102)),
-    'gender' => new Assert\Choice(array(3, 4)),
-    'file' => new Assert\File(),
-    'password' => new Assert\Length(array('min' => 60)),
-));
-
-$violations = $validator->validateValue($input, $constraint);
-```
-
-Again, the validator returns the list of violations.
-
-Validation of objects is possible using "constraint mapping". With such
-a mapping you can put constraints onto properties and objects of classes.
-Whenever an object of this class is validated, its properties and
-method results are matched against the constraints.
-
-```php
-use Symfony\Component\Validator\Validation;
-use Symfony\Component\Validator\Constraints as Assert;
-
-class User
-{
-    /**
-     * @Assert\Length(min = 3)
-     * @Assert\NotBlank
-     */
-    private $name;
-
-    /**
-     * @Assert\Email
-     * @Assert\NotBlank
-     */
-    private $email;
-
-    public function __construct($name, $email)
-    {
-        $this->name = $name;
-        $this->email = $email;
-    }
-
-    /**
-     * @Assert\IsTrue(message = "The user should have a Google Mail account")
-     */
-    public function isGmailUser()
-    {
-        return false !== strpos($this->email, '@gmail.com');
-    }
-}
-
-$validator = Validation::createValidatorBuilder()
-    ->enableAnnotationMapping()
-    ->getValidator();
-
-$user = new User('John Doe', 'john@example.com');
-
-$violations = $validator->validate($user);
-```
-
-This example uses the annotation support of Doctrine Common to
-map constraints to properties and methods. You can also map constraints
-using XML, YAML or plain PHP, if you dislike annotations or don't want
-to include Doctrine. Check the documentation for more information about
-these drivers.
-
-Resources
----------
-
-Silex integration:
-
-https://github.com/silexphp/Silex/blob/master/src/Silex/Provider/ValidatorServiceProvider.php
-
-Documentation:
-
-https://symfony.com/doc/2.7/book/validation.html
-
-JSR-303 Specification:
-
-http://jcp.org/en/jsr/detail?id=303
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/Validator/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/validator/Resources/translations/validators.af.xlf b/vendor/symfony/validator/Resources/translations/validators.af.xlf
deleted file mode 100644
index 177bb00..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.af.xlf
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Hierdie waarde moet vals wees.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Hierdie waarde moet waar wees.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Hierdie waarde moet van die soort {{type}} wees.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Hierdie waarde moet leeg wees.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Die waarde wat jy gekies het is nie 'n geldige keuse nie.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Jy moet ten minste {{ limit }} kies.|Jy moet ten minste {{ limit }} keuses kies.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Jy moet by die meeste {{ limit }} keuse kies.|Jy moet by die meeste {{ limit }} keuses kies.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Een of meer van die gegewe waardes is ongeldig.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Die veld is nie verwag nie.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Hierdie veld ontbreek.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Hierdie waarde is nie 'n geldige datum nie.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Hierdie waarde is nie 'n geldige datum en tyd nie.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Hierdie waarde is nie 'n geldige e-pos adres nie.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Die lêer kon nie gevind word nie.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Die lêer kan nie gelees word nie.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Die lêer is te groot ({{ size }} {{ suffix }}). Toegelaat maksimum grootte is {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Die MIME-tipe van die lêer is ongeldig ({{ type }}). Toegelaat MIME-tipes is {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Hierdie waarde moet {{ limit }} of minder wees.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Hierdie waarde is te lank. Dit moet {{ limit }} karakter of minder wees.|Hierdie waarde is te lank. Dit moet {{ limit }} karakters of minder wees.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Hierdie waarde moet {{ limit }} of meer wees.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Hierdie waarde is te kort. Dit moet {{ limit }} karakter of meer wees.|Hierdie waarde is te kort. Dit moet {{ limit }} karakters of meer wees.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Hierdie waarde moet nie leeg wees nie.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Hierdie waarde moet nie nul wees nie.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Hierdie waarde moet nul wees.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Hierdie waarde is nie geldig nie.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Hierdie waarde is nie 'n geldige tyd nie.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Hierdie waarde is nie 'n geldige URL nie.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Die twee waardes moet gelyk wees.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Die lêer is te groot. Toegelaat maksimum grootte is {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Die lêer is te groot.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Die lêer kan nie opgelaai word nie.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Hierdie waarde moet 'n geldige nommer wees.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Hierdie lêer is nie 'n geldige beeld nie.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Hierdie is nie 'n geldige IP-adres nie.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Hierdie waarde is nie 'n geldige taal nie.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Hierdie waarde is nie 'n geldige land instelling nie.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Hierdie waarde is nie 'n geldige land nie.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Hierdie waarde word reeds gebruik.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Die grootte van die beeld kon nie opgespoor word nie.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Die beeld breedte is te groot ({{ width }}px). Toegelaat maksimum breedte is {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Die beeld breedte is te klein ({{ width }}px). Minimum breedte verwag is {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Die beeld hoogte is te groot ({{ height }}px). Toegelaat maksimum hoogte is {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Die beeld hoogte is te klein ({{ height }}px). Minimum hoogte verwag is {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Hierdie waarde moet die huidige wagwoord van die gebruiker wees.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Hierdie waarde moet presies {{ limit }} karakter wees.|Hierdie waarde moet presies {{ limit }} karakters wees.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Die lêer is slegs gedeeltelik opgelaai.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Geen lêer is opgelaai nie.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Geen tydelike lêer is ingestel in php.ini nie.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Kan nie tydelike lêer skryf op skyf nie.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>'n PHP-uitbreiding veroorsaak die oplaai van die lêer om te misluk.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Hierdie versameling moet {{ limit }} element of meer bevat.|Hierdie versameling moet {{ limit }} elemente of meer bevat.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Hierdie versameling moet {{ limit }} element of minder bevat.|Hierdie versameling moet {{ limit }} elemente of meer bevat.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Hierdie versameling moet presies {{ limit }} element bevat.|Hierdie versameling moet presies {{ limit }} elemente bevat.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Ongeldige kredietkaart nommer.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Nie-ondersteunde tipe kaart of ongeldige kredietkaart nommer.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.ar.xlf b/vendor/symfony/validator/Resources/translations/validators.ar.xlf
deleted file mode 100644
index 4950e0c..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.ar.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>هذه القيمة يجب أن تكون خاطئة.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>هذه القيمة يجب أن تكون حقيقية.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>هذه القيمة يجب ان تكون من نوع {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>هذه القيمة يجب ان تكون فارغة.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>القيمة المختارة ليست خيارا صحيحا.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>يجب ان تختار {{ limit }} اختيار على الاقل.|يجب ان تختار {{ limit }} اختيار على الاقل.|يجب ان تختار {{ limit }} اختيارات على الاقل.|يجب ان تختار {{ limit }} اختيار على الاقل.|يجب ان تختار {{ limit }} اختيار على الاقل.|يجب ان تختار {{ limit }} اختيار على الاقل.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>يجب ان تختار {{ limit }} اختيار على الاكثر.|يجب ان تختار {{ limit }} اختيار على الاكثر.|يجب ان تختار {{ limit }} اختيارات على الاكثر.|يجب ان تختار {{ limit }} اختيار على الاكثر.|يجب ان تختار {{ limit }} اختيار على الاكثر.|يجب ان تختار {{ limit }} اختيار على الاكثر.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>واحد أو أكثر من القيم المعطاه خاطئ.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>لم يكن من المتوقع هذا المجال.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>هذا المجال مفقود.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>هذه القيمة ليست تاريخا صالحا.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>هذه القيمة ليست تاريخا و وقتا صالحا.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>هذه القيمة ليست عنوان بريد إلكتروني صحيح.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>لا يمكن العثور على الملف.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>الملف غير قابل للقراءة.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>الملف كبير جدا ({{ size }} {{ suffix }}).اقصى مساحه مسموح بها ({{ limit }} {{ suffix }}).</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>نوع الملف غير صحيح ({{ type }}). الانواع المسموح بها هى {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>هذه القيمة يجب ان تكون {{ limit }} او اقل.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حرف او اقل.|هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حرف او اقل.|هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حروف او اقل.|هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حرف او اقل.|هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حرف او اقل.|هذه القيمة طويلة جدا. يجب ان تكون {{ limit }} حرف او اقل.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>هذه القيمة يجب ان تكون {{ limit }} او اكثر.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حرف او اكثر.|هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حرف او اكثر.|هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حروف او اكثر.|هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حرف او اكثر.|هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حرف او اكثر.|هذه القيمة قصيرة جدا. يجب ان تكون {{ limit }} حرف او اكثر.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>هذه القيمة يجب الا تكون فارغة.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>هذه القيمة يجب الا تكون فارغة.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>هذه القيمة يجب ان تكون فارغة.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>هذه القيمة غير صحيحة.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>هذه القيمة ليست وقت صحيح.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>هذه القيمة ليست رابط الكترونى صحيح.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>القيمتان يجب ان تكونا متساويتان.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>الملف كبير جدا. اقصى مساحه مسموح بها {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>الملف كبير جدا.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>لم استطع استقبال الملف.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>هذه القيمة يجب ان تكون رقم.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>هذا الملف ليس صورة صحيحة.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>هذه القيمة ليست عنوان رقمى صحيح.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>هذه القيمة ليست لغة صحيحة.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>هذه القيمة ليست موقع صحيح.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>هذه القيمة ليست بلدا صالحا.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>هذه القيمة مستخدمة بالفعل.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>لم استطع معرفة حجم الصورة.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>عرض الصورة كبير جدا ({{ width }}px). اقصى عرض مسموح به هو{{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>عرض الصورة صغير جدا ({{ width }}px). اقل عرض مسموح به هو{{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>طول الصورة كبير جدا ({{ height }}px). اقصى طول مسموح به هو{{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>طول الصورة صغير جدا ({{ height }}px). اقل طول مسموح به هو{{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>هذه القيمة يجب ان تكون كلمة سر المستخدم الحالية.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>هذه القيمة يجب ان تحتوى على {{ limit }} حرف فقط.|هذه القيمة يجب ان تحتوى على {{ limit }} حرف فقط.|هذه القيمة يجب ان تحتوى على {{ limit }} حروف فقط.|هذه القيمة يجب ان تحتوى على {{ limit }} حرف فقط.|هذه القيمة يجب ان تحتوى على {{ limit }} حرف فقط.|هذه القيمة يجب ان تحتوى على {{ limit }} حرف فقط.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>تم استقبال جزء من الملف فقط.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>لم يتم ارسال اى ملف.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>لم يتم تهيئة حافظة مؤقتة فى ملف php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>لم استطع كتابة الملف المؤقت.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>احد اضافات PHP تسببت فى فشل استقبال الملف.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اكثر.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اكثر.|هذه المجموعة يجب ان تحتوى على {{ limit }} عناصر او اكثر.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اكثر.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اكثر.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اكثر.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اقل.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اقل.|هذه المجموعة يجب ان تحتوى على {{ limit }} عناصر او اقل.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اقل.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اقل.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر او اقل.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر فقط.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر فقط.|هذه المجموعة يجب ان تحتوى على {{ limit }} عناصر فقط.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر فقط.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر فقط.|هذه المجموعة يجب ان تحتوى على {{ limit }} عنصر فقط.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>رقم البطاقه غير صحيح.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>نوع البطاقه غير مدعوم او الرقم غير صحيح.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>الرقم IBAN (رقم الحساب المصرفي الدولي) الذي تم إدخاله غير صالح.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>هذه القيمة ليست ISBN-10 صالحة.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>هذه القيمة ليست ISBN-13 صالحة.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>هذه القيمة ليست ISBN-10 صالحة ولا ISBN-13 صالحة.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>هذه القيمة ليست ISSN صالحة.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>العُملة غير صحيحة.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>القيمة يجب ان تساوي {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>القيمة يجب ان تكون اعلي من {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>القيمة يجب ان تكون مساوية او اعلي من {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>القيمة يجب ان تطابق {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>القيمة يجب ان تكون اقل من {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>القيمة يجب ان تساوي او تقل عن {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>القيمة يجب ان لا تساوي {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>القيمة يجب ان لا تطابق {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>نسبة العرض على الارتفاع للصورة كبيرة جدا ({{ ratio }}). الحد الأقصى للنسبة المسموح به هو {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>نسبة العرض على الارتفاع للصورة صغيرة جدا ({{ ratio }}). الحد الأدنى للنسبة المسموح به هو {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>الصورة مربعة ({{ width }}x{{ height }}px). الصور المربعة غير مسموح بها.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>الصورة في وضع أفقي ({{ width }}x{{ height }}px). الصور في وضع أفقي غير مسموح بها.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>الصورة في وضع عمودي ({{ width }}x{{ height }}px). الصور في وضع عمودي غير مسموح بها.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>ملف فارغ غير مسموح به.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>يتعذر الإتصال بالنطاق.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>هذه القيمة غير متطابقة مع صيغة التحويل {{ charset }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.az.xlf b/vendor/symfony/validator/Resources/translations/validators.az.xlf
deleted file mode 100644
index add868c..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.az.xlf
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Bu dəyər false olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Bu dəyər true olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Bu dəyərin tipi {{ type }} olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Bu dəyər boş olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Seçdiyiniz dəyər düzgün bir seçim değil.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Ən az {{ limit }} seçim qeyd edilməlidir.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Ən çox {{ limit }} seçim qeyd edilməlidir.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Təqdim edilən dəyərlərdən bir və ya bir neçəsi yanlışdır.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Bu sahə gözlənilmirdi.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Bu sahə əksikdir.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Bu dəyər düzgün bir tarix deyil.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Bu dəyər düzgün bir tarixsaat deyil.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Bu dəyər düzgün bir e-poçt adresi deyil.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Fayl tapılmadı.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Fayl oxunabilən deyil.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Fayl çox böyükdür ({{ size }} {{ suffix }}). İcazə verilən maksimum fayl ölçüsü {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Faylın mime tipi yanlışdr ({{ type }}). İcazə verilən mime tipləri {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Bu dəyər {{ limit }} və ya altında olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Bu dəyər çox uzundur. {{ limit }} və ya daha az simvol olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Bu dəyər {{ limit }} veya daha fazla olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Bu dəyər çox qısadır. {{ limit }} və ya daha çox simvol olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Bu dəyər boş olmamalıdır.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Bu dəyər boş olmamalıdır.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Bu dəyər boş olmamalıdır.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Bu dəyər doğru deyil.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Bu dəyər doğru bir saat deyil.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Bu dəyər doğru bir URL değil.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>İki dəyər eyni olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Fayl çox böyükdür. İcazə verilən ən böyük fayl ölçüsü {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Fayl çox böyükdür.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Fayl yüklənəbilmir.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Bu dəyər rəqəm olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Bu fayl düzgün bir şəkil deyil.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Bu düzgün bir IP adresi deyil.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Bu dəyər düzgün bir dil deyil.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Bu dəyər düzgün bir dil deyil.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Bu dəyər düzgün bir ölkə deyil.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Bu dəyər hal-hazırda istifadədədir.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Şəklin ölçüsü hesablana bilmir.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Şəklin genişliyi çox böyükdür ({{ width }}px). İcazə verilən ən böyük genişlik {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Şəklin genişliyi çox kiçikdir ({{ width }}px). Ən az {{ min_width }}px olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Şəklin yüksəkliyi çox böyükdür ({{ height }}px). İcazə verilən ən böyük yüksəklik {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Şəklin yüksəkliyi çox kiçikdir ({{ height }}px). Ən az {{ min_height }}px olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Bu dəyər istifadəçinin hazırkı parolu olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Bu dəyər tam olaraq {{ limit }} simvol olmaldır.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Fayl qismən yükləndi.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Fayl yüklənmədi.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>php.ini'də müvəqqəti qovluq quraşdırılmayıb.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Müvəqqəti fayl diskə yazıla bilmir.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Bir PHP əlavəsi faylın yüklənməsinə mane oldu.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Bu kolleksiyada {{ limit }} və ya daha çox element olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Bu kolleksiyada {{ limit }} və ya daha az element olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Bu kolleksiyada tam olaraq {{ limit }} element olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Yanlış kart nömrəsi.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Dəstəklənməyən kart tipi və ya yanlış kart nömrəsi.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.bg.xlf b/vendor/symfony/validator/Resources/translations/validators.bg.xlf
deleted file mode 100644
index 7c5da55..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.bg.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Стойността трябва да бъде лъжа (false).</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Стойността трябва да бъде истина (true).</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Стойността трябва да бъде от тип {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Стойността трябва да бъде празна.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Избраната стойност е невалидна.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Трябва да изберете поне {{ limit }} опция.|Трябва да изберете поне {{ limit }} опции.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Трябва да изберете най-много {{ limit }} опция.|Трябва да изберете най-много {{ limit }} опции.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Една или повече от зададените стойности е невалидна.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Това поле не се е очаквало.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Това поле липсва.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Стойността не е валидна дата (date).</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Стойността не е валидна дата (datetime).</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Стойността не е валиден email адрес.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Файлът не беше открит.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Файлът не може да бъде прочетен.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Файлът е твърде голям ({{ size }} {{ suffix }}). Максималният размер е {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Майм типа на файла е невалиден ({{ type }}). Разрешени майм типове са {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Стойността трябва да бъде {{ limit }} или по-малко.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Стойността е твърде дълга. Трябва да съдържа най-много {{ limit }} символ.|Стойността е твърде дълга. Трябва да съдържа най-много {{ limit }} символа.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Стойността трябва да бъде {{ limit }} или повече.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Стойността е твърде кратка. Трябва да съдържа поне {{ limit }} символ.|Стойността е твърде кратка. Трябва да съдържа поне {{ limit }} символа.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Стойността не трябва да бъде празна.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Стойността не трябва да бъде null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Стойността трябва да бъде null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Стойността не е валидна.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Стойността не е валидно време (time).</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Стойността не е валиден URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Двете стойности трябва да бъдат равни.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Файлът е твърде голям. Разрешеният максимален размер е {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Файлът е твърде голям.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Файлът не може да бъде качен.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Стойността трябва да бъде валиден номер.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Файлът не е валидно изображение.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Това не е валиден IP адрес.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Стойността не е валиден език.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Стойността не е валидна локализация.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Стойността не е валидна държава.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Стойността вече е в употреба.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Размера на изображението не може да бъде определен.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Изображението е твърде широко ({{ width }}px). Широчината трябва да бъде максимум {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Изображението е с твърде малка широчина ({{ width }}px). Широчината трябва да бъде минимум {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Изображението е с твърде голяма височина ({{ height }}px). Височината трябва да бъде максимум {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Изображението е с твърде малка височина ({{ height }}px). Височина трябва да бъде минимум {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Стойността трябва да бъде текущата потребителска парола.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Стойността трябва да бъде точно {{ limit }} символ.|Стойността трябва да бъде точно {{ limit }} символа.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Файлът е качен частично.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Файлът не беше качен.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Не е посочена директория за временни файлове в php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Не може да запише временен файл на диска.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>PHP разширение предизвика прекъсване на качването.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Колекцията трябва да съдържа поне {{ limit }} елемент.|Колекцията трябва да съдържа поне {{ limit }} елемента.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Колекцията трябва да съдържа най-много {{ limit }} елемент.|Колекцията трябва да съдържа най-много {{ limit }} елемента.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Колекцията трябва да съдържа точно {{ limit }} елемент.|Колекцията трябва да съдържа точно {{ limit }} елемента.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Невалиден номер на картата.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Неподдържан тип карта или невалиден номер на картата.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Невалиден Международен номер на банкова сметка (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Невалиден ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Невалиден ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Невалидна стойност както за ISBN-10, така и за ISBN-13 .</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Невалиден Международен стандартен сериен номер (ISSN).</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Невалидна валута.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Стойността трябва да бъде равна на {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Стойността трябва да бъде по-голяма от {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Стойността трябва да бъде по-голяма или равна на {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Стойността трябва да бъде идентична с {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Стойността трябва да бъде по-малка {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Стойността трябва да бъде по-малка или равна на {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Стойността не трябва да бъде равна на {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Стойността не трябва да бъде идентична с {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.ca.xlf b/vendor/symfony/validator/Resources/translations/validators.ca.xlf
deleted file mode 100644
index 85b6970..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.ca.xlf
+++ /dev/null
@@ -1,307 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Aquest valor hauria de ser fals.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Aquest valor hauria de ser cert.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Aquest valor hauria de ser del tipus {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Aquest valor hauria d'estar buit.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>El valor seleccionat no és una opció vàlida.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Ha de seleccionar almenys {{ limit }} opció.|Ha de seleccionar almenys {{ limit }} opcions.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Ha de seleccionar com a màxim {{ limit }} opció.|Ha de seleccionar com a màxim {{ limit }} opcions.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Un o més dels valors facilitats són incorrectes.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Aquest camp no s'esperava.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Aquest camp està desaparegut.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Aquest valor no és una data vàlida.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Aquest valor no és una data i hora vàlida.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Aquest valor no és una adreça d'email vàlida.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>No s'ha pogut trobar l'arxiu.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>No es pot llegir l'arxiu.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>L'arxiu és massa gran ({{ size }} {{ suffix }}). La grandària màxima permesa és {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>El tipus mime de l'arxiu no és vàlid ({{ type }}). Els tipus mime vàlids són {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Aquest valor hauria de ser {{ limit }} o menys.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Aquest valor és massa llarg. Hauria de tenir {{ limit }} caràcter o menys.|Aquest valor és massa llarg. Hauria de tenir {{ limit }} caràcters o menys.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Aquest valor hauria de ser {{ limit }} o més.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Aquest valor és massa curt. Hauria de tenir {{ limit }} caràcters o més.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Aquest valor no hauria d'estar buit.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Aquest valor no hauria de ser null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Aquest valor hauria de ser null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Aquest valor no és vàlid.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Aquest valor no és una hora vàlida.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Aquest valor no és una URL vàlida.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Els dos valors haurien de ser iguals.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>L'arxiu és massa gran. El tamany màxim permés és {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>L'arxiu és massa gran.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>No es pot pujar l'arxiu.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Aquest valor hauria de ser un nombre vàlid.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>L'arxiu no és una imatge vàlida.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Això no és una adreça IP vàlida.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Aquest valor no és un idioma vàlid.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Aquest valor no és una localització vàlida.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Aquest valor no és un país vàlid.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Aquest valor ja s'ha utilitzat.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>No s'ha pogut determinar la grandària de la imatge.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>L'amplària de la imatge és massa gran ({{ width }}px). L'amplària màxima permesa són {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>L'amplària de la imatge és massa petita ({{ width }}px). L'amplària mínima requerida són {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>L'altura de la imatge és massa gran ({{ height }}px). L'altura màxima permesa són {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>L'altura de la imatge és massa petita ({{ height }}px). L'altura mínima requerida són {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Aquest valor hauria de ser la contrasenya actual de l'usuari.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Aquest valor hauria de tenir exactament {{ limit }} caràcter.|Aquest valor hauria de tenir exactament {{ limit }} caràcters.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>L'arxiu va ser només pujat parcialment.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Cap arxiu va ser pujat.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Cap carpeta temporal va ser configurada en php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>No es va poder escriure l'arxiu temporal en el disc.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Una extensió de PHP va fer que la pujada fallara.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Aquesta col·lecció ha de contenir {{ limit }} element o més.|Aquesta col·lecció ha de contenir {{ limit }} elements o més.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Aquesta col·lecció ha de contenir {{ limit }} element o menys.|Aquesta col·lecció ha de contenir {{ limit }} elements o menys.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Aquesta col·lecció ha de contenir exactament {{ limit }} element.|Aquesta col·lecció ha de contenir exactament {{ limit }} elements.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Número de targeta invàlid.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Tipus de targeta no suportada o número de targeta invàlid.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Això no és un nombre de compte bancari internacional (IBAN) vàlid.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Aquest valor no és un ISBN-10 vàlid.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Aquest valor no és un ISBN-13 vàlid.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Aquest valor no és ni un ISBN-10 vàlid ni un ISBN-13 vàlid.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Aquest valor no és un ISSN vàlid.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Aquest valor no és una divisa vàlida.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Aquest valor hauria de ser igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Aquest valor hauria de ser més gran a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Aquest valor hauria de ser major o igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Aquest valor hauria de ser idèntic a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Aquest valor hauria de ser menor a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Aquest valor hauria de ser menor o igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Aquest valor no hauria de ser igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Aquest valor no hauria de idèntic a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>La proporció de l'imatge és massa gran ({{ ratio }}). La màxima proporció permesa és {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>La proporció de l'imatge és massa petita ({{ ratio }}). La mínima proporció permesa és {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>L'imatge és quadrada({{ width }}x{{ height }}px). Les imatges quadrades no estan permeses.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>L'imatge està orientada horitzontalment ({{ width }}x{{ height }}px). Les imatges orientades horitzontalment no estan permeses.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>L'imatge està orientada verticalment ({{ width }}x{{ height }}px). Les imatges orientades verticalment no estan permeses.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>No està permès un fixter buit.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.cs.xlf b/vendor/symfony/validator/Resources/translations/validators.cs.xlf
deleted file mode 100644
index 2ae47b2..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.cs.xlf
+++ /dev/null
@@ -1,307 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Tato hodnota musí být nepravdivá (false).</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Tato hodnota musí být pravdivá (true).</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Tato hodnota musí být typu {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Tato hodnota musí být prázdná.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Vybraná hodnota není platnou možností.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Musí být vybrána nejméně {{ limit }} možnost.|Musí být vybrány nejméně {{ limit }} možnosti.|Musí být vybráno nejméně {{ limit }} možností.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Musí být vybrána maximálně {{ limit }} možnost.|Musí být vybrány maximálně {{ limit }} možnosti.|Musí být vybráno maximálně {{ limit }} možností.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Některé z uvedených hodnot jsou neplatné.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Toto pole nebyla očekávána.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Toto pole chybí.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Tato hodnota není platné datum.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Tato hodnota není platné datum s časovým údajem.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Tato hodnota není platná e-mailová adresa.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Soubor nebyl nalezen.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Soubor je nečitelný.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Soubor je příliš velký ({{ size }} {{ suffix }}). Maximální povolená velikost souboru je {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Neplatný mime typ souboru ({{ type }}). Povolené mime typy souborů jsou {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Tato hodnota musí být {{ limit }} nebo méně.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Tato hodnota je příliš dlouhá. Musí obsahovat maximálně {{ limit }} znak.|Tato hodnota je příliš dlouhá. Musí obsahovat maximálně {{ limit }} znaky.|Tato hodnota je příliš dlouhá. Musí obsahovat maximálně {{ limit }} znaků.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Tato hodnota musí být {{ limit }} nebo více.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Tato hodnota je příliš krátká. Musí obsahovat minimálně {{ limit }} znak.|Tato hodnota je příliš krátká. Musí obsahovat minimálně {{ limit }} znaky.|Tato hodnota je příliš krátká. Musí obsahovat minimálně {{ limit }} znaků.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Tato hodnota nesmí být prázdná.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Tato hodnota nesmí být null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Tato hodnota musí být null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Tato hodnota není platná.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Tato hodnota není platný časový údaj.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Tato hodnota není platná URL adresa.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Tyto dvě hodnoty musí být stejné.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Soubor je příliš velký. Maximální povolená velikost souboru je {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Soubor je příliš velký.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Soubor se nepodařilo nahrát.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Tato hodnota musí být číslo.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Tento soubor není obrázek.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Toto není platná IP adresa.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Tento jazyk neexistuje.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Tato lokalizace neexistuje.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Tato země neexistuje.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Tato hodnota je již používána.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Nepodařily se zjistit rozměry obrázku.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Obrázek je příliš široký ({{ width }}px). Maximální povolená šířka obrázku je {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Obrázek je příliš úzký ({{ width }}px). Minimální šířka musí být {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Obrázek je příliš vysoký ({{ height }}px). Maximální povolená výška obrázku je {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Obrázek je příliš nízký ({{ height }}px). Minimální výška obrázku musí být {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Tato hodnota musí být aktuální heslo uživatele.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Tato hodnota musí mít přesně {{ limit }} znak.|Tato hodnota musí mít přesně {{ limit }} znaky.|Tato hodnota musí mít přesně {{ limit }} znaků.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Byla nahrána jen část souboru.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Žádný soubor nebyl nahrán.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>V php.ini není nastavena cesta k adresáři pro dočasné soubory.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Dočasný soubor se nepodařilo zapsat na disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Rozšíření PHP zabránilo nahrání souboru.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Tato kolekce musí obsahovat minimálně {{ limit }} prvek.|Tato kolekce musí obsahovat minimálně {{ limit }} prvky.|Tato kolekce musí obsahovat minimálně {{ limit }} prvků.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Tato kolekce musí obsahovat maximálně {{ limit }} prvek.|Tato kolekce musí obsahovat maximálně {{ limit }} prvky.|Tato kolekce musí obsahovat maximálně {{ limit }} prvků.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Tato kolekce musí obsahovat přesně {{ limit }} prvek.|Tato kolekce musí obsahovat přesně {{ limit }} prvky.|Tato kolekce musí obsahovat přesně {{ limit }} prvků.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Neplatné číslo karty.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Nepodporovaný typ karty nebo neplatné číslo karty.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Toto je neplatný IBAN.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Tato hodnota není platné ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Tato hodnota není platné ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Tato hodnota není platné ISBN-10 ani ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Tato hodnota není platné ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Tato měna neexistuje.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Tato hodnota musí být rovna {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Tato hodnota musí být větší než {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Tato hodnota musí být větší nebo rovna {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Tato hodnota musí být typu {{ compared_value_type }} a zároveň musí být rovna {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Tato hodnota musí být menší než {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Tato hodnota musí být menší nebo rovna {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Tato hodnota nesmí být rovna {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Tato hodnota nesmí být typu {{ compared_value_type }} a zároveň nesmí být rovna {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Poměr stran obrázku je příliš velký ({{ ratio }}). Maximální povolený poměr stran obrázku je {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Poměr stran obrázku je příliš malý ({{ ratio }}). Minimální povolený poměr stran obrázku je {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>Strany obrázku jsou čtvercové ({{ width }}x{{ height }}px). Čtvercové obrázky nejsou povolené.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>Obrázek je orientovaný na šířku ({{ width }}x{{ height }}px). Obrázky orientované na šířku nejsou povolené.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>Obrázek je orientovaný na výšku ({{ width }}x{{ height }}px). Obrázky orientované na výšku nejsou povolené.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Soubor nesmí být prázdný.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.cy.xlf b/vendor/symfony/validator/Resources/translations/validators.cy.xlf
deleted file mode 100644
index da7cb9a..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.cy.xlf
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Dylid bod y gwerth hwn yn ffug.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Dylid bod y gwerth hwn yn wir.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Dylid bod y gwerth hwn bod o fath {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Dylid bod y gwerth hwn yn wag.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Nid yw'r gwerth â ddewiswyd yn ddilys.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Rhaid dewis o leiaf {{ limit }} opsiwn.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Rhaid dewis dim mwy na {{ limit }} opsiwn.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Mae un neu fwy o'r gwerthoedd a roddwyd yn annilys.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Nid oedd disgwyl y maes hwn.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Mae'r maes hwn ar goll.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Nid yw'r gwerth yn ddyddiad dilys.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Nid yw'r gwerth yn datetime dilys.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Nid yw'r gwerth yn gyfeiriad ebost dilys.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Ni ddarganfyddwyd y ffeil.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Ni ellir darllen y ffeil.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Mae'r ffeil yn rhy fawr ({{ size }} {{ suffix }}). Yr uchafswm â ganiateir yw {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Nid yw math mime y ffeil yn ddilys ({{ type }}). Dyma'r mathau â ganiateir {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Dylai'r gwerth hwn fod yn {{ limit }} neu lai.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Mae'r gwerth hwn rhy hir. Dylai gynnwys {{ limit }} nodyn cyfrifiadurol neu lai.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Dylai'r gwerth hwn fod yn {{ limit }} neu fwy.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Mae'r gwerth hwn yn rhy fyr. Dylai gynnwys {{ limit }} nodyn cyfrifiadurol neu fwy.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Ni ddylai'r gwerth hwn fod yn wag.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Ni ddylai'r gwerth hwn fod yn null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Dylai'r gwerth fod yn null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Nid yw'r gwerth hwn yn ddilys.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Nid yw'r gwerth hwn yn amser dilys.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Nid yw'r gwerth hwn yn URL dilys.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Rhaid i'r ddau werth fod yn gyfystyr a'u gilydd.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Mae'r ffeil yn rhy fawr. Yr uchafswm â ganiateir yw {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Mae'r ffeil yn rhy fawr.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Methwyd ag uwchlwytho'r ffeil.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Dylai'r gwerth hwn fod yn rif dilys.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Nid yw'r ffeil hon yn ddelwedd dilys.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Nid yw hwn yn gyfeiriad IP dilys.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Nid yw'r gwerth hwn yn iaith ddilys.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Nid yw'r gwerth hwn yn locale dilys.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Nid yw'r gwerth hwn yn wlad dilys.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Mae'r gwerth hwn eisoes yn cael ei ddefnyddio.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Methwyd â darganfod maint y ddelwedd.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Mae lled y ddelwedd yn rhy fawr ({{ width }}px). Y lled mwyaf â ganiateir yw {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Mae lled y ddelwedd yn rhy fach ({{ width }}px). Y lled lleiaf â ganiateir yw {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Mae uchder y ddelwedd yn rhy fawr ({{ width }}px). Yr uchder mwyaf â ganiateir yw {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Mae uchder y ddelwedd yn rhy fach ({{ width }}px). Yr uchder lleiaf â ganiateir yw {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Dylaid bod y gwerth hwn yn gyfrinair presenol y defnyddiwr.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Dylai'r gwerth hwn fod yn union {{ limit }} nodyn cyfrifiadurol o hyd.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Dim ond rhan o'r ffeil ag uwchlwythwyd.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Ni uwchlwythwyd unrhyw ffeil.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Nid oes ffolder dros-dro wedi'i gosod yn php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Methwyd ag ysgrifennu'r ffeil dros-dro ar ddisg.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Methwyd ag uwchlwytho oherwydd ategyn PHP.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Dylai'r casgliad hwn gynnwys {{ limit }} elfen neu fwy.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Dylai'r casgliad hwn gynnwys {{ limit }} elfen neu lai.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Dylai'r casgliad hwn gynnwys union {{ limit }} elfen.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Nid oedd rhif y cerdyn yn ddilys.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Unai ni dderbynir y math yna o gerdyn, neu nid yw rhif y cerdyn yn ddilys.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.da.xlf b/vendor/symfony/validator/Resources/translations/validators.da.xlf
deleted file mode 100644
index 14e479a..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.da.xlf
+++ /dev/null
@@ -1,247 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Værdien skal være falsk.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Værdien skal være sand.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Værdien skal være af typen {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Værdien skal være blank.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Værdien skal være en af de givne muligheder.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Du skal vælge mindst {{ limit }} muligheder.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Du kan højest vælge {{ limit }} muligheder.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>En eller flere af de oplyste værdier er ugyldige.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Feltet blev ikke forventet.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Dette felt er mangler.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Værdien er ikke en gyldig dato.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Værdien er ikke en gyldig dato og tid.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Værdien er ikke en gyldig e-mail adresse.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Filen kunne ikke findes.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Filen kan ikke læses.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Filen er for stor ({{ size }} {{ suffix }}). Tilladte maksimale størrelse {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Mimetypen af filen er ugyldig ({{ type }}). Tilladte mimetyper er {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Værdien skal være {{ limit }} eller mindre.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Værdien er for lang. Den skal have {{ limit }} bogstaver eller mindre.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Værdien skal være {{ limit }} eller mere.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Værdien er for kort. Den skal have {{ limit }} tegn eller flere.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Værdien må ikke være blank.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Værdien må ikke være tom (null).</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Værdien skal være tom (null).</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Værdien er ikke gyldig.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Værdien er ikke en gyldig tid.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Værdien er ikke en gyldig URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>De to værdier skal være ens.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Filen er for stor. Den maksimale størrelse er {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Filen er for stor.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Filen kunne ikke blive uploadet.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Værdien skal være et gyldigt tal.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Filen er ikke gyldigt billede.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Dette er ikke en gyldig IP adresse.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Værdien er ikke et gyldigt sprog.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Værdien er ikke en gyldig lokalitet.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Værdien er ikke et gyldigt land.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Værdien er allerede i brug.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Størrelsen på billedet kunne ikke detekteres.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Billedbredden er for stor ({{ width }}px). Tilladt maksimumsbredde er {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Billedebredden er for lille ({{ width }}px). Forventet minimumshøjde er {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Billedhøjden er for stor ({{ height }}px). Tilladt maksimumshøjde er {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Billedhøjden er for lille ({{ height }}px). Forventet minimumshøjde er {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Værdien skal være brugerens nuværende password.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Værdien skal have præcis {{ limit }} tegn.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Filen var kun delvis uploadet.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Ingen fil blev uploadet.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Ingen midlertidig mappe er konfigureret i php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Kan ikke skrive midlertidig fil til disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>En PHP udvidelse forårsagede fejl i upload.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Denne samling skal indeholde {{ limit }} element eller flere.|Denne samling skal indeholde {{ limit }} elementer eller flere.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Denne samling skal indeholde {{ limit }} element eller mindre.|Denne samling skal indeholde {{ limit }} elementer eller mindre.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Denne samling skal indeholde præcis {{ limit }} element.|Denne samling skal indeholde præcis {{ limit }} elementer.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Ugyldigt kortnummer.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Ikke-understøttet korttype eller ugyldigt kortnummer.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Det er ikke en gyldig International Bank Account Number (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Værdien er ikke en gyldig ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Værdien er ikke en gyldig ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Værdien er hverken en gyldig ISBN-10 eller en gyldig ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Værdien er ikke en gyldig ISSN.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.de.xlf b/vendor/symfony/validator/Resources/translations/validators.de.xlf
deleted file mode 100644
index 105f2fb..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.de.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Dieser Wert sollte false sein.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Dieser Wert sollte true sein.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Dieser Wert sollte vom Typ {{ type }} sein.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Dieser Wert sollte leer sein.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Sie haben einen ungültigen Wert ausgewählt.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Sie müssen mindestens {{ limit }} Möglichkeit wählen.|Sie müssen mindestens {{ limit }} Möglichkeiten wählen.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Sie dürfen höchstens {{ limit }} Möglichkeit wählen.|Sie dürfen höchstens {{ limit }} Möglichkeiten wählen.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Einer oder mehrere der angegebenen Werte sind ungültig.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Dieses Feld wurde nicht erwartet.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Dieses Feld fehlt.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Dieser Wert entspricht keiner gültigen Datumsangabe.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Dieser Wert entspricht keiner gültigen Datums- und Zeitangabe.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Dieser Wert ist keine gültige E-Mail-Adresse.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Die Datei wurde nicht gefunden.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Die Datei ist nicht lesbar.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Die Datei ist zu groß ({{ size }} {{ suffix }}). Die maximal zulässige Größe beträgt {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Der Dateityp ist ungültig ({{ type }}). Erlaubte Dateitypen sind {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Dieser Wert sollte kleiner oder gleich {{ limit }} sein.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Diese Zeichenkette ist zu lang. Sie sollte höchstens {{ limit }} Zeichen haben.|Diese Zeichenkette ist zu lang. Sie sollte höchstens {{ limit }} Zeichen haben.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Dieser Wert sollte größer oder gleich {{ limit }} sein.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Diese Zeichenkette ist zu kurz. Sie sollte mindestens {{ limit }} Zeichen haben.|Diese Zeichenkette ist zu kurz. Sie sollte mindestens {{ limit }} Zeichen haben.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Dieser Wert sollte nicht leer sein.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Dieser Wert sollte nicht null sein.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Dieser Wert sollte null sein.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Dieser Wert ist nicht gültig.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Dieser Wert entspricht keiner gültigen Zeitangabe.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Dieser Wert ist keine gültige URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Die beiden Werte sollten identisch sein.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Die Datei ist zu groß. Die maximal zulässige Größe beträgt {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Die Datei ist zu groß.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Die Datei konnte nicht hochgeladen werden.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Dieser Wert sollte eine gültige Zahl sein.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Diese Datei ist kein gültiges Bild.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Dies ist keine gültige IP-Adresse.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Dieser Wert entspricht keiner gültigen Sprache.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Dieser Wert entspricht keinem gültigen Gebietsschema.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Dieser Wert entspricht keinem gültigen Land.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Dieser Wert wird bereits verwendet.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Die Größe des Bildes konnte nicht ermittelt werden.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Die Bildbreite ist zu groß ({{ width }}px). Die maximal zulässige Breite beträgt {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Die Bildbreite ist zu gering ({{ width }}px). Die erwartete Mindestbreite beträgt {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Die Bildhöhe ist zu groß ({{ height }}px). Die maximal zulässige Höhe beträgt {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Die Bildhöhe ist zu gering ({{ height }}px). Die erwartete Mindesthöhe beträgt {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Dieser Wert sollte dem aktuellen Benutzerpasswort entsprechen.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Dieser Wert sollte genau {{ limit }} Zeichen lang sein.|Dieser Wert sollte genau {{ limit }} Zeichen lang sein.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Die Datei wurde nur teilweise hochgeladen.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Es wurde keine Datei hochgeladen.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Es wurde kein temporärer Ordner in der php.ini konfiguriert.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Kann die temporäre Datei nicht speichern.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Eine PHP-Erweiterung verhinderte den Upload.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Diese Sammlung sollte {{ limit }} oder mehr Elemente beinhalten.|Diese Sammlung sollte {{ limit }} oder mehr Elemente beinhalten.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Diese Sammlung sollte {{ limit }} oder weniger Elemente beinhalten.|Diese Sammlung sollte {{ limit }} oder weniger Elemente beinhalten.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Diese Sammlung sollte genau {{ limit }} Element beinhalten.|Diese Sammlung sollte genau {{ limit }} Elemente beinhalten.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Ungültige Kartennummer.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Nicht unterstützer Kartentyp oder ungültige Kartennummer.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Dieser Wert ist keine gültige internationale Bankkontonummer (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Dieser Wert entspricht keiner gültigen ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Dieser Wert entspricht keiner gültigen ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Dieser Wert ist weder eine gültige ISBN-10 noch eine gültige ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Dieser Wert ist keine gültige ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Dieser Wert ist keine gültige Währung.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Dieser Wert sollte gleich {{ compared_value }} sein.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Dieser Wert sollte größer als {{ compared_value }} sein.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Dieser Wert sollte größer oder gleich {{ compared_value }} sein.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Dieser Wert sollte identisch sein mit {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Dieser Wert sollte kleiner als {{ compared_value }} sein.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Dieser Wert sollte kleiner oder gleich {{ compared_value }} sein.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Dieser Wert sollte nicht {{ compared_value }} sein.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Dieser Wert sollte nicht identisch sein mit {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Das Seitenverhältnis des Bildes ist zu groß ({{ ratio }}). Der erlaubte Maximalwert ist {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Das Seitenverhältnis des Bildes ist zu klein ({{ ratio }}). Der erwartete Minimalwert ist {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>Das Bild ist quadratisch ({{ width }}x{{ height }}px). Quadratische Bilder sind nicht erlaubt.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>Das Bild ist im Querformat ({{ width }}x{{ height }}px). Bilder im Querformat sind nicht erlaubt.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>Das Bild ist im Hochformat ({{ width }}x{{ height }}px). Bilder im Hochformat sind nicht erlaubt.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Eine leere Datei ist nicht erlaubt.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>Der Hostname konnte nicht aufgelöst werden.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>Dieser Wert entspricht nicht dem erwarteten Zeichensatz {{ charset }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.el.xlf b/vendor/symfony/validator/Resources/translations/validators.el.xlf
deleted file mode 100644
index 4fa0d42..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.el.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Αυτή η τιμή πρέπει να είναι ψευδής.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Αυτή η τιμή πρέπει να είναι αληθής.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Αυτή η τιμή πρέπει να είναι τύπου {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Αυτή η τιμή πρέπει να είναι κενή.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Η τιμή που επιλέχθηκε δεν αντιστοιχεί σε έγκυρη επιλογή.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Πρέπει να επιλέξετε τουλάχιστον {{ limit }} επιλογή.|Πρέπει να επιλέξετε τουλάχιστον {{ limit }} επιλογές.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Πρέπει να επιλέξετε το πολύ {{ limit }} επιλογή.|Πρέπει να επιλέξετε το πολύ {{ limit }} επιλογές.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Μια ή περισσότερες τιμές δεν είναι έγκυρες.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Αυτό το πεδίο δεν ήταν αναμενόμενο.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Λείπει αυτό το πεδίο.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Η τιμή δεν αντιστοιχεί σε έγκυρη ημερομηνία.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Η τιμή δεν αντιστοιχεί σε έγκυρη ημερομηνία και ώρα.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Η τιμή δεν αντιστοιχεί σε έγκυρο email.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Το αρχείο δε μπορεί να βρεθεί.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Το αρχείο δεν είναι αναγνώσιμο.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Το αρχείο είναι πολύ μεγάλο ({{ size }} {{ suffix }}). Το μέγιστο επιτρεπτό μέγεθος είναι {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Ο τύπος mime του αρχείου δεν είναι έγκυρος ({{ type }}). Οι έγκρυοι τύποι mime είναι {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Αυτή η τιμή θα έπρεπε να είναι {{ limit }} ή λιγότερο.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Αυτή η τιμή είναι πολύ μεγάλη. Θα έπρεπε να έχει {{ limit }} χαρακτήρα ή λιγότερο.|Αυτή η τιμή είναι πολύ μεγάλη. Θα έπρεπε να έχει {{ limit }} χαρακτήρες ή λιγότερο.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Αυτή η τιμή θα έπρεπε να είναι {{ limit }} ή περισσότερο.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Αυτή η τιμή είναι πολύ μικρή. Θα έπρεπε να έχει {{ limit }} χαρακτήρα ή περισσότερο.|Αυτή η τιμή είναι πολύ μικρή. Θα έπρεπε να έχει {{ limit }} χαρακτήρες ή περισσότερο.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Αυτή η τιμή δεν πρέπει να είναι κενή.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Αυτή η τιμή δεν πρέπει να είναι μηδενική.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Αυτή η τιμή πρέπει να είναι μηδενική.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Αυτή η τιμή δεν είναι έκγυρη.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Αυτή η τιμή δεν αντιστοιχεί σε έγκυρη ώρα.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Αυτή η τιμή δεν αντιστοιχεί σε έγκυρο URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Οι δύο τιμές θα πρέπει να είναι ίδιες.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Το αρχείο είναι πολύ μεγάλο. Το μέγιστο επιτρεπτό μέγεθος είναι {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Το αρχείο είναι πολύ μεγάλο.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Το αρχείο δε μπορεί να ανέβει.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Αυτή η τιμή θα πρέπει να είναι ένας έγκυρος αριθμός.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Το αρχείο δεν αποτελεί έγκυρη εικόνα.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Αυτό δεν είναι μια έκγυρη διεύθυνση IP.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Αυτή η τιμή δεν αντιστοιχεί σε μια έκγυρη γλώσσα.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Αυτή η τιμή δεν αντιστοιχεί σε έκγυρο κωδικό τοποθεσίας.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Αυτή η τιμή δεν αντιστοιχεί σε μια έκγυρη χώρα.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Αυτή η τιμή χρησιμοποιείται ήδη.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Το μέγεθος της εικόνας δεν ήταν δυνατό να ανιχνευθεί.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Το πλάτος της εικόνας είναι πολύ μεγάλο ({{ width }}px). Το μέγιστο επιτρεπτό πλάτος είναι {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Το πλάτος της εικόνας είναι πολύ μικρό ({{ width }}px). Το ελάχιστο επιτρεπτό πλάτος είναι {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Το ύψος της εικόνας είναι πολύ μεγάλο ({{ height }}px). Το μέγιστο επιτρεπτό ύψος είναι {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Το ύψος της εικόνας είναι πολύ μικρό ({{ height }}px). Το ελάχιστο επιτρεπτό ύψος είναι {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Αυτή η τιμή θα έπρεπε να είναι ο τρέχων κωδικός.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Αυτή η τιμή θα έπρεπε να έχει ακριβώς {{ limit }} χαρακτήρα.|Αυτή η τιμή θα έπρεπε να έχει ακριβώς {{ limit }} χαρακτήρες.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Το αρχείο δεν ανέβηκε ολόκληρο.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Δεν ανέβηκε κανένα αρχείο.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Κανένας προσωρινός φάκελος δεν έχει ρυθμιστεί στο php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Αδυναμία εγγραφής προσωρινού αρχείου στο δίσκο.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Μια επέκταση PHP προκάλεσε αδυναμία ανεβάσματος.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Αυτή η συλλογή θα πρέπει να περιέχει {{ limit }} στοιχείο ή περισσότερα.|Αυτή η συλλογή θα πρέπει να περιέχει {{ limit }} στοιχεία ή περισσότερα.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Αυτή η συλλογή θα πρέπει να περιέχει {{ limit }} στοιχείo ή λιγότερα.|Αυτή η συλλογή θα πρέπει να περιέχει {{ limit }} στοιχεία ή λιγότερα.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Αυτή η συλλογή θα πρέπει να περιέχει ακριβώς {{ limit }} στοιχείo.|Αυτή η συλλογή θα πρέπει να περιέχει ακριβώς {{ limit }} στοιχεία.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Μη έγκυρος αριθμός κάρτας.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Μη υποστηριζόμενος τύπος κάρτας ή μη έγκυρος αριθμός κάρτας.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Αυτό δεν αντιστοιχεί σε έκγυρο διεθνή αριθμό τραπεζικού λογαριασμού (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Αυτό δεν είναι έγκυρος κωδικός ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Αυτό δεν είναι έγκυρος κωδικός ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Αυτό δεν είναι ούτε έγκυρος κωδικός ISBN-10 ούτε έγκυρος κωδικός ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Αυτό δεν είναι έγκυρος κωδικός ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Αυτό δεν αντιστοιχεί σε έγκυρο νόμισμα.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Αυτή η τιμή θα πρέπει να είναι ίση με {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Αυτή η τιμή θα πρέπει να είναι μεγαλύτερη από {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Αυτή η τιμή θα πρέπει να είναι μεγαλύτερη ή ίση με {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Αυτή η τιμή θα πρέπει να είναι πανομοιότυπη με {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Αυτή η τιμή θα πρέπει να είναι μικρότερη από {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Αυτή η τιμή θα πρέπει να είναι μικρότερη ή ίση με {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Αυτή η τιμή δεν θα πρέπει να είναι ίση με {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Αυτή η τιμή δεν πρέπει να είναι πανομοιότυπη με {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.en.xlf b/vendor/symfony/validator/Resources/translations/validators.en.xlf
deleted file mode 100644
index e666c79..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.en.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>This value should be false.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>This value should be true.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>This value should be of type {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>This value should be blank.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>The value you selected is not a valid choice.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>One or more of the given values is invalid.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>This field was not expected.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>This field is missing.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>This value is not a valid date.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>This value is not a valid datetime.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>This value is not a valid email address.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>The file could not be found.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>The file is not readable.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>This value should be {{ limit }} or less.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>This value should be {{ limit }} or more.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>This value should not be blank.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>This value should not be null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>This value should be null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>This value is not valid.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>This value is not a valid time.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>This value is not a valid URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>The two values should be equal.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>The file is too large.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>The file could not be uploaded.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>This value should be a valid number.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>This file is not a valid image.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>This is not a valid IP address.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>This value is not a valid language.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>This value is not a valid locale.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>This value is not a valid country.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>This value is already used.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>The size of the image could not be detected.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>This value should be the user's current password.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>The file was only partially uploaded.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>No file was uploaded.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>No temporary folder was configured in php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Cannot write temporary file to disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>A PHP extension caused the upload to fail.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Invalid card number.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Unsupported card type or invalid card number.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>This is not a valid International Bank Account Number (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>This value is not a valid ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>This value is not a valid ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>This value is neither a valid ISBN-10 nor a valid ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>This value is not a valid ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>This value is not a valid currency.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>This value should be equal to {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>This value should be greater than {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>This value should be greater than or equal to {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>This value should be less than {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>This value should be less than or equal to {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>This value should not be equal to {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>An empty file is not allowed.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>The host could not be resolved.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>This value does not match the expected {{ charset }} charset.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.es.xlf b/vendor/symfony/validator/Resources/translations/validators.es.xlf
deleted file mode 100644
index d874573..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.es.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Este valor debería ser falso.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Este valor debería ser verdadero.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Este valor debería ser de tipo {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Este valor debería estar vacío.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>El valor seleccionado no es una opción válida.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Debe seleccionar al menos {{ limit }} opción.|Debe seleccionar al menos {{ limit }} opciones.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Debe seleccionar como máximo {{ limit }} opción.|Debe seleccionar como máximo {{ limit }} opciones.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Uno o más de los valores indicados no son válidos.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Este campo no se esperaba.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Este campo está desaparecido.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Este valor no es una fecha válida.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Este valor no es una fecha y hora válidas.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Este valor no es una dirección de email válida.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>No se pudo encontrar el archivo.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>No se puede leer el archivo.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>El archivo es demasiado grande ({{ size }} {{ suffix }}). El tamaño máximo permitido es {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>El tipo mime del archivo no es válido ({{ type }}). Los tipos mime válidos son {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Este valor debería ser {{ limit }} o menos.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Este valor es demasiado largo. Debería tener {{ limit }} carácter o menos.|Este valor es demasiado largo. Debería tener {{ limit }} caracteres o menos.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Este valor debería ser {{ limit }} o más.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Este valor es demasiado corto. Debería tener {{ limit }} carácter o más.|Este valor es demasiado corto. Debería tener {{ limit }} caracteres o más.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Este valor no debería estar vacío.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Este valor no debería ser nulo.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Este valor debería ser nulo.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Este valor no es válido.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Este valor no es una hora válida.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Este valor no es una URL válida.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Los dos valores deberían ser iguales.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>El archivo es demasiado grande. El tamaño máximo permitido es {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>El archivo es demasiado grande.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>No se pudo subir el archivo.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Este valor debería ser un número válido.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>El archivo no es una imagen válida.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Esto no es una dirección IP válida.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Este valor no es un idioma válido.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Este valor no es una localización válida.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Este valor no es un país válido.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Este valor ya se ha utilizado.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>No se pudo determinar el tamaño de la imagen.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>El ancho de la imagen es demasiado grande ({{ width }}px). El ancho máximo permitido es de {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>El ancho de la imagen es demasiado pequeño ({{ width }}px). El ancho mínimo requerido es {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>La altura de la imagen es demasiado grande ({{ height }}px). La altura máxima permitida es de {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>La altura de la imagen es demasiado pequeña ({{ height }}px). La altura mínima requerida es de {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Este valor debería ser la contraseña actual del usuario.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Este valor debería tener exactamente {{ limit }} carácter.|Este valor debería tener exactamente {{ limit }} caracteres.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>El archivo fue sólo subido parcialmente.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Ningún archivo fue subido.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Ninguna carpeta temporal fue configurada en php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>No se pudo escribir el archivo temporal en el disco.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Una extensión de PHP hizo que la subida fallara.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Esta colección debe contener {{ limit }} elemento o más.|Esta colección debe contener {{ limit }} elementos o más.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Esta colección debe contener {{ limit }} elemento o menos.|Esta colección debe contener {{ limit }} elementos o menos.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Esta colección debe contener exactamente {{ limit }} elemento.|Esta colección debe contener exactamente {{ limit }} elementos.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Número de tarjeta inválido.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Tipo de tarjeta no soportado o número de tarjeta inválido.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Esto no es un International Bank Account Number (IBAN) válido.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Este valor no es un ISBN-10 válido.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Este valor no es un ISBN-13 válido.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Este valor no es ni un ISBN-10 válido ni un ISBN-13 válido.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Este valor no es un ISSN válido.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Este valor no es una divisa válida.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Este valor debería ser igual que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Este valor debería ser mayor que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Este valor debería ser mayor o igual que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Este valor debería ser idéntico a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Este valor debería ser menor que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Este valor debería ser menor o igual que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Este valor debería ser distinto de {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Este valor no debería ser idéntico a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>La proporción de la imagen es demasiado grande ({{ ratio }}). La máxima proporción permitida es {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>La proporción de la imagen es demasiado pequeña ({{ ratio }}). La mínima proporción permitida es {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>La imagen es cuadrada ({{ width }}x{{ height }}px). Las imágenes cuadradas no están permitidas.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>La imagen está orientada horizontalmente ({{ width }}x{{ height }}px). Las imágenes orientadas horizontalmente no están permitidas.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>La imagen está orientada verticalmente ({{ width }}x{{ height }}px). Las imágenes orientadas verticalmente no están permitidas.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>No está permitido un archivo vacío.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>No se puede resolver el host.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>La codificación de caracteres para este valor debería ser {{ charset }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.et.xlf b/vendor/symfony/validator/Resources/translations/validators.et.xlf
deleted file mode 100644
index d047c8b..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.et.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version='1.0'?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Väärtus peaks olema väär.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Väärtus peaks oleme tõene.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Väärtus peaks olema {{ type }}-tüüpi.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Väärtus peaks olema tühi.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Väärtus peaks olema üks etteantud valikutest.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Valima peaks vähemalt {{ limit }} valikut.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Valima peaks mitte rohkem kui  {{ limit }} valikut.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>One or more of the given values is invalid.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>See väli ei oodatud.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>See väli on puudu.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Väärtus pole korrektne kuupäev.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Väärtus pole korrektne kuupäev ja kellaeg.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Väärtus pole korrektne e-maili aadress.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Faili ei leita.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Fail ei ole loetav.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Fail on liiga suur ({{ size }} {{ suffix }}). Suurim lubatud suurus on {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Faili sisutüüp on vigane ({{ type }}). Lubatud sisutüübid on {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Väärtus peaks olema {{ limit }} või vähem.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Väärtus on liiga pikk. Pikkus peaks olema {{ limit }} tähemärki või vähem.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Väärtus peaks olema {{ limit }} või rohkem.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Väärtus on liiga lühike. Pikkus peaks  olema {{ limit }} tähemärki või rohkem.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Väärtus ei tohiks olla tühi.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Väärtus ei tohiks olla 'null'.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Väärtus peaks olema 'null'.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Väärtus on vigane.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Väärtus pole korrektne aeg.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Väärtus pole korrektne URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Väärtused peaksid olema võrdsed.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Fail on liiga suur. Maksimaalne lubatud suurus on {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Fail on liiga suur.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Faili ei saa üles laadida.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Väärtus peaks olema korrektne number.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Fail ei ole korrektne pilt.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>IP aadress pole korrektne.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Väärtus pole korrektne keel.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Väärtus pole korrektne asukohakeel.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Väärtus pole olemasolev riik.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Väärtust on juba kasutatud.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Pildi suurust polnud võimalik tuvastada.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Pilt on liiga lai ({{ width }}px). Suurim lubatud laius on {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Pilt on liiga kitsas ({{ width }}px). Vähim lubatud laius on {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Pilt on liiga pikk ({{ height }}px). Lubatud suurim pikkus on {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Pilt pole piisavalt pikk ({{ height }}px). Lubatud vähim pikkus on {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Väärtus peaks olema kasutaja kehtiv salasõna.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} characters.</source>
-                <target>Väärtus peaks olema täpselt {{ limit }} tähemärk pikk.|Väärtus peaks olema täpselt {{ limit }} tähemärki pikk.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Fail ei laetud täielikult üles.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Ühtegi faili ei laetud üles.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Ühtegi ajutist kausta polnud php.ini-s seadistatud.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Ajutist faili ei saa kettale kirjutada.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>PHP laiendi tõttu ebaõnnestus faili üleslaadimine.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} elements or more.</source>
-                <target>Kogumikus peaks olema vähemalt {{ limit }} element.|Kogumikus peaks olema vähemalt {{ limit }} elementi.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} elements or less.</source>
-                <target>Kogumikus peaks olema ülimalt {{ limit }} element.|Kogumikus peaks olema ülimalt {{ limit }} elementi.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} elements.</source>
-                <target>Kogumikus peaks olema täpselt {{ limit }} element.|Kogumikus peaks olema täpselt {{ limit }}|elementi.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Vigane kaardi number.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Kaardi tüüpi ei toetata või kaardi number on vigane.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Väärtus pole korrektne IBAN-number.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Väärtus pole korrektne ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Väärtus pole korrektne ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Väärtus pole korrektne ISBN-10 ega ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Väärtus pole korrektne ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Väärtus pole korrektne valuuta.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Väärtus peaks olema võrdne {{ compared_value }}-ga.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Väärtus peaks olema suurem kui {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Väärtus peaks olema suurem kui või võrduma {{ compared_value }}-ga.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Väärtus peaks olema identne väärtusega {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Väärtus peaks olema väiksem kui {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Väärtus peaks olema väiksem kui või võrduma {{ compared_value }}-ga.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Väärtus ei tohiks võrduda {{ compared_value }}-ga.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Väärtus ei tohiks olla identne väärtusega {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.eu.xlf b/vendor/symfony/validator/Resources/translations/validators.eu.xlf
deleted file mode 100644
index b2edefd..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.eu.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Balio hau faltsua izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Balio hau egia izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Balio hau {{ type }} motakoa izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Balio hau hutsik egon beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Hautatu duzun balioa ez da aukera egoki bat.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Gutxienez aukera {{ limit }} hautatu behar duzu.|Gutxienez {{ limit }} aukera hautatu behar dituzu.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Gehienez aukera {{ limit }} hautatu behar duzu.|Gehienez {{ limit }} aukera hautatu behar dituzu.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Emandako balioetatik gutxienez bat ez da egokia.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Eremu hau ez zen espero.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Eremu hau falta da.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Balio hau ez da data egoki bat.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Balio hau ez da data-ordu egoki bat.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Balio hau ez da posta elektroniko egoki bat.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Ezin izan da fitxategia aurkitu.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Fitxategia ez da irakurgarria.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Fitxategia handiegia da ({{ size }} {{ suffix }}). Baimendutako tamaina handiena {{ limit }} {{ suffix }} da.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Fitxategiaren mime mota ez da egokia ({{ type }}). Hauek dira baimendutako mime motak: {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Balio hau gehienez {{ limit }} izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Balio hau luzeegia da. Gehienez karaktere {{ limit }} eduki beharko luke.|Balio hau luzeegia da. Gehienez {{ limit }} karaktere eduki beharko lituzke.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Balio hau gutxienez {{ limit }} izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Balio hau motzegia da. Karaktere {{ limit }} gutxienez eduki beharko luke.|Balio hau motzegia da. Gutxienez {{ limit }} karaktere eduki beharko lituzke.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Balio hau ez litzateke hutsik egon behar.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Balio hau ez litzateke nulua izan behar.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Balio hau nulua izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Balio hau ez da egokia.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Balio hau ez da ordu egoki bat.</target>
-           </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Balio hau ez da baliabideen kokatzaile uniforme (URL) egoki bat.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Bi balioak berdinak izan beharko lirateke.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Fitxategia handiegia da. Baimendutako tamaina handiena {{ limit }} {{ suffix }} da.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Fitxategia handiegia da.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Ezin izan da fitxategia igo.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Balio hau zenbaki egoki bat izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Fitxategi hau ez da irudi egoki bat.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Honako hau ez da IP helbide egoki bat.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Balio hau ez da hizkuntza egoki bat.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Balio hau ez da kokapen egoki bat.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Balio hau ez da herrialde egoki bat.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Balio hau jadanik erabilia izan da.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Ezin izan da irudiaren tamaina detektatu.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Irudiaren zabalera handiegia da ({{ width }}px). Onartutako gehienezko zabalera {{ max_width }}px dira.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Irudiaren zabalera txikiegia da ({{ width }}px). Onartutako gutxieneko zabalera {{ min_width }}px dira.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Irudiaren altuera handiegia da ({{ height }}px). Onartutako gehienezko altuera {{ max_height }}px dira.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Irudiaren altuera txikiegia da ({{ height }}px). Onartutako gutxieneko altuera {{ min_height }}px dira.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Balio hau uneko erabiltzailearen pasahitza izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Balio honek zehazki karaktere {{ limit }} izan beharko luke.|Balio honek zehazki {{ limit }} karaktere izan beharko lituzke.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Fitxategiaren zati bat bakarrik igo da.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Ez da fitxategirik igo.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Ez da aldi baterako karpetarik konfiguratu php.ini fitxategian.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Ezin izan da aldi baterako fitxategia diskoan idatzi.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>PHP luzapen batek igoeraren hutsa eragin du.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Bilduma honek gutxienez elementu {{ limit }} eduki beharko luke.|Bilduma honek gutxienez {{ limit }} elementu eduki beharko lituzke.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Bilduma honek gehienez elementu {{ limit }} eduki beharko luke.|Bilduma honek gehienez {{ limit }} elementu eduki beharko lituzke.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Bilduma honek zehazki elementu {{ limit }} eduki beharko luke.|Bilduma honek zehazki {{ limit }} elementu eduki beharko lituzke.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Txartel zenbaki baliogabea.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Txartel mota onartezina edo txartel zenbaki baliogabea.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Hau ez da baliozko banku internazionaleko kontu zenbaki (IBAN) bat.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Balio hau ez da onartutako ISBN-10 bat.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Balio hau ez da onartutako ISBN-13 bat.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Balio hau ez da onartutako ISBN-10 edo ISBN-13 bat.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Balio hau ez da onartutako ISSN bat.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Balio hau ez da baliozko moneta bat.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Balio hau {{ compared_value }}-(r)en berbera izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Balio hau {{ compared_value }} baino handiagoa izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Balio hau {{ compared_value }}-(r)en berdina edota handiagoa izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Balio hau {{ compared_value_type }} {{ compared_value }}-(r)en berbera izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Balio hau {{ compared_value }} baino txikiagoa izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Balio hau {{ compared_value }}-(r)en berdina edota txikiagoa izan beharko litzateke.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Balio hau ez litzateke {{ compared_value }}-(r)en berdina izan behar.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Balio hau ez litzateke {{ compared_value_type }} {{ compared_value }}-(r)en berbera izan behar.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.fa.xlf b/vendor/symfony/validator/Resources/translations/validators.fa.xlf
deleted file mode 100644
index 98b4bd6..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.fa.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target state="needs-review-translation">این مقدار باید نادرست(False) باشد.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>این مقدار باید درست(True) باشد.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>این مقدار باید از نوع {{ type }} باشد.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>این فیلد باید خالی باشد.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>گزینه انتخابی معتبر نیست.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>باید حداقل {{ limit }} گزینه انتخاب کنید.|باید حداقل {{ limit }} گزینه انتخاب کنید.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>حداکثر {{ limit }} گزینه می توانید انتخاب کنید.|حداکثر {{ limit }} گزینه می توانید انتخاب کنید.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>یک یا چند مقدار نامعتبر وجود دارد.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>The fields {{ fields }} were not expected.</source>
-                <target>فیلدهای {{ fields }} اضافی هستند.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>The fields {{ fields }} are missing.</source>
-                <target>فیلدهای {{ fields }} کم هستند.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>این مقدار یک تاریخ معتبر نیست.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>این مقدار یک تاریخ و زمان معتبر نیست.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>این یک رایانامه معتبر نیست.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>فایل پیدا نشد.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>فایل قابلیت خواندن ندارد.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>فایل بیش از اندازه بزرگ است({{ size }} {{ suffix }}). حداکثر اندازه مجاز برابر {{ limit }} {{ suffix }} است.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>این نوع فایل مجاز نیست({{ type }}). نوع های مجاز {{ types }} هستند.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>این مقدار باید کوچکتر یا مساوی {{ limit }} باشد.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>بسیار طولانی است.حداکثر تعداد حروف مجاز برابر {{ limit }} است.|بسیار طولانی است.حداکثر تعداد حروف مجاز برابر {{ limit }} است.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>این مقدار باید برابر و یا بیشتر از {{ limit }} باشد.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>بسیار کوتاه است.تعداد حروف باید حداقل {{ limit }} باشد.|بسیار کوتاه است.تعداد حروف باید حداقل {{ limit }} باشد.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>این مقدار نباید تهی باشد.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>باید مقداری داشته باشد..</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>نباید مقداری داشته باشد.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>این مقدار معتبر نیست.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>این مقدار یک زمان صحیح نیست.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>این یک URL معتبر نیست.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>دو مقدار باید برابر باشند.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>فایل بیش از اندازه بزرگ است. حداکثر اندازه مجاز برابر {{ limit }} {{ suffix }} است.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>فایل بیش از اندازه بزرگ است.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>بارگذاری فایل با شکست مواجه شد.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>این مقدار باید یک عدد معتبر باشد.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>این فایل یک تصویر نیست.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>این مقدار یک IP معتبر نیست.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>این مقدار یک زبان صحیح نیست.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>این مقدار یک محل صحیح نیست.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>این مقدار یک کشور صحیح نیست.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>این مقدار قبلا مورد استفاده قرار گرفته است.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>اندازه تصویر قابل شناسایی نیست.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>طول تصویر بسیار بزرگ است ({{ width }}px). بشینه طول مجاز {{ max_width }}px است.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>طول تصویر بسیار کوچک است ({{ width }}px). کمینه طول موردنظر {{ min_width }}px است.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>ارتفاع تصویر بسیار بزرگ است ({{ height }}px). بشینه ارتفاع مجاز {{ max_height }}px است.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>ارتفاع تصویر بسیار کوچک است ({{ height }}px). کمینه ارتفاع موردنظر {{ min_height }}px است.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>این مقدار می بایست کلمه عبور کنونی کاربر باشد.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target> این مقدار می بایست دقیقا {{ limit }} کاراکتر داشته باشد.| این مقدار می بایست دقیقا {{ limit }} کاراکتر داشته باشد.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>فایل به صورت جزیی بارگذاری شده است.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>هیچ فایلی بارگذاری نشد.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>فولدر موقت در php.ini پیکربندی نشده است.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>فایل موقت را نمی توان در دیسک نوشت.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>اکستنشن PHP موجب شد که بارگذاری فایل با شکست مواجه شود.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>این مجموعه می بایست دارای {{ limit }} عنصر یا بیشتر باشد.|این مجموعه می بایست دارای {{ limit }} عنصر یا بیشتر باشد.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>این مجموعه می بایست دارای حداقل {{ limit }} عنصر یا کمتر باشد.|این مجموعه می بایست دارای {{ limit }} عنصر یا کمتر باشد.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>این مجموعه می بایست به طور دقیق دارا {{ limit }} عنصر باشد.|این مجموعه می بایست به طور دقیق دارای {{ limit }} قلم باشد.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>شماره کارت نامعتبر است.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>نوع کارت پشتیبانی نمی شود یا شماره کارت نامعتبر است.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>این یک شماره حساب بین المللی بانک (IBAN) درست نیست.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>این مقدار یک ISBN-10 درست نیست.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>این مقدار یک ISBN-13 درست نیست.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>این مقدار یک ISBN-10 درست یا ISBN-13 درست نیست.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>این مقدار یک ISSN درست نیست.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>این مقدار یک یکای پول درست نیست.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>این مقدار باید برابر با {{ compared_value }} باشد.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>این مقدار باید از {{ compared_value }} بیشتر باشد.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>این مقدار باید بزرگتر یا مساوی با {{ compared_value }} باشد.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>این مقدار باید با {{ compared_value_type }} {{ compared_value }} یکی باشد.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>این مقدار باید کمتر از {{ compared_value }} باشد.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>این مقدار باید کمتر یا مساوی با {{ compared_value }} باشد.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>این مقدار نباید با {{ compared_value }} برابر باشد.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>این مقدار نباید {{ compared_value_type }} {{ compared_value }} یکی باشد.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.fi.xlf b/vendor/symfony/validator/Resources/translations/validators.fi.xlf
deleted file mode 100644
index 3f5a07e..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.fi.xlf
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Arvon tulee olla epätosi.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Arvon tulee olla tosi.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Arvon tulee olla tyyppiä {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Arvon tulee olla tyhjä.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Arvon tulee olla yksi annetuista vaihtoehdoista.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Sinun tulee valita vähintään {{ limit }} vaihtoehtoa.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Sinun tulee valitan enintään {{ limit }} vaihtoehtoa.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Yksi tai useampi annetuista arvoista on virheellinen.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Tässä kentässä ei odotettu.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Tämä kenttä puuttuu.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Annettu arvo ei ole kelvollinen päivämäärä.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Annettu arvo ei ole kelvollinen päivämäärä ja kellonaika.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Annettu arvo ei ole kelvollinen sähköpostiosoite.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Tiedostoa ei löydy.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Tiedostoa ei voida lukea.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Tiedostonkoko ({{ size }} {{ suffix }}) on liian iso. Suurin sallittu tiedostonkoko on {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Tiedostotyyppi ({{ type }}) on virheellinen. Sallittuja tiedostotyyppejä ovat {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Arvon tulee olla {{ limit }} tai vähemmän.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Liian pitkä syöte. Syöte saa olla enintään {{ limit }} merkkiä.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Arvon tulee olla {{ limit }} tai enemmän.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Liian lyhyt syöte. Syötteen tulee olla vähintään {{ limit }} merkkiä.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Kenttä ei voi olla tyhjä.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Syöte ei voi olla null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Syötteen tulee olla null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Virheellinen arvo.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Annettu arvo ei ole kelvollinen kellonaika.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Annettu arvo ei ole kelvollinen URL-osoite.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Kahden annetun arvon tulee olla samat.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Annettu tiedosto on liian iso. Suurin sallittu tiedostokoko on {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Tiedosto on liian iso.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Tiedoston siirto epäonnistui.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Tämän arvon tulee olla numero.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Tämä tiedosto ei ole kelvollinen kuva.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Tämä ei ole kelvollinen IP-osoite.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Tämä arvo ei ole kelvollinen kieli.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Tämä arvo ei ole kelvollinen kieli- ja alueasetus (locale).</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Tämä arvo ei ole kelvollinen maa.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Tämä arvo on jo käytetty.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Kuvan kokoa ei voitu tunnistaa.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Kuva on liian leveä ({{ width }}px). Sallittu maksimileveys on {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Kuva on liian kapea ({{ width }}px). Leveyden tulisi olla vähintään {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Kuva on liian korkea ({{ width }}px). Sallittu maksimikorkeus on {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Kuva on liian matala ({{ height }}px). Korkeuden tulisi olla vähintään {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Tämän arvon tulisi olla käyttäjän tämänhetkinen salasana.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Tämän arvon tulisi olla tasan yhden merkin pituinen.|Tämän arvon tulisi olla tasan {{ limit }} merkkiä pitkä.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Tiedosto ladattiin vain osittain.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Tiedostoa ei ladattu.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Väliaikaishakemistoa ei ole asetettu php.ini -tiedostoon.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Väliaikaistiedostoa ei voitu kirjoittaa levylle.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>PHP-laajennoksen vuoksi tiedoston lataus epäonnistui.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Tässä ryhmässä tulisi olla yksi tai useampi elementti.|Tässä ryhmässä tulisi olla vähintään {{ limit }} elementtiä.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Tässä ryhmässä tulisi olla enintään yksi elementti.|Tässä ryhmässä tulisi olla enintään {{ limit }} elementtiä.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Tässä ryhmässä tulisi olla tasan yksi elementti.|Tässä ryhmässä tulisi olla enintään {{ limit }} elementtiä.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Virheellinen korttinumero.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Tätä korttityyppiä ei tueta tai korttinumero on virheellinen.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.fr.xlf b/vendor/symfony/validator/Resources/translations/validators.fr.xlf
deleted file mode 100644
index b50ecbc..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.fr.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Cette valeur doit être fausse.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Cette valeur doit être vraie.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Cette valeur doit être de type {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Cette valeur doit être vide.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Cette valeur doit être l'un des choix proposés.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Vous devez sélectionner au moins {{ limit }} choix.|Vous devez sélectionner au moins {{ limit }} choix.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Vous devez sélectionner au maximum {{ limit }} choix.|Vous devez sélectionner au maximum {{ limit }} choix.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Une ou plusieurs des valeurs soumises sont invalides.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Ce champ n'a pas été prévu.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Ce champ est manquant.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Cette valeur n'est pas une date valide.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Cette valeur n'est pas une date valide.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Cette valeur n'est pas une adresse email valide.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Le fichier n'a pas été trouvé.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Le fichier n'est pas lisible.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Le fichier est trop volumineux ({{ size }} {{ suffix }}). Sa taille ne doit pas dépasser {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Le type du fichier est invalide ({{ type }}). Les types autorisés sont {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Cette valeur doit être inférieure ou égale à {{ limit }}.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Cette chaine est trop longue. Elle doit avoir au maximum {{ limit }} caractère.|Cette chaine est trop longue. Elle doit avoir au maximum {{ limit }} caractères.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Cette valeur doit être supérieure ou égale à {{ limit }}.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Cette chaine est trop courte. Elle doit avoir au minimum {{ limit }} caractère.|Cette chaine est trop courte. Elle doit avoir au minimum {{ limit }} caractères.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Cette valeur ne doit pas être vide.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Cette valeur ne doit pas être nulle.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Cette valeur doit être nulle.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Cette valeur n'est pas valide.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Cette valeur n'est pas une heure valide.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Cette valeur n'est pas une URL valide.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Les deux valeurs doivent être identiques.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Le fichier est trop volumineux. Sa taille ne doit pas dépasser {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Le fichier est trop volumineux.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Le téléchargement de ce fichier est impossible.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Cette valeur doit être un nombre.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Ce fichier n'est pas une image valide.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Cette adresse IP n'est pas valide.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Cette langue n'est pas valide.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Ce paramètre régional n'est pas valide.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Ce pays n'est pas valide.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Cette valeur est déjà utilisée.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>La taille de l'image n'a pas pu être détectée.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>La largeur de l'image est trop grande ({{ width }}px). La largeur maximale autorisée est de {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>La largeur de l'image est trop petite ({{ width }}px). La largeur minimale attendue est de {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>La hauteur de l'image est trop grande ({{ height }}px). La hauteur maximale autorisée est de {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>La hauteur de l'image est trop petite ({{ height }}px). La hauteur minimale attendue est de {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Cette valeur doit être le mot de passe actuel de l'utilisateur.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Cette chaine doit avoir exactement {{ limit }} caractère.|Cette chaine doit avoir exactement {{ limit }} caractères.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Le fichier a été partiellement transféré.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Aucun fichier n'a été transféré.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Aucun répertoire temporaire n'a été configuré dans le php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Impossible d'écrire le fichier temporaire sur le disque.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Une extension PHP a empêché le transfert du fichier.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Cette collection doit contenir {{ limit }} élément ou plus.|Cette collection doit contenir {{ limit }} éléments ou plus.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Cette collection doit contenir {{ limit }} élément ou moins.|Cette collection doit contenir {{ limit }} éléments ou moins.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Cette collection doit contenir exactement {{ limit }} élément.|Cette collection doit contenir exactement {{ limit }} éléments.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Numéro de carte invalide.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Type de carte non supporté ou numéro invalide.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Le numéro IBAN (International Bank Account Number) saisi n'est pas valide.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Cette valeur n'est pas un code ISBN-10 valide.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Cette valeur n'est pas un code ISBN-13 valide.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Cette valeur n'est ni un code ISBN-10, ni un code ISBN-13 valide.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Cette valeur n'est pas un code ISSN valide.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Cette valeur n'est pas une devise valide.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Cette valeur doit être égale à {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Cette valeur doit être supérieure à {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Cette valeur doit être supérieure ou égale à {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Cette valeur doit être identique à {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Cette valeur doit être inférieure à {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Cette valeur doit être inférieure ou égale à {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Cette valeur ne doit pas être égale à {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Cette valeur ne doit pas être identique à {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Le rapport largeur/hauteur de l'image est trop grand ({{ ratio }}). Le rapport maximal autorisé est {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Le rapport largeur/hauteur de l'image est trop petit ({{ ratio }}). Le rapport minimal attendu est {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>L'image est carrée ({{ width }}x{{ height }}px). Les images carrées ne sont pas autorisées.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>L'image est au format paysage ({{ width }}x{{ height }}px). Les images au format paysage ne sont pas autorisées.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>L'image est au format portrait ({{ width }}x{{ height }}px). Les images au format portrait ne sont pas autorisées.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Un fichier vide n'est pas autorisé.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>Le nom de domaine n'a pas pu être résolu.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>Cette valeur ne correspond pas au jeu de caractères {{ charset }} attendu.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.gl.xlf b/vendor/symfony/validator/Resources/translations/validators.gl.xlf
deleted file mode 100644
index 1d0cc13..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.gl.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Este valor debería ser falso.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Este valor debería ser verdadeiro.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Este valor debería ser de tipo {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Este valor debería estar baleiro.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>O valor seleccionado non é unha opción válida.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Debe seleccionar polo menos {{ limit }} opción.|Debe seleccionar polo menos {{ limit }} opcions.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Debe seleccionar como máximo {{ limit }} opción.|Debe seleccionar como máximo {{ limit }} opcions.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Un ou máis dos valores indicados non son válidos.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Este campo non era esperado.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Este campo falta.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Este valor non é unha data válida.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Este valor non é unha data e hora válidas.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Este valor non é unha dirección de correo electrónico válida.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Non se puido atopar o arquivo.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>O arquivo non se pode ler.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>O arquivo é demasiado grande ({{ size }} {{ suffix }}). O tamaño máximo permitido é {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>O tipo mime do arquivo non é válido ({{ type }}). Os tipos mime válidos son {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Este valor debería ser {{ limit }} ou menos.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Este valor é demasiado longo. Debería ter {{ limit }} carácter ou menos.|Este valor é demasiado longo. Debería ter {{ limit }} caracteres ou menos.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Este valor debería ser {{ limit }} ou máis.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Este valor é demasiado curto. Debería ter {{ limit }} carácter ou máis.|Este valor é demasiado corto. Debería ter {{ limit }} caracteres ou máis.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Este valor non debería estar baleiro.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Este valor non debería ser null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Este valor debería ser null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Este valor non é válido.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Este valor non é unha hora válida.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Este valor non é unha URL válida.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Os dous valores deberían ser iguais.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>O arquivo é demasiado grande. O tamaño máximo permitido é {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>O arquivo é demasiado grande.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>No se puido cargar o arquivo.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Este valor debería ser un número válido.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>O arquivo non é unha imaxe válida.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Isto non é unha dirección IP válida.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Este valor non é un idioma válido.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Este valor non é unha localización válida.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Este valor non é un país válido.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Este valor xa está a ser empregado.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Non se puido determinar o tamaño da imaxe.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>A largura da imaxe é demasiado grande ({{ width }}px). A largura máxima permitida son {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>A largura da imaxe é demasiado pequena ({{ width }}px). A largura mínima requerida son {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>A altura da imaxe é demasiado grande ({{ height }}px). A altura máxima permitida son {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>A altura da imaxe é demasiado pequena ({{ height }}px). A altura mínima requerida son {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Este valor debería ser a contrasinal actual do usuario.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Este valor debería ter exactamente {{ limit }} carácter.|Este valor debería ter exactamente {{ limit }} caracteres.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>O arquivo foi só subido parcialmente.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Non se subiu ningún arquivo.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Ningunha carpeta temporal foi configurada en php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Non se puido escribir o arquivo temporal no disco.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Unha extensión de PHP provocou que a subida fallara.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Esta colección debe conter {{ limit }} elemento ou máis.|Esta colección debe conter {{ limit }} elementos ou máis.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Esta colección debe conter {{ limit }} elemento ou menos.|Esta colección debe conter {{ limit }} elementos ou menos.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Esta colección debe conter exactamente {{ limit }} elemento.|Esta colección debe conter exactamente {{ limit }} elementos.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Número de tarxeta non válido.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Tipo de tarxeta non soportado ou número de tarxeta non válido.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Este valor non é un International Bank Account Number (IBAN) válido.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Este valor non é un ISBN-10 válido.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Este valor non é un ISBN-13 válido.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Este valor non é nin un ISBN-10 válido nin un ISBN-13 válido.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Este valor non é un ISSN válido.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Este valor non é unha moeda válida.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Este valor debería ser igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Este valor debería ser maior que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Este valor debería ser maior ou igual que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Este valor debería ser identico a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Este valor debería ser menor que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Este valor debería ser menor ou igual que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Este valor non debería ser igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Este valor non debería ser identico a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>A proporción da imaxe é demasiado grande ({{ ratio }}). A proporción máxima permitida é {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>A proporción da é demasiado pequena ({{ ratio }}). A proporción mínima permitida é {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>A imaxe é cadrada ({{ width }}x{{ height }}px). As imáxenes cadradas non están permitidas.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>A imaxe está orientada horizontalmente ({{ width }}x{{ height }}px). As imáxenes orientadas horizontalmente non están permitidas.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>A imaxe está orientada verticalmente ({{ width }}x{{ height }}px). As imáxenes orientadas verticalmente non están permitidas.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Non está permitido un arquivo baleiro.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>Non se puido resolver o host.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>A codificación de caracteres para este valor debería ser {{ charset }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.he.xlf b/vendor/symfony/validator/Resources/translations/validators.he.xlf
deleted file mode 100644
index 6510514..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.he.xlf
+++ /dev/null
@@ -1,307 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>הערך צריך להיות שקר.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>הערך צריך להיות אמת.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>הערך צריך להיות מסוג {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>הערך צריך להיות ריק.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>הערך שבחרת אינו חוקי.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>אתה צריך לבחור לפחות {{ limit }} אפשרויות.|אתה צריך לבחור לפחות {{ limit }} אפשרויות.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>אתה צריך לבחור לכל היותר {{ limit }} אפשרויות.|אתה צריך לבחור לכל היותר {{ limit }} אפשרויות.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>אחד או יותר מהערכים אינו חוקי.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>שדה זה לא היה צפוי</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>שדה זה חסר.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>הערך אינו תאריך חוקי.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>הערך אינו תאריך ושעה חוקיים.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>כתובת המייל אינה תקינה.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>הקובץ לא נמצא.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>לא ניתן לקרוא את הקובץ.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>הקובץ גדול מדי ({{ size }} {{ suffix }}). הגודל המרבי המותר הוא {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>סוג MIME של הקובץ אינו חוקי ({{ type }}). מותרים סוגי MIME {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>הערך צריל להכיל {{ limit }} תווים לכל היותר.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>הערך ארוך מידי. הוא צריך להכיל {{ limit }} תווים לכל היותר.|הערך ארוך מידי. הוא צריך להכיל {{ limit }} תווים לכל היותר.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>הערך צריך להכיל {{ limit }} תווים לפחות.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>הערך קצר מידיץ הוא צריך להכיל {{ limit }} תווים לפחות.|הערך קצר מידיץ הוא צריך להכיל {{ limit }} תווים לפחות.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>הערך לא אמור להיות ריק.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>הערך לא אמור להיות ריק.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>הערך צריך להיות ריק.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>הערך אינו חוקי.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>הערך אינו זמן תקין.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>זאת אינה כתובת אתר תקינה.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>שני הערכים צריכים להיות שווים.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>הקובץ גדול מדי. הגודל המרבי המותר הוא {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>הקובץ גדול מדי.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>לא ניתן לעלות את הקובץ.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>הערך צריך להיות מספר חוקי.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>הקובץ הזה אינו תמונה תקינה.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>זו אינה כתובת IP חוקית.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>הערך אינו שפה חוקית.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>הערך אינו אזור תקף.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>הערך אינו ארץ חוקית.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>הערך כבר בשימוש.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>לא ניתן לקבוע את גודל התמונה.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>רוחב התמונה גדול מדי ({{ width }}px). הרוחב המקסימלי הוא {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>רוחב התמונה קטן מדי ({{ width }}px). הרוחב המינימלי הוא {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>גובה התמונה גדול מדי ({{ height }}px). הגובה המקסימלי הוא {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>גובה התמונה קטן מדי ({{ height }}px). הגובה המינימלי הוא {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>הערך צריך להיות סיסמת המשתמש הנוכחי.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>הערך צריך להיות בדיוק {{ limit }} תווים.|הערך צריך להיות בדיוק {{ limit }} תווים.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>הקובץ הועלה באופן חלקי.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>הקובץ לא הועלה.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>לא הוגדרה תיקייה זמנית ב php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>לא ניתן לכתוב קובץ זמני לדיסק.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>סיומת PHP גרם להעלאה להיכשל.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>האוסף אמור להכיל {{ limit }} אלמנטים או יותר.|האוסף אמור להכיל {{ limit }} אלמנטים או יותר.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>האוסף אמור להכיל {{ limit }} אלמנטים או פחות.|האוסף אמור להכיל {{ limit }} אלמנטים או פחות.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>האוסף צריך להכיל בדיוק {{ limit }} אלמנטים.|האוסף צריך להכיל בדיוק {{ limit }} אלמנטים.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>מספר הכרטיס אינו חוקי.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>סוג הכרטיס אינו נתמך או לא חוקי.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>This is not a valid International Bank Account Number (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>This value is not a valid ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>This value is not a valid ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>This value is neither a valid ISBN-10 nor a valid ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>This value is not a valid ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>This value is not a valid currency.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>This value should be equal to {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>This value should be greater than {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>This value should be greater than or equal to {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>This value should be less than {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>This value should be less than or equal to {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>This value should not be equal to {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>An empty file is not allowed.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.hr.xlf b/vendor/symfony/validator/Resources/translations/validators.hr.xlf
deleted file mode 100644
index a11e825..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.hr.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Ova vrijednost treba biti netočna (false).</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Ova vrijednost treba biti točna (true).</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Ova vrijednost treba biti tipa {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Ova vrijednost treba biti prazna.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Ova vrijednost treba biti jedna od ponuđenih.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Izaberite barem {{ limit }} mogućnosti.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Izaberite najviše {{ limit }} mogućnosti.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Jedna ili više danih vrijednosti nije ispravna.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Ovo polje nije očekivalo.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Ovo polje nedostaje.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Ova vrijednost nije ispravan datum.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Ova vrijednost nije ispravan datum-vrijeme.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Ova vrijednost nije ispravna e-mail adresa.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Datoteka ne može biti pronađena.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Datoteka nije čitljiva.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Datoteka je prevelika ({{ size }} {{ suffix }}). Najveća dozvoljena veličina je {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Mime tip datoteke nije ispravan ({{ type }}). Dozvoljeni mime tipovi su {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Ova vrijednost treba biti {{ limit }} ili manje.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Ova vrijednost je predugačka. Treba imati {{ limit }} znakova ili manje.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Ova vrijednost treba biti {{ limit }} ili više.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Ova vrijednost je prekratka. Treba imati {{ limit }} znakova ili više.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Ova vrijednost ne smije biti prazna.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Ova vrijednost ne smije biti null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Ova vrijednost treba biti null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Ova vrijednost nije ispravna.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Ova vrijednost nije ispravno vrijeme.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Ova vrijednost nije ispravan URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Obje vrijednosti trebaju biti jednake.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Ova datoteka je prevelika. Najveća dozvoljena veličina je {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Ova datoteka je prevelika.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Ova datoteka ne može biti prenesena.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Ova vrijednost treba biti ispravan broj.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Ova datoteka nije ispravna slika.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Ovo nije ispravna IP adresa.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Ova vrijednost nije ispravan jezik.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Ova vrijednost nije ispravana regionalna oznaka.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Ova vrijednost nije ispravna zemlja.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Ova vrijednost je već iskorištena.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Veličina slike se ne može odrediti.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Širina slike je prevelika ({{ width }}px). Najveća dozvoljena širina je {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Širina slike je premala ({{ width }}px). Najmanja dozvoljena širina je {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Visina slike je prevelika ({{ height }}px). Najveća dozvoljena visina je {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Visina slike je premala ({{ height }}px). Najmanja dozvoljena visina je {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Ova vrijednost treba biti trenutna korisnička lozinka.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Ova vrijednost treba imati točno {{ limit }} znakova.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Datoteka je samo djelomično prenesena.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Niti jedna datoteka nije prenesena.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>U php.ini datoteci nije konfiguriran privremeni folder.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Ne mogu zapisati privremenu datoteku na disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Prijenos datoteke nije uspio zbog PHP ekstenzije.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Ova kolekcija treba sadržavati {{ limit }} ili više elemenata.|Ova kolekcija treba sadržavati {{ limit }} ili više elemenata.|Ova kolekcija treba sadržavati {{ limit }} ili više elemenata.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Ova kolekcija treba sadržavati {{ limit }} ili manje elemenata.|Ova kolekcija treba sadržavati {{ limit }} ili manje elemenata.|Ova kolekcija treba sadržavati {{ limit }} ili manje elemenata.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Ova kolekcija treba sadržavati točno {{ limit }} element.|Ova kolekcija treba sadržavati točno {{ limit }} elementa.|Ova kolekcija treba sadržavati točno {{ limit }} elemenata.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Neispravan broj kartice.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Neispravan broj kartice ili tip kartice nije podržan.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Ova vrijednost nije ispravan međunarodni broj bankovnog računa (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Ova vrijednost nije ispravan ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Ova vrijednost nije ispravan ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Ova vrijednost nije ispravan ISBN-10 niti ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Ova vrijednost nije ispravan ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Ova vrijednost nije ispravna valuta.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Ova vrijednost bi trebala biti jednaka {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Ova vrijednost bi trebala biti veća od {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Ova vrijednost bi trebala biti veća ili jednaka od {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ova vrijednost bi trebala biti {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Ova vrijednost bi trebala biti manja od {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Ova vrijednost bi trebala biti manja ili jednaka {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Ova vrijednost ne bi trebala biti {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ova vrijednost ne bi trebala biti {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.hu.xlf b/vendor/symfony/validator/Resources/translations/validators.hu.xlf
deleted file mode 100644
index a972c02..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.hu.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Ennek az értéknek hamisnak kell lennie.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Ennek az értéknek igaznak kell lennie.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Ennek az értéknek {{ type }} típusúnak kell lennie.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Ennek az értéknek üresnek kell lennie.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>A választott érték érvénytelen.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Legalább {{ limit }} értéket kell kiválasztani.|Legalább {{ limit }} értéket kell kiválasztani.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Legfeljebb {{ limit }} értéket lehet kiválasztani.|Legfeljebb {{ limit }} értéket lehet kiválasztani.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>A megadott értékek közül legalább egy érvénytelen.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Nem várt mező.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Ez a mező hiányzik.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Ez az érték nem egy érvényes dátum.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Ez az érték nem egy érvényes időpont.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Ez az érték nem egy érvényes e-mail cím.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>A fájl nem található.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>A fájl nem olvasható.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>A fájl túl nagy ({{ size }} {{ suffix }}). A legnagyobb megengedett méret {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>A fájl MIME típusa érvénytelen ({{ type }}). Az engedélyezett MIME típusok: {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Ez az érték legfeljebb {{ limit }} lehet.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Ez az érték túl hosszú. Legfeljebb {{ limit }} karaktert tartalmazhat.|Ez az érték túl hosszú. Legfeljebb {{ limit }} karaktert tartalmazhat.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Ez az érték legalább {{ limit }} kell, hogy legyen.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Ez az érték túl rövid. Legalább {{ limit }} karaktert kell tartalmaznia.|Ez az érték túl rövid. Legalább {{ limit }} karaktert kell tartalmaznia.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Ez az érték nem lehet üres.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Ez az érték nem lehet null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Ennek az értéknek nullnak kell lennie.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Ez az érték nem érvényes.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Ez az érték nem egy érvényes időpont.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Ez az érték nem egy érvényes URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>A két értéknek azonosnak kell lennie.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>A fájl túl nagy. A megengedett maximális méret: {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>A fájl túl nagy.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>A fájl nem tölthető fel.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Ennek az értéknek érvényes számnak kell lennie.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Ez a fájl nem egy érvényes kép.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Ez az érték nem egy érvényes IP cím.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Ez az érték nem egy érvényes nyelv.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Ez az érték nem egy érvényes területi beállítás.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Ez az érték nem egy érvényes ország.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Ez az érték már használatban van.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>A kép méretét nem lehet megállapítani.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>A kép szélessége túl nagy ({{ width }}px). A megengedett legnagyobb szélesség {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>A kép szélessége túl kicsi ({{ width }}px). Az elvárt legkisebb szélesség {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>A kép magassága túl nagy ({{ height }}px). A megengedett legnagyobb magasság {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>A kép magassága túl kicsi ({{ height }}px). Az elvárt legkisebb magasság {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Ez az érték a felhasználó jelenlegi jelszavával kell megegyezzen.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Ennek az értéknek pontosan {{ limit }} karaktert kell tartalmaznia.|Ennek az értéknek pontosan {{ limit }} karaktert kell tartalmaznia.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>A fájl csak részben lett feltöltve.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Nem lett fájl feltöltve.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Nincs ideiglenes könyvtár beállítva a php.ini-ben.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Az ideiglenes fájl nem írható a lemezre.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Egy PHP bővítmény miatt a feltöltés nem sikerült.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Ennek a gyűjteménynek legalább {{ limit }} elemet kell tartalmaznia.|Ennek a gyűjteménynek legalább {{ limit }} elemet kell tartalmaznia.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Ez a gyűjtemény legfeljebb {{ limit }} elemet tartalmazhat.|Ez a gyűjtemény legfeljebb {{ limit }} elemet tartalmazhat.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Ennek a gyűjteménynek pontosan {{ limit }} elemet kell tartalmaznia.|Ennek a gyűjteménynek pontosan {{ limit }} elemet kell tartalmaznia.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Érvénytelen kártyaszám.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Nem támogatott kártyatípus vagy érvénytelen kártyaszám.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Érvénytelen nemzetközi bankszámlaszám (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Ez az érték nem egy érvényes ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Ez az érték nem egy érvényes ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Ez az érték nem egy érvényes ISBN-10 vagy ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Ez az érték nem egy érvényes ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Ez az érték nem egy érvényes pénznem.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Ez az érték legyen {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Ez az érték nagyobb legyen, mint {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Ez az érték nagyobb vagy egyenlő legyen, mint {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ez az érték ugyanolyan legyen, mint {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Ez az érték kisebb legyen, mint {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Ez az érték kisebb vagy egyenlő legyen, mint {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Ez az érték ne legyen {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ez az érték ne legyen ugyanolyan, mint {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>A képarány túl nagy ({{ ratio }}). A megengedett legnagyobb képarány {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>A képarány túl kicsi ({{ ratio }}). A megengedett legkisebb képarány {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>A kép négyzet alakú ({{ width }}x{{ height }}px). A négyzet alakú képek nem engedélyezettek.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>A kép fekvő tájolású ({{ width }}x{{ height }}px). A fekvő tájolású képek nem engedélyezettek.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>A kép álló tájolású ({{ width }}x{{ height }}px). Az álló tájolású képek nem engedélyezettek.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Üres fájl nem megengedett.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>Az állomásnevet nem lehet feloldani.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>Ez az érték nem az elvárt {{ charset }} karakterkódolást használja.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.hy.xlf b/vendor/symfony/validator/Resources/translations/validators.hy.xlf
deleted file mode 100644
index 664c085..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.hy.xlf
+++ /dev/null
@@ -1,187 +0,0 @@
-﻿<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Արժեքը պետք է լինի կեղծ.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Արժեքը պետք է լինի ճշմարիտ.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Արժեքը պետք է լինի {{ type }} տեսակի.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Արժեքը պետք է լինի դատարկ.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Ձեր ընտրած արժեքը անթույլատրելի է.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Դուք պետք է ընտրեք ամենաքիչը {{ limit }} տարբերակներ.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Դուք պետք է ընտրեք ոչ ավելի քան {{ limit }} տարբերակներ.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Մեկ կամ ավելի տրված արժեքները անթույլատրելի են.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Այս դաշտը չի սպասվում.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Այս դաշտը բացակայում է.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Արժեքը սխալ ամսաթիվ է.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Ամսաթվի և ժամանակի արժեքը անթույլատրելի է.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Էլ-փոստի արժեքը անթույլատրելի է.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Ֆայլը չի գտնվել.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Ֆայլը անընթեռնելի է.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Ֆայլը չափազանց մեծ է ({{ size }} {{ suffix }}): Մաքսիմալ թույլատրելի չափսը՝ {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>MIME-տեսակը անթույլատրելի է({{ type }}): Ֆայլերի թույլատրելի MIME-տեսակներն են: {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Արժեքը պետք է լինի {{ limit }} կամ փոքր.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Արժեքը չափազանց երկար է: Պետք է լինի {{ limit }} կամ ավել սիմվոլներ.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Արժեքը պետ է լինի {{ limit }} կամ շատ.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Արժեքը չափազանց կարճ է: Պետք է լինի {{ limit }} կամ ավելի սիմվոլներ.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Արժեքը չպետք է դատարկ լինի.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Արժեքը չպետք է լինի null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Արժեքը պետք է լինի null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Անթույլատրելի արժեք.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Ժամանակի արժեքը անթույլատրելի է.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Արժեքը  URL  չէ.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Երկու արժեքները պետք է նույնը լինեն.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Ֆայլը չափազանց մեծ է: Մաքսիմալ թույլատրելի չափսը {{ limit }} {{ suffix }} է.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Ֆայլը չափազանց մեծ է.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Ֆայլը չի կարող բեռնվել.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Արժեքը պետք է լինի թիվ.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This value is not a valid country.</source>
-                <target>Արժեքը պետք է լինի երկիր.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This file is not a valid image.</source>
-                <target>Ֆայլը նկարի թույլատրելի ֆորմատ չէ.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This is not a valid IP address.</source>
-                <target>Արժեքը թույլատրելի IP հասցե չէ.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid language.</source>
-                <target>Արժեքը թույլատրելի լեզու չէ.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid locale.</source>
-                <target>Արժեքը չի հանդիսանում թույլատրելի տեղայնացում.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Այդ արժեքը արդեն օգտագործվում է.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Նկարի չափսերը չստացվեց որոշել.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Նկարի լայնությունը չափազանց մեծ է({{ width }}px). Մաքսիմալ չափն է {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Նկարի լայնությունը չափազանց փոքր է ({{ width }}px). Մինիմալ չափն է {{ min_ width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Նկարի բարձրությունը չափազանց մեծ է ({{ height }}px). Մաքսիմալ չափն է {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Նկարի բարձրությունը չափազանց փոքր է ({{ height }}px). Մինիմալ չափն է {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Այս արժեքը պետք է լինի օգտագործողի ներկա ծածկագիրը.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Այս արժեքը պետք է ունենա ճիշտ {{ limit }} սիմվոլներ.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.id.xlf b/vendor/symfony/validator/Resources/translations/validators.id.xlf
deleted file mode 100644
index 742f4a1..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.id.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Nilai ini harus bernilai salah.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Nilai ini harus bernilai benar.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Nilai ini harus bertipe {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Nilai ini harus kosong.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Nilai yang dipilih tidak tepat.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Anda harus memilih paling tidak {{ limit }} pilihan.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Anda harus memilih paling banyak {{ limit }} pilihan.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Satu atau lebih nilai yang diberikan tidak sah.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Bidang ini tidak diharapkan.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Bidang ini hilang.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Nilai ini bukan merupakan tanggal yang sah.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Nilai ini bukan merupakan tanggal dan waktu yang sah.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Nilai ini bukan alamat email yang sah.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Berkas tidak ditemukan.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Berkas tidak bisa dibaca.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Ukuran berkas terlalu besar ({{ size }} {{ suffix }}). Ukuran maksimum yang diizinkan adalah {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Jenis berkas ({{ type }}) tidak sah. Jenis berkas yang diijinkan adalah {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Nilai ini harus {{ limit }} atau kurang.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Nilai ini terlalu panjang. Seharusnya {{ limit }} karakter atau kurang.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Nilai ini harus {{ limit }} atau lebih.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Nilai ini terlalu pendek. Seharusnya {{ limit }} karakter atau lebih.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Nilai ini tidak boleh kosong.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Nilai ini tidak boleh 'null'.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Nilai ini harus 'null'.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Nilai ini tidak sah.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Nilai ini bukan merupakan waktu yang sah.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Nilai ini bukan URL yang sah.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Isi keduanya harus sama.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Ukuran berkas terlalu besar. Ukuran maksimum yang diijinkan adalah {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Ukuran berkas terlalu besar.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Berkas tidak dapat diunggah.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Nilai ini harus angka yang sah.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Berkas ini tidak termasuk gambar.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Ini bukan alamat IP yang sah.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Nilai ini bukan bahasa yang sah.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Nilai ini bukan lokal yang sah.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Nilai ini bukan negara yang sah.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Nilai ini sudah digunakan.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Ukuran dari gambar tidak bisa dideteksi.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Lebar gambar terlalu besar ({{ width }}px). Ukuran lebar maksimum adalah {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Lebar gambar terlalu kecil ({{ width }}px). Ukuran lebar minimum yang diharapkan adalah {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Tinggi gambar terlalu besar ({{ height }}px). Ukuran tinggi maksimum adalah {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Tinggi gambar terlalu kecil ({{ height }}px). Ukuran tinggi minimum yang diharapkan adalah {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Nilai ini harus kata sandi pengguna saat ini.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Nilai ini harus memiliki tepat {{ limit }} karakter.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Berkas hanya terunggah sebagian.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Tidak ada berkas terunggah.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Direktori sementara tidak dikonfiguasi pada php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Tidak dapat menuliskan berkas sementara ke dalam media penyimpanan.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Sebuah ekstensi PHP menyebabkan kegagalan unggah.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Kumpulan ini harus memiliki {{ limit }} elemen atau lebih.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Kumpulan ini harus memiliki kurang dari {{ limit }} elemen.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Kumpulan ini harus memiliki tepat {{ limit }} elemen.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Nomor kartu tidak sah.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Jenis kartu tidak didukung atau nomor kartu tidak sah.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Ini bukan Nomor Rekening Bank Internasional (IBAN) yang sah.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Nilai ini bukan ISBN-10 yang sah.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Nilai ini bukan ISBN-13 yang sah.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Nilai ini bukan ISBN-10 maupun ISBN-13 yang sah.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Nilai ini bukan ISSN yang sah.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Nilai ini bukan mata uang yang sah.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Nilai ini seharusnya sama dengan {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Nilai ini seharusnya lebih dari {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Nilai ini seharusnya lebih dari atau sama dengan {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Nilai ini seharusnya identik dengan {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Nilai ini seharusnya kurang dari {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Nilai ini seharusnya kurang dari atau sama dengan {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Nilai ini seharusnya tidak sama dengan {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Nilai ini seharusnya tidak identik dengan {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.it.xlf b/vendor/symfony/validator/Resources/translations/validators.it.xlf
deleted file mode 100644
index 38e437d..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.it.xlf
+++ /dev/null
@@ -1,319 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Questo valore dovrebbe essere falso.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Questo valore dovrebbe essere vero.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Questo valore dovrebbe essere di tipo {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Questo valore dovrebbe essere vuoto.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Questo valore dovrebbe essere una delle opzioni disponibili.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Si dovrebbe selezionare almeno {{ limit }} opzione.|Si dovrebbero selezionare almeno {{ limit }} opzioni.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Si dovrebbe selezionare al massimo {{ limit }} opzione.|Si dovrebbero selezionare al massimo {{ limit }} opzioni.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Uno o più valori inseriti non sono validi.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Questo campo non è stato previsto.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Questo campo è mancante.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Questo valore non è una data valida.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Questo valore non è una data e ora valida.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Questo valore non è un indirizzo email valido.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Non è stato possibile trovare il file.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Il file non è leggibile.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Il file è troppo grande ({{ size }} {{ suffix }}). La dimensione massima consentita è {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Il mime type del file non è valido ({{ type }}). I tipi permessi sono {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Questo valore dovrebbe essere {{ limit }} o inferiore.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Questo valore è troppo lungo. Dovrebbe essere al massimo di {{ limit }} carattere.|Questo valore è troppo lungo. Dovrebbe essere al massimo di {{ limit }} caratteri.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Questo valore dovrebbe essere {{ limit }} o superiore.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Questo valore è troppo corto. Dovrebbe essere almeno di {{ limit }} carattere.|Questo valore è troppo corto. Dovrebbe essere almeno di {{ limit }} caratteri.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Questo valore non dovrebbe essere vuoto.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Questo valore non dovrebbe essere nullo.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Questo valore dovrebbe essere nullo.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Questo valore non è valido.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Questo valore non è un'ora valida.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Questo valore non è un URL valido.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>I due valori dovrebbero essere uguali.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Il file è troppo grande. La dimensione massima è {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Il file è troppo grande.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Il file non può essere caricato.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Questo valore dovrebbe essere un numero.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Questo file non è una immagine valida.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Questo valore non è un indirizzo IP valido.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Questo valore non è una lingua valida.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Questo valore non è una impostazione regionale valida.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Questo valore non è una nazione valida.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Questo valore è già stato utilizzato.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>La dimensione dell'immagine non può essere determinata.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>La larghezza dell'immagine è troppo grande ({{ width }}px). La larghezza massima è di {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>La larghezza dell'immagine è troppo piccola ({{ width }}px). La larghezza minima è di {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>L'altezza dell'immagine è troppo grande ({{ height }}px). L'altezza massima è di {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>L'altezza dell'immagine è troppo piccola ({{ height }}px). L'altezza minima è di {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Questo valore dovrebbe essere la password attuale dell'utente.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Questo valore dovrebbe contenere esattamente {{ limit }} carattere.|Questo valore dovrebbe contenere esattamente {{ limit }} caratteri.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Il file è stato caricato solo parzialmente.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Nessun file è stato caricato.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Nessuna cartella temporanea è stata configurata nel php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Impossibile scrivere il file temporaneo sul disco.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Un'estensione PHP ha causato il fallimento del caricamento.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Questa collezione dovrebbe contenere almeno {{ limit }} elemento.|Questa collezione dovrebbe contenere almeno {{ limit }} elementi.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Questa collezione dovrebbe contenere massimo {{ limit }} elemento.|Questa collezione dovrebbe contenere massimo {{ limit }} elementi.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Questa collezione dovrebbe contenere esattamente {{ limit }} elemento.|Questa collezione dovrebbe contenere esattamente {{ limit }} elementi.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Numero di carta non valido.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Tipo di carta non supportato o numero non valido.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Questo valore non è un IBAN (International Bank Account Number) valido.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Questo valore non è un codice ISBN-10 valido.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Questo valore non è un codice ISBN-13 valido.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Questo valore non è un codice ISBN-10 o ISBN-13 valido.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Questo valore non è un codice ISSN valido.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Questo valore non è una valuta valida.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Questo valore dovrebbe essere uguale a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Questo valore dovrebbe essere maggiore di {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Questo valore dovrebbe essere maggiore o uguale a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Questo valore dovrebbe essere identico a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Questo valore dovrebbe essere minore di {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Questo valore dovrebbe essere minore o uguale a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Questo valore dovrebbe essere diverso da {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Questo valore dovrebbe essere diverso da {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Il rapporto di aspetto dell'immagine è troppo grande ({{ ratio }}). Il rapporto massimo consentito è {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Il rapporto di aspetto dell'immagine è troppo piccolo ({{ ratio }}). Il rapporto minimo consentito è {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>L'immagine è quadrata ({{ width }}x{{ height }}px). Le immagini quadrate non sono consentite.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>L'immagine è orizzontale ({{ width }}x{{ height }}px). Le immagini orizzontali non sono consentite.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>L'immagine è verticale ({{ width }}x{{ height }}px). Le immagini verticali non sono consentite.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Un file vuoto non è consentito.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>L'host non può essere risolto.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>Questo valore non corrisponde al charset {{ charset }}.</target>
-            </trans-unit>
-            <trans-unit id="81">
-                <source>This is not a valid Business Identifier Code (BIC).</source>
-                <target>Questo valore non è un codice BIC valido.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.ja.xlf b/vendor/symfony/validator/Resources/translations/validators.ja.xlf
deleted file mode 100644
index a58f5b8..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.ja.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>falseでなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>trueでなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>型は{{ type }}でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>空でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>有効な選択肢ではありません。</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>{{ limit }}個以上選択してください。</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>{{ limit }}個以内で選択してください。</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>無効な選択肢が含まれています。</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>このフィールドは予期されていませんでした。</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>このフィールドは、欠落しています。</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>有効な日付ではありません。</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>有効な日時ではありません。</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>有効なメールアドレスではありません。</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>ファイルが見つかりません。</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>ファイルを読み込めません。</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>ファイルのサイズが大きすぎます({{ size }} {{ suffix }})。有効な最大サイズは{{ limit }} {{ suffix }}です。</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>ファイルのMIMEタイプが無効です({{ type }})。有効なMIMEタイプは{{ types }}です。</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>{{ limit }}以下でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>値が長すぎます。{{ limit }}文字以内でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>{{ limit }}以上でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>値が短すぎます。{{ limit }}文字以上でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>空であってはなりません。</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>nullであってはなりません。</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>nullでなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>有効な値ではありません。</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>有効な時刻ではありません。</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>有効なURLではありません。</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>2つの値が同じでなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>ファイルのサイズが大きすぎます。有効な最大サイズは{{ limit }} {{ suffix }}です。</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>ファイルのサイズが大きすぎます。</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>ファイルをアップロードできませんでした。</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>有効な数字ではありません。</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>ファイルが画像ではありません。</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>有効なIPアドレスではありません。</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>有効な言語名ではありません。</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>有効なロケールではありません。</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>有効な国名ではありません。</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>既に使用されています。</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>画像のサイズが検出できません。</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>画像の幅が大きすぎます({{ width }}ピクセル)。{{ max_width }}ピクセルまでにしてください。</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>画像の幅が小さすぎます({{ width }}ピクセル)。{{ min_width }}ピクセル以上にしてください。</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>画像の高さが大きすぎます({{ height }}ピクセル)。{{ max_height }}ピクセルまでにしてください。</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>画像の高さが小さすぎます({{ height }}ピクセル)。{{ min_height }}ピクセル以上にしてください。</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>ユーザーの現在のパスワードでなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>ちょうど{{ limit }}文字でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>ファイルのアップロードは完全ではありません。</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>ファイルがアップロードされていません。</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>php.iniで一時フォルダが設定されていません。</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>一時ファイルをディスクに書き込むことができません。</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>PHP拡張によってアップロードに失敗しました。</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>{{ limit }}個以上の要素を含んでなければいけません。</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>要素は{{ limit }}個までです。</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>要素はちょうど{{ limit }}個でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>無効なカード番号です。</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>未対応のカード種類又は無効なカード番号です。</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>有効なIBANコードではありません。</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>有効なISBN-10コードではありません。</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>有効なISBN-13コードではありません。</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>有効なISBN-10コード又はISBN-13コードではありません。</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>有効なISSNコードではありません。</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>有効な貨幣ではありません。</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>{{ compared_value }}と等しくなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>{{ compared_value }}より大きくなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>{{ compared_value }}以上でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>{{ compared_value_type }}としての{{ compared_value }}と等しくなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>{{ compared_value }}未満でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>{{ compared_value }}以下でなければなりません。</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>{{ compared_value }}と等しくてはいけません。</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>{{ compared_value_type }}としての{{ compared_value }}と等しくてはいけません。</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>画像のアスペクト比が大きすぎます({{ ratio }})。{{ max_ratio }}までにしてください。</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>画像のアスペクト比が小さすぎます({{ ratio }})。{{ min_ratio }}以上にしてください。</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>画像が正方形になっています({{ width }}x{{ height }}ピクセル)。正方形の画像は許可されていません。</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>画像が横向きになっています({{ width }}x{{ height }}ピクセル)。横向きの画像は許可されていません。</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>画像が縦向きになっています({{ width }}x{{ height }}ピクセル)。縦向きの画像は許可されていません。</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>空のファイルは許可されていません。</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>ホストを解決できませんでした。</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>この値は予期される文字コード（{{ charset }}）と異なります。</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.lb.xlf b/vendor/symfony/validator/Resources/translations/validators.lb.xlf
deleted file mode 100644
index 8281c7c..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.lb.xlf
+++ /dev/null
@@ -1,303 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Dëse Wäert sollt falsch sinn.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Dëse Wäert sollt wouer sinn.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Dëse Wäert sollt vum Typ {{ type }} sinn.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Dëse Wäert sollt eidel sinn.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Dëse Wäert sollt enger vun de Wielméiglechkeeten entspriechen.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Dir sollt mindestens {{ limit }} Méiglechkeete wielen.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Dir sollt héchstens {{ limit }} Méiglechkeete wielen.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Een oder méi vun de Wäerter ass ongëlteg.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>The fields {{ fields }} were not expected.</source>
-                <target>D'Felder {{ fields }} goufen net erwaart.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>The fields {{ fields }} are missing.</source>
-                <target>D'Felder {{ fields }} feelen.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Dëse Wäert entsprécht kenger gëlteger Datumsangab.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Dëse Wäert entsprécht kenger gëlteger Datums- an Zäitangab.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Dëse Wäert ass keng gëlteg Email-Adress.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>De Fichier gouf net fonnt.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>De Fichier ass net liesbar.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>De Fichier ass ze grouss ({{ size }} {{ suffix }}). Déi zougeloosse Maximalgréisst bedréit {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Den Typ vum Fichier ass ongëlteg ({{ type }}). Erlaabten Type sinn {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Dëse Wäert soll méi kleng oder gläich {{ limit }} sinn.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Dës Zeecheketten ass ze laang. Se sollt héchstens {{ limit }} Zeechen hunn.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Dëse Wäert sollt méi grouss oder gläich {{ limit }} sinn.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Dës Zeecheketten ass ze kuerz. Se sollt mindestens {{ limit }} Zeechen hunn.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Dëse Wäert sollt net eidel sinn.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Dëst sollt keen Null-Wäert sinn.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Dëst sollt keen Null-Wäert sinn.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Dëse Wäert ass net gëlteg.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Dëse Wäert entsprécht kenger gëlteger Zäitangab.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Dëse Wäert ass keng gëlteg URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Béid Wäerter sollten identesch sinn.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>De fichier ass ze grouss. Déi maximal Gréisst dierf {{ limit }} {{ suffix }} net depasséieren.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>De Fichier ass ze grouss.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>De Fichier konnt net eropgeluede ginn.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Dëse Wäert sollt eng gëlteg Zuel sinn.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Dëse Fichier ass kee gëltegt Bild.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Dëst ass keng gëlteg IP-Adress.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Dëse Wäert aentsprécht kenger gëlteger Sprooch.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Dëse Wäert entsprécht kengem gëltege Gebittsschema.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Dëse Wäert entsprécht kengem gëltege Land.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Dëse Wäert gëtt scho benotzt.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>D'Gréisst vum Bild konnt net detektéiert ginn.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>D'Breet vum Bild ass ze grouss ({{ width }}px). Déi erlaabte maximal Breet ass {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>D'Breet vum Bild ass ze kleng ({{ width }}px). Déi minimal Breet ass {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>D'Héicht vum Bild ass ze grouss ({{ height }}px). Déi erlaabte maximal Héicht ass {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>D'Héicht vum Bild ass ze kleng ({{ height }}px). Déi minimal Héicht ass {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Dëse Wäert sollt dem aktuelle Benotzerpasswuert entspriechen.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Dëse Wäert sollt exactly {{ limit }} Buschtaf hunn.|Dëse Wäert sollt exakt {{ limit }} Buschtawen hunn.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>De Fichier gouf just deelweis eropgelueden.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Et gouf kee Fichier eropgelueden.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Et gouf keen temporären Dossier an der php.ini konfiguréiert.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Den temporäre Fichier kann net gespäichert ginn.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Eng PHP-Erweiderung huet den Upload verhënnert.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Dës Sammlung sollt {{ limit }} oder méi Elementer hunn.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Dës Sammlung sollt {{ limit }} oder manner Elementer hunn.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Dës Sammlung sollt exakt {{ limit }} Element hunn.|Dës Sammlung sollt exakt {{ limit }} Elementer hunn.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Ongëlteg Kaartennummer.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Net ënnerstëtzte Kaartentyp oder ongëlteg Kaartennummer.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Dëst ass keng gëlteg IBAN-Kontonummer.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Dëse Wäert ass keng gëlteg ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Dëse Wäert ass keng gëlteg ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Dëse Wäert ass weder eng gëlteg ISBN-10 nach eng gëlteg ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Dëse Wäert ass keng gëlteg ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Dëse Wäert ass keng gëlteg Währung.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Dëse Wäert sollt {{ compared_value }} sinn.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Dëse Wäert sollt méi grouss wéi {{ compared_value }} sinn.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Dëse Wäert sollt méi grouss wéi oder gläich {{ compared_value }} sinn.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Dëse Wäert sollt identesch si mat {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Dëse Wäert sollt méi kleng wéi {{ compared_value }} sinn.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Dëse Wäert sollt méi kleng wéi oder gläich {{ compared_value }} sinn.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Dëse Wäert sollt net {{ compared_value }} sinn.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Dëse Wäert sollt net identesch si mat {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>D'Säiteverhältnis vum Bild ass ze grouss ({{ ratio }}). Den erlaabte Maximalwäert ass {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>D'Säiteverhältnis vum Bild ass ze kleng ({{ ratio }}). Den erwaarte Minimalwäert ass {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>D'Bild ass quadratesch ({{ width }}x{{ height }}px). Quadratesch Biller sinn net erlaabt.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>D'Bild ass am Queeschformat ({{ width }}x{{ height }}px). Biller am Queeschformat sinn net erlaabt.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>D'Bild ass am Héichformat ({{ width }}x{{ height }}px). Biller am Héichformat sinn net erlaabt.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.lt.xlf b/vendor/symfony/validator/Resources/translations/validators.lt.xlf
deleted file mode 100644
index a556c45..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.lt.xlf
+++ /dev/null
@@ -1,307 +0,0 @@
-﻿<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Reikšmė turi būti neigiama.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Reikšmė turi būti teigiama.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Šios reikšmės tipas turi būti {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Ši reikšmė turi būti tuščia.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Neteisingas pasirinkimas.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Turite pasirinkti bent {{ limit }} variantą.|Turite pasirinkti bent {{ limit }} variantus.|Turite pasirinkti bent {{ limit }} variantų.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Turite pasirinkti ne daugiau kaip {{ limit }} variantą.|Turite pasirinkti ne daugiau kaip {{ limit }} variantus.|Turite pasirinkti ne daugiau kaip {{ limit }} variantų.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Viena ar daugiau įvestų reikšmių yra netinkamos.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Nebuvo tikimasi Šis laukas.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Šiame lauke yra dingęs.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Ši reikšmė nėra data.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Ši reikšmė nera data ir laikas.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Ši reikšmė nėra tinkamas el. pašto adresas.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Byla nerasta.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Negalima nuskaityti bylos.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Byla yra per didelė ({{ size }} {{ suffix }}). Maksimalus dydis {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Netinkamas bylos tipas (mime type) ({{ type }}). Galimi bylų tipai {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Reikšmė turi būti {{ limit }} arba mažiau.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Per didelis simbolių skaičius. Turi susidaryti iš {{ limit }} arba mažiau simbolių.|Per didelis simbolių skaičius. Turi susidaryti iš {{ limit }} arba mažiau simbolių.|Per didelis simbolių skaičius. Turi susidaryti iš {{ limit }} arba mažiau simbolių.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Reikšmė turi būti {{ limit }} arba daugiau.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Per mažas simbolių skaičius. Turi susidaryti iš {{ limit }} arba daugiau simbolių.|Per mažas simbolių skaičius. Turi susidaryti iš {{ limit }} arba daugiau simbolių.|Per mažas simbolių skaičius. Turi susidaryti iš {{ limit }} arba daugiau simbolių.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Ši reikšmė negali būti tuščia.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Ši reikšmė negali būti null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Ši reikšmė turi būti null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Netinkama reikšmė.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Ši reikšmė nėra laikas.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Ši reikšmė nėra tinkamas interneto adresas.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Abi reikšmės turi būti identiškos.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Byla yra per didelė. Maksimalus dydis yra {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Byla per didelė.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Byla negali būti įkelta.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Ši reikšmė turi būti skaičius.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This value is not a valid country.</source>
-                <target>Ši reikšmė nėra tinkama šalis.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This file is not a valid image.</source>
-                <target>Byla nėra paveikslėlis.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This is not a valid IP address.</source>
-                <target>Ši reikšmė nėra tinkamas IP adresas.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid language.</source>
-                <target>Ši reikšmė nėra tinkama kalba.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid locale.</source>
-                <target>Ši reikšmė nėra tinkama lokalė.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Ši reikšmė jau yra naudojama.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Nepavyko nustatyti nuotraukos dydžio.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Nuotraukos plotis per didelis ({{ width }}px). Maksimalus leidžiamas plotis yra {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Nuotraukos plotis per mažas ({{ width }}px). Minimalus leidžiamas plotis yra {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Nuotraukos aukštis per didelis ({{ height }}px). Maksimalus leidžiamas aukštis yra {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Nuotraukos aukštis per mažas ({{ height }}px). Minimalus leidžiamas aukštis yra {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Ši reikšmė turi sutapti su dabartiniu naudotojo slaptažodžiu.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Ši reikšmė turi turėti lygiai {{ limit }} simbolį.|Ši reikšmė turi turėti lygiai {{ limit }} simbolius.|Ši reikšmė turi turėti lygiai {{ limit }} simbolių.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Failas buvo tik dalinai įkeltas.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Nebuvo įkelta jokių failų.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Nėra sukonfiguruoto jokio laikino katalogo php.ini faile.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Nepavyko išsaugoti laikino failo.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>PHP plėtinys sutrukdė failo įkėlimą ir jis nepavyko.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Sąraše turi būti {{ limit }} arba daugiau įrašų.|Sąraše turi būti {{ limit }} arba daugiau įrašų.|Sąraše turi būti {{ limit }} arba daugiau įrašų.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Sąraše turi būti {{ limit }} arba mažiau įrašų.|Sąraše turi būti {{ limit }} arba mažiau įrašų.|Sąraše turi būti {{ limit }} arba mažiau įrašų.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Sąraše turi būti lygiai {{ limit }} įrašas.|Sąraše turi būti lygiai {{ limit }} įrašai.|Sąraše turi būti lygiai {{ limit }} įrašų.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Klaidingas kortelės numeris.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Kortelės tipas nepalaikomas arba klaidingas kortelės numeris.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Ši reišmė neatitinka tarptautinio banko sąskaitos numerio formato (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Ši reikšmė neatitinka ISBN-10 formato.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Ši reikšmė neatitinka ISBN-13 formato.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Ši reikšmė neatitinka nei ISBN-10, nei ISBN-13 formato.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Ši reišmė neatitinka ISSN formato.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Netinkamas valiutos formatas.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Ši reikšmė turi būti lygi {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Ši reikšmė turi būti didesnė už {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Ši reikšmė turi būti didesnė už arba lygi {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ši reikšmė turi būti identiška {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Ši reikšmė turi būti mažesnė už {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Ši reikšmė turi būti mažesnė už arba lygi {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Ši reikšmė neturi būti lygi {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ši reikšmė neturi būti identiška {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Nuotraukos santykis yra per didelis ({{ ratio }}). Didžiausias leistinas santykis yra {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Nuotraukos santykis yra per mažas ({{ ratio }}). Mažiausias leistinas santykis yra {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>Nuotrauka yra kvadratinė ({{ width }}x{{ height }}px). Kvadratinės nuotraukos nėra leistinos.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>Nuotrauka orientuota į plotį ({{ width }}x{{ height }}px). Nuotraukos orientuotos į plotį nėra leistinos.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>Nuotrauka orientuota į aukštį ({{ width }}x{{ height }}px). Nuotraukos orientuotos į aukštį nėra leistinos.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Failas negali būti tuščias.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.mn.xlf b/vendor/symfony/validator/Resources/translations/validators.mn.xlf
deleted file mode 100644
index dfe7eeb..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.mn.xlf
+++ /dev/null
@@ -1,151 +0,0 @@
-﻿<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Энэ утга буруу байх ёстой.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Энэ утга үнэн байх ёстой.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Энэ утга  {{ type }} -н төрөл байх ёстой.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Энэ утга хоосон байх ёстой.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Сонгосон утга буруу байна.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Хамгийн багадаа {{ limit }} утга сонгогдсон байх ёстой.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Хамгийн ихдээ {{ limit }} утга сонгогдох боломжтой.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Өгөгдсөн нэг эсвэл нэгээс олон утга буруу байна.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Энэ талбар нь хүлээгдэж байсан юм.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Энэ талбар нь алга болсон байна.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Энэ утга буруу date төрөл байна .</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Энэ утга буруу цаг төрөл байна.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>И-майл хаяг буруу байна.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Файл олдсонгүй.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Файл уншигдахуйц биш байна.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Файл хэтэрхий том байна ({{ size }} {{ suffix }}). Зөвшөөрөгдөх дээд хэмжээ  {{ limit }} {{ suffix }} байна.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Файлын MIME-төрөл нь буруу байна ({{ type }}). Зөвшөөрөгдөх MIME-төрлүүд {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Энэ утга  {{ limit }} юмуу эсвэл бага байна.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Энэ утга хэтэрхий урт байна. {{ limit }} тэмдэгтийн урттай юмуу эсвэл бага байна.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Энэ утга {{ limit }} юмуу эсвэл их байна.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Энэ утга хэтэрхий богино байна. {{ limit }} тэмдэгт эсвэл их байна.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Энэ утга хоосон байж болохгүй.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Энэ утга null байж болохгүй.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Энэ утга null байна.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Энэ утга буруу байна.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Энэ утга буруу цаг төрөл байна.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Энэ утга буруу URL байна .</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Хоёр утгууд ижил байх ёстой.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Файл хэтэрхий том байна. Зөвшөөрөгдөх дээд хэмжээ нь {{ limit }} {{ suffix }} байна.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Файл хэтэрхий том байна.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Файл upload хийгдсэнгүй.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Энэ утга зөвхөн тоо байна.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This value is not a valid country.</source>
-                <target>Энэ утга үнэн бодит улс биш байна.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This file is not a valid image.</source>
-                <target>Файл зураг биш байна.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This is not a valid IP address.</source>
-                <target>IP хаяг зөв биш байна.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid language.</source>
-                <target>Энэ утга үнэн зөв хэл биш байна .</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.nb.xlf b/vendor/symfony/validator/Resources/translations/validators.nb.xlf
deleted file mode 100644
index a8b790c..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.nb.xlf
+++ /dev/null
@@ -1,155 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Verdien skal være falsk.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Verdien skal være sann.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Verdien skal være av typen {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Verdien skal være blank.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Verdien skal være en av de gitte valg.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Du skal velge minst {{ limit }} valg.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Du kan maks velge {{ limit }} valg.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>En eller flere av de oppgitte verdier er ugyldige.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Dette feltet ikke var forventet.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Dette feltet mangler.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Verdien er ikke en gyldig dato.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Verdien er ikke en gyldig dato og tid.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Verdien er ikke en gyldig e-mail adresse.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Filen kunne ikke finnes.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Filen kan ikke leses.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Filen er for stor ({{ size }} {{ suffix }}). Tilatte maksimale størrelse {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Mimetypen av filen er ugyldig ({{ type }}). Tilatte mimetyper er {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Verdien skal være {{ limit }} eller mindre.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Verdien er for lang. Den skal ha {{ limit }} bokstaver eller mindre.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Verdien skal være {{ limit }} eller mer.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Verdien er for kort. Den skal ha {{ limit }} tegn eller flere.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Verdien må ikke være blank.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Verdien må ikke være tom (null).</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Verdien skal være tom (null).</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Verdien er ikke gyldig.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Verdien er ikke en gyldig tid.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Verdien er ikke en gyldig URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>De to verdier skal være ens.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Filen er for stor. Den maksimale størrelse er {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Filen er for stor.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Filen kunne ikke lastes opp.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Denne verdi skal være et gyldig tall.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Denne filen er ikke et gyldig bilde.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Dette er ikke en gyldig IP adresse.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Denne verdi er ikke et gyldig språk.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Denne verdi er ikke en gyldig lokalitet.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Denne verdi er ikke et gyldig land.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.nl.xlf b/vendor/symfony/validator/Resources/translations/validators.nl.xlf
deleted file mode 100644
index fe33469..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.nl.xlf
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Deze waarde mag niet waar zijn.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Deze waarde moet waar zijn.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Deze waarde moet van het type {{ type }} zijn.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Deze waarde moet leeg zijn.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>De geselecteerde waarde is geen geldige optie.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Selecteer ten minste {{ limit }} optie.|Selecteer ten minste {{ limit }} opties.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Selecteer maximaal {{ limit }} optie.|Selecteer maximaal {{ limit }} opties.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Eén of meer van de ingegeven waarden zijn ongeldig.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Dit veld was niet verwacht.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Dit veld ontbreekt.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Deze waarde is geen geldige datum.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Deze waarde is geen geldige datum en tijd.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Deze waarde is geen geldig e-mailadres.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Het bestand is niet gevonden.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Het bestand is niet leesbaar.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Het bestand is te groot ({{ size }} {{ suffix }}). Toegestane maximum grootte is {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Het mime type van het bestand is ongeldig ({{ type }}). Toegestane mime types zijn {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Deze waarde moet {{ limit }} of minder zijn.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Deze waarde is te lang. Hij mag maximaal {{ limit }} teken bevatten.|Deze waarde is te lang. Hij mag maximaal {{ limit }} tekens bevatten.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Deze waarde moet {{ limit }} of meer zijn.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Deze waarde is te kort. Hij moet tenminste {{ limit }} teken bevatten.|Deze waarde is te kort. Hij moet tenminste {{ limit }} tekens bevatten.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Deze waarde mag niet leeg zijn.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Deze waarde mag niet null zijn.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Deze waarde moet null zijn.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Deze waarde is ongeldig.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Deze waarde is geen geldige tijd.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Deze waarde is geen geldige URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>De twee waarden moeten gelijk zijn.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Het bestand is te groot. Toegestane maximum grootte is {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Het bestand is te groot.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Het bestand kon niet geüpload worden.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Deze waarde moet een geldig getal zijn.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Dit bestand is geen geldige afbeelding.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Dit is geen geldig IP-adres.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Deze waarde representeert geen geldige taal.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Deze waarde representeert geen geldige lokalisering.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Deze waarde representeert geen geldig land.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Deze waarde wordt al gebruikt.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>De grootte van de afbeelding kon niet bepaald worden.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>De afbeelding is te breed ({{ width }}px). De maximaal toegestane breedte is {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>De afbeelding is niet breed genoeg ({{ width }}px). De minimaal verwachte breedte is {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>De afbeelding is te hoog ({{ height }}px). De maximaal toegestane hoogte is {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>De afbeelding is niet hoog genoeg ({{ height }}px). De minimaal verwachte hoogte is {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Deze waarde moet het huidige wachtwoord van de gebruiker zijn.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Deze waarde moet exact {{ limit }} teken lang zijn.|Deze waarde moet exact {{ limit }} tekens lang zijn.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Het bestand is niet geheel geüpload.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Er is geen bestand geüpload.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Er is geen tijdelijke map geconfigureerd in php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Kan het tijdelijke bestand niet wegschrijven op disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>De upload is mislukt vanwege een PHP-extensie.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Deze collectie moet {{ limit }} element of meer bevatten.|Deze collectie moet {{ limit }} elementen of meer bevatten.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Deze collectie moet {{ limit }} element of minder bevatten.|Deze collectie moet {{ limit }} elementen of minder bevatten.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Deze collectie moet exact {{ limit }} element bevatten.|Deze collectie moet exact {{ limit }} elementen bevatten.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Ongeldig creditcardnummer.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Niet-ondersteund type creditcard of ongeldig nummer.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Dit is geen geldig internationaal bankrekeningnummer (IBAN).</target>
-            </trans-unit>
-             <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Deze waarde is geen geldige ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Deze waarde is geen geldige ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Deze waarde is geen geldige ISBN-10 of ISBN-13 waarde.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Deze waarde is geen geldige ISSN waarde.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Deze waarde is geen geldige valuta.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Deze waarde moet gelijk zijn aan {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Deze waarde moet groter zijn dan {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Deze waarde moet groter dan of gelijk aan {{ compared_value }} zijn.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Deze waarde moet identiek zijn aan {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Deze waarde moet minder zijn dan {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Deze waarde moet minder dan of gelijk aan {{ compared_value }} zijn.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Deze waarde mag niet gelijk zijn aan {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Deze waarde mag niet identiek zijn aan {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>De afbeeldingsverhouding is te groot ({{ ratio }}). Maximale verhouding is {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>De afbeeldingsverhouding is te klein ({{ ratio }}). Minimale verhouding is {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>De afbeelding is vierkant ({{ width }}x{{ height }}px). Vierkante afbeeldingen zijn niet toegestaan.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>De afbeelding is liggend ({{ width }}x{{ height }}px). Liggende afbeeldingen zijn niet toegestaan.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>De afbeelding is staand ({{ width }}x{{ height }}px). Staande afbeeldingen zijn niet toegestaan.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Lege bestanden zijn niet toegestaan.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>Deze waarde is niet in de verwachte tekencodering {{ charset }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.no.xlf b/vendor/symfony/validator/Resources/translations/validators.no.xlf
deleted file mode 100644
index ea01c63..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.no.xlf
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Verdien skulle ha vore tom/nei.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Verdien skulla ha vore satt/ja.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Verdien må vere av typen {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Verdien skal vere blank.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Verdien du valgte er ikkje gyldig.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Du må velge minst {{ limit }} valg.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Du kan maksimalt gjere {{ limit }} valg.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Ein eller fleire av dei opplyste verdiane er ugyldige.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Dette feltet var ikke forventet.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Dette feltet mangler.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Verdien er ikkje ein gyldig dato.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Verdien er ikkje ein gyldig dato og tid.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Verdien er ikkje ei gyldig e-postadresse.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Fila kunne ikkje finnes.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Fila kan ikkje lesast.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Fila er for stor ({{ size }} {{ suffix }}). Tillatt maksimal størrelse er {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Mime-typen av fila er ugyldig ({{ type }}). Tillatte mime-typar er {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Verdien må vere {{ limit }} eller mindre.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Verdien er for lang. Den må vere {{ limit }} bokstavar eller mindre.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Verdien må vere {{ limit }} eller meir.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Verdien er for kort. Den må ha {{ limit }} teikn eller fleire.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Verdien må ikkje vere blank.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Verdien må ikkje vere tom (null).</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Verdien må vere tom (null).</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Verdien er ikkje gyldig.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Verdien er ikkje gyldig tidseining.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Verdien er ikkje ein gyldig URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Dei to verdiane må vere like.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Fila er for stor. Den maksimale storleik er {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Fila er for stor.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Fila kunne ikkje bli lasta opp.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Verdien må vere eit gyldig tal.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Fila er ikkje eit gyldig bilete.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Dette er ikkje ei gyldig IP-adresse.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Verdien er ikkje eit gyldig språk.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Verdien er ikkje ein gyldig lokalitet (språk/region).</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Verdien er ikkje eit gyldig land.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Verdien er allereie i bruk.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Storleiken på biletet kunne ikkje oppdagast.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Biletbreidda er for stor, ({{ width }} pikslar). Tillatt maksimumsbreidde er {{ max_width }} pikslar.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Biletbreidda er for liten, ({{ width }} pikslar). Forventa minimumsbreidde er {{ min_width }} pikslar.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Bilethøgda er for stor, ({{ height }} pikslar). Tillatt maksimumshøgde er {{ max_height }} pikslar.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Billethøgda er for låg, ({{ height }} pikslar). Forventa minimumshøgde er {{ min_height }} pikslar.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Verdien må vere brukaren sitt noverande passord.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Verdien må vere nøyaktig {{ limit }} teikn.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Fila vart kun delvis opplasta.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Inga fil vart lasta opp.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Førebels mappe (tmp) er ikkje konfigurert i php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Kan ikkje skrive førebels fil til disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Ei PHP-udviding forårsaka feil under opplasting.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Denne samlinga må innehalde {{ limit }} element eller meir.|Denne samlinga må innehalde {{ limit }} element eller meir.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Denne samlinga må innehalde {{ limit }} element eller færre.|Denne samlinga må innehalde {{ limit }} element eller færre.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Denne samlinga må innehalde nøyaktig {{ limit }} element.|Denne samlinga må innehalde nøyaktig {{ limit }} element.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Ugyldig kortnummer.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Korttypen er ikkje støtta eller ugyldig kortnummer.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.pl.xlf b/vendor/symfony/validator/Resources/translations/validators.pl.xlf
deleted file mode 100644
index 1d6875f..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.pl.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Ta wartość powinna być fałszem.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Ta wartość powinna być prawdą.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Ta wartość powinna być typu {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Ta wartość powinna być pusta.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Ta wartość powinna być jedną z podanych opcji.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Powinieneś wybrać co najmniej {{ limit }} opcję.|Powinieneś wybrać co najmniej {{ limit }} opcje.|Powinieneś wybrać co najmniej {{ limit }} opcji.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Powinieneś wybrać maksymalnie {{ limit }} opcję.|Powinieneś wybrać maksymalnie {{ limit }} opcje.|Powinieneś wybrać maksymalnie {{ limit }} opcji.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Jedna lub więcej z podanych wartości jest nieprawidłowa.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>To pole nie spodziewano.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>To pole jest chybianie.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Ta wartość nie jest prawidłową datą.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Ta wartość nie jest prawidłową datą i czasem.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Ta wartość nie jest prawidłowym adresem email.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Plik nie mógł zostać odnaleziony.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Nie można odczytać pliku.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Plik jest za duży ({{ size }} {{ suffix }}). Maksymalny dozwolony rozmiar to {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Nieprawidłowy typ mime pliku ({{ type }}). Dozwolone typy mime to {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Ta wartość powinna wynosić {{ limit }} lub mniej.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Ta wartość jest zbyt długa. Powinna mieć {{ limit }} lub mniej znaków.|Ta wartość jest zbyt długa. Powinna mieć {{ limit }} lub mniej znaków.|Ta wartość jest zbyt długa. Powinna mieć {{ limit }} lub mniej znaków.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Ta wartość powinna wynosić {{ limit }} lub więcej.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Ta wartość jest zbyt krótka. Powinna mieć {{ limit }} lub więcej znaków.|Ta wartość jest zbyt krótka. Powinna mieć {{ limit }} lub więcej znaków.|Ta wartość jest zbyt krótka. Powinna mieć {{ limit }} lub więcej znaków.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Ta wartość nie powinna być pusta.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Ta wartość nie powinna być nullem.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Ta wartość powinna być nullem.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Ta wartość jest nieprawidłowa.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Ta wartość nie jest prawidłowym czasem.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Ta wartość nie jest prawidłowym adresem URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Obie wartości powinny być równe.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Plik jest za duży. Maksymalny dozwolony rozmiar to {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Plik jest za duży.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Plik nie mógł być wgrany.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Ta wartość powinna być prawidłową liczbą.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Ten plik nie jest obrazem.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>To nie jest prawidłowy adres IP.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Ta wartość nie jest prawidłowym językiem.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Ta wartość nie jest prawidłową lokalizacją.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Ta wartość nie jest prawidłową nazwą kraju.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Ta wartość jest już wykorzystywana.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Nie można wykryć rozmiaru obrazka.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Szerokość obrazka jest zbyt duża ({{ width }}px). Maksymalna dopuszczalna szerokość to {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Szerokość obrazka jest zbyt mała ({{ width }}px). Oczekiwana minimalna szerokość to {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Wysokość obrazka jest zbyt duża ({{ height }}px). Maksymalna dopuszczalna wysokość to {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Wysokość obrazka jest zbyt mała ({{ height }}px). Oczekiwana minimalna wysokość to {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Ta wartość powinna być aktualnym hasłem użytkownika.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Ta wartość powinna mieć dokładnie {{ limit }} znak.|Ta wartość powinna mieć dokładnie {{ limit }} znaki.|Ta wartość powinna mieć dokładnie {{ limit }} znaków.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Plik został wgrany tylko częściowo.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Żaden plik nie został wgrany.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Nie skonfigurowano folderu tymczasowego w php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Nie można zapisać pliku tymczasowego na dysku.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Rozszerzenie PHP spowodowało błąd podczas wgrywania.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Ten zbiór powinien zawierać {{ limit }} lub więcej elementów.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Ten zbiór powinien zawierać {{ limit }} lub mniej elementów.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Ten zbiór powinien zawierać dokładnie {{ limit }} element.|Ten zbiór powinien zawierać dokładnie {{ limit }} elementy.|Ten zbiór powinien zawierać dokładnie {{ limit }} elementów.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Nieprawidłowy numer karty.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Nieobsługiwany rodzaj karty lub nieprawidłowy numer karty.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Nieprawidłowy międzynarodowy numer rachunku bankowego (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Ta wartość nie jest prawidłowym numerem ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Ta wartość nie jest prawidłowym numerem ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Ta wartość nie jest prawidłowym numerem ISBN-10 ani ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Ta wartość nie jest prawidłowym numerem ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Ta wartość nie jest prawidłową walutą.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Ta wartość powinna być równa {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Ta wartość powinna być większa niż {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Ta wartość powinna być większa bądź równa {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ta wartość powinna być identycznego typu {{ compared_value_type }} oraz wartości {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Ta wartość powinna być mniejsza niż {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Ta wartość powinna być mniejsza bądź równa {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Ta wartość nie powinna być równa {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ta wartość nie powinna być identycznego typu {{ compared_value_type }} oraz wartości {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Proporcje obrazu są zbyt duże ({{ ratio }}). Maksymalne proporcje to {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Proporcje obrazu są zbyt małe ({{ ratio }}). Minimalne proporcje to {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>Obraz jest kwadratem ({{ width }}x{{ height }}px). Kwadratowe obrazy nie są akceptowane.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>Obraz jest panoramiczny ({{ width }}x{{ height }}px). Panoramiczne zdjęcia nie są akceptowane.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>Obraz jest portretowy ({{ width }}x{{ height }}px). Portretowe zdjęcia nie są akceptowane.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Plik nie może być pusty.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>Nazwa hosta nie została rozpoznana.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>Ta wartość nie pasuje do oczekiwanego zestawu znaków {{ charset }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.pt.xlf b/vendor/symfony/validator/Resources/translations/validators.pt.xlf
deleted file mode 100644
index d563c92..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.pt.xlf
+++ /dev/null
@@ -1,307 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Este valor deveria ser falso.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Este valor deveria ser verdadeiro.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Este valor deveria ser do tipo {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Este valor deveria ser vazio.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>O valor selecionado não é uma opção válida.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Você deveria selecionar {{ limit }} opção no mínimo.|Você deveria selecionar {{ limit }} opções no mínimo.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Você deve selecionar, no máximo {{ limit }} opção.|Você deve selecionar, no máximo {{ limit }} opções.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Um ou mais dos valores introduzidos não são válidos.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Este campo não era esperado.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Este campo está faltando.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Este valor não é uma data válida.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Este valor não é uma data-hora válida.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Este valor não é um endereço de e-mail válido.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>O arquivo não pôde ser encontrado.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>O arquivo não pôde ser lido.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>O arquivo é muito grande ({{ size }} {{ suffix }}). O tamanho máximo permitido é de {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>O tipo mime do arquivo é inválido ({{ type }}). Os tipos mime permitidos são {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Este valor deveria ser {{ limit }} ou menor.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>O valor é muito longo. Deveria ter {{ limit }} caracteres ou menos.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Este valor deveria ser {{ limit }} ou mais.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>O valor é muito curto. Deveria de ter {{ limit }} caractere ou mais.|O valor é muito curto. Deveria de ter {{ limit }} caracteres ou mais.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Este valor não deveria ser branco/vazio.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Este valor não deveria ser nulo.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Este valor deveria ser nulo.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Este valor não é válido.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Este valor não é uma hora válida.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Este valor não é um URL válido.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Os dois valores deveriam ser iguais.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>O arquivo é muito grande. O tamanho máximo permitido é de {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>O ficheiro é muito grande.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Não foi possível carregar o ficheiro.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Este valor deveria de ser um número válido.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Este ficheiro não é uma imagem.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Este endereço de IP não é válido.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Este valor não é uma linguagem válida.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Este valor não é um 'locale' válido.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Este valor não é um País válido.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Este valor já está a ser usado.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>O tamanho da imagem não foi detetado.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>A largura da imagem ({{ width }}px) é muito grande. A largura máxima da imagem é: {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>A largura da imagem ({{ width }}px) é muito pequena. A largura miníma da imagem é de: {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>A altura da imagem ({{ height }}px) é muito grande. A altura máxima da imagem é de: {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>A altura da imagem ({{ height }}px) é muito pequena. A altura miníma da imagem é de: {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Este valor deveria de ser a password atual do utilizador.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Este valor tem de ter exatamente {{ limit }} carateres.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Só foi enviado parte do ficheiro.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Nenhum ficheiro foi enviado.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Não existe nenhum directório temporária configurado no ficheiro php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Não foi possível escrever ficheiros temporários no disco.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Uma extensão PHP causou a falha no envio.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Esta coleção deve conter {{ limit }} elemento ou mais.|Esta coleção deve conter {{ limit }} elementos ou mais.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Esta coleção deve conter {{ limit }} elemento ou menos.|Esta coleção deve conter {{ limit }} elementos ou menos.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Esta coleção deve conter exatamente {{ limit }} elemento.|Esta coleção deve conter exatamente {{ limit }} elementos.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Número de cartão inválido.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Tipo de cartão não suportado ou número de cartão inválido.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Este não é um Número Internacional de Conta Bancária (IBAN) válido.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Este valor não é um ISBN-10 válido.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Este valor não é um ISBN-13 válido.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Este valor não é um ISBN-10 ou ISBN-13 válido.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Este valor não é um ISSN válido.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Este não é um valor monetário válido.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Este valor deve ser igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Este valor deve ser superior a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Este valor deve ser igual ou superior a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Este valor deve ser idêntico a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Este valor deve ser inferior a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Este valor deve ser igual ou inferior a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Este valor não deve ser igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Este valor não deve ser idêntico a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>O formato da imagem é muito grande ({{ ratio }}). O formato máximo é {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>O formato da imagem é muito pequeno ({{ ratio }}). O formato mínimo esperado é {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>A imagem é um quadrado ({{ width }}x{{ height }}px). Imagens quadradas não são permitidas.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>A imagem está orientada à paisagem ({{ width }}x{{ height }}px). Imagens orientadas à paisagem não são permitidas.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>A imagem está orientada ao retrato ({{ width }}x{{ height }}px). Imagens orientadas ao retrato não são permitidas.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Ficheiro vazio não é permitido.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.pt_BR.xlf b/vendor/symfony/validator/Resources/translations/validators.pt_BR.xlf
deleted file mode 100644
index bff91e3..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.pt_BR.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Este valor deve ser falso.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Este valor deve ser verdadeiro.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Este valor deve ser do tipo {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Este valor deve ser vazio.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>O valor selecionado não é uma opção válida.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Você deve selecionar, no mínimo, {{ limit }} opção.|Você deve selecionar, no mínimo, {{ limit }} opções.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Você deve selecionar, no máximo, {{ limit }} opção.|Você deve selecionar, no máximo, {{ limit }} opções.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Um ou mais valores informados são inválidos.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Este campo não era esperado.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Este campo está ausente.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Este valor não é uma data válida.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Este valor não é uma data e hora válida.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Este valor não é um endereço de e-mail válido.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>O arquivo não foi encontrado.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>O arquivo não pode ser lido.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>O arquivo é muito grande ({{ size }} {{ suffix }}). O tamanho máximo permitido é {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>O tipo mime do arquivo é inválido ({{ type }}). Os tipos mime permitidos são {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Este valor deve ser {{ limit }} ou menos.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Este valor é muito longo. Deve ter {{ limit }} caractere ou menos.|Este valor é muito longo. Deve ter {{ limit }} caracteres ou menos.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Este valor deve ser {{ limit }} ou mais.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Este valor é muito curto. Deve ter {{ limit }} caractere ou mais.|Este valor é muito curto. Deve ter {{ limit }} caracteres ou mais.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Este valor não deve ser vazio.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Este valor não deve ser nulo.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Este valor deve ser nulo.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Este valor não é válido.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Este valor não é uma hora válida.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Este valor não é uma URL válida.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Os dois valores devem ser iguais.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>O arquivo é muito grande. O tamanho máximo permitido é de {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>O arquivo é muito grande.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>O arquivo não pode ser enviado.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Este valor deve ser um número válido.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Este arquivo não é uma imagem válida.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Este não é um endereço de IP válido.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Este valor não é um idioma válido.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Este valor não é uma localidade válida.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Este valor não é um país válido.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Este valor já está sendo usado.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>O tamanho da imagem não pode ser detectado.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>A largura da imagem é muito grande ({{ width }}px). A largura máxima permitida é de {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>A largura da imagem é muito pequena ({{ width }}px). A largura mínima esperada é de {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>A altura da imagem é muito grande ({{ height }}px). A altura máxima permitida é de {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>A altura da imagem é muito pequena ({{ height }}px). A altura mínima esperada é de {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Este valor deve ser a senha atual do usuário.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Este valor deve ter exatamente {{ limit }} caractere.|Este valor deve ter exatamente {{ limit }} caracteres.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>O arquivo foi enviado apenas parcialmente.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Nenhum arquivo foi enviado.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Nenhum diretório temporário foi configurado no php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Não foi possível escrever o arquivo temporário no disco.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Uma extensão PHP fez com que o envio falhasse.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Esta coleção deve conter {{ limit }} elemento ou mais.|Esta coleção deve conter {{ limit }} elementos ou mais.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Esta coleção deve conter {{ limit }} elemento ou menos.|Esta coleção deve conter {{ limit }} elementos ou menos.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Esta coleção deve conter exatamente {{ limit }} elemento.|Esta coleção deve conter exatamente {{ limit }} elementos.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Número de cartão inválido.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Tipo de cartão não suportado ou número de cartão inválido.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Este não é um Número Internacional de Conta Bancária (IBAN) válido.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Este valor não é um ISBN-10 válido.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Este valor não é um ISBN-13 válido.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Este valor não é um ISBN-10 e nem um ISBN-13 válido.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Este valor não é um ISSN válido.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Este não é um valor monetário válido.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Este valor deve ser igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Este valor deve ser maior que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Este valor deve ser maior ou igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Este valor deve ser idêntico a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Este valor deve ser menor que {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Este valor deve ser menor ou igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Este valor não deve ser igual a {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Este valor não deve ser idêntico a {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>A proporção da imagem é muito grande ({{ ratio }}). A proporção máxima permitida é {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>A proporção da imagem é muito pequena ({{ ratio }}). A proporção mínima esperada é {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>A imagem está num formato quadrado ({{ width }}x{{ height }}px). Imagens com formato quadrado não são permitidas.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>A imagem está orientada à paisagem ({{ width }}x{{ height }}px). Imagens orientadas à paisagem não são permitidas.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>A imagem está orientada ao retrato ({{ width }}x{{ height }}px). Imagens orientadas ao retrato não são permitidas.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Arquivo vazio não é permitido.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>O host não pôde ser resolvido.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>Este valor não corresponde ao charset {{ charset }} esperado.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.ro.xlf b/vendor/symfony/validator/Resources/translations/validators.ro.xlf
deleted file mode 100644
index 27346a9..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.ro.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Această valoare ar trebui să fie falsă (false).</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Această valoare ar trebui să fie adevărată (true).</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Această valoare ar trebui să fie de tipul {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Această valoare ar trebui sa fie goală.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Valoarea selectată nu este o opțiune validă.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Trebuie să selectați cel puțin {{ limit }} opțiune.|Trebuie să selectați cel puțin {{ limit }} opțiuni.|Trebuie să selectați cel puțin {{ limit }} de opțiuni</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Trebuie să selectați cel mult {{ limit }} opțiune.|Trebuie să selectați cel mult {{ limit }} opțiuni.|Trebuie să selectați cel mult {{ limit }} de opțiuni.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Una sau mai multe dintre valorile furnizate sunt invalide.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Acest câmp nu era de aşteptat.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Acest câmp este lipsă.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Această valoare nu reprezintă o dată validă.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Această valoare nu reprezintă o dată și oră validă.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Această valoare nu reprezintă o adresă de e-mail validă.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Fișierul nu a putut fi găsit.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Fișierul nu poate fi citit.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Fișierul este prea mare ({{ size }} {{ suffix }}). Dimensiunea maximă permisă este {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Tipul fișierului este invalid ({{ type }}). Tipurile permise de fișiere sunt ({{ types }}).</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Această valoare ar trebui să fie cel mult {{ limit }}.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Această valoare este prea lungă. Ar trebui să aibă maxim {{ limit }} caracter.|Această valoare este prea lungă. Ar trebui să aibă maxim {{ limit }} caractere.|Această valoare este prea lungă. Ar trebui să aibă maxim {{ limit }} de caractere.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Această valoare ar trebui să fie cel puțin {{ limit }}.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Această valoare este prea scurtă. Ar trebui să aibă minim {{ limit }} caracter.|Această valoare este prea scurtă. Ar trebui să aibă minim {{ limit }} caractere.|Această valoare este prea scurtă. Ar trebui să aibă minim {{ limit }} de caractere.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Această valoare nu ar trebui să fie goală.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Această valoare nu ar trebui să fie nulă (null).</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Această valoare ar trebui să fie nulă (null).</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Această valoare nu este validă.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Această valoare nu reprezintă o oră validă.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Această valoare nu reprezintă un URL (link) valid.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Cele două valori ar trebui să fie egale.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Fișierul este prea mare. Mărimea maximă permisă este {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Fișierul este prea mare.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Fișierul nu a putut fi încărcat.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Această valoare nu reprezintă un număr valid.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Acest fișier nu este o imagine validă.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Această valoare nu este o adresă IP validă.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Această valoare nu reprezintă o limbă corectă.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Această valoare nu reprezintă un dialect (o limbă) corect.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Această valoare nu este o țară validă.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Această valoare este folosită deja.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Mărimea imaginii nu a putut fi detectată.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Lățimea imaginii este prea mare ({{ width }}px). Lățimea maximă permisă este de {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Lățimea imaginii este prea mică ({{ width }}px). Lățimea minimă permisă este de {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Înălțimea imaginii este prea mare ({{ height }}px). Înălțimea maximă permisă este de {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Înălțimea imaginii este prea mică ({{ height }}px). Înălțimea minimă permisă este de {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Această valoare trebuie să fie parola curentă a utilizatorului.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Această valoare trebuie să conțină exact {{ limit }} caracter.|Această valoare trebuie să conțină exact {{ limit }} caractere.|Această valoare trebuie să conțină exact {{ limit }} de caractere.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Fișierul a fost încărcat parțial.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Nu a fost încărcat nici un fișier.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Nu este configurat nici un director temporar in php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Nu a fost posibilă scrierea fișierului temporar pe disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>O extensie PHP a prevenit încărcarea cu succes a fișierului.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Această colecție trebuie să conțină cel puțin {{ limit }} element.|Această colecție trebuie să conțină cel puțin {{ limit }} elemente.|Această colecție trebuie să conțină cel puțin {{ limit }} de elemente.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Această colecție trebuie să conțină cel mult {{ limit }} element.|Această colecție trebuie să conțină cel mult {{ limit }} elemente.|Această colecție trebuie să conțină cel mult {{ limit }} de elemente.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Această colecție trebuie să conțină {{ limit }} element.|Această colecție trebuie să conțină {{ limit }} elemente.|Această colecție trebuie să conțină {{ limit }} de elemente.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Numărul card invalid.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Tipul sau numărul cardului nu sunt valide.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Acesta nu este un cod IBAN (International Bank Account Number) valid.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Această valoare nu este un cod ISBN-10 valid.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Această valoare nu este un cod ISBN-13 valid.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Această valoare nu este un cod ISBN-10 sau ISBN-13 valid.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Această valoare nu este un cod ISSN valid.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Această valoare nu este o monedă validă.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Această valoare trebuie să fie egală cu {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Această valoare trebuie să fie mai mare de {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Această valoare trebuie să fie mai mare sau egală cu {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Această valoare trebuie identică cu {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Această valoare trebuie să fie mai mică de {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Această valoare trebuie să fie mai mică sau egală cu {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Această valoare nu trebuie să fie egală cu {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Această valoare nu trebuie să fie identică cu {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.ru.xlf b/vendor/symfony/validator/Resources/translations/validators.ru.xlf
deleted file mode 100644
index d7a90c9..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.ru.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-﻿<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Значение должно быть ложным.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Значение должно быть истинным.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Тип значения должен быть {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Значение должно быть пустым.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Выбранное Вами значение недопустимо.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Вы должны выбрать хотя бы {{ limit }} вариант.|Вы должны выбрать хотя бы {{ limit }} варианта.|Вы должны выбрать хотя бы {{ limit }} вариантов.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Вы должны выбрать не более чем {{ limit }} вариант.|Вы должны выбрать не более чем {{ limit }} варианта.|Вы должны выбрать не более чем {{ limit }} вариантов.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Одно или несколько заданных значений недопустимо.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Это поле не ожидалось.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Это поле отсутствует.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Значение не является правильной датой.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Значение даты и времени недопустимо.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Значение адреса электронной почты недопустимо.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Файл не может быть найден.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Файл не может быть прочитан.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Файл слишком большой ({{ size }} {{ suffix }}). Максимально допустимый размер {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>MIME-тип файла недопустим ({{ type }}). Допустимы MIME-типы файлов {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Значение должно быть {{ limit }} или меньше.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Значение слишком длинное. Должно быть равно {{ limit }} символу или меньше.|Значение слишком длинное. Должно быть равно {{ limit }} символам или меньше.|Значение слишком длинное. Должно быть равно {{ limit }} символам или меньше.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Значение должно быть {{ limit }} или больше.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Значение слишком короткое. Должно быть равно {{ limit }} символу или больше.|Значение слишком короткое. Должно быть равно {{ limit }} символам или больше.|Значение слишком короткое. Должно быть равно {{ limit }} символам или больше.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Значение не должно быть пустым.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Значение не должно быть null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Значение должно быть null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Значение недопустимо.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Значение времени недопустимо.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Значение не является допустимым URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Оба значения должны быть одинаковыми.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Файл слишком большой. Максимально допустимый размер {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Файл слишком большой.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Файл не может быть загружен.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Значение должно быть числом.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This value is not a valid country.</source>
-                <target>Значение не является допустимой страной.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This file is not a valid image.</source>
-                <target>Файл не является допустимым форматом изображения.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This is not a valid IP address.</source>
-                <target>Значение не является допустимым IP адресом.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid language.</source>
-                <target>Значение не является допустимым языком.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid locale.</source>
-                <target>Значение не является допустимой локалью.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Это значение уже используется.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Не удалось определить размер изображения.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Ширина изображения слишком велика ({{ width }}px). Максимально допустимая ширина {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Ширина изображения слишком мала ({{ width }}px). Минимально допустимая ширина {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Высота изображения слишком велика ({{ height }}px). Максимально допустимая высота {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Высота изображения слишком мала ({{ height }}px). Минимально допустимая высота {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Значение должно быть текущим паролем пользователя.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Значение должно быть равно {{ limit }} символу.|Значение должно быть равно {{ limit }} символам.|Значение должно быть равно {{ limit }} символам.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Файл был загружен только частично.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Файл не был загружен.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Не настроена временная директория в php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Невозможно записать временный файл на диск.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Расширение PHP вызвало ошибку при загрузке.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Эта коллекция должна содержать {{ limit }} элемент или больше.|Эта коллекция должна содержать {{ limit }} элемента или больше.|Эта коллекция должна содержать {{ limit }} элементов или больше.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Эта коллекция должна содержать {{ limit }} элемент или меньше.|Эта коллекция должна содержать {{ limit }} элемента или меньше.|Эта коллекция должна содержать {{ limit }} элементов или меньше.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Эта коллекция должна содержать ровно {{ limit }} элемент.|Эта коллекция должна содержать ровно {{ limit }} элемента.|Эта коллекция должна содержать ровно {{ limit }} элементов.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Неверный номер карты.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Неподдерживаемый тип или неверный номер карты.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Значение не является допустимым международным номером банковского счета (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Значение имеет неверный формат ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Значение имеет неверный формат ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Значение не соответствует форматам ISBN-10 и ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Значение не соответствует формату ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Некорректный формат валюты.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Значение должно быть равно {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Значение должно быть больше чем {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Значение должно быть больше или равно {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Значение должно быть идентичным {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Значение должно быть меньше чем {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Значение должно быть меньше или равно {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Значение не должно быть равно {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Значение не должно быть идентичным {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Соотношение сторон изображения слишком велико ({{ ratio }}). Максимальное соотношение сторон {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Соотношение сторон изображения слишком мало ({{ ratio }}). Минимальное соотношение сторон {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>Изображение квадратное ({{ width }}x{{ height }}px). Квадратные изображения не разрешены.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>Изображение в альбомной ориентации ({{ width }}x{{ height }}px). Изображения в альбомной ориентации не разрешены.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>Изображение в портретной ориентации ({{ width }}x{{ height }}px). Изображения в портретной ориентации не разрешены.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Пустые файлы не разрешены.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>Имя хоста не может быть разрешено.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>Значение не совпадает с ожидаемой {{ charset }} кодировкой.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sk.xlf b/vendor/symfony/validator/Resources/translations/validators.sk.xlf
deleted file mode 100644
index 46f3ec3..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.sk.xlf
+++ /dev/null
@@ -1,307 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Táto hodnota by mala byť nastavená na false.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Táto hodnota by mala byť nastavená na true.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Táto hodnota by mala byť typu {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Táto hodnota by mala byť prázdna.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Táto hodnota by mala byť jednou z poskytnutých možností.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Mali by ste vybrať minimálne {{ limit }} možnosť.|Mali by ste vybrať minimálne {{ limit }} možnosti.|Mali by ste vybrať minimálne {{ limit }} možností.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Mali by ste vybrať najviac {{ limit }} možnosť.|Mali by ste vybrať najviac {{ limit }} možnosti.|Mali by ste vybrať najviac {{ limit }} možností.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Niektoré z uvedených hodnôt sú neplatné.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Toto pole sa neočakáva.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Toto pole chýba.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Tato hodnota nemá platný formát dátumu.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Táto hodnota nemá platný formát dátumu a času.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Táto hodnota nie je platná emailová adresa.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Súbor sa nenašiel.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Súbor nie je čitateľný.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Súbor je príliš veľký ({{ size }} {{ suffix }}). Maximálna povolená veľkosť je {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Súbor typu ({{ type }}) nie je podporovaný. Podporované typy sú {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Táto hodnota by mala byť {{ limit }} alebo menej.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Táto hodnota obsahuje viac znakov ako je povolené. Mala by obsahovať najviac {{ limit }} znak.|Táto hodnota obsahuje viac znakov ako je povolené. Mala by obsahovať najviac {{ limit }} znaky.|Táto hodnota obsahuje viac znakov ako je povolené. Mala by obsahovať najviac {{ limit }} znakov.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Táto hodnota by mala byť viac ako {{ limit }}.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Táto hodnota je príliš krátka. Musí obsahovať minimálne {{ limit }} znak.|Táto hodnota je príliš krátka. Musí obsahovať minimálne {{ limit }} znaky.|Táto hodnota je príliš krátka. Minimálny počet znakov je {{ limit }}.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Táto hodnota by mala byť vyplnená.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Táto hodnota by nemala byť null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Táto hodnota by mala byť null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Táto hodnota nie je platná.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Tato hodnota nemá správny formát času.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Táto hodnota nie je platnou URL adresou.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Tieto dve hodnoty by mali byť rovnaké.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Súbor je príliš veľký. Maximálna povolená veľkosť je {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Súbor je príliš veľký.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Súbor sa nepodarilo nahrať.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Táto hodnota by mala byť číslo.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Tento súbor nie je obrázok.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Toto nie je platná IP adresa.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Tento jazyk neexistuje.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Táto lokalizácia neexistuje.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Táto krajina neexistuje.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Táto hodnota sa už používa.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Nepodarilo sa zistiť rozmery obrázku.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Obrázok je príliš široký ({{ width }}px). Maximálna povolená šírka obrázku je {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Obrázok je príliš úzky ({{ width }}px). Minimálna šírka obrázku by mala byť {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>>Obrázok je príliš vysoký ({{ height }}px). Maximálna povolená výška obrázku je {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Obrázok je príliš nízky ({{ height }}px). Minimálna výška obrázku by mala byť {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Táto hodnota by mala byť aktuálne heslo používateľa.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Táto hodnota by mala mať presne {{ limit }} znak.|Táto hodnota by mala mať presne {{ limit }} znaky.|Táto hodnota by mala mať presne {{ limit }} znakov.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Bola nahraná len časť súboru.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Žiadny súbor nebol nahraný.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>V php.ini nie je nastavená cesta k adresáru pre dočasné súbory.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Dočasný súbor sa nepodarilo zapísať na disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Rozšírenie PHP zabránilo nahraniu súboru.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Táto kolekcia by mala obsahovať aspoň {{ limit }} prvok alebo viac.|Táto kolekcia by mala obsahovať aspoň {{ limit }} prvky alebo viac.|Táto kolekcia by mala obsahovať aspoň {{ limit }} prvkov alebo viac.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Táto kolekcia by mala maximálne {{ limit }} prvok.|Táto kolekcia by mala obsahovať maximálne {{ limit }} prvky.|Táto kolekcia by mala obsahovať maximálne {{ limit }} prvkov.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Táto kolekcia by mala obsahovať presne {{ limit }} prvok.|Táto kolekcia by mala obsahovať presne {{ limit }} prvky.|Táto kolekcia by mala obsahovať presne {{ limit }} prvkov.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Neplatné číslo karty.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Nepodporovaný typ karty alebo neplatné číslo karty.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Toto je neplatný IBAN.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Táto hodnota je neplatné ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Táto hodnota je neplatné ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Táto hodnota nie je platné ISBN-10 ani ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Táto hodnota nie je platné ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Táto hodnota nie je platná mena.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Táto hodnota by mala byť rovná {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Táto hodnota by mala byť väčšia ako {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Táto hodnota by mala byť väčšia alebo rovná {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Táto hodnota by mala byť typu {{ compared_value_type }} a zároveň by mala byť rovná {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Táto hodnota by mala byť menšia ako {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Táto hodnota by mala byť menšia alebo rovná {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Táto hodnota by nemala byť rovná {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Táto hodnota by nemala byť typu {{ compared_value_type }} a zároveň by nemala byť rovná {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Pomer strán obrázku je príliš veľký ({{ ratio }}). Maximálny povolený pomer strán obrázku je {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Pomer strán obrázku je príliš malý ({{ ratio }}). Minimálny povolený pomer strán obrázku je {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>Strany obrázku sú štvorcové ({{ width }}x{{ height }}px). Štvorcové obrázky nie sú povolené.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>Obrázok je orientovaný na šírku ({{ width }}x{{ height }}px). Obrázky orientované na šírku nie sú povolené.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>Obrázok je orientovaný na výšku ({{ width }}x{{ height }}px). Obrázky orientované na výšku nie sú povolené.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Súbor nesmie byť prázdny.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sl.xlf b/vendor/symfony/validator/Resources/translations/validators.sl.xlf
deleted file mode 100644
index 4f0e7c6..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.sl.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Vrednost bi morala biti nepravilna (false).</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Vrednost bi morala biti pravilna (true).</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Vrednost mora biti naslednjega tipa {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Vrednost mora biti prazna.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Vrednost, ki ste jo izbrali, ni veljavna možnost.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Izbrati morate vsaj {{ limit }} možnost.|Izbrati morate vsaj {{ limit }} možnosti.|Izbrati morate vsaj {{ limit }} možnosti.|Izbrati morate vsaj {{ limit }} možnosti.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Izberete lahko največ {{ limit }} možnost.|Izberete lahko največ {{ limit }} možnosti.|Izberete lahko največ {{ limit }} možnosti.|Izberete lahko največ {{ limit }} možnosti.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Ena ali več podanih vrednosti ni veljavnih.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>To polje ni bilo pričakovati.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>To polje manjka.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Ta vrednost ni veljaven datum.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Ta vrednost ni veljaven datum in čas.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Ta vrednost ni veljaven e-poštni naslov.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Datoteke ni mogoče najti.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Datoteke ni mogoče prebrati.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Datoteka je prevelika ({{ size }} {{ suffix }}). Največja dovoljena velikost je {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Mime tip datoteke je neveljaven ({{ type }}). Dovoljeni mime tipi so {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Ta vrednost bi morala biti {{ limit }} ali manj.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Ta vrednost je predolga. Morala bi imeti {{ limit }} znak ali manj.|Ta vrednost je predolga. Morala bi imeti {{ limit }} znaka ali manj.|Ta vrednost je predolga. Morala bi imeti {{ limit }} znake ali manj.|Ta vrednost je predolga. Morala bi imeti {{ limit }} znakov ali manj.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Ta vrednost bi morala biti {{ limit }} ali več.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Ta vrednost je prekratka. Morala bi imeti {{ limit }} znak ali več.|Ta vrednost je prekratka. Morala bi imeti {{ limit }} znaka ali več.|Ta vrednost je prekratka. Morala bi imeti {{ limit }} znake ali več.|Ta vrednost je prekratka. Morala bi imeti {{ limit }} znakov ali več.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Ta vrednost ne bi smela biti prazna.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Ta vrednost ne bi smela biti nedefinirana (null).</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Ta vrednost bi morala biti nedefinirana (null).</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Ta vrednost ni veljavna.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Ta vrednost ni veljaven čas.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Ta vrednost ni veljaven URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Ti dve vrednosti bi morali biti enaki.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Datoteka je prevelika. Največja dovoljena velikost je {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Datoteka je prevelika.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Datoteke ni bilo mogoče naložiti.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Ta vrednost bi morala biti veljavna številka.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Ta datoteka ni veljavna slika.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>To ni veljaven IP naslov.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Ta vrednost ni veljaven jezik.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Ta vrednost ni veljavna lokalnost.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Ta vrednost ni veljavna država.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Ta vrednost je že uporabljena.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Velikosti slike ni bilo mogoče zaznati.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Širina slike je preširoka ({{ width }}px). Največja dovoljena širina je {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Širina slike je premajhna ({{ width }}px). Najmanjša predvidena širina je {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Višina slike je prevelika ({{ height }}px). Največja dovoljena višina je {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Višina slike je premajhna ({{ height }}px). Najmanjša predvidena višina je {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Ta vrednost bi morala biti trenutno uporabnikovo geslo.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Ta vrednost bi morala imeti točno {{ limit }} znak.|Ta vrednost bi morala imeti točno {{ limit }} znaka.|Ta vrednost bi morala imeti točno {{ limit }} znake.|Ta vrednost bi morala imeti točno {{ limit }} znakov.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Datoteka je bila le delno naložena.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Nobena datoteka ni bila naložena.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Začasna mapa ni nastavljena v php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Začasne datoteke ni bilo mogoče zapisati na disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>PHP razširitev je vzrok, da nalaganje ni uspelo.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Ta zbirka bi morala vsebovati {{ limit }} element ali več.|Ta zbirka bi morala vsebovati {{ limit }} elementa ali več.|Ta zbirka bi morala vsebovati {{ limit }} elemente ali več.|Ta zbirka bi morala vsebovati {{ limit }} elementov ali več.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Ta zbirka bi morala vsebovati {{ limit }} element ali manj.|Ta zbirka bi morala vsebovati {{ limit }} elementa ali manj.|Ta zbirka bi morala vsebovati {{ limit }} elemente ali manj.|Ta zbirka bi morala vsebovati {{ limit }} elementov ali manj.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Ta zbirka bi morala vsebovati točno {{ limit }} element.|Ta zbirka bi morala vsebovati točno {{ limit }} elementa.|Ta zbirka bi morala vsebovati točno {{ limit }} elemente.|Ta zbirka bi morala vsebovati točno {{ limit }} elementov.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Neveljavna številka kartice.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Nepodprti tip kartice ali neveljavna številka kartice.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>To ni veljavna mednarodna številka bančnega računa (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Neveljavna vrednost po ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Neveljavna vrednost po ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Neveljavna vrednost po ISBN-10 ali po ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Neveljavna vrednost ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Ta vrednost ni veljavna valuta.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Ta vrednost bi morala biti enaka {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Ta vrednost bi morala biti večja od {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Ta vrednost bi morala biti večja ali enaka {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ta vrednost bi morala biti identična {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Ta vrednost bi morala biti manjša od {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Ta vrednost bi morala biti manjša ali enaka {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Ta vrednost ne bi smela biti enaka {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ta vrednost ne bi smela biti identična {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Razmerje slike je preveliko ({{ ratio }}). Največje dovoljeno razmerje je {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Razmerje slike je premajhno ({{ ratio }}). Najmanjše pričakovano razmerje je {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>Slika je kvadrat ({{ width }}x{{ height }}px). Kvadratne slike niso dovoljene.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>Slika je ležeče usmerjena ({{ width }}x{{ height }}px). Ležeče usmerjene slike niso dovoljene.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>Slika je pokončno usmerjena ({{ width }}x{{ height }}px). Pokončno usmerjene slike niso dovoljene.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>Prazna datoteka ni dovoljena.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>Gostitelja ni bilo mogoče prepoznati.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>Ta vrednost se ne ujema s pričakovanim naborom znakov {{ charset }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sq.xlf b/vendor/symfony/validator/Resources/translations/validators.sq.xlf
deleted file mode 100644
index ffc8ccf..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.sq.xlf
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Kjo vlerë duhet të jetë e pavërtetë (false).</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Kjo vlerë duhet të jetë e vërtetë (true).</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Kjo vlerë duhet të jetë e llojit {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Kjo vlerë duhet të jetë e zbrazët.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Vlera që keni zgjedhur nuk është alternativë e vlefshme.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Duhet të zgjedhni së paku {{ limit }} alternativa.|Duhet të zgjedhni së paku {{ limit }} alternativa.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Duhet të zgjedhni më së shumti {{ limit }} alternativa.|Duhet të zgjedhni më së shumti {{ limit }} alternativa.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Një apo më shumë nga vlerat e dhëna nuk janë të sakta.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Kjo fushë nuk pritej.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Kjo fushë është zhdukur.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Kjo vlerë nuk është datë e vlefshme.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Kjo vlerë nuk është datë-kohë e vlefshme.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Kjo vlerë nuk është e-mail adresë e vlefshme.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>File nuk mund të gjindej.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>File nuk është i lexueshëm.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>File është shumë i madh ({{ size }} {{ suffix }}). Madhësia më e madhe e lejuar është {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Lloji mime i files nuk është i vlefshëm ({{ type }}). Llojet mime të lejuara janë {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Kjo vlerë duhet të jetë {{ limit }} ose më pak.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Kjo vlerë është shumë e gjatë. Duhet t'i ketë {{ limit }} ose më pak karaktere.|Kjo vlerë është shumë e gjatë. Duhet t'i ketë {{ limit }} ose më pak karaktere.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Kjo vlerë duhet të jetë {{ limit }} ose më shumë.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Kjo vlerë është shumë e shkurtër. Duhet t'i ketë {{ limit }} ose më shumë karaktere.|Kjo vlerë është shumë e shkurtër. Duhet t'i ketë {{ limit }} ose më shumë karaktere.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Kjo vlerë nuk duhet të jetë e zbrazët.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Kjo vlerë nuk duhet të jetë null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Kjo vlerë duhet të jetë null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Kjo vlerë nuk është e vlefshme.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Kjo vlerë nuk është kohë e vlefshme.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Kjo vlerë nuk është URL e vlefshme.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Këto dy vlera duhet të jenë të barabarta.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Ky file është shumë i madh. Madhësia maksimale e lejuar është {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Ky file është shumë i madh.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Ky file nuk mund të ngarkohet.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Kjo vlerë duhet të jetë numër i vlefshëm.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Ky file nuk është imazh i vlefshëm.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Kjo vlerë nuk është IP adresë e vlefshme.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Kjo vlerë nuk është gjuhë e vlefshme.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Kjo vlerë nuk është përcaktim rajonal i vlefshëm.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Kjo vlerë nuk është shtet i vlefshëm.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Kjo vlerë është tashmë në përdorim.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Madhësia e këtij imazhi nuk mund të zbulohet.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Gjerësia e imazhit është shumë e madhe ({{ width }}px). Gjerësia maksimale e lejuar është {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Gjerësia e imazhit është shumë e vogël ({{ width }}px). Gjerësia minimale e pritur është {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Gjatësia e imazhit është shumë e madhe ({{ height }}px). Gjatësia maksimale e lejuar është {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Gjatësia e imazhit është shumë e vogël ({{ height }}px). Gjatësia minimale e pritur është {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Kjo vlerë duhet të jetë fjalëkalimi aktual i përdoruesit.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Kjo vlerë duhet të ketë saktësisht {{ limit }} karaktere.|Kjo vlerë duhet të ketë saktësisht {{ limit }} karaktere.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Ky file është ngarkuar pjesërisht.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Nuk është ngarkuar ndonjë file.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Asnjë folder i përkohshëm nuk është konfiguruar në php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Nuk mund të shkruhet file i përkohshëm në disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Një ekstenzion i PHP-së bëri të dështojë ngarkimi i files.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Ky kolekcion duhet të përmbajë {{ limit }} ose më shumë elemente.|Ky kolekcion duhet të përmbajë {{ limit }} ose më shumë elemente.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Ky kolekcion duhet të përmbajë {{ limit }} ose më shumë elemente.|Ky kolekcion duhet të përmbajë {{ limit }} ose më shumë elemente.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Ky kolekcion duhet të përmbajë saktësisht {{ limit }} elemente.|Ky kolekcion duhet të përmbajë saktësisht {{ limit }} elemente.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Numër kartele i pavlefshëm.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Lloj kartele i pambështetur ose numër kartele i pavlefshëm.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sr_Cyrl.xlf b/vendor/symfony/validator/Resources/translations/validators.sr_Cyrl.xlf
deleted file mode 100644
index 81f5210..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.sr_Cyrl.xlf
+++ /dev/null
@@ -1,303 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Вредност треба да буде нетачна.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Вредност треба да буде тачна.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Вредност треба да буде типа {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Вредност треба да буде празна.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Вредност треба да буде једна од понуђених.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Изаберите бар {{ limit }} могућност.|Изаберите бар {{ limit }} могућности.|Изаберите бар {{ limit }} могућности.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Изаберите највише {{ limit }} могућност.|Изаберите највише {{ limit }} могућности.|Изаберите највише {{ limit }} могућности.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Једна или више вредности је невалидна.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Ово поље не очекује.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Ово поље недостаје.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Вредност није валидан датум.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Вредност није валидан датум-време.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Вредност није валидна адреса електронске поште.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Датотека не може бити пронађена.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Датотека није читљива.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Датотека је превелика ({{ size }} {{ suffix }}). Највећа дозвољена величина је {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Миме тип датотеке није валидан ({{ type }}). Дозвољени миме типови су {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Вредност треба да буде {{ limit }} или мање.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Вредност је предугачка. Треба да има {{ limit }} карактер или мање.|Вредност је предугачка. Треба да има {{ limit }} карактера или мање.|Вредност је предугачка. Треба да има {{ limit }} карактера или мање.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Вредност треба да буде {{ limit }} или више.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Вредност је прекратка. Треба да има {{ limit }} карактер или више.|Вредност је прекратка. Треба да има {{ limit }} карактера или више.|Вредност је прекратка. Треба да има {{ limit }} карактера или више.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Вредност не треба да буде празна.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Вредност не треба да буде null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Вредност треба да буде null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Вредност је невалидна.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Вредност није валидно време.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Вредност није валидан URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Обе вредности треба да буду једнаке.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Датотека је превелика. Највећа дозвољена величина је {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Датотека је превелика.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Датотека не може бити отпремљена.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Вредност треба да буде валидан број.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Ова датотека није валидна слика.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Ово није валидна ИП адреса.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Вредност није валидан језик.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Вредност није валидан локал.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Вредност није валидна земља.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Вредност је већ искоришћена.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Величина слике не може бити одређена.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Ширина слике је превелика ({{ width }}px). Најећа дозвољена ширина је {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Ширина слике је премала ({{ width }}px). Најмања дозвољена ширина је {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Висина слике је превелика ({{ height }}px). Најећа дозвољена висина је {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Висина слике је премала ({{ height }}px). Најмања дозвољена висина је {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Вредност треба да буде тренутна корисничка лозинка.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Вредност треба да има тачно {{ limit }} карактер.|Вредност треба да има тачно {{ limit }} карактера.|Вредност треба да има тачно {{ limit }} карактера.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Датотека је само парцијално отпремљена.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Датотека није отпремљена.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Привремени директоријум није конфигурисан у php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Немогуће писање привремене датотеке на диск.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>PHP екстензија је проузроковала неуспех отпремања датотеке.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Ова колекција треба да садржи {{ limit }} или више елемената.|Ова колекција треба да садржи {{ limit }} или више елемената.|Ова колекција треба да садржи {{ limit }} или више елемената.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Ова колекција треба да садржи {{ limit }} или мање елемената.|Ова колекција треба да садржи {{ limit }} или мање елемената.|Ова колекција треба да садржи {{ limit }} или мање елемената.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Ова колекција треба да садржи тачно {{ limit }} елемент.|Ова колекција треба да садржи тачно {{ limit }} елемента.|Ова колекција треба да садржи тачно {{ limit }} елемената.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Невалидан број картице.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Невалидан број картице или тип картице није подржан.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Ово није валидан међународни број банковног рачуна (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Ово није валидан ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Ово није валидан ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Ово није валидан ISBN-10 или ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Ово није валидан ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Ово није валидна валута.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Ова вредност треба да буде {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Ова вредност треба да буде већа од {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Ова вредност треба да буде већа или једнака {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ова вредност треба да буде идентична са {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Ова вредност треба да буде мања од {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Ова вредност треба да буде мања или једнака {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Ова вредност не треба да буде једнака {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ова вредност не треба да буде идентична са {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Размера ове слике је превелика ({{ ratio }}). Максимална дозвољена размера је {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Размера ове слике је премала ({{ ratio }}). Минимална очекивана размера је {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>Слика је квадратна ({{ width }}x{{ height }}px). Квадратне слике нису дозвољене.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>Слика је оријентације пејзажа ({{ width }}x{{ height }}px). Пејзажна оријентација слика није дозвољена.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>Слика је оријантације портрета ({{ width }}x{{ height }}px). Портретна оријентација слика није дозвољена.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sr_Latn.xlf b/vendor/symfony/validator/Resources/translations/validators.sr_Latn.xlf
deleted file mode 100644
index 60c093a..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.sr_Latn.xlf
+++ /dev/null
@@ -1,303 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Vrednost treba da bude netačna.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Vrednost treba da bude tačna.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Vrednost treba da bude tipa {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Vrednost treba da bude prazna.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Vrednost treba da bude jedna od ponuđenih.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Izaberite bar {{ limit }} mogućnost.|Izaberite bar {{ limit }} mogućnosti.|Izaberite bar {{ limit }} mogućnosti.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Izaberite najviše {{ limit }} mogućnost.|Izaberite najviše {{ limit }} mogućnosti.|Izaberite najviše {{ limit }} mogućnosti.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Jedna ili više vrednosti je nevalidna.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Ovo polje ne očekuje.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Ovo polje nedostaje.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Vrednost nije validan datum.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Vrednost nije validan datum-vreme.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Vrednost nije validna adresa elektronske pošte.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Datoteka ne može biti pronađena.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Datoteka nije čitljiva.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Datoteka je prevelika ({{ size }} {{ suffix }}). Najveća dozvoljena veličina je {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Mime tip datoteke nije validan ({{ type }}). Dozvoljeni mime tipovi su {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Vrednost treba da bude {{ limit }} ili manje.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Vrednost je predugačka. Treba da ima {{ limit }} karakter ili manje.|Vrednost je predugačka. Treba da ima {{ limit }} karaktera ili manje.|Vrednost je predugačka. Treba da ima {{ limit }} karaktera ili manje.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Vrednost treba da bude {{ limit }} ili više.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Vrednost je prekratka. Treba da ima {{ limit }} karakter ili više.|Vrednost je prekratka. Treba da ima {{ limit }} karaktera ili više.|Vrednost je prekratka. Treba da ima {{ limit }} karaktera ili više.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Vrednost ne treba da bude prazna.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Vrednost ne treba da bude null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Vrednost treba da bude null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Vrednost je nevalidna.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Vrednost nije validno vreme.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Vrednost nije validan URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Obe vrednosti treba da budu jednake.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Datoteka je prevelika. Najveća dozvoljena veličina je {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Datoteka je prevelika.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Datoteka ne može biti otpremljena.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Vrednost treba da bude validan broj.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Ova datoteka nije validna slika.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Ovo nije validna IP adresa.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Vrednost nije validan jezik.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Vrednost nije validan lokal.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Vrednost nije validna zemlja.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Vrednost je već iskorišćena.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Veličina slike ne može biti određena.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Širina slike je prevelika ({{ width }}px). Najeća dozvoljena širina je {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Širina slike je premala ({{ width }}px). Najmanja dozvoljena širina je {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Visina slike je prevelika ({{ height }}px). Najeća dozvoljena visina je {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Visina slike je premala ({{ height }}px). Najmanja dozvoljena visina je {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Vrednost treba da bude trenutna korisnička lozinka.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Vrednost treba da ima tačno {{ limit }} karakter.|Vrednost treba da ima tačno {{ limit }} karaktera.|Vrednost treba da ima tačno {{ limit }} karaktera.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Datoteka je samo parcijalno otpremljena.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Datoteka nije otpremljena.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Privremeni direktorijum nije konfigurisan u php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Nemoguće pisanje privremene datoteke na disk.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>PHP ekstenzija je prouzrokovala neuspeh otpremanja datoteke.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Ova kolekcija treba da sadrži {{ limit }} ili više elemenata.|Ova kolekcija treba da sadrži {{ limit }} ili više elemenata.|Ova kolekcija treba da sadrži {{ limit }} ili više elemenata.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Ova kolekcija treba da sadrži {{ limit }} ili manje elemenata.|Ova kolekcija treba da sadrži {{ limit }} ili manje elemenata.|Ova kolekcija treba da sadrži {{ limit }} ili manje elemenata.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Ova kolekcija treba da sadrži tačno {{ limit }} element.|Ova kolekcija treba da sadrži tačno {{ limit }} elementa.|Ova kolekcija treba da sadrži tačno {{ limit }} elemenata.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Nevalidan broj kartice.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Nevalidan broj kartice ili tip kartice nije podržan.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Ovo nije validan međunarodni broj bankovnog računa (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Ovo nije validan ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Ovo nije validan ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Ovo nije validan ISBN-10 ili ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Ovo nije validan ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Ovo nije validna valuta.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Ova vrednost treba da bude {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Ova vrednost treba da bude veća od {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Ova vrednost treba da bude veća ili jednaka {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ova vrednost treba da bude identična sa {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Ova vrednost treba da bude manja od {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Ova vrednost treba da bude manja ili jednaka {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Ova vrednost ne treba da bude jednaka {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Ova vrednost ne treba da bude identična sa {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Razmera ove slike je prevelika ({{ ratio }}). Maksimalna dozvoljena razmera je {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Razmera ove slike je premala ({{ ratio }}). Minimalna očekivana razmera je {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>Slika je kvadratna ({{ width }}x{{ height }}px). Kvadratne slike nisu dozvoljene.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>Slika je orijentacije pejzaža ({{ width }}x{{ height }}px). Pejzažna orijentacija slika nije dozvoljena.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>Slika je orijantacije portreta ({{ width }}x{{ height }}px). Portretna orijentacija slika nije dozvoljena.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.sv.xlf b/vendor/symfony/validator/Resources/translations/validators.sv.xlf
deleted file mode 100644
index 693f12b..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.sv.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Värdet ska vara falskt.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Värdet ska vara sant.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Värdet ska vara av typen {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Värdet ska vara tomt.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Värdet ska vara ett av de givna valen.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Du måste välja minst {{ limit }} val.|Du måste välja minst {{ limit }} val.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Du kan som mest välja {{ limit }} val.|Du kan som mest välja {{ limit }} val.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Ett eller fler av de angivna värdena är ogiltigt.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Det här fältet förväntades inte.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Det här fältet saknas.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Värdet är inte ett giltigt datum.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Värdet är inte ett giltigt datum med tid.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Värdet är inte en giltig epost-adress.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Filen kunde inte hittas.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Filen är inte läsbar.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Filen är för stor ({{ size }} {{ suffix }}). Största tillåtna storlek är {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Filens MIME-typ ({{ type }}) är ogiltig. De tillåtna typerna är {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Värdet ska vara {{ limit }} eller mindre.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Värdet är för långt. Det ska ha {{ limit }} tecken eller färre.|Värdet är för långt. Det ska ha {{ limit }} tecken eller färre.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Värdet ska vara {{ limit }} eller mer.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Värdet är för kort. Det ska ha {{ limit }} tecken eller mer.|Värdet är för kort. Det ska ha {{ limit }} tecken eller mer.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Värdet kan inte vara tomt.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Värdet kan inte vara null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Värdet ska vara null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Värdet är inte giltigt.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Värdet är inte en giltig tid.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Värdet är inte en giltig URL.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>De två värdena måste vara lika.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Filen är för stor. Tillåten maximal storlek är {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Filen är för stor.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Filen kunde inte laddas upp.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Värdet ska vara ett giltigt nummer.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Filen är ingen giltig bild.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Det här är inte en giltig IP-adress.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Värdet är inte ett giltigt språk.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Värdet är inte en giltig plats.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Värdet är inte ett giltigt land.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Värdet används redan.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Det gick inte att fastställa storleken på bilden.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Bildens bredd är för stor ({{ width }}px). Tillåten maximal bredd är {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Bildens bredd är för liten ({{ width }}px). Minsta förväntade bredd är {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Bildens höjd är för stor ({{ height }}px). Tillåten maximal bredd är {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Bildens höjd är för liten ({{ height }}px). Minsta förväntade höjd är {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Värdet ska vara användarens nuvarande lösenord.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Värdet ska ha exakt {{ limit }} tecken.|Värdet ska ha exakt {{ limit }} tecken.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Filen laddades bara upp delvis.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Ingen fil laddades upp.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Det finns ingen temporär mapp konfigurerad i php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Kan inte skriva temporär fil till disken.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>En PHP extension gjorde att uppladdningen misslyckades.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Den här samlingen ska innehålla {{ limit }} element eller mer.|Den här samlingen ska innehålla {{ limit }} element eller mer.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Den här samlingen ska innehålla {{ limit }} element eller mindre.|Den här samlingen ska innehålla {{ limit }} element eller mindre.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Den här samlingen ska innehålla exakt {{ limit }} element.|Den här samlingen ska innehålla exakt {{ limit }} element.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Ogiltigt kortnummer.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Okänd korttyp eller ogiltigt kortnummer.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Det här är inte en giltig International Bank Account Number (IBANK).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Värdet är inte en giltig ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Värdet är inte en giltig ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Värdet är varken en giltig ISBN-10 eller en giltig ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Värdet är inte en giltig ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Värdet är inte en giltig valuta.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Värdet ska vara detsamma som {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Värdet ska vara större än {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Värdet ska bara större än eller detsamma som {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Värdet ska vara identiskt till {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Värdet ska vara mindre än {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Värdet ska vara mindre än eller detsamma som {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Värdet ska inte vara detsamma som {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Värdet ska inte vara identiskt med {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>Förhållandet mellan bildens bredd och höjd är för stort ({{ ratio }}). Högsta tillåtna förhållande är {{ max_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>Förhållandet mellan bildens bredd och höjd är för litet ({{ ratio }}). Minsta tillåtna förhållande är {{ min_ratio }}.</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>Bilden är kvadratisk ({{ width }}x{{ height }}px). Kvadratiska bilder tillåts inte.</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>Bilden är landskapsorienterad ({{ width }}x{{ height }}px). Landskapsorienterade bilder tillåts inte.</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>Bilden är porträttsorienterad ({{ width }}x{{ height }}px). Porträttsorienterade bilder tillåts inte.</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>En tom fil är inte tillåten.</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>Värddatorn kunde inte hittas.</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>Detta värde har inte den förväntade teckenkodningen {{ charset }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.th.xlf b/vendor/symfony/validator/Resources/translations/validators.th.xlf
deleted file mode 100644
index d5b5703..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.th.xlf
+++ /dev/null
@@ -1,303 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>ค่านี้ควรจะเป็น false</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>ค่านี้ควรจะเป็น true</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>ค่านี้ควรจะเป็นชนิด {{ type }}</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>ควรจะเป็นค่าว่าง</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>คุณเลือกค่าที่ไม่ตรงกับตัวเลือก</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>คุณต้องเลือกอย่างน้อย {{ limit }} ตัวเลือก</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>คุณเลือกได้มากที่สุด {{ limit }} ตัวเลือก</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>มีบางค่าที่ส่งมาไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>ฟิลด์นี้ที่ไม่ได้คาดหวัง</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>ฟิลด์นี้จะหายไป</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>ค่าของวันที่ไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>ค่าของวันที่และเวลาไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>ค่าของอีเมล์ไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>ไม่พบไฟล์</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>ไฟล์ไม่อยู่ในสถานะที่สามารถอ่านได้</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>ไฟล์ใหญ่เกิน ({{ size }} {{ suffix }}) อนุญาตให้ใหญ่ที่สุดได้ไม่เกิน {{ limit }} {{ suffix }}</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Mime type ของไฟล์ไม่ถูกต้อง ({{ type }}) Mime types ที่อนุญาตคือ {{ types }}</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>ค่านี้ควรจะเป็น {{ limit }} หรือน้อยกว่านั้น</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>ค่านี้ยาวเกินไป ควรจะมีแค่ {{ limit }} ตัวอักษรหรือน้อยกว่านั้น</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>ค่านี้ควรจะมี {{ limit }} หรือมากกว่านั้น</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>ค่านี้สั้นเกินไป ควรจะมี {{ limit }} ตัวอักษรหรือมากกว่านั้น</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>ค่านี้ไม่ควรเป็นค่าว่าง</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>ค่านี้ไม่ควรเป็นค่า null</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>ค่านี้ควรเป็นค่า null</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>ค่านี้ไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>ค่าของเวลาไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>ค่าของ URL ไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>ค่าทั้งสองค่าควรจะเหมือนกัน</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>ขนาดไฟล์ใหญ่เกินไป อนุญาตให้ไฟล์ขนาดใหญ่ได้ไม่เกิน {{ limit }} {{ suffix }}</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>ขนาดไฟล์ใหญ่เกินไป</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>ไม่สามารถอัปโหลดไฟล์ได้</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>ค่าของตัวเลขไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>ไฟล์นี้ไม่ใช่ไฟล์รูปภาพ</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>ค่าของ IP ไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>ค่าของภาษาไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>ค่าของภูมิภาค (Locale) ไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>ค่าของประเทศไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Tค่านี้ถูกใช้งานไปแล้ว</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>ไม่สามารถตรวจสอบขนาดไฟล์ของภาพได้</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>ความกว้างของภาพเกินขนาด ({{ width }}px) อนุญาตให้กว้างได้มากที่สุด {{ max_width }}px</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>ความกว้างของภาพไม่ได้ขนาด ({{ width }}px) อนุญาตให้สั้นที่สุด {{ min_width }}px</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>ความสูงของภาพเกินขนาด ({{ height }}px) อนุญาตให้สูงได้มากที่สุด {{ max_height }}px</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>ความสูงของภาพไม่ได้ขนาด ({{ height }}px) อนุญาตให้สูงอย่างน้อยที่สุด {{ min_height }}px</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>ค่านี้ควรจะเป็นรหัสผ่านปัจจุบันของผู้ใช้</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>ค่านี้ควรจะมีความยาว {{ limit }} ตัวอักษร</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>อัปโหลดไฟล์ได้เพียงบางส่วนเท่านั้น</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>ไม่มีไฟล์ใดถูกอัปโหลด</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>ไม่พบไฟล์ temp ควรจะกำหนดใน php.ini</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>ไม่สามารถเขียน temp ไฟล์ลงดิสก์ได้</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>PHP extension เกี่ยวกับการอัปโหลดมีปัญหา</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>คอเล็กชั่นนี้ควรจะประกอบไปด้วยอ่างน้อย {{ limit }} สมาชิก</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>คอเล็กชั่นนี้ไม่ควรมีสมาชิกเกิน {{ limit }}</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>คอเล็กชั่นนี้ควรจะมีสมาชิก {{ limit }} เท่านั้น</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>หมายเลขบัตรไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>ไม่รู้จักประเภทของบัตร หรือหมายเลขบัตรไม่ถูกต้อง</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>นี่ไม่ถูกต้องตาม International Bank Account Number (IBAN)</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>ค่านี้ไม่ถูกต้องตาม ISBN-10</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>ค่านี้ไม่ถูกต้องตาม ISBN-13</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>ค่านี้ไม่ถูกต้องตามทั้ง ISBN-10 และ ISBN-13</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>ค่านี้ไม่ถุกต้องตาม ISSN</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>ค่านี้ไม่ถูกต้องตามสกุลเงิน</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>ค่านี้ไม่ตรงกับ {{ compared_value }}</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>ค่านี้ควรจะมากกว่า {{ compared_value }}</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>ค่านี้ควรจะมากกว่าหรือตรงกับ {{ compared_value }}</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>ค่านี้ควรจะเหมือนกันกับ {{ compared_value_type }} {{ compared_value }}</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>ค่านี้ควรจะน้อยกว่า {{ compared_value }}</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>ค่านี้ควรจะน้อยกว่าหรือเท่ากับ {{ compared_value }}</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>ค่านี้ไม่ควรเท่ากันกับ {{ compared_value }}</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>ค่านี้ไม่ควรเหมือนกันกับ {{ compared_value_type }} {{ compared_value }}</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>สัดส่วนของภาพใหญ่เกิน ({{ ratio }}) สามารถมีขนาดใหญ่ที่สุดได้ {{ max_ratio }}</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>สัดส่วนของภาพเล็กเกิน ({{ ratio }}) สามารถมีขนาดเล็กที่สุดได้ {{ min_ratio }}</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>รูปภาพเป็นจุตรัส ({{ width }}x{{ height }}px) ไม่อนุญาตภาพที่เป็นสี่เหลี่ยมจตุรัส</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>ภาพนี้เป็นแนวนอน ({{ width }}x{{ height }}px) ไม่อนุญาตภาพที่เป็นแนวนอน</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>ภาพนี้เป็นแนวตั้ง ({{ width }}x{{ height }}px) ไม่อนุญาตภาพที่เป็นแนวตั้ง</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.tr.xlf b/vendor/symfony/validator/Resources/translations/validators.tr.xlf
deleted file mode 100644
index a7906ea..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.tr.xlf
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Bu değer olumsuz olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Bu değer olumlu olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Bu değerin tipi {{ type }} olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Bu değer boş olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Seçtiğiniz değer geçerli bir seçenek değil.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>En az {{ limit }} seçenek belirtmelisiniz.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>En çok {{ limit }} seçenek belirtmelisiniz.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Verilen değerlerden bir veya daha fazlası geçersiz.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Bu alan beklenen olmadı.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Bu alan, eksik</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Bu değer doğru bir tarih biçimi değildir.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Bu değer doğru bir tarihsaat biçimi değildir.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Bu değer doğru bir e-mail adresi değildir.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Dosya bulunamadı.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Dosya okunabilir değil.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Dosya çok büyük ({{ size }} {{ suffix }}). İzin verilen en büyük dosya boyutu {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Dosyanın mime tipi geçersiz ({{ type }}). İzin verilen mime tipleri {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Bu değer {{ limit }} ve altında olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Bu değer çok uzun. {{ limit }} karakter veya daha az olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Bu değer {{ limit }} veya daha fazla olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Bu değer çok kısa. {{ limit }} karakter veya daha fazla olmaldır.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Bu değer boş bırakılmamalıdır.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Bu değer boş bırakılmamalıdır.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Bu değer boş bırakılmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Bu değer geçerli değil.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Bu değer doğru bir saat değil.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Bu değer doğru bir URL değil.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>İki değer eşit olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Dosya çok büyük. İzin verilen en büyük dosya boyutu {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Dosya çok büyük.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Dosya yüklenemiyor.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Bu değer geçerli bir rakam olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Bu dosya geçerli bir resim değildir.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Bu geçerli bir IP adresi değildir.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Bu değer geçerli bir lisan değil.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Bu değer geçerli bir yer değildir.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Bu değer geçerli bir ülke değildir.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Bu değer şu anda kullanımda.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Resmin boyutu saptanamıyor.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Resmin genişliği çok büyük ({{ width }}px). İzin verilen en büyük genişlik {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Resmin genişliği çok küçük ({{ width }}px). En az {{ min_width }}px olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Resmin yüksekliği çok büyük ({{ height }}px). İzin verilen en büyük yükseklik {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Resmin yüksekliği çok küçük ({{ height }}px). En az {{ min_height }}px olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Bu değer kullanıcının şu anki şifresi olmalıdır.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Bu değer tam olarak {{ limit }} karakter olmaldır.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Dosya sadece kısmen yüklendi.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Hiçbir dosya yüklenmedi.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>php.ini içerisinde geçici dizin tanımlanmadı.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Geçici dosya diske yazılamıyor.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Bir PHP eklentisi dosyanın yüklemesini başarısız kıldı.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Bu derlem {{ limit }} veya daha çok eleman içermelidir.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Bu derlem {{ limit }} veya daha az eleman içermelidir.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Bu derlem {{ limit }} eleman içermelidir.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Geçersiz kart numarası.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Desteklenmeyen kart tipi veya geçersiz kart numarası.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.uk.xlf b/vendor/symfony/validator/Resources/translations/validators.uk.xlf
deleted file mode 100644
index 02ecd5a..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.uk.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-﻿<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Значення повинно бути Ні.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Значення повинно бути Так.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Тип значення повинен бути {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Значення повинно бути пустим.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Обране вами значення недопустиме.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Ви повинні обрати хоча б {{ limit }} варіант.|Ви повинні обрати хоча б {{ limit }} варіанти.|Ви повинні обрати хоча б {{ limit }} варіантів.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Ви повинні обрати не більше ніж {{ limit }} варіантів.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Одне або кілька заданих значень є недопустимі.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Це поле не очікується.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Це поле не вистачає.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Дане значення не є вірною датою.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Дане значення дати та часу недопустиме.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Значення адреси электронної пошти недопустиме.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Файл не знайдено.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Файл не читається.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Файл занадто великий ({{ size }} {{ suffix }}). Дозволений максимальний розмір {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>MIME-тип файлу недопустимий ({{ type }}). Допустимі MIME-типи файлів {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Значення повинно бути {{ limit }} або менше.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Значення занадто довге. Повинно бути рівне {{ limit }} символу або менше.|Значення занадто довге. Повинно бути рівне {{ limit }} символам або менше.|Значення занадто довге. Повинно бути рівне {{ limit }} символам або менше.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Значення повинно бути {{ limit }} або більше.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Значення занадто коротке. Повинно бути рівне {{ limit }} символу або більше.|Значення занадто коротке. Повинно бути рівне {{ limit }} символам або більше.|Значення занадто коротке. Повинно бути рівне {{ limit }} символам або більше.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Значення не повинно бути пустим.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Значення не повинно бути null.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Значення повинно бути null.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Значення недопустиме.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Значення часу недопустиме.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Значення URL недопустиме.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Обидва занчення повинні бути одинаковими.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Файл занадто великий. Максимальний допустимий розмір {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Файл занадто великий.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Файл не можливо завантажити.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Значення має бути допустимим числом.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Цей файл не є допустимим форматом зображення.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Це некоректна IP адреса.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Це некоректна мова.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Це некоректна локалізація.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Це некоректна країна.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Це значення вже використовується.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Не вдалося визначити розмір зображення.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Ширина зображення занадто велика ({{ width }}px). Максимально допустима ширина {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Ширина зображення занадто мала ({{ width }}px). Мінімально допустима ширина {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Висота зображення занадто велика ({{ height }}px). Максимально допустима висота {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Висота зображення занадто мала ({{ height }}px). Мінімально допустима висота {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Значення має бути поточним паролем користувача.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Значення повиино бути рівним {{ limit }} символу.|Значення повиино бути рівним {{ limit }} символам.|Значення повиино бути рівним {{ limit }} символам.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Файл був завантажений лише частково.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Файл не був завантажений.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Не налаштована тимчасова директорія в php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Неможливо записати тимчасовий файл на диск.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Розширення PHP викликало помилку при завантаженні.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Ця колекція повинна містити {{ limit }} елемент чи більше.|Ця колекція повинна містити {{ limit }} елемента чи більше.|Ця колекція повинна містити {{ limit }} елементів чи більше.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Ця колекція повинна містити {{ limit }} елемент чи менше.|Ця колекція повинна містити {{ limit }} елемента чи менше.|Ця колекція повинна містити {{ limit }} елементов чи менше.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Ця колекція повинна містити рівно {{ limit }} елемент.|Ця колекція повинна містити рівно {{ limit }} елемента.|Ця колекція повинна містити рівно {{ limit }} елементів.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Невірний номер карти.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Непідтримуваний тип карти або невірний номер карти.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Це не дійсний міжнародний номер банківського рахунку (IBAN).</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Значення не у форматі ISBN-10.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Значення не у форматі ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Значення не відповідає форматам ISBN-10 та ISBN-13.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Значення має невірний формат ISSN.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Значення має невірний формат валюти.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Значення повинно дорівнювати {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Значення має бути більше ніж {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Значення має бути більше або дорівнювати {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Значення має бути ідентичним {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Значення повинно бути менше ніж {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Значення повинно бути менше або дорівнювати {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Значення не повинно дорівнювати  {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Значення не повинно бути ідентичним {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.vi.xlf b/vendor/symfony/validator/Resources/translations/validators.vi.xlf
deleted file mode 100644
index e1833c7..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.vi.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>Giá trị này phải là sai.</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>Giá trị này phải là đúng.</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>Giá trị này phải là kiểu  {{ type }}.</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>Giá trị này phải rỗng.</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>Giá trị bạn vừa chọn không hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>Bạn phải chọn ít nhất {{ limit }} lựa chọn.|Bạn phải chọn ít nhất {{ limit }} lựa chọn.</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>Bạn phải chọn nhiều nhất {{ limit }} lựa chọn.|Bạn phải chọn nhiều  nhất {{ limit }} lựa chọn.</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>Một hoặc nhiều giá trị được chọn không hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>Lĩnh vực này không được dự kiến.</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>Lĩnh vực này là mất tích.</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>Giá trị không phải là ngày hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>Giá trị không phải là ngày tháng hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>Giá trị này không phải là email hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>Tập tin không tìm thấy.</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>Tập tin không thể đọc được.</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Tập tin quá lớn ({{ size }} {{ suffix }}). Kích thước tối đa cho phép {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>Kiểu mime của tập tin không hợp lệ ({{ type }}). Kiểu hợp lệ là {{ types }}.</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>Giá trị phải bằng hoặc nhỏ hơn {{ limit }}.</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>Giá trị quá dài. Phải bằng hoặc ít hơn {{ limit }} kí tự.|Giá trị quá dài. Phải bằng hoặc ít hơn {{ limit }} kí tự.</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>Giá trị phải lớn hơn hoặc bằng {{ limit }}.</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>Giá trị quá ngắn. Phải hơn hoặc bằng {{ limit }} kí tự.|Giá trị quá ngắn. Phải hơn hoặc bằng {{ limit }} kí tự.</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>Giá trị không được phép để trống.</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>Giá trị không được phép rỗng.</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>Giá trị phải rỗng.</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>Giá trị không hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>Giá trị không phải là thời gian hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>Giá trị không phải là địa chỉ URL hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>Hai giá trị phải bằng nhau.</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>Tập tin quá lớn. Kích thước tối đa cho phép là {{ limit }} {{ suffix }}.</target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>Tập tin quá lớn.</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>Tập tin không thể tải lên.</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>Giá trị phải là con số.</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This file is not a valid image.</source>
-                <target>Tập tin không phải là hình ảnh.</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This is not a valid IP address.</source>
-                <target>Địa chỉ IP không hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This value is not a valid language.</source>
-                <target>Giá trị không phải là ngôn ngữ hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid locale.</source>
-                <target>Giá trị không phải là một bản địa địa phương hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid country.</source>
-                <target>Giá trị không phải là nước hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>Giá trị đã được sử dụng.</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>Kích thước của hình ảnh không thể xác định.</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>Chiều rộng của hình quá lớn ({{ width }}px). Chiều rộng tối đa phải là {{ max_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>Chiều rộng của hình quá thấp ({{ width }}px). Chiều rộng tối thiểu phải là {{ min_width }}px.</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>Chiều cao của hình quá cao ({{ height }}px). Chiều cao tối đa phải là {{ max_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>Chiều cao của hình quá thấp ({{ height }}px). Chiều cao tối thiểu phải là {{ min_height }}px.</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>Giá trị này phải là mật khẩu hiện tại của người dùng.</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>Giá trị phải có chính xác {{ limit }} kí tự.|Giá trị phải có chính xác {{ limit }} kí tự.</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>Tập tin chỉ được tải lên một phần.</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>Tập tin không được tải lên.</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>Thư mục tạm không được định nghĩa trong php.ini.</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>Không thể ghi tập tin tạm ra đĩa.</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>Một PHP extension đã phá hỏng quá trình tải lên của tập tin.</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>Danh sách phải chứa {{ limit }} hoặc nhiều hơn thành phần.|Danh sách phải chứa {{ limit }} hoặc nhiều hơn thành phần.</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>Danh sách phải chứa {{ limit }} hoặc ít hơn thành phần.|Danh sách phải chứa {{ limit }} hoặc ít hơn thành phần.</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>Danh sách phải chứa chính xác {{ limit }} thành phần.|Danh sách phải chứa chính xác {{ limit }} thành phần.</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>Số thẻ không hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>Thẻ không được hỗ trợ hoặc số thẻ không hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>Giá trị không phải là International Bank Account Number (IBAN) hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>Giá trị không phải là ISBN-10 hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>Giá trị không phải là ISBN-13 hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>Giá trị không phải là ISBN-10 hoặc ISBN-13 hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>Giá trị không là ISSN hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>Giá trị không phải là đơn vi tiền tệ hợp lệ.</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>Giá trị phải bằng {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>Giá trị phải lớn hơn {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>Giá trị phải lớn hơn hoặc bằng {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Giá trị phải giống  {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>Giá trị phải bé hơn {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>Giá trị không được phép nhỏ hơn hoặc bằng {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>Giá trị không được phép bằng {{ compared_value }}.</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>Giá trị không được phép giống như {{ compared_value_type }} {{ compared_value }}.</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.zh_CN.xlf b/vendor/symfony/validator/Resources/translations/validators.zh_CN.xlf
deleted file mode 100644
index 6c95ef1..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.zh_CN.xlf
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>该变量的值应为 false 。</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>该变量的值应为 true 。</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>该变量的类型应为 {{ type }} 。</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>该变量值应为空。</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>选定变量的值不是有效的选项。</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>您至少要选择 {{ limit }} 个选项。</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>您最多能选择 {{ limit }} 个选项。</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>一个或者多个给定的值无效。</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>此字段是多余的。</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>此字段缺失。</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>该值不是一个有效的日期（date）。</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>该值不是一个有效的日期时间（datetime）。</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>该值不是一个有效的邮件地址。</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>文件未找到。</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>文件不可读。</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>文件太大 ({{ size }} {{ suffix }})。文件大小不可以超过 {{ limit }} {{ suffix }} 。</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>无效的文件类型 ({{ type }}) 。允许的文件类型有 {{ types }} 。</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>这个变量的值应该小于或等于 {{ limit }}。</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>字符串太长，长度不可超过 {{ limit }} 个字符。</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>该变量的值应该大于或等于 {{ limit }}。</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>字符串太短，长度不可少于 {{ limit }} 个字符。</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>该变量不应为空。</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>该变量不应为 null 。</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>该变量应为空 null 。</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>该变量值无效 。</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>该值不是一个有效的时间。</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>该值不是一个有效的 URL 。</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>这两个变量的值应该相等。</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>文件太大，文件大小不可以超过 {{ limit }} {{ suffix }}。 </target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>文件太大。</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>无法上传此文件。</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>该值应该为有效的数字。</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This value is not a valid country.</source>
-                <target>该值不是有效的国家名。</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This file is not a valid image.</source>
-                <target>该文件不是有效的图片。</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This is not a valid IP address.</source>
-                <target>该值不是有效的IP地址。</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid language.</source>
-                <target>该值不是有效的语言名。</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid locale.</source>
-                <target>该值不是有效的区域值（locale）。</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>该值已经被使用。</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>不能解析图片大小。</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>图片太宽 ({{ width }}px)，最大宽度为 {{ max_width }}px 。</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>图片宽度不够 ({{ width }}px)，最小宽度为 {{ min_width }}px 。</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>图片太高 ({{ height }}px)，最大高度为 {{ max_height }}px 。</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>图片高度不够 ({{ height }}px)，最小高度为 {{ min_height }}px 。</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>该变量的值应为用户当前的密码。</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>该变量应为 {{ limit }} 个字符。</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>该文件的上传不完整。</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>没有上传任何文件。</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>php.ini 里没有配置临时文件目录。</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>临时文件写入磁盘失败。</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>某个 PHP 扩展造成上传失败。</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>该集合最少应包含 {{ limit }} 个元素。</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>该集合最多包含 {{ limit }} 个元素。</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>该集合应包含 {{ limit }} 个元素 element 。</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>无效的信用卡号。</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>不支持的信用卡类型或无效的信用卡号。</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>该值不是有效的国际银行帐号（IBAN）。</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>该值不是有效的10位国际标准书号（ISBN-10）。</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>该值不是有效的13位国际标准书号（ISBN-13）。</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>该值不是有效的国际标准书号（ISBN-10 或 ISBN-13）。</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>该值不是有效的国际标准期刊号（ISSN）。</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>该值不是有效的货币名（currency）。</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>该值应等于 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>该值应大于 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>该值应大于或等于 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>该值应与 {{ compared_value_type }} {{ compared_value }} 相同。</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>该值应小于 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>该值应小于或等于 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>该值不应先等于 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>该值不应与 {{ compared_value_type }} {{ compared_value }} 相同。</target>
-            </trans-unit>
-            <trans-unit id="73">
-                <source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
-                <target>图片宽高比太大 ({{ ratio }})。允许的最大宽高比为 {{ max_ratio }}。</target>
-            </trans-unit>
-            <trans-unit id="74">
-                <source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
-                <target>图片宽高比太小 ({{ ratio }})。允许的最大宽高比为 {{ min_ratio }}。</target>
-            </trans-unit>
-            <trans-unit id="75">
-                <source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
-                <target>图片是方形的 ({{ width }}x{{ height }}px)。不允许使用方形的图片。</target>
-            </trans-unit>
-            <trans-unit id="76">
-                <source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
-                <target>图片是横向的 ({{ width }}x{{ height }}px)。不允许使用横向的图片。</target>
-            </trans-unit>
-            <trans-unit id="77">
-                <source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
-                <target>图片是纵向的 ({{ width }}x{{ height }}px)。不允许使用纵向的图片。</target>
-            </trans-unit>
-            <trans-unit id="78">
-                <source>An empty file is not allowed.</source>
-                <target>不允许使用空文件。</target>
-            </trans-unit>
-            <trans-unit id="79">
-                <source>The host could not be resolved.</source>
-                <target>主机名无法解析。</target>
-            </trans-unit>
-            <trans-unit id="80">
-                <source>This value does not match the expected {{ charset }} charset.</source>
-                <target>该值不符合 {{ charset }} 编码。</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Resources/translations/validators.zh_TW.xlf b/vendor/symfony/validator/Resources/translations/validators.zh_TW.xlf
deleted file mode 100644
index d9d5f2f..0000000
--- a/vendor/symfony/validator/Resources/translations/validators.zh_TW.xlf
+++ /dev/null
@@ -1,283 +0,0 @@
-<?xml version="1.0"?>
-<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
-    <file source-language="en" datatype="plaintext" original="file.ext">
-        <body>
-            <trans-unit id="1">
-                <source>This value should be false.</source>
-                <target>該變數的值應為 false 。</target>
-            </trans-unit>
-            <trans-unit id="2">
-                <source>This value should be true.</source>
-                <target>該變數的值應為 true 。</target>
-            </trans-unit>
-            <trans-unit id="3">
-                <source>This value should be of type {{ type }}.</source>
-                <target>該變數的類型應為 {{ type }} 。</target>
-            </trans-unit>
-            <trans-unit id="4">
-                <source>This value should be blank.</source>
-                <target>該變數應為空。</target>
-            </trans-unit>
-            <trans-unit id="5">
-                <source>The value you selected is not a valid choice.</source>
-                <target>選定變數的值不是有效的選項。</target>
-            </trans-unit>
-            <trans-unit id="6">
-                <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
-                <target>您至少要選擇 {{ limit }} 個選項。</target>
-            </trans-unit>
-            <trans-unit id="7">
-                <source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
-                <target>您最多能選擇 {{ limit }} 個選項。</target>
-            </trans-unit>
-            <trans-unit id="8">
-                <source>One or more of the given values is invalid.</source>
-                <target>一個或者多個給定的值無效。</target>
-            </trans-unit>
-            <trans-unit id="9">
-                <source>This field was not expected.</source>
-                <target>此字段是沒有預料到。</target>
-            </trans-unit>
-            <trans-unit id="10">
-                <source>This field is missing.</source>
-                <target>此字段缺失。</target>
-            </trans-unit>
-            <trans-unit id="11">
-                <source>This value is not a valid date.</source>
-                <target>該值不是一個有效的日期（date）。</target>
-            </trans-unit>
-            <trans-unit id="12">
-                <source>This value is not a valid datetime.</source>
-                <target>該值不是一個有效的日期時間（datetime）。</target>
-            </trans-unit>
-            <trans-unit id="13">
-                <source>This value is not a valid email address.</source>
-                <target>該值不是一個有效的郵件地址。</target>
-            </trans-unit>
-            <trans-unit id="14">
-                <source>The file could not be found.</source>
-                <target>找不到檔案。</target>
-            </trans-unit>
-            <trans-unit id="15">
-                <source>The file is not readable.</source>
-                <target>無法讀取檔案。</target>
-            </trans-unit>
-            <trans-unit id="16">
-                <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>檔案太大 ({{ size }} {{ suffix }})。檔案大小不可以超過 {{ limit }} {{ suffix }} 。</target>
-            </trans-unit>
-            <trans-unit id="17">
-                <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
-                <target>無效的檔案類型 ({{ type }}) 。允許的檔案類型有 {{ types }} 。</target>
-            </trans-unit>
-            <trans-unit id="18">
-                <source>This value should be {{ limit }} or less.</source>
-                <target>這個變數的值應該小於或等於 {{ limit }}。</target>
-            </trans-unit>
-            <trans-unit id="19">
-                <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
-                <target>字串太長，長度不可超過 {{ limit }} 個字元。</target>
-            </trans-unit>
-            <trans-unit id="20">
-                <source>This value should be {{ limit }} or more.</source>
-                <target>該變數的值應該大於或等於 {{ limit }}。</target>
-            </trans-unit>
-            <trans-unit id="21">
-                <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
-                <target>字串太短，長度不可少於 {{ limit }} 個字元。</target>
-            </trans-unit>
-            <trans-unit id="22">
-                <source>This value should not be blank.</source>
-                <target>該變數不應為空白。</target>
-            </trans-unit>
-            <trans-unit id="23">
-                <source>This value should not be null.</source>
-                <target>該值不應為 null 。</target>
-            </trans-unit>
-            <trans-unit id="24">
-                <source>This value should be null.</source>
-                <target>該值應為 null 。</target>
-            </trans-unit>
-            <trans-unit id="25">
-                <source>This value is not valid.</source>
-                <target>無效的數值 。</target>
-            </trans-unit>
-            <trans-unit id="26">
-                <source>This value is not a valid time.</source>
-                <target>該值不是一個有效的時間。</target>
-            </trans-unit>
-            <trans-unit id="27">
-                <source>This value is not a valid URL.</source>
-                <target>該值不是一個有效的 URL 。</target>
-            </trans-unit>
-            <trans-unit id="31">
-                <source>The two values should be equal.</source>
-                <target>這兩個變數的值應該相等。</target>
-            </trans-unit>
-            <trans-unit id="32">
-                <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
-                <target>檔案太大，檔案大小不可以超過 {{ limit }} {{ suffix }}。 </target>
-            </trans-unit>
-            <trans-unit id="33">
-                <source>The file is too large.</source>
-                <target>檔案太大。</target>
-            </trans-unit>
-            <trans-unit id="34">
-                <source>The file could not be uploaded.</source>
-                <target>無法上傳此檔案。</target>
-            </trans-unit>
-            <trans-unit id="35">
-                <source>This value should be a valid number.</source>
-                <target>該值應該為有效的數字。</target>
-            </trans-unit>
-            <trans-unit id="36">
-                <source>This value is not a valid country.</source>
-                <target>該值不是有效的國家名。</target>
-            </trans-unit>
-            <trans-unit id="37">
-                <source>This file is not a valid image.</source>
-                <target>該檔案不是有效的圖片。</target>
-            </trans-unit>
-            <trans-unit id="38">
-                <source>This is not a valid IP address.</source>
-                <target>該值不是有效的IP地址。</target>
-            </trans-unit>
-            <trans-unit id="39">
-                <source>This value is not a valid language.</source>
-                <target>該值不是有效的語言名。</target>
-            </trans-unit>
-            <trans-unit id="40">
-                <source>This value is not a valid locale.</source>
-                <target>該值不是有效的區域值（locale）。</target>
-            </trans-unit>
-            <trans-unit id="41">
-                <source>This value is already used.</source>
-                <target>該值已經被使用。</target>
-            </trans-unit>
-            <trans-unit id="42">
-                <source>The size of the image could not be detected.</source>
-                <target>不能解析圖片大小。</target>
-            </trans-unit>
-            <trans-unit id="43">
-                <source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
-                <target>圖片太寬 ({{ width }}px)，最大寬度為 {{ max_width }}px 。</target>
-            </trans-unit>
-            <trans-unit id="44">
-                <source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
-                <target>圖片寬度不夠 ({{ width }}px)，最小寬度為 {{ min_width }}px 。</target>
-            </trans-unit>
-            <trans-unit id="45">
-                <source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
-                <target>圖片太高 ({{ height }}px)，最大高度為 {{ max_height }}px 。</target>
-            </trans-unit>
-            <trans-unit id="46">
-                <source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
-                <target>圖片高度不夠 ({{ height }}px)，最小高度為 {{ min_height }}px 。</target>
-            </trans-unit>
-            <trans-unit id="47">
-                <source>This value should be the user's current password.</source>
-                <target>該變數的值應為用戶目前的密碼。</target>
-            </trans-unit>
-            <trans-unit id="48">
-                <source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
-                <target>該變數應為 {{ limit }} 個字元。</target>
-            </trans-unit>
-            <trans-unit id="49">
-                <source>The file was only partially uploaded.</source>
-                <target>該檔案的上傳不完整。</target>
-            </trans-unit>
-            <trans-unit id="50">
-                <source>No file was uploaded.</source>
-                <target>沒有上傳任何檔案。</target>
-            </trans-unit>
-            <trans-unit id="51">
-                <source>No temporary folder was configured in php.ini.</source>
-                <target>php.ini 裡沒有配置臨時目錄。</target>
-            </trans-unit>
-            <trans-unit id="52">
-                <source>Cannot write temporary file to disk.</source>
-                <target>暫存檔寫入磁碟失敗。</target>
-            </trans-unit>
-            <trans-unit id="53">
-                <source>A PHP extension caused the upload to fail.</source>
-                <target>某個 PHP 擴展造成上傳失敗。</target>
-            </trans-unit>
-            <trans-unit id="54">
-                <source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
-                <target>該集合最少應包含 {{ limit }} 個元素。</target>
-            </trans-unit>
-            <trans-unit id="55">
-                <source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
-                <target>該集合最多包含 {{ limit }} 個元素。</target>
-            </trans-unit>
-            <trans-unit id="56">
-                <source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
-                <target>該集合應包含 {{ limit }} 個元素 element 。</target>
-            </trans-unit>
-            <trans-unit id="57">
-                <source>Invalid card number.</source>
-                <target>無效的信用卡號。</target>
-            </trans-unit>
-            <trans-unit id="58">
-                <source>Unsupported card type or invalid card number.</source>
-                <target>不支援的信用卡類型或無效的信用卡號。</target>
-            </trans-unit>
-            <trans-unit id="59">
-                <source>This is not a valid International Bank Account Number (IBAN).</source>
-                <target>該值不是有效的國際銀行帳號（IBAN）。</target>
-            </trans-unit>
-            <trans-unit id="60">
-                <source>This value is not a valid ISBN-10.</source>
-                <target>該值不是有效的10位國際標準書號（ISBN-10）。</target>
-            </trans-unit>
-            <trans-unit id="61">
-                <source>This value is not a valid ISBN-13.</source>
-                <target>該值不是有效的13位國際標準書號（ISBN-13）。</target>
-            </trans-unit>
-            <trans-unit id="62">
-                <source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
-                <target>該值不是有效的國際標準書號（ISBN-10 或 ISBN-13）。</target>
-            </trans-unit>
-            <trans-unit id="63">
-                <source>This value is not a valid ISSN.</source>
-                <target>該值不是有效的國際標準期刊號（ISSN）。</target>
-            </trans-unit>
-            <trans-unit id="64">
-                <source>This value is not a valid currency.</source>
-                <target>該值不是有效的貨幣名（currency）。</target>
-            </trans-unit>
-            <trans-unit id="65">
-                <source>This value should be equal to {{ compared_value }}.</source>
-                <target>該值應等於 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="66">
-                <source>This value should be greater than {{ compared_value }}.</source>
-                <target>該值應大於 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="67">
-                <source>This value should be greater than or equal to {{ compared_value }}.</source>
-                <target>該值應大於或等於 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="68">
-                <source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>該值應與 {{ compared_value_type }} {{ compared_value }} 相同。</target>
-            </trans-unit>
-            <trans-unit id="69">
-                <source>This value should be less than {{ compared_value }}.</source>
-                <target>該值應小於 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="70">
-                <source>This value should be less than or equal to {{ compared_value }}.</source>
-                <target>該值應小於或等於 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="71">
-                <source>This value should not be equal to {{ compared_value }}.</source>
-                <target>該值應不等於 {{ compared_value }} 。</target>
-            </trans-unit>
-            <trans-unit id="72">
-                <source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
-                <target>該值不應與 {{ compared_value_type }} {{ compared_value }} 相同。</target>
-            </trans-unit>
-        </body>
-    </file>
-</xliff>
diff --git a/vendor/symfony/validator/Util/PropertyPath.php b/vendor/symfony/validator/Util/PropertyPath.php
deleted file mode 100644
index 3ef8a8b..0000000
--- a/vendor/symfony/validator/Util/PropertyPath.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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\Util;
-
-/**
- * Contains utility methods for dealing with property paths.
- *
- * For more extensive functionality, use Symfony's PropertyAccess component.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class PropertyPath
-{
-    /**
-     * Appends a path to a given property path.
-     *
-     * If the base path is empty, the appended path will be returned unchanged.
-     * If the base path is not empty, and the appended path starts with a
-     * squared opening bracket ("["), the concatenation of the two paths is
-     * returned. Otherwise, the concatenation of the two paths is returned,
-     * separated by a dot (".").
-     *
-     * @param string $basePath The base path
-     * @param string $subPath  The path to append
-     *
-     * @return string The concatenation of the two property paths
-     */
-    public static function append($basePath, $subPath)
-    {
-        if ('' !== (string) $subPath) {
-            if ('[' === $subPath{0}) {
-                return $basePath.$subPath;
-            }
-
-            return '' !== (string) $basePath ? $basePath.'.'.$subPath : $subPath;
-        }
-
-        return $basePath;
-    }
-
-    /**
-     * Not instantiable.
-     */
-    private function __construct()
-    {
-    }
-}
diff --git a/vendor/symfony/validator/Validation.php b/vendor/symfony/validator/Validation.php
deleted file mode 100644
index 1693f73..0000000
--- a/vendor/symfony/validator/Validation.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?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;
-
-/**
- * Entry point for the Validator component.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-final class Validation
-{
-    /**
-     * The Validator API provided by Symfony 2.4 and older.
-     *
-     * @deprecated use API_VERSION_2_5_BC instead.
-     */
-    const API_VERSION_2_4 = 1;
-
-    /**
-     * The Validator API provided by Symfony 2.5 and newer.
-     */
-    const API_VERSION_2_5 = 2;
-
-    /**
-     * The Validator API provided by Symfony 2.5 and newer with a backwards
-     * compatibility layer for 2.4 and older.
-     */
-    const API_VERSION_2_5_BC = 3;
-
-    /**
-     * Creates a new validator.
-     *
-     * If you want to configure the validator, use
-     * {@link createValidatorBuilder()} instead.
-     *
-     * @return ValidatorInterface The new validator.
-     */
-    public static function createValidator()
-    {
-        return self::createValidatorBuilder()->getValidator();
-    }
-
-    /**
-     * Creates a configurable builder for validator objects.
-     *
-     * @return ValidatorBuilderInterface The new builder.
-     */
-    public static function createValidatorBuilder()
-    {
-        return new ValidatorBuilder();
-    }
-
-    /**
-     * This class cannot be instantiated.
-     */
-    private function __construct()
-    {
-    }
-}
diff --git a/vendor/symfony/validator/ValidationVisitor.php b/vendor/symfony/validator/ValidationVisitor.php
deleted file mode 100644
index 8386462..0000000
--- a/vendor/symfony/validator/ValidationVisitor.php
+++ /dev/null
@@ -1,212 +0,0 @@
-<?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;
-
-@trigger_error('The '.__NAMESPACE__.'\ValidationVisitor class is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Component\Validator\Exception\NoSuchMetadataException;
-use Symfony\Component\Validator\Exception\UnexpectedTypeException;
-
-/**
- * Default implementation of {@link ValidationVisitorInterface} and
- * {@link GlobalExecutionContextInterface}.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- */
-class ValidationVisitor implements ValidationVisitorInterface, GlobalExecutionContextInterface
-{
-    /**
-     * @var mixed
-     */
-    private $root;
-
-    /**
-     * @var MetadataFactoryInterface
-     */
-    private $metadataFactory;
-
-    /**
-     * @var ConstraintValidatorFactoryInterface
-     */
-    private $validatorFactory;
-
-    /**
-     * @var TranslatorInterface
-     */
-    private $translator;
-
-    /**
-     * @var null|string
-     */
-    private $translationDomain;
-
-    /**
-     * @var array
-     */
-    private $objectInitializers;
-
-    /**
-     * @var ConstraintViolationList
-     */
-    private $violations;
-
-    /**
-     * @var array
-     */
-    private $validatedObjects = array();
-
-    /**
-     * Creates a new validation visitor.
-     *
-     * @param mixed                               $root               The value passed to the validator.
-     * @param MetadataFactoryInterface            $metadataFactory    The factory for obtaining metadata instances.
-     * @param ConstraintValidatorFactoryInterface $validatorFactory   The factory for creating constraint validators.
-     * @param TranslatorInterface                 $translator         The translator for translating violation messages.
-     * @param string|null                         $translationDomain  The domain of the translation messages.
-     * @param ObjectInitializerInterface[]        $objectInitializers The initializers for preparing objects before validation.
-     *
-     * @throws UnexpectedTypeException If any of the object initializers is not an instance of ObjectInitializerInterface
-     */
-    public function __construct($root, MetadataFactoryInterface $metadataFactory, ConstraintValidatorFactoryInterface $validatorFactory, TranslatorInterface $translator, $translationDomain = null, array $objectInitializers = array())
-    {
-        foreach ($objectInitializers as $initializer) {
-            if (!$initializer instanceof ObjectInitializerInterface) {
-                throw new UnexpectedTypeException($initializer, 'Symfony\Component\Validator\ObjectInitializerInterface');
-            }
-        }
-
-        $this->root = $root;
-        $this->metadataFactory = $metadataFactory;
-        $this->validatorFactory = $validatorFactory;
-        $this->translator = $translator;
-        $this->translationDomain = $translationDomain;
-        $this->objectInitializers = $objectInitializers;
-        $this->violations = new ConstraintViolationList();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function visit(MetadataInterface $metadata, $value, $group, $propertyPath)
-    {
-        $context = new ExecutionContext(
-            $this,
-            $this->translator,
-            $this->translationDomain,
-            $metadata,
-            $value,
-            $group,
-            $propertyPath
-        );
-
-        $context->validateValue($value, $metadata->findConstraints($group));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, $group, $propertyPath, $traverse = false, $deep = false)
-    {
-        if (null === $value) {
-            return;
-        }
-
-        if (is_object($value)) {
-            $hash = spl_object_hash($value);
-
-            // Exit, if the object is already validated for the current group
-            if (isset($this->validatedObjects[$hash][$group])) {
-                return;
-            }
-
-            // Initialize if the object wasn't initialized before
-            if (!isset($this->validatedObjects[$hash])) {
-                foreach ($this->objectInitializers as $initializer) {
-                    if (!$initializer instanceof ObjectInitializerInterface) {
-                        throw new \LogicException('Validator initializers must implement ObjectInitializerInterface.');
-                    }
-                    $initializer->initialize($value);
-                }
-            }
-
-            // Remember validating this object before starting and possibly
-            // traversing the object graph
-            $this->validatedObjects[$hash][$group] = true;
-        }
-
-        // Validate arrays recursively by default, otherwise every driver needs
-        // to implement special handling for arrays.
-        // https://github.com/symfony/symfony/issues/6246
-        if (is_array($value) || ($traverse && $value instanceof \Traversable)) {
-            foreach ($value as $key => $element) {
-                // Ignore any scalar values in the collection
-                if (is_object($element) || is_array($element)) {
-                    // Only repeat the traversal if $deep is set
-                    $this->validate($element, $group, $propertyPath.'['.$key.']', $deep, $deep);
-                }
-            }
-
-            try {
-                $this->metadataFactory->getMetadataFor($value)->accept($this, $value, $group, $propertyPath);
-            } catch (NoSuchMetadataException $e) {
-                // Metadata doesn't necessarily have to exist for
-                // traversable objects, because we know how to validate
-                // them anyway. Optionally, additional metadata is supported.
-            }
-        } else {
-            $this->metadataFactory->getMetadataFor($value)->accept($this, $value, $group, $propertyPath);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getViolations()
-    {
-        return $this->violations;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getRoot()
-    {
-        return $this->root;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getVisitor()
-    {
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getValidatorFactory()
-    {
-        return $this->validatorFactory;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFactory()
-    {
-        return $this->metadataFactory;
-    }
-}
diff --git a/vendor/symfony/validator/ValidationVisitorInterface.php b/vendor/symfony/validator/ValidationVisitorInterface.php
deleted file mode 100644
index 0ab7b73..0000000
--- a/vendor/symfony/validator/ValidationVisitorInterface.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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;
-
-/**
- * Validates values against constraints defined in {@link MetadataInterface}
- * instances.
- *
- * This interface is an implementation of the Visitor design pattern. A value
- * is validated by first passing it to the {@link validate} method. That method
- * will determine the matching {@link MetadataInterface} for validating the
- * value. It then calls the {@link MetadataInterface::accept} method of that
- * metadata. <tt>accept()</tt> does two things:
- *
- * <ol>
- * <li>It calls {@link visit} to validate the value against the constraints of
- * the metadata.</li>
- * <li>It calls <tt>accept()</tt> on all nested metadata instances with the
- * corresponding values extracted from the current value. For example, if the
- * current metadata represents a class and the current value is an object of
- * that class, the metadata contains nested instances for each property of that
- * class. It forwards the call to these nested metadata with the values of the
- * corresponding properties in the original object.</li>
- * </ol>
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- */
-interface ValidationVisitorInterface
-{
-    /**
-     * Validates a value.
-     *
-     * If the value is an array or a traversable object, you can set the
-     * parameter <tt>$traverse</tt> to <tt>true</tt> in order to run through
-     * the collection and validate each element. If these elements can be
-     * collections again and you want to traverse them recursively, set the
-     * parameter <tt>$deep</tt> to <tt>true</tt> as well.
-     *
-     * If you set <tt>$traversable</tt> to <tt>true</tt>, the visitor will
-     * nevertheless try to find metadata for the collection and validate its
-     * constraints. If no such metadata is found, the visitor ignores that and
-     * only iterates the collection.
-     *
-     * If you don't set <tt>$traversable</tt> to <tt>true</tt> and the visitor
-     * does not find metadata for the given value, it will fail with an
-     * exception.
-     *
-     * @param mixed  $value        The value to validate.
-     * @param string $group        The validation group to validate.
-     * @param string $propertyPath The current property path in the validation graph.
-     * @param bool   $traverse     Whether to traverse the value if it is traversable.
-     * @param bool   $deep         Whether to traverse nested traversable values recursively.
-     *
-     * @throws Exception\NoSuchMetadataException If no metadata can be found for
-     *                                           the given value.
-     */
-    public function validate($value, $group, $propertyPath, $traverse = false, $deep = false);
-
-    /**
-     * Validates a value against the constraints defined in some metadata.
-     *
-     * This method implements the Visitor design pattern. See also
-     * {@link ValidationVisitorInterface}.
-     *
-     * @param MetadataInterface $metadata     The metadata holding the constraints.
-     * @param mixed             $value        The value to validate.
-     * @param string            $group        The validation group to validate.
-     * @param string            $propertyPath The current property path in the validation graph.
-     */
-    public function visit(MetadataInterface $metadata, $value, $group, $propertyPath);
-}
diff --git a/vendor/symfony/validator/Validator.php b/vendor/symfony/validator/Validator.php
deleted file mode 100644
index 4da27e7..0000000
--- a/vendor/symfony/validator/Validator.php
+++ /dev/null
@@ -1,237 +0,0 @@
-<?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;
-
-@trigger_error('The '.__NAMESPACE__.'\Validator class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Validator\Validator\RecursiveValidator class instead.', E_USER_DEPRECATED);
-
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Component\Validator\Constraints\Valid;
-use Symfony\Component\Validator\Exception\ValidatorException;
-
-/**
- * Default implementation of {@link ValidatorInterface}.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link Validator\RecursiveValidator} instead.
- */
-class Validator implements ValidatorInterface, Mapping\Factory\MetadataFactoryInterface
-{
-    /**
-     * @var MetadataFactoryInterface
-     */
-    private $metadataFactory;
-
-    /**
-     * @var ConstraintValidatorFactoryInterface
-     */
-    private $validatorFactory;
-
-    /**
-     * @var TranslatorInterface
-     */
-    private $translator;
-
-    /**
-     * @var null|string
-     */
-    private $translationDomain;
-
-    /**
-     * @var array
-     */
-    private $objectInitializers;
-
-    public function __construct(
-        MetadataFactoryInterface $metadataFactory,
-        ConstraintValidatorFactoryInterface $validatorFactory,
-        TranslatorInterface $translator,
-        $translationDomain = 'validators',
-        array $objectInitializers = array()
-    ) {
-        $this->metadataFactory = $metadataFactory;
-        $this->validatorFactory = $validatorFactory;
-        $this->translator = $translator;
-        $this->translationDomain = $translationDomain;
-        $this->objectInitializers = $objectInitializers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFactory()
-    {
-        return $this->metadataFactory;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFor($value)
-    {
-        return $this->metadataFactory->getMetadataFor($value);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasMetadataFor($value)
-    {
-        return $this->metadataFactory->hasMetadataFor($value);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, $groups = null, $traverse = false, $deep = false)
-    {
-        $visitor = $this->createVisitor($value);
-
-        foreach ($this->resolveGroups($groups) as $group) {
-            $visitor->validate($value, $group, '', $traverse, $deep);
-        }
-
-        return $visitor->getViolations();
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws ValidatorException If the metadata for the value does not support properties.
-     */
-    public function validateProperty($containingValue, $property, $groups = null)
-    {
-        $visitor = $this->createVisitor($containingValue);
-        $metadata = $this->metadataFactory->getMetadataFor($containingValue);
-
-        if (!$metadata instanceof PropertyMetadataContainerInterface) {
-            $valueAsString = is_scalar($containingValue)
-                ? '"'.$containingValue.'"'
-                : 'the value of type '.gettype($containingValue);
-
-            throw new ValidatorException(sprintf('The metadata for %s does not support properties.', $valueAsString));
-        }
-
-        foreach ($this->resolveGroups($groups) as $group) {
-            if (!$metadata->hasPropertyMetadata($property)) {
-                continue;
-            }
-
-            foreach ($metadata->getPropertyMetadata($property) as $propMeta) {
-                $propMeta->accept($visitor, $propMeta->getPropertyValue($containingValue), $group, $property);
-            }
-        }
-
-        return $visitor->getViolations();
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @throws ValidatorException If the metadata for the value does not support properties.
-     */
-    public function validatePropertyValue($containingValue, $property, $value, $groups = null)
-    {
-        $visitor = $this->createVisitor(is_object($containingValue) ? $containingValue : $value);
-        $metadata = $this->metadataFactory->getMetadataFor($containingValue);
-
-        if (!$metadata instanceof PropertyMetadataContainerInterface) {
-            $valueAsString = is_scalar($containingValue)
-                ? '"'.$containingValue.'"'
-                : 'the value of type '.gettype($containingValue);
-
-            throw new ValidatorException(sprintf('The metadata for '.$valueAsString.' does not support properties.'));
-        }
-
-        // If $containingValue is passed as class name, take $value as root
-        // and start the traversal with an empty property path
-        $propertyPath = is_object($containingValue) ? $property : '';
-
-        foreach ($this->resolveGroups($groups) as $group) {
-            if (!$metadata->hasPropertyMetadata($property)) {
-                continue;
-            }
-
-            foreach ($metadata->getPropertyMetadata($property) as $propMeta) {
-                $propMeta->accept($visitor, $value, $group, $propertyPath);
-            }
-        }
-
-        return $visitor->getViolations();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validateValue($value, $constraints, $groups = null)
-    {
-        $context = new ExecutionContext($this->createVisitor($value), $this->translator, $this->translationDomain);
-
-        $constraints = is_array($constraints) ? $constraints : array($constraints);
-
-        foreach ($constraints as $constraint) {
-            if ($constraint instanceof Valid) {
-                // Why can't the Valid constraint be executed directly?
-                //
-                // It cannot be executed like regular other constraints, because regular
-                // constraints are only executed *if they belong to the validated group*.
-                // The Valid constraint, on the other hand, is always executed and propagates
-                // the group to the cascaded object. The propagated group depends on
-                //
-                //  * Whether a group sequence is currently being executed. Then the default
-                //    group is propagated.
-                //
-                //  * Otherwise the validated group is propagated.
-
-                throw new ValidatorException(
-                    sprintf(
-                        'The constraint %s cannot be validated. Use the method validate() instead.',
-                        get_class($constraint)
-                    )
-                );
-            }
-
-            $context->validateValue($value, $constraint, '', $groups);
-        }
-
-        return $context->getViolations();
-    }
-
-    /**
-     * @param mixed $root
-     *
-     * @return ValidationVisitor
-     */
-    private function createVisitor($root)
-    {
-        return new ValidationVisitor(
-            $root,
-            $this->metadataFactory,
-            $this->validatorFactory,
-            $this->translator,
-            $this->translationDomain,
-            $this->objectInitializers
-        );
-    }
-
-    /**
-     * @param null|string|string[] $groups
-     *
-     * @return string[]
-     */
-    private function resolveGroups($groups)
-    {
-        return $groups ? (array) $groups : array(Constraint::DEFAULT_GROUP);
-    }
-}
diff --git a/vendor/symfony/validator/Validator/ContextualValidatorInterface.php b/vendor/symfony/validator/Validator/ContextualValidatorInterface.php
deleted file mode 100644
index 048d6c7..0000000
--- a/vendor/symfony/validator/Validator/ContextualValidatorInterface.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?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\Validator;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintViolationListInterface;
-
-/**
- * A validator in a specific execution context.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ContextualValidatorInterface
-{
-    /**
-     * Appends the given path to the property path of the context.
-     *
-     * If called multiple times, the path will always be reset to the context's
-     * original path with the given path appended to it.
-     *
-     * @param string $path The path to append
-     *
-     * @return ContextualValidatorInterface This validator
-     */
-    public function atPath($path);
-
-    /**
-     * Validates a value against a constraint or a list of constraints.
-     *
-     * If no constraint is passed, the constraint
-     * {@link \Symfony\Component\Validator\Constraints\Valid} is assumed.
-     *
-     * @param mixed                   $value       The value to validate
-     * @param Constraint|Constraint[] $constraints The constraint(s) to validate
-     *                                             against
-     * @param array|null              $groups      The validation groups to
-     *                                             validate. If none is given,
-     *                                             "Default" is assumed
-     *
-     * @return ContextualValidatorInterface This validator
-     */
-    public function validate($value, $constraints = null, $groups = null);
-
-    /**
-     * Validates a property of an object against the constraints specified
-     * for this property.
-     *
-     * @param object     $object       The object
-     * @param string     $propertyName The name of the validated property
-     * @param array|null $groups       The validation groups to validate. If
-     *                                 none is given, "Default" is assumed
-     *
-     * @return ContextualValidatorInterface This validator
-     */
-    public function validateProperty($object, $propertyName, $groups = null);
-
-    /**
-     * Validates a value against the constraints specified for an object's
-     * property.
-     *
-     * @param object|string $objectOrClass The object or its class name
-     * @param string        $propertyName  The name of the property
-     * @param mixed         $value         The value to validate against the
-     *                                     property's constraints
-     * @param array|null    $groups        The validation groups to validate. If
-     *                                     none is given, "Default" is assumed
-     *
-     * @return ContextualValidatorInterface This validator
-     */
-    public function validatePropertyValue($objectOrClass, $propertyName, $value, $groups = null);
-
-    /**
-     * Returns the violations that have been generated so far in the context
-     * of the validator.
-     *
-     * @return ConstraintViolationListInterface The constraint violations
-     */
-    public function getViolations();
-}
diff --git a/vendor/symfony/validator/Validator/LegacyValidator.php b/vendor/symfony/validator/Validator/LegacyValidator.php
deleted file mode 100644
index e35f4c9..0000000
--- a/vendor/symfony/validator/Validator/LegacyValidator.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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\Validator;
-
-@trigger_error('The '.__NAMESPACE__.'\LegacyValidator class is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-/**
- * A validator that supports both the API of Symfony < 2.5 and Symfony 2.5+.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @see \Symfony\Component\Validator\ValidatorInterface
- * @see \Symfony\Component\Validator\Validator\ValidatorInterface
- * @deprecated since version 2.5, to be removed in 3.0.
- */
-class LegacyValidator extends RecursiveValidator
-{
-}
diff --git a/vendor/symfony/validator/Validator/RecursiveContextualValidator.php b/vendor/symfony/validator/Validator/RecursiveContextualValidator.php
deleted file mode 100644
index e27f6f6..0000000
--- a/vendor/symfony/validator/Validator/RecursiveContextualValidator.php
+++ /dev/null
@@ -1,875 +0,0 @@
-<?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\Validator;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\Constraints\GroupSequence;
-use Symfony\Component\Validator\ConstraintValidatorFactoryInterface;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
-use Symfony\Component\Validator\Exception\NoSuchMetadataException;
-use Symfony\Component\Validator\Exception\RuntimeException;
-use Symfony\Component\Validator\Exception\UnsupportedMetadataException;
-use Symfony\Component\Validator\Exception\ValidatorException;
-use Symfony\Component\Validator\Mapping\CascadingStrategy;
-use Symfony\Component\Validator\Mapping\ClassMetadataInterface;
-use Symfony\Component\Validator\Mapping\GenericMetadata;
-use Symfony\Component\Validator\Mapping\MetadataInterface;
-use Symfony\Component\Validator\Mapping\PropertyMetadataInterface;
-use Symfony\Component\Validator\Mapping\TraversalStrategy;
-use Symfony\Component\Validator\MetadataFactoryInterface;
-use Symfony\Component\Validator\ObjectInitializerInterface;
-use Symfony\Component\Validator\Util\PropertyPath;
-
-/**
- * Recursive implementation of {@link ContextualValidatorInterface}.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class RecursiveContextualValidator implements ContextualValidatorInterface
-{
-    /**
-     * @var ExecutionContextInterface
-     */
-    private $context;
-
-    /**
-     * @var string
-     */
-    private $defaultPropertyPath;
-
-    /**
-     * @var array
-     */
-    private $defaultGroups;
-
-    /**
-     * @var MetadataFactoryInterface
-     */
-    private $metadataFactory;
-
-    /**
-     * @var ConstraintValidatorFactoryInterface
-     */
-    private $validatorFactory;
-
-    /**
-     * @var ObjectInitializerInterface[]
-     */
-    private $objectInitializers;
-
-    /**
-     * Creates a validator for the given context.
-     *
-     * @param ExecutionContextInterface           $context            The execution context
-     * @param MetadataFactoryInterface            $metadataFactory    The factory for
-     *                                                                fetching the metadata
-     *                                                                of validated objects
-     * @param ConstraintValidatorFactoryInterface $validatorFactory   The factory for creating
-     *                                                                constraint validators
-     * @param ObjectInitializerInterface[]        $objectInitializers The object initializers
-     */
-    public function __construct(ExecutionContextInterface $context, MetadataFactoryInterface $metadataFactory, ConstraintValidatorFactoryInterface $validatorFactory, array $objectInitializers = array())
-    {
-        $this->context = $context;
-        $this->defaultPropertyPath = $context->getPropertyPath();
-        $this->defaultGroups = array($context->getGroup() ?: Constraint::DEFAULT_GROUP);
-        $this->metadataFactory = $metadataFactory;
-        $this->validatorFactory = $validatorFactory;
-        $this->objectInitializers = $objectInitializers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function atPath($path)
-    {
-        $this->defaultPropertyPath = $this->context->getPropertyPath($path);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, $constraints = null, $groups = null)
-    {
-        $groups = $groups ? $this->normalizeGroups($groups) : $this->defaultGroups;
-
-        $previousValue = $this->context->getValue();
-        $previousObject = $this->context->getObject();
-        $previousMetadata = $this->context->getMetadata();
-        $previousPath = $this->context->getPropertyPath();
-        $previousGroup = $this->context->getGroup();
-
-        // If explicit constraints are passed, validate the value against
-        // those constraints
-        if (null !== $constraints) {
-            // You can pass a single constraint or an array of constraints
-            // Make sure to deal with an array in the rest of the code
-            if (!is_array($constraints)) {
-                $constraints = array($constraints);
-            }
-
-            $metadata = new GenericMetadata();
-            $metadata->addConstraints($constraints);
-
-            $this->validateGenericNode(
-                $value,
-                null,
-                is_object($value) ? spl_object_hash($value) : null,
-                $metadata,
-                $this->defaultPropertyPath,
-                $groups,
-                null,
-                TraversalStrategy::IMPLICIT,
-                $this->context
-            );
-
-            $this->context->setNode($previousValue, $previousObject, $previousMetadata, $previousPath);
-            $this->context->setGroup($previousGroup);
-
-            return $this;
-        }
-
-        // If an object is passed without explicit constraints, validate that
-        // object against the constraints defined for the object's class
-        if (is_object($value)) {
-            $this->validateObject(
-                $value,
-                $this->defaultPropertyPath,
-                $groups,
-                TraversalStrategy::IMPLICIT,
-                $this->context
-            );
-
-            $this->context->setNode($previousValue, $previousObject, $previousMetadata, $previousPath);
-            $this->context->setGroup($previousGroup);
-
-            return $this;
-        }
-
-        // If an array is passed without explicit constraints, validate each
-        // object in the array
-        if (is_array($value)) {
-            $this->validateEachObjectIn(
-                $value,
-                $this->defaultPropertyPath,
-                $groups,
-                true,
-                $this->context
-            );
-
-            $this->context->setNode($previousValue, $previousObject, $previousMetadata, $previousPath);
-            $this->context->setGroup($previousGroup);
-
-            return $this;
-        }
-
-        throw new RuntimeException(sprintf(
-            'Cannot validate values of type "%s" automatically. Please '.
-            'provide a constraint.',
-            gettype($value)
-        ));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validateProperty($object, $propertyName, $groups = null)
-    {
-        $classMetadata = $this->metadataFactory->getMetadataFor($object);
-
-        if (!$classMetadata instanceof ClassMetadataInterface) {
-            // Cannot be UnsupportedMetadataException because of BC with
-            // Symfony < 2.5
-            throw new ValidatorException(sprintf(
-                'The metadata factory should return instances of '.
-                '"\Symfony\Component\Validator\Mapping\ClassMetadataInterface", '.
-                'got: "%s".',
-                is_object($classMetadata) ? get_class($classMetadata) : gettype($classMetadata)
-            ));
-        }
-
-        $propertyMetadatas = $classMetadata->getPropertyMetadata($propertyName);
-        $groups = $groups ? $this->normalizeGroups($groups) : $this->defaultGroups;
-        $cacheKey = spl_object_hash($object);
-        $propertyPath = PropertyPath::append($this->defaultPropertyPath, $propertyName);
-
-        $previousValue = $this->context->getValue();
-        $previousObject = $this->context->getObject();
-        $previousMetadata = $this->context->getMetadata();
-        $previousPath = $this->context->getPropertyPath();
-        $previousGroup = $this->context->getGroup();
-
-        foreach ($propertyMetadatas as $propertyMetadata) {
-            $propertyValue = $propertyMetadata->getPropertyValue($object);
-
-            $this->validateGenericNode(
-                $propertyValue,
-                $object,
-                $cacheKey.':'.$propertyName,
-                $propertyMetadata,
-                $propertyPath,
-                $groups,
-                null,
-                TraversalStrategy::IMPLICIT,
-                $this->context
-            );
-        }
-
-        $this->context->setNode($previousValue, $previousObject, $previousMetadata, $previousPath);
-        $this->context->setGroup($previousGroup);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validatePropertyValue($objectOrClass, $propertyName, $value, $groups = null)
-    {
-        $classMetadata = $this->metadataFactory->getMetadataFor($objectOrClass);
-
-        if (!$classMetadata instanceof ClassMetadataInterface) {
-            // Cannot be UnsupportedMetadataException because of BC with
-            // Symfony < 2.5
-            throw new ValidatorException(sprintf(
-                'The metadata factory should return instances of '.
-                '"\Symfony\Component\Validator\Mapping\ClassMetadataInterface", '.
-                'got: "%s".',
-                is_object($classMetadata) ? get_class($classMetadata) : gettype($classMetadata)
-            ));
-        }
-
-        $propertyMetadatas = $classMetadata->getPropertyMetadata($propertyName);
-        $groups = $groups ? $this->normalizeGroups($groups) : $this->defaultGroups;
-
-        if (is_object($objectOrClass)) {
-            $object = $objectOrClass;
-            $cacheKey = spl_object_hash($objectOrClass);
-            $propertyPath = PropertyPath::append($this->defaultPropertyPath, $propertyName);
-        } else {
-            // $objectOrClass contains a class name
-            $object = null;
-            $cacheKey = null;
-            $propertyPath = $this->defaultPropertyPath;
-        }
-
-        $previousValue = $this->context->getValue();
-        $previousObject = $this->context->getObject();
-        $previousMetadata = $this->context->getMetadata();
-        $previousPath = $this->context->getPropertyPath();
-        $previousGroup = $this->context->getGroup();
-
-        foreach ($propertyMetadatas as $propertyMetadata) {
-            $this->validateGenericNode(
-                $value,
-                $object,
-                $cacheKey.':'.$propertyName,
-                $propertyMetadata,
-                $propertyPath,
-                $groups,
-                null,
-                TraversalStrategy::IMPLICIT,
-                $this->context
-            );
-        }
-
-        $this->context->setNode($previousValue, $previousObject, $previousMetadata, $previousPath);
-        $this->context->setGroup($previousGroup);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getViolations()
-    {
-        return $this->context->getViolations();
-    }
-
-    /**
-     * Normalizes the given group or list of groups to an array.
-     *
-     * @param mixed $groups The groups to normalize
-     *
-     * @return array A group array
-     */
-    protected function normalizeGroups($groups)
-    {
-        if (is_array($groups)) {
-            return $groups;
-        }
-
-        return array($groups);
-    }
-    /**
-     * Validates an object against the constraints defined for its class.
-     *
-     * If no metadata is available for the class, but the class is an instance
-     * of {@link \Traversable} and the selected traversal strategy allows
-     * traversal, the object will be iterated and each nested object will be
-     * validated instead.
-     *
-     * @param object                    $object            The object to cascade
-     * @param string                    $propertyPath      The current property path
-     * @param string[]                  $groups            The validated groups
-     * @param int                       $traversalStrategy The strategy for traversing the
-     *                                                     cascaded object
-     * @param ExecutionContextInterface $context           The current execution context
-     *
-     * @throws NoSuchMetadataException      If the object has no associated metadata
-     *                                      and does not implement {@link \Traversable}
-     *                                      or if traversal is disabled via the
-     *                                      $traversalStrategy argument
-     * @throws UnsupportedMetadataException If the metadata returned by the
-     *                                      metadata factory does not implement
-     *                                      {@link ClassMetadataInterface}
-     */
-    private function validateObject($object, $propertyPath, array $groups, $traversalStrategy, ExecutionContextInterface $context)
-    {
-        try {
-            $classMetadata = $this->metadataFactory->getMetadataFor($object);
-
-            if (!$classMetadata instanceof ClassMetadataInterface) {
-                throw new UnsupportedMetadataException(sprintf(
-                    'The metadata factory should return instances of '.
-                    '"Symfony\Component\Validator\Mapping\ClassMetadataInterface", '.
-                    'got: "%s".',
-                    is_object($classMetadata) ? get_class($classMetadata) : gettype($classMetadata)
-                ));
-            }
-
-            $this->validateClassNode(
-                $object,
-                spl_object_hash($object),
-                $classMetadata,
-                $propertyPath,
-                $groups,
-                null,
-                $traversalStrategy,
-                $context
-            );
-        } catch (NoSuchMetadataException $e) {
-            // Rethrow if not Traversable
-            if (!$object instanceof \Traversable) {
-                throw $e;
-            }
-
-            // Rethrow unless IMPLICIT or TRAVERSE
-            if (!($traversalStrategy & (TraversalStrategy::IMPLICIT | TraversalStrategy::TRAVERSE))) {
-                throw $e;
-            }
-
-            $this->validateEachObjectIn(
-                $object,
-                $propertyPath,
-                $groups,
-                $traversalStrategy & TraversalStrategy::STOP_RECURSION,
-                $context
-            );
-        }
-    }
-
-    /**
-     * Validates each object in a collection against the constraints defined
-     * for their classes.
-     *
-     * If the parameter $recursive is set to true, nested {@link \Traversable}
-     * objects are iterated as well. Nested arrays are always iterated,
-     * regardless of the value of $recursive.
-     *
-     * @param array|\Traversable        $collection    The collection
-     * @param string                    $propertyPath  The current property path
-     * @param string[]                  $groups        The validated groups
-     * @param bool                      $stopRecursion Whether to disable
-     *                                                 recursive iteration. For
-     *                                                 backwards compatibility
-     *                                                 with Symfony < 2.5.
-     * @param ExecutionContextInterface $context       The current execution context
-     *
-     * @see ClassNode
-     * @see CollectionNode
-     */
-    private function validateEachObjectIn($collection, $propertyPath, array $groups, $stopRecursion, ExecutionContextInterface $context)
-    {
-        if ($stopRecursion) {
-            $traversalStrategy = TraversalStrategy::NONE;
-        } else {
-            $traversalStrategy = TraversalStrategy::IMPLICIT;
-        }
-
-        foreach ($collection as $key => $value) {
-            if (is_array($value)) {
-                // Arrays are always cascaded, independent of the specified
-                // traversal strategy
-                // (BC with Symfony < 2.5)
-                $this->validateEachObjectIn(
-                    $value,
-                    $propertyPath.'['.$key.']',
-                    $groups,
-                    $stopRecursion,
-                    $context
-                );
-
-                continue;
-            }
-
-            // Scalar and null values in the collection are ignored
-            // (BC with Symfony < 2.5)
-            if (is_object($value)) {
-                $this->validateObject(
-                    $value,
-                    $propertyPath.'['.$key.']',
-                    $groups,
-                    $traversalStrategy,
-                    $context
-                );
-            }
-        }
-    }
-
-    /**
-     * Validates a class node.
-     *
-     * A class node is a combination of an object with a {@link ClassMetadataInterface}
-     * instance. Each class node (conceptionally) has zero or more succeeding
-     * property nodes:
-     *
-     *     (Article:class node)
-     *                \
-     *        ($title:property node)
-     *
-     * This method validates the passed objects against all constraints defined
-     * at class level. It furthermore triggers the validation of each of the
-     * class' properties against the constraints for that property.
-     *
-     * If the selected traversal strategy allows traversal, the object is
-     * iterated and each nested object is validated against its own constraints.
-     * The object is not traversed if traversal is disabled in the class
-     * metadata.
-     *
-     * If the passed groups contain the group "Default", the validator will
-     * check whether the "Default" group has been replaced by a group sequence
-     * in the class metadata. If this is the case, the group sequence is
-     * validated instead.
-     *
-     * @param object                    $object            The validated object
-     * @param string                    $cacheKey          The key for caching
-     *                                                     the validated object
-     * @param ClassMetadataInterface    $metadata          The class metadata of
-     *                                                     the object
-     * @param string                    $propertyPath      The property path leading
-     *                                                     to the object
-     * @param string[]                  $groups            The groups in which the
-     *                                                     object should be validated
-     * @param string[]|null             $cascadedGroups    The groups in which
-     *                                                     cascaded objects should
-     *                                                     be validated
-     * @param int                       $traversalStrategy The strategy used for
-     *                                                     traversing the object
-     * @param ExecutionContextInterface $context           The current execution context
-     *
-     * @throws UnsupportedMetadataException  If a property metadata does not
-     *                                       implement {@link PropertyMetadataInterface}
-     * @throws ConstraintDefinitionException If traversal was enabled but the
-     *                                       object does not implement
-     *                                       {@link \Traversable}
-     *
-     * @see TraversalStrategy
-     */
-    private function validateClassNode($object, $cacheKey, ClassMetadataInterface $metadata = null, $propertyPath, array $groups, $cascadedGroups, $traversalStrategy, ExecutionContextInterface $context)
-    {
-        $context->setNode($object, $object, $metadata, $propertyPath);
-
-        if (!$context->isObjectInitialized($cacheKey)) {
-            foreach ($this->objectInitializers as $initializer) {
-                $initializer->initialize($object);
-            }
-
-            $context->markObjectAsInitialized($cacheKey);
-        }
-
-        foreach ($groups as $key => $group) {
-            // If the "Default" group is replaced by a group sequence, remember
-            // to cascade the "Default" group when traversing the group
-            // sequence
-            $defaultOverridden = false;
-
-            // Use the object hash for group sequences
-            $groupHash = is_object($group) ? spl_object_hash($group) : $group;
-
-            if ($context->isGroupValidated($cacheKey, $groupHash)) {
-                // Skip this group when validating the properties and when
-                // traversing the object
-                unset($groups[$key]);
-
-                continue;
-            }
-
-            $context->markGroupAsValidated($cacheKey, $groupHash);
-
-            // Replace the "Default" group by the group sequence defined
-            // for the class, if applicable.
-            // This is done after checking the cache, so that
-            // spl_object_hash() isn't called for this sequence and
-            // "Default" is used instead in the cache. This is useful
-            // if the getters below return different group sequences in
-            // every call.
-            if (Constraint::DEFAULT_GROUP === $group) {
-                if ($metadata->hasGroupSequence()) {
-                    // The group sequence is statically defined for the class
-                    $group = $metadata->getGroupSequence();
-                    $defaultOverridden = true;
-                } elseif ($metadata->isGroupSequenceProvider()) {
-                    // The group sequence is dynamically obtained from the validated
-                    // object
-                    /* @var \Symfony\Component\Validator\GroupSequenceProviderInterface $object */
-                    $group = $object->getGroupSequence();
-                    $defaultOverridden = true;
-
-                    if (!$group instanceof GroupSequence) {
-                        $group = new GroupSequence($group);
-                    }
-                }
-            }
-
-            // If the groups (=[<G1,G2>,G3,G4]) contain a group sequence
-            // (=<G1,G2>), then call validateClassNode() with each entry of the
-            // group sequence and abort if necessary (G1, G2)
-            if ($group instanceof GroupSequence) {
-                $this->stepThroughGroupSequence(
-                     $object,
-                     $object,
-                     $cacheKey,
-                     $metadata,
-                     $propertyPath,
-                     $traversalStrategy,
-                     $group,
-                     $defaultOverridden ? Constraint::DEFAULT_GROUP : null,
-                     $context
-                );
-
-                // Skip the group sequence when validating properties, because
-                // stepThroughGroupSequence() already validates the properties
-                unset($groups[$key]);
-
-                continue;
-            }
-
-            $this->validateInGroup($object, $cacheKey, $metadata, $group, $context);
-        }
-
-        // If no more groups should be validated for the property nodes,
-        // we can safely quit
-        if (0 === count($groups)) {
-            return;
-        }
-
-        // Validate all properties against their constraints
-        foreach ($metadata->getConstrainedProperties() as $propertyName) {
-            // If constraints are defined both on the getter of a property as
-            // well as on the property itself, then getPropertyMetadata()
-            // returns two metadata objects, not just one
-            foreach ($metadata->getPropertyMetadata($propertyName) as $propertyMetadata) {
-                if (!$propertyMetadata instanceof PropertyMetadataInterface) {
-                    throw new UnsupportedMetadataException(sprintf(
-                        'The property metadata instances should implement '.
-                        '"Symfony\Component\Validator\Mapping\PropertyMetadataInterface", '.
-                        'got: "%s".',
-                        is_object($propertyMetadata) ? get_class($propertyMetadata) : gettype($propertyMetadata)
-                    ));
-                }
-
-                $propertyValue = $propertyMetadata->getPropertyValue($object);
-
-                $this->validateGenericNode(
-                    $propertyValue,
-                    $object,
-                    $cacheKey.':'.$propertyName,
-                    $propertyMetadata,
-                    PropertyPath::append($propertyPath, $propertyName),
-                    $groups,
-                    $cascadedGroups,
-                    TraversalStrategy::IMPLICIT,
-                    $context
-                );
-            }
-        }
-
-        // If no specific traversal strategy was requested when this method
-        // was called, use the traversal strategy of the class' metadata
-        if ($traversalStrategy & TraversalStrategy::IMPLICIT) {
-            // Keep the STOP_RECURSION flag, if it was set
-            $traversalStrategy = $metadata->getTraversalStrategy()
-                | ($traversalStrategy & TraversalStrategy::STOP_RECURSION);
-        }
-
-        // Traverse only if IMPLICIT or TRAVERSE
-        if (!($traversalStrategy & (TraversalStrategy::IMPLICIT | TraversalStrategy::TRAVERSE))) {
-            return;
-        }
-
-        // If IMPLICIT, stop unless we deal with a Traversable
-        if ($traversalStrategy & TraversalStrategy::IMPLICIT && !$object instanceof \Traversable) {
-            return;
-        }
-
-        // If TRAVERSE, fail if we have no Traversable
-        if (!$object instanceof \Traversable) {
-            // Must throw a ConstraintDefinitionException for backwards
-            // compatibility reasons with Symfony < 2.5
-            throw new ConstraintDefinitionException(sprintf(
-                'Traversal was enabled for "%s", but this class '.
-                'does not implement "\Traversable".',
-                get_class($object)
-            ));
-        }
-
-        $this->validateEachObjectIn(
-            $object,
-            $propertyPath,
-            $groups,
-            $traversalStrategy & TraversalStrategy::STOP_RECURSION,
-            $context
-        );
-    }
-
-    /**
-     * Validates a node that is not a class node.
-     *
-     * Currently, two such node types exist:
-     *
-     *  - property nodes, which consist of the value of an object's
-     *    property together with a {@link PropertyMetadataInterface} instance
-     *  - generic nodes, which consist of a value and some arbitrary
-     *    constraints defined in a {@link MetadataInterface} container
-     *
-     * In both cases, the value is validated against all constraints defined
-     * in the passed metadata object. Then, if the value is an instance of
-     * {@link \Traversable} and the selected traversal strategy permits it,
-     * the value is traversed and each nested object validated against its own
-     * constraints. Arrays are always traversed.
-     *
-     * @param mixed                     $value             The validated value
-     * @param object|null               $object            The current object
-     * @param string                    $cacheKey          The key for caching
-     *                                                     the validated value
-     * @param MetadataInterface         $metadata          The metadata of the
-     *                                                     value
-     * @param string                    $propertyPath      The property path leading
-     *                                                     to the value
-     * @param string[]                  $groups            The groups in which the
-     *                                                     value should be validated
-     * @param string[]|null             $cascadedGroups    The groups in which
-     *                                                     cascaded objects should
-     *                                                     be validated
-     * @param int                       $traversalStrategy The strategy used for
-     *                                                     traversing the value
-     * @param ExecutionContextInterface $context           The current execution context
-     *
-     * @see TraversalStrategy
-     */
-    private function validateGenericNode($value, $object, $cacheKey, MetadataInterface $metadata = null, $propertyPath, array $groups, $cascadedGroups, $traversalStrategy, ExecutionContextInterface $context)
-    {
-        $context->setNode($value, $object, $metadata, $propertyPath);
-
-        foreach ($groups as $key => $group) {
-            if ($group instanceof GroupSequence) {
-                $this->stepThroughGroupSequence(
-                     $value,
-                     $object,
-                     $cacheKey,
-                     $metadata,
-                     $propertyPath,
-                     $traversalStrategy,
-                     $group,
-                     null,
-                     $context
-                );
-
-                // Skip the group sequence when cascading, as the cascading
-                // logic is already done in stepThroughGroupSequence()
-                unset($groups[$key]);
-
-                continue;
-            }
-
-            $this->validateInGroup($value, $cacheKey, $metadata, $group, $context);
-        }
-
-        if (0 === count($groups)) {
-            return;
-        }
-
-        if (null === $value) {
-            return;
-        }
-
-        $cascadingStrategy = $metadata->getCascadingStrategy();
-
-        // Quit unless we have an array or a cascaded object
-        if (!is_array($value) && !($cascadingStrategy & CascadingStrategy::CASCADE)) {
-            return;
-        }
-
-        // If no specific traversal strategy was requested when this method
-        // was called, use the traversal strategy of the node's metadata
-        if ($traversalStrategy & TraversalStrategy::IMPLICIT) {
-            // Keep the STOP_RECURSION flag, if it was set
-            $traversalStrategy = $metadata->getTraversalStrategy()
-                | ($traversalStrategy & TraversalStrategy::STOP_RECURSION);
-        }
-
-        // The $cascadedGroups property is set, if the "Default" group is
-        // overridden by a group sequence
-        // See validateClassNode()
-        $cascadedGroups = count($cascadedGroups) > 0
-            ? $cascadedGroups
-            : $groups;
-
-        if (is_array($value)) {
-            // Arrays are always traversed, independent of the specified
-            // traversal strategy
-            // (BC with Symfony < 2.5)
-            $this->validateEachObjectIn(
-                $value,
-                $propertyPath,
-                $cascadedGroups,
-                $traversalStrategy & TraversalStrategy::STOP_RECURSION,
-                $context
-            );
-
-            return;
-        }
-
-        // If the value is a scalar, pass it anyway, because we want
-        // a NoSuchMetadataException to be thrown in that case
-        // (BC with Symfony < 2.5)
-        $this->validateObject(
-            $value,
-            $propertyPath,
-            $cascadedGroups,
-            $traversalStrategy,
-            $context
-        );
-
-        // Currently, the traversal strategy can only be TRAVERSE for a
-        // generic node if the cascading strategy is CASCADE. Thus, traversable
-        // objects will always be handled within validateObject() and there's
-        // nothing more to do here.
-
-        // see GenericMetadata::addConstraint()
-    }
-
-    /**
-     * Sequentially validates a node's value in each group of a group sequence.
-     *
-     * If any of the constraints generates a violation, subsequent groups in the
-     * group sequence are skipped.
-     *
-     * @param mixed                     $value             The validated value
-     * @param object|null               $object            The current object
-     * @param string                    $cacheKey          The key for caching
-     *                                                     the validated value
-     * @param MetadataInterface         $metadata          The metadata of the
-     *                                                     value
-     * @param string                    $propertyPath      The property path leading
-     *                                                     to the value
-     * @param int                       $traversalStrategy The strategy used for
-     *                                                     traversing the value
-     * @param GroupSequence             $groupSequence     The group sequence
-     * @param string[]|null             $cascadedGroup     The group that should
-     *                                                     be passed to cascaded
-     *                                                     objects instead of
-     *                                                     the group sequence
-     * @param ExecutionContextInterface $context           The execution context
-     */
-    private function stepThroughGroupSequence($value, $object, $cacheKey, MetadataInterface $metadata = null, $propertyPath, $traversalStrategy, GroupSequence $groupSequence, $cascadedGroup, ExecutionContextInterface $context)
-    {
-        $violationCount = count($context->getViolations());
-        $cascadedGroups = $cascadedGroup ? array($cascadedGroup) : null;
-
-        foreach ($groupSequence->groups as $groupInSequence) {
-            $groups = array($groupInSequence);
-
-            if ($metadata instanceof ClassMetadataInterface) {
-                $this->validateClassNode(
-                     $value,
-                     $cacheKey,
-                     $metadata,
-                     $propertyPath,
-                     $groups,
-                     $cascadedGroups,
-                     $traversalStrategy,
-                     $context
-                );
-            } else {
-                $this->validateGenericNode(
-                     $value,
-                     $object,
-                     $cacheKey,
-                     $metadata,
-                     $propertyPath,
-                     $groups,
-                     $cascadedGroups,
-                     $traversalStrategy,
-                     $context
-                );
-            }
-
-            // Abort sequence validation if a violation was generated
-            if (count($context->getViolations()) > $violationCount) {
-                break;
-            }
-        }
-    }
-
-    /**
-     * Validates a node's value against all constraints in the given group.
-     *
-     * @param mixed                     $value    The validated value
-     * @param string                    $cacheKey The key for caching the
-     *                                            validated value
-     * @param MetadataInterface         $metadata The metadata of the value
-     * @param string                    $group    The group to validate
-     * @param ExecutionContextInterface $context  The execution context
-     */
-    private function validateInGroup($value, $cacheKey, MetadataInterface $metadata, $group, ExecutionContextInterface $context)
-    {
-        $context->setGroup($group);
-
-        foreach ($metadata->findConstraints($group) as $constraint) {
-            // Prevent duplicate validation of constraints, in the case
-            // that constraints belong to multiple validated groups
-            if (null !== $cacheKey) {
-                $constraintHash = spl_object_hash($constraint);
-
-                if ($context->isConstraintValidated($cacheKey, $constraintHash)) {
-                    continue;
-                }
-
-                $context->markConstraintAsValidated($cacheKey, $constraintHash);
-            }
-
-            $context->setConstraint($constraint);
-
-            $validator = $this->validatorFactory->getInstance($constraint);
-            $validator->initialize($context);
-            $validator->validate($value, $constraint);
-        }
-    }
-}
diff --git a/vendor/symfony/validator/Validator/RecursiveValidator.php b/vendor/symfony/validator/Validator/RecursiveValidator.php
deleted file mode 100644
index e4dc0fb..0000000
--- a/vendor/symfony/validator/Validator/RecursiveValidator.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?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\Validator;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\Constraints\GroupSequence;
-use Symfony\Component\Validator\Constraints\Valid;
-use Symfony\Component\Validator\ConstraintValidatorFactoryInterface;
-use Symfony\Component\Validator\Context\ExecutionContextFactoryInterface;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\MetadataFactoryInterface;
-use Symfony\Component\Validator\ObjectInitializerInterface;
-use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface;
-
-/**
- * Recursive implementation of {@link ValidatorInterface}.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class RecursiveValidator implements ValidatorInterface, LegacyValidatorInterface
-{
-    /**
-     * @var ExecutionContextFactoryInterface
-     */
-    protected $contextFactory;
-
-    /**
-     * @var MetadataFactoryInterface
-     */
-    protected $metadataFactory;
-
-    /**
-     * @var ConstraintValidatorFactoryInterface
-     */
-    protected $validatorFactory;
-
-    /**
-     * @var ObjectInitializerInterface[]
-     */
-    protected $objectInitializers;
-
-    /**
-     * Creates a new validator.
-     *
-     * @param ExecutionContextFactoryInterface    $contextFactory     The factory for
-     *                                                                creating new contexts
-     * @param MetadataFactoryInterface            $metadataFactory    The factory for
-     *                                                                fetching the metadata
-     *                                                                of validated objects
-     * @param ConstraintValidatorFactoryInterface $validatorFactory   The factory for creating
-     *                                                                constraint validators
-     * @param ObjectInitializerInterface[]        $objectInitializers The object initializers
-     */
-    public function __construct(ExecutionContextFactoryInterface $contextFactory, MetadataFactoryInterface $metadataFactory, ConstraintValidatorFactoryInterface $validatorFactory, array $objectInitializers = array())
-    {
-        $this->contextFactory = $contextFactory;
-        $this->metadataFactory = $metadataFactory;
-        $this->validatorFactory = $validatorFactory;
-        $this->objectInitializers = $objectInitializers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function startContext($root = null)
-    {
-        return new RecursiveContextualValidator(
-            $this->contextFactory->createContext($this, $root),
-            $this->metadataFactory,
-            $this->validatorFactory,
-            $this->objectInitializers
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function inContext(ExecutionContextInterface $context)
-    {
-        return new RecursiveContextualValidator(
-            $context,
-            $this->metadataFactory,
-            $this->validatorFactory,
-            $this->objectInitializers
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFor($object)
-    {
-        return $this->metadataFactory->getMetadataFor($object);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasMetadataFor($object)
-    {
-        return $this->metadataFactory->hasMetadataFor($object);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validate($value, $groups = null, $traverse = false, $deep = false)
-    {
-        $numArgs = func_num_args();
-
-        // Use new signature if constraints are given in the second argument
-        if (self::testConstraints($groups) && ($numArgs < 3 || 3 === $numArgs && self::testGroups($traverse))) {
-            // Rename to avoid total confusion ;)
-            $constraints = $groups;
-            $groups = $traverse;
-        } else {
-            @trigger_error('The Symfony\Component\Validator\ValidatorInterface::validate method is deprecated in version 2.5 and will be removed in version 3.0. Use the Symfony\Component\Validator\Validator\ValidatorInterface::validate method instead.', E_USER_DEPRECATED);
-
-            $constraints = new Valid(array('traverse' => $traverse, 'deep' => $deep));
-        }
-
-        return $this->startContext($value)
-            ->validate($value, $constraints, $groups)
-            ->getViolations();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validateProperty($object, $propertyName, $groups = null)
-    {
-        return $this->startContext($object)
-            ->validateProperty($object, $propertyName, $groups)
-            ->getViolations();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validatePropertyValue($objectOrClass, $propertyName, $value, $groups = null)
-    {
-        // If a class name is passed, take $value as root
-        return $this->startContext(is_object($objectOrClass) ? $objectOrClass : $value)
-            ->validatePropertyValue($objectOrClass, $propertyName, $value, $groups)
-            ->getViolations();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function validateValue($value, $constraints, $groups = null)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated in version 2.5 and will be removed in version 3.0. Use the Symfony\Component\Validator\Validator\ValidatorInterface::validate method instead.', E_USER_DEPRECATED);
-
-        return $this->validate($value, $constraints, $groups);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadataFactory()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated in version 2.5 and will be removed in version 3.0. Use the Symfony\Component\Validator\Validator\ValidatorInterface::getMetadataFor or Symfony\Component\Validator\Validator\ValidatorInterface::hasMetadataFor method instead.', E_USER_DEPRECATED);
-
-        return $this->metadataFactory;
-    }
-
-    private static function testConstraints($constraints)
-    {
-        return null === $constraints || $constraints instanceof Constraint || (is_array($constraints) && (0 === count($constraints) || current($constraints) instanceof Constraint));
-    }
-
-    private static function testGroups($groups)
-    {
-        return null === $groups || is_string($groups) || $groups instanceof GroupSequence || (is_array($groups) && (0 === count($groups) || is_string(current($groups)) || current($groups) instanceof GroupSequence));
-    }
-}
diff --git a/vendor/symfony/validator/Validator/ValidatorInterface.php b/vendor/symfony/validator/Validator/ValidatorInterface.php
deleted file mode 100644
index 3aafa34..0000000
--- a/vendor/symfony/validator/Validator/ValidatorInterface.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?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\Validator;
-
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintViolationListInterface;
-use Symfony\Component\Validator\Context\ExecutionContextInterface;
-use Symfony\Component\Validator\Mapping\Factory\MetadataFactoryInterface;
-
-/**
- * Validates PHP values against constraints.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ValidatorInterface extends MetadataFactoryInterface
-{
-    /**
-     * Validates a value against a constraint or a list of constraints.
-     *
-     * If no constraint is passed, the constraint
-     * {@link \Symfony\Component\Validator\Constraints\Valid} is assumed.
-     *
-     * @param mixed                   $value       The value to validate
-     * @param Constraint|Constraint[] $constraints The constraint(s) to validate
-     *                                             against
-     * @param array|null              $groups      The validation groups to
-     *                                             validate. If none is given,
-     *                                             "Default" is assumed
-     *
-     * @return ConstraintViolationListInterface A list of constraint violations.
-     *                                          If the list is empty, validation
-     *                                          succeeded
-     */
-    public function validate($value, $constraints = null, $groups = null);
-
-    /**
-     * Validates a property of an object against the constraints specified
-     * for this property.
-     *
-     * @param object     $object       The object
-     * @param string     $propertyName The name of the validated property
-     * @param array|null $groups       The validation groups to validate. If
-     *                                 none is given, "Default" is assumed
-     *
-     * @return ConstraintViolationListInterface A list of constraint violations.
-     *                                          If the list is empty, validation
-     *                                          succeeded
-     */
-    public function validateProperty($object, $propertyName, $groups = null);
-
-    /**
-     * Validates a value against the constraints specified for an object's
-     * property.
-     *
-     * @param object|string $objectOrClass The object or its class name
-     * @param string        $propertyName  The name of the property
-     * @param mixed         $value         The value to validate against the
-     *                                     property's constraints
-     * @param array|null    $groups        The validation groups to validate. If
-     *                                     none is given, "Default" is assumed
-     *
-     * @return ConstraintViolationListInterface A list of constraint violations.
-     *                                          If the list is empty, validation
-     *                                          succeeded
-     */
-    public function validatePropertyValue($objectOrClass, $propertyName, $value, $groups = null);
-
-    /**
-     * Starts a new validation context and returns a validator for that context.
-     *
-     * The returned validator collects all violations generated within its
-     * context. You can access these violations with the
-     * {@link ContextualValidatorInterface::getViolations()} method.
-     *
-     * @return ContextualValidatorInterface The validator for the new context
-     */
-    public function startContext();
-
-    /**
-     * Returns a validator in the given execution context.
-     *
-     * The returned validator adds all generated violations to the given
-     * context.
-     *
-     * @param ExecutionContextInterface $context The execution context
-     *
-     * @return ContextualValidatorInterface The validator for that context
-     */
-    public function inContext(ExecutionContextInterface $context);
-}
diff --git a/vendor/symfony/validator/ValidatorBuilder.php b/vendor/symfony/validator/ValidatorBuilder.php
deleted file mode 100644
index 4a69976..0000000
--- a/vendor/symfony/validator/ValidatorBuilder.php
+++ /dev/null
@@ -1,387 +0,0 @@
-<?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;
-
-use Doctrine\Common\Annotations\AnnotationReader;
-use Doctrine\Common\Annotations\CachedReader;
-use Doctrine\Common\Annotations\Reader;
-use Doctrine\Common\Cache\ArrayCache;
-use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
-use Symfony\Component\Translation\IdentityTranslator;
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Component\Validator\Context\ExecutionContextFactory;
-use Symfony\Component\Validator\Exception\InvalidArgumentException;
-use Symfony\Component\Validator\Exception\ValidatorException;
-use Symfony\Component\Validator\Mapping\Cache\CacheInterface;
-use Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory;
-use Symfony\Component\Validator\Mapping\Loader\AnnotationLoader;
-use Symfony\Component\Validator\Mapping\Loader\LoaderChain;
-use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader;
-use Symfony\Component\Validator\Mapping\Loader\XmlFileLoader;
-use Symfony\Component\Validator\Mapping\Loader\XmlFilesLoader;
-use Symfony\Component\Validator\Mapping\Loader\YamlFileLoader;
-use Symfony\Component\Validator\Mapping\Loader\YamlFilesLoader;
-use Symfony\Component\Validator\Validator\RecursiveValidator;
-
-/**
- * The default implementation of {@link ValidatorBuilderInterface}.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ValidatorBuilder implements ValidatorBuilderInterface
-{
-    /**
-     * @var array
-     */
-    private $initializers = array();
-
-    /**
-     * @var array
-     */
-    private $xmlMappings = array();
-
-    /**
-     * @var array
-     */
-    private $yamlMappings = array();
-
-    /**
-     * @var array
-     */
-    private $methodMappings = array();
-
-    /**
-     * @var Reader|null
-     */
-    private $annotationReader;
-
-    /**
-     * @var MetadataFactoryInterface|null
-     */
-    private $metadataFactory;
-
-    /**
-     * @var ConstraintValidatorFactoryInterface|null
-     */
-    private $validatorFactory;
-
-    /**
-     * @var CacheInterface|null
-     */
-    private $metadataCache;
-
-    /**
-     * @var TranslatorInterface|null
-     */
-    private $translator;
-
-    /**
-     * @var null|string
-     */
-    private $translationDomain;
-
-    /**
-     * @var PropertyAccessorInterface|null
-     */
-    private $propertyAccessor;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addObjectInitializer(ObjectInitializerInterface $initializer)
-    {
-        $this->initializers[] = $initializer;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addObjectInitializers(array $initializers)
-    {
-        $this->initializers = array_merge($this->initializers, $initializers);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addXmlMapping($path)
-    {
-        if (null !== $this->metadataFactory) {
-            throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
-        }
-
-        $this->xmlMappings[] = $path;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addXmlMappings(array $paths)
-    {
-        if (null !== $this->metadataFactory) {
-            throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
-        }
-
-        $this->xmlMappings = array_merge($this->xmlMappings, $paths);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addYamlMapping($path)
-    {
-        if (null !== $this->metadataFactory) {
-            throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
-        }
-
-        $this->yamlMappings[] = $path;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addYamlMappings(array $paths)
-    {
-        if (null !== $this->metadataFactory) {
-            throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
-        }
-
-        $this->yamlMappings = array_merge($this->yamlMappings, $paths);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addMethodMapping($methodName)
-    {
-        if (null !== $this->metadataFactory) {
-            throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
-        }
-
-        $this->methodMappings[] = $methodName;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addMethodMappings(array $methodNames)
-    {
-        if (null !== $this->metadataFactory) {
-            throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
-        }
-
-        $this->methodMappings = array_merge($this->methodMappings, $methodNames);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function enableAnnotationMapping(Reader $annotationReader = null)
-    {
-        if (null !== $this->metadataFactory) {
-            throw new ValidatorException('You cannot enable annotation mapping after setting a custom metadata factory. Configure your metadata factory instead.');
-        }
-
-        if (null === $annotationReader) {
-            if (!class_exists('Doctrine\Common\Annotations\AnnotationReader') || !class_exists('Doctrine\Common\Cache\ArrayCache')) {
-                throw new \RuntimeException('Enabling annotation based constraint mapping requires the packages doctrine/annotations and doctrine/cache to be installed.');
-            }
-
-            $annotationReader = new CachedReader(new AnnotationReader(), new ArrayCache());
-        }
-
-        $this->annotationReader = $annotationReader;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function disableAnnotationMapping()
-    {
-        $this->annotationReader = null;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setMetadataFactory(MetadataFactoryInterface $metadataFactory)
-    {
-        if (count($this->xmlMappings) > 0 || count($this->yamlMappings) > 0 || count($this->methodMappings) > 0 || null !== $this->annotationReader) {
-            throw new ValidatorException('You cannot set a custom metadata factory after adding custom mappings. You should do either of both.');
-        }
-
-        $this->metadataFactory = $metadataFactory;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setMetadataCache(CacheInterface $cache)
-    {
-        if (null !== $this->metadataFactory) {
-            throw new ValidatorException('You cannot set a custom metadata cache after setting a custom metadata factory. Configure your metadata factory instead.');
-        }
-
-        $this->metadataCache = $cache;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setConstraintValidatorFactory(ConstraintValidatorFactoryInterface $validatorFactory)
-    {
-        if (null !== $this->propertyAccessor) {
-            throw new ValidatorException('You cannot set a validator factory after setting a custom property accessor. Remove the call to setPropertyAccessor() if you want to call setConstraintValidatorFactory().');
-        }
-
-        $this->validatorFactory = $validatorFactory;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setTranslator(TranslatorInterface $translator)
-    {
-        $this->translator = $translator;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setTranslationDomain($translationDomain)
-    {
-        $this->translationDomain = $translationDomain;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             The validator will function without a property accessor.
-     */
-    public function setPropertyAccessor(PropertyAccessorInterface $propertyAccessor)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. The validator will function without a property accessor.', E_USER_DEPRECATED);
-
-        if (null !== $this->validatorFactory) {
-            throw new ValidatorException('You cannot set a property accessor after setting a custom validator factory. Configure your validator factory instead.');
-        }
-
-        $this->propertyAccessor = $propertyAccessor;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since version 2.7, to be removed in 3.0.
-     */
-    public function setApiVersion($apiVersion)
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated in version 2.7 and will be removed in version 3.0.', E_USER_DEPRECATED);
-
-        if (!in_array($apiVersion, array(Validation::API_VERSION_2_4, Validation::API_VERSION_2_5, Validation::API_VERSION_2_5_BC))) {
-            throw new InvalidArgumentException(sprintf('The requested API version is invalid: "%s"', $apiVersion));
-        }
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getValidator()
-    {
-        $metadataFactory = $this->metadataFactory;
-
-        if (!$metadataFactory) {
-            $loaders = array();
-
-            if (count($this->xmlMappings) > 1) {
-                $loaders[] = new XmlFilesLoader($this->xmlMappings);
-            } elseif (1 === count($this->xmlMappings)) {
-                $loaders[] = new XmlFileLoader($this->xmlMappings[0]);
-            }
-
-            if (count($this->yamlMappings) > 1) {
-                $loaders[] = new YamlFilesLoader($this->yamlMappings);
-            } elseif (1 === count($this->yamlMappings)) {
-                $loaders[] = new YamlFileLoader($this->yamlMappings[0]);
-            }
-
-            foreach ($this->methodMappings as $methodName) {
-                $loaders[] = new StaticMethodLoader($methodName);
-            }
-
-            if ($this->annotationReader) {
-                $loaders[] = new AnnotationLoader($this->annotationReader);
-            }
-
-            $loader = null;
-
-            if (count($loaders) > 1) {
-                $loader = new LoaderChain($loaders);
-            } elseif (1 === count($loaders)) {
-                $loader = $loaders[0];
-            }
-
-            $metadataFactory = new LazyLoadingMetadataFactory($loader, $this->metadataCache);
-        }
-
-        $validatorFactory = $this->validatorFactory ?: new ConstraintValidatorFactory($this->propertyAccessor);
-        $translator = $this->translator;
-
-        if (null === $translator) {
-            $translator = new IdentityTranslator();
-            // Force the locale to be 'en' when no translator is provided rather than relying on the Intl default locale
-            // This avoids depending on Intl or the stub implementation being available. It also ensures that Symfony
-            // validation messages are pluralized properly even when the default locale gets changed because they are in
-            // English.
-            $translator->setLocale('en');
-        }
-
-        $contextFactory = new ExecutionContextFactory($translator, $this->translationDomain);
-
-        return new RecursiveValidator($contextFactory, $metadataFactory, $validatorFactory, $this->initializers);
-    }
-}
diff --git a/vendor/symfony/validator/ValidatorBuilderInterface.php b/vendor/symfony/validator/ValidatorBuilderInterface.php
deleted file mode 100644
index e15fb7a..0000000
--- a/vendor/symfony/validator/ValidatorBuilderInterface.php
+++ /dev/null
@@ -1,193 +0,0 @@
-<?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;
-
-use Doctrine\Common\Annotations\Reader;
-use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Component\Validator\Mapping\Cache\CacheInterface;
-
-/**
- * A configurable builder for ValidatorInterface objects.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ValidatorBuilderInterface
-{
-    /**
-     * Adds an object initializer to the validator.
-     *
-     * @param ObjectInitializerInterface $initializer The initializer
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function addObjectInitializer(ObjectInitializerInterface $initializer);
-
-    /**
-     * Adds a list of object initializers to the validator.
-     *
-     * @param array $initializers The initializer
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function addObjectInitializers(array $initializers);
-
-    /**
-     * Adds an XML constraint mapping file to the validator.
-     *
-     * @param string $path The path to the mapping file
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function addXmlMapping($path);
-
-    /**
-     * Adds a list of XML constraint mapping files to the validator.
-     *
-     * @param array $paths The paths to the mapping files
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function addXmlMappings(array $paths);
-
-    /**
-     * Adds a YAML constraint mapping file to the validator.
-     *
-     * @param string $path The path to the mapping file
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function addYamlMapping($path);
-
-    /**
-     * Adds a list of YAML constraint mappings file to the validator.
-     *
-     * @param array $paths The paths to the mapping files
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function addYamlMappings(array $paths);
-
-    /**
-     * Enables constraint mapping using the given static method.
-     *
-     * @param string $methodName The name of the method
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function addMethodMapping($methodName);
-
-    /**
-     * Enables constraint mapping using the given static methods.
-     *
-     * @param array $methodNames The names of the methods
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function addMethodMappings(array $methodNames);
-
-    /**
-     * Enables annotation based constraint mapping.
-     *
-     * @param Reader $annotationReader The annotation reader to be used
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function enableAnnotationMapping(Reader $annotationReader = null);
-
-    /**
-     * Disables annotation based constraint mapping.
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function disableAnnotationMapping();
-
-    /**
-     * Sets the class metadata factory used by the validator.
-     *
-     * @param MetadataFactoryInterface $metadataFactory The metadata factory
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function setMetadataFactory(MetadataFactoryInterface $metadataFactory);
-
-    /**
-     * Sets the cache for caching class metadata.
-     *
-     * @param CacheInterface $cache The cache instance
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function setMetadataCache(CacheInterface $cache);
-
-    /**
-     * Sets the constraint validator factory used by the validator.
-     *
-     * @param ConstraintValidatorFactoryInterface $validatorFactory The validator factory
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function setConstraintValidatorFactory(ConstraintValidatorFactoryInterface $validatorFactory);
-
-    /**
-     * Sets the translator used for translating violation messages.
-     *
-     * @param TranslatorInterface $translator The translator instance
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function setTranslator(TranslatorInterface $translator);
-
-    /**
-     * Sets the default translation domain of violation messages.
-     *
-     * The same message can have different translations in different domains.
-     * Pass the domain that is used for violation messages by default to this
-     * method.
-     *
-     * @param string $translationDomain The translation domain of the violation messages
-     *
-     * @return ValidatorBuilderInterface The builder object
-     */
-    public function setTranslationDomain($translationDomain);
-
-    /**
-     * Sets the property accessor for resolving property paths.
-     *
-     * @param PropertyAccessorInterface $propertyAccessor The property accessor
-     *
-     * @return ValidatorBuilderInterface The builder object
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     */
-    public function setPropertyAccessor(PropertyAccessorInterface $propertyAccessor);
-
-    /**
-     * Sets the API version that the returned validator should support.
-     *
-     * @param int $apiVersion The required API version
-     *
-     * @return ValidatorBuilderInterface The builder object
-     *
-     * @see Validation::API_VERSION_2_5
-     * @see Validation::API_VERSION_2_5_BC
-     * @deprecated since version 2.7, to be removed in 3.0.
-     */
-    public function setApiVersion($apiVersion);
-
-    /**
-     * Builds and returns a new validator object.
-     *
-     * @return ValidatorInterface The built validator.
-     */
-    public function getValidator();
-}
diff --git a/vendor/symfony/validator/ValidatorInterface.php b/vendor/symfony/validator/ValidatorInterface.php
deleted file mode 100644
index cffc138..0000000
--- a/vendor/symfony/validator/ValidatorInterface.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?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;
-
-/**
- * Validates values and graphs of objects and arrays.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- *             Use {@link \Symfony\Component\Validator\Validator\ValidatorInterface} instead.
- */
-interface ValidatorInterface
-{
-    /**
-     * Validates a value.
-     *
-     * The accepted values depend on the {@link MetadataFactoryInterface}
-     * implementation.
-     *
-     * The signature changed with Symfony 2.5 (see
-     * {@link Validator\ValidatorInterface::validate()}. This signature will be
-     * disabled in Symfony 3.0.
-     *
-     * @param mixed      $value    The value to validate
-     * @param array|null $groups   The validation groups to validate.
-     * @param bool       $traverse Whether to traverse the value if it is traversable.
-     * @param bool       $deep     Whether to traverse nested traversable values recursively.
-     *
-     * @return ConstraintViolationListInterface A list of constraint violations. If the
-     *                                          list is empty, validation succeeded.
-     */
-    public function validate($value, $groups = null, $traverse = false, $deep = false);
-
-    /**
-     * Validates a property of a value against its current value.
-     *
-     * The accepted values depend on the {@link MetadataFactoryInterface}
-     * implementation.
-     *
-     * @param mixed      $containingValue The value containing the property.
-     * @param string     $property        The name of the property to validate.
-     * @param array|null $groups          The validation groups to validate.
-     *
-     * @return ConstraintViolationListInterface A list of constraint violations. If the
-     *                                          list is empty, validation succeeded.
-     */
-    public function validateProperty($containingValue, $property, $groups = null);
-
-    /**
-     * Validate a property of a value against a potential value.
-     *
-     * The accepted values depend on the {@link MetadataFactoryInterface}
-     * implementation.
-     *
-     * @param mixed      $containingValue The value containing the property.
-     * @param string     $property        The name of the property to validate
-     * @param string     $value           The value to validate against the
-     *                                    constraints of the property.
-     * @param array|null $groups          The validation groups to validate.
-     *
-     * @return ConstraintViolationListInterface A list of constraint violations. If the
-     *                                          list is empty, validation succeeded.
-     */
-    public function validatePropertyValue($containingValue, $property, $value, $groups = null);
-
-    /**
-     * Validates a value against a constraint or a list of constraints.
-     *
-     * @param mixed                   $value       The value to validate.
-     * @param Constraint|Constraint[] $constraints The constraint(s) to validate against.
-     * @param array|null              $groups      The validation groups to validate.
-     *
-     * @return ConstraintViolationListInterface A list of constraint violations. If the
-     *                                          list is empty, validation succeeded.
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Renamed to {@link Validator\ValidatorInterface::validate()}
-     *             in Symfony 2.5.
-     */
-    public function validateValue($value, $constraints, $groups = null);
-
-    /**
-     * Returns the factory for metadata instances.
-     *
-     * @return MetadataFactoryInterface The metadata factory.
-     *
-     * @deprecated since version 2.5, to be removed in 3.0.
-     *             Use {@link Validator\ValidatorInterface::getMetadataFor()} or
-     *             {@link Validator\ValidatorInterface::hasMetadataFor()}
-     *             instead.
-     */
-    public function getMetadataFactory();
-}
diff --git a/vendor/symfony/validator/Violation/ConstraintViolationBuilder.php b/vendor/symfony/validator/Violation/ConstraintViolationBuilder.php
deleted file mode 100644
index d7d3877..0000000
--- a/vendor/symfony/validator/Violation/ConstraintViolationBuilder.php
+++ /dev/null
@@ -1,226 +0,0 @@
-<?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\Violation;
-
-use Symfony\Component\Translation\TranslatorInterface;
-use Symfony\Component\Validator\Constraint;
-use Symfony\Component\Validator\ConstraintViolation;
-use Symfony\Component\Validator\ConstraintViolationList;
-use Symfony\Component\Validator\Util\PropertyPath;
-
-/**
- * Default implementation of {@link ConstraintViolationBuilderInterface}.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @internal You should not instantiate or use this class. Code against
- *           {@link ConstraintViolationBuilderInterface} instead.
- */
-class ConstraintViolationBuilder implements ConstraintViolationBuilderInterface
-{
-    /**
-     * @var ConstraintViolationList
-     */
-    private $violations;
-
-    /**
-     * @var string
-     */
-    private $message;
-
-    /**
-     * @var array
-     */
-    private $parameters;
-
-    /**
-     * @var mixed
-     */
-    private $root;
-
-    /**
-     * @var mixed
-     */
-    private $invalidValue;
-
-    /**
-     * @var string
-     */
-    private $propertyPath;
-
-    /**
-     * @var TranslatorInterface
-     */
-    private $translator;
-
-    /**
-     * @var string|null
-     */
-    private $translationDomain;
-
-    /**
-     * @var int|null
-     */
-    private $plural;
-
-    /**
-     * @var Constraint
-     */
-    private $constraint;
-
-    /**
-     * @var mixed
-     */
-    private $code;
-
-    /**
-     * @var mixed
-     */
-    private $cause;
-
-    public function __construct(ConstraintViolationList $violations, Constraint $constraint, $message, array $parameters, $root, $propertyPath, $invalidValue, TranslatorInterface $translator, $translationDomain = null)
-    {
-        $this->violations = $violations;
-        $this->message = $message;
-        $this->parameters = $parameters;
-        $this->root = $root;
-        $this->propertyPath = $propertyPath;
-        $this->invalidValue = $invalidValue;
-        $this->translator = $translator;
-        $this->translationDomain = $translationDomain;
-        $this->constraint = $constraint;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function atPath($path)
-    {
-        $this->propertyPath = PropertyPath::append($this->propertyPath, $path);
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setParameter($key, $value)
-    {
-        $this->parameters[$key] = $value;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setParameters(array $parameters)
-    {
-        $this->parameters = $parameters;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setTranslationDomain($translationDomain)
-    {
-        $this->translationDomain = $translationDomain;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setInvalidValue($invalidValue)
-    {
-        $this->invalidValue = $invalidValue;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setPlural($number)
-    {
-        $this->plural = $number;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setCode($code)
-    {
-        $this->code = $code;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setCause($cause)
-    {
-        $this->cause = $cause;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addViolation()
-    {
-        if (null === $this->plural) {
-            $translatedMessage = $this->translator->trans(
-                $this->message,
-                $this->parameters,
-                $this->translationDomain
-            );
-        } else {
-            try {
-                $translatedMessage = $this->translator->transChoice(
-                    $this->message,
-                    $this->plural,
-                    $this->parameters,
-                    $this->translationDomain#
-                );
-            } catch (\InvalidArgumentException $e) {
-                $translatedMessage = $this->translator->trans(
-                    $this->message,
-                    $this->parameters,
-                    $this->translationDomain
-                );
-            }
-        }
-
-        $this->violations->add(new ConstraintViolation(
-            $translatedMessage,
-            $this->message,
-            $this->parameters,
-            $this->root,
-            $this->propertyPath,
-            $this->invalidValue,
-            $this->plural,
-            $this->code,
-            $this->constraint,
-            $this->cause
-        ));
-    }
-}
diff --git a/vendor/symfony/validator/Violation/ConstraintViolationBuilderInterface.php b/vendor/symfony/validator/Violation/ConstraintViolationBuilderInterface.php
deleted file mode 100644
index b7cc2ec..0000000
--- a/vendor/symfony/validator/Violation/ConstraintViolationBuilderInterface.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?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\Violation;
-
-/**
- * Builds {@link \Symfony\Component\Validator\ConstraintViolationInterface}
- * objects.
- *
- * Use the various methods on this interface to configure the built violation.
- * Finally, call {@link addViolation()} to add the violation to the current
- * execution context.
- *
- * @since  2.5
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-interface ConstraintViolationBuilderInterface
-{
-    /**
-     * Stores the property path at which the violation should be generated.
-     *
-     * The passed path will be appended to the current property path of the
-     * execution context.
-     *
-     * @param string $path The property path
-     *
-     * @return ConstraintViolationBuilderInterface This builder
-     */
-    public function atPath($path);
-
-    /**
-     * Sets a parameter to be inserted into the violation message.
-     *
-     * @param string $key   The name of the parameter
-     * @param string $value The value to be inserted in the parameter's place
-     *
-     * @return ConstraintViolationBuilderInterface This builder
-     */
-    public function setParameter($key, $value);
-
-    /**
-     * Sets all parameters to be inserted into the violation message.
-     *
-     * @param array $parameters An array with the parameter names as keys and
-     *                          the values to be inserted in their place as
-     *                          values
-     *
-     * @return ConstraintViolationBuilderInterface This builder
-     */
-    public function setParameters(array $parameters);
-
-    /**
-     * Sets the translation domain which should be used for translating the
-     * violation message.
-     *
-     * @param string $translationDomain The translation domain
-     *
-     * @return ConstraintViolationBuilderInterface This builder
-     *
-     * @see \Symfony\Component\Translation\TranslatorInterface
-     */
-    public function setTranslationDomain($translationDomain);
-
-    /**
-     * Sets the invalid value that caused this violation.
-     *
-     * @param mixed $invalidValue The invalid value
-     *
-     * @return ConstraintViolationBuilderInterface This builder
-     */
-    public function setInvalidValue($invalidValue);
-
-    /**
-     * Sets the number which determines how the plural form of the violation
-     * message is chosen when it is translated.
-     *
-     * @param int $number The number for determining the plural form
-     *
-     * @return ConstraintViolationBuilderInterface This builder
-     *
-     * @see \Symfony\Component\Translation\TranslatorInterface::transChoice()
-     */
-    public function setPlural($number);
-
-    /**
-     * Sets the violation code.
-     *
-     * @param int $code The violation code
-     *
-     * @return ConstraintViolationBuilderInterface This builder
-     */
-    public function setCode($code);
-
-    /**
-     * Sets the cause of the violation.
-     *
-     * @param mixed $cause The cause of the violation
-     *
-     * @return ConstraintViolationBuilderInterface This builder
-     */
-    public function setCause($cause);
-
-    /**
-     * Adds the violation to the current execution context.
-     */
-    public function addViolation();
-}
diff --git a/vendor/symfony/validator/Violation/LegacyConstraintViolationBuilder.php b/vendor/symfony/validator/Violation/LegacyConstraintViolationBuilder.php
deleted file mode 100644
index 7410b0a..0000000
--- a/vendor/symfony/validator/Violation/LegacyConstraintViolationBuilder.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?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\Violation;
-
-@trigger_error('The '.__NAMESPACE__.'\LegacyConstraintViolationBuilder class is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
-
-use Symfony\Component\Validator\ExecutionContextInterface;
-
-/**
- * Backwards-compatible implementation of {@link ConstraintViolationBuilderInterface}.
- *
- * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @internal You should not instantiate or use this class. Code against
- *           {@link ConstraintViolationBuilderInterface} instead.
- *
- * @deprecated since version 2.5.5, to be removed in 3.0.
- */
-class LegacyConstraintViolationBuilder implements ConstraintViolationBuilderInterface
-{
-    /**
-     * @var ExecutionContextInterface
-     */
-    private $context;
-
-    /**
-     * @var string
-     */
-    private $message;
-
-    /**
-     * @var array
-     */
-    private $parameters;
-
-    /**
-     * @var mixed
-     */
-    private $invalidValue;
-
-    /**
-     * @var string
-     */
-    private $propertyPath;
-
-    /**
-     * @var int|null
-     */
-    private $plural;
-
-    /**
-     * @var mixed
-     */
-    private $code;
-
-    public function __construct(ExecutionContextInterface $context, $message, array $parameters)
-    {
-        $this->context = $context;
-        $this->message = $message;
-        $this->parameters = $parameters;
-        $this->invalidValue = $context->getValue();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function atPath($path)
-    {
-        $this->propertyPath = $path;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setParameter($key, $value)
-    {
-        $this->parameters[$key] = $value;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setParameters(array $parameters)
-    {
-        $this->parameters = $parameters;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setTranslationDomain($translationDomain)
-    {
-        // can't be set in the old API
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setInvalidValue($invalidValue)
-    {
-        $this->invalidValue = $invalidValue;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setPlural($number)
-    {
-        $this->plural = $number;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setCode($code)
-    {
-        $this->code = $code;
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setCause($cause)
-    {
-        // do nothing - we can't save the cause through the old API
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addViolation()
-    {
-        if ($this->propertyPath) {
-            $this->context->addViolationAt($this->propertyPath, $this->message, $this->parameters, $this->invalidValue, $this->plural, $this->code);
-
-            return;
-        }
-
-        $this->context->addViolation($this->message, $this->parameters, $this->invalidValue, $this->plural, $this->code);
-    }
-}
diff --git a/vendor/symfony/validator/composer.json b/vendor/symfony/validator/composer.json
deleted file mode 100644
index c0a898a..0000000
--- a/vendor/symfony/validator/composer.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-    "name": "symfony/validator",
-    "type": "library",
-    "description": "Symfony Validator Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9",
-        "symfony/translation": "~2.4"
-    },
-    "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",
-        "doctrine/annotations": "~1.0",
-        "doctrine/cache": "~1.0",
-        "egulias/email-validator": "~1.2,>=1.2.1"
-    },
-    "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/http-foundation": "",
-        "symfony/intl": "",
-        "symfony/yaml": "",
-        "symfony/config": "",
-        "egulias/email-validator": "Strict (RFC compliant) email validation",
-        "symfony/property-access": "For using the 2.4 Validator API",
-        "symfony/expression-language": "For using the 2.4 Expression validator"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Validator\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/validator/phpunit.xml.dist b/vendor/symfony/validator/phpunit.xml.dist
deleted file mode 100644
index 1bf4391..0000000
--- a/vendor/symfony/validator/phpunit.xml.dist
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Validator Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./vendor</directory>
-                <directory>./Tests</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/yaml/.gitignore b/vendor/symfony/yaml/.gitignore
deleted file mode 100644
index c49a5d8..0000000
--- a/vendor/symfony/yaml/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/yaml/CHANGELOG.md b/vendor/symfony/yaml/CHANGELOG.md
deleted file mode 100644
index 096cf65..0000000
--- a/vendor/symfony/yaml/CHANGELOG.md
+++ /dev/null
@@ -1,8 +0,0 @@
-CHANGELOG
-=========
-
-2.1.0
------
-
- * Yaml::parse() does not evaluate loaded files as PHP files by default
-   anymore (call Yaml::enablePhpParsing() to get back the old behavior)
diff --git a/vendor/symfony/yaml/Dumper.php b/vendor/symfony/yaml/Dumper.php
deleted file mode 100644
index 39cdcfc..0000000
--- a/vendor/symfony/yaml/Dumper.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?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\Yaml;
-
-/**
- * Dumper dumps PHP variables to YAML strings.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Dumper
-{
-    /**
-     * The amount of spaces to use for indentation of nested nodes.
-     *
-     * @var int
-     */
-    protected $indentation = 4;
-
-    /**
-     * Sets the indentation.
-     *
-     * @param int $num The amount of spaces to use for indentation of nested nodes.
-     */
-    public function setIndentation($num)
-    {
-        $this->indentation = (int) $num;
-    }
-
-    /**
-     * Dumps a PHP value to YAML.
-     *
-     * @param mixed $input                  The PHP value
-     * @param int   $inline                 The level where you switch to inline YAML
-     * @param int   $indent                 The level of indentation (used internally)
-     * @param bool  $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
-     * @param bool  $objectSupport          true if object support is enabled, false otherwise
-     *
-     * @return string The YAML representation of the PHP value
-     */
-    public function dump($input, $inline = 0, $indent = 0, $exceptionOnInvalidType = false, $objectSupport = false)
-    {
-        $output = '';
-        $prefix = $indent ? str_repeat(' ', $indent) : '';
-
-        if ($inline <= 0 || !is_array($input) || empty($input)) {
-            $output .= $prefix.Inline::dump($input, $exceptionOnInvalidType, $objectSupport);
-        } else {
-            $isAHash = array_keys($input) !== range(0, count($input) - 1);
-
-            foreach ($input as $key => $value) {
-                $willBeInlined = $inline - 1 <= 0 || !is_array($value) || empty($value);
-
-                $output .= sprintf('%s%s%s%s',
-                    $prefix,
-                    $isAHash ? Inline::dump($key, $exceptionOnInvalidType, $objectSupport).':' : '-',
-                    $willBeInlined ? ' ' : "\n",
-                    $this->dump($value, $inline - 1, $willBeInlined ? 0 : $indent + $this->indentation, $exceptionOnInvalidType, $objectSupport)
-                ).($willBeInlined ? "\n" : '');
-            }
-        }
-
-        return $output;
-    }
-}
diff --git a/vendor/symfony/yaml/Escaper.php b/vendor/symfony/yaml/Escaper.php
deleted file mode 100644
index ac325a2..0000000
--- a/vendor/symfony/yaml/Escaper.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?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\Yaml;
-
-/**
- * Escaper encapsulates escaping rules for single and double-quoted
- * YAML strings.
- *
- * @author Matthew Lewinski <matthew@lewinski.org>
- */
-class Escaper
-{
-    // Characters that would cause a dumped string to require double quoting.
-    const REGEX_CHARACTER_TO_ESCAPE = "[\\x00-\\x1f]|\xc2\x85|\xc2\xa0|\xe2\x80\xa8|\xe2\x80\xa9";
-
-    // Mapping arrays for escaping a double quoted string. The backslash is
-    // first to ensure proper escaping because str_replace operates iteratively
-    // on the input arrays. This ordering of the characters avoids the use of strtr,
-    // which performs more slowly.
-    private static $escapees = array('\\', '\\\\', '\\"', '"',
-                                     "\x00",  "\x01",  "\x02",  "\x03",  "\x04",  "\x05",  "\x06",  "\x07",
-                                     "\x08",  "\x09",  "\x0a",  "\x0b",  "\x0c",  "\x0d",  "\x0e",  "\x0f",
-                                     "\x10",  "\x11",  "\x12",  "\x13",  "\x14",  "\x15",  "\x16",  "\x17",
-                                     "\x18",  "\x19",  "\x1a",  "\x1b",  "\x1c",  "\x1d",  "\x1e",  "\x1f",
-                                     "\xc2\x85", "\xc2\xa0", "\xe2\x80\xa8", "\xe2\x80\xa9",);
-    private static $escaped = array('\\\\', '\\"', '\\\\', '\\"',
-                                     '\\0',   '\\x01', '\\x02', '\\x03', '\\x04', '\\x05', '\\x06', '\\a',
-                                     '\\b',   '\\t',   '\\n',   '\\v',   '\\f',   '\\r',   '\\x0e', '\\x0f',
-                                     '\\x10', '\\x11', '\\x12', '\\x13', '\\x14', '\\x15', '\\x16', '\\x17',
-                                     '\\x18', '\\x19', '\\x1a', '\\e',   '\\x1c', '\\x1d', '\\x1e', '\\x1f',
-                                     '\\N', '\\_', '\\L', '\\P',);
-
-    /**
-     * Determines if a PHP value would require double quoting in YAML.
-     *
-     * @param string $value A PHP value
-     *
-     * @return bool True if the value would require double quotes.
-     */
-    public static function requiresDoubleQuoting($value)
-    {
-        return preg_match('/'.self::REGEX_CHARACTER_TO_ESCAPE.'/u', $value);
-    }
-
-    /**
-     * Escapes and surrounds a PHP value with double quotes.
-     *
-     * @param string $value A PHP value
-     *
-     * @return string The quoted, escaped string
-     */
-    public static function escapeWithDoubleQuotes($value)
-    {
-        return sprintf('"%s"', str_replace(self::$escapees, self::$escaped, $value));
-    }
-
-    /**
-     * Determines if a PHP value would require single quoting in YAML.
-     *
-     * @param string $value A PHP value
-     *
-     * @return bool True if the value would require single quotes.
-     */
-    public static function requiresSingleQuoting($value)
-    {
-        // Determines if a PHP value is entirely composed of a value that would
-        // require single quoting in YAML.
-        if (in_array(strtolower($value), array('null', '~', 'true', 'false', 'y', 'n', 'yes', 'no', 'on', 'off'))) {
-            return true;
-        }
-
-        // Determines if the PHP value contains any single characters that would
-        // cause it to require single quoting in YAML.
-        return preg_match('/[ \s \' " \: \{ \} \[ \] , & \* \# \?] | \A[ \- ? | < > = ! % @ ` ]/x', $value);
-    }
-
-    /**
-     * Escapes and surrounds a PHP value with single quotes.
-     *
-     * @param string $value A PHP value
-     *
-     * @return string The quoted, escaped string
-     */
-    public static function escapeWithSingleQuotes($value)
-    {
-        return sprintf("'%s'", str_replace('\'', '\'\'', $value));
-    }
-}
diff --git a/vendor/symfony/yaml/Exception/DumpException.php b/vendor/symfony/yaml/Exception/DumpException.php
deleted file mode 100644
index cce972f..0000000
--- a/vendor/symfony/yaml/Exception/DumpException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Yaml\Exception;
-
-/**
- * Exception class thrown when an error occurs during dumping.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class DumpException extends RuntimeException
-{
-}
diff --git a/vendor/symfony/yaml/Exception/ExceptionInterface.php b/vendor/symfony/yaml/Exception/ExceptionInterface.php
deleted file mode 100644
index ad850ee..0000000
--- a/vendor/symfony/yaml/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Yaml\Exception;
-
-/**
- * Exception interface for all exceptions thrown by the component.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/symfony/yaml/Exception/ParseException.php b/vendor/symfony/yaml/Exception/ParseException.php
deleted file mode 100644
index b74eb91..0000000
--- a/vendor/symfony/yaml/Exception/ParseException.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?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\Yaml\Exception;
-
-/**
- * Exception class thrown when an error occurs during parsing.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ParseException extends RuntimeException
-{
-    private $parsedFile;
-    private $parsedLine;
-    private $snippet;
-    private $rawMessage;
-
-    /**
-     * Constructor.
-     *
-     * @param string     $message    The error message
-     * @param int        $parsedLine The line where the error occurred
-     * @param int        $snippet    The snippet of code near the problem
-     * @param string     $parsedFile The file name where the error occurred
-     * @param \Exception $previous   The previous exception
-     */
-    public function __construct($message, $parsedLine = -1, $snippet = null, $parsedFile = null, \Exception $previous = null)
-    {
-        $this->parsedFile = $parsedFile;
-        $this->parsedLine = $parsedLine;
-        $this->snippet = $snippet;
-        $this->rawMessage = $message;
-
-        $this->updateRepr();
-
-        parent::__construct($this->message, 0, $previous);
-    }
-
-    /**
-     * Gets the snippet of code near the error.
-     *
-     * @return string The snippet of code
-     */
-    public function getSnippet()
-    {
-        return $this->snippet;
-    }
-
-    /**
-     * Sets the snippet of code near the error.
-     *
-     * @param string $snippet The code snippet
-     */
-    public function setSnippet($snippet)
-    {
-        $this->snippet = $snippet;
-
-        $this->updateRepr();
-    }
-
-    /**
-     * Gets the filename where the error occurred.
-     *
-     * This method returns null if a string is parsed.
-     *
-     * @return string The filename
-     */
-    public function getParsedFile()
-    {
-        return $this->parsedFile;
-    }
-
-    /**
-     * Sets the filename where the error occurred.
-     *
-     * @param string $parsedFile The filename
-     */
-    public function setParsedFile($parsedFile)
-    {
-        $this->parsedFile = $parsedFile;
-
-        $this->updateRepr();
-    }
-
-    /**
-     * Gets the line where the error occurred.
-     *
-     * @return int The file line
-     */
-    public function getParsedLine()
-    {
-        return $this->parsedLine;
-    }
-
-    /**
-     * Sets the line where the error occurred.
-     *
-     * @param int $parsedLine The file line
-     */
-    public function setParsedLine($parsedLine)
-    {
-        $this->parsedLine = $parsedLine;
-
-        $this->updateRepr();
-    }
-
-    private function updateRepr()
-    {
-        $this->message = $this->rawMessage;
-
-        $dot = false;
-        if ('.' === substr($this->message, -1)) {
-            $this->message = substr($this->message, 0, -1);
-            $dot = true;
-        }
-
-        if (null !== $this->parsedFile) {
-            if (PHP_VERSION_ID >= 50400) {
-                $jsonOptions = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
-            } else {
-                $jsonOptions = 0;
-            }
-            $this->message .= sprintf(' in %s', json_encode($this->parsedFile, $jsonOptions));
-        }
-
-        if ($this->parsedLine >= 0) {
-            $this->message .= sprintf(' at line %d', $this->parsedLine);
-        }
-
-        if ($this->snippet) {
-            $this->message .= sprintf(' (near "%s")', $this->snippet);
-        }
-
-        if ($dot) {
-            $this->message .= '.';
-        }
-    }
-}
diff --git a/vendor/symfony/yaml/Exception/RuntimeException.php b/vendor/symfony/yaml/Exception/RuntimeException.php
deleted file mode 100644
index 3f36b73..0000000
--- a/vendor/symfony/yaml/Exception/RuntimeException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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\Yaml\Exception;
-
-/**
- * Exception class thrown when an error occurs during parsing.
- *
- * @author Romain Neutron <imprec@gmail.com>
- */
-class RuntimeException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/symfony/yaml/Inline.php b/vendor/symfony/yaml/Inline.php
deleted file mode 100644
index a5b53bd..0000000
--- a/vendor/symfony/yaml/Inline.php
+++ /dev/null
@@ -1,546 +0,0 @@
-<?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\Yaml;
-
-use Symfony\Component\Yaml\Exception\ParseException;
-use Symfony\Component\Yaml\Exception\DumpException;
-
-/**
- * Inline implements a YAML parser/dumper for the YAML inline syntax.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Inline
-{
-    const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\']*(?:\'\'[^\']*)*)\')';
-
-    private static $exceptionOnInvalidType = false;
-    private static $objectSupport = false;
-    private static $objectForMap = false;
-
-    /**
-     * Converts a YAML string to a PHP array.
-     *
-     * @param string $value                  A YAML string
-     * @param bool   $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), 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 array  $references             Mapping of variable names to values
-     *
-     * @return array A PHP array representing the YAML string
-     *
-     * @throws ParseException
-     */
-    public static function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false, $references = array())
-    {
-        self::$exceptionOnInvalidType = $exceptionOnInvalidType;
-        self::$objectSupport = $objectSupport;
-        self::$objectForMap = $objectForMap;
-
-        $value = trim($value);
-
-        if ('' === $value) {
-            return '';
-        }
-
-        if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
-            $mbEncoding = mb_internal_encoding();
-            mb_internal_encoding('ASCII');
-        }
-
-        $i = 0;
-        switch ($value[0]) {
-            case '[':
-                $result = self::parseSequence($value, $i, $references);
-                ++$i;
-                break;
-            case '{':
-                $result = self::parseMapping($value, $i, $references);
-                ++$i;
-                break;
-            default:
-                $result = self::parseScalar($value, null, array('"', "'"), $i, true, $references);
-        }
-
-        // some comments are allowed at the end
-        if (preg_replace('/\s+#.*$/A', '', substr($value, $i))) {
-            throw new ParseException(sprintf('Unexpected characters near "%s".', substr($value, $i)));
-        }
-
-        if (isset($mbEncoding)) {
-            mb_internal_encoding($mbEncoding);
-        }
-
-        return $result;
-    }
-
-    /**
-     * Dumps a given PHP variable to a YAML string.
-     *
-     * @param mixed $value                  The PHP variable to convert
-     * @param bool  $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
-     * @param bool  $objectSupport          true if object support is enabled, false otherwise
-     *
-     * @return string The YAML string representing the PHP array
-     *
-     * @throws DumpException When trying to dump PHP resource
-     */
-    public static function dump($value, $exceptionOnInvalidType = false, $objectSupport = false)
-    {
-        switch (true) {
-            case is_resource($value):
-                if ($exceptionOnInvalidType) {
-                    throw new DumpException(sprintf('Unable to dump PHP resources in a YAML file ("%s").', get_resource_type($value)));
-                }
-
-                return 'null';
-            case is_object($value):
-                if ($objectSupport) {
-                    return '!!php/object:'.serialize($value);
-                }
-
-                if ($exceptionOnInvalidType) {
-                    throw new DumpException('Object support when dumping a YAML file has been disabled.');
-                }
-
-                return 'null';
-            case is_array($value):
-                return self::dumpArray($value, $exceptionOnInvalidType, $objectSupport);
-            case null === $value:
-                return 'null';
-            case true === $value:
-                return 'true';
-            case false === $value:
-                return 'false';
-            case ctype_digit($value):
-                return is_string($value) ? "'$value'" : (int) $value;
-            case is_numeric($value):
-                $locale = setlocale(LC_NUMERIC, 0);
-                if (false !== $locale) {
-                    setlocale(LC_NUMERIC, 'C');
-                }
-                if (is_float($value)) {
-                    $repr = (string) $value;
-                    if (is_infinite($value)) {
-                        $repr = str_ireplace('INF', '.Inf', $repr);
-                    } elseif (floor($value) == $value && $repr == $value) {
-                        // Preserve float data type since storing a whole number will result in integer value.
-                        $repr = '!!float '.$repr;
-                    }
-                } else {
-                    $repr = is_string($value) ? "'$value'" : (string) $value;
-                }
-                if (false !== $locale) {
-                    setlocale(LC_NUMERIC, $locale);
-                }
-
-                return $repr;
-            case '' == $value:
-                return "''";
-            case Escaper::requiresDoubleQuoting($value):
-                return Escaper::escapeWithDoubleQuotes($value);
-            case Escaper::requiresSingleQuoting($value):
-            case preg_match(self::getHexRegex(), $value):
-            case preg_match(self::getTimestampRegex(), $value):
-                return Escaper::escapeWithSingleQuotes($value);
-            default:
-                return $value;
-        }
-    }
-
-    /**
-     * Dumps a PHP array to a YAML string.
-     *
-     * @param array $value                  The PHP array to dump
-     * @param bool  $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
-     * @param bool  $objectSupport          true if object support is enabled, false otherwise
-     *
-     * @return string The YAML string representing the PHP array
-     */
-    private static function dumpArray($value, $exceptionOnInvalidType, $objectSupport)
-    {
-        // array
-        $keys = array_keys($value);
-        $keysCount = count($keys);
-        if ((1 === $keysCount && '0' == $keys[0])
-            || ($keysCount > 1 && array_reduce($keys, function ($v, $w) { return (int) $v + $w; }, 0) === $keysCount * ($keysCount - 1) / 2)
-        ) {
-            $output = array();
-            foreach ($value as $val) {
-                $output[] = self::dump($val, $exceptionOnInvalidType, $objectSupport);
-            }
-
-            return sprintf('[%s]', implode(', ', $output));
-        }
-
-        // mapping
-        $output = array();
-        foreach ($value as $key => $val) {
-            $output[] = sprintf('%s: %s', self::dump($key, $exceptionOnInvalidType, $objectSupport), self::dump($val, $exceptionOnInvalidType, $objectSupport));
-        }
-
-        return sprintf('{ %s }', implode(', ', $output));
-    }
-
-    /**
-     * Parses a scalar to a YAML string.
-     *
-     * @param string $scalar
-     * @param string $delimiters
-     * @param array  $stringDelimiters
-     * @param int    &$i
-     * @param bool   $evaluate
-     * @param array  $references
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException When malformed inline YAML string is parsed
-     */
-    public static function parseScalar($scalar, $delimiters = null, $stringDelimiters = array('"', "'"), &$i = 0, $evaluate = true, $references = array())
-    {
-        if (in_array($scalar[$i], $stringDelimiters)) {
-            // quoted scalar
-            $output = self::parseQuotedScalar($scalar, $i);
-
-            if (null !== $delimiters) {
-                $tmp = ltrim(substr($scalar, $i), ' ');
-                if (!in_array($tmp[0], $delimiters)) {
-                    throw new ParseException(sprintf('Unexpected characters (%s).', substr($scalar, $i)));
-                }
-            }
-        } else {
-            // "normal" string
-            if (!$delimiters) {
-                $output = substr($scalar, $i);
-                $i += strlen($output);
-
-                // remove comments
-                if (preg_match('/[ \t]+#/', $output, $match, PREG_OFFSET_CAPTURE)) {
-                    $output = substr($output, 0, $match[0][1]);
-                }
-            } elseif (preg_match('/^(.+?)('.implode('|', $delimiters).')/', substr($scalar, $i), $match)) {
-                $output = $match[1];
-                $i += strlen($output);
-            } else {
-                throw new ParseException(sprintf('Malformed inline YAML string (%s).', $scalar));
-            }
-
-            if ($evaluate) {
-                $output = self::evaluateScalar($output, $references);
-            }
-        }
-
-        return $output;
-    }
-
-    /**
-     * Parses a quoted scalar to YAML.
-     *
-     * @param string $scalar
-     * @param int    &$i
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException When malformed inline YAML string is parsed
-     */
-    private static function parseQuotedScalar($scalar, &$i)
-    {
-        if (!preg_match('/'.self::REGEX_QUOTED_STRING.'/Au', substr($scalar, $i), $match)) {
-            throw new ParseException(sprintf('Malformed inline YAML string (%s).', substr($scalar, $i)));
-        }
-
-        $output = substr($match[0], 1, strlen($match[0]) - 2);
-
-        $unescaper = new Unescaper();
-        if ('"' == $scalar[$i]) {
-            $output = $unescaper->unescapeDoubleQuotedString($output);
-        } else {
-            $output = $unescaper->unescapeSingleQuotedString($output);
-        }
-
-        $i += strlen($match[0]);
-
-        return $output;
-    }
-
-    /**
-     * Parses a sequence to a YAML string.
-     *
-     * @param string $sequence
-     * @param int    &$i
-     * @param array  $references
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException When malformed inline YAML string is parsed
-     */
-    private static function parseSequence($sequence, &$i = 0, $references = array())
-    {
-        $output = array();
-        $len = strlen($sequence);
-        ++$i;
-
-        // [foo, bar, ...]
-        while ($i < $len) {
-            switch ($sequence[$i]) {
-                case '[':
-                    // nested sequence
-                    $output[] = self::parseSequence($sequence, $i, $references);
-                    break;
-                case '{':
-                    // nested mapping
-                    $output[] = self::parseMapping($sequence, $i, $references);
-                    break;
-                case ']':
-                    return $output;
-                case ',':
-                case ' ':
-                    break;
-                default:
-                    $isQuoted = in_array($sequence[$i], array('"', "'"));
-                    $value = self::parseScalar($sequence, array(',', ']'), array('"', "'"), $i, true, $references);
-
-                    // the value can be an array if a reference has been resolved to an array var
-                    if (!is_array($value) && !$isQuoted && false !== strpos($value, ': ')) {
-                        // embedded mapping?
-                        try {
-                            $pos = 0;
-                            $value = self::parseMapping('{'.$value.'}', $pos, $references);
-                        } catch (\InvalidArgumentException $e) {
-                            // no, it's not
-                        }
-                    }
-
-                    $output[] = $value;
-
-                    --$i;
-            }
-
-            ++$i;
-        }
-
-        throw new ParseException(sprintf('Malformed inline YAML string %s', $sequence));
-    }
-
-    /**
-     * Parses a mapping to a YAML string.
-     *
-     * @param string $mapping
-     * @param int    &$i
-     * @param array  $references
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException When malformed inline YAML string is parsed
-     */
-    private static function parseMapping($mapping, &$i = 0, $references = array())
-    {
-        $output = array();
-        $len = strlen($mapping);
-        ++$i;
-
-        // {foo: bar, bar:foo, ...}
-        while ($i < $len) {
-            switch ($mapping[$i]) {
-                case ' ':
-                case ',':
-                    ++$i;
-                    continue 2;
-                case '}':
-                    if (self::$objectForMap) {
-                        return (object) $output;
-                    }
-
-                    return $output;
-            }
-
-            // key
-            $key = self::parseScalar($mapping, array(':', ' '), array('"', "'"), $i, false);
-
-            // value
-            $done = false;
-
-            while ($i < $len) {
-                switch ($mapping[$i]) {
-                    case '[':
-                        // nested sequence
-                        $value = self::parseSequence($mapping, $i, $references);
-                        // Spec: Keys MUST be unique; first one wins.
-                        // Parser cannot abort this mapping earlier, since lines
-                        // are processed sequentially.
-                        if (!isset($output[$key])) {
-                            $output[$key] = $value;
-                        }
-                        $done = true;
-                        break;
-                    case '{':
-                        // nested mapping
-                        $value = self::parseMapping($mapping, $i, $references);
-                        // Spec: Keys MUST be unique; first one wins.
-                        // Parser cannot abort this mapping earlier, since lines
-                        // are processed sequentially.
-                        if (!isset($output[$key])) {
-                            $output[$key] = $value;
-                        }
-                        $done = true;
-                        break;
-                    case ':':
-                    case ' ':
-                        break;
-                    default:
-                        $value = self::parseScalar($mapping, array(',', '}'), array('"', "'"), $i, true, $references);
-                        // Spec: Keys MUST be unique; first one wins.
-                        // Parser cannot abort this mapping earlier, since lines
-                        // are processed sequentially.
-                        if (!isset($output[$key])) {
-                            $output[$key] = $value;
-                        }
-                        $done = true;
-                        --$i;
-                }
-
-                ++$i;
-
-                if ($done) {
-                    continue 2;
-                }
-            }
-        }
-
-        throw new ParseException(sprintf('Malformed inline YAML string %s', $mapping));
-    }
-
-    /**
-     * Evaluates scalars and replaces magic values.
-     *
-     * @param string $scalar
-     * @param array  $references
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException when object parsing support was disabled and the parser detected a PHP object or when a reference could not be resolved
-     */
-    private static function evaluateScalar($scalar, $references = array())
-    {
-        $scalar = trim($scalar);
-        $scalarLower = strtolower($scalar);
-
-        if (0 === strpos($scalar, '*')) {
-            if (false !== $pos = strpos($scalar, '#')) {
-                $value = substr($scalar, 1, $pos - 2);
-            } else {
-                $value = substr($scalar, 1);
-            }
-
-            // an unquoted *
-            if (false === $value || '' === $value) {
-                throw new ParseException('A reference must contain at least one character.');
-            }
-
-            if (!array_key_exists($value, $references)) {
-                throw new ParseException(sprintf('Reference "%s" does not exist.', $value));
-            }
-
-            return $references[$value];
-        }
-
-        switch (true) {
-            case 'null' === $scalarLower:
-            case '' === $scalar:
-            case '~' === $scalar:
-                return;
-            case 'true' === $scalarLower:
-                return true;
-            case 'false' === $scalarLower:
-                return false;
-            // Optimise for returning strings.
-            case $scalar[0] === '+' || $scalar[0] === '-' || $scalar[0] === '.' || $scalar[0] === '!' || is_numeric($scalar[0]):
-                switch (true) {
-                    case 0 === strpos($scalar, '!str'):
-                        return (string) substr($scalar, 5);
-                    case 0 === strpos($scalar, '! '):
-                        return (int) self::parseScalar(substr($scalar, 2));
-                    case 0 === strpos($scalar, '!!php/object:'):
-                        if (self::$objectSupport) {
-                            return unserialize(substr($scalar, 13));
-                        }
-
-                        if (self::$exceptionOnInvalidType) {
-                            throw new ParseException('Object support when parsing a YAML file has been disabled.');
-                        }
-
-                        return;
-                    case 0 === strpos($scalar, '!!float '):
-                        return (float) substr($scalar, 8);
-                    case ctype_digit($scalar):
-                        $raw = $scalar;
-                        $cast = (int) $scalar;
-
-                        return '0' == $scalar[0] ? octdec($scalar) : (((string) $raw == (string) $cast) ? $cast : $raw);
-                    case '-' === $scalar[0] && ctype_digit(substr($scalar, 1)):
-                        $raw = $scalar;
-                        $cast = (int) $scalar;
-
-                        return '0' == $scalar[1] ? octdec($scalar) : (((string) $raw === (string) $cast) ? $cast : $raw);
-                    case is_numeric($scalar):
-                    case preg_match(self::getHexRegex(), $scalar):
-                        return '0x' === $scalar[0].$scalar[1] ? hexdec($scalar) : (float) $scalar;
-                    case '.inf' === $scalarLower:
-                    case '.nan' === $scalarLower:
-                        return -log(0);
-                    case '-.inf' === $scalarLower:
-                        return log(0);
-                    case preg_match('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/', $scalar):
-                        return (float) str_replace(',', '', $scalar);
-                    case preg_match(self::getTimestampRegex(), $scalar):
-                        return strtotime($scalar);
-                }
-            default:
-                return (string) $scalar;
-        }
-    }
-
-    /**
-     * Gets a regex that matches a YAML date.
-     *
-     * @return string The regular expression
-     *
-     * @see http://www.yaml.org/spec/1.2/spec.html#id2761573
-     */
-    private static function getTimestampRegex()
-    {
-        return <<<EOF
-        ~^
-        (?P<year>[0-9][0-9][0-9][0-9])
-        -(?P<month>[0-9][0-9]?)
-        -(?P<day>[0-9][0-9]?)
-        (?:(?:[Tt]|[ \t]+)
-        (?P<hour>[0-9][0-9]?)
-        :(?P<minute>[0-9][0-9])
-        :(?P<second>[0-9][0-9])
-        (?:\.(?P<fraction>[0-9]*))?
-        (?:[ \t]*(?P<tz>Z|(?P<tz_sign>[-+])(?P<tz_hour>[0-9][0-9]?)
-        (?::(?P<tz_minute>[0-9][0-9]))?))?)?
-        $~x
-EOF;
-    }
-
-    /**
-     * Gets a regex that matches a YAML number in hexadecimal notation.
-     *
-     * @return string
-     */
-    private static function getHexRegex()
-    {
-        return '~^0x[0-9a-f]++$~i';
-    }
-}
diff --git a/vendor/symfony/yaml/LICENSE b/vendor/symfony/yaml/LICENSE
deleted file mode 100644
index 43028bc..0000000
--- a/vendor/symfony/yaml/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-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/yaml/Parser.php b/vendor/symfony/yaml/Parser.php
deleted file mode 100644
index 04f2237..0000000
--- a/vendor/symfony/yaml/Parser.php
+++ /dev/null
@@ -1,712 +0,0 @@
-<?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\Yaml;
-
-use Symfony\Component\Yaml\Exception\ParseException;
-
-/**
- * Parser parses YAML strings to convert them to PHP arrays.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Parser
-{
-    const BLOCK_SCALAR_HEADER_PATTERN = '(?P<separator>\||>)(?P<modifiers>\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P<comments> +#.*)?';
-    // BC - wrongly named
-    const FOLDED_SCALAR_PATTERN = self::BLOCK_SCALAR_HEADER_PATTERN;
-
-    private $offset = 0;
-    private $lines = array();
-    private $currentLineNb = -1;
-    private $currentLine = '';
-    private $refs = array();
-
-    /**
-     * Constructor.
-     *
-     * @param int $offset The offset of YAML document (used for line numbers in error messages)
-     */
-    public function __construct($offset = 0)
-    {
-        $this->offset = $offset;
-    }
-
-    /**
-     * Parses a YAML string to a PHP value.
-     *
-     * @param string $value                  A YAML string
-     * @param bool   $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), 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()
-     *
-     * @return mixed A PHP value
-     *
-     * @throws ParseException If the YAML is not valid
-     */
-    public function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false)
-    {
-        if (!preg_match('//u', $value)) {
-            throw new ParseException('The YAML value does not appear to be valid UTF-8.');
-        }
-        $this->currentLineNb = -1;
-        $this->currentLine = '';
-        $value = $this->cleanup($value);
-        $this->lines = explode("\n", $value);
-
-        if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
-            $mbEncoding = mb_internal_encoding();
-            mb_internal_encoding('UTF-8');
-        }
-
-        $data = array();
-        $context = null;
-        $allowOverwrite = false;
-        while ($this->moveToNextLine()) {
-            if ($this->isCurrentLineEmpty()) {
-                continue;
-            }
-
-            // tab?
-            if ("\t" === $this->currentLine[0]) {
-                throw new ParseException('A YAML file cannot contain tabs as indentation.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
-            }
-
-            $isRef = $mergeNode = false;
-            if (preg_match('#^\-((?P<leadspaces>\s+)(?P<value>.+?))?\s*$#u', $this->currentLine, $values)) {
-                if ($context && 'mapping' == $context) {
-                    throw new ParseException('You cannot define a sequence item when in a mapping');
-                }
-                $context = 'sequence';
-
-                if (isset($values['value']) && preg_match('#^&(?P<ref>[^ ]+) *(?P<value>.*)#u', $values['value'], $matches)) {
-                    $isRef = $matches['ref'];
-                    $values['value'] = $matches['value'];
-                }
-
-                // array
-                if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) {
-                    $c = $this->getRealCurrentLineNb() + 1;
-                    $parser = new self($c);
-                    $parser->refs = &$this->refs;
-                    $data[] = $parser->parse($this->getNextEmbedBlock(null, true), $exceptionOnInvalidType, $objectSupport, $objectForMap);
-                } else {
-                    if (isset($values['leadspaces'])
-                        && preg_match('#^(?P<key>'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\{\[].*?) *\:(\s+(?P<value>.+?))?\s*$#u', $values['value'], $matches)
-                    ) {
-                        // this is a compact notation element, add to next block and parse
-                        $c = $this->getRealCurrentLineNb();
-                        $parser = new self($c);
-                        $parser->refs = &$this->refs;
-
-                        $block = $values['value'];
-                        if ($this->isNextLineIndented()) {
-                            $block .= "\n".$this->getNextEmbedBlock($this->getCurrentLineIndentation() + strlen($values['leadspaces']) + 1);
-                        }
-
-                        $data[] = $parser->parse($block, $exceptionOnInvalidType, $objectSupport, $objectForMap);
-                    } else {
-                        $data[] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap);
-                    }
-                }
-                if ($isRef) {
-                    $this->refs[$isRef] = end($data);
-                }
-            } elseif (preg_match('#^(?P<key>'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\[\{].*?) *\:(\s+(?P<value>.+?))?\s*$#u', $this->currentLine, $values) && (false === strpos($values['key'], ' #') || in_array($values['key'][0], array('"', "'")))) {
-                if ($context && 'sequence' == $context) {
-                    throw new ParseException('You cannot define a mapping item when in a sequence');
-                }
-                $context = 'mapping';
-
-                // force correct settings
-                Inline::parse(null, $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs);
-                try {
-                    $key = Inline::parseScalar($values['key']);
-                } catch (ParseException $e) {
-                    $e->setParsedLine($this->getRealCurrentLineNb() + 1);
-                    $e->setSnippet($this->currentLine);
-
-                    throw $e;
-                }
-
-                // Convert float keys to strings, to avoid being converted to integers by PHP
-                if (is_float($key)) {
-                    $key = (string) $key;
-                }
-
-                if ('<<' === $key) {
-                    $mergeNode = true;
-                    $allowOverwrite = true;
-                    if (isset($values['value']) && 0 === strpos($values['value'], '*')) {
-                        $refName = substr($values['value'], 1);
-                        if (!array_key_exists($refName, $this->refs)) {
-                            throw new ParseException(sprintf('Reference "%s" does not exist.', $refName), $this->getRealCurrentLineNb() + 1, $this->currentLine);
-                        }
-
-                        $refValue = $this->refs[$refName];
-
-                        if (!is_array($refValue)) {
-                            throw new ParseException('YAML merge keys used with a scalar value instead of an array.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
-                        }
-
-                        foreach ($refValue as $key => $value) {
-                            if (!isset($data[$key])) {
-                                $data[$key] = $value;
-                            }
-                        }
-                    } else {
-                        if (isset($values['value']) && $values['value'] !== '') {
-                            $value = $values['value'];
-                        } else {
-                            $value = $this->getNextEmbedBlock();
-                        }
-                        $c = $this->getRealCurrentLineNb() + 1;
-                        $parser = new self($c);
-                        $parser->refs = &$this->refs;
-                        $parsed = $parser->parse($value, $exceptionOnInvalidType, $objectSupport, $objectForMap);
-
-                        if (!is_array($parsed)) {
-                            throw new ParseException('YAML merge keys used with a scalar value instead of an array.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
-                        }
-
-                        if (isset($parsed[0])) {
-                            // If the value associated with the merge key is a sequence, then this sequence is expected to contain mapping nodes
-                            // and each of these nodes is merged in turn according to its order in the sequence. Keys in mapping nodes earlier
-                            // in the sequence override keys specified in later mapping nodes.
-                            foreach ($parsed as $parsedItem) {
-                                if (!is_array($parsedItem)) {
-                                    throw new ParseException('Merge items must be arrays.', $this->getRealCurrentLineNb() + 1, $parsedItem);
-                                }
-
-                                foreach ($parsedItem as $key => $value) {
-                                    if (!isset($data[$key])) {
-                                        $data[$key] = $value;
-                                    }
-                                }
-                            }
-                        } else {
-                            // If the value associated with the key is a single mapping node, each of its key/value pairs is inserted into the
-                            // current mapping, unless the key already exists in it.
-                            foreach ($parsed as $key => $value) {
-                                if (!isset($data[$key])) {
-                                    $data[$key] = $value;
-                                }
-                            }
-                        }
-                    }
-                } elseif (isset($values['value']) && preg_match('#^&(?P<ref>[^ ]+) *(?P<value>.*)#u', $values['value'], $matches)) {
-                    $isRef = $matches['ref'];
-                    $values['value'] = $matches['value'];
-                }
-
-                if ($mergeNode) {
-                    // Merge keys
-                } elseif (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) {
-                    // hash
-                    // if next line is less indented or equal, then it means that the current value is null
-                    if (!$this->isNextLineIndented() && !$this->isNextLineUnIndentedCollection()) {
-                        // 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])) {
-                            $data[$key] = null;
-                        }
-                    } else {
-                        $c = $this->getRealCurrentLineNb() + 1;
-                        $parser = new self($c);
-                        $parser->refs = &$this->refs;
-                        $value = $parser->parse($this->getNextEmbedBlock(), $exceptionOnInvalidType, $objectSupport, $objectForMap);
-                        // 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])) {
-                            $data[$key] = $value;
-                        }
-                    }
-                } else {
-                    $value = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap);
-                    // 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])) {
-                        $data[$key] = $value;
-                    }
-                }
-                if ($isRef) {
-                    $this->refs[$isRef] = $data[$key];
-                }
-            } else {
-                // multiple documents are not supported
-                if ('---' === $this->currentLine) {
-                    throw new ParseException('Multiple documents are not supported.');
-                }
-
-                // 1-liner optionally followed by newline(s)
-                if (is_string($value) && $this->lines[0] === trim($value)) {
-                    try {
-                        $value = Inline::parse($this->lines[0], $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs);
-                    } catch (ParseException $e) {
-                        $e->setParsedLine($this->getRealCurrentLineNb() + 1);
-                        $e->setSnippet($this->currentLine);
-
-                        throw $e;
-                    }
-
-                    if (is_array($value)) {
-                        $first = reset($value);
-                        if (is_string($first) && 0 === strpos($first, '*')) {
-                            $data = array();
-                            foreach ($value as $alias) {
-                                $data[] = $this->refs[substr($alias, 1)];
-                            }
-                            $value = $data;
-                        }
-                    }
-
-                    if (isset($mbEncoding)) {
-                        mb_internal_encoding($mbEncoding);
-                    }
-
-                    return $value;
-                }
-
-                switch (preg_last_error()) {
-                    case PREG_INTERNAL_ERROR:
-                        $error = 'Internal PCRE error.';
-                        break;
-                    case PREG_BACKTRACK_LIMIT_ERROR:
-                        $error = 'pcre.backtrack_limit reached.';
-                        break;
-                    case PREG_RECURSION_LIMIT_ERROR:
-                        $error = 'pcre.recursion_limit reached.';
-                        break;
-                    case PREG_BAD_UTF8_ERROR:
-                        $error = 'Malformed UTF-8 data.';
-                        break;
-                    case PREG_BAD_UTF8_OFFSET_ERROR:
-                        $error = 'Offset doesn\'t correspond to the begin of a valid UTF-8 code point.';
-                        break;
-                    default:
-                        $error = 'Unable to parse.';
-                }
-
-                throw new ParseException($error, $this->getRealCurrentLineNb() + 1, $this->currentLine);
-            }
-        }
-
-        if (isset($mbEncoding)) {
-            mb_internal_encoding($mbEncoding);
-        }
-
-        return empty($data) ? null : $data;
-    }
-
-    /**
-     * Returns the current line number (takes the offset into account).
-     *
-     * @return int The current line number
-     */
-    private function getRealCurrentLineNb()
-    {
-        return $this->currentLineNb + $this->offset;
-    }
-
-    /**
-     * Returns the current line indentation.
-     *
-     * @return int The current line indentation
-     */
-    private function getCurrentLineIndentation()
-    {
-        return strlen($this->currentLine) - strlen(ltrim($this->currentLine, ' '));
-    }
-
-    /**
-     * Returns the next embed block of YAML.
-     *
-     * @param int  $indentation The indent level at which the block is to be read, or null for default
-     * @param bool $inSequence  True if the enclosing data structure is a sequence
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException When indentation problem are detected
-     */
-    private function getNextEmbedBlock($indentation = null, $inSequence = false)
-    {
-        $oldLineIndentation = $this->getCurrentLineIndentation();
-
-        if (!$this->moveToNextLine()) {
-            return;
-        }
-
-        if (null === $indentation) {
-            $newIndent = $this->getCurrentLineIndentation();
-
-            $unindentedEmbedBlock = $this->isStringUnIndentedCollectionItem($this->currentLine);
-
-            if (!$this->isCurrentLineEmpty() && 0 === $newIndent && !$unindentedEmbedBlock) {
-                throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
-            }
-        } else {
-            $newIndent = $indentation;
-        }
-
-        $data = array();
-        if ($this->getCurrentLineIndentation() >= $newIndent) {
-            $data[] = substr($this->currentLine, $newIndent);
-        } else {
-            $this->moveToPreviousLine();
-
-            return;
-        }
-
-        if ($inSequence && $oldLineIndentation === $newIndent && isset($data[0][0]) && '-' === $data[0][0]) {
-            // the previous line contained a dash but no item content, this line is a sequence item with the same indentation
-            // and therefore no nested list or mapping
-            $this->moveToPreviousLine();
-
-            return;
-        }
-
-        $isItUnindentedCollection = $this->isStringUnIndentedCollectionItem($this->currentLine);
-
-        // Comments must not be removed inside a block scalar
-        $removeCommentsPattern = '~'.self::BLOCK_SCALAR_HEADER_PATTERN.'$~';
-        $removeComments = !preg_match($removeCommentsPattern, $this->currentLine);
-
-        while ($this->moveToNextLine()) {
-            $indent = $this->getCurrentLineIndentation();
-
-            if ($indent === $newIndent) {
-                $removeComments = !preg_match($removeCommentsPattern, $this->currentLine);
-            }
-
-            if ($isItUnindentedCollection && !$this->isStringUnIndentedCollectionItem($this->currentLine) && $newIndent === $indent) {
-                $this->moveToPreviousLine();
-                break;
-            }
-
-            if ($this->isCurrentLineBlank()) {
-                $data[] = substr($this->currentLine, $newIndent);
-                continue;
-            }
-
-            if ($removeComments && $this->isCurrentLineComment()) {
-                continue;
-            }
-
-            if ($indent >= $newIndent) {
-                $data[] = substr($this->currentLine, $newIndent);
-            } elseif (0 == $indent) {
-                $this->moveToPreviousLine();
-
-                break;
-            } else {
-                throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
-            }
-        }
-
-        return implode("\n", $data);
-    }
-
-    /**
-     * Moves the parser to the next line.
-     *
-     * @return bool
-     */
-    private function moveToNextLine()
-    {
-        if ($this->currentLineNb >= count($this->lines) - 1) {
-            return false;
-        }
-
-        $this->currentLine = $this->lines[++$this->currentLineNb];
-
-        return true;
-    }
-
-    /**
-     * Moves the parser to the previous line.
-     */
-    private function moveToPreviousLine()
-    {
-        $this->currentLine = $this->lines[--$this->currentLineNb];
-    }
-
-    /**
-     * Parses a YAML value.
-     *
-     * @param string $value                  A YAML value
-     * @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()
-     *
-     * @return mixed A PHP value
-     *
-     * @throws ParseException When reference does not exist
-     */
-    private function parseValue($value, $exceptionOnInvalidType, $objectSupport, $objectForMap)
-    {
-        if (0 === strpos($value, '*')) {
-            if (false !== $pos = strpos($value, '#')) {
-                $value = substr($value, 1, $pos - 2);
-            } else {
-                $value = substr($value, 1);
-            }
-
-            if (!array_key_exists($value, $this->refs)) {
-                throw new ParseException(sprintf('Reference "%s" does not exist.', $value), $this->currentLine);
-            }
-
-            return $this->refs[$value];
-        }
-
-        if (preg_match('/^'.self::BLOCK_SCALAR_HEADER_PATTERN.'$/', $value, $matches)) {
-            $modifiers = isset($matches['modifiers']) ? $matches['modifiers'] : '';
-
-            return $this->parseBlockScalar($matches['separator'], preg_replace('#\d+#', '', $modifiers), (int) abs($modifiers));
-        }
-
-        try {
-            return Inline::parse($value, $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs);
-        } catch (ParseException $e) {
-            $e->setParsedLine($this->getRealCurrentLineNb() + 1);
-            $e->setSnippet($this->currentLine);
-
-            throw $e;
-        }
-    }
-
-    /**
-     * Parses a block scalar.
-     *
-     * @param string $style       The style indicator that was used to begin this block scalar (| or >)
-     * @param string $chomping    The chomping indicator that was used to begin this block scalar (+ or -)
-     * @param int    $indentation The indentation indicator that was used to begin this block scalar
-     *
-     * @return string The text value
-     */
-    private function parseBlockScalar($style, $chomping = '', $indentation = 0)
-    {
-        $notEOF = $this->moveToNextLine();
-        if (!$notEOF) {
-            return '';
-        }
-
-        $isCurrentLineBlank = $this->isCurrentLineBlank();
-        $text = '';
-
-        // leading blank lines are consumed before determining indentation
-        while ($notEOF && $isCurrentLineBlank) {
-            // newline only if not EOF
-            if ($notEOF = $this->moveToNextLine()) {
-                $text .= "\n";
-                $isCurrentLineBlank = $this->isCurrentLineBlank();
-            }
-        }
-
-        // determine indentation if not specified
-        if (0 === $indentation) {
-            if (preg_match('/^ +/', $this->currentLine, $matches)) {
-                $indentation = strlen($matches[0]);
-            }
-        }
-
-        if ($indentation > 0) {
-            $pattern = sprintf('/^ {%d}(.*)$/', $indentation);
-
-            while (
-                $notEOF && (
-                    $isCurrentLineBlank ||
-                    preg_match($pattern, $this->currentLine, $matches)
-                )
-            ) {
-                if ($isCurrentLineBlank) {
-                    $text .= substr($this->currentLine, $indentation);
-                } else {
-                    $text .= $matches[1];
-                }
-
-                // newline only if not EOF
-                if ($notEOF = $this->moveToNextLine()) {
-                    $text .= "\n";
-                    $isCurrentLineBlank = $this->isCurrentLineBlank();
-                }
-            }
-        } elseif ($notEOF) {
-            $text .= "\n";
-        }
-
-        if ($notEOF) {
-            $this->moveToPreviousLine();
-        }
-
-        // folded style
-        if ('>' === $style) {
-            // folded lines
-            // replace all non-leading/non-trailing single newlines with spaces
-            preg_match('/(\n*)$/', $text, $matches);
-            $text = preg_replace('/(?<!\n|^)\n(?!\n)/', ' ', rtrim($text, "\n"));
-            $text .= $matches[1];
-
-            // empty separation lines
-            // remove one newline from each group of non-leading/non-trailing newlines
-            $text = preg_replace('/[^\n]\n+\K\n(?=[^\n])/', '', $text);
-        }
-
-        // deal with trailing newlines
-        if ('' === $chomping) {
-            $text = preg_replace('/\n+$/', "\n", $text);
-        } elseif ('-' === $chomping) {
-            $text = preg_replace('/\n+$/', '', $text);
-        }
-
-        return $text;
-    }
-
-    /**
-     * Returns true if the next line is indented.
-     *
-     * @return bool Returns true if the next line is indented, false otherwise
-     */
-    private function isNextLineIndented()
-    {
-        $currentIndentation = $this->getCurrentLineIndentation();
-        $EOF = !$this->moveToNextLine();
-
-        while (!$EOF && $this->isCurrentLineEmpty()) {
-            $EOF = !$this->moveToNextLine();
-        }
-
-        if ($EOF) {
-            return false;
-        }
-
-        $ret = false;
-        if ($this->getCurrentLineIndentation() > $currentIndentation) {
-            $ret = true;
-        }
-
-        $this->moveToPreviousLine();
-
-        return $ret;
-    }
-
-    /**
-     * Returns true if the current line is blank or if it is a comment line.
-     *
-     * @return bool Returns true if the current line is empty or if it is a comment line, false otherwise
-     */
-    private function isCurrentLineEmpty()
-    {
-        return $this->isCurrentLineBlank() || $this->isCurrentLineComment();
-    }
-
-    /**
-     * Returns true if the current line is blank.
-     *
-     * @return bool Returns true if the current line is blank, false otherwise
-     */
-    private function isCurrentLineBlank()
-    {
-        return '' == trim($this->currentLine, ' ');
-    }
-
-    /**
-     * Returns true if the current line is a comment line.
-     *
-     * @return bool Returns true if the current line is a comment line, false otherwise
-     */
-    private function isCurrentLineComment()
-    {
-        //checking explicitly the first char of the trim is faster than loops or strpos
-        $ltrimmedLine = ltrim($this->currentLine, ' ');
-
-        return $ltrimmedLine[0] === '#';
-    }
-
-    /**
-     * Cleanups a YAML string to be parsed.
-     *
-     * @param string $value The input YAML string
-     *
-     * @return string A cleaned up YAML string
-     */
-    private function cleanup($value)
-    {
-        $value = str_replace(array("\r\n", "\r"), "\n", $value);
-
-        // strip YAML header
-        $count = 0;
-        $value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#u', '', $value, -1, $count);
-        $this->offset += $count;
-
-        // remove leading comments
-        $trimmedValue = preg_replace('#^(\#.*?\n)+#s', '', $value, -1, $count);
-        if ($count == 1) {
-            // items have been removed, update the offset
-            $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n");
-            $value = $trimmedValue;
-        }
-
-        // remove start of the document marker (---)
-        $trimmedValue = preg_replace('#^\-\-\-.*?\n#s', '', $value, -1, $count);
-        if ($count == 1) {
-            // items have been removed, update the offset
-            $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n");
-            $value = $trimmedValue;
-
-            // remove end of the document marker (...)
-            $value = preg_replace('#\.\.\.\s*$#', '', $value);
-        }
-
-        return $value;
-    }
-
-    /**
-     * Returns true if the next line starts unindented collection.
-     *
-     * @return bool Returns true if the next line starts unindented collection, false otherwise
-     */
-    private function isNextLineUnIndentedCollection()
-    {
-        $currentIndentation = $this->getCurrentLineIndentation();
-        $notEOF = $this->moveToNextLine();
-
-        while ($notEOF && $this->isCurrentLineEmpty()) {
-            $notEOF = $this->moveToNextLine();
-        }
-
-        if (false === $notEOF) {
-            return false;
-        }
-
-        $ret = false;
-        if (
-            $this->getCurrentLineIndentation() == $currentIndentation
-            &&
-            $this->isStringUnIndentedCollectionItem($this->currentLine)
-        ) {
-            $ret = true;
-        }
-
-        $this->moveToPreviousLine();
-
-        return $ret;
-    }
-
-    /**
-     * Returns true if the string is un-indented collection item.
-     *
-     * @return bool Returns true if the string is un-indented collection item, false otherwise
-     */
-    private function isStringUnIndentedCollectionItem()
-    {
-        return (0 === strpos($this->currentLine, '- '));
-    }
-}
diff --git a/vendor/symfony/yaml/README.md b/vendor/symfony/yaml/README.md
deleted file mode 100644
index 85a9786..0000000
--- a/vendor/symfony/yaml/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-Yaml Component
-==============
-
-YAML implements most of the YAML 1.2 specification.
-
-```php
-use Symfony\Component\Yaml\Yaml;
-
-$array = Yaml::parse(file_get_contents(filename));
-
-print Yaml::dump($array);
-```
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    $ cd path/to/Symfony/Component/Yaml/
-    $ composer install
-    $ phpunit
diff --git a/vendor/symfony/yaml/Unescaper.php b/vendor/symfony/yaml/Unescaper.php
deleted file mode 100644
index 1b5e5ec..0000000
--- a/vendor/symfony/yaml/Unescaper.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?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\Yaml;
-
-/**
- * Unescaper encapsulates unescaping rules for single and double-quoted
- * YAML strings.
- *
- * @author Matthew Lewinski <matthew@lewinski.org>
- */
-class Unescaper
-{
-    /**
-     * Parser and Inline assume UTF-8 encoding, so escaped Unicode characters
-     * must be converted to that encoding.
-     *
-     * @deprecated since version 2.5, to be removed in 3.0
-     *
-     * @internal
-     */
-    const ENCODING = 'UTF-8';
-
-    /**
-     * 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})";
-
-    /**
-     * Unescapes a single quoted string.
-     *
-     * @param string $value A single quoted string.
-     *
-     * @return string The unescaped string.
-     */
-    public function unescapeSingleQuotedString($value)
-    {
-        return str_replace('\'\'', '\'', $value);
-    }
-
-    /**
-     * Unescapes a double quoted string.
-     *
-     * @param string $value A double quoted string.
-     *
-     * @return string The unescaped string.
-     */
-    public function unescapeDoubleQuotedString($value)
-    {
-        $self = $this;
-        $callback = function ($match) use ($self) {
-            return $self->unescapeCharacter($match[0]);
-        };
-
-        // evaluate the string
-        return preg_replace_callback('/'.self::REGEX_ESCAPED_CHARACTER.'/u', $callback, $value);
-    }
-
-    /**
-     * Unescapes a character that was found in a double-quoted string.
-     *
-     * @param string $value An escaped character
-     *
-     * @return string The unescaped character
-     */
-    public function unescapeCharacter($value)
-    {
-        switch ($value{1}) {
-            case '0':
-                return "\x0";
-            case 'a':
-                return "\x7";
-            case 'b':
-                return "\x8";
-            case 't':
-                return "\t";
-            case "\t":
-                return "\t";
-            case 'n':
-                return "\n";
-            case 'v':
-                return "\xB";
-            case 'f':
-                return "\xC";
-            case 'r':
-                return "\r";
-            case 'e':
-                return "\x1B";
-            case ' ':
-                return ' ';
-            case '"':
-                return '"';
-            case '/':
-                return '/';
-            case '\\':
-                return '\\';
-            case 'N':
-                // U+0085 NEXT LINE
-                return "\xC2\x85";
-            case '_':
-                // U+00A0 NO-BREAK SPACE
-                return "\xC2\xA0";
-            case 'L':
-                // U+2028 LINE SEPARATOR
-                return "\xE2\x80\xA8";
-            case 'P':
-                // U+2029 PARAGRAPH SEPARATOR
-                return "\xE2\x80\xA9";
-            case 'x':
-                return self::utf8chr(hexdec(substr($value, 2, 2)));
-            case 'u':
-                return self::utf8chr(hexdec(substr($value, 2, 4)));
-            case 'U':
-                return self::utf8chr(hexdec(substr($value, 2, 8)));
-        }
-    }
-
-    /**
-     * Get the UTF-8 character for the given code point.
-     *
-     * @param int $c The unicode code point
-     *
-     * @return string The corresponding UTF-8 character
-     */
-    private static function utf8chr($c)
-    {
-        if (0x80 > $c %= 0x200000) {
-            return chr($c);
-        }
-        if (0x800 > $c) {
-            return chr(0xC0 | $c >> 6).chr(0x80 | $c & 0x3F);
-        }
-        if (0x10000 > $c) {
-            return chr(0xE0 | $c >> 12).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F);
-        }
-
-        return chr(0xF0 | $c >> 18).chr(0x80 | $c >> 12 & 0x3F).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F);
-    }
-}
diff --git a/vendor/symfony/yaml/Yaml.php b/vendor/symfony/yaml/Yaml.php
deleted file mode 100644
index 2d5f62c..0000000
--- a/vendor/symfony/yaml/Yaml.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?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\Yaml;
-
-use Symfony\Component\Yaml\Exception\ParseException;
-
-/**
- * Yaml offers convenience methods to load and dump YAML.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Yaml
-{
-    /**
-     * Parses YAML into a PHP array.
-     *
-     * The parse method, when supplied with a YAML stream (string or file),
-     * will do its best to convert YAML in a file into a PHP array.
-     *
-     *  Usage:
-     *  <code>
-     *   $array = Yaml::parse(file_get_contents('config.yml'));
-     *   print_r($array);
-     *  </code>
-     *
-     * As this method accepts both plain strings and file names as an input,
-     * you must validate the input before calling this method. Passing a file
-     * as an input is a deprecated feature and will be removed in 3.0.
-     *
-     * Note: the ability to pass file names to the Yaml::parse method is deprecated since version 2.2 and will be removed in 3.0. Pass the YAML contents of the file instead.
-     *
-     * @param string $input                  Path to a YAML file or a string containing YAML
-     * @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()
-     *
-     * @return array The YAML converted to a PHP array
-     *
-     * @throws ParseException If the YAML is not valid
-     */
-    public static function parse($input, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false)
-    {
-        // if input is a file, process it
-        $file = '';
-        if (strpos($input, "\n") === false && is_file($input)) {
-            @trigger_error('The ability to pass file names to the '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. Pass the YAML contents of the file instead.', E_USER_DEPRECATED);
-
-            if (false === is_readable($input)) {
-                throw new ParseException(sprintf('Unable to parse "%s" as the file is not readable.', $input));
-            }
-
-            $file = $input;
-            $input = file_get_contents($file);
-        }
-
-        $yaml = new Parser();
-
-        try {
-            return $yaml->parse($input, $exceptionOnInvalidType, $objectSupport, $objectForMap);
-        } catch (ParseException $e) {
-            if ($file) {
-                $e->setParsedFile($file);
-            }
-
-            throw $e;
-        }
-    }
-
-    /**
-     * Dumps a PHP array to a YAML string.
-     *
-     * The dump method, when supplied with an array, will do its best
-     * to convert the array into friendly YAML.
-     *
-     * @param array $array                  PHP array
-     * @param int   $inline                 The level where you switch to inline YAML
-     * @param int   $indent                 The amount of spaces to use for indentation of nested nodes.
-     * @param bool  $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
-     * @param bool  $objectSupport          true if object support is enabled, false otherwise
-     *
-     * @return string A YAML string representing the original PHP array
-     */
-    public static function dump($array, $inline = 2, $indent = 4, $exceptionOnInvalidType = false, $objectSupport = false)
-    {
-        $yaml = new Dumper();
-        $yaml->setIndentation($indent);
-
-        return $yaml->dump($array, $inline, 0, $exceptionOnInvalidType, $objectSupport);
-    }
-}
diff --git a/vendor/symfony/yaml/composer.json b/vendor/symfony/yaml/composer.json
deleted file mode 100644
index b798141..0000000
--- a/vendor/symfony/yaml/composer.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-    "name": "symfony/yaml",
-    "type": "library",
-    "description": "Symfony Yaml Component",
-    "keywords": [],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.9"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Component\\Yaml\\": "" }
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev"
-        }
-    }
-}
diff --git a/vendor/symfony/yaml/phpunit.xml.dist b/vendor/symfony/yaml/phpunit.xml.dist
deleted file mode 100644
index 418b2c6..0000000
--- a/vendor/symfony/yaml/phpunit.xml.dist
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Yaml Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./vendor</directory>
-                <directory>./Tests</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/twig/twig/.editorconfig b/vendor/twig/twig/.editorconfig
deleted file mode 100644
index 270f1d1..0000000
--- a/vendor/twig/twig/.editorconfig
+++ /dev/null
@@ -1,18 +0,0 @@
-; top-most EditorConfig file
-root = true
-
-; Unix-style newlines
-[*]
-end_of_line = LF
-
-[*.php]
-indent_style = space
-indent_size = 4
-
-[*.test]
-indent_style = space
-indent_size = 4
-
-[*.rst]
-indent_style = space
-indent_size = 4
diff --git a/vendor/twig/twig/.gitignore b/vendor/twig/twig/.gitignore
deleted file mode 100644
index 3110362..0000000
--- a/vendor/twig/twig/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/build
-/composer.lock
-/ext/twig/autom4te.cache/
-/phpunit.xml
-/vendor
diff --git a/vendor/twig/twig/.travis.yml b/vendor/twig/twig/.travis.yml
deleted file mode 100644
index 37262da..0000000
--- a/vendor/twig/twig/.travis.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-language: php
-
-sudo: false
-
-cache:
-    directories:
-        - vendor
-        - $HOME/.composer/cache
-
-php:
-    - 5.2
-    - 5.3
-    - 5.4
-    - 5.5
-    - 5.6
-    - 7.0
-    - hhvm
-
-env:
-    - TWIG_EXT=no
-    - TWIG_EXT=yes
-
-install:
-    # Composer is not available on PHP 5.2
-    - if [ ${TRAVIS_PHP_VERSION:0:3} != "5.2" ]; then travis_retry composer install; fi
-
-before_script:
-    - if [ "$TWIG_EXT" == "yes" ]; then sh -c "cd ext/twig && phpize && ./configure --enable-twig && make && make install"; fi
-    - if [ "$TWIG_EXT" == "yes" ]; then echo "extension=twig.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`; fi
-    - if [ ${TRAVIS_PHP_VERSION:0:3} == "5.2" ]; then sed -i.bak "s|vendor/autoload.php|test/bootstrap.php|" phpunit.xml.dist; fi
-
-matrix:
-    fast_finish: true
-    exclude:
-        - php: hhvm
-          env: TWIG_EXT=yes
-    allow_failures:
-        - php: 7.0
-          env: TWIG_EXT=yes
diff --git a/vendor/twig/twig/CHANGELOG b/vendor/twig/twig/CHANGELOG
deleted file mode 100644
index e8f9da0..0000000
--- a/vendor/twig/twig/CHANGELOG
+++ /dev/null
@@ -1,811 +0,0 @@
-* 1.23.1 (2015-XX-XX)
-
- * fixed some exception messages which triggered PHP warnings
- * fixed BC on Twig_Test_NodeTestCase
-
-* 1.23.0 (2015-10-29)
-
- * deprecated the possibility to override an extension by registering another one with the same name
- * deprecated Twig_ExtensionInterface::getGlobals() (added Twig_Extension_GlobalsInterface for BC)
- * deprecated Twig_ExtensionInterface::initRuntime() (added Twig_Extension_InitRuntimeInterface for BC)
- * deprecated Twig_Environment::computeAlternatives()
-
-* 1.22.3 (2015-10-13)
-
- * fixed regression when using null as a cache strategy
- * improved performance when checking template freshness
- * fixed warnings when loaded templates do not exist
- * fixed template class name generation to prevent possible collisions
- * fixed logic for custom escapers to call them even on integers and null values
- * changed template cache names to take into account the Twig C extension
-
-* 1.22.2 (2015-09-22)
-
- * fixed a race condition in template loading
-
-* 1.22.1 (2015-09-15)
-
- * fixed regression in template_from_string
-
-* 1.22.0 (2015-09-13)
-
- * made Twig_Test_IntegrationTestCase more flexible
- * added an option to force PHP bytecode invalidation when writing a compiled template into the cache
- * fixed the profiler duration for the root node
- * changed template cache names to take into account enabled extensions
- * deprecated Twig_Environment::clearCacheFiles(), Twig_Environment::getCacheFilename(),
-   Twig_Environment::writeCacheFile(), and Twig_Environment::getTemplateClassPrefix()
- * added a way to override the filesystem template cache system
- * added a way to get the original template source from Twig_Template
-
-* 1.21.2 (2015-09-09)
-
- * fixed variable names for the deprecation triggering code
- * fixed escaping strategy detection based on filename
- * added Traversable support for replace, merge, and sort
- * deprecated support for character by character replacement for the "replace" filter
-
-* 1.21.1 (2015-08-26)
-
- * fixed regression when using the deprecated Twig_Test_* classes
-
-* 1.21.0 (2015-08-24)
-
- * added deprecation notices for deprecated features
- * added a deprecation "framework" for filters/functions/tests and test fixtures
-
-* 1.20.0 (2015-08-12)
-
- * forbid access to the Twig environment from templates and internal parts of Twig_Template
- * fixed limited RCEs when in sandbox mode
- * deprecated Twig_Template::getEnvironment()
- * deprecated the _self variable for usage outside of the from and import tags
- * added Twig_BaseNodeVisitor to ease the compatibility of node visitors 
-   between 1.x and 2.x
-
-* 1.19.0 (2015-07-31)
-
- * fixed wrong error message when including an undefined template in a child template
- * added support for variadic filters, functions, and tests
- * added support for extra positional arguments in macros
- * added ignore_missing flag to the source function
- * fixed batch filter with zero items
- * deprecated Twig_Environment::clearTemplateCache()
- * fixed sandbox disabling when using the include function
-
-* 1.18.2 (2015-06-06)
-
- * fixed template/line guessing in exceptions for nested templates
- * optimized the number of inodes and the size of realpath cache when using the cache
-
-* 1.18.1 (2015-04-19)
-
- * fixed memory leaks in the C extension
- * deprecated Twig_Loader_String
- * fixed the slice filter when used with a SimpleXMLElement object
- * fixed filesystem loader when trying to load non-files (like directories)
-
-* 1.18.0 (2015-01-25)
-
- * fixed some error messages where the line was wrong (unknown variables or argument names)
- * added a new way to customize the main Module node (via empty nodes)
- * added Twig_Environment::createTemplate() to create a template from a string
- * added a profiler
- * fixed filesystem loader cache when different file paths are used for the same template
-
-* 1.17.0 (2015-01-14)
-
- * added a 'filename' autoescaping strategy, which dynamically chooses the
-   autoescaping strategy for a template based on template file extension.
-
-* 1.16.3 (2014-12-25)
-
- * fixed regression for dynamic parent templates
- * fixed cache management with statcache
- * fixed a regression in the slice filter
-
-* 1.16.2 (2014-10-17)
-
- * fixed timezone on dates as strings
- * fixed 2-words test names when a custom node class is not used
- * fixed macros when using an argument named like a PHP super global (like GET or POST)
- * fixed date_modify when working with DateTimeImmutable
- * optimized for loops
- * fixed multi-byte characters handling in the split filter
- * fixed a regression in the in operator
- * fixed a regression in the slice filter
-
-* 1.16.1 (2014-10-10)
-
- * improved error reporting in a sandboxed template
- * fixed missing error file/line information under certain circumstances
- * fixed wrong error line number in some error messages
- * fixed the in operator to use strict comparisons
- * sped up the slice filter
- * fixed for mb function overload mb_substr acting different
- * fixed the attribute() function when passing a variable for the arguments
-
-* 1.16.0 (2014-07-05)
-
- * changed url_encode to always encode according to RFC 3986
- * fixed inheritance in a 'use'-hierarchy
- * removed the __toString policy check when the sandbox is disabled
- * fixed recursively calling blocks in templates with inheritance
-
-* 1.15.1 (2014-02-13)
-
- * fixed the conversion of the special '0000-00-00 00:00' date
- * added an error message when trying to import an undefined block from a trait
- * fixed a C extension crash when accessing defined but uninitialized property.
-
-* 1.15.0 (2013-12-06)
-
- * made ignoreStrictCheck in Template::getAttribute() works with __call() methods throwing BadMethodCallException
- * added min and max functions
- * added the round filter
- * fixed a bug that prevented the optimizers to be enabled/disabled selectively
- * fixed first and last filters for UTF-8 strings
- * added a source function to include the content of a template without rendering it
- * fixed the C extension sandbox behavior when get or set is prepend to method name
-
-* 1.14.2 (2013-10-30)
-
- * fixed error filename/line when an error occurs in an included file
- * allowed operators that contain whitespaces to have more than one whitespace
- * allowed tests to be made of 1 or 2 words (like "same as" or "divisible by")
-
-* 1.14.1 (2013-10-15)
-
- * made it possible to use named operators as variables
- * fixed the possibility to have a variable named 'matches'
- * added support for PHP 5.5 DateTimeInterface
-
-* 1.14.0 (2013-10-03)
-
- * fixed usage of the html_attr escaping strategy to avoid double-escaping with the html strategy
- * added new operators: ends with, starts with, and matches
- * fixed some compatibility issues with HHVM
- * added a way to add custom escaping strategies
- * fixed the C extension compilation on Windows
- * fixed the batch filter when using a fill argument with an exact match of elements to batch
- * fixed the filesystem loader cache when a template name exists in several namespaces
- * fixed template_from_string when the template includes or extends other ones
- * fixed a crash of the C extension on an edge case
-
-* 1.13.2 (2013-08-03)
-
- * fixed the error line number for an error occurs in and embedded template
- * fixed crashes of the C extension on some edge cases
-
-* 1.13.1 (2013-06-06)
-
- * added the possibility to ignore the filesystem constructor argument in Twig_Loader_Filesystem
- * fixed Twig_Loader_Chain::exists() for a loader which implements Twig_ExistsLoaderInterface
- * adjusted backtrace call to reduce memory usage when an error occurs
- * added support for object instances as the second argument of the constant test
- * fixed the include function when used in an assignment
-
-* 1.13.0 (2013-05-10)
-
- * fixed getting a numeric-like item on a variable ('09' for instance)
- * fixed getting a boolean or float key on an array, so it is consistent with PHP's array access:
-   `{{ array[false] }}` behaves the same as `echo $array[false];` (equals `$array[0]`)
- * made the escape filter 20% faster for happy path (escaping string for html with UTF-8)
- * changed ☃ to § in tests
- * enforced usage of named arguments after positional ones
-
-* 1.12.3 (2013-04-08)
-
- * fixed a security issue in the filesystem loader where it was possible to include a template one
-   level above the configured path
- * fixed fatal error that should be an exception when adding a filter/function/test too late
- * added a batch filter
- * added support for encoding an array as query string in the url_encode filter
-
-* 1.12.2 (2013-02-09)
-
- * fixed the timezone used by the date filter and function when the given date contains a timezone (like 2010-01-28T15:00:00+02:00)
- * fixed globals when getGlobals is called early on
- * added the first and last filter
-
-* 1.12.1 (2013-01-15)
-
- * added support for object instances as the second argument of the constant function
- * relaxed globals management to avoid a BC break
- * added support for {{ some_string[:2] }}
-
-* 1.12.0 (2013-01-08)
-
- * added verbatim as an alias for the raw tag to avoid confusion with the raw filter
- * fixed registration of tests and functions as anonymous functions
- * fixed globals management
-
-* 1.12.0-RC1 (2012-12-29)
-
- * added an include function (does the same as the include tag but in a more flexible way)
- * added the ability to use any PHP callable to define filters, functions, and tests
- * added a syntax error when using a loop variable that is not defined
- * added the ability to set default values for macro arguments
- * added support for named arguments for filters, tests, and functions
- * moved filters/functions/tests syntax errors to the parser
- * added support for extended ternary operator syntaxes
-
-* 1.11.1 (2012-11-11)
-
- * fixed debug info line numbering (was off by 2)
- * fixed escaping when calling a macro inside another one (regression introduced in 1.9.1)
- * optimized variable access on PHP 5.4
- * fixed a crash of the C extension when an exception was thrown from a macro called without being imported (using _self.XXX)
-
-* 1.11.0 (2012-11-07)
-
- * fixed macro compilation when a variable name is a PHP reserved keyword
- * changed the date filter behavior to always apply the default timezone, except if false is passed as the timezone
- * fixed bitwise operator precedences
- * added the template_from_string function
- * fixed default timezone usage for the date function
- * optimized the way Twig exceptions are managed (to make them faster)
- * added Twig_ExistsLoaderInterface (implementing this interface in your loader make the chain loader much faster)
-
-* 1.10.3 (2012-10-19)
-
- * fixed wrong template location in some error messages
- * reverted a BC break introduced in 1.10.2
- * added a split filter
-
-* 1.10.2 (2012-10-15)
-
- * fixed macro calls on PHP 5.4
-
-* 1.10.1 (2012-10-15)
-
- * made a speed optimization to macro calls when imported via the "import" tag
- * fixed C extension compilation on Windows
- * fixed a segfault in the C extension when using DateTime objects
-
-* 1.10.0 (2012-09-28)
-
- * extracted functional tests framework to make it reusable for third-party extensions
- * added namespaced templates support in Twig_Loader_Filesystem
- * added Twig_Loader_Filesystem::prependPath()
- * fixed an error when a token parser pass a closure as a test to the subparse() method
-
-* 1.9.2 (2012-08-25)
-
- * fixed the in operator for objects that contain circular references
- * fixed the C extension when accessing a public property of an object implementing the \ArrayAccess interface
-
-* 1.9.1 (2012-07-22)
-
- * optimized macro calls when auto-escaping is on
- * fixed wrong parent class for Twig_Function_Node
- * made Twig_Loader_Chain more explicit about problems
-
-* 1.9.0 (2012-07-13)
-
- * made the parsing independent of the template loaders
- * fixed exception trace when an error occurs when rendering a child template
- * added escaping strategies for CSS, URL, and HTML attributes
- * fixed nested embed tag calls
- * added the date_modify filter
-
-* 1.8.3 (2012-06-17)
-
- * fixed paths in the filesystem loader when passing a path that ends with a slash or a backslash
- * fixed escaping when a project defines a function named html or js
- * fixed chmod mode to apply the umask correctly
-
-* 1.8.2 (2012-05-30)
-
- * added the abs filter
- * fixed a regression when using a number in template attributes
- * fixed compiler when mbstring.func_overload is set to 2
- * fixed DateTimeZone support in date filter
-
-* 1.8.1 (2012-05-17)
-
- * fixed a regression when dealing with SimpleXMLElement instances in templates
- * fixed "is_safe" value for the "dump" function when "html_errors" is not defined in php.ini
- * switched to use mbstring whenever possible instead of iconv (you might need to update your encoding as mbstring and iconv encoding names sometimes differ)
-
-* 1.8.0 (2012-05-08)
-
- * enforced interface when adding tests, filters, functions, and node visitors from extensions
- * fixed a side-effect of the date filter where the timezone might be changed
- * simplified usage of the autoescape tag; the only (optional) argument is now the escaping strategy or false (with a BC layer)
- * added a way to dynamically change the auto-escaping strategy according to the template "filename"
- * changed the autoescape option to also accept a supported escaping strategy (for BC, true is equivalent to html)
- * added an embed tag
-
-* 1.7.0 (2012-04-24)
-
- * fixed a PHP warning when using CIFS
- * fixed template line number in some exceptions
- * added an iterable test
- * added an error when defining two blocks with the same name in a template
- * added the preserves_safety option for filters
- * fixed a PHP notice when trying to access a key on a non-object/array variable
- * enhanced error reporting when the template file is an instance of SplFileInfo
- * added Twig_Environment::mergeGlobals()
- * added compilation checks to avoid misuses of the sandbox tag
- * fixed filesystem loader freshness logic for high traffic websites
- * fixed random function when charset is null
-
-* 1.6.5 (2012-04-11)
-
- * fixed a regression when a template only extends another one without defining any blocks
-
-* 1.6.4 (2012-04-02)
-
- * fixed PHP notice in Twig_Error::guessTemplateLine() introduced in 1.6.3
- * fixed performance when compiling large files
- * optimized parent template creation when the template does not use dynamic inheritance
-
-* 1.6.3 (2012-03-22)
-
- * fixed usage of Z_ADDREF_P for PHP 5.2 in the C extension
- * fixed compilation of numeric values used in templates when using a locale where the decimal separator is not a dot
- * made the strategy used to guess the real template file name and line number in exception messages much faster and more accurate
-
-* 1.6.2 (2012-03-18)
-
- * fixed sandbox mode when used with inheritance
- * added preserveKeys support for the slice filter
- * fixed the date filter when a DateTime instance is passed with a specific timezone
- * added a trim filter
-
-* 1.6.1 (2012-02-29)
-
- * fixed Twig C extension
- * removed the creation of Twig_Markup instances when not needed
- * added a way to set the default global timezone for dates
- * fixed the slice filter on strings when the length is not specified
- * fixed the creation of the cache directory in case of a race condition
-
-* 1.6.0 (2012-02-04)
-
- * fixed raw blocks when used with the whitespace trim option
- * made a speed optimization to macro calls when imported via the "from" tag
- * fixed globals, parsers, visitors, filters, tests, and functions management in Twig_Environment when a new one or new extension is added
- * fixed the attribute function when passing arguments
- * added slice notation support for the [] operator (syntactic sugar for the slice operator)
- * added a slice filter
- * added string support for the reverse filter
- * fixed the empty test and the length filter for Twig_Markup instances
- * added a date function to ease date comparison
- * fixed unary operators precedence
- * added recursive parsing support in the parser
- * added string and integer handling for the random function
-
-* 1.5.1 (2012-01-05)
-
- * fixed a regression when parsing strings
-
-* 1.5.0 (2012-01-04)
-
- * added Traversable objects support for the join filter
-
-* 1.5.0-RC2 (2011-12-30)
-
- * added a way to set the default global date interval format
- * fixed the date filter for DateInterval instances (setTimezone() does not exist for them)
- * refactored Twig_Template::display() to ease its extension
- * added a number_format filter
-
-* 1.5.0-RC1 (2011-12-26)
-
- * removed the need to quote hash keys
- * allowed hash keys to be any expression
- * added a do tag
- * added a flush tag
- * added support for dynamically named filters and functions
- * added a dump function to help debugging templates
- * added a nl2br filter
- * added a random function
- * added a way to change the default format for the date filter
- * fixed the lexer when an operator ending with a letter ends a line
- * added string interpolation support
- * enhanced exceptions for unknown filters, functions, tests, and tags
-
-* 1.4.0 (2011-12-07)
-
- * fixed lexer when using big numbers (> PHP_INT_MAX)
- * added missing preserveKeys argument to the reverse filter
- * fixed macros containing filter tag calls
-
-* 1.4.0-RC2 (2011-11-27)
-
- * removed usage of Reflection in Twig_Template::getAttribute()
- * added a C extension that can optionally replace Twig_Template::getAttribute()
- * added negative timestamp support to the date filter
-
-* 1.4.0-RC1 (2011-11-20)
-
- * optimized variable access when using PHP 5.4
- * changed the precedence of the .. operator to be more consistent with languages that implements such a feature like Ruby
- * added an Exception to Twig_Loader_Array::isFresh() method when the template does not exist to be consistent with other loaders
- * added Twig_Function_Node to allow more complex functions to have their own Node class
- * added Twig_Filter_Node to allow more complex filters to have their own Node class
- * added Twig_Test_Node to allow more complex tests to have their own Node class
- * added a better error message when a template is empty but contain a BOM
- * fixed "in" operator for empty strings
- * fixed the "defined" test and the "default" filter (now works with more than one call (foo.bar.foo) and for both values of the strict_variables option)
- * changed the way extensions are loaded (addFilter/addFunction/addGlobal/addTest/addNodeVisitor/addTokenParser/addExtension can now be called in any order)
- * added Twig_Environment::display()
- * made the escape filter smarter when the encoding is not supported by PHP
- * added a convert_encoding filter
- * moved all node manipulations outside the compile() Node method
- * made several speed optimizations
-
-* 1.3.0 (2011-10-08)
-
-no changes
-
-* 1.3.0-RC1 (2011-10-04)
-
- * added an optimization for the parent() function
- * added cache reloading when auto_reload is true and an extension has been modified
- * added the possibility to force the escaping of a string already marked as safe (instance of Twig_Markup)
- * allowed empty templates to be used as traits
- * added traits support for the "parent" function
-
-* 1.2.0 (2011-09-13)
-
-no changes
-
-* 1.2.0-RC1 (2011-09-10)
-
- * enhanced the exception when a tag remains unclosed
- * added support for empty Countable objects for the "empty" test
- * fixed algorithm that determines if a template using inheritance is valid (no output between block definitions)
- * added better support for encoding problems when escaping a string (available as of PHP 5.4)
- * added a way to ignore a missing template when using the "include" tag ({% include "foo" ignore missing %})
- * added support for an array of templates to the "include" and "extends" tags ({% include ['foo', 'bar'] %})
- * added support for bitwise operators in expressions
- * added the "attribute" function to allow getting dynamic attributes on variables
- * added Twig_Loader_Chain
- * added Twig_Loader_Array::setTemplate()
- * added an optimization for the set tag when used to capture a large chunk of static text
- * changed name regex to match PHP one "[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" (works for blocks, tags, functions, filters, and macros)
- * removed the possibility to use the "extends" tag from a block
- * added "if" modifier support to "for" loops
-
-* 1.1.2 (2011-07-30)
-
- * fixed json_encode filter on PHP 5.2
- * fixed regression introduced in 1.1.1 ({{ block(foo|lower) }})
- * fixed inheritance when using conditional parents
- * fixed compilation of templates when the body of a child template is not empty
- * fixed output when a macro throws an exception
- * fixed a parsing problem when a large chunk of text is enclosed in a comment tag
- * added PHPDoc for all Token parsers and Core extension functions
-
-* 1.1.1 (2011-07-17)
-
- * added a performance optimization in the Optimizer (also helps to lower the number of nested level calls)
- * made some performance improvement for some edge cases
-
-* 1.1.0 (2011-06-28)
-
- * fixed json_encode filter
-
-* 1.1.0-RC3 (2011-06-24)
-
- * fixed method case-sensitivity when using the sandbox mode
- * added timezone support for the date filter
- * fixed possible security problems with NUL bytes
-
-* 1.1.0-RC2 (2011-06-16)
-
- * added an exception when the template passed to "use" is not a string
- * made 'a.b is defined' not throw an exception if a is not defined (in strict mode)
- * added {% line \d+ %} directive
-
-* 1.1.0-RC1 (2011-05-28)
-
-Flush your cache after upgrading.
-
- * fixed date filter when using a timestamp
- * fixed the defined test for some cases
- * fixed a parsing problem when a large chunk of text is enclosed in a raw tag
- * added support for horizontal reuse of template blocks (see docs for more information)
- * added whitespace control modifier to all tags (see docs for more information)
- * added null as an alias for none (the null test is also an alias for the none test now)
- * made TRUE, FALSE, NONE equivalent to their lowercase counterparts
- * wrapped all compilation and runtime exceptions with Twig_Error_Runtime and added logic to guess the template name and line
- * moved display() method to Twig_Template (generated templates should now use doDisplay() instead)
-
-* 1.0.0 (2011-03-27)
-
- * fixed output when using mbstring
- * fixed duplicate call of methods when using the sandbox
- * made the charset configurable for the escape filter
-
-* 1.0.0-RC2 (2011-02-21)
-
- * changed the way {% set %} works when capturing (the content is now marked as safe)
- * added support for macro name in the endmacro tag
- * make Twig_Error compatible with PHP 5.3.0 >
- * fixed an infinite loop on some Windows configurations
- * fixed the "length" filter for numbers
- * fixed Template::getAttribute() as properties in PHP are case sensitive
- * removed coupling between Twig_Node and Twig_Template
- * fixed the ternary operator precedence rule
-
-* 1.0.0-RC1 (2011-01-09)
-
-Backward incompatibilities:
-
- * the "items" filter, which has been deprecated for quite a long time now, has been removed
- * the "range" filter has been converted to a function: 0|range(10) -> range(0, 10)
- * the "constant" filter has been converted to a function: {{ some_date|date('DATE_W3C'|constant) }} -> {{ some_date|date(constant('DATE_W3C')) }}
- * the "cycle" filter has been converted to a function: {{ ['odd', 'even']|cycle(i) }} -> {{ cycle(['odd', 'even'], i) }}
- * the "for" tag does not support "joined by" anymore
- * the "autoescape" first argument is now "true"/"false" (instead of "on"/"off")
- * the "parent" tag has been replaced by a "parent" function ({{ parent() }} instead of {% parent %})
- * the "display" tag has been replaced by a "block" function ({{ block('title') }} instead of {% display title %})
- * removed the grammar and simple token parser (moved to the Twig Extensions repository)
-
-Changes:
-
- * added "needs_context" option for filters and functions (the context is then passed as a first argument)
- * added global variables support
- * made macros return their value instead of echoing directly (fixes calling a macro in sandbox mode)
- * added the "from" tag to import macros as functions
- * added support for functions (a function is just syntactic sugar for a getAttribute() call)
- * made macros callable when sandbox mode is enabled
- * added an exception when a macro uses a reserved name
- * the "default" filter now uses the "empty" test instead of just checking for null
- * added the "empty" test
-
-* 0.9.10 (2010-12-16)
-
-Backward incompatibilities:
-
- * The Escaper extension is enabled by default, which means that all displayed
-   variables are now automatically escaped. You can revert to the previous
-   behavior by removing the extension via $env->removeExtension('escaper')
-   or just set the 'autoescape' option to 'false'.
- * removed the "without loop" attribute for the "for" tag (not needed anymore
-   as the Optimizer take care of that for most cases)
- * arrays and hashes have now a different syntax
-     * arrays keep the same syntax with square brackets: [1, 2]
-     * hashes now use curly braces (["a": "b"] should now be written as {"a": "b"})
-     * support for "arrays with keys" and "hashes without keys" is not supported anymore ([1, "foo": "bar"] or {"foo": "bar", 1})
- * the i18n extension is now part of the Twig Extensions repository
-
-Changes:
-
- * added the merge filter
- * removed 'is_escaper' option for filters (a left over from the previous version) -- you must use 'is_safe' now instead
- * fixed usage of operators as method names (like is, in, and not)
- * changed the order of execution for node visitors
- * fixed default() filter behavior when used with strict_variables set to on
- * fixed filesystem loader compatibility with PHAR files
- * enhanced error messages when an unexpected token is parsed in an expression
- * fixed filename not being added to syntax error messages
- * added the autoescape option to enable/disable autoescaping
- * removed the newline after a comment (mimics PHP behavior)
- * added a syntax error exception when parent block is used on a template that does not extend another one
- * made the Escaper extension enabled by default
- * fixed sandbox extension when used with auto output escaping
- * fixed escaper when wrapping a Twig_Node_Print (the original class must be preserved)
- * added an Optimizer extension (enabled by default; optimizes "for" loops and "raw" filters)
- * added priority to node visitors
-
-* 0.9.9 (2010-11-28)
-
-Backward incompatibilities:
- * the self special variable has been renamed to _self
- * the odd and even filters are now tests:
-     {{ foo|odd }} must now be written {{ foo is odd }}
- * the "safe" filter has been renamed to "raw"
- * in Node classes,
-        sub-nodes are now accessed via getNode() (instead of property access)
-        attributes via getAttribute() (instead of array access)
- * the urlencode filter had been renamed to url_encode
- * the include tag now merges the passed variables with the current context by default
-   (the old behavior is still possible by adding the "only" keyword)
- * moved Exceptions to Twig_Error_* (Twig_SyntaxError/Twig_RuntimeError are now Twig_Error_Syntax/Twig_Error_Runtime)
- * removed support for {{ 1 < i < 3 }} (use {{ i > 1 and i < 3 }} instead)
- * the "in" filter has been removed ({{ a|in(b) }} should now be written {{ a in b }})
-
-Changes:
- * added file and line to Twig_Error_Runtime exceptions thrown from Twig_Template
- * changed trans tag to accept any variable for the plural count
- * fixed sandbox mode (__toString() method check was not enforced if called implicitly from complex statements)
- * added the ** (power) operator
- * changed the algorithm used for parsing expressions
- * added the spaceless tag
- * removed trim_blocks option
- * added support for is*() methods for attributes (foo.bar now looks for foo->getBar() or foo->isBar())
- * changed all exceptions to extend Twig_Error
- * fixed unary expressions ({{ not(1 or 0) }})
- * fixed child templates (with an extend tag) that uses one or more imports
- * added support for {{ 1 not in [2, 3] }} (more readable than the current {{ not (1 in [2, 3]) }})
- * escaping has been rewritten
- * the implementation of template inheritance has been rewritten
-   (blocks can now be called individually and still work with inheritance)
- * fixed error handling for if tag when a syntax error occurs within a subparse process
- * added a way to implement custom logic for resolving token parsers given a tag name
- * fixed js escaper to be stricter (now uses a whilelist-based js escaper)
- * added the following filers: "constant", "trans", "replace", "json_encode"
- * added a "constant" test
- * fixed objects with __toString() not being autoescaped
- * fixed subscript expressions when calling __call() (methods now keep the case)
- * added "test" feature (accessible via the "is" operator)
- * removed the debug tag (should be done in an extension)
- * fixed trans tag when no vars are used in plural form
- * fixed race condition when writing template cache
- * added the special _charset variable to reference the current charset
- * added the special _context variable to reference the current context
- * renamed self to _self (to avoid conflict)
- * fixed Twig_Template::getAttribute() for protected properties
-
-* 0.9.8 (2010-06-28)
-
-Backward incompatibilities:
- * the trans tag plural count is now attached to the plural tag:
-    old: `{% trans count %}...{% plural %}...{% endtrans %}`
-    new: `{% trans %}...{% plural count %}...{% endtrans %}`
-
- * added a way to translate strings coming from a variable ({% trans var %})
- * fixed trans tag when used with the Escaper extension
- * fixed default cache umask
- * removed Twig_Template instances from the debug tag output
- * fixed objects with __isset() defined
- * fixed set tag when used with a capture
- * fixed type hinting for Twig_Environment::addFilter() method
-
-* 0.9.7 (2010-06-12)
-
-Backward incompatibilities:
- * changed 'as' to '=' for the set tag ({% set title as "Title" %} must now be {% set title = "Title" %})
- * removed the sandboxed attribute of the include tag (use the new sandbox tag instead)
- * refactored the Node system (if you have custom nodes, you will have to update them to use the new API)
-
- * added self as a special variable that refers to the current template (useful for importing macros from the current template)
- * added Twig_Template instance support to the include tag
- * added support for dynamic and conditional inheritance ({% extends some_var %} and {% extends standalone ? "minimum" : "base" %})
- * added a grammar sub-framework to ease the creation of custom tags
- * fixed the for tag for large arrays (some loop variables are now only available for arrays and objects that implement the Countable interface)
- * removed the Twig_Resource::resolveMissingFilter() method
- * fixed the filter tag which did not apply filtering to included files
- * added a bunch of unit tests
- * added a bunch of phpdoc
- * added a sandbox tag in the sandbox extension
- * changed the date filter to support any date format supported by DateTime
- * added strict_variable setting to throw an exception when an invalid variable is used in a template (disabled by default)
- * added the lexer, parser, and compiler as arguments to the Twig_Environment constructor
- * changed the cache option to only accepts an explicit path to a cache directory or false
- * added a way to add token parsers, filters, and visitors without creating an extension
- * added three interfaces: Twig_NodeInterface, Twig_TokenParserInterface, and Twig_FilterInterface
- * changed the generated code to match the new coding standards
- * fixed sandbox mode (__toString() method check was not enforced if called implicitly from a simple statement like {{ article }})
- * added an exception when a child template has a non-empty body (as it is always ignored when rendering)
-
-* 0.9.6 (2010-05-12)
-
- * fixed variables defined outside a loop and for which the value changes in a for loop
- * fixed the test suite for PHP 5.2 and older versions of PHPUnit
- * added support for __call() in expression resolution
- * fixed node visiting for macros (macros are now visited by visitors as any other node)
- * fixed nested block definitions with a parent call (rarely useful but nonetheless supported now)
- * added the cycle filter
- * fixed the Lexer when mbstring.func_overload is used with an mbstring.internal_encoding different from ASCII
- * added a long-syntax for the set tag ({% set foo %}...{% endset %})
- * unit tests are now powered by PHPUnit
- * added support for gettext via the `i18n` extension
- * fixed twig_capitalize_string_filter() and fixed twig_length_filter() when used with UTF-8 values
- * added a more useful exception if an if tag is not closed properly
- * added support for escaping strategy in the autoescape tag
- * fixed lexer when a template has a big chunk of text between/in a block
-
-* 0.9.5 (2010-01-20)
-
-As for any new release, don't forget to remove all cached templates after
-upgrading.
-
-If you have defined custom filters, you MUST upgrade them for this release. To
-upgrade, replace "array" with "new Twig_Filter_Function", and replace the
-environment constant by the "needs_environment" option:
-
-  // before
-  'even'   => array('twig_is_even_filter', false),
-  'escape' => array('twig_escape_filter', true),
-
-  // after
-  'even'   => new Twig_Filter_Function('twig_is_even_filter'),
-  'escape' => new Twig_Filter_Function('twig_escape_filter', array('needs_environment' => true)),
-
-If you have created NodeTransformer classes, you will need to upgrade them to
-the new interface (please note that the interface is not yet considered
-stable).
-
- * fixed list nodes that did not extend the Twig_NodeListInterface
- * added the "without loop" option to the for tag (it disables the generation of the loop variable)
- * refactored node transformers to node visitors
- * fixed automatic-escaping for blocks
- * added a way to specify variables to pass to an included template
- * changed the automatic-escaping rules to be more sensible and more configurable in custom filters (the documentation lists all the rules)
- * improved the filter system to allow object methods to be used as filters
- * changed the Array and String loaders to actually make use of the cache mechanism
- * included the default filter function definitions in the extension class files directly (Core, Escaper)
- * added the // operator (like the floor() PHP function)
- * added the .. operator (as a syntactic sugar for the range filter when the step is 1)
- * added the in operator (as a syntactic sugar for the in filter)
- * added the following filters in the Core extension: in, range
- * added support for arrays (same behavior as in PHP, a mix between lists and dictionaries, arrays and hashes)
- * enhanced some error messages to provide better feedback in case of parsing errors
-
-* 0.9.4 (2009-12-02)
-
-If you have custom loaders, you MUST upgrade them for this release: The
-Twig_Loader base class has been removed, and the Twig_LoaderInterface has also
-been changed (see the source code for more information or the documentation).
-
- * added support for DateTime instances for the date filter
- * fixed loop.last when the array only has one item
- * made it possible to insert newlines in tag and variable blocks
- * fixed a bug when a literal '\n' were present in a template text
- * fixed bug when the filename of a template contains */
- * refactored loaders
-
-* 0.9.3 (2009-11-11)
-
-This release is NOT backward compatible with the previous releases.
-
-  The loaders do not take the cache and autoReload arguments anymore. Instead,
-  the Twig_Environment class has two new options: cache and auto_reload.
-  Upgrading your code means changing this kind of code:
-
-      $loader = new Twig_Loader_Filesystem('/path/to/templates', '/path/to/compilation_cache', true);
-      $twig = new Twig_Environment($loader);
-
-  to something like this:
-
-      $loader = new Twig_Loader_Filesystem('/path/to/templates');
-      $twig = new Twig_Environment($loader, array(
-        'cache' => '/path/to/compilation_cache',
-        'auto_reload' => true,
-      ));
-
- * deprecated the "items" filter as it is not needed anymore
- * made cache and auto_reload options of Twig_Environment instead of arguments of Twig_Loader
- * optimized template loading speed
- * removed output when an error occurs in a template and render() is used
- * made major speed improvements for loops (up to 300% on even the smallest loops)
- * added properties as part of the sandbox mode
- * added public properties support (obj.item can now be the item property on the obj object)
- * extended set tag to support expression as value ({% set foo as 'foo' ~ 'bar' %} )
- * fixed bug when \ was used in HTML
-
-* 0.9.2 (2009-10-29)
-
- * made some speed optimizations
- * changed the cache extension to .php
- * added a js escaping strategy
- * added support for short block tag
- * changed the filter tag to allow chained filters
- * made lexer more flexible as you can now change the default delimiters
- * added set tag
- * changed default directory permission when cache dir does not exist (more secure)
- * added macro support
- * changed filters first optional argument to be a Twig_Environment instance instead of a Twig_Template instance
- * made Twig_Autoloader::autoload() a static method
- * avoid writing template file if an error occurs
- * added $ escaping when outputting raw strings
- * enhanced some error messages to ease debugging
- * fixed empty cache files when the template contains an error
-
-* 0.9.1 (2009-10-14)
-
-  * fixed a bug in PHP 5.2.6
-  * fixed numbers with one than one decimal
-  * added support for method calls with arguments ({{ foo.bar('a', 43) }})
-  * made small speed optimizations
-  * made minor tweaks to allow better extensibility and flexibility
-
-* 0.9.0 (2009-10-12)
-
- * Initial release
diff --git a/vendor/twig/twig/LICENSE b/vendor/twig/twig/LICENSE
deleted file mode 100644
index a470002..0000000
--- a/vendor/twig/twig/LICENSE
+++ /dev/null
@@ -1,31 +0,0 @@
-Copyright (c) 2009-2014 by the Twig Team.
-
-Some 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.
-
-    * The names of the contributors may not be used to endorse or
-      promote products derived from this software without specific
-      prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/twig/twig/README.rst b/vendor/twig/twig/README.rst
deleted file mode 100644
index 81737b0..0000000
--- a/vendor/twig/twig/README.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-Twig, the flexible, fast, and secure template language for PHP
-==============================================================
-
-Twig is a template language for PHP, released under the new BSD license (code
-and documentation).
-
-Twig uses a syntax similar to the Django and Jinja template languages which
-inspired the Twig runtime environment.
-
-More Information
-----------------
-
-Read the `documentation`_ for more information.
-
-.. _documentation: http://twig.sensiolabs.org/documentation
diff --git a/vendor/twig/twig/composer.json b/vendor/twig/twig/composer.json
deleted file mode 100644
index 339a5d4..0000000
--- a/vendor/twig/twig/composer.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-    "name": "twig/twig",
-    "type": "library",
-    "description": "Twig, the flexible, fast, and secure template language for PHP",
-    "keywords": ["templating"],
-    "homepage": "http://twig.sensiolabs.org",
-    "license": "BSD-3-Clause",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com",
-            "homepage": "http://fabien.potencier.org",
-            "role": "Lead Developer"
-        },
-        {
-            "name": "Twig Team",
-            "homepage": "http://twig.sensiolabs.org/contributors",
-            "role": "Contributors"
-        },
-        {
-            "name": "Armin Ronacher",
-            "email": "armin.ronacher@active-4.com",
-            "role": "Project Founder"
-        }
-    ],
-    "support": {
-        "forum": "https://groups.google.com/forum/#!forum/twig-users"
-    },
-    "require": {
-        "php": ">=5.2.7"
-    },
-    "require-dev": {
-        "symfony/phpunit-bridge": "~2.7",
-        "symfony/debug": "~2.7"
-    },
-    "autoload": {
-        "psr-0" : {
-            "Twig_" : "lib/"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.23-dev"
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Autoloader.php b/vendor/twig/twig/lib/Twig/Autoloader.php
deleted file mode 100644
index d47583f..0000000
--- a/vendor/twig/twig/lib/Twig/Autoloader.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Autoloader class is deprecated and will be removed in 2.0. Use Composer instead.', E_USER_DEPRECATED);
-
-/**
- * Autoloads Twig classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated Use Composer instead. Will be removed in Twig 2.0.
- */
-class Twig_Autoloader
-{
-    /**
-     * Registers Twig_Autoloader as an SPL autoloader.
-     *
-     * @param bool $prepend Whether to prepend the autoloader or not.
-     */
-    public static function register($prepend = false)
-    {
-        @trigger_error('Using Twig_Autoloader is deprecated. Use Composer instead.', E_USER_DEPRECATED);
-
-        if (PHP_VERSION_ID < 50300) {
-            spl_autoload_register(array(__CLASS__, 'autoload'));
-        } else {
-            spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
-        }
-    }
-
-    /**
-     * Handles autoloading of classes.
-     *
-     * @param string $class A class name.
-     */
-    public static function autoload($class)
-    {
-        if (0 !== strpos($class, 'Twig')) {
-            return;
-        }
-
-        if (is_file($file = dirname(__FILE__).'/../'.str_replace(array('_', "\0"), array('/', ''), $class).'.php')) {
-            require $file;
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php b/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php
deleted file mode 100644
index 3c6ef66..0000000
--- a/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Twig_BaseNodeVisitor can be used to make node visitors compatible with Twig 1.x and 2.x.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Twig_BaseNodeVisitor implements Twig_NodeVisitorInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    final public function enterNode(Twig_NodeInterface $node, Twig_Environment $env)
-    {
-        if (!$node instanceof Twig_Node) {
-            throw new LogicException('Twig_BaseNodeVisitor only supports Twig_Node instances.');
-        }
-
-        return $this->doEnterNode($node, $env);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    final public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env)
-    {
-        if (!$node instanceof Twig_Node) {
-            throw new LogicException('Twig_BaseNodeVisitor only supports Twig_Node instances.');
-        }
-
-        return $this->doLeaveNode($node, $env);
-    }
-
-    /**
-     * Called before child nodes are visited.
-     *
-     * @param Twig_Node        $node The node to visit
-     * @param Twig_Environment $env  The Twig environment instance
-     *
-     * @return Twig_Node The modified node
-     */
-    abstract protected function doEnterNode(Twig_Node $node, Twig_Environment $env);
-
-    /**
-     * Called after child nodes are visited.
-     *
-     * @param Twig_Node        $node The node to visit
-     * @param Twig_Environment $env  The Twig environment instance
-     *
-     * @return Twig_Node|false The modified node or false if the node must be removed
-     */
-    abstract protected function doLeaveNode(Twig_Node $node, Twig_Environment $env);
-}
diff --git a/vendor/twig/twig/lib/Twig/Cache/Filesystem.php b/vendor/twig/twig/lib/Twig/Cache/Filesystem.php
deleted file mode 100644
index 2c2182a..0000000
--- a/vendor/twig/twig/lib/Twig/Cache/Filesystem.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Implements a cache on the filesystem.
- *
- * @author Andrew Tch <andrew@noop.lv>
- */
-class Twig_Cache_Filesystem implements Twig_CacheInterface
-{
-    const FORCE_BYTECODE_INVALIDATION = 1;
-
-    private $directory;
-    private $options;
-
-    /**
-     * @param $directory string The root cache directory
-     * @param $options   int    A set of options
-     */
-    public function __construct($directory, $options = 0)
-    {
-        $this->directory = $directory;
-        $this->options = $options;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function generateKey($name, $className)
-    {
-        $hash = hash('sha256', $className);
-
-        return $this->directory.'/'.$hash[0].$hash[1].'/'.$hash.'.php';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function load($key)
-    {
-        @include_once $key;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($key, $content)
-    {
-        $dir = dirname($key);
-        if (!is_dir($dir)) {
-            if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) {
-                throw new RuntimeException(sprintf('Unable to create the cache directory (%s).', $dir));
-            }
-        } elseif (!is_writable($dir)) {
-            throw new RuntimeException(sprintf('Unable to write in the cache directory (%s).', $dir));
-        }
-
-        $tmpFile = tempnam($dir, basename($key));
-        if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $key)) {
-            @chmod($key, 0666 & ~umask());
-
-            if (self::FORCE_BYTECODE_INVALIDATION == ($this->options & self::FORCE_BYTECODE_INVALIDATION)) {
-                // Compile cached file into bytecode cache
-                if (function_exists('opcache_invalidate')) {
-                    opcache_invalidate($key, true);
-                } elseif (function_exists('apc_compile_file')) {
-                    apc_compile_file($key);
-                }
-            }
-
-            return;
-        }
-
-        throw new RuntimeException(sprintf('Failed to write cache file "%s".', $key));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTimestamp($key)
-    {
-        if (!file_exists($key)) {
-            return 0;
-        }
-
-        return (int) @filemtime($key);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Cache/Null.php b/vendor/twig/twig/lib/Twig/Cache/Null.php
deleted file mode 100644
index fde8c80..0000000
--- a/vendor/twig/twig/lib/Twig/Cache/Null.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Implements a no-cache strategy.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Cache_Null implements Twig_CacheInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function generateKey($name, $className)
-    {
-        return '';
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($key, $content)
-    {
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function load($key)
-    {
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTimestamp($key)
-    {
-        return 0;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/CacheInterface.php b/vendor/twig/twig/lib/Twig/CacheInterface.php
deleted file mode 100644
index 9b17e0f..0000000
--- a/vendor/twig/twig/lib/Twig/CacheInterface.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interface implemented by cache classes.
- *
- * It is highly recommended to always store templates on the filesystem to
- * benefit from the PHP opcode cache. This interface is mostly useful if you
- * need to implement a custom strategy for storing templates on the filesystem.
- *
- * @author Andrew Tch <andrew@noop.lv>
- */
-interface Twig_CacheInterface
-{
-    /**
-     * Generates a cache key for the given template class name.
-     *
-     * @param string $name      The template name
-     * @param string $className The template class name
-     *
-     * @return string
-     */
-    public function generateKey($name, $className);
-
-    /**
-     * Writes the compiled template to cache.
-     *
-     * @param string $key     The cache key
-     * @param string $content The template representation as a PHP class
-     */
-    public function write($key, $content);
-
-    /**
-     * Loads a template from the cache.
-     *
-     * @param string $key The cache key
-     */
-    public function load($key);
-
-    /**
-     * Returns the modification timestamp of a key.
-     *
-     * @param string $key The cache key
-     *
-     * @return int
-     */
-    public function getTimestamp($key);
-}
diff --git a/vendor/twig/twig/lib/Twig/Compiler.php b/vendor/twig/twig/lib/Twig/Compiler.php
deleted file mode 100644
index abea3aa..0000000
--- a/vendor/twig/twig/lib/Twig/Compiler.php
+++ /dev/null
@@ -1,277 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Compiles a node to PHP code.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Compiler implements Twig_CompilerInterface
-{
-    protected $lastLine;
-    protected $source;
-    protected $indentation;
-    protected $env;
-    protected $debugInfo = array();
-    protected $sourceOffset;
-    protected $sourceLine;
-    protected $filename;
-
-    /**
-     * Constructor.
-     *
-     * @param Twig_Environment $env The twig environment instance
-     */
-    public function __construct(Twig_Environment $env)
-    {
-        $this->env = $env;
-    }
-
-    public function getFilename()
-    {
-        return $this->filename;
-    }
-
-    /**
-     * Returns the environment instance related to this compiler.
-     *
-     * @return Twig_Environment The environment instance
-     */
-    public function getEnvironment()
-    {
-        return $this->env;
-    }
-
-    /**
-     * Gets the current PHP code after compilation.
-     *
-     * @return string The PHP code
-     */
-    public function getSource()
-    {
-        return $this->source;
-    }
-
-    /**
-     * Compiles a node.
-     *
-     * @param Twig_NodeInterface $node        The node to compile
-     * @param int                $indentation The current indentation
-     *
-     * @return Twig_Compiler The current compiler instance
-     */
-    public function compile(Twig_NodeInterface $node, $indentation = 0)
-    {
-        $this->lastLine = null;
-        $this->source = '';
-        $this->debugInfo = array();
-        $this->sourceOffset = 0;
-        // source code starts at 1 (as we then increment it when we encounter new lines)
-        $this->sourceLine = 1;
-        $this->indentation = $indentation;
-
-        if ($node instanceof Twig_Node_Module) {
-            $this->filename = $node->getAttribute('filename');
-        }
-
-        $node->compile($this);
-
-        return $this;
-    }
-
-    public function subcompile(Twig_NodeInterface $node, $raw = true)
-    {
-        if (false === $raw) {
-            $this->addIndentation();
-        }
-
-        $node->compile($this);
-
-        return $this;
-    }
-
-    /**
-     * Adds a raw string to the compiled code.
-     *
-     * @param string $string The string
-     *
-     * @return Twig_Compiler The current compiler instance
-     */
-    public function raw($string)
-    {
-        $this->source .= $string;
-
-        return $this;
-    }
-
-    /**
-     * Writes a string to the compiled code by adding indentation.
-     *
-     * @return Twig_Compiler The current compiler instance
-     */
-    public function write()
-    {
-        $strings = func_get_args();
-        foreach ($strings as $string) {
-            $this->addIndentation();
-            $this->source .= $string;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Appends an indentation to the current PHP code after compilation.
-     *
-     * @return Twig_Compiler The current compiler instance
-     */
-    public function addIndentation()
-    {
-        $this->source .= str_repeat(' ', $this->indentation * 4);
-
-        return $this;
-    }
-
-    /**
-     * Adds a quoted string to the compiled code.
-     *
-     * @param string $value The string
-     *
-     * @return Twig_Compiler The current compiler instance
-     */
-    public function string($value)
-    {
-        $this->source .= sprintf('"%s"', addcslashes($value, "\0\t\"\$\\"));
-
-        return $this;
-    }
-
-    /**
-     * Returns a PHP representation of a given value.
-     *
-     * @param mixed $value The value to convert
-     *
-     * @return Twig_Compiler The current compiler instance
-     */
-    public function repr($value)
-    {
-        if (is_int($value) || is_float($value)) {
-            if (false !== $locale = setlocale(LC_NUMERIC, 0)) {
-                setlocale(LC_NUMERIC, 'C');
-            }
-
-            $this->raw($value);
-
-            if (false !== $locale) {
-                setlocale(LC_NUMERIC, $locale);
-            }
-        } elseif (null === $value) {
-            $this->raw('null');
-        } elseif (is_bool($value)) {
-            $this->raw($value ? 'true' : 'false');
-        } elseif (is_array($value)) {
-            $this->raw('array(');
-            $first = true;
-            foreach ($value as $key => $v) {
-                if (!$first) {
-                    $this->raw(', ');
-                }
-                $first = false;
-                $this->repr($key);
-                $this->raw(' => ');
-                $this->repr($v);
-            }
-            $this->raw(')');
-        } else {
-            $this->string($value);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Adds debugging information.
-     *
-     * @param Twig_NodeInterface $node The related twig node
-     *
-     * @return Twig_Compiler The current compiler instance
-     */
-    public function addDebugInfo(Twig_NodeInterface $node)
-    {
-        if ($node->getLine() != $this->lastLine) {
-            $this->write(sprintf("// line %d\n", $node->getLine()));
-
-            // when mbstring.func_overload is set to 2
-            // mb_substr_count() replaces substr_count()
-            // but they have different signatures!
-            if (((int) ini_get('mbstring.func_overload')) & 2) {
-                // this is much slower than the "right" version
-                $this->sourceLine += mb_substr_count(mb_substr($this->source, $this->sourceOffset), "\n");
-            } else {
-                $this->sourceLine += substr_count($this->source, "\n", $this->sourceOffset);
-            }
-            $this->sourceOffset = strlen($this->source);
-            $this->debugInfo[$this->sourceLine] = $node->getLine();
-
-            $this->lastLine = $node->getLine();
-        }
-
-        return $this;
-    }
-
-    public function getDebugInfo()
-    {
-        ksort($this->debugInfo);
-
-        return $this->debugInfo;
-    }
-
-    /**
-     * Indents the generated code.
-     *
-     * @param int $step The number of indentation to add
-     *
-     * @return Twig_Compiler The current compiler instance
-     */
-    public function indent($step = 1)
-    {
-        $this->indentation += $step;
-
-        return $this;
-    }
-
-    /**
-     * Outdents the generated code.
-     *
-     * @param int $step The number of indentation to remove
-     *
-     * @return Twig_Compiler The current compiler instance
-     *
-     * @throws LogicException When trying to outdent too much so the indentation would become negative
-     */
-    public function outdent($step = 1)
-    {
-        // can't outdent by more steps than the current indentation level
-        if ($this->indentation < $step) {
-            throw new LogicException('Unable to call outdent() as the indentation would become negative');
-        }
-
-        $this->indentation -= $step;
-
-        return $this;
-    }
-
-    public function getVarName()
-    {
-        return sprintf('__internal_%s', hash('sha256', uniqid(mt_rand(), true), false));
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/CompilerInterface.php b/vendor/twig/twig/lib/Twig/CompilerInterface.php
deleted file mode 100644
index 272c767..0000000
--- a/vendor/twig/twig/lib/Twig/CompilerInterface.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interface implemented by compiler classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_CompilerInterface
-{
-    /**
-     * Compiles a node.
-     *
-     * @param Twig_NodeInterface $node The node to compile
-     *
-     * @return Twig_CompilerInterface The current compiler instance
-     */
-    public function compile(Twig_NodeInterface $node);
-
-    /**
-     * Gets the current PHP code after compilation.
-     *
-     * @return string The PHP code
-     */
-    public function getSource();
-}
diff --git a/vendor/twig/twig/lib/Twig/Environment.php b/vendor/twig/twig/lib/Twig/Environment.php
deleted file mode 100644
index 99a6b01..0000000
--- a/vendor/twig/twig/lib/Twig/Environment.php
+++ /dev/null
@@ -1,1381 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Stores the Twig configuration.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Environment
-{
-    const VERSION = '1.23.1';
-
-    protected $charset;
-    protected $loader;
-    protected $debug;
-    protected $autoReload;
-    protected $cache;
-    protected $lexer;
-    protected $parser;
-    protected $compiler;
-    protected $baseTemplateClass;
-    protected $extensions;
-    protected $parsers;
-    protected $visitors;
-    protected $filters;
-    protected $tests;
-    protected $functions;
-    protected $globals;
-    protected $runtimeInitialized = false;
-    protected $extensionInitialized = false;
-    protected $loadedTemplates;
-    protected $strictVariables;
-    protected $unaryOperators;
-    protected $binaryOperators;
-    protected $templateClassPrefix = '__TwigTemplate_';
-    protected $functionCallbacks = array();
-    protected $filterCallbacks = array();
-    protected $staging;
-
-    private $originalCache;
-    private $bcWriteCacheFile = false;
-    private $bcGetCacheFilename = false;
-    private $lastModifiedExtension = 0;
-
-    /**
-     * Constructor.
-     *
-     * Available options:
-     *
-     *  * debug: When set to true, it automatically set "auto_reload" to true as
-     *           well (default to false).
-     *
-     *  * charset: The charset used by the templates (default to UTF-8).
-     *
-     *  * base_template_class: The base template class to use for generated
-     *                         templates (default to Twig_Template).
-     *
-     *  * cache: An absolute path where to store the compiled templates,
-     *           a Twig_Cache_Interface implementation,
-     *           or false to disable compilation cache (default).
-     *
-     *  * auto_reload: Whether to reload the template if the original source changed.
-     *                 If you don't provide the auto_reload option, it will be
-     *                 determined automatically based on the debug value.
-     *
-     *  * strict_variables: Whether to ignore invalid variables in templates
-     *                      (default to false).
-     *
-     *  * autoescape: Whether to enable auto-escaping (default to html):
-     *                  * false: disable auto-escaping
-     *                  * true: equivalent to html
-     *                  * html, js: set the autoescaping to one of the supported strategies
-     *                  * filename: set the autoescaping strategy based on the template filename extension
-     *                  * PHP callback: a PHP callback that returns an escaping strategy based on the template "filename"
-     *
-     *  * optimizations: A flag that indicates which optimizations to apply
-     *                   (default to -1 which means that all optimizations are enabled;
-     *                   set it to 0 to disable).
-     *
-     * @param Twig_LoaderInterface $loader  A Twig_LoaderInterface instance
-     * @param array                $options An array of options
-     */
-    public function __construct(Twig_LoaderInterface $loader = null, $options = array())
-    {
-        if (null !== $loader) {
-            $this->setLoader($loader);
-        } else {
-            @trigger_error('Not passing a Twig_LoaderInterface as the first constructor argument of Twig_Environment is deprecated.', E_USER_DEPRECATED);
-        }
-
-        $options = array_merge(array(
-            'debug' => false,
-            'charset' => 'UTF-8',
-            'base_template_class' => 'Twig_Template',
-            'strict_variables' => false,
-            'autoescape' => 'html',
-            'cache' => false,
-            'auto_reload' => null,
-            'optimizations' => -1,
-        ), $options);
-
-        $this->debug = (bool) $options['debug'];
-        $this->charset = strtoupper($options['charset']);
-        $this->baseTemplateClass = $options['base_template_class'];
-        $this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload'];
-        $this->strictVariables = (bool) $options['strict_variables'];
-        $this->setCache($options['cache']);
-
-        $this->addExtension(new Twig_Extension_Core());
-        $this->addExtension(new Twig_Extension_Escaper($options['autoescape']));
-        $this->addExtension(new Twig_Extension_Optimizer($options['optimizations']));
-        $this->staging = new Twig_Extension_Staging();
-
-        // For BC
-        if (is_string($this->originalCache)) {
-            $r = new ReflectionMethod($this, 'writeCacheFile');
-            if ($r->getDeclaringClass()->getName() !== __CLASS__) {
-                @trigger_error('The Twig_Environment::writeCacheFile method is deprecated and will be removed in Twig 2.0.', E_USER_DEPRECATED);
-
-                $this->bcWriteCacheFile = true;
-            }
-
-            $r = new ReflectionMethod($this, 'getCacheFilename');
-            if ($r->getDeclaringClass()->getName() !== __CLASS__) {
-                @trigger_error('The Twig_Environment::getCacheFilename method is deprecated and will be removed in Twig 2.0.', E_USER_DEPRECATED);
-
-                $this->bcGetCacheFilename = true;
-            }
-        }
-    }
-
-    /**
-     * Gets the base template class for compiled templates.
-     *
-     * @return string The base template class name
-     */
-    public function getBaseTemplateClass()
-    {
-        return $this->baseTemplateClass;
-    }
-
-    /**
-     * Sets the base template class for compiled templates.
-     *
-     * @param string $class The base template class name
-     */
-    public function setBaseTemplateClass($class)
-    {
-        $this->baseTemplateClass = $class;
-    }
-
-    /**
-     * Enables debugging mode.
-     */
-    public function enableDebug()
-    {
-        $this->debug = true;
-    }
-
-    /**
-     * Disables debugging mode.
-     */
-    public function disableDebug()
-    {
-        $this->debug = false;
-    }
-
-    /**
-     * Checks if debug mode is enabled.
-     *
-     * @return bool true if debug mode is enabled, false otherwise
-     */
-    public function isDebug()
-    {
-        return $this->debug;
-    }
-
-    /**
-     * Enables the auto_reload option.
-     */
-    public function enableAutoReload()
-    {
-        $this->autoReload = true;
-    }
-
-    /**
-     * Disables the auto_reload option.
-     */
-    public function disableAutoReload()
-    {
-        $this->autoReload = false;
-    }
-
-    /**
-     * Checks if the auto_reload option is enabled.
-     *
-     * @return bool true if auto_reload is enabled, false otherwise
-     */
-    public function isAutoReload()
-    {
-        return $this->autoReload;
-    }
-
-    /**
-     * Enables the strict_variables option.
-     */
-    public function enableStrictVariables()
-    {
-        $this->strictVariables = true;
-    }
-
-    /**
-     * Disables the strict_variables option.
-     */
-    public function disableStrictVariables()
-    {
-        $this->strictVariables = false;
-    }
-
-    /**
-     * Checks if the strict_variables option is enabled.
-     *
-     * @return bool true if strict_variables is enabled, false otherwise
-     */
-    public function isStrictVariables()
-    {
-        return $this->strictVariables;
-    }
-
-    /**
-     * Gets the current cache implementation.
-     *
-     * @param bool $original Whether to return the original cache option or the real cache instance
-     *
-     * @return Twig_CacheInterface|string|false A Twig_CacheInterface implementation,
-     *                                          an absolute path to the compiled templates,
-     *                                          or false to disable cache
-     */
-    public function getCache($original = true)
-    {
-        return $original ? $this->originalCache : $this->cache;
-    }
-
-    /**
-     * Sets the current cache implementation.
-     *
-     * @param Twig_CacheInterface|string|false $cache A Twig_CacheInterface implementation,
-     *                                                an absolute path to the compiled templates,
-     *                                                or false to disable cache
-     */
-    public function setCache($cache)
-    {
-        if (is_string($cache)) {
-            $this->originalCache = $cache;
-            $this->cache = new Twig_Cache_Filesystem($cache);
-        } elseif (false === $cache) {
-            $this->originalCache = $cache;
-            $this->cache = new Twig_Cache_Null();
-        } elseif (null === $cache) {
-            @trigger_error('Using "null" as the cache strategy is deprecated and will be removed in Twig 2.0.', E_USER_DEPRECATED);
-            $this->originalCache = false;
-            $this->cache = new Twig_Cache_Null();
-        } elseif ($cache instanceof Twig_CacheInterface) {
-            $this->originalCache = $this->cache = $cache;
-        } else {
-            throw new LogicException(sprintf('Cache can only be a string, false, or a Twig_CacheInterface implementation.'));
-        }
-    }
-
-    /**
-     * Gets the cache filename for a given template.
-     *
-     * @param string $name The template name
-     *
-     * @return string|false The cache file name or false when caching is disabled
-     *
-     * @deprecated since 1.22 (to be removed in 2.0)
-     */
-    public function getCacheFilename($name)
-    {
-        @trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        $key = $this->cache->generateKey($name, $this->getTemplateClass($name));
-
-        return !$key ? false : $key;
-    }
-
-    /**
-     * Gets the template class associated with the given string.
-     *
-     * The generated template class is based on the following parameters:
-     *
-     *  * The cache key for the given template;
-     *  * The currently enabled extensions;
-     *  * Whether the Twig C extension is available or not.
-     *
-     * @param string   $name  The name for which to calculate the template class name
-     * @param int|null $index The index if it is an embedded template
-     *
-     * @return string The template class name
-     */
-    public function getTemplateClass($name, $index = null)
-    {
-        $key = $this->getLoader()->getCacheKey($name);
-        $key .= json_encode(array_keys($this->extensions));
-        $key .= function_exists('twig_template_get_attributes');
-
-        return $this->templateClassPrefix.hash('sha256', $key).(null === $index ? '' : '_'.$index);
-    }
-
-    /**
-     * Gets the template class prefix.
-     *
-     * @return string The template class prefix
-     *
-     * @deprecated since 1.22 (to be removed in 2.0)
-     */
-    public function getTemplateClassPrefix()
-    {
-        @trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        return $this->templateClassPrefix;
-    }
-
-    /**
-     * Renders a template.
-     *
-     * @param string $name    The template name
-     * @param array  $context An array of parameters to pass to the template
-     *
-     * @return string The rendered template
-     *
-     * @throws Twig_Error_Loader  When the template cannot be found
-     * @throws Twig_Error_Syntax  When an error occurred during compilation
-     * @throws Twig_Error_Runtime When an error occurred during rendering
-     */
-    public function render($name, array $context = array())
-    {
-        return $this->loadTemplate($name)->render($context);
-    }
-
-    /**
-     * Displays a template.
-     *
-     * @param string $name    The template name
-     * @param array  $context An array of parameters to pass to the template
-     *
-     * @throws Twig_Error_Loader  When the template cannot be found
-     * @throws Twig_Error_Syntax  When an error occurred during compilation
-     * @throws Twig_Error_Runtime When an error occurred during rendering
-     */
-    public function display($name, array $context = array())
-    {
-        $this->loadTemplate($name)->display($context);
-    }
-
-    /**
-     * Loads a template by name.
-     *
-     * @param string $name  The template name
-     * @param int    $index The index if it is an embedded template
-     *
-     * @return Twig_TemplateInterface A template instance representing the given template name
-     *
-     * @throws Twig_Error_Loader When the template cannot be found
-     * @throws Twig_Error_Syntax When an error occurred during compilation
-     */
-    public function loadTemplate($name, $index = null)
-    {
-        $cls = $this->getTemplateClass($name, $index);
-
-        if (isset($this->loadedTemplates[$cls])) {
-            return $this->loadedTemplates[$cls];
-        }
-
-        if (!class_exists($cls, false)) {
-            if ($this->bcGetCacheFilename) {
-                $key = $this->getCacheFilename($name);
-            } else {
-                $key = $this->cache->generateKey($name, $cls);
-            }
-
-            if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) {
-                $this->cache->load($key);
-            }
-
-            if (!class_exists($cls, false)) {
-                $content = $this->compileSource($this->getLoader()->getSource($name), $name);
-                if ($this->bcWriteCacheFile) {
-                    $this->writeCacheFile($key, $content);
-                } else {
-                    $this->cache->write($key, $content);
-                }
-
-                eval('?>'.$content);
-            }
-        }
-
-        if (!$this->runtimeInitialized) {
-            $this->initRuntime();
-        }
-
-        return $this->loadedTemplates[$cls] = new $cls($this);
-    }
-
-    /**
-     * Creates a template from source.
-     *
-     * This method should not be used as a generic way to load templates.
-     *
-     * @param string $template The template name
-     *
-     * @return Twig_Template A template instance representing the given template name
-     *
-     * @throws Twig_Error_Loader When the template cannot be found
-     * @throws Twig_Error_Syntax When an error occurred during compilation
-     */
-    public function createTemplate($template)
-    {
-        $name = sprintf('__string_template__%s', hash('sha256', uniqid(mt_rand(), true), false));
-
-        $loader = new Twig_Loader_Chain(array(
-            new Twig_Loader_Array(array($name => $template)),
-            $current = $this->getLoader(),
-        ));
-
-        $this->setLoader($loader);
-        try {
-            $template = $this->loadTemplate($name);
-        } catch (Exception $e) {
-            $this->setLoader($current);
-
-            throw $e;
-        }
-        $this->setLoader($current);
-
-        return $template;
-    }
-
-    /**
-     * Returns true if the template is still fresh.
-     *
-     * Besides checking the loader for freshness information,
-     * this method also checks if the enabled extensions have
-     * not changed.
-     *
-     * @param string $name The template name
-     * @param int    $time The last modification time of the cached template
-     *
-     * @return bool true if the template is fresh, false otherwise
-     */
-    public function isTemplateFresh($name, $time)
-    {
-        if (0 === $this->lastModifiedExtension) {
-            foreach ($this->extensions as $extension) {
-                $r = new ReflectionObject($extension);
-                if (file_exists($r->getFileName()) && ($extensionTime = filemtime($r->getFileName())) > $this->lastModifiedExtension) {
-                    $this->lastModifiedExtension = $extensionTime;
-                }
-            }
-        }
-
-        return $this->lastModifiedExtension <= $time && $this->getLoader()->isFresh($name, $time);
-    }
-
-    /**
-     * Tries to load a template consecutively from an array.
-     *
-     * Similar to loadTemplate() but it also accepts Twig_TemplateInterface instances and an array
-     * of templates where each is tried to be loaded.
-     *
-     * @param string|Twig_Template|array $names A template or an array of templates to try consecutively
-     *
-     * @return Twig_Template
-     *
-     * @throws Twig_Error_Loader When none of the templates can be found
-     * @throws Twig_Error_Syntax When an error occurred during compilation
-     */
-    public function resolveTemplate($names)
-    {
-        if (!is_array($names)) {
-            $names = array($names);
-        }
-
-        foreach ($names as $name) {
-            if ($name instanceof Twig_Template) {
-                return $name;
-            }
-
-            try {
-                return $this->loadTemplate($name);
-            } catch (Twig_Error_Loader $e) {
-            }
-        }
-
-        if (1 === count($names)) {
-            throw $e;
-        }
-
-        throw new Twig_Error_Loader(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names)));
-    }
-
-    /**
-     * Clears the internal template cache.
-     *
-     * @deprecated since 1.18.3 (to be removed in 2.0)
-     */
-    public function clearTemplateCache()
-    {
-        @trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        $this->loadedTemplates = array();
-    }
-
-    /**
-     * Clears the template cache files on the filesystem.
-     *
-     * @deprecated since 1.22 (to be removed in 2.0)
-     */
-    public function clearCacheFiles()
-    {
-        @trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        if (is_string($this->originalCache)) {
-            foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->originalCache), RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
-                if ($file->isFile()) {
-                    @unlink($file->getPathname());
-                }
-            }
-        }
-    }
-
-    /**
-     * Gets the Lexer instance.
-     *
-     * @return Twig_LexerInterface A Twig_LexerInterface instance
-     */
-    public function getLexer()
-    {
-        if (null === $this->lexer) {
-            $this->lexer = new Twig_Lexer($this);
-        }
-
-        return $this->lexer;
-    }
-
-    /**
-     * Sets the Lexer instance.
-     *
-     * @param Twig_LexerInterface $lexer A Twig_LexerInterface instance
-     */
-    public function setLexer(Twig_LexerInterface $lexer)
-    {
-        $this->lexer = $lexer;
-    }
-
-    /**
-     * Tokenizes a source code.
-     *
-     * @param string $source The template source code
-     * @param string $name   The template name
-     *
-     * @return Twig_TokenStream A Twig_TokenStream instance
-     *
-     * @throws Twig_Error_Syntax When the code is syntactically wrong
-     */
-    public function tokenize($source, $name = null)
-    {
-        return $this->getLexer()->tokenize($source, $name);
-    }
-
-    /**
-     * Gets the Parser instance.
-     *
-     * @return Twig_ParserInterface A Twig_ParserInterface instance
-     */
-    public function getParser()
-    {
-        if (null === $this->parser) {
-            $this->parser = new Twig_Parser($this);
-        }
-
-        return $this->parser;
-    }
-
-    /**
-     * Sets the Parser instance.
-     *
-     * @param Twig_ParserInterface $parser A Twig_ParserInterface instance
-     */
-    public function setParser(Twig_ParserInterface $parser)
-    {
-        $this->parser = $parser;
-    }
-
-    /**
-     * Converts a token stream to a node tree.
-     *
-     * @param Twig_TokenStream $stream A token stream instance
-     *
-     * @return Twig_Node_Module A node tree
-     *
-     * @throws Twig_Error_Syntax When the token stream is syntactically or semantically wrong
-     */
-    public function parse(Twig_TokenStream $stream)
-    {
-        return $this->getParser()->parse($stream);
-    }
-
-    /**
-     * Gets the Compiler instance.
-     *
-     * @return Twig_CompilerInterface A Twig_CompilerInterface instance
-     */
-    public function getCompiler()
-    {
-        if (null === $this->compiler) {
-            $this->compiler = new Twig_Compiler($this);
-        }
-
-        return $this->compiler;
-    }
-
-    /**
-     * Sets the Compiler instance.
-     *
-     * @param Twig_CompilerInterface $compiler A Twig_CompilerInterface instance
-     */
-    public function setCompiler(Twig_CompilerInterface $compiler)
-    {
-        $this->compiler = $compiler;
-    }
-
-    /**
-     * Compiles a node and returns the PHP code.
-     *
-     * @param Twig_NodeInterface $node A Twig_NodeInterface instance
-     *
-     * @return string The compiled PHP source code
-     */
-    public function compile(Twig_NodeInterface $node)
-    {
-        return $this->getCompiler()->compile($node)->getSource();
-    }
-
-    /**
-     * Compiles a template source code.
-     *
-     * @param string $source The template source code
-     * @param string $name   The template name
-     *
-     * @return string The compiled PHP source code
-     *
-     * @throws Twig_Error_Syntax When there was an error during tokenizing, parsing or compiling
-     */
-    public function compileSource($source, $name = null)
-    {
-        try {
-            $compiled = $this->compile($this->parse($this->tokenize($source, $name)), $source);
-
-            if (isset($source[0])) {
-                $compiled .= '/* '.str_replace(array('*/', "\r\n", "\r", "\n"), array('*//* ', "\n", "\n", "*/\n/* "), $source)."*/\n";
-            }
-
-            return $compiled;
-        } catch (Twig_Error $e) {
-            $e->setTemplateFile($name);
-            throw $e;
-        } catch (Exception $e) {
-            throw new Twig_Error_Syntax(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $name, $e);
-        }
-    }
-
-    /**
-     * Sets the Loader instance.
-     *
-     * @param Twig_LoaderInterface $loader A Twig_LoaderInterface instance
-     */
-    public function setLoader(Twig_LoaderInterface $loader)
-    {
-        $this->loader = $loader;
-    }
-
-    /**
-     * Gets the Loader instance.
-     *
-     * @return Twig_LoaderInterface A Twig_LoaderInterface instance
-     */
-    public function getLoader()
-    {
-        if (null === $this->loader) {
-            throw new LogicException('You must set a loader first.');
-        }
-
-        return $this->loader;
-    }
-
-    /**
-     * Sets the default template charset.
-     *
-     * @param string $charset The default charset
-     */
-    public function setCharset($charset)
-    {
-        $this->charset = strtoupper($charset);
-    }
-
-    /**
-     * Gets the default template charset.
-     *
-     * @return string The default charset
-     */
-    public function getCharset()
-    {
-        return $this->charset;
-    }
-
-    /**
-     * Initializes the runtime environment.
-     *
-     * @deprecated since 1.23 (to be removed in 2.0)
-     */
-    public function initRuntime()
-    {
-        $this->runtimeInitialized = true;
-
-        foreach ($this->getExtensions() as $name => $extension) {
-            if (!$extension instanceof Twig_Extension_InitRuntimeInterface) {
-                $m = new ReflectionMethod($extension, 'initRuntime');
-
-                if ('Twig_Extension' !== $m->getDeclaringClass()->getName()) {
-                    @trigger_error(sprintf('Defining the initRuntime() method in the "%s" extension is deprecated. Use the `needs_environment` option to get the Twig_Environment instance in filters, functions, or tests; or explicitly implement Twig_Extension_InitRuntimeInterface if needed (not recommended).', $name), E_USER_DEPRECATED);
-                }
-            }
-
-            $extension->initRuntime($this);
-        }
-    }
-
-    /**
-     * Returns true if the given extension is registered.
-     *
-     * @param string $name The extension name
-     *
-     * @return bool Whether the extension is registered or not
-     */
-    public function hasExtension($name)
-    {
-        return isset($this->extensions[$name]);
-    }
-
-    /**
-     * Gets an extension by name.
-     *
-     * @param string $name The extension name
-     *
-     * @return Twig_ExtensionInterface A Twig_ExtensionInterface instance
-     */
-    public function getExtension($name)
-    {
-        if (!isset($this->extensions[$name])) {
-            throw new Twig_Error_Runtime(sprintf('The "%s" extension is not enabled.', $name));
-        }
-
-        return $this->extensions[$name];
-    }
-
-    /**
-     * Registers an extension.
-     *
-     * @param Twig_ExtensionInterface $extension A Twig_ExtensionInterface instance
-     */
-    public function addExtension(Twig_ExtensionInterface $extension)
-    {
-        $name = $extension->getName();
-
-        if ($this->extensionInitialized) {
-            throw new LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $name));
-        }
-
-        if (isset($this->extensions[$name])) {
-            @trigger_error(sprintf('The possibility to register the same extension twice ("%s") is deprecated and will be removed in Twig 2.0. Use proper PHP inheritance instead.', $name), E_USER_DEPRECATED);
-        }
-
-        $this->lastModifiedExtension = 0;
-
-        $this->extensions[$name] = $extension;
-    }
-
-    /**
-     * Removes an extension by name.
-     *
-     * This method is deprecated and you should not use it.
-     *
-     * @param string $name The extension name
-     *
-     * @deprecated since 1.12 (to be removed in 2.0)
-     */
-    public function removeExtension($name)
-    {
-        @trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        if ($this->extensionInitialized) {
-            throw new LogicException(sprintf('Unable to remove extension "%s" as extensions have already been initialized.', $name));
-        }
-
-        unset($this->extensions[$name]);
-    }
-
-    /**
-     * Registers an array of extensions.
-     *
-     * @param array $extensions An array of extensions
-     */
-    public function setExtensions(array $extensions)
-    {
-        foreach ($extensions as $extension) {
-            $this->addExtension($extension);
-        }
-    }
-
-    /**
-     * Returns all registered extensions.
-     *
-     * @return array An array of extensions
-     */
-    public function getExtensions()
-    {
-        return $this->extensions;
-    }
-
-    /**
-     * Registers a Token Parser.
-     *
-     * @param Twig_TokenParserInterface $parser A Twig_TokenParserInterface instance
-     */
-    public function addTokenParser(Twig_TokenParserInterface $parser)
-    {
-        if ($this->extensionInitialized) {
-            throw new LogicException('Unable to add a token parser as extensions have already been initialized.');
-        }
-
-        $this->staging->addTokenParser($parser);
-    }
-
-    /**
-     * Gets the registered Token Parsers.
-     *
-     * @return Twig_TokenParserBrokerInterface A broker containing token parsers
-     */
-    public function getTokenParsers()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->parsers;
-    }
-
-    /**
-     * Gets registered tags.
-     *
-     * Be warned that this method cannot return tags defined by Twig_TokenParserBrokerInterface classes.
-     *
-     * @return Twig_TokenParserInterface[] An array of Twig_TokenParserInterface instances
-     */
-    public function getTags()
-    {
-        $tags = array();
-        foreach ($this->getTokenParsers()->getParsers() as $parser) {
-            if ($parser instanceof Twig_TokenParserInterface) {
-                $tags[$parser->getTag()] = $parser;
-            }
-        }
-
-        return $tags;
-    }
-
-    /**
-     * Registers a Node Visitor.
-     *
-     * @param Twig_NodeVisitorInterface $visitor A Twig_NodeVisitorInterface instance
-     */
-    public function addNodeVisitor(Twig_NodeVisitorInterface $visitor)
-    {
-        if ($this->extensionInitialized) {
-            throw new LogicException('Unable to add a node visitor as extensions have already been initialized.');
-        }
-
-        $this->staging->addNodeVisitor($visitor);
-    }
-
-    /**
-     * Gets the registered Node Visitors.
-     *
-     * @return Twig_NodeVisitorInterface[] An array of Twig_NodeVisitorInterface instances
-     */
-    public function getNodeVisitors()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->visitors;
-    }
-
-    /**
-     * Registers a Filter.
-     *
-     * @param string|Twig_SimpleFilter               $name   The filter name or a Twig_SimpleFilter instance
-     * @param Twig_FilterInterface|Twig_SimpleFilter $filter A Twig_FilterInterface instance or a Twig_SimpleFilter instance
-     */
-    public function addFilter($name, $filter = null)
-    {
-        if (!$name instanceof Twig_SimpleFilter && !($filter instanceof Twig_SimpleFilter || $filter instanceof Twig_FilterInterface)) {
-            throw new LogicException('A filter must be an instance of Twig_FilterInterface or Twig_SimpleFilter');
-        }
-
-        if ($name instanceof Twig_SimpleFilter) {
-            $filter = $name;
-            $name = $filter->getName();
-        } else {
-            @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated. Pass an instance of "Twig_SimpleFilter" instead when defining filter "%s".', __METHOD__, $name), E_USER_DEPRECATED);
-        }
-
-        if ($this->extensionInitialized) {
-            throw new LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $name));
-        }
-
-        $this->staging->addFilter($name, $filter);
-    }
-
-    /**
-     * Get a filter by name.
-     *
-     * Subclasses may override this method and load filters differently;
-     * so no list of filters is available.
-     *
-     * @param string $name The filter name
-     *
-     * @return Twig_Filter|false A Twig_Filter instance or false if the filter does not exist
-     */
-    public function getFilter($name)
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        if (isset($this->filters[$name])) {
-            return $this->filters[$name];
-        }
-
-        foreach ($this->filters as $pattern => $filter) {
-            $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count);
-
-            if ($count) {
-                if (preg_match('#^'.$pattern.'$#', $name, $matches)) {
-                    array_shift($matches);
-                    $filter->setArguments($matches);
-
-                    return $filter;
-                }
-            }
-        }
-
-        foreach ($this->filterCallbacks as $callback) {
-            if (false !== $filter = call_user_func($callback, $name)) {
-                return $filter;
-            }
-        }
-
-        return false;
-    }
-
-    public function registerUndefinedFilterCallback($callable)
-    {
-        $this->filterCallbacks[] = $callable;
-    }
-
-    /**
-     * Gets the registered Filters.
-     *
-     * Be warned that this method cannot return filters defined with registerUndefinedFunctionCallback.
-     *
-     * @return Twig_FilterInterface[] An array of Twig_FilterInterface instances
-     *
-     * @see registerUndefinedFilterCallback
-     */
-    public function getFilters()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->filters;
-    }
-
-    /**
-     * Registers a Test.
-     *
-     * @param string|Twig_SimpleTest             $name The test name or a Twig_SimpleTest instance
-     * @param Twig_TestInterface|Twig_SimpleTest $test A Twig_TestInterface instance or a Twig_SimpleTest instance
-     */
-    public function addTest($name, $test = null)
-    {
-        if (!$name instanceof Twig_SimpleTest && !($test instanceof Twig_SimpleTest || $test instanceof Twig_TestInterface)) {
-            throw new LogicException('A test must be an instance of Twig_TestInterface or Twig_SimpleTest');
-        }
-
-        if ($name instanceof Twig_SimpleTest) {
-            $test = $name;
-            $name = $test->getName();
-        } else {
-            @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated. Pass an instance of "Twig_SimpleTest" instead when defining test "%s".', __METHOD__, $name), E_USER_DEPRECATED);
-        }
-
-        if ($this->extensionInitialized) {
-            throw new LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $name));
-        }
-
-        $this->staging->addTest($name, $test);
-    }
-
-    /**
-     * Gets the registered Tests.
-     *
-     * @return Twig_TestInterface[] An array of Twig_TestInterface instances
-     */
-    public function getTests()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->tests;
-    }
-
-    /**
-     * Gets a test by name.
-     *
-     * @param string $name The test name
-     *
-     * @return Twig_Test|false A Twig_Test instance or false if the test does not exist
-     */
-    public function getTest($name)
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        if (isset($this->tests[$name])) {
-            return $this->tests[$name];
-        }
-
-        return false;
-    }
-
-    /**
-     * Registers a Function.
-     *
-     * @param string|Twig_SimpleFunction                 $name     The function name or a Twig_SimpleFunction instance
-     * @param Twig_FunctionInterface|Twig_SimpleFunction $function A Twig_FunctionInterface instance or a Twig_SimpleFunction instance
-     */
-    public function addFunction($name, $function = null)
-    {
-        if (!$name instanceof Twig_SimpleFunction && !($function instanceof Twig_SimpleFunction || $function instanceof Twig_FunctionInterface)) {
-            throw new LogicException('A function must be an instance of Twig_FunctionInterface or Twig_SimpleFunction');
-        }
-
-        if ($name instanceof Twig_SimpleFunction) {
-            $function = $name;
-            $name = $function->getName();
-        } else {
-            @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated. Pass an instance of "Twig_SimpleFunction" instead when defining function "%s".', __METHOD__, $name), E_USER_DEPRECATED);
-        }
-
-        if ($this->extensionInitialized) {
-            throw new LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $name));
-        }
-
-        $this->staging->addFunction($name, $function);
-    }
-
-    /**
-     * Get a function by name.
-     *
-     * Subclasses may override this method and load functions differently;
-     * so no list of functions is available.
-     *
-     * @param string $name function name
-     *
-     * @return Twig_Function|false A Twig_Function instance or false if the function does not exist
-     */
-    public function getFunction($name)
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        if (isset($this->functions[$name])) {
-            return $this->functions[$name];
-        }
-
-        foreach ($this->functions as $pattern => $function) {
-            $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count);
-
-            if ($count) {
-                if (preg_match('#^'.$pattern.'$#', $name, $matches)) {
-                    array_shift($matches);
-                    $function->setArguments($matches);
-
-                    return $function;
-                }
-            }
-        }
-
-        foreach ($this->functionCallbacks as $callback) {
-            if (false !== $function = call_user_func($callback, $name)) {
-                return $function;
-            }
-        }
-
-        return false;
-    }
-
-    public function registerUndefinedFunctionCallback($callable)
-    {
-        $this->functionCallbacks[] = $callable;
-    }
-
-    /**
-     * Gets registered functions.
-     *
-     * Be warned that this method cannot return functions defined with registerUndefinedFunctionCallback.
-     *
-     * @return Twig_FunctionInterface[] An array of Twig_FunctionInterface instances
-     *
-     * @see registerUndefinedFunctionCallback
-     */
-    public function getFunctions()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->functions;
-    }
-
-    /**
-     * Registers a Global.
-     *
-     * New globals can be added before compiling or rendering a template;
-     * but after, you can only update existing globals.
-     *
-     * @param string $name  The global name
-     * @param mixed  $value The global value
-     */
-    public function addGlobal($name, $value)
-    {
-        if ($this->extensionInitialized || $this->runtimeInitialized) {
-            if (null === $this->globals) {
-                $this->globals = $this->initGlobals();
-            }
-
-            if (!array_key_exists($name, $this->globals)) {
-                // The deprecation notice must be turned into the following exception in Twig 2.0
-                @trigger_error(sprintf('Registering global variable "%s" at runtime or when the extensions have already been initialized is deprecated.', $name), E_USER_DEPRECATED);
-                //throw new LogicException(sprintf('Unable to add global "%s" as the runtime or the extensions have already been initialized.', $name));
-            }
-        }
-
-        if ($this->extensionInitialized || $this->runtimeInitialized) {
-            // update the value
-            $this->globals[$name] = $value;
-        } else {
-            $this->staging->addGlobal($name, $value);
-        }
-    }
-
-    /**
-     * Gets the registered Globals.
-     *
-     * @return array An array of globals
-     */
-    public function getGlobals()
-    {
-        if (!$this->runtimeInitialized && !$this->extensionInitialized) {
-            return $this->initGlobals();
-        }
-
-        if (null === $this->globals) {
-            $this->globals = $this->initGlobals();
-        }
-
-        return $this->globals;
-    }
-
-    /**
-     * Merges a context with the defined globals.
-     *
-     * @param array $context An array representing the context
-     *
-     * @return array The context merged with the globals
-     */
-    public function mergeGlobals(array $context)
-    {
-        // we don't use array_merge as the context being generally
-        // bigger than globals, this code is faster.
-        foreach ($this->getGlobals() as $key => $value) {
-            if (!array_key_exists($key, $context)) {
-                $context[$key] = $value;
-            }
-        }
-
-        return $context;
-    }
-
-    /**
-     * Gets the registered unary Operators.
-     *
-     * @return array An array of unary operators
-     */
-    public function getUnaryOperators()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->unaryOperators;
-    }
-
-    /**
-     * Gets the registered binary Operators.
-     *
-     * @return array An array of binary operators
-     */
-    public function getBinaryOperators()
-    {
-        if (!$this->extensionInitialized) {
-            $this->initExtensions();
-        }
-
-        return $this->binaryOperators;
-    }
-
-    /**
-     * @deprecated since 1.23 (to be removed in 2.0)
-     */
-    public function computeAlternatives($name, $items)
-    {
-        @trigger_error(sprintf('The %s method is deprecated and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED);
-
-        return Twig_Error_Syntax::computeAlternatives($name, $items);
-    }
-
-    protected function initGlobals()
-    {
-        $globals = array();
-        foreach ($this->extensions as $name => $extension) {
-            if (!$extension instanceof Twig_Extension_GlobalsInterface) {
-                $m = new ReflectionMethod($extension, 'getGlobals');
-
-                if ('Twig_Extension' !== $m->getDeclaringClass()->getName()) {
-                    @trigger_error(sprintf('Defining the getGlobals() method in the "%s" extension is deprecated without explicitly implementing Twig_Extension_GlobalsInterface.', $name), E_USER_DEPRECATED);
-                }
-            }
-
-            $extGlob = $extension->getGlobals();
-            if (!is_array($extGlob)) {
-                throw new UnexpectedValueException(sprintf('"%s::getGlobals()" must return an array of globals.', get_class($extension)));
-            }
-
-            $globals[] = $extGlob;
-        }
-
-        $globals[] = $this->staging->getGlobals();
-
-        return call_user_func_array('array_merge', $globals);
-    }
-
-    protected function initExtensions()
-    {
-        if ($this->extensionInitialized) {
-            return;
-        }
-
-        $this->extensionInitialized = true;
-        $this->parsers = new Twig_TokenParserBroker(array(), array(), false);
-        $this->filters = array();
-        $this->functions = array();
-        $this->tests = array();
-        $this->visitors = array();
-        $this->unaryOperators = array();
-        $this->binaryOperators = array();
-
-        foreach ($this->extensions as $extension) {
-            $this->initExtension($extension);
-        }
-        $this->initExtension($this->staging);
-    }
-
-    protected function initExtension(Twig_ExtensionInterface $extension)
-    {
-        // filters
-        foreach ($extension->getFilters() as $name => $filter) {
-            if ($filter instanceof Twig_SimpleFilter) {
-                $name = $filter->getName();
-            } else {
-                @trigger_error(sprintf('Using an instance of "%s" for filter "%s" is deprecated. Use Twig_SimpleFilter instead.', get_class($filter), $name), E_USER_DEPRECATED);
-            }
-
-            $this->filters[$name] = $filter;
-        }
-
-        // functions
-        foreach ($extension->getFunctions() as $name => $function) {
-            if ($function instanceof Twig_SimpleFunction) {
-                $name = $function->getName();
-            } else {
-                @trigger_error(sprintf('Using an instance of "%s" for function "%s" is deprecated. Use Twig_SimpleFunction instead.', get_class($function), $name), E_USER_DEPRECATED);
-            }
-
-            $this->functions[$name] = $function;
-        }
-
-        // tests
-        foreach ($extension->getTests() as $name => $test) {
-            if ($test instanceof Twig_SimpleTest) {
-                $name = $test->getName();
-            } else {
-                @trigger_error(sprintf('Using an instance of "%s" for test "%s" is deprecated. Use Twig_SimpleTest instead.', get_class($test), $name), E_USER_DEPRECATED);
-            }
-
-            $this->tests[$name] = $test;
-        }
-
-        // token parsers
-        foreach ($extension->getTokenParsers() as $parser) {
-            if ($parser instanceof Twig_TokenParserInterface) {
-                $this->parsers->addTokenParser($parser);
-            } elseif ($parser instanceof Twig_TokenParserBrokerInterface) {
-                @trigger_error('Registering a Twig_TokenParserBrokerInterface instance is deprecated.', E_USER_DEPRECATED);
-
-                $this->parsers->addTokenParserBroker($parser);
-            } else {
-                throw new LogicException('getTokenParsers() must return an array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances');
-            }
-        }
-
-        // node visitors
-        foreach ($extension->getNodeVisitors() as $visitor) {
-            $this->visitors[] = $visitor;
-        }
-
-        // operators
-        if ($operators = $extension->getOperators()) {
-            if (2 !== count($operators)) {
-                throw new InvalidArgumentException(sprintf('"%s::getOperators()" does not return a valid operators array.', get_class($extension)));
-            }
-
-            $this->unaryOperators = array_merge($this->unaryOperators, $operators[0]);
-            $this->binaryOperators = array_merge($this->binaryOperators, $operators[1]);
-        }
-    }
-
-    /**
-     * @deprecated since 1.22 (to be removed in 2.0)
-     */
-    protected function writeCacheFile($file, $content)
-    {
-        $this->cache->write($file, $content);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Error.php b/vendor/twig/twig/lib/Twig/Error.php
deleted file mode 100644
index 37c7435..0000000
--- a/vendor/twig/twig/lib/Twig/Error.php
+++ /dev/null
@@ -1,272 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Twig base exception.
- *
- * This exception class and its children must only be used when
- * an error occurs during the loading of a template, when a syntax error
- * is detected in a template, or when rendering a template. Other
- * errors must use regular PHP exception classes (like when the template
- * cache directory is not writable for instance).
- *
- * To help debugging template issues, this class tracks the original template
- * name and line where the error occurred.
- *
- * Whenever possible, you must set these information (original template name
- * and line number) yourself by passing them to the constructor. If some or all
- * these information are not available from where you throw the exception, then
- * this class will guess them automatically (when the line number is set to -1
- * and/or the filename is set to null). As this is a costly operation, this
- * can be disabled by passing false for both the filename and the line number
- * when creating a new instance of this class.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Error extends Exception
-{
-    protected $lineno;
-    protected $filename;
-    protected $rawMessage;
-    protected $previous;
-
-    /**
-     * Constructor.
-     *
-     * Set both the line number and the filename to false to
-     * disable automatic guessing of the original template name
-     * and line number.
-     *
-     * Set the line number to -1 to enable its automatic guessing.
-     * Set the filename to null to enable its automatic guessing.
-     *
-     * By default, automatic guessing is enabled.
-     *
-     * @param string    $message  The error message
-     * @param int       $lineno   The template line where the error occurred
-     * @param string    $filename The template file name where the error occurred
-     * @param Exception $previous The previous exception
-     */
-    public function __construct($message, $lineno = -1, $filename = null, Exception $previous = null)
-    {
-        if (PHP_VERSION_ID < 50300) {
-            $this->previous = $previous;
-            parent::__construct('');
-        } else {
-            parent::__construct('', 0, $previous);
-        }
-
-        $this->lineno = $lineno;
-        $this->filename = $filename;
-
-        if (-1 === $this->lineno || null === $this->filename) {
-            $this->guessTemplateInfo();
-        }
-
-        $this->rawMessage = $message;
-
-        $this->updateRepr();
-    }
-
-    /**
-     * Gets the raw message.
-     *
-     * @return string The raw message
-     */
-    public function getRawMessage()
-    {
-        return $this->rawMessage;
-    }
-
-    /**
-     * Gets the filename where the error occurred.
-     *
-     * @return string The filename
-     */
-    public function getTemplateFile()
-    {
-        return $this->filename;
-    }
-
-    /**
-     * Sets the filename where the error occurred.
-     *
-     * @param string $filename The filename
-     */
-    public function setTemplateFile($filename)
-    {
-        $this->filename = $filename;
-
-        $this->updateRepr();
-    }
-
-    /**
-     * Gets the template line where the error occurred.
-     *
-     * @return int The template line
-     */
-    public function getTemplateLine()
-    {
-        return $this->lineno;
-    }
-
-    /**
-     * Sets the template line where the error occurred.
-     *
-     * @param int $lineno The template line
-     */
-    public function setTemplateLine($lineno)
-    {
-        $this->lineno = $lineno;
-
-        $this->updateRepr();
-    }
-
-    public function guess()
-    {
-        $this->guessTemplateInfo();
-        $this->updateRepr();
-    }
-
-    /**
-     * For PHP < 5.3.0, provides access to the getPrevious() method.
-     *
-     * @param string $method    The method name
-     * @param array  $arguments The parameters to be passed to the method
-     *
-     * @return Exception The previous exception or null
-     *
-     * @throws BadMethodCallException
-     */
-    public function __call($method, $arguments)
-    {
-        if ('getprevious' == strtolower($method)) {
-            return $this->previous;
-        }
-
-        throw new BadMethodCallException(sprintf('Method "Twig_Error::%s()" does not exist.', $method));
-    }
-
-    public function appendMessage($rawMessage)
-    {
-        $this->rawMessage .= $rawMessage;
-        $this->updateRepr();
-    }
-
-    /**
-     * @internal
-     */
-    protected function updateRepr()
-    {
-        $this->message = $this->rawMessage;
-
-        $dot = false;
-        if ('.' === substr($this->message, -1)) {
-            $this->message = substr($this->message, 0, -1);
-            $dot = true;
-        }
-
-        $questionMark = false;
-        if ('?' === substr($this->message, -1)) {
-            $this->message = substr($this->message, 0, -1);
-            $questionMark = true;
-        }
-
-        if ($this->filename) {
-            if (is_string($this->filename) || (is_object($this->filename) && method_exists($this->filename, '__toString'))) {
-                $filename = sprintf('"%s"', $this->filename);
-            } else {
-                $filename = json_encode($this->filename);
-            }
-            $this->message .= sprintf(' in %s', $filename);
-        }
-
-        if ($this->lineno && $this->lineno >= 0) {
-            $this->message .= sprintf(' at line %d', $this->lineno);
-        }
-
-        if ($dot) {
-            $this->message .= '.';
-        }
-
-        if ($questionMark) {
-            $this->message .= '?';
-        }
-    }
-
-    /**
-     * @internal
-     */
-    protected function guessTemplateInfo()
-    {
-        $template = null;
-        $templateClass = null;
-
-        if (PHP_VERSION_ID >= 50306) {
-            $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS | DEBUG_BACKTRACE_PROVIDE_OBJECT);
-        } else {
-            $backtrace = debug_backtrace();
-        }
-
-        foreach ($backtrace as $trace) {
-            if (isset($trace['object']) && $trace['object'] instanceof Twig_Template && 'Twig_Template' !== get_class($trace['object'])) {
-                $currentClass = get_class($trace['object']);
-                $isEmbedContainer = 0 === strpos($templateClass, $currentClass);
-                if (null === $this->filename || ($this->filename == $trace['object']->getTemplateName() && !$isEmbedContainer)) {
-                    $template = $trace['object'];
-                    $templateClass = get_class($trace['object']);
-                }
-            }
-        }
-
-        // update template filename
-        if (null !== $template && null === $this->filename) {
-            $this->filename = $template->getTemplateName();
-        }
-
-        if (null === $template || $this->lineno > -1) {
-            return;
-        }
-
-        $r = new ReflectionObject($template);
-        $file = $r->getFileName();
-
-        // hhvm has a bug where eval'ed files comes out as the current directory
-        if (is_dir($file)) {
-            $file = '';
-        }
-
-        $exceptions = array($e = $this);
-        while (($e instanceof self || method_exists($e, 'getPrevious')) && $e = $e->getPrevious()) {
-            $exceptions[] = $e;
-        }
-
-        while ($e = array_pop($exceptions)) {
-            $traces = $e->getTrace();
-            array_unshift($traces, array('file' => $e->getFile(), 'line' => $e->getLine()));
-
-            while ($trace = array_shift($traces)) {
-                if (!isset($trace['file']) || !isset($trace['line']) || $file != $trace['file']) {
-                    continue;
-                }
-
-                foreach ($template->getDebugInfo() as $codeLine => $templateLine) {
-                    if ($codeLine <= $trace['line']) {
-                        // update template line
-                        $this->lineno = $templateLine;
-
-                        return;
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Error/Loader.php b/vendor/twig/twig/lib/Twig/Error/Loader.php
deleted file mode 100644
index 68efb57..0000000
--- a/vendor/twig/twig/lib/Twig/Error/Loader.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Exception thrown when an error occurs during template loading.
- *
- * Automatic template information guessing is always turned off as
- * if a template cannot be loaded, there is nothing to guess.
- * However, when a template is loaded from another one, then, we need
- * to find the current context and this is automatically done by
- * Twig_Template::displayWithErrorHandling().
- *
- * This strategy makes Twig_Environment::resolveTemplate() much faster.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Error_Loader extends Twig_Error
-{
-    public function __construct($message, $lineno = -1, $filename = null, Exception $previous = null)
-    {
-        parent::__construct($message, false, false, $previous);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Error/Runtime.php b/vendor/twig/twig/lib/Twig/Error/Runtime.php
deleted file mode 100644
index 8b6cedd..0000000
--- a/vendor/twig/twig/lib/Twig/Error/Runtime.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Exception thrown when an error occurs at runtime.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Error_Runtime extends Twig_Error
-{
-}
diff --git a/vendor/twig/twig/lib/Twig/Error/Syntax.php b/vendor/twig/twig/lib/Twig/Error/Syntax.php
deleted file mode 100644
index f73730a..0000000
--- a/vendor/twig/twig/lib/Twig/Error/Syntax.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Exception thrown when a syntax error occurs during lexing or parsing of a template.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Error_Syntax extends Twig_Error
-{
-    /**
-     * Tweaks the error message to include suggestions.
-     *
-     * @param string $name  The original name of the item that does not exist
-     * @param array  $items An array of possible items
-     */
-    public function addSuggestions($name, array $items)
-    {
-        if (!$alternatives = self::computeAlternatives($name, $items)) {
-            return;
-        }
-
-        $this->appendMessage(sprintf(' Did you mean "%s"?', implode('", "', $alternatives)));
-    }
-
-    /**
-     * @internal
-     *
-     * To be merged with the addSuggestions() method in 2.0.
-     */
-    public static function computeAlternatives($name, $items)
-    {
-        $alternatives = array();
-        foreach ($items as $item) {
-            $lev = levenshtein($name, $item);
-            if ($lev <= strlen($name) / 3 || false !== strpos($item, $name)) {
-                $alternatives[$item] = $lev;
-            }
-        }
-        asort($alternatives);
-
-        return array_keys($alternatives);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/ExistsLoaderInterface.php b/vendor/twig/twig/lib/Twig/ExistsLoaderInterface.php
deleted file mode 100644
index b168c3c..0000000
--- a/vendor/twig/twig/lib/Twig/ExistsLoaderInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Adds an exists() method for loaders.
- *
- * @author Florin Patan <florinpatan@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_ExistsLoaderInterface
-{
-    /**
-     * Check if we have the source code of a template, given its name.
-     *
-     * @param string $name The name of the template to check if we can load
-     *
-     * @return bool If the template source code is handled by this loader or not
-     */
-    public function exists($name);
-}
diff --git a/vendor/twig/twig/lib/Twig/ExpressionParser.php b/vendor/twig/twig/lib/Twig/ExpressionParser.php
deleted file mode 100644
index cad11af..0000000
--- a/vendor/twig/twig/lib/Twig/ExpressionParser.php
+++ /dev/null
@@ -1,641 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Parses expressions.
- *
- * This parser implements a "Precedence climbing" algorithm.
- *
- * @see http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm
- * @see http://en.wikipedia.org/wiki/Operator-precedence_parser
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_ExpressionParser
-{
-    const OPERATOR_LEFT = 1;
-    const OPERATOR_RIGHT = 2;
-
-    protected $parser;
-    protected $unaryOperators;
-    protected $binaryOperators;
-
-    public function __construct(Twig_Parser $parser, array $unaryOperators, array $binaryOperators)
-    {
-        $this->parser = $parser;
-        $this->unaryOperators = $unaryOperators;
-        $this->binaryOperators = $binaryOperators;
-    }
-
-    public function parseExpression($precedence = 0)
-    {
-        $expr = $this->getPrimary();
-        $token = $this->parser->getCurrentToken();
-        while ($this->isBinary($token) && $this->binaryOperators[$token->getValue()]['precedence'] >= $precedence) {
-            $op = $this->binaryOperators[$token->getValue()];
-            $this->parser->getStream()->next();
-
-            if (isset($op['callable'])) {
-                $expr = call_user_func($op['callable'], $this->parser, $expr);
-            } else {
-                $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']);
-                $class = $op['class'];
-                $expr = new $class($expr, $expr1, $token->getLine());
-            }
-
-            $token = $this->parser->getCurrentToken();
-        }
-
-        if (0 === $precedence) {
-            return $this->parseConditionalExpression($expr);
-        }
-
-        return $expr;
-    }
-
-    protected function getPrimary()
-    {
-        $token = $this->parser->getCurrentToken();
-
-        if ($this->isUnary($token)) {
-            $operator = $this->unaryOperators[$token->getValue()];
-            $this->parser->getStream()->next();
-            $expr = $this->parseExpression($operator['precedence']);
-            $class = $operator['class'];
-
-            return $this->parsePostfixExpression(new $class($expr, $token->getLine()));
-        } elseif ($token->test(Twig_Token::PUNCTUATION_TYPE, '(')) {
-            $this->parser->getStream()->next();
-            $expr = $this->parseExpression();
-            $this->parser->getStream()->expect(Twig_Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed');
-
-            return $this->parsePostfixExpression($expr);
-        }
-
-        return $this->parsePrimaryExpression();
-    }
-
-    protected function parseConditionalExpression($expr)
-    {
-        while ($this->parser->getStream()->nextIf(Twig_Token::PUNCTUATION_TYPE, '?')) {
-            if (!$this->parser->getStream()->nextIf(Twig_Token::PUNCTUATION_TYPE, ':')) {
-                $expr2 = $this->parseExpression();
-                if ($this->parser->getStream()->nextIf(Twig_Token::PUNCTUATION_TYPE, ':')) {
-                    $expr3 = $this->parseExpression();
-                } else {
-                    $expr3 = new Twig_Node_Expression_Constant('', $this->parser->getCurrentToken()->getLine());
-                }
-            } else {
-                $expr2 = $expr;
-                $expr3 = $this->parseExpression();
-            }
-
-            $expr = new Twig_Node_Expression_Conditional($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine());
-        }
-
-        return $expr;
-    }
-
-    protected function isUnary(Twig_Token $token)
-    {
-        return $token->test(Twig_Token::OPERATOR_TYPE) && isset($this->unaryOperators[$token->getValue()]);
-    }
-
-    protected function isBinary(Twig_Token $token)
-    {
-        return $token->test(Twig_Token::OPERATOR_TYPE) && isset($this->binaryOperators[$token->getValue()]);
-    }
-
-    public function parsePrimaryExpression()
-    {
-        $token = $this->parser->getCurrentToken();
-        switch ($token->getType()) {
-            case Twig_Token::NAME_TYPE:
-                $this->parser->getStream()->next();
-                switch ($token->getValue()) {
-                    case 'true':
-                    case 'TRUE':
-                        $node = new Twig_Node_Expression_Constant(true, $token->getLine());
-                        break;
-
-                    case 'false':
-                    case 'FALSE':
-                        $node = new Twig_Node_Expression_Constant(false, $token->getLine());
-                        break;
-
-                    case 'none':
-                    case 'NONE':
-                    case 'null':
-                    case 'NULL':
-                        $node = new Twig_Node_Expression_Constant(null, $token->getLine());
-                        break;
-
-                    default:
-                        if ('(' === $this->parser->getCurrentToken()->getValue()) {
-                            $node = $this->getFunctionNode($token->getValue(), $token->getLine());
-                        } else {
-                            $node = new Twig_Node_Expression_Name($token->getValue(), $token->getLine());
-                        }
-                }
-                break;
-
-            case Twig_Token::NUMBER_TYPE:
-                $this->parser->getStream()->next();
-                $node = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine());
-                break;
-
-            case Twig_Token::STRING_TYPE:
-            case Twig_Token::INTERPOLATION_START_TYPE:
-                $node = $this->parseStringExpression();
-                break;
-
-            case Twig_Token::OPERATOR_TYPE:
-                if (preg_match(Twig_Lexer::REGEX_NAME, $token->getValue(), $matches) && $matches[0] == $token->getValue()) {
-                    // in this context, string operators are variable names
-                    $this->parser->getStream()->next();
-                    $node = new Twig_Node_Expression_Name($token->getValue(), $token->getLine());
-                    break;
-                } elseif (isset($this->unaryOperators[$token->getValue()])) {
-                    $class = $this->unaryOperators[$token->getValue()]['class'];
-
-                    $ref = new ReflectionClass($class);
-                    $negClass = 'Twig_Node_Expression_Unary_Neg';
-                    $posClass = 'Twig_Node_Expression_Unary_Pos';
-                    if (!(in_array($ref->getName(), array($negClass, $posClass)) || $ref->isSubclassOf($negClass) || $ref->isSubclassOf($posClass))) {
-                        throw new Twig_Error_Syntax(sprintf('Unexpected unary operator "%s".', $token->getValue()), $token->getLine(), $this->parser->getFilename());
-                    }
-
-                    $this->parser->getStream()->next();
-                    $expr = $this->parsePrimaryExpression();
-
-                    $node = new $class($expr, $token->getLine());
-                    break;
-                }
-
-            default:
-                if ($token->test(Twig_Token::PUNCTUATION_TYPE, '[')) {
-                    $node = $this->parseArrayExpression();
-                } elseif ($token->test(Twig_Token::PUNCTUATION_TYPE, '{')) {
-                    $node = $this->parseHashExpression();
-                } else {
-                    throw new Twig_Error_Syntax(sprintf('Unexpected token "%s" of value "%s".', Twig_Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getFilename());
-                }
-        }
-
-        return $this->parsePostfixExpression($node);
-    }
-
-    public function parseStringExpression()
-    {
-        $stream = $this->parser->getStream();
-
-        $nodes = array();
-        // a string cannot be followed by another string in a single expression
-        $nextCanBeString = true;
-        while (true) {
-            if ($nextCanBeString && $token = $stream->nextIf(Twig_Token::STRING_TYPE)) {
-                $nodes[] = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine());
-                $nextCanBeString = false;
-            } elseif ($stream->nextIf(Twig_Token::INTERPOLATION_START_TYPE)) {
-                $nodes[] = $this->parseExpression();
-                $stream->expect(Twig_Token::INTERPOLATION_END_TYPE);
-                $nextCanBeString = true;
-            } else {
-                break;
-            }
-        }
-
-        $expr = array_shift($nodes);
-        foreach ($nodes as $node) {
-            $expr = new Twig_Node_Expression_Binary_Concat($expr, $node, $node->getLine());
-        }
-
-        return $expr;
-    }
-
-    public function parseArrayExpression()
-    {
-        $stream = $this->parser->getStream();
-        $stream->expect(Twig_Token::PUNCTUATION_TYPE, '[', 'An array element was expected');
-
-        $node = new Twig_Node_Expression_Array(array(), $stream->getCurrent()->getLine());
-        $first = true;
-        while (!$stream->test(Twig_Token::PUNCTUATION_TYPE, ']')) {
-            if (!$first) {
-                $stream->expect(Twig_Token::PUNCTUATION_TYPE, ',', 'An array element must be followed by a comma');
-
-                // trailing ,?
-                if ($stream->test(Twig_Token::PUNCTUATION_TYPE, ']')) {
-                    break;
-                }
-            }
-            $first = false;
-
-            $node->addElement($this->parseExpression());
-        }
-        $stream->expect(Twig_Token::PUNCTUATION_TYPE, ']', 'An opened array is not properly closed');
-
-        return $node;
-    }
-
-    public function parseHashExpression()
-    {
-        $stream = $this->parser->getStream();
-        $stream->expect(Twig_Token::PUNCTUATION_TYPE, '{', 'A hash element was expected');
-
-        $node = new Twig_Node_Expression_Array(array(), $stream->getCurrent()->getLine());
-        $first = true;
-        while (!$stream->test(Twig_Token::PUNCTUATION_TYPE, '}')) {
-            if (!$first) {
-                $stream->expect(Twig_Token::PUNCTUATION_TYPE, ',', 'A hash value must be followed by a comma');
-
-                // trailing ,?
-                if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '}')) {
-                    break;
-                }
-            }
-            $first = false;
-
-            // a hash key can be:
-            //
-            //  * a number -- 12
-            //  * a string -- 'a'
-            //  * a name, which is equivalent to a string -- a
-            //  * an expression, which must be enclosed in parentheses -- (1 + 2)
-            if (($token = $stream->nextIf(Twig_Token::STRING_TYPE)) || ($token = $stream->nextIf(Twig_Token::NAME_TYPE)) || $token = $stream->nextIf(Twig_Token::NUMBER_TYPE)) {
-                $key = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine());
-            } elseif ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) {
-                $key = $this->parseExpression();
-            } else {
-                $current = $stream->getCurrent();
-
-                throw new Twig_Error_Syntax(sprintf('A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "%s" of value "%s".', Twig_Token::typeToEnglish($current->getType()), $current->getValue()), $current->getLine(), $this->parser->getFilename());
-            }
-
-            $stream->expect(Twig_Token::PUNCTUATION_TYPE, ':', 'A hash key must be followed by a colon (:)');
-            $value = $this->parseExpression();
-
-            $node->addElement($value, $key);
-        }
-        $stream->expect(Twig_Token::PUNCTUATION_TYPE, '}', 'An opened hash is not properly closed');
-
-        return $node;
-    }
-
-    public function parsePostfixExpression($node)
-    {
-        while (true) {
-            $token = $this->parser->getCurrentToken();
-            if ($token->getType() == Twig_Token::PUNCTUATION_TYPE) {
-                if ('.' == $token->getValue() || '[' == $token->getValue()) {
-                    $node = $this->parseSubscriptExpression($node);
-                } elseif ('|' == $token->getValue()) {
-                    $node = $this->parseFilterExpression($node);
-                } else {
-                    break;
-                }
-            } else {
-                break;
-            }
-        }
-
-        return $node;
-    }
-
-    public function getFunctionNode($name, $line)
-    {
-        switch ($name) {
-            case 'parent':
-                $this->parseArguments();
-                if (!count($this->parser->getBlockStack())) {
-                    throw new Twig_Error_Syntax('Calling "parent" outside a block is forbidden.', $line, $this->parser->getFilename());
-                }
-
-                if (!$this->parser->getParent() && !$this->parser->hasTraits()) {
-                    throw new Twig_Error_Syntax('Calling "parent" on a template that does not extend nor "use" another template is forbidden.', $line, $this->parser->getFilename());
-                }
-
-                return new Twig_Node_Expression_Parent($this->parser->peekBlockStack(), $line);
-            case 'block':
-                return new Twig_Node_Expression_BlockReference($this->parseArguments()->getNode(0), false, $line);
-            case 'attribute':
-                $args = $this->parseArguments();
-                if (count($args) < 2) {
-                    throw new Twig_Error_Syntax('The "attribute" function takes at least two arguments (the variable and the attributes).', $line, $this->parser->getFilename());
-                }
-
-                return new Twig_Node_Expression_GetAttr($args->getNode(0), $args->getNode(1), count($args) > 2 ? $args->getNode(2) : null, Twig_Template::ANY_CALL, $line);
-            default:
-                if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) {
-                    $arguments = new Twig_Node_Expression_Array(array(), $line);
-                    foreach ($this->parseArguments() as $n) {
-                        $arguments->addElement($n);
-                    }
-
-                    $node = new Twig_Node_Expression_MethodCall($alias['node'], $alias['name'], $arguments, $line);
-                    $node->setAttribute('safe', true);
-
-                    return $node;
-                }
-
-                $args = $this->parseArguments(true);
-                $class = $this->getFunctionNodeClass($name, $line);
-
-                return new $class($name, $args, $line);
-        }
-    }
-
-    public function parseSubscriptExpression($node)
-    {
-        $stream = $this->parser->getStream();
-        $token = $stream->next();
-        $lineno = $token->getLine();
-        $arguments = new Twig_Node_Expression_Array(array(), $lineno);
-        $type = Twig_Template::ANY_CALL;
-        if ($token->getValue() == '.') {
-            $token = $stream->next();
-            if (
-                $token->getType() == Twig_Token::NAME_TYPE
-                ||
-                $token->getType() == Twig_Token::NUMBER_TYPE
-                ||
-                ($token->getType() == Twig_Token::OPERATOR_TYPE && preg_match(Twig_Lexer::REGEX_NAME, $token->getValue()))
-            ) {
-                $arg = new Twig_Node_Expression_Constant($token->getValue(), $lineno);
-
-                if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) {
-                    $type = Twig_TemplateInterface::METHOD_CALL;
-                    foreach ($this->parseArguments() as $n) {
-                        $arguments->addElement($n);
-                    }
-                }
-            } else {
-                throw new Twig_Error_Syntax('Expected name or number', $lineno, $this->parser->getFilename());
-            }
-
-            if ($node instanceof Twig_Node_Expression_Name && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) {
-                if (!$arg instanceof Twig_Node_Expression_Constant) {
-                    throw new Twig_Error_Syntax(sprintf('Dynamic macro names are not supported (called on "%s").', $node->getAttribute('name')), $token->getLine(), $this->parser->getFilename());
-                }
-
-                $name = $arg->getAttribute('value');
-
-                if ($this->parser->isReservedMacroName($name)) {
-                    throw new Twig_Error_Syntax(sprintf('"%s" cannot be called as macro as it is a reserved keyword.', $name), $token->getLine(), $this->parser->getFilename());
-                }
-
-                $node = new Twig_Node_Expression_MethodCall($node, 'get'.$name, $arguments, $lineno);
-                $node->setAttribute('safe', true);
-
-                return $node;
-            }
-        } else {
-            $type = Twig_Template::ARRAY_CALL;
-
-            // slice?
-            $slice = false;
-            if ($stream->test(Twig_Token::PUNCTUATION_TYPE, ':')) {
-                $slice = true;
-                $arg = new Twig_Node_Expression_Constant(0, $token->getLine());
-            } else {
-                $arg = $this->parseExpression();
-            }
-
-            if ($stream->nextIf(Twig_Token::PUNCTUATION_TYPE, ':')) {
-                $slice = true;
-            }
-
-            if ($slice) {
-                if ($stream->test(Twig_Token::PUNCTUATION_TYPE, ']')) {
-                    $length = new Twig_Node_Expression_Constant(null, $token->getLine());
-                } else {
-                    $length = $this->parseExpression();
-                }
-
-                $class = $this->getFilterNodeClass('slice', $token->getLine());
-                $arguments = new Twig_Node(array($arg, $length));
-                $filter = new $class($node, new Twig_Node_Expression_Constant('slice', $token->getLine()), $arguments, $token->getLine());
-
-                $stream->expect(Twig_Token::PUNCTUATION_TYPE, ']');
-
-                return $filter;
-            }
-
-            $stream->expect(Twig_Token::PUNCTUATION_TYPE, ']');
-        }
-
-        return new Twig_Node_Expression_GetAttr($node, $arg, $arguments, $type, $lineno);
-    }
-
-    public function parseFilterExpression($node)
-    {
-        $this->parser->getStream()->next();
-
-        return $this->parseFilterExpressionRaw($node);
-    }
-
-    public function parseFilterExpressionRaw($node, $tag = null)
-    {
-        while (true) {
-            $token = $this->parser->getStream()->expect(Twig_Token::NAME_TYPE);
-
-            $name = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine());
-            if (!$this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, '(')) {
-                $arguments = new Twig_Node();
-            } else {
-                $arguments = $this->parseArguments(true);
-            }
-
-            $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine());
-
-            $node = new $class($node, $name, $arguments, $token->getLine(), $tag);
-
-            if (!$this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, '|')) {
-                break;
-            }
-
-            $this->parser->getStream()->next();
-        }
-
-        return $node;
-    }
-
-    /**
-     * Parses arguments.
-     *
-     * @param bool $namedArguments Whether to allow named arguments or not
-     * @param bool $definition     Whether we are parsing arguments for a function definition
-     *
-     * @return Twig_Node
-     *
-     * @throws Twig_Error_Syntax
-     */
-    public function parseArguments($namedArguments = false, $definition = false)
-    {
-        $args = array();
-        $stream = $this->parser->getStream();
-
-        $stream->expect(Twig_Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis');
-        while (!$stream->test(Twig_Token::PUNCTUATION_TYPE, ')')) {
-            if (!empty($args)) {
-                $stream->expect(Twig_Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma');
-            }
-
-            if ($definition) {
-                $token = $stream->expect(Twig_Token::NAME_TYPE, null, 'An argument must be a name');
-                $value = new Twig_Node_Expression_Name($token->getValue(), $this->parser->getCurrentToken()->getLine());
-            } else {
-                $value = $this->parseExpression();
-            }
-
-            $name = null;
-            if ($namedArguments && $token = $stream->nextIf(Twig_Token::OPERATOR_TYPE, '=')) {
-                if (!$value instanceof Twig_Node_Expression_Name) {
-                    throw new Twig_Error_Syntax(sprintf('A parameter name must be a string, "%s" given.', get_class($value)), $token->getLine(), $this->parser->getFilename());
-                }
-                $name = $value->getAttribute('name');
-
-                if ($definition) {
-                    $value = $this->parsePrimaryExpression();
-
-                    if (!$this->checkConstantExpression($value)) {
-                        throw new Twig_Error_Syntax(sprintf('A default value for an argument must be a constant (a boolean, a string, a number, or an array).'), $token->getLine(), $this->parser->getFilename());
-                    }
-                } else {
-                    $value = $this->parseExpression();
-                }
-            }
-
-            if ($definition) {
-                if (null === $name) {
-                    $name = $value->getAttribute('name');
-                    $value = new Twig_Node_Expression_Constant(null, $this->parser->getCurrentToken()->getLine());
-                }
-                $args[$name] = $value;
-            } else {
-                if (null === $name) {
-                    $args[] = $value;
-                } else {
-                    $args[$name] = $value;
-                }
-            }
-        }
-        $stream->expect(Twig_Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis');
-
-        return new Twig_Node($args);
-    }
-
-    public function parseAssignmentExpression()
-    {
-        $targets = array();
-        while (true) {
-            $token = $this->parser->getStream()->expect(Twig_Token::NAME_TYPE, null, 'Only variables can be assigned to');
-            if (in_array($token->getValue(), array('true', 'false', 'none'))) {
-                throw new Twig_Error_Syntax(sprintf('You cannot assign a value to "%s".', $token->getValue()), $token->getLine(), $this->parser->getFilename());
-            }
-            $targets[] = new Twig_Node_Expression_AssignName($token->getValue(), $token->getLine());
-
-            if (!$this->parser->getStream()->nextIf(Twig_Token::PUNCTUATION_TYPE, ',')) {
-                break;
-            }
-        }
-
-        return new Twig_Node($targets);
-    }
-
-    public function parseMultitargetExpression()
-    {
-        $targets = array();
-        while (true) {
-            $targets[] = $this->parseExpression();
-            if (!$this->parser->getStream()->nextIf(Twig_Token::PUNCTUATION_TYPE, ',')) {
-                break;
-            }
-        }
-
-        return new Twig_Node($targets);
-    }
-
-    protected function getFunctionNodeClass($name, $line)
-    {
-        $env = $this->parser->getEnvironment();
-
-        if (false === $function = $env->getFunction($name)) {
-            $e = new Twig_Error_Syntax(sprintf('Unknown "%s" function.', $name), $line, $this->parser->getFilename());
-            $e->addSuggestions($name, array_keys($env->getFunctions()));
-
-            throw $e;
-        }
-
-        if ($function instanceof Twig_SimpleFunction && $function->isDeprecated()) {
-            $message = sprintf('Twig Function "%s" is deprecated', $function->getName());
-            if ($function->getAlternative()) {
-                $message .= sprintf('. Use "%s" instead', $function->getAlternative());
-            }
-            $message .= sprintf(' in %s at line %d.', $this->parser->getFilename(), $line);
-
-            @trigger_error($message, E_USER_DEPRECATED);
-        }
-
-        if ($function instanceof Twig_SimpleFunction) {
-            return $function->getNodeClass();
-        }
-
-        return $function instanceof Twig_Function_Node ? $function->getClass() : 'Twig_Node_Expression_Function';
-    }
-
-    protected function getFilterNodeClass($name, $line)
-    {
-        $env = $this->parser->getEnvironment();
-
-        if (false === $filter = $env->getFilter($name)) {
-            $e = new Twig_Error_Syntax(sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getFilename());
-            $e->addSuggestions($name, array_keys($env->getFilters()));
-
-            throw $e;
-        }
-
-        if ($filter instanceof Twig_SimpleFilter && $filter->isDeprecated()) {
-            $message = sprintf('Twig Filter "%s" is deprecated', $filter->getName());
-            if ($filter->getAlternative()) {
-                $message .= sprintf('. Use "%s" instead', $filter->getAlternative());
-            }
-            $message .= sprintf(' in %s at line %d.', $this->parser->getFilename(), $line);
-
-            @trigger_error($message, E_USER_DEPRECATED);
-        }
-
-        if ($filter instanceof Twig_SimpleFilter) {
-            return $filter->getNodeClass();
-        }
-
-        return $filter instanceof Twig_Filter_Node ? $filter->getClass() : 'Twig_Node_Expression_Filter';
-    }
-
-    // checks that the node only contains "constant" elements
-    protected function checkConstantExpression(Twig_NodeInterface $node)
-    {
-        if (!($node instanceof Twig_Node_Expression_Constant || $node instanceof Twig_Node_Expression_Array
-            || $node instanceof Twig_Node_Expression_Unary_Neg || $node instanceof Twig_Node_Expression_Unary_Pos
-        )) {
-            return false;
-        }
-
-        foreach ($node as $n) {
-            if (!$this->checkConstantExpression($n)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension.php b/vendor/twig/twig/lib/Twig/Extension.php
deleted file mode 100644
index cb03b3d..0000000
--- a/vendor/twig/twig/lib/Twig/Extension.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-abstract class Twig_Extension implements Twig_ExtensionInterface
-{
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since 1.23 (to be removed in 2.0), implement Twig_Extension_InitRuntimeInterface instead
-     */
-    public function initRuntime(Twig_Environment $environment)
-    {
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTokenParsers()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getNodeVisitors()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFilters()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getTests()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFunctions()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getOperators()
-    {
-        return array();
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @deprecated since 1.23 (to be removed in 2.0), implement Twig_Extension_GlobalsInterface instead
-     */
-    public function getGlobals()
-    {
-        return array();
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Core.php b/vendor/twig/twig/lib/Twig/Extension/Core.php
deleted file mode 100644
index 0aed990..0000000
--- a/vendor/twig/twig/lib/Twig/Extension/Core.php
+++ /dev/null
@@ -1,1544 +0,0 @@
-<?php
-
-if (!defined('ENT_SUBSTITUTE')) {
-    // use 0 as hhvm does not support several flags yet
-    define('ENT_SUBSTITUTE', 0);
-}
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Extension_Core extends Twig_Extension
-{
-    protected $dateFormats = array('F j, Y H:i', '%d days');
-    protected $numberFormat = array(0, '.', ',');
-    protected $timezone = null;
-    protected $escapers = array();
-
-    /**
-     * Defines a new escaper to be used via the escape filter.
-     *
-     * @param string   $strategy The strategy name that should be used as a strategy in the escape call
-     * @param callable $callable A valid PHP callable
-     */
-    public function setEscaper($strategy, $callable)
-    {
-        $this->escapers[$strategy] = $callable;
-    }
-
-    /**
-     * Gets all defined escapers.
-     *
-     * @return array An array of escapers
-     */
-    public function getEscapers()
-    {
-        return $this->escapers;
-    }
-
-    /**
-     * Sets the default format to be used by the date filter.
-     *
-     * @param string $format             The default date format string
-     * @param string $dateIntervalFormat The default date interval format string
-     */
-    public function setDateFormat($format = null, $dateIntervalFormat = null)
-    {
-        if (null !== $format) {
-            $this->dateFormats[0] = $format;
-        }
-
-        if (null !== $dateIntervalFormat) {
-            $this->dateFormats[1] = $dateIntervalFormat;
-        }
-    }
-
-    /**
-     * Gets the default format to be used by the date filter.
-     *
-     * @return array The default date format string and the default date interval format string
-     */
-    public function getDateFormat()
-    {
-        return $this->dateFormats;
-    }
-
-    /**
-     * Sets the default timezone to be used by the date filter.
-     *
-     * @param DateTimeZone|string $timezone The default timezone string or a DateTimeZone object
-     */
-    public function setTimezone($timezone)
-    {
-        $this->timezone = $timezone instanceof DateTimeZone ? $timezone : new DateTimeZone($timezone);
-    }
-
-    /**
-     * Gets the default timezone to be used by the date filter.
-     *
-     * @return DateTimeZone The default timezone currently in use
-     */
-    public function getTimezone()
-    {
-        if (null === $this->timezone) {
-            $this->timezone = new DateTimeZone(date_default_timezone_get());
-        }
-
-        return $this->timezone;
-    }
-
-    /**
-     * Sets the default format to be used by the number_format filter.
-     *
-     * @param int    $decimal      The number of decimal places to use.
-     * @param string $decimalPoint The character(s) to use for the decimal point.
-     * @param string $thousandSep  The character(s) to use for the thousands separator.
-     */
-    public function setNumberFormat($decimal, $decimalPoint, $thousandSep)
-    {
-        $this->numberFormat = array($decimal, $decimalPoint, $thousandSep);
-    }
-
-    /**
-     * Get the default format used by the number_format filter.
-     *
-     * @return array The arguments for number_format()
-     */
-    public function getNumberFormat()
-    {
-        return $this->numberFormat;
-    }
-
-    public function getTokenParsers()
-    {
-        return array(
-            new Twig_TokenParser_For(),
-            new Twig_TokenParser_If(),
-            new Twig_TokenParser_Extends(),
-            new Twig_TokenParser_Include(),
-            new Twig_TokenParser_Block(),
-            new Twig_TokenParser_Use(),
-            new Twig_TokenParser_Filter(),
-            new Twig_TokenParser_Macro(),
-            new Twig_TokenParser_Import(),
-            new Twig_TokenParser_From(),
-            new Twig_TokenParser_Set(),
-            new Twig_TokenParser_Spaceless(),
-            new Twig_TokenParser_Flush(),
-            new Twig_TokenParser_Do(),
-            new Twig_TokenParser_Embed(),
-        );
-    }
-
-    public function getFilters()
-    {
-        $filters = array(
-            // formatting filters
-            new Twig_SimpleFilter('date', 'twig_date_format_filter', array('needs_environment' => true)),
-            new Twig_SimpleFilter('date_modify', 'twig_date_modify_filter', array('needs_environment' => true)),
-            new Twig_SimpleFilter('format', 'sprintf'),
-            new Twig_SimpleFilter('replace', 'twig_replace_filter'),
-            new Twig_SimpleFilter('number_format', 'twig_number_format_filter', array('needs_environment' => true)),
-            new Twig_SimpleFilter('abs', 'abs'),
-            new Twig_SimpleFilter('round', 'twig_round'),
-
-            // encoding
-            new Twig_SimpleFilter('url_encode', 'twig_urlencode_filter'),
-            new Twig_SimpleFilter('json_encode', 'twig_jsonencode_filter'),
-            new Twig_SimpleFilter('convert_encoding', 'twig_convert_encoding'),
-
-            // string filters
-            new Twig_SimpleFilter('title', 'twig_title_string_filter', array('needs_environment' => true)),
-            new Twig_SimpleFilter('capitalize', 'twig_capitalize_string_filter', array('needs_environment' => true)),
-            new Twig_SimpleFilter('upper', 'strtoupper'),
-            new Twig_SimpleFilter('lower', 'strtolower'),
-            new Twig_SimpleFilter('striptags', 'strip_tags'),
-            new Twig_SimpleFilter('trim', 'trim'),
-            new Twig_SimpleFilter('nl2br', 'nl2br', array('pre_escape' => 'html', 'is_safe' => array('html'))),
-
-            // array helpers
-            new Twig_SimpleFilter('join', 'twig_join_filter'),
-            new Twig_SimpleFilter('split', 'twig_split_filter', array('needs_environment' => true)),
-            new Twig_SimpleFilter('sort', 'twig_sort_filter'),
-            new Twig_SimpleFilter('merge', 'twig_array_merge'),
-            new Twig_SimpleFilter('batch', 'twig_array_batch'),
-
-            // string/array filters
-            new Twig_SimpleFilter('reverse', 'twig_reverse_filter', array('needs_environment' => true)),
-            new Twig_SimpleFilter('length', 'twig_length_filter', array('needs_environment' => true)),
-            new Twig_SimpleFilter('slice', 'twig_slice', array('needs_environment' => true)),
-            new Twig_SimpleFilter('first', 'twig_first', array('needs_environment' => true)),
-            new Twig_SimpleFilter('last', 'twig_last', array('needs_environment' => true)),
-
-            // iteration and runtime
-            new Twig_SimpleFilter('default', '_twig_default_filter', array('node_class' => 'Twig_Node_Expression_Filter_Default')),
-            new Twig_SimpleFilter('keys', 'twig_get_array_keys_filter'),
-
-            // escaping
-            new Twig_SimpleFilter('escape', 'twig_escape_filter', array('needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe')),
-            new Twig_SimpleFilter('e', 'twig_escape_filter', array('needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe')),
-        );
-
-        if (function_exists('mb_get_info')) {
-            $filters[] = new Twig_SimpleFilter('upper', 'twig_upper_filter', array('needs_environment' => true));
-            $filters[] = new Twig_SimpleFilter('lower', 'twig_lower_filter', array('needs_environment' => true));
-        }
-
-        return $filters;
-    }
-
-    public function getFunctions()
-    {
-        return array(
-            new Twig_SimpleFunction('max', 'max'),
-            new Twig_SimpleFunction('min', 'min'),
-            new Twig_SimpleFunction('range', 'range'),
-            new Twig_SimpleFunction('constant', 'twig_constant'),
-            new Twig_SimpleFunction('cycle', 'twig_cycle'),
-            new Twig_SimpleFunction('random', 'twig_random', array('needs_environment' => true)),
-            new Twig_SimpleFunction('date', 'twig_date_converter', array('needs_environment' => true)),
-            new Twig_SimpleFunction('include', 'twig_include', array('needs_environment' => true, 'needs_context' => true, 'is_safe' => array('all'))),
-            new Twig_SimpleFunction('source', 'twig_source', array('needs_environment' => true, 'is_safe' => array('all'))),
-        );
-    }
-
-    public function getTests()
-    {
-        return array(
-            new Twig_SimpleTest('even', null, array('node_class' => 'Twig_Node_Expression_Test_Even')),
-            new Twig_SimpleTest('odd', null, array('node_class' => 'Twig_Node_Expression_Test_Odd')),
-            new Twig_SimpleTest('defined', null, array('node_class' => 'Twig_Node_Expression_Test_Defined')),
-            new Twig_SimpleTest('sameas', null, array('node_class' => 'Twig_Node_Expression_Test_Sameas', 'deprecated' => true, 'alternative' => 'same as')),
-            new Twig_SimpleTest('same as', null, array('node_class' => 'Twig_Node_Expression_Test_Sameas')),
-            new Twig_SimpleTest('none', null, array('node_class' => 'Twig_Node_Expression_Test_Null')),
-            new Twig_SimpleTest('null', null, array('node_class' => 'Twig_Node_Expression_Test_Null')),
-            new Twig_SimpleTest('divisibleby', null, array('node_class' => 'Twig_Node_Expression_Test_Divisibleby', 'deprecated' => true, 'alternative' => 'divisible by')),
-            new Twig_SimpleTest('divisible by', null, array('node_class' => 'Twig_Node_Expression_Test_Divisibleby')),
-            new Twig_SimpleTest('constant', null, array('node_class' => 'Twig_Node_Expression_Test_Constant')),
-            new Twig_SimpleTest('empty', 'twig_test_empty'),
-            new Twig_SimpleTest('iterable', 'twig_test_iterable'),
-        );
-    }
-
-    public function getOperators()
-    {
-        return array(
-            array(
-                'not' => array('precedence' => 50, 'class' => 'Twig_Node_Expression_Unary_Not'),
-                '-' => array('precedence' => 500, 'class' => 'Twig_Node_Expression_Unary_Neg'),
-                '+' => array('precedence' => 500, 'class' => 'Twig_Node_Expression_Unary_Pos'),
-            ),
-            array(
-                'or' => array('precedence' => 10, 'class' => 'Twig_Node_Expression_Binary_Or', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'and' => array('precedence' => 15, 'class' => 'Twig_Node_Expression_Binary_And', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'b-or' => array('precedence' => 16, 'class' => 'Twig_Node_Expression_Binary_BitwiseOr', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'b-xor' => array('precedence' => 17, 'class' => 'Twig_Node_Expression_Binary_BitwiseXor', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'b-and' => array('precedence' => 18, 'class' => 'Twig_Node_Expression_Binary_BitwiseAnd', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '==' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Equal', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '!=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_NotEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '<' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Less', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '>' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Greater', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '>=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_GreaterEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '<=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_LessEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'not in' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_NotIn', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'in' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_In', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'matches' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Matches', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'starts with' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_StartsWith', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'ends with' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_EndsWith', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '..' => array('precedence' => 25, 'class' => 'Twig_Node_Expression_Binary_Range', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '+' => array('precedence' => 30, 'class' => 'Twig_Node_Expression_Binary_Add', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '-' => array('precedence' => 30, 'class' => 'Twig_Node_Expression_Binary_Sub', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '~' => array('precedence' => 40, 'class' => 'Twig_Node_Expression_Binary_Concat', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '*' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Mul', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '/' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Div', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '//' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_FloorDiv', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '%' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Mod', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'is' => array('precedence' => 100, 'callable' => array($this, 'parseTestExpression'), 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'is not' => array('precedence' => 100, 'callable' => array($this, 'parseNotTestExpression'), 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '**' => array('precedence' => 200, 'class' => 'Twig_Node_Expression_Binary_Power', 'associativity' => Twig_ExpressionParser::OPERATOR_RIGHT),
-            ),
-        );
-    }
-
-    public function parseNotTestExpression(Twig_Parser $parser, Twig_NodeInterface $node)
-    {
-        return new Twig_Node_Expression_Unary_Not($this->parseTestExpression($parser, $node), $parser->getCurrentToken()->getLine());
-    }
-
-    public function parseTestExpression(Twig_Parser $parser, Twig_NodeInterface $node)
-    {
-        $stream = $parser->getStream();
-        list($name, $test) = $this->getTest($parser, $node->getLine());
-
-        if ($test instanceof Twig_SimpleTest && $test->isDeprecated()) {
-            $message = sprintf('Twig Test "%s" is deprecated', $name);
-            if ($test->getAlternative()) {
-                $message .= sprintf('. Use "%s" instead', $test->getAlternative());
-            }
-            $message .= sprintf(' in %s at line %d.', $stream->getFilename(), $stream->getCurrent()->getLine());
-
-            @trigger_error($message, E_USER_DEPRECATED);
-        }
-
-        $class = $this->getTestNodeClass($parser, $test);
-        $arguments = null;
-        if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) {
-            $arguments = $parser->getExpressionParser()->parseArguments(true);
-        }
-
-        return new $class($node, $name, $arguments, $parser->getCurrentToken()->getLine());
-    }
-
-    protected function getTest(Twig_Parser $parser, $line)
-    {
-        $stream = $parser->getStream();
-        $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
-        $env = $parser->getEnvironment();
-
-        if ($test = $env->getTest($name)) {
-            return array($name, $test);
-        }
-
-        if ($stream->test(Twig_Token::NAME_TYPE)) {
-            // try 2-words tests
-            $name = $name.' '.$parser->getCurrentToken()->getValue();
-
-            if ($test = $env->getTest($name)) {
-                $parser->getStream()->next();
-
-                return array($name, $test);
-            }
-        }
-
-        $e = new Twig_Error_Syntax(sprintf('Unknown "%s" test.', $name), $line, $parser->getFilename());
-        $e->addSuggestions($name, array_keys($env->getTests()));
-
-        throw $e;
-    }
-
-    protected function getTestNodeClass(Twig_Parser $parser, $test)
-    {
-        if ($test instanceof Twig_SimpleTest) {
-            return $test->getNodeClass();
-        }
-
-        return $test instanceof Twig_Test_Node ? $test->getClass() : 'Twig_Node_Expression_Test';
-    }
-
-    public function getName()
-    {
-        return 'core';
-    }
-}
-
-/**
- * Cycles over a value.
- *
- * @param ArrayAccess|array $values   An array or an ArrayAccess instance
- * @param int               $position The cycle position
- *
- * @return string The next value in the cycle
- */
-function twig_cycle($values, $position)
-{
-    if (!is_array($values) && !$values instanceof ArrayAccess) {
-        return $values;
-    }
-
-    return $values[$position % count($values)];
-}
-
-/**
- * Returns a random value depending on the supplied parameter type:
- * - a random item from a Traversable or array
- * - a random character from a string
- * - a random integer between 0 and the integer parameter.
- *
- * @param Twig_Environment             $env    A Twig_Environment instance
- * @param Traversable|array|int|string $values The values to pick a random item from
- *
- * @throws Twig_Error_Runtime When $values is an empty array (does not apply to an empty string which is returned as is).
- *
- * @return mixed A random value from the given sequence
- */
-function twig_random(Twig_Environment $env, $values = null)
-{
-    if (null === $values) {
-        return mt_rand();
-    }
-
-    if (is_int($values) || is_float($values)) {
-        return $values < 0 ? mt_rand($values, 0) : mt_rand(0, $values);
-    }
-
-    if ($values instanceof Traversable) {
-        $values = iterator_to_array($values);
-    } elseif (is_string($values)) {
-        if ('' === $values) {
-            return '';
-        }
-        if (null !== $charset = $env->getCharset()) {
-            if ('UTF-8' != $charset) {
-                $values = twig_convert_encoding($values, 'UTF-8', $charset);
-            }
-
-            // unicode version of str_split()
-            // split at all positions, but not after the start and not before the end
-            $values = preg_split('/(?<!^)(?!$)/u', $values);
-
-            if ('UTF-8' != $charset) {
-                foreach ($values as $i => $value) {
-                    $values[$i] = twig_convert_encoding($value, $charset, 'UTF-8');
-                }
-            }
-        } else {
-            return $values[mt_rand(0, strlen($values) - 1)];
-        }
-    }
-
-    if (!is_array($values)) {
-        return $values;
-    }
-
-    if (0 === count($values)) {
-        throw new Twig_Error_Runtime('The random function cannot pick from an empty array.');
-    }
-
-    return $values[array_rand($values, 1)];
-}
-
-/**
- * Converts a date to the given format.
- *
- * <pre>
- *   {{ post.published_at|date("m/d/Y") }}
- * </pre>
- *
- * @param Twig_Environment                               $env      A Twig_Environment instance
- * @param DateTime|DateTimeInterface|DateInterval|string $date     A date
- * @param string|null                                    $format   The target format, null to use the default
- * @param DateTimeZone|string|null|false                 $timezone The target timezone, null to use the default, false to leave unchanged
- *
- * @return string The formatted date
- */
-function twig_date_format_filter(Twig_Environment $env, $date, $format = null, $timezone = null)
-{
-    if (null === $format) {
-        $formats = $env->getExtension('core')->getDateFormat();
-        $format = $date instanceof DateInterval ? $formats[1] : $formats[0];
-    }
-
-    if ($date instanceof DateInterval) {
-        return $date->format($format);
-    }
-
-    return twig_date_converter($env, $date, $timezone)->format($format);
-}
-
-/**
- * Returns a new date object modified.
- *
- * <pre>
- *   {{ post.published_at|date_modify("-1day")|date("m/d/Y") }}
- * </pre>
- *
- * @param Twig_Environment $env      A Twig_Environment instance
- * @param DateTime|string  $date     A date
- * @param string           $modifier A modifier string
- *
- * @return DateTime A new date object
- */
-function twig_date_modify_filter(Twig_Environment $env, $date, $modifier)
-{
-    $date = twig_date_converter($env, $date, false);
-    $resultDate = $date->modify($modifier);
-
-    // This is a hack to ensure PHP 5.2 support and support for DateTimeImmutable
-    // DateTime::modify does not return the modified DateTime object < 5.3.0
-    // and DateTimeImmutable does not modify $date.
-    return null === $resultDate ? $date : $resultDate;
-}
-
-/**
- * Converts an input to a DateTime instance.
- *
- * <pre>
- *    {% if date(user.created_at) < date('+2days') %}
- *      {# do something #}
- *    {% endif %}
- * </pre>
- *
- * @param Twig_Environment                       $env      A Twig_Environment instance
- * @param DateTime|DateTimeInterface|string|null $date     A date
- * @param DateTimeZone|string|null|false         $timezone The target timezone, null to use the default, false to leave unchanged
- *
- * @return DateTime A DateTime instance
- */
-function twig_date_converter(Twig_Environment $env, $date = null, $timezone = null)
-{
-    // determine the timezone
-    if (false !== $timezone) {
-        if (null === $timezone) {
-            $timezone = $env->getExtension('core')->getTimezone();
-        } elseif (!$timezone instanceof DateTimeZone) {
-            $timezone = new DateTimeZone($timezone);
-        }
-    }
-
-    // immutable dates
-    if ($date instanceof DateTimeImmutable) {
-        return false !== $timezone ? $date->setTimezone($timezone) : $date;
-    }
-
-    if ($date instanceof DateTime || $date instanceof DateTimeInterface) {
-        $date = clone $date;
-        if (false !== $timezone) {
-            $date->setTimezone($timezone);
-        }
-
-        return $date;
-    }
-
-    if (null === $date || 'now' === $date) {
-        return new DateTime($date, false !== $timezone ? $timezone : $env->getExtension('core')->getTimezone());
-    }
-
-    $asString = (string) $date;
-    if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) {
-        $date = new DateTime('@'.$date);
-    } else {
-        $date = new DateTime($date, $env->getExtension('core')->getTimezone());
-    }
-
-    if (false !== $timezone) {
-        $date->setTimezone($timezone);
-    }
-
-    return $date;
-}
-
-/**
- * Replaces strings within a string.
- *
- * @param string            $str  String to replace in
- * @param array|Traversable $from Replace values
- * @param string|null       $to   Replace to, deprecated (@see http://php.net/manual/en/function.strtr.php)
- *
- * @return string
- */
-function twig_replace_filter($str, $from, $to = null)
-{
-    if ($from instanceof Traversable) {
-        $from = iterator_to_array($from);
-    } elseif (is_string($from) && is_string($to)) {
-        @trigger_error('Using "replace" with character by character replacement is deprecated and will be removed in Twig 2.0', E_USER_DEPRECATED);
-
-        return strtr($str, $from, $to);
-    } elseif (!is_array($from)) {
-        throw new Twig_Error_Runtime(sprintf('The "replace" filter expects an array or "Traversable" as replace values, got "%s".',is_object($from) ? get_class($from) : gettype($from)));
-    }
-
-    return strtr($str, $from);
-}
-
-/**
- * Rounds a number.
- *
- * @param int|float $value     The value to round
- * @param int|float $precision The rounding precision
- * @param string    $method    The method to use for rounding
- *
- * @return int|float The rounded number
- */
-function twig_round($value, $precision = 0, $method = 'common')
-{
-    if ('common' == $method) {
-        return round($value, $precision);
-    }
-
-    if ('ceil' != $method && 'floor' != $method) {
-        throw new Twig_Error_Runtime('The round filter only supports the "common", "ceil", and "floor" methods.');
-    }
-
-    return $method($value * pow(10, $precision)) / pow(10, $precision);
-}
-
-/**
- * Number format filter.
- *
- * All of the formatting options can be left null, in that case the defaults will
- * be used.  Supplying any of the parameters will override the defaults set in the
- * environment object.
- *
- * @param Twig_Environment $env          A Twig_Environment instance
- * @param mixed            $number       A float/int/string of the number to format
- * @param int              $decimal      The number of decimal points to display.
- * @param string           $decimalPoint The character(s) to use for the decimal point.
- * @param string           $thousandSep  The character(s) to use for the thousands separator.
- *
- * @return string The formatted number
- */
-function twig_number_format_filter(Twig_Environment $env, $number, $decimal = null, $decimalPoint = null, $thousandSep = null)
-{
-    $defaults = $env->getExtension('core')->getNumberFormat();
-    if (null === $decimal) {
-        $decimal = $defaults[0];
-    }
-
-    if (null === $decimalPoint) {
-        $decimalPoint = $defaults[1];
-    }
-
-    if (null === $thousandSep) {
-        $thousandSep = $defaults[2];
-    }
-
-    return number_format((float) $number, $decimal, $decimalPoint, $thousandSep);
-}
-
-/**
- * URL encodes (RFC 3986) a string as a path segment or an array as a query string.
- *
- * @param string|array $url A URL or an array of query parameters
- *
- * @return string The URL encoded value
- */
-function twig_urlencode_filter($url)
-{
-    if (is_array($url)) {
-        if (defined('PHP_QUERY_RFC3986')) {
-            return http_build_query($url, '', '&', PHP_QUERY_RFC3986);
-        }
-
-        return http_build_query($url, '', '&');
-    }
-
-    return rawurlencode($url);
-}
-
-if (PHP_VERSION_ID < 50300) {
-    /**
-     * JSON encodes a variable.
-     *
-     * @param mixed $value   The value to encode.
-     * @param int   $options Not used on PHP 5.2.x
-     *
-     * @return mixed The JSON encoded value
-     */
-    function twig_jsonencode_filter($value, $options = 0)
-    {
-        if ($value instanceof Twig_Markup) {
-            $value = (string) $value;
-        } elseif (is_array($value)) {
-            array_walk_recursive($value, '_twig_markup2string');
-        }
-
-        return json_encode($value);
-    }
-} else {
-    /**
-     * JSON encodes a variable.
-     *
-     * @param mixed $value   The value to encode.
-     * @param int   $options Bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT
-     *
-     * @return mixed The JSON encoded value
-     */
-    function twig_jsonencode_filter($value, $options = 0)
-    {
-        if ($value instanceof Twig_Markup) {
-            $value = (string) $value;
-        } elseif (is_array($value)) {
-            array_walk_recursive($value, '_twig_markup2string');
-        }
-
-        return json_encode($value, $options);
-    }
-}
-
-function _twig_markup2string(&$value)
-{
-    if ($value instanceof Twig_Markup) {
-        $value = (string) $value;
-    }
-}
-
-/**
- * Merges an array with another one.
- *
- * <pre>
- *  {% set items = { 'apple': 'fruit', 'orange': 'fruit' } %}
- *
- *  {% set items = items|merge({ 'peugeot': 'car' }) %}
- *
- *  {# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car' } #}
- * </pre>
- *
- * @param array|Traversable $arr1 An array
- * @param array|Traversable $arr2 An array
- *
- * @return array The merged array
- */
-function twig_array_merge($arr1, $arr2)
-{
-    if ($arr1 instanceof Traversable) {
-        $arr1 = iterator_to_array($arr1);
-    } elseif (!is_array($arr1)) {
-        throw new Twig_Error_Runtime(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as first argument.', gettype($arr1)));
-    }
-
-    if ($arr2 instanceof Traversable) {
-        $arr2 = iterator_to_array($arr2);
-    } elseif (!is_array($arr2)) {
-        throw new Twig_Error_Runtime(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as second argument.', gettype($arr2)));
-    }
-
-    return array_merge($arr1, $arr2);
-}
-
-/**
- * Slices a variable.
- *
- * @param Twig_Environment $env          A Twig_Environment instance
- * @param mixed            $item         A variable
- * @param int              $start        Start of the slice
- * @param int              $length       Size of the slice
- * @param bool             $preserveKeys Whether to preserve key or not (when the input is an array)
- *
- * @return mixed The sliced variable
- */
-function twig_slice(Twig_Environment $env, $item, $start, $length = null, $preserveKeys = false)
-{
-    if ($item instanceof Traversable) {
-        if ($item instanceof IteratorAggregate) {
-            $item = $item->getIterator();
-        }
-
-        if ($start >= 0 && $length >= 0 && $item instanceof Iterator) {
-            try {
-                return iterator_to_array(new LimitIterator($item, $start, $length === null ? -1 : $length), $preserveKeys);
-            } catch (OutOfBoundsException $exception) {
-                return array();
-            }
-        }
-
-        $item = iterator_to_array($item, $preserveKeys);
-    }
-
-    if (is_array($item)) {
-        return array_slice($item, $start, $length, $preserveKeys);
-    }
-
-    $item = (string) $item;
-
-    if (function_exists('mb_get_info') && null !== $charset = $env->getCharset()) {
-        return (string) mb_substr($item, $start, null === $length ? mb_strlen($item, $charset) - $start : $length, $charset);
-    }
-
-    return (string) (null === $length ? substr($item, $start) : substr($item, $start, $length));
-}
-
-/**
- * Returns the first element of the item.
- *
- * @param Twig_Environment $env  A Twig_Environment instance
- * @param mixed            $item A variable
- *
- * @return mixed The first element of the item
- */
-function twig_first(Twig_Environment $env, $item)
-{
-    $elements = twig_slice($env, $item, 0, 1, false);
-
-    return is_string($elements) ? $elements : current($elements);
-}
-
-/**
- * Returns the last element of the item.
- *
- * @param Twig_Environment $env  A Twig_Environment instance
- * @param mixed            $item A variable
- *
- * @return mixed The last element of the item
- */
-function twig_last(Twig_Environment $env, $item)
-{
-    $elements = twig_slice($env, $item, -1, 1, false);
-
-    return is_string($elements) ? $elements : current($elements);
-}
-
-/**
- * Joins the values to a string.
- *
- * The separator between elements is an empty string per default, you can define it with the optional parameter.
- *
- * <pre>
- *  {{ [1, 2, 3]|join('|') }}
- *  {# returns 1|2|3 #}
- *
- *  {{ [1, 2, 3]|join }}
- *  {# returns 123 #}
- * </pre>
- *
- * @param array  $value An array
- * @param string $glue  The separator
- *
- * @return string The concatenated string
- */
-function twig_join_filter($value, $glue = '')
-{
-    if ($value instanceof Traversable) {
-        $value = iterator_to_array($value, false);
-    }
-
-    return implode($glue, (array) $value);
-}
-
-/**
- * Splits the string into an array.
- *
- * <pre>
- *  {{ "one,two,three"|split(',') }}
- *  {# returns [one, two, three] #}
- *
- *  {{ "one,two,three,four,five"|split(',', 3) }}
- *  {# returns [one, two, "three,four,five"] #}
- *
- *  {{ "123"|split('') }}
- *  {# returns [1, 2, 3] #}
- *
- *  {{ "aabbcc"|split('', 2) }}
- *  {# returns [aa, bb, cc] #}
- * </pre>
- *
- * @param Twig_Environment $env       A Twig_Environment instance
- * @param string           $value     A string
- * @param string           $delimiter The delimiter
- * @param int              $limit     The limit
- *
- * @return array The split string as an array
- */
-function twig_split_filter(Twig_Environment $env, $value, $delimiter, $limit = null)
-{
-    if (!empty($delimiter)) {
-        return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit);
-    }
-
-    if (!function_exists('mb_get_info') || null === $charset = $env->getCharset()) {
-        return str_split($value, null === $limit ? 1 : $limit);
-    }
-
-    if ($limit <= 1) {
-        return preg_split('/(?<!^)(?!$)/u', $value);
-    }
-
-    $length = mb_strlen($value, $charset);
-    if ($length < $limit) {
-        return array($value);
-    }
-
-    $r = array();
-    for ($i = 0; $i < $length; $i += $limit) {
-        $r[] = mb_substr($value, $i, $limit, $charset);
-    }
-
-    return $r;
-}
-
-// The '_default' filter is used internally to avoid using the ternary operator
-// which costs a lot for big contexts (before PHP 5.4). So, on average,
-// a function call is cheaper.
-/**
- * @internal
- */
-function _twig_default_filter($value, $default = '')
-{
-    if (twig_test_empty($value)) {
-        return $default;
-    }
-
-    return $value;
-}
-
-/**
- * Returns the keys for the given array.
- *
- * It is useful when you want to iterate over the keys of an array:
- *
- * <pre>
- *  {% for key in array|keys %}
- *      {# ... #}
- *  {% endfor %}
- * </pre>
- *
- * @param array $array An array
- *
- * @return array The keys
- */
-function twig_get_array_keys_filter($array)
-{
-    if ($array instanceof Traversable) {
-        return array_keys(iterator_to_array($array));
-    }
-
-    if (!is_array($array)) {
-        return array();
-    }
-
-    return array_keys($array);
-}
-
-/**
- * Reverses a variable.
- *
- * @param Twig_Environment         $env          A Twig_Environment instance
- * @param array|Traversable|string $item         An array, a Traversable instance, or a string
- * @param bool                     $preserveKeys Whether to preserve key or not
- *
- * @return mixed The reversed input
- */
-function twig_reverse_filter(Twig_Environment $env, $item, $preserveKeys = false)
-{
-    if ($item instanceof Traversable) {
-        return array_reverse(iterator_to_array($item), $preserveKeys);
-    }
-
-    if (is_array($item)) {
-        return array_reverse($item, $preserveKeys);
-    }
-
-    if (null !== $charset = $env->getCharset()) {
-        $string = (string) $item;
-
-        if ('UTF-8' != $charset) {
-            $item = twig_convert_encoding($string, 'UTF-8', $charset);
-        }
-
-        preg_match_all('/./us', $item, $matches);
-
-        $string = implode('', array_reverse($matches[0]));
-
-        if ('UTF-8' != $charset) {
-            $string = twig_convert_encoding($string, $charset, 'UTF-8');
-        }
-
-        return $string;
-    }
-
-    return strrev((string) $item);
-}
-
-/**
- * Sorts an array.
- *
- * @param array|Traversable $array
- *
- * @return array
- */
-function twig_sort_filter($array)
-{
-    if ($array instanceof Traversable) {
-        $array = iterator_to_array($array);
-    } elseif (!is_array($array)) {
-        throw new Twig_Error_Runtime(sprintf('The sort filter only works with arrays or "Traversable", got "%s".', gettype($array)));
-    }
-
-    asort($array);
-
-    return $array;
-}
-
-/**
- * @internal
- */
-function twig_in_filter($value, $compare)
-{
-    if (is_array($compare)) {
-        return in_array($value, $compare, is_object($value) || is_resource($value));
-    } elseif (is_string($compare) && (is_string($value) || is_int($value) || is_float($value))) {
-        return '' === $value || false !== strpos($compare, (string) $value);
-    } elseif ($compare instanceof Traversable) {
-        return in_array($value, iterator_to_array($compare, false), is_object($value) || is_resource($value));
-    }
-
-    return false;
-}
-
-/**
- * Escapes a string.
- *
- * @param Twig_Environment $env        A Twig_Environment instance
- * @param string           $string     The value to be escaped
- * @param string           $strategy   The escaping strategy
- * @param string           $charset    The charset
- * @param bool             $autoescape Whether the function is called by the auto-escaping feature (true) or by the developer (false)
- *
- * @return string
- */
-function twig_escape_filter(Twig_Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false)
-{
-    if ($autoescape && $string instanceof Twig_Markup) {
-        return $string;
-    }
-
-    if (!is_string($string)) {
-        if (is_object($string) && method_exists($string, '__toString')) {
-            $string = (string) $string;
-        } elseif (in_array($strategy, array('html', 'js', 'css', 'html_attr', 'url'))) {
-            return $string;
-        }
-    }
-
-    if (null === $charset) {
-        $charset = $env->getCharset();
-    }
-
-    switch ($strategy) {
-        case 'html':
-            // see http://php.net/htmlspecialchars
-
-            // Using a static variable to avoid initializing the array
-            // each time the function is called. Moving the declaration on the
-            // top of the function slow downs other escaping strategies.
-            static $htmlspecialcharsCharsets;
-
-            if (null === $htmlspecialcharsCharsets) {
-                if (defined('HHVM_VERSION')) {
-                    $htmlspecialcharsCharsets = array('utf-8' => true, 'UTF-8' => true);
-                } else {
-                    $htmlspecialcharsCharsets = array(
-                        'ISO-8859-1' => true, 'ISO8859-1' => true,
-                        'ISO-8859-15' => true, 'ISO8859-15' => true,
-                        'utf-8' => true, 'UTF-8' => true,
-                        'CP866' => true, 'IBM866' => true, '866' => true,
-                        'CP1251' => true, 'WINDOWS-1251' => true, 'WIN-1251' => true,
-                        '1251' => true,
-                        'CP1252' => true, 'WINDOWS-1252' => true, '1252' => true,
-                        'KOI8-R' => true, 'KOI8-RU' => true, 'KOI8R' => true,
-                        'BIG5' => true, '950' => true,
-                        'GB2312' => true, '936' => true,
-                        'BIG5-HKSCS' => true,
-                        'SHIFT_JIS' => true, 'SJIS' => true, '932' => true,
-                        'EUC-JP' => true, 'EUCJP' => true,
-                        'ISO8859-5' => true, 'ISO-8859-5' => true, 'MACROMAN' => true,
-                    );
-                }
-            }
-
-            if (isset($htmlspecialcharsCharsets[$charset])) {
-                return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset);
-            }
-
-            if (isset($htmlspecialcharsCharsets[strtoupper($charset)])) {
-                // cache the lowercase variant for future iterations
-                $htmlspecialcharsCharsets[$charset] = true;
-
-                return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset);
-            }
-
-            $string = twig_convert_encoding($string, 'UTF-8', $charset);
-            $string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
-
-            return twig_convert_encoding($string, $charset, 'UTF-8');
-
-        case 'js':
-            // escape all non-alphanumeric characters
-            // into their \xHH or \uHHHH representations
-            if ('UTF-8' != $charset) {
-                $string = twig_convert_encoding($string, 'UTF-8', $charset);
-            }
-
-            if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) {
-                throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.');
-            }
-
-            $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', '_twig_escape_js_callback', $string);
-
-            if ('UTF-8' != $charset) {
-                $string = twig_convert_encoding($string, $charset, 'UTF-8');
-            }
-
-            return $string;
-
-        case 'css':
-            if ('UTF-8' != $charset) {
-                $string = twig_convert_encoding($string, 'UTF-8', $charset);
-            }
-
-            if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) {
-                throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.');
-            }
-
-            $string = preg_replace_callback('#[^a-zA-Z0-9]#Su', '_twig_escape_css_callback', $string);
-
-            if ('UTF-8' != $charset) {
-                $string = twig_convert_encoding($string, $charset, 'UTF-8');
-            }
-
-            return $string;
-
-        case 'html_attr':
-            if ('UTF-8' != $charset) {
-                $string = twig_convert_encoding($string, 'UTF-8', $charset);
-            }
-
-            if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) {
-                throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.');
-            }
-
-            $string = preg_replace_callback('#[^a-zA-Z0-9,\.\-_]#Su', '_twig_escape_html_attr_callback', $string);
-
-            if ('UTF-8' != $charset) {
-                $string = twig_convert_encoding($string, $charset, 'UTF-8');
-            }
-
-            return $string;
-
-        case 'url':
-            if (PHP_VERSION_ID < 50300) {
-                return str_replace('%7E', '~', rawurlencode($string));
-            }
-
-            return rawurlencode($string);
-
-        default:
-            static $escapers;
-
-            if (null === $escapers) {
-                $escapers = $env->getExtension('core')->getEscapers();
-            }
-
-            if (isset($escapers[$strategy])) {
-                return call_user_func($escapers[$strategy], $env, $string, $charset);
-            }
-
-            $validStrategies = implode(', ', array_merge(array('html', 'js', 'url', 'css', 'html_attr'), array_keys($escapers)));
-
-            throw new Twig_Error_Runtime(sprintf('Invalid escaping strategy "%s" (valid ones: %s).', $strategy, $validStrategies));
-    }
-}
-
-/**
- * @internal
- */
-function twig_escape_filter_is_safe(Twig_Node $filterArgs)
-{
-    foreach ($filterArgs as $arg) {
-        if ($arg instanceof Twig_Node_Expression_Constant) {
-            return array($arg->getAttribute('value'));
-        }
-
-        return array();
-    }
-
-    return array('html');
-}
-
-if (function_exists('mb_convert_encoding')) {
-    function twig_convert_encoding($string, $to, $from)
-    {
-        return mb_convert_encoding($string, $to, $from);
-    }
-} elseif (function_exists('iconv')) {
-    function twig_convert_encoding($string, $to, $from)
-    {
-        return iconv($from, $to, $string);
-    }
-} else {
-    function twig_convert_encoding($string, $to, $from)
-    {
-        throw new Twig_Error_Runtime('No suitable convert encoding function (use UTF-8 as your encoding or install the iconv or mbstring extension).');
-    }
-}
-
-function _twig_escape_js_callback($matches)
-{
-    $char = $matches[0];
-
-    // \xHH
-    if (!isset($char[1])) {
-        return '\\x'.strtoupper(substr('00'.bin2hex($char), -2));
-    }
-
-    // \uHHHH
-    $char = twig_convert_encoding($char, 'UTF-16BE', 'UTF-8');
-
-    return '\\u'.strtoupper(substr('0000'.bin2hex($char), -4));
-}
-
-function _twig_escape_css_callback($matches)
-{
-    $char = $matches[0];
-
-    // \xHH
-    if (!isset($char[1])) {
-        $hex = ltrim(strtoupper(bin2hex($char)), '0');
-        if (0 === strlen($hex)) {
-            $hex = '0';
-        }
-
-        return '\\'.$hex.' ';
-    }
-
-    // \uHHHH
-    $char = twig_convert_encoding($char, 'UTF-16BE', 'UTF-8');
-
-    return '\\'.ltrim(strtoupper(bin2hex($char)), '0').' ';
-}
-
-/**
- * This function is adapted from code coming from Zend Framework.
- *
- * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-function _twig_escape_html_attr_callback($matches)
-{
-    /*
-     * While HTML supports far more named entities, the lowest common denominator
-     * has become HTML5's XML Serialisation which is restricted to the those named
-     * entities that XML supports. Using HTML entities would result in this error:
-     *     XML Parsing Error: undefined entity
-     */
-    static $entityMap = array(
-        34 => 'quot', /* quotation mark */
-        38 => 'amp',  /* ampersand */
-        60 => 'lt',   /* less-than sign */
-        62 => 'gt',   /* greater-than sign */
-    );
-
-    $chr = $matches[0];
-    $ord = ord($chr);
-
-    /*
-     * The following replaces characters undefined in HTML with the
-     * hex entity for the Unicode replacement character.
-     */
-    if (($ord <= 0x1f && $chr != "\t" && $chr != "\n" && $chr != "\r") || ($ord >= 0x7f && $ord <= 0x9f)) {
-        return '&#xFFFD;';
-    }
-
-    /*
-     * Check if the current character to escape has a name entity we should
-     * replace it with while grabbing the hex value of the character.
-     */
-    if (strlen($chr) == 1) {
-        $hex = strtoupper(substr('00'.bin2hex($chr), -2));
-    } else {
-        $chr = twig_convert_encoding($chr, 'UTF-16BE', 'UTF-8');
-        $hex = strtoupper(substr('0000'.bin2hex($chr), -4));
-    }
-
-    $int = hexdec($hex);
-    if (array_key_exists($int, $entityMap)) {
-        return sprintf('&%s;', $entityMap[$int]);
-    }
-
-    /*
-     * Per OWASP recommendations, we'll use hex entities for any other
-     * characters where a named entity does not exist.
-     */
-    return sprintf('&#x%s;', $hex);
-}
-
-// add multibyte extensions if possible
-if (function_exists('mb_get_info')) {
-    /**
-     * Returns the length of a variable.
-     *
-     * @param Twig_Environment $env   A Twig_Environment instance
-     * @param mixed            $thing A variable
-     *
-     * @return int The length of the value
-     */
-    function twig_length_filter(Twig_Environment $env, $thing)
-    {
-        return is_scalar($thing) ? mb_strlen($thing, $env->getCharset()) : count($thing);
-    }
-
-    /**
-     * Converts a string to uppercase.
-     *
-     * @param Twig_Environment $env    A Twig_Environment instance
-     * @param string           $string A string
-     *
-     * @return string The uppercased string
-     */
-    function twig_upper_filter(Twig_Environment $env, $string)
-    {
-        if (null !== ($charset = $env->getCharset())) {
-            return mb_strtoupper($string, $charset);
-        }
-
-        return strtoupper($string);
-    }
-
-    /**
-     * Converts a string to lowercase.
-     *
-     * @param Twig_Environment $env    A Twig_Environment instance
-     * @param string           $string A string
-     *
-     * @return string The lowercased string
-     */
-    function twig_lower_filter(Twig_Environment $env, $string)
-    {
-        if (null !== ($charset = $env->getCharset())) {
-            return mb_strtolower($string, $charset);
-        }
-
-        return strtolower($string);
-    }
-
-    /**
-     * Returns a titlecased string.
-     *
-     * @param Twig_Environment $env    A Twig_Environment instance
-     * @param string           $string A string
-     *
-     * @return string The titlecased string
-     */
-    function twig_title_string_filter(Twig_Environment $env, $string)
-    {
-        if (null !== ($charset = $env->getCharset())) {
-            return mb_convert_case($string, MB_CASE_TITLE, $charset);
-        }
-
-        return ucwords(strtolower($string));
-    }
-
-    /**
-     * Returns a capitalized string.
-     *
-     * @param Twig_Environment $env    A Twig_Environment instance
-     * @param string           $string A string
-     *
-     * @return string The capitalized string
-     */
-    function twig_capitalize_string_filter(Twig_Environment $env, $string)
-    {
-        if (null !== $charset = $env->getCharset()) {
-            return mb_strtoupper(mb_substr($string, 0, 1, $charset), $charset).mb_strtolower(mb_substr($string, 1, mb_strlen($string, $charset), $charset), $charset);
-        }
-
-        return ucfirst(strtolower($string));
-    }
-}
-// and byte fallback
-else {
-    /**
-     * Returns the length of a variable.
-     *
-     * @param Twig_Environment $env   A Twig_Environment instance
-     * @param mixed            $thing A variable
-     *
-     * @return int The length of the value
-     */
-    function twig_length_filter(Twig_Environment $env, $thing)
-    {
-        return is_scalar($thing) ? strlen($thing) : count($thing);
-    }
-
-    /**
-     * Returns a titlecased string.
-     *
-     * @param Twig_Environment $env    A Twig_Environment instance
-     * @param string           $string A string
-     *
-     * @return string The titlecased string
-     */
-    function twig_title_string_filter(Twig_Environment $env, $string)
-    {
-        return ucwords(strtolower($string));
-    }
-
-    /**
-     * Returns a capitalized string.
-     *
-     * @param Twig_Environment $env    A Twig_Environment instance
-     * @param string           $string A string
-     *
-     * @return string The capitalized string
-     */
-    function twig_capitalize_string_filter(Twig_Environment $env, $string)
-    {
-        return ucfirst(strtolower($string));
-    }
-}
-
-/**
- * @internal
- */
-function twig_ensure_traversable($seq)
-{
-    if ($seq instanceof Traversable || is_array($seq)) {
-        return $seq;
-    }
-
-    return array();
-}
-
-/**
- * Checks if a variable is empty.
- *
- * <pre>
- * {# evaluates to true if the foo variable is null, false, or the empty string #}
- * {% if foo is empty %}
- *     {# ... #}
- * {% endif %}
- * </pre>
- *
- * @param mixed $value A variable
- *
- * @return bool true if the value is empty, false otherwise
- */
-function twig_test_empty($value)
-{
-    if ($value instanceof Countable) {
-        return 0 == count($value);
-    }
-
-    return '' === $value || false === $value || null === $value || array() === $value;
-}
-
-/**
- * Checks if a variable is traversable.
- *
- * <pre>
- * {# evaluates to true if the foo variable is an array or a traversable object #}
- * {% if foo is traversable %}
- *     {# ... #}
- * {% endif %}
- * </pre>
- *
- * @param mixed $value A variable
- *
- * @return bool true if the value is traversable
- */
-function twig_test_iterable($value)
-{
-    return $value instanceof Traversable || is_array($value);
-}
-
-/**
- * Renders a template.
- *
- * @param Twig_Environment $env
- * @param array            $context
- * @param string|array     $template      The template to render or an array of templates to try consecutively
- * @param array            $variables     The variables to pass to the template
- * @param bool             $withContext
- * @param bool             $ignoreMissing Whether to ignore missing templates or not
- * @param bool             $sandboxed     Whether to sandbox the template or not
- *
- * @return string The rendered template
- */
-function twig_include(Twig_Environment $env, $context, $template, $variables = array(), $withContext = true, $ignoreMissing = false, $sandboxed = false)
-{
-    $alreadySandboxed = false;
-    $sandbox = null;
-    if ($withContext) {
-        $variables = array_merge($context, $variables);
-    }
-
-    if ($isSandboxed = $sandboxed && $env->hasExtension('sandbox')) {
-        $sandbox = $env->getExtension('sandbox');
-        if (!$alreadySandboxed = $sandbox->isSandboxed()) {
-            $sandbox->enableSandbox();
-        }
-    }
-
-    $result = null;
-    try {
-        $result = $env->resolveTemplate($template)->render($variables);
-    } catch (Twig_Error_Loader $e) {
-        if (!$ignoreMissing) {
-            if ($isSandboxed && !$alreadySandboxed) {
-                $sandbox->disableSandbox();
-            }
-
-            throw $e;
-        }
-    }
-
-    if ($isSandboxed && !$alreadySandboxed) {
-        $sandbox->disableSandbox();
-    }
-
-    return $result;
-}
-
-/**
- * Returns a template content without rendering it.
- *
- * @param Twig_Environment $env
- * @param string           $name          The template name
- * @param bool             $ignoreMissing Whether to ignore missing templates or not
- *
- * @return string The template source
- */
-function twig_source(Twig_Environment $env, $name, $ignoreMissing = false)
-{
-    try {
-        return $env->getLoader()->getSource($name);
-    } catch (Twig_Error_Loader $e) {
-        if (!$ignoreMissing) {
-            throw $e;
-        }
-    }
-}
-
-/**
- * Provides the ability to get constants from instances as well as class/global constants.
- *
- * @param string      $constant The name of the constant
- * @param null|object $object   The object to get the constant from
- *
- * @return string
- */
-function twig_constant($constant, $object = null)
-{
-    if (null !== $object) {
-        $constant = get_class($object).'::'.$constant;
-    }
-
-    return constant($constant);
-}
-
-/**
- * Batches item.
- *
- * @param array $items An array of items
- * @param int   $size  The size of the batch
- * @param mixed $fill  A value used to fill missing items
- *
- * @return array
- */
-function twig_array_batch($items, $size, $fill = null)
-{
-    if ($items instanceof Traversable) {
-        $items = iterator_to_array($items, false);
-    }
-
-    $size = ceil($size);
-
-    $result = array_chunk($items, $size, true);
-
-    if (null !== $fill && !empty($result)) {
-        $last = count($result) - 1;
-        if ($fillCount = $size - count($result[$last])) {
-            $result[$last] = array_merge(
-                $result[$last],
-                array_fill(0, $fillCount, $fill)
-            );
-        }
-    }
-
-    return $result;
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Debug.php b/vendor/twig/twig/lib/Twig/Extension/Debug.php
deleted file mode 100644
index 42fdb1e..0000000
--- a/vendor/twig/twig/lib/Twig/Extension/Debug.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Extension_Debug extends Twig_Extension
-{
-    public function getFunctions()
-    {
-        // dump is safe if var_dump is overridden by xdebug
-        $isDumpOutputHtmlSafe = extension_loaded('xdebug')
-            // false means that it was not set (and the default is on) or it explicitly enabled
-            && (false === ini_get('xdebug.overload_var_dump') || ini_get('xdebug.overload_var_dump'))
-            // false means that it was not set (and the default is on) or it explicitly enabled
-            // xdebug.overload_var_dump produces HTML only when html_errors is also enabled
-            && (false === ini_get('html_errors') || ini_get('html_errors'))
-            || 'cli' === php_sapi_name()
-        ;
-
-        return array(
-            new Twig_SimpleFunction('dump', 'twig_var_dump', array('is_safe' => $isDumpOutputHtmlSafe ? array('html') : array(), 'needs_context' => true, 'needs_environment' => true)),
-        );
-    }
-
-    public function getName()
-    {
-        return 'debug';
-    }
-}
-
-function twig_var_dump(Twig_Environment $env, $context)
-{
-    if (!$env->isDebug()) {
-        return;
-    }
-
-    ob_start();
-
-    $count = func_num_args();
-    if (2 === $count) {
-        $vars = array();
-        foreach ($context as $key => $value) {
-            if (!$value instanceof Twig_Template) {
-                $vars[$key] = $value;
-            }
-        }
-
-        var_dump($vars);
-    } else {
-        for ($i = 2; $i < $count; ++$i) {
-            var_dump(func_get_arg($i));
-        }
-    }
-
-    return ob_get_clean();
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Escaper.php b/vendor/twig/twig/lib/Twig/Extension/Escaper.php
deleted file mode 100644
index 0e06693..0000000
--- a/vendor/twig/twig/lib/Twig/Extension/Escaper.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Extension_Escaper extends Twig_Extension
-{
-    protected $defaultStrategy;
-
-    /**
-     * Constructor.
-     *
-     * @param string|false|callable $defaultStrategy An escaping strategy
-     *
-     * @see setDefaultStrategy()
-     */
-    public function __construct($defaultStrategy = 'html')
-    {
-        $this->setDefaultStrategy($defaultStrategy);
-    }
-
-    public function getTokenParsers()
-    {
-        return array(new Twig_TokenParser_AutoEscape());
-    }
-
-    public function getNodeVisitors()
-    {
-        return array(new Twig_NodeVisitor_Escaper());
-    }
-
-    public function getFilters()
-    {
-        return array(
-            new Twig_SimpleFilter('raw', 'twig_raw_filter', array('is_safe' => array('all'))),
-        );
-    }
-
-    /**
-     * Sets the default strategy to use when not defined by the user.
-     *
-     * The strategy can be a valid PHP callback that takes the template
-     * "filename" as an argument and returns the strategy to use.
-     *
-     * @param string|false|callable $defaultStrategy An escaping strategy
-     */
-    public function setDefaultStrategy($defaultStrategy)
-    {
-        // for BC
-        if (true === $defaultStrategy) {
-            @trigger_error('Using "true" as the default strategy is deprecated. Use "html" instead.', E_USER_DEPRECATED);
-
-            $defaultStrategy = 'html';
-        }
-
-        if ('filename' === $defaultStrategy) {
-            $defaultStrategy = array('Twig_FileExtensionEscapingStrategy', 'guess');
-        }
-
-        $this->defaultStrategy = $defaultStrategy;
-    }
-
-    /**
-     * Gets the default strategy to use when not defined by the user.
-     *
-     * @param string $filename The template "filename"
-     *
-     * @return string|false The default strategy to use for the template
-     */
-    public function getDefaultStrategy($filename)
-    {
-        // disable string callables to avoid calling a function named html or js,
-        // or any other upcoming escaping strategy
-        if (!is_string($this->defaultStrategy) && false !== $this->defaultStrategy) {
-            return call_user_func($this->defaultStrategy, $filename);
-        }
-
-        return $this->defaultStrategy;
-    }
-
-    public function getName()
-    {
-        return 'escaper';
-    }
-}
-
-/**
- * Marks a variable as being safe.
- *
- * @param string $string A PHP variable
- *
- * @return string
- */
-function twig_raw_filter($string)
-{
-    return $string;
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/GlobalsInterface.php b/vendor/twig/twig/lib/Twig/Extension/GlobalsInterface.php
deleted file mode 100644
index 5370b8e..0000000
--- a/vendor/twig/twig/lib/Twig/Extension/GlobalsInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Enables usage of the deprecated Twig_Extension::getGlobals() method.
- *
- * Explicitly implement this interface if you really need to implement the
- * deprecated getGlobals() method in your extensions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface Twig_Extension_GlobalsInterface
-{
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php b/vendor/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php
deleted file mode 100644
index 7a07582..0000000
--- a/vendor/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Enables usage of the deprecated Twig_Extension::initRuntime() method.
- *
- * Explicitly implement this interface if you really need to implement the
- * deprecated initRuntime() method in your extensions.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface Twig_Extension_InitRuntimeInterface
-{
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Optimizer.php b/vendor/twig/twig/lib/Twig/Extension/Optimizer.php
deleted file mode 100644
index 5a64a1a..0000000
--- a/vendor/twig/twig/lib/Twig/Extension/Optimizer.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Extension_Optimizer extends Twig_Extension
-{
-    protected $optimizers;
-
-    public function __construct($optimizers = -1)
-    {
-        $this->optimizers = $optimizers;
-    }
-
-    public function getNodeVisitors()
-    {
-        return array(new Twig_NodeVisitor_Optimizer($this->optimizers));
-    }
-
-    public function getName()
-    {
-        return 'optimizer';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Profiler.php b/vendor/twig/twig/lib/Twig/Extension/Profiler.php
deleted file mode 100644
index 4d9f97f..0000000
--- a/vendor/twig/twig/lib/Twig/Extension/Profiler.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-class Twig_Extension_Profiler extends Twig_Extension
-{
-    private $actives = array();
-
-    public function __construct(Twig_Profiler_Profile $profile)
-    {
-        $this->actives[] = $profile;
-    }
-
-    public function enter(Twig_Profiler_Profile $profile)
-    {
-        $this->actives[0]->addProfile($profile);
-        array_unshift($this->actives, $profile);
-    }
-
-    public function leave(Twig_Profiler_Profile $profile)
-    {
-        $profile->leave();
-        array_shift($this->actives);
-
-        if (1 === count($this->actives)) {
-            $this->actives[0]->leave();
-        }
-    }
-
-    public function getNodeVisitors()
-    {
-        return array(new Twig_Profiler_NodeVisitor_Profiler($this->getName()));
-    }
-
-    public function getName()
-    {
-        return 'profiler';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Sandbox.php b/vendor/twig/twig/lib/Twig/Extension/Sandbox.php
deleted file mode 100644
index 760d123..0000000
--- a/vendor/twig/twig/lib/Twig/Extension/Sandbox.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Extension_Sandbox extends Twig_Extension
-{
-    protected $sandboxedGlobally;
-    protected $sandboxed;
-    protected $policy;
-
-    public function __construct(Twig_Sandbox_SecurityPolicyInterface $policy, $sandboxed = false)
-    {
-        $this->policy = $policy;
-        $this->sandboxedGlobally = $sandboxed;
-    }
-
-    public function getTokenParsers()
-    {
-        return array(new Twig_TokenParser_Sandbox());
-    }
-
-    public function getNodeVisitors()
-    {
-        return array(new Twig_NodeVisitor_Sandbox());
-    }
-
-    public function enableSandbox()
-    {
-        $this->sandboxed = true;
-    }
-
-    public function disableSandbox()
-    {
-        $this->sandboxed = false;
-    }
-
-    public function isSandboxed()
-    {
-        return $this->sandboxedGlobally || $this->sandboxed;
-    }
-
-    public function isSandboxedGlobally()
-    {
-        return $this->sandboxedGlobally;
-    }
-
-    public function setSecurityPolicy(Twig_Sandbox_SecurityPolicyInterface $policy)
-    {
-        $this->policy = $policy;
-    }
-
-    public function getSecurityPolicy()
-    {
-        return $this->policy;
-    }
-
-    public function checkSecurity($tags, $filters, $functions)
-    {
-        if ($this->isSandboxed()) {
-            $this->policy->checkSecurity($tags, $filters, $functions);
-        }
-    }
-
-    public function checkMethodAllowed($obj, $method)
-    {
-        if ($this->isSandboxed()) {
-            $this->policy->checkMethodAllowed($obj, $method);
-        }
-    }
-
-    public function checkPropertyAllowed($obj, $method)
-    {
-        if ($this->isSandboxed()) {
-            $this->policy->checkPropertyAllowed($obj, $method);
-        }
-    }
-
-    public function ensureToStringAllowed($obj)
-    {
-        if ($this->isSandboxed() && is_object($obj)) {
-            $this->policy->checkMethodAllowed($obj, '__toString');
-        }
-
-        return $obj;
-    }
-
-    public function getName()
-    {
-        return 'sandbox';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/Staging.php b/vendor/twig/twig/lib/Twig/Extension/Staging.php
deleted file mode 100644
index d21004d..0000000
--- a/vendor/twig/twig/lib/Twig/Extension/Staging.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Internal class.
- *
- * This class is used by Twig_Environment as a staging area and must not be used directly.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @internal
- */
-class Twig_Extension_Staging extends Twig_Extension
-{
-    protected $functions = array();
-    protected $filters = array();
-    protected $visitors = array();
-    protected $tokenParsers = array();
-    protected $globals = array();
-    protected $tests = array();
-
-    public function addFunction($name, $function)
-    {
-        $this->functions[$name] = $function;
-    }
-
-    public function getFunctions()
-    {
-        return $this->functions;
-    }
-
-    public function addFilter($name, $filter)
-    {
-        $this->filters[$name] = $filter;
-    }
-
-    public function getFilters()
-    {
-        return $this->filters;
-    }
-
-    public function addNodeVisitor(Twig_NodeVisitorInterface $visitor)
-    {
-        $this->visitors[] = $visitor;
-    }
-
-    public function getNodeVisitors()
-    {
-        return $this->visitors;
-    }
-
-    public function addTokenParser(Twig_TokenParserInterface $parser)
-    {
-        $this->tokenParsers[] = $parser;
-    }
-
-    public function getTokenParsers()
-    {
-        return $this->tokenParsers;
-    }
-
-    public function addGlobal($name, $value)
-    {
-        $this->globals[$name] = $value;
-    }
-
-    public function getGlobals()
-    {
-        return $this->globals;
-    }
-
-    public function addTest($name, $test)
-    {
-        $this->tests[$name] = $test;
-    }
-
-    public function getTests()
-    {
-        return $this->tests;
-    }
-
-    public function getName()
-    {
-        return 'staging';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Extension/StringLoader.php b/vendor/twig/twig/lib/Twig/Extension/StringLoader.php
deleted file mode 100644
index 2a3ddb6..0000000
--- a/vendor/twig/twig/lib/Twig/Extension/StringLoader.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Extension_StringLoader extends Twig_Extension
-{
-    public function getFunctions()
-    {
-        return array(
-            new Twig_SimpleFunction('template_from_string', 'twig_template_from_string', array('needs_environment' => true)),
-        );
-    }
-
-    public function getName()
-    {
-        return 'string_loader';
-    }
-}
-
-/**
- * Loads a template from a string.
- *
- * <pre>
- * {{ include(template_from_string("Hello {{ name }}")) }}
- * </pre>
- *
- * @param Twig_Environment $env      A Twig_Environment instance
- * @param string           $template A template as a string or object implementing __toString()
- *
- * @return Twig_Template A Twig_Template instance
- */
-function twig_template_from_string(Twig_Environment $env, $template)
-{
-    return $env->createTemplate((string) $template);
-}
diff --git a/vendor/twig/twig/lib/Twig/ExtensionInterface.php b/vendor/twig/twig/lib/Twig/ExtensionInterface.php
deleted file mode 100644
index 5cf3f46..0000000
--- a/vendor/twig/twig/lib/Twig/ExtensionInterface.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interface implemented by extension classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface Twig_ExtensionInterface
-{
-    /**
-     * Initializes the runtime environment.
-     *
-     * This is where you can load some file that contains filter functions for instance.
-     *
-     * @param Twig_Environment $environment The current Twig_Environment instance
-     *
-     * @deprecated since 1.23 (to be removed in 2.0), implement Twig_Extension_InitRuntimeInterace instead
-     */
-    public function initRuntime(Twig_Environment $environment);
-
-    /**
-     * Returns the token parser instances to add to the existing list.
-     *
-     * @return Twig_TokenParserInterface[]
-     */
-    public function getTokenParsers();
-
-    /**
-     * Returns the node visitor instances to add to the existing list.
-     *
-     * @return Twig_NodeVisitorInterface[] An array of Twig_NodeVisitorInterface instances
-     */
-    public function getNodeVisitors();
-
-    /**
-     * Returns a list of filters to add to the existing list.
-     *
-     * @return Twig_SimpleFilter[]
-     */
-    public function getFilters();
-
-    /**
-     * Returns a list of tests to add to the existing list.
-     *
-     * @return Twig_SimpleTest[]
-     */
-    public function getTests();
-
-    /**
-     * Returns a list of functions to add to the existing list.
-     *
-     * @return Twig_SimpleFunction[]
-     */
-    public function getFunctions();
-
-    /**
-     * Returns a list of operators to add to the existing list.
-     *
-     * @return array An array of operators
-     */
-    public function getOperators();
-
-    /**
-     * Returns a list of global variables to add to the existing list.
-     *
-     * @return array An array of global variables
-     *
-     * @deprecated since 1.23 (to be removed in 2.0), implement Twig_Extension_GlobalsInterface instead
-     */
-    public function getGlobals();
-
-    /**
-     * Returns the name of the extension.
-     *
-     * @return string The extension name
-     */
-    public function getName();
-}
diff --git a/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php b/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php
deleted file mode 100644
index 9bda0b4..0000000
--- a/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Default autoescaping strategy based on file names.
- *
- * This strategy sets the HTML as the default autoescaping strategy,
- * but changes it based on the filename.
- *
- * Note that there is no runtime performance impact as the
- * default autoescaping strategy is set at compilation time.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_FileExtensionEscapingStrategy
-{
-    /**
-     * Guesses the best autoescaping strategy based on the file name.
-     *
-     * @param string $filename The template file name
-     *
-     * @return string|false The escaping strategy name to use or false to disable
-     */
-    public static function guess($filename)
-    {
-        if (in_array(substr($filename, -1), array('/', '\\'))) {
-            return 'html'; // return html for directories
-        }
-
-        if ('.twig' === substr($filename, -5)) {
-            $filename = substr($filename, 0, -5);
-        }
-
-        $extension = pathinfo($filename, PATHINFO_EXTENSION);
-
-        switch ($extension) {
-            case 'js':
-                return 'js';
-
-            case 'css':
-                return 'css';
-
-            case 'txt':
-                return false;
-
-            default:
-                return 'html';
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Filter.php b/vendor/twig/twig/lib/Twig/Filter.php
deleted file mode 100644
index 101d2e7..0000000
--- a/vendor/twig/twig/lib/Twig/Filter.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Filter class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFilter instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a template filter.
- *
- * Use Twig_SimpleFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-abstract class Twig_Filter implements Twig_FilterInterface, Twig_FilterCallableInterface
-{
-    protected $options;
-    protected $arguments = array();
-
-    public function __construct(array $options = array())
-    {
-        $this->options = array_merge(array(
-            'needs_environment' => false,
-            'needs_context' => false,
-            'pre_escape' => null,
-            'preserves_safety' => null,
-            'callable' => null,
-        ), $options);
-    }
-
-    public function setArguments($arguments)
-    {
-        $this->arguments = $arguments;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function needsEnvironment()
-    {
-        return $this->options['needs_environment'];
-    }
-
-    public function needsContext()
-    {
-        return $this->options['needs_context'];
-    }
-
-    public function getSafe(Twig_Node $filterArgs)
-    {
-        if (isset($this->options['is_safe'])) {
-            return $this->options['is_safe'];
-        }
-
-        if (isset($this->options['is_safe_callback'])) {
-            return call_user_func($this->options['is_safe_callback'], $filterArgs);
-        }
-    }
-
-    public function getPreservesSafety()
-    {
-        return $this->options['preserves_safety'];
-    }
-
-    public function getPreEscape()
-    {
-        return $this->options['pre_escape'];
-    }
-
-    public function getCallable()
-    {
-        return $this->options['callable'];
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Filter/Function.php b/vendor/twig/twig/lib/Twig/Filter/Function.php
deleted file mode 100644
index d679cab..0000000
--- a/vendor/twig/twig/lib/Twig/Filter/Function.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Filter_Function class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFilter instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a function template filter.
- *
- * Use Twig_SimpleFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Filter_Function extends Twig_Filter
-{
-    protected $function;
-
-    public function __construct($function, array $options = array())
-    {
-        $options['callable'] = $function;
-
-        parent::__construct($options);
-
-        $this->function = $function;
-    }
-
-    public function compile()
-    {
-        return $this->function;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Filter/Method.php b/vendor/twig/twig/lib/Twig/Filter/Method.php
deleted file mode 100644
index 655aab4..0000000
--- a/vendor/twig/twig/lib/Twig/Filter/Method.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Filter_Method class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFilter instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a method template filter.
- *
- * Use Twig_SimpleFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Filter_Method extends Twig_Filter
-{
-    protected $extension;
-    protected $method;
-
-    public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array())
-    {
-        $options['callable'] = array($extension, $method);
-
-        parent::__construct($options);
-
-        $this->extension = $extension;
-        $this->method = $method;
-    }
-
-    public function compile()
-    {
-        return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Filter/Node.php b/vendor/twig/twig/lib/Twig/Filter/Node.php
deleted file mode 100644
index a922f50..0000000
--- a/vendor/twig/twig/lib/Twig/Filter/Node.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Filter_Node class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFilter instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a template filter as a node.
- *
- * Use Twig_SimpleFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Filter_Node extends Twig_Filter
-{
-    protected $class;
-
-    public function __construct($class, array $options = array())
-    {
-        parent::__construct($options);
-
-        $this->class = $class;
-    }
-
-    public function getClass()
-    {
-        return $this->class;
-    }
-
-    public function compile()
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/FilterCallableInterface.php b/vendor/twig/twig/lib/Twig/FilterCallableInterface.php
deleted file mode 100644
index 5679861..0000000
--- a/vendor/twig/twig/lib/Twig/FilterCallableInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a callable template filter.
- *
- * Use Twig_SimpleFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_FilterCallableInterface
-{
-    public function getCallable();
-}
diff --git a/vendor/twig/twig/lib/Twig/FilterInterface.php b/vendor/twig/twig/lib/Twig/FilterInterface.php
deleted file mode 100644
index 6b0be0e..0000000
--- a/vendor/twig/twig/lib/Twig/FilterInterface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a template filter.
- *
- * Use Twig_SimpleFilter instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_FilterInterface
-{
-    /**
-     * Compiles a filter.
-     *
-     * @return string The PHP code for the filter
-     */
-    public function compile();
-
-    public function needsEnvironment();
-
-    public function needsContext();
-
-    public function getSafe(Twig_Node $filterArgs);
-
-    public function getPreservesSafety();
-
-    public function getPreEscape();
-
-    public function setArguments($arguments);
-
-    public function getArguments();
-}
diff --git a/vendor/twig/twig/lib/Twig/Function.php b/vendor/twig/twig/lib/Twig/Function.php
deleted file mode 100644
index 9fc76a8..0000000
--- a/vendor/twig/twig/lib/Twig/Function.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Function class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFunction instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a template function.
- *
- * Use Twig_SimpleFunction instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-abstract class Twig_Function implements Twig_FunctionInterface, Twig_FunctionCallableInterface
-{
-    protected $options;
-    protected $arguments = array();
-
-    public function __construct(array $options = array())
-    {
-        $this->options = array_merge(array(
-            'needs_environment' => false,
-            'needs_context' => false,
-            'callable' => null,
-        ), $options);
-    }
-
-    public function setArguments($arguments)
-    {
-        $this->arguments = $arguments;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function needsEnvironment()
-    {
-        return $this->options['needs_environment'];
-    }
-
-    public function needsContext()
-    {
-        return $this->options['needs_context'];
-    }
-
-    public function getSafe(Twig_Node $functionArgs)
-    {
-        if (isset($this->options['is_safe'])) {
-            return $this->options['is_safe'];
-        }
-
-        if (isset($this->options['is_safe_callback'])) {
-            return call_user_func($this->options['is_safe_callback'], $functionArgs);
-        }
-
-        return array();
-    }
-
-    public function getCallable()
-    {
-        return $this->options['callable'];
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Function/Function.php b/vendor/twig/twig/lib/Twig/Function/Function.php
deleted file mode 100644
index ae83e15..0000000
--- a/vendor/twig/twig/lib/Twig/Function/Function.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2010 Arnaud Le Blanc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Function_Function class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFunction instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a function template function.
- *
- * Use Twig_SimpleFunction instead.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Function_Function extends Twig_Function
-{
-    protected $function;
-
-    public function __construct($function, array $options = array())
-    {
-        $options['callable'] = $function;
-
-        parent::__construct($options);
-
-        $this->function = $function;
-    }
-
-    public function compile()
-    {
-        return $this->function;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Function/Method.php b/vendor/twig/twig/lib/Twig/Function/Method.php
deleted file mode 100644
index ba9945e..0000000
--- a/vendor/twig/twig/lib/Twig/Function/Method.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2010 Arnaud Le Blanc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Function_Method class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFunction instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a method template function.
- *
- * Use Twig_SimpleFunction instead.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Function_Method extends Twig_Function
-{
-    protected $extension;
-    protected $method;
-
-    public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array())
-    {
-        $options['callable'] = array($extension, $method);
-
-        parent::__construct($options);
-
-        $this->extension = $extension;
-        $this->method = $method;
-    }
-
-    public function compile()
-    {
-        return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Function/Node.php b/vendor/twig/twig/lib/Twig/Function/Node.php
deleted file mode 100644
index 118b0ba..0000000
--- a/vendor/twig/twig/lib/Twig/Function/Node.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Function_Node class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFunction instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a template function as a node.
- *
- * Use Twig_SimpleFunction instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Function_Node extends Twig_Function
-{
-    protected $class;
-
-    public function __construct($class, array $options = array())
-    {
-        parent::__construct($options);
-
-        $this->class = $class;
-    }
-
-    public function getClass()
-    {
-        return $this->class;
-    }
-
-    public function compile()
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php b/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php
deleted file mode 100644
index 87d795e..0000000
--- a/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a callable template function.
- *
- * Use Twig_SimpleFunction instead.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_FunctionCallableInterface
-{
-    public function getCallable();
-}
diff --git a/vendor/twig/twig/lib/Twig/FunctionInterface.php b/vendor/twig/twig/lib/Twig/FunctionInterface.php
deleted file mode 100644
index f449234..0000000
--- a/vendor/twig/twig/lib/Twig/FunctionInterface.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- * (c) 2010 Arnaud Le Blanc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a template function.
- *
- * Use Twig_SimpleFunction instead.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_FunctionInterface
-{
-    /**
-     * Compiles a function.
-     *
-     * @return string The PHP code for the function
-     */
-    public function compile();
-
-    public function needsEnvironment();
-
-    public function needsContext();
-
-    public function getSafe(Twig_Node $filterArgs);
-
-    public function setArguments($arguments);
-
-    public function getArguments();
-}
diff --git a/vendor/twig/twig/lib/Twig/Lexer.php b/vendor/twig/twig/lib/Twig/Lexer.php
deleted file mode 100644
index 575b4f3..0000000
--- a/vendor/twig/twig/lib/Twig/Lexer.php
+++ /dev/null
@@ -1,411 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Lexes a template string.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Lexer implements Twig_LexerInterface
-{
-    protected $tokens;
-    protected $code;
-    protected $cursor;
-    protected $lineno;
-    protected $end;
-    protected $state;
-    protected $states;
-    protected $brackets;
-    protected $env;
-    protected $filename;
-    protected $options;
-    protected $regexes;
-    protected $position;
-    protected $positions;
-    protected $currentVarBlockLine;
-
-    const STATE_DATA = 0;
-    const STATE_BLOCK = 1;
-    const STATE_VAR = 2;
-    const STATE_STRING = 3;
-    const STATE_INTERPOLATION = 4;
-
-    const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A';
-    const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?/A';
-    const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As';
-    const REGEX_DQ_STRING_DELIM = '/"/A';
-    const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As';
-    const PUNCTUATION = '()[]{}?:.,|';
-
-    public function __construct(Twig_Environment $env, array $options = array())
-    {
-        $this->env = $env;
-
-        $this->options = array_merge(array(
-            'tag_comment' => array('{#', '#}'),
-            'tag_block' => array('{%', '%}'),
-            'tag_variable' => array('{{', '}}'),
-            'whitespace_trim' => '-',
-            'interpolation' => array('#{', '}'),
-        ), $options);
-
-        $this->regexes = array(
-            'lex_var' => '/\s*'.preg_quote($this->options['whitespace_trim'].$this->options['tag_variable'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_variable'][1], '/').'/A',
-            'lex_block' => '/\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')\n?/A',
-            'lex_raw_data' => '/('.preg_quote($this->options['tag_block'][0].$this->options['whitespace_trim'], '/').'|'.preg_quote($this->options['tag_block'][0], '/').')\s*(?:end%s)\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')/s',
-            'operator' => $this->getOperatorRegex(),
-            'lex_comment' => '/(?:'.preg_quote($this->options['whitespace_trim'], '/').preg_quote($this->options['tag_comment'][1], '/').'\s*|'.preg_quote($this->options['tag_comment'][1], '/').')\n?/s',
-            'lex_block_raw' => '/\s*(raw|verbatim)\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')/As',
-            'lex_block_line' => '/\s*line\s+(\d+)\s*'.preg_quote($this->options['tag_block'][1], '/').'/As',
-            'lex_tokens_start' => '/('.preg_quote($this->options['tag_variable'][0], '/').'|'.preg_quote($this->options['tag_block'][0], '/').'|'.preg_quote($this->options['tag_comment'][0], '/').')('.preg_quote($this->options['whitespace_trim'], '/').')?/s',
-            'interpolation_start' => '/'.preg_quote($this->options['interpolation'][0], '/').'\s*/A',
-            'interpolation_end' => '/\s*'.preg_quote($this->options['interpolation'][1], '/').'/A',
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function tokenize($code, $filename = null)
-    {
-        if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
-            $mbEncoding = mb_internal_encoding();
-            mb_internal_encoding('ASCII');
-        } else {
-            $mbEncoding = null;
-        }
-
-        $this->code = str_replace(array("\r\n", "\r"), "\n", $code);
-        $this->filename = $filename;
-        $this->cursor = 0;
-        $this->lineno = 1;
-        $this->end = strlen($this->code);
-        $this->tokens = array();
-        $this->state = self::STATE_DATA;
-        $this->states = array();
-        $this->brackets = array();
-        $this->position = -1;
-
-        // find all token starts in one go
-        preg_match_all($this->regexes['lex_tokens_start'], $this->code, $matches, PREG_OFFSET_CAPTURE);
-        $this->positions = $matches;
-
-        while ($this->cursor < $this->end) {
-            // dispatch to the lexing functions depending
-            // on the current state
-            switch ($this->state) {
-                case self::STATE_DATA:
-                    $this->lexData();
-                    break;
-
-                case self::STATE_BLOCK:
-                    $this->lexBlock();
-                    break;
-
-                case self::STATE_VAR:
-                    $this->lexVar();
-                    break;
-
-                case self::STATE_STRING:
-                    $this->lexString();
-                    break;
-
-                case self::STATE_INTERPOLATION:
-                    $this->lexInterpolation();
-                    break;
-            }
-        }
-
-        $this->pushToken(Twig_Token::EOF_TYPE);
-
-        if (!empty($this->brackets)) {
-            list($expect, $lineno) = array_pop($this->brackets);
-            throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $expect), $lineno, $this->filename);
-        }
-
-        if ($mbEncoding) {
-            mb_internal_encoding($mbEncoding);
-        }
-
-        return new Twig_TokenStream($this->tokens, $this->filename);
-    }
-
-    protected function lexData()
-    {
-        // if no matches are left we return the rest of the template as simple text token
-        if ($this->position == count($this->positions[0]) - 1) {
-            $this->pushToken(Twig_Token::TEXT_TYPE, substr($this->code, $this->cursor));
-            $this->cursor = $this->end;
-
-            return;
-        }
-
-        // Find the first token after the current cursor
-        $position = $this->positions[0][++$this->position];
-        while ($position[1] < $this->cursor) {
-            if ($this->position == count($this->positions[0]) - 1) {
-                return;
-            }
-            $position = $this->positions[0][++$this->position];
-        }
-
-        // push the template text first
-        $text = $textContent = substr($this->code, $this->cursor, $position[1] - $this->cursor);
-        if (isset($this->positions[2][$this->position][0])) {
-            $text = rtrim($text);
-        }
-        $this->pushToken(Twig_Token::TEXT_TYPE, $text);
-        $this->moveCursor($textContent.$position[0]);
-
-        switch ($this->positions[1][$this->position][0]) {
-            case $this->options['tag_comment'][0]:
-                $this->lexComment();
-                break;
-
-            case $this->options['tag_block'][0]:
-                // raw data?
-                if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, null, $this->cursor)) {
-                    $this->moveCursor($match[0]);
-                    $this->lexRawData($match[1]);
-                // {% line \d+ %}
-                } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, null, $this->cursor)) {
-                    $this->moveCursor($match[0]);
-                    $this->lineno = (int) $match[1];
-                } else {
-                    $this->pushToken(Twig_Token::BLOCK_START_TYPE);
-                    $this->pushState(self::STATE_BLOCK);
-                    $this->currentVarBlockLine = $this->lineno;
-                }
-                break;
-
-            case $this->options['tag_variable'][0]:
-                $this->pushToken(Twig_Token::VAR_START_TYPE);
-                $this->pushState(self::STATE_VAR);
-                $this->currentVarBlockLine = $this->lineno;
-                break;
-        }
-    }
-
-    protected function lexBlock()
-    {
-        if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, null, $this->cursor)) {
-            $this->pushToken(Twig_Token::BLOCK_END_TYPE);
-            $this->moveCursor($match[0]);
-            $this->popState();
-        } else {
-            $this->lexExpression();
-        }
-    }
-
-    protected function lexVar()
-    {
-        if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, null, $this->cursor)) {
-            $this->pushToken(Twig_Token::VAR_END_TYPE);
-            $this->moveCursor($match[0]);
-            $this->popState();
-        } else {
-            $this->lexExpression();
-        }
-    }
-
-    protected function lexExpression()
-    {
-        // whitespace
-        if (preg_match('/\s+/A', $this->code, $match, null, $this->cursor)) {
-            $this->moveCursor($match[0]);
-
-            if ($this->cursor >= $this->end) {
-                throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $this->state === self::STATE_BLOCK ? 'block' : 'variable'), $this->currentVarBlockLine, $this->filename);
-            }
-        }
-
-        // operators
-        if (preg_match($this->regexes['operator'], $this->code, $match, null, $this->cursor)) {
-            $this->pushToken(Twig_Token::OPERATOR_TYPE, preg_replace('/\s+/', ' ', $match[0]));
-            $this->moveCursor($match[0]);
-        }
-        // names
-        elseif (preg_match(self::REGEX_NAME, $this->code, $match, null, $this->cursor)) {
-            $this->pushToken(Twig_Token::NAME_TYPE, $match[0]);
-            $this->moveCursor($match[0]);
-        }
-        // numbers
-        elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, null, $this->cursor)) {
-            $number = (float) $match[0];  // floats
-            if (ctype_digit($match[0]) && $number <= PHP_INT_MAX) {
-                $number = (int) $match[0]; // integers lower than the maximum
-            }
-            $this->pushToken(Twig_Token::NUMBER_TYPE, $number);
-            $this->moveCursor($match[0]);
-        }
-        // punctuation
-        elseif (false !== strpos(self::PUNCTUATION, $this->code[$this->cursor])) {
-            // opening bracket
-            if (false !== strpos('([{', $this->code[$this->cursor])) {
-                $this->brackets[] = array($this->code[$this->cursor], $this->lineno);
-            }
-            // closing bracket
-            elseif (false !== strpos(')]}', $this->code[$this->cursor])) {
-                if (empty($this->brackets)) {
-                    throw new Twig_Error_Syntax(sprintf('Unexpected "%s".', $this->code[$this->cursor]), $this->lineno, $this->filename);
-                }
-
-                list($expect, $lineno) = array_pop($this->brackets);
-                if ($this->code[$this->cursor] != strtr($expect, '([{', ')]}')) {
-                    throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $expect), $lineno, $this->filename);
-                }
-            }
-
-            $this->pushToken(Twig_Token::PUNCTUATION_TYPE, $this->code[$this->cursor]);
-            ++$this->cursor;
-        }
-        // strings
-        elseif (preg_match(self::REGEX_STRING, $this->code, $match, null, $this->cursor)) {
-            $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes(substr($match[0], 1, -1)));
-            $this->moveCursor($match[0]);
-        }
-        // opening double quoted string
-        elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) {
-            $this->brackets[] = array('"', $this->lineno);
-            $this->pushState(self::STATE_STRING);
-            $this->moveCursor($match[0]);
-        }
-        // unlexable
-        else {
-            throw new Twig_Error_Syntax(sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->filename);
-        }
-    }
-
-    protected function lexRawData($tag)
-    {
-        if ('raw' === $tag) {
-            @trigger_error(sprintf('Twig Tag "raw" is deprecated. Use "verbatim" instead in %s at line %d.', $this->filename, $this->lineno), E_USER_DEPRECATED);
-        }
-
-        if (!preg_match(str_replace('%s', $tag, $this->regexes['lex_raw_data']), $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) {
-            throw new Twig_Error_Syntax(sprintf('Unexpected end of file: Unclosed "%s" block.', $tag), $this->lineno, $this->filename);
-        }
-
-        $text = substr($this->code, $this->cursor, $match[0][1] - $this->cursor);
-        $this->moveCursor($text.$match[0][0]);
-
-        if (false !== strpos($match[1][0], $this->options['whitespace_trim'])) {
-            $text = rtrim($text);
-        }
-
-        $this->pushToken(Twig_Token::TEXT_TYPE, $text);
-    }
-
-    protected function lexComment()
-    {
-        if (!preg_match($this->regexes['lex_comment'], $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) {
-            throw new Twig_Error_Syntax('Unclosed comment.', $this->lineno, $this->filename);
-        }
-
-        $this->moveCursor(substr($this->code, $this->cursor, $match[0][1] - $this->cursor).$match[0][0]);
-    }
-
-    protected function lexString()
-    {
-        if (preg_match($this->regexes['interpolation_start'], $this->code, $match, null, $this->cursor)) {
-            $this->brackets[] = array($this->options['interpolation'][0], $this->lineno);
-            $this->pushToken(Twig_Token::INTERPOLATION_START_TYPE);
-            $this->moveCursor($match[0]);
-            $this->pushState(self::STATE_INTERPOLATION);
-        } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, null, $this->cursor) && strlen($match[0]) > 0) {
-            $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes($match[0]));
-            $this->moveCursor($match[0]);
-        } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) {
-            list($expect, $lineno) = array_pop($this->brackets);
-            if ($this->code[$this->cursor] != '"') {
-                throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $expect), $lineno, $this->filename);
-            }
-
-            $this->popState();
-            ++$this->cursor;
-        }
-    }
-
-    protected function lexInterpolation()
-    {
-        $bracket = end($this->brackets);
-        if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, null, $this->cursor)) {
-            array_pop($this->brackets);
-            $this->pushToken(Twig_Token::INTERPOLATION_END_TYPE);
-            $this->moveCursor($match[0]);
-            $this->popState();
-        } else {
-            $this->lexExpression();
-        }
-    }
-
-    protected function pushToken($type, $value = '')
-    {
-        // do not push empty text tokens
-        if (Twig_Token::TEXT_TYPE === $type && '' === $value) {
-            return;
-        }
-
-        $this->tokens[] = new Twig_Token($type, $value, $this->lineno);
-    }
-
-    protected function moveCursor($text)
-    {
-        $this->cursor += strlen($text);
-        $this->lineno += substr_count($text, "\n");
-    }
-
-    protected function getOperatorRegex()
-    {
-        $operators = array_merge(
-            array('='),
-            array_keys($this->env->getUnaryOperators()),
-            array_keys($this->env->getBinaryOperators())
-        );
-
-        $operators = array_combine($operators, array_map('strlen', $operators));
-        arsort($operators);
-
-        $regex = array();
-        foreach ($operators as $operator => $length) {
-            // an operator that ends with a character must be followed by
-            // a whitespace or a parenthesis
-            if (ctype_alpha($operator[$length - 1])) {
-                $r = preg_quote($operator, '/').'(?=[\s()])';
-            } else {
-                $r = preg_quote($operator, '/');
-            }
-
-            // an operator with a space can be any amount of whitespaces
-            $r = preg_replace('/\s+/', '\s+', $r);
-
-            $regex[] = $r;
-        }
-
-        return '/'.implode('|', $regex).'/A';
-    }
-
-    protected function pushState($state)
-    {
-        $this->states[] = $this->state;
-        $this->state = $state;
-    }
-
-    protected function popState()
-    {
-        if (0 === count($this->states)) {
-            throw new Exception('Cannot pop state without a previous state');
-        }
-
-        $this->state = array_pop($this->states);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/LexerInterface.php b/vendor/twig/twig/lib/Twig/LexerInterface.php
deleted file mode 100644
index 24a9478..0000000
--- a/vendor/twig/twig/lib/Twig/LexerInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interface implemented by lexer classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_LexerInterface
-{
-    /**
-     * Tokenizes a source code.
-     *
-     * @param string $code     The source code
-     * @param string $filename A unique identifier for the source code
-     *
-     * @return Twig_TokenStream A token stream instance
-     *
-     * @throws Twig_Error_Syntax When the code is syntactically wrong
-     */
-    public function tokenize($code, $filename = null);
-}
diff --git a/vendor/twig/twig/lib/Twig/Loader/Array.php b/vendor/twig/twig/lib/Twig/Loader/Array.php
deleted file mode 100644
index 90221d5..0000000
--- a/vendor/twig/twig/lib/Twig/Loader/Array.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Loads a template from an array.
- *
- * When using this loader with a cache mechanism, you should know that a new cache
- * key is generated each time a template content "changes" (the cache key being the
- * source code of the template). If you don't want to see your cache grows out of
- * control, you need to take care of clearing the old cache file by yourself.
- *
- * This loader should only be used for unit testing.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Loader_Array implements Twig_LoaderInterface, Twig_ExistsLoaderInterface
-{
-    protected $templates = array();
-
-    /**
-     * Constructor.
-     *
-     * @param array $templates An array of templates (keys are the names, and values are the source code)
-     */
-    public function __construct(array $templates)
-    {
-        $this->templates = $templates;
-    }
-
-    /**
-     * Adds or overrides a template.
-     *
-     * @param string $name     The template name
-     * @param string $template The template source
-     */
-    public function setTemplate($name, $template)
-    {
-        $this->templates[(string) $name] = $template;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSource($name)
-    {
-        $name = (string) $name;
-        if (!isset($this->templates[$name])) {
-            throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name));
-        }
-
-        return $this->templates[$name];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function exists($name)
-    {
-        return isset($this->templates[(string) $name]);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCacheKey($name)
-    {
-        $name = (string) $name;
-        if (!isset($this->templates[$name])) {
-            throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name));
-        }
-
-        return $this->templates[$name];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isFresh($name, $time)
-    {
-        $name = (string) $name;
-        if (!isset($this->templates[$name])) {
-            throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name));
-        }
-
-        return true;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Loader/Chain.php b/vendor/twig/twig/lib/Twig/Loader/Chain.php
deleted file mode 100644
index 81d57ad..0000000
--- a/vendor/twig/twig/lib/Twig/Loader/Chain.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Loads templates from other loaders.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Loader_Chain implements Twig_LoaderInterface, Twig_ExistsLoaderInterface
-{
-    private $hasSourceCache = array();
-    protected $loaders = array();
-
-    /**
-     * Constructor.
-     *
-     * @param Twig_LoaderInterface[] $loaders An array of loader instances
-     */
-    public function __construct(array $loaders = array())
-    {
-        foreach ($loaders as $loader) {
-            $this->addLoader($loader);
-        }
-    }
-
-    /**
-     * Adds a loader instance.
-     *
-     * @param Twig_LoaderInterface $loader A Loader instance
-     */
-    public function addLoader(Twig_LoaderInterface $loader)
-    {
-        $this->loaders[] = $loader;
-        $this->hasSourceCache = array();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSource($name)
-    {
-        $exceptions = array();
-        foreach ($this->loaders as $loader) {
-            if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) {
-                continue;
-            }
-
-            try {
-                return $loader->getSource($name);
-            } catch (Twig_Error_Loader $e) {
-                $exceptions[] = $e->getMessage();
-            }
-        }
-
-        throw new Twig_Error_Loader(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : ''));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function exists($name)
-    {
-        $name = (string) $name;
-
-        if (isset($this->hasSourceCache[$name])) {
-            return $this->hasSourceCache[$name];
-        }
-
-        foreach ($this->loaders as $loader) {
-            if ($loader instanceof Twig_ExistsLoaderInterface) {
-                if ($loader->exists($name)) {
-                    return $this->hasSourceCache[$name] = true;
-                }
-
-                continue;
-            }
-
-            try {
-                $loader->getSource($name);
-
-                return $this->hasSourceCache[$name] = true;
-            } catch (Twig_Error_Loader $e) {
-            }
-        }
-
-        return $this->hasSourceCache[$name] = false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCacheKey($name)
-    {
-        $exceptions = array();
-        foreach ($this->loaders as $loader) {
-            if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) {
-                continue;
-            }
-
-            try {
-                return $loader->getCacheKey($name);
-            } catch (Twig_Error_Loader $e) {
-                $exceptions[] = get_class($loader).': '.$e->getMessage();
-            }
-        }
-
-        throw new Twig_Error_Loader(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : ''));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isFresh($name, $time)
-    {
-        $exceptions = array();
-        foreach ($this->loaders as $loader) {
-            if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) {
-                continue;
-            }
-
-            try {
-                return $loader->isFresh($name, $time);
-            } catch (Twig_Error_Loader $e) {
-                $exceptions[] = get_class($loader).': '.$e->getMessage();
-            }
-        }
-
-        throw new Twig_Error_Loader(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : ''));
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Loader/Filesystem.php b/vendor/twig/twig/lib/Twig/Loader/Filesystem.php
deleted file mode 100644
index 1bc75a1..0000000
--- a/vendor/twig/twig/lib/Twig/Loader/Filesystem.php
+++ /dev/null
@@ -1,260 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Loads template from the filesystem.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderInterface
-{
-    /** Identifier of the main namespace. */
-    const MAIN_NAMESPACE = '__main__';
-
-    protected $paths = array();
-    protected $cache = array();
-    protected $errorCache = array();
-
-    /**
-     * Constructor.
-     *
-     * @param string|array $paths A path or an array of paths where to look for templates
-     */
-    public function __construct($paths = array())
-    {
-        if ($paths) {
-            $this->setPaths($paths);
-        }
-    }
-
-    /**
-     * Returns the paths to the templates.
-     *
-     * @param string $namespace A path namespace
-     *
-     * @return array The array of paths where to look for templates
-     */
-    public function getPaths($namespace = self::MAIN_NAMESPACE)
-    {
-        return isset($this->paths[$namespace]) ? $this->paths[$namespace] : array();
-    }
-
-    /**
-     * Returns the path namespaces.
-     *
-     * The main namespace is always defined.
-     *
-     * @return array The array of defined namespaces
-     */
-    public function getNamespaces()
-    {
-        return array_keys($this->paths);
-    }
-
-    /**
-     * Sets the paths where templates are stored.
-     *
-     * @param string|array $paths     A path or an array of paths where to look for templates
-     * @param string       $namespace A path namespace
-     */
-    public function setPaths($paths, $namespace = self::MAIN_NAMESPACE)
-    {
-        if (!is_array($paths)) {
-            $paths = array($paths);
-        }
-
-        $this->paths[$namespace] = array();
-        foreach ($paths as $path) {
-            $this->addPath($path, $namespace);
-        }
-    }
-
-    /**
-     * Adds a path where templates are stored.
-     *
-     * @param string $path      A path where to look for templates
-     * @param string $namespace A path name
-     *
-     * @throws Twig_Error_Loader
-     */
-    public function addPath($path, $namespace = self::MAIN_NAMESPACE)
-    {
-        // invalidate the cache
-        $this->cache = $this->errorCache = array();
-
-        if (!is_dir($path)) {
-            throw new Twig_Error_Loader(sprintf('The "%s" directory does not exist.', $path));
-        }
-
-        $this->paths[$namespace][] = rtrim($path, '/\\');
-    }
-
-    /**
-     * Prepends a path where templates are stored.
-     *
-     * @param string $path      A path where to look for templates
-     * @param string $namespace A path name
-     *
-     * @throws Twig_Error_Loader
-     */
-    public function prependPath($path, $namespace = self::MAIN_NAMESPACE)
-    {
-        // invalidate the cache
-        $this->cache = $this->errorCache = array();
-
-        if (!is_dir($path)) {
-            throw new Twig_Error_Loader(sprintf('The "%s" directory does not exist.', $path));
-        }
-
-        $path = rtrim($path, '/\\');
-
-        if (!isset($this->paths[$namespace])) {
-            $this->paths[$namespace][] = $path;
-        } else {
-            array_unshift($this->paths[$namespace], $path);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSource($name)
-    {
-        return file_get_contents($this->findTemplate($name));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCacheKey($name)
-    {
-        return $this->findTemplate($name);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function exists($name)
-    {
-        $name = $this->normalizeName($name);
-
-        if (isset($this->cache[$name])) {
-            return true;
-        }
-
-        try {
-            return false !== $this->findTemplate($name, false);
-        } catch (Twig_Error_Loader $exception) {
-            return false;
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isFresh($name, $time)
-    {
-        return filemtime($this->findTemplate($name)) <= $time;
-    }
-
-    protected function findTemplate($name)
-    {
-        $throw = func_num_args() > 1 ? func_get_arg(1) : true;
-        $name = $this->normalizeName($name);
-
-        if (isset($this->cache[$name])) {
-            return $this->cache[$name];
-        }
-
-        if (isset($this->errorCache[$name])) {
-            if (!$throw) {
-                return false;
-            }
-
-            throw new Twig_Error_Loader($this->errorCache[$name]);
-        }
-
-        $this->validateName($name);
-
-        list($namespace, $shortname) = $this->parseName($name);
-
-        if (!isset($this->paths[$namespace])) {
-            $this->errorCache[$name] = sprintf('There are no registered paths for namespace "%s".', $namespace);
-
-            if (!$throw) {
-                return false;
-            }
-
-            throw new Twig_Error_Loader($this->errorCache[$name]);
-        }
-
-        foreach ($this->paths[$namespace] as $path) {
-            if (is_file($path.'/'.$shortname)) {
-                if (false !== $realpath = realpath($path.'/'.$shortname)) {
-                    return $this->cache[$name] = $realpath;
-                }
-
-                return $this->cache[$name] = $path.'/'.$shortname;
-            }
-        }
-
-        $this->errorCache[$name] = sprintf('Unable to find template "%s" (looked into: %s).', $name, implode(', ', $this->paths[$namespace]));
-
-        if (!$throw) {
-            return false;
-        }
-
-        throw new Twig_Error_Loader($this->errorCache[$name]);
-    }
-
-    protected function parseName($name, $default = self::MAIN_NAMESPACE)
-    {
-        if (isset($name[0]) && '@' == $name[0]) {
-            if (false === $pos = strpos($name, '/')) {
-                throw new Twig_Error_Loader(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name));
-            }
-
-            $namespace = substr($name, 1, $pos - 1);
-            $shortname = substr($name, $pos + 1);
-
-            return array($namespace, $shortname);
-        }
-
-        return array($default, $name);
-    }
-
-    protected function normalizeName($name)
-    {
-        return preg_replace('#/{2,}#', '/', str_replace('\\', '/', (string) $name));
-    }
-
-    protected function validateName($name)
-    {
-        if (false !== strpos($name, "\0")) {
-            throw new Twig_Error_Loader('A template name cannot contain NUL bytes.');
-        }
-
-        $name = ltrim($name, '/');
-        $parts = explode('/', $name);
-        $level = 0;
-        foreach ($parts as $part) {
-            if ('..' === $part) {
-                --$level;
-            } elseif ('.' !== $part) {
-                ++$level;
-            }
-
-            if ($level < 0) {
-                throw new Twig_Error_Loader(sprintf('Looks like you try to load a template outside configured directories (%s).', $name));
-            }
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Loader/String.php b/vendor/twig/twig/lib/Twig/Loader/String.php
deleted file mode 100644
index 00f507a..0000000
--- a/vendor/twig/twig/lib/Twig/Loader/String.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Loader_String class is deprecated since version 1.18.1 and will be removed in 2.0. Use Twig_Loader_Array instead or Twig_Environment::createTemplate().', E_USER_DEPRECATED);
-
-/**
- * Loads a template from a string.
- *
- * This loader should NEVER be used. It only exists for Twig internal purposes.
- *
- * When using this loader with a cache mechanism, you should know that a new cache
- * key is generated each time a template content "changes" (the cache key being the
- * source code of the template). If you don't want to see your cache grows out of
- * control, you need to take care of clearing the old cache file by yourself.
- *
- * @deprecated since 1.18.1 (to be removed in 2.0)
- *
- * @internal
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Loader_String implements Twig_LoaderInterface, Twig_ExistsLoaderInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function getSource($name)
-    {
-        return $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function exists($name)
-    {
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCacheKey($name)
-    {
-        return $name;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isFresh($name, $time)
-    {
-        return true;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/LoaderInterface.php b/vendor/twig/twig/lib/Twig/LoaderInterface.php
deleted file mode 100644
index 544ea4e..0000000
--- a/vendor/twig/twig/lib/Twig/LoaderInterface.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interface all loaders must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface Twig_LoaderInterface
-{
-    /**
-     * Gets the source code of a template, given its name.
-     *
-     * @param string $name The name of the template to load
-     *
-     * @return string The template source code
-     *
-     * @throws Twig_Error_Loader When $name is not found
-     */
-    public function getSource($name);
-
-    /**
-     * Gets the cache key to use for the cache for a given template name.
-     *
-     * @param string $name The name of the template to load
-     *
-     * @return string The cache key
-     *
-     * @throws Twig_Error_Loader When $name is not found
-     */
-    public function getCacheKey($name);
-
-    /**
-     * Returns true if the template is still fresh.
-     *
-     * @param string $name The template name
-     * @param int    $time Timestamp of the last modification time of the
-     *                     cached template
-     *
-     * @return bool true if the template is fresh, false otherwise
-     *
-     * @throws Twig_Error_Loader When $name is not found
-     */
-    public function isFresh($name, $time);
-}
diff --git a/vendor/twig/twig/lib/Twig/Markup.php b/vendor/twig/twig/lib/Twig/Markup.php
deleted file mode 100644
index 69871fc..0000000
--- a/vendor/twig/twig/lib/Twig/Markup.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Marks a content as safe.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Markup implements Countable
-{
-    protected $content;
-    protected $charset;
-
-    public function __construct($content, $charset)
-    {
-        $this->content = (string) $content;
-        $this->charset = $charset;
-    }
-
-    public function __toString()
-    {
-        return $this->content;
-    }
-
-    public function count()
-    {
-        return function_exists('mb_get_info') ? mb_strlen($this->content, $this->charset) : strlen($this->content);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node.php b/vendor/twig/twig/lib/Twig/Node.php
deleted file mode 100644
index 45a8976..0000000
--- a/vendor/twig/twig/lib/Twig/Node.php
+++ /dev/null
@@ -1,231 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a node in the AST.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node implements Twig_NodeInterface
-{
-    protected $nodes;
-    protected $attributes;
-    protected $lineno;
-    protected $tag;
-
-    /**
-     * Constructor.
-     *
-     * The nodes are automatically made available as properties ($this->node).
-     * The attributes are automatically made available as array items ($this['name']).
-     *
-     * @param array  $nodes      An array of named nodes
-     * @param array  $attributes An array of attributes (should not be nodes)
-     * @param int    $lineno     The line number
-     * @param string $tag        The tag name associated with the Node
-     */
-    public function __construct(array $nodes = array(), array $attributes = array(), $lineno = 0, $tag = null)
-    {
-        $this->nodes = $nodes;
-        $this->attributes = $attributes;
-        $this->lineno = $lineno;
-        $this->tag = $tag;
-    }
-
-    public function __toString()
-    {
-        $attributes = array();
-        foreach ($this->attributes as $name => $value) {
-            $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true)));
-        }
-
-        $repr = array(get_class($this).'('.implode(', ', $attributes));
-
-        if (count($this->nodes)) {
-            foreach ($this->nodes as $name => $node) {
-                $len = strlen($name) + 4;
-                $noderepr = array();
-                foreach (explode("\n", (string) $node) as $line) {
-                    $noderepr[] = str_repeat(' ', $len).$line;
-                }
-
-                $repr[] = sprintf('  %s: %s', $name, ltrim(implode("\n", $noderepr)));
-            }
-
-            $repr[] = ')';
-        } else {
-            $repr[0] .= ')';
-        }
-
-        return implode("\n", $repr);
-    }
-
-    /**
-     * @deprecated since 1.16.1 (to be removed in 2.0)
-     */
-    public function toXml($asDom = false)
-    {
-        @trigger_error(sprintf('%s is deprecated.', __METHOD__), E_USER_DEPRECATED);
-
-        $dom = new DOMDocument('1.0', 'UTF-8');
-        $dom->formatOutput = true;
-        $dom->appendChild($xml = $dom->createElement('twig'));
-
-        $xml->appendChild($node = $dom->createElement('node'));
-        $node->setAttribute('class', get_class($this));
-
-        foreach ($this->attributes as $name => $value) {
-            $node->appendChild($attribute = $dom->createElement('attribute'));
-            $attribute->setAttribute('name', $name);
-            $attribute->appendChild($dom->createTextNode($value));
-        }
-
-        foreach ($this->nodes as $name => $n) {
-            if (null === $n) {
-                continue;
-            }
-
-            $child = $n->toXml(true)->getElementsByTagName('node')->item(0);
-            $child = $dom->importNode($child, true);
-            $child->setAttribute('name', $name);
-
-            $node->appendChild($child);
-        }
-
-        return $asDom ? $dom : $dom->saveXML();
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        foreach ($this->nodes as $node) {
-            $node->compile($compiler);
-        }
-    }
-
-    public function getLine()
-    {
-        return $this->lineno;
-    }
-
-    public function getNodeTag()
-    {
-        return $this->tag;
-    }
-
-    /**
-     * Returns true if the attribute is defined.
-     *
-     * @param string $name The attribute name
-     *
-     * @return bool true if the attribute is defined, false otherwise
-     */
-    public function hasAttribute($name)
-    {
-        return array_key_exists($name, $this->attributes);
-    }
-
-    /**
-     * Gets an attribute value by name.
-     *
-     * @param string $name
-     *
-     * @return mixed
-     */
-    public function getAttribute($name)
-    {
-        if (!array_key_exists($name, $this->attributes)) {
-            throw new LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, get_class($this)));
-        }
-
-        return $this->attributes[$name];
-    }
-
-    /**
-     * Sets an attribute by name to a value.
-     *
-     * @param string $name
-     * @param mixed  $value
-     */
-    public function setAttribute($name, $value)
-    {
-        $this->attributes[$name] = $value;
-    }
-
-    /**
-     * Removes an attribute by name.
-     *
-     * @param string $name
-     */
-    public function removeAttribute($name)
-    {
-        unset($this->attributes[$name]);
-    }
-
-    /**
-     * Returns true if the node with the given name exists.
-     *
-     * @param string $name
-     *
-     * @return bool
-     */
-    public function hasNode($name)
-    {
-        return array_key_exists($name, $this->nodes);
-    }
-
-    /**
-     * Gets a node by name.
-     *
-     * @param string $name
-     *
-     * @return Twig_Node
-     */
-    public function getNode($name)
-    {
-        if (!array_key_exists($name, $this->nodes)) {
-            throw new LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, get_class($this)));
-        }
-
-        return $this->nodes[$name];
-    }
-
-    /**
-     * Sets a node.
-     *
-     * @param string    $name
-     * @param Twig_Node $node
-     */
-    public function setNode($name, $node = null)
-    {
-        $this->nodes[$name] = $node;
-    }
-
-    /**
-     * Removes a node by name.
-     *
-     * @param string $name
-     */
-    public function removeNode($name)
-    {
-        unset($this->nodes[$name]);
-    }
-
-    public function count()
-    {
-        return count($this->nodes);
-    }
-
-    public function getIterator()
-    {
-        return new ArrayIterator($this->nodes);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/AutoEscape.php b/vendor/twig/twig/lib/Twig/Node/AutoEscape.php
deleted file mode 100644
index 47cc998..0000000
--- a/vendor/twig/twig/lib/Twig/Node/AutoEscape.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents an autoescape node.
- *
- * The value is the escaping strategy (can be html, js, ...)
- *
- * The true value is equivalent to html.
- *
- * If autoescaping is disabled, then the value is false.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_AutoEscape extends Twig_Node
-{
-    public function __construct($value, Twig_NodeInterface $body, $lineno, $tag = 'autoescape')
-    {
-        parent::__construct(array('body' => $body), array('value' => $value), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->subcompile($this->getNode('body'));
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Block.php b/vendor/twig/twig/lib/Twig/Node/Block.php
deleted file mode 100644
index a05af6f..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Block.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a block node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Block extends Twig_Node
-{
-    public function __construct($name, Twig_NodeInterface $body, $lineno, $tag = null)
-    {
-        parent::__construct(array('body' => $body), array('name' => $name), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write(sprintf("public function block_%s(\$context, array \$blocks = array())\n", $this->getAttribute('name')), "{\n")
-            ->indent()
-        ;
-
-        $compiler
-            ->subcompile($this->getNode('body'))
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/BlockReference.php b/vendor/twig/twig/lib/Twig/Node/BlockReference.php
deleted file mode 100644
index 9cd1551..0000000
--- a/vendor/twig/twig/lib/Twig/Node/BlockReference.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a block call node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_BlockReference extends Twig_Node implements Twig_NodeOutputInterface
-{
-    public function __construct($name, $lineno, $tag = null)
-    {
-        parent::__construct(array(), array('name' => $name), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name')))
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Body.php b/vendor/twig/twig/lib/Twig/Node/Body.php
deleted file mode 100644
index 3ffb134..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Body.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a body node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Body extends Twig_Node
-{
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php b/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php
deleted file mode 100644
index b4a436a..0000000
--- a/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_CheckSecurity extends Twig_Node
-{
-    protected $usedFilters;
-    protected $usedTags;
-    protected $usedFunctions;
-
-    public function __construct(array $usedFilters, array $usedTags, array $usedFunctions)
-    {
-        $this->usedFilters = $usedFilters;
-        $this->usedTags = $usedTags;
-        $this->usedFunctions = $usedFunctions;
-
-        parent::__construct();
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $tags = $filters = $functions = array();
-        foreach (array('tags', 'filters', 'functions') as $type) {
-            foreach ($this->{'used'.ucfirst($type)} as $name => $node) {
-                if ($node instanceof Twig_Node) {
-                    ${$type}[$name] = $node->getLine();
-                } else {
-                    ${$type}[$node] = null;
-                }
-            }
-        }
-
-        $compiler
-            ->write('$tags = ')->repr(array_filter($tags))->raw(";\n")
-            ->write('$filters = ')->repr(array_filter($filters))->raw(";\n")
-            ->write('$functions = ')->repr(array_filter($functions))->raw(";\n\n")
-            ->write("try {\n")
-            ->indent()
-            ->write("\$this->env->getExtension('sandbox')->checkSecurity(\n")
-            ->indent()
-            ->write(!$tags ? "array(),\n" : "array('".implode("', '", array_keys($tags))."'),\n")
-            ->write(!$filters ? "array(),\n" : "array('".implode("', '", array_keys($filters))."'),\n")
-            ->write(!$functions ? "array()\n" : "array('".implode("', '", array_keys($functions))."')\n")
-            ->outdent()
-            ->write(");\n")
-            ->outdent()
-            ->write("} catch (Twig_Sandbox_SecurityError \$e) {\n")
-            ->indent()
-            ->write("\$e->setTemplateFile(\$this->getTemplateName());\n\n")
-            ->write("if (\$e instanceof Twig_Sandbox_SecurityNotAllowedTagError && isset(\$tags[\$e->getTagName()])) {\n")
-            ->indent()
-            ->write("\$e->setTemplateLine(\$tags[\$e->getTagName()]);\n")
-            ->outdent()
-            ->write("} elseif (\$e instanceof Twig_Sandbox_SecurityNotAllowedFilterError && isset(\$filters[\$e->getFilterName()])) {\n")
-            ->indent()
-            ->write("\$e->setTemplateLine(\$filters[\$e->getFilterName()]);\n")
-            ->outdent()
-            ->write("} elseif (\$e instanceof Twig_Sandbox_SecurityNotAllowedFunctionError && isset(\$functions[\$e->getFunctionName()])) {\n")
-            ->indent()
-            ->write("\$e->setTemplateLine(\$functions[\$e->getFunctionName()]);\n")
-            ->outdent()
-            ->write("}\n\n")
-            ->write("throw \$e;\n")
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Do.php b/vendor/twig/twig/lib/Twig/Node/Do.php
deleted file mode 100644
index 14fb84e..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Do.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a do node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Do extends Twig_Node
-{
-    public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null)
-    {
-        parent::__construct(array('expr' => $expr), array(), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('')
-            ->subcompile($this->getNode('expr'))
-            ->raw(";\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Embed.php b/vendor/twig/twig/lib/Twig/Node/Embed.php
deleted file mode 100644
index a213040..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Embed.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents an embed node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Embed extends Twig_Node_Include
-{
-    // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module)
-    public function __construct($filename, $index, Twig_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null)
-    {
-        parent::__construct(new Twig_Node_Expression_Constant('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag);
-
-        $this->setAttribute('filename', $filename);
-        $this->setAttribute('index', $index);
-    }
-
-    protected function addGetTemplate(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->write('$this->loadTemplate(')
-            ->string($this->getAttribute('filename'))
-            ->raw(', ')
-            ->repr($compiler->getFilename())
-            ->raw(', ')
-            ->repr($this->getLine())
-            ->raw(', ')
-            ->string($this->getAttribute('index'))
-            ->raw(')')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression.php b/vendor/twig/twig/lib/Twig/Node/Expression.php
deleted file mode 100644
index a7382e7..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Abstract class for all nodes that represents an expression.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Twig_Node_Expression extends Twig_Node
-{
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Array.php b/vendor/twig/twig/lib/Twig/Node/Expression/Array.php
deleted file mode 100644
index 83e583b..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Array.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Array extends Twig_Node_Expression
-{
-    protected $index;
-
-    public function __construct(array $elements, $lineno)
-    {
-        parent::__construct($elements, array(), $lineno);
-
-        $this->index = -1;
-        foreach ($this->getKeyValuePairs() as $pair) {
-            if ($pair['key'] instanceof Twig_Node_Expression_Constant && ctype_digit((string) $pair['key']->getAttribute('value')) && $pair['key']->getAttribute('value') > $this->index) {
-                $this->index = $pair['key']->getAttribute('value');
-            }
-        }
-    }
-
-    public function getKeyValuePairs()
-    {
-        $pairs = array();
-
-        foreach (array_chunk($this->nodes, 2) as $pair) {
-            $pairs[] = array(
-                'key' => $pair[0],
-                'value' => $pair[1],
-            );
-        }
-
-        return $pairs;
-    }
-
-    public function hasElement(Twig_Node_Expression $key)
-    {
-        foreach ($this->getKeyValuePairs() as $pair) {
-            // we compare the string representation of the keys
-            // to avoid comparing the line numbers which are not relevant here.
-            if ((string) $key == (string) $pair['key']) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    public function addElement(Twig_Node_Expression $value, Twig_Node_Expression $key = null)
-    {
-        if (null === $key) {
-            $key = new Twig_Node_Expression_Constant(++$this->index, $value->getLine());
-        }
-
-        array_push($this->nodes, $key, $value);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->raw('array(');
-        $first = true;
-        foreach ($this->getKeyValuePairs() as $pair) {
-            if (!$first) {
-                $compiler->raw(', ');
-            }
-            $first = false;
-
-            $compiler
-                ->subcompile($pair['key'])
-                ->raw(' => ')
-                ->subcompile($pair['value'])
-            ;
-        }
-        $compiler->raw(')');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php b/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php
deleted file mode 100644
index ce0c5fb..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-class Twig_Node_Expression_AssignName extends Twig_Node_Expression_Name
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('$context[')
-            ->string($this->getAttribute('name'))
-            ->raw(']')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php
deleted file mode 100644
index c821db5..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-abstract class Twig_Node_Expression_Binary extends Twig_Node_Expression
-{
-    public function __construct(Twig_NodeInterface $left, Twig_NodeInterface $right, $lineno)
-    {
-        parent::__construct(array('left' => $left, 'right' => $right), array(), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('left'))
-            ->raw(' ')
-        ;
-        $this->operator($compiler);
-        $compiler
-            ->raw(' ')
-            ->subcompile($this->getNode('right'))
-            ->raw(')')
-        ;
-    }
-
-    abstract public function operator(Twig_Compiler $compiler);
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php
deleted file mode 100644
index 0ef8e11..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Add extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('+');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php
deleted file mode 100644
index d5752eb..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_And extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('&&');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php
deleted file mode 100644
index 9a46d84..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_BitwiseAnd extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('&');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php
deleted file mode 100644
index 058a20b..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_BitwiseOr extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('|');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php
deleted file mode 100644
index f4da73d..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_BitwiseXor extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('^');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php
deleted file mode 100644
index f9a6462..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Concat extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('.');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Div.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Div.php
deleted file mode 100644
index e0797a6..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Div.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Div extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('/');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php
deleted file mode 100644
index 93b3b96..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2013 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_EndsWith extends Twig_Node_Expression_Binary
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $left = $compiler->getVarName();
-        $right = $compiler->getVarName();
-        $compiler
-            ->raw(sprintf('(is_string($%s = ', $left))
-            ->subcompile($this->getNode('left'))
-            ->raw(sprintf(') && is_string($%s = ', $right))
-            ->subcompile($this->getNode('right'))
-            ->raw(sprintf(') && (\'\' === $%2$s || $%2$s === substr($%1$s, -strlen($%2$s))))', $left, $right))
-        ;
-    }
-
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php
deleted file mode 100644
index 7b1236d..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Equal extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('==');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php
deleted file mode 100644
index b606f6d..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_FloorDiv extends Twig_Node_Expression_Binary
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->raw('intval(floor(');
-        parent::compile($compiler);
-        $compiler->raw('))');
-    }
-
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('/');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php
deleted file mode 100644
index a110bd9..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Greater extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('>');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php
deleted file mode 100644
index 3754fed..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_GreaterEqual extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('>=');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/In.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/In.php
deleted file mode 100644
index 9565a60..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/In.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_In extends Twig_Node_Expression_Binary
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('twig_in_filter(')
-            ->subcompile($this->getNode('left'))
-            ->raw(', ')
-            ->subcompile($this->getNode('right'))
-            ->raw(')')
-        ;
-    }
-
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('in');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php
deleted file mode 100644
index 45fd300..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Less extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('<');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php
deleted file mode 100644
index e38e257..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_LessEqual extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('<=');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php
deleted file mode 100644
index 93bb292..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2013 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Matches extends Twig_Node_Expression_Binary
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('preg_match(')
-            ->subcompile($this->getNode('right'))
-            ->raw(', ')
-            ->subcompile($this->getNode('left'))
-            ->raw(')')
-        ;
-    }
-
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php
deleted file mode 100644
index 9924114..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Mod extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('%');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php
deleted file mode 100644
index c91529c..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Mul extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('*');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php
deleted file mode 100644
index 26867ba..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_NotEqual extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('!=');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php
deleted file mode 100644
index 49ab39e..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_NotIn extends Twig_Node_Expression_Binary
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('!twig_in_filter(')
-            ->subcompile($this->getNode('left'))
-            ->raw(', ')
-            ->subcompile($this->getNode('right'))
-            ->raw(')')
-        ;
-    }
-
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('not in');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php
deleted file mode 100644
index adba49c..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Or extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('||');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Power.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Power.php
deleted file mode 100644
index cd6d046..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Power.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Power extends Twig_Node_Expression_Binary
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('pow(')
-            ->subcompile($this->getNode('left'))
-            ->raw(', ')
-            ->subcompile($this->getNode('right'))
-            ->raw(')')
-        ;
-    }
-
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('**');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Range.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Range.php
deleted file mode 100644
index 692ec9c..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Range.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Range extends Twig_Node_Expression_Binary
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('range(')
-            ->subcompile($this->getNode('left'))
-            ->raw(', ')
-            ->subcompile($this->getNode('right'))
-            ->raw(')')
-        ;
-    }
-
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('..');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php
deleted file mode 100644
index d2e30d6..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2013 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_StartsWith extends Twig_Node_Expression_Binary
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $left = $compiler->getVarName();
-        $right = $compiler->getVarName();
-        $compiler
-            ->raw(sprintf('(is_string($%s = ', $left))
-            ->subcompile($this->getNode('left'))
-            ->raw(sprintf(') && is_string($%s = ', $right))
-            ->subcompile($this->getNode('right'))
-            ->raw(sprintf(') && (\'\' === $%2$s || 0 === strpos($%1$s, $%2$s)))', $left, $right))
-        ;
-    }
-
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php b/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php
deleted file mode 100644
index d446399..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Binary_Sub extends Twig_Node_Expression_Binary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        return $compiler->raw('-');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php b/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php
deleted file mode 100644
index f6ed6ff..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a block call node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_BlockReference extends Twig_Node_Expression
-{
-    public function __construct(Twig_NodeInterface $name, $asString = false, $lineno, $tag = null)
-    {
-        parent::__construct(array('name' => $name), array('as_string' => $asString, 'output' => false), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        if ($this->getAttribute('as_string')) {
-            $compiler->raw('(string) ');
-        }
-
-        if ($this->getAttribute('output')) {
-            $compiler
-                ->addDebugInfo($this)
-                ->write('$this->displayBlock(')
-                ->subcompile($this->getNode('name'))
-                ->raw(", \$context, \$blocks);\n")
-            ;
-        } else {
-            $compiler
-                ->raw('$this->renderBlock(')
-                ->subcompile($this->getNode('name'))
-                ->raw(', $context, $blocks)')
-            ;
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Call.php b/vendor/twig/twig/lib/Twig/Node/Expression/Call.php
deleted file mode 100644
index 51e2cac..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Call.php
+++ /dev/null
@@ -1,247 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-abstract class Twig_Node_Expression_Call extends Twig_Node_Expression
-{
-    protected function compileCallable(Twig_Compiler $compiler)
-    {
-        $closingParenthesis = false;
-        if ($this->hasAttribute('callable') && $callable = $this->getAttribute('callable')) {
-            if (is_string($callable)) {
-                $compiler->raw($callable);
-            } elseif (is_array($callable) && $callable[0] instanceof Twig_ExtensionInterface) {
-                $compiler->raw(sprintf('$this->env->getExtension(\'%s\')->%s', $callable[0]->getName(), $callable[1]));
-            } else {
-                $type = ucfirst($this->getAttribute('type'));
-                $compiler->raw(sprintf('call_user_func_array($this->env->get%s(\'%s\')->getCallable(), array', $type, $this->getAttribute('name')));
-                $closingParenthesis = true;
-            }
-        } else {
-            $compiler->raw($this->getAttribute('thing')->compile());
-        }
-
-        $this->compileArguments($compiler);
-
-        if ($closingParenthesis) {
-            $compiler->raw(')');
-        }
-    }
-
-    protected function compileArguments(Twig_Compiler $compiler)
-    {
-        $compiler->raw('(');
-
-        $first = true;
-
-        if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) {
-            $compiler->raw('$this->env');
-            $first = false;
-        }
-
-        if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) {
-            if (!$first) {
-                $compiler->raw(', ');
-            }
-            $compiler->raw('$context');
-            $first = false;
-        }
-
-        if ($this->hasAttribute('arguments')) {
-            foreach ($this->getAttribute('arguments') as $argument) {
-                if (!$first) {
-                    $compiler->raw(', ');
-                }
-                $compiler->string($argument);
-                $first = false;
-            }
-        }
-
-        if ($this->hasNode('node')) {
-            if (!$first) {
-                $compiler->raw(', ');
-            }
-            $compiler->subcompile($this->getNode('node'));
-            $first = false;
-        }
-
-        if ($this->hasNode('arguments') && null !== $this->getNode('arguments')) {
-            $callable = $this->hasAttribute('callable') ? $this->getAttribute('callable') : null;
-
-            $arguments = $this->getArguments($callable, $this->getNode('arguments'));
-
-            foreach ($arguments as $node) {
-                if (!$first) {
-                    $compiler->raw(', ');
-                }
-                $compiler->subcompile($node);
-                $first = false;
-            }
-        }
-
-        $compiler->raw(')');
-    }
-
-    protected function getArguments($callable, $arguments)
-    {
-        $callType = $this->getAttribute('type');
-        $callName = $this->getAttribute('name');
-
-        $parameters = array();
-        $named = false;
-        foreach ($arguments as $name => $node) {
-            if (!is_int($name)) {
-                $named = true;
-                $name = $this->normalizeName($name);
-            } elseif ($named) {
-                throw new Twig_Error_Syntax(sprintf('Positional arguments cannot be used after named arguments for %s "%s".', $callType, $callName));
-            }
-
-            $parameters[$name] = $node;
-        }
-
-        $isVariadic = $this->hasAttribute('is_variadic') && $this->getAttribute('is_variadic');
-        if (!$named && !$isVariadic) {
-            return $parameters;
-        }
-
-        if (!$callable) {
-            if ($named) {
-                $message = sprintf('Named arguments are not supported for %s "%s".', $callType, $callName);
-            } else {
-                $message = sprintf('Arbitrary positional arguments are not supported for %s "%s".', $callType, $callName);
-            }
-
-            throw new LogicException($message);
-        }
-
-        // manage named arguments
-        if (is_array($callable)) {
-            $r = new ReflectionMethod($callable[0], $callable[1]);
-        } elseif (is_object($callable) && !$callable instanceof Closure) {
-            $r = new ReflectionObject($callable);
-            $r = $r->getMethod('__invoke');
-        } elseif (is_string($callable) && false !== strpos($callable, '::')) {
-            $r = new ReflectionMethod($callable);
-        } else {
-            $r = new ReflectionFunction($callable);
-        }
-
-        $definition = $r->getParameters();
-        if ($this->hasNode('node')) {
-            array_shift($definition);
-        }
-        if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) {
-            array_shift($definition);
-        }
-        if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) {
-            array_shift($definition);
-        }
-        if ($this->hasAttribute('arguments') && null !== $this->getAttribute('arguments')) {
-            foreach ($this->getAttribute('arguments') as $argument) {
-                array_shift($definition);
-            }
-        }
-        if ($isVariadic) {
-            $argument = end($definition);
-            if ($argument && $argument->isArray() && $argument->isDefaultValueAvailable() && array() === $argument->getDefaultValue()) {
-                array_pop($definition);
-            } else {
-                $callableName = $r->name;
-                if ($r->getDeclaringClass()) {
-                    $callableName = $r->getDeclaringClass()->name.'::'.$callableName;
-                }
-
-                throw new LogicException(sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = array()".', $callableName, $callType, $callName));
-            }
-        }
-
-        $arguments = array();
-        $names = array();
-        $missingArguments = array();
-        $optionalArguments = array();
-        $pos = 0;
-        foreach ($definition as $param) {
-            $names[] = $name = $this->normalizeName($param->name);
-
-            if (array_key_exists($name, $parameters)) {
-                if (array_key_exists($pos, $parameters)) {
-                    throw new Twig_Error_Syntax(sprintf('Argument "%s" is defined twice for %s "%s".', $name, $callType, $callName));
-                }
-
-                if (!empty($missingArguments)) {
-                    throw new Twig_Error_Syntax(sprintf(
-                        'Argument "%s" could not be assigned for %s "%s(%s)" because it is mapped to an internal PHP function which cannot determine default value for optional argument%s "%s".',
-                        $name, $callType, $callName, implode(', ', $names), count($missingArguments) > 1 ? 's' : '', implode('", "', $missingArguments))
-                    );
-                }
-
-                $arguments = array_merge($arguments, $optionalArguments);
-                $arguments[] = $parameters[$name];
-                unset($parameters[$name]);
-                $optionalArguments = array();
-            } elseif (array_key_exists($pos, $parameters)) {
-                $arguments = array_merge($arguments, $optionalArguments);
-                $arguments[] = $parameters[$pos];
-                unset($parameters[$pos]);
-                $optionalArguments = array();
-                ++$pos;
-            } elseif ($param->isDefaultValueAvailable()) {
-                $optionalArguments[] = new Twig_Node_Expression_Constant($param->getDefaultValue(), -1);
-            } elseif ($param->isOptional()) {
-                if (empty($parameters)) {
-                    break;
-                } else {
-                    $missingArguments[] = $name;
-                }
-            } else {
-                throw new Twig_Error_Syntax(sprintf('Value for argument "%s" is required for %s "%s".', $name, $callType, $callName));
-            }
-        }
-
-        if ($isVariadic) {
-            $arbitraryArguments = new Twig_Node_Expression_Array(array(), -1);
-            foreach ($parameters as $key => $value) {
-                if (is_int($key)) {
-                    $arbitraryArguments->addElement($value);
-                } else {
-                    $arbitraryArguments->addElement($value, new Twig_Node_Expression_Constant($key, -1));
-                }
-                unset($parameters[$key]);
-            }
-
-            if ($arbitraryArguments->count()) {
-                $arguments = array_merge($arguments, $optionalArguments);
-                $arguments[] = $arbitraryArguments;
-            }
-        }
-
-        if (!empty($parameters)) {
-            $unknownParameter = null;
-            foreach ($parameters as $parameter) {
-                if ($parameter instanceof Twig_Node) {
-                    $unknownParameter = $parameter;
-                    break;
-                }
-            }
-
-            throw new Twig_Error_Syntax(sprintf(
-                'Unknown argument%s "%s" for %s "%s(%s)".',
-                count($parameters) > 1 ? 's' : '', implode('", "', array_keys($parameters)), $callType, $callName, implode(', ', $names)
-            ), $unknownParameter ? $unknownParameter->getLine() : -1);
-        }
-
-        return $arguments;
-    }
-
-    protected function normalizeName($name)
-    {
-        return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), array('\\1_\\2', '\\1_\\2'), $name));
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php b/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php
deleted file mode 100644
index edcb1e2..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Conditional extends Twig_Node_Expression
-{
-    public function __construct(Twig_Node_Expression $expr1, Twig_Node_Expression $expr2, Twig_Node_Expression $expr3, $lineno)
-    {
-        parent::__construct(array('expr1' => $expr1, 'expr2' => $expr2, 'expr3' => $expr3), array(), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('((')
-            ->subcompile($this->getNode('expr1'))
-            ->raw(') ? (')
-            ->subcompile($this->getNode('expr2'))
-            ->raw(') : (')
-            ->subcompile($this->getNode('expr3'))
-            ->raw('))')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php b/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php
deleted file mode 100644
index a91dc69..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Constant extends Twig_Node_Expression
-{
-    public function __construct($value, $lineno)
-    {
-        parent::__construct(array(), array('value' => $value), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->repr($this->getAttribute('value'));
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php b/vendor/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php
deleted file mode 100644
index 6140c57..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents an extension call node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_ExtensionReference extends Twig_Node_Expression
-{
-    public function __construct($name, $lineno, $tag = null)
-    {
-        parent::__construct(array(), array('name' => $name), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->raw(sprintf("\$this->env->getExtension('%s')", $this->getAttribute('name')));
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php b/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php
deleted file mode 100644
index a906232..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Filter extends Twig_Node_Expression_Call
-{
-    public function __construct(Twig_NodeInterface $node, Twig_Node_Expression_Constant $filterName, Twig_NodeInterface $arguments, $lineno, $tag = null)
-    {
-        parent::__construct(array('node' => $node, 'filter' => $filterName, 'arguments' => $arguments), array(), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $name = $this->getNode('filter')->getAttribute('value');
-        $filter = $compiler->getEnvironment()->getFilter($name);
-
-        $this->setAttribute('name', $name);
-        $this->setAttribute('type', 'filter');
-        $this->setAttribute('thing', $filter);
-        $this->setAttribute('needs_environment', $filter->needsEnvironment());
-        $this->setAttribute('needs_context', $filter->needsContext());
-        $this->setAttribute('arguments', $filter->getArguments());
-        if ($filter instanceof Twig_FilterCallableInterface || $filter instanceof Twig_SimpleFilter) {
-            $this->setAttribute('callable', $filter->getCallable());
-        }
-        if ($filter instanceof Twig_SimpleFilter) {
-            $this->setAttribute('is_variadic', $filter->isVariadic());
-        }
-
-        $this->compileCallable($compiler);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Filter/Default.php b/vendor/twig/twig/lib/Twig/Node/Expression/Filter/Default.php
deleted file mode 100644
index 1827c88..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Filter/Default.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Returns the value or the default value when it is undefined or empty.
- *
- * <pre>
- *  {{ var.foo|default('foo item on var is not defined') }}
- * </pre>
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_Filter_Default extends Twig_Node_Expression_Filter
-{
-    public function __construct(Twig_NodeInterface $node, Twig_Node_Expression_Constant $filterName, Twig_NodeInterface $arguments, $lineno, $tag = null)
-    {
-        $default = new Twig_Node_Expression_Filter($node, new Twig_Node_Expression_Constant('default', $node->getLine()), $arguments, $node->getLine());
-
-        if ('default' === $filterName->getAttribute('value') && ($node instanceof Twig_Node_Expression_Name || $node instanceof Twig_Node_Expression_GetAttr)) {
-            $test = new Twig_Node_Expression_Test_Defined(clone $node, 'defined', new Twig_Node(), $node->getLine());
-            $false = count($arguments) ? $arguments->getNode(0) : new Twig_Node_Expression_Constant('', $node->getLine());
-
-            $node = new Twig_Node_Expression_Conditional($test, $default, $false, $node->getLine());
-        } else {
-            $node = $default;
-        }
-
-        parent::__construct($node, $filterName, $arguments, $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->subcompile($this->getNode('node'));
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Function.php b/vendor/twig/twig/lib/Twig/Node/Expression/Function.php
deleted file mode 100644
index 7326ede..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Function.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Function extends Twig_Node_Expression_Call
-{
-    public function __construct($name, Twig_NodeInterface $arguments, $lineno)
-    {
-        parent::__construct(array('arguments' => $arguments), array('name' => $name), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $name = $this->getAttribute('name');
-        $function = $compiler->getEnvironment()->getFunction($name);
-
-        $this->setAttribute('name', $name);
-        $this->setAttribute('type', 'function');
-        $this->setAttribute('thing', $function);
-        $this->setAttribute('needs_environment', $function->needsEnvironment());
-        $this->setAttribute('needs_context', $function->needsContext());
-        $this->setAttribute('arguments', $function->getArguments());
-        if ($function instanceof Twig_FunctionCallableInterface || $function instanceof Twig_SimpleFunction) {
-            $this->setAttribute('callable', $function->getCallable());
-        }
-        if ($function instanceof Twig_SimpleFunction) {
-            $this->setAttribute('is_variadic', $function->isVariadic());
-        }
-
-        $this->compileCallable($compiler);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php b/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php
deleted file mode 100644
index 6ce6111..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_GetAttr extends Twig_Node_Expression
-{
-    public function __construct(Twig_Node_Expression $node, Twig_Node_Expression $attribute, Twig_Node_Expression $arguments = null, $type, $lineno)
-    {
-        parent::__construct(array('node' => $node, 'attribute' => $attribute, 'arguments' => $arguments), array('type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'disable_c_ext' => false), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        if (function_exists('twig_template_get_attributes') && !$this->getAttribute('disable_c_ext')) {
-            $compiler->raw('twig_template_get_attributes($this, ');
-        } else {
-            $compiler->raw('$this->getAttribute(');
-        }
-
-        if ($this->getAttribute('ignore_strict_check')) {
-            $this->getNode('node')->setAttribute('ignore_strict_check', true);
-        }
-
-        $compiler->subcompile($this->getNode('node'));
-
-        $compiler->raw(', ')->subcompile($this->getNode('attribute'));
-
-        // only generate optional arguments when needed (to make generated code more readable)
-        $needFourth = $this->getAttribute('ignore_strict_check');
-        $needThird = $needFourth || $this->getAttribute('is_defined_test');
-        $needSecond = $needThird || Twig_Template::ANY_CALL !== $this->getAttribute('type');
-        $needFirst = $needSecond || null !== $this->getNode('arguments');
-
-        if ($needFirst) {
-            if (null !== $this->getNode('arguments')) {
-                $compiler->raw(', ')->subcompile($this->getNode('arguments'));
-            } else {
-                $compiler->raw(', array()');
-            }
-        }
-
-        if ($needSecond) {
-            $compiler->raw(', ')->repr($this->getAttribute('type'));
-        }
-
-        if ($needThird) {
-            $compiler->raw(', ')->repr($this->getAttribute('is_defined_test'));
-        }
-
-        if ($needFourth) {
-            $compiler->raw(', ')->repr($this->getAttribute('ignore_strict_check'));
-        }
-
-        $compiler->raw(')');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/MethodCall.php b/vendor/twig/twig/lib/Twig/Node/Expression/MethodCall.php
deleted file mode 100644
index 620b02b..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/MethodCall.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_MethodCall extends Twig_Node_Expression
-{
-    public function __construct(Twig_Node_Expression $node, $method, Twig_Node_Expression_Array $arguments, $lineno)
-    {
-        parent::__construct(array('node' => $node, 'arguments' => $arguments), array('method' => $method, 'safe' => false), $lineno);
-
-        if ($node instanceof Twig_Node_Expression_Name) {
-            $node->setAttribute('always_defined', true);
-        }
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->subcompile($this->getNode('node'))
-            ->raw('->')
-            ->raw($this->getAttribute('method'))
-            ->raw('(')
-        ;
-        $first = true;
-        foreach ($this->getNode('arguments')->getKeyValuePairs() as $pair) {
-            if (!$first) {
-                $compiler->raw(', ');
-            }
-            $first = false;
-
-            $compiler->subcompile($pair['value']);
-        }
-        $compiler->raw(')');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Name.php b/vendor/twig/twig/lib/Twig/Node/Expression/Name.php
deleted file mode 100644
index c062a21..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Name.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Name extends Twig_Node_Expression
-{
-    protected $specialVars = array(
-        '_self' => '$this',
-        '_context' => '$context',
-        '_charset' => '$this->env->getCharset()',
-    );
-
-    public function __construct($name, $lineno)
-    {
-        parent::__construct(array(), array('name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $name = $this->getAttribute('name');
-
-        $compiler->addDebugInfo($this);
-
-        if ($this->getAttribute('is_defined_test')) {
-            if ($this->isSpecial()) {
-                if ('_self' === $name) {
-                    @trigger_error(sprintf('Global variable "_self" is deprecated in %s at line %d', '?', $this->getLine()), E_USER_DEPRECATED);
-                }
-
-                $compiler->repr(true);
-            } else {
-                $compiler->raw('array_key_exists(')->repr($name)->raw(', $context)');
-            }
-        } elseif ($this->isSpecial()) {
-            if ('_self' === $name) {
-                @trigger_error(sprintf('Global variable "_self" is deprecated in %s at line %d', '?', $this->getLine()), E_USER_DEPRECATED);
-            }
-
-            $compiler->raw($this->specialVars[$name]);
-        } elseif ($this->getAttribute('always_defined')) {
-            $compiler
-                ->raw('$context[')
-                ->string($name)
-                ->raw(']')
-            ;
-        } else {
-            // remove the non-PHP 5.4 version when PHP 5.3 support is dropped
-            // as the non-optimized version is just a workaround for slow ternary operator
-            // when the context has a lot of variables
-            if (PHP_VERSION_ID >= 50400) {
-                // PHP 5.4 ternary operator performance was optimized
-                $compiler
-                    ->raw('(isset($context[')
-                    ->string($name)
-                    ->raw(']) ? $context[')
-                    ->string($name)
-                    ->raw('] : ')
-                ;
-
-                if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) {
-                    $compiler->raw('null)');
-                } else {
-                    $compiler->raw('$this->getContext($context, ')->string($name)->raw('))');
-                }
-            } else {
-                $compiler
-                    ->raw('$this->getContext($context, ')
-                    ->string($name)
-                ;
-
-                if ($this->getAttribute('ignore_strict_check')) {
-                    $compiler->raw(', true');
-                }
-
-                $compiler
-                    ->raw(')')
-                ;
-            }
-        }
-    }
-
-    public function isSpecial()
-    {
-        return isset($this->specialVars[$this->getAttribute('name')]);
-    }
-
-    public function isSimple()
-    {
-        return !$this->isSpecial() && !$this->getAttribute('is_defined_test');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php b/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php
deleted file mode 100644
index 694c080..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a parent node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_Parent extends Twig_Node_Expression
-{
-    public function __construct($name, $lineno, $tag = null)
-    {
-        parent::__construct(array(), array('output' => false, 'name' => $name), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        if ($this->getAttribute('output')) {
-            $compiler
-                ->addDebugInfo($this)
-                ->write('$this->displayParentBlock(')
-                ->string($this->getAttribute('name'))
-                ->raw(", \$context, \$blocks);\n")
-            ;
-        } else {
-            $compiler
-                ->raw('$this->renderParentBlock(')
-                ->string($this->getAttribute('name'))
-                ->raw(', $context, $blocks)')
-            ;
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/TempName.php b/vendor/twig/twig/lib/Twig/Node/Expression/TempName.php
deleted file mode 100644
index e6b058e..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/TempName.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_TempName extends Twig_Node_Expression
-{
-    public function __construct($name, $lineno)
-    {
-        parent::__construct(array(), array('name' => $name), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('$_')
-            ->raw($this->getAttribute('name'))
-            ->raw('_')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test.php
deleted file mode 100644
index c0358c8..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Test extends Twig_Node_Expression_Call
-{
-    public function __construct(Twig_NodeInterface $node, $name, Twig_NodeInterface $arguments = null, $lineno)
-    {
-        parent::__construct(array('node' => $node, 'arguments' => $arguments), array('name' => $name), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $name = $this->getAttribute('name');
-        $test = $compiler->getEnvironment()->getTest($name);
-
-        $this->setAttribute('name', $name);
-        $this->setAttribute('type', 'test');
-        $this->setAttribute('thing', $test);
-        if ($test instanceof Twig_TestCallableInterface || $test instanceof Twig_SimpleTest) {
-            $this->setAttribute('callable', $test->getCallable());
-        }
-        if ($test instanceof Twig_SimpleTest) {
-            $this->setAttribute('is_variadic', $test->isVariadic());
-        }
-
-        $this->compileCallable($compiler);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php
deleted file mode 100644
index de55f5f..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Checks if a variable is the exact same value as a constant.
- *
- * <pre>
- *  {% if post.status is constant('Post::PUBLISHED') %}
- *    the status attribute is exactly the same as Post::PUBLISHED
- *  {% endif %}
- * </pre>
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_Test_Constant extends Twig_Node_Expression_Test
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('node'))
-            ->raw(' === constant(')
-        ;
-
-        if ($this->getNode('arguments')->hasNode(1)) {
-            $compiler
-                ->raw('get_class(')
-                ->subcompile($this->getNode('arguments')->getNode(1))
-                ->raw(')."::".')
-            ;
-        }
-
-        $compiler
-            ->subcompile($this->getNode('arguments')->getNode(0))
-            ->raw('))')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php
deleted file mode 100644
index 4b4a48a..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Checks if a variable is defined in the current context.
- *
- * <pre>
- * {# defined works with variable names and variable attributes #}
- * {% if foo is defined %}
- *     {# ... #}
- * {% endif %}
- * </pre>
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_Test_Defined extends Twig_Node_Expression_Test
-{
-    public function __construct(Twig_NodeInterface $node, $name, Twig_NodeInterface $arguments = null, $lineno)
-    {
-        parent::__construct($node, $name, $arguments, $lineno);
-
-        if ($node instanceof Twig_Node_Expression_Name) {
-            $node->setAttribute('is_defined_test', true);
-        } elseif ($node instanceof Twig_Node_Expression_GetAttr) {
-            $node->setAttribute('is_defined_test', true);
-
-            $this->changeIgnoreStrictCheck($node);
-        } else {
-            throw new Twig_Error_Syntax('The "defined" test only works with simple variables.', $this->getLine());
-        }
-    }
-
-    protected function changeIgnoreStrictCheck(Twig_Node_Expression_GetAttr $node)
-    {
-        $node->setAttribute('ignore_strict_check', true);
-
-        if ($node->getNode('node') instanceof Twig_Node_Expression_GetAttr) {
-            $this->changeIgnoreStrictCheck($node->getNode('node'));
-        }
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->subcompile($this->getNode('node'));
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php
deleted file mode 100644
index d5bed23..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Checks if a variable is divisible by a number.
- *
- * <pre>
- *  {% if loop.index is divisible by(3) %}
- * </pre>
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_Test_Divisibleby extends Twig_Node_Expression_Test
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('(0 == ')
-            ->subcompile($this->getNode('node'))
-            ->raw(' % ')
-            ->subcompile($this->getNode('arguments')->getNode(0))
-            ->raw(')')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php
deleted file mode 100644
index d7853e8..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Checks if a number is even.
- *
- * <pre>
- *  {{ var is even }}
- * </pre>
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_Test_Even extends Twig_Node_Expression_Test
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('node'))
-            ->raw(' % 2 == 0')
-            ->raw(')')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php
deleted file mode 100644
index 1c83825..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Checks that a variable is null.
- *
- * <pre>
- *  {{ var is none }}
- * </pre>
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_Test_Null extends Twig_Node_Expression_Test
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('(null === ')
-            ->subcompile($this->getNode('node'))
-            ->raw(')')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Odd.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Odd.php
deleted file mode 100644
index 421c19e..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Odd.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Checks if a number is odd.
- *
- * <pre>
- *  {{ var is odd }}
- * </pre>
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_Test_Odd extends Twig_Node_Expression_Test
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('node'))
-            ->raw(' % 2 == 1')
-            ->raw(')')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php b/vendor/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php
deleted file mode 100644
index b48905e..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Checks if a variable is the same as another one (=== in PHP).
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Expression_Test_Sameas extends Twig_Node_Expression_Test
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->raw('(')
-            ->subcompile($this->getNode('node'))
-            ->raw(' === ')
-            ->subcompile($this->getNode('arguments')->getNode(0))
-            ->raw(')')
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Unary.php b/vendor/twig/twig/lib/Twig/Node/Expression/Unary.php
deleted file mode 100644
index 1cf54c3..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Unary.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-abstract class Twig_Node_Expression_Unary extends Twig_Node_Expression
-{
-    public function __construct(Twig_NodeInterface $node, $lineno)
-    {
-        parent::__construct(array('node' => $node), array(), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->raw(' ');
-        $this->operator($compiler);
-        $compiler->subcompile($this->getNode('node'));
-    }
-
-    abstract public function operator(Twig_Compiler $compiler);
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php b/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php
deleted file mode 100644
index 2a3937e..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Unary_Neg extends Twig_Node_Expression_Unary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        $compiler->raw('-');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Not.php b/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Not.php
deleted file mode 100644
index f94073c..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Not.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Unary_Not extends Twig_Node_Expression_Unary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        $compiler->raw('!');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php b/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php
deleted file mode 100644
index 04edb52..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-class Twig_Node_Expression_Unary_Pos extends Twig_Node_Expression_Unary
-{
-    public function operator(Twig_Compiler $compiler)
-    {
-        $compiler->raw('+');
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Flush.php b/vendor/twig/twig/lib/Twig/Node/Flush.php
deleted file mode 100644
index 2af17a4..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Flush.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a flush node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Flush extends Twig_Node
-{
-    public function __construct($lineno, $tag)
-    {
-        parent::__construct(array(), array(), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write("flush();\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/For.php b/vendor/twig/twig/lib/Twig/Node/For.php
deleted file mode 100644
index 2d45093..0000000
--- a/vendor/twig/twig/lib/Twig/Node/For.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a for node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_For extends Twig_Node
-{
-    protected $loop;
-
-    public function __construct(Twig_Node_Expression_AssignName $keyTarget, Twig_Node_Expression_AssignName $valueTarget, Twig_Node_Expression $seq, Twig_Node_Expression $ifexpr = null, Twig_NodeInterface $body, Twig_NodeInterface $else = null, $lineno, $tag = null)
-    {
-        $body = new Twig_Node(array($body, $this->loop = new Twig_Node_ForLoop($lineno, $tag)));
-
-        if (null !== $ifexpr) {
-            $body = new Twig_Node_If(new Twig_Node(array($ifexpr, $body)), null, $lineno, $tag);
-        }
-
-        parent::__construct(array('key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body, 'else' => $else), array('with_loop' => true, 'ifexpr' => null !== $ifexpr), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write("\$context['_parent'] = \$context;\n")
-            ->write("\$context['_seq'] = twig_ensure_traversable(")
-            ->subcompile($this->getNode('seq'))
-            ->raw(");\n")
-        ;
-
-        if (null !== $this->getNode('else')) {
-            $compiler->write("\$context['_iterated'] = false;\n");
-        }
-
-        if ($this->getAttribute('with_loop')) {
-            $compiler
-                ->write("\$context['loop'] = array(\n")
-                ->write("  'parent' => \$context['_parent'],\n")
-                ->write("  'index0' => 0,\n")
-                ->write("  'index'  => 1,\n")
-                ->write("  'first'  => true,\n")
-                ->write(");\n")
-            ;
-
-            if (!$this->getAttribute('ifexpr')) {
-                $compiler
-                    ->write("if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof Countable)) {\n")
-                    ->indent()
-                    ->write("\$length = count(\$context['_seq']);\n")
-                    ->write("\$context['loop']['revindex0'] = \$length - 1;\n")
-                    ->write("\$context['loop']['revindex'] = \$length;\n")
-                    ->write("\$context['loop']['length'] = \$length;\n")
-                    ->write("\$context['loop']['last'] = 1 === \$length;\n")
-                    ->outdent()
-                    ->write("}\n")
-                ;
-            }
-        }
-
-        $this->loop->setAttribute('else', null !== $this->getNode('else'));
-        $this->loop->setAttribute('with_loop', $this->getAttribute('with_loop'));
-        $this->loop->setAttribute('ifexpr', $this->getAttribute('ifexpr'));
-
-        $compiler
-            ->write("foreach (\$context['_seq'] as ")
-            ->subcompile($this->getNode('key_target'))
-            ->raw(' => ')
-            ->subcompile($this->getNode('value_target'))
-            ->raw(") {\n")
-            ->indent()
-            ->subcompile($this->getNode('body'))
-            ->outdent()
-            ->write("}\n")
-        ;
-
-        if (null !== $this->getNode('else')) {
-            $compiler
-                ->write("if (!\$context['_iterated']) {\n")
-                ->indent()
-                ->subcompile($this->getNode('else'))
-                ->outdent()
-                ->write("}\n")
-            ;
-        }
-
-        $compiler->write("\$_parent = \$context['_parent'];\n");
-
-        // remove some "private" loop variables (needed for nested loops)
-        $compiler->write('unset($context[\'_seq\'], $context[\'_iterated\'], $context[\''.$this->getNode('key_target')->getAttribute('name').'\'], $context[\''.$this->getNode('value_target')->getAttribute('name').'\'], $context[\'_parent\'], $context[\'loop\']);'."\n");
-
-        // keep the values set in the inner context for variables defined in the outer context
-        $compiler->write("\$context = array_intersect_key(\$context, \$_parent) + \$_parent;\n");
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/ForLoop.php b/vendor/twig/twig/lib/Twig/Node/ForLoop.php
deleted file mode 100644
index 2554d48..0000000
--- a/vendor/twig/twig/lib/Twig/Node/ForLoop.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Internal node used by the for node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_ForLoop extends Twig_Node
-{
-    public function __construct($lineno, $tag = null)
-    {
-        parent::__construct(array(), array('with_loop' => false, 'ifexpr' => false, 'else' => false), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        if ($this->getAttribute('else')) {
-            $compiler->write("\$context['_iterated'] = true;\n");
-        }
-
-        if ($this->getAttribute('with_loop')) {
-            $compiler
-                ->write("++\$context['loop']['index0'];\n")
-                ->write("++\$context['loop']['index'];\n")
-                ->write("\$context['loop']['first'] = false;\n")
-            ;
-
-            if (!$this->getAttribute('ifexpr')) {
-                $compiler
-                    ->write("if (isset(\$context['loop']['length'])) {\n")
-                    ->indent()
-                    ->write("--\$context['loop']['revindex0'];\n")
-                    ->write("--\$context['loop']['revindex'];\n")
-                    ->write("\$context['loop']['last'] = 0 === \$context['loop']['revindex0'];\n")
-                    ->outdent()
-                    ->write("}\n")
-                ;
-            }
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/If.php b/vendor/twig/twig/lib/Twig/Node/If.php
deleted file mode 100644
index caff936..0000000
--- a/vendor/twig/twig/lib/Twig/Node/If.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents an if node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_If extends Twig_Node
-{
-    public function __construct(Twig_NodeInterface $tests, Twig_NodeInterface $else = null, $lineno, $tag = null)
-    {
-        parent::__construct(array('tests' => $tests, 'else' => $else), array(), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-        for ($i = 0, $count = count($this->getNode('tests')); $i < $count; $i += 2) {
-            if ($i > 0) {
-                $compiler
-                    ->outdent()
-                    ->write('} elseif (')
-                ;
-            } else {
-                $compiler
-                    ->write('if (')
-                ;
-            }
-
-            $compiler
-                ->subcompile($this->getNode('tests')->getNode($i))
-                ->raw(") {\n")
-                ->indent()
-                ->subcompile($this->getNode('tests')->getNode($i + 1))
-            ;
-        }
-
-        if ($this->hasNode('else') && null !== $this->getNode('else')) {
-            $compiler
-                ->outdent()
-                ->write("} else {\n")
-                ->indent()
-                ->subcompile($this->getNode('else'))
-            ;
-        }
-
-        $compiler
-            ->outdent()
-            ->write("}\n");
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Import.php b/vendor/twig/twig/lib/Twig/Node/Import.php
deleted file mode 100644
index df37af3..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Import.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents an import node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Import extends Twig_Node
-{
-    public function __construct(Twig_Node_Expression $expr, Twig_Node_Expression $var, $lineno, $tag = null)
-    {
-        parent::__construct(array('expr' => $expr, 'var' => $var), array(), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('')
-            ->subcompile($this->getNode('var'))
-            ->raw(' = ')
-        ;
-
-        if ($this->getNode('expr') instanceof Twig_Node_Expression_Name && '_self' === $this->getNode('expr')->getAttribute('name')) {
-            $compiler->raw('$this');
-        } else {
-            $compiler
-                ->raw('$this->loadTemplate(')
-                ->subcompile($this->getNode('expr'))
-                ->raw(', ')
-                ->repr($compiler->getFilename())
-                ->raw(', ')
-                ->repr($this->getLine())
-                ->raw(')')
-            ;
-        }
-
-        $compiler->raw(";\n");
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Include.php b/vendor/twig/twig/lib/Twig/Node/Include.php
deleted file mode 100644
index 9952f73..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Include.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents an include node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Include extends Twig_Node implements Twig_NodeOutputInterface
-{
-    public function __construct(Twig_Node_Expression $expr, Twig_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null)
-    {
-        parent::__construct(array('expr' => $expr, 'variables' => $variables), array('only' => (bool) $only, 'ignore_missing' => (bool) $ignoreMissing), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-
-        if ($this->getAttribute('ignore_missing')) {
-            $compiler
-                ->write("try {\n")
-                ->indent()
-            ;
-        }
-
-        $this->addGetTemplate($compiler);
-
-        $compiler->raw('->display(');
-
-        $this->addTemplateArguments($compiler);
-
-        $compiler->raw(");\n");
-
-        if ($this->getAttribute('ignore_missing')) {
-            $compiler
-                ->outdent()
-                ->write("} catch (Twig_Error_Loader \$e) {\n")
-                ->indent()
-                ->write("// ignore missing template\n")
-                ->outdent()
-                ->write("}\n\n")
-            ;
-        }
-    }
-
-    protected function addGetTemplate(Twig_Compiler $compiler)
-    {
-        $compiler
-             ->write('$this->loadTemplate(')
-             ->subcompile($this->getNode('expr'))
-             ->raw(', ')
-             ->repr($compiler->getFilename())
-             ->raw(', ')
-             ->repr($this->getLine())
-             ->raw(')')
-         ;
-    }
-
-    protected function addTemplateArguments(Twig_Compiler $compiler)
-    {
-        if (null === $this->getNode('variables')) {
-            $compiler->raw(false === $this->getAttribute('only') ? '$context' : 'array()');
-        } elseif (false === $this->getAttribute('only')) {
-            $compiler
-                ->raw('array_merge($context, ')
-                ->subcompile($this->getNode('variables'))
-                ->raw(')')
-            ;
-        } else {
-            $compiler->subcompile($this->getNode('variables'));
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Macro.php b/vendor/twig/twig/lib/Twig/Node/Macro.php
deleted file mode 100644
index 932e795..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Macro.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a macro node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Macro extends Twig_Node
-{
-    const VARARGS_NAME = 'varargs';
-
-    public function __construct($name, Twig_NodeInterface $body, Twig_NodeInterface $arguments, $lineno, $tag = null)
-    {
-        foreach ($arguments as $argumentName => $argument) {
-            if (self::VARARGS_NAME === $argumentName) {
-                throw new Twig_Error_Syntax(sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $argument->getLine());
-            }
-        }
-
-        parent::__construct(array('body' => $body, 'arguments' => $arguments), array('name' => $name), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write(sprintf('public function get%s(', $this->getAttribute('name')))
-        ;
-
-        $count = count($this->getNode('arguments'));
-        $pos = 0;
-        foreach ($this->getNode('arguments') as $name => $default) {
-            $compiler
-                ->raw('$__'.$name.'__ = ')
-                ->subcompile($default)
-            ;
-
-            if (++$pos < $count) {
-                $compiler->raw(', ');
-            }
-        }
-
-        if (PHP_VERSION_ID >= 50600) {
-            if ($count) {
-                $compiler->raw(', ');
-            }
-
-            $compiler->raw('...$__varargs__');
-        }
-
-        $compiler
-            ->raw(")\n")
-            ->write("{\n")
-            ->indent()
-        ;
-
-        $compiler
-            ->write("\$context = \$this->env->mergeGlobals(array(\n")
-            ->indent()
-        ;
-
-        foreach ($this->getNode('arguments') as $name => $default) {
-            $compiler
-                ->addIndentation()
-                ->string($name)
-                ->raw(' => $__'.$name.'__')
-                ->raw(",\n")
-            ;
-        }
-
-        $compiler
-            ->addIndentation()
-            ->string(self::VARARGS_NAME)
-            ->raw(' => ')
-        ;
-
-        if (PHP_VERSION_ID >= 50600) {
-            $compiler->raw("\$__varargs__,\n");
-        } else {
-            $compiler
-                ->raw('func_num_args() > ')
-                ->repr($count)
-                ->raw(' ? array_slice(func_get_args(), ')
-                ->repr($count)
-                ->raw(") : array(),\n")
-            ;
-        }
-
-        $compiler
-            ->outdent()
-            ->write("));\n\n")
-            ->write("\$blocks = array();\n\n")
-            ->write("ob_start();\n")
-            ->write("try {\n")
-            ->indent()
-            ->subcompile($this->getNode('body'))
-            ->outdent()
-            ->write("} catch (Exception \$e) {\n")
-            ->indent()
-            ->write("ob_end_clean();\n\n")
-            ->write("throw \$e;\n")
-            ->outdent()
-            ->write("}\n\n")
-            ->write("return ('' === \$tmp = ob_get_clean()) ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset());\n")
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Module.php b/vendor/twig/twig/lib/Twig/Node/Module.php
deleted file mode 100644
index 01161d3..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Module.php
+++ /dev/null
@@ -1,403 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a module node.
- *
- * Consider this class as being final. If you need to customize the behavior of
- * the generated class, consider adding nodes to the following nodes: display_start,
- * display_end, constructor_start, constructor_end, and class_end.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Module extends Twig_Node
-{
-    public function __construct(Twig_NodeInterface $body, Twig_Node_Expression $parent = null, Twig_NodeInterface $blocks, Twig_NodeInterface $macros, Twig_NodeInterface $traits, $embeddedTemplates, $filename)
-    {
-        // embedded templates are set as attributes so that they are only visited once by the visitors
-        parent::__construct(array(
-            'parent' => $parent,
-            'body' => $body,
-            'blocks' => $blocks,
-            'macros' => $macros,
-            'traits' => $traits,
-            'display_start' => new Twig_Node(),
-            'display_end' => new Twig_Node(),
-            'constructor_start' => new Twig_Node(),
-            'constructor_end' => new Twig_Node(),
-            'class_end' => new Twig_Node(),
-        ), array(
-            'filename' => $filename,
-            'index' => null,
-            'embedded_templates' => $embeddedTemplates,
-        ), 1);
-    }
-
-    public function setIndex($index)
-    {
-        $this->setAttribute('index', $index);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $this->compileTemplate($compiler);
-
-        foreach ($this->getAttribute('embedded_templates') as $template) {
-            $compiler->subcompile($template);
-        }
-    }
-
-    protected function compileTemplate(Twig_Compiler $compiler)
-    {
-        if (!$this->getAttribute('index')) {
-            $compiler->write('<?php');
-        }
-
-        $this->compileClassHeader($compiler);
-
-        if (
-            count($this->getNode('blocks'))
-            || count($this->getNode('traits'))
-            || null === $this->getNode('parent')
-            || $this->getNode('parent') instanceof Twig_Node_Expression_Constant
-            || count($this->getNode('constructor_start'))
-            || count($this->getNode('constructor_end'))
-        ) {
-            $this->compileConstructor($compiler);
-        }
-
-        $this->compileGetParent($compiler);
-
-        $this->compileDisplay($compiler);
-
-        $compiler->subcompile($this->getNode('blocks'));
-
-        $this->compileMacros($compiler);
-
-        $this->compileGetTemplateName($compiler);
-
-        $this->compileIsTraitable($compiler);
-
-        $this->compileDebugInfo($compiler);
-
-        $this->compileClassFooter($compiler);
-    }
-
-    protected function compileGetParent(Twig_Compiler $compiler)
-    {
-        if (null === $parent = $this->getNode('parent')) {
-            return;
-        }
-
-        $compiler
-            ->write("protected function doGetParent(array \$context)\n", "{\n")
-            ->indent()
-            ->addDebugInfo($parent)
-            ->write('return ')
-        ;
-
-        if ($parent instanceof Twig_Node_Expression_Constant) {
-            $compiler->subcompile($parent);
-        } else {
-            $compiler
-                ->raw('$this->loadTemplate(')
-                ->subcompile($parent)
-                ->raw(', ')
-                ->repr($compiler->getFilename())
-                ->raw(', ')
-                ->repr($this->getNode('parent')->getLine())
-                ->raw(')')
-            ;
-        }
-
-        $compiler
-            ->raw(";\n")
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileClassHeader(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->write("\n\n")
-            // if the filename contains */, add a blank to avoid a PHP parse error
-            ->write('/* '.str_replace('*/', '* /', $this->getAttribute('filename'))." */\n")
-            ->write('class '.$compiler->getEnvironment()->getTemplateClass($this->getAttribute('filename'), $this->getAttribute('index')))
-            ->raw(sprintf(" extends %s\n", $compiler->getEnvironment()->getBaseTemplateClass()))
-            ->write("{\n")
-            ->indent()
-        ;
-    }
-
-    protected function compileConstructor(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->write("public function __construct(Twig_Environment \$env)\n", "{\n")
-            ->indent()
-            ->subcompile($this->getNode('constructor_start'))
-            ->write("parent::__construct(\$env);\n\n")
-        ;
-
-        // parent
-        if (null === $parent = $this->getNode('parent')) {
-            $compiler->write("\$this->parent = false;\n\n");
-        } elseif ($parent instanceof Twig_Node_Expression_Constant) {
-            $compiler
-                ->addDebugInfo($parent)
-                ->write('$this->parent = $this->loadTemplate(')
-                ->subcompile($parent)
-                ->raw(', ')
-                ->repr($compiler->getFilename())
-                ->raw(', ')
-                ->repr($this->getNode('parent')->getLine())
-                ->raw(");\n")
-            ;
-        }
-
-        $countTraits = count($this->getNode('traits'));
-        if ($countTraits) {
-            // traits
-            foreach ($this->getNode('traits') as $i => $trait) {
-                $this->compileLoadTemplate($compiler, $trait->getNode('template'), sprintf('$_trait_%s', $i));
-
-                $compiler
-                    ->addDebugInfo($trait->getNode('template'))
-                    ->write(sprintf("if (!\$_trait_%s->isTraitable()) {\n", $i))
-                    ->indent()
-                    ->write("throw new Twig_Error_Runtime('Template \"'.")
-                    ->subcompile($trait->getNode('template'))
-                    ->raw(".'\" cannot be used as a trait.');\n")
-                    ->outdent()
-                    ->write("}\n")
-                    ->write(sprintf("\$_trait_%s_blocks = \$_trait_%s->getBlocks();\n\n", $i, $i))
-                ;
-
-                foreach ($trait->getNode('targets') as $key => $value) {
-                    $compiler
-                        ->write(sprintf('if (!isset($_trait_%s_blocks[', $i))
-                        ->string($key)
-                        ->raw("])) {\n")
-                        ->indent()
-                        ->write("throw new Twig_Error_Runtime(sprintf('Block ")
-                        ->string($key)
-                        ->raw(' is not defined in trait ')
-                        ->subcompile($trait->getNode('template'))
-                        ->raw(".'));\n")
-                        ->outdent()
-                        ->write("}\n\n")
-
-                        ->write(sprintf('$_trait_%s_blocks[', $i))
-                        ->subcompile($value)
-                        ->raw(sprintf('] = $_trait_%s_blocks[', $i))
-                        ->string($key)
-                        ->raw(sprintf(']; unset($_trait_%s_blocks[', $i))
-                        ->string($key)
-                        ->raw("]);\n\n")
-                    ;
-                }
-            }
-
-            if ($countTraits > 1) {
-                $compiler
-                    ->write("\$this->traits = array_merge(\n")
-                    ->indent()
-                ;
-
-                for ($i = 0; $i < $countTraits; ++$i) {
-                    $compiler
-                        ->write(sprintf('$_trait_%s_blocks'.($i == $countTraits - 1 ? '' : ',')."\n", $i))
-                    ;
-                }
-
-                $compiler
-                    ->outdent()
-                    ->write(");\n\n")
-                ;
-            } else {
-                $compiler
-                    ->write("\$this->traits = \$_trait_0_blocks;\n\n")
-                ;
-            }
-
-            $compiler
-                ->write("\$this->blocks = array_merge(\n")
-                ->indent()
-                ->write("\$this->traits,\n")
-                ->write("array(\n")
-            ;
-        } else {
-            $compiler
-                ->write("\$this->blocks = array(\n")
-            ;
-        }
-
-        // blocks
-        $compiler
-            ->indent()
-        ;
-
-        foreach ($this->getNode('blocks') as $name => $node) {
-            $compiler
-                ->write(sprintf("'%s' => array(\$this, 'block_%s'),\n", $name, $name))
-            ;
-        }
-
-        if ($countTraits) {
-            $compiler
-                ->outdent()
-                ->write(")\n")
-            ;
-        }
-
-        $compiler
-            ->outdent()
-            ->write(");\n")
-            ->outdent()
-            ->subcompile($this->getNode('constructor_end'))
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileDisplay(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->write("protected function doDisplay(array \$context, array \$blocks = array())\n", "{\n")
-            ->indent()
-            ->subcompile($this->getNode('display_start'))
-            ->subcompile($this->getNode('body'))
-        ;
-
-        if (null !== $parent = $this->getNode('parent')) {
-            $compiler->addDebugInfo($parent);
-            if ($parent instanceof Twig_Node_Expression_Constant) {
-                $compiler->write('$this->parent');
-            } else {
-                $compiler->write('$this->getParent($context)');
-            }
-            $compiler->raw("->display(\$context, array_merge(\$this->blocks, \$blocks));\n");
-        }
-
-        $compiler
-            ->subcompile($this->getNode('display_end'))
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileClassFooter(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->subcompile($this->getNode('class_end'))
-            ->outdent()
-            ->write("}\n")
-        ;
-    }
-
-    protected function compileMacros(Twig_Compiler $compiler)
-    {
-        $compiler->subcompile($this->getNode('macros'));
-    }
-
-    protected function compileGetTemplateName(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->write("public function getTemplateName()\n", "{\n")
-            ->indent()
-            ->write('return ')
-            ->repr($this->getAttribute('filename'))
-            ->raw(";\n")
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileIsTraitable(Twig_Compiler $compiler)
-    {
-        // A template can be used as a trait if:
-        //   * it has no parent
-        //   * it has no macros
-        //   * it has no body
-        //
-        // Put another way, a template can be used as a trait if it
-        // only contains blocks and use statements.
-        $traitable = null === $this->getNode('parent') && 0 === count($this->getNode('macros'));
-        if ($traitable) {
-            if ($this->getNode('body') instanceof Twig_Node_Body) {
-                $nodes = $this->getNode('body')->getNode(0);
-            } else {
-                $nodes = $this->getNode('body');
-            }
-
-            if (!count($nodes)) {
-                $nodes = new Twig_Node(array($nodes));
-            }
-
-            foreach ($nodes as $node) {
-                if (!count($node)) {
-                    continue;
-                }
-
-                if ($node instanceof Twig_Node_Text && ctype_space($node->getAttribute('data'))) {
-                    continue;
-                }
-
-                if ($node instanceof Twig_Node_BlockReference) {
-                    continue;
-                }
-
-                $traitable = false;
-                break;
-            }
-        }
-
-        if ($traitable) {
-            return;
-        }
-
-        $compiler
-            ->write("public function isTraitable()\n", "{\n")
-            ->indent()
-            ->write(sprintf("return %s;\n", $traitable ? 'true' : 'false'))
-            ->outdent()
-            ->write("}\n\n")
-        ;
-    }
-
-    protected function compileDebugInfo(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->write("public function getDebugInfo()\n", "{\n")
-            ->indent()
-            ->write(sprintf("return %s;\n", str_replace("\n", '', var_export(array_reverse($compiler->getDebugInfo(), true), true))))
-            ->outdent()
-            ->write("}\n")
-        ;
-    }
-
-    protected function compileLoadTemplate(Twig_Compiler $compiler, $node, $var)
-    {
-        if ($node instanceof Twig_Node_Expression_Constant) {
-            $compiler
-                ->write(sprintf('%s = $this->loadTemplate(', $var))
-                ->subcompile($node)
-                ->raw(', ')
-                ->repr($compiler->getFilename())
-                ->raw(', ')
-                ->repr($node->getLine())
-                ->raw(");\n")
-            ;
-        } else {
-            throw new LogicException('Trait templates can only be constant nodes');
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Print.php b/vendor/twig/twig/lib/Twig/Node/Print.php
deleted file mode 100644
index 7b69ee8..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Print.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a node that outputs an expression.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Print extends Twig_Node implements Twig_NodeOutputInterface
-{
-    public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null)
-    {
-        parent::__construct(array('expr' => $expr), array(), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('echo ')
-            ->subcompile($this->getNode('expr'))
-            ->raw(";\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Sandbox.php b/vendor/twig/twig/lib/Twig/Node/Sandbox.php
deleted file mode 100644
index cd705e2..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Sandbox.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a sandbox node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Sandbox extends Twig_Node
-{
-    public function __construct(Twig_NodeInterface $body, $lineno, $tag = null)
-    {
-        parent::__construct(array('body' => $body), array(), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write("\$sandbox = \$this->env->getExtension('sandbox');\n")
-            ->write("if (!\$alreadySandboxed = \$sandbox->isSandboxed()) {\n")
-            ->indent()
-            ->write("\$sandbox->enableSandbox();\n")
-            ->outdent()
-            ->write("}\n")
-            ->subcompile($this->getNode('body'))
-            ->write("if (!\$alreadySandboxed) {\n")
-            ->indent()
-            ->write("\$sandbox->disableSandbox();\n")
-            ->outdent()
-            ->write("}\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php b/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php
deleted file mode 100644
index 148dd2b..0000000
--- a/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Twig_Node_SandboxedPrint adds a check for the __toString() method
- * when the variable is an object and the sandbox is activated.
- *
- * When there is a simple Print statement, like {{ article }},
- * and if the sandbox is enabled, we need to check that the __toString()
- * method is allowed if 'article' is an object.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_SandboxedPrint extends Twig_Node_Print
-{
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('echo $this->env->getExtension(\'sandbox\')->ensureToStringAllowed(')
-            ->subcompile($this->getNode('expr'))
-            ->raw(");\n")
-        ;
-    }
-
-    /**
-     * Removes node filters.
-     *
-     * This is mostly needed when another visitor adds filters (like the escaper one).
-     *
-     * @param Twig_Node $node A Node
-     *
-     * @return Twig_Node
-     */
-    protected function removeNodeFilter($node)
-    {
-        if ($node instanceof Twig_Node_Expression_Filter) {
-            return $this->removeNodeFilter($node->getNode('node'));
-        }
-
-        return $node;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Set.php b/vendor/twig/twig/lib/Twig/Node/Set.php
deleted file mode 100644
index e5a6603..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Set.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a set node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Set extends Twig_Node
-{
-    public function __construct($capture, Twig_NodeInterface $names, Twig_NodeInterface $values, $lineno, $tag = null)
-    {
-        parent::__construct(array('names' => $names, 'values' => $values), array('capture' => $capture, 'safe' => false), $lineno, $tag);
-
-        /*
-         * Optimizes the node when capture is used for a large block of text.
-         *
-         * {% set foo %}foo{% endset %} is compiled to $context['foo'] = new Twig_Markup("foo");
-         */
-        if ($this->getAttribute('capture')) {
-            $this->setAttribute('safe', true);
-
-            $values = $this->getNode('values');
-            if ($values instanceof Twig_Node_Text) {
-                $this->setNode('values', new Twig_Node_Expression_Constant($values->getAttribute('data'), $values->getLine()));
-                $this->setAttribute('capture', false);
-            }
-        }
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler->addDebugInfo($this);
-
-        if (count($this->getNode('names')) > 1) {
-            $compiler->write('list(');
-            foreach ($this->getNode('names') as $idx => $node) {
-                if ($idx) {
-                    $compiler->raw(', ');
-                }
-
-                $compiler->subcompile($node);
-            }
-            $compiler->raw(')');
-        } else {
-            if ($this->getAttribute('capture')) {
-                $compiler
-                    ->write("ob_start();\n")
-                    ->subcompile($this->getNode('values'))
-                ;
-            }
-
-            $compiler->subcompile($this->getNode('names'), false);
-
-            if ($this->getAttribute('capture')) {
-                $compiler->raw(" = ('' === \$tmp = ob_get_clean()) ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset())");
-            }
-        }
-
-        if (!$this->getAttribute('capture')) {
-            $compiler->raw(' = ');
-
-            if (count($this->getNode('names')) > 1) {
-                $compiler->write('array(');
-                foreach ($this->getNode('values') as $idx => $value) {
-                    if ($idx) {
-                        $compiler->raw(', ');
-                    }
-
-                    $compiler->subcompile($value);
-                }
-                $compiler->raw(')');
-            } else {
-                if ($this->getAttribute('safe')) {
-                    $compiler
-                        ->raw("('' === \$tmp = ")
-                        ->subcompile($this->getNode('values'))
-                        ->raw(") ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset())")
-                    ;
-                } else {
-                    $compiler->subcompile($this->getNode('values'));
-                }
-            }
-        }
-
-        $compiler->raw(";\n");
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/SetTemp.php b/vendor/twig/twig/lib/Twig/Node/SetTemp.php
deleted file mode 100644
index 3bdd1cb..0000000
--- a/vendor/twig/twig/lib/Twig/Node/SetTemp.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-class Twig_Node_SetTemp extends Twig_Node
-{
-    public function __construct($name, $lineno)
-    {
-        parent::__construct(array(), array('name' => $name), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $name = $this->getAttribute('name');
-        $compiler
-            ->addDebugInfo($this)
-            ->write('if (isset($context[')
-            ->string($name)
-            ->raw('])) { $_')
-            ->raw($name)
-            ->raw('_ = $context[')
-            ->repr($name)
-            ->raw(']; } else { $_')
-            ->raw($name)
-            ->raw("_ = null; }\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Spaceless.php b/vendor/twig/twig/lib/Twig/Node/Spaceless.php
deleted file mode 100644
index 486e461..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Spaceless.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a spaceless node.
- *
- * It removes spaces between HTML tags.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Spaceless extends Twig_Node
-{
-    public function __construct(Twig_NodeInterface $body, $lineno, $tag = 'spaceless')
-    {
-        parent::__construct(array('body' => $body), array(), $lineno, $tag);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write("ob_start();\n")
-            ->subcompile($this->getNode('body'))
-            ->write("echo trim(preg_replace('/>\s+</', '><', ob_get_clean()));\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Node/Text.php b/vendor/twig/twig/lib/Twig/Node/Text.php
deleted file mode 100644
index 39879bb..0000000
--- a/vendor/twig/twig/lib/Twig/Node/Text.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a text node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Node_Text extends Twig_Node implements Twig_NodeOutputInterface
-{
-    public function __construct($data, $lineno)
-    {
-        parent::__construct(array(), array('data' => $data), $lineno);
-    }
-
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->addDebugInfo($this)
-            ->write('echo ')
-            ->string($this->getAttribute('data'))
-            ->raw(";\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeInterface.php b/vendor/twig/twig/lib/Twig/NodeInterface.php
deleted file mode 100644
index 8077349..0000000
--- a/vendor/twig/twig/lib/Twig/NodeInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a node in the AST.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_NodeInterface extends Countable, IteratorAggregate
-{
-    /**
-     * Compiles the node to PHP.
-     *
-     * @param Twig_Compiler $compiler A Twig_Compiler instance
-     */
-    public function compile(Twig_Compiler $compiler);
-
-    public function getLine();
-
-    public function getNodeTag();
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeOutputInterface.php b/vendor/twig/twig/lib/Twig/NodeOutputInterface.php
deleted file mode 100644
index 22172c0..0000000
--- a/vendor/twig/twig/lib/Twig/NodeOutputInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a displayable node in the AST.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface Twig_NodeOutputInterface
-{
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeTraverser.php b/vendor/twig/twig/lib/Twig/NodeTraverser.php
deleted file mode 100644
index 00f7b54..0000000
--- a/vendor/twig/twig/lib/Twig/NodeTraverser.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Twig_NodeTraverser is a node traverser.
- *
- * It visits all nodes and their children and calls the given visitor for each.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_NodeTraverser
-{
-    protected $env;
-    protected $visitors = array();
-
-    /**
-     * Constructor.
-     *
-     * @param Twig_Environment            $env      A Twig_Environment instance
-     * @param Twig_NodeVisitorInterface[] $visitors An array of Twig_NodeVisitorInterface instances
-     */
-    public function __construct(Twig_Environment $env, array $visitors = array())
-    {
-        $this->env = $env;
-        foreach ($visitors as $visitor) {
-            $this->addVisitor($visitor);
-        }
-    }
-
-    /**
-     * Adds a visitor.
-     *
-     * @param Twig_NodeVisitorInterface $visitor A Twig_NodeVisitorInterface instance
-     */
-    public function addVisitor(Twig_NodeVisitorInterface $visitor)
-    {
-        if (!isset($this->visitors[$visitor->getPriority()])) {
-            $this->visitors[$visitor->getPriority()] = array();
-        }
-
-        $this->visitors[$visitor->getPriority()][] = $visitor;
-    }
-
-    /**
-     * Traverses a node and calls the registered visitors.
-     *
-     * @param Twig_NodeInterface $node A Twig_NodeInterface instance
-     *
-     * @return Twig_NodeInterface
-     */
-    public function traverse(Twig_NodeInterface $node)
-    {
-        ksort($this->visitors);
-        foreach ($this->visitors as $visitors) {
-            foreach ($visitors as $visitor) {
-                $node = $this->traverseForVisitor($visitor, $node);
-            }
-        }
-
-        return $node;
-    }
-
-    protected function traverseForVisitor(Twig_NodeVisitorInterface $visitor, Twig_NodeInterface $node = null)
-    {
-        if (null === $node) {
-            return;
-        }
-
-        $node = $visitor->enterNode($node, $this->env);
-
-        foreach ($node as $k => $n) {
-            if (false !== $n = $this->traverseForVisitor($visitor, $n)) {
-                $node->setNode($k, $n);
-            } else {
-                $node->removeNode($k);
-            }
-        }
-
-        return $visitor->leaveNode($node, $this->env);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php b/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php
deleted file mode 100644
index 5c94977..0000000
--- a/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Twig_NodeVisitor_Escaper implements output escaping.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_NodeVisitor_Escaper extends Twig_BaseNodeVisitor
-{
-    protected $statusStack = array();
-    protected $blocks = array();
-    protected $safeAnalysis;
-    protected $traverser;
-    protected $defaultStrategy = false;
-    protected $safeVars = array();
-
-    public function __construct()
-    {
-        $this->safeAnalysis = new Twig_NodeVisitor_SafeAnalysis();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
-    {
-        if ($node instanceof Twig_Node_Module) {
-            if ($env->hasExtension('escaper') && $defaultStrategy = $env->getExtension('escaper')->getDefaultStrategy($node->getAttribute('filename'))) {
-                $this->defaultStrategy = $defaultStrategy;
-            }
-            $this->safeVars = array();
-        } elseif ($node instanceof Twig_Node_AutoEscape) {
-            $this->statusStack[] = $node->getAttribute('value');
-        } elseif ($node instanceof Twig_Node_Block) {
-            $this->statusStack[] = isset($this->blocks[$node->getAttribute('name')]) ? $this->blocks[$node->getAttribute('name')] : $this->needEscaping($env);
-        } elseif ($node instanceof Twig_Node_Import) {
-            $this->safeVars[] = $node->getNode('var')->getAttribute('name');
-        }
-
-        return $node;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
-    {
-        if ($node instanceof Twig_Node_Module) {
-            $this->defaultStrategy = false;
-            $this->safeVars = array();
-        } elseif ($node instanceof Twig_Node_Expression_Filter) {
-            return $this->preEscapeFilterNode($node, $env);
-        } elseif ($node instanceof Twig_Node_Print) {
-            return $this->escapePrintNode($node, $env, $this->needEscaping($env));
-        }
-
-        if ($node instanceof Twig_Node_AutoEscape || $node instanceof Twig_Node_Block) {
-            array_pop($this->statusStack);
-        } elseif ($node instanceof Twig_Node_BlockReference) {
-            $this->blocks[$node->getAttribute('name')] = $this->needEscaping($env);
-        }
-
-        return $node;
-    }
-
-    protected function escapePrintNode(Twig_Node_Print $node, Twig_Environment $env, $type)
-    {
-        if (false === $type) {
-            return $node;
-        }
-
-        $expression = $node->getNode('expr');
-
-        if ($this->isSafeFor($type, $expression, $env)) {
-            return $node;
-        }
-
-        $class = get_class($node);
-
-        return new $class(
-            $this->getEscaperFilter($type, $expression),
-            $node->getLine()
-        );
-    }
-
-    protected function preEscapeFilterNode(Twig_Node_Expression_Filter $filter, Twig_Environment $env)
-    {
-        $name = $filter->getNode('filter')->getAttribute('value');
-
-        $type = $env->getFilter($name)->getPreEscape();
-        if (null === $type) {
-            return $filter;
-        }
-
-        $node = $filter->getNode('node');
-        if ($this->isSafeFor($type, $node, $env)) {
-            return $filter;
-        }
-
-        $filter->setNode('node', $this->getEscaperFilter($type, $node));
-
-        return $filter;
-    }
-
-    protected function isSafeFor($type, Twig_NodeInterface $expression, $env)
-    {
-        $safe = $this->safeAnalysis->getSafe($expression);
-
-        if (null === $safe) {
-            if (null === $this->traverser) {
-                $this->traverser = new Twig_NodeTraverser($env, array($this->safeAnalysis));
-            }
-
-            $this->safeAnalysis->setSafeVars($this->safeVars);
-
-            $this->traverser->traverse($expression);
-            $safe = $this->safeAnalysis->getSafe($expression);
-        }
-
-        return in_array($type, $safe) || in_array('all', $safe);
-    }
-
-    protected function needEscaping(Twig_Environment $env)
-    {
-        if (count($this->statusStack)) {
-            return $this->statusStack[count($this->statusStack) - 1];
-        }
-
-        return $this->defaultStrategy ? $this->defaultStrategy : false;
-    }
-
-    protected function getEscaperFilter($type, Twig_NodeInterface $node)
-    {
-        $line = $node->getLine();
-        $name = new Twig_Node_Expression_Constant('escape', $line);
-        $args = new Twig_Node(array(new Twig_Node_Expression_Constant((string) $type, $line), new Twig_Node_Expression_Constant(null, $line), new Twig_Node_Expression_Constant(true, $line)));
-
-        return new Twig_Node_Expression_Filter($node, $name, $args, $line);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPriority()
-    {
-        return 0;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php b/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php
deleted file mode 100644
index 872b7fe..0000000
--- a/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Twig_NodeVisitor_Optimizer tries to optimizes the AST.
- *
- * This visitor is always the last registered one.
- *
- * You can configure which optimizations you want to activate via the
- * optimizer mode.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_NodeVisitor_Optimizer extends Twig_BaseNodeVisitor
-{
-    const OPTIMIZE_ALL = -1;
-    const OPTIMIZE_NONE = 0;
-    const OPTIMIZE_FOR = 2;
-    const OPTIMIZE_RAW_FILTER = 4;
-    const OPTIMIZE_VAR_ACCESS = 8;
-
-    protected $loops = array();
-    protected $loopsTargets = array();
-    protected $optimizers;
-    protected $prependedNodes = array();
-    protected $inABody = false;
-
-    /**
-     * Constructor.
-     *
-     * @param int $optimizers The optimizer mode
-     */
-    public function __construct($optimizers = -1)
-    {
-        if (!is_int($optimizers) || $optimizers > (self::OPTIMIZE_FOR | self::OPTIMIZE_RAW_FILTER | self::OPTIMIZE_VAR_ACCESS)) {
-            throw new InvalidArgumentException(sprintf('Optimizer mode "%s" is not valid.', $optimizers));
-        }
-
-        $this->optimizers = $optimizers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
-    {
-        if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) {
-            $this->enterOptimizeFor($node, $env);
-        }
-
-        if (PHP_VERSION_ID < 50400 && self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('sandbox')) {
-            if ($this->inABody) {
-                if (!$node instanceof Twig_Node_Expression) {
-                    if (get_class($node) !== 'Twig_Node') {
-                        array_unshift($this->prependedNodes, array());
-                    }
-                } else {
-                    $node = $this->optimizeVariables($node, $env);
-                }
-            } elseif ($node instanceof Twig_Node_Body) {
-                $this->inABody = true;
-            }
-        }
-
-        return $node;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
-    {
-        $expression = $node instanceof Twig_Node_Expression;
-
-        if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) {
-            $this->leaveOptimizeFor($node, $env);
-        }
-
-        if (self::OPTIMIZE_RAW_FILTER === (self::OPTIMIZE_RAW_FILTER & $this->optimizers)) {
-            $node = $this->optimizeRawFilter($node, $env);
-        }
-
-        $node = $this->optimizePrintNode($node, $env);
-
-        if (self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('sandbox')) {
-            if ($node instanceof Twig_Node_Body) {
-                $this->inABody = false;
-            } elseif ($this->inABody) {
-                if (!$expression && get_class($node) !== 'Twig_Node' && $prependedNodes = array_shift($this->prependedNodes)) {
-                    $nodes = array();
-                    foreach (array_unique($prependedNodes) as $name) {
-                        $nodes[] = new Twig_Node_SetTemp($name, $node->getLine());
-                    }
-
-                    $nodes[] = $node;
-                    $node = new Twig_Node($nodes);
-                }
-            }
-        }
-
-        return $node;
-    }
-
-    protected function optimizeVariables(Twig_NodeInterface $node, Twig_Environment $env)
-    {
-        if ('Twig_Node_Expression_Name' === get_class($node) && $node->isSimple()) {
-            $this->prependedNodes[0][] = $node->getAttribute('name');
-
-            return new Twig_Node_Expression_TempName($node->getAttribute('name'), $node->getLine());
-        }
-
-        return $node;
-    }
-
-    /**
-     * Optimizes print nodes.
-     *
-     * It replaces:
-     *
-     *   * "echo $this->render(Parent)Block()" with "$this->display(Parent)Block()"
-     *
-     * @param Twig_NodeInterface $node A Node
-     * @param Twig_Environment   $env  The current Twig environment
-     *
-     * @return Twig_NodeInterface
-     */
-    protected function optimizePrintNode(Twig_NodeInterface $node, Twig_Environment $env)
-    {
-        if (!$node instanceof Twig_Node_Print) {
-            return $node;
-        }
-
-        if (
-            $node->getNode('expr') instanceof Twig_Node_Expression_BlockReference ||
-            $node->getNode('expr') instanceof Twig_Node_Expression_Parent
-        ) {
-            $node->getNode('expr')->setAttribute('output', true);
-
-            return $node->getNode('expr');
-        }
-
-        return $node;
-    }
-
-    /**
-     * Removes "raw" filters.
-     *
-     * @param Twig_NodeInterface $node A Node
-     * @param Twig_Environment   $env  The current Twig environment
-     *
-     * @return Twig_NodeInterface
-     */
-    protected function optimizeRawFilter(Twig_NodeInterface $node, Twig_Environment $env)
-    {
-        if ($node instanceof Twig_Node_Expression_Filter && 'raw' == $node->getNode('filter')->getAttribute('value')) {
-            return $node->getNode('node');
-        }
-
-        return $node;
-    }
-
-    /**
-     * Optimizes "for" tag by removing the "loop" variable creation whenever possible.
-     *
-     * @param Twig_NodeInterface $node A Node
-     * @param Twig_Environment   $env  The current Twig environment
-     */
-    protected function enterOptimizeFor(Twig_NodeInterface $node, Twig_Environment $env)
-    {
-        if ($node instanceof Twig_Node_For) {
-            // disable the loop variable by default
-            $node->setAttribute('with_loop', false);
-            array_unshift($this->loops, $node);
-            array_unshift($this->loopsTargets, $node->getNode('value_target')->getAttribute('name'));
-            array_unshift($this->loopsTargets, $node->getNode('key_target')->getAttribute('name'));
-        } elseif (!$this->loops) {
-            // we are outside a loop
-            return;
-        }
-
-        // when do we need to add the loop variable back?
-
-        // the loop variable is referenced for the current loop
-        elseif ($node instanceof Twig_Node_Expression_Name && 'loop' === $node->getAttribute('name')) {
-            $node->setAttribute('always_defined', true);
-            $this->addLoopToCurrent();
-        }
-
-        // optimize access to loop targets
-        elseif ($node instanceof Twig_Node_Expression_Name && in_array($node->getAttribute('name'), $this->loopsTargets)) {
-            $node->setAttribute('always_defined', true);
-        }
-
-        // block reference
-        elseif ($node instanceof Twig_Node_BlockReference || $node instanceof Twig_Node_Expression_BlockReference) {
-            $this->addLoopToCurrent();
-        }
-
-        // include without the only attribute
-        elseif ($node instanceof Twig_Node_Include && !$node->getAttribute('only')) {
-            $this->addLoopToAll();
-        }
-
-        // include function without the with_context=false parameter
-        elseif ($node instanceof Twig_Node_Expression_Function
-            && 'include' === $node->getAttribute('name')
-            && (!$node->getNode('arguments')->hasNode('with_context')
-                 || false !== $node->getNode('arguments')->getNode('with_context')->getAttribute('value')
-               )
-        ) {
-            $this->addLoopToAll();
-        }
-
-        // the loop variable is referenced via an attribute
-        elseif ($node instanceof Twig_Node_Expression_GetAttr
-            && (!$node->getNode('attribute') instanceof Twig_Node_Expression_Constant
-                || 'parent' === $node->getNode('attribute')->getAttribute('value')
-               )
-            && (true === $this->loops[0]->getAttribute('with_loop')
-                || ($node->getNode('node') instanceof Twig_Node_Expression_Name
-                    && 'loop' === $node->getNode('node')->getAttribute('name')
-                   )
-               )
-        ) {
-            $this->addLoopToAll();
-        }
-    }
-
-    /**
-     * Optimizes "for" tag by removing the "loop" variable creation whenever possible.
-     *
-     * @param Twig_NodeInterface $node A Node
-     * @param Twig_Environment   $env  The current Twig environment
-     */
-    protected function leaveOptimizeFor(Twig_NodeInterface $node, Twig_Environment $env)
-    {
-        if ($node instanceof Twig_Node_For) {
-            array_shift($this->loops);
-            array_shift($this->loopsTargets);
-            array_shift($this->loopsTargets);
-        }
-    }
-
-    protected function addLoopToCurrent()
-    {
-        $this->loops[0]->setAttribute('with_loop', true);
-    }
-
-    protected function addLoopToAll()
-    {
-        foreach ($this->loops as $loop) {
-            $loop->setAttribute('with_loop', true);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPriority()
-    {
-        return 255;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php b/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php
deleted file mode 100644
index 439f5bf..0000000
--- a/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-class Twig_NodeVisitor_SafeAnalysis extends Twig_BaseNodeVisitor
-{
-    protected $data = array();
-    protected $safeVars = array();
-
-    public function setSafeVars($safeVars)
-    {
-        $this->safeVars = $safeVars;
-    }
-
-    public function getSafe(Twig_NodeInterface $node)
-    {
-        $hash = spl_object_hash($node);
-        if (!isset($this->data[$hash])) {
-            return;
-        }
-
-        foreach ($this->data[$hash] as $bucket) {
-            if ($bucket['key'] !== $node) {
-                continue;
-            }
-
-            if (in_array('html_attr', $bucket['value'])) {
-                $bucket['value'][] = 'html';
-            }
-
-            return $bucket['value'];
-        }
-    }
-
-    protected function setSafe(Twig_NodeInterface $node, array $safe)
-    {
-        $hash = spl_object_hash($node);
-        if (isset($this->data[$hash])) {
-            foreach ($this->data[$hash] as &$bucket) {
-                if ($bucket['key'] === $node) {
-                    $bucket['value'] = $safe;
-
-                    return;
-                }
-            }
-        }
-        $this->data[$hash][] = array(
-            'key' => $node,
-            'value' => $safe,
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
-    {
-        return $node;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
-    {
-        if ($node instanceof Twig_Node_Expression_Constant) {
-            // constants are marked safe for all
-            $this->setSafe($node, array('all'));
-        } elseif ($node instanceof Twig_Node_Expression_BlockReference) {
-            // blocks are safe by definition
-            $this->setSafe($node, array('all'));
-        } elseif ($node instanceof Twig_Node_Expression_Parent) {
-            // parent block is safe by definition
-            $this->setSafe($node, array('all'));
-        } elseif ($node instanceof Twig_Node_Expression_Conditional) {
-            // intersect safeness of both operands
-            $safe = $this->intersectSafe($this->getSafe($node->getNode('expr2')), $this->getSafe($node->getNode('expr3')));
-            $this->setSafe($node, $safe);
-        } elseif ($node instanceof Twig_Node_Expression_Filter) {
-            // filter expression is safe when the filter is safe
-            $name = $node->getNode('filter')->getAttribute('value');
-            $args = $node->getNode('arguments');
-            if (false !== $filter = $env->getFilter($name)) {
-                $safe = $filter->getSafe($args);
-                if (null === $safe) {
-                    $safe = $this->intersectSafe($this->getSafe($node->getNode('node')), $filter->getPreservesSafety());
-                }
-                $this->setSafe($node, $safe);
-            } else {
-                $this->setSafe($node, array());
-            }
-        } elseif ($node instanceof Twig_Node_Expression_Function) {
-            // function expression is safe when the function is safe
-            $name = $node->getAttribute('name');
-            $args = $node->getNode('arguments');
-            $function = $env->getFunction($name);
-            if (false !== $function) {
-                $this->setSafe($node, $function->getSafe($args));
-            } else {
-                $this->setSafe($node, array());
-            }
-        } elseif ($node instanceof Twig_Node_Expression_MethodCall) {
-            if ($node->getAttribute('safe')) {
-                $this->setSafe($node, array('all'));
-            } else {
-                $this->setSafe($node, array());
-            }
-        } elseif ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name) {
-            $name = $node->getNode('node')->getAttribute('name');
-            // attributes on template instances are safe
-            if ('_self' == $name || in_array($name, $this->safeVars)) {
-                $this->setSafe($node, array('all'));
-            } else {
-                $this->setSafe($node, array());
-            }
-        } else {
-            $this->setSafe($node, array());
-        }
-
-        return $node;
-    }
-
-    protected function intersectSafe(array $a = null, array $b = null)
-    {
-        if (null === $a || null === $b) {
-            return array();
-        }
-
-        if (in_array('all', $a)) {
-            return $b;
-        }
-
-        if (in_array('all', $b)) {
-            return $a;
-        }
-
-        return array_intersect($a, $b);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPriority()
-    {
-        return 0;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php b/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php
deleted file mode 100644
index 7f1b913..0000000
--- a/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Twig_NodeVisitor_Sandbox implements sandboxing.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_NodeVisitor_Sandbox extends Twig_BaseNodeVisitor
-{
-    protected $inAModule = false;
-    protected $tags;
-    protected $filters;
-    protected $functions;
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
-    {
-        if ($node instanceof Twig_Node_Module) {
-            $this->inAModule = true;
-            $this->tags = array();
-            $this->filters = array();
-            $this->functions = array();
-
-            return $node;
-        } elseif ($this->inAModule) {
-            // look for tags
-            if ($node->getNodeTag() && !isset($this->tags[$node->getNodeTag()])) {
-                $this->tags[$node->getNodeTag()] = $node;
-            }
-
-            // look for filters
-            if ($node instanceof Twig_Node_Expression_Filter && !isset($this->filters[$node->getNode('filter')->getAttribute('value')])) {
-                $this->filters[$node->getNode('filter')->getAttribute('value')] = $node;
-            }
-
-            // look for functions
-            if ($node instanceof Twig_Node_Expression_Function && !isset($this->functions[$node->getAttribute('name')])) {
-                $this->functions[$node->getAttribute('name')] = $node;
-            }
-
-            // wrap print to check __toString() calls
-            if ($node instanceof Twig_Node_Print) {
-                return new Twig_Node_SandboxedPrint($node->getNode('expr'), $node->getLine(), $node->getNodeTag());
-            }
-        }
-
-        return $node;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
-    {
-        if ($node instanceof Twig_Node_Module) {
-            $this->inAModule = false;
-
-            $node->setNode('display_start', new Twig_Node(array(new Twig_Node_CheckSecurity($this->filters, $this->tags, $this->functions), $node->getNode('display_start'))));
-        }
-
-        return $node;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPriority()
-    {
-        return 0;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php b/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php
deleted file mode 100644
index f276163..0000000
--- a/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Twig_NodeVisitorInterface is the interface the all node visitor classes must implement.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface Twig_NodeVisitorInterface
-{
-    /**
-     * Called before child nodes are visited.
-     *
-     * @param Twig_NodeInterface $node The node to visit
-     * @param Twig_Environment   $env  The Twig environment instance
-     *
-     * @return Twig_NodeInterface The modified node
-     */
-    public function enterNode(Twig_NodeInterface $node, Twig_Environment $env);
-
-    /**
-     * Called after child nodes are visited.
-     *
-     * @param Twig_NodeInterface $node The node to visit
-     * @param Twig_Environment   $env  The Twig environment instance
-     *
-     * @return Twig_NodeInterface|false The modified node or false if the node must be removed
-     */
-    public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env);
-
-    /**
-     * Returns the priority for this visitor.
-     *
-     * Priority should be between -10 and 10 (0 is the default).
-     *
-     * @return int The priority level
-     */
-    public function getPriority();
-}
diff --git a/vendor/twig/twig/lib/Twig/Parser.php b/vendor/twig/twig/lib/Twig/Parser.php
deleted file mode 100644
index ed28a0e..0000000
--- a/vendor/twig/twig/lib/Twig/Parser.php
+++ /dev/null
@@ -1,394 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Default parser implementation.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Parser implements Twig_ParserInterface
-{
-    protected $stack = array();
-    protected $stream;
-    protected $parent;
-    protected $handlers;
-    protected $visitors;
-    protected $expressionParser;
-    protected $blocks;
-    protected $blockStack;
-    protected $macros;
-    protected $env;
-    protected $reservedMacroNames;
-    protected $importedSymbols;
-    protected $traits;
-    protected $embeddedTemplates = array();
-
-    /**
-     * Constructor.
-     *
-     * @param Twig_Environment $env A Twig_Environment instance
-     */
-    public function __construct(Twig_Environment $env)
-    {
-        $this->env = $env;
-    }
-
-    public function getEnvironment()
-    {
-        return $this->env;
-    }
-
-    public function getVarName()
-    {
-        return sprintf('__internal_%s', hash('sha256', uniqid(mt_rand(), true), false));
-    }
-
-    public function getFilename()
-    {
-        return $this->stream->getFilename();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function parse(Twig_TokenStream $stream, $test = null, $dropNeedle = false)
-    {
-        // push all variables into the stack to keep the current state of the parser
-        $vars = get_object_vars($this);
-        unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser'], $vars['reservedMacroNames']);
-        $this->stack[] = $vars;
-
-        // tag handlers
-        if (null === $this->handlers) {
-            $this->handlers = $this->env->getTokenParsers();
-            $this->handlers->setParser($this);
-        }
-
-        // node visitors
-        if (null === $this->visitors) {
-            $this->visitors = $this->env->getNodeVisitors();
-        }
-
-        if (null === $this->expressionParser) {
-            $this->expressionParser = new Twig_ExpressionParser($this, $this->env->getUnaryOperators(), $this->env->getBinaryOperators());
-        }
-
-        $this->stream = $stream;
-        $this->parent = null;
-        $this->blocks = array();
-        $this->macros = array();
-        $this->traits = array();
-        $this->blockStack = array();
-        $this->importedSymbols = array(array());
-        $this->embeddedTemplates = array();
-
-        try {
-            $body = $this->subparse($test, $dropNeedle);
-
-            if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) {
-                $body = new Twig_Node();
-            }
-        } catch (Twig_Error_Syntax $e) {
-            if (!$e->getTemplateFile()) {
-                $e->setTemplateFile($this->getFilename());
-            }
-
-            if (!$e->getTemplateLine()) {
-                $e->setTemplateLine($this->stream->getCurrent()->getLine());
-            }
-
-            throw $e;
-        }
-
-        $node = new Twig_Node_Module(new Twig_Node_Body(array($body)), $this->parent, new Twig_Node($this->blocks), new Twig_Node($this->macros), new Twig_Node($this->traits), $this->embeddedTemplates, $this->getFilename());
-
-        $traverser = new Twig_NodeTraverser($this->env, $this->visitors);
-
-        $node = $traverser->traverse($node);
-
-        // restore previous stack so previous parse() call can resume working
-        foreach (array_pop($this->stack) as $key => $val) {
-            $this->$key = $val;
-        }
-
-        return $node;
-    }
-
-    public function subparse($test, $dropNeedle = false)
-    {
-        $lineno = $this->getCurrentToken()->getLine();
-        $rv = array();
-        while (!$this->stream->isEOF()) {
-            switch ($this->getCurrentToken()->getType()) {
-                case Twig_Token::TEXT_TYPE:
-                    $token = $this->stream->next();
-                    $rv[] = new Twig_Node_Text($token->getValue(), $token->getLine());
-                    break;
-
-                case Twig_Token::VAR_START_TYPE:
-                    $token = $this->stream->next();
-                    $expr = $this->expressionParser->parseExpression();
-                    $this->stream->expect(Twig_Token::VAR_END_TYPE);
-                    $rv[] = new Twig_Node_Print($expr, $token->getLine());
-                    break;
-
-                case Twig_Token::BLOCK_START_TYPE:
-                    $this->stream->next();
-                    $token = $this->getCurrentToken();
-
-                    if ($token->getType() !== Twig_Token::NAME_TYPE) {
-                        throw new Twig_Error_Syntax('A block must start with a tag name.', $token->getLine(), $this->getFilename());
-                    }
-
-                    if (null !== $test && call_user_func($test, $token)) {
-                        if ($dropNeedle) {
-                            $this->stream->next();
-                        }
-
-                        if (1 === count($rv)) {
-                            return $rv[0];
-                        }
-
-                        return new Twig_Node($rv, array(), $lineno);
-                    }
-
-                    $subparser = $this->handlers->getTokenParser($token->getValue());
-                    if (null === $subparser) {
-                        if (null !== $test) {
-                            $e = new Twig_Error_Syntax(sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->getFilename());
-
-                            if (is_array($test) && isset($test[0]) && $test[0] instanceof Twig_TokenParserInterface) {
-                                $e->appendMessage(sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $test[0]->getTag(), $lineno));
-                            }
-                        } else {
-                            $e = new Twig_Error_Syntax(sprintf('Unknown "%s" tag.', $token->getValue()), $token->getLine(), $this->getFilename());
-                            $e->addSuggestions($token->getValue(), array_keys($this->env->getTags()));
-                        }
-
-                        throw $e;
-                    }
-
-                    $this->stream->next();
-
-                    $node = $subparser->parse($token);
-                    if (null !== $node) {
-                        $rv[] = $node;
-                    }
-                    break;
-
-                default:
-                    throw new Twig_Error_Syntax('Lexer or parser ended up in unsupported state.', 0, $this->getFilename());
-            }
-        }
-
-        if (1 === count($rv)) {
-            return $rv[0];
-        }
-
-        return new Twig_Node($rv, array(), $lineno);
-    }
-
-    public function addHandler($name, $class)
-    {
-        $this->handlers[$name] = $class;
-    }
-
-    public function addNodeVisitor(Twig_NodeVisitorInterface $visitor)
-    {
-        $this->visitors[] = $visitor;
-    }
-
-    public function getBlockStack()
-    {
-        return $this->blockStack;
-    }
-
-    public function peekBlockStack()
-    {
-        return $this->blockStack[count($this->blockStack) - 1];
-    }
-
-    public function popBlockStack()
-    {
-        array_pop($this->blockStack);
-    }
-
-    public function pushBlockStack($name)
-    {
-        $this->blockStack[] = $name;
-    }
-
-    public function hasBlock($name)
-    {
-        return isset($this->blocks[$name]);
-    }
-
-    public function getBlock($name)
-    {
-        return $this->blocks[$name];
-    }
-
-    public function setBlock($name, Twig_Node_Block $value)
-    {
-        $this->blocks[$name] = new Twig_Node_Body(array($value), array(), $value->getLine());
-    }
-
-    public function hasMacro($name)
-    {
-        return isset($this->macros[$name]);
-    }
-
-    public function setMacro($name, Twig_Node_Macro $node)
-    {
-        if ($this->isReservedMacroName($name)) {
-            throw new Twig_Error_Syntax(sprintf('"%s" cannot be used as a macro name as it is a reserved keyword.', $name), $node->getLine(), $this->getFilename());
-        }
-
-        $this->macros[$name] = $node;
-    }
-
-    public function isReservedMacroName($name)
-    {
-        if (null === $this->reservedMacroNames) {
-            $this->reservedMacroNames = array();
-            $r = new ReflectionClass($this->env->getBaseTemplateClass());
-            foreach ($r->getMethods() as $method) {
-                $methodName = strtolower($method->getName());
-
-                if ('get' === substr($methodName, 0, 3) && isset($methodName[3])) {
-                    $this->reservedMacroNames[] = substr($methodName, 3);
-                }
-            }
-        }
-
-        return in_array(strtolower($name), $this->reservedMacroNames);
-    }
-
-    public function addTrait($trait)
-    {
-        $this->traits[] = $trait;
-    }
-
-    public function hasTraits()
-    {
-        return count($this->traits) > 0;
-    }
-
-    public function embedTemplate(Twig_Node_Module $template)
-    {
-        $template->setIndex(mt_rand());
-
-        $this->embeddedTemplates[] = $template;
-    }
-
-    public function addImportedSymbol($type, $alias, $name = null, Twig_Node_Expression $node = null)
-    {
-        $this->importedSymbols[0][$type][$alias] = array('name' => $name, 'node' => $node);
-    }
-
-    public function getImportedSymbol($type, $alias)
-    {
-        foreach ($this->importedSymbols as $functions) {
-            if (isset($functions[$type][$alias])) {
-                return $functions[$type][$alias];
-            }
-        }
-    }
-
-    public function isMainScope()
-    {
-        return 1 === count($this->importedSymbols);
-    }
-
-    public function pushLocalScope()
-    {
-        array_unshift($this->importedSymbols, array());
-    }
-
-    public function popLocalScope()
-    {
-        array_shift($this->importedSymbols);
-    }
-
-    /**
-     * Gets the expression parser.
-     *
-     * @return Twig_ExpressionParser The expression parser
-     */
-    public function getExpressionParser()
-    {
-        return $this->expressionParser;
-    }
-
-    public function getParent()
-    {
-        return $this->parent;
-    }
-
-    public function setParent($parent)
-    {
-        $this->parent = $parent;
-    }
-
-    /**
-     * Gets the token stream.
-     *
-     * @return Twig_TokenStream The token stream
-     */
-    public function getStream()
-    {
-        return $this->stream;
-    }
-
-    /**
-     * Gets the current token.
-     *
-     * @return Twig_Token The current token
-     */
-    public function getCurrentToken()
-    {
-        return $this->stream->getCurrent();
-    }
-
-    protected function filterBodyNodes(Twig_NodeInterface $node)
-    {
-        // check that the body does not contain non-empty output nodes
-        if (
-            ($node instanceof Twig_Node_Text && !ctype_space($node->getAttribute('data')))
-            ||
-            (!$node instanceof Twig_Node_Text && !$node instanceof Twig_Node_BlockReference && $node instanceof Twig_NodeOutputInterface)
-        ) {
-            if (false !== strpos((string) $node, chr(0xEF).chr(0xBB).chr(0xBF))) {
-                throw new Twig_Error_Syntax('A template that extends another one cannot have a body but a byte order mark (BOM) has been detected; it must be removed.', $node->getLine(), $this->getFilename());
-            }
-
-            throw new Twig_Error_Syntax('A template that extends another one cannot have a body.', $node->getLine(), $this->getFilename());
-        }
-
-        // bypass "set" nodes as they "capture" the output
-        if ($node instanceof Twig_Node_Set) {
-            return $node;
-        }
-
-        if ($node instanceof Twig_NodeOutputInterface) {
-            return;
-        }
-
-        foreach ($node as $k => $n) {
-            if (null !== $n && null === $this->filterBodyNodes($n)) {
-                $node->removeNode($k);
-            }
-        }
-
-        return $node;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/ParserInterface.php b/vendor/twig/twig/lib/Twig/ParserInterface.php
deleted file mode 100644
index 8e7cc0a..0000000
--- a/vendor/twig/twig/lib/Twig/ParserInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interface implemented by parser classes.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_ParserInterface
-{
-    /**
-     * Converts a token stream to a node tree.
-     *
-     * @param Twig_TokenStream $stream A token stream instance
-     *
-     * @return Twig_Node_Module A node tree
-     *
-     * @throws Twig_Error_Syntax When the token stream is syntactically or semantically wrong
-     */
-    public function parse(Twig_TokenStream $stream);
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php b/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php
deleted file mode 100644
index b82747a..0000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Profiler_Dumper_Blackfire
-{
-    public function dump(Twig_Profiler_Profile $profile)
-    {
-        $data = array();
-        $this->dumpProfile('main()', $profile, $data);
-        $this->dumpChildren('main()', $profile, $data);
-
-        $start = microtime(true);
-        $str = <<<EOF
-file-format: BlackfireProbe
-cost-dimensions: wt mu pmu
-request-start: {$start}
-
-
-EOF;
-
-        foreach ($data as $name => $values) {
-            $str .= "{$name}//{$values['ct']} {$values['wt']} {$values['mu']} {$values['pmu']}\n";
-        }
-
-        return $str;
-    }
-
-    private function dumpChildren($parent, Twig_Profiler_Profile $profile, &$data)
-    {
-        foreach ($profile as $p) {
-            if ($p->isTemplate()) {
-                $name = $p->getTemplate();
-            } else {
-                $name = sprintf('%s::%s(%s)', $p->getTemplate(), $p->getType(), $p->getName());
-            }
-            $this->dumpProfile(sprintf('%s==>%s', $parent, $name), $p, $data);
-            $this->dumpChildren($name, $p, $data);
-        }
-    }
-
-    private function dumpProfile($edge, Twig_Profiler_Profile $profile, &$data)
-    {
-        if (isset($data[$edge])) {
-            $data[$edge]['ct'] += 1;
-            $data[$edge]['wt'] += floor($profile->getDuration() * 1000000);
-            $data[$edge]['mu'] += $profile->getMemoryUsage();
-            $data[$edge]['pmu'] += $profile->getPeakMemoryUsage();
-        } else {
-            $data[$edge] = array(
-                'ct' => 1,
-                'wt' => floor($profile->getDuration() * 1000000),
-                'mu' => $profile->getMemoryUsage(),
-                'pmu' => $profile->getPeakMemoryUsage(),
-            );
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php b/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php
deleted file mode 100644
index f066da7..0000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Profiler_Dumper_Html extends Twig_Profiler_Dumper_Text
-{
-    private static $colors = array(
-        'block' => '#dfd',
-        'macro' => '#ddf',
-        'template' => '#ffd',
-        'big' => '#d44',
-    );
-
-    public function dump(Twig_Profiler_Profile $profile)
-    {
-        return '<pre>'.parent::dump($profile).'</pre>';
-    }
-
-    protected function formatTemplate(Twig_Profiler_Profile $profile, $prefix)
-    {
-        return sprintf('%s└ <span style="background-color: %s">%s</span>', $prefix, self::$colors['template'], $profile->getTemplate());
-    }
-
-    protected function formatNonTemplate(Twig_Profiler_Profile $profile, $prefix)
-    {
-        return sprintf('%s└ %s::%s(<span style="background-color: %s">%s</span>)', $prefix, $profile->getTemplate(), $profile->getType(), isset(self::$colors[$profile->getType()]) ? self::$colors[$profile->getType()] : 'auto', $profile->getName());
-    }
-
-    protected function formatTime(Twig_Profiler_Profile $profile, $percent)
-    {
-        return sprintf('<span style="color: %s">%.2fms/%.0f%%</span>', $percent > 20 ? self::$colors['big'] : 'auto', $profile->getDuration() * 1000, $percent);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php b/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php
deleted file mode 100644
index 998e210..0000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Profiler_Dumper_Text
-{
-    private $root;
-
-    public function dump(Twig_Profiler_Profile $profile)
-    {
-        return $this->dumpProfile($profile);
-    }
-
-    protected function formatTemplate(Twig_Profiler_Profile $profile, $prefix)
-    {
-        return sprintf('%s└ %s', $prefix, $profile->getTemplate());
-    }
-
-    protected function formatNonTemplate(Twig_Profiler_Profile $profile, $prefix)
-    {
-        return sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), $profile->getName());
-    }
-
-    protected function formatTime(Twig_Profiler_Profile $profile, $percent)
-    {
-        return sprintf('%.2fms/%.0f%%', $profile->getDuration() * 1000, $percent);
-    }
-
-    private function dumpProfile(Twig_Profiler_Profile $profile, $prefix = '', $sibling = false)
-    {
-        if ($profile->isRoot()) {
-            $this->root = $profile->getDuration();
-            $start = $profile->getName();
-        } else {
-            if ($profile->isTemplate()) {
-                $start = $this->formatTemplate($profile, $prefix);
-            } else {
-                $start = $this->formatNonTemplate($profile, $prefix);
-            }
-            $prefix .= $sibling ? '│ ' : '  ';
-        }
-
-        $percent = $this->root ? $profile->getDuration() / $this->root * 100 : 0;
-
-        if ($profile->getDuration() * 1000 < 1) {
-            $str = $start."\n";
-        } else {
-            $str = sprintf("%s %s\n", $start, $this->formatTime($profile, $percent));
-        }
-
-        $nCount = count($profile->getProfiles());
-        foreach ($profile as $i => $p) {
-            $str .= $this->dumpProfile($p, $prefix, $i + 1 !== $nCount);
-        }
-
-        return $str;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php b/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php
deleted file mode 100644
index 2f97214..0000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a profile enter node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Profiler_Node_EnterProfile extends Twig_Node
-{
-    public function __construct($extensionName, $type, $name, $varName)
-    {
-        parent::__construct(array(), array('extension_name' => $extensionName, 'name' => $name, 'type' => $type, 'var_name' => $varName));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->write(sprintf('$%s = $this->env->getExtension(', $this->getAttribute('var_name')))
-            ->repr($this->getAttribute('extension_name'))
-            ->raw(");\n")
-            ->write(sprintf('$%s->enter($%s = new Twig_Profiler_Profile($this->getTemplateName(), ', $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof'))
-            ->repr($this->getAttribute('type'))
-            ->raw(', ')
-            ->repr($this->getAttribute('name'))
-            ->raw("));\n\n")
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php b/vendor/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php
deleted file mode 100644
index 88074c2..0000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a profile leave node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Profiler_Node_LeaveProfile extends Twig_Node
-{
-    public function __construct($varName)
-    {
-        parent::__construct(array(), array('var_name' => $varName));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function compile(Twig_Compiler $compiler)
-    {
-        $compiler
-            ->write("\n")
-            ->write(sprintf("\$%s->leave(\$%s);\n\n", $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof'))
-        ;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php b/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php
deleted file mode 100644
index 4b0baa8..0000000
--- a/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Profiler_NodeVisitor_Profiler extends Twig_BaseNodeVisitor
-{
-    private $extensionName;
-
-    public function __construct($extensionName)
-    {
-        $this->extensionName = $extensionName;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
-    {
-        return $node;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
-    {
-        if ($node instanceof Twig_Node_Module) {
-            $varName = $this->getVarName();
-            $node->setNode('display_start', new Twig_Node(array(new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::TEMPLATE, $node->getAttribute('filename'), $varName), $node->getNode('display_start'))));
-            $node->setNode('display_end', new Twig_Node(array(new Twig_Profiler_Node_LeaveProfile($varName), $node->getNode('display_end'))));
-        } elseif ($node instanceof Twig_Node_Block) {
-            $varName = $this->getVarName();
-            $node->setNode('body', new Twig_Node_Body(array(
-                new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::BLOCK, $node->getAttribute('name'), $varName),
-                $node->getNode('body'),
-                new Twig_Profiler_Node_LeaveProfile($varName),
-            )));
-        } elseif ($node instanceof Twig_Node_Macro) {
-            $varName = $this->getVarName();
-            $node->setNode('body', new Twig_Node_Body(array(
-                new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::MACRO, $node->getAttribute('name'), $varName),
-                $node->getNode('body'),
-                new Twig_Profiler_Node_LeaveProfile($varName),
-            )));
-        }
-
-        return $node;
-    }
-
-    private function getVarName()
-    {
-        return sprintf('__internal_%s', hash('sha256', uniqid(mt_rand(), true), false));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPriority()
-    {
-        return 0;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Profiler/Profile.php b/vendor/twig/twig/lib/Twig/Profiler/Profile.php
deleted file mode 100644
index 104bc05..0000000
--- a/vendor/twig/twig/lib/Twig/Profiler/Profile.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2015 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Profiler_Profile implements IteratorAggregate, Serializable
-{
-    const ROOT = 'ROOT';
-    const BLOCK = 'block';
-    const TEMPLATE = 'template';
-    const MACRO = 'macro';
-
-    private $template;
-    private $name;
-    private $type;
-    private $starts = array();
-    private $ends = array();
-    private $profiles = array();
-
-    public function __construct($template = 'main', $type = self::ROOT, $name = 'main')
-    {
-        $this->template = $template;
-        $this->type = $type;
-        $this->name = 0 === strpos($name, '__internal_') ? 'INTERNAL' : $name;
-        $this->enter();
-    }
-
-    public function getTemplate()
-    {
-        return $this->template;
-    }
-
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function isRoot()
-    {
-        return self::ROOT === $this->type;
-    }
-
-    public function isTemplate()
-    {
-        return self::TEMPLATE === $this->type;
-    }
-
-    public function isBlock()
-    {
-        return self::BLOCK === $this->type;
-    }
-
-    public function isMacro()
-    {
-        return self::MACRO === $this->type;
-    }
-
-    public function getProfiles()
-    {
-        return $this->profiles;
-    }
-
-    public function addProfile(Twig_Profiler_Profile $profile)
-    {
-        $this->profiles[] = $profile;
-    }
-
-    /**
-     * Returns the duration in microseconds.
-     *
-     * @return int
-     */
-    public function getDuration()
-    {
-        if ($this->isRoot() && $this->profiles) {
-            // for the root node with children, duration is the sum of all child durations
-            $duration = 0;
-            foreach ($this->profiles as $profile) {
-                $duration += $profile->getDuration();
-            }
-
-            return $duration;
-        }
-
-        return isset($this->ends['wt']) && isset($this->starts['wt']) ? $this->ends['wt'] - $this->starts['wt'] : 0;
-    }
-
-    /**
-     * Returns the memory usage in bytes.
-     *
-     * @return int
-     */
-    public function getMemoryUsage()
-    {
-        return isset($this->ends['mu']) && isset($this->starts['mu']) ? $this->ends['mu'] - $this->starts['mu'] : 0;
-    }
-
-    /**
-     * Returns the peak memory usage in bytes.
-     *
-     * @return int
-     */
-    public function getPeakMemoryUsage()
-    {
-        return isset($this->ends['pmu']) && isset($this->starts['pmu']) ? $this->ends['pmu'] - $this->starts['pmu'] : 0;
-    }
-
-    /**
-     * Starts the profiling.
-     */
-    public function enter()
-    {
-        $this->starts = array(
-            'wt' => microtime(true),
-            'mu' => memory_get_usage(),
-            'pmu' => memory_get_peak_usage(),
-        );
-    }
-
-    /**
-     * Stops the profiling.
-     */
-    public function leave()
-    {
-        $this->ends = array(
-            'wt' => microtime(true),
-            'mu' => memory_get_usage(),
-            'pmu' => memory_get_peak_usage(),
-        );
-    }
-
-    public function getIterator()
-    {
-        return new ArrayIterator($this->profiles);
-    }
-
-    public function serialize()
-    {
-        return serialize(array($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles));
-    }
-
-    public function unserialize($data)
-    {
-        list($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles) = unserialize($data);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityError.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityError.php
deleted file mode 100644
index 015bfae..0000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityError.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Exception thrown when a security error occurs at runtime.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Sandbox_SecurityError extends Twig_Error
-{
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php
deleted file mode 100644
index 99faba9..0000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Exception thrown when a not allowed filter is used in a template.
- *
- * @author Martin Hasoň <martin.hason@gmail.com>
- */
-class Twig_Sandbox_SecurityNotAllowedFilterError extends Twig_Sandbox_SecurityError
-{
-    private $filterName;
-
-    public function __construct($message, $functionName, $lineno = -1, $filename = null, Exception $previous = null)
-    {
-        parent::__construct($message, $lineno, $filename, $previous);
-        $this->filterName = $functionName;
-    }
-
-    public function getFilterName()
-    {
-        return $this->filterName;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php
deleted file mode 100644
index 05cf488..0000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Exception thrown when a not allowed function is used in a template.
- *
- * @author Martin Hasoň <martin.hason@gmail.com>
- */
-class Twig_Sandbox_SecurityNotAllowedFunctionError extends Twig_Sandbox_SecurityError
-{
-    private $functionName;
-
-    public function __construct($message, $functionName, $lineno = -1, $filename = null, Exception $previous = null)
-    {
-        parent::__construct($message, $lineno, $filename, $previous);
-        $this->functionName = $functionName;
-    }
-
-    public function getFunctionName()
-    {
-        return $this->functionName;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php
deleted file mode 100644
index b3bb5e8..0000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Exception thrown when a not allowed tag is used in a template.
- *
- * @author Martin Hasoň <martin.hason@gmail.com>
- */
-class Twig_Sandbox_SecurityNotAllowedTagError extends Twig_Sandbox_SecurityError
-{
-    private $tagName;
-
-    public function __construct($message, $tagName, $lineno = -1, $filename = null, Exception $previous = null)
-    {
-        parent::__construct($message, $lineno, $filename, $previous);
-        $this->tagName = $tagName;
-    }
-
-    public function getTagName()
-    {
-        return $this->tagName;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php
deleted file mode 100644
index c4dd03d..0000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a security policy which need to be enforced when sandbox mode is enabled.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Sandbox_SecurityPolicy implements Twig_Sandbox_SecurityPolicyInterface
-{
-    protected $allowedTags;
-    protected $allowedFilters;
-    protected $allowedMethods;
-    protected $allowedProperties;
-    protected $allowedFunctions;
-
-    public function __construct(array $allowedTags = array(), array $allowedFilters = array(), array $allowedMethods = array(), array $allowedProperties = array(), array $allowedFunctions = array())
-    {
-        $this->allowedTags = $allowedTags;
-        $this->allowedFilters = $allowedFilters;
-        $this->setAllowedMethods($allowedMethods);
-        $this->allowedProperties = $allowedProperties;
-        $this->allowedFunctions = $allowedFunctions;
-    }
-
-    public function setAllowedTags(array $tags)
-    {
-        $this->allowedTags = $tags;
-    }
-
-    public function setAllowedFilters(array $filters)
-    {
-        $this->allowedFilters = $filters;
-    }
-
-    public function setAllowedMethods(array $methods)
-    {
-        $this->allowedMethods = array();
-        foreach ($methods as $class => $m) {
-            $this->allowedMethods[$class] = array_map('strtolower', is_array($m) ? $m : array($m));
-        }
-    }
-
-    public function setAllowedProperties(array $properties)
-    {
-        $this->allowedProperties = $properties;
-    }
-
-    public function setAllowedFunctions(array $functions)
-    {
-        $this->allowedFunctions = $functions;
-    }
-
-    public function checkSecurity($tags, $filters, $functions)
-    {
-        foreach ($tags as $tag) {
-            if (!in_array($tag, $this->allowedTags)) {
-                throw new Twig_Sandbox_SecurityNotAllowedTagError(sprintf('Tag "%s" is not allowed.', $tag), $tag);
-            }
-        }
-
-        foreach ($filters as $filter) {
-            if (!in_array($filter, $this->allowedFilters)) {
-                throw new Twig_Sandbox_SecurityNotAllowedFilterError(sprintf('Filter "%s" is not allowed.', $filter), $filter);
-            }
-        }
-
-        foreach ($functions as $function) {
-            if (!in_array($function, $this->allowedFunctions)) {
-                throw new Twig_Sandbox_SecurityNotAllowedFunctionError(sprintf('Function "%s" is not allowed.', $function), $function);
-            }
-        }
-    }
-
-    public function checkMethodAllowed($obj, $method)
-    {
-        if ($obj instanceof Twig_TemplateInterface || $obj instanceof Twig_Markup) {
-            return true;
-        }
-
-        $allowed = false;
-        $method = strtolower($method);
-        foreach ($this->allowedMethods as $class => $methods) {
-            if ($obj instanceof $class) {
-                $allowed = in_array($method, $methods);
-
-                break;
-            }
-        }
-
-        if (!$allowed) {
-            throw new Twig_Sandbox_SecurityError(sprintf('Calling "%s" method on a "%s" object is not allowed.', $method, get_class($obj)));
-        }
-    }
-
-    public function checkPropertyAllowed($obj, $property)
-    {
-        $allowed = false;
-        foreach ($this->allowedProperties as $class => $properties) {
-            if ($obj instanceof $class) {
-                $allowed = in_array($property, is_array($properties) ? $properties : array($properties));
-
-                break;
-            }
-        }
-
-        if (!$allowed) {
-            throw new Twig_Sandbox_SecurityError(sprintf('Calling "%s" property on a "%s" object is not allowed.', $property, get_class($obj)));
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php b/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php
deleted file mode 100644
index 6ab48e3..0000000
--- a/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interfaces that all security policy classes must implements.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface Twig_Sandbox_SecurityPolicyInterface
-{
-    public function checkSecurity($tags, $filters, $functions);
-
-    public function checkMethodAllowed($obj, $method);
-
-    public function checkPropertyAllowed($obj, $method);
-}
diff --git a/vendor/twig/twig/lib/Twig/SimpleFilter.php b/vendor/twig/twig/lib/Twig/SimpleFilter.php
deleted file mode 100644
index cefc4f5..0000000
--- a/vendor/twig/twig/lib/Twig/SimpleFilter.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009-2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a template filter.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_SimpleFilter
-{
-    protected $name;
-    protected $callable;
-    protected $options;
-    protected $arguments = array();
-
-    public function __construct($name, $callable, array $options = array())
-    {
-        $this->name = $name;
-        $this->callable = $callable;
-        $this->options = array_merge(array(
-            'needs_environment' => false,
-            'needs_context' => false,
-            'is_variadic' => false,
-            'is_safe' => null,
-            'is_safe_callback' => null,
-            'pre_escape' => null,
-            'preserves_safety' => null,
-            'node_class' => 'Twig_Node_Expression_Filter',
-            'deprecated' => false,
-            'alternative' => null,
-        ), $options);
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function getCallable()
-    {
-        return $this->callable;
-    }
-
-    public function getNodeClass()
-    {
-        return $this->options['node_class'];
-    }
-
-    public function setArguments($arguments)
-    {
-        $this->arguments = $arguments;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function needsEnvironment()
-    {
-        return $this->options['needs_environment'];
-    }
-
-    public function needsContext()
-    {
-        return $this->options['needs_context'];
-    }
-
-    public function getSafe(Twig_Node $filterArgs)
-    {
-        if (null !== $this->options['is_safe']) {
-            return $this->options['is_safe'];
-        }
-
-        if (null !== $this->options['is_safe_callback']) {
-            return call_user_func($this->options['is_safe_callback'], $filterArgs);
-        }
-    }
-
-    public function getPreservesSafety()
-    {
-        return $this->options['preserves_safety'];
-    }
-
-    public function getPreEscape()
-    {
-        return $this->options['pre_escape'];
-    }
-
-    public function isVariadic()
-    {
-        return $this->options['is_variadic'];
-    }
-
-    public function isDeprecated()
-    {
-        return $this->options['deprecated'];
-    }
-
-    public function getAlternative()
-    {
-        return $this->options['alternative'];
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/SimpleFunction.php b/vendor/twig/twig/lib/Twig/SimpleFunction.php
deleted file mode 100644
index 7973540..0000000
--- a/vendor/twig/twig/lib/Twig/SimpleFunction.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010-2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a template function.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_SimpleFunction
-{
-    protected $name;
-    protected $callable;
-    protected $options;
-    protected $arguments = array();
-
-    public function __construct($name, $callable, array $options = array())
-    {
-        $this->name = $name;
-        $this->callable = $callable;
-        $this->options = array_merge(array(
-            'needs_environment' => false,
-            'needs_context' => false,
-            'is_variadic' => false,
-            'is_safe' => null,
-            'is_safe_callback' => null,
-            'node_class' => 'Twig_Node_Expression_Function',
-            'deprecated' => false,
-            'alternative' => null,
-        ), $options);
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function getCallable()
-    {
-        return $this->callable;
-    }
-
-    public function getNodeClass()
-    {
-        return $this->options['node_class'];
-    }
-
-    public function setArguments($arguments)
-    {
-        $this->arguments = $arguments;
-    }
-
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    public function needsEnvironment()
-    {
-        return $this->options['needs_environment'];
-    }
-
-    public function needsContext()
-    {
-        return $this->options['needs_context'];
-    }
-
-    public function getSafe(Twig_Node $functionArgs)
-    {
-        if (null !== $this->options['is_safe']) {
-            return $this->options['is_safe'];
-        }
-
-        if (null !== $this->options['is_safe_callback']) {
-            return call_user_func($this->options['is_safe_callback'], $functionArgs);
-        }
-
-        return array();
-    }
-
-    public function isVariadic()
-    {
-        return $this->options['is_variadic'];
-    }
-
-    public function isDeprecated()
-    {
-        return $this->options['deprecated'];
-    }
-
-    public function getAlternative()
-    {
-        return $this->options['alternative'];
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/SimpleTest.php b/vendor/twig/twig/lib/Twig/SimpleTest.php
deleted file mode 100644
index 8ba2192..0000000
--- a/vendor/twig/twig/lib/Twig/SimpleTest.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010-2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_SimpleTest
-{
-    protected $name;
-    protected $callable;
-    protected $options;
-
-    public function __construct($name, $callable, array $options = array())
-    {
-        $this->name = $name;
-        $this->callable = $callable;
-        $this->options = array_merge(array(
-            'is_variadic' => false,
-            'node_class' => 'Twig_Node_Expression_Test',
-            'deprecated' => false,
-            'alternative' => null,
-        ), $options);
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    public function getCallable()
-    {
-        return $this->callable;
-    }
-
-    public function getNodeClass()
-    {
-        return $this->options['node_class'];
-    }
-
-    public function isVariadic()
-    {
-        return $this->options['is_variadic'];
-    }
-
-    public function isDeprecated()
-    {
-        return $this->options['deprecated'];
-    }
-
-    public function getAlternative()
-    {
-        return $this->options['alternative'];
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Template.php b/vendor/twig/twig/lib/Twig/Template.php
deleted file mode 100644
index a816022..0000000
--- a/vendor/twig/twig/lib/Twig/Template.php
+++ /dev/null
@@ -1,614 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Default base class for compiled templates.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Twig_Template implements Twig_TemplateInterface
-{
-    protected static $cache = array();
-
-    protected $parent;
-    protected $parents = array();
-    protected $env;
-    protected $blocks = array();
-    protected $traits = array();
-
-    /**
-     * Constructor.
-     *
-     * @param Twig_Environment $env A Twig_Environment instance
-     */
-    public function __construct(Twig_Environment $env)
-    {
-        $this->env = $env;
-    }
-
-    /**
-     * Returns the template name.
-     *
-     * @return string The template name
-     */
-    abstract public function getTemplateName();
-
-    /**
-     * @deprecated since 1.20 (to be removed in 2.0)
-     */
-    public function getEnvironment()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.20 and will be removed in 2.0.', E_USER_DEPRECATED);
-
-        return $this->env;
-    }
-
-    /**
-     * Returns the parent template.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @param array $context
-     *
-     * @return Twig_TemplateInterface|false The parent template or false if there is no parent
-     *
-     * @internal
-     */
-    public function getParent(array $context)
-    {
-        if (null !== $this->parent) {
-            return $this->parent;
-        }
-
-        try {
-            $parent = $this->doGetParent($context);
-
-            if (false === $parent) {
-                return false;
-            }
-
-            if ($parent instanceof self) {
-                return $this->parents[$parent->getTemplateName()] = $parent;
-            }
-
-            if (!isset($this->parents[$parent])) {
-                $this->parents[$parent] = $this->loadTemplate($parent);
-            }
-        } catch (Twig_Error_Loader $e) {
-            $e->setTemplateFile(null);
-            $e->guess();
-
-            throw $e;
-        }
-
-        return $this->parents[$parent];
-    }
-
-    protected function doGetParent(array $context)
-    {
-        return false;
-    }
-
-    public function isTraitable()
-    {
-        return true;
-    }
-
-    /**
-     * Displays a parent block.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @param string $name    The block name to display from the parent
-     * @param array  $context The context
-     * @param array  $blocks  The current set of blocks
-     *
-     * @internal
-     */
-    public function displayParentBlock($name, array $context, array $blocks = array())
-    {
-        $name = (string) $name;
-
-        if (isset($this->traits[$name])) {
-            $this->traits[$name][0]->displayBlock($name, $context, $blocks, false);
-        } elseif (false !== $parent = $this->getParent($context)) {
-            $parent->displayBlock($name, $context, $blocks, false);
-        } else {
-            throw new Twig_Error_Runtime(sprintf('The template has no parent and no traits defining the "%s" block', $name), -1, $this->getTemplateName());
-        }
-    }
-
-    /**
-     * Displays a block.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @param string $name      The block name to display
-     * @param array  $context   The context
-     * @param array  $blocks    The current set of blocks
-     * @param bool   $useBlocks Whether to use the current set of blocks
-     *
-     * @internal
-     */
-    public function displayBlock($name, array $context, array $blocks = array(), $useBlocks = true)
-    {
-        $name = (string) $name;
-
-        if ($useBlocks && isset($blocks[$name])) {
-            $template = $blocks[$name][0];
-            $block = $blocks[$name][1];
-        } elseif (isset($this->blocks[$name])) {
-            $template = $this->blocks[$name][0];
-            $block = $this->blocks[$name][1];
-        } else {
-            $template = null;
-            $block = null;
-        }
-
-        if (null !== $template) {
-            // avoid RCEs when sandbox is enabled
-            if (!$template instanceof self) {
-                throw new LogicException('A block must be a method on a Twig_Template instance.');
-            }
-
-            try {
-                $template->$block($context, $blocks);
-            } catch (Twig_Error $e) {
-                if (!$e->getTemplateFile()) {
-                    $e->setTemplateFile($template->getTemplateName());
-                }
-
-                // this is mostly useful for Twig_Error_Loader exceptions
-                // see Twig_Error_Loader
-                if (false === $e->getTemplateLine()) {
-                    $e->setTemplateLine(-1);
-                    $e->guess();
-                }
-
-                throw $e;
-            } catch (Exception $e) {
-                throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getTemplateName(), $e);
-            }
-        } elseif (false !== $parent = $this->getParent($context)) {
-            $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false);
-        }
-    }
-
-    /**
-     * Renders a parent block.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @param string $name    The block name to render from the parent
-     * @param array  $context The context
-     * @param array  $blocks  The current set of blocks
-     *
-     * @return string The rendered block
-     *
-     * @internal
-     */
-    public function renderParentBlock($name, array $context, array $blocks = array())
-    {
-        ob_start();
-        $this->displayParentBlock($name, $context, $blocks);
-
-        return ob_get_clean();
-    }
-
-    /**
-     * Renders a block.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @param string $name      The block name to render
-     * @param array  $context   The context
-     * @param array  $blocks    The current set of blocks
-     * @param bool   $useBlocks Whether to use the current set of blocks
-     *
-     * @return string The rendered block
-     *
-     * @internal
-     */
-    public function renderBlock($name, array $context, array $blocks = array(), $useBlocks = true)
-    {
-        ob_start();
-        $this->displayBlock($name, $context, $blocks, $useBlocks);
-
-        return ob_get_clean();
-    }
-
-    /**
-     * Returns whether a block exists or not.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * This method does only return blocks defined in the current template
-     * or defined in "used" traits.
-     *
-     * It does not return blocks from parent templates as the parent
-     * template name can be dynamic, which is only known based on the
-     * current context.
-     *
-     * @param string $name The block name
-     *
-     * @return bool true if the block exists, false otherwise
-     *
-     * @internal
-     */
-    public function hasBlock($name)
-    {
-        return isset($this->blocks[(string) $name]);
-    }
-
-    /**
-     * Returns all block names.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @return array An array of block names
-     *
-     * @see hasBlock
-     *
-     * @internal
-     */
-    public function getBlockNames()
-    {
-        return array_keys($this->blocks);
-    }
-
-    protected function loadTemplate($template, $templateName = null, $line = null, $index = null)
-    {
-        try {
-            if (is_array($template)) {
-                return $this->env->resolveTemplate($template);
-            }
-
-            if ($template instanceof self) {
-                return $template;
-            }
-
-            return $this->env->loadTemplate($template, $index);
-        } catch (Twig_Error $e) {
-            if (!$e->getTemplateFile()) {
-                $e->setTemplateFile($templateName ? $templateName : $this->getTemplateName());
-            }
-
-            if ($e->getTemplateLine()) {
-                throw $e;
-            }
-
-            if (!$line) {
-                $e->guess();
-            } else {
-                $e->setTemplateLine($line);
-            }
-
-            throw $e;
-        }
-    }
-
-    /**
-     * Returns all blocks.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * @return array An array of blocks
-     *
-     * @see hasBlock
-     *
-     * @internal
-     */
-    public function getBlocks()
-    {
-        return $this->blocks;
-    }
-
-    /**
-     * Returns the template source code.
-     *
-     * @return string|null The template source code or null if it is not available
-     */
-    public function getSource()
-    {
-        $reflector = new ReflectionClass($this);
-        $file = $reflector->getFileName();
-
-        if (!file_exists($file)) {
-            return;
-        }
-
-        $source = file($file, FILE_IGNORE_NEW_LINES);
-        array_splice($source, 0, $reflector->getEndLine());
-
-        $i = 0;
-        while (isset($source[$i]) && '/* */' === substr_replace($source[$i], '', 3, -2)) {
-            $source[$i] = str_replace('*//* ', '*/', substr($source[$i], 3, -2));
-            ++$i;
-        }
-        array_splice($source, $i);
-
-        return implode("\n", $source);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function display(array $context, array $blocks = array())
-    {
-        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function render(array $context)
-    {
-        $level = ob_get_level();
-        ob_start();
-        try {
-            $this->display($context);
-        } catch (Exception $e) {
-            while (ob_get_level() > $level) {
-                ob_end_clean();
-            }
-
-            throw $e;
-        }
-
-        return ob_get_clean();
-    }
-
-    protected function displayWithErrorHandling(array $context, array $blocks = array())
-    {
-        try {
-            $this->doDisplay($context, $blocks);
-        } catch (Twig_Error $e) {
-            if (!$e->getTemplateFile()) {
-                $e->setTemplateFile($this->getTemplateName());
-            }
-
-            // this is mostly useful for Twig_Error_Loader exceptions
-            // see Twig_Error_Loader
-            if (false === $e->getTemplateLine()) {
-                $e->setTemplateLine(-1);
-                $e->guess();
-            }
-
-            throw $e;
-        } catch (Exception $e) {
-            throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getTemplateName(), $e);
-        }
-    }
-
-    /**
-     * Auto-generated method to display the template with the given context.
-     *
-     * @param array $context An array of parameters to pass to the template
-     * @param array $blocks  An array of blocks to pass to the template
-     */
-    abstract protected function doDisplay(array $context, array $blocks = array());
-
-    /**
-     * Returns a variable from the context.
-     *
-     * This method is for internal use only and should never be called
-     * directly.
-     *
-     * This method should not be overridden in a sub-class as this is an
-     * implementation detail that has been introduced to optimize variable
-     * access for versions of PHP before 5.4. This is not a way to override
-     * the way to get a variable value.
-     *
-     * @param array  $context           The context
-     * @param string $item              The variable to return from the context
-     * @param bool   $ignoreStrictCheck Whether to ignore the strict variable check or not
-     *
-     * @return mixed The content of the context variable
-     *
-     * @throws Twig_Error_Runtime if the variable does not exist and Twig is running in strict mode
-     *
-     * @internal
-     */
-    final protected function getContext($context, $item, $ignoreStrictCheck = false)
-    {
-        if (!array_key_exists($item, $context)) {
-            if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-                return;
-            }
-
-            throw new Twig_Error_Runtime(sprintf('Variable "%s" does not exist', $item), -1, $this->getTemplateName());
-        }
-
-        return $context[$item];
-    }
-
-    /**
-     * Returns the attribute value for a given array/object.
-     *
-     * @param mixed  $object            The object or array from where to get the item
-     * @param mixed  $item              The item to get from the array or object
-     * @param array  $arguments         An array of arguments to pass if the item is an object method
-     * @param string $type              The type of attribute (@see Twig_Template constants)
-     * @param bool   $isDefinedTest     Whether this is only a defined check
-     * @param bool   $ignoreStrictCheck Whether to ignore the strict attribute check or not
-     *
-     * @return mixed The attribute value, or a Boolean when $isDefinedTest is true, or null when the attribute is not set and $ignoreStrictCheck is true
-     *
-     * @throws Twig_Error_Runtime if the attribute does not exist and Twig is running in strict mode and $isDefinedTest is false
-     */
-    protected function getAttribute($object, $item, array $arguments = array(), $type = self::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false)
-    {
-        // array
-        if (self::METHOD_CALL !== $type) {
-            $arrayItem = is_bool($item) || is_float($item) ? (int) $item : $item;
-
-            if ((is_array($object) && array_key_exists($arrayItem, $object))
-                || ($object instanceof ArrayAccess && isset($object[$arrayItem]))
-            ) {
-                if ($isDefinedTest) {
-                    return true;
-                }
-
-                return $object[$arrayItem];
-            }
-
-            if (self::ARRAY_CALL === $type || !is_object($object)) {
-                if ($isDefinedTest) {
-                    return false;
-                }
-
-                if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-                    return;
-                }
-
-                if ($object instanceof ArrayAccess) {
-                    $message = sprintf('Key "%s" in object with ArrayAccess of class "%s" does not exist', $arrayItem, get_class($object));
-                } elseif (is_object($object)) {
-                    $message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface', $item, get_class($object));
-                } elseif (is_array($object)) {
-                    if (empty($object)) {
-                        $message = sprintf('Key "%s" does not exist as the array is empty', $arrayItem);
-                    } else {
-                        $message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object)));
-                    }
-                } elseif (self::ARRAY_CALL === $type) {
-                    if (null === $object) {
-                        $message = sprintf('Impossible to access a key ("%s") on a null variable', $item);
-                    } else {
-                        $message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
-                    }
-                } elseif (null === $object) {
-                    $message = sprintf('Impossible to access an attribute ("%s") on a null variable', $item);
-                } else {
-                    $message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
-                }
-
-                throw new Twig_Error_Runtime($message, -1, $this->getTemplateName());
-            }
-        }
-
-        if (!is_object($object)) {
-            if ($isDefinedTest) {
-                return false;
-            }
-
-            if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-                return;
-            }
-
-            if (null === $object) {
-                $message = sprintf('Impossible to invoke a method ("%s") on a null variable', $item);
-            } else {
-                $message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
-            }
-
-            throw new Twig_Error_Runtime($message, -1, $this->getTemplateName());
-        }
-
-        // object property
-        if (self::METHOD_CALL !== $type && !$object instanceof self) { // Twig_Template does not have public properties, and we don't want to allow access to internal ones
-            if (isset($object->$item) || array_key_exists((string) $item, $object)) {
-                if ($isDefinedTest) {
-                    return true;
-                }
-
-                if ($this->env->hasExtension('sandbox')) {
-                    $this->env->getExtension('sandbox')->checkPropertyAllowed($object, $item);
-                }
-
-                return $object->$item;
-            }
-        }
-
-        $class = get_class($object);
-
-        // object method
-        if (!isset(self::$cache[$class]['methods'])) {
-            // get_class_methods returns all methods accessible in the scope, but we only want public ones to be accessible in templates
-            if ($object instanceof self) {
-                $ref = new ReflectionClass($class);
-                $methods = array();
-
-                foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $refMethod) {
-                    $methodName = strtolower($refMethod->name);
-
-                    // Accessing the environment from templates is forbidden to prevent untrusted changes to the environment
-                    if ('getenvironment' !== $methodName) {
-                        $methods[$methodName] = true;
-                    }
-                }
-
-                self::$cache[$class]['methods'] = $methods;
-            } else {
-                self::$cache[$class]['methods'] = array_change_key_case(array_flip(get_class_methods($object)));
-            }
-        }
-
-        $call = false;
-        $lcItem = strtolower($item);
-        if (isset(self::$cache[$class]['methods'][$lcItem])) {
-            $method = (string) $item;
-        } elseif (isset(self::$cache[$class]['methods']['get'.$lcItem])) {
-            $method = 'get'.$item;
-        } elseif (isset(self::$cache[$class]['methods']['is'.$lcItem])) {
-            $method = 'is'.$item;
-        } elseif (isset(self::$cache[$class]['methods']['__call'])) {
-            $method = (string) $item;
-            $call = true;
-        } else {
-            if ($isDefinedTest) {
-                return false;
-            }
-
-            if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
-                return;
-            }
-
-            throw new Twig_Error_Runtime(sprintf('Method "%s" for object "%s" does not exist', $item, get_class($object)), -1, $this->getTemplateName());
-        }
-
-        if ($isDefinedTest) {
-            return true;
-        }
-
-        if ($this->env->hasExtension('sandbox')) {
-            $this->env->getExtension('sandbox')->checkMethodAllowed($object, $method);
-        }
-
-        // Some objects throw exceptions when they have __call, and the method we try
-        // to call is not supported. If ignoreStrictCheck is true, we should return null.
-        try {
-            $ret = call_user_func_array(array($object, $method), $arguments);
-        } catch (BadMethodCallException $e) {
-            if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) {
-                return;
-            }
-            throw $e;
-        }
-
-        // useful when calling a template method from a template
-        // this is not supported but unfortunately heavily used in the Symfony profiler
-        if ($object instanceof Twig_TemplateInterface) {
-            return $ret === '' ? '' : new Twig_Markup($ret, $this->env->getCharset());
-        }
-
-        return $ret;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TemplateInterface.php b/vendor/twig/twig/lib/Twig/TemplateInterface.php
deleted file mode 100644
index 3274640..0000000
--- a/vendor/twig/twig/lib/Twig/TemplateInterface.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interface implemented by all compiled templates.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 3.0)
- */
-interface Twig_TemplateInterface
-{
-    const ANY_CALL = 'any';
-    const ARRAY_CALL = 'array';
-    const METHOD_CALL = 'method';
-
-    /**
-     * Renders the template with the given context and returns it as string.
-     *
-     * @param array $context An array of parameters to pass to the template
-     *
-     * @return string The rendered template
-     */
-    public function render(array $context);
-
-    /**
-     * Displays the template with the given context.
-     *
-     * @param array $context An array of parameters to pass to the template
-     * @param array $blocks  An array of blocks to pass to the template
-     */
-    public function display(array $context, array $blocks = array());
-
-    /**
-     * Returns the bound environment for this template.
-     *
-     * @return Twig_Environment The current environment
-     */
-    public function getEnvironment();
-}
diff --git a/vendor/twig/twig/lib/Twig/Test.php b/vendor/twig/twig/lib/Twig/Test.php
deleted file mode 100644
index 3c2d859..0000000
--- a/vendor/twig/twig/lib/Twig/Test.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Test class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleTest instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-abstract class Twig_Test implements Twig_TestInterface, Twig_TestCallableInterface
-{
-    protected $options;
-    protected $arguments = array();
-
-    public function __construct(array $options = array())
-    {
-        $this->options = array_merge(array(
-            'callable' => null,
-        ), $options);
-    }
-
-    public function getCallable()
-    {
-        return $this->options['callable'];
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test/Function.php b/vendor/twig/twig/lib/Twig/Test/Function.php
deleted file mode 100644
index 5e76c71..0000000
--- a/vendor/twig/twig/lib/Twig/Test/Function.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Test_Function class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleTest instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a function template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Test_Function extends Twig_Test
-{
-    protected $function;
-
-    public function __construct($function, array $options = array())
-    {
-        $options['callable'] = $function;
-
-        parent::__construct($options);
-
-        $this->function = $function;
-    }
-
-    public function compile()
-    {
-        return $this->function;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php b/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php
deleted file mode 100644
index 45ca7dc..0000000
--- a/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php
+++ /dev/null
@@ -1,232 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Integration test helper.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Karma Dordrak <drak@zikula.org>
- */
-abstract class Twig_Test_IntegrationTestCase extends PHPUnit_Framework_TestCase
-{
-    /**
-     * @return string
-     */
-    abstract protected function getFixturesDir();
-
-    /**
-     * @return Twig_ExtensionInterface[]
-     */
-    protected function getExtensions()
-    {
-        return array();
-    }
-
-    /**
-     * @return Twig_SimpleFilter[]
-     */
-    protected function getTwigFilters()
-    {
-        return array();
-    }
-
-    /**
-     * @return Twig_SimpleFunction[]
-     */
-    protected function getTwigFunctions()
-    {
-        return array();
-    }
-
-    /**
-     * @return Twig_SimpleTest[]
-     */
-    protected function getTwigTests()
-    {
-        return array();
-    }
-
-    /**
-     * @dataProvider getTests
-     */
-    public function testIntegration($file, $message, $condition, $templates, $exception, $outputs)
-    {
-        $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs);
-    }
-
-    /**
-     * @dataProvider getLegacyTests
-     * @group legacy
-     */
-    public function testLegacyIntegration($file, $message, $condition, $templates, $exception, $outputs)
-    {
-        $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs);
-    }
-
-    public function getTests($name, $legacyTests = false)
-    {
-        $fixturesDir = realpath($this->getFixturesDir());
-        $tests = array();
-
-        foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($fixturesDir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
-            if (!preg_match('/\.test$/', $file)) {
-                continue;
-            }
-
-            if ($legacyTests xor false !== strpos($file->getRealpath(), '.legacy.test')) {
-                continue;
-            }
-
-            $test = file_get_contents($file->getRealpath());
-
-            if (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)\s*(?:--DATA--\s*(.*))?\s*--EXCEPTION--\s*(.*)/sx', $test, $match)) {
-                $message = $match[1];
-                $condition = $match[2];
-                $templates = self::parseTemplates($match[3]);
-                $exception = $match[5];
-                $outputs = array(array(null, $match[4], null, ''));
-            } elseif (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)--DATA--.*?--EXPECT--.*/s', $test, $match)) {
-                $message = $match[1];
-                $condition = $match[2];
-                $templates = self::parseTemplates($match[3]);
-                $exception = false;
-                preg_match_all('/--DATA--(.*?)(?:--CONFIG--(.*?))?--EXPECT--(.*?)(?=\-\-DATA\-\-|$)/s', $test, $outputs, PREG_SET_ORDER);
-            } else {
-                throw new InvalidArgumentException(sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file)));
-            }
-
-            $tests[] = array(str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs);
-        }
-
-        if ($legacyTests && empty($tests)) {
-            // add a dummy test to avoid a PHPUnit message
-            return array(array('not', '-', '', array(), '', array()));
-        }
-
-        return $tests;
-    }
-
-    public function getLegacyTests()
-    {
-        return $this->getTests('testLegacyIntegration', true);
-    }
-
-    protected function doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs)
-    {
-        if ($condition) {
-            eval('$ret = '.$condition.';');
-            if (!$ret) {
-                $this->markTestSkipped($condition);
-            }
-        }
-
-        $loader = new Twig_Loader_Array($templates);
-
-        foreach ($outputs as $i => $match) {
-            $config = array_merge(array(
-                'cache' => false,
-                'strict_variables' => true,
-            ), $match[2] ? eval($match[2].';') : array());
-            $twig = new Twig_Environment($loader, $config);
-            $twig->addGlobal('global', 'global');
-            foreach ($this->getExtensions() as $extension) {
-                $twig->addExtension($extension);
-            }
-
-            foreach ($this->getTwigFilters() as $filter) {
-                $twig->addFilter($filter);
-            }
-
-            foreach ($this->getTwigTests() as $test) {
-                $twig->addTest($test);
-            }
-
-            foreach ($this->getTwigFunctions() as $function) {
-                $twig->addFunction($function);
-            }
-
-            // avoid using the same PHP class name for different cases
-            // only for PHP 5.2+
-            if (PHP_VERSION_ID >= 50300) {
-                $p = new ReflectionProperty($twig, 'templateClassPrefix');
-                $p->setAccessible(true);
-                $p->setValue($twig, '__TwigTemplate_'.hash('sha256', uniqid(mt_rand(), true), false).'_');
-            }
-
-            try {
-                $template = $twig->loadTemplate('index.twig');
-            } catch (Exception $e) {
-                if (false !== $exception) {
-                    $message = $e->getMessage();
-                    $this->assertSame(trim($exception), trim(sprintf('%s: %s', get_class($e), $message)));
-                    $this->assertSame('.', substr($message, strlen($message) - 1), $message, 'Exception message must end with a dot.');
-
-                    return;
-                }
-
-                if ($e instanceof Twig_Error_Syntax) {
-                    $e->setTemplateFile($file);
-
-                    throw $e;
-                }
-
-                throw new Twig_Error(sprintf('%s: %s', get_class($e), $e->getMessage()), -1, $file, $e);
-            }
-
-            try {
-                $output = trim($template->render(eval($match[1].';')), "\n ");
-            } catch (Exception $e) {
-                if (false !== $exception) {
-                    $this->assertSame(trim($exception), trim(sprintf('%s: %s', get_class($e), $e->getMessage())));
-
-                    return;
-                }
-
-                if ($e instanceof Twig_Error_Syntax) {
-                    $e->setTemplateFile($file);
-                } else {
-                    $e = new Twig_Error(sprintf('%s: %s', get_class($e), $e->getMessage()), -1, $file, $e);
-                }
-
-                $output = trim(sprintf('%s: %s', get_class($e), $e->getMessage()));
-            }
-
-            if (false !== $exception) {
-                list($class) = explode(':', $exception);
-                $this->assertThat(null, new PHPUnit_Framework_Constraint_Exception($class));
-            }
-
-            $expected = trim($match[3], "\n ");
-
-            if ($expected !== $output) {
-                printf("Compiled templates that failed on case %d:\n", $i + 1);
-
-                foreach (array_keys($templates) as $name) {
-                    echo "Template: $name\n";
-                    $source = $loader->getSource($name);
-                    echo $twig->compile($twig->parse($twig->tokenize($source, $name)));
-                }
-            }
-            $this->assertEquals($expected, $output, $message.' (in '.$file.')');
-        }
-    }
-
-    protected static function parseTemplates($test)
-    {
-        $templates = array();
-        preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $test, $matches, PREG_SET_ORDER);
-        foreach ($matches as $match) {
-            $templates[($match[1] ? $match[1] : 'index.twig')] = $match[2];
-        }
-
-        return $templates;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test/Method.php b/vendor/twig/twig/lib/Twig/Test/Method.php
deleted file mode 100644
index 2779986..0000000
--- a/vendor/twig/twig/lib/Twig/Test/Method.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Test_Method class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleTest instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a method template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Test_Method extends Twig_Test
-{
-    protected $extension;
-    protected $method;
-
-    public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array())
-    {
-        $options['callable'] = array($extension, $method);
-
-        parent::__construct($options);
-
-        $this->extension = $extension;
-        $this->method = $method;
-    }
-
-    public function compile()
-    {
-        return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method);
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test/Node.php b/vendor/twig/twig/lib/Twig/Test/Node.php
deleted file mode 100644
index baef49c..0000000
--- a/vendor/twig/twig/lib/Twig/Test/Node.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Test_Node class is deprecated since version 1.12 and will be removed in 2.0.', E_USER_DEPRECATED);
-
-/**
- * Represents a template test as a Node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Test_Node extends Twig_Test
-{
-    protected $class;
-
-    public function __construct($class, array $options = array())
-    {
-        parent::__construct($options);
-
-        $this->class = $class;
-    }
-
-    public function getClass()
-    {
-        return $this->class;
-    }
-
-    public function compile()
-    {
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php b/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php
deleted file mode 100644
index e591c1d..0000000
--- a/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-abstract class Twig_Test_NodeTestCase extends PHPUnit_Framework_TestCase
-{
-    abstract public function getTests();
-
-    /**
-     * @dataProvider getTests
-     */
-    public function testCompile($node, $source, $environment = null, $isPattern = false)
-    {
-        $this->assertNodeCompilation($source, $node, $environment, $isPattern);
-    }
-
-    public function assertNodeCompilation($source, Twig_Node $node, Twig_Environment $environment = null, $isPattern = false)
-    {
-        $compiler = $this->getCompiler($environment);
-        $compiler->compile($node);
-
-        if ($isPattern) {
-            $this->assertStringMatchesFormat($source, trim($compiler->getSource()));
-        } else {
-            $this->assertEquals($source, trim($compiler->getSource()));
-        }
-    }
-
-    protected function getCompiler(Twig_Environment $environment = null)
-    {
-        return new Twig_Compiler(null === $environment ? $this->getEnvironment() : $environment);
-    }
-
-    protected function getEnvironment()
-    {
-        return new Twig_Environment(new Twig_Loader_Array(array()));
-    }
-
-    protected function getVariableGetter($name, $line = false)
-    {
-        $line = $line > 0 ? "// line {$line}\n" : '';
-
-        if (PHP_VERSION_ID >= 50400) {
-            return sprintf('%s(isset($context["%s"]) ? $context["%s"] : null)', $line, $name, $name);
-        }
-
-        return sprintf('%s$this->getContext($context, "%s")', $line, $name);
-    }
-
-    protected function getAttributeGetter()
-    {
-        if (function_exists('twig_template_get_attributes')) {
-            return 'twig_template_get_attributes($this, ';
-        }
-
-        return '$this->getAttribute(';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TestCallableInterface.php b/vendor/twig/twig/lib/Twig/TestCallableInterface.php
deleted file mode 100644
index 98d3457..0000000
--- a/vendor/twig/twig/lib/Twig/TestCallableInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a callable template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_TestCallableInterface
-{
-    public function getCallable();
-}
diff --git a/vendor/twig/twig/lib/Twig/TestInterface.php b/vendor/twig/twig/lib/Twig/TestInterface.php
deleted file mode 100644
index 2fa821c..0000000
--- a/vendor/twig/twig/lib/Twig/TestInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_TestInterface
-{
-    /**
-     * Compiles a test.
-     *
-     * @return string The PHP code for the test
-     */
-    public function compile();
-}
diff --git a/vendor/twig/twig/lib/Twig/Token.php b/vendor/twig/twig/lib/Twig/Token.php
deleted file mode 100644
index a0a029b..0000000
--- a/vendor/twig/twig/lib/Twig/Token.php
+++ /dev/null
@@ -1,216 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a Token.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Token
-{
-    protected $value;
-    protected $type;
-    protected $lineno;
-
-    const EOF_TYPE = -1;
-    const TEXT_TYPE = 0;
-    const BLOCK_START_TYPE = 1;
-    const VAR_START_TYPE = 2;
-    const BLOCK_END_TYPE = 3;
-    const VAR_END_TYPE = 4;
-    const NAME_TYPE = 5;
-    const NUMBER_TYPE = 6;
-    const STRING_TYPE = 7;
-    const OPERATOR_TYPE = 8;
-    const PUNCTUATION_TYPE = 9;
-    const INTERPOLATION_START_TYPE = 10;
-    const INTERPOLATION_END_TYPE = 11;
-
-    /**
-     * Constructor.
-     *
-     * @param int    $type   The type of the token
-     * @param string $value  The token value
-     * @param int    $lineno The line position in the source
-     */
-    public function __construct($type, $value, $lineno)
-    {
-        $this->type = $type;
-        $this->value = $value;
-        $this->lineno = $lineno;
-    }
-
-    /**
-     * Returns a string representation of the token.
-     *
-     * @return string A string representation of the token
-     */
-    public function __toString()
-    {
-        return sprintf('%s(%s)', self::typeToString($this->type, true), $this->value);
-    }
-
-    /**
-     * Tests the current token for a type and/or a value.
-     *
-     * Parameters may be:
-     * * just type
-     * * type and value (or array of possible values)
-     * * just value (or array of possible values) (NAME_TYPE is used as type)
-     *
-     * @param array|int         $type   The type to test
-     * @param array|string|null $values The token value
-     *
-     * @return bool
-     */
-    public function test($type, $values = null)
-    {
-        if (null === $values && !is_int($type)) {
-            $values = $type;
-            $type = self::NAME_TYPE;
-        }
-
-        return ($this->type === $type) && (
-            null === $values ||
-            (is_array($values) && in_array($this->value, $values)) ||
-            $this->value == $values
-        );
-    }
-
-    /**
-     * Gets the line.
-     *
-     * @return int The source line
-     */
-    public function getLine()
-    {
-        return $this->lineno;
-    }
-
-    /**
-     * Gets the token type.
-     *
-     * @return int The token type
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * Gets the token value.
-     *
-     * @return string The token value
-     */
-    public function getValue()
-    {
-        return $this->value;
-    }
-
-    /**
-     * Returns the constant representation (internal) of a given type.
-     *
-     * @param int  $type  The type as an integer
-     * @param bool $short Whether to return a short representation or not
-     *
-     * @return string The string representation
-     */
-    public static function typeToString($type, $short = false)
-    {
-        switch ($type) {
-            case self::EOF_TYPE:
-                $name = 'EOF_TYPE';
-                break;
-            case self::TEXT_TYPE:
-                $name = 'TEXT_TYPE';
-                break;
-            case self::BLOCK_START_TYPE:
-                $name = 'BLOCK_START_TYPE';
-                break;
-            case self::VAR_START_TYPE:
-                $name = 'VAR_START_TYPE';
-                break;
-            case self::BLOCK_END_TYPE:
-                $name = 'BLOCK_END_TYPE';
-                break;
-            case self::VAR_END_TYPE:
-                $name = 'VAR_END_TYPE';
-                break;
-            case self::NAME_TYPE:
-                $name = 'NAME_TYPE';
-                break;
-            case self::NUMBER_TYPE:
-                $name = 'NUMBER_TYPE';
-                break;
-            case self::STRING_TYPE:
-                $name = 'STRING_TYPE';
-                break;
-            case self::OPERATOR_TYPE:
-                $name = 'OPERATOR_TYPE';
-                break;
-            case self::PUNCTUATION_TYPE:
-                $name = 'PUNCTUATION_TYPE';
-                break;
-            case self::INTERPOLATION_START_TYPE:
-                $name = 'INTERPOLATION_START_TYPE';
-                break;
-            case self::INTERPOLATION_END_TYPE:
-                $name = 'INTERPOLATION_END_TYPE';
-                break;
-            default:
-                throw new LogicException(sprintf('Token of type "%s" does not exist.', $type));
-        }
-
-        return $short ? $name : 'Twig_Token::'.$name;
-    }
-
-    /**
-     * Returns the english representation of a given type.
-     *
-     * @param int $type The type as an integer
-     *
-     * @return string The string representation
-     */
-    public static function typeToEnglish($type)
-    {
-        switch ($type) {
-            case self::EOF_TYPE:
-                return 'end of template';
-            case self::TEXT_TYPE:
-                return 'text';
-            case self::BLOCK_START_TYPE:
-                return 'begin of statement block';
-            case self::VAR_START_TYPE:
-                return 'begin of print statement';
-            case self::BLOCK_END_TYPE:
-                return 'end of statement block';
-            case self::VAR_END_TYPE:
-                return 'end of print statement';
-            case self::NAME_TYPE:
-                return 'name';
-            case self::NUMBER_TYPE:
-                return 'number';
-            case self::STRING_TYPE:
-                return 'string';
-            case self::OPERATOR_TYPE:
-                return 'operator';
-            case self::PUNCTUATION_TYPE:
-                return 'punctuation';
-            case self::INTERPOLATION_START_TYPE:
-                return 'begin of string interpolation';
-            case self::INTERPOLATION_END_TYPE:
-                return 'end of string interpolation';
-            default:
-                throw new LogicException(sprintf('Token of type "%s" does not exist.', $type));
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser.php b/vendor/twig/twig/lib/Twig/TokenParser.php
deleted file mode 100644
index fa9b6d8..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Base class for all token parsers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Twig_TokenParser implements Twig_TokenParserInterface
-{
-    /**
-     * @var Twig_Parser
-     */
-    protected $parser;
-
-    /**
-     * Sets the parser associated with this token parser.
-     *
-     * @param Twig_Parser $parser A Twig_Parser instance
-     */
-    public function setParser(Twig_Parser $parser)
-    {
-        $this->parser = $parser;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/AutoEscape.php b/vendor/twig/twig/lib/Twig/TokenParser/AutoEscape.php
deleted file mode 100644
index c753e62..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/AutoEscape.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Marks a section of a template to be escaped or not.
- *
- * <pre>
- * {% autoescape true %}
- *   Everything will be automatically escaped in this block
- * {% endautoescape %}
- *
- * {% autoescape false %}
- *   Everything will be outputed as is in this block
- * {% endautoescape %}
- *
- * {% autoescape true js %}
- *   Everything will be automatically escaped in this block
- *   using the js escaping strategy
- * {% endautoescape %}
- * </pre>
- */
-class Twig_TokenParser_AutoEscape extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-
-        if ($stream->test(Twig_Token::BLOCK_END_TYPE)) {
-            $value = 'html';
-        } else {
-            $expr = $this->parser->getExpressionParser()->parseExpression();
-            if (!$expr instanceof Twig_Node_Expression_Constant) {
-                throw new Twig_Error_Syntax('An escaping strategy must be a string or a bool.', $stream->getCurrent()->getLine(), $stream->getFilename());
-            }
-            $value = $expr->getAttribute('value');
-
-            $compat = true === $value || false === $value;
-
-            if (true === $value) {
-                $value = 'html';
-            }
-
-            if ($compat && $stream->test(Twig_Token::NAME_TYPE)) {
-                @trigger_error('Using the autoescape tag with "true" or "false" before the strategy name is deprecated.', E_USER_DEPRECATED);
-
-                if (false === $value) {
-                    throw new Twig_Error_Syntax('Unexpected escaping strategy as you set autoescaping to false.', $stream->getCurrent()->getLine(), $stream->getFilename());
-                }
-
-                $value = $stream->next()->getValue();
-            }
-        }
-
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-        return new Twig_Node_AutoEscape($value, $body, $lineno, $this->getTag());
-    }
-
-    public function decideBlockEnd(Twig_Token $token)
-    {
-        return $token->test('endautoescape');
-    }
-
-    public function getTag()
-    {
-        return 'autoescape';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Block.php b/vendor/twig/twig/lib/Twig/TokenParser/Block.php
deleted file mode 100644
index 4ffafbe..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Block.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Marks a section of a template as being reusable.
- *
- * <pre>
- *  {% block head %}
- *    <link rel="stylesheet" href="style.css" />
- *    <title>{% block title %}{% endblock %} - My Webpage</title>
- *  {% endblock %}
- * </pre>
- */
-class Twig_TokenParser_Block extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-        $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
-        if ($this->parser->hasBlock($name)) {
-            throw new Twig_Error_Syntax(sprintf("The block '%s' has already been defined line %d.", $name, $this->parser->getBlock($name)->getLine()), $stream->getCurrent()->getLine(), $stream->getFilename());
-        }
-        $this->parser->setBlock($name, $block = new Twig_Node_Block($name, new Twig_Node(array()), $lineno));
-        $this->parser->pushLocalScope();
-        $this->parser->pushBlockStack($name);
-
-        if ($stream->nextIf(Twig_Token::BLOCK_END_TYPE)) {
-            $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
-            if ($token = $stream->nextIf(Twig_Token::NAME_TYPE)) {
-                $value = $token->getValue();
-
-                if ($value != $name) {
-                    throw new Twig_Error_Syntax(sprintf('Expected endblock for block "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getFilename());
-                }
-            }
-        } else {
-            $body = new Twig_Node(array(
-                new Twig_Node_Print($this->parser->getExpressionParser()->parseExpression(), $lineno),
-            ));
-        }
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-        $block->setNode('body', $body);
-        $this->parser->popBlockStack();
-        $this->parser->popLocalScope();
-
-        return new Twig_Node_BlockReference($name, $lineno, $this->getTag());
-    }
-
-    public function decideBlockEnd(Twig_Token $token)
-    {
-        return $token->test('endblock');
-    }
-
-    public function getTag()
-    {
-        return 'block';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Do.php b/vendor/twig/twig/lib/Twig/TokenParser/Do.php
deleted file mode 100644
index 7adb5a0..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Do.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Evaluates an expression, discarding the returned value.
- */
-class Twig_TokenParser_Do extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $expr = $this->parser->getExpressionParser()->parseExpression();
-
-        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
-
-        return new Twig_Node_Do($expr, $token->getLine(), $this->getTag());
-    }
-
-    public function getTag()
-    {
-        return 'do';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Embed.php b/vendor/twig/twig/lib/Twig/TokenParser/Embed.php
deleted file mode 100644
index e685b95..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Embed.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2012 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Embeds a template.
- */
-class Twig_TokenParser_Embed extends Twig_TokenParser_Include
-{
-    public function parse(Twig_Token $token)
-    {
-        $stream = $this->parser->getStream();
-
-        $parent = $this->parser->getExpressionParser()->parseExpression();
-
-        list($variables, $only, $ignoreMissing) = $this->parseArguments();
-
-        // inject a fake parent to make the parent() function work
-        $stream->injectTokens(array(
-            new Twig_Token(Twig_Token::BLOCK_START_TYPE, '', $token->getLine()),
-            new Twig_Token(Twig_Token::NAME_TYPE, 'extends', $token->getLine()),
-            new Twig_Token(Twig_Token::STRING_TYPE, '__parent__', $token->getLine()),
-            new Twig_Token(Twig_Token::BLOCK_END_TYPE, '', $token->getLine()),
-        ));
-
-        $module = $this->parser->parse($stream, array($this, 'decideBlockEnd'), true);
-
-        // override the parent with the correct one
-        $module->setNode('parent', $parent);
-
-        $this->parser->embedTemplate($module);
-
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-        return new Twig_Node_Embed($module->getAttribute('filename'), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag());
-    }
-
-    public function decideBlockEnd(Twig_Token $token)
-    {
-        return $token->test('endembed');
-    }
-
-    public function getTag()
-    {
-        return 'embed';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Extends.php b/vendor/twig/twig/lib/Twig/TokenParser/Extends.php
deleted file mode 100644
index 510417a..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Extends.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Extends a template by another one.
- *
- * <pre>
- *  {% extends "base.html" %}
- * </pre>
- */
-class Twig_TokenParser_Extends extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        if (!$this->parser->isMainScope()) {
-            throw new Twig_Error_Syntax('Cannot extend from a block.', $token->getLine(), $this->parser->getFilename());
-        }
-
-        if (null !== $this->parser->getParent()) {
-            throw new Twig_Error_Syntax('Multiple extends tags are forbidden.', $token->getLine(), $this->parser->getFilename());
-        }
-        $this->parser->setParent($this->parser->getExpressionParser()->parseExpression());
-
-        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
-    }
-
-    public function getTag()
-    {
-        return 'extends';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Filter.php b/vendor/twig/twig/lib/Twig/TokenParser/Filter.php
deleted file mode 100644
index b20dd5b..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Filter.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Filters a section of a template by applying filters.
- *
- * <pre>
- * {% filter upper %}
- *  This text becomes uppercase
- * {% endfilter %}
- * </pre>
- */
-class Twig_TokenParser_Filter extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $name = $this->parser->getVarName();
-        $ref = new Twig_Node_Expression_BlockReference(new Twig_Node_Expression_Constant($name, $token->getLine()), true, $token->getLine(), $this->getTag());
-
-        $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag());
-        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
-
-        $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
-        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
-
-        $block = new Twig_Node_Block($name, $body, $token->getLine());
-        $this->parser->setBlock($name, $block);
-
-        return new Twig_Node_Print($filter, $token->getLine(), $this->getTag());
-    }
-
-    public function decideBlockEnd(Twig_Token $token)
-    {
-        return $token->test('endfilter');
-    }
-
-    public function getTag()
-    {
-        return 'filter';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Flush.php b/vendor/twig/twig/lib/Twig/TokenParser/Flush.php
deleted file mode 100644
index f9ce7c3..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Flush.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Flushes the output to the client.
- *
- * @see flush()
- */
-class Twig_TokenParser_Flush extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
-
-        return new Twig_Node_Flush($token->getLine(), $this->getTag());
-    }
-
-    public function getTag()
-    {
-        return 'flush';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/For.php b/vendor/twig/twig/lib/Twig/TokenParser/For.php
deleted file mode 100644
index 3fac511..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/For.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Loops over each item of a sequence.
- *
- * <pre>
- * <ul>
- *  {% for user in users %}
- *    <li>{{ user.username|e }}</li>
- *  {% endfor %}
- * </ul>
- * </pre>
- */
-class Twig_TokenParser_For extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-        $targets = $this->parser->getExpressionParser()->parseAssignmentExpression();
-        $stream->expect(Twig_Token::OPERATOR_TYPE, 'in');
-        $seq = $this->parser->getExpressionParser()->parseExpression();
-
-        $ifexpr = null;
-        if ($stream->nextIf(Twig_Token::NAME_TYPE, 'if')) {
-            $ifexpr = $this->parser->getExpressionParser()->parseExpression();
-        }
-
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse(array($this, 'decideForFork'));
-        if ($stream->next()->getValue() == 'else') {
-            $stream->expect(Twig_Token::BLOCK_END_TYPE);
-            $else = $this->parser->subparse(array($this, 'decideForEnd'), true);
-        } else {
-            $else = null;
-        }
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-        if (count($targets) > 1) {
-            $keyTarget = $targets->getNode(0);
-            $keyTarget = new Twig_Node_Expression_AssignName($keyTarget->getAttribute('name'), $keyTarget->getLine());
-            $valueTarget = $targets->getNode(1);
-            $valueTarget = new Twig_Node_Expression_AssignName($valueTarget->getAttribute('name'), $valueTarget->getLine());
-        } else {
-            $keyTarget = new Twig_Node_Expression_AssignName('_key', $lineno);
-            $valueTarget = $targets->getNode(0);
-            $valueTarget = new Twig_Node_Expression_AssignName($valueTarget->getAttribute('name'), $valueTarget->getLine());
-        }
-
-        if ($ifexpr) {
-            $this->checkLoopUsageCondition($stream, $ifexpr);
-            $this->checkLoopUsageBody($stream, $body);
-        }
-
-        return new Twig_Node_For($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, $lineno, $this->getTag());
-    }
-
-    public function decideForFork(Twig_Token $token)
-    {
-        return $token->test(array('else', 'endfor'));
-    }
-
-    public function decideForEnd(Twig_Token $token)
-    {
-        return $token->test('endfor');
-    }
-
-    // the loop variable cannot be used in the condition
-    protected function checkLoopUsageCondition(Twig_TokenStream $stream, Twig_NodeInterface $node)
-    {
-        if ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name && 'loop' == $node->getNode('node')->getAttribute('name')) {
-            throw new Twig_Error_Syntax('The "loop" variable cannot be used in a looping condition.', $node->getLine(), $stream->getFilename());
-        }
-
-        foreach ($node as $n) {
-            if (!$n) {
-                continue;
-            }
-
-            $this->checkLoopUsageCondition($stream, $n);
-        }
-    }
-
-    // check usage of non-defined loop-items
-    // it does not catch all problems (for instance when a for is included into another or when the variable is used in an include)
-    protected function checkLoopUsageBody(Twig_TokenStream $stream, Twig_NodeInterface $node)
-    {
-        if ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name && 'loop' == $node->getNode('node')->getAttribute('name')) {
-            $attribute = $node->getNode('attribute');
-            if ($attribute instanceof Twig_Node_Expression_Constant && in_array($attribute->getAttribute('value'), array('length', 'revindex0', 'revindex', 'last'))) {
-                throw new Twig_Error_Syntax(sprintf('The "loop.%s" variable is not defined when looping with a condition.', $attribute->getAttribute('value')), $node->getLine(), $stream->getFilename());
-            }
-        }
-
-        // should check for parent.loop.XXX usage
-        if ($node instanceof Twig_Node_For) {
-            return;
-        }
-
-        foreach ($node as $n) {
-            if (!$n) {
-                continue;
-            }
-
-            $this->checkLoopUsageBody($stream, $n);
-        }
-    }
-
-    public function getTag()
-    {
-        return 'for';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/From.php b/vendor/twig/twig/lib/Twig/TokenParser/From.php
deleted file mode 100644
index f7547eb..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/From.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Imports macros.
- *
- * <pre>
- *   {% from 'forms.html' import forms %}
- * </pre>
- */
-class Twig_TokenParser_From extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $macro = $this->parser->getExpressionParser()->parseExpression();
-        $stream = $this->parser->getStream();
-        $stream->expect('import');
-
-        $targets = array();
-        do {
-            $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
-
-            $alias = $name;
-            if ($stream->nextIf('as')) {
-                $alias = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
-            }
-
-            $targets[$name] = $alias;
-
-            if (!$stream->nextIf(Twig_Token::PUNCTUATION_TYPE, ',')) {
-                break;
-            }
-        } while (true);
-
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-        $node = new Twig_Node_Import($macro, new Twig_Node_Expression_AssignName($this->parser->getVarName(), $token->getLine()), $token->getLine(), $this->getTag());
-
-        foreach ($targets as $name => $alias) {
-            if ($this->parser->isReservedMacroName($name)) {
-                throw new Twig_Error_Syntax(sprintf('"%s" cannot be an imported macro as it is a reserved keyword.', $name), $token->getLine(), $stream->getFilename());
-            }
-
-            $this->parser->addImportedSymbol('function', $alias, 'get'.$name, $node->getNode('var'));
-        }
-
-        return $node;
-    }
-
-    public function getTag()
-    {
-        return 'from';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/If.php b/vendor/twig/twig/lib/Twig/TokenParser/If.php
deleted file mode 100644
index 91c0604..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/If.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Tests a condition.
- *
- * <pre>
- * {% if users %}
- *  <ul>
- *    {% for user in users %}
- *      <li>{{ user.username|e }}</li>
- *    {% endfor %}
- *  </ul>
- * {% endif %}
- * </pre>
- */
-class Twig_TokenParser_If extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $lineno = $token->getLine();
-        $expr = $this->parser->getExpressionParser()->parseExpression();
-        $stream = $this->parser->getStream();
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse(array($this, 'decideIfFork'));
-        $tests = array($expr, $body);
-        $else = null;
-
-        $end = false;
-        while (!$end) {
-            switch ($stream->next()->getValue()) {
-                case 'else':
-                    $stream->expect(Twig_Token::BLOCK_END_TYPE);
-                    $else = $this->parser->subparse(array($this, 'decideIfEnd'));
-                    break;
-
-                case 'elseif':
-                    $expr = $this->parser->getExpressionParser()->parseExpression();
-                    $stream->expect(Twig_Token::BLOCK_END_TYPE);
-                    $body = $this->parser->subparse(array($this, 'decideIfFork'));
-                    $tests[] = $expr;
-                    $tests[] = $body;
-                    break;
-
-                case 'endif':
-                    $end = true;
-                    break;
-
-                default:
-                    throw new Twig_Error_Syntax(sprintf('Unexpected end of template. Twig was looking for the following tags "else", "elseif", or "endif" to close the "if" block started at line %d).', $lineno), $stream->getCurrent()->getLine(), $stream->getFilename());
-            }
-        }
-
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-        return new Twig_Node_If(new Twig_Node($tests), $else, $lineno, $this->getTag());
-    }
-
-    public function decideIfFork(Twig_Token $token)
-    {
-        return $token->test(array('elseif', 'else', 'endif'));
-    }
-
-    public function decideIfEnd(Twig_Token $token)
-    {
-        return $token->test(array('endif'));
-    }
-
-    public function getTag()
-    {
-        return 'if';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Import.php b/vendor/twig/twig/lib/Twig/TokenParser/Import.php
deleted file mode 100644
index 85c5c03..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Import.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Imports macros.
- *
- * <pre>
- *   {% import 'forms.html' as forms %}
- * </pre>
- */
-class Twig_TokenParser_Import extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $macro = $this->parser->getExpressionParser()->parseExpression();
-        $this->parser->getStream()->expect('as');
-        $var = new Twig_Node_Expression_AssignName($this->parser->getStream()->expect(Twig_Token::NAME_TYPE)->getValue(), $token->getLine());
-        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
-
-        $this->parser->addImportedSymbol('template', $var->getAttribute('name'));
-
-        return new Twig_Node_Import($macro, $var, $token->getLine(), $this->getTag());
-    }
-
-    public function getTag()
-    {
-        return 'import';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Include.php b/vendor/twig/twig/lib/Twig/TokenParser/Include.php
deleted file mode 100644
index 0e76dae..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Include.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Includes a template.
- *
- * <pre>
- *   {% include 'header.html' %}
- *     Body
- *   {% include 'footer.html' %}
- * </pre>
- */
-class Twig_TokenParser_Include extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $expr = $this->parser->getExpressionParser()->parseExpression();
-
-        list($variables, $only, $ignoreMissing) = $this->parseArguments();
-
-        return new Twig_Node_Include($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag());
-    }
-
-    protected function parseArguments()
-    {
-        $stream = $this->parser->getStream();
-
-        $ignoreMissing = false;
-        if ($stream->nextIf(Twig_Token::NAME_TYPE, 'ignore')) {
-            $stream->expect(Twig_Token::NAME_TYPE, 'missing');
-
-            $ignoreMissing = true;
-        }
-
-        $variables = null;
-        if ($stream->nextIf(Twig_Token::NAME_TYPE, 'with')) {
-            $variables = $this->parser->getExpressionParser()->parseExpression();
-        }
-
-        $only = false;
-        if ($stream->nextIf(Twig_Token::NAME_TYPE, 'only')) {
-            $only = true;
-        }
-
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-        return array($variables, $only, $ignoreMissing);
-    }
-
-    public function getTag()
-    {
-        return 'include';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Macro.php b/vendor/twig/twig/lib/Twig/TokenParser/Macro.php
deleted file mode 100644
index 8a7ebd6..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Macro.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Defines a macro.
- *
- * <pre>
- * {% macro input(name, value, type, size) %}
- *    <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
- * {% endmacro %}
- * </pre>
- */
-class Twig_TokenParser_Macro extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-        $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
-
-        $arguments = $this->parser->getExpressionParser()->parseArguments(true, true);
-
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-        $this->parser->pushLocalScope();
-        $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
-        if ($token = $stream->nextIf(Twig_Token::NAME_TYPE)) {
-            $value = $token->getValue();
-
-            if ($value != $name) {
-                throw new Twig_Error_Syntax(sprintf('Expected endmacro for macro "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getFilename());
-            }
-        }
-        $this->parser->popLocalScope();
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-        $this->parser->setMacro($name, new Twig_Node_Macro($name, new Twig_Node_Body(array($body)), $arguments, $lineno, $this->getTag()));
-    }
-
-    public function decideBlockEnd(Twig_Token $token)
-    {
-        return $token->test('endmacro');
-    }
-
-    public function getTag()
-    {
-        return 'macro';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Sandbox.php b/vendor/twig/twig/lib/Twig/TokenParser/Sandbox.php
deleted file mode 100644
index 1feadd0..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Sandbox.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Marks a section of a template as untrusted code that must be evaluated in the sandbox mode.
- *
- * <pre>
- * {% sandbox %}
- *     {% include 'user.html' %}
- * {% endsandbox %}
- * </pre>
- *
- * @see http://www.twig-project.org/doc/api.html#sandbox-extension for details
- */
-class Twig_TokenParser_Sandbox extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
-        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
-
-        // in a sandbox tag, only include tags are allowed
-        if (!$body instanceof Twig_Node_Include) {
-            foreach ($body as $node) {
-                if ($node instanceof Twig_Node_Text && ctype_space($node->getAttribute('data'))) {
-                    continue;
-                }
-
-                if (!$node instanceof Twig_Node_Include) {
-                    throw new Twig_Error_Syntax('Only "include" tags are allowed within a "sandbox" section.', $node->getLine(), $this->parser->getFilename());
-                }
-            }
-        }
-
-        return new Twig_Node_Sandbox($body, $token->getLine(), $this->getTag());
-    }
-
-    public function decideBlockEnd(Twig_Token $token)
-    {
-        return $token->test('endsandbox');
-    }
-
-    public function getTag()
-    {
-        return 'sandbox';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Set.php b/vendor/twig/twig/lib/Twig/TokenParser/Set.php
deleted file mode 100644
index 5ca614b..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Set.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Defines a variable.
- *
- * <pre>
- *  {% set foo = 'foo' %}
- *
- *  {% set foo = [1, 2] %}
- *
- *  {% set foo = {'foo': 'bar'} %}
- *
- *  {% set foo = 'foo' ~ 'bar' %}
- *
- *  {% set foo, bar = 'foo', 'bar' %}
- *
- *  {% set foo %}Some content{% endset %}
- * </pre>
- */
-class Twig_TokenParser_Set extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $lineno = $token->getLine();
-        $stream = $this->parser->getStream();
-        $names = $this->parser->getExpressionParser()->parseAssignmentExpression();
-
-        $capture = false;
-        if ($stream->nextIf(Twig_Token::OPERATOR_TYPE, '=')) {
-            $values = $this->parser->getExpressionParser()->parseMultitargetExpression();
-
-            $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-            if (count($names) !== count($values)) {
-                throw new Twig_Error_Syntax('When using set, you must have the same number of variables and assignments.', $stream->getCurrent()->getLine(), $stream->getFilename());
-            }
-        } else {
-            $capture = true;
-
-            if (count($names) > 1) {
-                throw new Twig_Error_Syntax('When using set with a block, you cannot have a multi-target.', $stream->getCurrent()->getLine(), $stream->getFilename());
-            }
-
-            $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-            $values = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
-            $stream->expect(Twig_Token::BLOCK_END_TYPE);
-        }
-
-        return new Twig_Node_Set($capture, $names, $values, $lineno, $this->getTag());
-    }
-
-    public function decideBlockEnd(Twig_Token $token)
-    {
-        return $token->test('endset');
-    }
-
-    public function getTag()
-    {
-        return 'set';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Spaceless.php b/vendor/twig/twig/lib/Twig/TokenParser/Spaceless.php
deleted file mode 100644
index 53d906d..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Spaceless.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Remove whitespaces between HTML tags.
- *
- * <pre>
- * {% spaceless %}
- *      <div>
- *          <strong>foo</strong>
- *      </div>
- * {% endspaceless %}
- *
- * {# output will be <div><strong>foo</strong></div> #}
- * </pre>
- */
-class Twig_TokenParser_Spaceless extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $lineno = $token->getLine();
-
-        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
-        $body = $this->parser->subparse(array($this, 'decideSpacelessEnd'), true);
-        $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
-
-        return new Twig_Node_Spaceless($body, $lineno, $this->getTag());
-    }
-
-    public function decideSpacelessEnd(Twig_Token $token)
-    {
-        return $token->test('endspaceless');
-    }
-
-    public function getTag()
-    {
-        return 'spaceless';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParser/Use.php b/vendor/twig/twig/lib/Twig/TokenParser/Use.php
deleted file mode 100644
index 4945d03..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParser/Use.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2011 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Imports blocks defined in another template into the current template.
- *
- * <pre>
- * {% extends "base.html" %}
- *
- * {% use "blocks.html" %}
- *
- * {% block title %}{% endblock %}
- * {% block content %}{% endblock %}
- * </pre>
- *
- * @see http://www.twig-project.org/doc/templates.html#horizontal-reuse for details.
- */
-class Twig_TokenParser_Use extends Twig_TokenParser
-{
-    public function parse(Twig_Token $token)
-    {
-        $template = $this->parser->getExpressionParser()->parseExpression();
-        $stream = $this->parser->getStream();
-
-        if (!$template instanceof Twig_Node_Expression_Constant) {
-            throw new Twig_Error_Syntax('The template references in a "use" statement must be a string.', $stream->getCurrent()->getLine(), $stream->getFilename());
-        }
-
-        $targets = array();
-        if ($stream->nextIf('with')) {
-            do {
-                $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
-
-                $alias = $name;
-                if ($stream->nextIf('as')) {
-                    $alias = $stream->expect(Twig_Token::NAME_TYPE)->getValue();
-                }
-
-                $targets[$name] = new Twig_Node_Expression_Constant($alias, -1);
-
-                if (!$stream->nextIf(Twig_Token::PUNCTUATION_TYPE, ',')) {
-                    break;
-                }
-            } while (true);
-        }
-
-        $stream->expect(Twig_Token::BLOCK_END_TYPE);
-
-        $this->parser->addTrait(new Twig_Node(array('template' => $template, 'targets' => new Twig_Node($targets))));
-    }
-
-    public function getTag()
-    {
-        return 'use';
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParserBroker.php b/vendor/twig/twig/lib/Twig/TokenParserBroker.php
deleted file mode 100644
index d88bb43..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParserBroker.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- * (c) 2010 Arnaud Le Blanc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Default implementation of a token parser broker.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_TokenParserBroker implements Twig_TokenParserBrokerInterface
-{
-    protected $parser;
-    protected $parsers = array();
-    protected $brokers = array();
-
-    /**
-     * Constructor.
-     *
-     * @param array|Traversable $parsers                 A Traversable of Twig_TokenParserInterface instances
-     * @param array|Traversable $brokers                 A Traversable of Twig_TokenParserBrokerInterface instances
-     * @param bool              $triggerDeprecationError
-     */
-    public function __construct($parsers = array(), $brokers = array(), $triggerDeprecationError = true)
-    {
-        if ($triggerDeprecationError) {
-            @trigger_error('The '.__CLASS__.' class is deprecated since version 1.12 and will be removed in 2.0.', E_USER_DEPRECATED);
-        }
-
-        foreach ($parsers as $parser) {
-            if (!$parser instanceof Twig_TokenParserInterface) {
-                throw new LogicException('$parsers must a an array of Twig_TokenParserInterface.');
-            }
-            $this->parsers[$parser->getTag()] = $parser;
-        }
-        foreach ($brokers as $broker) {
-            if (!$broker instanceof Twig_TokenParserBrokerInterface) {
-                throw new LogicException('$brokers must a an array of Twig_TokenParserBrokerInterface.');
-            }
-            $this->brokers[] = $broker;
-        }
-    }
-
-    /**
-     * Adds a TokenParser.
-     *
-     * @param Twig_TokenParserInterface $parser A Twig_TokenParserInterface instance
-     */
-    public function addTokenParser(Twig_TokenParserInterface $parser)
-    {
-        $this->parsers[$parser->getTag()] = $parser;
-    }
-
-    /**
-     * Removes a TokenParser.
-     *
-     * @param Twig_TokenParserInterface $parser A Twig_TokenParserInterface instance
-     */
-    public function removeTokenParser(Twig_TokenParserInterface $parser)
-    {
-        $name = $parser->getTag();
-        if (isset($this->parsers[$name]) && $parser === $this->parsers[$name]) {
-            unset($this->parsers[$name]);
-        }
-    }
-
-    /**
-     * Adds a TokenParserBroker.
-     *
-     * @param Twig_TokenParserBroker $broker A Twig_TokenParserBroker instance
-     */
-    public function addTokenParserBroker(Twig_TokenParserBroker $broker)
-    {
-        $this->brokers[] = $broker;
-    }
-
-    /**
-     * Removes a TokenParserBroker.
-     *
-     * @param Twig_TokenParserBroker $broker A Twig_TokenParserBroker instance
-     */
-    public function removeTokenParserBroker(Twig_TokenParserBroker $broker)
-    {
-        if (false !== $pos = array_search($broker, $this->brokers)) {
-            unset($this->brokers[$pos]);
-        }
-    }
-
-    /**
-     * Gets a suitable TokenParser for a tag.
-     *
-     * First looks in parsers, then in brokers.
-     *
-     * @param string $tag A tag name
-     *
-     * @return null|Twig_TokenParserInterface A Twig_TokenParserInterface or null if no suitable TokenParser was found
-     */
-    public function getTokenParser($tag)
-    {
-        if (isset($this->parsers[$tag])) {
-            return $this->parsers[$tag];
-        }
-        $broker = end($this->brokers);
-        while (false !== $broker) {
-            $parser = $broker->getTokenParser($tag);
-            if (null !== $parser) {
-                return $parser;
-            }
-            $broker = prev($this->brokers);
-        }
-    }
-
-    public function getParsers()
-    {
-        return $this->parsers;
-    }
-
-    public function getParser()
-    {
-        return $this->parser;
-    }
-
-    public function setParser(Twig_ParserInterface $parser)
-    {
-        $this->parser = $parser;
-        foreach ($this->parsers as $tokenParser) {
-            $tokenParser->setParser($parser);
-        }
-        foreach ($this->brokers as $broker) {
-            $broker->setParser($parser);
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php b/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php
deleted file mode 100644
index 3ec2a88..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- * (c) 2010 Arnaud Le Blanc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interface implemented by token parser brokers.
- *
- * Token parser brokers allows to implement custom logic in the process of resolving a token parser for a given tag name.
- *
- * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-interface Twig_TokenParserBrokerInterface
-{
-    /**
-     * Gets a TokenParser suitable for a tag.
-     *
-     * @param string $tag A tag name
-     *
-     * @return null|Twig_TokenParserInterface A Twig_TokenParserInterface or null if no suitable TokenParser was found
-     */
-    public function getTokenParser($tag);
-
-    /**
-     * Calls Twig_TokenParserInterface::setParser on all parsers the implementation knows of.
-     *
-     * @param Twig_ParserInterface $parser A Twig_ParserInterface interface
-     */
-    public function setParser(Twig_ParserInterface $parser);
-
-    /**
-     * Gets the Twig_ParserInterface.
-     *
-     * @return null|Twig_ParserInterface A Twig_ParserInterface instance or null
-     */
-    public function getParser();
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenParserInterface.php b/vendor/twig/twig/lib/Twig/TokenParserInterface.php
deleted file mode 100644
index 12ec396..0000000
--- a/vendor/twig/twig/lib/Twig/TokenParserInterface.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2010 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Interface implemented by token parsers.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface Twig_TokenParserInterface
-{
-    /**
-     * Sets the parser associated with this token parser.
-     *
-     * @param Twig_Parser $parser A Twig_Parser instance
-     */
-    public function setParser(Twig_Parser $parser);
-
-    /**
-     * Parses a token and returns a node.
-     *
-     * @param Twig_Token $token A Twig_Token instance
-     *
-     * @return Twig_NodeInterface A Twig_NodeInterface instance
-     *
-     * @throws Twig_Error_Syntax
-     */
-    public function parse(Twig_Token $token);
-
-    /**
-     * Gets the tag name associated with this token parser.
-     *
-     * @return string The tag name
-     */
-    public function getTag();
-}
diff --git a/vendor/twig/twig/lib/Twig/TokenStream.php b/vendor/twig/twig/lib/Twig/TokenStream.php
deleted file mode 100644
index 016f812..0000000
--- a/vendor/twig/twig/lib/Twig/TokenStream.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- * (c) 2009 Armin Ronacher
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Represents a token stream.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_TokenStream
-{
-    protected $tokens;
-    protected $current = 0;
-    protected $filename;
-
-    /**
-     * Constructor.
-     *
-     * @param array  $tokens   An array of tokens
-     * @param string $filename The name of the filename which tokens are associated with
-     */
-    public function __construct(array $tokens, $filename = null)
-    {
-        $this->tokens = $tokens;
-        $this->filename = $filename;
-    }
-
-    /**
-     * Returns a string representation of the token stream.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return implode("\n", $this->tokens);
-    }
-
-    public function injectTokens(array $tokens)
-    {
-        $this->tokens = array_merge(array_slice($this->tokens, 0, $this->current), $tokens, array_slice($this->tokens, $this->current));
-    }
-
-    /**
-     * Sets the pointer to the next token and returns the old one.
-     *
-     * @return Twig_Token
-     */
-    public function next()
-    {
-        if (!isset($this->tokens[++$this->current])) {
-            throw new Twig_Error_Syntax('Unexpected end of template.', $this->tokens[$this->current - 1]->getLine(), $this->filename);
-        }
-
-        return $this->tokens[$this->current - 1];
-    }
-
-    /**
-     * Tests a token, sets the pointer to the next one and returns it or throws a syntax error.
-     *
-     * @return Twig_Token|null The next token if the condition is true, null otherwise
-     */
-    public function nextIf($primary, $secondary = null)
-    {
-        if ($this->tokens[$this->current]->test($primary, $secondary)) {
-            return $this->next();
-        }
-    }
-
-    /**
-     * Tests a token and returns it or throws a syntax error.
-     *
-     * @return Twig_Token
-     */
-    public function expect($type, $value = null, $message = null)
-    {
-        $token = $this->tokens[$this->current];
-        if (!$token->test($type, $value)) {
-            $line = $token->getLine();
-            throw new Twig_Error_Syntax(sprintf('%sUnexpected token "%s" of value "%s" ("%s" expected%s).',
-                $message ? $message.'. ' : '',
-                Twig_Token::typeToEnglish($token->getType()), $token->getValue(),
-                Twig_Token::typeToEnglish($type), $value ? sprintf(' with value "%s"', $value) : ''),
-                $line,
-                $this->filename
-            );
-        }
-        $this->next();
-
-        return $token;
-    }
-
-    /**
-     * Looks at the next token.
-     *
-     * @param int $number
-     *
-     * @return Twig_Token
-     */
-    public function look($number = 1)
-    {
-        if (!isset($this->tokens[$this->current + $number])) {
-            throw new Twig_Error_Syntax('Unexpected end of template.', $this->tokens[$this->current + $number - 1]->getLine(), $this->filename);
-        }
-
-        return $this->tokens[$this->current + $number];
-    }
-
-    /**
-     * Tests the current token.
-     *
-     * @return bool
-     */
-    public function test($primary, $secondary = null)
-    {
-        return $this->tokens[$this->current]->test($primary, $secondary);
-    }
-
-    /**
-     * Checks if end of stream was reached.
-     *
-     * @return bool
-     */
-    public function isEOF()
-    {
-        return $this->tokens[$this->current]->getType() === Twig_Token::EOF_TYPE;
-    }
-
-    /**
-     * Gets the current token.
-     *
-     * @return Twig_Token
-     */
-    public function getCurrent()
-    {
-        return $this->tokens[$this->current];
-    }
-
-    /**
-     * Gets the filename associated with this stream.
-     *
-     * @return string
-     */
-    public function getFilename()
-    {
-        return $this->filename;
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php b/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php
deleted file mode 100644
index e406f0a..0000000
--- a/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Util_DeprecationCollector
-{
-    private $twig;
-    private $deprecations;
-
-    public function __construct(Twig_Environment $twig)
-    {
-        $this->twig = $twig;
-    }
-
-    /**
-     * Returns deprecations for templates contained in a directory.
-     *
-     * @param string $dir A directory where templates are stored
-     * @param string $ext Limit the loaded templates by extension
-     *
-     * @return array() An array of deprecations
-     */
-    public function collectDir($dir, $ext = '.twig')
-    {
-        $iterator = new RegexIterator(
-            new RecursiveIteratorIterator(
-                new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::LEAVES_ONLY
-            ), '{'.preg_quote($ext).'$}'
-        );
-
-        return $this->collect(new Twig_Util_TemplateDirIterator($iterator));
-    }
-
-    /**
-     * Returns deprecations for passed templates.
-     *
-     * @param Iterator $iterator An iterator of templates (where keys are template names and values the contents of the template)
-     *
-     * @return array() An array of deprecations
-     */
-    public function collect(Iterator $iterator)
-    {
-        $this->deprecations = array();
-
-        set_error_handler(array($this, 'errorHandler'));
-
-        foreach ($iterator as $name => $contents) {
-            try {
-                $this->twig->parse($this->twig->tokenize($contents, $name));
-            } catch (Twig_Error_Syntax $e) {
-                // ignore templates containing syntax errors
-            }
-        }
-
-        restore_error_handler();
-
-        $deprecations = $this->deprecations;
-        $this->deprecations = array();
-
-        return $deprecations;
-    }
-
-    /**
-     * @internal
-     */
-    public function errorHandler($type, $msg)
-    {
-        if (E_USER_DEPRECATED === $type) {
-            $this->deprecations[] = $msg;
-        }
-    }
-}
diff --git a/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php b/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php
deleted file mode 100644
index 3fb8932..0000000
--- a/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Twig_Util_TemplateDirIterator extends IteratorIterator
-{
-    public function current()
-    {
-        return file_get_contents(parent::current());
-    }
-
-    public function key()
-    {
-        return (string) parent::key();
-    }
-}
diff --git a/vendor/twig/twig/phpunit.xml.dist b/vendor/twig/twig/phpunit.xml.dist
deleted file mode 100644
index 6f6d1d2..0000000
--- a/vendor/twig/twig/phpunit.xml.dist
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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="vendor/autoload.php"
->
-  <testsuites>
-    <testsuite name="Twig Test Suite">
-      <directory>./test/Twig/</directory>
-    </testsuite>
-  </testsuites>
-
-  <filter>
-    <whitelist>
-      <directory suffix=".php">./lib/Twig/</directory>
-    </whitelist>
-  </filter>
-</phpunit>
diff --git a/vendor/web.config b/vendor/web.config
deleted file mode 100644
index 2e065e2..0000000
--- a/vendor/web.config
+++ /dev/null
@@ -1,7 +0,0 @@
-<configuration>
-  <system.webServer>
-    <authorization>
-      <deny users="*">
-    </authorization>
-  </system.webServer>
-</configuration>
diff --git a/vendor/wikimedia/composer-merge-plugin/.arcconfig b/vendor/wikimedia/composer-merge-plugin/.arcconfig
deleted file mode 100644
index 3dfae3d..0000000
--- a/vendor/wikimedia/composer-merge-plugin/.arcconfig
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "phabricator.uri" : "https://phabricator.wikimedia.org/",
-    "repository.callsign" : "GCMP",
-    "history.immutable" : false,
-    "unit.engine": "PhpunitTestEngine"
-}
diff --git a/vendor/wikimedia/composer-merge-plugin/.arclint b/vendor/wikimedia/composer-merge-plugin/.arclint
deleted file mode 100644
index da42f29..0000000
--- a/vendor/wikimedia/composer-merge-plugin/.arclint
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-    "exclude": "(^vendor/)",
-    "linters": {
-        "php": {
-            "type": "php",
-            "include": "(\\.php$)"
-        },
-        "json": {
-            "type": "json",
-            "include": "(\\.json$)"
-        }
-    }
-}
diff --git a/vendor/wikimedia/composer-merge-plugin/LICENSE b/vendor/wikimedia/composer-merge-plugin/LICENSE
deleted file mode 100644
index 3c9804a..0000000
--- a/vendor/wikimedia/composer-merge-plugin/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015 Bryan Davis, Wikimedia Foundation, and contributors
-
-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/wikimedia/composer-merge-plugin/README.md b/vendor/wikimedia/composer-merge-plugin/README.md
deleted file mode 100644
index f020d40..0000000
--- a/vendor/wikimedia/composer-merge-plugin/README.md
+++ /dev/null
@@ -1,183 +0,0 @@
-[![Latest Stable Version]](https://packagist.org/packages/wikimedia/composer-merge-plugin) [![License]](https://github.com/wikimedia/composer-merge-plugin/blob/master/LICENSE)
-[![Build Status]](https://travis-ci.org/wikimedia/composer-merge-plugin)
-[![Code Coverage]](https://scrutinizer-ci.com/g/wikimedia/composer-merge-plugin/?branch=master)
-
-Composer Merge Plugin
-=====================
-
-Merge multiple composer.json files at [Composer] runtime.
-
-Composer Merge Plugin is intended to allow easier dependency management for
-applications which ship a composer.json file and expect some deployments to
-install additional Composer managed libraries. It does this by allowing the
-application's top level `composer.json` file to provide a list of optional
-additional configuration files. When Composer is run it will parse these files
-and merge their configuration settings into the base configuration. This
-combined configuration will then be used when downloading additional libraries
-and generating the autoloader.
-
-Composer Merge Plugin was created to help with installation of [MediaWiki]
-which has core library requirements as well as optional libraries and
-extensions which may be managed via Composer.
-
-
-Installation
-------------
-
-```
-$ composer require wikimedia/composer-merge-plugin
-```
-
-
-Usage
------
-
-```
-{
-    "require": {
-        "wikimedia/composer-merge-plugin": "dev-master"
-    },
-    "extra": {
-        "merge-plugin": {
-            "include": [
-                "composer.local.json",
-                "extensions/*/composer.json"
-            ],
-            "require": [
-                "submodule/composer.json"
-            ],
-            "recurse": true,
-            "replace": false,
-            "merge-dev": true,
-            "merge-extra": false
-        }
-    }
-}
-```
-
-
-Plugin configuration
---------------------
-
-The plugin reads its configuration from the `merge-plugin` section of your
-composer.json's `extra` section. An `include` setting is required to tell
-Composer Merge Plugin which file(s) to merge.
-
-
-### include
-
-The `include` setting can specify either a single value or an array of values.
-Each value is treated as a PHP `glob()` pattern identifying additional
-composer.json style configuration files to merge into the root package
-configuration for the current Composer execution.
-
-The following sections of the found configuration files will be merged into
-the Composer root package configuration as though they were directly included
-in the top-level composer.json file:
-
-* [autoload](https://getcomposer.org/doc/04-schema.md#autoload)
-* [autoload-dev](https://getcomposer.org/doc/04-schema.md#autoload-dev)
-  (optional, see [merge-dev](#merge-dev) below)
-* [conflict](https://getcomposer.org/doc/04-schema.md#conflict)
-* [provide](https://getcomposer.org/doc/04-schema.md#provide)
-* [replace](https://getcomposer.org/doc/04-schema.md#replace)
-* [repositories](https://getcomposer.org/doc/04-schema.md#repositories)
-* [require](https://getcomposer.org/doc/04-schema.md#require)
-* [require-dev](https://getcomposer.org/doc/04-schema.md#require-dev)
-  (optional, see [merge-dev](#merge-dev) below)
-* [suggest](https://getcomposer.org/doc/04-schema.md#suggest)
-* [extra](https://getcomposer.org/doc/04-schema.md#extra)
-  (optional, see [merge-extra](#merge-extra) below)
-
-
-### require
-
-The `require` setting is identical to `[include](#include)` except when
-a pattern fails to match at least one file then it will cause an error.
-
-### recurse
-
-By default the merge plugin is recursive; if an included file has
-a `merge-plugin` section it will also be processed. This functionality can be
-disabled by adding a `"recurse": false` setting.
-
-
-### replace
-
-By default, Composer's conflict resolution engine is used to determine which
-version of a package should be installed when multiple files specify the same
-package. A `"replace": true` setting can be provided to change to a "last
-version specified wins" conflict resolution strategy. In this mode, duplicate
-package declarations found in merged files will overwrite the declarations
-made by earlier files. Files are loaded in the order specified by the
-`include` setting with globbed files being processed in alphabetical order.
-
-
-### merge-dev
-
-By default, `autoload-dev` and `require-dev` sections of included files are
-merged. A `"merge-dev": false` setting will disable this behavior.
-
-
-### merge-extra
-
-A `"merge-extra": true` setting enables the merging the contents of the
-`extra` section of included files as well. The normal merge mode for the extra
-section is to accept the first version of any key found (e.g. a key in the
-master config wins over the version found in any imported config). If
-`replace` mode is active ([see above](#replace)) then this behavior changes
-and the last key found will win (e.g. the key in the master config is replaced
-by the key in the imported config). The usefulness of merging the extra
-section will vary depending on the Composer plugins being used and the order
-in which they are processed by Composer.
-
-Note that `merge-plugin` sections are excluded from the merge process, but are
-always processed by the plugin unless [recursion](#recurse) is disabled.
-
-
-Running tests
--------------
-
-```
-$ composer install
-$ composer test
-```
-
-
-Contributing
-------------
-
-Bug, feature requests and other issues should be reported to the [GitHub
-project]. We accept code and documentation contributions via Pull Requests on
-GitHub as well.
-
-- [PSR-2 Coding Standard][] is used by the project. The included test
-  configuration uses [PHP Code Sniffer][] to validate the conventions.
-- Tests are encouraged. Our test coverage isn't perfect but we'd like it to
-  get better rather than worse, so please try to include tests with your
-  changes.
-- Keep the documentation up to date. Make sure `README.md` and other
-  relevant documentation is kept up to date with your changes.
-- One pull request per feature. Try to keep your changes focused on solving
-  a single problem. This will make it easier for us to review the change and
-  easier for you to make sure you have updated the necessary tests and
-  documentation.
-
-
-License
--------
-
-Composer Merge plugin is licensed under the MIT license. See the `LICENSE`
-file for more details.
-
-
----
-[Composer]: https://getcomposer.org/
-[MediaWiki]: https://www.mediawiki.org/wiki/MediaWiki
-[GitHub project]: https://github.com/wikimedia/composer-merge-plugin
-[PSR-2 Coding Standard]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md
-[PHP Code Sniffer]: http://pear.php.net/package/PHP_CodeSniffer
-[Latest Stable Version]: https://img.shields.io/packagist/v/wikimedia/composer-merge-plugin.svg?style=flat
-[License]: https://img.shields.io/packagist/l/wikimedia/composer-merge-plugin.svg?style=flat
-[Build Status]: https://img.shields.io/travis/wikimedia/composer-merge-plugin.svg?style=flat
-[Code Coverage]: https://img.shields.io/scrutinizer/coverage/g/wikimedia/composer-merge-plugin/master.svg?style=flat
diff --git a/vendor/wikimedia/composer-merge-plugin/composer.json b/vendor/wikimedia/composer-merge-plugin/composer.json
deleted file mode 100644
index dce70e7..0000000
--- a/vendor/wikimedia/composer-merge-plugin/composer.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-    "name": "wikimedia/composer-merge-plugin",
-    "description": "Composer plugin to merge multiple composer.json files",
-    "type": "composer-plugin",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Bryan Davis",
-            "email": "bd808@wikimedia.org"
-        }
-    ],
-    "minimum-stability": "dev",
-    "prefer-stable": true,
-    "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"
-    },
-    "autoload": {
-        "psr-4": {
-            "Wikimedia\\Composer\\": "src/"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.3.x-dev"
-        },
-        "class": "Wikimedia\\Composer\\MergePlugin"
-    },
-    "config": {
-        "optimize-autoloader": true
-    },
-    "scripts": {
-        "test": [
-            "composer validate --no-interaction",
-            "parallel-lint src tests",
-            "phpunit --log-junit=reports/unitreport.xml --coverage-text --coverage-html=reports/coverage --coverage-clover=reports/coverage.xml",
-            "phpcs --encoding=utf-8 --standard=PSR2 --report-checkstyle=reports/checkstyle-phpcs.xml --report-full --extensions=php src/* tests/phpunit/*"
-        ]
-    }
-}
diff --git a/vendor/wikimedia/composer-merge-plugin/src/Logger.php b/vendor/wikimedia/composer-merge-plugin/src/Logger.php
deleted file mode 100644
index 1635a2b..0000000
--- a/vendor/wikimedia/composer-merge-plugin/src/Logger.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-/**
- * This file is part of the Composer Merge plugin.
- *
- * Copyright (C) 2015 Bryan Davis, Wikimedia Foundation, and contributors
- *
- * This software may be modified and distributed under the terms of the MIT
- * license. See the LICENSE file for details.
- */
-
-namespace Wikimedia\Composer;
-
-use Composer\IO\IOInterface;
-
-/**
- * Simple logging wrapper for Composer\IO\IOInterface
- *
- * @author Bryan Davis <bd808@bd808.com>
- */
-class Logger
-{
-    /**
-     * @var string $name
-     */
-    protected $name;
-
-    /**
-     * @var IOInterface $inputOutput
-     */
-    protected $inputOutput;
-
-    /**
-     * @param string $name
-     * @param IOInterface $io
-     */
-    public function __construct($name, IOInterface $io)
-    {
-        $this->name = $name;
-        $this->inputOutput = $io;
-    }
-
-    /**
-     * Log a debug message
-     *
-     * Messages will be output at the "very verbose" logging level (eg `-vv`
-     * needed on the Composer command).
-     *
-     * @param string $message
-     */
-    public function debug($message)
-    {
-        if ($this->inputOutput->isVeryVerbose()) {
-            $message = "  <info>[{$this->name}]</info> {$message}";
-            $this->log($message);
-        }
-    }
-
-    /**
-     * Log an informative message
-     *
-     * Messages will be output at the "verbose" logging level (eg `-v` needed
-     * on the Composer command).
-     *
-     * @param string $message
-     */
-    public function info($message)
-    {
-        if ($this->inputOutput->isVerbose()) {
-            $message = "  <info>[{$this->name}]</info> {$message}";
-            $this->log($message);
-        }
-    }
-
-    /**
-     * Log a warning message
-     *
-     * @param string $message
-     */
-    public function warning($message)
-    {
-        $message = "  <error>[{$this->name}]</error> {$message}";
-        $this->log($message);
-    }
-
-    /**
-     * Write a message
-     *
-     * @param string $message
-     */
-    protected function log($message)
-    {
-        if (method_exists($this->inputOutput, 'writeError')) {
-            $this->inputOutput->writeError($message);
-        } else {
-            // @codeCoverageIgnoreStart
-            // Backwards compatiblity for Composer before cb336a5
-            $this->inputOutput->write($message);
-            // @codeCoverageIgnoreEnd
-        }
-    }
-}
-// vim:sw=4:ts=4:sts=4:et:
diff --git a/vendor/wikimedia/composer-merge-plugin/src/Merge/ExtraPackage.php b/vendor/wikimedia/composer-merge-plugin/src/Merge/ExtraPackage.php
deleted file mode 100644
index ebecdff..0000000
--- a/vendor/wikimedia/composer-merge-plugin/src/Merge/ExtraPackage.php
+++ /dev/null
@@ -1,487 +0,0 @@
-<?php
-/**
- * This file is part of the Composer Merge plugin.
- *
- * Copyright (C) 2015 Bryan Davis, Wikimedia Foundation, and contributors
- *
- * This software may be modified and distributed under the terms of the MIT
- * license. See the LICENSE file for details.
- */
-
-namespace Wikimedia\Composer\Merge;
-
-use Wikimedia\Composer\Logger;
-
-use Composer\Composer;
-use Composer\Json\JsonFile;
-use Composer\Package\BasePackage;
-use Composer\Package\CompletePackage;
-use Composer\Package\Link;
-use Composer\Package\Loader\ArrayLoader;
-use Composer\Package\RootAliasPackage;
-use Composer\Package\RootPackage;
-use Composer\Package\RootPackageInterface;
-use Composer\Package\Version\VersionParser;
-use UnexpectedValueException;
-
-/**
- * Processing for a composer.json file that will be merged into
- * a RootPackageInterface
- *
- * @author Bryan Davis <bd808@bd808.com>
- */
-class ExtraPackage
-{
-
-    /**
-     * @var Composer $composer
-     */
-    protected $composer;
-
-    /**
-     * @var Logger $logger
-     */
-    protected $logger;
-
-    /**
-     * @var string $path
-     */
-    protected $path;
-
-    /**
-     * @var array $json
-     */
-    protected $json;
-
-    /**
-     * @var CompletePackage $package
-     */
-    protected $package;
-
-    /**
-     * @param string $path Path to composer.json file
-     * @param Composer $composer
-     * @param Logger $logger
-     */
-    public function __construct($path, Composer $composer, Logger $logger)
-    {
-        $this->path = $path;
-        $this->composer = $composer;
-        $this->logger = $logger;
-        $this->json = $this->readPackageJson($path);
-        $this->package = $this->loadPackage($this->json);
-    }
-
-    /**
-     * Get list of additional packages to include if precessing recursively.
-     *
-     * @return array
-     */
-    public function getIncludes()
-    {
-        return isset($this->json['extra']['merge-plugin']['include']) ?
-            $this->json['extra']['merge-plugin']['include'] : array();
-    }
-
-    /**
-     * Get list of additional packages to require if precessing recursively.
-     *
-     * @return array
-     */
-    public function getRequires()
-    {
-        return isset($this->json['extra']['merge-plugin']['require']) ?
-            $this->json['extra']['merge-plugin']['require'] : array();
-    }
-
-    /**
-     * Read the contents of a composer.json style file into an array.
-     *
-     * The package contents are fixed up to be usable to create a Package
-     * object by providing dummy "name" and "version" values if they have not
-     * been provided in the file. This is consistent with the default root
-     * package loading behavior of Composer.
-     *
-     * @param string $path
-     * @return array
-     */
-    protected function readPackageJson($path)
-    {
-        $file = new JsonFile($path);
-        $json = $file->read();
-        if (!isset($json['name'])) {
-            $json['name'] = 'merge-plugin/' .
-                strtr($path, DIRECTORY_SEPARATOR, '-');
-        }
-        if (!isset($json['version'])) {
-            $json['version'] = '1.0.0';
-        }
-        return $json;
-    }
-
-    /**
-     * @return CompletePackage
-     */
-    protected function loadPackage($json)
-    {
-        $loader = new ArrayLoader();
-        $package = $loader->load($json);
-        // @codeCoverageIgnoreStart
-        if (!$package instanceof CompletePackage) {
-            throw new UnexpectedValueException(
-                'Expected instance of CompletePackage, got ' .
-                get_class($package)
-            );
-        }
-        // @codeCoverageIgnoreEnd
-        return $package;
-    }
-
-    /**
-     * Merge this package into a RootPackageInterface
-     *
-     * @param RootPackageInterface $root
-     * @param PluginState $state
-     */
-    public function mergeInto(RootPackageInterface $root, PluginState $state)
-    {
-        $this->addRepositories($root);
-
-        $this->mergeRequires('require', $root, $state);
-        if ($state->isDevMode()) {
-            $this->mergeRequires('require-dev', $root, $state);
-        }
-
-        $this->mergePackageLinks('conflict', $root);
-        $this->mergePackageLinks('replace', $root);
-        $this->mergePackageLinks('provide', $root);
-
-        $this->mergeSuggests($root);
-
-        $this->mergeAutoload('autoload', $root);
-        if ($state->isDevMode()) {
-            $this->mergeAutoload('devAutoload', $root);
-        }
-
-        $this->mergeExtra($root, $state);
-    }
-
-    /**
-     * Add a collection of repositories described by the given configuration
-     * to the given package and the global repository manager.
-     *
-     * @param RootPackageInterface $root
-     */
-    protected function addRepositories(RootPackageInterface $root)
-    {
-        if (!isset($this->json['repositories'])) {
-            return;
-        }
-        $repoManager = $this->composer->getRepositoryManager();
-        $newRepos = array();
-
-        foreach ($this->json['repositories'] as $repoJson) {
-            if (!isset($repoJson['type'])) {
-                continue;
-            }
-            $this->logger->info("Adding {$repoJson['type']} repository");
-            $repo = $repoManager->createRepository(
-                $repoJson['type'],
-                $repoJson
-            );
-            $repoManager->addRepository($repo);
-            $newRepos[] = $repo;
-        }
-
-        $unwrapped = self::unwrapIfNeeded($root, 'setRepositories');
-        $unwrapped->setRepositories(array_merge(
-            $newRepos,
-            $root->getRepositories()
-        ));
-    }
-
-    /**
-     * Merge require or require-dev into a RootPackageInterface
-     *
-     * @param string $type 'require' or 'require-dev'
-     * @param RootPackageInterface $root
-     * @param PluginState $state
-     */
-    protected function mergeRequires(
-        $type,
-        RootPackageInterface $root,
-        PluginState $state
-    ) {
-        $linkType = BasePackage::$supportedLinkTypes[$type];
-        $getter = 'get' . ucfirst($linkType['method']);
-        $setter = 'set' . ucfirst($linkType['method']);
-
-        $requires = $this->package->{$getter}();
-        if (empty($requires)) {
-            return;
-        }
-
-        $this->mergeStabilityFlags($root, $requires);
-
-        $requires = $this->replaceSelfVersionDependencies(
-            $type,
-            $requires,
-            $root
-        );
-
-        $root->{$setter}($this->mergeOrDefer(
-            $type,
-            $root->{$getter}(),
-            $requires,
-            $state
-        ));
-    }
-
-    /**
-     * Merge two collections of package links and collect duplicates for
-     * subsequent processing.
-     *
-     * @param string $type 'require' or 'require-dev'
-     * @param array $origin Primary collection
-     * @param array $merge Additional collection
-     * @param PluginState $state
-     * @return array Merged collection
-     */
-    protected function mergeOrDefer(
-        $type,
-        array $origin,
-        array $merge,
-        $state
-    ) {
-        $dups = array();
-        foreach ($merge as $name => $link) {
-            if (!isset($origin[$name]) || $state->replaceDuplicateLinks()) {
-                $this->logger->info("Merging <comment>{$name}</comment>");
-                $origin[$name] = $link;
-            } else {
-                // Defer to solver.
-                $this->logger->info(
-                    "Deferring duplicate <comment>{$name}</comment>"
-                );
-                $dups[] = $link;
-            }
-        }
-        $state->addDuplicateLinks($type, $dups);
-        return $origin;
-    }
-
-    /**
-     * Merge autoload or autoload-dev into a RootPackageInterface
-     *
-     * @param string $type 'autoload' or 'devAutoload'
-     * @param RootPackageInterface $root
-     */
-    protected function mergeAutoload($type, RootPackageInterface $root)
-    {
-        $getter = 'get' . ucfirst($type);
-        $setter = 'set' . ucfirst($type);
-
-        $autoload = $this->package->{$getter}();
-        if (empty($autoload)) {
-            return;
-        }
-
-        $unwrapped = self::unwrapIfNeeded($root, $setter);
-        $unwrapped->{$setter}(array_merge_recursive(
-            $root->{$getter}(),
-            $this->fixRelativePaths($autoload)
-        ));
-    }
-
-    /**
-     * Fix a collection of paths that are relative to this package to be
-     * relative to the base package.
-     *
-     * @param array $paths
-     * @return array
-     */
-    protected function fixRelativePaths(array $paths)
-    {
-        $base = dirname($this->path);
-        $base = ($base === '.') ? '' : "{$base}/";
-
-        array_walk_recursive(
-            $paths,
-            function (&$path) use ($base) {
-                $path = "{$base}{$path}";
-            }
-        );
-        return $paths;
-    }
-
-    /**
-     * Extract and merge stability flags from the given collection of
-     * requires and merge them into a RootPackageInterface
-     *
-     * @param RootPackageInterface $root
-     * @param array $requires
-     */
-    protected function mergeStabilityFlags(
-        RootPackageInterface $root,
-        array $requires
-    ) {
-        $flags = $root->getStabilityFlags();
-        $sf = new StabilityFlags($flags, $root->getMinimumStability());
-
-        $unwrapped = self::unwrapIfNeeded($root, 'setStabilityFlags');
-        $unwrapped->setStabilityFlags(array_merge(
-            $flags,
-            $sf->extractAll($requires)
-        ));
-    }
-
-    /**
-     * Merge package links of the given type  into a RootPackageInterface
-     *
-     * @param string $type 'conflict', 'replace' or 'provide'
-     * @param RootPackageInterface $root
-     */
-    protected function mergePackageLinks($type, RootPackageInterface $root)
-    {
-        $linkType = BasePackage::$supportedLinkTypes[$type];
-        $getter = 'get' . ucfirst($linkType['method']);
-        $setter = 'set' . ucfirst($linkType['method']);
-
-        $links = $this->package->{$getter}();
-        if (!empty($links)) {
-            $unwrapped = self::unwrapIfNeeded($root, $setter);
-            if ($root !== $unwrapped) {
-                $this->logger->warning(
-                    'This Composer version does not support ' .
-                    "'{$type}' merging for aliased packages."
-                );
-            }
-            $unwrapped->{$setter}(array_merge(
-                $root->{$getter}(),
-                $this->replaceSelfVersionDependencies($type, $links, $root)
-            ));
-        }
-    }
-
-    /**
-     * Merge suggested packages into a RootPackageInterface
-     *
-     * @param RootPackageInterface $root
-     */
-    protected function mergeSuggests(RootPackageInterface $root)
-    {
-        $suggests = $this->package->getSuggests();
-        if (!empty($suggests)) {
-            $unwrapped = self::unwrapIfNeeded($root, 'setSuggests');
-            $unwrapped->setSuggests(array_merge(
-                $root->getSuggests(),
-                $suggests
-            ));
-        }
-    }
-
-    /**
-     * Merge extra config into a RootPackageInterface
-     *
-     * @param RootPackageInterface $root
-     * @param PluginState $state
-     */
-    public function mergeExtra(RootPackageInterface $root, PluginState $state)
-    {
-        $extra = $this->package->getExtra();
-        unset($extra['merge-plugin']);
-        if (!$state->shouldMergeExtra() || empty($extra)) {
-            return;
-        }
-
-        $rootExtra = $root->getExtra();
-        $unwrapped = self::unwrapIfNeeded($root, 'setExtra');
-
-        if ($state->replaceDuplicateLinks()) {
-            $unwrapped->setExtra(
-                array_merge($rootExtra, $extra)
-            );
-
-        } else {
-            foreach (array_intersect(
-                array_keys($extra),
-                array_keys($rootExtra)
-            ) as $key) {
-                $this->logger->info(
-                    "Ignoring duplicate <comment>{$key}</comment> in ".
-                    "<comment>{$this->path}</comment> extra config."
-                );
-            }
-            $unwrapped->setExtra(
-                array_merge($extra, $rootExtra)
-            );
-        }
-    }
-
-    /**
-     * Update Links with a 'self.version' constraint with the root package's
-     * version.
-     *
-     * @param string $type Link type
-     * @param array $links
-     * @param RootPackageInterface $root
-     * @return array
-     */
-    protected function replaceSelfVersionDependencies(
-        $type,
-        array $links,
-        RootPackageInterface $root
-    ) {
-        $linkType = BasePackage::$supportedLinkTypes[$type];
-        $version = $root->getVersion();
-        $prettyVersion = $root->getPrettyVersion();
-        $vp = new VersionParser();
-
-        return array_map(
-            function ($link) use ($linkType, $version, $prettyVersion, $vp) {
-                if ('self.version' === $link->getPrettyConstraint()) {
-                    return new Link(
-                        $link->getSource(),
-                        $link->getTarget(),
-                        $vp->parseConstraints($version),
-                        $linkType['description'],
-                        $prettyVersion
-                    );
-                }
-                return $link;
-            },
-            $links
-        );
-    }
-
-    /**
-     * Get a full featured Package from a RootPackageInterface.
-     *
-     * In Composer versions before 599ad77 the RootPackageInterface only
-     * defines a sub-set of operations needed by composer-merge-plugin and
-     * RootAliasPackage only implemented those methods defined by the
-     * interface. Most of the unimplemented methods in RootAliasPackage can be
-     * worked around because the getter methods that are implemented proxy to
-     * the aliased package which we can modify by unwrapping. The exception
-     * being modifying the 'conflicts', 'provides' and 'replaces' collections.
-     * We have no way to actually modify those collections unfortunately in
-     * older versions of Composer.
-     *
-     * @param RootPackageInterface $root
-     * @param string $method Method needed
-     * @return RootPackageInterface|RootPackage
-     */
-    public static function unwrapIfNeeded(
-        RootPackageInterface $root,
-        $method = 'setExtra'
-    ) {
-        if ($root instanceof RootAliasPackage &&
-            !method_exists($root, $method)
-        ) {
-            // Unwrap and return the aliased RootPackage.
-            $root = $root->getAliasOf();
-        }
-        return $root;
-    }
-}
-// vim:sw=4:ts=4:sts=4:et:
diff --git a/vendor/wikimedia/composer-merge-plugin/src/Merge/MissingFileException.php b/vendor/wikimedia/composer-merge-plugin/src/Merge/MissingFileException.php
deleted file mode 100644
index 873719d..0000000
--- a/vendor/wikimedia/composer-merge-plugin/src/Merge/MissingFileException.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * This file is part of the Composer Merge plugin.
- *
- * Copyright (C) 2015 Bryan Davis, Wikimedia Foundation, and contributors
- *
- * This software may be modified and distributed under the terms of the MIT
- * license. See the LICENSE file for details.
- */
-
-namespace Wikimedia\Composer\Merge;
-
-/**
- * @author Bryan Davis <bd808@bd808.com>
- */
-class MissingFileException extends \RuntimeException
-{
-}
diff --git a/vendor/wikimedia/composer-merge-plugin/src/Merge/PluginState.php b/vendor/wikimedia/composer-merge-plugin/src/Merge/PluginState.php
deleted file mode 100644
index a191c1e..0000000
--- a/vendor/wikimedia/composer-merge-plugin/src/Merge/PluginState.php
+++ /dev/null
@@ -1,327 +0,0 @@
-<?php
-/**
- * This file is part of the Composer Merge plugin.
- *
- * Copyright (C) 2015 Bryan Davis, Wikimedia Foundation, and contributors
- *
- * This software may be modified and distributed under the terms of the MIT
- * license. See the LICENSE file for details.
- */
-
-namespace Wikimedia\Composer\Merge;
-
-use Composer\Composer;
-
-/**
- * Mutable plugin state
- *
- * @author Bryan Davis <bd808@bd808.com>
- */
-class PluginState
-{
-    /**
-     * @var Composer $composer
-     */
-    protected $composer;
-
-    /**
-     * @var array $includes
-     */
-    protected $includes = array();
-
-    /**
-     * @var array $requires
-     */
-    protected $requires = array();
-
-    /**
-     * @var array $duplicateLinks
-     */
-    protected $duplicateLinks = array();
-
-    /**
-     * @var bool $devMode
-     */
-    protected $devMode = false;
-
-    /**
-     * @var bool $recurse
-     */
-    protected $recurse = true;
-
-    /**
-     * @var bool $replace
-     */
-    protected $replace = false;
-
-    /**
-     * Whether to merge the -dev sections.
-     * @var bool $mergeDev
-     */
-    protected $mergeDev = true;
-
-    /**
-     * Whether to merge the extra section.
-     *
-     * By default, the extra section is not merged and there will be many
-     * cases where the merge of the extra section is performed too late
-     * to be of use to other plugins. When enabled, merging uses one of
-     * two strategies - either 'first wins' or 'last wins'. When enabled,
-     * 'first wins' is the default behaviour. If Replace mode is activated
-     * then 'last wins' is used.
-     *
-     * @var bool $mergeExtra
-     */
-    protected $mergeExtra = false;
-
-    /**
-     * @var bool $firstInstall
-     */
-    protected $firstInstall = false;
-
-    /**
-     * @var bool $locked
-     */
-    protected $locked = false;
-
-    /**
-     * @var bool $dumpAutoloader
-     */
-    protected $dumpAutoloader = false;
-
-    /**
-     * @var bool $optimizeAutoloader
-     */
-    protected $optimizeAutoloader = false;
-
-    /**
-     * @param Composer $composer
-     */
-    public function __construct(Composer $composer)
-    {
-        $this->composer = $composer;
-    }
-
-    /**
-     * Load plugin settings
-     */
-    public function loadSettings()
-    {
-        $extra = $this->composer->getPackage()->getExtra();
-        $config = array_merge(
-            array(
-                'include' => array(),
-                'require' => array(),
-                'recurse' => true,
-                'replace' => false,
-                'merge-dev' => true,
-                'merge-extra' => false,
-            ),
-            isset($extra['merge-plugin']) ? $extra['merge-plugin'] : array()
-        );
-
-        $this->includes = (is_array($config['include'])) ?
-            $config['include'] : array($config['include']);
-        $this->requires = (is_array($config['require'])) ?
-            $config['require'] : array($config['require']);
-        $this->recurse = (bool)$config['recurse'];
-        $this->replace = (bool)$config['replace'];
-        $this->mergeDev = (bool)$config['merge-dev'];
-        $this->mergeExtra = (bool)$config['merge-extra'];
-    }
-
-    /**
-     * Get list of filenames and/or glob patterns to include
-     *
-     * @return array
-     */
-    public function getIncludes()
-    {
-        return $this->includes;
-    }
-
-    /**
-     * Get list of filenames and/or glob patterns to require
-     *
-     * @return array
-     */
-    public function getRequires()
-    {
-        return $this->requires;
-    }
-
-    /**
-     * Set the first install flag
-     *
-     * @param bool $flag
-     */
-    public function setFirstInstall($flag)
-    {
-        $this->firstInstall = (bool)$flag;
-    }
-
-    /**
-     * Is this the first time that the plugin has been installed?
-     *
-     * @return bool
-     */
-    public function isFirstInstall()
-    {
-        return $this->firstInstall;
-    }
-
-    /**
-     * Set the locked flag
-     *
-     * @param bool $flag
-     */
-    public function setLocked($flag)
-    {
-        $this->locked = (bool)$flag;
-    }
-
-    /**
-     * Was a lockfile present when the plugin was installed?
-     *
-     * @return bool
-     */
-    public function isLocked()
-    {
-        return $this->locked;
-    }
-
-    /**
-     * Should an update be forced?
-     *
-     * @return true If packages are not locked
-     */
-    public function forceUpdate()
-    {
-        return !$this->locked;
-    }
-
-    /**
-     * Set the devMode flag
-     *
-     * @param bool $flag
-     */
-    public function setDevMode($flag)
-    {
-        $this->devMode = (bool)$flag;
-    }
-
-    /**
-     * Should devMode settings be processed?
-     *
-     * @return bool
-     */
-    public function isDevMode()
-    {
-        return $this->mergeDev && $this->devMode;
-    }
-
-    /**
-     * Set the dumpAutoloader flag
-     *
-     * @param bool $flag
-     */
-    public function setDumpAutoloader($flag)
-    {
-        $this->dumpAutoloader = (bool)$flag;
-    }
-
-    /**
-     * Is the autoloader file supposed to be written out?
-     *
-     * @return bool
-     */
-    public function shouldDumpAutoloader()
-    {
-        return $this->dumpAutoloader;
-    }
-
-    /**
-     * Set the optimizeAutoloader flag
-     *
-     * @param bool $flag
-     */
-    public function setOptimizeAutoloader($flag)
-    {
-        $this->optimizeAutoloader = (bool)$flag;
-    }
-
-    /**
-     * Should the autoloader be optimized?
-     *
-     * @return bool
-     */
-    public function shouldOptimizeAutoloader()
-    {
-        return $this->optimizeAutoloader;
-    }
-
-    /**
-     * Add duplicate packages
-     *
-     * @param string $type Package type
-     * @param array $packages
-     */
-    public function addDuplicateLinks($type, array $packages)
-    {
-        if (!isset($this->duplicateLinks[$type])) {
-            $this->duplicateLinks[$type] = array();
-        }
-        $this->duplicateLinks[$type] =
-            array_merge($this->duplicateLinks[$type], $packages);
-    }
-
-    /**
-     * Get duplicate packages
-     *
-     * @param string $type Package type
-     * @return array
-     */
-    public function getDuplicateLinks($type)
-    {
-        return isset($this->duplicateLinks[$type]) ?
-            $this->duplicateLinks[$type] : array();
-    }
-
-    /**
-     * Should includes be recursively processed?
-     *
-     * @return bool
-     */
-    public function recurseIncludes()
-    {
-        return $this->recurse;
-    }
-
-    /**
-     * Should duplicate links be replaced in a 'last definition wins' order?
-     *
-     * @return bool
-     */
-    public function replaceDuplicateLinks()
-    {
-        return $this->replace;
-    }
-
-    /**
-     * Should the extra section be merged?
-     *
-     * By default, the extra section is not merged and there will be many
-     * cases where the merge of the extra section is performed too late
-     * to be of use to other plugins. When enabled, merging uses one of
-     * two strategies - either 'first wins' or 'last wins'. When enabled,
-     * 'first wins' is the default behaviour. If Replace mode is activated
-     * then 'last wins' is used.
-     *
-     * @return bool
-     */
-    public function shouldMergeExtra()
-    {
-        return $this->mergeExtra;
-    }
-}
-// vim:sw=4:ts=4:sts=4:et:
diff --git a/vendor/wikimedia/composer-merge-plugin/src/Merge/StabilityFlags.php b/vendor/wikimedia/composer-merge-plugin/src/Merge/StabilityFlags.php
deleted file mode 100644
index 1c106e0..0000000
--- a/vendor/wikimedia/composer-merge-plugin/src/Merge/StabilityFlags.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-/**
- * This file is part of the Composer Merge plugin.
- *
- * Copyright (C) 2015 Bryan Davis, Wikimedia Foundation, and contributors
- *
- * This software may be modified and distributed under the terms of the MIT
- * license. See the LICENSE file for details.
- */
-
-namespace Wikimedia\Composer\Merge;
-
-use Composer\Package\BasePackage;
-use Composer\Package\Version\VersionParser;
-
-/**
- * Adapted from Composer's RootPackageLoader::extractStabilityFlags
- * @author Bryan Davis <bd808@bd808.com>
- */
-class StabilityFlags
-{
-
-    /**
-     * @var array Current package name => stability mappings
-     */
-    protected $stabilityFlags;
-
-    /**
-     * @var int Current default minimum stability
-     */
-    protected $minimumStability;
-
-    /**
-     * @var string Regex to extract an explict stability flag (eg '@dev')
-     */
-    protected $explicitStabilityRe;
-
-
-    /**
-     * @param array $stabilityFlags Current package name => stability mappings
-     * @param int $minimumStability Current default minimum stability
-     */
-    public function __construct(
-        array $stabilityFlags = array(),
-        $minimumStability = BasePackage::STABILITY_STABLE
-    ) {
-        $this->stabilityFlags = $stabilityFlags;
-        $this->minimumStability = $this->getStabilityInt($minimumStability);
-        $this->explicitStabilityRe = '/^[^@]*?@(' .
-            implode('|', array_keys(BasePackage::$stabilities)) .
-            ')$/i';
-    }
-
-    /**
-     * Get the stability value for a given string.
-     *
-     * @param string $name Stability name
-     * @return int Stability value
-     */
-    protected function getStabilityInt($name)
-    {
-        $name = VersionParser::normalizeStability($name);
-        return isset(BasePackage::$stabilities[$name]) ?
-            BasePackage::$stabilities[$name] :
-            BasePackage::STABILITY_STABLE;
-    }
-
-    /**
-     * Extract and merge stability flags from the given collection of
-     * requires with another collection of stability flags.
-     *
-     * @param array $requires New package name => link mappings
-     * @return array Unified package name => stability mappings
-     */
-    public function extractAll(array $requires)
-    {
-        $flags = array();
-
-        foreach ($requires as $name => $link) {
-            $name = strtolower($name);
-            $version = $link->getPrettyConstraint();
-
-            $stability = $this->getExplicitStability($version);
-
-            if ($stability === null) {
-                $stability = $this->getParsedStability($version);
-            }
-
-            $flags[$name] = max($stability, $this->getCurrentStability($name));
-        }
-
-        // Filter out null stability values
-        return array_filter($flags, function ($v) {
-            return $v !== null;
-        });
-    }
-
-
-    /**
-     * Extract the most unstable explicit stability (eg '@dev') from a version
-     * specification.
-     *
-     * @param string $version
-     * @return int|null Stability or null if no explict stability found
-     */
-    protected function getExplicitStability($version)
-    {
-        $found = null;
-        $constraints = $this->splitConstraints($version);
-        foreach ($constraints as $constraint) {
-            if (preg_match($this->explicitStabilityRe, $constraint, $match)) {
-                $stability = $this->getStabilityInt($match[1]);
-                $found = max($stability, $found);
-            }
-        }
-        return $found;
-    }
-
-
-    /**
-     * Split a version specification into a list of version constraints.
-     *
-     * @param string $version
-     * @return array
-     */
-    protected function splitConstraints($version)
-    {
-        $found = array();
-        $orConstraints = preg_split('/\s*\|\|?\s*/', trim($version));
-        foreach ($orConstraints as $constraints) {
-            $andConstraints = preg_split(
-                '/(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)/',
-                $constraints
-            );
-            foreach ($andConstraints as $constraint) {
-                $found[] = $constraint;
-            }
-        }
-        return $found;
-    }
-
-
-    /**
-     * Get the stability of a version
-     *
-     * @param string $version
-     * @return int|null Stability or null if STABLE or less than minimum
-     */
-    protected function getParsedStability($version)
-    {
-        // Drop aliasing if used
-        $version = preg_replace('/^([^,\s@]+) as .+$/', '$1', $version);
-        $stability = $this->getStabilityInt(
-            VersionParser::parseStability($version)
-        );
-
-        if ($stability === BasePackage::STABILITY_STABLE ||
-            $this->minimumStability > $stability
-        ) {
-            // Ignore if 'stable' or more stable than the global
-            // minimum
-            $stability = null;
-        }
-
-        return $stability;
-    }
-
-
-    /**
-     * Get the current stability of a given package.
-     *
-     * @param string $name
-     * @return int|null Stability of null if not set
-     */
-    protected function getCurrentStability($name)
-    {
-        return isset($this->stabilityFlags[$name]) ?
-            $this->stabilityFlags[$name] : null;
-    }
-}
-// vim:sw=4:ts=4:sts=4:et:
diff --git a/vendor/wikimedia/composer-merge-plugin/src/MergePlugin.php b/vendor/wikimedia/composer-merge-plugin/src/MergePlugin.php
deleted file mode 100644
index ea41d41..0000000
--- a/vendor/wikimedia/composer-merge-plugin/src/MergePlugin.php
+++ /dev/null
@@ -1,314 +0,0 @@
-<?php
-/**
- * This file is part of the Composer Merge plugin.
- *
- * Copyright (C) 2015 Bryan Davis, Wikimedia Foundation, and contributors
- *
- * This software may be modified and distributed under the terms of the MIT
- * license. See the LICENSE file for details.
- */
-
-namespace Wikimedia\Composer;
-
-use Wikimedia\Composer\Merge\ExtraPackage;
-use Wikimedia\Composer\Merge\MissingFileException;
-use Wikimedia\Composer\Merge\PluginState;
-
-use Composer\Composer;
-use Composer\DependencyResolver\Operation\InstallOperation;
-use Composer\EventDispatcher\EventSubscriberInterface;
-use Composer\Factory;
-use Composer\Installer;
-use Composer\Installer\InstallerEvent;
-use Composer\Installer\InstallerEvents;
-use Composer\Installer\PackageEvent;
-use Composer\Installer\PackageEvents;
-use Composer\IO\IOInterface;
-use Composer\Package\RootPackageInterface;
-use Composer\Plugin\PluginInterface;
-use Composer\Script\Event;
-use Composer\Script\ScriptEvents;
-
-/**
- * Composer plugin that allows merging multiple composer.json files.
- *
- * When installed, this plugin will look for a "merge-plugin" key in the
- * composer configuration's "extra" section. The value for this key is
- * a set of options configuring the plugin.
- *
- * An "include" setting is required. The value of this setting can be either
- * a single value or an array of values. Each value is treated as a glob()
- * pattern identifying additional composer.json style configuration files to
- * merge into the configuration for the current compser execution.
- *
- * The "autoload", "autoload-dev", "conflict", "provide", "replace",
- * "repositories", "require", "require-dev", and "suggest" sections of the
- * found configuration files will be merged into the root package
- * configuration as though they were directly included in the top-level
- * composer.json file.
- *
- * If included files specify conflicting package versions for "require" or
- * "require-dev", the normal Composer dependency solver process will be used
- * to attempt to resolve the conflict. Specifying the 'replace' key as true will
- * change this default behaviour so that the last-defined version of a package
- * will win, allowing for force-overrides of package defines.
- *
- * By default the "extra" section is not merged. This can be enabled by
- * setitng the 'merge-extra' key to true. In normal mode, when the same key is
- * found in both the original and the imported extra section, the version in
- * the original config is used and the imported version is skipped. If
- * 'replace' mode is active, this behaviour changes so the imported version of
- * the key is used, replacing the version in the original config.
- *
- *
- * @code
- * {
- *     "require": {
- *         "wikimedia/composer-merge-plugin": "dev-master"
- *     },
- *     "extra": {
- *         "merge-plugin": {
- *             "include": [
- *                 "composer.local.json"
- *             ]
- *         }
- *     }
- * }
- * @endcode
- *
- * @author Bryan Davis <bd808@bd808.com>
- */
-class MergePlugin implements PluginInterface, EventSubscriberInterface
-{
-
-    /**
-     * Offical package name
-     */
-    const PACKAGE_NAME = 'wikimedia/composer-merge-plugin';
-
-    /**
-     * @var Composer $composer
-     */
-    protected $composer;
-
-    /**
-     * @var PluginState $state
-     */
-    protected $state;
-
-    /**
-     * @var Logger $logger
-     */
-    protected $logger;
-
-    /**
-     * Files that have already been processed
-     *
-     * @var string[] $loadedFiles
-     */
-    protected $loadedFiles = array();
-
-    /**
-     * {@inheritdoc}
-     */
-    public function activate(Composer $composer, IOInterface $io)
-    {
-        $this->composer = $composer;
-        $this->state = new PluginState($this->composer);
-        $this->logger = new Logger('merge-plugin', $io);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public static function getSubscribedEvents()
-    {
-        return array(
-            InstallerEvents::PRE_DEPENDENCIES_SOLVING => 'onDependencySolve',
-            PackageEvents::POST_PACKAGE_INSTALL => 'onPostPackageInstall',
-            ScriptEvents::POST_INSTALL_CMD => 'onPostInstallOrUpdate',
-            ScriptEvents::POST_UPDATE_CMD => 'onPostInstallOrUpdate',
-            ScriptEvents::PRE_AUTOLOAD_DUMP => 'onInstallUpdateOrDump',
-            ScriptEvents::PRE_INSTALL_CMD => 'onInstallUpdateOrDump',
-            ScriptEvents::PRE_UPDATE_CMD => 'onInstallUpdateOrDump',
-        );
-    }
-
-    /**
-     * Handle an event callback for an install, update or dump command by
-     * checking for "merge-plugin" in the "extra" data and merging package
-     * contents if found.
-     *
-     * @param Event $event
-     */
-    public function onInstallUpdateOrDump(Event $event)
-    {
-        $this->state->loadSettings();
-        $this->state->setDevMode($event->isDevMode());
-        $this->mergeFiles($this->state->getIncludes(), false);
-        $this->mergeFiles($this->state->getRequires(), true);
-
-        if ($event->getName() === ScriptEvents::PRE_AUTOLOAD_DUMP) {
-            $this->state->setDumpAutoloader(true);
-            $flags = $event->getFlags();
-            if (isset($flags['optimize'])) {
-                $this->state->setOptimizeAutoloader($flags['optimize']);
-            }
-        }
-    }
-
-    /**
-     * Find configuration files matching the configured glob patterns and
-     * merge their contents with the master package.
-     *
-     * @param array $patterns List of files/glob patterns
-     * @param bool $required Are the patterns required to match files?
-     * @throws MissingFileException when required and a pattern returns no
-     *      results
-     */
-    protected function mergeFiles(array $patterns, $required = false)
-    {
-        $root = $this->composer->getPackage();
-
-        $files = array_map(
-            function ($files, $pattern) use ($required) {
-                if ($required && !$files) {
-                    throw new MissingFileException(
-                        "merge-plugin: No files matched required '{$pattern}'"
-                    );
-                }
-                return $files;
-            },
-            array_map('glob', $patterns),
-            $patterns
-        );
-
-        foreach (array_reduce($files, 'array_merge', array()) as $path) {
-            $this->mergeFile($root, $path);
-        }
-    }
-
-    /**
-     * Read a JSON file and merge its contents
-     *
-     * @param RootPackageInterface $root
-     * @param string $path
-     */
-    protected function mergeFile(RootPackageInterface $root, $path)
-    {
-        if (isset($this->loadedFiles[$path])) {
-            $this->logger->debug("Already merged <comment>$path</comment>");
-            return;
-        } else {
-            $this->loadedFiles[$path] = true;
-        }
-        $this->logger->info("Loading <comment>{$path}</comment>...");
-
-        $package = new ExtraPackage($path, $this->composer, $this->logger);
-        $package->mergeInto($root, $this->state);
-
-        if ($this->state->recurseIncludes()) {
-            $this->mergeFiles($package->getIncludes(), false);
-            $this->mergeFiles($package->getRequires(), true);
-        }
-    }
-
-    /**
-     * Handle an event callback for pre-dependency solving phase of an install
-     * or update by adding any duplicate package dependencies found during
-     * initial merge processing to the request that will be processed by the
-     * dependency solver.
-     *
-     * @param InstallerEvent $event
-     */
-    public function onDependencySolve(InstallerEvent $event)
-    {
-        $request = $event->getRequest();
-        foreach ($this->state->getDuplicateLinks('require') as $link) {
-            $this->logger->info(
-                "Adding dependency <comment>{$link}</comment>"
-            );
-            $request->install($link->getTarget(), $link->getConstraint());
-        }
-        if ($this->state->isDevMode()) {
-            foreach ($this->state->getDuplicateLinks('require-dev') as $link) {
-                $this->logger->info(
-                    "Adding dev dependency <comment>{$link}</comment>"
-                );
-                $request->install($link->getTarget(), $link->getConstraint());
-            }
-        }
-    }
-
-    /**
-     * Handle an event callback following installation of a new package by
-     * checking to see if the package that was installed was our plugin.
-     *
-     * @param PackageEvent $event
-     */
-    public function onPostPackageInstall(PackageEvent $event)
-    {
-        $op = $event->getOperation();
-        if ($op instanceof InstallOperation) {
-            $package = $op->getPackage()->getName();
-            if ($package === self::PACKAGE_NAME) {
-                $this->logger->info('composer-merge-plugin installed');
-                $this->state->setFirstInstall(true);
-                $this->state->setLocked(
-                    $event->getComposer()->getLocker()->isLocked()
-                );
-            }
-        }
-    }
-
-    /**
-     * Handle an event callback following an install or update command. If our
-     * plugin was installed during the run then trigger an update command to
-     * process any merge-patterns in the current config.
-     *
-     * @param Event $event
-     */
-    public function onPostInstallOrUpdate(Event $event)
-    {
-        // @codeCoverageIgnoreStart
-        if ($this->state->isFirstInstall()) {
-            $this->state->setFirstInstall(false);
-            $this->logger->info(
-                '<comment>' .
-                'Running additional update to apply merge settings' .
-                '</comment>'
-            );
-
-            $config = $this->composer->getConfig();
-
-            $preferSource = $config->get('preferred-install') == 'source';
-            $preferDist = $config->get('preferred-install') == 'dist';
-
-            $installer = Installer::create(
-                $event->getIO(),
-                // Create a new Composer instance to ensure full processing of
-                // the merged files.
-                Factory::create($event->getIO(), null, false)
-            );
-
-            $installer->setPreferSource($preferSource);
-            $installer->setPreferDist($preferDist);
-            $installer->setDevMode($event->isDevMode());
-            $installer->setDumpAutoloader($this->state->shouldDumpAutoloader());
-            $installer->setOptimizeAutoloader(
-                $this->state->shouldOptimizeAutoloader()
-            );
-
-            if ($this->state->forceUpdate()) {
-                // Force update mode so that new packages are processed rather
-                // than just telling the user that composer.json and
-                // composer.lock don't match.
-                $installer->setUpdate(true);
-            }
-
-            $installer->run();
-        }
-        // @codeCoverageIgnoreEnd
-    }
-}
-// vim:sw=4:ts=4:sts=4:et:
diff --git a/vendor/zendframework/zend-diactoros/.coveralls.yml b/vendor/zendframework/zend-diactoros/.coveralls.yml
deleted file mode 100644
index 53bda82..0000000
--- a/vendor/zendframework/zend-diactoros/.coveralls.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-coverage_clover: clover.xml
-json_path: coveralls-upload.json
-src_dir: src
diff --git a/vendor/zendframework/zend-diactoros/CHANGELOG.md b/vendor/zendframework/zend-diactoros/CHANGELOG.md
deleted file mode 100644
index 57b0a87..0000000
--- a/vendor/zendframework/zend-diactoros/CHANGELOG.md
+++ /dev/null
@@ -1,302 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 1.1.3 - 2015-08-10
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#71](https://github.com/zendframework/zend-diactoros/pull/71) fixes the
-  docblock of the `JsonResponse` constructor to typehint the `$data` argument
-  as `mixed`.
-- [#73](https://github.com/zendframework/zend-diactoros/pull/73) changes the
-  behavior in `Request` such that if it marshals a stream during instantiation,
-  the stream is marked as writeable (specifically, mode `wb+`).
-- [#85](https://github.com/zendframework/zend-diactoros/pull/85) updates the
-  behavior of `Zend\Diactoros\Uri`'s various `with*()` methods that are
-  documented as accepting strings to raise exceptions on non-string input.
-  Previously, several simply passed non-string input on verbatim, others
-  normalized the input, and a few correctly raised the exceptions. Behavior is
-  now consistent across each.
-- [#87](https://github.com/zendframework/zend-diactoros/pull/87) fixes
-  `UploadedFile` to ensure that `moveTo()` works correctly in non-SAPI
-  environments when the file provided to the constructor is a path.
-
-## 1.1.2 - 2015-07-12
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#67](https://github.com/zendframework/zend-diactoros/pull/67) ensures that
-  the `Stream` class only accepts `stream` resources, not any resource.
-
-## 1.1.1 - 2015-06-25
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#64](https://github.com/zendframework/zend-diactoros/pull/64) fixes the
-  behavior of `JsonResponse` with regards to serialization of `null` and scalar
-  values; the new behavior is to serialize them verbatim, without any casting.
-
-## 1.1.0 - 2015-06-24
-
-### Added
-
-- [#52](https://github.com/zendframework/zend-diactoros/pull/52),
-  [#58](https://github.com/zendframework/zend-diactoros/pull/58),
-  [#59](https://github.com/zendframework/zend-diactoros/pull/59), and
-  [#61](https://github.com/zendframework/zend-diactoros/pull/61) create several
-  custom response types for simplifying response creation:
-
-  - `Zend\Diactoros\Response\HtmlResponse` accepts HTML content via its
-    constructor, and sets the `Content-Type` to `text/html`.
-  - `Zend\Diactoros\Response\JsonResponse` accepts data to serialize to JSON via
-    its constructor, and sets the `Content-Type` to `application/json`.
-  - `Zend\Diactoros\Response\EmptyResponse` allows creating empty, read-only
-    responses, with a default status code of 204.
-  - `Zend\Diactoros\Response\RedirectResponse` allows specifying a URI for the
-    `Location` header in the constructor, with a default status code of 302.
-
-  Each also accepts an optional status code, and optional headers (which can
-  also be used to provide an alternate `Content-Type` in the case of the HTML
-  and JSON responses).
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [#43](https://github.com/zendframework/zend-diactoros/pull/43) removed both
-  `ServerRequestFactory::marshalUri()` and `ServerRequestFactory::marshalHostAndPort()`,
-  which were deprecated prior to the 1.0 release.
-
-### Fixed
-
-- [#29](https://github.com/zendframework/zend-diactoros/pull/29) fixes request
-  method validation to allow any valid token as defined by [RFC
-  7230](http://tools.ietf.org/html/rfc7230#appendix-B). This allows usage of
-  custom request methods, vs a static, hard-coded list.
-
-## 1.0.5 - 2015-06-24
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#60](https://github.com/zendframework/zend-diactoros/pull/60) fixes
-  the behavior of `UploadedFile` when the `$errorStatus` provided at
-  instantiation is not `UPLOAD_ERR_OK`. Prior to the fix, an
-  `InvalidArgumentException` would occur at instantiation due to the fact that
-  the upload file was missing or invalid. With the fix, no exception is raised
-  until a call to `moveTo()` or `getStream()` is made.
-
-## 1.0.4 - 2015-06-23
-
-This is a security release.
-
-A patch has been applied to `Zend\Diactoros\Uri::filterPath()` that ensures that
-paths can only begin with a single leading slash. This prevents the following
-potential security issues:
-
-- XSS vectors. If the URI path is used for links or form targets, this prevents
-  cases where the first segment of the path resembles a domain name, thus
-  creating scheme-relative links such as `//example.com/foo`. With the patch,
-  the leading double slash is reduced to a single slash, preventing the XSS
-  vector.
-- Open redirects. If the URI path is used for `Location` or `Link` headers,
-  without a scheme and authority, potential for open redirects exist if clients
-  do not prepend the scheme and authority. Again, preventing a double slash
-  corrects the vector.
-
-If you are using `Zend\Diactoros\Uri` for creating links, form targets, or
-redirect paths, and only using the path segment, we recommend upgrading
-immediately.
-
-### Added
-
-- [#25](https://github.com/zendframework/zend-diactoros/pull/25) adds
-  documentation. Documentation is written in markdown, and can be converted to
-  HTML using [bookdown](http://bookdown.io). New features now MUST include
-  documentation for acceptance.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#51](https://github.com/zendframework/zend-diactoros/pull/51) fixes
-  `MessageTrait::getHeaderLine()` to return an empty string instead of `null` if
-  the header is undefined (which is the behavior specified in PSR-7).
-- [#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 
-  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`.
-  - If no `Host` header is set, the `$preserveHost` flag MUST be ignored when
-    calling `withUri()` (previously, Diactoros would not set the `Host` header
-    if `$preserveHost` was `true`, but no `Host` header was present).
-  - The request method MUST be a string; it CAN be empty. Previously, Diactoros
-    would return `null`.
-  - The request MUST return a `UriInterface` instance from `getUri()`; that
-    instance CAN be empty. Previously, Diactoros would return `null`; now it
-    lazy-instantiates an empty `Uri` instance on initialization.
-- [ZF2015-05](http://framework.zend.com/security/advisory/ZF2015-05) was
-  addressed by altering `Uri::filterPath()` to prevent emitting a path prepended
-  with multiple slashes.
-
-## 1.0.3 - 2015-06-04
-
-### Added
-
-- [#48](https://github.com/zendframework/zend-diactoros/pull/48) drops the
-  minimum supported PHP version to 5.4, to allow an easier upgrade path for
-  Symfony 2.7 users, and potential Drupal 8 usage.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 1.0.2 - 2015-06-04
-
-### Added
-
-- [#27](https://github.com/zendframework/zend-diactoros/pull/27) adds phonetic
-  pronunciation of "Diactoros" to the README file.
-- [#36](https://github.com/zendframework/zend-diactoros/pull/36) adds property
-  annotations to the class-level docblock of `Zend\Diactoros\RequestTrait` to
-  ensure properties inherited from the `MessageTrait` are inherited by
-  implementations.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
--
-### Fixed
-
-- [#41](https://github.com/zendframework/zend-diactoros/pull/41) fixes the
-  namespace for test files to begin with `ZendTest` instead of `Zend`.
-- [#46](https://github.com/zendframework/zend-diactoros/pull/46) ensures that
-  the cookie and query params for the `ServerRequest` implementation are
-  initialized as arrays.
-- [#47](https://github.com/zendframework/zend-diactoros/pull/47) modifies the
-  internal logic in `HeaderSecurity::isValid()` to use a regular expression
-  instead of character-by-character comparisons, improving performance.
-
-## 1.0.1 - 2015-05-26
-
-### Added
-
-- [#10](https://github.com/zendframework/zend-diactoros/pull/10) adds
-  `Zend\Diactoros\RelativeStream`, which will return stream contents relative to
-  a given offset (i.e., a subset of the stream).  `AbstractSerializer` was
-  updated to create a `RelativeStream` when creating the body of a message,
-  which will prevent duplication of the stream in-memory.
-- [#21](https://github.com/zendframework/zend-diactoros/pull/21) adds a
-  `.gitattributes` file that excludes directories and files not needed for
-  production; this will further minify the package for production use cases.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#9](https://github.com/zendframework/zend-diactoros/pull/9) ensures that
-  attributes are initialized to an empty array, ensuring that attempts to
-  retrieve single attributes when none are defined will not produce errors.
-- [#14](https://github.com/zendframework/zend-diactoros/pull/14) updates
-  `Zend\Diactoros\Request` to use a `php://temp` stream by default instead of
-  `php://memory`, to ensure requests do not create an out-of-memory condition.
-- [#15](https://github.com/zendframework/zend-diactoros/pull/15) updates
-  `Zend\Diactoros\Stream` to ensure that write operations trigger an exception
-  if the stream is not writeable. Additionally, it adds more robust logic for
-  determining if a stream is writeable.
-
-## 1.0.0 - 2015-05-21
-
-First stable release, and first release as `zend-diactoros`.
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
diff --git a/vendor/zendframework/zend-diactoros/CONTRIBUTING.md b/vendor/zendframework/zend-diactoros/CONTRIBUTING.md
deleted file mode 100644
index d99a16c..0000000
--- a/vendor/zendframework/zend-diactoros/CONTRIBUTING.md
+++ /dev/null
@@ -1,223 +0,0 @@
-# CONTRIBUTING
-
-## RESOURCES
-
-If you wish to contribute to Zend Framework, please be sure to
-read/subscribe to the following resources:
-
- -  [Coding Standards](https://github.com/zendframework/zf2/wiki/Coding-Standards)
- -  [Contributor's Guide](http://framework.zend.com/participate/contributor-guide)
- -  ZF Contributor's mailing list:
-    Archives: http://zend-framework-community.634137.n4.nabble.com/ZF-Contributor-f680267.html
-    Subscribe: zf-contributors-subscribe@lists.zend.com
- -  ZF Contributor's IRC channel:
-    #zftalk.dev on Freenode.net
-
-If you are working on new features or refactoring [create a proposal](https://github.com/zendframework/zend-diactoros/issues/new).
-
-## Reporting Potential Security Issues
-
-If you have encountered a potential security vulnerability, please **DO NOT** report it on the public
-issue tracker: send it to us at [zf-security@zend.com](mailto:zf-security@zend.com) instead.
-We will work with you to verify the vulnerability and patch it as soon as possible.
-
-When reporting issues, please provide the following information:
-
-- Component(s) affected
-- A description indicating how to reproduce the issue
-- A summary of the security vulnerability and impact
-
-We request that you contact us via the email address above and give the project
-contributors a chance to resolve the vulnerability and issue a new release prior
-to any public exposure; this helps protect users and provides them with a chance
-to upgrade and/or update in order to protect their applications.
-
-For sensitive email communications, please use [our PGP key](http://framework.zend.com/zf-security-pgp-key.asc).
-
-## Documentation
-
-Documentation is in [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/),
-and rendered using [bookdown](http://bookdown.io). Please read and follow the [general documentation
-guidelines](https://github.com/zendframework/documentation/blob/master/CONTRIBUTING.md) when
-providing documentation.
-
-All new features **must** include documentation before they may be accepted and merged.
-
-## RUNNING TESTS
-
-To run tests:
-
-- Clone the repository:
-
-  ```console
-  $ git clone git@github.com:zendframework/zend-diactoros.git
-  $ cd
-  ```
-
-- Install dependencies via composer:
-
-  ```console
-  $ curl -sS https://getcomposer.org/installer | php --
-  $ ./composer.phar install
-  ```
-
-  If you don't have `curl` installed, you can also download `composer.phar` from https://getcomposer.org/
-
-- Run the tests via `phpunit` and the provided PHPUnit config, like in this example:
-
-  ```console
-  $ ./vendor/bin/phpunit
-  ```
-
-## Running Coding Standards Checks
-
-This component uses [phpcs](https://github.com/squizlabs/PHP_CodeSniffer) for coding
-standards checks, and provides configuration for our selected checks.
-`phpcs` is installed by default via Composer.
-
-To run checks only:
-
-```console
-$ ./vendor/bin/phpcs --standard=PSR2 src test
-```
-
-`phpcs` also installs a tool named `phpcbf` which can attempt to fix problems
-for you:
-
-```console
-$ ./vendor/bin/phpcbf --standard=PSR2 src test
-```
-
-If you allow phpcbf to fix CS issues, please re-run the tests to ensure
-they pass, and make sure you add and commit the changes after verification.
-
-## Recommended Workflow for Contributions
-
-Your first step is to establish a public repository from which we can
-pull your work into the master repository. We recommend using
-[GitHub](https://github.com), as that is where the component is already hosted.
-
-1. Setup a [GitHub account](http://github.com/), if you haven't yet
-2. Fork the repository (http://github.com/zendframework/zend-diactoros)
-3. Clone the canonical repository locally and enter it.
-
-   ```console
-   $ git clone git://github.com:zendframework/zend-diactoros.git
-   $ cd zend-diactoros
-   ```
-
-4. Add a remote to your fork; substitute your GitHub username in the command
-   below.
-
-   ```console
-   $ git remote add {username} git@github.com:{username}/zend-diactoros.git
-   $ git fetch {username}
-   ```
-
-### Keeping Up-to-Date
-
-Periodically, you should update your fork or personal repository to
-match the canonical repository. Assuming you have setup your local repository
-per the instructions above, you can do the following:
-
-
-```console
-$ git checkout master
-$ git fetch origin
-$ git rebase origin/master
-# OPTIONALLY, to keep your remote up-to-date -
-$ git push {username} master:master
-```
-
-If you're tracking other branches -- for example, the "develop" branch, where
-new feature development occurs -- you'll want to do the same operations for that
-branch; simply substitute  "develop" for "master".
-
-### Working on a patch
-
-We recommend you do each new feature or bugfix in a new branch. This simplifies
-the task of code review as well as the task of merging your changes into the
-canonical repository.
-
-A typical workflow will then consist of the following:
-
-1. Create a new local branch based off either your master or develop branch.
-2. Switch to your new local branch. (This step can be combined with the
-   previous step with the use of `git checkout -b`.)
-3. Do some work, commit, repeat as necessary.
-4. Push the local branch to your remote repository.
-5. Send a pull request.
-
-The mechanics of this process are actually quite trivial. Below, we will
-create a branch for fixing an issue in the tracker.
-
-```console
-$ git checkout -b hotfix/9295
-Switched to a new branch 'hotfix/9295'
-```
-
-... do some work ...
-
-
-```console
-$ git commit
-```
-
-... write your log message ...
-
-
-```console
-$ git push {username} hotfix/9295:hotfix/9295
-Counting objects: 38, done.
-Delta compression using up to 2 threads.
-Compression objects: 100% (18/18), done.
-Writing objects: 100% (20/20), 8.19KiB, done.
-Total 20 (delta 12), reused 0 (delta 0)
-To ssh://git@github.com/{username}/zend-diactoros.git
-   b5583aa..4f51698  HEAD -> master
-```
-
-To send a pull request, you have two options.
-
-If using GitHub, you can do the pull request from there. Navigate to
-your repository, select the branch you just created, and then select the
-"Pull Request" button in the upper right. Select the user/organization
-"zendframework" as the recipient.
-
-If using your own repository - or even if using GitHub - you can use `git
-format-patch` to create a patchset for us to apply; in fact, this is
-**recommended** for security-related patches. If you use `format-patch`, please
-send the patches as attachments to:
-
--  zf-devteam@zend.com for patches without security implications
--  zf-security@zend.com for security patches
-
-#### What branch to issue the pull request against?
-
-Which branch should you issue a pull request against?
-
-- For fixes against the stable release, issue the pull request against the
-  "master" branch.
-- For new features, or fixes that introduce new elements to the public API (such
-  as new public methods or properties), issue the pull request against the
-  "develop" branch.
-
-### Branch Cleanup
-
-As you might imagine, if you are a frequent contributor, you'll start to
-get a ton of branches both locally and on your remote.
-
-Once you know that your changes have been accepted to the master
-repository, we suggest doing some cleanup of these branches.
-
--  Local branch cleanup
-
-   ```console
-   $ git branch -d <branchname>
-   ```
-
--  Remote branch removal
-
-   ```console
-   $ git push {username} :<branchname>
-   ```
diff --git a/vendor/zendframework/zend-diactoros/LICENSE.md b/vendor/zendframework/zend-diactoros/LICENSE.md
deleted file mode 100644
index b401e72..0000000
--- a/vendor/zendframework/zend-diactoros/LICENSE.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Copyright (c) 2015, Zend Technologies USA, Inc.
-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 Zend Technologies USA, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/zendframework/zend-diactoros/README.md b/vendor/zendframework/zend-diactoros/README.md
deleted file mode 100644
index b25dc9b..0000000
--- a/vendor/zendframework/zend-diactoros/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# zend-diactoros
-
-Master:
-[![Build status][Master image]][Master]
-[![Coverage Status][Master coverage image]][Master coverage]
-Develop:
-[![Build status][Develop image]][Develop]
-[![Coverage Status][Develop coverage image]][Develop coverage]
-
-> Diactoros (pronunciation: `/dɪʌktɒrɒs/`): an epithet for Hermes, meaning literally, "the messenger."
-
-This package supercedes and replaces [phly/http](https://github.com/phly/http).
-
-`zend-diactoros` is a PHP package containing implementations of the [accepted PSR-7 HTTP message interfaces](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-7-http-message.md), as well as a "server" implementation similar to [node's http.Server](http://nodejs.org/api/http.html).
-
-* File issues at https://github.com/zendframework/zend-diactoros/issues
-* Issue patches to https://github.com/zendframework/zend-diactoros/pulls
-
-## Documentation
-
-Documentation is [in the doc tree](doc/), and can be compiled using [bookdown](http://bookdown.io):
-
-```console
-$ bookdown doc/bookdown.json
-$ 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`.
-
-  [Master]: https://travis-ci.org/zendframework/zend-diactoros
-  [Master image]: https://secure.travis-ci.org/zendframework/zend-diactoros.svg?branch=master
-  [Master coverage image]: https://img.shields.io/coveralls/zendframework/zend-diactoros/master.svg
-  [Master coverage]: https://coveralls.io/r/zendframework/zend-diactoros?branch=master
-  [Develop]: https://github.com/zendframework/zend-diactoros/tree/develop
-  [Develop image]:  https://secure.travis-ci.org/zendframework/zend-diactoros.svg?branch=develop
-  [Develop coverage image]: https://coveralls.io/repos/zendframework/zend-diactoros/badge.svg?branch=develop
-  [Develop coverage]: https://coveralls.io/r/zendframework/zend-diactoros?branch=develop
diff --git a/vendor/zendframework/zend-diactoros/composer.json b/vendor/zendframework/zend-diactoros/composer.json
deleted file mode 100644
index fee75d9..0000000
--- a/vendor/zendframework/zend-diactoros/composer.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "name": "zendframework/zend-diactoros",
-  "description": "PSR HTTP Message implementations",
-  "type": "library",
-  "license": "BSD-2-Clause",
-  "keywords": [
-    "http",
-    "psr",
-    "psr-7"
-  ],
-  "homepage": "https://github.com/zendframework/zend-diactoros",
-  "support": {
-    "issues": "https://github.com/zendframework/zend-diactoros/issues",
-    "source": "https://github.com/zendframework/zend-diactoros"
-  },
-  "extra": {
-    "branch-alias": {
-      "dev-master": "1.0-dev",
-      "dev-develop": "1.1-dev"
-    }
-  },
-  "require": {
-    "php": ">=5.4",
-    "psr/http-message": "~1.0"
-  },
-  "require-dev": {
-    "phpunit/PHPUnit": "~4.6",
-    "squizlabs/php_codesniffer": "^2.3.1"
-  },
-  "provide": {
-    "psr/http-message-implementation": "~1.0.0"
-  },
-  "autoload": {
-    "psr-4": {
-      "Zend\\Diactoros\\": "src/"
-    }
-  },
-  "autoload-dev": {
-    "psr-4": {
-      "ZendTest\\Diactoros\\": "test/"
-    },
-    "files": [
-      "test/TestAsset/Functions.php",
-      "test/TestAsset/SapiResponse.php"
-    ]
-  }
-}
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/AbstractSerializer.php b/vendor/zendframework/zend-diactoros/src/AbstractSerializer.php
deleted file mode 100644
index a55ca5a..0000000
--- a/vendor/zendframework/zend-diactoros/src/AbstractSerializer.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use Psr\Http\Message\StreamInterface;
-use UnexpectedValueException;
-
-/**
- * Provides base functionality for request and response de/serialization
- * strategies, including functionality for retrieving a line at a time from
- * the message, splitting headers from the body, and serializing headers.
- */
-abstract class AbstractSerializer
-{
-    const CR  = "\r";
-    const EOL = "\r\n";
-    const LF  = "\n";
-
-    /**
-     * Retrieve a single line from the stream.
-     *
-     * Retrieves a line from the stream; a line is defined as a sequence of
-     * characters ending in a CRLF sequence.
-     *
-     * @param StreamInterface $stream
-     * @return string
-     * @throws UnexpectedValueException if the sequence contains a CR or LF in
-     *     isolation, or ends in a CR.
-     */
-    protected static function getLine(StreamInterface $stream)
-    {
-        $line    = '';
-        $crFound = false;
-        while (! $stream->eof()) {
-            $char = $stream->read(1);
-
-            if ($crFound && $char === self::LF) {
-                $crFound = false;
-                break;
-            }
-
-            // CR NOT followed by LF
-            if ($crFound && $char !== self::LF) {
-                throw new UnexpectedValueException('Unexpected carriage return detected');
-            }
-
-            // LF in isolation
-            if (! $crFound && $char === self::LF) {
-                throw new UnexpectedValueException('Unexpected line feed detected');
-            }
-
-            // CR found; do not append
-            if ($char === self::CR) {
-                $crFound = true;
-                continue;
-            }
-
-            // Any other character: append
-            $line .= $char;
-        }
-
-        // CR found at end of stream
-        if ($crFound) {
-            throw new UnexpectedValueException("Unexpected end of headers");
-        }
-
-        return $line;
-    }
-
-    /**
-     * Split the stream into headers and body content.
-     *
-     * Returns an array containing two elements
-     *
-     * - The first is an array of headers
-     * - The second is a StreamInterface containing the body content
-     *
-     * @param StreamInterface $stream
-     * @return array
-     * @throws UnexpectedValueException For invalid headers.
-     */
-    protected static function splitStream(StreamInterface $stream)
-    {
-        $headers       = [];
-        $currentHeader = false;
-
-        while ($line = self::getLine($stream)) {
-            if (preg_match(';^(?P<name>[!#$%&\'*+.^_`\|~0-9a-zA-Z-]+):(?P<value>.*)$;', $line, $matches)) {
-                $currentHeader = $matches['name'];
-                if (! isset($headers[$currentHeader])) {
-                    $headers[$currentHeader] = [];
-                }
-                $headers[$currentHeader][] = ltrim($matches['value']);
-                continue;
-            }
-
-            if (! $currentHeader) {
-                throw new UnexpectedValueException('Invalid header detected');
-            }
-
-            if (! preg_match('#^[ \t]#', $line)) {
-                throw new UnexpectedValueException('Invalid header continuation');
-            }
-
-            // Append continuation to last header value found
-            $value = array_pop($headers[$currentHeader]);
-            $headers[$currentHeader][] = $value . ltrim($line);
-        }
-
-        // use RelativeStream to avoid copying initial stream into memory
-        return [$headers, new RelativeStream($stream, $stream->tell())];
-    }
-
-    /**
-     * Serialize headers to string values.
-     *
-     * @param array $headers
-     * @return string
-     */
-    protected static function serializeHeaders(array $headers)
-    {
-        $lines = [];
-        foreach ($headers as $header => $values) {
-            $normalized = self::filterHeader($header);
-            foreach ($values as $value) {
-                $lines[] = sprintf('%s: %s', $normalized, $value);
-            }
-        }
-
-        return implode("\r\n", $lines);
-    }
-
-    /**
-     * Filter a header name to wordcase
-     *
-     * @param string $header
-     * @return string
-     */
-    protected static function filterHeader($header)
-    {
-        $filtered = str_replace('-', ' ', $header);
-        $filtered = ucwords($filtered);
-        return str_replace(' ', '-', $filtered);
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Exception/DeprecatedMethodException.php b/vendor/zendframework/zend-diactoros/src/Exception/DeprecatedMethodException.php
deleted file mode 100644
index bdef44a..0000000
--- a/vendor/zendframework/zend-diactoros/src/Exception/DeprecatedMethodException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Exception;
-
-use BadMethodCallException;
-
-/**
- * Exception indicating a deprecated method.
- */
-class DeprecatedMethodException extends BadMethodCallException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Exception/ExceptionInterface.php b/vendor/zendframework/zend-diactoros/src/Exception/ExceptionInterface.php
deleted file mode 100644
index a2b22fb..0000000
--- a/vendor/zendframework/zend-diactoros/src/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Exception;
-
-/**
- * Marker interface for package-specific exceptions.
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-diactoros/src/HeaderSecurity.php b/vendor/zendframework/zend-diactoros/src/HeaderSecurity.php
deleted file mode 100644
index 231beac..0000000
--- a/vendor/zendframework/zend-diactoros/src/HeaderSecurity.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use InvalidArgumentException;
-
-/**
- * Provide security tools around HTTP headers to prevent common injection vectors.
- *
- * Code is largely lifted from the Zend\Http\Header\HeaderValue implementation in
- * Zend Framework, released with the copyright and license below.
- *
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-final class HeaderSecurity
-{
-    /**
-     * Private constructor; non-instantiable.
-     */
-    private function __construct()
-    {
-    }
-
-    /**
-     * Filter a header value
-     *
-     * Ensures CRLF header injection vectors are filtered.
-     *
-     * Per RFC 7230, only VISIBLE ASCII characters, spaces, and horizontal
-     * tabs are allowed in values; header continuations MUST consist of
-     * a single CRLF sequence followed by a space or horizontal tab.
-     *
-     * This method filters any values not allowed from the string, and is
-     * lossy.
-     *
-     * @see http://en.wikipedia.org/wiki/HTTP_response_splitting
-     * @param string $value
-     * @return string
-     */
-    public static function filter($value)
-    {
-        $value  = (string) $value;
-        $length = strlen($value);
-        $string = '';
-        for ($i = 0; $i < $length; $i += 1) {
-            $ascii = ord($value[$i]);
-
-            // Detect continuation sequences
-            if ($ascii === 13) {
-                $lf = ord($value[$i + 1]);
-                $ws = ord($value[$i + 2]);
-                if ($lf === 10 && in_array($ws, [9, 32], true)) {
-                    $string .= $value[$i] . $value[$i + 1];
-                    $i += 1;
-                }
-
-                continue;
-            }
-
-            // Non-visible, non-whitespace characters
-            // 9 === horizontal tab
-            // 32-126, 128-254 === visible
-            // 127 === DEL
-            // 255 === null byte
-            if (($ascii < 32 && $ascii !== 9)
-                || $ascii === 127
-                || $ascii > 254
-            ) {
-                continue;
-            }
-
-            $string .= $value[$i];
-        }
-
-        return $string;
-    }
-
-    /**
-     * Validate a header value.
-     *
-     * Per RFC 7230, only VISIBLE ASCII characters, spaces, and horizontal
-     * tabs are allowed in values; header continuations MUST consist of
-     * a single CRLF sequence followed by a space or horizontal tab.
-     *
-     * @see http://en.wikipedia.org/wiki/HTTP_response_splitting
-     * @param string $value
-     * @return bool
-     */
-    public static function isValid($value)
-    {
-        $value  = (string) $value;
-
-        // Look for:
-        // \n not preceded by \r, OR
-        // \r not followed by \n, OR
-        // \r\n not followed by space or horizontal tab; these are all CRLF attacks
-        if (preg_match("#(?:(?:(?<!\r)\n)|(?:\r(?!\n))|(?:\r\n(?![ \t])))#", $value)) {
-            return false;
-        }
-
-        // Non-visible, non-whitespace characters
-        // 9 === horizontal tab
-        // 10 === line feed
-        // 13 === carriage return
-        // 32-126, 128-254 === visible
-        // 127 === DEL (disallowed)
-        // 255 === null byte (disallowed)
-        if (preg_match('/[^\x09\x0a\x0d\x20-\x7E\x80-\xFE]/', $value)) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Assert a header value is valid.
-     *
-     * @param string $value
-     * @throws InvalidArgumentException for invalid values
-     */
-    public static function assertValid($value)
-    {
-        if (! self::isValid($value)) {
-            throw new InvalidArgumentException('Invalid header value');
-        }
-    }
-
-    /**
-     * Assert whether or not a header name is valid.
-     *
-     * @see http://tools.ietf.org/html/rfc7230#section-3.2
-     * @param mixed $name
-     * @throws InvalidArgumentException
-     */
-    public static function assertValidName($name)
-    {
-        if (! preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/', $name)) {
-            throw new InvalidArgumentException('Invalid header name');
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/MessageTrait.php b/vendor/zendframework/zend-diactoros/src/MessageTrait.php
deleted file mode 100644
index 1b3fc6f..0000000
--- a/vendor/zendframework/zend-diactoros/src/MessageTrait.php
+++ /dev/null
@@ -1,383 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use InvalidArgumentException;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Trait implementing the various methods defined in MessageInterface.
- *
- * @see https://github.com/php-fig/http-message/tree/master/src/MessageInterface.php
- */
-trait MessageTrait
-{
-    /**
-     * List of all registered headers, as key => array of values.
-     *
-     * @var array
-     */
-    protected $headers = [];
-
-    /**
-     * Map of normalized header name to original name used to register header.
-     *
-     * @var array
-     */
-    protected $headerNames = [];
-
-    /**
-     * @var string
-     */
-    private $protocol = '1.1';
-
-    /**
-     * @var StreamInterface
-     */
-    private $stream;
-
-    /**
-     * Retrieves the HTTP protocol version as a string.
-     *
-     * The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
-     *
-     * @return string HTTP protocol version.
-     */
-    public function getProtocolVersion()
-    {
-        return $this->protocol;
-    }
-
-    /**
-     * Return an instance with the specified HTTP protocol version.
-     *
-     * The version string MUST contain only the HTTP version number (e.g.,
-     * "1.1", "1.0").
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new protocol version.
-     *
-     * @param string $version HTTP protocol version
-     * @return static
-     */
-    public function withProtocolVersion($version)
-    {
-        $new = clone $this;
-        $new->protocol = $version;
-        return $new;
-    }
-
-    /**
-     * Retrieves all message headers.
-     *
-     * The keys represent the header name as it will be sent over the wire, and
-     * each value is an array of strings associated with the header.
-     *
-     *     // Represent the headers as a string
-     *     foreach ($message->getHeaders() as $name => $values) {
-     *         echo $name . ": " . implode(", ", $values);
-     *     }
-     *
-     *     // Emit headers iteratively:
-     *     foreach ($message->getHeaders() as $name => $values) {
-     *         foreach ($values as $value) {
-     *             header(sprintf('%s: %s', $name, $value), false);
-     *         }
-     *     }
-     *
-     * @return array Returns an associative array of the message's headers. Each
-     *     key MUST be a header name, and each value MUST be an array of strings.
-     */
-    public function getHeaders()
-    {
-        return $this->headers;
-    }
-
-    /**
-     * Checks if a header exists by the given case-insensitive name.
-     *
-     * @param string $header Case-insensitive header name.
-     * @return bool Returns true if any header names match the given header
-     *     name using a case-insensitive string comparison. Returns false if
-     *     no matching header name is found in the message.
-     */
-    public function hasHeader($header)
-    {
-        return array_key_exists(strtolower($header), $this->headerNames);
-    }
-
-    /**
-     * Retrieves a message header value by the given case-insensitive name.
-     *
-     * This method returns an array of all the header values of the given
-     * case-insensitive header name.
-     *
-     * If the header does not appear in the message, this method MUST return an
-     * empty array.
-     *
-     * @param string $header Case-insensitive header field name.
-     * @return string[] An array of string values as provided for the given
-     *    header. If the header does not appear in the message, this method MUST
-     *    return an empty array.
-     */
-    public function getHeader($header)
-    {
-        if (! $this->hasHeader($header)) {
-            return [];
-        }
-
-        $header = $this->headerNames[strtolower($header)];
-        $value  = $this->headers[$header];
-        $value  = is_array($value) ? $value : [$value];
-
-        return $value;
-    }
-
-    /**
-     * Retrieves a comma-separated string of the values for a single header.
-     *
-     * This method returns all of the header values of the given
-     * case-insensitive header name as a string concatenated together using
-     * a comma.
-     *
-     * NOTE: Not all header values may be appropriately represented using
-     * comma concatenation. For such headers, use getHeader() instead
-     * and supply your own delimiter when concatenating.
-     *
-     * If the header does not appear in the message, this method MUST return
-     * an empty string.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return string A string of values as provided for the given header
-     *    concatenated together using a comma. If the header does not appear in
-     *    the message, this method MUST return an empty string.
-     */
-    public function getHeaderLine($name)
-    {
-        $value = $this->getHeader($name);
-        if (empty($value)) {
-            return '';
-        }
-
-        return implode(',', $value);
-    }
-
-    /**
-     * Return an instance with the provided header, replacing any existing
-     * values of any headers with the same case-insensitive name.
-     *
-     * While header names are case-insensitive, the casing of the header will
-     * be preserved by this function, and returned from getHeaders().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new and/or updated header and value.
-     *
-     * @param string $header Case-insensitive header field name.
-     * @param string|string[] $value Header value(s).
-     * @return static
-     * @throws \InvalidArgumentException for invalid header names or values.
-     */
-    public function withHeader($header, $value)
-    {
-        if (is_string($value)) {
-            $value = [$value];
-        }
-
-        if (! is_array($value) || ! $this->arrayContainsOnlyStrings($value)) {
-            throw new InvalidArgumentException(
-                'Invalid header value; must be a string or array of strings'
-            );
-        }
-
-        HeaderSecurity::assertValidName($header);
-        self::assertValidHeaderValue($value);
-
-        $normalized = strtolower($header);
-
-        $new = clone $this;
-        $new->headerNames[$normalized] = $header;
-        $new->headers[$header]         = $value;
-
-        return $new;
-    }
-
-    /**
-     * Return an instance with the specified header appended with the
-     * given value.
-     *
-     * Existing values for the specified header will be maintained. The new
-     * value(s) will be appended to the existing list. If the header did not
-     * exist previously, it will be added.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new header and/or value.
-     *
-     * @param string $header Case-insensitive header field name to add.
-     * @param string|string[] $value Header value(s).
-     * @return static
-     * @throws \InvalidArgumentException for invalid header names or values.
-     */
-    public function withAddedHeader($header, $value)
-    {
-        if (is_string($value)) {
-            $value = [ $value ];
-        }
-
-        if (! is_array($value) || ! $this->arrayContainsOnlyStrings($value)) {
-            throw new InvalidArgumentException(
-                'Invalid header value; must be a string or array of strings'
-            );
-        }
-
-        HeaderSecurity::assertValidName($header);
-        self::assertValidHeaderValue($value);
-
-        if (! $this->hasHeader($header)) {
-            return $this->withHeader($header, $value);
-        }
-
-        $normalized = strtolower($header);
-        $header     = $this->headerNames[$normalized];
-
-        $new = clone $this;
-        $new->headers[$header] = array_merge($this->headers[$header], $value);
-        return $new;
-    }
-
-    /**
-     * Return an instance without the specified header.
-     *
-     * Header resolution MUST be done without case-sensitivity.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that removes
-     * the named header.
-     *
-     * @param string $header Case-insensitive header field name to remove.
-     * @return static
-     */
-    public function withoutHeader($header)
-    {
-        if (! $this->hasHeader($header)) {
-            return clone $this;
-        }
-
-        $normalized = strtolower($header);
-        $original   = $this->headerNames[$normalized];
-
-        $new = clone $this;
-        unset($new->headers[$original], $new->headerNames[$normalized]);
-        return $new;
-    }
-
-    /**
-     * Gets the body of the message.
-     *
-     * @return StreamInterface Returns the body as a stream.
-     */
-    public function getBody()
-    {
-        return $this->stream;
-    }
-
-    /**
-     * Return an instance with the specified message body.
-     *
-     * The body MUST be a StreamInterface object.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return a new instance that has the
-     * new body stream.
-     *
-     * @param StreamInterface $body Body.
-     * @return static
-     * @throws \InvalidArgumentException When the body is not valid.
-     */
-    public function withBody(StreamInterface $body)
-    {
-        $new = clone $this;
-        $new->stream = $body;
-        return $new;
-    }
-
-    /**
-     * Test that an array contains only strings
-     *
-     * @param array $array
-     * @return bool
-     */
-    private function arrayContainsOnlyStrings(array $array)
-    {
-        return array_reduce($array, [__CLASS__, 'filterStringValue'], true);
-    }
-
-    /**
-     * Filter a set of headers to ensure they are in the correct internal format.
-     *
-     * Used by message constructors to allow setting all initial headers at once.
-     *
-     * @param array $originalHeaders Headers to filter.
-     * @return array Filtered headers and names.
-     */
-    private function filterHeaders(array $originalHeaders)
-    {
-        $headerNames = $headers = [];
-        foreach ($originalHeaders as $header => $value) {
-            if (! is_string($header)) {
-                continue;
-            }
-
-            if (! is_array($value) && ! is_string($value)) {
-                continue;
-            }
-
-            if (! is_array($value)) {
-                $value = [ $value ];
-            }
-
-            $headerNames[strtolower($header)] = $header;
-            $headers[$header] = $value;
-        }
-
-        return [$headerNames, $headers];
-    }
-
-    /**
-     * Test if a value is a string
-     *
-     * Used with array_reduce.
-     *
-     * @param bool $carry
-     * @param mixed $item
-     * @return bool
-     */
-    private static function filterStringValue($carry, $item)
-    {
-        if (! is_string($item)) {
-            return false;
-        }
-        return $carry;
-    }
-
-    /**
-     * Assert that the provided header values are valid.
-     *
-     * @see http://tools.ietf.org/html/rfc7230#section-3.2
-     * @param string[] $values
-     * @throws InvalidArgumentException
-     */
-    private static function assertValidHeaderValue(array $values)
-    {
-        array_walk($values, __NAMESPACE__ . '\HeaderSecurity::assertValid');
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/PhpInputStream.php b/vendor/zendframework/zend-diactoros/src/PhpInputStream.php
deleted file mode 100644
index a035234..0000000
--- a/vendor/zendframework/zend-diactoros/src/PhpInputStream.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-/**
- * Caching version of php://input
- */
-class PhpInputStream extends Stream
-{
-    /**
-     * @var string
-     */
-    private $cache = '';
-
-    /**
-     * @var bool
-     */
-    private $reachedEof = false;
-
-    /**
-     * @param  string|resource $stream
-     * @param  string $mode
-     */
-    public function __construct($stream = 'php://input', $mode = 'r')
-    {
-        $mode = 'r';
-        parent::__construct($stream, $mode);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        if ($this->reachedEof) {
-            return $this->cache;
-        }
-
-        $this->getContents();
-        return $this->cache;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isWritable()
-    {
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($length)
-    {
-        $content = parent::read($length);
-        if ($content && ! $this->reachedEof) {
-            $this->cache .= $content;
-        }
-
-        if ($this->eof()) {
-            $this->reachedEof = true;
-        }
-
-        return $content;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContents($maxLength = -1)
-    {
-        if ($this->reachedEof) {
-            return $this->cache;
-        }
-
-        $contents     = stream_get_contents($this->resource, $maxLength);
-        $this->cache .= $contents;
-
-        if ($maxLength === -1 || $this->eof()) {
-            $this->reachedEof = true;
-        }
-
-        return $contents;
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/RelativeStream.php b/vendor/zendframework/zend-diactoros/src/RelativeStream.php
deleted file mode 100644
index f293d51..0000000
--- a/vendor/zendframework/zend-diactoros/src/RelativeStream.php
+++ /dev/null
@@ -1,168 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Class RelativeStream
- *
- * Wrapper for default Stream class, representing subpart (starting from given offset) of initial stream.
- * It can be used to avoid copying full stream, conserving memory.
- * @example see Zend\Diactoros\AbstractSerializer::splitStream()
- */
-final class RelativeStream implements StreamInterface
-{
-    /**
-     * @var StreamInterface
-     */
-    private $decoratedStream;
-
-    /**
-     * @var int
-     */
-    private $offset;
-
-    /**
-     * Class constructor
-     *
-     * @param StreamInterface $decoratedStream
-     * @param int $offset
-     */
-    public function __construct(StreamInterface $decoratedStream, $offset)
-    {
-        $this->decoratedStream = $decoratedStream;
-        $this->offset = (int)$offset;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        $this->seek(0);
-        return $this->getContents();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        $this->decoratedStream->close();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function detach()
-    {
-        return $this->decoratedStream->detach();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSize()
-    {
-        return $this->decoratedStream->getSize() - $this->offset;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function tell()
-    {
-        return $this->decoratedStream->tell() - $this->offset;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function eof()
-    {
-        return $this->decoratedStream->eof();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isSeekable()
-    {
-        return $this->decoratedStream->isSeekable();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        if ($whence == SEEK_SET) {
-            return $this->decoratedStream->seek($offset + $this->offset, $whence);
-        }
-        return $this->decoratedStream->seek($offset, $whence);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function rewind()
-    {
-        return $this->seek(0);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isWritable()
-    {
-        return $this->decoratedStream->isWritable();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($string)
-    {
-        return $this->decoratedStream->write($string);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isReadable()
-    {
-        return $this->decoratedStream->isReadable();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($length)
-    {
-        return $this->decoratedStream->read($length);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContents()
-    {
-        return $this->decoratedStream->getContents();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadata($key = null)
-    {
-        return $this->decoratedStream->getMetadata($key);
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Request.php b/vendor/zendframework/zend-diactoros/src/Request.php
deleted file mode 100644
index 6e00c25..0000000
--- a/vendor/zendframework/zend-diactoros/src/Request.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * HTTP Request encapsulation
- *
- * Requests are considered immutable; all methods that might change state are
- * implemented such that they retain the internal state of the current
- * message and return a new instance that contains the changed state.
- */
-class Request implements RequestInterface
-{
-    use MessageTrait, RequestTrait;
-
-    /**
-     * @param null|string $uri URI for the request, if any.
-     * @param null|string $method HTTP method for the request, if any.
-     * @param string|resource|StreamInterface $body Message body, if any.
-     * @param array $headers Headers for the message, if any.
-     * @throws \InvalidArgumentException for any invalid value.
-     */
-    public function __construct($uri = null, $method = null, $body = 'php://temp', array $headers = [])
-    {
-        $this->initialize($uri, $method, $body, $headers);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getHeaders()
-    {
-        $headers = $this->headers;
-        if (! $this->hasHeader('host')
-            && ($this->uri && $this->uri->getHost())
-        ) {
-            $headers['Host'] = [$this->getHostFromUri()];
-        }
-
-        return $headers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getHeader($header)
-    {
-        if (! $this->hasHeader($header)) {
-            if (strtolower($header) === 'host'
-                && ($this->uri && $this->uri->getHost())
-            ) {
-                return [$this->getHostFromUri()];
-            }
-
-            return [];
-        }
-
-        $header = $this->headerNames[strtolower($header)];
-        $value  = $this->headers[$header];
-        $value  = is_array($value) ? $value : [$value];
-
-        return $value;
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Request/Serializer.php b/vendor/zendframework/zend-diactoros/src/Request/Serializer.php
deleted file mode 100644
index d7c8d13..0000000
--- a/vendor/zendframework/zend-diactoros/src/Request/Serializer.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Request;
-
-use InvalidArgumentException;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\StreamInterface;
-use UnexpectedValueException;
-use Zend\Diactoros\AbstractSerializer;
-use Zend\Diactoros\Request;
-use Zend\Diactoros\Stream;
-use Zend\Diactoros\Uri;
-
-/**
- * Serialize (cast to string) or deserialize (cast string to Request) messages.
- *
- * This class provides functionality for serializing a RequestInterface instance
- * to a string, as well as the reverse operation of creating a Request instance
- * from a string/stream representing a message.
- */
-final class Serializer extends AbstractSerializer
-{
-    /**
-     * Deserialize a request string to a request instance.
-     *
-     * Internally, casts the message to a stream and invokes fromStream().
-     *
-     * @param string $message
-     * @return Request
-     * @throws UnexpectedValueException when errors occur parsing the message.
-     */
-    public static function fromString($message)
-    {
-        $stream = new Stream('php://temp', 'wb+');
-        $stream->write($message);
-        return self::fromStream($stream);
-    }
-
-    /**
-     * Deserialize a request stream to a request instance.
-     *
-     * @param StreamInterface $stream
-     * @return Request
-     * @throws UnexpectedValueException when errors occur parsing the message.
-     */
-    public static function fromStream(StreamInterface $stream)
-    {
-        if (! $stream->isReadable() || ! $stream->isSeekable()) {
-            throw new InvalidArgumentException('Message stream must be both readable and seekable');
-        }
-
-        $stream->rewind();
-
-        list($method, $requestTarget, $version) = self::getRequestLine($stream);
-        $uri = self::createUriFromRequestTarget($requestTarget);
-
-        list($headers, $body) = self::splitStream($stream);
-
-        return (new Request($uri, $method, $body, $headers))
-            ->withProtocolVersion($version)
-            ->withRequestTarget($requestTarget);
-    }
-
-    /**
-     * Serialize a request message to a string.
-     *
-     * @param RequestInterface $request
-     * @return string
-     */
-    public static function toString(RequestInterface $request)
-    {
-        $headers = self::serializeHeaders($request->getHeaders());
-        $body    = (string) $request->getBody();
-        $format  = '%s %s HTTP/%s%s%s';
-
-        if (! empty($headers)) {
-            $headers = "\r\n" . $headers;
-        }
-        if (! empty($body)) {
-            $headers .= "\r\n\r\n";
-        }
-
-        return sprintf(
-            $format,
-            $request->getMethod(),
-            $request->getRequestTarget(),
-            $request->getProtocolVersion(),
-            $headers,
-            $body
-        );
-    }
-
-    /**
-     * Retrieve the components of the request line.
-     *
-     * Retrieves the first line of the stream and parses it, raising an
-     * exception if it does not follow specifications; if valid, returns a list
-     * with the method, target, and version, in that order.
-     *
-     * @param StreamInterface $stream
-     * @return array
-     */
-    private static function getRequestLine(StreamInterface $stream)
-    {
-        $requestLine = self::getLine($stream);
-
-        if (! preg_match(
-            '#^(?P<method>[!\#$%&\'*+.^_`|~a-zA-Z0-9-]+) (?P<target>[^\s]+) HTTP/(?P<version>[1-9]\d*\.\d+)$#',
-            $requestLine,
-            $matches
-        )) {
-            throw new UnexpectedValueException('Invalid request line detected');
-        }
-
-        return [$matches['method'], $matches['target'], $matches['version']];
-    }
-
-    /**
-     * Create and return a Uri instance based on the provided request target.
-     *
-     * If the request target is of authority or asterisk form, an empty Uri
-     * instance is returned; otherwise, the value is used to create and return
-     * a new Uri instance.
-     *
-     * @param string $requestTarget
-     * @return Uri
-     */
-    private static function createUriFromRequestTarget($requestTarget)
-    {
-        if (preg_match('#^https?://#', $requestTarget)) {
-            return new Uri($requestTarget);
-        }
-
-        if (preg_match('#^(\*|[^/])#', $requestTarget)) {
-            return new Uri();
-        }
-
-        return new Uri($requestTarget);
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/RequestTrait.php b/vendor/zendframework/zend-diactoros/src/RequestTrait.php
deleted file mode 100644
index 2ef15a9..0000000
--- a/vendor/zendframework/zend-diactoros/src/RequestTrait.php
+++ /dev/null
@@ -1,309 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use InvalidArgumentException;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Trait with common request behaviors.
- *
- * Server and client-side requests differ slightly in how the Host header is
- * handled; on client-side, it should be calculated on-the-fly from the
- * composed URI (if present), while on server-side, it will be calculated from
- * the environment. As such, this trait exists to provide the common code
- * between both client-side and server-side requests, and each can then
- * use the headers functionality required by their implementations.
- *
- * @property array $headers
- * @property array $headerNames
- * @property StreamInterface $stream
- * @method bool hasHeader(string $header)
- */
-trait RequestTrait
-{
-    /**
-     * @var string
-     */
-    private $method = '';
-
-    /**
-     * The request-target, if it has been provided or calculated.
-     *
-     * @var null|string
-     */
-    private $requestTarget;
-
-    /**
-     * @var null|UriInterface
-     */
-    private $uri;
-
-    /**
-     * Initialize request state.
-     *
-     * Used by constructors.
-     *
-     * @param null|string $uri URI for the request, if any.
-     * @param null|string $method HTTP method for the request, if any.
-     * @param string|resource|StreamInterface $body Message body, if any.
-     * @param array $headers Headers for the message, if any.
-     * @throws InvalidArgumentException for any invalid value.
-     */
-    private function initialize($uri = null, $method = null, $body = 'php://memory', array $headers = [])
-    {
-        if (! $uri instanceof UriInterface && ! is_string($uri) && null !== $uri) {
-            throw new InvalidArgumentException(
-                'Invalid URI provided; must be null, a string, or a Psr\Http\Message\UriInterface instance'
-            );
-        }
-
-        $this->validateMethod($method);
-
-        if (! is_string($body) && ! is_resource($body) && ! $body instanceof StreamInterface) {
-            throw new InvalidArgumentException(
-                'Body must be a string stream resource identifier, '
-                . 'an actual stream resource, '
-                . 'or a Psr\Http\Message\StreamInterface implementation'
-            );
-        }
-
-        if (is_string($uri)) {
-            $uri = new Uri($uri);
-        }
-
-        $this->method = $method ?: '';
-        $this->uri    = $uri ?: new Uri();
-        $this->stream = ($body instanceof StreamInterface) ? $body : new Stream($body, 'wb+');
-
-        list($this->headerNames, $headers) = $this->filterHeaders($headers);
-        $this->assertHeaders($headers);
-        $this->headers = $headers;
-    }
-
-    /**
-     * Retrieves the message's request target.
-     *
-     * Retrieves the message's request-target either as it will appear (for
-     * clients), as it appeared at request (for servers), or as it was
-     * specified for the instance (see withRequestTarget()).
-     *
-     * In most cases, this will be the origin-form of the composed URI,
-     * unless a value was provided to the concrete implementation (see
-     * withRequestTarget() below).
-     *
-     * If no URI is available, and no request-target has been specifically
-     * provided, this method MUST return the string "/".
-     *
-     * @return string
-     */
-    public function getRequestTarget()
-    {
-        if (null !== $this->requestTarget) {
-            return $this->requestTarget;
-        }
-
-        if (! $this->uri) {
-            return '/';
-        }
-
-        $target = $this->uri->getPath();
-        if ($this->uri->getQuery()) {
-            $target .= '?' . $this->uri->getQuery();
-        }
-
-        if (empty($target)) {
-            $target = '/';
-        }
-
-        return $target;
-    }
-
-    /**
-     * Create a new instance with a specific request-target.
-     *
-     * If the request needs a non-origin-form request-target — e.g., for
-     * specifying an absolute-form, authority-form, or asterisk-form —
-     * this method may be used to create an instance with the specified
-     * request-target, verbatim.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return a new instance that has the
-     * changed request target.
-     *
-     * @link http://tools.ietf.org/html/rfc7230#section-2.7 (for the various
-     *     request-target forms allowed in request messages)
-     * @param mixed $requestTarget
-     * @return static
-     * @throws InvalidArgumentException if the request target is invalid.
-     */
-    public function withRequestTarget($requestTarget)
-    {
-        if (preg_match('#\s#', $requestTarget)) {
-            throw new InvalidArgumentException(
-                'Invalid request target provided; cannot contain whitespace'
-            );
-        }
-
-        $new = clone $this;
-        $new->requestTarget = $requestTarget;
-        return $new;
-    }
-
-    /**
-     * Retrieves the HTTP method of the request.
-     *
-     * @return string Returns the request method.
-     */
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    /**
-     * Return an instance with the provided HTTP method.
-     *
-     * While HTTP method names are typically all uppercase characters, HTTP
-     * method names are case-sensitive and thus implementations SHOULD NOT
-     * modify the given string.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * changed request method.
-     *
-     * @param string $method Case-insensitive method.
-     * @return static
-     * @throws InvalidArgumentException for invalid HTTP methods.
-     */
-    public function withMethod($method)
-    {
-        $this->validateMethod($method);
-        $new = clone $this;
-        $new->method = $method;
-        return $new;
-    }
-
-    /**
-     * Retrieves the URI instance.
-     *
-     * This method MUST return a UriInterface instance.
-     *
-     * @link http://tools.ietf.org/html/rfc3986#section-4.3
-     * @return UriInterface Returns a UriInterface instance
-     *     representing the URI of the request, if any.
-     */
-    public function getUri()
-    {
-        return $this->uri;
-    }
-
-    /**
-     * Returns an instance with the provided URI.
-     *
-     * This method will update the Host header of the returned request by
-     * default if the URI contains a host component. If the URI does not
-     * contain a host component, any pre-existing Host header will be carried
-     * over to the returned request.
-     *
-     * You can opt-in to preserving the original state of the Host header by
-     * setting `$preserveHost` to `true`. When `$preserveHost` is set to
-     * `true`, the returned request will not update the Host header of the
-     * returned message -- even if the message contains no Host header. This
-     * means that a call to `getHeader('Host')` on the original request MUST
-     * equal the return value of a call to `getHeader('Host')` on the returned
-     * request.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new UriInterface instance.
-     *
-     * @link http://tools.ietf.org/html/rfc3986#section-4.3
-     * @param UriInterface $uri New request URI to use.
-     * @param bool $preserveHost Preserve the original state of the Host header.
-     * @return static
-     */
-    public function withUri(UriInterface $uri, $preserveHost = false)
-    {
-        $new = clone $this;
-        $new->uri = $uri;
-
-        if ($preserveHost && $this->hasHeader('Host')) {
-            return $new;
-        }
-
-        if (! $uri->getHost()) {
-            return $new;
-        }
-
-        $host = $uri->getHost();
-        if ($uri->getPort()) {
-            $host .= ':' . $uri->getPort();
-        }
-
-        $new->headerNames['host'] = 'Host';
-        $new->headers['Host'] = [$host];
-
-        return $new;
-    }
-
-    /**
-     * Validate the HTTP method
-     *
-     * @param null|string $method
-     * @throws InvalidArgumentException on invalid HTTP method.
-     */
-    private function validateMethod($method)
-    {
-        if (null === $method) {
-            return;
-        }
-
-        if (! is_string($method)) {
-            throw new InvalidArgumentException(sprintf(
-                'Unsupported HTTP method; must be a string, received %s',
-                (is_object($method) ? get_class($method) : gettype($method))
-            ));
-        }
-
-        if (! preg_match('/^[!#$%&\'*+.^_`\|~0-9a-z-]+$/i', $method)) {
-            throw new InvalidArgumentException(sprintf(
-                'Unsupported HTTP method "%s" provided',
-                $method
-            ));
-        }
-    }
-
-    /**
-     * Retrieve the host from the URI instance
-     *
-     * @return string
-     */
-    private function getHostFromUri()
-    {
-        $host  = $this->uri->getHost();
-        $host .= $this->uri->getPort() ? ':' . $this->uri->getPort() : '';
-        return $host;
-    }
-
-    /**
-     * Ensure header names and values are valid.
-     *
-     * @param array $headers
-     * @throws InvalidArgumentException
-     */
-    private function assertHeaders(array $headers)
-    {
-        foreach ($headers as $name => $headerValues) {
-            HeaderSecurity::assertValidName($name);
-            array_walk($headerValues, __NAMESPACE__ . '\HeaderSecurity::assertValid');
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Response.php b/vendor/zendframework/zend-diactoros/src/Response.php
deleted file mode 100644
index ef250e6..0000000
--- a/vendor/zendframework/zend-diactoros/src/Response.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use InvalidArgumentException;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * HTTP response encapsulation.
- *
- * Responses are considered immutable; all methods that might change state are
- * implemented such that they retain the internal state of the current
- * message and return a new instance that contains the changed state.
- */
-class Response implements ResponseInterface
-{
-    use MessageTrait;
-
-    /**
-     * Map of standard HTTP status code/reason phrases
-     *
-     * @var array
-     */
-    private $phrases = [
-        // INFORMATIONAL CODES
-        100 => 'Continue',
-        101 => 'Switching Protocols',
-        102 => 'Processing',
-        // SUCCESS CODES
-        200 => 'OK',
-        201 => 'Created',
-        202 => 'Accepted',
-        203 => 'Non-Authoritative Information',
-        204 => 'No Content',
-        205 => 'Reset Content',
-        206 => 'Partial Content',
-        207 => 'Multi-status',
-        208 => 'Already Reported',
-        // REDIRECTION CODES
-        300 => 'Multiple Choices',
-        301 => 'Moved Permanently',
-        302 => 'Found',
-        303 => 'See Other',
-        304 => 'Not Modified',
-        305 => 'Use Proxy',
-        306 => 'Switch Proxy', // Deprecated
-        307 => 'Temporary Redirect',
-        // CLIENT ERROR
-        400 => 'Bad Request',
-        401 => 'Unauthorized',
-        402 => 'Payment Required',
-        403 => 'Forbidden',
-        404 => 'Not Found',
-        405 => 'Method Not Allowed',
-        406 => 'Not Acceptable',
-        407 => 'Proxy Authentication Required',
-        408 => 'Request Time-out',
-        409 => 'Conflict',
-        410 => 'Gone',
-        411 => 'Length Required',
-        412 => 'Precondition Failed',
-        413 => 'Request Entity Too Large',
-        414 => 'Request-URI Too Large',
-        415 => 'Unsupported Media Type',
-        416 => 'Requested range not satisfiable',
-        417 => 'Expectation Failed',
-        418 => 'I\'m a teapot',
-        422 => 'Unprocessable Entity',
-        423 => 'Locked',
-        424 => 'Failed Dependency',
-        425 => 'Unordered Collection',
-        426 => 'Upgrade Required',
-        428 => 'Precondition Required',
-        429 => 'Too Many Requests',
-        431 => 'Request Header Fields Too Large',
-        // SERVER ERROR
-        500 => 'Internal Server Error',
-        501 => 'Not Implemented',
-        502 => 'Bad Gateway',
-        503 => 'Service Unavailable',
-        504 => 'Gateway Time-out',
-        505 => 'HTTP Version not supported',
-        506 => 'Variant Also Negotiates',
-        507 => 'Insufficient Storage',
-        508 => 'Loop Detected',
-        511 => 'Network Authentication Required',
-    ];
-
-    /**
-     * @var string
-     */
-    private $reasonPhrase = '';
-
-    /**
-     * @var int
-     */
-    private $statusCode = 200;
-
-    /**
-     * @param string|resource|StreamInterface $stream Stream identifier and/or actual stream resource
-     * @param int $status Status code for the response, if any.
-     * @param array $headers Headers for the response, if any.
-     * @throws InvalidArgumentException on any invalid element.
-     */
-    public function __construct($body = 'php://memory', $status = 200, array $headers = [])
-    {
-        if (! is_string($body) && ! is_resource($body) && ! $body instanceof StreamInterface) {
-            throw new InvalidArgumentException(
-                'Stream must be a string stream resource identifier, '
-                . 'an actual stream resource, '
-                . 'or a Psr\Http\Message\StreamInterface implementation'
-            );
-        }
-
-        if (null !== $status) {
-            $this->validateStatus($status);
-        }
-
-        $this->stream     = ($body instanceof StreamInterface) ? $body : new Stream($body, 'wb+');
-        $this->statusCode = $status ? (int) $status : 200;
-
-        list($this->headerNames, $headers) = $this->filterHeaders($headers);
-        $this->assertHeaders($headers);
-        $this->headers = $headers;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getReasonPhrase()
-    {
-        if (! $this->reasonPhrase
-            && isset($this->phrases[$this->statusCode])
-        ) {
-            $this->reasonPhrase = $this->phrases[$this->statusCode];
-        }
-
-        return $this->reasonPhrase;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withStatus($code, $reasonPhrase = '')
-    {
-        $this->validateStatus($code);
-        $new = clone $this;
-        $new->statusCode   = (int) $code;
-        $new->reasonPhrase = $reasonPhrase;
-        return $new;
-    }
-
-    /**
-     * Validate a status code.
-     *
-     * @param int|string $code
-     * @throws InvalidArgumentException on an invalid status code.
-     */
-    private function validateStatus($code)
-    {
-        if (! is_numeric($code)
-            || is_float($code)
-            || $code < 100
-            || $code >= 600
-        ) {
-            throw new InvalidArgumentException(sprintf(
-                'Invalid status code "%s"; must be an integer between 100 and 599, inclusive',
-                (is_scalar($code) ? $code : gettype($code))
-            ));
-        }
-    }
-
-    /**
-     * Ensure header names and values are valid.
-     *
-     * @param array $headers
-     * @throws InvalidArgumentException
-     */
-    private function assertHeaders(array $headers)
-    {
-        foreach ($headers as $name => $headerValues) {
-            HeaderSecurity::assertValidName($name);
-            array_walk($headerValues, __NAMESPACE__ . '\HeaderSecurity::assertValid');
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Response/EmitterInterface.php b/vendor/zendframework/zend-diactoros/src/Response/EmitterInterface.php
deleted file mode 100644
index 25ea7f3..0000000
--- a/vendor/zendframework/zend-diactoros/src/Response/EmitterInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Response;
-
-use Psr\Http\Message\ResponseInterface;
-
-interface EmitterInterface
-{
-    /**
-     * Emit a response.
-     *
-     * Emits a response, including status line, headers, and the message body,
-     * according to the environment.
-     *
-     * Implementations of this method may be written in such a way as to have
-     * side effects, such as usage of header() or pushing output to the
-     * output buffer.
-     *
-     * Implementations MAY raise exceptions if they are unable to emit the
-     * response; e.g., if headers have already been sent.
-     *
-     * @param ResponseInterface $response
-     */
-    public function emit(ResponseInterface $response);
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Response/EmptyResponse.php b/vendor/zendframework/zend-diactoros/src/Response/EmptyResponse.php
deleted file mode 100644
index 9110306..0000000
--- a/vendor/zendframework/zend-diactoros/src/Response/EmptyResponse.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Response;
-
-use Zend\Diactoros\Response;
-use Zend\Diactoros\Stream;
-
-/**
- * A class representing empty HTTP responses.
- */
-class EmptyResponse extends Response
-{
-    /**
-     * Create an empty response with the given status code.
-     *
-     * @param int $status Status code for the response, if any.
-     * @param array $headers Headers for the response, if any.
-     */
-    public function __construct($status = 204, array $headers = [])
-    {
-        $body = new Stream('php://temp', 'r');
-        parent::__construct($body, $status, $headers);
-    }
-
-    /**
-     * Create an empty response with the given headers.
-     *
-     * @param array $headers Headers for the response.
-     * @return EmptyResponse
-     */
-    public static function withHeaders(array $headers)
-    {
-        return new static(204, $headers);
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Response/HtmlResponse.php b/vendor/zendframework/zend-diactoros/src/Response/HtmlResponse.php
deleted file mode 100644
index d298ee0..0000000
--- a/vendor/zendframework/zend-diactoros/src/Response/HtmlResponse.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Response;
-
-use InvalidArgumentException;
-use Psr\Http\Message\StreamInterface;
-use Zend\Diactoros\Response;
-use Zend\Diactoros\Stream;
-
-/**
- * HTML response.
- *
- * Allows creating a response by passing an HTML string to the constructor;
- * by default, sets a status code of 200 and sets the Content-Type header to
- * text/html.
- */
-class HtmlResponse extends Response
-{
-    use InjectContentTypeTrait;
-
-    /**
-     * Create an HTML response.
-     *
-     * Produces an HTML response with a Content-Type of text/html and a default
-     * status of 200.
-     *
-     * @param string|StreamInterface $html HTML or stream for the message body.
-     * @param int $status Integer status code for the response; 200 by default.
-     * @param array $headers Array of headers to use at initialization.
-     * @throws InvalidArgumentException if $html is neither a string or stream.
-     */
-    public function __construct($html, $status = 200, array $headers = [])
-    {
-        parent::__construct(
-            $this->createBody($html),
-            $status,
-            $this->injectContentType('text/html', $headers)
-        );
-    }
-
-    /**
-     * Create the message body.
-     *
-     * @param string|StreamInterface $html
-     * @return StreamInterface
-     * @throws InvalidArgumentException if $html is neither a string or stream.
-     */
-    private function createBody($html)
-    {
-        if ($html instanceof StreamInterface) {
-            return $html;
-        }
-
-        if (! is_string($html)) {
-            throw new InvalidArgumentException(sprintf(
-                'Invalid content (%s) provided to %s',
-                (is_object($html) ? get_class($html) : gettype($html)),
-                __CLASS__
-            ));
-        }
-
-        $body = new Stream('php://temp', 'wb+');
-        $body->write($html);
-        return $body;
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Response/InjectContentTypeTrait.php b/vendor/zendframework/zend-diactoros/src/Response/InjectContentTypeTrait.php
deleted file mode 100644
index 00fd217..0000000
--- a/vendor/zendframework/zend-diactoros/src/Response/InjectContentTypeTrait.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Response;
-
-trait InjectContentTypeTrait
-{
-    /**
-     * Inject the provided Content-Type, if none is already present.
-     *
-     * @param string $contentType
-     * @param array $headers
-     * @return array Headers with injected Content-Type
-     */
-    private function injectContentType($contentType, array $headers)
-    {
-        $hasContentType = array_reduce(array_keys($headers), function ($carry, $item) {
-            return $carry ?: (strtolower($item) === 'content-type');
-        }, false);
-
-        if (! $hasContentType) {
-            $headers['content-type'] = [$contentType];
-        }
-
-        return $headers;
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Response/JsonResponse.php b/vendor/zendframework/zend-diactoros/src/Response/JsonResponse.php
deleted file mode 100644
index 766c866..0000000
--- a/vendor/zendframework/zend-diactoros/src/Response/JsonResponse.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Response;
-
-use InvalidArgumentException;
-use Zend\Diactoros\Response;
-use Zend\Diactoros\Stream;
-
-/**
- * JSON response.
- *
- * Allows creating a response by passing data to the constructor; by default,
- * serializes the data to JSON, sets a status code of 200 and sets the
- * Content-Type header to application/json.
- */
-class JsonResponse extends Response
-{
-    use InjectContentTypeTrait;
-
-    /**
-     * Create a JSON response with the given data.
-     *
-     * Default JSON encoding is performed with the following options, which
-     * produces RFC4627-compliant JSON, capable of embedding into HTML.
-     *
-     * - JSON_HEX_TAG
-     * - JSON_HEX_APOS
-     * - JSON_HEX_AMP
-     * - JSON_HEX_QUOT
-     *
-     * @param mixed $data Data to convert to JSON.
-     * @param int $status Integer status code for the response; 200 by default.
-     * @param array $headers Array of headers to use at initialization.
-     * @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)
-    {
-        $body = new Stream('php://temp', 'wb+');
-        $body->write($this->jsonEncode($data, $encodingOptions));
-
-        $headers = $this->injectContentType('application/json', $headers);
-
-        parent::__construct($body, $status, $headers);
-    }
-
-    /**
-     * Encode the provided data to JSON.
-     *
-     * @param mixed $data
-     * @param int $encodingOptions
-     * @return string
-     * @throws InvalidArgumentException if unable to encode the $data to JSON.
-     */
-    private function jsonEncode($data, $encodingOptions)
-    {
-        if (is_resource($data)) {
-            throw new InvalidArgumentException('Cannot JSON encode resources');
-        }
-
-        // Clear json_last_error()
-        json_encode(null);
-
-        $json = json_encode($data, $encodingOptions);
-
-        if (JSON_ERROR_NONE !== json_last_error()) {
-            throw new InvalidArgumentException(sprintf(
-                'Unable to encode data to JSON in %s: %s',
-                __CLASS__,
-                json_last_error_msg()
-            ));
-        }
-
-        return $json;
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Response/RedirectResponse.php b/vendor/zendframework/zend-diactoros/src/Response/RedirectResponse.php
deleted file mode 100644
index 26911f0..0000000
--- a/vendor/zendframework/zend-diactoros/src/Response/RedirectResponse.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Response;
-
-use InvalidArgumentException;
-use Psr\Http\Message\UriInterface;
-use Zend\Diactoros\Response;
-use Zend\Diactoros\Stream;
-
-/**
- * Produce a redirect response.
- */
-class RedirectResponse extends Response
-{
-    /**
-     * Create a redirect response.
-     *
-     * Produces a redirect response with a Location header and the given status
-     * (302 by default).
-     *
-     * Note: this method overwrites the `location` $headers value.
-     *
-     * @param string|UriInterface $uri URI for the Location header.
-     * @param int $status Integer status code for the redirect; 302 by default.
-     * @param array $headers Array of headers to use at initialization.
-     */
-    public function __construct($uri, $status = 302, array $headers = [])
-    {
-        if (! is_string($uri) && ! $uri instanceof UriInterface) {
-            throw new InvalidArgumentException(sprintf(
-                'Uri provided to %s MUST be a string or Psr\Http\Message\UriInterface instance; received "%s"',
-                __CLASS__,
-                (is_object($uri) ? get_class($uri) : gettype($uri))
-            ));
-        }
-
-        $headers['location'] = [(string) $uri];
-        parent::__construct('php://temp', $status, $headers);
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Response/SapiEmitter.php b/vendor/zendframework/zend-diactoros/src/Response/SapiEmitter.php
deleted file mode 100644
index bba291e..0000000
--- a/vendor/zendframework/zend-diactoros/src/Response/SapiEmitter.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Response;
-
-use Psr\Http\Message\ResponseInterface;
-use RuntimeException;
-
-class SapiEmitter implements EmitterInterface
-{
-    /**
-     * Emits a response for a PHP SAPI environment.
-     *
-     * Emits the status line and headers via the header() function, and the
-     * body content via the output buffer.
-     *
-     * @param ResponseInterface $response
-     * @param null|int $maxBufferLevel Maximum output buffering level to unwrap.
-     */
-    public function emit(ResponseInterface $response, $maxBufferLevel = null)
-    {
-        if (headers_sent()) {
-            throw new RuntimeException('Unable to emit response; headers already sent');
-        }
-
-        $this->emitStatusLine($response);
-        $this->emitHeaders($response);
-        $this->emitBody($response, $maxBufferLevel);
-    }
-
-    /**
-     * Emit the status line.
-     *
-     * Emits the status line using the protocol version and status code from
-     * the response; if a reason phrase is availble, it, too, is emitted.
-     *
-     * @param ResponseInterface $response
-     */
-    private function emitStatusLine(ResponseInterface $response)
-    {
-        $reasonPhrase = $response->getReasonPhrase();
-        header(sprintf(
-            'HTTP/%s %d%s',
-            $response->getProtocolVersion(),
-            $response->getStatusCode(),
-            ($reasonPhrase ? ' ' . $reasonPhrase : '')
-        ));
-    }
-
-    /**
-     * Emit response headers.
-     *
-     * Loops through each header, emitting each; if the header value
-     * is an array with multiple values, ensures that each is sent
-     * in such a way as to create aggregate headers (instead of replace
-     * the previous).
-     *
-     * @param ResponseInterface $response
-     */
-    private function emitHeaders(ResponseInterface $response)
-    {
-        foreach ($response->getHeaders() as $header => $values) {
-            $name  = $this->filterHeader($header);
-            $first = true;
-            foreach ($values as $value) {
-                header(sprintf(
-                    '%s: %s',
-                    $name,
-                    $value
-                ), $first);
-                $first = false;
-            }
-        }
-    }
-
-    /**
-     * Emit the message body.
-     *
-     * Loops through the output buffer, flushing each, before emitting
-     * the response body using `echo()`.
-     *
-     * @param ResponseInterface $response
-     * @param int $maxBufferLevel Flush up to this buffer level.
-     */
-    private function emitBody(ResponseInterface $response, $maxBufferLevel)
-    {
-        if (null === $maxBufferLevel) {
-            $maxBufferLevel = ob_get_level();
-        }
-
-        while (ob_get_level() > $maxBufferLevel) {
-            ob_end_flush();
-        }
-
-        echo $response->getBody();
-    }
-
-    /**
-     * Filter a header name to wordcase
-     *
-     * @param string $header
-     * @return string
-     */
-    private function filterHeader($header)
-    {
-        $filtered = str_replace('-', ' ', $header);
-        $filtered = ucwords($filtered);
-        return str_replace(' ', '-', $filtered);
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Response/Serializer.php b/vendor/zendframework/zend-diactoros/src/Response/Serializer.php
deleted file mode 100644
index 8da835d..0000000
--- a/vendor/zendframework/zend-diactoros/src/Response/Serializer.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros\Response;
-
-use InvalidArgumentException;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-use UnexpectedValueException;
-use Zend\Diactoros\AbstractSerializer;
-use Zend\Diactoros\Response;
-use Zend\Diactoros\Stream;
-
-final class Serializer extends AbstractSerializer
-{
-    /**
-     * Deserialize a response string to a response instance.
-     *
-     * @param string $message
-     * @return Response
-     * @throws UnexpectedValueException when errors occur parsing the message.
-     */
-    public static function fromString($message)
-    {
-        $stream = new Stream('php://temp', 'wb+');
-        $stream->write($message);
-        return static::fromStream($stream);
-    }
-
-    /**
-     * Parse a response from a stream.
-     *
-     * @param StreamInterface $stream
-     * @return ResponseInterface
-     * @throws InvalidArgumentException when the stream is not readable.
-     * @throws UnexpectedValueException when errors occur parsing the message.
-     */
-    public static function fromStream(StreamInterface $stream)
-    {
-        if (! $stream->isReadable() || ! $stream->isSeekable()) {
-            throw new InvalidArgumentException('Message stream must be both readable and seekable');
-        }
-
-        $stream->rewind();
-
-        list($version, $status, $reasonPhrase) = self::getStatusLine($stream);
-        list($headers, $body)                  = self::splitStream($stream);
-
-        return (new Response($body, $status, $headers))
-            ->withProtocolVersion($version)
-            ->withStatus($status, $reasonPhrase);
-    }
-
-    /**
-     * Create a string representation of a response.
-     *
-     * @param ResponseInterface $response
-     * @return string
-     */
-    public static function toString(ResponseInterface $response)
-    {
-        $reasonPhrase = $response->getReasonPhrase();
-        $headers      = self::serializeHeaders($response->getHeaders());
-        $body         = (string) $response->getBody();
-        $format       = 'HTTP/%s %d%s%s%s';
-
-        if (! empty($headers)) {
-            $headers = "\r\n" . $headers;
-        }
-        if (! empty($body)) {
-            $headers .= "\r\n\r\n";
-        }
-
-        return sprintf(
-            $format,
-            $response->getProtocolVersion(),
-            $response->getStatusCode(),
-            ($reasonPhrase ? ' ' . $reasonPhrase : ''),
-            $headers,
-            $body
-        );
-    }
-
-    /**
-     * Retrieve the status line for the message.
-     *
-     * @param StreamInterface $stream
-     * @return array Array with three elements: 0 => version, 1 => status, 2 => reason
-     * @throws UnexpectedValueException if line is malformed
-     */
-    private static function getStatusLine(StreamInterface $stream)
-    {
-        $line = self::getLine($stream);
-
-        if (! preg_match(
-            '#^HTTP/(?P<version>[1-9]\d*\.\d) (?P<status>[1-5]\d{2})(\s+(?P<reason>.+))?$#',
-            $line,
-            $matches
-        )) {
-            throw new UnexpectedValueException('No status line detected');
-        }
-
-        return [$matches['version'], $matches['status'], isset($matches['reason']) ? $matches['reason'] : ''];
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Server.php b/vendor/zendframework/zend-diactoros/src/Server.php
deleted file mode 100644
index e3c9b30..0000000
--- a/vendor/zendframework/zend-diactoros/src/Server.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use OutOfBoundsException;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * "Serve" incoming HTTP requests
- *
- * Given a callback, takes an incoming request, dispatches it to the
- * callback, and then sends a response.
- */
-class Server
-{
-    /**
-     * @var callable
-     */
-    private $callback;
-
-    /**
-     * Response emitter to use; by default, uses Response\SapiEmitter.
-     *
-     * @var Response\EmitterInterface
-     */
-    private $emitter;
-
-    /**
-     * @var ServerRequestInterface
-     */
-    private $request;
-
-    /**
-     * @var ResponseInterface
-     */
-    private $response;
-
-    /**
-     * Constructor
-     *
-     * Given a callback, a request, and a response, we can create a server.
-     *
-     * @param callable $callback
-     * @param ServerRequestInterface $request
-     * @param ResponseInterface $response
-     */
-    public function __construct(
-        callable $callback,
-        ServerRequestInterface $request,
-        ResponseInterface $response
-    ) {
-        $this->callback = $callback;
-        $this->request  = $request;
-        $this->response = $response;
-    }
-
-    /**
-     * Allow retrieving the request, response and callback as properties
-     *
-     * @param string $name
-     * @return mixed
-     * @throws OutOfBoundsException for invalid properties
-     */
-    public function __get($name)
-    {
-        if (! property_exists($this, $name)) {
-            throw new OutOfBoundsException('Cannot retrieve arbitrary properties from server');
-        }
-        return $this->{$name};
-    }
-
-    /**
-     * Set alternate response emitter to use.
-     *
-     * @param Response\EmitterInterface $emitter
-     */
-    public function setEmitter(Response\EmitterInterface $emitter)
-    {
-        $this->emitter = $emitter;
-    }
-
-    /**
-     * Create a Server instance
-     *
-     * Creates a server instance from the callback and the following
-     * PHP environmental values:
-     *
-     * - server; typically this will be the $_SERVER superglobal
-     * - query; typically this will be the $_GET superglobal
-     * - body; typically this will be the $_POST superglobal
-     * - cookies; typically this will be the $_COOKIE superglobal
-     * - files; typically this will be the $_FILES superglobal
-     *
-     * @param callable $callback
-     * @param array $server
-     * @param array $query
-     * @param array $body
-     * @param array $cookies
-     * @param array $files
-     * @return static
-     */
-    public static function createServer(
-        callable $callback,
-        array $server,
-        array $query,
-        array $body,
-        array $cookies,
-        array $files
-    ) {
-        $request  = ServerRequestFactory::fromGlobals($server, $query, $body, $cookies, $files);
-        $response = new Response();
-        return new static($callback, $request, $response);
-    }
-
-    /**
-     * Create a Server instance from an existing request object
-     *
-     * Provided a callback, an existing request object, and optionally an
-     * existing response object, create and return the Server instance.
-     *
-     * If no Response object is provided, one will be created.
-     *
-     * @param callable $callback
-     * @param ServerRequestInterface $request
-     * @param null|ResponseInterface $response
-     * @return static
-     */
-    public static function createServerFromRequest(
-        callable $callback,
-        ServerRequestInterface $request,
-        ResponseInterface $response = null
-    ) {
-        if (! $response) {
-            $response = new Response();
-        }
-        return new static($callback, $request, $response);
-    }
-
-    /**
-     * "Listen" to an incoming request
-     *
-     * If provided a $finalHandler, that callable will be used for
-     * incomplete requests.
-     *
-     * Output buffering is enabled prior to invoking the attached
-     * callback; any output buffered will be sent prior to any
-     * response body content.
-     *
-     * @param null|callable $finalHandler
-     */
-    public function listen(callable $finalHandler = null)
-    {
-        $callback = $this->callback;
-
-        ob_start();
-        $bufferLevel = ob_get_level();
-
-        $response = $callback($this->request, $this->response, $finalHandler);
-        if (! $response instanceof ResponseInterface) {
-            $response = $this->response;
-        }
-        $this->getEmitter()->emit($response, $bufferLevel);
-    }
-
-    /**
-     * Retrieve the current response emitter.
-     *
-     * If none has been registered, lazy-loads a Response\SapiEmitter.
-     *
-     * @return Response\EmitterInterface
-     */
-    private function getEmitter()
-    {
-        if (! $this->emitter) {
-            $this->emitter = new Response\SapiEmitter();
-        }
-
-        return $this->emitter;
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/ServerRequest.php b/vendor/zendframework/zend-diactoros/src/ServerRequest.php
deleted file mode 100644
index 67a04b4..0000000
--- a/vendor/zendframework/zend-diactoros/src/ServerRequest.php
+++ /dev/null
@@ -1,297 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use InvalidArgumentException;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UploadedFileInterface;
-
-/**
- * Server-side HTTP request
- *
- * Extends the Request definition to add methods for accessing incoming data,
- * specifically server parameters, cookies, matched path parameters, query
- * string arguments, body parameters, and upload file information.
- *
- * "Attributes" are discovered via decomposing the request (and usually
- * specifically the URI path), and typically will be injected by the application.
- *
- * Requests are considered immutable; all methods that might change state are
- * implemented such that they retain the internal state of the current
- * message and return a new instance that contains the changed state.
- */
-class ServerRequest implements ServerRequestInterface
-{
-    use MessageTrait, RequestTrait;
-
-    /**
-     * @var array
-     */
-    private $attributes = [];
-
-    /**
-     * @var array
-     */
-    private $cookieParams = [];
-
-    /**
-     * @var null|array|object
-     */
-    private $parsedBody;
-
-    /**
-     * @var array
-     */
-    private $queryParams = [];
-
-    /**
-     * @var array
-     */
-    private $serverParams;
-
-    /**
-     * @var array
-     */
-    private $uploadedFiles;
-
-    /**
-     * @param array $serverParams Server parameters, typically from $_SERVER
-     * @param array $uploadedFiles Upload file information, a tree of UploadedFiles
-     * @param null|string $uri URI for the request, if any.
-     * @param null|string $method HTTP method for the request, if any.
-     * @param string|resource|StreamInterface $body Message body, if any.
-     * @param array $headers Headers for the message, if any.
-     * @throws InvalidArgumentException for any invalid value.
-     */
-    public function __construct(
-        array $serverParams = [],
-        array $uploadedFiles = [],
-        $uri = null,
-        $method = null,
-        $body = 'php://input',
-        array $headers = []
-    ) {
-        $this->validateUploadedFiles($uploadedFiles);
-
-        $body = $this->getStream($body);
-        $this->initialize($uri, $method, $body, $headers);
-        $this->serverParams  = $serverParams;
-        $this->uploadedFiles = $uploadedFiles;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getServerParams()
-    {
-        return $this->serverParams;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getUploadedFiles()
-    {
-        return $this->uploadedFiles;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withUploadedFiles(array $uploadedFiles)
-    {
-        $this->validateUploadedFiles($uploadedFiles);
-        $new = clone $this;
-        $new->uploadedFiles = $uploadedFiles;
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getCookieParams()
-    {
-        return $this->cookieParams;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withCookieParams(array $cookies)
-    {
-        $new = clone $this;
-        $new->cookieParams = $cookies;
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getQueryParams()
-    {
-        return $this->queryParams;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withQueryParams(array $query)
-    {
-        $new = clone $this;
-        $new->queryParams = $query;
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getParsedBody()
-    {
-        return $this->parsedBody;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withParsedBody($data)
-    {
-        $new = clone $this;
-        $new->parsedBody = $data;
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getAttributes()
-    {
-        return $this->attributes;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getAttribute($attribute, $default = null)
-    {
-        if (! array_key_exists($attribute, $this->attributes)) {
-            return $default;
-        }
-
-        return $this->attributes[$attribute];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withAttribute($attribute, $value)
-    {
-        $new = clone $this;
-        $new->attributes[$attribute] = $value;
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withoutAttribute($attribute)
-    {
-        if (! isset($this->attributes[$attribute])) {
-            return clone $this;
-        }
-
-        $new = clone $this;
-        unset($new->attributes[$attribute]);
-        return $new;
-    }
-
-    /**
-     * Proxy to receive the request method.
-     *
-     * This overrides the parent functionality to ensure the method is never
-     * empty; if no method is present, it returns 'GET'.
-     *
-     * @return string
-     */
-    public function getMethod()
-    {
-        if (empty($this->method)) {
-            return 'GET';
-        }
-        return $this->method;
-    }
-
-    /**
-     * Set the request method.
-     *
-     * Unlike the regular Request implementation, the server-side
-     * normalizes the method to uppercase to ensure consistency
-     * and make checking the method simpler.
-     *
-     * This methods returns a new instance.
-     *
-     * @param string $method
-     * @return self
-     */
-    public function withMethod($method)
-    {
-        $this->validateMethod($method);
-        $new = clone $this;
-        $new->method = $method;
-        return $new;
-    }
-
-    /**
-     * Set the body stream
-     *
-     * @param string|resource|StreamInterface $stream
-     * @return StreamInterface
-     */
-    private function getStream($stream)
-    {
-        if ($stream === 'php://input') {
-            return new PhpInputStream();
-        }
-
-        if (! is_string($stream) && ! is_resource($stream) && ! $stream instanceof StreamInterface) {
-            throw new InvalidArgumentException(
-                'Stream must be a string stream resource identifier, '
-                . 'an actual stream resource, '
-                . 'or a Psr\Http\Message\StreamInterface implementation'
-            );
-        }
-
-        if (! $stream instanceof StreamInterface) {
-            return new Stream($stream, 'r');
-        }
-
-        return $stream;
-    }
-
-    /**
-     * Recursively validate the structure in an uploaded files array.
-     *
-     * @param array $uploadedFiles
-     * @throws InvalidArgumentException if any leaf is not an UploadedFileInterface instance.
-     */
-    private function validateUploadedFiles(array $uploadedFiles)
-    {
-        foreach ($uploadedFiles as $file) {
-            if (is_array($file)) {
-                $this->validateUploadedFiles($file);
-                continue;
-            }
-
-            if (! $file instanceof UploadedFileInterface) {
-                throw new InvalidArgumentException('Invalid leaf in uploaded files structure');
-            }
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/ServerRequestFactory.php b/vendor/zendframework/zend-diactoros/src/ServerRequestFactory.php
deleted file mode 100644
index e23dfe5..0000000
--- a/vendor/zendframework/zend-diactoros/src/ServerRequestFactory.php
+++ /dev/null
@@ -1,458 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use InvalidArgumentException;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\MessageInterface;
-use Psr\Http\Message\UploadedFileInterface;
-use stdClass;
-
-/**
- * Class for marshaling a request object from the current PHP environment.
- *
- * Logic largely refactored from the ZF2 Zend\Http\PhpEnvironment\Request class.
- *
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-abstract class ServerRequestFactory
-{
-    /**
-     * Function to use to get apache request headers; present only to simplify mocking.
-     *
-     * @var callable
-     */
-    private static $apacheRequestHeaders = 'apache_request_headers';
-
-    /**
-     * Create a request from the supplied superglobal values.
-     *
-     * If any argument is not supplied, the corresponding superglobal value will
-     * be used.
-     *
-     * The ServerRequest created is then passed to the fromServer() method in
-     * order to marshal the request URI and headers.
-     *
-     * @see fromServer()
-     * @param array $server $_SERVER superglobal
-     * @param array $query $_GET superglobal
-     * @param array $body $_POST superglobal
-     * @param array $cookies $_COOKIE superglobal
-     * @param array $files $_FILES superglobal
-     * @return ServerRequest
-     * @throws InvalidArgumentException for invalid file values
-     */
-    public static function fromGlobals(
-        array $server = null,
-        array $query = null,
-        array $body = null,
-        array $cookies = null,
-        array $files = null
-    ) {
-        $server  = static::normalizeServer($server ?: $_SERVER);
-        $files   = static::normalizeFiles($files ?: $_FILES);
-        $headers = static::marshalHeaders($server);
-        $request = new ServerRequest(
-            $server,
-            $files,
-            static::marshalUriFromServer($server, $headers),
-            static::get('REQUEST_METHOD', $server, 'GET'),
-            'php://input',
-            $headers
-        );
-
-        return $request
-            ->withCookieParams($cookies ?: $_COOKIE)
-            ->withQueryParams($query ?: $_GET)
-            ->withParsedBody($body ?: $_POST);
-    }
-
-    /**
-     * Access a value in an array, returning a default value if not found
-     *
-     * Will also do a case-insensitive search if a case sensitive search fails.
-     *
-     * @param string $key
-     * @param array $values
-     * @param mixed $default
-     * @return mixed
-     */
-    public static function get($key, array $values, $default = null)
-    {
-        if (array_key_exists($key, $values)) {
-            return $values[$key];
-        }
-
-        return $default;
-    }
-
-    /**
-     * Search for a header value.
-     *
-     * Does a case-insensitive search for a matching header.
-     *
-     * If found, it is returned as a string, using comma concatenation.
-     *
-     * If not, the $default is returned.
-     *
-     * @param string $header
-     * @param array $headers
-     * @param mixed $default
-     * @return string
-     */
-    public static function getHeader($header, array $headers, $default = null)
-    {
-        $header  = strtolower($header);
-        $headers = array_change_key_case($headers, CASE_LOWER);
-        if (array_key_exists($header, $headers)) {
-            $value = is_array($headers[$header]) ? implode(', ', $headers[$header]) : $headers[$header];
-            return $value;
-        }
-
-        return $default;
-    }
-
-    /**
-     * Marshal the $_SERVER array
-     *
-     * Pre-processes and returns the $_SERVER superglobal.
-     *
-     * @param array $server
-     * @return array
-     */
-    public static function normalizeServer(array $server)
-    {
-        // This seems to be the only way to get the Authorization header on Apache
-        $apacheRequestHeaders = self::$apacheRequestHeaders;
-        if (isset($server['HTTP_AUTHORIZATION'])
-            || ! is_callable($apacheRequestHeaders)
-        ) {
-            return $server;
-        }
-
-        $apacheRequestHeaders = $apacheRequestHeaders();
-        if (isset($apacheRequestHeaders['Authorization'])) {
-            $server['HTTP_AUTHORIZATION'] = $apacheRequestHeaders['Authorization'];
-            return $server;
-        }
-
-        if (isset($apacheRequestHeaders['authorization'])) {
-            $server['HTTP_AUTHORIZATION'] = $apacheRequestHeaders['authorization'];
-            return $server;
-        }
-
-        return $server;
-    }
-
-    /**
-     * Normalize uploaded files
-     *
-     * Transforms each value into an UploadedFileInterface instance, and ensures
-     * that nested arrays are normalized.
-     *
-     * @param array $files
-     * @return array
-     * @throws InvalidArgumentException for unrecognized values
-     */
-    public static function normalizeFiles(array $files)
-    {
-        $normalized = [];
-        foreach ($files as $key => $value) {
-            if ($value instanceof UploadedFileInterface) {
-                $normalized[$key] = $value;
-                continue;
-            }
-
-            if (is_array($value) && isset($value['tmp_name'])) {
-                $normalized[$key] = self::createUploadedFileFromSpec($value);
-                continue;
-            }
-
-            if (is_array($value)) {
-                $normalized[$key] = self::normalizeFiles($value);
-                continue;
-            }
-
-            throw new InvalidArgumentException('Invalid value in files specification');
-        }
-        return $normalized;
-    }
-
-    /**
-     * Marshal headers from $_SERVER
-     *
-     * @param array $server
-     * @return array
-     */
-    public static function marshalHeaders(array $server)
-    {
-        $headers = [];
-        foreach ($server as $key => $value) {
-            if (strpos($key, 'HTTP_COOKIE') === 0) {
-                // Cookies are handled using the $_COOKIE superglobal
-                continue;
-            }
-
-            if ($value && strpos($key, 'HTTP_') === 0) {
-                $name = strtr(substr($key, 5), '_', ' ');
-                $name = strtr(ucwords(strtolower($name)), ' ', '-');
-                $name = strtolower($name);
-
-                $headers[$name] = $value;
-                continue;
-            }
-
-            if ($value && strpos($key, 'CONTENT_') === 0) {
-                $name = substr($key, 8); // Content-
-                $name = 'Content-' . (($name == 'MD5') ? $name : ucfirst(strtolower($name)));
-                $name = strtolower($name);
-                $headers[$name] = $value;
-                continue;
-            }
-        }
-
-        return $headers;
-    }
-
-    /**
-     * Marshal the URI from the $_SERVER array and headers
-     *
-     * @param array $server
-     * @param array $headers
-     * @return Uri
-     */
-    public static function marshalUriFromServer(array $server, array $headers)
-    {
-        $uri = new Uri('');
-
-        // URI scheme
-        $scheme = 'http';
-        $https  = self::get('HTTPS', $server);
-        if (($https && 'off' !== $https)
-            || self::getHeader('x-forwarded-proto', $headers, false) === 'https'
-        ) {
-            $scheme = 'https';
-        }
-        if (! empty($scheme)) {
-            $uri = $uri->withScheme($scheme);
-        }
-
-        // Set the host
-        $accumulator = (object) ['host' => '', 'port' => null];
-        self::marshalHostAndPortFromHeaders($accumulator, $server, $headers);
-        $host = $accumulator->host;
-        $port = $accumulator->port;
-        if (! empty($host)) {
-            $uri = $uri->withHost($host);
-            if (! empty($port)) {
-                $uri = $uri->withPort($port);
-            }
-        }
-
-        // URI path
-        $path = self::marshalRequestUri($server);
-        $path = self::stripQueryString($path);
-
-        // URI query
-        $query = '';
-        if (isset($server['QUERY_STRING'])) {
-            $query = ltrim($server['QUERY_STRING'], '?');
-        }
-
-        return $uri
-            ->withPath($path)
-            ->withQuery($query);
-    }
-
-    /**
-     * Marshal the host and port from HTTP headers and/or the PHP environment
-     *
-     * @param stdClass $accumulator
-     * @param array $server
-     * @param array $headers
-     */
-    public static function marshalHostAndPortFromHeaders(stdClass $accumulator, array $server, array $headers)
-    {
-        if (self::getHeader('host', $headers, false)) {
-            self::marshalHostAndPortFromHeader($accumulator, self::getHeader('host', $headers));
-            return;
-        }
-
-        if (! isset($server['SERVER_NAME'])) {
-            return;
-        }
-
-        $accumulator->host = $server['SERVER_NAME'];
-        if (isset($server['SERVER_PORT'])) {
-            $accumulator->port = (int) $server['SERVER_PORT'];
-        }
-
-        if (! isset($server['SERVER_ADDR']) || ! preg_match('/^\[[0-9a-fA-F\:]+\]$/', $accumulator->host)) {
-            return;
-        }
-
-        // Misinterpreted IPv6-Address
-        // Reported for Safari on Windows
-        self::marshalIpv6HostAndPort($accumulator, $server);
-    }
-
-    /**
-     * Detect the base URI for the request
-     *
-     * Looks at a variety of criteria in order to attempt to autodetect a base
-     * URI, including rewrite URIs, proxy URIs, etc.
-     *
-     * From ZF2's Zend\Http\PhpEnvironment\Request class
-     * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
-     * @license   http://framework.zend.com/license/new-bsd New BSD License
-     *
-     * @param array $server
-     * @return string
-     */
-    public static function marshalRequestUri(array $server)
-    {
-        // IIS7 with URL Rewrite: make sure we get the unencoded url
-        // (double slash problem).
-        $iisUrlRewritten = self::get('IIS_WasUrlRewritten', $server);
-        $unencodedUrl    = self::get('UNENCODED_URL', $server, '');
-        if ('1' == $iisUrlRewritten && ! empty($unencodedUrl)) {
-            return $unencodedUrl;
-        }
-
-        $requestUri = self::get('REQUEST_URI', $server);
-
-        // Check this first so IIS will catch.
-        $httpXRewriteUrl = self::get('HTTP_X_REWRITE_URL', $server);
-        if ($httpXRewriteUrl !== null) {
-            $requestUri = $httpXRewriteUrl;
-        }
-
-        // Check for IIS 7.0 or later with ISAPI_Rewrite
-        $httpXOriginalUrl = self::get('HTTP_X_ORIGINAL_URL', $server);
-        if ($httpXOriginalUrl !== null) {
-            $requestUri = $httpXOriginalUrl;
-        }
-
-        if ($requestUri !== null) {
-            return preg_replace('#^[^/:]+://[^/]+#', '', $requestUri);
-        }
-
-        $origPathInfo = self::get('ORIG_PATH_INFO', $server);
-        if (empty($origPathInfo)) {
-            return '/';
-        }
-
-        return $origPathInfo;
-    }
-
-    /**
-     * Strip the query string from a path
-     *
-     * @param mixed $path
-     * @return string
-     */
-    public static function stripQueryString($path)
-    {
-        if (($qpos = strpos($path, '?')) !== false) {
-            return substr($path, 0, $qpos);
-        }
-        return $path;
-    }
-
-    /**
-     * Marshal the host and port from the request header
-     *
-     * @param stdClass $accumulator
-     * @param string|array $host
-     * @return void
-     */
-    private static function marshalHostAndPortFromHeader(stdClass $accumulator, $host)
-    {
-        if (is_array($host)) {
-            $host = implode(', ', $host);
-        }
-
-        $accumulator->host = $host;
-        $accumulator->port = null;
-
-        // works for regname, IPv4 & IPv6
-        if (preg_match('|\:(\d+)$|', $accumulator->host, $matches)) {
-            $accumulator->host = substr($accumulator->host, 0, -1 * (strlen($matches[1]) + 1));
-            $accumulator->port = (int) $matches[1];
-        }
-    }
-
-    /**
-     * Marshal host/port from misinterpreted IPv6 address
-     *
-     * @param stdClass $accumulator
-     * @param array $server
-     */
-    private static function marshalIpv6HostAndPort(stdClass $accumulator, array $server)
-    {
-        $accumulator->host = '[' . $server['SERVER_ADDR'] . ']';
-        $accumulator->port = $accumulator->port ?: 80;
-        if ($accumulator->port . ']' === substr($accumulator->host, strrpos($accumulator->host, ':') + 1)) {
-            // The last digit of the IPv6-Address has been taken as port
-            // Unset the port so the default port can be used
-            $accumulator->port = null;
-        }
-    }
-
-    /**
-     * Create and return an UploadedFile instance from a $_FILES specification.
-     *
-     * If the specification represents an array of values, this method will
-     * delegate to normalizeNestedFileSpec() and return that return value.
-     *
-     * @param array $value $_FILES struct
-     * @return array|UploadedFileInterface
-     */
-    private static function createUploadedFileFromSpec(array $value)
-    {
-        if (is_array($value['tmp_name'])) {
-            return self::normalizeNestedFileSpec($value);
-        }
-
-        return new UploadedFile(
-            $value['tmp_name'],
-            $value['size'],
-            $value['error'],
-            $value['name'],
-            $value['type']
-        );
-    }
-
-    /**
-     * Normalize an array of file specifications.
-     *
-     * Loops through all nested files and returns a normalized array of
-     * UploadedFileInterface instances.
-     *
-     * @param array $files
-     * @return UploadedFileInterface[]
-     */
-    private static function normalizeNestedFileSpec(array $files = [])
-    {
-        $normalizedFiles = [];
-        foreach (array_keys($files['tmp_name']) as $key) {
-            $spec = [
-                'tmp_name' => $files['tmp_name'][$key],
-                'size'     => $files['size'][$key],
-                'error'    => $files['error'][$key],
-                'name'     => $files['name'][$key],
-                'type'     => $files['type'][$key],
-            ];
-            $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec);
-        }
-        return $normalizedFiles;
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Stream.php b/vendor/zendframework/zend-diactoros/src/Stream.php
deleted file mode 100644
index aca58d2..0000000
--- a/vendor/zendframework/zend-diactoros/src/Stream.php
+++ /dev/null
@@ -1,328 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use InvalidArgumentException;
-use RuntimeException;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Implementation of PSR HTTP streams
- */
-class Stream implements StreamInterface
-{
-    /**
-     * @var resource
-     */
-    protected $resource;
-
-    /**
-     * @var string|resource
-     */
-    protected $stream;
-
-    /**
-     * @param string|resource $stream
-     * @param string $mode Mode with which to open stream
-     * @throws InvalidArgumentException
-     */
-    public function __construct($stream, $mode = 'r')
-    {
-        $this->setStream($stream, $mode);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        if (! $this->isReadable()) {
-            return '';
-        }
-
-        try {
-            $this->rewind();
-            return $this->getContents();
-        } catch (RuntimeException $e) {
-            return '';
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function close()
-    {
-        if (! $this->resource) {
-            return;
-        }
-
-        $resource = $this->detach();
-        fclose($resource);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function detach()
-    {
-        $resource = $this->resource;
-        $this->resource = null;
-        return $resource;
-    }
-
-    /**
-     * Attach a new stream/resource to the instance.
-     *
-     * @param string|resource $resource
-     * @param string $mode
-     * @throws InvalidArgumentException for stream identifier that cannot be
-     *     cast to a resource
-     * @throws InvalidArgumentException for non-resource stream
-     */
-    public function attach($resource, $mode = 'r')
-    {
-        $this->setStream($resource, $mode);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getSize()
-    {
-        if (null === $this->resource) {
-            return null;
-        }
-
-        $stats = fstat($this->resource);
-        return $stats['size'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function tell()
-    {
-        if (! $this->resource) {
-            throw new RuntimeException('No resource available; cannot tell position');
-        }
-
-        $result = ftell($this->resource);
-        if (! is_int($result)) {
-            throw new RuntimeException('Error occurred during tell operation');
-        }
-
-        return $result;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function eof()
-    {
-        if (! $this->resource) {
-            return true;
-        }
-
-        return feof($this->resource);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isSeekable()
-    {
-        if (! $this->resource) {
-            return false;
-        }
-
-        $meta = stream_get_meta_data($this->resource);
-        return $meta['seekable'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        if (! $this->resource) {
-            throw new RuntimeException('No resource available; cannot seek position');
-        }
-
-        if (! $this->isSeekable()) {
-            throw new RuntimeException('Stream is not seekable');
-        }
-
-        $result = fseek($this->resource, $offset, $whence);
-
-        if (0 !== $result) {
-            throw new RuntimeException('Error seeking within stream');
-        }
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function rewind()
-    {
-        return $this->seek(0);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isWritable()
-    {
-        if (! $this->resource) {
-            return false;
-        }
-
-        $meta = stream_get_meta_data($this->resource);
-        $mode = $meta['mode'];
-
-        return (
-            strstr($mode, 'x')
-            || strstr($mode, 'w')
-            || strstr($mode, 'c')
-            || strstr($mode, 'a')
-            || strstr($mode, '+')
-        );
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($string)
-    {
-        if (! $this->resource) {
-            throw new RuntimeException('No resource available; cannot write');
-        }
-
-        if (! $this->isWritable()) {
-            throw new RuntimeException('Stream is not writable');
-        }
-
-        $result = fwrite($this->resource, $string);
-
-        if (false === $result) {
-            throw new RuntimeException('Error writing to stream');
-        }
-        return $result;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function isReadable()
-    {
-        if (! $this->resource) {
-            return false;
-        }
-
-        $meta = stream_get_meta_data($this->resource);
-        $mode = $meta['mode'];
-
-        return (strstr($mode, 'r') || strstr($mode, '+'));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($length)
-    {
-        if (! $this->resource) {
-            throw new RuntimeException('No resource available; cannot read');
-        }
-
-        if (! $this->isReadable()) {
-            throw new RuntimeException('Stream is not readable');
-        }
-
-        $result = fread($this->resource, $length);
-
-        if (false === $result) {
-            throw new RuntimeException('Error reading stream');
-        }
-
-        return $result;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getContents()
-    {
-        if (! $this->isReadable()) {
-            throw new RuntimeException('Stream is not readable');
-        }
-
-        $result = stream_get_contents($this->resource);
-        if (false === $result) {
-            throw new RuntimeException('Error reading from stream');
-        }
-        return $result;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getMetadata($key = null)
-    {
-        if (null === $key) {
-            return stream_get_meta_data($this->resource);
-        }
-
-        $metadata = stream_get_meta_data($this->resource);
-        if (! array_key_exists($key, $metadata)) {
-            return null;
-        }
-
-        return $metadata[$key];
-    }
-
-    /**
-     * Set the internal stream resource.
-     *
-     * @param string|resource $stream String stream target or stream resource.
-     * @param string $mode Resource mode for stream target.
-     * @throws InvalidArgumentException for invalid streams or resources.
-     */
-    private function setStream($stream, $mode = 'r')
-    {
-        $error    = null;
-        $resource = $stream;
-
-        if (is_string($stream)) {
-            set_error_handler(function ($e) use (&$error) {
-                $error = $e;
-            }, E_WARNING);
-            $resource = fopen($stream, $mode);
-            restore_error_handler();
-        }
-
-        if ($error) {
-            throw new InvalidArgumentException('Invalid stream reference provided');
-        }
-
-        if (! is_resource($resource) || 'stream' !== get_resource_type($resource)) {
-            throw new InvalidArgumentException(
-                'Invalid stream provided; must be a string stream identifier or stream resource'
-            );
-        }
-
-        if ($stream !== $resource) {
-            $this->stream = $stream;
-        }
-
-        $this->resource = $resource;
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/UploadedFile.php b/vendor/zendframework/zend-diactoros/src/UploadedFile.php
deleted file mode 100644
index 1aa083f..0000000
--- a/vendor/zendframework/zend-diactoros/src/UploadedFile.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use InvalidArgumentException;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UploadedFileInterface;
-use RuntimeException;
-
-class UploadedFile implements UploadedFileInterface
-{
-    /**
-     * @var string
-     */
-    private $clientFilename;
-
-    /**
-     * @var string
-     */
-    private $clientMediaType;
-
-    /**
-     * @var int
-     */
-    private $error;
-
-    /**
-     * @var null|string
-     */
-    private $file;
-
-    /**
-     * @var bool
-     */
-    private $moved = false;
-
-    /**
-     * @var int
-     */
-    private $size;
-
-    /**
-     * @var null|StreamInterface
-     */
-    private $stream;
-
-    public function __construct($streamOrFile, $size, $errorStatus, $clientFilename = null, $clientMediaType = null)
-    {
-        if ($errorStatus === UPLOAD_ERR_OK) {
-            if (is_string($streamOrFile)) {
-                $this->file = $streamOrFile;
-            }
-            if (is_resource($streamOrFile)) {
-                $this->stream = new Stream($streamOrFile);
-            }
-
-            if (! $this->file && ! $this->stream) {
-                if (! $streamOrFile instanceof StreamInterface) {
-                    throw new InvalidArgumentException('Invalid stream or file provided for UploadedFile');
-                }
-                $this->stream = $streamOrFile;
-            }
-        }
-
-        if (! is_int($size)) {
-            throw new InvalidArgumentException('Invalid size provided for UploadedFile; must be an int');
-        }
-        $this->size = $size;
-
-        if (! is_int($errorStatus)
-            || 0 > $errorStatus
-            || 8 < $errorStatus
-        ) {
-            throw new InvalidArgumentException(
-                'Invalid error status for UploadedFile; must be an UPLOAD_ERR_* constant'
-            );
-        }
-        $this->error = $errorStatus;
-
-        if (null !== $clientFilename && ! is_string($clientFilename)) {
-            throw new InvalidArgumentException(
-                'Invalid client filename provided for UploadedFile; must be null or a string'
-            );
-        }
-        $this->clientFilename = $clientFilename;
-
-        if (null !== $clientMediaType && ! is_string($clientMediaType)) {
-            throw new InvalidArgumentException(
-                'Invalid client media type provided for UploadedFile; must be null or a string'
-            );
-        }
-        $this->clientMediaType = $clientMediaType;
-    }
-
-    /**
-     * {@inheritdoc}
-     * @throws \RuntimeException if the upload was not successful.
-     */
-    public function getStream()
-    {
-        if ($this->error !== UPLOAD_ERR_OK) {
-            throw new RuntimeException('Cannot retrieve stream due to upload error');
-        }
-
-        if ($this->moved) {
-            throw new RuntimeException('Cannot retrieve stream after it has already been moved');
-        }
-
-        if ($this->stream instanceof StreamInterface) {
-            return $this->stream;
-        }
-
-        $this->stream = new Stream($this->file);
-        return $this->stream;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @see http://php.net/is_uploaded_file
-     * @see http://php.net/move_uploaded_file
-     * @param string $targetPath Path to which to move the uploaded file.
-     * @throws \RuntimeException if the upload was not successful.
-     * @throws \InvalidArgumentException if the $path specified is invalid.
-     * @throws \RuntimeException on any error during the move operation, or on
-     *     the second or subsequent call to the method.
-     */
-    public function moveTo($targetPath)
-    {
-        if ($this->error !== UPLOAD_ERR_OK) {
-            throw new RuntimeException('Cannot retrieve stream due to upload error');
-        }
-
-        if (! is_string($targetPath)) {
-            throw new InvalidArgumentException(
-                'Invalid path provided for move operation; must be a string'
-            );
-        }
-
-        if (empty($targetPath)) {
-            throw new InvalidArgumentException(
-                'Invalid path provided for move operation; must be a non-empty string'
-            );
-        }
-
-        if ($this->moved) {
-            throw new RuntimeException('Cannot move file; already moved!');
-        }
-
-        $sapi = PHP_SAPI;
-        switch (true) {
-            case (empty($sapi) || 0 === strpos($sapi, 'cli') || ! $this->file):
-                // Non-SAPI environment, or no filename present
-                $this->writeFile($targetPath);
-                break;
-            default:
-                // SAPI environment, with file present
-                if (false === move_uploaded_file($this->file, $targetPath)) {
-                    throw new RuntimeException('Error occurred while moving uploaded file');
-                }
-                break;
-        }
-
-        $this->moved = true;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return int|null The file size in bytes or null if unknown.
-     */
-    public function getSize()
-    {
-        return $this->size;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @see http://php.net/manual/en/features.file-upload.errors.php
-     * @return int One of PHP's UPLOAD_ERR_XXX constants.
-     */
-    public function getError()
-    {
-        return $this->error;
-    }
-
-    /**
-     * {@inheritdoc}
-     *
-     * @return string|null The filename sent by the client or null if none
-     *     was provided.
-     */
-    public function getClientFilename()
-    {
-        return $this->clientFilename;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getClientMediaType()
-    {
-        return $this->clientMediaType;
-    }
-
-    /**
-     * Write internal stream to given path
-     *
-     * @param string $path
-     */
-    private function writeFile($path)
-    {
-        $handle = fopen($path, 'wb+');
-        if (false === $handle) {
-            throw new RuntimeException('Unable to write to designated path');
-        }
-
-        $stream = $this->getStream();
-        $stream->rewind();
-        while (! $stream->eof()) {
-            fwrite($handle, $stream->read(4096));
-        }
-
-        fclose($handle);
-    }
-}
diff --git a/vendor/zendframework/zend-diactoros/src/Uri.php b/vendor/zendframework/zend-diactoros/src/Uri.php
deleted file mode 100644
index be3077a..0000000
--- a/vendor/zendframework/zend-diactoros/src/Uri.php
+++ /dev/null
@@ -1,659 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @see       http://github.com/zendframework/zend-diactoros for the canonical source repository
- * @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
- */
-
-namespace Zend\Diactoros;
-
-use InvalidArgumentException;
-use Psr\Http\Message\UriInterface;
-
-/**
- * Implementation of Psr\Http\UriInterface.
- *
- * Provides a value object representing a URI for HTTP requests.
- *
- * Instances of this class  are considered immutable; all methods that
- * might change state are implemented such that they retain the internal
- * state of the current instance and return a new instance that contains the
- * changed state.
- */
-class Uri implements UriInterface
-{
-    /**
-     * Sub-delimiters used in query strings and fragments.
-     *
-     * @const string
-     */
-    const CHAR_SUB_DELIMS = '!\$&\'\(\)\*\+,;=';
-
-    /**
-     * Unreserved characters used in paths, query strings, and fragments.
-     *
-     * @const string
-     */
-    const CHAR_UNRESERVED = 'a-zA-Z0-9_\-\.~';
-
-    /**
-     * @var int[] Array indexed by valid scheme names to their corresponding ports.
-     */
-    protected $allowedSchemes = [
-        'http'  => 80,
-        'https' => 443,
-    ];
-
-    /**
-     * @var string
-     */
-    private $scheme = '';
-
-    /**
-     * @var string
-     */
-    private $userInfo = '';
-
-    /**
-     * @var string
-     */
-    private $host = '';
-
-    /**
-     * @var int
-     */
-    private $port;
-
-    /**
-     * @var string
-     */
-    private $path = '';
-
-    /**
-     * @var string
-     */
-    private $query = '';
-
-    /**
-     * @var string
-     */
-    private $fragment = '';
-
-    /**
-     * generated uri string cache
-     * @var string|null
-     */
-    private $uriString;
-
-    /**
-     * @param string $uri
-     * @throws InvalidArgumentException on non-string $uri argument
-     */
-    public function __construct($uri = '')
-    {
-        if (! is_string($uri)) {
-            throw new InvalidArgumentException(sprintf(
-                'URI passed to constructor must be a string; received "%s"',
-                (is_object($uri) ? get_class($uri) : gettype($uri))
-            ));
-        }
-
-        if (! empty($uri)) {
-            $this->parseUri($uri);
-        }
-    }
-
-    /**
-     * Operations to perform on clone.
-     *
-     * Since cloning usually is for purposes of mutation, we reset the
-     * $uriString property so it will be re-calculated.
-     */
-    public function __clone()
-    {
-        $this->uriString = null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function __toString()
-    {
-        if (null !== $this->uriString) {
-            return $this->uriString;
-        }
-
-        $this->uriString = static::createUriString(
-            $this->scheme,
-            $this->getAuthority(),
-            $this->getPath(), // Absolute URIs should use a "/" for an empty path
-            $this->query,
-            $this->fragment
-        );
-
-        return $this->uriString;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getScheme()
-    {
-        return $this->scheme;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getAuthority()
-    {
-        if (empty($this->host)) {
-            return '';
-        }
-
-        $authority = $this->host;
-        if (! empty($this->userInfo)) {
-            $authority = $this->userInfo . '@' . $authority;
-        }
-
-        if ($this->isNonStandardPort($this->scheme, $this->host, $this->port)) {
-            $authority .= ':' . $this->port;
-        }
-
-        return $authority;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getUserInfo()
-    {
-        return $this->userInfo;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPort()
-    {
-        return $this->isNonStandardPort($this->scheme, $this->host, $this->port)
-            ? $this->port
-            : null;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getQuery()
-    {
-        return $this->query;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getFragment()
-    {
-        return $this->fragment;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withScheme($scheme)
-    {
-        if (! is_string($scheme)) {
-            throw new InvalidArgumentException(sprintf(
-                '%s expects a string argument; received %s',
-                __METHOD__,
-                (is_object($scheme) ? get_class($scheme) : gettype($scheme))
-            ));
-        }
-
-        $scheme = $this->filterScheme($scheme);
-
-        if ($scheme === $this->scheme) {
-            // Do nothing if no change was made.
-            return clone $this;
-        }
-
-        $new = clone $this;
-        $new->scheme = $scheme;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withUserInfo($user, $password = null)
-    {
-        if (! is_string($user)) {
-            throw new InvalidArgumentException(sprintf(
-                '%s expects a string user argument; received %s',
-                __METHOD__,
-                (is_object($user) ? get_class($user) : gettype($user))
-            ));
-        }
-        if (null !== $password && ! is_string($password)) {
-            throw new InvalidArgumentException(sprintf(
-                '%s expects a string password argument; received %s',
-                __METHOD__,
-                (is_object($password) ? get_class($password) : gettype($password))
-            ));
-        }
-
-        $info = $user;
-        if ($password) {
-            $info .= ':' . $password;
-        }
-
-        if ($info === $this->userInfo) {
-            // Do nothing if no change was made.
-            return clone $this;
-        }
-
-        $new = clone $this;
-        $new->userInfo = $info;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withHost($host)
-    {
-        if (! is_string($host)) {
-            throw new InvalidArgumentException(sprintf(
-                '%s expects a string argument; received %s',
-                __METHOD__,
-                (is_object($host) ? get_class($host) : gettype($host))
-            ));
-        }
-
-        if ($host === $this->host) {
-            // Do nothing if no change was made.
-            return clone $this;
-        }
-
-        $new = clone $this;
-        $new->host = $host;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withPort($port)
-    {
-        if (! is_numeric($port)) {
-            throw new InvalidArgumentException(sprintf(
-                'Invalid port "%s" specified; must be an integer or integer string',
-                (is_object($port) ? get_class($port) : gettype($port))
-            ));
-        }
-
-        $port = (int) $port;
-
-        if ($port === $this->port) {
-            // Do nothing if no change was made.
-            return clone $this;
-        }
-
-        if ($port < 1 || $port > 65535) {
-            throw new InvalidArgumentException(sprintf(
-                'Invalid port "%d" specified; must be a valid TCP/UDP port',
-                $port
-            ));
-        }
-
-        $new = clone $this;
-        $new->port = $port;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withPath($path)
-    {
-        if (! is_string($path)) {
-            throw new InvalidArgumentException(
-                'Invalid path provided; must be a string'
-            );
-        }
-
-        if (strpos($path, '?') !== false) {
-            throw new InvalidArgumentException(
-                'Invalid path provided; must not contain a query string'
-            );
-        }
-
-        if (strpos($path, '#') !== false) {
-            throw new InvalidArgumentException(
-                'Invalid path provided; must not contain a URI fragment'
-            );
-        }
-
-        $path = $this->filterPath($path);
-
-        if ($path === $this->path) {
-            // Do nothing if no change was made.
-            return clone $this;
-        }
-
-        $new = clone $this;
-        $new->path = $path;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withQuery($query)
-    {
-        if (! is_string($query)) {
-            throw new InvalidArgumentException(
-                'Query string must be a string'
-            );
-        }
-
-        if (strpos($query, '#') !== false) {
-            throw new InvalidArgumentException(
-                'Query string must not include a URI fragment'
-            );
-        }
-
-        $query = $this->filterQuery($query);
-
-        if ($query === $this->query) {
-            // Do nothing if no change was made.
-            return clone $this;
-        }
-
-        $new = clone $this;
-        $new->query = $query;
-
-        return $new;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function withFragment($fragment)
-    {
-        if (! is_string($fragment)) {
-            throw new InvalidArgumentException(sprintf(
-                '%s expects a string argument; received %s',
-                __METHOD__,
-                (is_object($fragment) ? get_class($fragment) : gettype($fragment))
-            ));
-        }
-
-        $fragment = $this->filterFragment($fragment);
-
-        if ($fragment === $this->fragment) {
-            // Do nothing if no change was made.
-            return clone $this;
-        }
-
-        $new = clone $this;
-        $new->fragment = $fragment;
-
-        return $new;
-    }
-
-    /**
-     * Parse a URI into its parts, and set the properties
-     *
-     * @param string $uri
-     */
-    private function parseUri($uri)
-    {
-        $parts = parse_url($uri);
-
-        if (false === $parts) {
-            throw new \InvalidArgumentException(
-                'The source URI string appears to be malformed'
-            );
-        }
-
-        $this->scheme    = isset($parts['scheme'])   ? $this->filterScheme($parts['scheme']) : '';
-        $this->userInfo  = isset($parts['user'])     ? $parts['user']     : '';
-        $this->host      = isset($parts['host'])     ? $parts['host']     : '';
-        $this->port      = isset($parts['port'])     ? $parts['port']     : null;
-        $this->path      = isset($parts['path'])     ? $this->filterPath($parts['path']) : '';
-        $this->query     = isset($parts['query'])    ? $this->filterQuery($parts['query']) : '';
-        $this->fragment  = isset($parts['fragment']) ? $this->filterFragment($parts['fragment']) : '';
-
-        if (isset($parts['pass'])) {
-            $this->userInfo .= ':' . $parts['pass'];
-        }
-    }
-
-    /**
-     * Create a URI string from its various parts
-     *
-     * @param string $scheme
-     * @param string $authority
-     * @param string $path
-     * @param string $query
-     * @param string $fragment
-     * @return string
-     */
-    private static function createUriString($scheme, $authority, $path, $query, $fragment)
-    {
-        $uri = '';
-
-        if (! empty($scheme)) {
-            $uri .= sprintf('%s://', $scheme);
-        }
-
-        if (! empty($authority)) {
-            $uri .= $authority;
-        }
-
-        if ($path) {
-            if (empty($path) || '/' !== substr($path, 0, 1)) {
-                $path = '/' . $path;
-            }
-
-            $uri .= $path;
-        }
-
-        if ($query) {
-            $uri .= sprintf('?%s', $query);
-        }
-
-        if ($fragment) {
-            $uri .= sprintf('#%s', $fragment);
-        }
-
-        return $uri;
-    }
-
-    /**
-     * Is a given port non-standard for the current scheme?
-     *
-     * @param string $scheme
-     * @param string $host
-     * @param int $port
-     * @return bool
-     */
-    private function isNonStandardPort($scheme, $host, $port)
-    {
-        if (! $scheme) {
-            return true;
-        }
-
-        if (! $host || ! $port) {
-            return false;
-        }
-
-        return ! isset($this->allowedSchemes[$scheme]) || $port !== $this->allowedSchemes[$scheme];
-    }
-
-    /**
-     * Filters the scheme to ensure it is a valid scheme.
-     *
-     * @param string $scheme Scheme name.
-     *
-     * @return string Filtered scheme.
-     */
-    private function filterScheme($scheme)
-    {
-        $scheme = strtolower($scheme);
-        $scheme = preg_replace('#:(//)?$#', '', $scheme);
-
-        if (empty($scheme)) {
-            return '';
-        }
-
-        if (! array_key_exists($scheme, $this->allowedSchemes)) {
-            throw new InvalidArgumentException(sprintf(
-                'Unsupported scheme "%s"; must be any empty string or in the set (%s)',
-                $scheme,
-                implode(', ', array_keys($this->allowedSchemes))
-            ));
-        }
-
-        return $scheme;
-    }
-
-    /**
-     * Filters the path of a URI to ensure it is properly encoded.
-     *
-     * @param string $path
-     * @return string
-     */
-    private function filterPath($path)
-    {
-        $path = preg_replace_callback(
-            '/(?:[^' . self::CHAR_UNRESERVED . ':@&=\+\$,\/;%]+|%(?![A-Fa-f0-9]{2}))/',
-            [$this, 'urlEncodeChar'],
-            $path
-        );
-
-        if (empty($path)) {
-            // No path
-            return $path;
-        }
-
-        if ($path[0] !== '/') {
-            // Relative path
-            return $path;
-        }
-
-        // Ensure only one leading slash, to prevent XSS attempts.
-        return '/' . ltrim($path, '/');
-    }
-
-    /**
-     * Filter a query string to ensure it is propertly encoded.
-     *
-     * Ensures that the values in the query string are properly urlencoded.
-     *
-     * @param string $query
-     * @return string
-     */
-    private function filterQuery($query)
-    {
-        if (! empty($query) && strpos($query, '?') === 0) {
-            $query = substr($query, 1);
-        }
-
-        $parts = explode('&', $query);
-        foreach ($parts as $index => $part) {
-            list($key, $value) = $this->splitQueryValue($part);
-            if ($value === null) {
-                $parts[$index] = $this->filterQueryOrFragment($key);
-                continue;
-            }
-            $parts[$index] = sprintf(
-                '%s=%s',
-                $this->filterQueryOrFragment($key),
-                $this->filterQueryOrFragment($value)
-            );
-        }
-
-        return implode('&', $parts);
-    }
-
-    /**
-     * Split a query value into a key/value tuple.
-     *
-     * @param string $value
-     * @return array A value with exactly two elements, key and value
-     */
-    private function splitQueryValue($value)
-    {
-        $data = explode('=', $value, 2);
-        if (1 === count($data)) {
-            $data[] = null;
-        }
-        return $data;
-    }
-
-    /**
-     * Filter a fragment value to ensure it is properly encoded.
-     *
-     * @param null|string $fragment
-     * @return string
-     */
-    private function filterFragment($fragment)
-    {
-        if (! empty($fragment) && strpos($fragment, '#') === 0) {
-            $fragment = substr($fragment, 1);
-        }
-
-        return $this->filterQueryOrFragment($fragment);
-    }
-
-    /**
-     * Filter a query string key or value, or a fragment.
-     *
-     * @param string $value
-     * @return string
-     */
-    private function filterQueryOrFragment($value)
-    {
-        return preg_replace_callback(
-            '/(?:[^' . self::CHAR_UNRESERVED . self::CHAR_SUB_DELIMS . '%:@\/\?]+|%(?![A-Fa-f0-9]{2}))/',
-            [$this, 'urlEncodeChar'],
-            $value
-        );
-    }
-
-    /**
-     * URL encode a character returned by a regex.
-     *
-     * @param array $matches
-     * @return string
-     */
-    private function urlEncodeChar(array $matches)
-    {
-        return rawurlencode($matches[0]);
-    }
-}
diff --git a/vendor/zendframework/zend-escaper/CONTRIBUTING.md b/vendor/zendframework/zend-escaper/CONTRIBUTING.md
deleted file mode 100644
index 2b58aca..0000000
--- a/vendor/zendframework/zend-escaper/CONTRIBUTING.md
+++ /dev/null
@@ -1,229 +0,0 @@
-# CONTRIBUTING
-
-## RESOURCES
-
-If you wish to contribute to Zend Framework, please be sure to
-read/subscribe to the following resources:
-
- -  [Coding Standards](https://github.com/zendframework/zf2/wiki/Coding-Standards)
- -  [Contributor's Guide](http://framework.zend.com/participate/contributor-guide)
- -  ZF Contributor's mailing list:
-    Archives: http://zend-framework-community.634137.n4.nabble.com/ZF-Contributor-f680267.html
-    Subscribe: zf-contributors-subscribe@lists.zend.com
- -  ZF Contributor's IRC channel:
-    #zftalk.dev on Freenode.net
-
-If you are working on new features or refactoring [create a proposal](https://github.com/zendframework/zend-escaper/issues/new).
-
-## Reporting Potential Security Issues
-
-If you have encountered a potential security vulnerability, please **DO NOT** report it on the public
-issue tracker: send it to us at [zf-security@zend.com](mailto:zf-security@zend.com) instead.
-We will work with you to verify the vulnerability and patch it as soon as possible.
-
-When reporting issues, please provide the following information:
-
-- Component(s) affected
-- A description indicating how to reproduce the issue
-- A summary of the security vulnerability and impact
-
-We request that you contact us via the email address above and give the project
-contributors a chance to resolve the vulnerability and issue a new release prior
-to any public exposure; this helps protect users and provides them with a chance
-to upgrade and/or update in order to protect their applications.
-
-For sensitive email communications, please use [our PGP key](http://framework.zend.com/zf-security-pgp-key.asc).
-
-## RUNNING TESTS
-
-> ### Note: testing versions prior to 2.4
->
-> This component originates with Zend Framework 2. During the lifetime of ZF2,
-> testing infrastructure migrated from PHPUnit 3 to PHPUnit 4. In most cases, no
-> changes were necessary. However, due to the migration, tests may not run on
-> versions < 2.4. As such, you may need to change the PHPUnit dependency if
-> attempting a fix on such a version.
-
-To run tests:
-
-- Clone the repository:
-
-  ```console
-  $ git clone git@github.com:zendframework/zend-escaper.git
-  $ cd
-  ```
-
-- Install dependencies via composer:
-
-  ```console
-  $ curl -sS https://getcomposer.org/installer | php --
-  $ ./composer.phar install
-  ```
-
-  If you don't have `curl` installed, you can also download `composer.phar` from https://getcomposer.org/
-
-- Run the tests via `phpunit` and the provided PHPUnit config, like in this example:
-
-  ```console
-  $ ./vendor/bin/phpunit
-  ```
-
-You can turn on conditional tests with the phpunit.xml file.
-To do so:
-
- -  Copy `phpunit.xml.dist` file to `phpunit.xml`
- -  Edit `phpunit.xml` to enable any specific functionality you
-    want to test, as well as to provide test values to utilize.
-
-## Running Coding Standards Checks
-
-This component uses [php-cs-fixer](http://cs.sensiolabs.org/) for coding
-standards checks, and provides configuration for our selected checks.
-`php-cs-fixer` is installed by default via Composer.
-
-To run checks only:
-
-```console
-$ ./vendor/bin/php-cs-fixer fix . -v --diff --dry-run --config-file=.php_cs
-```
-
-To have `php-cs-fixer` attempt to fix problems for you, omit the `--dry-run`
-flag:
-
-```console
-$ ./vendor/bin/php-cs-fixer fix . -v --diff --config-file=.php_cs
-```
-
-If you allow php-cs-fixer to fix CS issues, please re-run the tests to ensure
-they pass, and make sure you add and commit the changes after verification.
-
-## Recommended Workflow for Contributions
-
-Your first step is to establish a public repository from which we can
-pull your work into the master repository. We recommend using
-[GitHub](https://github.com), as that is where the component is already hosted.
-
-1. Setup a [GitHub account](http://github.com/), if you haven't yet
-2. Fork the repository (http://github.com/zendframework/zend-escaper)
-3. Clone the canonical repository locally and enter it.
-
-   ```console
-   $ git clone git://github.com:zendframework/zend-escaper.git
-   $ cd zend-escaper
-   ```
-
-4. Add a remote to your fork; substitute your GitHub username in the command
-   below.
-
-   ```console
-   $ git remote add {username} git@github.com:{username}/zend-escaper.git
-   $ git fetch {username}
-   ```
-
-### Keeping Up-to-Date
-
-Periodically, you should update your fork or personal repository to
-match the canonical ZF repository. Assuming you have setup your local repository
-per the instructions above, you can do the following:
-
-
-```console
-$ git checkout master
-$ git fetch origin
-$ git rebase origin/master
-# OPTIONALLY, to keep your remote up-to-date -
-$ git push {username} master:master
-```
-
-If you're tracking other branches -- for example, the "develop" branch, where
-new feature development occurs -- you'll want to do the same operations for that
-branch; simply substitute  "develop" for "master".
-
-### Working on a patch
-
-We recommend you do each new feature or bugfix in a new branch. This simplifies
-the task of code review as well as the task of merging your changes into the
-canonical repository.
-
-A typical workflow will then consist of the following:
-
-1. Create a new local branch based off either your master or develop branch.
-2. Switch to your new local branch. (This step can be combined with the
-   previous step with the use of `git checkout -b`.)
-3. Do some work, commit, repeat as necessary.
-4. Push the local branch to your remote repository.
-5. Send a pull request.
-
-The mechanics of this process are actually quite trivial. Below, we will
-create a branch for fixing an issue in the tracker.
-
-```console
-$ git checkout -b hotfix/9295
-Switched to a new branch 'hotfix/9295'
-```
-
-... do some work ...
-
-
-```console
-$ git commit
-```
-
-... write your log message ...
-
-
-```console
-$ git push {username} hotfix/9295:hotfix/9295
-Counting objects: 38, done.
-Delta compression using up to 2 threads.
-Compression objects: 100% (18/18), done.
-Writing objects: 100% (20/20), 8.19KiB, done.
-Total 20 (delta 12), reused 0 (delta 0)
-To ssh://git@github.com/{username}/zend-escaper.git
-   b5583aa..4f51698  HEAD -> master
-```
-
-To send a pull request, you have two options.
-
-If using GitHub, you can do the pull request from there. Navigate to
-your repository, select the branch you just created, and then select the
-"Pull Request" button in the upper right. Select the user/organization
-"zendframework" as the recipient.
-
-If using your own repository - or even if using GitHub - you can use `git
-format-patch` to create a patchset for us to apply; in fact, this is
-**recommended** for security-related patches. If you use `format-patch`, please
-send the patches as attachments to:
-
--  zf-devteam@zend.com for patches without security implications
--  zf-security@zend.com for security patches
-
-#### What branch to issue the pull request against?
-
-Which branch should you issue a pull request against?
-
-- For fixes against the stable release, issue the pull request against the
-  "master" branch.
-- For new features, or fixes that introduce new elements to the public API (such
-  as new public methods or properties), issue the pull request against the
-  "develop" branch.
-
-### Branch Cleanup
-
-As you might imagine, if you are a frequent contributor, you'll start to
-get a ton of branches both locally and on your remote.
-
-Once you know that your changes have been accepted to the master
-repository, we suggest doing some cleanup of these branches.
-
--  Local branch cleanup
-
-   ```console
-   $ git branch -d <branchname>
-   ```
-
--  Remote branch removal
-
-   ```console
-   $ git push {username} :<branchname>
-   ```
diff --git a/vendor/zendframework/zend-escaper/LICENSE.md b/vendor/zendframework/zend-escaper/LICENSE.md
deleted file mode 100644
index dbb1b49..0000000
--- a/vendor/zendframework/zend-escaper/LICENSE.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2005-2015, Zend Technologies USA, Inc.
-
-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 Zend Technologies USA, Inc. nor the names of its
-  contributors may be used to endorse or promote products derived from this
-  software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/zendframework/zend-escaper/README.md b/vendor/zendframework/zend-escaper/README.md
deleted file mode 100644
index 9ed284f..0000000
--- a/vendor/zendframework/zend-escaper/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# zend-escaper
-
-[![Build Status](https://secure.travis-ci.org/zendframework/zend-escaper.svg?branch=master)](https://secure.travis-ci.org/zendframework/zend-escaper)
-[![Coverage Status](https://coveralls.io/repos/zendframework/zend-escaper/badge.svg?branch=master)](https://coveralls.io/r/zendframework/zend-escaper?branch=master)
-
-The OWASP Top 10 web security risks study lists Cross-Site Scripting (XSS) in
-second place. PHP’s sole functionality against XSS is limited to two functions
-of which one is commonly misapplied. Thus, the `Zend\Escaper` component was written.
-It offers developers a way to escape output and defend from XSS and related
-vulnerabilities by introducing contextual escaping based on peer-reviewed rules.
-
-
-- File issues at https://github.com/zendframework/zend-escaper/issues
-- Documentation is at http://framework.zend.com/manual/current/en/index.html#zend-escaper
diff --git a/vendor/zendframework/zend-escaper/composer.json b/vendor/zendframework/zend-escaper/composer.json
deleted file mode 100644
index faa4375..0000000
--- a/vendor/zendframework/zend-escaper/composer.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "name": "zendframework/zend-escaper",
-    "description": " ",
-    "license": "BSD-3-Clause",
-    "keywords": [
-        "zf2",
-        "escaper"
-    ],
-    "homepage": "https://github.com/zendframework/zend-escaper",
-    "autoload": {
-        "psr-4": {
-            "Zend\\Escaper\\": "src/"
-        }
-    },
-    "require": {
-        "php": ">=5.3.23"
-    },
-    "minimum-stability": "dev",
-    "prefer-stable": true,
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.5-dev",
-            "dev-develop": "2.6-dev"
-        }
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "ZendTest\\Escaper\\": "test/"
-        }
-    },
-    "require-dev": {
-        "fabpot/php-cs-fixer": "1.7.*",
-        "phpunit/PHPUnit": "~4.0"
-    }
-}
\ No newline at end of file
diff --git a/vendor/zendframework/zend-escaper/src/Escaper.php b/vendor/zendframework/zend-escaper/src/Escaper.php
deleted file mode 100644
index 072d543..0000000
--- a/vendor/zendframework/zend-escaper/src/Escaper.php
+++ /dev/null
@@ -1,386 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Escaper;
-
-/**
- * Context specific methods for use in secure output escaping
- */
-class Escaper
-{
-    /**
-     * Entity Map mapping Unicode codepoints to any available named HTML entities.
-     *
-     * While HTML supports far more named entities, the lowest common denominator
-     * has become HTML5's XML Serialisation which is restricted to the those named
-     * entities that XML supports. Using HTML entities would result in this error:
-     *     XML Parsing Error: undefined entity
-     *
-     * @var array
-     */
-    protected static $htmlNamedEntityMap = array(
-        34 => 'quot',         // quotation mark
-        38 => 'amp',          // ampersand
-        60 => 'lt',           // less-than sign
-        62 => 'gt',           // greater-than sign
-    );
-
-    /**
-     * Current encoding for escaping. If not UTF-8, we convert strings from this encoding
-     * pre-escaping and back to this encoding post-escaping.
-     *
-     * @var string
-     */
-    protected $encoding = 'utf-8';
-
-    /**
-     * Holds the value of the special flags passed as second parameter to
-     * htmlspecialchars(). We modify these for PHP 5.4 to take advantage
-     * of the new ENT_SUBSTITUTE flag for correctly dealing with invalid
-     * UTF-8 sequences.
-     *
-     * @var string
-     */
-    protected $htmlSpecialCharsFlags = ENT_QUOTES;
-
-    /**
-     * Static Matcher which escapes characters for HTML Attribute contexts
-     *
-     * @var callable
-     */
-    protected $htmlAttrMatcher;
-
-    /**
-     * Static Matcher which escapes characters for Javascript contexts
-     *
-     * @var callable
-     */
-    protected $jsMatcher;
-
-    /**
-     * Static Matcher which escapes characters for CSS Attribute contexts
-     *
-     * @var callable
-     */
-    protected $cssMatcher;
-
-    /**
-     * List of all encoding supported by this class
-     *
-     * @var array
-     */
-    protected $supportedEncodings = array(
-        'iso-8859-1',   'iso8859-1',    'iso-8859-5',   'iso8859-5',
-        'iso-8859-15',  'iso8859-15',   'utf-8',        'cp866',
-        'ibm866',       '866',          'cp1251',       'windows-1251',
-        'win-1251',     '1251',         'cp1252',       'windows-1252',
-        '1252',         'koi8-r',       'koi8-ru',      'koi8r',
-        'big5',         '950',          'gb2312',       '936',
-        'big5-hkscs',   'shift_jis',    'sjis',         'sjis-win',
-        'cp932',        '932',          'euc-jp',       'eucjp',
-        'eucjp-win',    'macroman'
-    );
-
-    /**
-     * Constructor: Single parameter allows setting of global encoding for use by
-     * the current object. If PHP 5.4 is detected, additional ENT_SUBSTITUTE flag
-     * is set for htmlspecialchars() calls.
-     *
-     * @param string $encoding
-     * @throws Exception\InvalidArgumentException
-     */
-    public function __construct($encoding = null)
-    {
-        if ($encoding !== null) {
-            $encoding = (string) $encoding;
-            if ($encoding === '') {
-                throw new Exception\InvalidArgumentException(
-                    get_class($this) . ' constructor parameter does not allow a blank value'
-                );
-            }
-
-            $encoding = strtolower($encoding);
-            if (!in_array($encoding, $this->supportedEncodings)) {
-                throw new Exception\InvalidArgumentException(
-                    'Value of \'' . $encoding . '\' passed to ' . get_class($this)
-                    . ' constructor parameter is invalid. Provide an encoding supported by htmlspecialchars()'
-                );
-            }
-
-            $this->encoding = $encoding;
-        }
-
-        if (defined('ENT_SUBSTITUTE')) {
-            $this->htmlSpecialCharsFlags|= ENT_SUBSTITUTE;
-        }
-
-        // set matcher callbacks
-        $this->htmlAttrMatcher = array($this, 'htmlAttrMatcher');
-        $this->jsMatcher       = array($this, 'jsMatcher');
-        $this->cssMatcher      = array($this, 'cssMatcher');
-    }
-
-    /**
-     * Return the encoding that all output/input is expected to be encoded in.
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        return $this->encoding;
-    }
-
-    /**
-     * Escape a string for the HTML Body context where there are very few characters
-     * of special meaning. Internally this will use htmlspecialchars().
-     *
-     * @param string $string
-     * @return string
-     */
-    public function escapeHtml($string)
-    {
-        return htmlspecialchars($string, $this->htmlSpecialCharsFlags, $this->encoding);
-    }
-
-    /**
-     * Escape a string for the HTML Attribute context. We use an extended set of characters
-     * to escape that are not covered by htmlspecialchars() to cover cases where an attribute
-     * might be unquoted or quoted illegally (e.g. backticks are valid quotes for IE).
-     *
-     * @param string $string
-     * @return string
-     */
-    public function escapeHtmlAttr($string)
-    {
-        $string = $this->toUtf8($string);
-        if ($string === '' || ctype_digit($string)) {
-            return $string;
-        }
-
-        $result = preg_replace_callback('/[^a-z0-9,\.\-_]/iSu', $this->htmlAttrMatcher, $string);
-        return $this->fromUtf8($result);
-    }
-
-    /**
-     * Escape a string for the Javascript context. This does not use json_encode(). An extended
-     * set of characters are escaped beyond ECMAScript's rules for Javascript literal string
-     * escaping in order to prevent misinterpretation of Javascript as HTML leading to the
-     * injection of special characters and entities. The escaping used should be tolerant
-     * of cases where HTML escaping was not applied on top of Javascript escaping correctly.
-     * Backslash escaping is not used as it still leaves the escaped character as-is and so
-     * is not useful in a HTML context.
-     *
-     * @param string $string
-     * @return string
-     */
-    public function escapeJs($string)
-    {
-        $string = $this->toUtf8($string);
-        if ($string === '' || ctype_digit($string)) {
-            return $string;
-        }
-
-        $result = preg_replace_callback('/[^a-z0-9,\._]/iSu', $this->jsMatcher, $string);
-        return $this->fromUtf8($result);
-    }
-
-    /**
-     * Escape a string for the URI or Parameter contexts. This should not be used to escape
-     * an entire URI - only a subcomponent being inserted. The function is a simple proxy
-     * to rawurlencode() which now implements RFC 3986 since PHP 5.3 completely.
-     *
-     * @param string $string
-     * @return string
-     */
-    public function escapeUrl($string)
-    {
-        return rawurlencode($string);
-    }
-
-    /**
-     * Escape a string for the CSS context. CSS escaping can be applied to any string being
-     * inserted into CSS and escapes everything except alphanumerics.
-     *
-     * @param string $string
-     * @return string
-     */
-    public function escapeCss($string)
-    {
-        $string = $this->toUtf8($string);
-        if ($string === '' || ctype_digit($string)) {
-            return $string;
-        }
-
-        $result = preg_replace_callback('/[^a-z0-9]/iSu', $this->cssMatcher, $string);
-        return $this->fromUtf8($result);
-    }
-
-    /**
-     * Callback function for preg_replace_callback that applies HTML Attribute
-     * escaping to all matches.
-     *
-     * @param array $matches
-     * @return string
-     */
-    protected function htmlAttrMatcher($matches)
-    {
-        $chr = $matches[0];
-        $ord = ord($chr);
-
-        /**
-         * The following replaces characters undefined in HTML with the
-         * hex entity for the Unicode replacement character.
-         */
-        if (($ord <= 0x1f && $chr != "\t" && $chr != "\n" && $chr != "\r")
-            || ($ord >= 0x7f && $ord <= 0x9f)
-        ) {
-            return '&#xFFFD;';
-        }
-
-        /**
-         * Check if the current character to escape has a name entity we should
-         * replace it with while grabbing the integer value of the character.
-         */
-        if (strlen($chr) > 1) {
-            $chr = $this->convertEncoding($chr, 'UTF-16BE', 'UTF-8');
-        }
-
-        $hex = bin2hex($chr);
-        $ord = hexdec($hex);
-        if (isset(static::$htmlNamedEntityMap[$ord])) {
-            return '&' . static::$htmlNamedEntityMap[$ord] . ';';
-        }
-
-        /**
-         * Per OWASP recommendations, we'll use upper hex entities
-         * for any other characters where a named entity does not exist.
-         */
-        if ($ord > 255) {
-            return sprintf('&#x%04X;', $ord);
-        }
-        return sprintf('&#x%02X;', $ord);
-    }
-
-    /**
-     * Callback function for preg_replace_callback that applies Javascript
-     * escaping to all matches.
-     *
-     * @param array $matches
-     * @return string
-     */
-    protected function jsMatcher($matches)
-    {
-        $chr = $matches[0];
-        if (strlen($chr) == 1) {
-            return sprintf('\\x%02X', ord($chr));
-        }
-        $chr = $this->convertEncoding($chr, 'UTF-16BE', 'UTF-8');
-        return sprintf('\\u%04s', strtoupper(bin2hex($chr)));
-    }
-
-    /**
-     * Callback function for preg_replace_callback that applies CSS
-     * escaping to all matches.
-     *
-     * @param array $matches
-     * @return string
-     */
-    protected function cssMatcher($matches)
-    {
-        $chr = $matches[0];
-        if (strlen($chr) == 1) {
-            $ord = ord($chr);
-        } else {
-            $chr = $this->convertEncoding($chr, 'UTF-16BE', 'UTF-8');
-            $ord = hexdec(bin2hex($chr));
-        }
-        return sprintf('\\%X ', $ord);
-    }
-
-    /**
-     * Converts a string to UTF-8 from the base encoding. The base encoding is set via this
-     * class' constructor.
-     *
-     * @param string $string
-     * @throws Exception\RuntimeException
-     * @return string
-     */
-    protected function toUtf8($string)
-    {
-        if ($this->getEncoding() === 'utf-8') {
-            $result = $string;
-        } else {
-            $result = $this->convertEncoding($string, 'UTF-8', $this->getEncoding());
-        }
-
-        if (!$this->isUtf8($result)) {
-            throw new Exception\RuntimeException(
-                sprintf('String to be escaped was not valid UTF-8 or could not be converted: %s', $result)
-            );
-        }
-
-        return $result;
-    }
-
-    /**
-     * Converts a string from UTF-8 to the base encoding. The base encoding is set via this
-     * class' constructor.
-     * @param string $string
-     * @return string
-     */
-    protected function fromUtf8($string)
-    {
-        if ($this->getEncoding() === 'utf-8') {
-            return $string;
-        }
-
-        return $this->convertEncoding($string, $this->getEncoding(), 'UTF-8');
-    }
-
-    /**
-     * Checks if a given string appears to be valid UTF-8 or not.
-     *
-     * @param string $string
-     * @return bool
-     */
-    protected function isUtf8($string)
-    {
-        return ($string === '' || preg_match('/^./su', $string));
-    }
-
-    /**
-     * Encoding conversion helper which wraps iconv and mbstring where they exist or throws
-     * and exception where neither is available.
-     *
-     * @param string $string
-     * @param string $to
-     * @param array|string $from
-     * @throws Exception\RuntimeException
-     * @return string
-     */
-    protected function convertEncoding($string, $to, $from)
-    {
-        if (function_exists('iconv')) {
-            $result = iconv($from, $to, $string);
-        } elseif (function_exists('mb_convert_encoding')) {
-            $result = mb_convert_encoding($string, $to, $from);
-        } else {
-            throw new Exception\RuntimeException(
-                get_class($this)
-                . ' requires either the iconv or mbstring extension to be installed'
-                . ' when escaping for non UTF-8 strings.'
-            );
-        }
-
-        if ($result === false) {
-            return ''; // return non-fatal blank string on encoding errors from users
-        }
-        return $result;
-    }
-}
diff --git a/vendor/zendframework/zend-escaper/src/Exception/ExceptionInterface.php b/vendor/zendframework/zend-escaper/src/Exception/ExceptionInterface.php
deleted file mode 100644
index 7174796..0000000
--- a/vendor/zendframework/zend-escaper/src/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Escaper\Exception;
-
-interface ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-escaper/src/Exception/InvalidArgumentException.php b/vendor/zendframework/zend-escaper/src/Exception/InvalidArgumentException.php
deleted file mode 100644
index 0ad3f73..0000000
--- a/vendor/zendframework/zend-escaper/src/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Escaper\Exception;
-
-/**
- * Invalid argument exception
- */
-class InvalidArgumentException extends \InvalidArgumentException implements
-    ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-escaper/src/Exception/RuntimeException.php b/vendor/zendframework/zend-escaper/src/Exception/RuntimeException.php
deleted file mode 100644
index d626123..0000000
--- a/vendor/zendframework/zend-escaper/src/Exception/RuntimeException.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Escaper\Exception;
-
-/**
- * Invalid argument exception
- */
-class RuntimeException extends \RuntimeException implements
-    ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/CHANGELOG.md b/vendor/zendframework/zend-feed/CHANGELOG.md
deleted file mode 100644
index 426cab5..0000000
--- a/vendor/zendframework/zend-feed/CHANGELOG.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 2.5.2 - TBD
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#5](https://github.com/zendframework/zend-feed/pull/5) fixes the enclosure
-  length check to allow zero and integer strings.
-- [#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.
diff --git a/vendor/zendframework/zend-feed/CONTRIBUTING.md b/vendor/zendframework/zend-feed/CONTRIBUTING.md
deleted file mode 100644
index e964373..0000000
--- a/vendor/zendframework/zend-feed/CONTRIBUTING.md
+++ /dev/null
@@ -1,229 +0,0 @@
-# CONTRIBUTING
-
-## RESOURCES
-
-If you wish to contribute to Zend Framework, please be sure to
-read/subscribe to the following resources:
-
- -  [Coding Standards](https://github.com/zendframework/zf2/wiki/Coding-Standards)
- -  [Contributor's Guide](http://framework.zend.com/participate/contributor-guide)
- -  ZF Contributor's mailing list:
-    Archives: http://zend-framework-community.634137.n4.nabble.com/ZF-Contributor-f680267.html
-    Subscribe: zf-contributors-subscribe@lists.zend.com
- -  ZF Contributor's IRC channel:
-    #zftalk.dev on Freenode.net
-
-If you are working on new features or refactoring [create a proposal](https://github.com/zendframework/zend-feed/issues/new).
-
-## Reporting Potential Security Issues
-
-If you have encountered a potential security vulnerability, please **DO NOT** report it on the public
-issue tracker: send it to us at [zf-security@zend.com](mailto:zf-security@zend.com) instead.
-We will work with you to verify the vulnerability and patch it as soon as possible.
-
-When reporting issues, please provide the following information:
-
-- Component(s) affected
-- A description indicating how to reproduce the issue
-- A summary of the security vulnerability and impact
-
-We request that you contact us via the email address above and give the project
-contributors a chance to resolve the vulnerability and issue a new release prior
-to any public exposure; this helps protect users and provides them with a chance
-to upgrade and/or update in order to protect their applications.
-
-For sensitive email communications, please use [our PGP key](http://framework.zend.com/zf-security-pgp-key.asc).
-
-## RUNNING TESTS
-
-> ### Note: testing versions prior to 2.4
->
-> This component originates with Zend Framework 2. During the lifetime of ZF2,
-> testing infrastructure migrated from PHPUnit 3 to PHPUnit 4. In most cases, no
-> changes were necessary. However, due to the migration, tests may not run on
-> versions < 2.4. As such, you may need to change the PHPUnit dependency if
-> attempting a fix on such a version.
-
-To run tests:
-
-- Clone the repository:
-
-  ```console
-  $ git clone git@github.com:zendframework/zend-feed.git
-  $ cd
-  ```
-
-- Install dependencies via composer:
-
-  ```console
-  $ curl -sS https://getcomposer.org/installer | php --
-  $ ./composer.phar install
-  ```
-
-  If you don't have `curl` installed, you can also download `composer.phar` from https://getcomposer.org/
-
-- Run the tests via `phpunit` and the provided PHPUnit config, like in this example:
-
-  ```console
-  $ ./vendor/bin/phpunit
-  ```
-
-You can turn on conditional tests with the phpunit.xml file.
-To do so:
-
- -  Copy `phpunit.xml.dist` file to `phpunit.xml`
- -  Edit `phpunit.xml` to enable any specific functionality you
-    want to test, as well as to provide test values to utilize.
-
-## Running Coding Standards Checks
-
-This component uses [php-cs-fixer](http://cs.sensiolabs.org/) for coding
-standards checks, and provides configuration for our selected checks.
-`php-cs-fixer` is installed by default via Composer.
-
-To run checks only:
-
-```console
-$ ./vendor/bin/php-cs-fixer fix . -v --diff --dry-run --config-file=.php_cs
-```
-
-To have `php-cs-fixer` attempt to fix problems for you, omit the `--dry-run`
-flag:
-
-```console
-$ ./vendor/bin/php-cs-fixer fix . -v --diff --config-file=.php_cs
-```
-
-If you allow php-cs-fixer to fix CS issues, please re-run the tests to ensure
-they pass, and make sure you add and commit the changes after verification.
-
-## Recommended Workflow for Contributions
-
-Your first step is to establish a public repository from which we can
-pull your work into the master repository. We recommend using
-[GitHub](https://github.com), as that is where the component is already hosted.
-
-1. Setup a [GitHub account](http://github.com/), if you haven't yet
-2. Fork the repository (http://github.com/zendframework/zend-feed)
-3. Clone the canonical repository locally and enter it.
-
-   ```console
-   $ git clone git://github.com:zendframework/zend-feed.git
-   $ cd zend-feed
-   ```
-
-4. Add a remote to your fork; substitute your GitHub username in the command
-   below.
-
-   ```console
-   $ git remote add {username} git@github.com:{username}/zend-feed.git
-   $ git fetch {username}
-   ```
-
-### Keeping Up-to-Date
-
-Periodically, you should update your fork or personal repository to
-match the canonical ZF repository. Assuming you have setup your local repository
-per the instructions above, you can do the following:
-
-
-```console
-$ git checkout master
-$ git fetch origin
-$ git rebase origin/master
-# OPTIONALLY, to keep your remote up-to-date -
-$ git push {username} master:master
-```
-
-If you're tracking other branches -- for example, the "develop" branch, where
-new feature development occurs -- you'll want to do the same operations for that
-branch; simply substitute  "develop" for "master".
-
-### Working on a patch
-
-We recommend you do each new feature or bugfix in a new branch. This simplifies
-the task of code review as well as the task of merging your changes into the
-canonical repository.
-
-A typical workflow will then consist of the following:
-
-1. Create a new local branch based off either your master or develop branch.
-2. Switch to your new local branch. (This step can be combined with the
-   previous step with the use of `git checkout -b`.)
-3. Do some work, commit, repeat as necessary.
-4. Push the local branch to your remote repository.
-5. Send a pull request.
-
-The mechanics of this process are actually quite trivial. Below, we will
-create a branch for fixing an issue in the tracker.
-
-```console
-$ git checkout -b hotfix/9295
-Switched to a new branch 'hotfix/9295'
-```
-
-... do some work ...
-
-
-```console
-$ git commit
-```
-
-... write your log message ...
-
-
-```console
-$ git push {username} hotfix/9295:hotfix/9295
-Counting objects: 38, done.
-Delta compression using up to 2 threads.
-Compression objects: 100% (18/18), done.
-Writing objects: 100% (20/20), 8.19KiB, done.
-Total 20 (delta 12), reused 0 (delta 0)
-To ssh://git@github.com/{username}/zend-feed.git
-   b5583aa..4f51698  HEAD -> master
-```
-
-To send a pull request, you have two options.
-
-If using GitHub, you can do the pull request from there. Navigate to
-your repository, select the branch you just created, and then select the
-"Pull Request" button in the upper right. Select the user/organization
-"zendframework" as the recipient.
-
-If using your own repository - or even if using GitHub - you can use `git
-format-patch` to create a patchset for us to apply; in fact, this is
-**recommended** for security-related patches. If you use `format-patch`, please
-send the patches as attachments to:
-
--  zf-devteam@zend.com for patches without security implications
--  zf-security@zend.com for security patches
-
-#### What branch to issue the pull request against?
-
-Which branch should you issue a pull request against?
-
-- For fixes against the stable release, issue the pull request against the
-  "master" branch.
-- For new features, or fixes that introduce new elements to the public API (such
-  as new public methods or properties), issue the pull request against the
-  "develop" branch.
-
-### Branch Cleanup
-
-As you might imagine, if you are a frequent contributor, you'll start to
-get a ton of branches both locally and on your remote.
-
-Once you know that your changes have been accepted to the master
-repository, we suggest doing some cleanup of these branches.
-
--  Local branch cleanup
-
-   ```console
-   $ git branch -d <branchname>
-   ```
-
--  Remote branch removal
-
-   ```console
-   $ git push {username} :<branchname>
-   ```
diff --git a/vendor/zendframework/zend-feed/LICENSE.md b/vendor/zendframework/zend-feed/LICENSE.md
deleted file mode 100644
index dbb1b49..0000000
--- a/vendor/zendframework/zend-feed/LICENSE.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2005-2015, Zend Technologies USA, Inc.
-
-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 Zend Technologies USA, Inc. nor the names of its
-  contributors may be used to endorse or promote products derived from this
-  software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/zendframework/zend-feed/README.md b/vendor/zendframework/zend-feed/README.md
deleted file mode 100644
index ba8b872..0000000
--- a/vendor/zendframework/zend-feed/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# zend-feed
-
-[![Build Status](https://secure.travis-ci.org/zendframework/zend-feed.svg?branch=master)](https://secure.travis-ci.org/zendframework/zend-feed)
-[![Coverage Status](https://coveralls.io/repos/zendframework/zend-feed/badge.svg?branch=master)](https://coveralls.io/r/zendframework/zend-feed?branch=master)
-
-`Zend\Feed` provides functionality for consuming RSS and Atom feeds. It provides
-a natural syntax for accessing elements of feeds, feed attributes, and entry
-attributes. `Zend\Feed` also has extensive support for modifying feed and entry
-structure with the same natural syntax, and turning the result back into XML.
-
-
-- File issues at https://github.com/zendframework/zend-feed/issues
-- Documentation is at http://framework.zend.com/manual/current/en/index.html#zend-feed
diff --git a/vendor/zendframework/zend-feed/composer.json b/vendor/zendframework/zend-feed/composer.json
deleted file mode 100644
index 2c29f06..0000000
--- a/vendor/zendframework/zend-feed/composer.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-    "name": "zendframework/zend-feed",
-    "description": "provides functionality for consuming RSS and Atom feeds",
-    "license": "BSD-3-Clause",
-    "keywords": [
-        "zf2",
-        "feed"
-    ],
-    "homepage": "https://github.com/zendframework/zend-feed",
-    "autoload": {
-        "psr-4": {
-            "Zend\\Feed\\": "src/"
-        }
-    },
-    "require": {
-        "php": ">=5.5",
-        "zendframework/zend-escaper": "~2.5",
-        "zendframework/zend-stdlib": "~2.5"
-    },
-    "require-dev": {
-        "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"
-    },
-    "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"
-    },
-    "minimum-stability": "dev",
-    "prefer-stable": true,
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.5-dev",
-            "dev-develop": "2.6-dev"
-        }
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "ZendTest\\Feed\\": "test/"
-        }
-    }
-}
\ No newline at end of file
diff --git a/vendor/zendframework/zend-feed/src/Exception/BadMethodCallException.php b/vendor/zendframework/zend-feed/src/Exception/BadMethodCallException.php
deleted file mode 100644
index 3e994f2..0000000
--- a/vendor/zendframework/zend-feed/src/Exception/BadMethodCallException.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Exception;
-
-class BadMethodCallException extends \BadMethodCallException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Exception/ExceptionInterface.php b/vendor/zendframework/zend-feed/src/Exception/ExceptionInterface.php
deleted file mode 100644
index 0f75296..0000000
--- a/vendor/zendframework/zend-feed/src/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Exception;
-
-interface ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Exception/InvalidArgumentException.php b/vendor/zendframework/zend-feed/src/Exception/InvalidArgumentException.php
deleted file mode 100644
index 29b6482..0000000
--- a/vendor/zendframework/zend-feed/src/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Exception;
-
-class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Exception/RuntimeException.php b/vendor/zendframework/zend-feed/src/Exception/RuntimeException.php
deleted file mode 100644
index 43167a1..0000000
--- a/vendor/zendframework/zend-feed/src/Exception/RuntimeException.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Exception;
-
-class RuntimeException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/AbstractCallback.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/AbstractCallback.php
deleted file mode 100644
index 7321c96..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/AbstractCallback.php
+++ /dev/null
@@ -1,291 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub;
-
-use Traversable;
-use Zend\Http\PhpEnvironment\Response as PhpResponse;
-use Zend\Stdlib\ArrayUtils;
-
-abstract class AbstractCallback implements CallbackInterface
-{
-    /**
-     * An instance of Zend\Feed\Pubsubhubbub\Model\SubscriptionPersistenceInterface
-     * used to background save any verification tokens associated with a subscription
-     * or other.
-     *
-     * @var Model\SubscriptionPersistenceInterface
-     */
-    protected $storage = null;
-
-    /**
-     * An instance of a class handling Http Responses. This is implemented in
-     * Zend\Feed\Pubsubhubbub\HttpResponse which shares an unenforced interface with
-     * (i.e. not inherited from) Zend\Controller\Response\Http.
-     *
-     * @var HttpResponse|PhpResponse
-     */
-    protected $httpResponse = null;
-
-    /**
-     * The number of Subscribers for which any updates are on behalf of.
-     *
-     * @var int
-     */
-    protected $subscriberCount = 1;
-
-    /**
-     * Constructor; accepts an array or Traversable object to preset
-     * options for the Subscriber without calling all supported setter
-     * methods in turn.
-     *
-     * @param  array|Traversable $options Options array or Traversable object
-     */
-    public function __construct($options = null)
-    {
-        if ($options !== null) {
-            $this->setOptions($options);
-        }
-    }
-
-    /**
-     * Process any injected configuration options
-     *
-     * @param  array|Traversable $options Options array or Traversable object
-     * @return AbstractCallback
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setOptions($options)
-    {
-        if ($options instanceof Traversable) {
-            $options = ArrayUtils::iteratorToArray($options);
-        }
-
-        if (!is_array($options)) {
-            throw new Exception\InvalidArgumentException('Array or Traversable object'
-            . 'expected, got ' . gettype($options));
-        }
-
-        if (is_array($options)) {
-            $this->setOptions($options);
-        }
-
-        if (array_key_exists('storage', $options)) {
-            $this->setStorage($options['storage']);
-        }
-        return $this;
-    }
-
-    /**
-     * Send the response, including all headers.
-     * If you wish to handle this via Zend\Http, use the getter methods
-     * to retrieve any data needed to be set on your HTTP Response object, or
-     * simply give this object the HTTP Response instance to work with for you!
-     *
-     * @return void
-     */
-    public function sendResponse()
-    {
-        $this->getHttpResponse()->send();
-    }
-
-    /**
-     * Sets an instance of Zend\Feed\Pubsubhubbub\Model\SubscriptionPersistence used
-     * to background save any verification tokens associated with a subscription
-     * or other.
-     *
-     * @param  Model\SubscriptionPersistenceInterface $storage
-     * @return AbstractCallback
-     */
-    public function setStorage(Model\SubscriptionPersistenceInterface $storage)
-    {
-        $this->storage = $storage;
-        return $this;
-    }
-
-    /**
-     * Gets an instance of Zend\Feed\Pubsubhubbub\Model\SubscriptionPersistence used
-     * to background save any verification tokens associated with a subscription
-     * or other.
-     *
-     * @return Model\SubscriptionPersistenceInterface
-     * @throws Exception\RuntimeException
-     */
-    public function getStorage()
-    {
-        if ($this->storage === null) {
-            throw new Exception\RuntimeException('No storage object has been'
-                . ' set that subclasses Zend\Feed\Pubsubhubbub\Model\SubscriptionPersistence');
-        }
-        return $this->storage;
-    }
-
-    /**
-     * An instance of a class handling Http Responses. This is implemented in
-     * Zend\Feed\Pubsubhubbub\HttpResponse which shares an unenforced interface with
-     * (i.e. not inherited from) Zend\Controller\Response\Http.
-     *
-     * @param  HttpResponse|PhpResponse $httpResponse
-     * @return AbstractCallback
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setHttpResponse($httpResponse)
-    {
-        if (!$httpResponse instanceof HttpResponse && !$httpResponse instanceof PhpResponse) {
-            throw new Exception\InvalidArgumentException('HTTP Response object must'
-                . ' implement one of Zend\Feed\Pubsubhubbub\HttpResponse or'
-                . ' Zend\Http\PhpEnvironment\Response');
-        }
-        $this->httpResponse = $httpResponse;
-        return $this;
-    }
-
-    /**
-     * An instance of a class handling Http Responses. This is implemented in
-     * Zend\Feed\Pubsubhubbub\HttpResponse which shares an unenforced interface with
-     * (i.e. not inherited from) Zend\Controller\Response\Http.
-     *
-     * @return HttpResponse|PhpResponse
-     */
-    public function getHttpResponse()
-    {
-        if ($this->httpResponse === null) {
-            $this->httpResponse = new HttpResponse;
-        }
-        return $this->httpResponse;
-    }
-
-    /**
-     * Sets the number of Subscribers for which any updates are on behalf of.
-     * In other words, is this class serving one or more subscribers? How many?
-     * Defaults to 1 if left unchanged.
-     *
-     * @param  string|int $count
-     * @return AbstractCallback
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setSubscriberCount($count)
-    {
-        $count = intval($count);
-        if ($count <= 0) {
-            throw new Exception\InvalidArgumentException('Subscriber count must be'
-                . ' greater than zero');
-        }
-        $this->subscriberCount = $count;
-        return $this;
-    }
-
-    /**
-     * Gets the number of Subscribers for which any updates are on behalf of.
-     * In other words, is this class serving one or more subscribers? How many?
-     *
-     * @return int
-     */
-    public function getSubscriberCount()
-    {
-        return $this->subscriberCount;
-    }
-
-    /**
-     * Attempt to detect the callback URL (specifically the path forward)
-     * @return string
-     */
-    protected function _detectCallbackUrl()
-    {
-        $callbackUrl = '';
-        if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
-            $callbackUrl = $_SERVER['HTTP_X_ORIGINAL_URL'];
-        } elseif (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
-            $callbackUrl = $_SERVER['HTTP_X_REWRITE_URL'];
-        } elseif (isset($_SERVER['REQUEST_URI'])) {
-            $callbackUrl = $_SERVER['REQUEST_URI'];
-            $scheme = 'http';
-            if ($_SERVER['HTTPS'] == 'on') {
-                $scheme = 'https';
-            }
-            $schemeAndHttpHost = $scheme . '://' . $this->_getHttpHost();
-            if (strpos($callbackUrl, $schemeAndHttpHost) === 0) {
-                $callbackUrl = substr($callbackUrl, strlen($schemeAndHttpHost));
-            }
-        } elseif (isset($_SERVER['ORIG_PATH_INFO'])) {
-            $callbackUrl= $_SERVER['ORIG_PATH_INFO'];
-            if (!empty($_SERVER['QUERY_STRING'])) {
-                $callbackUrl .= '?' . $_SERVER['QUERY_STRING'];
-            }
-        }
-        return $callbackUrl;
-    }
-
-    /**
-     * Get the HTTP host
-     *
-     * @return string
-     */
-    protected function _getHttpHost()
-    {
-        if (!empty($_SERVER['HTTP_HOST'])) {
-            return $_SERVER['HTTP_HOST'];
-        }
-        $scheme = 'http';
-        if ($_SERVER['HTTPS'] == 'on') {
-            $scheme = 'https';
-        }
-        $name = $_SERVER['SERVER_NAME'];
-        $port = $_SERVER['SERVER_PORT'];
-        if (($scheme == 'http' && $port == 80)
-            || ($scheme == 'https' && $port == 443)
-        ) {
-            return $name;
-        }
-
-        return $name . ':' . $port;
-    }
-
-    /**
-     * Retrieve a Header value from either $_SERVER or Apache
-     *
-     * @param string $header
-     * @return bool|string
-     */
-    protected function _getHeader($header)
-    {
-        $temp = strtoupper(str_replace('-', '_', $header));
-        if (!empty($_SERVER[$temp])) {
-            return $_SERVER[$temp];
-        }
-        $temp = 'HTTP_' . strtoupper(str_replace('-', '_', $header));
-        if (!empty($_SERVER[$temp])) {
-            return $_SERVER[$temp];
-        }
-        if (function_exists('apache_request_headers')) {
-            $headers = apache_request_headers();
-            if (!empty($headers[$header])) {
-                return $headers[$header];
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Return the raw body of the request
-     *
-     * @return string|false Raw body, or false if not present
-     */
-    protected function _getRawBody()
-    {
-        $body = file_get_contents('php://input');
-        if (strlen(trim($body)) == 0 && isset($GLOBALS['HTTP_RAW_POST_DATA'])) {
-            $body = $GLOBALS['HTTP_RAW_POST_DATA'];
-        }
-        if (strlen(trim($body)) > 0) {
-            return $body;
-        }
-        return false;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/CallbackInterface.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/CallbackInterface.php
deleted file mode 100644
index c6b7412..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/CallbackInterface.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub;
-
-interface CallbackInterface
-{
-    /**
-     * Handle any callback from a Hub Server responding to a subscription or
-     * unsubscription request. This should be the Hub Server confirming the
-     * the request prior to taking action on it.
-     *
-     * @param array $httpData GET/POST data if available and not in $_GET/POST
-     * @param bool $sendResponseNow Whether to send response now or when asked
-     */
-    public function handle(array $httpData = null, $sendResponseNow = false);
-
-    /**
-     * Send the response, including all headers.
-     * If you wish to handle this via Zend\Mvc\Controller, use the getter methods
-     * to retrieve any data needed to be set on your HTTP Response object, or
-     * simply give this object the HTTP Response instance to work with for you!
-     *
-     * @return void
-     */
-    public function sendResponse();
-
-    /**
-     * An instance of a class handling Http Responses. This is implemented in
-     * Zend\Feed\Pubsubhubbub\HttpResponse which shares an unenforced interface with
-     * (i.e. not inherited from) Zend\Feed\Pubsubhubbub\AbstractCallback.
-     *
-     * @param HttpResponse|\Zend\Http\PhpEnvironment\Response $httpResponse
-     */
-    public function setHttpResponse($httpResponse);
-
-    /**
-     * An instance of a class handling Http Responses. This is implemented in
-     * Zend\Feed\Pubsubhubbub\HttpResponse which shares an unenforced interface with
-     * (i.e. not inherited from) Zend\Feed\Pubsubhubbub\AbstractCallback.
-     *
-     * @return HttpResponse|\Zend\Http\PhpEnvironment\Response
-     */
-    public function getHttpResponse();
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/Exception/ExceptionInterface.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/Exception/ExceptionInterface.php
deleted file mode 100644
index f32bc1c..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub\Exception;
-
-use Zend\Feed\Exception\ExceptionInterface as Exception;
-
-interface ExceptionInterface extends Exception
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/Exception/InvalidArgumentException.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/Exception/InvalidArgumentException.php
deleted file mode 100644
index cad1e01..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub\Exception;
-
-use Zend\Feed\Exception;
-
-class InvalidArgumentException extends Exception\InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/Exception/RuntimeException.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/Exception/RuntimeException.php
deleted file mode 100644
index cc954a5..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/Exception/RuntimeException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub\Exception;
-
-use Zend\Feed\Exception;
-
-class RuntimeException extends Exception\RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/HttpResponse.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/HttpResponse.php
deleted file mode 100644
index 9722968..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/HttpResponse.php
+++ /dev/null
@@ -1,211 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub;
-
-class HttpResponse
-{
-    /**
-     * The body of any response to the current callback request
-     *
-     * @var string
-     */
-    protected $content = '';
-
-    /**
-     * Array of headers. Each header is an array with keys 'name' and 'value'
-     *
-     * @var array
-     */
-    protected $headers = [];
-
-    /**
-     * HTTP response code to use in headers
-     *
-     * @var int
-     */
-    protected $statusCode = 200;
-
-    /**
-     * Send the response, including all headers
-     *
-     * @return void
-     */
-    public function send()
-    {
-        $this->sendHeaders();
-        echo $this->getContent();
-    }
-
-    /**
-     * Send all headers
-     *
-     * Sends any headers specified. If an {@link setHttpResponseCode() HTTP response code}
-     * has been specified, it is sent with the first header.
-     *
-     * @return void
-     */
-    public function sendHeaders()
-    {
-        if (count($this->headers) || (200 != $this->statusCode)) {
-            $this->canSendHeaders(true);
-        } elseif (200 == $this->statusCode) {
-            return;
-        }
-        $httpCodeSent = false;
-        foreach ($this->headers as $header) {
-            if (!$httpCodeSent && $this->statusCode) {
-                header($header['name'] . ': ' . $header['value'], $header['replace'], $this->statusCode);
-                $httpCodeSent = true;
-            } else {
-                header($header['name'] . ': ' . $header['value'], $header['replace']);
-            }
-        }
-        if (!$httpCodeSent) {
-            header('HTTP/1.1 ' . $this->statusCode);
-        }
-    }
-
-    /**
-     * Set a header
-     *
-     * If $replace is true, replaces any headers already defined with that
-     * $name.
-     *
-     * @param  string $name
-     * @param  string $value
-     * @param  bool $replace
-     * @return \Zend\Feed\PubSubHubbub\HttpResponse
-     */
-    public function setHeader($name, $value, $replace = false)
-    {
-        $name  = $this->_normalizeHeader($name);
-        $value = (string) $value;
-        if ($replace) {
-            foreach ($this->headers as $key => $header) {
-                if ($name == $header['name']) {
-                    unset($this->headers[$key]);
-                }
-            }
-        }
-        $this->headers[] = [
-            'name'    => $name,
-            'value'   => $value,
-            'replace' => $replace,
-        ];
-
-        return $this;
-    }
-
-    /**
-     * Check if a specific Header is set and return its value
-     *
-     * @param  string $name
-     * @return string|null
-     */
-    public function getHeader($name)
-    {
-        $name = $this->_normalizeHeader($name);
-        foreach ($this->headers as $header) {
-            if ($header['name'] == $name) {
-                return $header['value'];
-            }
-        }
-    }
-
-    /**
-     * Return array of headers; see {@link $headers} for format
-     *
-     * @return array
-     */
-    public function getHeaders()
-    {
-        return $this->headers;
-    }
-
-    /**
-     * Can we send headers?
-     *
-     * @param  bool $throw Whether or not to throw an exception if headers have been sent; defaults to false
-     * @return HttpResponse
-     * @throws Exception\RuntimeException
-     */
-    public function canSendHeaders($throw = false)
-    {
-        $ok = headers_sent($file, $line);
-        if ($ok && $throw) {
-            throw new Exception\RuntimeException('Cannot send headers; headers already sent in ' . $file . ', line ' . $line);
-        }
-        return !$ok;
-    }
-
-    /**
-     * Set HTTP response code to use with headers
-     *
-     * @param  int $code
-     * @return HttpResponse
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setStatusCode($code)
-    {
-        if (!is_int($code) || (100 > $code) || (599 < $code)) {
-            throw new Exception\InvalidArgumentException('Invalid HTTP response'
-            . ' code:' . $code);
-        }
-        $this->statusCode = $code;
-        return $this;
-    }
-
-    /**
-     * Retrieve HTTP response code
-     *
-     * @return int
-     */
-    public function getStatusCode()
-    {
-        return $this->statusCode;
-    }
-
-    /**
-     * Set body content
-     *
-     * @param  string $content
-     * @return \Zend\Feed\PubSubHubbub\HttpResponse
-     */
-    public function setContent($content)
-    {
-        $this->content = (string) $content;
-        $this->setHeader('content-length', strlen($content));
-        return $this;
-    }
-
-    /**
-     * Return the body content
-     *
-     * @return string
-     */
-    public function getContent()
-    {
-        return $this->content;
-    }
-
-    /**
-     * Normalizes a header name to X-Capitalized-Names
-     *
-     * @param  string $name
-     * @return string
-     */
-    protected function _normalizeHeader($name)
-    {
-        $filtered = str_replace(['-', '_'], ' ', (string) $name);
-        $filtered = ucwords(strtolower($filtered));
-        $filtered = str_replace(' ', '-', $filtered);
-        return $filtered;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/Model/AbstractModel.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/Model/AbstractModel.php
deleted file mode 100644
index 3ebd07f..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/Model/AbstractModel.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub\Model;
-
-use Zend\Db\TableGateway\TableGateway;
-use Zend\Db\TableGateway\TableGatewayInterface;
-
-class AbstractModel
-{
-    /**
-     * Zend\Db\TableGateway\TableGatewayInterface instance to host database methods
-     *
-     * @var TableGatewayInterface
-     */
-    protected $db = null;
-
-    /**
-     * Constructor
-     *
-     * @param null|TableGatewayInterface $tableGateway
-     */
-    public function __construct(TableGatewayInterface $tableGateway = null)
-    {
-        if ($tableGateway === null) {
-            $parts = explode('\\', get_class($this));
-            $table = strtolower(array_pop($parts));
-            $this->db = new TableGateway($table, null);
-        } else {
-            $this->db = $tableGateway;
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/Model/Subscription.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/Model/Subscription.php
deleted file mode 100644
index a208616..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/Model/Subscription.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub\Model;
-
-use DateInterval;
-use DateTime;
-use Zend\Feed\PubSubHubbub;
-
-class Subscription extends AbstractModel implements SubscriptionPersistenceInterface
-{
-    /**
-     * Common DateTime object to assist with unit testing
-     *
-     * @var DateTime
-     */
-    protected $now;
-
-    /**
-     * Save subscription to RDMBS
-     *
-     * @param array $data
-     * @return bool
-     * @throws PubSubHubbub\Exception\InvalidArgumentException
-     */
-    public function setSubscription(array $data)
-    {
-        if (!isset($data['id'])) {
-            throw new PubSubHubbub\Exception\InvalidArgumentException(
-                'ID must be set before attempting a save'
-            );
-        }
-        $result = $this->db->select(['id' => $data['id']]);
-        if ($result && (0 < count($result))) {
-            $data['created_time'] = $result->current()->created_time;
-            $now = $this->getNow();
-            if (array_key_exists('lease_seconds', $data)
-                && $data['lease_seconds']
-            ) {
-                $data['expiration_time'] = $now->add(new DateInterval('PT' . $data['lease_seconds'] . 'S'))
-                    ->format('Y-m-d H:i:s');
-            }
-            $this->db->update(
-                $data,
-                ['id' => $data['id']]
-            );
-            return false;
-        }
-
-        $this->db->insert($data);
-        return true;
-    }
-
-    /**
-     * Get subscription by ID/key
-     *
-     * @param  string $key
-     * @return array
-     * @throws PubSubHubbub\Exception\InvalidArgumentException
-     */
-    public function getSubscription($key)
-    {
-        if (empty($key) || !is_string($key)) {
-            throw new PubSubHubbub\Exception\InvalidArgumentException('Invalid parameter "key"'
-                .' of "' . $key . '" must be a non-empty string');
-        }
-        $result = $this->db->select(['id' => $key]);
-        if (count($result)) {
-            return $result->current()->getArrayCopy();
-        }
-        return false;
-    }
-
-    /**
-     * Determine if a subscription matching the key exists
-     *
-     * @param  string $key
-     * @return bool
-     * @throws PubSubHubbub\Exception\InvalidArgumentException
-     */
-    public function hasSubscription($key)
-    {
-        if (empty($key) || !is_string($key)) {
-            throw new PubSubHubbub\Exception\InvalidArgumentException('Invalid parameter "key"'
-                .' of "' . $key . '" must be a non-empty string');
-        }
-        $result = $this->db->select(['id' => $key]);
-        if (count($result)) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Delete a subscription
-     *
-     * @param string $key
-     * @return bool
-     */
-    public function deleteSubscription($key)
-    {
-        $result = $this->db->select(['id' => $key]);
-        if (count($result)) {
-            $this->db->delete(
-                ['id' => $key]
-            );
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Get a new DateTime or the one injected for testing
-     *
-     * @return DateTime
-     */
-    public function getNow()
-    {
-        if (null === $this->now) {
-            return new DateTime();
-        }
-        return $this->now;
-    }
-
-    /**
-     * Set a DateTime instance for assisting with unit testing
-     *
-     * @param DateTime $now
-     * @return Subscription
-     */
-    public function setNow(DateTime $now)
-    {
-        $this->now = $now;
-        return $this;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/Model/SubscriptionPersistenceInterface.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/Model/SubscriptionPersistenceInterface.php
deleted file mode 100644
index 09e7d75..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/Model/SubscriptionPersistenceInterface.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub\Model;
-
-interface SubscriptionPersistenceInterface
-{
-    /**
-     * Save subscription to RDMBS
-     *
-     * @param array $data The key must be stored here as a $data['id'] entry
-     * @return bool
-     */
-    public function setSubscription(array $data);
-
-    /**
-     * Get subscription by ID/key
-     *
-     * @param  string $key
-     * @return array
-     */
-    public function getSubscription($key);
-
-    /**
-     * Determine if a subscription matching the key exists
-     *
-     * @param  string $key
-     * @return bool
-     */
-    public function hasSubscription($key);
-
-    /**
-     * Delete a subscription
-     *
-     * @param string $key
-     * @return bool
-     */
-    public function deleteSubscription($key);
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/PubSubHubbub.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/PubSubHubbub.php
deleted file mode 100644
index a930a70..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/PubSubHubbub.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub;
-
-use Zend\Escaper\Escaper;
-use Zend\Feed\Reader;
-use Zend\Http;
-
-class PubSubHubbub
-{
-    /**
-     * Verification Modes
-     */
-    const VERIFICATION_MODE_SYNC  = 'sync';
-    const VERIFICATION_MODE_ASYNC = 'async';
-
-    /**
-     * Subscription States
-     */
-    const SUBSCRIPTION_VERIFIED    = 'verified';
-    const SUBSCRIPTION_NOTVERIFIED = 'not_verified';
-    const SUBSCRIPTION_TODELETE    = 'to_delete';
-
-    /**
-     * @var Escaper
-     */
-    protected static $escaper;
-
-    /**
-     * Singleton instance if required of the HTTP client
-     *
-     * @var Http\Client
-     */
-    protected static $httpClient = null;
-
-    /**
-     * Simple utility function which imports any feed URL and
-     * determines the existence of Hub Server endpoints. This works
-     * best if directly given an instance of Zend\Feed\Reader\Atom|Rss
-     * to leverage off.
-     *
-     * @param  \Zend\Feed\Reader\Feed\AbstractFeed|string $source
-     * @return array
-     * @throws Exception\InvalidArgumentException
-     */
-    public static function detectHubs($source)
-    {
-        if (is_string($source)) {
-            $feed = Reader\Reader::import($source);
-        } elseif ($source instanceof Reader\Feed\AbstractFeed) {
-            $feed = $source;
-        } else {
-            throw new Exception\InvalidArgumentException('The source parameter was'
-            . ' invalid, i.e. not a URL string or an instance of type'
-            . ' Zend\Feed\Reader\Feed\AbstractFeed');
-        }
-        return $feed->getHubs();
-    }
-
-    /**
-     * Allows the external environment to make ZendOAuth use a specific
-     * Client instance.
-     *
-     * @param  Http\Client $httpClient
-     * @return void
-     */
-    public static function setHttpClient(Http\Client $httpClient)
-    {
-        static::$httpClient = $httpClient;
-    }
-
-    /**
-     * Return the singleton instance of the HTTP Client. Note that
-     * the instance is reset and cleared of previous parameters GET/POST.
-     * Headers are NOT reset but handled by this component if applicable.
-     *
-     * @return Http\Client
-     */
-    public static function getHttpClient()
-    {
-        if (!isset(static::$httpClient)) {
-            static::$httpClient = new Http\Client;
-        } else {
-            static::$httpClient->resetParameters();
-        }
-        return static::$httpClient;
-    }
-
-    /**
-     * Simple mechanism to delete the entire singleton HTTP Client instance
-     * which forces a new instantiation for subsequent requests.
-     *
-     * @return void
-     */
-    public static function clearHttpClient()
-    {
-        static::$httpClient = null;
-    }
-
-    /**
-     * Set the Escaper instance
-     *
-     * If null, resets the instance
-     *
-     * @param  null|Escaper $escaper
-     */
-    public static function setEscaper(Escaper $escaper = null)
-    {
-        static::$escaper = $escaper;
-    }
-
-    /**
-     * Get the Escaper instance
-     *
-     * If none registered, lazy-loads an instance.
-     *
-     * @return Escaper
-     */
-    public static function getEscaper()
-    {
-        if (null === static::$escaper) {
-            static::setEscaper(new Escaper());
-        }
-        return static::$escaper;
-    }
-
-    /**
-     * RFC 3986 safe url encoding method
-     *
-     * @param  string $string
-     * @return string
-     */
-    public static function urlencode($string)
-    {
-        $escaper    = static::getEscaper();
-        $rawencoded = $escaper->escapeUrl($string);
-        $rfcencoded = str_replace('%7E', '~', $rawencoded);
-        return $rfcencoded;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/Publisher.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/Publisher.php
deleted file mode 100644
index aed9c8f..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/Publisher.php
+++ /dev/null
@@ -1,397 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub;
-
-use Traversable;
-use Zend\Feed\Uri;
-use Zend\Http\Request as HttpRequest;
-use Zend\Stdlib\ArrayUtils;
-
-class Publisher
-{
-    /**
-     * An array of URLs for all Hub Servers used by the Publisher, and to
-     * which all topic update notifications will be sent.
-     *
-     * @var array
-     */
-    protected $hubUrls = [];
-
-    /**
-     * An array of topic (Atom or RSS feed) URLs which have been updated and
-     * whose updated status will be notified to all Hub Servers.
-     *
-     * @var array
-     */
-    protected $updatedTopicUrls = [];
-
-    /**
-     * An array of any errors including keys for 'response', 'hubUrl'.
-     * The response is the actual Zend\Http\Response object.
-     *
-     * @var array
-     */
-    protected $errors = [];
-
-    /**
-     * An array of topic (Atom or RSS feed) URLs which have been updated and
-     * whose updated status will be notified to all Hub Servers.
-     *
-     * @var array
-     */
-    protected $parameters = [];
-
-    /**
-     * Constructor; accepts an array or Zend\Config\Config instance to preset
-     * options for the Publisher without calling all supported setter
-     * methods in turn.
-     *
-     * @param  array|Traversable $options
-     */
-    public function __construct($options = null)
-    {
-        if ($options !== null) {
-            $this->setOptions($options);
-        }
-    }
-
-    /**
-     * Process any injected configuration options
-     *
-     * @param  array|Traversable $options Options array or Traversable object
-     * @return Publisher
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setOptions($options)
-    {
-        if ($options instanceof Traversable) {
-            $options = ArrayUtils::iteratorToArray($options);
-        }
-
-        if (!is_array($options)) {
-            throw new Exception\InvalidArgumentException('Array or Traversable object'
-                                . 'expected, got ' . gettype($options));
-        }
-        if (array_key_exists('hubUrls', $options)) {
-            $this->addHubUrls($options['hubUrls']);
-        }
-        if (array_key_exists('updatedTopicUrls', $options)) {
-            $this->addUpdatedTopicUrls($options['updatedTopicUrls']);
-        }
-        if (array_key_exists('parameters', $options)) {
-            $this->setParameters($options['parameters']);
-        }
-        return $this;
-    }
-
-    /**
-     * Add a Hub Server URL supported by Publisher
-     *
-     * @param  string $url
-     * @return Publisher
-     * @throws Exception\InvalidArgumentException
-     */
-    public function addHubUrl($url)
-    {
-        if (empty($url) || !is_string($url) || !Uri::factory($url)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "url"'
-                . ' of "' . $url . '" must be a non-empty string and a valid'
-                . 'URL');
-        }
-        $this->hubUrls[] = $url;
-        return $this;
-    }
-
-    /**
-     * Add an array of Hub Server URLs supported by Publisher
-     *
-     * @param  array $urls
-     * @return Publisher
-     */
-    public function addHubUrls(array $urls)
-    {
-        foreach ($urls as $url) {
-            $this->addHubUrl($url);
-        }
-        return $this;
-    }
-
-    /**
-     * Remove a Hub Server URL
-     *
-     * @param  string $url
-     * @return Publisher
-     */
-    public function removeHubUrl($url)
-    {
-        if (!in_array($url, $this->getHubUrls())) {
-            return $this;
-        }
-        $key = array_search($url, $this->hubUrls);
-        unset($this->hubUrls[$key]);
-        return $this;
-    }
-
-    /**
-     * Return an array of unique Hub Server URLs currently available
-     *
-     * @return array
-     */
-    public function getHubUrls()
-    {
-        $this->hubUrls = array_unique($this->hubUrls);
-        return $this->hubUrls;
-    }
-
-    /**
-     * Add a URL to a topic (Atom or RSS feed) which has been updated
-     *
-     * @param  string $url
-     * @return Publisher
-     * @throws Exception\InvalidArgumentException
-     */
-    public function addUpdatedTopicUrl($url)
-    {
-        if (empty($url) || !is_string($url) || !Uri::factory($url)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "url"'
-                . ' of "' . $url . '" must be a non-empty string and a valid'
-                . 'URL');
-        }
-        $this->updatedTopicUrls[] = $url;
-        return $this;
-    }
-
-    /**
-     * Add an array of Topic URLs which have been updated
-     *
-     * @param  array $urls
-     * @return Publisher
-     */
-    public function addUpdatedTopicUrls(array $urls)
-    {
-        foreach ($urls as $url) {
-            $this->addUpdatedTopicUrl($url);
-        }
-        return $this;
-    }
-
-    /**
-     * Remove an updated topic URL
-     *
-     * @param  string $url
-     * @return Publisher
-     */
-    public function removeUpdatedTopicUrl($url)
-    {
-        if (!in_array($url, $this->getUpdatedTopicUrls())) {
-            return $this;
-        }
-        $key = array_search($url, $this->updatedTopicUrls);
-        unset($this->updatedTopicUrls[$key]);
-        return $this;
-    }
-
-    /**
-     * Return an array of unique updated topic URLs currently available
-     *
-     * @return array
-     */
-    public function getUpdatedTopicUrls()
-    {
-        $this->updatedTopicUrls = array_unique($this->updatedTopicUrls);
-        return $this->updatedTopicUrls;
-    }
-
-    /**
-     * Notifies a single Hub Server URL of changes
-     *
-     * @param  string $url The Hub Server's URL
-     * @return void
-     * @throws Exception\InvalidArgumentException
-     * @throws Exception\RuntimeException
-     */
-    public function notifyHub($url)
-    {
-        if (empty($url) || !is_string($url) || !Uri::factory($url)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "url"'
-                . ' of "' . $url . '" must be a non-empty string and a valid'
-                . 'URL');
-        }
-        $client = $this->_getHttpClient();
-        $client->setUri($url);
-        $response = $client->getResponse();
-        if ($response->getStatusCode() !== 204) {
-            throw new Exception\RuntimeException('Notification to Hub Server '
-                . 'at "' . $url . '" appears to have failed with a status code of "'
-                . $response->getStatusCode() . '" and message "'
-                . $response->getContent() . '"');
-        }
-    }
-
-    /**
-     * Notifies all Hub Server URLs of changes
-     *
-     * If a Hub notification fails, certain data will be retained in an
-     * an array retrieved using getErrors(), if a failure occurs for any Hubs
-     * the isSuccess() check will return FALSE. This method is designed not
-     * to needlessly fail with an Exception/Error unless from Zend\Http\Client.
-     *
-     * @return void
-     * @throws Exception\RuntimeException
-     */
-    public function notifyAll()
-    {
-        $client = $this->_getHttpClient();
-        $hubs   = $this->getHubUrls();
-        if (empty($hubs)) {
-            throw new Exception\RuntimeException('No Hub Server URLs'
-                . ' have been set so no notifications can be sent');
-        }
-        $this->errors = [];
-        foreach ($hubs as $url) {
-            $client->setUri($url);
-            $response = $client->getResponse();
-            if ($response->getStatusCode() !== 204) {
-                $this->errors[] = [
-                    'response' => $response,
-                    'hubUrl' => $url
-                ];
-            }
-        }
-    }
-
-    /**
-     * Add an optional parameter to the update notification requests
-     *
-     * @param  string $name
-     * @param  string|null $value
-     * @return Publisher
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setParameter($name, $value = null)
-    {
-        if (is_array($name)) {
-            $this->setParameters($name);
-            return $this;
-        }
-        if (empty($name) || !is_string($name)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "name"'
-                . ' of "' . $name . '" must be a non-empty string');
-        }
-        if ($value === null) {
-            $this->removeParameter($name);
-            return $this;
-        }
-        if (empty($value) || (!is_string($value) && $value !== null)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "value"'
-                . ' of "' . $value . '" must be a non-empty string');
-        }
-        $this->parameters[$name] = $value;
-        return $this;
-    }
-
-    /**
-     * Add an optional parameter to the update notification requests
-     *
-     * @param  array $parameters
-     * @return Publisher
-     */
-    public function setParameters(array $parameters)
-    {
-        foreach ($parameters as $name => $value) {
-            $this->setParameter($name, $value);
-        }
-        return $this;
-    }
-
-    /**
-     * Remove an optional parameter for the notification requests
-     *
-     * @param  string $name
-     * @return Publisher
-     * @throws Exception\InvalidArgumentException
-     */
-    public function removeParameter($name)
-    {
-        if (empty($name) || !is_string($name)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "name"'
-                . ' of "' . $name . '" must be a non-empty string');
-        }
-        if (array_key_exists($name, $this->parameters)) {
-            unset($this->parameters[$name]);
-        }
-        return $this;
-    }
-
-    /**
-     * Return an array of optional parameters for notification requests
-     *
-     * @return array
-     */
-    public function getParameters()
-    {
-        return $this->parameters;
-    }
-
-    /**
-     * Returns a boolean indicator of whether the notifications to Hub
-     * Servers were ALL successful. If even one failed, FALSE is returned.
-     *
-     * @return bool
-     */
-    public function isSuccess()
-    {
-        return !(count($this->errors) != 0);
-    }
-
-    /**
-     * Return an array of errors met from any failures, including keys:
-     * 'response' => the Zend\Http\Response object from the failure
-     * 'hubUrl' => the URL of the Hub Server whose notification failed
-     *
-     * @return array
-     */
-    public function getErrors()
-    {
-        return $this->errors;
-    }
-
-    /**
-     * Get a basic prepared HTTP client for use
-     *
-     * @return \Zend\Http\Client
-     * @throws Exception\RuntimeException
-     */
-    protected function _getHttpClient()
-    {
-        $client = PubSubHubbub::getHttpClient();
-        $client->setMethod(HttpRequest::METHOD_POST);
-        $client->setOptions([
-            'useragent' => 'Zend_Feed_Pubsubhubbub_Publisher/' . Version::VERSION,
-        ]);
-        $params   = [];
-        $params[] = 'hub.mode=publish';
-        $topics   = $this->getUpdatedTopicUrls();
-        if (empty($topics)) {
-            throw new Exception\RuntimeException('No updated topic URLs'
-                . ' have been set');
-        }
-        foreach ($topics as $topicUrl) {
-            $params[] = 'hub.url=' . urlencode($topicUrl);
-        }
-        $optParams = $this->getParameters();
-        foreach ($optParams as $name => $value) {
-            $params[] = urlencode($name) . '=' . urlencode($value);
-        }
-        $paramString = implode('&', $params);
-        $client->setRawBody($paramString);
-        return $client;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/Subscriber.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/Subscriber.php
deleted file mode 100644
index 802a001..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/Subscriber.php
+++ /dev/null
@@ -1,837 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub;
-
-use DateInterval;
-use DateTime;
-use Traversable;
-use Zend\Feed\Uri;
-use Zend\Http\Request as HttpRequest;
-use Zend\Stdlib\ArrayUtils;
-
-class Subscriber
-{
-    /**
-     * An array of URLs for all Hub Servers to subscribe/unsubscribe.
-     *
-     * @var array
-     */
-    protected $hubUrls = [];
-
-    /**
-     * An array of optional parameters to be included in any
-     * (un)subscribe requests.
-     *
-     * @var array
-     */
-    protected $parameters = [];
-
-    /**
-     * The URL of the topic (Rss or Atom feed) which is the subject of
-     * our current intent to subscribe to/unsubscribe from updates from
-     * the currently configured Hub Servers.
-     *
-     * @var string
-     */
-    protected $topicUrl = '';
-
-    /**
-     * The URL Hub Servers must use when communicating with this Subscriber
-     *
-     * @var string
-     */
-    protected $callbackUrl = '';
-
-    /**
-     * The number of seconds for which the subscriber would like to have the
-     * subscription active. Defaults to null, i.e. not sent, to setup a
-     * permanent subscription if possible.
-     *
-     * @var int
-     */
-    protected $leaseSeconds = null;
-
-    /**
-     * The preferred verification mode (sync or async). By default, this
-     * Subscriber prefers synchronous verification, but is considered
-     * desirable to support asynchronous verification if possible.
-     *
-     * Zend\Feed\Pubsubhubbub\Subscriber will always send both modes, whose
-     * order of occurrence in the parameter list determines this preference.
-     *
-     * @var string
-     */
-    protected $preferredVerificationMode = PubSubHubbub::VERIFICATION_MODE_SYNC;
-
-    /**
-     * An array of any errors including keys for 'response', 'hubUrl'.
-     * The response is the actual Zend\Http\Response object.
-     *
-     * @var array
-     */
-    protected $errors = [];
-
-    /**
-     * An array of Hub Server URLs for Hubs operating at this time in
-     * asynchronous verification mode.
-     *
-     * @var array
-     */
-    protected $asyncHubs = [];
-
-    /**
-     * An instance of Zend\Feed\Pubsubhubbub\Model\SubscriptionPersistence used to background
-     * save any verification tokens associated with a subscription or other.
-     *
-     * @var \Zend\Feed\PubSubHubbub\Model\SubscriptionPersistenceInterface
-     */
-    protected $storage = null;
-
-    /**
-     * An array of authentication credentials for HTTP Basic Authentication
-     * if required by specific Hubs. The array is indexed by Hub Endpoint URI
-     * and the value is a simple array of the username and password to apply.
-     *
-     * @var array
-     */
-    protected $authentications = [];
-
-    /**
-     * Tells the Subscriber to append any subscription identifier to the path
-     * of the base Callback URL. E.g. an identifier "subkey1" would be added
-     * to the callback URL "http://www.example.com/callback" to create a subscription
-     * specific Callback URL of "http://www.example.com/callback/subkey1".
-     *
-     * This is required for all Hubs using the Pubsubhubbub 0.1 Specification.
-     * It should be manually intercepted and passed to the Callback class using
-     * Zend\Feed\Pubsubhubbub\Subscriber\Callback::setSubscriptionKey(). Will
-     * require a route in the form "callback/:subkey" to allow the parameter be
-     * retrieved from an action using the Zend\Controller\Action::\getParam()
-     * method.
-     *
-     * @var string
-     */
-    protected $usePathParameter = false;
-
-    /**
-     * Constructor; accepts an array or Traversable instance to preset
-     * options for the Subscriber without calling all supported setter
-     * methods in turn.
-     *
-     * @param  array|Traversable $options
-     */
-    public function __construct($options = null)
-    {
-        if ($options !== null) {
-            $this->setOptions($options);
-        }
-    }
-
-    /**
-     * Process any injected configuration options
-     *
-     * @param  array|Traversable $options
-     * @return Subscriber
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setOptions($options)
-    {
-        if ($options instanceof Traversable) {
-            $options = ArrayUtils::iteratorToArray($options);
-        }
-
-        if (!is_array($options)) {
-            throw new Exception\InvalidArgumentException('Array or Traversable object'
-                                . 'expected, got ' . gettype($options));
-        }
-        if (array_key_exists('hubUrls', $options)) {
-            $this->addHubUrls($options['hubUrls']);
-        }
-        if (array_key_exists('callbackUrl', $options)) {
-            $this->setCallbackUrl($options['callbackUrl']);
-        }
-        if (array_key_exists('topicUrl', $options)) {
-            $this->setTopicUrl($options['topicUrl']);
-        }
-        if (array_key_exists('storage', $options)) {
-            $this->setStorage($options['storage']);
-        }
-        if (array_key_exists('leaseSeconds', $options)) {
-            $this->setLeaseSeconds($options['leaseSeconds']);
-        }
-        if (array_key_exists('parameters', $options)) {
-            $this->setParameters($options['parameters']);
-        }
-        if (array_key_exists('authentications', $options)) {
-            $this->addAuthentications($options['authentications']);
-        }
-        if (array_key_exists('usePathParameter', $options)) {
-            $this->usePathParameter($options['usePathParameter']);
-        }
-        if (array_key_exists('preferredVerificationMode', $options)) {
-            $this->setPreferredVerificationMode(
-                $options['preferredVerificationMode']
-            );
-        }
-        return $this;
-    }
-
-    /**
-     * Set the topic URL (RSS or Atom feed) to which the intended (un)subscribe
-     * event will relate
-     *
-     * @param  string $url
-     * @return Subscriber
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setTopicUrl($url)
-    {
-        if (empty($url) || !is_string($url) || !Uri::factory($url)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "url"'
-                .' of "' . $url . '" must be a non-empty string and a valid'
-                .' URL');
-        }
-        $this->topicUrl = $url;
-        return $this;
-    }
-
-    /**
-     * Set the topic URL (RSS or Atom feed) to which the intended (un)subscribe
-     * event will relate
-     *
-     * @return string
-     * @throws Exception\RuntimeException
-     */
-    public function getTopicUrl()
-    {
-        if (empty($this->topicUrl)) {
-            throw new Exception\RuntimeException('A valid Topic (RSS or Atom'
-                . ' feed) URL MUST be set before attempting any operation');
-        }
-        return $this->topicUrl;
-    }
-
-    /**
-     * Set the number of seconds for which any subscription will remain valid
-     *
-     * @param  int $seconds
-     * @return Subscriber
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setLeaseSeconds($seconds)
-    {
-        $seconds = intval($seconds);
-        if ($seconds <= 0) {
-            throw new Exception\InvalidArgumentException('Expected lease seconds'
-                . ' must be an integer greater than zero');
-        }
-        $this->leaseSeconds = $seconds;
-        return $this;
-    }
-
-    /**
-     * Get the number of lease seconds on subscriptions
-     *
-     * @return int
-     */
-    public function getLeaseSeconds()
-    {
-        return $this->leaseSeconds;
-    }
-
-    /**
-     * Set the callback URL to be used by Hub Servers when communicating with
-     * this Subscriber
-     *
-     * @param  string $url
-     * @return Subscriber
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setCallbackUrl($url)
-    {
-        if (empty($url) || !is_string($url) || !Uri::factory($url)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "url"'
-                . ' of "' . $url . '" must be a non-empty string and a valid'
-                . ' URL');
-        }
-        $this->callbackUrl = $url;
-        return $this;
-    }
-
-    /**
-     * Get the callback URL to be used by Hub Servers when communicating with
-     * this Subscriber
-     *
-     * @return string
-     * @throws Exception\RuntimeException
-     */
-    public function getCallbackUrl()
-    {
-        if (empty($this->callbackUrl)) {
-            throw new Exception\RuntimeException('A valid Callback URL MUST be'
-                . ' set before attempting any operation');
-        }
-        return $this->callbackUrl;
-    }
-
-    /**
-     * Set preferred verification mode (sync or async). By default, this
-     * Subscriber prefers synchronous verification, but does support
-     * asynchronous if that's the Hub Server's utilised mode.
-     *
-     * Zend\Feed\Pubsubhubbub\Subscriber will always send both modes, whose
-     * order of occurrence in the parameter list determines this preference.
-     *
-     * @param  string $mode Should be 'sync' or 'async'
-     * @return Subscriber
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setPreferredVerificationMode($mode)
-    {
-        if ($mode !== PubSubHubbub::VERIFICATION_MODE_SYNC
-            && $mode !== PubSubHubbub::VERIFICATION_MODE_ASYNC
-        ) {
-            throw new Exception\InvalidArgumentException('Invalid preferred'
-                . ' mode specified: "' . $mode . '" but should be one of'
-                . ' Zend\Feed\Pubsubhubbub::VERIFICATION_MODE_SYNC or'
-                . ' Zend\Feed\Pubsubhubbub::VERIFICATION_MODE_ASYNC');
-        }
-        $this->preferredVerificationMode = $mode;
-        return $this;
-    }
-
-    /**
-     * Get preferred verification mode (sync or async).
-     *
-     * @return string
-     */
-    public function getPreferredVerificationMode()
-    {
-        return $this->preferredVerificationMode;
-    }
-
-    /**
-     * Add a Hub Server URL supported by Publisher
-     *
-     * @param  string $url
-     * @return Subscriber
-     * @throws Exception\InvalidArgumentException
-     */
-    public function addHubUrl($url)
-    {
-        if (empty($url) || !is_string($url) || !Uri::factory($url)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "url"'
-                . ' of "' . $url . '" must be a non-empty string and a valid'
-                . ' URL');
-        }
-        $this->hubUrls[] = $url;
-        return $this;
-    }
-
-    /**
-     * Add an array of Hub Server URLs supported by Publisher
-     *
-     * @param  array $urls
-     * @return Subscriber
-     */
-    public function addHubUrls(array $urls)
-    {
-        foreach ($urls as $url) {
-            $this->addHubUrl($url);
-        }
-        return $this;
-    }
-
-    /**
-     * Remove a Hub Server URL
-     *
-     * @param  string $url
-     * @return Subscriber
-     */
-    public function removeHubUrl($url)
-    {
-        if (!in_array($url, $this->getHubUrls())) {
-            return $this;
-        }
-        $key = array_search($url, $this->hubUrls);
-        unset($this->hubUrls[$key]);
-        return $this;
-    }
-
-    /**
-     * Return an array of unique Hub Server URLs currently available
-     *
-     * @return array
-     */
-    public function getHubUrls()
-    {
-        $this->hubUrls = array_unique($this->hubUrls);
-        return $this->hubUrls;
-    }
-
-    /**
-     * Add authentication credentials for a given URL
-     *
-     * @param  string $url
-     * @param  array $authentication
-     * @return Subscriber
-     * @throws Exception\InvalidArgumentException
-     */
-    public function addAuthentication($url, array $authentication)
-    {
-        if (empty($url) || !is_string($url) || !Uri::factory($url)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "url"'
-                . ' of "' . $url . '" must be a non-empty string and a valid'
-                . ' URL');
-        }
-        $this->authentications[$url] = $authentication;
-        return $this;
-    }
-
-    /**
-     * Add authentication credentials for hub URLs
-     *
-     * @param  array $authentications
-     * @return Subscriber
-     */
-    public function addAuthentications(array $authentications)
-    {
-        foreach ($authentications as $url => $authentication) {
-            $this->addAuthentication($url, $authentication);
-        }
-        return $this;
-    }
-
-    /**
-     * Get all hub URL authentication credentials
-     *
-     * @return array
-     */
-    public function getAuthentications()
-    {
-        return $this->authentications;
-    }
-
-    /**
-     * Set flag indicating whether or not to use a path parameter
-     *
-     * @param  bool $bool
-     * @return Subscriber
-     */
-    public function usePathParameter($bool = true)
-    {
-        $this->usePathParameter = $bool;
-        return $this;
-    }
-
-    /**
-     * Add an optional parameter to the (un)subscribe requests
-     *
-     * @param  string $name
-     * @param  string|null $value
-     * @return Subscriber
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setParameter($name, $value = null)
-    {
-        if (is_array($name)) {
-            $this->setParameters($name);
-            return $this;
-        }
-        if (empty($name) || !is_string($name)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "name"'
-                . ' of "' . $name . '" must be a non-empty string');
-        }
-        if ($value === null) {
-            $this->removeParameter($name);
-            return $this;
-        }
-        if (empty($value) || (!is_string($value) && $value !== null)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "value"'
-                . ' of "' . $value . '" must be a non-empty string');
-        }
-        $this->parameters[$name] = $value;
-        return $this;
-    }
-
-    /**
-     * Add an optional parameter to the (un)subscribe requests
-     *
-     * @param  array $parameters
-     * @return Subscriber
-     */
-    public function setParameters(array $parameters)
-    {
-        foreach ($parameters as $name => $value) {
-            $this->setParameter($name, $value);
-        }
-        return $this;
-    }
-
-    /**
-     * Remove an optional parameter for the (un)subscribe requests
-     *
-     * @param  string $name
-     * @return Subscriber
-     * @throws Exception\InvalidArgumentException
-     */
-    public function removeParameter($name)
-    {
-        if (empty($name) || !is_string($name)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter "name"'
-                . ' of "' . $name . '" must be a non-empty string');
-        }
-        if (array_key_exists($name, $this->parameters)) {
-            unset($this->parameters[$name]);
-        }
-        return $this;
-    }
-
-    /**
-     * Return an array of optional parameters for (un)subscribe requests
-     *
-     * @return array
-     */
-    public function getParameters()
-    {
-        return $this->parameters;
-    }
-
-    /**
-     * Sets an instance of Zend\Feed\Pubsubhubbub\Model\SubscriptionPersistence used to background
-     * save any verification tokens associated with a subscription or other.
-     *
-     * @param  Model\SubscriptionPersistenceInterface $storage
-     * @return Subscriber
-     */
-    public function setStorage(Model\SubscriptionPersistenceInterface $storage)
-    {
-        $this->storage = $storage;
-        return $this;
-    }
-
-    /**
-     * Gets an instance of Zend\Feed\Pubsubhubbub\Storage\StoragePersistence used
-     * to background save any verification tokens associated with a subscription
-     * or other.
-     *
-     * @return Model\SubscriptionPersistenceInterface
-     * @throws Exception\RuntimeException
-     */
-    public function getStorage()
-    {
-        if ($this->storage === null) {
-            throw new Exception\RuntimeException('No storage vehicle '
-                . 'has been set.');
-        }
-        return $this->storage;
-    }
-
-    /**
-     * Subscribe to one or more Hub Servers using the stored Hub URLs
-     * for the given Topic URL (RSS or Atom feed)
-     *
-     * @return void
-     */
-    public function subscribeAll()
-    {
-        $this->_doRequest('subscribe');
-    }
-
-    /**
-     * Unsubscribe from one or more Hub Servers using the stored Hub URLs
-     * for the given Topic URL (RSS or Atom feed)
-     *
-     * @return void
-     */
-    public function unsubscribeAll()
-    {
-        $this->_doRequest('unsubscribe');
-    }
-
-    /**
-     * Returns a boolean indicator of whether the notifications to Hub
-     * Servers were ALL successful. If even one failed, FALSE is returned.
-     *
-     * @return bool
-     */
-    public function isSuccess()
-    {
-        if (count($this->errors) > 0) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Return an array of errors met from any failures, including keys:
-     * 'response' => the Zend\Http\Response object from the failure
-     * 'hubUrl' => the URL of the Hub Server whose notification failed
-     *
-     * @return array
-     */
-    public function getErrors()
-    {
-        return $this->errors;
-    }
-
-    /**
-     * Return an array of Hub Server URLs who returned a response indicating
-     * operation in Asynchronous Verification Mode, i.e. they will not confirm
-     * any (un)subscription immediately but at a later time (Hubs may be
-     * doing this as a batch process when load balancing)
-     *
-     * @return array
-     */
-    public function getAsyncHubs()
-    {
-        return $this->asyncHubs;
-    }
-
-    /**
-     * Executes an (un)subscribe request
-     *
-     * @param  string $mode
-     * @return void
-     * @throws Exception\RuntimeException
-     */
-    protected function _doRequest($mode)
-    {
-        $client = $this->_getHttpClient();
-        $hubs   = $this->getHubUrls();
-        if (empty($hubs)) {
-            throw new Exception\RuntimeException('No Hub Server URLs'
-                . ' have been set so no subscriptions can be attempted');
-        }
-        $this->errors = [];
-        $this->asyncHubs = [];
-        foreach ($hubs as $url) {
-            if (array_key_exists($url, $this->authentications)) {
-                $auth = $this->authentications[$url];
-                $client->setAuth($auth[0], $auth[1]);
-            }
-            $client->setUri($url);
-            $client->setRawBody($params = $this->_getRequestParameters($url, $mode));
-            $response = $client->send();
-            if ($response->getStatusCode() !== 204
-                && $response->getStatusCode() !== 202
-            ) {
-                $this->errors[] = [
-                    'response' => $response,
-                    'hubUrl'   => $url,
-                ];
-            /**
-             * At first I thought it was needed, but the backend storage will
-             * allow tracking async without any user interference. It's left
-             * here in case the user is interested in knowing what Hubs
-             * are using async verification modes so they may update Models and
-             * move these to asynchronous processes.
-             */
-            } elseif ($response->getStatusCode() == 202) {
-                $this->asyncHubs[] = [
-                    'response' => $response,
-                    'hubUrl'   => $url,
-                ];
-            }
-        }
-    }
-
-    /**
-     * Get a basic prepared HTTP client for use
-     *
-     * @return \Zend\Http\Client
-     */
-    protected function _getHttpClient()
-    {
-        $client = PubSubHubbub::getHttpClient();
-        $client->setMethod(HttpRequest::METHOD_POST);
-        $client->setOptions(['useragent' => 'Zend_Feed_Pubsubhubbub_Subscriber/'
-            . Version::VERSION]);
-        return $client;
-    }
-
-    /**
-     * Return a list of standard protocol/optional parameters for addition to
-     * client's POST body that are specific to the current Hub Server URL
-     *
-     * @param  string $hubUrl
-     * @param  string $mode
-     * @return string
-     * @throws Exception\InvalidArgumentException
-     */
-    protected function _getRequestParameters($hubUrl, $mode)
-    {
-        if (!in_array($mode, ['subscribe', 'unsubscribe'])) {
-            throw new Exception\InvalidArgumentException('Invalid mode specified: "'
-                . $mode . '" which should have been "subscribe" or "unsubscribe"');
-        }
-
-        $params = [
-            'hub.mode'  => $mode,
-            'hub.topic' => $this->getTopicUrl(),
-        ];
-
-        if ($this->getPreferredVerificationMode()
-                == PubSubHubbub::VERIFICATION_MODE_SYNC
-        ) {
-            $vmodes = [
-                PubSubHubbub::VERIFICATION_MODE_SYNC,
-                PubSubHubbub::VERIFICATION_MODE_ASYNC,
-            ];
-        } else {
-            $vmodes = [
-                PubSubHubbub::VERIFICATION_MODE_ASYNC,
-                PubSubHubbub::VERIFICATION_MODE_SYNC,
-            ];
-        }
-        $params['hub.verify'] = [];
-        foreach ($vmodes as $vmode) {
-            $params['hub.verify'][] = $vmode;
-        }
-
-        /**
-         * Establish a persistent verify_token and attach key to callback
-         * URL's path/query_string
-         */
-        $key   = $this->_generateSubscriptionKey($params, $hubUrl);
-        $token = $this->_generateVerifyToken();
-        $params['hub.verify_token'] = $token;
-
-        // Note: query string only usable with PuSH 0.2 Hubs
-        if (!$this->usePathParameter) {
-            $params['hub.callback'] = $this->getCallbackUrl()
-                . '?xhub.subscription=' . PubSubHubbub::urlencode($key);
-        } else {
-            $params['hub.callback'] = rtrim($this->getCallbackUrl(), '/')
-                . '/' . PubSubHubbub::urlencode($key);
-        }
-        if ($mode == 'subscribe' && $this->getLeaseSeconds() !== null) {
-            $params['hub.lease_seconds'] = $this->getLeaseSeconds();
-        }
-
-        // hub.secret not currently supported
-        $optParams = $this->getParameters();
-        foreach ($optParams as $name => $value) {
-            $params[$name] = $value;
-        }
-
-        // store subscription to storage
-        $now = new DateTime();
-        $expires = null;
-        if (isset($params['hub.lease_seconds'])) {
-            $expires = $now->add(new DateInterval('PT' . $params['hub.lease_seconds'] . 'S'))
-                ->format('Y-m-d H:i:s');
-        }
-        $data = [
-            'id'                 => $key,
-            'topic_url'          => $params['hub.topic'],
-            'hub_url'            => $hubUrl,
-            'created_time'       => $now->format('Y-m-d H:i:s'),
-            'lease_seconds'      => $params['hub.lease_seconds'],
-            'verify_token'       => hash('sha256', $params['hub.verify_token']),
-            'secret'             => null,
-            'expiration_time'    => $expires,
-            'subscription_state' => ($mode == 'unsubscribe')? PubSubHubbub::SUBSCRIPTION_TODELETE : PubSubHubbub::SUBSCRIPTION_NOTVERIFIED,
-        ];
-        $this->getStorage()->setSubscription($data);
-
-        return $this->_toByteValueOrderedString(
-            $this->_urlEncode($params)
-        );
-    }
-
-    /**
-     * Simple helper to generate a verification token used in (un)subscribe
-     * requests to a Hub Server. Follows no particular method, which means
-     * it might be improved/changed in future.
-     *
-     * @return string
-     */
-    protected function _generateVerifyToken()
-    {
-        if (!empty($this->testStaticToken)) {
-            return $this->testStaticToken;
-        }
-        return uniqid(rand(), true) . time();
-    }
-
-    /**
-     * Simple helper to generate a verification token used in (un)subscribe
-     * requests to a Hub Server.
-     *
-     * @param array   $params
-     * @param string $hubUrl The Hub Server URL for which this token will apply
-     * @return string
-     */
-    protected function _generateSubscriptionKey(array $params, $hubUrl)
-    {
-        $keyBase = $params['hub.topic'] . $hubUrl;
-        $key     = md5($keyBase);
-
-        return $key;
-    }
-
-    /**
-     * URL Encode an array of parameters
-     *
-     * @param  array $params
-     * @return array
-     */
-    protected function _urlEncode(array $params)
-    {
-        $encoded = [];
-        foreach ($params as $key => $value) {
-            if (is_array($value)) {
-                $ekey = PubSubHubbub::urlencode($key);
-                $encoded[$ekey] = [];
-                foreach ($value as $duplicateKey) {
-                    $encoded[$ekey][]
-                        = PubSubHubbub::urlencode($duplicateKey);
-                }
-            } else {
-                $encoded[PubSubHubbub::urlencode($key)]
-                    = PubSubHubbub::urlencode($value);
-            }
-        }
-        return $encoded;
-    }
-
-    /**
-     * Order outgoing parameters
-     *
-     * @param  array $params
-     * @return array
-     */
-    protected function _toByteValueOrderedString(array $params)
-    {
-        $return = [];
-        uksort($params, 'strnatcmp');
-        foreach ($params as $key => $value) {
-            if (is_array($value)) {
-                foreach ($value as $keyduplicate) {
-                    $return[] = $key . '=' . $keyduplicate;
-                }
-            } else {
-                $return[] = $key . '=' . $value;
-            }
-        }
-        return implode('&', $return);
-    }
-
-    /**
-     * This is STRICTLY for testing purposes only...
-     */
-    protected $testStaticToken = null;
-
-    final public function setTestStaticToken($token)
-    {
-        $this->testStaticToken = (string) $token;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/Subscriber/Callback.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/Subscriber/Callback.php
deleted file mode 100644
index 56c06c7..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/Subscriber/Callback.php
+++ /dev/null
@@ -1,316 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub\Subscriber;
-
-use Zend\Feed\PubSubHubbub;
-use Zend\Feed\PubSubHubbub\Exception;
-use Zend\Feed\Uri;
-
-class Callback extends PubSubHubbub\AbstractCallback
-{
-    /**
-     * Contains the content of any feeds sent as updates to the Callback URL
-     *
-     * @var string
-     */
-    protected $feedUpdate = null;
-
-    /**
-     * Holds a manually set subscription key (i.e. identifies a unique
-     * subscription) which is typical when it is not passed in the query string
-     * but is part of the Callback URL path, requiring manual retrieval e.g.
-     * using a route and the \Zend\Mvc\Router\RouteMatch::getParam() method.
-     *
-     * @var string
-     */
-    protected $subscriptionKey = null;
-
-    /**
-     * After verification, this is set to the verified subscription's data.
-     *
-     * @var array
-     */
-    protected $currentSubscriptionData = null;
-
-    /**
-     * Set a subscription key to use for the current callback request manually.
-     * Required if usePathParameter is enabled for the Subscriber.
-     *
-     * @param  string $key
-     * @return \Zend\Feed\PubSubHubbub\Subscriber\Callback
-     */
-    public function setSubscriptionKey($key)
-    {
-        $this->subscriptionKey = $key;
-        return $this;
-    }
-
-    /**
-     * Handle any callback from a Hub Server responding to a subscription or
-     * unsubscription request. This should be the Hub Server confirming the
-     * the request prior to taking action on it.
-     *
-     * @param  array $httpGetData GET data if available and not in $_GET
-     * @param  bool $sendResponseNow Whether to send response now or when asked
-     * @return void
-     */
-    public function handle(array $httpGetData = null, $sendResponseNow = false)
-    {
-        if ($httpGetData === null) {
-            $httpGetData = $_GET;
-        }
-
-        /**
-         * Handle any feed updates (sorry for the mess :P)
-         *
-         * This DOES NOT attempt to process a feed update. Feed updates
-         * SHOULD be validated/processed by an asynchronous process so as
-         * to avoid holding up responses to the Hub.
-         */
-        $contentType = $this->_getHeader('Content-Type');
-        if (strtolower($_SERVER['REQUEST_METHOD']) == 'post'
-            && $this->_hasValidVerifyToken(null, false)
-            && (stripos($contentType, 'application/atom+xml') === 0
-                || stripos($contentType, 'application/rss+xml') === 0
-                || stripos($contentType, 'application/xml') === 0
-                || stripos($contentType, 'text/xml') === 0
-                || stripos($contentType, 'application/rdf+xml') === 0)
-        ) {
-            $this->setFeedUpdate($this->_getRawBody());
-            $this->getHttpResponse()->setHeader('X-Hub-On-Behalf-Of', $this->getSubscriberCount());
-        /**
-         * Handle any (un)subscribe confirmation requests
-         */
-        } elseif ($this->isValidHubVerification($httpGetData)) {
-            $this->getHttpResponse()->setContent($httpGetData['hub_challenge']);
-
-            switch (strtolower($httpGetData['hub_mode'])) {
-                case 'subscribe':
-                    $data = $this->currentSubscriptionData;
-                    $data['subscription_state'] = PubSubHubbub\PubSubHubbub::SUBSCRIPTION_VERIFIED;
-                    if (isset($httpGetData['hub_lease_seconds'])) {
-                        $data['lease_seconds'] = $httpGetData['hub_lease_seconds'];
-                    }
-                    $this->getStorage()->setSubscription($data);
-                    break;
-                case 'unsubscribe':
-                    $verifyTokenKey = $this->_detectVerifyTokenKey($httpGetData);
-                    $this->getStorage()->deleteSubscription($verifyTokenKey);
-                    break;
-                default:
-                    throw new Exception\RuntimeException(sprintf(
-                        'Invalid hub_mode ("%s") provided',
-                        $httpGetData['hub_mode']
-                    ));
-            }
-        /**
-         * Hey, C'mon! We tried everything else!
-         */
-        } else {
-            $this->getHttpResponse()->setStatusCode(404);
-        }
-
-        if ($sendResponseNow) {
-            $this->sendResponse();
-        }
-    }
-
-    /**
-     * Checks validity of the request simply by making a quick pass and
-     * confirming the presence of all REQUIRED parameters.
-     *
-     * @param  array $httpGetData
-     * @return bool
-     */
-    public function isValidHubVerification(array $httpGetData)
-    {
-        /**
-         * As per the specification, the hub.verify_token is OPTIONAL. This
-         * implementation of Pubsubhubbub considers it REQUIRED and will
-         * always send a hub.verify_token parameter to be echoed back
-         * by the Hub Server. Therefore, its absence is considered invalid.
-         */
-        if (strtolower($_SERVER['REQUEST_METHOD']) !== 'get') {
-            return false;
-        }
-        $required = [
-            'hub_mode',
-            'hub_topic',
-            'hub_challenge',
-            'hub_verify_token',
-        ];
-        foreach ($required as $key) {
-            if (!array_key_exists($key, $httpGetData)) {
-                return false;
-            }
-        }
-        if ($httpGetData['hub_mode'] !== 'subscribe'
-            && $httpGetData['hub_mode'] !== 'unsubscribe'
-        ) {
-            return false;
-        }
-        if ($httpGetData['hub_mode'] == 'subscribe'
-            && !array_key_exists('hub_lease_seconds', $httpGetData)
-        ) {
-            return false;
-        }
-        if (!Uri::factory($httpGetData['hub_topic'])->isValid()) {
-            return false;
-        }
-
-        /**
-         * Attempt to retrieve any Verification Token Key attached to Callback
-         * URL's path by our Subscriber implementation
-         */
-        if (!$this->_hasValidVerifyToken($httpGetData)) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Sets a newly received feed (Atom/RSS) sent by a Hub as an update to a
-     * Topic we've subscribed to.
-     *
-     * @param  string $feed
-     * @return \Zend\Feed\PubSubHubbub\Subscriber\Callback
-     */
-    public function setFeedUpdate($feed)
-    {
-        $this->feedUpdate = $feed;
-        return $this;
-    }
-
-    /**
-     * Check if any newly received feed (Atom/RSS) update was received
-     *
-     * @return bool
-     */
-    public function hasFeedUpdate()
-    {
-        if ($this->feedUpdate === null) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Gets a newly received feed (Atom/RSS) sent by a Hub as an update to a
-     * Topic we've subscribed to.
-     *
-     * @return string
-     */
-    public function getFeedUpdate()
-    {
-        return $this->feedUpdate;
-    }
-
-    /**
-     * Check for a valid verify_token. By default attempts to compare values
-     * with that sent from Hub, otherwise merely ascertains its existence.
-     *
-     * @param  array $httpGetData
-     * @param  bool $checkValue
-     * @return bool
-     */
-    protected function _hasValidVerifyToken(array $httpGetData = null, $checkValue = true)
-    {
-        $verifyTokenKey = $this->_detectVerifyTokenKey($httpGetData);
-        if (empty($verifyTokenKey)) {
-            return false;
-        }
-        $verifyTokenExists = $this->getStorage()->hasSubscription($verifyTokenKey);
-        if (!$verifyTokenExists) {
-            return false;
-        }
-        if ($checkValue) {
-            $data = $this->getStorage()->getSubscription($verifyTokenKey);
-            $verifyToken = $data['verify_token'];
-            if ($verifyToken !== hash('sha256', $httpGetData['hub_verify_token'])) {
-                return false;
-            }
-            $this->currentSubscriptionData = $data;
-            return true;
-        }
-        return true;
-    }
-
-    /**
-     * Attempt to detect the verification token key. This would be passed in
-     * the Callback URL (which we are handling with this class!) as a URI
-     * path part (the last part by convention).
-     *
-     * @param  null|array $httpGetData
-     * @return false|string
-     */
-    protected function _detectVerifyTokenKey(array $httpGetData = null)
-    {
-        /**
-         * Available when sub keys encoding in Callback URL path
-         */
-        if (isset($this->subscriptionKey)) {
-            return $this->subscriptionKey;
-        }
-
-        /**
-         * Available only if allowed by PuSH 0.2 Hubs
-         */
-        if (is_array($httpGetData)
-            && isset($httpGetData['xhub_subscription'])
-        ) {
-            return $httpGetData['xhub_subscription'];
-        }
-
-        /**
-         * Available (possibly) if corrupted in transit and not part of $_GET
-         */
-        $params = $this->_parseQueryString();
-        if (isset($params['xhub.subscription'])) {
-            return rawurldecode($params['xhub.subscription']);
-        }
-
-        return false;
-    }
-
-    /**
-     * Build an array of Query String parameters.
-     * This bypasses $_GET which munges parameter names and cannot accept
-     * multiple parameters with the same key.
-     *
-     * @return array|void
-     */
-    protected function _parseQueryString()
-    {
-        $params      = [];
-        $queryString = '';
-        if (isset($_SERVER['QUERY_STRING'])) {
-            $queryString = $_SERVER['QUERY_STRING'];
-        }
-        if (empty($queryString)) {
-            return [];
-        }
-        $parts = explode('&', $queryString);
-        foreach ($parts as $kvpair) {
-            $pair  = explode('=', $kvpair);
-            $key   = rawurldecode($pair[0]);
-            $value = rawurldecode($pair[1]);
-            if (isset($params[$key])) {
-                if (is_array($params[$key])) {
-                    $params[$key][] = $value;
-                } else {
-                    $params[$key] = [$params[$key], $value];
-                }
-            } else {
-                $params[$key] = $value;
-            }
-        }
-        return $params;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/PubSubHubbub/Version.php b/vendor/zendframework/zend-feed/src/PubSubHubbub/Version.php
deleted file mode 100644
index 9ac7fb4..0000000
--- a/vendor/zendframework/zend-feed/src/PubSubHubbub/Version.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\PubSubHubbub;
-
-abstract class Version
-{
-    const VERSION = '2';
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/AbstractEntry.php b/vendor/zendframework/zend-feed/src/Reader/AbstractEntry.php
deleted file mode 100644
index a706ff8..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/AbstractEntry.php
+++ /dev/null
@@ -1,224 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader;
-
-use DOMDocument;
-use DOMElement;
-use DOMXPath;
-
-abstract class AbstractEntry
-{
-    /**
-     * Feed entry data
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * DOM document object
-     *
-     * @var DOMDocument
-     */
-    protected $domDocument = null;
-
-    /**
-     * Entry instance
-     *
-     * @var DOMElement
-     */
-    protected $entry = null;
-
-    /**
-     * Pointer to the current entry
-     *
-     * @var int
-     */
-    protected $entryKey = 0;
-
-    /**
-     * XPath object
-     *
-     * @var DOMXPath
-     */
-    protected $xpath = null;
-
-    /**
-     * Registered extensions
-     *
-     * @var array
-     */
-    protected $extensions = [];
-
-    /**
-     * Constructor
-     *
-     * @param  DOMElement $entry
-     * @param  int $entryKey
-     * @param  null|string $type
-     */
-    public function __construct(DOMElement $entry, $entryKey, $type = null)
-    {
-        $this->entry       = $entry;
-        $this->entryKey    = $entryKey;
-        $this->domDocument = $entry->ownerDocument;
-        if ($type !== null) {
-            $this->data['type'] = $type;
-        } else {
-            $this->data['type'] = Reader::detectType($entry);
-        }
-        $this->_loadExtensions();
-    }
-
-    /**
-     * Get the DOM
-     *
-     * @return DOMDocument
-     */
-    public function getDomDocument()
-    {
-        return $this->domDocument;
-    }
-
-    /**
-     * Get the entry element
-     *
-     * @return DOMElement
-     */
-    public function getElement()
-    {
-        return $this->entry;
-    }
-
-    /**
-     * Get the Entry's encoding
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        $assumed = $this->getDomDocument()->encoding;
-        if (empty($assumed)) {
-            $assumed = 'UTF-8';
-        }
-        return $assumed;
-    }
-
-    /**
-     * Get entry as xml
-     *
-     * @return string
-     */
-    public function saveXml()
-    {
-        $dom = new DOMDocument('1.0', $this->getEncoding());
-        $entry = $dom->importNode($this->getElement(), true);
-        $dom->appendChild($entry);
-        return $dom->saveXml();
-    }
-
-    /**
-     * Get the entry type
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        return $this->data['type'];
-    }
-
-    /**
-     * Get the XPath query object
-     *
-     * @return DOMXPath
-     */
-    public function getXpath()
-    {
-        if (!$this->xpath) {
-            $this->setXpath(new DOMXPath($this->getDomDocument()));
-        }
-        return $this->xpath;
-    }
-
-    /**
-     * Set the XPath query
-     *
-     * @param  DOMXPath $xpath
-     * @return \Zend\Feed\Reader\AbstractEntry
-     */
-    public function setXpath(DOMXPath $xpath)
-    {
-        $this->xpath = $xpath;
-        return $this;
-    }
-
-    /**
-     * Get registered extensions
-     *
-     * @return array
-     */
-    public function getExtensions()
-    {
-        return $this->extensions;
-    }
-
-    /**
-     * Return an Extension object with the matching name (postfixed with _Entry)
-     *
-     * @param string $name
-     * @return \Zend\Feed\Reader\Extension\AbstractEntry
-     */
-    public function getExtension($name)
-    {
-        if (array_key_exists($name . '\Entry', $this->extensions)) {
-            return $this->extensions[$name . '\Entry'];
-        }
-        return;
-    }
-
-    /**
-     * Method overloading: call given method on first extension implementing it
-     *
-     * @param  string $method
-     * @param  array $args
-     * @return mixed
-     * @throws Exception\BadMethodCallException if no extensions implements the method
-     */
-    public function __call($method, $args)
-    {
-        foreach ($this->extensions as $extension) {
-            if (method_exists($extension, $method)) {
-                return call_user_func_array([$extension, $method], $args);
-            }
-        }
-        throw new Exception\BadMethodCallException('Method: ' . $method
-            . 'does not exist and could not be located on a registered Extension');
-    }
-
-    /**
-     * Load extensions from Zend\Feed\Reader\Reader
-     *
-     * @return void
-     */
-    protected function _loadExtensions()
-    {
-        $all = Reader::getExtensions();
-        $feed = $all['entry'];
-        foreach ($feed as $extension) {
-            if (in_array($extension, $all['core'])) {
-                continue;
-            }
-            $className = Reader::getPluginLoader()->getClassName($extension);
-            $this->extensions[$extension] = new $className(
-                $this->getElement(), $this->entryKey, $this->data['type']
-            );
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/AbstractFeed.php b/vendor/zendframework/zend-feed/src/Reader/AbstractFeed.php
deleted file mode 100644
index 8cc2347..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/AbstractFeed.php
+++ /dev/null
@@ -1,300 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader;
-
-use DOMDocument;
-use DOMElement;
-use DOMXPath;
-
-abstract class AbstractFeed implements Feed\FeedInterface
-{
-    /**
-     * Parsed feed data
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * Parsed feed data in the shape of a DOMDocument
-     *
-     * @var DOMDocument
-     */
-    protected $domDocument = null;
-
-    /**
-     * An array of parsed feed entries
-     *
-     * @var array
-     */
-    protected $entries = [];
-
-    /**
-     * A pointer for the iterator to keep track of the entries array
-     *
-     * @var int
-     */
-    protected $entriesKey = 0;
-
-    /**
-     * The base XPath query used to retrieve feed data
-     *
-     * @var DOMXPath
-     */
-    protected $xpath = null;
-
-    /**
-     * Array of loaded extensions
-     *
-     * @var array
-     */
-    protected $extensions = [];
-
-    /**
-     * Original Source URI (set if imported from a URI)
-     *
-     * @var string
-     */
-    protected $originalSourceUri = null;
-
-    /**
-     * Constructor
-     *
-     * @param DomDocument $domDocument The DOM object for the feed's XML
-     * @param string $type Feed type
-     */
-    public function __construct(DOMDocument $domDocument, $type = null)
-    {
-        $this->domDocument = $domDocument;
-        $this->xpath = new DOMXPath($this->domDocument);
-
-        if ($type !== null) {
-            $this->data['type'] = $type;
-        } else {
-            $this->data['type'] = Reader::detectType($this->domDocument);
-        }
-        $this->registerNamespaces();
-        $this->indexEntries();
-        $this->loadExtensions();
-    }
-
-    /**
-     * Set an original source URI for the feed being parsed. This value
-     * is returned from getFeedLink() method if the feed does not carry
-     * a self-referencing URI.
-     *
-     * @param string $uri
-     */
-    public function setOriginalSourceUri($uri)
-    {
-        $this->originalSourceUri = $uri;
-    }
-
-    /**
-     * Get an original source URI for the feed being parsed. Returns null if
-     * unset or the feed was not imported from a URI.
-     *
-     * @return string|null
-     */
-    public function getOriginalSourceUri()
-    {
-        return $this->originalSourceUri;
-    }
-
-    /**
-     * Get the number of feed entries.
-     * Required by the Iterator interface.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return count($this->entries);
-    }
-
-    /**
-     * Return the current entry
-     *
-     * @return \Zend\Feed\Reader\AbstractEntry
-     */
-    public function current()
-    {
-        if (substr($this->getType(), 0, 3) == 'rss') {
-            $reader = new Entry\RSS($this->entries[$this->key()], $this->key(), $this->getType());
-        } else {
-            $reader = new Entry\Atom($this->entries[$this->key()], $this->key(), $this->getType());
-        }
-
-        $reader->setXpath($this->xpath);
-
-        return $reader;
-    }
-
-    /**
-     * Get the DOM
-     *
-     * @return DOMDocument
-     */
-    public function getDomDocument()
-    {
-        return $this->domDocument;
-    }
-
-    /**
-     * Get the Feed's encoding
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        $assumed = $this->getDomDocument()->encoding;
-        if (empty($assumed)) {
-            $assumed = 'UTF-8';
-        }
-        return $assumed;
-    }
-
-    /**
-     * Get feed as xml
-     *
-     * @return string
-     */
-    public function saveXml()
-    {
-        return $this->getDomDocument()->saveXml();
-    }
-
-    /**
-     * Get the DOMElement representing the items/feed element
-     *
-     * @return DOMElement
-     */
-    public function getElement()
-    {
-        return $this->getDomDocument()->documentElement;
-    }
-
-    /**
-     * Get the DOMXPath object for this feed
-     *
-     * @return DOMXPath
-     */
-    public function getXpath()
-    {
-        return $this->xpath;
-    }
-
-    /**
-     * Get the feed type
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        return $this->data['type'];
-    }
-
-    /**
-     * Return the current feed key
-     *
-     * @return int
-     */
-    public function key()
-    {
-        return $this->entriesKey;
-    }
-
-    /**
-     * Move the feed pointer forward
-     *
-     */
-    public function next()
-    {
-        ++$this->entriesKey;
-    }
-
-    /**
-     * Reset the pointer in the feed object
-     *
-     */
-    public function rewind()
-    {
-        $this->entriesKey = 0;
-    }
-
-    /**
-     * Check to see if the iterator is still valid
-     *
-     * @return bool
-     */
-    public function valid()
-    {
-        return 0 <= $this->entriesKey && $this->entriesKey < $this->count();
-    }
-
-    public function getExtensions()
-    {
-        return $this->extensions;
-    }
-
-    public function __call($method, $args)
-    {
-        foreach ($this->extensions as $extension) {
-            if (method_exists($extension, $method)) {
-                return call_user_func_array([$extension, $method], $args);
-            }
-        }
-        throw new Exception\BadMethodCallException('Method: ' . $method
-        . 'does not exist and could not be located on a registered Extension');
-    }
-
-    /**
-     * Return an Extension object with the matching name (postfixed with _Feed)
-     *
-     * @param string $name
-     * @return \Zend\Feed\Reader\Extension\AbstractFeed
-     */
-    public function getExtension($name)
-    {
-        if (array_key_exists($name . '\Feed', $this->extensions)) {
-            return $this->extensions[$name . '\Feed'];
-        }
-        return;
-    }
-
-    protected function loadExtensions()
-    {
-        $all     = Reader::getExtensions();
-        $manager = Reader::getExtensionManager();
-        $feed    = $all['feed'];
-        foreach ($feed as $extension) {
-            if (in_array($extension, $all['core'])) {
-                continue;
-            }
-            $plugin = $manager->get($extension);
-            $plugin->setDomDocument($this->getDomDocument());
-            $plugin->setType($this->data['type']);
-            $plugin->setXpath($this->xpath);
-            $this->extensions[$extension] = $plugin;
-        }
-    }
-
-    /**
-     * Read all entries to the internal entries array
-     *
-     */
-    abstract protected function indexEntries();
-
-    /**
-     * Register the default namespaces for the current feed format
-     *
-     */
-    abstract protected function registerNamespaces();
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Collection.php b/vendor/zendframework/zend-feed/src/Reader/Collection.php
deleted file mode 100644
index f50c1bc..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Collection.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader;
-
-use ArrayObject;
-
-class Collection extends ArrayObject
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Collection/AbstractCollection.php b/vendor/zendframework/zend-feed/src/Reader/Collection/AbstractCollection.php
deleted file mode 100644
index 749ff5c..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Collection/AbstractCollection.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Collection;
-
-use ArrayObject;
-
-abstract class AbstractCollection extends ArrayObject
-{
-    /**
-     * Return a simple array of the most relevant slice of
-     * the collection values. For example, feed categories contain
-     * the category name, domain/URI, and other data. This method would
-     * merely return the most useful data - i.e. the category names.
-     *
-     * @return array
-     */
-    abstract public function getValues();
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Collection/Author.php b/vendor/zendframework/zend-feed/src/Reader/Collection/Author.php
deleted file mode 100644
index be956d4..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Collection/Author.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Collection;
-
-class Author extends AbstractCollection
-{
-    /**
-     * Return a simple array of the most relevant slice of
-     * the author values, i.e. all author names.
-     *
-     * @return array
-     */
-    public function getValues()
-    {
-        $authors = [];
-        foreach ($this->getIterator() as $element) {
-            $authors[] = $element['name'];
-        }
-        return array_unique($authors);
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Collection/Category.php b/vendor/zendframework/zend-feed/src/Reader/Collection/Category.php
deleted file mode 100644
index 2f43a07..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Collection/Category.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Collection;
-
-class Category extends AbstractCollection
-{
-    /**
-     * Return a simple array of the most relevant slice of
-     * the collection values. For example, feed categories contain
-     * the category name, domain/URI, and other data. This method would
-     * merely return the most useful data - i.e. the category names.
-     *
-     * @return array
-     */
-    public function getValues()
-    {
-        $categories = [];
-        foreach ($this->getIterator() as $element) {
-            if (isset($element['label']) && !empty($element['label'])) {
-                $categories[] = $element['label'];
-            } else {
-                $categories[] = $element['term'];
-            }
-        }
-        return array_unique($categories);
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Collection/Collection.php b/vendor/zendframework/zend-feed/src/Reader/Collection/Collection.php
deleted file mode 100644
index cf791c2..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Collection/Collection.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Collection;
-
-use ArrayObject;
-
-class Collection extends ArrayObject
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Entry/AbstractEntry.php b/vendor/zendframework/zend-feed/src/Reader/Entry/AbstractEntry.php
deleted file mode 100644
index 1342431..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Entry/AbstractEntry.php
+++ /dev/null
@@ -1,233 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Entry;
-
-use DOMDocument;
-use DOMElement;
-use DOMXPath;
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Exception;
-
-abstract class AbstractEntry
-{
-    /**
-     * Feed entry data
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * DOM document object
-     *
-     * @var DOMDocument
-     */
-    protected $domDocument = null;
-
-    /**
-     * Entry instance
-     *
-     * @var DOMElement
-     */
-    protected $entry = null;
-
-    /**
-     * Pointer to the current entry
-     *
-     * @var int
-     */
-    protected $entryKey = 0;
-
-    /**
-     * XPath object
-     *
-     * @var DOMXPath
-     */
-    protected $xpath = null;
-
-    /**
-     * Registered extensions
-     *
-     * @var array
-     */
-    protected $extensions = [];
-
-    /**
-     * Constructor
-     *
-     * @param  DOMElement $entry
-     * @param  int $entryKey
-     * @param  string $type
-     */
-    public function __construct(DOMElement $entry, $entryKey, $type = null)
-    {
-        $this->entry       = $entry;
-        $this->entryKey    = $entryKey;
-        $this->domDocument = $entry->ownerDocument;
-        if ($type !== null) {
-            $this->data['type'] = $type;
-        } elseif ($this->domDocument !== null) {
-            $this->data['type'] = Reader\Reader::detectType($this->domDocument);
-        } else {
-            $this->data['type'] = Reader\Reader::TYPE_ANY;
-        }
-        $this->loadExtensions();
-    }
-
-    /**
-     * Get the DOM
-     *
-     * @return DOMDocument
-     */
-    public function getDomDocument()
-    {
-        return $this->domDocument;
-    }
-
-    /**
-     * Get the entry element
-     *
-     * @return DOMElement
-     */
-    public function getElement()
-    {
-        return $this->entry;
-    }
-
-    /**
-     * Get the Entry's encoding
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        $assumed = $this->getDomDocument()->encoding;
-        if (empty($assumed)) {
-            $assumed = 'UTF-8';
-        }
-        return $assumed;
-    }
-
-    /**
-     * Get entry as xml
-     *
-     * @return string
-     */
-    public function saveXml()
-    {
-        $dom   = new DOMDocument('1.0', $this->getEncoding());
-        $deep  = version_compare(PHP_VERSION, '7', 'ge') ? 1 : true;
-        $entry = $dom->importNode($this->getElement(), $deep);
-        $dom->appendChild($entry);
-        return $dom->saveXml();
-    }
-
-    /**
-     * Get the entry type
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        return $this->data['type'];
-    }
-
-    /**
-     * Get the XPath query object
-     *
-     * @return DOMXPath
-     */
-    public function getXpath()
-    {
-        if (!$this->xpath) {
-            $this->setXpath(new DOMXPath($this->getDomDocument()));
-        }
-        return $this->xpath;
-    }
-
-    /**
-     * Set the XPath query
-     *
-     * @param  DOMXPath $xpath
-     * @return AbstractEntry
-     */
-    public function setXpath(DOMXPath $xpath)
-    {
-        $this->xpath = $xpath;
-        return $this;
-    }
-
-    /**
-     * Get registered extensions
-     *
-     * @return array
-     */
-    public function getExtensions()
-    {
-        return $this->extensions;
-    }
-
-    /**
-     * Return an Extension object with the matching name (postfixed with _Entry)
-     *
-     * @param string $name
-     * @return Reader\Extension\AbstractEntry
-     */
-    public function getExtension($name)
-    {
-        if (array_key_exists($name . '\\Entry', $this->extensions)) {
-            return $this->extensions[$name . '\\Entry'];
-        }
-        return;
-    }
-
-    /**
-     * Method overloading: call given method on first extension implementing it
-     *
-     * @param  string $method
-     * @param  array $args
-     * @return mixed
-     * @throws Exception\RuntimeException if no extensions implements the method
-     */
-    public function __call($method, $args)
-    {
-        foreach ($this->extensions as $extension) {
-            if (method_exists($extension, $method)) {
-                return call_user_func_array([$extension, $method], $args);
-            }
-        }
-        throw new Exception\RuntimeException(sprintf(
-            'Method: %s does not exist and could not be located on a registered Extension',
-            $method
-        ));
-    }
-
-    /**
-     * Load extensions from Zend\Feed\Reader\Reader
-     *
-     * @return void
-     */
-    protected function loadExtensions()
-    {
-        $all     = Reader\Reader::getExtensions();
-        $manager = Reader\Reader::getExtensionManager();
-        $feed    = $all['entry'];
-        foreach ($feed as $extension) {
-            if (in_array($extension, $all['core'])) {
-                continue;
-            }
-            $plugin = $manager->get($extension);
-            $plugin->setEntryElement($this->getElement());
-            $plugin->setEntryKey($this->entryKey);
-            $plugin->setType($this->data['type']);
-            $this->extensions[$extension] = $plugin;
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Entry/Atom.php b/vendor/zendframework/zend-feed/src/Reader/Entry/Atom.php
deleted file mode 100644
index c68f360..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Entry/Atom.php
+++ /dev/null
@@ -1,370 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Entry;
-
-use DOMElement;
-use DOMXPath;
-use Zend\Feed\Reader;
-
-class Atom extends AbstractEntry implements EntryInterface
-{
-    /**
-     * XPath query
-     *
-     * @var string
-     */
-    protected $xpathQuery = '';
-
-    /**
-     * Constructor
-     *
-     * @param  DOMElement $entry
-     * @param  int $entryKey
-     * @param  string $type
-     */
-    public function __construct(DOMElement $entry, $entryKey, $type = null)
-    {
-        parent::__construct($entry, $entryKey, $type);
-
-        // Everyone by now should know XPath indices start from 1 not 0
-        $this->xpathQuery = '//atom:entry[' . ($this->entryKey + 1) . ']';
-
-        $manager    = Reader\Reader::getExtensionManager();
-        $extensions = ['Atom\Entry', 'Thread\Entry', 'DublinCore\Entry'];
-
-        foreach ($extensions as $name) {
-            $extension = $manager->get($name);
-            $extension->setEntryElement($entry);
-            $extension->setEntryKey($entryKey);
-            $extension->setType($type);
-            $this->extensions[$name] = $extension;
-        }
-    }
-
-    /**
-     * Get the specified author
-     *
-     * @param  int $index
-     * @return string|null
-     */
-    public function getAuthor($index = 0)
-    {
-        $authors = $this->getAuthors();
-
-        if (isset($authors[$index])) {
-            return $authors[$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return array
-     */
-    public function getAuthors()
-    {
-        if (array_key_exists('authors', $this->data)) {
-            return $this->data['authors'];
-        }
-
-        $people = $this->getExtension('Atom')->getAuthors();
-
-        $this->data['authors'] = $people;
-
-        return $this->data['authors'];
-    }
-
-    /**
-     * Get the entry content
-     *
-     * @return string
-     */
-    public function getContent()
-    {
-        if (array_key_exists('content', $this->data)) {
-            return $this->data['content'];
-        }
-
-        $content = $this->getExtension('Atom')->getContent();
-
-        $this->data['content'] = $content;
-
-        return $this->data['content'];
-    }
-
-    /**
-     * Get the entry creation date
-     *
-     * @return string
-     */
-    public function getDateCreated()
-    {
-        if (array_key_exists('datecreated', $this->data)) {
-            return $this->data['datecreated'];
-        }
-
-        $dateCreated = $this->getExtension('Atom')->getDateCreated();
-
-        $this->data['datecreated'] = $dateCreated;
-
-        return $this->data['datecreated'];
-    }
-
-    /**
-     * Get the entry modification date
-     *
-     * @return string
-     */
-    public function getDateModified()
-    {
-        if (array_key_exists('datemodified', $this->data)) {
-            return $this->data['datemodified'];
-        }
-
-        $dateModified = $this->getExtension('Atom')->getDateModified();
-
-        $this->data['datemodified'] = $dateModified;
-
-        return $this->data['datemodified'];
-    }
-
-    /**
-     * Get the entry description
-     *
-     * @return string
-     */
-    public function getDescription()
-    {
-        if (array_key_exists('description', $this->data)) {
-            return $this->data['description'];
-        }
-
-        $description = $this->getExtension('Atom')->getDescription();
-
-        $this->data['description'] = $description;
-
-        return $this->data['description'];
-    }
-
-    /**
-     * Get the entry enclosure
-     *
-     * @return string
-     */
-    public function getEnclosure()
-    {
-        if (array_key_exists('enclosure', $this->data)) {
-            return $this->data['enclosure'];
-        }
-
-        $enclosure = $this->getExtension('Atom')->getEnclosure();
-
-        $this->data['enclosure'] = $enclosure;
-
-        return $this->data['enclosure'];
-    }
-
-    /**
-     * Get the entry ID
-     *
-     * @return string
-     */
-    public function getId()
-    {
-        if (array_key_exists('id', $this->data)) {
-            return $this->data['id'];
-        }
-
-        $id = $this->getExtension('Atom')->getId();
-
-        $this->data['id'] = $id;
-
-        return $this->data['id'];
-    }
-
-    /**
-     * Get a specific link
-     *
-     * @param  int $index
-     * @return string
-     */
-    public function getLink($index = 0)
-    {
-        if (!array_key_exists('links', $this->data)) {
-            $this->getLinks();
-        }
-
-        if (isset($this->data['links'][$index])) {
-            return $this->data['links'][$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get all links
-     *
-     * @return array
-     */
-    public function getLinks()
-    {
-        if (array_key_exists('links', $this->data)) {
-            return $this->data['links'];
-        }
-
-        $links = $this->getExtension('Atom')->getLinks();
-
-        $this->data['links'] = $links;
-
-        return $this->data['links'];
-    }
-
-    /**
-     * Get a permalink to the entry
-     *
-     * @return string
-     */
-    public function getPermalink()
-    {
-        return $this->getLink(0);
-    }
-
-    /**
-     * Get the entry title
-     *
-     * @return string
-     */
-    public function getTitle()
-    {
-        if (array_key_exists('title', $this->data)) {
-            return $this->data['title'];
-        }
-
-        $title = $this->getExtension('Atom')->getTitle();
-
-        $this->data['title'] = $title;
-
-        return $this->data['title'];
-    }
-
-    /**
-     * Get the number of comments/replies for current entry
-     *
-     * @return int
-     */
-    public function getCommentCount()
-    {
-        if (array_key_exists('commentcount', $this->data)) {
-            return $this->data['commentcount'];
-        }
-
-        $commentcount = $this->getExtension('Thread')->getCommentCount();
-
-        if (!$commentcount) {
-            $commentcount = $this->getExtension('Atom')->getCommentCount();
-        }
-
-        $this->data['commentcount'] = $commentcount;
-
-        return $this->data['commentcount'];
-    }
-
-    /**
-     * Returns a URI pointing to the HTML page where comments can be made on this entry
-     *
-     * @return string
-     */
-    public function getCommentLink()
-    {
-        if (array_key_exists('commentlink', $this->data)) {
-            return $this->data['commentlink'];
-        }
-
-        $commentlink = $this->getExtension('Atom')->getCommentLink();
-
-        $this->data['commentlink'] = $commentlink;
-
-        return $this->data['commentlink'];
-    }
-
-    /**
-     * Returns a URI pointing to a feed of all comments for this entry
-     *
-     * @return string
-     */
-    public function getCommentFeedLink()
-    {
-        if (array_key_exists('commentfeedlink', $this->data)) {
-            return $this->data['commentfeedlink'];
-        }
-
-        $commentfeedlink = $this->getExtension('Atom')->getCommentFeedLink();
-
-        $this->data['commentfeedlink'] = $commentfeedlink;
-
-        return $this->data['commentfeedlink'];
-    }
-
-    /**
-     * Get category data as a Reader\Reader_Collection_Category object
-     *
-     * @return Reader\Collection\Category
-     */
-    public function getCategories()
-    {
-        if (array_key_exists('categories', $this->data)) {
-            return $this->data['categories'];
-        }
-
-        $categoryCollection = $this->getExtension('Atom')->getCategories();
-
-        if (count($categoryCollection) == 0) {
-            $categoryCollection = $this->getExtension('DublinCore')->getCategories();
-        }
-
-        $this->data['categories'] = $categoryCollection;
-
-        return $this->data['categories'];
-    }
-
-    /**
-     * Get source feed metadata from the entry
-     *
-     * @return Reader\Feed\Atom\Source|null
-     */
-    public function getSource()
-    {
-        if (array_key_exists('source', $this->data)) {
-            return $this->data['source'];
-        }
-
-        $source = $this->getExtension('Atom')->getSource();
-
-        $this->data['source'] = $source;
-
-        return $this->data['source'];
-    }
-
-    /**
-     * Set the XPath query (incl. on all Extensions)
-     *
-     * @param DOMXPath $xpath
-     * @return void
-     */
-    public function setXpath(DOMXPath $xpath)
-    {
-        parent::setXpath($xpath);
-        foreach ($this->extensions as $extension) {
-            $extension->setXpath($this->xpath);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Entry/EntryInterface.php b/vendor/zendframework/zend-feed/src/Reader/Entry/EntryInterface.php
deleted file mode 100644
index c5e5fb2..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Entry/EntryInterface.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Entry;
-
-use Zend\Feed\Reader\Collection\Category;
-
-interface EntryInterface
-{
-    /**
-     * Get the specified author
-     *
-     * @param  int $index
-     * @return string|null
-     */
-    public function getAuthor($index = 0);
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return array
-     */
-    public function getAuthors();
-
-    /**
-     * Get the entry content
-     *
-     * @return string
-     */
-    public function getContent();
-
-    /**
-     * Get the entry creation date
-     *
-     * @return string
-     */
-    public function getDateCreated();
-
-    /**
-     * Get the entry modification date
-     *
-     * @return string
-     */
-    public function getDateModified();
-
-    /**
-     * Get the entry description
-     *
-     * @return string
-     */
-    public function getDescription();
-
-    /**
-     * Get the entry enclosure
-     *
-     * @return \stdClass
-     */
-    public function getEnclosure();
-
-    /**
-     * Get the entry ID
-     *
-     * @return string
-     */
-    public function getId();
-
-    /**
-     * Get a specific link
-     *
-     * @param  int $index
-     * @return string
-     */
-    public function getLink($index = 0);
-
-    /**
-     * Get all links
-     *
-     * @return array
-     */
-    public function getLinks();
-
-    /**
-     * Get a permalink to the entry
-     *
-     * @return string
-     */
-    public function getPermalink();
-
-    /**
-     * Get the entry title
-     *
-     * @return string
-     */
-    public function getTitle();
-
-    /**
-     * Get the number of comments/replies for current entry
-     *
-     * @return int
-     */
-    public function getCommentCount();
-
-    /**
-     * Returns a URI pointing to the HTML page where comments can be made on this entry
-     *
-     * @return string
-     */
-    public function getCommentLink();
-
-    /**
-     * Returns a URI pointing to a feed of all comments for this entry
-     *
-     * @return string
-     */
-    public function getCommentFeedLink();
-
-    /**
-     * Get all categories
-     *
-     * @return Category
-     */
-    public function getCategories();
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Entry/Rss.php b/vendor/zendframework/zend-feed/src/Reader/Entry/Rss.php
deleted file mode 100644
index b55fdad..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Entry/Rss.php
+++ /dev/null
@@ -1,595 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Entry;
-
-use DateTime;
-use DOMElement;
-use DOMXPath;
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Exception;
-
-class Rss extends AbstractEntry implements EntryInterface
-{
-    /**
-     * XPath query for RDF
-     *
-     * @var string
-     */
-    protected $xpathQueryRdf = '';
-
-    /**
-     * XPath query for RSS
-     *
-     * @var string
-     */
-    protected $xpathQueryRss = '';
-
-    /**
-     * Constructor
-     *
-     * @param  DOMElement $entry
-     * @param  string $entryKey
-     * @param  string $type
-     */
-    public function __construct(DOMElement $entry, $entryKey, $type = null)
-    {
-        parent::__construct($entry, $entryKey, $type);
-        $this->xpathQueryRss = '//item[' . ($this->entryKey+1) . ']';
-        $this->xpathQueryRdf = '//rss:item[' . ($this->entryKey+1) . ']';
-
-        $manager    = Reader\Reader::getExtensionManager();
-        $extensions = [
-            'DublinCore\Entry',
-            'Content\Entry',
-            'Atom\Entry',
-            'WellFormedWeb\Entry',
-            'Slash\Entry',
-            'Thread\Entry',
-        ];
-        foreach ($extensions as $name) {
-            $extension = $manager->get($name);
-            $extension->setEntryElement($entry);
-            $extension->setEntryKey($entryKey);
-            $extension->setType($type);
-            $this->extensions[$name] = $extension;
-        }
-    }
-
-    /**
-     * Get an author entry
-     *
-     * @param int $index
-     * @return string
-     */
-    public function getAuthor($index = 0)
-    {
-        $authors = $this->getAuthors();
-
-        if (isset($authors[$index])) {
-            return $authors[$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return array
-     */
-    public function getAuthors()
-    {
-        if (array_key_exists('authors', $this->data)) {
-            return $this->data['authors'];
-        }
-
-        $authors = [];
-        $authorsDc = $this->getExtension('DublinCore')->getAuthors();
-        if (!empty($authorsDc)) {
-            foreach ($authorsDc as $author) {
-                $authors[] = [
-                    'name' => $author['name']
-                ];
-            }
-        }
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10
-        && $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $list = $this->xpath->query($this->xpathQueryRss . '//author');
-        } else {
-            $list = $this->xpath->query($this->xpathQueryRdf . '//rss:author');
-        }
-        if ($list->length) {
-            foreach ($list as $author) {
-                $string = trim($author->nodeValue);
-                $data = [];
-                // Pretty rough parsing - but it's a catchall
-                if (preg_match("/^.*@[^ ]*/", $string, $matches)) {
-                    $data['email'] = trim($matches[0]);
-                    if (preg_match("/\((.*)\)$/", $string, $matches)) {
-                        $data['name'] = $matches[1];
-                    }
-                    $authors[] = $data;
-                }
-            }
-        }
-
-        if (count($authors) == 0) {
-            $authors = $this->getExtension('Atom')->getAuthors();
-        } else {
-            $authors = new Reader\Collection\Author(
-                Reader\Reader::arrayUnique($authors)
-            );
-        }
-
-        if (count($authors) == 0) {
-            $authors = null;
-        }
-
-        $this->data['authors'] = $authors;
-
-        return $this->data['authors'];
-    }
-
-    /**
-     * Get the entry content
-     *
-     * @return string
-     */
-    public function getContent()
-    {
-        if (array_key_exists('content', $this->data)) {
-            return $this->data['content'];
-        }
-
-        $content = $this->getExtension('Content')->getContent();
-
-        if (!$content) {
-            $content = $this->getDescription();
-        }
-
-        if (empty($content)) {
-            $content = $this->getExtension('Atom')->getContent();
-        }
-
-        $this->data['content'] = $content;
-
-        return $this->data['content'];
-    }
-
-    /**
-     * Get the entry's date of creation
-     *
-     * @return string
-     */
-    public function getDateCreated()
-    {
-        return $this->getDateModified();
-    }
-
-    /**
-     * Get the entry's date of modification
-     *
-     * @throws Exception\RuntimeException
-     * @return string
-     */
-    public function getDateModified()
-    {
-        if (array_key_exists('datemodified', $this->data)) {
-            return $this->data['datemodified'];
-        }
-
-        $date = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10
-            && $this->getType() !== Reader\Reader::TYPE_RSS_090
-        ) {
-            $dateModified = $this->xpath->evaluate('string(' . $this->xpathQueryRss . '/pubDate)');
-            if ($dateModified) {
-                $dateModifiedParsed = strtotime($dateModified);
-                if ($dateModifiedParsed) {
-                    $date = new DateTime('@' . $dateModifiedParsed);
-                } else {
-                    $dateStandards = [DateTime::RSS, DateTime::RFC822,
-                                           DateTime::RFC2822, null];
-                    foreach ($dateStandards as $standard) {
-                        try {
-                            $date = date_create_from_format($standard, $dateModified);
-                            break;
-                        } catch (\Exception $e) {
-                            if ($standard === null) {
-                                throw new Exception\RuntimeException(
-                                    'Could not load date due to unrecognised'
-                                    .' format (should follow RFC 822 or 2822):'
-                                    . $e->getMessage(),
-                                    0, $e
-                                );
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        if (!$date) {
-            $date = $this->getExtension('DublinCore')->getDate();
-        }
-
-        if (!$date) {
-            $date = $this->getExtension('Atom')->getDateModified();
-        }
-
-        if (!$date) {
-            $date = null;
-        }
-
-        $this->data['datemodified'] = $date;
-
-        return $this->data['datemodified'];
-    }
-
-    /**
-     * Get the entry description
-     *
-     * @return string
-     */
-    public function getDescription()
-    {
-        if (array_key_exists('description', $this->data)) {
-            return $this->data['description'];
-        }
-
-        $description = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10
-            && $this->getType() !== Reader\Reader::TYPE_RSS_090
-        ) {
-            $description = $this->xpath->evaluate('string(' . $this->xpathQueryRss . '/description)');
-        } else {
-            $description = $this->xpath->evaluate('string(' . $this->xpathQueryRdf . '/rss:description)');
-        }
-
-        if (!$description) {
-            $description = $this->getExtension('DublinCore')->getDescription();
-        }
-
-        if (empty($description)) {
-            $description = $this->getExtension('Atom')->getDescription();
-        }
-
-        if (!$description) {
-            $description = null;
-        }
-
-        $this->data['description'] = $description;
-
-        return $this->data['description'];
-    }
-
-    /**
-     * Get the entry enclosure
-     * @return string
-     */
-    public function getEnclosure()
-    {
-        if (array_key_exists('enclosure', $this->data)) {
-            return $this->data['enclosure'];
-        }
-
-        $enclosure = null;
-
-        if ($this->getType() == Reader\Reader::TYPE_RSS_20) {
-            $nodeList = $this->xpath->query($this->xpathQueryRss . '/enclosure');
-
-            if ($nodeList->length > 0) {
-                $enclosure = new \stdClass();
-                $enclosure->url    = $nodeList->item(0)->getAttribute('url');
-                $enclosure->length = $nodeList->item(0)->getAttribute('length');
-                $enclosure->type   = $nodeList->item(0)->getAttribute('type');
-            }
-        }
-
-        if (!$enclosure) {
-            $enclosure = $this->getExtension('Atom')->getEnclosure();
-        }
-
-        $this->data['enclosure'] = $enclosure;
-
-        return $this->data['enclosure'];
-    }
-
-    /**
-     * Get the entry ID
-     *
-     * @return string
-     */
-    public function getId()
-    {
-        if (array_key_exists('id', $this->data)) {
-            return $this->data['id'];
-        }
-
-        $id = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10
-            && $this->getType() !== Reader\Reader::TYPE_RSS_090
-        ) {
-            $id = $this->xpath->evaluate('string(' . $this->xpathQueryRss . '/guid)');
-        }
-
-        if (!$id) {
-            $id = $this->getExtension('DublinCore')->getId();
-        }
-
-        if (empty($id)) {
-            $id = $this->getExtension('Atom')->getId();
-        }
-
-        if (!$id) {
-            if ($this->getPermalink()) {
-                $id = $this->getPermalink();
-            } elseif ($this->getTitle()) {
-                $id = $this->getTitle();
-            } else {
-                $id = null;
-            }
-        }
-
-        $this->data['id'] = $id;
-
-        return $this->data['id'];
-    }
-
-    /**
-     * Get a specific link
-     *
-     * @param  int $index
-     * @return string
-     */
-    public function getLink($index = 0)
-    {
-        if (!array_key_exists('links', $this->data)) {
-            $this->getLinks();
-        }
-
-        if (isset($this->data['links'][$index])) {
-            return $this->data['links'][$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get all links
-     *
-     * @return array
-     */
-    public function getLinks()
-    {
-        if (array_key_exists('links', $this->data)) {
-            return $this->data['links'];
-        }
-
-        $links = [];
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $list = $this->xpath->query($this->xpathQueryRss . '//link');
-        } else {
-            $list = $this->xpath->query($this->xpathQueryRdf . '//rss:link');
-        }
-
-        if (!$list->length) {
-            $links = $this->getExtension('Atom')->getLinks();
-        } else {
-            foreach ($list as $link) {
-                $links[] = $link->nodeValue;
-            }
-        }
-
-        $this->data['links'] = $links;
-
-        return $this->data['links'];
-    }
-
-    /**
-     * Get all categories
-     *
-     * @return Reader\Collection\Category
-     */
-    public function getCategories()
-    {
-        if (array_key_exists('categories', $this->data)) {
-            return $this->data['categories'];
-        }
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $list = $this->xpath->query($this->xpathQueryRss . '//category');
-        } else {
-            $list = $this->xpath->query($this->xpathQueryRdf . '//rss:category');
-        }
-
-        if ($list->length) {
-            $categoryCollection = new Reader\Collection\Category;
-            foreach ($list as $category) {
-                $categoryCollection[] = [
-                    'term' => $category->nodeValue,
-                    'scheme' => $category->getAttribute('domain'),
-                    'label' => $category->nodeValue,
-                ];
-            }
-        } else {
-            $categoryCollection = $this->getExtension('DublinCore')->getCategories();
-        }
-
-        if (count($categoryCollection) == 0) {
-            $categoryCollection = $this->getExtension('Atom')->getCategories();
-        }
-
-        $this->data['categories'] = $categoryCollection;
-
-        return $this->data['categories'];
-    }
-
-    /**
-     * Get a permalink to the entry
-     *
-     * @return string
-     */
-    public function getPermalink()
-    {
-        return $this->getLink(0);
-    }
-
-    /**
-     * Get the entry title
-     *
-     * @return string
-     */
-    public function getTitle()
-    {
-        if (array_key_exists('title', $this->data)) {
-            return $this->data['title'];
-        }
-
-        $title = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10
-            && $this->getType() !== Reader\Reader::TYPE_RSS_090
-        ) {
-            $title = $this->xpath->evaluate('string(' . $this->xpathQueryRss . '/title)');
-        } else {
-            $title = $this->xpath->evaluate('string(' . $this->xpathQueryRdf . '/rss:title)');
-        }
-
-        if (!$title) {
-            $title = $this->getExtension('DublinCore')->getTitle();
-        }
-
-        if (!$title) {
-            $title = $this->getExtension('Atom')->getTitle();
-        }
-
-        if (!$title) {
-            $title = null;
-        }
-
-        $this->data['title'] = $title;
-
-        return $this->data['title'];
-    }
-
-    /**
-     * Get the number of comments/replies for current entry
-     *
-     * @return string|null
-     */
-    public function getCommentCount()
-    {
-        if (array_key_exists('commentcount', $this->data)) {
-            return $this->data['commentcount'];
-        }
-
-        $commentcount = $this->getExtension('Slash')->getCommentCount();
-
-        if (!$commentcount) {
-            $commentcount = $this->getExtension('Thread')->getCommentCount();
-        }
-
-        if (!$commentcount) {
-            $commentcount = $this->getExtension('Atom')->getCommentCount();
-        }
-
-        if (!$commentcount) {
-            $commentcount = null;
-        }
-
-        $this->data['commentcount'] = $commentcount;
-
-        return $this->data['commentcount'];
-    }
-
-    /**
-     * Returns a URI pointing to the HTML page where comments can be made on this entry
-     *
-     * @return string
-     */
-    public function getCommentLink()
-    {
-        if (array_key_exists('commentlink', $this->data)) {
-            return $this->data['commentlink'];
-        }
-
-        $commentlink = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10
-            && $this->getType() !== Reader\Reader::TYPE_RSS_090
-        ) {
-            $commentlink = $this->xpath->evaluate('string(' . $this->xpathQueryRss . '/comments)');
-        }
-
-        if (!$commentlink) {
-            $commentlink = $this->getExtension('Atom')->getCommentLink();
-        }
-
-        if (!$commentlink) {
-            $commentlink = null;
-        }
-
-        $this->data['commentlink'] = $commentlink;
-
-        return $this->data['commentlink'];
-    }
-
-    /**
-     * Returns a URI pointing to a feed of all comments for this entry
-     *
-     * @return string
-     */
-    public function getCommentFeedLink()
-    {
-        if (array_key_exists('commentfeedlink', $this->data)) {
-            return $this->data['commentfeedlink'];
-        }
-
-        $commentfeedlink = $this->getExtension('WellFormedWeb')->getCommentFeedLink();
-
-        if (!$commentfeedlink) {
-            $commentfeedlink = $this->getExtension('Atom')->getCommentFeedLink('rss');
-        }
-
-        if (!$commentfeedlink) {
-            $commentfeedlink = $this->getExtension('Atom')->getCommentFeedLink('rdf');
-        }
-
-        if (!$commentfeedlink) {
-            $commentfeedlink = null;
-        }
-
-        $this->data['commentfeedlink'] = $commentfeedlink;
-
-        return $this->data['commentfeedlink'];
-    }
-
-    /**
-     * Set the XPath query (incl. on all Extensions)
-     *
-     * @param DOMXPath $xpath
-     * @return void
-     */
-    public function setXpath(DOMXPath $xpath)
-    {
-        parent::setXpath($xpath);
-        foreach ($this->extensions as $extension) {
-            $extension->setXpath($this->xpath);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Exception/BadMethodCallException.php b/vendor/zendframework/zend-feed/src/Reader/Exception/BadMethodCallException.php
deleted file mode 100644
index 008c57e..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Exception/BadMethodCallException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Exception;
-
-use Zend\Feed\Exception;
-
-class BadMethodCallException extends Exception\BadMethodCallException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Exception/ExceptionInterface.php b/vendor/zendframework/zend-feed/src/Reader/Exception/ExceptionInterface.php
deleted file mode 100644
index e5e664a..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Exception;
-
-use Zend\Feed\Exception\ExceptionInterface as Exception;
-
-interface ExceptionInterface extends Exception
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Exception/InvalidArgumentException.php b/vendor/zendframework/zend-feed/src/Reader/Exception/InvalidArgumentException.php
deleted file mode 100644
index 646b767..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Exception;
-
-use Zend\Feed\Exception;
-
-class InvalidArgumentException extends Exception\InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Exception/RuntimeException.php b/vendor/zendframework/zend-feed/src/Reader/Exception/RuntimeException.php
deleted file mode 100644
index d876e7f..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Exception/RuntimeException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Exception;
-
-use Zend\Feed\Exception;
-
-class RuntimeException extends Exception\RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/AbstractEntry.php b/vendor/zendframework/zend-feed/src/Reader/Extension/AbstractEntry.php
deleted file mode 100644
index c589146..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/AbstractEntry.php
+++ /dev/null
@@ -1,233 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension;
-
-use DOMDocument;
-use DOMElement;
-use DOMXPath;
-use Zend\Feed\Reader;
-
-abstract class AbstractEntry
-{
-    /**
-     * Feed entry data
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * DOM document object
-     *
-     * @var DOMDocument
-     */
-    protected $domDocument = null;
-
-    /**
-     * Entry instance
-     *
-     * @var DOMElement
-     */
-    protected $entry = null;
-
-    /**
-     * Pointer to the current entry
-     *
-     * @var int
-     */
-    protected $entryKey = 0;
-
-    /**
-     * XPath object
-     *
-     * @var DOMXPath
-     */
-    protected $xpath = null;
-
-    /**
-     * XPath query
-     *
-     * @var string
-     */
-    protected $xpathPrefix = '';
-
-    /**
-     * Set the entry DOMElement
-     *
-     * Has side effect of setting the DOMDocument for the entry.
-     *
-     * @param  DOMElement $entry
-     * @return AbstractEntry
-     */
-    public function setEntryElement(DOMElement $entry)
-    {
-        $this->entry = $entry;
-        $this->domDocument = $entry->ownerDocument;
-        return $this;
-    }
-
-    /**
-     * Get the entry DOMElement
-     *
-     * @return DOMElement
-     */
-    public function getEntryElement()
-    {
-        return $this->entry;
-    }
-
-    /**
-     * Set the entry key
-     *
-     * @param  string $entryKey
-     * @return AbstractEntry
-     */
-    public function setEntryKey($entryKey)
-    {
-        $this->entryKey = $entryKey;
-        return $this;
-    }
-
-    /**
-     * Get the DOM
-     *
-     * @return DOMDocument
-     */
-    public function getDomDocument()
-    {
-        return $this->domDocument;
-    }
-
-    /**
-     * Get the Entry's encoding
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        $assumed = $this->getDomDocument()->encoding;
-        return $assumed;
-    }
-
-    /**
-     * Set the entry type
-     *
-     * Has side effect of setting xpath prefix
-     *
-     * @param  string $type
-     * @return AbstractEntry
-     */
-    public function setType($type)
-    {
-        if (null === $type) {
-            $this->data['type'] = null;
-            return $this;
-        }
-
-        $this->data['type'] = $type;
-        if ($type === Reader\Reader::TYPE_RSS_10
-            || $type === Reader\Reader::TYPE_RSS_090
-        ) {
-            $this->setXpathPrefix('//rss:item[' . ($this->entryKey + 1) . ']');
-            return $this;
-        }
-
-        if ($type === Reader\Reader::TYPE_ATOM_10
-            || $type === Reader\Reader::TYPE_ATOM_03
-        ) {
-            $this->setXpathPrefix('//atom:entry[' . ($this->entryKey + 1) . ']');
-            return $this;
-        }
-
-        $this->setXpathPrefix('//item[' . ($this->entryKey + 1) . ']');
-        return $this;
-    }
-
-    /**
-     * Get the entry type
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        $type = $this->data['type'];
-        if ($type === null) {
-            $type = Reader\Reader::detectType($this->getEntryElement(), true);
-            $this->setType($type);
-        }
-
-        return $type;
-    }
-
-    /**
-     * Set the XPath query
-     *
-     * @param  DOMXPath $xpath
-     * @return AbstractEntry
-     */
-    public function setXpath(DOMXPath $xpath)
-    {
-        $this->xpath = $xpath;
-        $this->registerNamespaces();
-        return $this;
-    }
-
-    /**
-     * Get the XPath query object
-     *
-     * @return DOMXPath
-     */
-    public function getXpath()
-    {
-        if (!$this->xpath) {
-            $this->setXpath(new DOMXPath($this->getDomDocument()));
-        }
-        return $this->xpath;
-    }
-
-    /**
-     * Serialize the entry to an array
-     *
-     * @return array
-     */
-    public function toArray()
-    {
-        return $this->data;
-    }
-
-    /**
-     * Get the XPath prefix
-     *
-     * @return string
-     */
-    public function getXpathPrefix()
-    {
-        return $this->xpathPrefix;
-    }
-
-    /**
-     * Set the XPath prefix
-     *
-     * @param  string $prefix
-     * @return AbstractEntry
-     */
-    public function setXpathPrefix($prefix)
-    {
-        $this->xpathPrefix = $prefix;
-        return $this;
-    }
-
-    /**
-     * Register XML namespaces
-     *
-     * @return void
-     */
-    abstract protected function registerNamespaces();
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/AbstractFeed.php b/vendor/zendframework/zend-feed/src/Reader/Extension/AbstractFeed.php
deleted file mode 100644
index d61414a..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/AbstractFeed.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension;
-
-use DOMDocument;
-use DOMXPath;
-use Zend\Feed\Reader;
-
-abstract class AbstractFeed
-{
-    /**
-     * Parsed feed data
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * Parsed feed data in the shape of a DOMDocument
-     *
-     * @var DOMDocument
-     */
-    protected $domDocument = null;
-
-    /**
-     * The base XPath query used to retrieve feed data
-     *
-     * @var DOMXPath
-     */
-    protected $xpath = null;
-
-    /**
-     * The XPath prefix
-     *
-     * @var string
-     */
-    protected $xpathPrefix = '';
-
-    /**
-     * Set the DOM document
-     *
-     * @param  DOMDocument $dom
-     * @return AbstractFeed
-     */
-    public function setDomDocument(DOMDocument $dom)
-    {
-        $this->domDocument = $dom;
-        return $this;
-    }
-
-    /**
-     * Get the DOM
-     *
-     * @return DOMDocument
-     */
-    public function getDomDocument()
-    {
-        return $this->domDocument;
-    }
-
-    /**
-     * Get the Feed's encoding
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        $assumed = $this->getDomDocument()->encoding;
-        return $assumed;
-    }
-
-    /**
-     * Set the feed type
-     *
-     * @param  string $type
-     * @return AbstractFeed
-     */
-    public function setType($type)
-    {
-        $this->data['type'] = $type;
-        return $this;
-    }
-
-    /**
-     * Get the feed type
-     *
-     * If null, it will attempt to autodetect the type.
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        $type = $this->data['type'];
-        if (null === $type) {
-            $type = Reader\Reader::detectType($this->getDomDocument());
-            $this->setType($type);
-        }
-        return $type;
-    }
-
-    /**
-     * Return the feed as an array
-     *
-     * @return array
-     */
-    public function toArray() // untested
-    {
-        return $this->data;
-    }
-
-    /**
-     * Set the XPath query
-     *
-     * @param  DOMXPath $xpath
-     * @return AbstractEntry
-     */
-    public function setXpath(DOMXPath $xpath = null)
-    {
-        if (null === $xpath) {
-            $this->xpath = null;
-            return $this;
-        }
-
-        $this->xpath = $xpath;
-        $this->registerNamespaces();
-        return $this;
-    }
-
-    /**
-     * Get the DOMXPath object
-     *
-     * @return string
-     */
-    public function getXpath()
-    {
-        if (null === $this->xpath) {
-            $this->setXpath(new DOMXPath($this->getDomDocument()));
-        }
-
-        return $this->xpath;
-    }
-
-    /**
-     * Get the XPath prefix
-     *
-     * @return string
-     */
-    public function getXpathPrefix()
-    {
-        return $this->xpathPrefix;
-    }
-
-    /**
-     * Set the XPath prefix
-     *
-     * @param string $prefix
-     * @return void
-     */
-    public function setXpathPrefix($prefix)
-    {
-        $this->xpathPrefix = $prefix;
-    }
-
-    /**
-     * Register the default namespaces for the current feed format
-     */
-    abstract protected function registerNamespaces();
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/Atom/Entry.php b/vendor/zendframework/zend-feed/src/Reader/Extension/Atom/Entry.php
deleted file mode 100644
index 9d06ad3..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/Atom/Entry.php
+++ /dev/null
@@ -1,634 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\Atom;
-
-use DateTime;
-use DOMDocument;
-use DOMElement;
-use stdClass;
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Collection;
-use Zend\Feed\Reader\Extension;
-use Zend\Feed\Uri;
-
-class Entry extends Extension\AbstractEntry
-{
-    /**
-     * Get the specified author
-     *
-     * @param  int $index
-     * @return string|null
-     */
-    public function getAuthor($index = 0)
-    {
-        $authors = $this->getAuthors();
-
-        if (isset($authors[$index])) {
-            return $authors[$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return Collection\Author
-     */
-    public function getAuthors()
-    {
-        if (array_key_exists('authors', $this->data)) {
-            return $this->data['authors'];
-        }
-
-        $authors = [];
-        $list = $this->getXpath()->query($this->getXpathPrefix() . '//atom:author');
-
-        if (!$list->length) {
-            /**
-             * TODO: Limit query to feed level els only!
-             */
-            $list = $this->getXpath()->query('//atom:author');
-        }
-
-        if ($list->length) {
-            foreach ($list as $author) {
-                $author = $this->getAuthorFromElement($author);
-                if (!empty($author)) {
-                    $authors[] = $author;
-                }
-            }
-        }
-
-        if (count($authors) == 0) {
-            $authors = new Collection\Author();
-        } else {
-            $authors = new Collection\Author(
-                Reader\Reader::arrayUnique($authors)
-            );
-        }
-
-        $this->data['authors'] = $authors;
-        return $this->data['authors'];
-    }
-
-    /**
-     * Get the entry content
-     *
-     * @return string
-     */
-    public function getContent()
-    {
-        if (array_key_exists('content', $this->data)) {
-            return $this->data['content'];
-        }
-
-        $content = null;
-
-        $el = $this->getXpath()->query($this->getXpathPrefix() . '/atom:content');
-        if ($el->length > 0) {
-            $el = $el->item(0);
-            $type = $el->getAttribute('type');
-            switch ($type) {
-                case '':
-                case 'text':
-                case 'text/plain':
-                case 'html':
-                case 'text/html':
-                    $content = $el->nodeValue;
-                    break;
-                case 'xhtml':
-                    $this->getXpath()->registerNamespace('xhtml', 'http://www.w3.org/1999/xhtml');
-                    $xhtml = $this->getXpath()->query(
-                        $this->getXpathPrefix() . '/atom:content/xhtml:div'
-                    )->item(0);
-                    $d = new DOMDocument('1.0', $this->getEncoding());
-                    $deep = version_compare(PHP_VERSION, '7', 'ge') ? 1 : true;
-                    $xhtmls = $d->importNode($xhtml, $deep);
-                    $d->appendChild($xhtmls);
-                    $content = $this->collectXhtml(
-                        $d->saveXML(),
-                        $d->lookupPrefix('http://www.w3.org/1999/xhtml')
-                    );
-                    break;
-            }
-        }
-
-        if (!$content) {
-            $content = $this->getDescription();
-        }
-
-        $this->data['content'] = trim($content);
-
-        return $this->data['content'];
-    }
-
-    /**
-     * Parse out XHTML to remove the namespacing
-     *
-     * @param $xhtml
-     * @param $prefix
-     * @return mixed
-     */
-    protected function collectXhtml($xhtml, $prefix)
-    {
-        if (!empty($prefix)) {
-            $prefix = $prefix . ':';
-        }
-        $matches = [
-            "/<\?xml[^<]*>[^<]*<" . $prefix . "div[^<]*/",
-            "/<\/" . $prefix . "div>\s*$/"
-        ];
-        $xhtml = preg_replace($matches, '', $xhtml);
-        if (!empty($prefix)) {
-            $xhtml = preg_replace("/(<[\/]?)" . $prefix . "([a-zA-Z]+)/", '$1$2', $xhtml);
-        }
-        return $xhtml;
-    }
-
-    /**
-     * Get the entry creation date
-     *
-     * @return string
-     */
-    public function getDateCreated()
-    {
-        if (array_key_exists('datecreated', $this->data)) {
-            return $this->data['datecreated'];
-        }
-
-        $date = null;
-
-        if ($this->getAtomType() === Reader\Reader::TYPE_ATOM_03) {
-            $dateCreated = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:created)');
-        } else {
-            $dateCreated = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:published)');
-        }
-
-        if ($dateCreated) {
-            $date = new DateTime($dateCreated);
-        }
-
-        $this->data['datecreated'] = $date;
-
-        return $this->data['datecreated'];
-    }
-
-    /**
-     * Get the entry modification date
-     *
-     * @return string
-     */
-    public function getDateModified()
-    {
-        if (array_key_exists('datemodified', $this->data)) {
-            return $this->data['datemodified'];
-        }
-
-        $date = null;
-
-        if ($this->getAtomType() === Reader\Reader::TYPE_ATOM_03) {
-            $dateModified = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:modified)');
-        } else {
-            $dateModified = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:updated)');
-        }
-
-        if ($dateModified) {
-            $date = new DateTime($dateModified);
-        }
-
-        $this->data['datemodified'] = $date;
-
-        return $this->data['datemodified'];
-    }
-
-    /**
-     * Get the entry description
-     *
-     * @return string
-     */
-    public function getDescription()
-    {
-        if (array_key_exists('description', $this->data)) {
-            return $this->data['description'];
-        }
-
-        $description = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:summary)');
-
-        if (!$description) {
-            $description = null;
-        }
-
-        $this->data['description'] = $description;
-
-        return $this->data['description'];
-    }
-
-    /**
-     * Get the entry enclosure
-     *
-     * @return string
-     */
-    public function getEnclosure()
-    {
-        if (array_key_exists('enclosure', $this->data)) {
-            return $this->data['enclosure'];
-        }
-
-        $enclosure = null;
-
-        $nodeList = $this->getXpath()->query($this->getXpathPrefix() . '/atom:link[@rel="enclosure"]');
-
-        if ($nodeList->length > 0) {
-            $enclosure         = new stdClass();
-            $enclosure->url    = $nodeList->item(0)->getAttribute('href');
-            $enclosure->length = $nodeList->item(0)->getAttribute('length');
-            $enclosure->type   = $nodeList->item(0)->getAttribute('type');
-        }
-
-        $this->data['enclosure'] = $enclosure;
-
-        return $this->data['enclosure'];
-    }
-
-    /**
-     * Get the entry ID
-     *
-     * @return string
-     */
-    public function getId()
-    {
-        if (array_key_exists('id', $this->data)) {
-            return $this->data['id'];
-        }
-
-        $id = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:id)');
-
-        if (!$id) {
-            if ($this->getPermalink()) {
-                $id = $this->getPermalink();
-            } elseif ($this->getTitle()) {
-                $id = $this->getTitle();
-            } else {
-                $id = null;
-            }
-        }
-
-        $this->data['id'] = $id;
-
-        return $this->data['id'];
-    }
-
-    /**
-     * Get the base URI of the feed (if set).
-     *
-     * @return string|null
-     */
-    public function getBaseUrl()
-    {
-        if (array_key_exists('baseUrl', $this->data)) {
-            return $this->data['baseUrl'];
-        }
-
-        $baseUrl = $this->getXpath()->evaluate(
-            'string('
-            . $this->getXpathPrefix()
-            . '/@xml:base[1]'
-            . ')'
-        );
-
-        if (!$baseUrl) {
-            $baseUrl = $this->getXpath()->evaluate('string(//@xml:base[1])');
-        }
-
-        if (!$baseUrl) {
-            $baseUrl = null;
-        }
-
-        $this->data['baseUrl'] = $baseUrl;
-
-        return $this->data['baseUrl'];
-    }
-
-    /**
-     * Get a specific link
-     *
-     * @param  int $index
-     * @return string
-     */
-    public function getLink($index = 0)
-    {
-        if (!array_key_exists('links', $this->data)) {
-            $this->getLinks();
-        }
-
-        if (isset($this->data['links'][$index])) {
-            return $this->data['links'][$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get all links
-     *
-     * @return array
-     */
-    public function getLinks()
-    {
-        if (array_key_exists('links', $this->data)) {
-            return $this->data['links'];
-        }
-
-        $links = [];
-
-        $list = $this->getXpath()->query(
-            $this->getXpathPrefix() . '//atom:link[@rel="alternate"]/@href' . '|' .
-            $this->getXpathPrefix() . '//atom:link[not(@rel)]/@href'
-        );
-
-        if ($list->length) {
-            foreach ($list as $link) {
-                $links[] = $this->absolutiseUri($link->value);
-            }
-        }
-
-        $this->data['links'] = $links;
-
-        return $this->data['links'];
-    }
-
-    /**
-     * Get a permalink to the entry
-     *
-     * @return string
-     */
-    public function getPermalink()
-    {
-        return $this->getLink(0);
-    }
-
-    /**
-     * Get the entry title
-     *
-     * @return string
-     */
-    public function getTitle()
-    {
-        if (array_key_exists('title', $this->data)) {
-            return $this->data['title'];
-        }
-
-        $title = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:title)');
-
-        if (!$title) {
-            $title = null;
-        }
-
-        $this->data['title'] = $title;
-
-        return $this->data['title'];
-    }
-
-    /**
-     * Get the number of comments/replies for current entry
-     *
-     * @return int
-     */
-    public function getCommentCount()
-    {
-        if (array_key_exists('commentcount', $this->data)) {
-            return $this->data['commentcount'];
-        }
-
-        $count = null;
-
-        $this->getXpath()->registerNamespace('thread10', 'http://purl.org/syndication/thread/1.0');
-        $list = $this->getXpath()->query(
-            $this->getXpathPrefix() . '//atom:link[@rel="replies"]/@thread10:count'
-        );
-
-        if ($list->length) {
-            $count = $list->item(0)->value;
-        }
-
-        $this->data['commentcount'] = $count;
-
-        return $this->data['commentcount'];
-    }
-
-    /**
-     * Returns a URI pointing to the HTML page where comments can be made on this entry
-     *
-     * @return string
-     */
-    public function getCommentLink()
-    {
-        if (array_key_exists('commentlink', $this->data)) {
-            return $this->data['commentlink'];
-        }
-
-        $link = null;
-
-        $list = $this->getXpath()->query(
-            $this->getXpathPrefix() . '//atom:link[@rel="replies" and @type="text/html"]/@href'
-        );
-
-        if ($list->length) {
-            $link = $list->item(0)->value;
-            $link = $this->absolutiseUri($link);
-        }
-
-        $this->data['commentlink'] = $link;
-
-        return $this->data['commentlink'];
-    }
-
-    /**
-     * Returns a URI pointing to a feed of all comments for this entry
-     *
-     * @param string $type
-     * @return string
-     */
-    public function getCommentFeedLink($type = 'atom')
-    {
-        if (array_key_exists('commentfeedlink', $this->data)) {
-            return $this->data['commentfeedlink'];
-        }
-
-        $link = null;
-
-        $list = $this->getXpath()->query(
-            $this->getXpathPrefix() . '//atom:link[@rel="replies" and @type="application/' . $type.'+xml"]/@href'
-        );
-
-        if ($list->length) {
-            $link = $list->item(0)->value;
-            $link = $this->absolutiseUri($link);
-        }
-
-        $this->data['commentfeedlink'] = $link;
-
-        return $this->data['commentfeedlink'];
-    }
-
-    /**
-     * Get all categories
-     *
-     * @return Collection\Category
-     */
-    public function getCategories()
-    {
-        if (array_key_exists('categories', $this->data)) {
-            return $this->data['categories'];
-        }
-
-        if ($this->getAtomType() == Reader\Reader::TYPE_ATOM_10) {
-            $list = $this->getXpath()->query($this->getXpathPrefix() . '//atom:category');
-        } else {
-            /**
-             * Since Atom 0.3 did not support categories, it would have used the
-             * Dublin Core extension. However there is a small possibility Atom 0.3
-             * may have been retrofitted to use Atom 1.0 instead.
-             */
-            $this->getXpath()->registerNamespace('atom10', Reader\Reader::NAMESPACE_ATOM_10);
-            $list = $this->getXpath()->query($this->getXpathPrefix() . '//atom10:category');
-        }
-
-        if ($list->length) {
-            $categoryCollection = new Collection\Category;
-            foreach ($list as $category) {
-                $categoryCollection[] = [
-                    'term' => $category->getAttribute('term'),
-                    'scheme' => $category->getAttribute('scheme'),
-                    'label' => $category->getAttribute('label')
-                ];
-            }
-        } else {
-            return new Collection\Category;
-        }
-
-        $this->data['categories'] = $categoryCollection;
-
-        return $this->data['categories'];
-    }
-
-    /**
-     * Get source feed metadata from the entry
-     *
-     * @return Reader\Feed\Atom\Source|null
-     */
-    public function getSource()
-    {
-        if (array_key_exists('source', $this->data)) {
-            return $this->data['source'];
-        }
-
-        $source = null;
-        // TODO: Investigate why _getAtomType() fails here. Is it even needed?
-        if ($this->getType() == Reader\Reader::TYPE_ATOM_10) {
-            $list = $this->getXpath()->query($this->getXpathPrefix() . '/atom:source[1]');
-            if ($list->length) {
-                $element = $list->item(0);
-                $source = new Reader\Feed\Atom\Source($element, $this->getXpathPrefix());
-            }
-        }
-
-        $this->data['source'] = $source;
-        return $this->data['source'];
-    }
-
-    /**
-     *  Attempt to absolutise the URI, i.e. if a relative URI apply the
-     *  xml:base value as a prefix to turn into an absolute URI.
-     *
-     * @param $link
-     * @return string
-     */
-    protected function absolutiseUri($link)
-    {
-        if (!Uri::factory($link)->isAbsolute()) {
-            if ($this->getBaseUrl() !== null) {
-                $link = $this->getBaseUrl() . $link;
-                if (!Uri::factory($link)->isValid()) {
-                    $link = null;
-                }
-            }
-        }
-        return $link;
-    }
-
-    /**
-     * Get an author entry
-     *
-     * @param DOMElement $element
-     * @return string
-     */
-    protected function getAuthorFromElement(DOMElement $element)
-    {
-        $author = [];
-
-        $emailNode = $element->getElementsByTagName('email');
-        $nameNode  = $element->getElementsByTagName('name');
-        $uriNode   = $element->getElementsByTagName('uri');
-
-        if ($emailNode->length && strlen($emailNode->item(0)->nodeValue) > 0) {
-            $author['email'] = $emailNode->item(0)->nodeValue;
-        }
-
-        if ($nameNode->length && strlen($nameNode->item(0)->nodeValue) > 0) {
-            $author['name'] = $nameNode->item(0)->nodeValue;
-        }
-
-        if ($uriNode->length && strlen($uriNode->item(0)->nodeValue) > 0) {
-            $author['uri'] = $uriNode->item(0)->nodeValue;
-        }
-
-        if (empty($author)) {
-            return;
-        }
-        return $author;
-    }
-
-    /**
-     * Register the default namespaces for the current feed format
-     */
-    protected function registerNamespaces()
-    {
-        switch ($this->getAtomType()) {
-            case Reader\Reader::TYPE_ATOM_03:
-                $this->getXpath()->registerNamespace('atom', Reader\Reader::NAMESPACE_ATOM_03);
-                break;
-            default:
-                $this->getXpath()->registerNamespace('atom', Reader\Reader::NAMESPACE_ATOM_10);
-                break;
-        }
-    }
-
-    /**
-     * Detect the presence of any Atom namespaces in use
-     *
-     * @return string
-     */
-    protected function getAtomType()
-    {
-        $dom = $this->getDomDocument();
-        $prefixAtom03 = $dom->lookupPrefix(Reader\Reader::NAMESPACE_ATOM_03);
-        $prefixAtom10 = $dom->lookupPrefix(Reader\Reader::NAMESPACE_ATOM_10);
-        if ($dom->isDefaultNamespace(Reader\Reader::NAMESPACE_ATOM_03)
-        || !empty($prefixAtom03)) {
-            return Reader\Reader::TYPE_ATOM_03;
-        }
-        if ($dom->isDefaultNamespace(Reader\Reader::NAMESPACE_ATOM_10)
-        || !empty($prefixAtom10)) {
-            return Reader\Reader::TYPE_ATOM_10;
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/Atom/Feed.php b/vendor/zendframework/zend-feed/src/Reader/Extension/Atom/Feed.php
deleted file mode 100644
index dc5a59f..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/Atom/Feed.php
+++ /dev/null
@@ -1,536 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\Atom;
-
-use DateTime;
-use DOMElement;
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Collection;
-use Zend\Feed\Reader\Extension;
-use Zend\Feed\Uri;
-
-class Feed extends Extension\AbstractFeed
-{
-    /**
-     * Get a single author
-     *
-     * @param  int $index
-     * @return string|null
-     */
-    public function getAuthor($index = 0)
-    {
-        $authors = $this->getAuthors();
-
-        if (isset($authors[$index])) {
-            return $authors[$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return Collection\Author
-     */
-    public function getAuthors()
-    {
-        if (array_key_exists('authors', $this->data)) {
-            return $this->data['authors'];
-        }
-
-        $list = $this->xpath->query('//atom:author');
-
-        $authors = [];
-
-        if ($list->length) {
-            foreach ($list as $author) {
-                $author = $this->getAuthorFromElement($author);
-                if (!empty($author)) {
-                    $authors[] = $author;
-                }
-            }
-        }
-
-        if (count($authors) == 0) {
-            $authors = new Collection\Author();
-        } else {
-            $authors = new Collection\Author(
-                Reader\Reader::arrayUnique($authors)
-            );
-        }
-
-        $this->data['authors'] = $authors;
-
-        return $this->data['authors'];
-    }
-
-    /**
-     * Get the copyright entry
-     *
-     * @return string|null
-     */
-    public function getCopyright()
-    {
-        if (array_key_exists('copyright', $this->data)) {
-            return $this->data['copyright'];
-        }
-
-        $copyright = null;
-
-        if ($this->getType() === Reader\Reader::TYPE_ATOM_03) {
-            $copyright = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:copyright)');
-        } else {
-            $copyright = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:rights)');
-        }
-
-        if (!$copyright) {
-            $copyright = null;
-        }
-
-        $this->data['copyright'] = $copyright;
-
-        return $this->data['copyright'];
-    }
-
-    /**
-     * Get the feed creation date
-     *
-     * @return DateTime|null
-     */
-    public function getDateCreated()
-    {
-        if (array_key_exists('datecreated', $this->data)) {
-            return $this->data['datecreated'];
-        }
-
-        $date = null;
-
-        if ($this->getType() === Reader\Reader::TYPE_ATOM_03) {
-            $dateCreated = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:created)');
-        } else {
-            $dateCreated = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:published)');
-        }
-
-        if ($dateCreated) {
-            $date = new DateTime($dateCreated);
-        }
-
-        $this->data['datecreated'] = $date;
-
-        return $this->data['datecreated'];
-    }
-
-    /**
-     * Get the feed modification date
-     *
-     * @return DateTime|null
-     */
-    public function getDateModified()
-    {
-        if (array_key_exists('datemodified', $this->data)) {
-            return $this->data['datemodified'];
-        }
-
-        $date = null;
-
-        if ($this->getType() === Reader\Reader::TYPE_ATOM_03) {
-            $dateModified = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:modified)');
-        } else {
-            $dateModified = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:updated)');
-        }
-
-        if ($dateModified) {
-            $date = new DateTime($dateModified);
-        }
-
-        $this->data['datemodified'] = $date;
-
-        return $this->data['datemodified'];
-    }
-
-    /**
-     * Get the feed description
-     *
-     * @return string|null
-     */
-    public function getDescription()
-    {
-        if (array_key_exists('description', $this->data)) {
-            return $this->data['description'];
-        }
-
-        $description = null;
-
-        if ($this->getType() === Reader\Reader::TYPE_ATOM_03) {
-            $description = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:tagline)');
-        } else {
-            $description = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:subtitle)');
-        }
-
-        if (!$description) {
-            $description = null;
-        }
-
-        $this->data['description'] = $description;
-
-        return $this->data['description'];
-    }
-
-    /**
-     * Get the feed generator entry
-     *
-     * @return string|null
-     */
-    public function getGenerator()
-    {
-        if (array_key_exists('generator', $this->data)) {
-            return $this->data['generator'];
-        }
-        // TODO: Add uri support
-        $generator = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:generator)');
-
-        if (!$generator) {
-            $generator = null;
-        }
-
-        $this->data['generator'] = $generator;
-
-        return $this->data['generator'];
-    }
-
-    /**
-     * Get the feed ID
-     *
-     * @return string|null
-     */
-    public function getId()
-    {
-        if (array_key_exists('id', $this->data)) {
-            return $this->data['id'];
-        }
-
-        $id = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:id)');
-
-        if (!$id) {
-            if ($this->getLink()) {
-                $id = $this->getLink();
-            } elseif ($this->getTitle()) {
-                $id = $this->getTitle();
-            } else {
-                $id = null;
-            }
-        }
-
-        $this->data['id'] = $id;
-
-        return $this->data['id'];
-    }
-
-    /**
-     * Get the feed language
-     *
-     * @return string|null
-     */
-    public function getLanguage()
-    {
-        if (array_key_exists('language', $this->data)) {
-            return $this->data['language'];
-        }
-
-        $language = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:lang)');
-
-        if (!$language) {
-            $language = $this->xpath->evaluate('string(//@xml:lang[1])');
-        }
-
-        if (!$language) {
-            $language = null;
-        }
-
-        $this->data['language'] = $language;
-
-        return $this->data['language'];
-    }
-
-    /**
-     * Get the feed image
-     *
-     * @return array|null
-     */
-    public function getImage()
-    {
-        if (array_key_exists('image', $this->data)) {
-            return $this->data['image'];
-        }
-
-        $imageUrl = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:logo)');
-
-        if (!$imageUrl) {
-            $image = null;
-        } else {
-            $image = ['uri' => $imageUrl];
-        }
-
-        $this->data['image'] = $image;
-
-        return $this->data['image'];
-    }
-
-    /**
-     * Get the base URI of the feed (if set).
-     *
-     * @return string|null
-     */
-    public function getBaseUrl()
-    {
-        if (array_key_exists('baseUrl', $this->data)) {
-            return $this->data['baseUrl'];
-        }
-
-        $baseUrl = $this->xpath->evaluate('string(//@xml:base[1])');
-
-        if (!$baseUrl) {
-            $baseUrl = null;
-        }
-        $this->data['baseUrl'] = $baseUrl;
-
-        return $this->data['baseUrl'];
-    }
-
-    /**
-     * Get a link to the source website
-     *
-     * @return string|null
-     */
-    public function getLink()
-    {
-        if (array_key_exists('link', $this->data)) {
-            return $this->data['link'];
-        }
-
-        $link = null;
-
-        $list = $this->xpath->query(
-            $this->getXpathPrefix() . '/atom:link[@rel="alternate"]/@href' . '|' .
-            $this->getXpathPrefix() . '/atom:link[not(@rel)]/@href'
-        );
-
-        if ($list->length) {
-            $link = $list->item(0)->nodeValue;
-            $link = $this->absolutiseUri($link);
-        }
-
-        $this->data['link'] = $link;
-
-        return $this->data['link'];
-    }
-
-    /**
-     * Get a link to the feed's XML Url
-     *
-     * @return string|null
-     */
-    public function getFeedLink()
-    {
-        if (array_key_exists('feedlink', $this->data)) {
-            return $this->data['feedlink'];
-        }
-
-        $link = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:link[@rel="self"]/@href)');
-
-        $link = $this->absolutiseUri($link);
-
-        $this->data['feedlink'] = $link;
-
-        return $this->data['feedlink'];
-    }
-
-    /**
-     * Get an array of any supported Pusubhubbub endpoints
-     *
-     * @return array|null
-     */
-    public function getHubs()
-    {
-        if (array_key_exists('hubs', $this->data)) {
-            return $this->data['hubs'];
-        }
-        $hubs = [];
-
-        $list = $this->xpath->query($this->getXpathPrefix()
-            . '//atom:link[@rel="hub"]/@href');
-
-        if ($list->length) {
-            foreach ($list as $uri) {
-                $hubs[] = $this->absolutiseUri($uri->nodeValue);
-            }
-        } else {
-            $hubs = null;
-        }
-
-        $this->data['hubs'] = $hubs;
-
-        return $this->data['hubs'];
-    }
-
-    /**
-     * Get the feed title
-     *
-     * @return string|null
-     */
-    public function getTitle()
-    {
-        if (array_key_exists('title', $this->data)) {
-            return $this->data['title'];
-        }
-
-        $title = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:title)');
-
-        if (!$title) {
-            $title = null;
-        }
-
-        $this->data['title'] = $title;
-
-        return $this->data['title'];
-    }
-
-    /**
-     * Get all categories
-     *
-     * @return Collection\Category
-     */
-    public function getCategories()
-    {
-        if (array_key_exists('categories', $this->data)) {
-            return $this->data['categories'];
-        }
-
-        if ($this->getType() == Reader\Reader::TYPE_ATOM_10) {
-            $list = $this->xpath->query($this->getXpathPrefix() . '/atom:category');
-        } else {
-            /**
-             * Since Atom 0.3 did not support categories, it would have used the
-             * Dublin Core extension. However there is a small possibility Atom 0.3
-             * may have been retrofittied to use Atom 1.0 instead.
-             */
-            $this->xpath->registerNamespace('atom10', Reader\Reader::NAMESPACE_ATOM_10);
-            $list = $this->xpath->query($this->getXpathPrefix() . '/atom10:category');
-        }
-
-        if ($list->length) {
-            $categoryCollection = new Collection\Category;
-            foreach ($list as $category) {
-                $categoryCollection[] = [
-                    'term' => $category->getAttribute('term'),
-                    'scheme' => $category->getAttribute('scheme'),
-                    'label' => $category->getAttribute('label')
-                ];
-            }
-        } else {
-            return new Collection\Category;
-        }
-
-        $this->data['categories'] = $categoryCollection;
-
-        return $this->data['categories'];
-    }
-
-    /**
-     * Get an author entry in RSS format
-     *
-     * @param  DOMElement $element
-     * @return string
-     */
-    protected function getAuthorFromElement(DOMElement $element)
-    {
-        $author = [];
-
-        $emailNode = $element->getElementsByTagName('email');
-        $nameNode  = $element->getElementsByTagName('name');
-        $uriNode   = $element->getElementsByTagName('uri');
-
-        if ($emailNode->length && strlen($emailNode->item(0)->nodeValue) > 0) {
-            $author['email'] = $emailNode->item(0)->nodeValue;
-        }
-
-        if ($nameNode->length && strlen($nameNode->item(0)->nodeValue) > 0) {
-            $author['name'] = $nameNode->item(0)->nodeValue;
-        }
-
-        if ($uriNode->length && strlen($uriNode->item(0)->nodeValue) > 0) {
-            $author['uri'] = $uriNode->item(0)->nodeValue;
-        }
-
-        if (empty($author)) {
-            return;
-        }
-        return $author;
-    }
-
-    /**
-     *  Attempt to absolutise the URI, i.e. if a relative URI apply the
-     *  xml:base value as a prefix to turn into an absolute URI.
-     */
-    protected function absolutiseUri($link)
-    {
-        if (!Uri::factory($link)->isAbsolute()) {
-            if ($this->getBaseUrl() !== null) {
-                $link = $this->getBaseUrl() . $link;
-                if (!Uri::factory($link)->isValid()) {
-                    $link = null;
-                }
-            }
-        }
-        return $link;
-    }
-
-    /**
-     * Register the default namespaces for the current feed format
-     */
-    protected function registerNamespaces()
-    {
-        if ($this->getType() == Reader\Reader::TYPE_ATOM_10
-            || $this->getType() == Reader\Reader::TYPE_ATOM_03
-        ) {
-            return; // pre-registered at Feed level
-        }
-        $atomDetected = $this->getAtomType();
-        switch ($atomDetected) {
-            case Reader\Reader::TYPE_ATOM_03:
-                $this->xpath->registerNamespace('atom', Reader\Reader::NAMESPACE_ATOM_03);
-                break;
-            default:
-                $this->xpath->registerNamespace('atom', Reader\Reader::NAMESPACE_ATOM_10);
-                break;
-        }
-    }
-
-    /**
-     * Detect the presence of any Atom namespaces in use
-     */
-    protected function getAtomType()
-    {
-        $dom = $this->getDomDocument();
-        $prefixAtom03 = $dom->lookupPrefix(Reader\Reader::NAMESPACE_ATOM_03);
-        $prefixAtom10 = $dom->lookupPrefix(Reader\Reader::NAMESPACE_ATOM_10);
-        if ($dom->isDefaultNamespace(Reader\Reader::NAMESPACE_ATOM_10)
-            || !empty($prefixAtom10)
-        ) {
-            return Reader\Reader::TYPE_ATOM_10;
-        }
-        if ($dom->isDefaultNamespace(Reader\Reader::NAMESPACE_ATOM_03)
-            || !empty($prefixAtom03)
-        ) {
-            return Reader\Reader::TYPE_ATOM_03;
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/Content/Entry.php b/vendor/zendframework/zend-feed/src/Reader/Extension/Content/Entry.php
deleted file mode 100644
index 539848f..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/Content/Entry.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\Content;
-
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Extension;
-
-class Entry extends Extension\AbstractEntry
-{
-    public function getContent()
-    {
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10
-            && $this->getType() !== Reader\Reader::TYPE_RSS_090
-        ) {
-            $content = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/content:encoded)');
-        } else {
-            $content = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/content:encoded)');
-        }
-        return $content;
-    }
-
-    /**
-     * Register RSS Content Module namespace
-     */
-    protected function registerNamespaces()
-    {
-        $this->xpath->registerNamespace('content', 'http://purl.org/rss/1.0/modules/content/');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/CreativeCommons/Entry.php b/vendor/zendframework/zend-feed/src/Reader/Extension/CreativeCommons/Entry.php
deleted file mode 100644
index a75a5c4..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/CreativeCommons/Entry.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\CreativeCommons;
-
-use Zend\Feed\Reader\Extension;
-
-class Entry extends Extension\AbstractEntry
-{
-    /**
-     * Get the entry license
-     *
-     * @param int $index
-     * @return string|null
-     */
-    public function getLicense($index = 0)
-    {
-        $licenses = $this->getLicenses();
-
-        if (isset($licenses[$index])) {
-            return $licenses[$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get the entry licenses
-     *
-     * @return array
-     */
-    public function getLicenses()
-    {
-        $name = 'licenses';
-        if (array_key_exists($name, $this->data)) {
-            return $this->data[$name];
-        }
-
-        $licenses = [];
-        $list = $this->xpath->evaluate($this->getXpathPrefix() . '//cc:license');
-
-        if ($list->length) {
-            foreach ($list as $license) {
-                $licenses[] = $license->nodeValue;
-            }
-
-            $licenses = array_unique($licenses);
-        } else {
-            $cc = new Feed();
-            $licenses = $cc->getLicenses();
-        }
-
-        $this->data[$name] = $licenses;
-
-        return $this->data[$name];
-    }
-
-    /**
-     * Register Creative Commons namespaces
-     *
-     */
-    protected function registerNamespaces()
-    {
-        $this->xpath->registerNamespace('cc', 'http://backend.userland.com/creativeCommonsRssModule');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/CreativeCommons/Feed.php b/vendor/zendframework/zend-feed/src/Reader/Extension/CreativeCommons/Feed.php
deleted file mode 100644
index 8532a88..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/CreativeCommons/Feed.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\CreativeCommons;
-
-use Zend\Feed\Reader\Extension;
-
-class Feed extends Extension\AbstractFeed
-{
-    /**
-     * Get the entry license
-     *
-     * @param int $index
-     * @return string|null
-     */
-    public function getLicense($index = 0)
-    {
-        $licenses = $this->getLicenses();
-
-        if (isset($licenses[$index])) {
-            return $licenses[$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get the entry licenses
-     *
-     * @return array
-     */
-    public function getLicenses()
-    {
-        $name = 'licenses';
-        if (array_key_exists($name, $this->data)) {
-            return $this->data[$name];
-        }
-
-        $licenses = [];
-        $list = $this->xpath->evaluate('channel/cc:license');
-
-        if ($list->length) {
-            foreach ($list as $license) {
-                $licenses[] = $license->nodeValue;
-            }
-
-            $licenses = array_unique($licenses);
-        }
-
-        $this->data[$name] = $licenses;
-
-        return $this->data[$name];
-    }
-
-    /**
-     * Register Creative Commons namespaces
-     *
-     * @return void
-     */
-    protected function registerNamespaces()
-    {
-        $this->xpath->registerNamespace('cc', 'http://backend.userland.com/creativeCommonsRssModule');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/DublinCore/Entry.php b/vendor/zendframework/zend-feed/src/Reader/Extension/DublinCore/Entry.php
deleted file mode 100644
index 1b42f58..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/DublinCore/Entry.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\DublinCore;
-
-use DateTime;
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Collection;
-use Zend\Feed\Reader\Extension;
-
-class Entry extends Extension\AbstractEntry
-{
-    /**
-     * Get an author entry
-     *
-     * @param int $index
-     * @return string
-     */
-    public function getAuthor($index = 0)
-    {
-        $authors = $this->getAuthors();
-
-        if (isset($authors[$index])) {
-            return $authors[$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return array
-     */
-    public function getAuthors()
-    {
-        if (array_key_exists('authors', $this->data)) {
-            return $this->data['authors'];
-        }
-
-        $authors = [];
-        $list = $this->getXpath()->evaluate($this->getXpathPrefix() . '//dc11:creator');
-
-        if (!$list->length) {
-            $list = $this->getXpath()->evaluate($this->getXpathPrefix() . '//dc10:creator');
-        }
-        if (!$list->length) {
-            $list = $this->getXpath()->evaluate($this->getXpathPrefix() . '//dc11:publisher');
-
-            if (!$list->length) {
-                $list = $this->getXpath()->evaluate($this->getXpathPrefix() . '//dc10:publisher');
-            }
-        }
-
-        if ($list->length) {
-            foreach ($list as $author) {
-                $authors[] = [
-                    'name' => $author->nodeValue
-                ];
-            }
-            $authors = new Collection\Author(
-                Reader\Reader::arrayUnique($authors)
-            );
-        } else {
-            $authors = null;
-        }
-
-        $this->data['authors'] = $authors;
-
-        return $this->data['authors'];
-    }
-
-    /**
-     * Get categories (subjects under DC)
-     *
-     * @return Collection\Category
-     */
-    public function getCategories()
-    {
-        if (array_key_exists('categories', $this->data)) {
-            return $this->data['categories'];
-        }
-
-        $list = $this->getXpath()->evaluate($this->getXpathPrefix() . '//dc11:subject');
-
-        if (!$list->length) {
-            $list = $this->getXpath()->evaluate($this->getXpathPrefix() . '//dc10:subject');
-        }
-
-        if ($list->length) {
-            $categoryCollection = new Collection\Category;
-            foreach ($list as $category) {
-                $categoryCollection[] = [
-                    'term' => $category->nodeValue,
-                    'scheme' => null,
-                    'label' => $category->nodeValue,
-                ];
-            }
-        } else {
-            $categoryCollection = new Collection\Category;
-        }
-
-        $this->data['categories'] = $categoryCollection;
-        return $this->data['categories'];
-    }
-
-    /**
-     * Get the entry content
-     *
-     * @return string
-     */
-    public function getContent()
-    {
-        return $this->getDescription();
-    }
-
-    /**
-     * Get the entry description
-     *
-     * @return string
-     */
-    public function getDescription()
-    {
-        if (array_key_exists('description', $this->data)) {
-            return $this->data['description'];
-        }
-
-        $description = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc11:description)');
-
-        if (!$description) {
-            $description = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc10:description)');
-        }
-
-        if (!$description) {
-            $description = null;
-        }
-
-        $this->data['description'] = $description;
-
-        return $this->data['description'];
-    }
-
-    /**
-     * Get the entry ID
-     *
-     * @return string
-     */
-    public function getId()
-    {
-        if (array_key_exists('id', $this->data)) {
-            return $this->data['id'];
-        }
-
-        $id = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc11:identifier)');
-
-        if (!$id) {
-            $id = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc10:identifier)');
-        }
-
-        $this->data['id'] = $id;
-
-        return $this->data['id'];
-    }
-
-    /**
-     * Get the entry title
-     *
-     * @return string
-     */
-    public function getTitle()
-    {
-        if (array_key_exists('title', $this->data)) {
-            return $this->data['title'];
-        }
-
-        $title = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc11:title)');
-
-        if (!$title) {
-            $title = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc10:title)');
-        }
-
-        if (!$title) {
-            $title = null;
-        }
-
-        $this->data['title'] = $title;
-
-        return $this->data['title'];
-    }
-
-    /**
-     *
-     *
-     * @return DateTime|null
-     */
-    public function getDate()
-    {
-        if (array_key_exists('date', $this->data)) {
-            return $this->data['date'];
-        }
-
-        $d    = null;
-        $date = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc11:date)');
-
-        if (!$date) {
-            $date = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc10:date)');
-        }
-
-        if ($date) {
-            $d = new DateTime($date);
-        }
-
-        $this->data['date'] = $d;
-
-        return $this->data['date'];
-    }
-
-    /**
-     * Register DC namespaces
-     *
-     * @return void
-     */
-    protected function registerNamespaces()
-    {
-        $this->getXpath()->registerNamespace('dc10', 'http://purl.org/dc/elements/1.0/');
-        $this->getXpath()->registerNamespace('dc11', 'http://purl.org/dc/elements/1.1/');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/DublinCore/Feed.php b/vendor/zendframework/zend-feed/src/Reader/Extension/DublinCore/Feed.php
deleted file mode 100644
index 9e33958..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/DublinCore/Feed.php
+++ /dev/null
@@ -1,276 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\DublinCore;
-
-use DateTime;
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Collection;
-use Zend\Feed\Reader\Extension;
-
-class Feed extends Extension\AbstractFeed
-{
-    /**
-     * Get a single author
-     *
-     * @param  int $index
-     * @return string|null
-     */
-    public function getAuthor($index = 0)
-    {
-        $authors = $this->getAuthors();
-
-        if (isset($authors[$index])) {
-            return $authors[$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return array
-     */
-    public function getAuthors()
-    {
-        if (array_key_exists('authors', $this->data)) {
-            return $this->data['authors'];
-        }
-
-        $authors = [];
-        $list    = $this->getXpath()->query('//dc11:creator');
-
-        if (!$list->length) {
-            $list = $this->getXpath()->query('//dc10:creator');
-        }
-        if (!$list->length) {
-            $list = $this->getXpath()->query('//dc11:publisher');
-
-            if (!$list->length) {
-                $list = $this->getXpath()->query('//dc10:publisher');
-            }
-        }
-
-        if ($list->length) {
-            foreach ($list as $author) {
-                $authors[] = [
-                    'name' => $author->nodeValue
-                ];
-            }
-            $authors = new Collection\Author(
-                Reader\Reader::arrayUnique($authors)
-            );
-        } else {
-            $authors = null;
-        }
-
-        $this->data['authors'] = $authors;
-
-        return $this->data['authors'];
-    }
-
-    /**
-     * Get the copyright entry
-     *
-     * @return string|null
-     */
-    public function getCopyright()
-    {
-        if (array_key_exists('copyright', $this->data)) {
-            return $this->data['copyright'];
-        }
-
-        $copyright = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc11:rights)');
-
-        if (!$copyright) {
-            $copyright = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc10:rights)');
-        }
-
-        if (!$copyright) {
-            $copyright = null;
-        }
-
-        $this->data['copyright'] = $copyright;
-
-        return $this->data['copyright'];
-    }
-
-    /**
-     * Get the feed description
-     *
-     * @return string|null
-     */
-    public function getDescription()
-    {
-        if (array_key_exists('description', $this->data)) {
-            return $this->data['description'];
-        }
-
-        $description = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc11:description)');
-
-        if (!$description) {
-            $description = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc10:description)');
-        }
-
-        if (!$description) {
-            $description = null;
-        }
-
-        $this->data['description'] = $description;
-
-        return $this->data['description'];
-    }
-
-    /**
-     * Get the feed ID
-     *
-     * @return string|null
-     */
-    public function getId()
-    {
-        if (array_key_exists('id', $this->data)) {
-            return $this->data['id'];
-        }
-
-        $id = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc11:identifier)');
-
-        if (!$id) {
-            $id = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc10:identifier)');
-        }
-
-        $this->data['id'] = $id;
-
-        return $this->data['id'];
-    }
-
-    /**
-     * Get the feed language
-     *
-     * @return string|null
-     */
-    public function getLanguage()
-    {
-        if (array_key_exists('language', $this->data)) {
-            return $this->data['language'];
-        }
-
-        $language = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc11:language)');
-
-        if (!$language) {
-            $language = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc10:language)');
-        }
-
-        if (!$language) {
-            $language = null;
-        }
-
-        $this->data['language'] = $language;
-
-        return $this->data['language'];
-    }
-
-    /**
-     * Get the feed title
-     *
-     * @return string|null
-     */
-    public function getTitle()
-    {
-        if (array_key_exists('title', $this->data)) {
-            return $this->data['title'];
-        }
-
-        $title = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc11:title)');
-
-        if (!$title) {
-            $title = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc10:title)');
-        }
-
-        if (!$title) {
-            $title = null;
-        }
-
-        $this->data['title'] = $title;
-
-        return $this->data['title'];
-    }
-
-    /**
-     *
-     *
-     * @return DateTime|null
-     */
-    public function getDate()
-    {
-        if (array_key_exists('date', $this->data)) {
-            return $this->data['date'];
-        }
-
-        $d = null;
-        $date = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc11:date)');
-
-        if (!$date) {
-            $date = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/dc10:date)');
-        }
-
-        if ($date) {
-            $d = new DateTime($date);
-        }
-
-        $this->data['date'] = $d;
-
-        return $this->data['date'];
-    }
-
-    /**
-     * Get categories (subjects under DC)
-     *
-     * @return Collection\Category
-     */
-    public function getCategories()
-    {
-        if (array_key_exists('categories', $this->data)) {
-            return $this->data['categories'];
-        }
-
-        $list = $this->getXpath()->evaluate($this->getXpathPrefix() . '//dc11:subject');
-
-        if (!$list->length) {
-            $list = $this->getXpath()->evaluate($this->getXpathPrefix() . '//dc10:subject');
-        }
-
-        if ($list->length) {
-            $categoryCollection = new Collection\Category;
-            foreach ($list as $category) {
-                $categoryCollection[] = [
-                    'term' => $category->nodeValue,
-                    'scheme' => null,
-                    'label' => $category->nodeValue,
-                ];
-            }
-        } else {
-            $categoryCollection = new Collection\Category;
-        }
-
-        $this->data['categories'] = $categoryCollection;
-        return $this->data['categories'];
-    }
-
-    /**
-     * Register the default namespaces for the current feed format
-     *
-     * @return void
-     */
-    protected function registerNamespaces()
-    {
-        $this->getXpath()->registerNamespace('dc10', 'http://purl.org/dc/elements/1.0/');
-        $this->getXpath()->registerNamespace('dc11', 'http://purl.org/dc/elements/1.1/');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/Podcast/Entry.php b/vendor/zendframework/zend-feed/src/Reader/Extension/Podcast/Entry.php
deleted file mode 100644
index 5aec2fd..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/Podcast/Entry.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\Podcast;
-
-use Zend\Feed\Reader\Extension;
-
-/**
-*/
-class Entry extends Extension\AbstractEntry
-{
-    /**
-     * Get the entry author
-     *
-     * @return string
-     */
-    public function getCastAuthor()
-    {
-        if (isset($this->data['author'])) {
-            return $this->data['author'];
-        }
-
-        $author = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:author)');
-
-        if (!$author) {
-            $author = null;
-        }
-
-        $this->data['author'] = $author;
-
-        return $this->data['author'];
-    }
-
-    /**
-     * Get the entry block
-     *
-     * @return string
-     */
-    public function getBlock()
-    {
-        if (isset($this->data['block'])) {
-            return $this->data['block'];
-        }
-
-        $block = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:block)');
-
-        if (!$block) {
-            $block = null;
-        }
-
-        $this->data['block'] = $block;
-
-        return $this->data['block'];
-    }
-
-    /**
-     * Get the entry duration
-     *
-     * @return string
-     */
-    public function getDuration()
-    {
-        if (isset($this->data['duration'])) {
-            return $this->data['duration'];
-        }
-
-        $duration = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:duration)');
-
-        if (!$duration) {
-            $duration = null;
-        }
-
-        $this->data['duration'] = $duration;
-
-        return $this->data['duration'];
-    }
-
-    /**
-     * Get the entry explicit
-     *
-     * @return string
-     */
-    public function getExplicit()
-    {
-        if (isset($this->data['explicit'])) {
-            return $this->data['explicit'];
-        }
-
-        $explicit = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:explicit)');
-
-        if (!$explicit) {
-            $explicit = null;
-        }
-
-        $this->data['explicit'] = $explicit;
-
-        return $this->data['explicit'];
-    }
-
-    /**
-     * Get the entry keywords
-     *
-     * @return string
-     */
-    public function getKeywords()
-    {
-        if (isset($this->data['keywords'])) {
-            return $this->data['keywords'];
-        }
-
-        $keywords = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:keywords)');
-
-        if (!$keywords) {
-            $keywords = null;
-        }
-
-        $this->data['keywords'] = $keywords;
-
-        return $this->data['keywords'];
-    }
-
-    /**
-     * Get the entry subtitle
-     *
-     * @return string
-     */
-    public function getSubtitle()
-    {
-        if (isset($this->data['subtitle'])) {
-            return $this->data['subtitle'];
-        }
-
-        $subtitle = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:subtitle)');
-
-        if (!$subtitle) {
-            $subtitle = null;
-        }
-
-        $this->data['subtitle'] = $subtitle;
-
-        return $this->data['subtitle'];
-    }
-
-    /**
-     * Get the entry summary
-     *
-     * @return string
-     */
-    public function getSummary()
-    {
-        if (isset($this->data['summary'])) {
-            return $this->data['summary'];
-        }
-
-        $summary = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:summary)');
-
-        if (!$summary) {
-            $summary = null;
-        }
-
-        $this->data['summary'] = $summary;
-
-        return $this->data['summary'];
-    }
-
-    /**
-     * Register iTunes namespace
-     *
-     */
-    protected function registerNamespaces()
-    {
-        $this->xpath->registerNamespace('itunes', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/Podcast/Feed.php b/vendor/zendframework/zend-feed/src/Reader/Extension/Podcast/Feed.php
deleted file mode 100644
index 4ae7bf3..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/Podcast/Feed.php
+++ /dev/null
@@ -1,276 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\Podcast;
-
-use DOMText;
-use Zend\Feed\Reader\Extension;
-
-/**
-*/
-class Feed extends Extension\AbstractFeed
-{
-    /**
-     * Get the entry author
-     *
-     * @return string
-     */
-    public function getCastAuthor()
-    {
-        if (isset($this->data['author'])) {
-            return $this->data['author'];
-        }
-
-        $author = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:author)');
-
-        if (!$author) {
-            $author = null;
-        }
-
-        $this->data['author'] = $author;
-
-        return $this->data['author'];
-    }
-
-    /**
-     * Get the entry block
-     *
-     * @return string
-     */
-    public function getBlock()
-    {
-        if (isset($this->data['block'])) {
-            return $this->data['block'];
-        }
-
-        $block = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:block)');
-
-        if (!$block) {
-            $block = null;
-        }
-
-        $this->data['block'] = $block;
-
-        return $this->data['block'];
-    }
-
-    /**
-     * Get the entry category
-     *
-     * @return array|null
-     */
-    public function getItunesCategories()
-    {
-        if (isset($this->data['categories'])) {
-            return $this->data['categories'];
-        }
-
-        $categoryList = $this->xpath->query($this->getXpathPrefix() . '/itunes:category');
-
-        $categories = [];
-
-        if ($categoryList->length > 0) {
-            foreach ($categoryList as $node) {
-                $children = null;
-
-                if ($node->childNodes->length > 0) {
-                    $children = [];
-
-                    foreach ($node->childNodes as $childNode) {
-                        if (!($childNode instanceof DOMText)) {
-                            $children[$childNode->getAttribute('text')] = null;
-                        }
-                    }
-                }
-
-                $categories[$node->getAttribute('text')] = $children;
-            }
-        }
-
-        if (!$categories) {
-            $categories = null;
-        }
-
-        $this->data['categories'] = $categories;
-
-        return $this->data['categories'];
-    }
-
-    /**
-     * Get the entry explicit
-     *
-     * @return string
-     */
-    public function getExplicit()
-    {
-        if (isset($this->data['explicit'])) {
-            return $this->data['explicit'];
-        }
-
-        $explicit = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:explicit)');
-
-        if (!$explicit) {
-            $explicit = null;
-        }
-
-        $this->data['explicit'] = $explicit;
-
-        return $this->data['explicit'];
-    }
-
-    /**
-     * Get the entry image
-     *
-     * @return string
-     */
-    public function getItunesImage()
-    {
-        if (isset($this->data['image'])) {
-            return $this->data['image'];
-        }
-
-        $image = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:image/@href)');
-
-        if (!$image) {
-            $image = null;
-        }
-
-        $this->data['image'] = $image;
-
-        return $this->data['image'];
-    }
-
-    /**
-     * Get the entry keywords
-     *
-     * @return string
-     */
-    public function getKeywords()
-    {
-        if (isset($this->data['keywords'])) {
-            return $this->data['keywords'];
-        }
-
-        $keywords = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:keywords)');
-
-        if (!$keywords) {
-            $keywords = null;
-        }
-
-        $this->data['keywords'] = $keywords;
-
-        return $this->data['keywords'];
-    }
-
-    /**
-     * Get the entry's new feed url
-     *
-     * @return string
-     */
-    public function getNewFeedUrl()
-    {
-        if (isset($this->data['new-feed-url'])) {
-            return $this->data['new-feed-url'];
-        }
-
-        $newFeedUrl = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:new-feed-url)');
-
-        if (!$newFeedUrl) {
-            $newFeedUrl = null;
-        }
-
-        $this->data['new-feed-url'] = $newFeedUrl;
-
-        return $this->data['new-feed-url'];
-    }
-
-    /**
-     * Get the entry owner
-     *
-     * @return string
-     */
-    public function getOwner()
-    {
-        if (isset($this->data['owner'])) {
-            return $this->data['owner'];
-        }
-
-        $owner = null;
-
-        $email = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:owner/itunes:email)');
-        $name  = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:owner/itunes:name)');
-
-        if (!empty($email)) {
-            $owner = $email . (empty($name) ? '' : ' (' . $name . ')');
-        } elseif (!empty($name)) {
-            $owner = $name;
-        }
-
-        if (!$owner) {
-            $owner = null;
-        }
-
-        $this->data['owner'] = $owner;
-
-        return $this->data['owner'];
-    }
-
-    /**
-     * Get the entry subtitle
-     *
-     * @return string
-     */
-    public function getSubtitle()
-    {
-        if (isset($this->data['subtitle'])) {
-            return $this->data['subtitle'];
-        }
-
-        $subtitle = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:subtitle)');
-
-        if (!$subtitle) {
-            $subtitle = null;
-        }
-
-        $this->data['subtitle'] = $subtitle;
-
-        return $this->data['subtitle'];
-    }
-
-    /**
-     * Get the entry summary
-     *
-     * @return string
-     */
-    public function getSummary()
-    {
-        if (isset($this->data['summary'])) {
-            return $this->data['summary'];
-        }
-
-        $summary = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:summary)');
-
-        if (!$summary) {
-            $summary = null;
-        }
-
-        $this->data['summary'] = $summary;
-
-        return $this->data['summary'];
-    }
-
-    /**
-     * Register iTunes namespace
-     *
-     */
-    protected function registerNamespaces()
-    {
-        $this->xpath->registerNamespace('itunes', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/Slash/Entry.php b/vendor/zendframework/zend-feed/src/Reader/Extension/Slash/Entry.php
deleted file mode 100644
index 4bd01fe..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/Slash/Entry.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\Slash;
-
-use Zend\Feed\Reader\Extension;
-
-/**
-*/
-class Entry extends Extension\AbstractEntry
-{
-    /**
-     * Get the entry section
-     *
-     * @return string|null
-     */
-    public function getSection()
-    {
-        return $this->getData('section');
-    }
-
-    /**
-     * Get the entry department
-     *
-     * @return string|null
-     */
-    public function getDepartment()
-    {
-        return $this->getData('department');
-    }
-
-    /**
-     * Get the entry hit_parade
-     *
-     * @return array
-     */
-    public function getHitParade()
-    {
-        $name = 'hit_parade';
-
-        if (isset($this->data[$name])) {
-            return $this->data[$name];
-        }
-
-        $stringParade = $this->getData($name);
-        $hitParade    = [];
-
-        if (!empty($stringParade)) {
-            $stringParade = explode(',', $stringParade);
-
-            foreach ($stringParade as $hit) {
-                $hitParade[] = $hit + 0; //cast to integer
-            }
-        }
-
-        $this->data[$name] = $hitParade;
-        return $hitParade;
-    }
-
-    /**
-     * Get the entry comments
-     *
-     * @return int
-     */
-    public function getCommentCount()
-    {
-        $name = 'comments';
-
-        if (isset($this->data[$name])) {
-            return $this->data[$name];
-        }
-
-        $comments = $this->getData($name, 'string');
-
-        if (!$comments) {
-            $this->data[$name] = null;
-            return $this->data[$name];
-        }
-
-        return $comments;
-    }
-
-    /**
-     * Get the entry data specified by name
-     * @param string $name
-     * @param string $type
-     *
-     * @return mixed|null
-     */
-    protected function getData($name, $type = 'string')
-    {
-        if (array_key_exists($name, $this->data)) {
-            return $this->data[$name];
-        }
-
-        $data = $this->xpath->evaluate($type . '(' . $this->getXpathPrefix() . '/slash10:' . $name . ')');
-
-        if (!$data) {
-            $data = null;
-        }
-
-        $this->data[$name] = $data;
-
-        return $data;
-    }
-
-    /**
-     * Register Slash namespaces
-     *
-     * @return void
-     */
-    protected function registerNamespaces()
-    {
-        $this->xpath->registerNamespace('slash10', 'http://purl.org/rss/1.0/modules/slash/');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/Syndication/Feed.php b/vendor/zendframework/zend-feed/src/Reader/Extension/Syndication/Feed.php
deleted file mode 100644
index 09f12dd..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/Syndication/Feed.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\Syndication;
-
-use DateTime;
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Extension;
-
-class Feed extends Extension\AbstractFeed
-{
-    /**
-     * Get update period
-     *
-     * @return string
-     * @throws Reader\Exception\InvalidArgumentException
-     */
-    public function getUpdatePeriod()
-    {
-        $name = 'updatePeriod';
-        $period = $this->getData($name);
-
-        if ($period === null) {
-            $this->data[$name] = 'daily';
-            return 'daily'; //Default specified by spec
-        }
-
-        switch ($period) {
-            case 'hourly':
-            case 'daily':
-            case 'weekly':
-            case 'yearly':
-                return $period;
-            default:
-                throw new Reader\Exception\InvalidArgumentException("Feed specified invalid update period: '$period'."
-                    .  " Must be one of hourly, daily, weekly or yearly"
-                );
-        }
-    }
-
-    /**
-     * Get update frequency
-     *
-     * @return int
-     */
-    public function getUpdateFrequency()
-    {
-        $name = 'updateFrequency';
-        $freq = $this->getData($name, 'number');
-
-        if (!$freq || $freq < 1) {
-            $this->data[$name] = 1;
-            return 1;
-        }
-
-        return $freq;
-    }
-
-    /**
-     * Get update frequency as ticks
-     *
-     * @return int
-     */
-    public function getUpdateFrequencyAsTicks()
-    {
-        $name = 'updateFrequency';
-        $freq = $this->getData($name, 'number');
-
-        if (!$freq || $freq < 1) {
-            $this->data[$name] = 1;
-            $freq = 1;
-        }
-
-        $period = $this->getUpdatePeriod();
-        $ticks = 1;
-
-        switch ($period) {
-            case 'yearly':
-                $ticks *= 52; //TODO: fix generalisation, how?
-                // no break
-            case 'weekly':
-                $ticks *= 7;
-                // no break
-            case 'daily':
-                $ticks *= 24;
-                // no break
-            case 'hourly':
-                $ticks *= 3600;
-                break;
-            default: //Never arrive here, exception thrown in getPeriod()
-                break;
-        }
-
-        return $ticks / $freq;
-    }
-
-    /**
-     * Get update base
-     *
-     * @return DateTime|null
-     */
-    public function getUpdateBase()
-    {
-        $updateBase = $this->getData('updateBase');
-        $date = null;
-        if ($updateBase) {
-            $date = DateTime::createFromFormat(DateTime::W3C, $updateBase);
-        }
-        return $date;
-    }
-
-    /**
-     * Get the entry data specified by name
-     *
-     * @param string $name
-     * @param string $type
-     * @return mixed|null
-     */
-    private function getData($name, $type = 'string')
-    {
-        if (array_key_exists($name, $this->data)) {
-            return $this->data[$name];
-        }
-
-        $data = $this->xpath->evaluate($type . '(' . $this->getXpathPrefix() . '/syn10:' . $name . ')');
-
-        if (!$data) {
-            $data = null;
-        }
-
-        $this->data[$name] = $data;
-
-        return $data;
-    }
-
-    /**
-     * Register Syndication namespaces
-     *
-     * @return void
-     */
-    protected function registerNamespaces()
-    {
-        $this->xpath->registerNamespace('syn10', 'http://purl.org/rss/1.0/modules/syndication/');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/Thread/Entry.php b/vendor/zendframework/zend-feed/src/Reader/Extension/Thread/Entry.php
deleted file mode 100644
index e5de5bb..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/Thread/Entry.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\Thread;
-
-use Zend\Feed\Reader\Extension;
-
-/**
-*/
-class Entry extends Extension\AbstractEntry
-{
-    /**
-     * Get the "in-reply-to" value
-     *
-     * @return string
-     */
-    public function getInReplyTo()
-    {
-        // TODO: to be implemented
-    }
-
-    // TODO: Implement "replies" and "updated" constructs from standard
-
-    /**
-     * Get the total number of threaded responses (i.e comments)
-     *
-     * @return int|null
-     */
-    public function getCommentCount()
-    {
-        return $this->getData('total');
-    }
-
-    /**
-     * Get the entry data specified by name
-     *
-     * @param  string $name
-     * @return mixed|null
-     */
-    protected function getData($name)
-    {
-        if (array_key_exists($name, $this->data)) {
-            return $this->data[$name];
-        }
-
-        $data = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/thread10:' . $name . ')');
-
-        if (!$data) {
-            $data = null;
-        }
-
-        $this->data[$name] = $data;
-
-        return $data;
-    }
-
-    /**
-     * Register Atom Thread Extension 1.0 namespace
-     *
-     * @return void
-     */
-    protected function registerNamespaces()
-    {
-        $this->xpath->registerNamespace('thread10', 'http://purl.org/syndication/thread/1.0');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Extension/WellFormedWeb/Entry.php b/vendor/zendframework/zend-feed/src/Reader/Extension/WellFormedWeb/Entry.php
deleted file mode 100644
index 42fafb4..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Extension/WellFormedWeb/Entry.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Extension\WellFormedWeb;
-
-use Zend\Feed\Reader\Extension;
-
-/**
-*/
-class Entry extends Extension\AbstractEntry
-{
-    /**
-     * Get the entry comment Uri
-     *
-     * @return string|null
-     */
-    public function getCommentFeedLink()
-    {
-        $name = 'commentRss';
-        if (array_key_exists($name, $this->data)) {
-            return $this->data[$name];
-        }
-
-        $data = $this->xpath->evaluate('string(' . $this->getXpathPrefix() . '/wfw:' . $name . ')');
-
-        if (!$data) {
-            $data = null;
-        }
-
-        $this->data[$name] = $data;
-
-        return $data;
-    }
-
-    /**
-     * Register Slash namespaces
-     *
-     * @return void
-     */
-    protected function registerNamespaces()
-    {
-        $this->xpath->registerNamespace('wfw', 'http://wellformedweb.org/CommentAPI/');
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/ExtensionManager.php b/vendor/zendframework/zend-feed/src/Reader/ExtensionManager.php
deleted file mode 100644
index 6740cc9..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/ExtensionManager.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader;
-
-/**
- * Default implementation of ExtensionManagerInterface
- *
- * Decorator of ExtensionPluginManager.
- */
-class ExtensionManager implements ExtensionManagerInterface
-{
-    protected $pluginManager;
-
-    /**
-     * Constructor
-     *
-     * Seeds the extension manager with a plugin manager; if none provided,
-     * creates an instance.
-     *
-     * @param  null|ExtensionPluginManager $pluginManager
-     */
-    public function __construct(ExtensionPluginManager $pluginManager = null)
-    {
-        if (null === $pluginManager) {
-            $pluginManager = new ExtensionPluginManager();
-        }
-        $this->pluginManager = $pluginManager;
-    }
-
-    /**
-     * Method overloading
-     *
-     * Proxy to composed ExtensionPluginManager instance.
-     *
-     * @param  string $method
-     * @param  array $args
-     * @return mixed
-     * @throws Exception\BadMethodCallException
-     */
-    public function __call($method, $args)
-    {
-        if (!method_exists($this->pluginManager, $method)) {
-            throw new Exception\BadMethodCallException(sprintf(
-                'Method by name of %s does not exist in %s',
-                $method,
-                __CLASS__
-            ));
-        }
-        return call_user_func_array([$this->pluginManager, $method], $args);
-    }
-
-    /**
-     * Get the named extension
-     *
-     * @param  string $name
-     * @return Extension\AbstractEntry|Extension\AbstractFeed
-     */
-    public function get($name)
-    {
-        return $this->pluginManager->get($name);
-    }
-
-    /**
-     * Do we have the named extension?
-     *
-     * @param  string $name
-     * @return bool
-     */
-    public function has($name)
-    {
-        return $this->pluginManager->has($name);
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/ExtensionManagerInterface.php b/vendor/zendframework/zend-feed/src/Reader/ExtensionManagerInterface.php
deleted file mode 100644
index 70ec37d..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/ExtensionManagerInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader;
-
-interface ExtensionManagerInterface
-{
-    /**
-     * Do we have the extension?
-     *
-     * @param  string $extension
-     * @return bool
-     */
-    public function has($extension);
-
-    /**
-     * Retrieve the extension
-     *
-     * @param  string $extension
-     * @return mixed
-     */
-    public function get($extension);
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/ExtensionPluginManager.php b/vendor/zendframework/zend-feed/src/Reader/ExtensionPluginManager.php
deleted file mode 100644
index 431be12..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/ExtensionPluginManager.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader;
-
-use Zend\ServiceManager\AbstractPluginManager;
-
-/**
- * Plugin manager implementation for feed reader extensions based on the
- * AbstractPluginManager.
- *
- * Validation checks that we have an Extension\AbstractEntry or
- * Extension\AbstractFeed.
- */
-class ExtensionPluginManager extends AbstractPluginManager
-{
-    /**
-     * Default set of extension classes
-     *
-     * @var array
-     */
-    protected $invokableClasses = [
-        'atomentry'            => 'Zend\Feed\Reader\Extension\Atom\Entry',
-        'atomfeed'             => 'Zend\Feed\Reader\Extension\Atom\Feed',
-        'contententry'         => 'Zend\Feed\Reader\Extension\Content\Entry',
-        'creativecommonsentry' => 'Zend\Feed\Reader\Extension\CreativeCommons\Entry',
-        'creativecommonsfeed'  => 'Zend\Feed\Reader\Extension\CreativeCommons\Feed',
-        'dublincoreentry'      => 'Zend\Feed\Reader\Extension\DublinCore\Entry',
-        'dublincorefeed'       => 'Zend\Feed\Reader\Extension\DublinCore\Feed',
-        'podcastentry'         => 'Zend\Feed\Reader\Extension\Podcast\Entry',
-        'podcastfeed'          => 'Zend\Feed\Reader\Extension\Podcast\Feed',
-        'slashentry'           => 'Zend\Feed\Reader\Extension\Slash\Entry',
-        'syndicationfeed'      => 'Zend\Feed\Reader\Extension\Syndication\Feed',
-        'threadentry'          => 'Zend\Feed\Reader\Extension\Thread\Entry',
-        'wellformedwebentry'   => 'Zend\Feed\Reader\Extension\WellFormedWeb\Entry',
-    ];
-
-    /**
-     * Do not share instances
-     *
-     * @var bool
-     */
-    protected $shareByDefault = false;
-
-    /**
-     * Validate the plugin
-     *
-     * Checks that the extension loaded is of a valid type.
-     *
-     * @param  mixed $plugin
-     * @return void
-     * @throws Exception\InvalidArgumentException if invalid
-     */
-    public function validatePlugin($plugin)
-    {
-        if ($plugin instanceof Extension\AbstractEntry
-            || $plugin instanceof Extension\AbstractFeed
-        ) {
-            // we're okay
-            return;
-        }
-
-        throw new Exception\InvalidArgumentException(sprintf(
-            'Plugin of type %s is invalid; must implement %s\Extension\AbstractFeed '
-            . 'or %s\Extension\AbstractEntry',
-            (is_object($plugin) ? get_class($plugin) : gettype($plugin)),
-            __NAMESPACE__,
-            __NAMESPACE__
-        ));
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Feed/AbstractFeed.php b/vendor/zendframework/zend-feed/src/Reader/Feed/AbstractFeed.php
deleted file mode 100644
index 78b671d..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Feed/AbstractFeed.php
+++ /dev/null
@@ -1,307 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Feed;
-
-use DOMDocument;
-use DOMElement;
-use DOMXPath;
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Exception;
-
-/**
-*/
-abstract class AbstractFeed implements FeedInterface
-{
-    /**
-     * Parsed feed data
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * Parsed feed data in the shape of a DOMDocument
-     *
-     * @var DOMDocument
-     */
-    protected $domDocument = null;
-
-    /**
-     * An array of parsed feed entries
-     *
-     * @var array
-     */
-    protected $entries = [];
-
-    /**
-     * A pointer for the iterator to keep track of the entries array
-     *
-     * @var int
-     */
-    protected $entriesKey = 0;
-
-    /**
-     * The base XPath query used to retrieve feed data
-     *
-     * @var DOMXPath
-     */
-    protected $xpath = null;
-
-    /**
-     * Array of loaded extensions
-     *
-     * @var array
-     */
-    protected $extensions = [];
-
-    /**
-     * Original Source URI (set if imported from a URI)
-     *
-     * @var string
-     */
-    protected $originalSourceUri = null;
-
-    /**
-     * Constructor
-     *
-     * @param DOMDocument $domDocument The DOM object for the feed's XML
-     * @param string $type Feed type
-     */
-    public function __construct(DOMDocument $domDocument, $type = null)
-    {
-        $this->domDocument = $domDocument;
-        $this->xpath = new DOMXPath($this->domDocument);
-
-        if ($type !== null) {
-            $this->data['type'] = $type;
-        } else {
-            $this->data['type'] = Reader\Reader::detectType($this->domDocument);
-        }
-        $this->registerNamespaces();
-        $this->indexEntries();
-        $this->loadExtensions();
-    }
-
-    /**
-     * Set an original source URI for the feed being parsed. This value
-     * is returned from getFeedLink() method if the feed does not carry
-     * a self-referencing URI.
-     *
-     * @param string $uri
-     */
-    public function setOriginalSourceUri($uri)
-    {
-        $this->originalSourceUri = $uri;
-    }
-
-    /**
-     * Get an original source URI for the feed being parsed. Returns null if
-     * unset or the feed was not imported from a URI.
-     *
-     * @return string|null
-     */
-    public function getOriginalSourceUri()
-    {
-        return $this->originalSourceUri;
-    }
-
-    /**
-     * Get the number of feed entries.
-     * Required by the Iterator interface.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return count($this->entries);
-    }
-
-    /**
-     * Return the current entry
-     *
-     * @return \Zend\Feed\Reader\Entry\EntryInterface
-     */
-    public function current()
-    {
-        if (substr($this->getType(), 0, 3) == 'rss') {
-            $reader = new Reader\Entry\Rss($this->entries[$this->key()], $this->key(), $this->getType());
-        } else {
-            $reader = new Reader\Entry\Atom($this->entries[$this->key()], $this->key(), $this->getType());
-        }
-
-        $reader->setXpath($this->xpath);
-
-        return $reader;
-    }
-
-    /**
-     * Get the DOM
-     *
-     * @return DOMDocument
-     */
-    public function getDomDocument()
-    {
-        return $this->domDocument;
-    }
-
-    /**
-     * Get the Feed's encoding
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        $assumed = $this->getDomDocument()->encoding;
-        if (empty($assumed)) {
-            $assumed = 'UTF-8';
-        }
-        return $assumed;
-    }
-
-    /**
-     * Get feed as xml
-     *
-     * @return string
-     */
-    public function saveXml()
-    {
-        return $this->getDomDocument()->saveXml();
-    }
-
-    /**
-     * Get the DOMElement representing the items/feed element
-     *
-     * @return DOMElement
-     */
-    public function getElement()
-    {
-        return $this->getDomDocument()->documentElement;
-    }
-
-    /**
-     * Get the DOMXPath object for this feed
-     *
-     * @return DOMXPath
-     */
-    public function getXpath()
-    {
-        return $this->xpath;
-    }
-
-    /**
-     * Get the feed type
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        return $this->data['type'];
-    }
-
-    /**
-     * Return the current feed key
-     *
-     * @return int
-     */
-    public function key()
-    {
-        return $this->entriesKey;
-    }
-
-    /**
-     * Move the feed pointer forward
-     *
-     */
-    public function next()
-    {
-        ++$this->entriesKey;
-    }
-
-    /**
-     * Reset the pointer in the feed object
-     *
-     */
-    public function rewind()
-    {
-        $this->entriesKey = 0;
-    }
-
-    /**
-     * Check to see if the iterator is still valid
-     *
-     * @return bool
-     */
-    public function valid()
-    {
-        return 0 <= $this->entriesKey && $this->entriesKey < $this->count();
-    }
-
-    public function getExtensions()
-    {
-        return $this->extensions;
-    }
-
-    public function __call($method, $args)
-    {
-        foreach ($this->extensions as $extension) {
-            if (method_exists($extension, $method)) {
-                return call_user_func_array([$extension, $method], $args);
-            }
-        }
-        throw new Exception\BadMethodCallException('Method: ' . $method
-        . 'does not exist and could not be located on a registered Extension');
-    }
-
-    /**
-     * Return an Extension object with the matching name (postfixed with _Feed)
-     *
-     * @param string $name
-     * @return \Zend\Feed\Reader\Extension\AbstractFeed
-     */
-    public function getExtension($name)
-    {
-        if (array_key_exists($name . '\\Feed', $this->extensions)) {
-            return $this->extensions[$name . '\\Feed'];
-        }
-        return;
-    }
-
-    protected function loadExtensions()
-    {
-        $all     = Reader\Reader::getExtensions();
-        $manager = Reader\Reader::getExtensionManager();
-        $feed    = $all['feed'];
-        foreach ($feed as $extension) {
-            if (in_array($extension, $all['core'])) {
-                continue;
-            }
-            if (!$manager->has($extension)) {
-                throw new Exception\RuntimeException(sprintf('Unable to load extension "%s"; cannot find class', $extension));
-            }
-            $plugin = $manager->get($extension);
-            $plugin->setDomDocument($this->getDomDocument());
-            $plugin->setType($this->data['type']);
-            $plugin->setXpath($this->xpath);
-            $this->extensions[$extension] = $plugin;
-        }
-    }
-
-    /**
-     * Read all entries to the internal entries array
-     *
-     */
-    abstract protected function indexEntries();
-
-    /**
-     * Register the default namespaces for the current feed format
-     *
-     */
-    abstract protected function registerNamespaces();
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Feed/Atom.php b/vendor/zendframework/zend-feed/src/Reader/Feed/Atom.php
deleted file mode 100644
index 3706470..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Feed/Atom.php
+++ /dev/null
@@ -1,408 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Feed;
-
-use DOMDocument;
-use Zend\Feed\Reader;
-
-/**
-*/
-class Atom extends AbstractFeed
-{
-    /**
-     * Constructor
-     *
-     * @param  DOMDocument $dom
-     * @param  string $type
-     */
-    public function __construct(DOMDocument $dom, $type = null)
-    {
-        parent::__construct($dom, $type);
-        $manager = Reader\Reader::getExtensionManager();
-
-        $atomFeed = $manager->get('Atom\Feed');
-        $atomFeed->setDomDocument($dom);
-        $atomFeed->setType($this->data['type']);
-        $atomFeed->setXpath($this->xpath);
-        $this->extensions['Atom\\Feed'] = $atomFeed;
-
-        $atomFeed = $manager->get('DublinCore\Feed');
-        $atomFeed->setDomDocument($dom);
-        $atomFeed->setType($this->data['type']);
-        $atomFeed->setXpath($this->xpath);
-        $this->extensions['DublinCore\\Feed'] = $atomFeed;
-
-        foreach ($this->extensions as $extension) {
-            $extension->setXpathPrefix('/atom:feed');
-        }
-    }
-
-    /**
-     * Get a single author
-     *
-     * @param  int $index
-     * @return string|null
-     */
-    public function getAuthor($index = 0)
-    {
-        $authors = $this->getAuthors();
-
-        if (isset($authors[$index])) {
-            return $authors[$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return array
-     */
-    public function getAuthors()
-    {
-        if (array_key_exists('authors', $this->data)) {
-            return $this->data['authors'];
-        }
-
-        $authors = $this->getExtension('Atom')->getAuthors();
-
-        $this->data['authors'] = $authors;
-
-        return $this->data['authors'];
-    }
-
-    /**
-     * Get the copyright entry
-     *
-     * @return string|null
-     */
-    public function getCopyright()
-    {
-        if (array_key_exists('copyright', $this->data)) {
-            return $this->data['copyright'];
-        }
-
-        $copyright = $this->getExtension('Atom')->getCopyright();
-
-        if (!$copyright) {
-            $copyright = null;
-        }
-
-        $this->data['copyright'] = $copyright;
-
-        return $this->data['copyright'];
-    }
-
-    /**
-     * Get the feed creation date
-     *
-     * @return string|null
-     */
-    public function getDateCreated()
-    {
-        if (array_key_exists('datecreated', $this->data)) {
-            return $this->data['datecreated'];
-        }
-
-        $dateCreated = $this->getExtension('Atom')->getDateCreated();
-
-        if (!$dateCreated) {
-            $dateCreated = null;
-        }
-
-        $this->data['datecreated'] = $dateCreated;
-
-        return $this->data['datecreated'];
-    }
-
-    /**
-     * Get the feed modification date
-     *
-     * @return string|null
-     */
-    public function getDateModified()
-    {
-        if (array_key_exists('datemodified', $this->data)) {
-            return $this->data['datemodified'];
-        }
-
-        $dateModified = $this->getExtension('Atom')->getDateModified();
-
-        if (!$dateModified) {
-            $dateModified = null;
-        }
-
-        $this->data['datemodified'] = $dateModified;
-
-        return $this->data['datemodified'];
-    }
-
-    /**
-     * Get the feed lastBuild date. This is not implemented in Atom.
-     *
-     * @return string|null
-     */
-    public function getLastBuildDate()
-    {
-        return;
-    }
-
-    /**
-     * Get the feed description
-     *
-     * @return string|null
-     */
-    public function getDescription()
-    {
-        if (array_key_exists('description', $this->data)) {
-            return $this->data['description'];
-        }
-
-        $description = $this->getExtension('Atom')->getDescription();
-
-        if (!$description) {
-            $description = null;
-        }
-
-        $this->data['description'] = $description;
-
-        return $this->data['description'];
-    }
-
-    /**
-     * Get the feed generator entry
-     *
-     * @return string|null
-     */
-    public function getGenerator()
-    {
-        if (array_key_exists('generator', $this->data)) {
-            return $this->data['generator'];
-        }
-
-        $generator = $this->getExtension('Atom')->getGenerator();
-
-        $this->data['generator'] = $generator;
-
-        return $this->data['generator'];
-    }
-
-    /**
-     * Get the feed ID
-     *
-     * @return string|null
-     */
-    public function getId()
-    {
-        if (array_key_exists('id', $this->data)) {
-            return $this->data['id'];
-        }
-
-        $id = $this->getExtension('Atom')->getId();
-
-        $this->data['id'] = $id;
-
-        return $this->data['id'];
-    }
-
-    /**
-     * Get the feed language
-     *
-     * @return string|null
-     */
-    public function getLanguage()
-    {
-        if (array_key_exists('language', $this->data)) {
-            return $this->data['language'];
-        }
-
-        $language = $this->getExtension('Atom')->getLanguage();
-
-        if (!$language) {
-            $language = $this->xpath->evaluate('string(//@xml:lang[1])');
-        }
-
-        if (!$language) {
-            $language = null;
-        }
-
-        $this->data['language'] = $language;
-
-        return $this->data['language'];
-    }
-
-    /**
-     * Get a link to the source website
-     *
-     * @return string|null
-     */
-    public function getBaseUrl()
-    {
-        if (array_key_exists('baseUrl', $this->data)) {
-            return $this->data['baseUrl'];
-        }
-
-        $baseUrl = $this->getExtension('Atom')->getBaseUrl();
-
-        $this->data['baseUrl'] = $baseUrl;
-
-        return $this->data['baseUrl'];
-    }
-
-    /**
-     * Get a link to the source website
-     *
-     * @return string|null
-     */
-    public function getLink()
-    {
-        if (array_key_exists('link', $this->data)) {
-            return $this->data['link'];
-        }
-
-        $link = $this->getExtension('Atom')->getLink();
-
-        $this->data['link'] = $link;
-
-        return $this->data['link'];
-    }
-
-    /**
-     * Get feed image data
-     *
-     * @return array|null
-     */
-    public function getImage()
-    {
-        if (array_key_exists('image', $this->data)) {
-            return $this->data['image'];
-        }
-
-        $link = $this->getExtension('Atom')->getImage();
-
-        $this->data['image'] = $link;
-
-        return $this->data['image'];
-    }
-
-    /**
-     * Get a link to the feed's XML Url
-     *
-     * @return string|null
-     */
-    public function getFeedLink()
-    {
-        if (array_key_exists('feedlink', $this->data)) {
-            return $this->data['feedlink'];
-        }
-
-        $link = $this->getExtension('Atom')->getFeedLink();
-
-        if ($link === null || empty($link)) {
-            $link = $this->getOriginalSourceUri();
-        }
-
-        $this->data['feedlink'] = $link;
-
-        return $this->data['feedlink'];
-    }
-
-    /**
-     * Get the feed title
-     *
-     * @return string|null
-     */
-    public function getTitle()
-    {
-        if (array_key_exists('title', $this->data)) {
-            return $this->data['title'];
-        }
-
-        $title = $this->getExtension('Atom')->getTitle();
-
-        $this->data['title'] = $title;
-
-        return $this->data['title'];
-    }
-
-    /**
-     * Get an array of any supported Pusubhubbub endpoints
-     *
-     * @return array|null
-     */
-    public function getHubs()
-    {
-        if (array_key_exists('hubs', $this->data)) {
-            return $this->data['hubs'];
-        }
-
-        $hubs = $this->getExtension('Atom')->getHubs();
-
-        $this->data['hubs'] = $hubs;
-
-        return $this->data['hubs'];
-    }
-
-    /**
-     * Get all categories
-     *
-     * @return Reader\Collection\Category
-     */
-    public function getCategories()
-    {
-        if (array_key_exists('categories', $this->data)) {
-            return $this->data['categories'];
-        }
-
-        $categoryCollection = $this->getExtension('Atom')->getCategories();
-
-        if (count($categoryCollection) == 0) {
-            $categoryCollection = $this->getExtension('DublinCore')->getCategories();
-        }
-
-        $this->data['categories'] = $categoryCollection;
-
-        return $this->data['categories'];
-    }
-
-    /**
-     * Read all entries to the internal entries array
-     *
-     * @return void
-     */
-    protected function indexEntries()
-    {
-        if ($this->getType() == Reader\Reader::TYPE_ATOM_10 ||
-            $this->getType() == Reader\Reader::TYPE_ATOM_03) {
-            $entries = $this->xpath->evaluate('//atom:entry');
-
-            foreach ($entries as $index => $entry) {
-                $this->entries[$index] = $entry;
-            }
-        }
-    }
-
-    /**
-     * Register the default namespaces for the current feed format
-     *
-     */
-    protected function registerNamespaces()
-    {
-        switch ($this->data['type']) {
-            case Reader\Reader::TYPE_ATOM_03:
-                $this->xpath->registerNamespace('atom', Reader\Reader::NAMESPACE_ATOM_03);
-                break;
-            case Reader\Reader::TYPE_ATOM_10:
-            default:
-                $this->xpath->registerNamespace('atom', Reader\Reader::NAMESPACE_ATOM_10);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Feed/Atom/Source.php b/vendor/zendframework/zend-feed/src/Reader/Feed/Atom/Source.php
deleted file mode 100644
index 4f15b55..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Feed/Atom/Source.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Feed\Atom;
-
-use DOMElement;
-use DOMXPath;
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Feed;
-
-/**
-*/
-class Source extends Feed\Atom
-{
-    /**
-     * Constructor: Create a Source object which is largely just a normal
-     * Zend\Feed\Reader\AbstractFeed object only designed to retrieve feed level
-     * metadata from an Atom entry's source element.
-     *
-     * @param DOMElement $source
-     * @param string $xpathPrefix Passed from parent Entry object
-     * @param string $type Nearly always Atom 1.0
-     */
-    public function __construct(DOMElement $source, $xpathPrefix, $type = Reader\Reader::TYPE_ATOM_10)
-    {
-        $this->domDocument = $source->ownerDocument;
-        $this->xpath = new DOMXPath($this->domDocument);
-        $this->data['type'] = $type;
-        $this->registerNamespaces();
-        $this->loadExtensions();
-
-        $manager = Reader\Reader::getExtensionManager();
-        $extensions = ['Atom\Feed', 'DublinCore\Feed'];
-
-        foreach ($extensions as $name) {
-            $extension = $manager->get($name);
-            $extension->setDomDocument($this->domDocument);
-            $extension->setType($this->data['type']);
-            $extension->setXpath($this->xpath);
-            $this->extensions[$name] = $extension;
-        }
-
-        foreach ($this->extensions as $extension) {
-            $extension->setXpathPrefix(rtrim($xpathPrefix, '/') . '/atom:source');
-        }
-    }
-
-    /**
-     * Since this is not an Entry carrier but a vehicle for Feed metadata, any
-     * applicable Entry methods are stubbed out and do nothing.
-     */
-
-    /**
-     * @return void
-     */
-    public function count()
-    {
-    }
-
-    /**
-     * @return void
-     */
-    public function current()
-    {
-    }
-
-    /**
-     * @return void
-     */
-    public function key()
-    {
-    }
-
-    /**
-     * @return void
-     */
-    public function next()
-    {
-    }
-
-    /**
-     * @return void
-     */
-    public function rewind()
-    {
-    }
-
-    /**
-     * @return void
-     */
-    public function valid()
-    {
-    }
-
-    /**
-     * @return void
-     */
-    protected function indexEntries()
-    {
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Feed/FeedInterface.php b/vendor/zendframework/zend-feed/src/Reader/Feed/FeedInterface.php
deleted file mode 100644
index 441ba92..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Feed/FeedInterface.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Feed;
-
-use Countable;
-use Iterator;
-
-/**
-*/
-interface FeedInterface extends Iterator, Countable
-{
-    /**
-     * Get a single author
-     *
-     * @param  int $index
-     * @return string|null
-     */
-    public function getAuthor($index = 0);
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return array
-     */
-    public function getAuthors();
-
-    /**
-     * Get the copyright entry
-     *
-     * @return string|null
-     */
-    public function getCopyright();
-
-    /**
-     * Get the feed creation date
-     *
-     * @return string|null
-     */
-    public function getDateCreated();
-
-    /**
-     * Get the feed modification date
-     *
-     * @return string|null
-     */
-    public function getDateModified();
-
-    /**
-     * Get the feed description
-     *
-     * @return string|null
-     */
-    public function getDescription();
-
-    /**
-     * Get the feed generator entry
-     *
-     * @return string|null
-     */
-    public function getGenerator();
-
-    /**
-     * Get the feed ID
-     *
-     * @return string|null
-     */
-    public function getId();
-
-    /**
-     * Get the feed language
-     *
-     * @return string|null
-     */
-    public function getLanguage();
-
-    /**
-     * Get a link to the HTML source
-     *
-     * @return string|null
-     */
-    public function getLink();
-
-    /**
-     * Get a link to the XML feed
-     *
-     * @return string|null
-     */
-    public function getFeedLink();
-
-    /**
-     * Get the feed title
-     *
-     * @return string|null
-     */
-    public function getTitle();
-
-    /**
-     * Get all categories
-     *
-     * @return \Zend\Feed\Reader\Collection\Category
-     */
-    public function getCategories();
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Feed/Rss.php b/vendor/zendframework/zend-feed/src/Reader/Feed/Rss.php
deleted file mode 100644
index 1a148b2..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Feed/Rss.php
+++ /dev/null
@@ -1,694 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Feed;
-
-use DateTime;
-use DOMDocument;
-use Zend\Feed\Reader;
-use Zend\Feed\Reader\Collection;
-use Zend\Feed\Reader\Exception;
-
-/**
-*/
-class Rss extends AbstractFeed
-{
-    /**
-     * Constructor
-     *
-     * @param  DOMDocument $dom
-     * @param  string $type
-     */
-    public function __construct(DOMDocument $dom, $type = null)
-    {
-        parent::__construct($dom, $type);
-
-        $manager = Reader\Reader::getExtensionManager();
-
-        $feed = $manager->get('DublinCore\Feed');
-        $feed->setDomDocument($dom);
-        $feed->setType($this->data['type']);
-        $feed->setXpath($this->xpath);
-        $this->extensions['DublinCore\Feed'] = $feed;
-
-        $feed = $manager->get('Atom\Feed');
-        $feed->setDomDocument($dom);
-        $feed->setType($this->data['type']);
-        $feed->setXpath($this->xpath);
-        $this->extensions['Atom\Feed'] = $feed;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10
-            && $this->getType() !== Reader\Reader::TYPE_RSS_090
-        ) {
-            $xpathPrefix = '/rss/channel';
-        } else {
-            $xpathPrefix = '/rdf:RDF/rss:channel';
-        }
-        foreach ($this->extensions as $extension) {
-            $extension->setXpathPrefix($xpathPrefix);
-        }
-    }
-
-    /**
-     * Get a single author
-     *
-     * @param  int $index
-     * @return string|null
-     */
-    public function getAuthor($index = 0)
-    {
-        $authors = $this->getAuthors();
-
-        if (isset($authors[$index])) {
-            return $authors[$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return array
-     */
-    public function getAuthors()
-    {
-        if (array_key_exists('authors', $this->data)) {
-            return $this->data['authors'];
-        }
-
-        $authors = [];
-        $authorsDc = $this->getExtension('DublinCore')->getAuthors();
-        if (!empty($authorsDc)) {
-            foreach ($authorsDc as $author) {
-                $authors[] = [
-                    'name' => $author['name']
-                ];
-            }
-        }
-
-        /**
-         * Technically RSS doesn't specific author element use at the feed level
-         * but it's supported on a "just in case" basis.
-         */
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10
-        && $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $list = $this->xpath->query('//author');
-        } else {
-            $list = $this->xpath->query('//rss:author');
-        }
-        if ($list->length) {
-            foreach ($list as $author) {
-                $string = trim($author->nodeValue);
-                $data = [];
-                // Pretty rough parsing - but it's a catchall
-                if (preg_match("/^.*@[^ ]*/", $string, $matches)) {
-                    $data['email'] = trim($matches[0]);
-                    if (preg_match("/\((.*)\)$/", $string, $matches)) {
-                        $data['name'] = $matches[1];
-                    }
-                    $authors[] = $data;
-                }
-            }
-        }
-
-        if (count($authors) == 0) {
-            $authors = $this->getExtension('Atom')->getAuthors();
-        } else {
-            $authors = new Reader\Collection\Author(
-                Reader\Reader::arrayUnique($authors)
-            );
-        }
-
-        if (count($authors) == 0) {
-            $authors = null;
-        }
-
-        $this->data['authors'] = $authors;
-
-        return $this->data['authors'];
-    }
-
-    /**
-     * Get the copyright entry
-     *
-     * @return string|null
-     */
-    public function getCopyright()
-    {
-        if (array_key_exists('copyright', $this->data)) {
-            return $this->data['copyright'];
-        }
-
-        $copyright = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $copyright = $this->xpath->evaluate('string(/rss/channel/copyright)');
-        }
-
-        if (!$copyright && $this->getExtension('DublinCore') !== null) {
-            $copyright = $this->getExtension('DublinCore')->getCopyright();
-        }
-
-        if (empty($copyright)) {
-            $copyright = $this->getExtension('Atom')->getCopyright();
-        }
-
-        if (!$copyright) {
-            $copyright = null;
-        }
-
-        $this->data['copyright'] = $copyright;
-
-        return $this->data['copyright'];
-    }
-
-    /**
-     * Get the feed creation date
-     *
-     * @return string|null
-     */
-    public function getDateCreated()
-    {
-        return $this->getDateModified();
-    }
-
-    /**
-     * Get the feed modification date
-     *
-     * @return DateTime
-     * @throws Exception\RuntimeException
-     */
-    public function getDateModified()
-    {
-        if (array_key_exists('datemodified', $this->data)) {
-            return $this->data['datemodified'];
-        }
-
-        $date = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $dateModified = $this->xpath->evaluate('string(/rss/channel/pubDate)');
-            if (!$dateModified) {
-                $dateModified = $this->xpath->evaluate('string(/rss/channel/lastBuildDate)');
-            }
-            if ($dateModified) {
-                $dateModifiedParsed = strtotime($dateModified);
-                if ($dateModifiedParsed) {
-                    $date = new DateTime('@' . $dateModifiedParsed);
-                } else {
-                    $dateStandards = [DateTime::RSS, DateTime::RFC822,
-                                           DateTime::RFC2822, null];
-                    foreach ($dateStandards as $standard) {
-                        try {
-                            $date = DateTime::createFromFormat($standard, $dateModified);
-                            break;
-                        } catch (\Exception $e) {
-                            if ($standard === null) {
-                                throw new Exception\RuntimeException(
-                                    'Could not load date due to unrecognised'
-                                    .' format (should follow RFC 822 or 2822):'
-                                    . $e->getMessage(),
-                                    0, $e
-                                );
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        if (!$date) {
-            $date = $this->getExtension('DublinCore')->getDate();
-        }
-
-        if (!$date) {
-            $date = $this->getExtension('Atom')->getDateModified();
-        }
-
-        if (!$date) {
-            $date = null;
-        }
-
-        $this->data['datemodified'] = $date;
-
-        return $this->data['datemodified'];
-    }
-
-    /**
-     * Get the feed lastBuild date
-     *
-     * @throws Exception\RuntimeException
-     * @return DateTime
-     */
-    public function getLastBuildDate()
-    {
-        if (array_key_exists('lastBuildDate', $this->data)) {
-            return $this->data['lastBuildDate'];
-        }
-
-        $date = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $lastBuildDate = $this->xpath->evaluate('string(/rss/channel/lastBuildDate)');
-            if ($lastBuildDate) {
-                $lastBuildDateParsed = strtotime($lastBuildDate);
-                if ($lastBuildDateParsed) {
-                    $date = new DateTime('@' . $lastBuildDateParsed);
-                } else {
-                    $dateStandards = [DateTime::RSS, DateTime::RFC822,
-                                           DateTime::RFC2822, null];
-                    foreach ($dateStandards as $standard) {
-                        try {
-                            $date = DateTime::createFromFormat($standard, $lastBuildDateParsed);
-                            break;
-                        } catch (\Exception $e) {
-                            if ($standard === null) {
-                                throw new Exception\RuntimeException(
-                                    'Could not load date due to unrecognised'
-                                    .' format (should follow RFC 822 or 2822):'
-                                    . $e->getMessage(),
-                                    0, $e
-                                );
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        if (!$date) {
-            $date = null;
-        }
-
-        $this->data['lastBuildDate'] = $date;
-
-        return $this->data['lastBuildDate'];
-    }
-
-    /**
-     * Get the feed description
-     *
-     * @return string|null
-     */
-    public function getDescription()
-    {
-        if (array_key_exists('description', $this->data)) {
-            return $this->data['description'];
-        }
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $description = $this->xpath->evaluate('string(/rss/channel/description)');
-        } else {
-            $description = $this->xpath->evaluate('string(/rdf:RDF/rss:channel/rss:description)');
-        }
-
-        if (!$description && $this->getExtension('DublinCore') !== null) {
-            $description = $this->getExtension('DublinCore')->getDescription();
-        }
-
-        if (empty($description)) {
-            $description = $this->getExtension('Atom')->getDescription();
-        }
-
-        if (!$description) {
-            $description = null;
-        }
-
-        $this->data['description'] = $description;
-
-        return $this->data['description'];
-    }
-
-    /**
-     * Get the feed ID
-     *
-     * @return string|null
-     */
-    public function getId()
-    {
-        if (array_key_exists('id', $this->data)) {
-            return $this->data['id'];
-        }
-
-        $id = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $id = $this->xpath->evaluate('string(/rss/channel/guid)');
-        }
-
-        if (!$id && $this->getExtension('DublinCore') !== null) {
-            $id = $this->getExtension('DublinCore')->getId();
-        }
-
-        if (empty($id)) {
-            $id = $this->getExtension('Atom')->getId();
-        }
-
-        if (!$id) {
-            if ($this->getLink()) {
-                $id = $this->getLink();
-            } elseif ($this->getTitle()) {
-                $id = $this->getTitle();
-            } else {
-                $id = null;
-            }
-        }
-
-        $this->data['id'] = $id;
-
-        return $this->data['id'];
-    }
-
-    /**
-     * Get the feed image data
-     *
-     * @return array|null
-     */
-    public function getImage()
-    {
-        if (array_key_exists('image', $this->data)) {
-            return $this->data['image'];
-        }
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $list = $this->xpath->query('/rss/channel/image');
-            $prefix = '/rss/channel/image[1]';
-        } else {
-            $list = $this->xpath->query('/rdf:RDF/rss:channel/rss:image');
-            $prefix = '/rdf:RDF/rss:channel/rss:image[1]';
-        }
-        if ($list->length > 0) {
-            $image = [];
-            $value = $this->xpath->evaluate('string(' . $prefix . '/url)');
-            if ($value) {
-                $image['uri'] = $value;
-            }
-            $value = $this->xpath->evaluate('string(' . $prefix . '/link)');
-            if ($value) {
-                $image['link'] = $value;
-            }
-            $value = $this->xpath->evaluate('string(' . $prefix . '/title)');
-            if ($value) {
-                $image['title'] = $value;
-            }
-            $value = $this->xpath->evaluate('string(' . $prefix . '/height)');
-            if ($value) {
-                $image['height'] = $value;
-            }
-            $value = $this->xpath->evaluate('string(' . $prefix . '/width)');
-            if ($value) {
-                $image['width'] = $value;
-            }
-            $value = $this->xpath->evaluate('string(' . $prefix . '/description)');
-            if ($value) {
-                $image['description'] = $value;
-            }
-        } else {
-            $image = null;
-        }
-
-        $this->data['image'] = $image;
-
-        return $this->data['image'];
-    }
-
-    /**
-     * Get the feed language
-     *
-     * @return string|null
-     */
-    public function getLanguage()
-    {
-        if (array_key_exists('language', $this->data)) {
-            return $this->data['language'];
-        }
-
-        $language = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $language = $this->xpath->evaluate('string(/rss/channel/language)');
-        }
-
-        if (!$language && $this->getExtension('DublinCore') !== null) {
-            $language = $this->getExtension('DublinCore')->getLanguage();
-        }
-
-        if (empty($language)) {
-            $language = $this->getExtension('Atom')->getLanguage();
-        }
-
-        if (!$language) {
-            $language = $this->xpath->evaluate('string(//@xml:lang[1])');
-        }
-
-        if (!$language) {
-            $language = null;
-        }
-
-        $this->data['language'] = $language;
-
-        return $this->data['language'];
-    }
-
-    /**
-     * Get a link to the feed
-     *
-     * @return string|null
-     */
-    public function getLink()
-    {
-        if (array_key_exists('link', $this->data)) {
-            return $this->data['link'];
-        }
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $link = $this->xpath->evaluate('string(/rss/channel/link)');
-        } else {
-            $link = $this->xpath->evaluate('string(/rdf:RDF/rss:channel/rss:link)');
-        }
-
-        if (empty($link)) {
-            $link = $this->getExtension('Atom')->getLink();
-        }
-
-        if (!$link) {
-            $link = null;
-        }
-
-        $this->data['link'] = $link;
-
-        return $this->data['link'];
-    }
-
-    /**
-     * Get a link to the feed XML
-     *
-     * @return string|null
-     */
-    public function getFeedLink()
-    {
-        if (array_key_exists('feedlink', $this->data)) {
-            return $this->data['feedlink'];
-        }
-
-        $link = $this->getExtension('Atom')->getFeedLink();
-
-        if ($link === null || empty($link)) {
-            $link = $this->getOriginalSourceUri();
-        }
-
-        $this->data['feedlink'] = $link;
-
-        return $this->data['feedlink'];
-    }
-
-    /**
-     * Get the feed generator entry
-     *
-     * @return string|null
-     */
-    public function getGenerator()
-    {
-        if (array_key_exists('generator', $this->data)) {
-            return $this->data['generator'];
-        }
-
-        $generator = null;
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $generator = $this->xpath->evaluate('string(/rss/channel/generator)');
-        }
-
-        if (!$generator) {
-            if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-                $generator = $this->xpath->evaluate('string(/rss/channel/atom:generator)');
-            } else {
-                $generator = $this->xpath->evaluate('string(/rdf:RDF/rss:channel/atom:generator)');
-            }
-        }
-
-        if (empty($generator)) {
-            $generator = $this->getExtension('Atom')->getGenerator();
-        }
-
-        if (!$generator) {
-            $generator = null;
-        }
-
-        $this->data['generator'] = $generator;
-
-        return $this->data['generator'];
-    }
-
-    /**
-     * Get the feed title
-     *
-     * @return string|null
-     */
-    public function getTitle()
-    {
-        if (array_key_exists('title', $this->data)) {
-            return $this->data['title'];
-        }
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $title = $this->xpath->evaluate('string(/rss/channel/title)');
-        } else {
-            $title = $this->xpath->evaluate('string(/rdf:RDF/rss:channel/rss:title)');
-        }
-
-        if (!$title && $this->getExtension('DublinCore') !== null) {
-            $title = $this->getExtension('DublinCore')->getTitle();
-        }
-
-        if (!$title) {
-            $title = $this->getExtension('Atom')->getTitle();
-        }
-
-        if (!$title) {
-            $title = null;
-        }
-
-        $this->data['title'] = $title;
-
-        return $this->data['title'];
-    }
-
-    /**
-     * Get an array of any supported Pusubhubbub endpoints
-     *
-     * @return array|null
-     */
-    public function getHubs()
-    {
-        if (array_key_exists('hubs', $this->data)) {
-            return $this->data['hubs'];
-        }
-
-        $hubs = $this->getExtension('Atom')->getHubs();
-
-        if (empty($hubs)) {
-            $hubs = null;
-        } else {
-            $hubs = array_unique($hubs);
-        }
-
-        $this->data['hubs'] = $hubs;
-
-        return $this->data['hubs'];
-    }
-
-    /**
-     * Get all categories
-     *
-     * @return Reader\Collection\Category
-     */
-    public function getCategories()
-    {
-        if (array_key_exists('categories', $this->data)) {
-            return $this->data['categories'];
-        }
-
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 &&
-            $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $list = $this->xpath->query('/rss/channel//category');
-        } else {
-            $list = $this->xpath->query('/rdf:RDF/rss:channel//rss:category');
-        }
-
-        if ($list->length) {
-            $categoryCollection = new Collection\Category;
-            foreach ($list as $category) {
-                $categoryCollection[] = [
-                    'term' => $category->nodeValue,
-                    'scheme' => $category->getAttribute('domain'),
-                    'label' => $category->nodeValue,
-                ];
-            }
-        } else {
-            $categoryCollection = $this->getExtension('DublinCore')->getCategories();
-        }
-
-        if (count($categoryCollection) == 0) {
-            $categoryCollection = $this->getExtension('Atom')->getCategories();
-        }
-
-        $this->data['categories'] = $categoryCollection;
-
-        return $this->data['categories'];
-    }
-
-    /**
-     * Read all entries to the internal entries array
-     *
-     */
-    protected function indexEntries()
-    {
-        if ($this->getType() !== Reader\Reader::TYPE_RSS_10 && $this->getType() !== Reader\Reader::TYPE_RSS_090) {
-            $entries = $this->xpath->evaluate('//item');
-        } else {
-            $entries = $this->xpath->evaluate('//rss:item');
-        }
-
-        foreach ($entries as $index => $entry) {
-            $this->entries[$index] = $entry;
-        }
-    }
-
-    /**
-     * Register the default namespaces for the current feed format
-     *
-     */
-    protected function registerNamespaces()
-    {
-        switch ($this->data['type']) {
-            case Reader\Reader::TYPE_RSS_10:
-                $this->xpath->registerNamespace('rdf', Reader\Reader::NAMESPACE_RDF);
-                $this->xpath->registerNamespace('rss', Reader\Reader::NAMESPACE_RSS_10);
-                break;
-
-            case Reader\Reader::TYPE_RSS_090:
-                $this->xpath->registerNamespace('rdf', Reader\Reader::NAMESPACE_RDF);
-                $this->xpath->registerNamespace('rss', Reader\Reader::NAMESPACE_RSS_090);
-                break;
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/FeedSet.php b/vendor/zendframework/zend-feed/src/Reader/FeedSet.php
deleted file mode 100644
index d890532..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/FeedSet.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader;
-
-use ArrayObject;
-use DOMNodeList;
-use Zend\Feed\Uri;
-
-class FeedSet extends ArrayObject
-{
-    public $rss = null;
-
-    public $rdf = null;
-
-    public $atom = null;
-
-    /**
-     * Import a DOMNodeList from any document containing a set of links
-     * for alternate versions of a document, which will normally refer to
-     * RSS/RDF/Atom feeds for the current document.
-     *
-     * All such links are stored internally, however the first instance of
-     * each RSS, RDF or Atom type has its URI stored as a public property
-     * as a shortcut where the use case is simply to get a quick feed ref.
-     *
-     * Note that feeds are not loaded at this point, but will be lazy
-     * loaded automatically when each links 'feed' array key is accessed.
-     *
-     * @param DOMNodeList $links
-     * @param string $uri
-     * @return void
-     */
-    public function addLinks(DOMNodeList $links, $uri)
-    {
-        foreach ($links as $link) {
-            if (strtolower($link->getAttribute('rel')) !== 'alternate'
-                || !$link->getAttribute('type') || !$link->getAttribute('href')) {
-                continue;
-            }
-            if (!isset($this->rss) && $link->getAttribute('type') == 'application/rss+xml') {
-                $this->rss = $this->absolutiseUri(trim($link->getAttribute('href')), $uri);
-            } elseif (!isset($this->atom) && $link->getAttribute('type') == 'application/atom+xml') {
-                $this->atom = $this->absolutiseUri(trim($link->getAttribute('href')), $uri);
-            } elseif (!isset($this->rdf) && $link->getAttribute('type') == 'application/rdf+xml') {
-                $this->rdf = $this->absolutiseUri(trim($link->getAttribute('href')), $uri);
-            }
-            $this[] = new static([
-                'rel' => 'alternate',
-                'type' => $link->getAttribute('type'),
-                'href' => $this->absolutiseUri(trim($link->getAttribute('href')), $uri),
-            ]);
-        }
-    }
-
-    /**
-     *  Attempt to turn a relative URI into an absolute URI
-     */
-    protected function absolutiseUri($link, $uri = null)
-    {
-        $linkUri = Uri::factory($link);
-        if (!$linkUri->isAbsolute() or !$linkUri->isValid()) {
-            if ($uri !== null) {
-                $uri = Uri::factory($uri);
-
-                if ($link[0] !== '/') {
-                    $link = $uri->getPath() . '/' . $link;
-                }
-
-                $link   = sprintf(
-                    '%s://%s/%s',
-                    ($uri->getScheme() ?: 'http'),
-                    $uri->getHost(),
-                    $this->canonicalizePath($link)
-                );
-
-                if (!Uri::factory($link)->isValid()) {
-                    $link = null;
-                }
-            }
-        }
-        return $link;
-    }
-
-    /**
-     *  Canonicalize relative path
-     */
-    protected function canonicalizePath($path)
-    {
-        $parts = array_filter(explode('/', $path));
-        $absolutes = [];
-        foreach ($parts as $part) {
-            if ('.' == $part) {
-                continue;
-            }
-            if ('..' == $part) {
-                array_pop($absolutes);
-            } else {
-                $absolutes[] = $part;
-            }
-        }
-        return implode('/', $absolutes);
-    }
-
-    /**
-     * Supports lazy loading of feeds using Reader::import() but
-     * delegates any other operations to the parent class.
-     *
-     * @param string $offset
-     * @return mixed
-     */
-    public function offsetGet($offset)
-    {
-        if ($offset == 'feed' && !$this->offsetExists('feed')) {
-            if (!$this->offsetExists('href')) {
-                return;
-            }
-            $feed = Reader::import($this->offsetGet('href'));
-            $this->offsetSet('feed', $feed);
-            return $feed;
-        }
-        return parent::offsetGet($offset);
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Http/ClientInterface.php b/vendor/zendframework/zend-feed/src/Reader/Http/ClientInterface.php
deleted file mode 100644
index 1387981..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Http/ClientInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Http;
-
-interface ClientInterface
-{
-    /**
-     * Make a GET request to a given URI
-     *
-     * @param  string $uri
-     * @return ResponseInterface
-     */
-    public function get($uri);
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Http/ResponseInterface.php b/vendor/zendframework/zend-feed/src/Reader/Http/ResponseInterface.php
deleted file mode 100644
index 96b422e..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Http/ResponseInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader\Http;
-
-interface ResponseInterface
-{
-    /**
-     * Retrieve the response body
-     *
-     * @return string
-     */
-    public function getBody();
-
-    /**
-     * Retrieve the HTTP response status code
-     *
-     * @return int
-     */
-    public function getStatusCode();
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Reader.php b/vendor/zendframework/zend-feed/src/Reader/Reader.php
deleted file mode 100644
index 09bdcf4..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/Reader.php
+++ /dev/null
@@ -1,676 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader;
-
-use DOMDocument;
-use DOMXPath;
-use Zend\Cache\Storage\StorageInterface as CacheStorage;
-use Zend\Http as ZendHttp;
-use Zend\Stdlib\ErrorHandler;
-
-/**
-*/
-class Reader implements ReaderImportInterface
-{
-    /**
-     * Namespace constants
-     */
-    const NAMESPACE_ATOM_03  = 'http://purl.org/atom/ns#';
-    const NAMESPACE_ATOM_10  = 'http://www.w3.org/2005/Atom';
-    const NAMESPACE_RDF      = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
-    const NAMESPACE_RSS_090  = 'http://my.netscape.com/rdf/simple/0.9/';
-    const NAMESPACE_RSS_10   = 'http://purl.org/rss/1.0/';
-
-    /**
-     * Feed type constants
-     */
-    const TYPE_ANY              = 'any';
-    const TYPE_ATOM_03          = 'atom-03';
-    const TYPE_ATOM_10          = 'atom-10';
-    const TYPE_ATOM_10_ENTRY    = 'atom-10-entry';
-    const TYPE_ATOM_ANY         = 'atom';
-    const TYPE_RSS_090          = 'rss-090';
-    const TYPE_RSS_091          = 'rss-091';
-    const TYPE_RSS_091_NETSCAPE = 'rss-091n';
-    const TYPE_RSS_091_USERLAND = 'rss-091u';
-    const TYPE_RSS_092          = 'rss-092';
-    const TYPE_RSS_093          = 'rss-093';
-    const TYPE_RSS_094          = 'rss-094';
-    const TYPE_RSS_10           = 'rss-10';
-    const TYPE_RSS_20           = 'rss-20';
-    const TYPE_RSS_ANY          = 'rss';
-
-    /**
-     * Cache instance
-     *
-     * @var CacheStorage
-     */
-    protected static $cache = null;
-
-    /**
-     * HTTP client object to use for retrieving feeds
-     *
-     * @var ZendHttp\Client
-     */
-    protected static $httpClient = null;
-
-    /**
-     * Override HTTP PUT and DELETE request methods?
-     *
-     * @var bool
-     */
-    protected static $httpMethodOverride = false;
-
-    protected static $httpConditionalGet = false;
-
-    protected static $extensionManager = null;
-
-    protected static $extensions = [
-        'feed' => [
-            'DublinCore\Feed',
-            'Atom\Feed'
-        ],
-        'entry' => [
-            'Content\Entry',
-            'DublinCore\Entry',
-            'Atom\Entry'
-        ],
-        'core' => [
-            'DublinCore\Feed',
-            'Atom\Feed',
-            'Content\Entry',
-            'DublinCore\Entry',
-            'Atom\Entry'
-        ]
-    ];
-
-    /**
-     * Get the Feed cache
-     *
-     * @return CacheStorage
-     */
-    public static function getCache()
-    {
-        return static::$cache;
-    }
-
-    /**
-     * Set the feed cache
-     *
-     * @param  CacheStorage $cache
-     * @return void
-     */
-    public static function setCache(CacheStorage $cache)
-    {
-        static::$cache = $cache;
-    }
-
-    /**
-     * Set the HTTP client instance
-     *
-     * Sets the HTTP client object to use for retrieving the feeds.
-     *
-     * @param  ZendHttp\Client $httpClient
-     * @return void
-     */
-    public static function setHttpClient(ZendHttp\Client $httpClient)
-    {
-        static::$httpClient = $httpClient;
-    }
-
-    /**
-     * Gets the HTTP client object. If none is set, a new ZendHttp\Client will be used.
-     *
-     * @return ZendHttp\Client
-     */
-    public static function getHttpClient()
-    {
-        if (!static::$httpClient instanceof ZendHttp\Client) {
-            static::$httpClient = new ZendHttp\Client();
-        }
-
-        return static::$httpClient;
-    }
-
-    /**
-     * Toggle using POST instead of PUT and DELETE HTTP methods
-     *
-     * Some feed implementations do not accept PUT and DELETE HTTP
-     * methods, or they can't be used because of proxies or other
-     * measures. This allows turning on using POST where PUT and
-     * DELETE would normally be used; in addition, an
-     * X-Method-Override header will be sent with a value of PUT or
-     * DELETE as appropriate.
-     *
-     * @param  bool $override Whether to override PUT and DELETE.
-     * @return void
-     */
-    public static function setHttpMethodOverride($override = true)
-    {
-        static::$httpMethodOverride = $override;
-    }
-
-    /**
-     * Get the HTTP override state
-     *
-     * @return bool
-     */
-    public static function getHttpMethodOverride()
-    {
-        return static::$httpMethodOverride;
-    }
-
-    /**
-     * Set the flag indicating whether or not to use HTTP conditional GET
-     *
-     * @param  bool $bool
-     * @return void
-     */
-    public static function useHttpConditionalGet($bool = true)
-    {
-        static::$httpConditionalGet = $bool;
-    }
-
-    /**
-     * Import a feed by providing a URI
-     *
-     * @param  string $uri The URI to the feed
-     * @param  string $etag OPTIONAL Last received ETag for this resource
-     * @param  string $lastModified OPTIONAL Last-Modified value for this resource
-     * @return Feed\FeedInterface
-     * @throws Exception\RuntimeException
-     */
-    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);
-        $cacheId = 'Zend_Feed_Reader_' . md5($uri);
-
-        if (static::$httpConditionalGet && $cache) {
-            $data = $cache->getItem($cacheId);
-            if ($data) {
-                if ($etag === null) {
-                    $etag = $cache->getItem($cacheId . '_etag');
-                }
-                if ($lastModified === null) {
-                    $lastModified = $cache->getItem($cacheId . '_lastmodified');
-                }
-                if ($etag) {
-                    $headers->addHeaderLine('If-None-Match', $etag);
-                }
-                if ($lastModified) {
-                    $headers->addHeaderLine('If-Modified-Since', $lastModified);
-                }
-            }
-            $response = $client->send();
-            if ($response->getStatusCode() !== 200 && $response->getStatusCode() !== 304) {
-                throw new Exception\RuntimeException('Feed failed to load, got response code ' . $response->getStatusCode());
-            }
-            if ($response->getStatusCode() == 304) {
-                $responseXml = $data;
-            } 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());
-                }
-            }
-            return static::importString($responseXml);
-        } elseif ($cache) {
-            $data = $cache->getItem($cacheId);
-            if ($data) {
-                return static::importString($data);
-            }
-            $response = $client->send();
-            if ((int) $response->getStatusCode() !== 200) {
-                throw new Exception\RuntimeException('Feed failed to load, got response code ' . $response->getStatusCode());
-            }
-            $responseXml = $response->getBody();
-            $cache->setItem($cacheId, $responseXml);
-            return static::importString($responseXml);
-        } else {
-            $response = $client->send();
-            if ((int) $response->getStatusCode() !== 200) {
-                throw new Exception\RuntimeException('Feed failed to load, got response code ' . $response->getStatusCode());
-            }
-            $reader = static::importString($response->getBody());
-            $reader->setOriginalSourceUri($uri);
-            return $reader;
-        }
-    }
-
-    /**
-     * Import a feed from a remote URI
-     *
-     * Performs similarly to import(), except it uses the HTTP client passed to
-     * the method, and does not take into account cached data.
-     *
-     * Primary purpose is to make it possible to use the Reader with alternate
-     * HTTP client implementations.
-     *
-     * @param  string $uri
-     * @param  Http\ClientInterface $client
-     * @return self
-     * @throws Exception\RuntimeException if response is not an Http\ResponseInterface
-     */
-    public static function importRemoteFeed($uri, Http\ClientInterface $client)
-    {
-        $response = $client->get($uri);
-        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__,
-                (is_object($response) ? get_class($response) : gettype($response))
-            ));
-        }
-
-        if ((int) $response->getStatusCode() !== 200) {
-            throw new Exception\RuntimeException('Feed failed to load, got response code ' . $response->getStatusCode());
-        }
-        $reader = static::importString($response->getBody());
-        $reader->setOriginalSourceUri($uri);
-        return $reader;
-    }
-
-    /**
-     * Import a feed from a string
-     *
-     * @param  string $string
-     * @return Feed\FeedInterface
-     * @throws Exception\InvalidArgumentException
-     * @throws Exception\RuntimeException
-     */
-    public static function importString($string)
-    {
-        $trimmed = trim($string);
-        if (!is_string($string) || empty($trimmed)) {
-            throw new Exception\InvalidArgumentException('Only non empty strings are allowed as input');
-        }
-
-        $libxmlErrflag = libxml_use_internal_errors(true);
-        $oldValue = libxml_disable_entity_loader(true);
-        $dom = new DOMDocument;
-        $status = $dom->loadXML(trim($string));
-        foreach ($dom->childNodes as $child) {
-            if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) {
-                throw new Exception\InvalidArgumentException(
-                    'Invalid XML: Detected use of illegal DOCTYPE'
-                );
-            }
-        }
-        libxml_disable_entity_loader($oldValue);
-        libxml_use_internal_errors($libxmlErrflag);
-
-        if (!$status) {
-            // Build error message
-            $error = libxml_get_last_error();
-            if ($error && $error->message) {
-                $error->message = trim($error->message);
-                $errormsg = "DOMDocument cannot parse XML: {$error->message}";
-            } else {
-                $errormsg = "DOMDocument cannot parse XML: Please check the XML document's validity";
-            }
-            throw new Exception\RuntimeException($errormsg);
-        }
-
-        $type = static::detectType($dom);
-
-        static::registerCoreExtensions();
-
-        if (substr($type, 0, 3) == 'rss') {
-            $reader = new Feed\Rss($dom, $type);
-        } elseif (substr($type, 8, 5) == 'entry') {
-            $reader = new Entry\Atom($dom->documentElement, 0, self::TYPE_ATOM_10);
-        } elseif (substr($type, 0, 4) == 'atom') {
-            $reader = new Feed\Atom($dom, $type);
-        } else {
-            throw new Exception\RuntimeException('The URI used does not point to a '
-            . 'valid Atom, RSS or RDF feed that Zend\Feed\Reader can parse.');
-        }
-        return $reader;
-    }
-
-    /**
-     * Imports a feed from a file located at $filename.
-     *
-     * @param  string $filename
-     * @throws Exception\RuntimeException
-     * @return Feed\FeedInterface
-     */
-    public static function importFile($filename)
-    {
-        ErrorHandler::start();
-        $feed = file_get_contents($filename);
-        $err  = ErrorHandler::stop();
-        if ($feed === false) {
-            throw new Exception\RuntimeException("File '{$filename}' could not be loaded", 0, $err);
-        }
-        return static::importString($feed);
-    }
-
-    /**
-     * Find feed links
-     *
-     * @param $uri
-     * @return FeedSet
-     * @throws Exception\RuntimeException
-     */
-    public static function findFeedLinks($uri)
-    {
-        $client = static::getHttpClient();
-        $client->setUri($uri);
-        $response = $client->send();
-        if ($response->getStatusCode() !== 200) {
-            throw new Exception\RuntimeException("Failed to access $uri, got response code " . $response->getStatusCode());
-        }
-        $responseHtml = $response->getBody();
-        $libxmlErrflag = libxml_use_internal_errors(true);
-        $oldValue = libxml_disable_entity_loader(true);
-        $dom = new DOMDocument;
-        $status = $dom->loadHTML(trim($responseHtml));
-        libxml_disable_entity_loader($oldValue);
-        libxml_use_internal_errors($libxmlErrflag);
-        if (!$status) {
-            // Build error message
-            $error = libxml_get_last_error();
-            if ($error && $error->message) {
-                $error->message = trim($error->message);
-                $errormsg = "DOMDocument cannot parse HTML: {$error->message}";
-            } else {
-                $errormsg = "DOMDocument cannot parse HTML: Please check the XML document's validity";
-            }
-            throw new Exception\RuntimeException($errormsg);
-        }
-        $feedSet = new FeedSet;
-        $links = $dom->getElementsByTagName('link');
-        $feedSet->addLinks($links, $uri);
-        return $feedSet;
-    }
-
-    /**
-     * Detect the feed type of the provided feed
-     *
-     * @param  Feed\AbstractFeed|DOMDocument|string $feed
-     * @param  bool $specOnly
-     * @return string
-     * @throws Exception\InvalidArgumentException
-     * @throws Exception\RuntimeException
-     */
-    public static function detectType($feed, $specOnly = false)
-    {
-        if ($feed instanceof Feed\AbstractFeed) {
-            $dom = $feed->getDomDocument();
-        } elseif ($feed instanceof DOMDocument) {
-            $dom = $feed;
-        } elseif (is_string($feed) && !empty($feed)) {
-            ErrorHandler::start(E_NOTICE|E_WARNING);
-            ini_set('track_errors', 1);
-            $oldValue = libxml_disable_entity_loader(true);
-            $dom = new DOMDocument;
-            $status = $dom->loadXML($feed);
-            foreach ($dom->childNodes as $child) {
-                if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) {
-                    throw new Exception\InvalidArgumentException(
-                        'Invalid XML: Detected use of illegal DOCTYPE'
-                    );
-                }
-            }
-            libxml_disable_entity_loader($oldValue);
-            ini_restore('track_errors');
-            ErrorHandler::stop();
-            if (!$status) {
-                if (!isset($phpErrormsg)) {
-                    if (function_exists('xdebug_is_enabled')) {
-                        $phpErrormsg = '(error message not available, when XDebug is running)';
-                    } else {
-                        $phpErrormsg = '(error message not available)';
-                    }
-                }
-                throw new Exception\RuntimeException("DOMDocument cannot parse XML: $phpErrormsg");
-            }
-        } else {
-            throw new Exception\InvalidArgumentException('Invalid object/scalar provided: must'
-            . ' be of type Zend\Feed\Reader\Feed, DomDocument or string');
-        }
-        $xpath = new DOMXPath($dom);
-
-        if ($xpath->query('/rss')->length) {
-            $type = self::TYPE_RSS_ANY;
-            $version = $xpath->evaluate('string(/rss/@version)');
-
-            if (strlen($version) > 0) {
-                switch ($version) {
-                    case '2.0':
-                        $type = self::TYPE_RSS_20;
-                        break;
-
-                    case '0.94':
-                        $type = self::TYPE_RSS_094;
-                        break;
-
-                    case '0.93':
-                        $type = self::TYPE_RSS_093;
-                        break;
-
-                    case '0.92':
-                        $type = self::TYPE_RSS_092;
-                        break;
-
-                    case '0.91':
-                        $type = self::TYPE_RSS_091;
-                        break;
-                }
-            }
-
-            return $type;
-        }
-
-        $xpath->registerNamespace('rdf', self::NAMESPACE_RDF);
-
-        if ($xpath->query('/rdf:RDF')->length) {
-            $xpath->registerNamespace('rss', self::NAMESPACE_RSS_10);
-
-            if ($xpath->query('/rdf:RDF/rss:channel')->length
-                || $xpath->query('/rdf:RDF/rss:image')->length
-                || $xpath->query('/rdf:RDF/rss:item')->length
-                || $xpath->query('/rdf:RDF/rss:textinput')->length
-            ) {
-                return self::TYPE_RSS_10;
-            }
-
-            $xpath->registerNamespace('rss', self::NAMESPACE_RSS_090);
-
-            if ($xpath->query('/rdf:RDF/rss:channel')->length
-                || $xpath->query('/rdf:RDF/rss:image')->length
-                || $xpath->query('/rdf:RDF/rss:item')->length
-                || $xpath->query('/rdf:RDF/rss:textinput')->length
-            ) {
-                return self::TYPE_RSS_090;
-            }
-        }
-
-        $xpath->registerNamespace('atom', self::NAMESPACE_ATOM_10);
-
-        if ($xpath->query('//atom:feed')->length) {
-            return self::TYPE_ATOM_10;
-        }
-
-        if ($xpath->query('//atom:entry')->length) {
-            if ($specOnly == true) {
-                return self::TYPE_ATOM_10;
-            } else {
-                return self::TYPE_ATOM_10_ENTRY;
-            }
-        }
-
-        $xpath->registerNamespace('atom', self::NAMESPACE_ATOM_03);
-
-        if ($xpath->query('//atom:feed')->length) {
-            return self::TYPE_ATOM_03;
-        }
-
-        return self::TYPE_ANY;
-    }
-
-    /**
-     * Set plugin manager for use with Extensions
-     *
-     * @param ExtensionManagerInterface $extensionManager
-     */
-    public static function setExtensionManager(ExtensionManagerInterface $extensionManager)
-    {
-        static::$extensionManager = $extensionManager;
-    }
-
-    /**
-     * Get plugin manager for use with Extensions
-     *
-     * @return ExtensionManagerInterface
-     */
-    public static function getExtensionManager()
-    {
-        if (!isset(static::$extensionManager)) {
-            static::setExtensionManager(new StandaloneExtensionManager());
-        }
-        return static::$extensionManager;
-    }
-
-    /**
-     * Register an Extension by name
-     *
-     * @param  string $name
-     * @return void
-     * @throws Exception\RuntimeException if unable to resolve Extension class
-     */
-    public static function registerExtension($name)
-    {
-        $feedName  = $name . '\Feed';
-        $entryName = $name . '\Entry';
-        $manager   = static::getExtensionManager();
-        if (static::isRegistered($name)) {
-            if ($manager->has($feedName) || $manager->has($entryName)) {
-                return;
-            }
-        }
-
-        if (!$manager->has($feedName) && !$manager->has($entryName)) {
-            throw new Exception\RuntimeException('Could not load extension: ' . $name
-                . ' using Plugin Loader. Check prefix paths are configured and extension exists.');
-        }
-        if ($manager->has($feedName)) {
-            static::$extensions['feed'][] = $feedName;
-        }
-        if ($manager->has($entryName)) {
-            static::$extensions['entry'][] = $entryName;
-        }
-    }
-
-    /**
-     * Is a given named Extension registered?
-     *
-     * @param  string $extensionName
-     * @return bool
-     */
-    public static function isRegistered($extensionName)
-    {
-        $feedName  = $extensionName . '\Feed';
-        $entryName = $extensionName . '\Entry';
-        if (in_array($feedName, static::$extensions['feed'])
-            || in_array($entryName, static::$extensions['entry'])
-        ) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Get a list of extensions
-     *
-     * @return array
-     */
-    public static function getExtensions()
-    {
-        return static::$extensions;
-    }
-
-    /**
-     * Reset class state to defaults
-     *
-     * @return void
-     */
-    public static function reset()
-    {
-        static::$cache              = null;
-        static::$httpClient         = null;
-        static::$httpMethodOverride = false;
-        static::$httpConditionalGet = false;
-        static::$extensionManager   = null;
-        static::$extensions         = [
-            'feed' => [
-                'DublinCore\Feed',
-                'Atom\Feed'
-            ],
-            'entry' => [
-                'Content\Entry',
-                'DublinCore\Entry',
-                'Atom\Entry'
-            ],
-            'core' => [
-                'DublinCore\Feed',
-                'Atom\Feed',
-                'Content\Entry',
-                'DublinCore\Entry',
-                'Atom\Entry'
-            ]
-        ];
-    }
-
-    /**
-     * Register core (default) extensions
-     *
-     * @return void
-     */
-    protected static function registerCoreExtensions()
-    {
-        static::registerExtension('DublinCore');
-        static::registerExtension('Content');
-        static::registerExtension('Atom');
-        static::registerExtension('Slash');
-        static::registerExtension('WellFormedWeb');
-        static::registerExtension('Thread');
-        static::registerExtension('Podcast');
-    }
-
-    /**
-     * Utility method to apply array_unique operation to a multidimensional
-     * array.
-     *
-     * @param array
-     * @return array
-     */
-    public static function arrayUnique(array $array)
-    {
-        foreach ($array as &$value) {
-            $value = serialize($value);
-        }
-        $array = array_unique($array);
-        foreach ($array as &$value) {
-            $value = unserialize($value);
-        }
-        return $array;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/ReaderImportInterface.php b/vendor/zendframework/zend-feed/src/Reader/ReaderImportInterface.php
deleted file mode 100644
index 0a2edd1..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/ReaderImportInterface.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader;
-
-interface ReaderImportInterface
-{
-    /**
-     * Import a feed by providing a URI
-     *
-     * @param  string $uri The URI to the feed
-     * @param  string $etag OPTIONAL Last received ETag for this resource
-     * @param  string $lastModified OPTIONAL Last-Modified value for this resource
-     * @return Feed\FeedInterface
-     * @throws Exception\RuntimeException
-     */
-    public static function import($uri, $etag = null, $lastModified = null);
-
-    /**
-     * Import a feed from a remote URI
-     *
-     * Performs similarly to import(), except it uses the HTTP client passed to
-     * the method, and does not take into account cached data.
-     *
-     * Primary purpose is to make it possible to use the Reader with alternate
-     * HTTP client implementations.
-     *
-     * @param  string $uri
-     * @param  Http\ClientInterface $client
-     * @return self
-     * @throws Exception\RuntimeException if response is not an Http\ResponseInterface
-     */
-    public static function importRemoteFeed($uri, Http\ClientInterface $client);
-
-
-    /**
-     * Import a feed from a string
-     *
-     * @param  string $string
-     * @return Feed\FeedInterface
-     * @throws Exception\InvalidArgumentException
-     * @throws Exception\RuntimeException
-     */
-    public static function importString($string);
-
-
-    /**
-     * Imports a feed from a file located at $filename.
-     *
-     * @param  string $filename
-     * @throws Exception\RuntimeException
-     * @return Feed\FeedInterface
-     */
-    public static function importFile($filename);
-}
diff --git a/vendor/zendframework/zend-feed/src/Reader/StandaloneExtensionManager.php b/vendor/zendframework/zend-feed/src/Reader/StandaloneExtensionManager.php
deleted file mode 100644
index 9d9fcad..0000000
--- a/vendor/zendframework/zend-feed/src/Reader/StandaloneExtensionManager.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Reader;
-
-class StandaloneExtensionManager implements ExtensionManagerInterface
-{
-    private $extensions = [
-        'Atom\Entry'            => 'Zend\Feed\Reader\Extension\Atom\Entry',
-        'Atom\Feed'             => 'Zend\Feed\Reader\Extension\Atom\Feed',
-        'Content\Entry'         => 'Zend\Feed\Reader\Extension\Content\Entry',
-        'CreativeCommons\Entry' => 'Zend\Feed\Reader\Extension\CreativeCommons\Entry',
-        'CreativeCommons\Feed'  => 'Zend\Feed\Reader\Extension\CreativeCommons\Feed',
-        'DublinCore\Entry'      => 'Zend\Feed\Reader\Extension\DublinCore\Entry',
-        'DublinCore\Feed'       => 'Zend\Feed\Reader\Extension\DublinCore\Feed',
-        'Podcast\Entry'         => 'Zend\Feed\Reader\Extension\Podcast\Entry',
-        'Podcast\Feed'          => 'Zend\Feed\Reader\Extension\Podcast\Feed',
-        'Slash\Entry'           => 'Zend\Feed\Reader\Extension\Slash\Entry',
-        'Syndication\Feed'      => 'Zend\Feed\Reader\Extension\Syndication\Feed',
-        'Thread\Entry'          => 'Zend\Feed\Reader\Extension\Thread\Entry',
-        'WellFormedWeb\Entry'   => 'Zend\Feed\Reader\Extension\WellFormedWeb\Entry',
-    ];
-
-    /**
-     * Do we have the extension?
-     *
-     * @param  string $extension
-     * @return bool
-     */
-    public function has($extension)
-    {
-        return array_key_exists($extension, $this->extensions);
-    }
-
-    /**
-     * Retrieve the extension
-     *
-     * @param  string $extension
-     * @return Extension\AbstractEntry|Extension\AbstractFeed
-     */
-    public function get($extension)
-    {
-        $class = $this->extensions[$extension];
-        return new $class();
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Uri.php b/vendor/zendframework/zend-feed/src/Uri.php
deleted file mode 100644
index 818433f..0000000
--- a/vendor/zendframework/zend-feed/src/Uri.php
+++ /dev/null
@@ -1,184 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed;
-
-class Uri
-{
-    /**
-     * @var string
-     */
-    protected $fragment;
-
-    /**
-     * @var string
-     */
-    protected $host;
-
-    /**
-     * @var string
-     */
-    protected $pass;
-
-    /**
-     * @var string
-     */
-    protected $path;
-
-    /**
-     * @var int
-     */
-    protected $port;
-
-    /**
-     * @var string
-     */
-    protected $query;
-
-    /**
-     * @var string
-     */
-    protected $scheme;
-
-    /**
-     * @var string
-     */
-    protected $user;
-
-    /**
-     * @var bool
-     */
-    protected $valid;
-
-    /**
-     * Valid schemes
-     */
-    protected $validSchemes = [
-        'http',
-        'https',
-        'file',
-    ];
-
-    /**
-     * @param  string $uri
-     */
-    public function __construct($uri)
-    {
-        $parsed = parse_url($uri);
-        if (false === $parsed) {
-            $this->valid = false;
-            return;
-        }
-
-        $this->scheme   = isset($parsed['scheme'])   ? $parsed['scheme']   : null;
-        $this->host     = isset($parsed['host'])     ? $parsed['host']     : null;
-        $this->port     = isset($parsed['port'])     ? $parsed['port']     : null;
-        $this->user     = isset($parsed['user'])     ? $parsed['user']     : null;
-        $this->pass     = isset($parsed['pass'])     ? $parsed['pass']     : null;
-        $this->path     = isset($parsed['path'])     ? $parsed['path']     : null;
-        $this->query    = isset($parsed['query'])    ? $parsed['query']    : null;
-        $this->fragment = isset($parsed['fragment']) ? $parsed['fragment'] : null;
-    }
-
-    /**
-     * Create an instance
-     *
-     * Useful for chained validations
-     *
-     * @param  string $uri
-     * @return self
-     */
-    public static function factory($uri)
-    {
-        return new static($uri);
-    }
-
-    /**
-     * Retrieve the host
-     *
-     * @return string
-     */
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    /**
-     * Retrieve the URI path
-     *
-     * @return string
-     */
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    /**
-     * Retrieve the scheme
-     *
-     * @return string
-     */
-    public function getScheme()
-    {
-        return $this->scheme;
-    }
-
-    /**
-     * Is the URI valid?
-     *
-     * @return bool
-     */
-    public function isValid()
-    {
-        if (false === $this->valid) {
-            return false;
-        }
-
-        if ($this->scheme && !in_array($this->scheme, $this->validSchemes)) {
-            return false;
-        }
-
-        if ($this->host) {
-            if ($this->path && substr($this->path, 0, 1) != '/') {
-                return false;
-            }
-            return true;
-        }
-
-        // no host, but user and/or port... what?
-        if ($this->user || $this->port) {
-            return false;
-        }
-
-        if ($this->path) {
-            // Check path-only (no host) URI
-            if (substr($this->path, 0, 2) == '//') {
-                return false;
-            }
-            return true;
-        }
-
-        if (! ($this->query || $this->fragment)) {
-            // No host, path, query or fragment - this is not a valid URI
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Is the URI absolute?
-     *
-     * @return bool
-     */
-    public function isAbsolute()
-    {
-        return ($this->scheme !== null);
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/AbstractFeed.php b/vendor/zendframework/zend-feed/src/Writer/AbstractFeed.php
deleted file mode 100644
index 5659b47..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/AbstractFeed.php
+++ /dev/null
@@ -1,846 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-use DateTime;
-use Zend\Feed\Uri;
-use Zend\Validator;
-
-class AbstractFeed
-{
-    /**
-     * Contains all Feed level date to append in feed output
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * Holds the value "atom" or "rss" depending on the feed type set when
-     * when last exported.
-     *
-     * @var string
-     */
-    protected $type = null;
-
-    /**
-     * @var $extensions
-     */
-    protected $extensions;
-
-    /**
-     * Constructor: Primarily triggers the registration of core extensions and
-     * loads those appropriate to this data container.
-     *
-     */
-    public function __construct()
-    {
-        Writer::registerCoreExtensions();
-        $this->_loadExtensions();
-    }
-
-    /**
-     * Set a single author
-     *
-     * The following option keys are supported:
-     * 'name'  => (string) The name
-     * 'email' => (string) An optional email
-     * 'uri'   => (string) An optional and valid URI
-     *
-     * @param array $author
-     * @throws Exception\InvalidArgumentException If any value of $author not follow the format.
-     * @return AbstractFeed
-     */
-    public function addAuthor(array $author)
-    {
-        // Check array values
-        if (!array_key_exists('name', $author)
-            || empty($author['name'])
-            || !is_string($author['name'])
-        ) {
-            throw new Exception\InvalidArgumentException(
-                'Invalid parameter: author array must include a "name" key with a non-empty string value');
-        }
-
-        if (isset($author['email'])) {
-            if (empty($author['email']) || !is_string($author['email'])) {
-                throw new Exception\InvalidArgumentException(
-                    'Invalid parameter: "email" array value must be a non-empty string');
-            }
-        }
-        if (isset($author['uri'])) {
-            if (empty($author['uri']) || !is_string($author['uri']) ||
-                !Uri::factory($author['uri'])->isValid()
-            ) {
-                throw new Exception\InvalidArgumentException(
-                    'Invalid parameter: "uri" array value must be a non-empty string and valid URI/IRI');
-            }
-        }
-
-        $this->data['authors'][] = $author;
-
-        return $this;
-    }
-
-    /**
-     * Set an array with feed authors
-     *
-     * @see addAuthor
-     * @param array $authors
-     * @return AbstractFeed
-     */
-    public function addAuthors(array $authors)
-    {
-        foreach ($authors as $author) {
-            $this->addAuthor($author);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Set the copyright entry
-     *
-     * @param  string      $copyright
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setCopyright($copyright)
-    {
-        if (empty($copyright) || !is_string($copyright)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['copyright'] = $copyright;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed creation date
-     *
-     * @param null|int|DateTime
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setDateCreated($date = null)
-    {
-        if ($date === null) {
-            $date = new DateTime();
-        } elseif (is_int($date)) {
-            $date = new DateTime('@' . $date);
-        } elseif (!$date instanceof DateTime) {
-            throw new Exception\InvalidArgumentException('Invalid DateTime object or UNIX Timestamp'
-                                                         . ' passed as parameter');
-        }
-        $this->data['dateCreated'] = $date;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed modification date
-     *
-     * @param null|int|DateTime
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setDateModified($date = null)
-    {
-        if ($date === null) {
-            $date = new DateTime();
-        } elseif (is_int($date)) {
-            $date = new DateTime('@' . $date);
-        } elseif (!$date instanceof DateTime) {
-            throw new Exception\InvalidArgumentException('Invalid DateTime object or UNIX Timestamp'
-                                                         . ' passed as parameter');
-        }
-        $this->data['dateModified'] = $date;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed last-build date. Ignored for Atom 1.0.
-     *
-     * @param null|int|DateTime
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setLastBuildDate($date = null)
-    {
-        if ($date === null) {
-            $date = new DateTime();
-        } elseif (is_int($date)) {
-            $date = new DateTime('@' . $date);
-        } elseif (!$date instanceof DateTime) {
-            throw new Exception\InvalidArgumentException('Invalid DateTime object or UNIX Timestamp'
-                                                         . ' passed as parameter');
-        }
-        $this->data['lastBuildDate'] = $date;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed description
-     *
-     * @param string $description
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setDescription($description)
-    {
-        if (empty($description) || !is_string($description)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['description'] = $description;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed generator entry
-     *
-     * @param array|string $name
-     * @param null|string $version
-     * @param null|string $uri
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setGenerator($name, $version = null, $uri = null)
-    {
-        if (is_array($name)) {
-            $data = $name;
-            if (empty($data['name']) || !is_string($data['name'])) {
-                throw new Exception\InvalidArgumentException('Invalid parameter: "name" must be a non-empty string');
-            }
-            $generator = ['name' => $data['name']];
-            if (isset($data['version'])) {
-                if (empty($data['version']) || !is_string($data['version'])) {
-                    throw new Exception\InvalidArgumentException('Invalid parameter: "version" must be a non-empty string');
-                }
-                $generator['version'] = $data['version'];
-            }
-            if (isset($data['uri'])) {
-                if (empty($data['uri']) || !is_string($data['uri']) || !Uri::factory($data['uri'])->isValid()) {
-                    throw new Exception\InvalidArgumentException('Invalid parameter: "uri" must be a non-empty string and a valid URI/IRI');
-                }
-                $generator['uri'] = $data['uri'];
-            }
-        } else {
-            if (empty($name) || !is_string($name)) {
-                throw new Exception\InvalidArgumentException('Invalid parameter: "name" must be a non-empty string');
-            }
-            $generator = ['name' => $name];
-            if (isset($version)) {
-                if (empty($version) || !is_string($version)) {
-                    throw new Exception\InvalidArgumentException('Invalid parameter: "version" must be a non-empty string');
-                }
-                $generator['version'] = $version;
-            }
-            if (isset($uri)) {
-                if (empty($uri) || !is_string($uri) || !Uri::factory($uri)->isValid()) {
-                    throw new Exception\InvalidArgumentException('Invalid parameter: "uri" must be a non-empty string and a valid URI/IRI');
-                }
-                $generator['uri'] = $uri;
-            }
-        }
-        $this->data['generator'] = $generator;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed ID - URI or URN (via PCRE pattern) supported
-     *
-     * @param string $id
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setId($id)
-    {
-        if ((empty($id) || !is_string($id) || !Uri::factory($id)->isValid())
-            && !preg_match("#^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{1,31}:([a-zA-Z0-9\(\)\+\,\.\:\=\@\;\$\_\!\*\-]|%[0-9a-fA-F]{2})*#", $id)
-            && !$this->_validateTagUri($id)
-        ) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string and valid URI/IRI');
-        }
-        $this->data['id'] = $id;
-
-        return $this;
-    }
-
-    /**
-     * Validate a URI using the tag scheme (RFC 4151)
-     *
-     * @param string $id
-     * @return bool
-     */
-    protected function _validateTagUri($id)
-    {
-        if (preg_match('/^tag:(?P<name>.*),(?P<date>\d{4}-?\d{0,2}-?\d{0,2}):(?P<specific>.*)(.*:)*$/', $id, $matches)) {
-            $dvalid = false;
-            $date = $matches['date'];
-            $d6 = strtotime($date);
-            if ((strlen($date) == 4) && $date <= date('Y')) {
-                $dvalid = true;
-            } elseif ((strlen($date) == 7) && ($d6 < strtotime("now"))) {
-                $dvalid = true;
-            } elseif ((strlen($date) == 10) && ($d6 < strtotime("now"))) {
-                $dvalid = true;
-            }
-            $validator = new Validator\EmailAddress;
-            if ($validator->isValid($matches['name'])) {
-                $nvalid = true;
-            } else {
-                $nvalid = $validator->isValid('info@' . $matches['name']);
-            }
-            return $dvalid && $nvalid;
-        }
-        return false;
-    }
-
-    /**
-     * Set a feed image (URI at minimum). Parameter is a single array with the
-     * required key 'uri'. When rendering as RSS, the required keys are 'uri',
-     * 'title' and 'link'. RSS also specifies three optional parameters 'width',
-     * 'height' and 'description'. Only 'uri' is required and used for Atom rendering.
-     *
-     * @param array $data
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setImage(array $data)
-    {
-        if (empty($data['uri']) || !is_string($data['uri'])
-            || !Uri::factory($data['uri'])->isValid()
-        ) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter \'uri\''
-            . ' must be a non-empty string and valid URI/IRI');
-        }
-        $this->data['image'] = $data;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed language
-     *
-     * @param string $language
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setLanguage($language)
-    {
-        if (empty($language) || !is_string($language)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['language'] = $language;
-
-        return $this;
-    }
-
-    /**
-     * Set a link to the HTML source
-     *
-     * @param string $link
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setLink($link)
-    {
-        if (empty($link) || !is_string($link) || !Uri::factory($link)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string and valid URI/IRI');
-        }
-        $this->data['link'] = $link;
-
-        return $this;
-    }
-
-    /**
-     * Set a link to an XML feed for any feed type/version
-     *
-     * @param string $link
-     * @param string $type
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setFeedLink($link, $type)
-    {
-        if (empty($link) || !is_string($link) || !Uri::factory($link)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: "link"" must be a non-empty string and valid URI/IRI');
-        }
-        if (!in_array(strtolower($type), ['rss', 'rdf', 'atom'])) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: "type"; You must declare the type of feed the link points to, i.e. RSS, RDF or Atom');
-        }
-        $this->data['feedLinks'][strtolower($type)] = $link;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed title
-     *
-     * @param string $title
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setTitle($title)
-    {
-        if (empty($title) || !is_string($title)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['title'] = $title;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed character encoding
-     *
-     * @param string $encoding
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setEncoding($encoding)
-    {
-        if (empty($encoding) || !is_string($encoding)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['encoding'] = $encoding;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed's base URL
-     *
-     * @param string $url
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function setBaseUrl($url)
-    {
-        if (empty($url) || !is_string($url) || !Uri::factory($url)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: "url" array value'
-            . ' must be a non-empty string and valid URI/IRI');
-        }
-        $this->data['baseUrl'] = $url;
-
-        return $this;
-    }
-
-    /**
-     * Add a Pubsubhubbub hub endpoint URL
-     *
-     * @param string $url
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function addHub($url)
-    {
-        if (empty($url) || !is_string($url) || !Uri::factory($url)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: "url" array value'
-            . ' must be a non-empty string and valid URI/IRI');
-        }
-        if (!isset($this->data['hubs'])) {
-            $this->data['hubs'] = [];
-        }
-        $this->data['hubs'][] = $url;
-
-        return $this;
-    }
-
-    /**
-     * Add Pubsubhubbub hub endpoint URLs
-     *
-     * @param array $urls
-     * @return AbstractFeed
-     */
-    public function addHubs(array $urls)
-    {
-        foreach ($urls as $url) {
-            $this->addHub($url);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Add a feed category
-     *
-     * @param array $category
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractFeed
-     */
-    public function addCategory(array $category)
-    {
-        if (!isset($category['term'])) {
-            throw new Exception\InvalidArgumentException('Each category must be an array and '
-            . 'contain at least a "term" element containing the machine '
-            . ' readable category name');
-        }
-        if (isset($category['scheme'])) {
-            if (empty($category['scheme'])
-                || !is_string($category['scheme'])
-                || !Uri::factory($category['scheme'])->isValid()
-            ) {
-                throw new Exception\InvalidArgumentException('The Atom scheme or RSS domain of'
-                . ' a category must be a valid URI');
-            }
-        }
-        if (!isset($this->data['categories'])) {
-            $this->data['categories'] = [];
-        }
-        $this->data['categories'][] = $category;
-
-        return $this;
-    }
-
-    /**
-     * Set an array of feed categories
-     *
-     * @param array $categories
-     * @return AbstractFeed
-     */
-    public function addCategories(array $categories)
-    {
-        foreach ($categories as $category) {
-            $this->addCategory($category);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Get a single author
-     *
-     * @param  int $index
-     * @return string|null
-     */
-    public function getAuthor($index = 0)
-    {
-        if (isset($this->data['authors'][$index])) {
-            return $this->data['authors'][$index];
-        }
-
-        return;
-    }
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return array
-     */
-    public function getAuthors()
-    {
-        if (!array_key_exists('authors', $this->data)) {
-            return;
-        }
-        return $this->data['authors'];
-    }
-
-    /**
-     * Get the copyright entry
-     *
-     * @return string|null
-     */
-    public function getCopyright()
-    {
-        if (!array_key_exists('copyright', $this->data)) {
-            return;
-        }
-        return $this->data['copyright'];
-    }
-
-    /**
-     * Get the feed creation date
-     *
-     * @return string|null
-     */
-    public function getDateCreated()
-    {
-        if (!array_key_exists('dateCreated', $this->data)) {
-            return;
-        }
-        return $this->data['dateCreated'];
-    }
-
-    /**
-     * Get the feed modification date
-     *
-     * @return string|null
-     */
-    public function getDateModified()
-    {
-        if (!array_key_exists('dateModified', $this->data)) {
-            return;
-        }
-        return $this->data['dateModified'];
-    }
-
-    /**
-     * Get the feed last-build date
-     *
-     * @return string|null
-     */
-    public function getLastBuildDate()
-    {
-        if (!array_key_exists('lastBuildDate', $this->data)) {
-            return;
-        }
-        return $this->data['lastBuildDate'];
-    }
-
-    /**
-     * Get the feed description
-     *
-     * @return string|null
-     */
-    public function getDescription()
-    {
-        if (!array_key_exists('description', $this->data)) {
-            return;
-        }
-        return $this->data['description'];
-    }
-
-    /**
-     * Get the feed generator entry
-     *
-     * @return string|null
-     */
-    public function getGenerator()
-    {
-        if (!array_key_exists('generator', $this->data)) {
-            return;
-        }
-        return $this->data['generator'];
-    }
-
-    /**
-     * Get the feed ID
-     *
-     * @return string|null
-     */
-    public function getId()
-    {
-        if (!array_key_exists('id', $this->data)) {
-            return;
-        }
-        return $this->data['id'];
-    }
-
-    /**
-     * Get the feed image URI
-     *
-     * @return array
-     */
-    public function getImage()
-    {
-        if (!array_key_exists('image', $this->data)) {
-            return;
-        }
-        return $this->data['image'];
-    }
-
-    /**
-     * Get the feed language
-     *
-     * @return string|null
-     */
-    public function getLanguage()
-    {
-        if (!array_key_exists('language', $this->data)) {
-            return;
-        }
-        return $this->data['language'];
-    }
-
-    /**
-     * Get a link to the HTML source
-     *
-     * @return string|null
-     */
-    public function getLink()
-    {
-        if (!array_key_exists('link', $this->data)) {
-            return;
-        }
-        return $this->data['link'];
-    }
-
-    /**
-     * Get a link to the XML feed
-     *
-     * @return string|null
-     */
-    public function getFeedLinks()
-    {
-        if (!array_key_exists('feedLinks', $this->data)) {
-            return;
-        }
-        return $this->data['feedLinks'];
-    }
-
-    /**
-     * Get the feed title
-     *
-     * @return string|null
-     */
-    public function getTitle()
-    {
-        if (!array_key_exists('title', $this->data)) {
-            return;
-        }
-        return $this->data['title'];
-    }
-
-    /**
-     * Get the feed character encoding
-     *
-     * @return string|null
-     */
-    public function getEncoding()
-    {
-        if (!array_key_exists('encoding', $this->data)) {
-            return 'UTF-8';
-        }
-        return $this->data['encoding'];
-    }
-
-    /**
-     * Get the feed's base url
-     *
-     * @return string|null
-     */
-    public function getBaseUrl()
-    {
-        if (!array_key_exists('baseUrl', $this->data)) {
-            return;
-        }
-        return $this->data['baseUrl'];
-    }
-
-    /**
-     * Get the URLs used as Pubsubhubbub hubs endpoints
-     *
-     * @return string|null
-     */
-    public function getHubs()
-    {
-        if (!array_key_exists('hubs', $this->data)) {
-            return;
-        }
-        return $this->data['hubs'];
-    }
-
-    /**
-     * Get the feed categories
-     *
-     * @return string|null
-     */
-    public function getCategories()
-    {
-        if (!array_key_exists('categories', $this->data)) {
-            return;
-        }
-        return $this->data['categories'];
-    }
-
-    /**
-     * Resets the instance and deletes all data
-     *
-     * @return void
-     */
-    public function reset()
-    {
-        $this->data = [];
-    }
-
-    /**
-     * Set the current feed type being exported to "rss" or "atom". This allows
-     * other objects to gracefully choose whether to execute or not, depending
-     * on their appropriateness for the current type, e.g. renderers.
-     *
-     * @param string $type
-     * @return AbstractFeed
-     */
-    public function setType($type)
-    {
-        $this->type = $type;
-        return $this;
-    }
-
-    /**
-     * Retrieve the current or last feed type exported.
-     *
-     * @return string Value will be "rss" or "atom"
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * Unset a specific data point
-     *
-     * @param string $name
-     * @return AbstractFeed
-     */
-    public function remove($name)
-    {
-        if (isset($this->data[$name])) {
-            unset($this->data[$name]);
-        }
-        return $this;
-    }
-
-    /**
-     * Method overloading: call given method on first extension implementing it
-     *
-     * @param  string $method
-     * @param  array $args
-     * @return mixed
-     * @throws Exception\BadMethodCallException if no extensions implements the method
-     */
-    public function __call($method, $args)
-    {
-        foreach ($this->extensions as $extension) {
-            try {
-                return call_user_func_array([$extension, $method], $args);
-            } catch (Exception\BadMethodCallException $e) {
-            }
-        }
-        throw new Exception\BadMethodCallException(
-            'Method: ' . $method . ' does not exist and could not be located on a registered Extension'
-        );
-    }
-
-    /**
-     * Load extensions from Zend\Feed\Writer\Writer
-     *
-     * @throws Exception\RuntimeException
-     * @return void
-     */
-    protected function _loadExtensions()
-    {
-        $all     = Writer::getExtensions();
-        $manager = Writer::getExtensionManager();
-        $exts    = $all['feed'];
-        foreach ($exts as $ext) {
-            if (!$manager->has($ext)) {
-                throw new Exception\RuntimeException(sprintf('Unable to load extension "%s"; could not resolve to class', $ext));
-            }
-            $this->extensions[$ext] = $manager->get($ext);
-            $this->extensions[$ext]->setEncoding($this->getEncoding());
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Deleted.php b/vendor/zendframework/zend-feed/src/Writer/Deleted.php
deleted file mode 100644
index 3211026..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Deleted.php
+++ /dev/null
@@ -1,236 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-use DateTime;
-use Zend\Feed\Uri;
-
-/**
-*/
-class Deleted
-{
-    /**
-     * Internal array containing all data associated with this entry or item.
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * Holds the value "atom" or "rss" depending on the feed type set when
-     * when last exported.
-     *
-     * @var string
-     */
-    protected $type = null;
-
-    /**
-     * Set the feed character encoding
-     *
-     * @param  $encoding
-     * @throws Exception\InvalidArgumentException
-     * @return string|null
-     * @return Deleted
-     */
-    public function setEncoding($encoding)
-    {
-        if (empty($encoding) || !is_string($encoding)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['encoding'] = $encoding;
-
-        return $this;
-    }
-
-    /**
-     * Get the feed character encoding
-     *
-     * @return string|null
-     */
-    public function getEncoding()
-    {
-        if (!array_key_exists('encoding', $this->data)) {
-            return 'UTF-8';
-        }
-        return $this->data['encoding'];
-    }
-
-    /**
-     * Unset a specific data point
-     *
-     * @param string $name
-     * @return Deleted
-     */
-    public function remove($name)
-    {
-        if (isset($this->data[$name])) {
-            unset($this->data[$name]);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Set the current feed type being exported to "rss" or "atom". This allows
-     * other objects to gracefully choose whether to execute or not, depending
-     * on their appropriateness for the current type, e.g. renderers.
-     *
-     * @param string $type
-     * @return Deleted
-     */
-    public function setType($type)
-    {
-        $this->type = $type;
-        return $this;
-    }
-
-    /**
-     * Retrieve the current or last feed type exported.
-     *
-     * @return string Value will be "rss" or "atom"
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * Set reference
-     *
-     * @param $reference
-     * @throws Exception\InvalidArgumentException
-     * @return Deleted
-     */
-    public function setReference($reference)
-    {
-        if (empty($reference) || !is_string($reference)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: reference must be a non-empty string');
-        }
-        $this->data['reference'] = $reference;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getReference()
-    {
-        if (!array_key_exists('reference', $this->data)) {
-            return;
-        }
-        return $this->data['reference'];
-    }
-
-    /**
-     * Set when
-     *
-     * @param null|string|DateTime $date
-     * @throws Exception\InvalidArgumentException
-     * @return Deleted
-     */
-    public function setWhen($date = null)
-    {
-        if ($date === null) {
-            $date = new DateTime();
-        } elseif (is_int($date)) {
-            $date = new DateTime('@' . $date);
-        } elseif (!$date instanceof DateTime) {
-            throw new Exception\InvalidArgumentException('Invalid DateTime object or UNIX Timestamp'
-            . ' passed as parameter');
-        }
-        $this->data['when'] = $date;
-
-        return $this;
-    }
-
-    /**
-     * @return DateTime
-     */
-    public function getWhen()
-    {
-        if (!array_key_exists('when', $this->data)) {
-            return;
-        }
-        return $this->data['when'];
-    }
-
-    /**
-     * Set by
-     *
-     * @param array $by
-     * @throws Exception\InvalidArgumentException
-     * @return Deleted
-     */
-    public function setBy(array $by)
-    {
-        $author = [];
-        if (!array_key_exists('name', $by)
-            || empty($by['name'])
-            || !is_string($by['name'])
-        ) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: author array must include a'
-            . ' "name" key with a non-empty string value');
-        }
-        $author['name'] = $by['name'];
-        if (isset($by['email'])) {
-            if (empty($by['email']) || !is_string($by['email'])) {
-                throw new Exception\InvalidArgumentException('Invalid parameter: "email" array'
-                . ' value must be a non-empty string');
-            }
-            $author['email'] = $by['email'];
-        }
-        if (isset($by['uri'])) {
-            if (empty($by['uri'])
-                || !is_string($by['uri'])
-                || !Uri::factory($by['uri'])->isValid()
-            ) {
-                throw new Exception\InvalidArgumentException('Invalid parameter: "uri" array value must'
-                 . ' be a non-empty string and valid URI/IRI');
-            }
-            $author['uri'] = $by['uri'];
-        }
-        $this->data['by'] = $author;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getBy()
-    {
-        if (!array_key_exists('by', $this->data)) {
-            return;
-        }
-        return $this->data['by'];
-    }
-
-    /**
-     * @param string $comment
-     * @return Deleted
-     */
-    public function setComment($comment)
-    {
-        $this->data['comment'] = $comment;
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getComment()
-    {
-        if (!array_key_exists('comment', $this->data)) {
-            return;
-        }
-        return $this->data['comment'];
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Entry.php b/vendor/zendframework/zend-feed/src/Writer/Entry.php
deleted file mode 100644
index a802ffa..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Entry.php
+++ /dev/null
@@ -1,765 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-use DateTime;
-use Zend\Feed\Uri;
-
-/**
-*/
-class Entry
-{
-    /**
-     * Internal array containing all data associated with this entry or item.
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * Registered extensions
-     *
-     * @var array
-     */
-    protected $extensions = [];
-
-    /**
-     * Holds the value "atom" or "rss" depending on the feed type set when
-     * when last exported.
-     *
-     * @var string
-     */
-    protected $type = null;
-
-    /**
-     * Constructor: Primarily triggers the registration of core extensions and
-     * loads those appropriate to this data container.
-     *
-     */
-    public function __construct()
-    {
-        Writer::registerCoreExtensions();
-        $this->_loadExtensions();
-    }
-
-    /**
-     * Set a single author
-     *
-     * The following option keys are supported:
-     * 'name'  => (string) The name
-     * 'email' => (string) An optional email
-     * 'uri'   => (string) An optional and valid URI
-     *
-     * @param array $author
-     * @throws Exception\InvalidArgumentException If any value of $author not follow the format.
-     * @return Entry
-     */
-    public function addAuthor(array $author)
-    {
-        // Check array values
-        if (!array_key_exists('name', $author)
-            || empty($author['name'])
-            || !is_string($author['name'])
-        ) {
-            throw new Exception\InvalidArgumentException(
-                'Invalid parameter: author array must include a "name" key with a non-empty string value');
-        }
-
-        if (isset($author['email'])) {
-            if (empty($author['email']) || !is_string($author['email'])) {
-                throw new Exception\InvalidArgumentException(
-                    'Invalid parameter: "email" array value must be a non-empty string');
-            }
-        }
-        if (isset($author['uri'])) {
-            if (empty($author['uri']) || !is_string($author['uri']) ||
-                !Uri::factory($author['uri'])->isValid()
-            ) {
-                throw new Exception\InvalidArgumentException(
-                    'Invalid parameter: "uri" array value must be a non-empty string and valid URI/IRI');
-            }
-        }
-
-        $this->data['authors'][] = $author;
-
-        return $this;
-    }
-
-    /**
-     * Set an array with feed authors
-     *
-     * @see addAuthor
-     * @param array $authors
-     * @return Entry
-     */
-    public function addAuthors(array $authors)
-    {
-        foreach ($authors as $author) {
-            $this->addAuthor($author);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Set the feed character encoding
-     *
-     * @param string $encoding
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setEncoding($encoding)
-    {
-        if (empty($encoding) || !is_string($encoding)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['encoding'] = $encoding;
-
-        return $this;
-    }
-
-    /**
-     * Get the feed character encoding
-     *
-     * @return string|null
-     */
-    public function getEncoding()
-    {
-        if (!array_key_exists('encoding', $this->data)) {
-            return 'UTF-8';
-        }
-        return $this->data['encoding'];
-    }
-
-    /**
-     * Set the copyright entry
-     *
-     * @param string $copyright
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setCopyright($copyright)
-    {
-        if (empty($copyright) || !is_string($copyright)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['copyright'] = $copyright;
-
-        return $this;
-    }
-
-    /**
-     * Set the entry's content
-     *
-     * @param string $content
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setContent($content)
-    {
-        if (empty($content) || !is_string($content)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['content'] = $content;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed creation date
-     *
-     * @param null|int|DateTime $date
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setDateCreated($date = null)
-    {
-        if ($date === null) {
-            $date = new DateTime();
-        } elseif (is_int($date)) {
-            $date = new DateTime('@' . $date);
-        } elseif (!$date instanceof DateTime) {
-            throw new Exception\InvalidArgumentException('Invalid DateTime object or UNIX Timestamp passed as parameter');
-        }
-        $this->data['dateCreated'] = $date;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed modification date
-     *
-     * @param null|int|DateTime $date
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setDateModified($date = null)
-    {
-        if ($date === null) {
-            $date = new DateTime();
-        } elseif (is_int($date)) {
-            $date = new DateTime('@' . $date);
-        } elseif (!$date instanceof DateTime) {
-            throw new Exception\InvalidArgumentException('Invalid DateTime object or UNIX Timestamp passed as parameter');
-        }
-        $this->data['dateModified'] = $date;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed description
-     *
-     * @param string $description
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setDescription($description)
-    {
-        if (empty($description) || !is_string($description)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['description'] = $description;
-
-        return $this;
-    }
-
-    /**
-     * Set the feed ID
-     *
-     * @param string $id
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setId($id)
-    {
-        if (empty($id) || !is_string($id)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['id'] = $id;
-
-        return $this;
-    }
-
-    /**
-     * Set a link to the HTML source of this entry
-     *
-     * @param string $link
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setLink($link)
-    {
-        if (empty($link) || !is_string($link) || !Uri::factory($link)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string and valid URI/IRI');
-        }
-        $this->data['link'] = $link;
-
-        return $this;
-    }
-
-    /**
-     * Set the number of comments associated with this entry
-     *
-     * @param int $count
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setCommentCount($count)
-    {
-        if (!is_numeric($count) || (int) $count != $count || (int) $count < 0) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: "count" must be a positive integer number or zero');
-        }
-        $this->data['commentCount'] = (int) $count;
-
-        return $this;
-    }
-
-    /**
-     * Set a link to a HTML page containing comments associated with this entry
-     *
-     * @param string $link
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setCommentLink($link)
-    {
-        if (empty($link) || !is_string($link) || !Uri::factory($link)->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: "link" must be a non-empty string and valid URI/IRI');
-        }
-        $this->data['commentLink'] = $link;
-
-        return $this;
-    }
-
-    /**
-     * Set a link to an XML feed for any comments associated with this entry
-     *
-     * @param array $link
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setCommentFeedLink(array $link)
-    {
-        if (!isset($link['uri']) || !is_string($link['uri']) || !Uri::factory($link['uri'])->isValid()) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: "link" must be a non-empty string and valid URI/IRI');
-        }
-        if (!isset($link['type']) || !in_array($link['type'], ['atom', 'rss', 'rdf'])) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: "type" must be one'
-            . ' of "atom", "rss" or "rdf"');
-        }
-        if (!isset($this->data['commentFeedLinks'])) {
-            $this->data['commentFeedLinks'] = [];
-        }
-        $this->data['commentFeedLinks'][] = $link;
-
-        return $this;
-    }
-
-    /**
-     * Set a links to an XML feed for any comments associated with this entry.
-     * Each link is an array with keys "uri" and "type", where type is one of:
-     * "atom", "rss" or "rdf".
-     *
-     * @param array $links
-     * @return Entry
-     */
-    public function setCommentFeedLinks(array $links)
-    {
-        foreach ($links as $link) {
-            $this->setCommentFeedLink($link);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Set the feed title
-     *
-     * @param string $title
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setTitle($title)
-    {
-        if (empty($title) || !is_string($title)) {
-            throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
-        }
-        $this->data['title'] = $title;
-
-        return $this;
-    }
-
-    /**
-     * Get an array with feed authors
-     *
-     * @return array
-     */
-    public function getAuthors()
-    {
-        if (!array_key_exists('authors', $this->data)) {
-            return;
-        }
-        return $this->data['authors'];
-    }
-
-    /**
-     * Get the entry content
-     *
-     * @return string
-     */
-    public function getContent()
-    {
-        if (!array_key_exists('content', $this->data)) {
-            return;
-        }
-        return $this->data['content'];
-    }
-
-    /**
-     * Get the entry copyright information
-     *
-     * @return string
-     */
-    public function getCopyright()
-    {
-        if (!array_key_exists('copyright', $this->data)) {
-            return;
-        }
-        return $this->data['copyright'];
-    }
-
-    /**
-     * Get the entry creation date
-     *
-     * @return string
-     */
-    public function getDateCreated()
-    {
-        if (!array_key_exists('dateCreated', $this->data)) {
-            return;
-        }
-        return $this->data['dateCreated'];
-    }
-
-    /**
-     * Get the entry modification date
-     *
-     * @return string
-     */
-    public function getDateModified()
-    {
-        if (!array_key_exists('dateModified', $this->data)) {
-            return;
-        }
-        return $this->data['dateModified'];
-    }
-
-    /**
-     * Get the entry description
-     *
-     * @return string
-     */
-    public function getDescription()
-    {
-        if (!array_key_exists('description', $this->data)) {
-            return;
-        }
-        return $this->data['description'];
-    }
-
-    /**
-     * Get the entry ID
-     *
-     * @return string
-     */
-    public function getId()
-    {
-        if (!array_key_exists('id', $this->data)) {
-            return;
-        }
-        return $this->data['id'];
-    }
-
-    /**
-     * Get a link to the HTML source
-     *
-     * @return string|null
-     */
-    public function getLink()
-    {
-        if (!array_key_exists('link', $this->data)) {
-            return;
-        }
-        return $this->data['link'];
-    }
-
-
-    /**
-     * Get all links
-     *
-     * @return array
-     */
-    public function getLinks()
-    {
-        if (!array_key_exists('links', $this->data)) {
-            return;
-        }
-        return $this->data['links'];
-    }
-
-    /**
-     * Get the entry title
-     *
-     * @return string
-     */
-    public function getTitle()
-    {
-        if (!array_key_exists('title', $this->data)) {
-            return;
-        }
-        return $this->data['title'];
-    }
-
-    /**
-     * Get the number of comments/replies for current entry
-     *
-     * @return int
-     */
-    public function getCommentCount()
-    {
-        if (!array_key_exists('commentCount', $this->data)) {
-            return;
-        }
-        return $this->data['commentCount'];
-    }
-
-    /**
-     * Returns a URI pointing to the HTML page where comments can be made on this entry
-     *
-     * @return string
-     */
-    public function getCommentLink()
-    {
-        if (!array_key_exists('commentLink', $this->data)) {
-            return;
-        }
-        return $this->data['commentLink'];
-    }
-
-    /**
-     * Returns an array of URIs pointing to a feed of all comments for this entry
-     * where the array keys indicate the feed type (atom, rss or rdf).
-     *
-     * @return string
-     */
-    public function getCommentFeedLinks()
-    {
-        if (!array_key_exists('commentFeedLinks', $this->data)) {
-            return;
-        }
-        return $this->data['commentFeedLinks'];
-    }
-
-    /**
-     * Add an entry category
-     *
-     * @param array $category
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function addCategory(array $category)
-    {
-        if (!isset($category['term'])) {
-            throw new Exception\InvalidArgumentException('Each category must be an array and '
-            . 'contain at least a "term" element containing the machine '
-            . ' readable category name');
-        }
-        if (isset($category['scheme'])) {
-            if (empty($category['scheme'])
-                || !is_string($category['scheme'])
-                || !Uri::factory($category['scheme'])->isValid()
-            ) {
-                throw new Exception\InvalidArgumentException('The Atom scheme or RSS domain of'
-                . ' a category must be a valid URI');
-            }
-        }
-        if (!isset($this->data['categories'])) {
-            $this->data['categories'] = [];
-        }
-        $this->data['categories'][] = $category;
-
-        return $this;
-    }
-
-    /**
-     * Set an array of entry categories
-     *
-     * @param array $categories
-     * @return Entry
-     */
-    public function addCategories(array $categories)
-    {
-        foreach ($categories as $category) {
-            $this->addCategory($category);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Get the entry categories
-     *
-     * @return string|null
-     */
-    public function getCategories()
-    {
-        if (!array_key_exists('categories', $this->data)) {
-            return;
-        }
-        return $this->data['categories'];
-    }
-
-    /**
-     * Adds an enclosure to the entry. The array parameter may contain the
-     * keys 'uri', 'type' and 'length'. Only 'uri' is required for Atom, though the
-     * others must also be provided or RSS rendering (where they are required)
-     * will throw an Exception.
-     *
-     * @param array $enclosure
-     * @throws Exception\InvalidArgumentException
-     * @return Entry
-     */
-    public function setEnclosure(array $enclosure)
-    {
-        if (!isset($enclosure['uri'])) {
-            throw new Exception\InvalidArgumentException('Enclosure "uri" is not set');
-        }
-        if (!Uri::factory($enclosure['uri'])->isValid()) {
-            throw new Exception\InvalidArgumentException('Enclosure "uri" is not a valid URI/IRI');
-        }
-        $this->data['enclosure'] = $enclosure;
-
-        return $this;
-    }
-
-    /**
-     * Retrieve an array of all enclosures to be added to entry.
-     *
-     * @return array
-     */
-    public function getEnclosure()
-    {
-        if (!array_key_exists('enclosure', $this->data)) {
-            return;
-        }
-        return $this->data['enclosure'];
-    }
-
-    /**
-     * Unset a specific data point
-     *
-     * @param string $name
-     * @return Entry
-     */
-    public function remove($name)
-    {
-        if (isset($this->data[$name])) {
-            unset($this->data[$name]);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Get registered extensions
-     *
-     * @return array
-     */
-    public function getExtensions()
-    {
-        return $this->extensions;
-    }
-
-    /**
-     * Return an Extension object with the matching name (postfixed with _Entry)
-     *
-     * @param string $name
-     * @return object
-     */
-    public function getExtension($name)
-    {
-        if (array_key_exists($name . '\\Entry', $this->extensions)) {
-            return $this->extensions[$name . '\\Entry'];
-        }
-        return;
-    }
-
-    /**
-     * Set the current feed type being exported to "rss" or "atom". This allows
-     * other objects to gracefully choose whether to execute or not, depending
-     * on their appropriateness for the current type, e.g. renderers.
-     *
-     * @param string $type
-     * @return Entry
-     */
-    public function setType($type)
-    {
-        $this->type = $type;
-        return $this;
-    }
-
-    /**
-     * Retrieve the current or last feed type exported.
-     *
-     * @return string Value will be "rss" or "atom"
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * Method overloading: call given method on first extension implementing it
-     *
-     * @param  string $method
-     * @param  array $args
-     * @return mixed
-     * @throws Exception\BadMethodCallException if no extensions implements the method
-     */
-    public function __call($method, $args)
-    {
-        foreach ($this->extensions as $extension) {
-            try {
-                return call_user_func_array([$extension, $method], $args);
-            } catch (\BadMethodCallException $e) {
-            }
-        }
-        throw new Exception\BadMethodCallException('Method: ' . $method
-            . ' does not exist and could not be located on a registered Extension');
-    }
-
-    /**
-     * Creates a new Zend\Feed\Writer\Source data container for use. This is NOT
-     * added to the current feed automatically, but is necessary to create a
-     * container with some initial values preset based on the current feed data.
-     *
-     * @return Source
-     */
-    public function createSource()
-    {
-        $source = new Source;
-        if ($this->getEncoding()) {
-            $source->setEncoding($this->getEncoding());
-        }
-        $source->setType($this->getType());
-        return $source;
-    }
-
-    /**
-     * Appends a Zend\Feed\Writer\Entry object representing a new entry/item
-     * the feed data container's internal group of entries.
-     *
-     * @param Source $source
-     * @return Entry
-     */
-    public function setSource(Source $source)
-    {
-        $this->data['source'] = $source;
-        return $this;
-    }
-
-    /**
-     * @return Source
-     */
-    public function getSource()
-    {
-        if (isset($this->data['source'])) {
-            return $this->data['source'];
-        }
-        return;
-    }
-
-    /**
-     * Load extensions from Zend\Feed\Writer\Writer
-     *
-     * @return void
-     */
-    protected function _loadExtensions()
-    {
-        $all     = Writer::getExtensions();
-        $manager = Writer::getExtensionManager();
-        $exts    = $all['entry'];
-        foreach ($exts as $ext) {
-            $this->extensions[$ext] = $manager->get($ext);
-            $this->extensions[$ext]->setEncoding($this->getEncoding());
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Exception/BadMethodCallException.php b/vendor/zendframework/zend-feed/src/Writer/Exception/BadMethodCallException.php
deleted file mode 100644
index b2ea2be..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Exception/BadMethodCallException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Exception;
-
-use Zend\Feed\Exception;
-
-/**
- * Feed exceptions
- *
- * Class to represent exceptions that occur during Feed operations.
- */
-class BadMethodCallException extends Exception\BadMethodCallException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Exception/ExceptionInterface.php b/vendor/zendframework/zend-feed/src/Writer/Exception/ExceptionInterface.php
deleted file mode 100644
index ee8bdaf..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Exception;
-
-/**
- * Feed exceptions
- *
- * Interface to represent exceptions that occur during Feed operations.
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Exception/InvalidArgumentException.php b/vendor/zendframework/zend-feed/src/Writer/Exception/InvalidArgumentException.php
deleted file mode 100644
index d8c4a8b..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Exception;
-
-use Zend\Feed\Exception;
-
-/**
- * Feed exceptions
- *
- * Class to represent exceptions that occur during Feed operations.
- */
-class InvalidArgumentException extends Exception\InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Exception/RuntimeException.php b/vendor/zendframework/zend-feed/src/Writer/Exception/RuntimeException.php
deleted file mode 100644
index ae8ee36..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Exception/RuntimeException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Exception;
-
-use Zend\Feed\Exception;
-
-class RuntimeException extends Exception\RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/AbstractRenderer.php b/vendor/zendframework/zend-feed/src/Writer/Extension/AbstractRenderer.php
deleted file mode 100644
index 1a32b47..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/AbstractRenderer.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension;
-
-use DOMDocument;
-use DOMElement;
-
-/**
-*/
-abstract class AbstractRenderer implements RendererInterface
-{
-    /**
-     * @var DOMDocument
-     */
-    protected $dom = null;
-
-    /**
-     * @var mixed
-     */
-    protected $entry = null;
-
-    /**
-     * @var DOMElement
-     */
-    protected $base = null;
-
-    /**
-     * @var mixed
-     */
-    protected $container = null;
-
-    /**
-     * @var string
-     */
-    protected $type = null;
-
-    /**
-     * @var DOMElement
-     */
-    protected $rootElement = null;
-
-    /**
-     * Encoding of all text values
-     *
-     * @var string
-     */
-    protected $encoding = 'UTF-8';
-
-    /**
-     * Set the data container
-     *
-     * @param  mixed $container
-     * @return AbstractRenderer
-     */
-    public function setDataContainer($container)
-    {
-        $this->container = $container;
-        return $this;
-    }
-
-    /**
-     * Set feed encoding
-     *
-     * @param  string $enc
-     * @return AbstractRenderer
-     */
-    public function setEncoding($enc)
-    {
-        $this->encoding = $enc;
-        return $this;
-    }
-
-    /**
-     * Get feed encoding
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        return $this->encoding;
-    }
-
-    /**
-     * Set DOMDocument and DOMElement on which to operate
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $base
-     * @return AbstractRenderer
-     */
-    public function setDomDocument(DOMDocument $dom, DOMElement $base)
-    {
-        $this->dom  = $dom;
-        $this->base = $base;
-        return $this;
-    }
-
-    /**
-     * Get data container being rendered
-     *
-     * @return mixed
-     */
-    public function getDataContainer()
-    {
-        return $this->container;
-    }
-
-    /**
-     * Set feed type
-     *
-     * @param  string $type
-     * @return AbstractRenderer
-     */
-    public function setType($type)
-    {
-        $this->type = $type;
-        return $this;
-    }
-
-    /**
-     * Get feedtype
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * Set root element of document
-     *
-     * @param  DOMElement $root
-     * @return AbstractRenderer
-     */
-    public function setRootElement(DOMElement $root)
-    {
-        $this->rootElement = $root;
-        return $this;
-    }
-
-    /**
-     * Get root element
-     *
-     * @return DOMElement
-     */
-    public function getRootElement()
-    {
-        return $this->rootElement;
-    }
-
-    /**
-     * Append namespaces to feed
-     *
-     * @return void
-     */
-    abstract protected function _appendNamespaces();
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/Atom/Renderer/Feed.php b/vendor/zendframework/zend-feed/src/Writer/Extension/Atom/Renderer/Feed.php
deleted file mode 100644
index 25571c0..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/Atom/Renderer/Feed.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\Atom\Renderer;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer\Extension;
-
-/**
-*/
-class Feed extends Extension\AbstractRenderer
-{
-    /**
-     * Set to TRUE if a rendering method actually renders something. This
-     * is used to prevent premature appending of a XML namespace declaration
-     * until an element which requires it is actually appended.
-     *
-     * @var bool
-     */
-    protected $called = false;
-
-    /**
-     * Render feed
-     *
-     * @return void
-     */
-    public function render()
-    {
-        /**
-         * RSS 2.0 only. Used mainly to include Atom links and
-         * Pubsubhubbub Hub endpoint URIs under the Atom namespace
-         */
-        if (strtolower($this->getType()) == 'atom') {
-            return;
-        }
-        $this->_setFeedLinks($this->dom, $this->base);
-        $this->_setHubs($this->dom, $this->base);
-        if ($this->called) {
-            $this->_appendNamespaces();
-        }
-    }
-
-    /**
-     * Append namespaces to root element of feed
-     *
-     * @return void
-     */
-    protected function _appendNamespaces()
-    {
-        $this->getRootElement()->setAttribute('xmlns:atom',
-            'http://www.w3.org/2005/Atom');
-    }
-
-    /**
-     * Set feed link elements
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setFeedLinks(DOMDocument $dom, DOMElement $root)
-    {
-        $flinks = $this->getDataContainer()->getFeedLinks();
-        if (!$flinks || empty($flinks)) {
-            return;
-        }
-        foreach ($flinks as $type => $href) {
-            if (strtolower($type) == $this->getType()) { // issue 2605
-                $mime  = 'application/' . strtolower($type) . '+xml';
-                $flink = $dom->createElement('atom:link');
-                $root->appendChild($flink);
-                $flink->setAttribute('rel', 'self');
-                $flink->setAttribute('type', $mime);
-                $flink->setAttribute('href', $href);
-            }
-        }
-        $this->called = true;
-    }
-
-    /**
-     * Set PuSH hubs
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setHubs(DOMDocument $dom, DOMElement $root)
-    {
-        $hubs = $this->getDataContainer()->getHubs();
-        if (!$hubs || empty($hubs)) {
-            return;
-        }
-        foreach ($hubs as $hubUrl) {
-            $hub = $dom->createElement('atom:link');
-            $hub->setAttribute('rel', 'hub');
-            $hub->setAttribute('href', $hubUrl);
-            $root->appendChild($hub);
-        }
-        $this->called = true;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/Content/Renderer/Entry.php b/vendor/zendframework/zend-feed/src/Writer/Extension/Content/Renderer/Entry.php
deleted file mode 100644
index 939b249..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/Content/Renderer/Entry.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\Content\Renderer;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer\Extension;
-
-/**
-*/
-class Entry extends Extension\AbstractRenderer
-{
-    /**
-     * Set to TRUE if a rendering method actually renders something. This
-     * is used to prevent premature appending of a XML namespace declaration
-     * until an element which requires it is actually appended.
-     *
-     * @var bool
-     */
-    protected $called = false;
-
-    /**
-     * Render entry
-     *
-     * @return void
-     */
-    public function render()
-    {
-        if (strtolower($this->getType()) == 'atom') {
-            return;
-        }
-        $this->_setContent($this->dom, $this->base);
-        if ($this->called) {
-            $this->_appendNamespaces();
-        }
-    }
-
-    /**
-     * Append namespaces to root element
-     *
-     * @return void
-     */
-    protected function _appendNamespaces()
-    {
-        $this->getRootElement()->setAttribute('xmlns:content',
-            'http://purl.org/rss/1.0/modules/content/');
-    }
-
-    /**
-     * Set entry content
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setContent(DOMDocument $dom, DOMElement $root)
-    {
-        $content = $this->getDataContainer()->getContent();
-        if (!$content) {
-            return;
-        }
-        $element = $dom->createElement('content:encoded');
-        $root->appendChild($element);
-        $cdata = $dom->createCDATASection($content);
-        $element->appendChild($cdata);
-        $this->called = true;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/DublinCore/Renderer/Entry.php b/vendor/zendframework/zend-feed/src/Writer/Extension/DublinCore/Renderer/Entry.php
deleted file mode 100644
index 5cc86cd..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/DublinCore/Renderer/Entry.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\DublinCore\Renderer;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer\Extension;
-
-/**
-*/
-class Entry extends Extension\AbstractRenderer
-{
-    /**
-     * Set to TRUE if a rendering method actually renders something. This
-     * is used to prevent premature appending of a XML namespace declaration
-     * until an element which requires it is actually appended.
-     *
-     * @var bool
-     */
-    protected $called = false;
-
-    /**
-     * Render entry
-     *
-     * @return void
-     */
-    public function render()
-    {
-        if (strtolower($this->getType()) == 'atom') {
-            return;
-        }
-        $this->_setAuthors($this->dom, $this->base);
-        if ($this->called) {
-            $this->_appendNamespaces();
-        }
-    }
-
-    /**
-     * Append namespaces to entry
-     *
-     * @return void
-     */
-    protected function _appendNamespaces()
-    {
-        $this->getRootElement()->setAttribute('xmlns:dc',
-            'http://purl.org/dc/elements/1.1/');
-    }
-
-    /**
-     * Set entry author elements
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setAuthors(DOMDocument $dom, DOMElement $root)
-    {
-        $authors = $this->getDataContainer()->getAuthors();
-        if (!$authors || empty($authors)) {
-            return;
-        }
-        foreach ($authors as $data) {
-            $author = $this->dom->createElement('dc:creator');
-            if (array_key_exists('name', $data)) {
-                $text = $dom->createTextNode($data['name']);
-                $author->appendChild($text);
-                $root->appendChild($author);
-            }
-        }
-        $this->called = true;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/DublinCore/Renderer/Feed.php b/vendor/zendframework/zend-feed/src/Writer/Extension/DublinCore/Renderer/Feed.php
deleted file mode 100644
index 160b5a4..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/DublinCore/Renderer/Feed.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\DublinCore\Renderer;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer\Extension;
-
-/**
-*/
-class Feed extends Extension\AbstractRenderer
-{
-    /**
-     * Set to TRUE if a rendering method actually renders something. This
-     * is used to prevent premature appending of a XML namespace declaration
-     * until an element which requires it is actually appended.
-     *
-     * @var bool
-     */
-    protected $called = false;
-
-    /**
-     * Render feed
-     *
-     * @return void
-     */
-    public function render()
-    {
-        if (strtolower($this->getType()) == 'atom') {
-            return;
-        }
-        $this->_setAuthors($this->dom, $this->base);
-        if ($this->called) {
-            $this->_appendNamespaces();
-        }
-    }
-
-    /**
-     * Append namespaces to feed element
-     *
-     * @return void
-     */
-    protected function _appendNamespaces()
-    {
-        $this->getRootElement()->setAttribute('xmlns:dc',
-            'http://purl.org/dc/elements/1.1/');
-    }
-
-    /**
-     * Set feed authors
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setAuthors(DOMDocument $dom, DOMElement $root)
-    {
-        $authors = $this->getDataContainer()->getAuthors();
-        if (!$authors || empty($authors)) {
-            return;
-        }
-        foreach ($authors as $data) {
-            $author = $this->dom->createElement('dc:creator');
-            if (array_key_exists('name', $data)) {
-                $text = $dom->createTextNode($data['name']);
-                $author->appendChild($text);
-                $root->appendChild($author);
-            }
-        }
-        $this->called = true;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Entry.php b/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Entry.php
deleted file mode 100644
index 595689a..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Entry.php
+++ /dev/null
@@ -1,246 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\ITunes;
-
-use Zend\Feed\Writer;
-use Zend\Feed\Writer\Extension;
-use Zend\Stdlib\StringUtils;
-use Zend\Stdlib\StringWrapper\StringWrapperInterface;
-
-/**
-*/
-class Entry
-{
-    /**
-     * Array of Feed data for rendering by Extension's renderers
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * Encoding of all text values
-     *
-     * @var string
-     */
-    protected $encoding = 'UTF-8';
-
-    /**
-     * The used string wrapper supporting encoding
-     *
-     * @var StringWrapperInterface
-     */
-    protected $stringWrapper;
-
-    public function __construct()
-    {
-        $this->stringWrapper = StringUtils::getWrapper($this->encoding);
-    }
-
-    /**
-     * Set feed encoding
-     *
-     * @param  string $enc
-     * @return Entry
-     */
-    public function setEncoding($enc)
-    {
-        $this->stringWrapper = StringUtils::getWrapper($enc);
-        $this->encoding      = $enc;
-        return $this;
-    }
-
-    /**
-     * Get feed encoding
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        return $this->encoding;
-    }
-
-    /**
-     * Set a block value of "yes" or "no". You may also set an empty string.
-     *
-     * @param  string
-     * @return Entry
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesBlock($value)
-    {
-        if (!ctype_alpha($value) && strlen($value) > 0) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "block" may only'
-            . ' contain alphabetic characters');
-        }
-
-        if ($this->stringWrapper->strlen($value) > 255) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "block" may only'
-            . ' contain a maximum of 255 characters');
-        }
-        $this->data['block'] = $value;
-    }
-
-    /**
-     * Add authors to itunes entry
-     *
-     * @param  array $values
-     * @return Entry
-     */
-    public function addItunesAuthors(array $values)
-    {
-        foreach ($values as $value) {
-            $this->addItunesAuthor($value);
-        }
-        return $this;
-    }
-
-    /**
-     * Add author to itunes entry
-     *
-     * @param  string $value
-     * @return Entry
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function addItunesAuthor($value)
-    {
-        if ($this->stringWrapper->strlen($value) > 255) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "author" may only'
-            . ' contain a maximum of 255 characters each');
-        }
-        if (!isset($this->data['authors'])) {
-            $this->data['authors'] = [];
-        }
-        $this->data['authors'][] = $value;
-        return $this;
-    }
-
-    /**
-     * Set duration
-     *
-     * @param  int $value
-     * @return Entry
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesDuration($value)
-    {
-        $value = (string) $value;
-        if (!ctype_digit($value)
-            && !preg_match("/^\d+:[0-5]{1}[0-9]{1}$/", $value)
-            && !preg_match("/^\d+:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/", $value)
-        ) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "duration" may only'
-            . ' be of a specified [[HH:]MM:]SS format');
-        }
-        $this->data['duration'] = $value;
-        return $this;
-    }
-
-    /**
-     * Set "explicit" flag
-     *
-     * @param  bool $value
-     * @return Entry
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesExplicit($value)
-    {
-        if (!in_array($value, ['yes', 'no', 'clean'])) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "explicit" may only'
-            . ' be one of "yes", "no" or "clean"');
-        }
-        $this->data['explicit'] = $value;
-        return $this;
-    }
-
-    /**
-     * Set keywords
-     *
-     * @param  array $value
-     * @return Entry
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesKeywords(array $value)
-    {
-        if (count($value) > 12) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "keywords" may only'
-            . ' contain a maximum of 12 terms');
-        }
-
-        $concat = implode(',', $value);
-        if ($this->stringWrapper->strlen($concat) > 255) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "keywords" may only'
-            . ' have a concatenated length of 255 chars where terms are delimited'
-            . ' by a comma');
-        }
-        $this->data['keywords'] = $value;
-        return $this;
-    }
-
-    /**
-     * Set subtitle
-     *
-     * @param  string $value
-     * @return Entry
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesSubtitle($value)
-    {
-        if ($this->stringWrapper->strlen($value) > 255) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "subtitle" may only'
-            . ' contain a maximum of 255 characters');
-        }
-        $this->data['subtitle'] = $value;
-        return $this;
-    }
-
-    /**
-     * Set summary
-     *
-     * @param  string $value
-     * @return Entry
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesSummary($value)
-    {
-        if ($this->stringWrapper->strlen($value) > 4000) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "summary" may only'
-            . ' contain a maximum of 4000 characters');
-        }
-        $this->data['summary'] = $value;
-        return $this;
-    }
-
-    /**
-     * Overloading to itunes specific setters
-     *
-     * @param  string $method
-     * @param  array $params
-     * @throws Writer\Exception\BadMethodCallException
-     * @return mixed
-     */
-    public function __call($method, array $params)
-    {
-        $point = lcfirst(substr($method, 9));
-        if (!method_exists($this, 'setItunes' . ucfirst($point))
-            && !method_exists($this, 'addItunes' . ucfirst($point))
-        ) {
-            throw new Writer\Exception\BadMethodCallException(
-                'invalid method: ' . $method
-            );
-        }
-        if (!array_key_exists($point, $this->data)
-            || empty($this->data[$point])
-        ) {
-            return;
-        }
-        return $this->data[$point];
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php b/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php
deleted file mode 100644
index 0b21b3b..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php
+++ /dev/null
@@ -1,362 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\ITunes;
-
-use Zend\Feed\Uri;
-use Zend\Feed\Writer;
-use Zend\Stdlib\StringUtils;
-use Zend\Stdlib\StringWrapper\StringWrapperInterface;
-
-/**
-*/
-class Feed
-{
-    /**
-     * Array of Feed data for rendering by Extension's renderers
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * Encoding of all text values
-     *
-     * @var string
-     */
-    protected $encoding = 'UTF-8';
-
-    /**
-     * The used string wrapper supporting encoding
-     *
-     * @var StringWrapperInterface
-     */
-    protected $stringWrapper;
-
-    /**
-     * Constructor
-     */
-    public function __construct()
-    {
-        $this->stringWrapper = StringUtils::getWrapper($this->encoding);
-    }
-
-    /**
-     * Set feed encoding
-     *
-     * @param  string $enc
-     * @return Feed
-     */
-    public function setEncoding($enc)
-    {
-        $this->stringWrapper = StringUtils::getWrapper($enc);
-        $this->encoding      = $enc;
-        return $this;
-    }
-
-    /**
-     * Get feed encoding
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        return $this->encoding;
-    }
-
-    /**
-     * Set a block value of "yes" or "no". You may also set an empty string.
-     *
-     * @param  string
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesBlock($value)
-    {
-        if (!ctype_alpha($value) && strlen($value) > 0) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "block" may only'
-            . ' contain alphabetic characters');
-        }
-        if ($this->stringWrapper->strlen($value) > 255) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "block" may only'
-            . ' contain a maximum of 255 characters');
-        }
-        $this->data['block'] = $value;
-        return $this;
-    }
-
-    /**
-     * Add feed authors
-     *
-     * @param  array $values
-     * @return Feed
-     */
-    public function addItunesAuthors(array $values)
-    {
-        foreach ($values as $value) {
-            $this->addItunesAuthor($value);
-        }
-        return $this;
-    }
-
-    /**
-     * Add feed author
-     *
-     * @param  string $value
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function addItunesAuthor($value)
-    {
-        if ($this->stringWrapper->strlen($value) > 255) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "author" may only'
-            . ' contain a maximum of 255 characters each');
-        }
-        if (!isset($this->data['authors'])) {
-            $this->data['authors'] = [];
-        }
-        $this->data['authors'][] = $value;
-        return $this;
-    }
-
-    /**
-     * Set feed categories
-     *
-     * @param  array $values
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesCategories(array $values)
-    {
-        if (!isset($this->data['categories'])) {
-            $this->data['categories'] = [];
-        }
-        foreach ($values as $key => $value) {
-            if (!is_array($value)) {
-                if ($this->stringWrapper->strlen($value) > 255) {
-                    throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "category" may only'
-                    . ' contain a maximum of 255 characters each');
-                }
-                $this->data['categories'][] = $value;
-            } else {
-                if ($this->stringWrapper->strlen($key) > 255) {
-                    throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "category" may only'
-                    . ' contain a maximum of 255 characters each');
-                }
-                $this->data['categories'][$key] = [];
-                foreach ($value as $val) {
-                    if ($this->stringWrapper->strlen($val) > 255) {
-                        throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "category" may only'
-                        . ' contain a maximum of 255 characters each');
-                    }
-                    $this->data['categories'][$key][] = $val;
-                }
-            }
-        }
-        return $this;
-    }
-
-    /**
-     * Set feed image (icon)
-     *
-     * @param  string $value
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesImage($value)
-    {
-        if (!Uri::factory($value)->isValid()) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "image" may only'
-            . ' be a valid URI/IRI');
-        }
-        if (!in_array(substr($value, -3), ['jpg', 'png'])) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "image" may only'
-            . ' use file extension "jpg" or "png" which must be the last three'
-            . ' characters of the URI (i.e. no query string or fragment)');
-        }
-        $this->data['image'] = $value;
-        return $this;
-    }
-
-    /**
-     * Set feed cumulative duration
-     *
-     * @param  string $value
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesDuration($value)
-    {
-        $value = (string) $value;
-        if (!ctype_digit($value)
-            && !preg_match("/^\d+:[0-5]{1}[0-9]{1}$/", $value)
-            && !preg_match("/^\d+:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/", $value)
-        ) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "duration" may only'
-            . ' be of a specified [[HH:]MM:]SS format');
-        }
-        $this->data['duration'] = $value;
-        return $this;
-    }
-
-    /**
-     * Set "explicit" flag
-     *
-     * @param  bool $value
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesExplicit($value)
-    {
-        if (!in_array($value, ['yes', 'no', 'clean'])) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "explicit" may only'
-            . ' be one of "yes", "no" or "clean"');
-        }
-        $this->data['explicit'] = $value;
-        return $this;
-    }
-
-    /**
-     * Set feed keywords
-     *
-     * @param  array $value
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesKeywords(array $value)
-    {
-        if (count($value) > 12) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "keywords" may only'
-            . ' contain a maximum of 12 terms');
-        }
-        $concat = implode(',', $value);
-        if ($this->stringWrapper->strlen($concat) > 255) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "keywords" may only'
-            . ' have a concatenated length of 255 chars where terms are delimited'
-            . ' by a comma');
-        }
-        $this->data['keywords'] = $value;
-        return $this;
-    }
-
-    /**
-     * Set new feed URL
-     *
-     * @param  string $value
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesNewFeedUrl($value)
-    {
-        if (!Uri::factory($value)->isValid()) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "newFeedUrl" may only'
-            . ' be a valid URI/IRI');
-        }
-        $this->data['newFeedUrl'] = $value;
-        return $this;
-    }
-
-    /**
-     * Add feed owners
-     *
-     * @param  array $values
-     * @return Feed
-     */
-    public function addItunesOwners(array $values)
-    {
-        foreach ($values as $value) {
-            $this->addItunesOwner($value);
-        }
-        return $this;
-    }
-
-    /**
-     * Add feed owner
-     *
-     * @param  array $value
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function addItunesOwner(array $value)
-    {
-        if (!isset($value['name']) || !isset($value['email'])) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "owner" must'
-            . ' be an array containing keys "name" and "email"');
-        }
-        if ($this->stringWrapper->strlen($value['name']) > 255
-            || $this->stringWrapper->strlen($value['email']) > 255
-        ) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: any "owner" may only'
-            . ' contain a maximum of 255 characters each for "name" and "email"');
-        }
-        if (!isset($this->data['owners'])) {
-            $this->data['owners'] = [];
-        }
-        $this->data['owners'][] = $value;
-        return $this;
-    }
-
-    /**
-     * Set feed subtitle
-     *
-     * @param  string $value
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesSubtitle($value)
-    {
-        if ($this->stringWrapper->strlen($value) > 255) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "subtitle" may only'
-            . ' contain a maximum of 255 characters');
-        }
-        $this->data['subtitle'] = $value;
-        return $this;
-    }
-
-    /**
-     * Set feed summary
-     *
-     * @param  string $value
-     * @return Feed
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function setItunesSummary($value)
-    {
-        if ($this->stringWrapper->strlen($value) > 4000) {
-            throw new Writer\Exception\InvalidArgumentException('invalid parameter: "summary" may only'
-            . ' contain a maximum of 4000 characters');
-        }
-        $this->data['summary'] = $value;
-        return $this;
-    }
-
-    /**
-     * Overloading: proxy to internal setters
-     *
-     * @param  string $method
-     * @param  array $params
-     * @return mixed
-     * @throws Writer\Exception\BadMethodCallException
-     */
-    public function __call($method, array $params)
-    {
-        $point = lcfirst(substr($method, 9));
-        if (!method_exists($this, 'setItunes' . ucfirst($point))
-            && !method_exists($this, 'addItunes' . ucfirst($point))
-        ) {
-            throw new Writer\Exception\BadMethodCallException(
-                'invalid method: ' . $method
-            );
-        }
-        if (!array_key_exists($point, $this->data) || empty($this->data[$point])) {
-            return;
-        }
-        return $this->data[$point];
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Renderer/Entry.php b/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Renderer/Entry.php
deleted file mode 100644
index ed8f732..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Renderer/Entry.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\ITunes\Renderer;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer\Extension;
-
-/**
-*/
-class Entry extends Extension\AbstractRenderer
-{
-    /**
-     * Set to TRUE if a rendering method actually renders something. This
-     * is used to prevent premature appending of a XML namespace declaration
-     * until an element which requires it is actually appended.
-     *
-     * @var bool
-     */
-    protected $called = false;
-
-    /**
-     * Render entry
-     *
-     * @return void
-     */
-    public function render()
-    {
-        $this->_setAuthors($this->dom, $this->base);
-        $this->_setBlock($this->dom, $this->base);
-        $this->_setDuration($this->dom, $this->base);
-        $this->_setExplicit($this->dom, $this->base);
-        $this->_setKeywords($this->dom, $this->base);
-        $this->_setSubtitle($this->dom, $this->base);
-        $this->_setSummary($this->dom, $this->base);
-        if ($this->called) {
-            $this->_appendNamespaces();
-        }
-    }
-
-    /**
-     * Append namespaces to entry root
-     *
-     * @return void
-     */
-    protected function _appendNamespaces()
-    {
-        $this->getRootElement()->setAttribute('xmlns:itunes',
-            'http://www.itunes.com/dtds/podcast-1.0.dtd');
-    }
-
-    /**
-     * Set entry authors
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setAuthors(DOMDocument $dom, DOMElement $root)
-    {
-        $authors = $this->getDataContainer()->getItunesAuthors();
-        if (!$authors || empty($authors)) {
-            return;
-        }
-        foreach ($authors as $author) {
-            $el = $dom->createElement('itunes:author');
-            $text = $dom->createTextNode($author);
-            $el->appendChild($text);
-            $root->appendChild($el);
-            $this->called = true;
-        }
-    }
-
-    /**
-     * Set itunes block
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setBlock(DOMDocument $dom, DOMElement $root)
-    {
-        $block = $this->getDataContainer()->getItunesBlock();
-        if ($block === null) {
-            return;
-        }
-        $el = $dom->createElement('itunes:block');
-        $text = $dom->createTextNode($block);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set entry duration
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDuration(DOMDocument $dom, DOMElement $root)
-    {
-        $duration = $this->getDataContainer()->getItunesDuration();
-        if (!$duration) {
-            return;
-        }
-        $el = $dom->createElement('itunes:duration');
-        $text = $dom->createTextNode($duration);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set explicit flag
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setExplicit(DOMDocument $dom, DOMElement $root)
-    {
-        $explicit = $this->getDataContainer()->getItunesExplicit();
-        if ($explicit === null) {
-            return;
-        }
-        $el = $dom->createElement('itunes:explicit');
-        $text = $dom->createTextNode($explicit);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set entry keywords
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setKeywords(DOMDocument $dom, DOMElement $root)
-    {
-        $keywords = $this->getDataContainer()->getItunesKeywords();
-        if (!$keywords || empty($keywords)) {
-            return;
-        }
-        $el = $dom->createElement('itunes:keywords');
-        $text = $dom->createTextNode(implode(',', $keywords));
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set entry subtitle
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setSubtitle(DOMDocument $dom, DOMElement $root)
-    {
-        $subtitle = $this->getDataContainer()->getItunesSubtitle();
-        if (!$subtitle) {
-            return;
-        }
-        $el = $dom->createElement('itunes:subtitle');
-        $text = $dom->createTextNode($subtitle);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set entry summary
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setSummary(DOMDocument $dom, DOMElement $root)
-    {
-        $summary = $this->getDataContainer()->getItunesSummary();
-        if (!$summary) {
-            return;
-        }
-        $el = $dom->createElement('itunes:summary');
-        $text = $dom->createTextNode($summary);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Renderer/Feed.php b/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Renderer/Feed.php
deleted file mode 100644
index d978f03..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Renderer/Feed.php
+++ /dev/null
@@ -1,303 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\ITunes\Renderer;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer\Extension;
-
-/**
-*/
-class Feed extends Extension\AbstractRenderer
-{
-    /**
-     * Set to TRUE if a rendering method actually renders something. This
-     * is used to prevent premature appending of a XML namespace declaration
-     * until an element which requires it is actually appended.
-     *
-     * @var bool
-     */
-    protected $called = false;
-
-    /**
-     * Render feed
-     *
-     * @return void
-     */
-    public function render()
-    {
-        $this->_setAuthors($this->dom, $this->base);
-        $this->_setBlock($this->dom, $this->base);
-        $this->_setCategories($this->dom, $this->base);
-        $this->_setImage($this->dom, $this->base);
-        $this->_setDuration($this->dom, $this->base);
-        $this->_setExplicit($this->dom, $this->base);
-        $this->_setKeywords($this->dom, $this->base);
-        $this->_setNewFeedUrl($this->dom, $this->base);
-        $this->_setOwners($this->dom, $this->base);
-        $this->_setSubtitle($this->dom, $this->base);
-        $this->_setSummary($this->dom, $this->base);
-        if ($this->called) {
-            $this->_appendNamespaces();
-        }
-    }
-
-    /**
-     * Append feed namespaces
-     *
-     * @return void
-     */
-    protected function _appendNamespaces()
-    {
-        $this->getRootElement()->setAttribute('xmlns:itunes',
-            'http://www.itunes.com/dtds/podcast-1.0.dtd');
-    }
-
-    /**
-     * Set feed authors
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setAuthors(DOMDocument $dom, DOMElement $root)
-    {
-        $authors = $this->getDataContainer()->getItunesAuthors();
-        if (!$authors || empty($authors)) {
-            return;
-        }
-        foreach ($authors as $author) {
-            $el = $dom->createElement('itunes:author');
-            $text = $dom->createTextNode($author);
-            $el->appendChild($text);
-            $root->appendChild($el);
-        }
-        $this->called = true;
-    }
-
-    /**
-     * Set feed itunes block
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setBlock(DOMDocument $dom, DOMElement $root)
-    {
-        $block = $this->getDataContainer()->getItunesBlock();
-        if ($block === null) {
-            return;
-        }
-        $el = $dom->createElement('itunes:block');
-        $text = $dom->createTextNode($block);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set feed categories
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCategories(DOMDocument $dom, DOMElement $root)
-    {
-        $cats = $this->getDataContainer()->getItunesCategories();
-        if (!$cats || empty($cats)) {
-            return;
-        }
-        foreach ($cats as $key => $cat) {
-            if (!is_array($cat)) {
-                $el = $dom->createElement('itunes:category');
-                $el->setAttribute('text', $cat);
-                $root->appendChild($el);
-            } else {
-                $el = $dom->createElement('itunes:category');
-                $el->setAttribute('text', $key);
-                $root->appendChild($el);
-                foreach ($cat as $subcat) {
-                    $el2 = $dom->createElement('itunes:category');
-                    $el2->setAttribute('text', $subcat);
-                    $el->appendChild($el2);
-                }
-            }
-        }
-        $this->called = true;
-    }
-
-    /**
-     * Set feed image (icon)
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setImage(DOMDocument $dom, DOMElement $root)
-    {
-        $image = $this->getDataContainer()->getItunesImage();
-        if (!$image) {
-            return;
-        }
-        $el = $dom->createElement('itunes:image');
-        $el->setAttribute('href', $image);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set feed cumulative duration
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDuration(DOMDocument $dom, DOMElement $root)
-    {
-        $duration = $this->getDataContainer()->getItunesDuration();
-        if (!$duration) {
-            return;
-        }
-        $el = $dom->createElement('itunes:duration');
-        $text = $dom->createTextNode($duration);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set explicit flag
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setExplicit(DOMDocument $dom, DOMElement $root)
-    {
-        $explicit = $this->getDataContainer()->getItunesExplicit();
-        if ($explicit === null) {
-            return;
-        }
-        $el = $dom->createElement('itunes:explicit');
-        $text = $dom->createTextNode($explicit);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set feed keywords
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setKeywords(DOMDocument $dom, DOMElement $root)
-    {
-        $keywords = $this->getDataContainer()->getItunesKeywords();
-        if (!$keywords || empty($keywords)) {
-            return;
-        }
-        $el = $dom->createElement('itunes:keywords');
-        $text = $dom->createTextNode(implode(',', $keywords));
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set feed's new URL
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setNewFeedUrl(DOMDocument $dom, DOMElement $root)
-    {
-        $url = $this->getDataContainer()->getItunesNewFeedUrl();
-        if (!$url) {
-            return;
-        }
-        $el = $dom->createElement('itunes:new-feed-url');
-        $text = $dom->createTextNode($url);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set feed owners
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setOwners(DOMDocument $dom, DOMElement $root)
-    {
-        $owners = $this->getDataContainer()->getItunesOwners();
-        if (!$owners || empty($owners)) {
-            return;
-        }
-        foreach ($owners as $owner) {
-            $el = $dom->createElement('itunes:owner');
-            $name = $dom->createElement('itunes:name');
-            $text = $dom->createTextNode($owner['name']);
-            $name->appendChild($text);
-            $email = $dom->createElement('itunes:email');
-            $text = $dom->createTextNode($owner['email']);
-            $email->appendChild($text);
-            $root->appendChild($el);
-            $el->appendChild($name);
-            $el->appendChild($email);
-        }
-        $this->called = true;
-    }
-
-    /**
-     * Set feed subtitle
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setSubtitle(DOMDocument $dom, DOMElement $root)
-    {
-        $subtitle = $this->getDataContainer()->getItunesSubtitle();
-        if (!$subtitle) {
-            return;
-        }
-        $el = $dom->createElement('itunes:subtitle');
-        $text = $dom->createTextNode($subtitle);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-
-    /**
-     * Set feed summary
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setSummary(DOMDocument $dom, DOMElement $root)
-    {
-        $summary = $this->getDataContainer()->getItunesSummary();
-        if (!$summary) {
-            return;
-        }
-        $el = $dom->createElement('itunes:summary');
-        $text = $dom->createTextNode($summary);
-        $el->appendChild($text);
-        $root->appendChild($el);
-        $this->called = true;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/RendererInterface.php b/vendor/zendframework/zend-feed/src/Writer/Extension/RendererInterface.php
deleted file mode 100644
index 9afe88b..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/RendererInterface.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension;
-
-use DOMDocument;
-use DOMElement;
-
-/**
-*/
-interface RendererInterface
-{
-    /**
-     * Set the data container
-     *
-     * @param  mixed $container
-     * @return void
-     */
-    public function setDataContainer($container);
-
-    /**
-     * Retrieve container
-     *
-     * @return mixed
-     */
-    public function getDataContainer();
-
-    /**
-     * Set DOMDocument and DOMElement on which to operate
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $base
-     * @return void
-     */
-    public function setDomDocument(DOMDocument $dom, DOMElement $base);
-
-    /**
-     * Render
-     *
-     * @return void
-     */
-    public function render();
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/Slash/Renderer/Entry.php b/vendor/zendframework/zend-feed/src/Writer/Extension/Slash/Renderer/Entry.php
deleted file mode 100644
index c74cb02..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/Slash/Renderer/Entry.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\Slash\Renderer;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer\Extension;
-
-/**
-*/
-class Entry extends Extension\AbstractRenderer
-{
-    /**
-     * Set to TRUE if a rendering method actually renders something. This
-     * is used to prevent premature appending of a XML namespace declaration
-     * until an element which requires it is actually appended.
-     *
-     * @var bool
-     */
-    protected $called = false;
-
-    /**
-     * Render entry
-     *
-     * @return void
-     */
-    public function render()
-    {
-        if (strtolower($this->getType()) == 'atom') {
-            return; // RSS 2.0 only
-        }
-        $this->_setCommentCount($this->dom, $this->base);
-        if ($this->called) {
-            $this->_appendNamespaces();
-        }
-    }
-
-    /**
-     * Append entry namespaces
-     *
-     * @return void
-     */
-    protected function _appendNamespaces()
-    {
-        $this->getRootElement()->setAttribute('xmlns:slash',
-            'http://purl.org/rss/1.0/modules/slash/');
-    }
-
-    /**
-     * Set entry comment count
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCommentCount(DOMDocument $dom, DOMElement $root)
-    {
-        $count = $this->getDataContainer()->getCommentCount();
-        if (!$count) {
-            $count = 0;
-        }
-        $tcount = $this->dom->createElement('slash:comments');
-        $tcount->nodeValue = $count;
-        $root->appendChild($tcount);
-        $this->called = true;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/Threading/Renderer/Entry.php b/vendor/zendframework/zend-feed/src/Writer/Extension/Threading/Renderer/Entry.php
deleted file mode 100644
index 6f19641..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/Threading/Renderer/Entry.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\Threading\Renderer;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer\Extension;
-
-/**
-*/
-class Entry extends Extension\AbstractRenderer
-{
-    /**
-     * Set to TRUE if a rendering method actually renders something. This
-     * is used to prevent premature appending of a XML namespace declaration
-     * until an element which requires it is actually appended.
-     *
-     * @var bool
-     */
-    protected $called = false;
-
-    /**
-     * Render entry
-     *
-     * @return void
-     */
-    public function render()
-    {
-        if (strtolower($this->getType()) == 'rss') {
-            return; // Atom 1.0 only
-        }
-        $this->_setCommentLink($this->dom, $this->base);
-        $this->_setCommentFeedLinks($this->dom, $this->base);
-        $this->_setCommentCount($this->dom, $this->base);
-        if ($this->called) {
-            $this->_appendNamespaces();
-        }
-    }
-
-    /**
-     * Append entry namespaces
-     *
-     * @return void
-     */
-    protected function _appendNamespaces()
-    {
-        $this->getRootElement()->setAttribute('xmlns:thr',
-            'http://purl.org/syndication/thread/1.0');
-    }
-
-    /**
-     * Set comment link
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCommentLink(DOMDocument $dom, DOMElement $root)
-    {
-        $link = $this->getDataContainer()->getCommentLink();
-        if (!$link) {
-            return;
-        }
-        $clink = $this->dom->createElement('link');
-        $clink->setAttribute('rel', 'replies');
-        $clink->setAttribute('type', 'text/html');
-        $clink->setAttribute('href', $link);
-        $count = $this->getDataContainer()->getCommentCount();
-        if ($count !== null) {
-            $clink->setAttribute('thr:count', $count);
-        }
-        $root->appendChild($clink);
-        $this->called = true;
-    }
-
-    /**
-     * Set comment feed links
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCommentFeedLinks(DOMDocument $dom, DOMElement $root)
-    {
-        $links = $this->getDataContainer()->getCommentFeedLinks();
-        if (!$links || empty($links)) {
-            return;
-        }
-        foreach ($links as $link) {
-            $flink = $this->dom->createElement('link');
-            $flink->setAttribute('rel', 'replies');
-            $flink->setAttribute('type', 'application/' . $link['type'] . '+xml');
-            $flink->setAttribute('href', $link['uri']);
-            $count = $this->getDataContainer()->getCommentCount();
-            if ($count !== null) {
-                $flink->setAttribute('thr:count', $count);
-            }
-            $root->appendChild($flink);
-            $this->called = true;
-        }
-    }
-
-    /**
-     * Set entry comment count
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCommentCount(DOMDocument $dom, DOMElement $root)
-    {
-        $count = $this->getDataContainer()->getCommentCount();
-        if ($count === null) {
-            return;
-        }
-        $tcount = $this->dom->createElement('thr:total');
-        $tcount->nodeValue = $count;
-        $root->appendChild($tcount);
-        $this->called = true;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/WellFormedWeb/Renderer/Entry.php b/vendor/zendframework/zend-feed/src/Writer/Extension/WellFormedWeb/Renderer/Entry.php
deleted file mode 100644
index 48c0d8f..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/WellFormedWeb/Renderer/Entry.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Extension\WellFormedWeb\Renderer;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer\Extension;
-
-/**
-*/
-class Entry extends Extension\AbstractRenderer
-{
-    /**
-     * Set to TRUE if a rendering method actually renders something. This
-     * is used to prevent premature appending of a XML namespace declaration
-     * until an element which requires it is actually appended.
-     *
-     * @var bool
-     */
-    protected $called = false;
-
-    /**
-     * Render entry
-     *
-     * @return void
-     */
-    public function render()
-    {
-        if (strtolower($this->getType()) == 'atom') {
-            return; // RSS 2.0 only
-        }
-        $this->_setCommentFeedLinks($this->dom, $this->base);
-        if ($this->called) {
-            $this->_appendNamespaces();
-        }
-    }
-
-    /**
-     * Append entry namespaces
-     *
-     * @return void
-     */
-    protected function _appendNamespaces()
-    {
-        $this->getRootElement()->setAttribute('xmlns:wfw',
-            'http://wellformedweb.org/CommentAPI/');
-    }
-
-    /**
-     * Set entry comment feed links
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCommentFeedLinks(DOMDocument $dom, DOMElement $root)
-    {
-        $links = $this->getDataContainer()->getCommentFeedLinks();
-        if (!$links || empty($links)) {
-            return;
-        }
-        foreach ($links as $link) {
-            if ($link['type'] == 'rss') {
-                $flink = $this->dom->createElement('wfw:commentRss');
-                $text = $dom->createTextNode($link['uri']);
-                $flink->appendChild($text);
-                $root->appendChild($flink);
-            }
-        }
-        $this->called = true;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/ExtensionManager.php b/vendor/zendframework/zend-feed/src/Writer/ExtensionManager.php
deleted file mode 100644
index b0e0e3b..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/ExtensionManager.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-/**
- * Default implementation of ExtensionManagerInterface
- *
- * Decorator of ExtensionPluginManager.
- */
-class ExtensionManager implements ExtensionManagerInterface
-{
-    protected $pluginManager;
-
-    /**
-     * Constructor
-     *
-     * Seeds the extension manager with a plugin manager; if none provided,
-     * creates an instance.
-     *
-     * @param  null|ExtensionPluginManager $pluginManager
-     */
-    public function __construct(ExtensionPluginManager $pluginManager = null)
-    {
-        if (null === $pluginManager) {
-            $pluginManager = new ExtensionPluginManager();
-        }
-        $this->pluginManager = $pluginManager;
-    }
-
-    /**
-     * Method overloading
-     *
-     * Proxy to composed ExtensionPluginManager instance.
-     *
-     * @param  string $method
-     * @param  array $args
-     * @return mixed
-     * @throws Exception\BadMethodCallException
-     */
-    public function __call($method, $args)
-    {
-        if (!method_exists($this->pluginManager, $method)) {
-            throw new Exception\BadMethodCallException(sprintf(
-                'Method by name of %s does not exist in %s',
-                $method,
-                __CLASS__
-            ));
-        }
-        return call_user_func_array([$this->pluginManager, $method], $args);
-    }
-
-    /**
-     * Get the named extension
-     *
-     * @param  string $name
-     * @return Extension\AbstractRenderer
-     */
-    public function get($name)
-    {
-        return $this->pluginManager->get($name);
-    }
-
-    /**
-     * Do we have the named extension?
-     *
-     * @param  string $name
-     * @return bool
-     */
-    public function has($name)
-    {
-        return $this->pluginManager->has($name);
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/ExtensionManagerInterface.php b/vendor/zendframework/zend-feed/src/Writer/ExtensionManagerInterface.php
deleted file mode 100644
index b0e28a0..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/ExtensionManagerInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-interface ExtensionManagerInterface
-{
-    /**
-     * Do we have the extension?
-     *
-     * @param  string $extension
-     * @return bool
-     */
-    public function has($extension);
-
-    /**
-     * Retrieve the extension
-     *
-     * @param  string $extension
-     * @return mixed
-     */
-    public function get($extension);
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/ExtensionPluginManager.php b/vendor/zendframework/zend-feed/src/Writer/ExtensionPluginManager.php
deleted file mode 100644
index 8586b48..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/ExtensionPluginManager.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-use Zend\ServiceManager\AbstractPluginManager;
-
-/**
- * Plugin manager implementation for feed writer extensions
- *
- * Validation checks that we have an Entry, Feed, or Extension\AbstractRenderer.
- */
-class ExtensionPluginManager extends AbstractPluginManager
-{
-    /**
-     * Default set of extension classes
-     *
-     * @var array
-     */
-    protected $invokableClasses = [
-        'atomrendererfeed'           => 'Zend\Feed\Writer\Extension\Atom\Renderer\Feed',
-        'contentrendererentry'       => 'Zend\Feed\Writer\Extension\Content\Renderer\Entry',
-        'dublincorerendererentry'    => 'Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry',
-        'dublincorerendererfeed'     => 'Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed',
-        'itunesentry'                => 'Zend\Feed\Writer\Extension\ITunes\Entry',
-        'itunesfeed'                 => 'Zend\Feed\Writer\Extension\ITunes\Feed',
-        'itunesrendererentry'        => 'Zend\Feed\Writer\Extension\ITunes\Renderer\Entry',
-        'itunesrendererfeed'         => 'Zend\Feed\Writer\Extension\ITunes\Renderer\Feed',
-        'slashrendererentry'         => 'Zend\Feed\Writer\Extension\Slash\Renderer\Entry',
-        'threadingrendererentry'     => 'Zend\Feed\Writer\Extension\Threading\Renderer\Entry',
-        'wellformedwebrendererentry' => 'Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry',
-    ];
-
-    /**
-     * Do not share instances
-     *
-     * @var bool
-     */
-    protected $shareByDefault = false;
-
-    /**
-     * Validate the plugin
-     *
-     * Checks that the extension loaded is of a valid type.
-     *
-     * @param  mixed $plugin
-     * @return void
-     * @throws Exception\InvalidArgumentException if invalid
-     */
-    public function validatePlugin($plugin)
-    {
-        if ($plugin instanceof Extension\AbstractRenderer) {
-            // we're okay
-            return;
-        }
-
-        if ('Feed' == substr(get_class($plugin), -4)) {
-            // we're okay
-            return;
-        }
-
-        if ('Entry' == substr(get_class($plugin), -5)) {
-            // we're okay
-            return;
-        }
-
-        throw new Exception\InvalidArgumentException(sprintf(
-            'Plugin of type %s is invalid; must implement %s\Extension\RendererInterface '
-            . 'or the classname must end in "Feed" or "Entry"',
-            (is_object($plugin) ? get_class($plugin) : gettype($plugin)),
-            __NAMESPACE__
-        ));
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Feed.php b/vendor/zendframework/zend-feed/src/Writer/Feed.php
deleted file mode 100644
index 5d01232..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Feed.php
+++ /dev/null
@@ -1,239 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-use Countable;
-use Iterator;
-
-/**
-*/
-class Feed extends AbstractFeed implements Iterator, Countable
-{
-    /**
-     * Contains all entry objects
-     *
-     * @var array
-     */
-    protected $entries = [];
-
-    /**
-     * A pointer for the iterator to keep track of the entries array
-     *
-     * @var int
-     */
-    protected $entriesKey = 0;
-
-    /**
-     * Creates a new Zend\Feed\Writer\Entry data container for use. This is NOT
-     * added to the current feed automatically, but is necessary to create a
-     * container with some initial values preset based on the current feed data.
-     *
-     * @return \Zend\Feed\Writer\Entry
-     */
-    public function createEntry()
-    {
-        $entry = new Entry;
-        if ($this->getEncoding()) {
-            $entry->setEncoding($this->getEncoding());
-        }
-        $entry->setType($this->getType());
-        return $entry;
-    }
-
-    /**
-     * Appends a Zend\Feed\Writer\Deleted object representing a new entry tombstone
-     * to the feed data container's internal group of entries.
-     *
-     * @param Deleted $deleted
-     * @return void
-     */
-    public function addTombstone(Deleted $deleted)
-    {
-        $this->entries[] = $deleted;
-    }
-
-    /**
-     * Creates a new Zend\Feed\Writer\Deleted data container for use. This is NOT
-     * added to the current feed automatically, but is necessary to create a
-     * container with some initial values preset based on the current feed data.
-     *
-     * @return Deleted
-     */
-    public function createTombstone()
-    {
-        $deleted = new Deleted;
-        if ($this->getEncoding()) {
-            $deleted->setEncoding($this->getEncoding());
-        }
-        $deleted->setType($this->getType());
-        return $deleted;
-    }
-
-    /**
-     * Appends a Zend\Feed\Writer\Entry object representing a new entry/item
-     * the feed data container's internal group of entries.
-     *
-     * @param Entry $entry
-     * @return Feed
-     */
-    public function addEntry(Entry $entry)
-    {
-        $this->entries[] = $entry;
-        return $this;
-    }
-
-    /**
-     * Removes a specific indexed entry from the internal queue. Entries must be
-     * added to a feed container in order to be indexed.
-     *
-     * @param int $index
-     * @throws Exception\InvalidArgumentException
-     * @return Feed
-     */
-    public function removeEntry($index)
-    {
-        if (!isset($this->entries[$index])) {
-            throw new Exception\InvalidArgumentException('Undefined index: ' . $index . '. Entry does not exist.');
-        }
-        unset($this->entries[$index]);
-
-        return $this;
-    }
-
-    /**
-     * Retrieve a specific indexed entry from the internal queue. Entries must be
-     * added to a feed container in order to be indexed.
-     *
-     * @param int $index
-     * @throws Exception\InvalidArgumentException
-     */
-    public function getEntry($index = 0)
-    {
-        if (isset($this->entries[$index])) {
-            return $this->entries[$index];
-        }
-        throw new Exception\InvalidArgumentException('Undefined index: ' . $index . '. Entry does not exist.');
-    }
-
-    /**
-     * Orders all indexed entries by date, thus offering date ordered readable
-     * content where a parser (or Homo Sapien) ignores the generic rule that
-     * XML element order is irrelevant and has no intrinsic meaning.
-     *
-     * Using this method will alter the original indexation.
-     *
-     * @return Feed
-     */
-    public function orderByDate()
-    {
-        /**
-         * Could do with some improvement for performance perhaps
-         */
-        $timestamp = time();
-        $entries = [];
-        foreach ($this->entries as $entry) {
-            if ($entry->getDateModified()) {
-                $timestamp = (int) $entry->getDateModified()->getTimestamp();
-            } elseif ($entry->getDateCreated()) {
-                $timestamp = (int) $entry->getDateCreated()->getTimestamp();
-            }
-            $entries[$timestamp] = $entry;
-        }
-        krsort($entries, SORT_NUMERIC);
-        $this->entries = array_values($entries);
-
-        return $this;
-    }
-
-    /**
-     * Get the number of feed entries.
-     * Required by the Iterator interface.
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return count($this->entries);
-    }
-
-    /**
-     * Return the current entry
-     *
-     * @return Entry
-     */
-    public function current()
-    {
-        return $this->entries[$this->key()];
-    }
-
-    /**
-     * Return the current feed key
-     *
-     * @return mixed
-     */
-    public function key()
-    {
-        return $this->entriesKey;
-    }
-
-    /**
-     * Move the feed pointer forward
-     *
-     * @return void
-     */
-    public function next()
-    {
-        ++$this->entriesKey;
-    }
-
-    /**
-     * Reset the pointer in the feed object
-     *
-     * @return void
-     */
-    public function rewind()
-    {
-        $this->entriesKey = 0;
-    }
-
-    /**
-     * Check to see if the iterator is still valid
-     *
-     * @return bool
-     */
-    public function valid()
-    {
-        return 0 <= $this->entriesKey && $this->entriesKey < $this->count();
-    }
-
-    /**
-     * Attempt to build and return the feed resulting from the data set
-     *
-     * @param  string  $type The feed type "rss" or "atom" to export as
-     * @param  bool    $ignoreExceptions
-     * @throws Exception\InvalidArgumentException
-     * @return string
-     */
-    public function export($type, $ignoreExceptions = false)
-    {
-        $this->setType(strtolower($type));
-        $type = ucfirst($this->getType());
-        if ($type !== 'Rss' && $type !== 'Atom') {
-            throw new Exception\InvalidArgumentException('Invalid feed type specified: ' . $type . '.'
-            . ' Should be one of "rss" or "atom".');
-        }
-        $renderClass = 'Zend\\Feed\\Writer\\Renderer\\Feed\\' . $type;
-        $renderer = new $renderClass($this);
-        if ($ignoreExceptions) {
-            $renderer->ignoreExceptions();
-        }
-        return $renderer->render()->saveXml();
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/FeedFactory.php b/vendor/zendframework/zend-feed/src/Writer/FeedFactory.php
deleted file mode 100644
index 99b528c..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/FeedFactory.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-use Traversable;
-
-abstract class FeedFactory
-{
-    /**
-     * Create and return a Feed based on data provided.
-     *
-     * @param  array|Traversable $data
-     * @throws Exception\InvalidArgumentException
-     * @return Feed
-     */
-    public static function factory($data)
-    {
-        if (!is_array($data) && !$data instanceof Traversable) {
-            throw new Exception\InvalidArgumentException(sprintf(
-                '%s expects an array or Traversable argument; received "%s"',
-                __METHOD__,
-                (is_object($data) ? get_class($data) : gettype($data))
-            ));
-        }
-
-        $feed = new Feed();
-
-        foreach ($data as $key => $value) {
-            // Setters
-            $key    = static::convertKey($key);
-            $method = 'set' . $key;
-            if (method_exists($feed, $method)) {
-                switch ($method) {
-                    case 'setfeedlink':
-                        if (!is_array($value)) {
-                            // Need an array
-                            break;
-                        }
-                        if (!array_key_exists('link', $value) || !array_key_exists('type', $value)) {
-                            // Need both keys to set this correctly
-                            break;
-                        }
-                        $feed->setFeedLink($value['link'], $value['type']);
-                        break;
-                    default:
-                        $feed->$method($value);
-                        break;
-                }
-                continue;
-            }
-
-            // Entries
-            if ('entries' == $key) {
-                static::createEntries($value, $feed);
-                continue;
-            }
-        }
-
-        return $feed;
-    }
-
-    /**
-     * Normalize a key
-     *
-     * @param  string $key
-     * @return string
-     */
-    protected static function convertKey($key)
-    {
-        $key = str_replace('_', '', strtolower($key));
-        return $key;
-    }
-
-    /**
-     * Create and attach entries to a feed
-     *
-     * @param  array|Traversable $entries
-     * @param  Feed $feed
-     * @throws Exception\InvalidArgumentException
-     * @return void
-     */
-    protected static function createEntries($entries, Feed $feed)
-    {
-        if (!is_array($entries) && !$entries instanceof Traversable) {
-            throw new Exception\InvalidArgumentException(sprintf(
-                '%s::factory expects the "entries" value to be an array or Traversable; received "%s"',
-                get_called_class(),
-                (is_object($entries) ? get_class($entries) : gettype($entries))
-            ));
-        }
-
-        foreach ($entries as $data) {
-            if (!is_array($data) && !$data instanceof Traversable && !$data instanceof Entry) {
-                throw new Exception\InvalidArgumentException(sprintf(
-                    '%s expects an array, Traversable, or Zend\Feed\Writer\Entry argument; received "%s"',
-                    __METHOD__,
-                    (is_object($data) ? get_class($data) : gettype($data))
-                ));
-            }
-
-            // Use case 1: Entry item
-            if ($data instanceof Entry) {
-                $feed->addEntry($data);
-                continue;
-            }
-
-            // Use case 2: iterate item and populate entry
-            $entry = $feed->createEntry();
-            foreach ($data as $key => $value) {
-                $key    = static::convertKey($key);
-                $method = 'set' . $key;
-                if (!method_exists($entry, $method)) {
-                    continue;
-                }
-                $entry->$method($value);
-            }
-            $feed->addEntry($entry);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/AbstractRenderer.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/AbstractRenderer.php
deleted file mode 100644
index a609ca7..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/AbstractRenderer.php
+++ /dev/null
@@ -1,233 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer;
-
-/**
-*/
-class AbstractRenderer
-{
-    /**
-     * Extensions
-     * @var array
-     */
-    protected $extensions = [];
-
-    /**
-     * @var Writer\AbstractFeed
-     */
-    protected $container = null;
-
-    /**
-     * @var DOMDocument
-     */
-    protected $dom = null;
-
-    /**
-     * @var bool
-     */
-    protected $ignoreExceptions = false;
-
-    /**
-     * @var array
-     */
-    protected $exceptions = [];
-
-    /**
-     * Encoding of all text values
-     *
-     * @var string
-     */
-    protected $encoding = 'UTF-8';
-
-    /**
-     * Holds the value "atom" or "rss" depending on the feed type set when
-     * when last exported.
-     *
-     * @var string
-     */
-    protected $type = null;
-
-    /**
-     * @var DOMElement
-     */
-    protected $rootElement = null;
-
-    /**
-     * Constructor
-     *
-     * @param Writer\AbstractFeed $container
-     */
-    public function __construct($container)
-    {
-        $this->container = $container;
-        $this->setType($container->getType());
-        $this->_loadExtensions();
-    }
-
-    /**
-     * Save XML to string
-     *
-     * @return string
-     */
-    public function saveXml()
-    {
-        return $this->getDomDocument()->saveXml();
-    }
-
-    /**
-     * Get DOM document
-     *
-     * @return DOMDocument
-     */
-    public function getDomDocument()
-    {
-        return $this->dom;
-    }
-
-    /**
-     * Get document element from DOM
-     *
-     * @return DOMElement
-     */
-    public function getElement()
-    {
-        return $this->getDomDocument()->documentElement;
-    }
-
-    /**
-     * Get data container of items being rendered
-     *
-     * @return Writer\AbstractFeed
-     */
-    public function getDataContainer()
-    {
-        return $this->container;
-    }
-
-    /**
-     * Set feed encoding
-     *
-     * @param  string $enc
-     * @return AbstractRenderer
-     */
-    public function setEncoding($enc)
-    {
-        $this->encoding = $enc;
-        return $this;
-    }
-
-    /**
-     * Get feed encoding
-     *
-     * @return string
-     */
-    public function getEncoding()
-    {
-        return $this->encoding;
-    }
-
-    /**
-     * Indicate whether or not to ignore exceptions
-     *
-     * @param  bool $bool
-     * @return AbstractRenderer
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    public function ignoreExceptions($bool = true)
-    {
-        if (!is_bool($bool)) {
-            throw new Writer\Exception\InvalidArgumentException('Invalid parameter: $bool. Should be TRUE or FALSE (defaults to TRUE if null)');
-        }
-        $this->ignoreExceptions = $bool;
-        return $this;
-    }
-
-    /**
-     * Get exception list
-     *
-     * @return array
-     */
-    public function getExceptions()
-    {
-        return $this->exceptions;
-    }
-
-    /**
-     * Set the current feed type being exported to "rss" or "atom". This allows
-     * other objects to gracefully choose whether to execute or not, depending
-     * on their appropriateness for the current type, e.g. renderers.
-     *
-     * @param string $type
-     */
-    public function setType($type)
-    {
-        $this->type = $type;
-    }
-
-    /**
-     * Retrieve the current or last feed type exported.
-     *
-     * @return string Value will be "rss" or "atom"
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * Sets the absolute root element for the XML feed being generated. This
-     * helps simplify the appending of namespace declarations, but also ensures
-     * namespaces are added to the root element - not scattered across the entire
-     * XML file - may assist namespace unsafe parsers and looks pretty ;).
-     *
-     * @param DOMElement $root
-     */
-    public function setRootElement(DOMElement $root)
-    {
-        $this->rootElement = $root;
-    }
-
-    /**
-     * Retrieve the absolute root element for the XML feed being generated.
-     *
-     * @return DOMElement
-     */
-    public function getRootElement()
-    {
-        return $this->rootElement;
-    }
-
-    /**
-     * Load extensions from Zend\Feed\Writer\Writer
-     *
-     * @return void
-     */
-    protected function _loadExtensions()
-    {
-        Writer\Writer::registerCoreExtensions();
-        $manager = Writer\Writer::getExtensionManager();
-        $all = Writer\Writer::getExtensions();
-        if (stripos(get_class($this), 'entry')) {
-            $exts = $all['entryRenderer'];
-        } else {
-            $exts = $all['feedRenderer'];
-        }
-        foreach ($exts as $extension) {
-            $plugin = $manager->get($extension);
-            $plugin->setDataContainer($this->getDataContainer());
-            $plugin->setEncoding($this->getEncoding());
-            $this->extensions[$extension] = $plugin;
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/Atom.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/Atom.php
deleted file mode 100644
index dced034..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/Atom.php
+++ /dev/null
@@ -1,434 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer\Entry;
-
-use DateTime;
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Uri;
-use Zend\Feed\Writer;
-use Zend\Feed\Writer\Renderer;
-use Zend\Validator;
-
-class Atom extends Renderer\AbstractRenderer implements Renderer\RendererInterface
-{
-    /**
-     * Constructor
-     *
-     * @param  Writer\Entry $container
-     */
-    public function __construct(Writer\Entry $container)
-    {
-        parent::__construct($container);
-    }
-
-    /**
-     * Render atom entry
-     *
-     * @return Atom
-     */
-    public function render()
-    {
-        $this->dom = new DOMDocument('1.0', $this->container->getEncoding());
-        $this->dom->formatOutput = true;
-        $entry = $this->dom->createElementNS(Writer\Writer::NAMESPACE_ATOM_10, 'entry');
-        $this->dom->appendChild($entry);
-
-        $this->_setSource($this->dom, $entry);
-        $this->_setTitle($this->dom, $entry);
-        $this->_setDescription($this->dom, $entry);
-        $this->_setDateCreated($this->dom, $entry);
-        $this->_setDateModified($this->dom, $entry);
-        $this->_setLink($this->dom, $entry);
-        $this->_setId($this->dom, $entry);
-        $this->_setAuthors($this->dom, $entry);
-        $this->_setEnclosure($this->dom, $entry);
-        $this->_setContent($this->dom, $entry);
-        $this->_setCategories($this->dom, $entry);
-
-        foreach ($this->extensions as $ext) {
-            $ext->setType($this->getType());
-            $ext->setRootElement($this->getRootElement());
-            $ext->setDOMDocument($this->getDOMDocument(), $entry);
-            $ext->render();
-        }
-
-        return $this;
-    }
-
-    /**
-     * Set entry title
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setTitle(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getTitle()) {
-            $message = 'Atom 1.0 entry elements MUST contain exactly one'
-            . ' atom:title element but a title has not been set';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-        $title = $dom->createElement('title');
-        $root->appendChild($title);
-        $title->setAttribute('type', 'html');
-        $cdata = $dom->createCDATASection($this->getDataContainer()->getTitle());
-        $title->appendChild($cdata);
-    }
-
-    /**
-     * Set entry description
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDescription(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDescription()) {
-            return; // unless src content or base64
-        }
-        $subtitle = $dom->createElement('summary');
-        $root->appendChild($subtitle);
-        $subtitle->setAttribute('type', 'html');
-        $cdata = $dom->createCDATASection(
-            $this->getDataContainer()->getDescription()
-        );
-        $subtitle->appendChild($cdata);
-    }
-
-    /**
-     * Set date entry was modified
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setDateModified(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDateModified()) {
-            $message = 'Atom 1.0 entry elements MUST contain exactly one'
-            . ' atom:updated element but a modification date has not been set';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        $updated = $dom->createElement('updated');
-        $root->appendChild($updated);
-        $text = $dom->createTextNode(
-            $this->getDataContainer()->getDateModified()->format(DateTime::ATOM)
-        );
-        $updated->appendChild($text);
-    }
-
-    /**
-     * Set date entry was created
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDateCreated(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDateCreated()) {
-            return;
-        }
-        $el = $dom->createElement('published');
-        $root->appendChild($el);
-        $text = $dom->createTextNode(
-            $this->getDataContainer()->getDateCreated()->format(DateTime::ATOM)
-        );
-        $el->appendChild($text);
-    }
-
-    /**
-     * Set entry authors
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setAuthors(DOMDocument $dom, DOMElement $root)
-    {
-        $authors = $this->container->getAuthors();
-        if ((!$authors || empty($authors))) {
-            /**
-             * This will actually trigger an Exception at the feed level if
-             * a feed level author is not set.
-             */
-            return;
-        }
-        foreach ($authors as $data) {
-            $author = $this->dom->createElement('author');
-            $name = $this->dom->createElement('name');
-            $author->appendChild($name);
-            $root->appendChild($author);
-            $text = $dom->createTextNode($data['name']);
-            $name->appendChild($text);
-            if (array_key_exists('email', $data)) {
-                $email = $this->dom->createElement('email');
-                $author->appendChild($email);
-                $text = $dom->createTextNode($data['email']);
-                $email->appendChild($text);
-            }
-            if (array_key_exists('uri', $data)) {
-                $uri = $this->dom->createElement('uri');
-                $author->appendChild($uri);
-                $text = $dom->createTextNode($data['uri']);
-                $uri->appendChild($text);
-            }
-        }
-    }
-
-    /**
-     * Set entry enclosure
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setEnclosure(DOMDocument $dom, DOMElement $root)
-    {
-        $data = $this->container->getEnclosure();
-        if ((!$data || empty($data))) {
-            return;
-        }
-        $enclosure = $this->dom->createElement('link');
-        $enclosure->setAttribute('rel', 'enclosure');
-        if (isset($data['type'])) {
-            $enclosure->setAttribute('type', $data['type']);
-        }
-        if (isset($data['length'])) {
-            $enclosure->setAttribute('length', $data['length']);
-        }
-        $enclosure->setAttribute('href', $data['uri']);
-        $root->appendChild($enclosure);
-    }
-
-    protected function _setLink(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getLink()) {
-            return;
-        }
-        $link = $dom->createElement('link');
-        $root->appendChild($link);
-        $link->setAttribute('rel', 'alternate');
-        $link->setAttribute('type', 'text/html');
-        $link->setAttribute('href', $this->getDataContainer()->getLink());
-    }
-
-    /**
-     * Set entry identifier
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setId(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getId()
-        && !$this->getDataContainer()->getLink()) {
-            $message = 'Atom 1.0 entry elements MUST contain exactly one '
-            . 'atom:id element, or as an alternative, we can use the same '
-            . 'value as atom:link however neither a suitable link nor an '
-            . 'id have been set';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        if (!$this->getDataContainer()->getId()) {
-            $this->getDataContainer()->setId(
-                $this->getDataContainer()->getLink()
-            );
-        }
-        if (!Uri::factory($this->getDataContainer()->getId())->isValid()
-            && !preg_match(
-                "#^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{1,31}:([a-zA-Z0-9\(\)\+\,\.\:\=\@\;\$\_\!\*\-]|%[0-9a-fA-F]{2})*#",
-                $this->getDataContainer()->getId()
-            )
-            && !$this->_validateTagUri($this->getDataContainer()->getId())
-        ) {
-            throw new Writer\Exception\InvalidArgumentException('Atom 1.0 IDs must be a valid URI/IRI');
-        }
-        $id = $dom->createElement('id');
-        $root->appendChild($id);
-        $text = $dom->createTextNode($this->getDataContainer()->getId());
-        $id->appendChild($text);
-    }
-
-    /**
-     * Validate a URI using the tag scheme (RFC 4151)
-     *
-     * @param string $id
-     * @return bool
-     */
-    protected function _validateTagUri($id)
-    {
-        if (preg_match(
-            '/^tag:(?P<name>.*),(?P<date>\d{4}-?\d{0,2}-?\d{0,2}):(?P<specific>.*)(.*:)*$/',
-            $id,
-            $matches
-        )) {
-            $dvalid = false;
-            $date = $matches['date'];
-            $d6 = strtotime($date);
-            if ((strlen($date) == 4) && $date <= date('Y')) {
-                $dvalid = true;
-            } elseif ((strlen($date) == 7) && ($d6 < strtotime("now"))) {
-                $dvalid = true;
-            } elseif ((strlen($date) == 10) && ($d6 < strtotime("now"))) {
-                $dvalid = true;
-            }
-            $validator = new Validator\EmailAddress;
-            if ($validator->isValid($matches['name'])) {
-                $nvalid = true;
-            } else {
-                $nvalid = $validator->isValid('info@' . $matches['name']);
-            }
-            return $dvalid && $nvalid;
-        }
-        return false;
-    }
-
-    /**
-     * Set entry content
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setContent(DOMDocument $dom, DOMElement $root)
-    {
-        $content = $this->getDataContainer()->getContent();
-        if (!$content && !$this->getDataContainer()->getLink()) {
-            $message = 'Atom 1.0 entry elements MUST contain exactly one '
-            . 'atom:content element, or as an alternative, at least one link '
-            . 'with a rel attribute of "alternate" to indicate an alternate '
-            . 'method to consume the content.';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-        if (!$content) {
-            return;
-        }
-        $element = $dom->createElement('content');
-        $element->setAttribute('type', 'xhtml');
-        $xhtmlElement = $this->_loadXhtml($content);
-        $deep = version_compare(PHP_VERSION, '7', 'ge') ? 1 : true;
-        $xhtml = $dom->importNode($xhtmlElement, $deep);
-        $element->appendChild($xhtml);
-        $root->appendChild($element);
-    }
-
-    /**
-     * Load a HTML string and attempt to normalise to XML
-     */
-    protected function _loadXhtml($content)
-    {
-        if (class_exists('tidy', false)) {
-            $tidy = new \tidy;
-            $config = [
-                'output-xhtml' => true,
-                'show-body-only' => true,
-                'quote-nbsp' => false
-            ];
-            $encoding = str_replace('-', '', $this->getEncoding());
-            $tidy->parseString($content, $config, $encoding);
-            $tidy->cleanRepair();
-            $xhtml = (string) $tidy;
-        } else {
-            $xhtml = $content;
-        }
-        $xhtml = preg_replace([
-            "/(<[\/]?)([a-zA-Z]+)/"
-        ], '$1xhtml:$2', $xhtml);
-        $dom = new DOMDocument('1.0', $this->getEncoding());
-        $dom->loadXML(
-            '<xhtml:div xmlns:xhtml="http://www.w3.org/1999/xhtml">'
-            . $xhtml
-            . '</xhtml:div>'
-        );
-        return $dom->documentElement;
-    }
-
-    /**
-     * Set entry categories
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCategories(DOMDocument $dom, DOMElement $root)
-    {
-        $categories = $this->getDataContainer()->getCategories();
-        if (!$categories) {
-            return;
-        }
-        foreach ($categories as $cat) {
-            $category = $dom->createElement('category');
-            $category->setAttribute('term', $cat['term']);
-            if (isset($cat['label'])) {
-                $category->setAttribute('label', $cat['label']);
-            } else {
-                $category->setAttribute('label', $cat['term']);
-            }
-            if (isset($cat['scheme'])) {
-                $category->setAttribute('scheme', $cat['scheme']);
-            }
-            $root->appendChild($category);
-        }
-    }
-
-    /**
-     * Append Source element (Atom 1.0 Feed Metadata)
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setSource(DOMDocument $dom, DOMElement $root)
-    {
-        $source = $this->getDataContainer()->getSource();
-        if (!$source) {
-            return;
-        }
-        $renderer = new Renderer\Feed\AtomSource($source);
-        $renderer->setType($this->getType());
-        $element = $renderer->render()->getElement();
-        $imported = $dom->importNode($element, true);
-        $root->appendChild($imported);
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/Atom/Deleted.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/Atom/Deleted.php
deleted file mode 100644
index 8519bd9..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/Atom/Deleted.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer\Entry\Atom;
-
-use DateTime;
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer;
-use Zend\Feed\Writer\Renderer;
-
-class Deleted extends Renderer\AbstractRenderer implements Renderer\RendererInterface
-{
-    /**
-     * Constructor
-     *
-     * @param  Writer\Deleted $container
-     */
-    public function __construct(Writer\Deleted $container)
-    {
-        parent::__construct($container);
-    }
-
-    /**
-     * Render atom entry
-     *
-     * @return Writer\Renderer\Entry\Atom
-     */
-    public function render()
-    {
-        $this->dom = new DOMDocument('1.0', $this->container->getEncoding());
-        $this->dom->formatOutput = true;
-        $entry = $this->dom->createElement('at:deleted-entry');
-        $this->dom->appendChild($entry);
-
-        $entry->setAttribute('ref', $this->container->getReference());
-        $entry->setAttribute('when', $this->container->getWhen()->format(DateTime::ATOM));
-
-        $this->_setBy($this->dom, $entry);
-        $this->_setComment($this->dom, $entry);
-
-        return $this;
-    }
-
-    /**
-     * Set tombstone comment
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setComment(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getComment()) {
-            return;
-        }
-        $c = $dom->createElement('at:comment');
-        $root->appendChild($c);
-        $c->setAttribute('type', 'html');
-        $cdata = $dom->createCDATASection($this->getDataContainer()->getComment());
-        $c->appendChild($cdata);
-    }
-
-    /**
-     * Set entry authors
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setBy(DOMDocument $dom, DOMElement $root)
-    {
-        $data = $this->container->getBy();
-        if ((!$data || empty($data))) {
-            return;
-        }
-        $author = $this->dom->createElement('at:by');
-        $name = $this->dom->createElement('name');
-        $author->appendChild($name);
-        $root->appendChild($author);
-        $text = $dom->createTextNode($data['name']);
-        $name->appendChild($text);
-        if (array_key_exists('email', $data)) {
-            $email = $this->dom->createElement('email');
-            $author->appendChild($email);
-            $text = $dom->createTextNode($data['email']);
-            $email->appendChild($text);
-        }
-        if (array_key_exists('uri', $data)) {
-            $uri = $this->dom->createElement('uri');
-            $author->appendChild($uri);
-            $text = $dom->createTextNode($data['uri']);
-            $uri->appendChild($text);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/AtomDeleted.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/AtomDeleted.php
deleted file mode 100644
index f0db3e9..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/AtomDeleted.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer\Entry;
-
-use DateTime;
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer;
-use Zend\Feed\Writer\Renderer;
-
-/**
-*/
-class AtomDeleted extends Renderer\AbstractRenderer implements Renderer\RendererInterface
-{
-    /**
-     * Constructor
-     *
-     * @param  Writer\Deleted $container
-     */
-    public function __construct(Writer\Deleted $container)
-    {
-        parent::__construct($container);
-    }
-
-    /**
-     * Render atom entry
-     *
-     * @return \Zend\Feed\Writer\Renderer\Entry\Atom
-     */
-    public function render()
-    {
-        $this->dom = new DOMDocument('1.0', $this->container->getEncoding());
-        $this->dom->formatOutput = true;
-        $entry = $this->dom->createElement('at:deleted-entry');
-        $this->dom->appendChild($entry);
-
-        $entry->setAttribute('ref', $this->container->getReference());
-        $entry->setAttribute('when', $this->container->getWhen()->format(DateTime::ATOM));
-
-        $this->_setBy($this->dom, $entry);
-        $this->_setComment($this->dom, $entry);
-
-        return $this;
-    }
-
-    /**
-     * Set tombstone comment
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setComment(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getComment()) {
-            return;
-        }
-        $c = $dom->createElement('at:comment');
-        $root->appendChild($c);
-        $c->setAttribute('type', 'html');
-        $cdata = $dom->createCDATASection($this->getDataContainer()->getComment());
-        $c->appendChild($cdata);
-    }
-
-    /**
-     * Set entry authors
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setBy(DOMDocument $dom, DOMElement $root)
-    {
-        $data = $this->container->getBy();
-        if ((!$data || empty($data))) {
-            return;
-        }
-        $author = $this->dom->createElement('at:by');
-        $name = $this->dom->createElement('name');
-        $author->appendChild($name);
-        $root->appendChild($author);
-        $text = $dom->createTextNode($data['name']);
-        $name->appendChild($text);
-        if (array_key_exists('email', $data)) {
-            $email = $this->dom->createElement('email');
-            $author->appendChild($email);
-            $text = $dom->createTextNode($data['email']);
-            $email->appendChild($text);
-        }
-        if (array_key_exists('uri', $data)) {
-            $uri = $this->dom->createElement('uri');
-            $author->appendChild($uri);
-            $text = $dom->createTextNode($data['uri']);
-            $uri->appendChild($text);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/Rss.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/Rss.php
deleted file mode 100644
index 3edb4fd..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/Rss.php
+++ /dev/null
@@ -1,329 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer\Entry;
-
-use DateTime;
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Uri;
-use Zend\Feed\Writer;
-use Zend\Feed\Writer\Renderer;
-
-/**
-*/
-class Rss extends Renderer\AbstractRenderer implements Renderer\RendererInterface
-{
-    /**
-     * Constructor
-     *
-     * @param  Writer\Entry $container
-     */
-    public function __construct(Writer\Entry $container)
-    {
-        parent::__construct($container);
-    }
-
-    /**
-     * Render RSS entry
-     *
-     * @return Rss
-     */
-    public function render()
-    {
-        $this->dom = new DOMDocument('1.0', $this->container->getEncoding());
-        $this->dom->formatOutput = true;
-        $this->dom->substituteEntities = false;
-        $entry = $this->dom->createElement('item');
-        $this->dom->appendChild($entry);
-
-        $this->_setTitle($this->dom, $entry);
-        $this->_setDescription($this->dom, $entry);
-        $this->_setDateCreated($this->dom, $entry);
-        $this->_setDateModified($this->dom, $entry);
-        $this->_setLink($this->dom, $entry);
-        $this->_setId($this->dom, $entry);
-        $this->_setAuthors($this->dom, $entry);
-        $this->_setEnclosure($this->dom, $entry);
-        $this->_setCommentLink($this->dom, $entry);
-        $this->_setCategories($this->dom, $entry);
-        foreach ($this->extensions as $ext) {
-            $ext->setType($this->getType());
-            $ext->setRootElement($this->getRootElement());
-            $ext->setDOMDocument($this->getDOMDocument(), $entry);
-            $ext->render();
-        }
-
-        return $this;
-    }
-
-    /**
-     * Set entry title
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setTitle(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDescription()
-        && !$this->getDataContainer()->getTitle()) {
-            $message = 'RSS 2.0 entry elements SHOULD contain exactly one'
-            . ' title element but a title has not been set. In addition, there'
-            . ' is no description as required in the absence of a title.';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-        $title = $dom->createElement('title');
-        $root->appendChild($title);
-        $text = $dom->createTextNode($this->getDataContainer()->getTitle());
-        $title->appendChild($text);
-    }
-
-    /**
-     * Set entry description
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setDescription(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDescription()
-        && !$this->getDataContainer()->getTitle()) {
-            $message = 'RSS 2.0 entry elements SHOULD contain exactly one'
-            . ' description element but a description has not been set. In'
-            . ' addition, there is no title element as required in the absence'
-            . ' of a description.';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-        if (!$this->getDataContainer()->getDescription()) {
-            return;
-        }
-        $subtitle = $dom->createElement('description');
-        $root->appendChild($subtitle);
-        $text = $dom->createCDATASection($this->getDataContainer()->getDescription());
-        $subtitle->appendChild($text);
-    }
-
-    /**
-     * Set date entry was last modified
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDateModified(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDateModified()) {
-            return;
-        }
-
-        $updated = $dom->createElement('pubDate');
-        $root->appendChild($updated);
-        $text = $dom->createTextNode(
-            $this->getDataContainer()->getDateModified()->format(DateTime::RSS)
-        );
-        $updated->appendChild($text);
-    }
-
-    /**
-     * Set date entry was created
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDateCreated(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDateCreated()) {
-            return;
-        }
-        if (!$this->getDataContainer()->getDateModified()) {
-            $this->getDataContainer()->setDateModified(
-                $this->getDataContainer()->getDateCreated()
-            );
-        }
-    }
-
-    /**
-     * Set entry authors
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setAuthors(DOMDocument $dom, DOMElement $root)
-    {
-        $authors = $this->container->getAuthors();
-        if ((!$authors || empty($authors))) {
-            return;
-        }
-        foreach ($authors as $data) {
-            $author = $this->dom->createElement('author');
-            $name = $data['name'];
-            if (array_key_exists('email', $data)) {
-                $name = $data['email'] . ' (' . $data['name'] . ')';
-            }
-            $text = $dom->createTextNode($name);
-            $author->appendChild($text);
-            $root->appendChild($author);
-        }
-    }
-
-    /**
-     * Set entry enclosure
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setEnclosure(DOMDocument $dom, DOMElement $root)
-    {
-        $data = $this->container->getEnclosure();
-        if ((!$data || empty($data))) {
-            return;
-        }
-        if (!isset($data['type'])) {
-            $exception = new Writer\Exception\InvalidArgumentException('Enclosure "type" is not set');
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-        if (!isset($data['length'])) {
-            $exception = new Writer\Exception\InvalidArgumentException('Enclosure "length" is not set');
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-        if ((int) $data['length'] < 0 || !ctype_digit((string) $data['length'])) {
-            $exception = new Writer\Exception\InvalidArgumentException('Enclosure "length" must be an integer'
-            . ' indicating the content\'s length in bytes');
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-        $enclosure = $this->dom->createElement('enclosure');
-        $enclosure->setAttribute('type', $data['type']);
-        $enclosure->setAttribute('length', $data['length']);
-        $enclosure->setAttribute('url', $data['uri']);
-        $root->appendChild($enclosure);
-    }
-
-    /**
-     * Set link to entry
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setLink(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getLink()) {
-            return;
-        }
-        $link = $dom->createElement('link');
-        $root->appendChild($link);
-        $text = $dom->createTextNode($this->getDataContainer()->getLink());
-        $link->appendChild($text);
-    }
-
-    /**
-     * Set entry identifier
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setId(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getId()
-        && !$this->getDataContainer()->getLink()) {
-            return;
-        }
-
-        $id = $dom->createElement('guid');
-        $root->appendChild($id);
-        if (!$this->getDataContainer()->getId()) {
-            $this->getDataContainer()->setId(
-                $this->getDataContainer()->getLink());
-        }
-        $text = $dom->createTextNode($this->getDataContainer()->getId());
-        $id->appendChild($text);
-        if (!Uri::factory($this->getDataContainer()->getId())->isValid()) {
-            $id->setAttribute('isPermaLink', 'false');
-        }
-    }
-
-    /**
-     * Set link to entry comments
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCommentLink(DOMDocument $dom, DOMElement $root)
-    {
-        $link = $this->getDataContainer()->getCommentLink();
-        if (!$link) {
-            return;
-        }
-        $clink = $this->dom->createElement('comments');
-        $text = $dom->createTextNode($link);
-        $clink->appendChild($text);
-        $root->appendChild($clink);
-    }
-
-    /**
-     * Set entry categories
-     *
-     * @param DOMDocument $dom
-     * @param DOMElement $root
-     * @return void
-     */
-    protected function _setCategories(DOMDocument $dom, DOMElement $root)
-    {
-        $categories = $this->getDataContainer()->getCategories();
-        if (!$categories) {
-            return;
-        }
-        foreach ($categories as $cat) {
-            $category = $dom->createElement('category');
-            if (isset($cat['scheme'])) {
-                $category->setAttribute('domain', $cat['scheme']);
-            }
-            $text = $dom->createCDATASection($cat['term']);
-            $category->appendChild($text);
-            $root->appendChild($category);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/AbstractAtom.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/AbstractAtom.php
deleted file mode 100644
index a5400a6..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/AbstractAtom.php
+++ /dev/null
@@ -1,403 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer\Feed;
-
-use DateTime;
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer;
-use Zend\Feed\Writer\Renderer;
-use Zend\Feed\Writer\Version;
-
-/**
-*/
-class AbstractAtom extends Renderer\AbstractRenderer
-{
-    /**
-     * Constructor
-     *
-     * @param  Writer\AbstractFeed $container
-     */
-    public function __construct($container)
-    {
-        parent::__construct($container);
-    }
-
-    /**
-     * Set feed language
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setLanguage(DOMDocument $dom, DOMElement $root)
-    {
-        if ($this->getDataContainer()->getLanguage()) {
-            $root->setAttribute('xml:lang', $this->getDataContainer()
-                ->getLanguage());
-        }
-    }
-
-    /**
-     * Set feed title
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setTitle(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getTitle()) {
-            $message = 'Atom 1.0 feed elements MUST contain exactly one'
-            . ' atom:title element but a title has not been set';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        $title = $dom->createElement('title');
-        $root->appendChild($title);
-        $title->setAttribute('type', 'text');
-        $text = $dom->createTextNode($this->getDataContainer()->getTitle());
-        $title->appendChild($text);
-    }
-
-    /**
-     * Set feed description
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDescription(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDescription()) {
-            return;
-        }
-        $subtitle = $dom->createElement('subtitle');
-        $root->appendChild($subtitle);
-        $subtitle->setAttribute('type', 'text');
-        $text = $dom->createTextNode($this->getDataContainer()->getDescription());
-        $subtitle->appendChild($text);
-    }
-
-    /**
-     * Set date feed was last modified
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setDateModified(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDateModified()) {
-            $message = 'Atom 1.0 feed elements MUST contain exactly one'
-            . ' atom:updated element but a modification date has not been set';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        $updated = $dom->createElement('updated');
-        $root->appendChild($updated);
-        $text = $dom->createTextNode(
-            $this->getDataContainer()->getDateModified()->format(DateTime::ATOM)
-        );
-        $updated->appendChild($text);
-    }
-
-    /**
-     * Set feed generator string
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setGenerator(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getGenerator()) {
-            $this->getDataContainer()->setGenerator('Zend_Feed_Writer',
-                Version::VERSION, 'http://framework.zend.com');
-        }
-
-        $gdata = $this->getDataContainer()->getGenerator();
-        $generator = $dom->createElement('generator');
-        $root->appendChild($generator);
-        $text = $dom->createTextNode($gdata['name']);
-        $generator->appendChild($text);
-        if (array_key_exists('uri', $gdata)) {
-            $generator->setAttribute('uri', $gdata['uri']);
-        }
-        if (array_key_exists('version', $gdata)) {
-            $generator->setAttribute('version', $gdata['version']);
-        }
-    }
-
-    /**
-     * Set link to feed
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setLink(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getLink()) {
-            return;
-        }
-        $link = $dom->createElement('link');
-        $root->appendChild($link);
-        $link->setAttribute('rel', 'alternate');
-        $link->setAttribute('type', 'text/html');
-        $link->setAttribute('href', $this->getDataContainer()->getLink());
-    }
-
-    /**
-     * Set feed links
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setFeedLinks(DOMDocument $dom, DOMElement $root)
-    {
-        $flinks = $this->getDataContainer()->getFeedLinks();
-        if (!$flinks || !array_key_exists('atom', $flinks)) {
-            $message = 'Atom 1.0 feed elements SHOULD contain one atom:link '
-            . 'element with a rel attribute value of "self".  This is the '
-            . 'preferred URI for retrieving Atom Feed Documents representing '
-            . 'this Atom feed but a feed link has not been set';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        foreach ($flinks as $type => $href) {
-            $mime = 'application/' . strtolower($type) . '+xml';
-            $flink = $dom->createElement('link');
-            $root->appendChild($flink);
-            $flink->setAttribute('rel', 'self');
-            $flink->setAttribute('type', $mime);
-            $flink->setAttribute('href', $href);
-        }
-    }
-
-    /**
-     * Set feed authors
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setAuthors(DOMDocument $dom, DOMElement $root)
-    {
-        $authors = $this->container->getAuthors();
-        if (!$authors || empty($authors)) {
-            /**
-             * Technically we should defer an exception until we can check
-             * that all entries contain an author. If any entry is missing
-             * an author, then a missing feed author element is invalid
-             */
-            return;
-        }
-        foreach ($authors as $data) {
-            $author = $this->dom->createElement('author');
-            $name = $this->dom->createElement('name');
-            $author->appendChild($name);
-            $root->appendChild($author);
-            $text = $dom->createTextNode($data['name']);
-            $name->appendChild($text);
-            if (array_key_exists('email', $data)) {
-                $email = $this->dom->createElement('email');
-                $author->appendChild($email);
-                $text = $dom->createTextNode($data['email']);
-                $email->appendChild($text);
-            }
-            if (array_key_exists('uri', $data)) {
-                $uri = $this->dom->createElement('uri');
-                $author->appendChild($uri);
-                $text = $dom->createTextNode($data['uri']);
-                $uri->appendChild($text);
-            }
-        }
-    }
-
-    /**
-     * Set feed identifier
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setId(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getId()
-        && !$this->getDataContainer()->getLink()) {
-            $message = 'Atom 1.0 feed elements MUST contain exactly one '
-            . 'atom:id element, or as an alternative, we can use the same '
-            . 'value as atom:link however neither a suitable link nor an '
-            . 'id have been set';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        if (!$this->getDataContainer()->getId()) {
-            $this->getDataContainer()->setId(
-                $this->getDataContainer()->getLink());
-        }
-        $id = $dom->createElement('id');
-        $root->appendChild($id);
-        $text = $dom->createTextNode($this->getDataContainer()->getId());
-        $id->appendChild($text);
-    }
-
-    /**
-     * Set feed copyright
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCopyright(DOMDocument $dom, DOMElement $root)
-    {
-        $copyright = $this->getDataContainer()->getCopyright();
-        if (!$copyright) {
-            return;
-        }
-        $copy = $dom->createElement('rights');
-        $root->appendChild($copy);
-        $text = $dom->createTextNode($copyright);
-        $copy->appendChild($text);
-    }
-
-    /**
-     * Set feed level logo (image)
-     *
-     * @param DOMDocument $dom
-     * @param DOMElement $root
-     * @return void
-     */
-    protected function _setImage(DOMDocument $dom, DOMElement $root)
-    {
-        $image = $this->getDataContainer()->getImage();
-        if (!$image) {
-            return;
-        }
-        $img = $dom->createElement('logo');
-        $root->appendChild($img);
-        $text = $dom->createTextNode($image['uri']);
-        $img->appendChild($text);
-    }
-
-    /**
-     * Set date feed was created
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDateCreated(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDateCreated()) {
-            return;
-        }
-        if (!$this->getDataContainer()->getDateModified()) {
-            $this->getDataContainer()->setDateModified(
-                $this->getDataContainer()->getDateCreated()
-            );
-        }
-    }
-
-    /**
-     * Set base URL to feed links
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setBaseUrl(DOMDocument $dom, DOMElement $root)
-    {
-        $baseUrl = $this->getDataContainer()->getBaseUrl();
-        if (!$baseUrl) {
-            return;
-        }
-        $root->setAttribute('xml:base', $baseUrl);
-    }
-
-    /**
-     * Set hubs to which this feed pushes
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setHubs(DOMDocument $dom, DOMElement $root)
-    {
-        $hubs = $this->getDataContainer()->getHubs();
-        if (!$hubs) {
-            return;
-        }
-        foreach ($hubs as $hubUrl) {
-            $hub = $dom->createElement('link');
-            $hub->setAttribute('rel', 'hub');
-            $hub->setAttribute('href', $hubUrl);
-            $root->appendChild($hub);
-        }
-    }
-
-    /**
-     * Set feed categories
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCategories(DOMDocument $dom, DOMElement $root)
-    {
-        $categories = $this->getDataContainer()->getCategories();
-        if (!$categories) {
-            return;
-        }
-        foreach ($categories as $cat) {
-            $category = $dom->createElement('category');
-            $category->setAttribute('term', $cat['term']);
-            if (isset($cat['label'])) {
-                $category->setAttribute('label', $cat['label']);
-            } else {
-                $category->setAttribute('label', $cat['term']);
-            }
-            if (isset($cat['scheme'])) {
-                $category->setAttribute('scheme', $cat['scheme']);
-            }
-            $root->appendChild($category);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Atom.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Atom.php
deleted file mode 100644
index 939babc..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Atom.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer\Feed;
-
-use DOMDocument;
-use Zend\Feed\Writer;
-use Zend\Feed\Writer\Renderer;
-
-/**
-*/
-class Atom extends AbstractAtom implements Renderer\RendererInterface
-{
-    /**
-     * Constructor
-     *
-     * @param  Writer\Feed $container
-     */
-    public function __construct(Writer\Feed $container)
-    {
-        parent::__construct($container);
-    }
-
-    /**
-     * Render Atom feed
-     *
-     * @return Atom
-     */
-    public function render()
-    {
-        if (!$this->container->getEncoding()) {
-            $this->container->setEncoding('UTF-8');
-        }
-        $this->dom = new DOMDocument('1.0', $this->container->getEncoding());
-        $this->dom->formatOutput = true;
-        $root = $this->dom->createElementNS(
-            Writer\Writer::NAMESPACE_ATOM_10,
-            'feed'
-        );
-        $this->setRootElement($root);
-        $this->dom->appendChild($root);
-        $this->_setLanguage($this->dom, $root);
-        $this->_setBaseUrl($this->dom, $root);
-        $this->_setTitle($this->dom, $root);
-        $this->_setDescription($this->dom, $root);
-        $this->_setImage($this->dom, $root);
-        $this->_setDateCreated($this->dom, $root);
-        $this->_setDateModified($this->dom, $root);
-        $this->_setGenerator($this->dom, $root);
-        $this->_setLink($this->dom, $root);
-        $this->_setFeedLinks($this->dom, $root);
-        $this->_setId($this->dom, $root);
-        $this->_setAuthors($this->dom, $root);
-        $this->_setCopyright($this->dom, $root);
-        $this->_setCategories($this->dom, $root);
-        $this->_setHubs($this->dom, $root);
-
-        foreach ($this->extensions as $ext) {
-            $ext->setType($this->getType());
-            $ext->setRootElement($this->getRootElement());
-            $ext->setDOMDocument($this->getDOMDocument(), $root);
-            $ext->render();
-        }
-
-        foreach ($this->container as $entry) {
-            if ($this->getDataContainer()->getEncoding()) {
-                $entry->setEncoding($this->getDataContainer()->getEncoding());
-            }
-            if ($entry instanceof Writer\Entry) {
-                $renderer = new Renderer\Entry\Atom($entry);
-            } else {
-                if (!$this->dom->documentElement->hasAttribute('xmlns:at')) {
-                    $this->dom->documentElement->setAttribute(
-                        'xmlns:at',
-                        'http://purl.org/atompub/tombstones/1.0'
-                    );
-                }
-                $renderer = new Renderer\Entry\AtomDeleted($entry);
-            }
-            if ($this->ignoreExceptions === true) {
-                $renderer->ignoreExceptions();
-            }
-            $renderer->setType($this->getType());
-            $renderer->setRootElement($this->dom->documentElement);
-            $renderer->render();
-            $element = $renderer->getElement();
-            $deep = version_compare(PHP_VERSION, '7', 'ge') ? 1 : true;
-            $imported = $this->dom->importNode($element, $deep);
-            $root->appendChild($imported);
-        }
-        return $this;
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Atom/AbstractAtom.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Atom/AbstractAtom.php
deleted file mode 100644
index 20fc8df..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Atom/AbstractAtom.php
+++ /dev/null
@@ -1,399 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer\Feed\Atom;
-
-use Datetime;
-use DOMDocument;
-use DOMElement;
-use Zend\Feed;
-use Zend\Feed\Writer\Version;
-
-class AbstractAtom extends Feed\Writer\Renderer\AbstractRenderer
-{
-    /**
-     * Constructor
-     *
-     * @param  \Zend\Feed\Writer\Feed $container
-     */
-    public function __construct($container)
-    {
-        parent::__construct($container);
-    }
-
-    /**
-     * Set feed language
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setLanguage(DOMDocument $dom, DOMElement $root)
-    {
-        if ($this->getDataContainer()->getLanguage()) {
-            $root->setAttribute('xml:lang', $this->getDataContainer()
-                ->getLanguage());
-        }
-    }
-
-    /**
-     * Set feed title
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Feed\Exception\InvalidArgumentException
-     */
-    protected function _setTitle(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getTitle()) {
-            $message = 'Atom 1.0 feed elements MUST contain exactly one'
-                . ' atom:title element but a title has not been set';
-            $exception = new Feed\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        $title = $dom->createElement('title');
-        $root->appendChild($title);
-        $title->setAttribute('type', 'text');
-        $text = $dom->createTextNode($this->getDataContainer()->getTitle());
-        $title->appendChild($text);
-    }
-
-    /**
-     * Set feed description
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDescription(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDescription()) {
-            return;
-        }
-        $subtitle = $dom->createElement('subtitle');
-        $root->appendChild($subtitle);
-        $subtitle->setAttribute('type', 'text');
-        $text = $dom->createTextNode($this->getDataContainer()->getDescription());
-        $subtitle->appendChild($text);
-    }
-
-    /**
-     * Set date feed was last modified
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Feed\Exception\InvalidArgumentException
-     */
-    protected function _setDateModified(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDateModified()) {
-            $message = 'Atom 1.0 feed elements MUST contain exactly one'
-                . ' atom:updated element but a modification date has not been set';
-            $exception = new Feed\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        $updated = $dom->createElement('updated');
-        $root->appendChild($updated);
-        $text = $dom->createTextNode(
-            $this->getDataContainer()->getDateModified()->format(DateTime::ATOM)
-        );
-        $updated->appendChild($text);
-    }
-
-    /**
-     * Set feed generator string
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setGenerator(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getGenerator()) {
-            $this->getDataContainer()->setGenerator('Zend_Feed_Writer',
-                Version::VERSION, 'http://framework.zend.com');
-        }
-
-        $gdata = $this->getDataContainer()->getGenerator();
-        $generator = $dom->createElement('generator');
-        $root->appendChild($generator);
-        $text = $dom->createTextNode($gdata['name']);
-        $generator->appendChild($text);
-        if (array_key_exists('uri', $gdata)) {
-            $generator->setAttribute('uri', $gdata['uri']);
-        }
-        if (array_key_exists('version', $gdata)) {
-            $generator->setAttribute('version', $gdata['version']);
-        }
-    }
-
-    /**
-     * Set link to feed
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setLink(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getLink()) {
-            return;
-        }
-        $link = $dom->createElement('link');
-        $root->appendChild($link);
-        $link->setAttribute('rel', 'alternate');
-        $link->setAttribute('type', 'text/html');
-        $link->setAttribute('href', $this->getDataContainer()->getLink());
-    }
-
-    /**
-     * Set feed links
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Feed\Exception\InvalidArgumentException
-     */
-    protected function _setFeedLinks(DOMDocument $dom, DOMElement $root)
-    {
-        $flinks = $this->getDataContainer()->getFeedLinks();
-        if (!$flinks || !array_key_exists('atom', $flinks)) {
-            $message = 'Atom 1.0 feed elements SHOULD contain one atom:link '
-                . 'element with a rel attribute value of "self".  This is the '
-                . 'preferred URI for retrieving Atom Feed Documents representing '
-                . 'this Atom feed but a feed link has not been set';
-            $exception = new Feed\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        foreach ($flinks as $type => $href) {
-            $mime = 'application/' . strtolower($type) . '+xml';
-            $flink = $dom->createElement('link');
-            $root->appendChild($flink);
-            $flink->setAttribute('rel', 'self');
-            $flink->setAttribute('type', $mime);
-            $flink->setAttribute('href', $href);
-        }
-    }
-
-    /**
-     * Set feed authors
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setAuthors(DOMDocument $dom, DOMElement $root)
-    {
-        $authors = $this->container->getAuthors();
-        if (!$authors || empty($authors)) {
-            /**
-             * Technically we should defer an exception until we can check
-             * that all entries contain an author. If any entry is missing
-             * an author, then a missing feed author element is invalid
-             */
-            return;
-        }
-        foreach ($authors as $data) {
-            $author = $this->dom->createElement('author');
-            $name = $this->dom->createElement('name');
-            $author->appendChild($name);
-            $root->appendChild($author);
-            $text = $dom->createTextNode($data['name']);
-            $name->appendChild($text);
-            if (array_key_exists('email', $data)) {
-                $email = $this->dom->createElement('email');
-                $author->appendChild($email);
-                $text = $dom->createTextNode($data['email']);
-                $email->appendChild($text);
-            }
-            if (array_key_exists('uri', $data)) {
-                $uri = $this->dom->createElement('uri');
-                $author->appendChild($uri);
-                $text = $dom->createTextNode($data['uri']);
-                $uri->appendChild($text);
-            }
-        }
-    }
-
-    /**
-     * Set feed identifier
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Feed\Exception\InvalidArgumentException
-     */
-    protected function _setId(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getId()
-        && !$this->getDataContainer()->getLink()) {
-            $message = 'Atom 1.0 feed elements MUST contain exactly one '
-                . 'atom:id element, or as an alternative, we can use the same '
-                . 'value as atom:link however neither a suitable link nor an '
-                . 'id have been set';
-            $exception = new Feed\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        if (!$this->getDataContainer()->getId()) {
-            $this->getDataContainer()->setId(
-                $this->getDataContainer()->getLink());
-        }
-        $id = $dom->createElement('id');
-        $root->appendChild($id);
-        $text = $dom->createTextNode($this->getDataContainer()->getId());
-        $id->appendChild($text);
-    }
-
-    /**
-     * Set feed copyright
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCopyright(DOMDocument $dom, DOMElement $root)
-    {
-        $copyright = $this->getDataContainer()->getCopyright();
-        if (!$copyright) {
-            return;
-        }
-        $copy = $dom->createElement('rights');
-        $root->appendChild($copy);
-        $text = $dom->createTextNode($copyright);
-        $copy->appendChild($text);
-    }
-    /**
-     * Set feed level logo (image)
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setImage(DOMDocument $dom, DOMElement $root)
-    {
-        $image = $this->getDataContainer()->getImage();
-        if (!$image) {
-            return;
-        }
-        $img = $dom->createElement('logo');
-        $root->appendChild($img);
-        $text = $dom->createTextNode($image['uri']);
-        $img->appendChild($text);
-    }
-
-    /**
-     * Set date feed was created
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDateCreated(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDateCreated()) {
-            return;
-        }
-        if (!$this->getDataContainer()->getDateModified()) {
-            $this->getDataContainer()->setDateModified(
-                $this->getDataContainer()->getDateCreated()
-            );
-        }
-    }
-
-    /**
-     * Set base URL to feed links
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setBaseUrl(DOMDocument $dom, DOMElement $root)
-    {
-        $baseUrl = $this->getDataContainer()->getBaseUrl();
-        if (!$baseUrl) {
-            return;
-        }
-        $root->setAttribute('xml:base', $baseUrl);
-    }
-
-    /**
-     * Set hubs to which this feed pushes
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setHubs(DOMDocument $dom, DOMElement $root)
-    {
-        $hubs = $this->getDataContainer()->getHubs();
-        if (!$hubs) {
-            return;
-        }
-        foreach ($hubs as $hubUrl) {
-            $hub = $dom->createElement('link');
-            $hub->setAttribute('rel', 'hub');
-            $hub->setAttribute('href', $hubUrl);
-            $root->appendChild($hub);
-        }
-    }
-
-    /**
-     * Set feed categories
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCategories(DOMDocument $dom, DOMElement $root)
-    {
-        $categories = $this->getDataContainer()->getCategories();
-        if (!$categories) {
-            return;
-        }
-        foreach ($categories as $cat) {
-            $category = $dom->createElement('category');
-            $category->setAttribute('term', $cat['term']);
-            if (isset($cat['label'])) {
-                $category->setAttribute('label', $cat['label']);
-            } else {
-                $category->setAttribute('label', $cat['term']);
-            }
-            if (isset($cat['scheme'])) {
-                $category->setAttribute('scheme', $cat['scheme']);
-            }
-            $root->appendChild($category);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Atom/Source.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Atom/Source.php
deleted file mode 100644
index 3793db0..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Atom/Source.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer\Feed\Atom;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer;
-use Zend\Feed\Writer\Renderer;
-
-class Source extends AbstractAtom implements Renderer\RendererInterface
-{
-    /**
-     * Constructor
-     *
-     * @param  Writer\Source $container
-     */
-    public function __construct(Writer\Source $container)
-    {
-        parent::__construct($container);
-    }
-
-    /**
-     * Render Atom Feed Metadata (Source element)
-     *
-     * @return Writer\Renderer\Feed\Atom
-     */
-    public function render()
-    {
-        if (!$this->container->getEncoding()) {
-            $this->container->setEncoding('UTF-8');
-        }
-        $this->dom = new DOMDocument('1.0', $this->container->getEncoding());
-        $this->dom->formatOutput = true;
-        $root = $this->dom->createElement('source');
-        $this->setRootElement($root);
-        $this->dom->appendChild($root);
-        $this->_setLanguage($this->dom, $root);
-        $this->_setBaseUrl($this->dom, $root);
-        $this->_setTitle($this->dom, $root);
-        $this->_setDescription($this->dom, $root);
-        $this->_setDateCreated($this->dom, $root);
-        $this->_setDateModified($this->dom, $root);
-        $this->_setGenerator($this->dom, $root);
-        $this->_setLink($this->dom, $root);
-        $this->_setFeedLinks($this->dom, $root);
-        $this->_setId($this->dom, $root);
-        $this->_setAuthors($this->dom, $root);
-        $this->_setCopyright($this->dom, $root);
-        $this->_setCategories($this->dom, $root);
-
-        foreach ($this->extensions as $ext) {
-            $ext->setType($this->getType());
-            $ext->setRootElement($this->getRootElement());
-            $ext->setDomDocument($this->getDomDocument(), $root);
-            $ext->render();
-        }
-        return $this;
-    }
-
-    /**
-     * Set feed generator string
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setGenerator(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getGenerator()) {
-            return;
-        }
-
-        $gdata = $this->getDataContainer()->getGenerator();
-        $generator = $dom->createElement('generator');
-        $root->appendChild($generator);
-        $text = $dom->createTextNode($gdata['name']);
-        $generator->appendChild($text);
-        if (array_key_exists('uri', $gdata)) {
-            $generator->setAttribute('uri', $gdata['uri']);
-        }
-        if (array_key_exists('version', $gdata)) {
-            $generator->setAttribute('version', $gdata['version']);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/AtomSource.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/AtomSource.php
deleted file mode 100644
index d552b80..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/AtomSource.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer\Feed;
-
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Writer;
-use Zend\Feed\Writer\Renderer;
-
-/**
-*/
-class AtomSource extends AbstractAtom implements Renderer\RendererInterface
-{
-    /**
-     * Constructor
-     *
-     * @param  Writer\Source $container
-     */
-    public function __construct(Writer\Source $container)
-    {
-        parent::__construct($container);
-    }
-
-    /**
-     * Render Atom Feed Metadata (Source element)
-     *
-     * @return \Zend\Feed\Writer\Renderer\Feed\Atom
-     */
-    public function render()
-    {
-        if (!$this->container->getEncoding()) {
-            $this->container->setEncoding('UTF-8');
-        }
-        $this->dom = new DOMDocument('1.0', $this->container->getEncoding());
-        $this->dom->formatOutput = true;
-        $root = $this->dom->createElement('source');
-        $this->setRootElement($root);
-        $this->dom->appendChild($root);
-        $this->_setLanguage($this->dom, $root);
-        $this->_setBaseUrl($this->dom, $root);
-        $this->_setTitle($this->dom, $root);
-        $this->_setDescription($this->dom, $root);
-        $this->_setDateCreated($this->dom, $root);
-        $this->_setDateModified($this->dom, $root);
-        $this->_setGenerator($this->dom, $root);
-        $this->_setLink($this->dom, $root);
-        $this->_setFeedLinks($this->dom, $root);
-        $this->_setId($this->dom, $root);
-        $this->_setAuthors($this->dom, $root);
-        $this->_setCopyright($this->dom, $root);
-        $this->_setCategories($this->dom, $root);
-
-        foreach ($this->extensions as $ext) {
-            $ext->setType($this->getType());
-            $ext->setRootElement($this->getRootElement());
-            $ext->setDOMDocument($this->getDOMDocument(), $root);
-            $ext->render();
-        }
-        return $this;
-    }
-
-    /**
-     * Set feed generator string
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setGenerator(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getGenerator()) {
-            return;
-        }
-
-        $gdata = $this->getDataContainer()->getGenerator();
-        $generator = $dom->createElement('generator');
-        $root->appendChild($generator);
-        $text = $dom->createTextNode($gdata['name']);
-        $generator->appendChild($text);
-        if (array_key_exists('uri', $gdata)) {
-            $generator->setAttribute('uri', $gdata['uri']);
-        }
-        if (array_key_exists('version', $gdata)) {
-            $generator->setAttribute('version', $gdata['version']);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Rss.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Rss.php
deleted file mode 100644
index be902b8..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/Feed/Rss.php
+++ /dev/null
@@ -1,488 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer\Feed;
-
-use DateTime;
-use DOMDocument;
-use DOMElement;
-use Zend\Feed\Uri;
-use Zend\Feed\Writer;
-use Zend\Feed\Writer\Renderer;
-use Zend\Feed\Writer\Version;
-
-/**
-*/
-class Rss extends Renderer\AbstractRenderer implements Renderer\RendererInterface
-{
-    /**
-     * Constructor
-     *
-     * @param  Writer\Feed $container
-     */
-    public function __construct(Writer\Feed $container)
-    {
-        parent::__construct($container);
-    }
-
-    /**
-     * Render RSS feed
-     *
-     * @return self
-     */
-    public function render()
-    {
-        $this->dom = new DOMDocument('1.0', $this->container->getEncoding());
-        $this->dom->formatOutput = true;
-        $this->dom->substituteEntities = false;
-        $rss = $this->dom->createElement('rss');
-        $this->setRootElement($rss);
-        $rss->setAttribute('version', '2.0');
-
-        $channel = $this->dom->createElement('channel');
-        $rss->appendChild($channel);
-        $this->dom->appendChild($rss);
-        $this->_setLanguage($this->dom, $channel);
-        $this->_setBaseUrl($this->dom, $channel);
-        $this->_setTitle($this->dom, $channel);
-        $this->_setDescription($this->dom, $channel);
-        $this->_setImage($this->dom, $channel);
-        $this->_setDateCreated($this->dom, $channel);
-        $this->_setDateModified($this->dom, $channel);
-        $this->_setLastBuildDate($this->dom, $channel);
-        $this->_setGenerator($this->dom, $channel);
-        $this->_setLink($this->dom, $channel);
-        $this->_setAuthors($this->dom, $channel);
-        $this->_setCopyright($this->dom, $channel);
-        $this->_setCategories($this->dom, $channel);
-
-        foreach ($this->extensions as $ext) {
-            $ext->setType($this->getType());
-            $ext->setRootElement($this->getRootElement());
-            $ext->setDOMDocument($this->getDOMDocument(), $channel);
-            $ext->render();
-        }
-
-        foreach ($this->container as $entry) {
-            if ($this->getDataContainer()->getEncoding()) {
-                $entry->setEncoding($this->getDataContainer()->getEncoding());
-            }
-            if ($entry instanceof Writer\Entry) {
-                $renderer = new Renderer\Entry\Rss($entry);
-            } else {
-                continue;
-            }
-            if ($this->ignoreExceptions === true) {
-                $renderer->ignoreExceptions();
-            }
-            $renderer->setType($this->getType());
-            $renderer->setRootElement($this->dom->documentElement);
-            $renderer->render();
-            $element = $renderer->getElement();
-            $deep = version_compare(PHP_VERSION, '7', 'ge') ? 1 : true;
-            $imported = $this->dom->importNode($element, $deep);
-            $channel->appendChild($imported);
-        }
-        return $this;
-    }
-
-    /**
-     * Set feed language
-     *
-     * @param DOMDocument $dom
-     * @param DOMElement $root
-     * @return void
-     */
-    protected function _setLanguage(DOMDocument $dom, DOMElement $root)
-    {
-        $lang = $this->getDataContainer()->getLanguage();
-        if (!$lang) {
-            return;
-        }
-        $language = $dom->createElement('language');
-        $root->appendChild($language);
-        $language->nodeValue = $lang;
-    }
-
-    /**
-     * Set feed title
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setTitle(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getTitle()) {
-            $message = 'RSS 2.0 feed elements MUST contain exactly one'
-            . ' title element but a title has not been set';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        $title = $dom->createElement('title');
-        $root->appendChild($title);
-        $text = $dom->createTextNode($this->getDataContainer()->getTitle());
-        $title->appendChild($text);
-    }
-
-    /**
-     * Set feed description
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setDescription(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDescription()) {
-            $message = 'RSS 2.0 feed elements MUST contain exactly one'
-            . ' description element but one has not been set';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-        $subtitle = $dom->createElement('description');
-        $root->appendChild($subtitle);
-        $text = $dom->createTextNode($this->getDataContainer()->getDescription());
-        $subtitle->appendChild($text);
-    }
-
-    /**
-     * Set date feed was last modified
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDateModified(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDateModified()) {
-            return;
-        }
-
-        $updated = $dom->createElement('pubDate');
-        $root->appendChild($updated);
-        $text = $dom->createTextNode(
-            $this->getDataContainer()->getDateModified()->format(DateTime::RSS)
-        );
-        $updated->appendChild($text);
-    }
-
-    /**
-     * Set feed generator string
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setGenerator(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getGenerator()) {
-            $this->getDataContainer()->setGenerator(
-                'Zend_Feed_Writer',
-                Version::VERSION,
-                'http://framework.zend.com'
-            );
-        }
-
-        $gdata = $this->getDataContainer()->getGenerator();
-        $generator = $dom->createElement('generator');
-        $root->appendChild($generator);
-        $name = $gdata['name'];
-        if (array_key_exists('version', $gdata)) {
-            $name .= ' ' . $gdata['version'];
-        }
-        if (array_key_exists('uri', $gdata)) {
-            $name .= ' (' . $gdata['uri'] . ')';
-        }
-        $text = $dom->createTextNode($name);
-        $generator->appendChild($text);
-    }
-
-    /**
-     * Set link to feed
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setLink(DOMDocument $dom, DOMElement $root)
-    {
-        $value = $this->getDataContainer()->getLink();
-        if (!$value) {
-            $message = 'RSS 2.0 feed elements MUST contain exactly one'
-            . ' link element but one has not been set';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-        $link = $dom->createElement('link');
-        $root->appendChild($link);
-        $text = $dom->createTextNode($value);
-        $link->appendChild($text);
-        if (!Uri::factory($value)->isValid()) {
-            $link->setAttribute('isPermaLink', 'false');
-        }
-    }
-
-    /**
-     * Set feed authors
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setAuthors(DOMDocument $dom, DOMElement $root)
-    {
-        $authors = $this->getDataContainer()->getAuthors();
-        if (!$authors || empty($authors)) {
-            return;
-        }
-        foreach ($authors as $data) {
-            $author = $this->dom->createElement('author');
-            $name = $data['name'];
-            if (array_key_exists('email', $data)) {
-                $name = $data['email'] . ' (' . $data['name'] . ')';
-            }
-            $text = $dom->createTextNode($name);
-            $author->appendChild($text);
-            $root->appendChild($author);
-        }
-    }
-
-    /**
-     * Set feed copyright
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCopyright(DOMDocument $dom, DOMElement $root)
-    {
-        $copyright = $this->getDataContainer()->getCopyright();
-        if (!$copyright) {
-            return;
-        }
-        $copy = $dom->createElement('copyright');
-        $root->appendChild($copy);
-        $text = $dom->createTextNode($copyright);
-        $copy->appendChild($text);
-    }
-
-    /**
-     * Set feed channel image
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     * @throws Writer\Exception\InvalidArgumentException
-     */
-    protected function _setImage(DOMDocument $dom, DOMElement $root)
-    {
-        $image = $this->getDataContainer()->getImage();
-        if (!$image) {
-            return;
-        }
-
-        if (!isset($image['title']) || empty($image['title'])
-            || !is_string($image['title'])
-        ) {
-            $message = 'RSS 2.0 feed images must include a title';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        if (empty($image['link']) || !is_string($image['link'])
-            || !Uri::factory($image['link'])->isValid()
-        ) {
-            $message = 'Invalid parameter: parameter \'link\''
-            . ' must be a non-empty string and valid URI/IRI';
-            $exception = new Writer\Exception\InvalidArgumentException($message);
-            if (!$this->ignoreExceptions) {
-                throw $exception;
-            } else {
-                $this->exceptions[] = $exception;
-                return;
-            }
-        }
-
-        $img   = $dom->createElement('image');
-        $root->appendChild($img);
-
-        $url   = $dom->createElement('url');
-        $text  = $dom->createTextNode($image['uri']);
-        $url->appendChild($text);
-
-        $title = $dom->createElement('title');
-        $text  = $dom->createTextNode($image['title']);
-        $title->appendChild($text);
-
-        $link  = $dom->createElement('link');
-        $text  = $dom->createTextNode($image['link']);
-        $link->appendChild($text);
-
-        $img->appendChild($url);
-        $img->appendChild($title);
-        $img->appendChild($link);
-
-        if (isset($image['height'])) {
-            if (!ctype_digit((string) $image['height']) || $image['height'] > 400) {
-                $message = 'Invalid parameter: parameter \'height\''
-                         . ' must be an integer not exceeding 400';
-                $exception = new Writer\Exception\InvalidArgumentException($message);
-                if (!$this->ignoreExceptions) {
-                    throw $exception;
-                } else {
-                    $this->exceptions[] = $exception;
-                    return;
-                }
-            }
-            $height = $dom->createElement('height');
-            $text   = $dom->createTextNode($image['height']);
-            $height->appendChild($text);
-            $img->appendChild($height);
-        }
-        if (isset($image['width'])) {
-            if (!ctype_digit((string) $image['width']) || $image['width'] > 144) {
-                $message = 'Invalid parameter: parameter \'width\''
-                         . ' must be an integer not exceeding 144';
-                $exception = new Writer\Exception\InvalidArgumentException($message);
-                if (!$this->ignoreExceptions) {
-                    throw $exception;
-                } else {
-                    $this->exceptions[] = $exception;
-                    return;
-                }
-            }
-            $width = $dom->createElement('width');
-            $text  = $dom->createTextNode($image['width']);
-            $width->appendChild($text);
-            $img->appendChild($width);
-        }
-        if (isset($image['description'])) {
-            if (empty($image['description']) || !is_string($image['description'])) {
-                $message = 'Invalid parameter: parameter \'description\''
-                         . ' must be a non-empty string';
-                $exception = new Writer\Exception\InvalidArgumentException($message);
-                if (!$this->ignoreExceptions) {
-                    throw $exception;
-                } else {
-                    $this->exceptions[] = $exception;
-                    return;
-                }
-            }
-            $desc = $dom->createElement('description');
-            $text = $dom->createTextNode($image['description']);
-            $desc->appendChild($text);
-            $img->appendChild($desc);
-        }
-    }
-
-    /**
-     * Set date feed was created
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setDateCreated(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getDateCreated()) {
-            return;
-        }
-        if (!$this->getDataContainer()->getDateModified()) {
-            $this->getDataContainer()->setDateModified(
-                $this->getDataContainer()->getDateCreated()
-            );
-        }
-    }
-
-    /**
-     * Set date feed last build date
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setLastBuildDate(DOMDocument $dom, DOMElement $root)
-    {
-        if (!$this->getDataContainer()->getLastBuildDate()) {
-            return;
-        }
-
-        $lastBuildDate = $dom->createElement('lastBuildDate');
-        $root->appendChild($lastBuildDate);
-        $text = $dom->createTextNode(
-            $this->getDataContainer()->getLastBuildDate()->format(DateTime::RSS)
-        );
-        $lastBuildDate->appendChild($text);
-    }
-
-    /**
-     * Set base URL to feed links
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setBaseUrl(DOMDocument $dom, DOMElement $root)
-    {
-        $baseUrl = $this->getDataContainer()->getBaseUrl();
-        if (!$baseUrl) {
-            return;
-        }
-        $root->setAttribute('xml:base', $baseUrl);
-    }
-
-    /**
-     * Set feed categories
-     *
-     * @param  DOMDocument $dom
-     * @param  DOMElement $root
-     * @return void
-     */
-    protected function _setCategories(DOMDocument $dom, DOMElement $root)
-    {
-        $categories = $this->getDataContainer()->getCategories();
-        if (!$categories) {
-            return;
-        }
-        foreach ($categories as $cat) {
-            $category = $dom->createElement('category');
-            if (isset($cat['scheme'])) {
-                $category->setAttribute('domain', $cat['scheme']);
-            }
-            $text = $dom->createTextNode($cat['term']);
-            $category->appendChild($text);
-            $root->appendChild($category);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Renderer/RendererInterface.php b/vendor/zendframework/zend-feed/src/Writer/Renderer/RendererInterface.php
deleted file mode 100644
index 24738ef..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Renderer/RendererInterface.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer\Renderer;
-
-use DOMDocument;
-use DOMElement;
-
-/**
-*/
-interface RendererInterface
-{
-    /**
-     * Render feed/entry
-     *
-     * @return void
-     */
-    public function render();
-
-    /**
-     * Save feed and/or entry to XML and return string
-     *
-     * @return string
-     */
-    public function saveXml();
-
-    /**
-     * Get DOM document
-     *
-     * @return DOMDocument
-     */
-    public function getDomDocument();
-
-    /**
-     * Get document element from DOM
-     *
-     * @return DOMElement
-     */
-    public function getElement();
-
-    /**
-     * Get data container containing feed items
-     *
-     * @return mixed
-     */
-    public function getDataContainer();
-
-    /**
-     * Should exceptions be ignored?
-     *
-     * @return mixed
-     */
-    public function ignoreExceptions();
-
-    /**
-     * Get list of thrown exceptions
-     *
-     * @return array
-     */
-    public function getExceptions();
-
-    /**
-     * Set the current feed type being exported to "rss" or "atom". This allows
-     * other objects to gracefully choose whether to execute or not, depending
-     * on their appropriateness for the current type, e.g. renderers.
-     *
-     * @param string $type
-     */
-    public function setType($type);
-
-    /**
-     * Retrieve the current or last feed type exported.
-     *
-     * @return string Value will be "rss" or "atom"
-     */
-    public function getType();
-
-    /**
-     * Sets the absolute root element for the XML feed being generated. This
-     * helps simplify the appending of namespace declarations, but also ensures
-     * namespaces are added to the root element - not scattered across the entire
-     * XML file - may assist namespace unsafe parsers and looks pretty ;).
-     *
-     * @param DOMElement $root
-     */
-    public function setRootElement(DOMElement $root);
-
-    /**
-     * Retrieve the absolute root element for the XML feed being generated.
-     *
-     * @return DOMElement
-     */
-    public function getRootElement();
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Source.php b/vendor/zendframework/zend-feed/src/Writer/Source.php
deleted file mode 100644
index 23affa7..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Source.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-/**
-*/
-class Source extends AbstractFeed
-{
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Version.php b/vendor/zendframework/zend-feed/src/Writer/Version.php
deleted file mode 100644
index 08351ca..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Version.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-abstract class Version
-{
-    const VERSION = '2';
-}
diff --git a/vendor/zendframework/zend-feed/src/Writer/Writer.php b/vendor/zendframework/zend-feed/src/Writer/Writer.php
deleted file mode 100644
index a4f95bf..0000000
--- a/vendor/zendframework/zend-feed/src/Writer/Writer.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Feed\Writer;
-
-/**
-*/
-class Writer
-{
-    /**
-     * Namespace constants
-     */
-    const NAMESPACE_ATOM_03  = 'http://purl.org/atom/ns#';
-    const NAMESPACE_ATOM_10  = 'http://www.w3.org/2005/Atom';
-    const NAMESPACE_RDF      = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
-    const NAMESPACE_RSS_090  = 'http://my.netscape.com/rdf/simple/0.9/';
-    const NAMESPACE_RSS_10   = 'http://purl.org/rss/1.0/';
-
-    /**
-     * Feed type constants
-     */
-    const TYPE_ANY              = 'any';
-    const TYPE_ATOM_03          = 'atom-03';
-    const TYPE_ATOM_10          = 'atom-10';
-    const TYPE_ATOM_ANY         = 'atom';
-    const TYPE_RSS_090          = 'rss-090';
-    const TYPE_RSS_091          = 'rss-091';
-    const TYPE_RSS_091_NETSCAPE = 'rss-091n';
-    const TYPE_RSS_091_USERLAND = 'rss-091u';
-    const TYPE_RSS_092          = 'rss-092';
-    const TYPE_RSS_093          = 'rss-093';
-    const TYPE_RSS_094          = 'rss-094';
-    const TYPE_RSS_10           = 'rss-10';
-    const TYPE_RSS_20           = 'rss-20';
-    const TYPE_RSS_ANY          = 'rss';
-
-    /**
-     * @var ExtensionManagerInterface
-     */
-    protected static $extensionManager = null;
-
-    /**
-     * Array of registered extensions by class postfix (after the base class
-     * name) across four categories - data containers and renderers for entry
-     * and feed levels.
-     *
-     * @var array
-     */
-    protected static $extensions = [
-        'entry'         => [],
-        'feed'          => [],
-        'entryRenderer' => [],
-        'feedRenderer'  => [],
-    ];
-
-    /**
-     * Set plugin loader for use with Extensions
-     *
-     * @param ExtensionManagerInterface
-     */
-    public static function setExtensionManager(ExtensionManagerInterface $extensionManager)
-    {
-        static::$extensionManager = $extensionManager;
-    }
-
-    /**
-     * Get plugin manager for use with Extensions
-     *
-     * @return ExtensionManagerInterface
-     */
-    public static function getExtensionManager()
-    {
-        if (!isset(static::$extensionManager)) {
-            static::setExtensionManager(new ExtensionManager());
-        }
-        return static::$extensionManager;
-    }
-
-    /**
-     * Register an Extension by name
-     *
-     * @param  string $name
-     * @return void
-     * @throws Exception\RuntimeException if unable to resolve Extension class
-     */
-    public static function registerExtension($name)
-    {
-        $feedName          = $name . '\Feed';
-        $entryName         = $name . '\Entry';
-        $feedRendererName  = $name . '\Renderer\Feed';
-        $entryRendererName = $name . '\Renderer\Entry';
-        $manager           = static::getExtensionManager();
-        if (static::isRegistered($name)) {
-            if ($manager->has($feedName)
-                || $manager->has($entryName)
-                || $manager->has($feedRendererName)
-                || $manager->has($entryRendererName)
-            ) {
-                return;
-            }
-        }
-        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.');
-        }
-        if ($manager->has($feedName)) {
-            static::$extensions['feed'][] = $feedName;
-        }
-        if ($manager->has($entryName)) {
-            static::$extensions['entry'][] = $entryName;
-        }
-        if ($manager->has($feedRendererName)) {
-            static::$extensions['feedRenderer'][] = $feedRendererName;
-        }
-        if ($manager->has($entryRendererName)) {
-            static::$extensions['entryRenderer'][] = $entryRendererName;
-        }
-    }
-
-    /**
-     * Is a given named Extension registered?
-     *
-     * @param  string $extensionName
-     * @return bool
-     */
-    public static function isRegistered($extensionName)
-    {
-        $feedName          = $extensionName . '\Feed';
-        $entryName         = $extensionName . '\Entry';
-        $feedRendererName  = $extensionName . '\Renderer\Feed';
-        $entryRendererName = $extensionName . '\Renderer\Entry';
-        if (in_array($feedName, static::$extensions['feed'])
-            || in_array($entryName, static::$extensions['entry'])
-            || in_array($feedRendererName, static::$extensions['feedRenderer'])
-            || in_array($entryRendererName, static::$extensions['entryRenderer'])
-        ) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Get a list of extensions
-     *
-     * @return array
-     */
-    public static function getExtensions()
-    {
-        return static::$extensions;
-    }
-
-    /**
-     * Reset class state to defaults
-     *
-     * @return void
-     */
-    public static function reset()
-    {
-        static::$extensionManager = null;
-        static::$extensions   = [
-            'entry'         => [],
-            'feed'          => [],
-            'entryRenderer' => [],
-            'feedRenderer'  => [],
-        ];
-    }
-
-    /**
-     * Register core (default) extensions
-     *
-     * @return void
-     */
-    public static function registerCoreExtensions()
-    {
-        static::registerExtension('DublinCore');
-        static::registerExtension('Content');
-        static::registerExtension('Atom');
-        static::registerExtension('Slash');
-        static::registerExtension('WellFormedWeb');
-        static::registerExtension('Threading');
-        static::registerExtension('ITunes');
-    }
-
-    public static function lcfirst($str)
-    {
-        $str[0] = strtolower($str[0]);
-        return $str;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/CHANGELOG.md b/vendor/zendframework/zend-hydrator/CHANGELOG.md
deleted file mode 100644
index 6911686..0000000
--- a/vendor/zendframework/zend-hydrator/CHANGELOG.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 1.0.0 - 2015-09-17
-
-Initial release. This ports all hydrator classes and functionality from
-[zend-stdlib](https://github.com/zendframework/zend-stdlib) to a standalone
-repository. All final keywords are removed, to allow a deprecation cycle in the
-zend-stdlib component.
-
-Please note: the following classes will be marked as `final` for a version 2.0.0
-release to immediately follow 1.0.0:
-
-- `Zend\Hydrator\NamingStrategy\IdentityNamingStrategy`
-- `Zend\Hydrator\NamingStrategy\ArrayMapNamingStrategy`
-- `Zend\Hydrator\NamingStrategy\CompositeNamingStrategy`
-- `Zend\Hydrator\Strategy\ExplodeStrategy`
-- `Zend\Hydrator\Strategy\StrategyChain`
-- `Zend\Hydrator\Strategy\DateTimeFormatterStrategy`
-- `Zend\Hydrator\Strategy\BooleanStrategy`
-
-As such, you should not extend them.
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
diff --git a/vendor/zendframework/zend-hydrator/CONTRIBUTING.md b/vendor/zendframework/zend-hydrator/CONTRIBUTING.md
deleted file mode 100644
index ddfff50..0000000
--- a/vendor/zendframework/zend-hydrator/CONTRIBUTING.md
+++ /dev/null
@@ -1,229 +0,0 @@
-# CONTRIBUTING
-
-## RESOURCES
-
-If you wish to contribute to Zend Framework, please be sure to
-read/subscribe to the following resources:
-
- -  [Coding Standards](https://github.com/zendframework/zf2/wiki/Coding-Standards)
- -  [Contributor's Guide](http://framework.zend.com/participate/contributor-guide)
- -  ZF Contributor's mailing list:
-    Archives: http://zend-framework-community.634137.n4.nabble.com/ZF-Contributor-f680267.html
-    Subscribe: zf-contributors-subscribe@lists.zend.com
- -  ZF Contributor's IRC channel:
-    #zftalk.dev on Freenode.net
-
-If you are working on new features or refactoring [create a proposal](https://github.com/zendframework/zend-hydrator/issues/new).
-
-## Reporting Potential Security Issues
-
-If you have encountered a potential security vulnerability, please **DO NOT** report it on the public
-issue tracker: send it to us at [zf-security@zend.com](mailto:zf-security@zend.com) instead.
-We will work with you to verify the vulnerability and patch it as soon as possible.
-
-When reporting issues, please provide the following information:
-
-- Component(s) affected
-- A description indicating how to reproduce the issue
-- A summary of the security vulnerability and impact
-
-We request that you contact us via the email address above and give the project
-contributors a chance to resolve the vulnerability and issue a new release prior
-to any public exposure; this helps protect users and provides them with a chance
-to upgrade and/or update in order to protect their applications.
-
-For sensitive email communications, please use [our PGP key](http://framework.zend.com/zf-security-pgp-key.asc).
-
-## RUNNING TESTS
-
-> ### Note: testing versions prior to 2.4
->
-> This component originates with Zend Framework 2. During the lifetime of ZF2,
-> testing infrastructure migrated from PHPUnit 3 to PHPUnit 4. In most cases, no
-> changes were necessary. However, due to the migration, tests may not run on
-> versions < 2.4. As such, you may need to change the PHPUnit dependency if
-> attempting a fix on such a version.
-
-To run tests:
-
-- Clone the repository:
-
-  ```console
-  $ git clone git@github.com:zendframework/zend-hydrator.git
-  $ cd
-  ```
-
-- Install dependencies via composer:
-
-  ```console
-  $ curl -sS https://getcomposer.org/installer | php --
-  $ ./composer.phar install
-  ```
-
-  If you don't have `curl` installed, you can also download `composer.phar` from https://getcomposer.org/
-
-- Run the tests via `phpunit` and the provided PHPUnit config, like in this example:
-
-  ```console
-  $ ./vendor/bin/phpunit
-  ```
-
-You can turn on conditional tests with the phpunit.xml file.
-To do so:
-
- -  Copy `phpunit.xml.dist` file to `phpunit.xml`
- -  Edit `phpunit.xml` to enable any specific functionality you
-    want to test, as well as to provide test values to utilize.
-
-## Running Coding Standards Checks
-
-This component uses [phpcs](https://github.com/squizlabs/PHP_CodeSniffer) for coding
-standards checks, and provides configuration for our selected checks.
-`phpcs` is installed by default via Composer.
-
-To run checks only:
-
-```console
-$ ./vendor/bin/phpcs
-```
-
-`phpcs` also provides a tool that can automatically fix many CS issues,
-`phpcbf`:
-
-```console
-$ ./vendor/bin/phpcbf
-```
-
-If you allow `phpcbf` to fix CS issues, please re-run the tests to ensure
-they pass, and make sure you add and commit the changes after verification.
-
-## Recommended Workflow for Contributions
-
-Your first step is to establish a public repository from which we can
-pull your work into the master repository. We recommend using
-[GitHub](https://github.com), as that is where the component is already hosted.
-
-1. Setup a [GitHub account](http://github.com/), if you haven't yet
-2. Fork the repository (http://github.com/zendframework/zend-hydrator)
-3. Clone the canonical repository locally and enter it.
-
-   ```console
-   $ git clone git://github.com:zendframework/zend-hydrator.git
-   $ cd zend-hydrator
-   ```
-
-4. Add a remote to your fork; substitute your GitHub username in the command
-   below.
-
-   ```console
-   $ git remote add {username} git@github.com:{username}/zend-hydrator.git
-   $ git fetch {username}
-   ```
-
-### Keeping Up-to-Date
-
-Periodically, you should update your fork or personal repository to
-match the canonical ZF repository. Assuming you have setup your local repository
-per the instructions above, you can do the following:
-
-
-```console
-$ git checkout master
-$ git fetch origin
-$ git rebase origin/master
-# OPTIONALLY, to keep your remote up-to-date -
-$ git push {username} master:master
-```
-
-If you're tracking other branches -- for example, the "develop" branch, where
-new feature development occurs -- you'll want to do the same operations for that
-branch; simply substitute  "develop" for "master".
-
-### Working on a patch
-
-We recommend you do each new feature or bugfix in a new branch. This simplifies
-the task of code review as well as the task of merging your changes into the
-canonical repository.
-
-A typical workflow will then consist of the following:
-
-1. Create a new local branch based off either your master or develop branch.
-2. Switch to your new local branch. (This step can be combined with the
-   previous step with the use of `git checkout -b`.)
-3. Do some work, commit, repeat as necessary.
-4. Push the local branch to your remote repository.
-5. Send a pull request.
-
-The mechanics of this process are actually quite trivial. Below, we will
-create a branch for fixing an issue in the tracker.
-
-```console
-$ git checkout -b hotfix/9295
-Switched to a new branch 'hotfix/9295'
-```
-
-... do some work ...
-
-
-```console
-$ git commit
-```
-
-... write your log message ...
-
-
-```console
-$ git push {username} hotfix/9295:hotfix/9295
-Counting objects: 38, done.
-Delta compression using up to 2 threads.
-Compression objects: 100% (18/18), done.
-Writing objects: 100% (20/20), 8.19KiB, done.
-Total 20 (delta 12), reused 0 (delta 0)
-To ssh://git@github.com/{username}/zend-hydrator.git
-   b5583aa..4f51698  HEAD -> master
-```
-
-To send a pull request, you have two options.
-
-If using GitHub, you can do the pull request from there. Navigate to
-your repository, select the branch you just created, and then select the
-"Pull Request" button in the upper right. Select the user/organization
-"zendframework" as the recipient.
-
-If using your own repository - or even if using GitHub - you can use `git
-format-patch` to create a patchset for us to apply; in fact, this is
-**recommended** for security-related patches. If you use `format-patch`, please
-send the patches as attachments to:
-
--  zf-devteam@zend.com for patches without security implications
--  zf-security@zend.com for security patches
-
-#### What branch to issue the pull request against?
-
-Which branch should you issue a pull request against?
-
-- For fixes against the stable release, issue the pull request against the
-  "master" branch.
-- For new features, or fixes that introduce new elements to the public API (such
-  as new public methods or properties), issue the pull request against the
-  "develop" branch.
-
-### Branch Cleanup
-
-As you might imagine, if you are a frequent contributor, you'll start to
-get a ton of branches both locally and on your remote.
-
-Once you know that your changes have been accepted to the master
-repository, we suggest doing some cleanup of these branches.
-
--  Local branch cleanup
-
-   ```console
-   $ git branch -d <branchname>
-   ```
-
--  Remote branch removal
-
-   ```console
-   $ git push {username} :<branchname>
-   ```
diff --git a/vendor/zendframework/zend-hydrator/LICENSE.md b/vendor/zendframework/zend-hydrator/LICENSE.md
deleted file mode 100644
index dbb1b49..0000000
--- a/vendor/zendframework/zend-hydrator/LICENSE.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2005-2015, Zend Technologies USA, Inc.
-
-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 Zend Technologies USA, Inc. nor the names of its
-  contributors may be used to endorse or promote products derived from this
-  software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/zendframework/zend-hydrator/README.md b/vendor/zendframework/zend-hydrator/README.md
deleted file mode 100644
index 7608334..0000000
--- a/vendor/zendframework/zend-hydrator/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# zend-hydrator
-
-[![Build Status](https://secure.travis-ci.org/zendframework/zend-hydrator.svg?branch=master)](https://secure.travis-ci.org/zendframework/zend-hydrator)
-[![Coverage Status](https://coveralls.io/repos/zendframework/zend-hydrator/badge.svg?branch=master)](https://coveralls.io/r/zendframework/zend-hydrator?branch=master)
-
-`Zend\Hydrator` provides utilities for mapping arrays to objects, and vice
-versa, including facilities for filtering which data is mapped as well as
-providing mechanisms for mapping nested structures.
-
-- File issues at https://github.com/zendframework/zend-hydrator/issues
-- Documentation is at http://framework.zend.com/manual/current/en/index.html#zend-stdlib
diff --git a/vendor/zendframework/zend-hydrator/composer.json b/vendor/zendframework/zend-hydrator/composer.json
deleted file mode 100644
index 21b4afe..0000000
--- a/vendor/zendframework/zend-hydrator/composer.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-    "name": "zendframework/zend-hydrator",
-    "description": " ",
-    "license": "BSD-3-Clause",
-    "keywords": [
-        "zf2",
-        "hydrator"
-    ],
-    "homepage": "https://github.com/zendframework/zend-hydrator",
-    "autoload": {
-        "psr-4": {
-            "Zend\\Hydrator\\": "src/"
-        }
-    },
-    "require": {
-        "php": ">=5.5",
-        "zendframework/zend-stdlib": "^2.5.1"
-    },
-    "require-dev": {
-        "zendframework/zend-eventmanager": "^2.5.1",
-        "zendframework/zend-inputfilter": "^2.5.1",
-        "zendframework/zend-serializer": "^2.5.1",
-        "zendframework/zend-servicemanager": "^2.5.1",
-        "zendframework/zend-filter": "^2.5.1",
-        "phpunit/PHPUnit": "~4.0",
-        "squizlabs/php_codesniffer": "^2.0@dev"
-    },
-    "suggest": {
-        "zendframework/zend-eventmanager": "^2.5.1, to support aggregate hydrator usage",
-        "zendframework/zend-serializer": "^2.5.1, to use the SerializableStrategy",
-        "zendframework/zend-servicemanager": "^2.5.1, to support hydrator plugin manager usage",
-        "zendframework/zend-filter": "^2.5.1, to support naming strategy hydrator usage"
-    },
-    "minimum-stability": "dev",
-    "prefer-stable": true,
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0-dev",
-            "dev-develop": "1.1-dev"
-        }
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "ZendTest\\Hydrator\\": "test/"
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/phpcs.xml b/vendor/zendframework/zend-hydrator/phpcs.xml
deleted file mode 100644
index e994eae..0000000
--- a/vendor/zendframework/zend-hydrator/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-hydrator/src/AbstractHydrator.php b/vendor/zendframework/zend-hydrator/src/AbstractHydrator.php
deleted file mode 100644
index 6f3f0a9..0000000
--- a/vendor/zendframework/zend-hydrator/src/AbstractHydrator.php
+++ /dev/null
@@ -1,283 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-use ArrayObject;
-
-abstract class AbstractHydrator implements
-    HydratorInterface,
-    StrategyEnabledInterface,
-    FilterEnabledInterface,
-    NamingStrategyEnabledInterface
-{
-    /**
-     * The list with strategies that this hydrator has.
-     *
-     * @var ArrayObject
-     */
-    protected $strategies;
-
-    /**
-     * An instance of NamingStrategy\NamingStrategyInterface
-     *
-     * @var NamingStrategy\NamingStrategyInterface
-     */
-    protected $namingStrategy;
-
-    /**
-     * Composite to filter the methods, that need to be hydrated
-     *
-     * @var Filter\FilterComposite
-     */
-    protected $filterComposite;
-
-    /**
-     * Initializes a new instance of this class.
-     */
-    public function __construct()
-    {
-        $this->strategies = new ArrayObject();
-        $this->filterComposite = new Filter\FilterComposite();
-    }
-
-    /**
-     * Gets the strategy with the given name.
-     *
-     * @param string $name The name of the strategy to get.
-     *
-     * @throws Exception\InvalidArgumentException
-     * @return Strategy\StrategyInterface
-     */
-    public function getStrategy($name)
-    {
-        if (isset($this->strategies[$name])) {
-            return $this->strategies[$name];
-        }
-
-        if (!isset($this->strategies['*'])) {
-            throw new Exception\InvalidArgumentException(sprintf(
-                '%s: no strategy by name of "%s", and no wildcard strategy present',
-                __METHOD__,
-                $name
-            ));
-        }
-
-        return $this->strategies['*'];
-    }
-
-    /**
-     * Checks if the strategy with the given name exists.
-     *
-     * @param string $name The name of the strategy to check for.
-     * @return bool
-     */
-    public function hasStrategy($name)
-    {
-        return array_key_exists($name, $this->strategies)
-               || array_key_exists('*', $this->strategies);
-    }
-
-    /**
-     * Adds the given strategy under the given name.
-     *
-     * @param string $name The name of the strategy to register.
-     * @param Strategy\StrategyInterface $strategy The strategy to register.
-     * @return HydratorInterface
-     */
-    public function addStrategy($name, Strategy\StrategyInterface $strategy)
-    {
-        $this->strategies[$name] = $strategy;
-        return $this;
-    }
-
-    /**
-     * Removes the strategy with the given name.
-     *
-     * @param string $name The name of the strategy to remove.
-     * @return HydratorInterface
-     */
-    public function removeStrategy($name)
-    {
-        unset($this->strategies[$name]);
-        return $this;
-    }
-
-    /**
-     * Converts a value for extraction. If no strategy exists the plain value is returned.
-     *
-     * @param  string $name  The name of the strategy to use.
-     * @param  mixed  $value  The value that should be converted.
-     * @param  mixed  $object The object is optionally provided as context.
-     * @return mixed
-     */
-    public function extractValue($name, $value, $object = null)
-    {
-        if ($this->hasStrategy($name)) {
-            $strategy = $this->getStrategy($name);
-            $value = $strategy->extract($value, $object);
-        }
-        return $value;
-    }
-
-    /**
-     * Converts a value for hydration. If no strategy exists the plain value is returned.
-     *
-     * @param string $name The name of the strategy to use.
-     * @param mixed $value The value that should be converted.
-     * @param array $data The whole data is optionally provided as context.
-     * @return mixed
-     */
-    public function hydrateValue($name, $value, $data = null)
-    {
-        if ($this->hasStrategy($name)) {
-            $strategy = $this->getStrategy($name);
-            $value = $strategy->hydrate($value, $data);
-        }
-        return $value;
-    }
-
-    /**
-     * Convert a name for extraction. If no naming strategy exists, the plain value is returned.
-     *
-     * @param string $name    The name to convert.
-     * @param null   $object  The object is optionally provided as context.
-     * @return mixed
-     */
-    public function extractName($name, $object = null)
-    {
-        if ($this->hasNamingStrategy()) {
-            $name = $this->getNamingStrategy()->extract($name, $object);
-        }
-        return $name;
-    }
-
-    /**
-     * Converts a value for hydration. If no naming strategy exists, the plain value is returned.
-     *
-     * @param string $name  The name to convert.
-     * @param array  $data  The whole data is optionally provided as context.
-     * @return mixed
-     */
-    public function hydrateName($name, $data = null)
-    {
-        if ($this->hasNamingStrategy()) {
-            $name = $this->getNamingStrategy()->hydrate($name, $data);
-        }
-        return $name;
-    }
-
-    /**
-     * Get the filter instance
-     *
-     * @return Filter\FilterComposite
-     */
-    public function getFilter()
-    {
-        return $this->filterComposite;
-    }
-
-    /**
-     * Add a new filter to take care of what needs to be hydrated.
-     * To exclude e.g. the method getServiceLocator:
-     *
-     * <code>
-     * $composite->addFilter("servicelocator",
-     *     function ($property) {
-     *         list($class, $method) = explode('::', $property);
-     *         if ($method === 'getServiceLocator') {
-     *             return false;
-     *         }
-     *         return true;
-     *     }, FilterComposite::CONDITION_AND
-     * );
-     * </code>
-     *
-     * @param string $name Index in the composite
-     * @param callable|Filter\FilterInterface $filter
-     * @param int $condition
-     * @return Filter\FilterComposite
-     */
-    public function addFilter($name, $filter, $condition = Filter\FilterComposite::CONDITION_OR)
-    {
-        return $this->filterComposite->addFilter($name, $filter, $condition);
-    }
-
-    /**
-     * Check whether a specific filter exists at key $name or not
-     *
-     * @param string $name Index in the composite
-     * @return bool
-     */
-    public function hasFilter($name)
-    {
-        return $this->filterComposite->hasFilter($name);
-    }
-
-    /**
-     * Remove a filter from the composition.
-     * To not extract "has" methods, you simply need to unregister it
-     *
-     * <code>
-     * $filterComposite->removeFilter('has');
-     * </code>
-     *
-     * @param $name
-     * @return Filter\FilterComposite
-     */
-    public function removeFilter($name)
-    {
-        return $this->filterComposite->removeFilter($name);
-    }
-
-    /**
-     * Adds the given naming strategy
-     *
-     * @param NamingStrategy\NamingStrategyInterface $strategy The naming to register.
-     * @return self
-     */
-    public function setNamingStrategy(NamingStrategy\NamingStrategyInterface $strategy)
-    {
-        $this->namingStrategy = $strategy;
-
-        return $this;
-    }
-
-    /**
-     * Gets the naming strategy.
-     *
-     * @return NamingStrategy\NamingStrategyInterface
-     */
-    public function getNamingStrategy()
-    {
-        return $this->namingStrategy;
-    }
-
-    /**
-     * Checks if a naming strategy exists.
-     *
-     * @return bool
-     */
-    public function hasNamingStrategy()
-    {
-        return isset($this->namingStrategy);
-    }
-
-    /**
-     * Removes the naming strategy
-     *
-     * @return self
-     */
-    public function removeNamingStrategy()
-    {
-        $this->namingStrategy = null;
-
-        return $this;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Aggregate/AggregateHydrator.php b/vendor/zendframework/zend-hydrator/src/Aggregate/AggregateHydrator.php
deleted file mode 100644
index fa384ad..0000000
--- a/vendor/zendframework/zend-hydrator/src/Aggregate/AggregateHydrator.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Aggregate;
-
-use Zend\EventManager\EventManager;
-use Zend\EventManager\EventManagerAwareInterface;
-use Zend\EventManager\EventManagerInterface;
-use Zend\Hydrator\HydratorInterface;
-
-/**
- * Aggregate hydrator that composes multiple hydrators via events
- */
-class AggregateHydrator implements HydratorInterface, EventManagerAwareInterface
-{
-    const DEFAULT_PRIORITY = 1;
-
-    /**
-     * @var EventManagerInterface|null
-     */
-    protected $eventManager;
-
-    /**
-     * Attaches the provided hydrator to the list of hydrators to be used while hydrating/extracting data
-     *
-     * @param HydratorInterface $hydrator
-     * @param int $priority
-     */
-    public function add(HydratorInterface $hydrator, $priority = self::DEFAULT_PRIORITY)
-    {
-        $this->getEventManager()->attachAggregate(new HydratorListener($hydrator), $priority);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function extract($object)
-    {
-        $event = new ExtractEvent($this, $object);
-
-        $this->getEventManager()->trigger($event);
-
-        return $event->getExtractedData();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function hydrate(array $data, $object)
-    {
-        $event = new HydrateEvent($this, $object, $data);
-
-        $this->getEventManager()->trigger($event);
-
-        return $event->getHydratedObject();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function setEventManager(EventManagerInterface $eventManager)
-    {
-        $eventManager->setIdentifiers([__CLASS__, get_class($this)]);
-
-        $this->eventManager = $eventManager;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getEventManager()
-    {
-        if (null === $this->eventManager) {
-            $this->setEventManager(new EventManager());
-        }
-
-        return $this->eventManager;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Aggregate/ExtractEvent.php b/vendor/zendframework/zend-hydrator/src/Aggregate/ExtractEvent.php
deleted file mode 100644
index 1395917..0000000
--- a/vendor/zendframework/zend-hydrator/src/Aggregate/ExtractEvent.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Aggregate;
-
-use Zend\EventManager\Event;
-
-/**
- * Event triggered when the {@see AggregateHydrator} extracts
- * data from an object
- */
-class ExtractEvent extends Event
-{
-    const EVENT_EXTRACT = 'extract';
-
-    /**
-     * {@inheritDoc}
-     */
-    protected $name = self::EVENT_EXTRACT;
-
-    /**
-     * @var object
-     */
-    protected $extractionObject;
-
-    /**
-     * @var array
-     */
-    protected $extractedData = [];
-
-    /**
-     * @param object $target
-     * @param object $extractionObject
-     */
-    public function __construct($target, $extractionObject)
-    {
-        $this->target           = $target;
-        $this->extractionObject = $extractionObject;
-    }
-
-    /**
-     * Retrieves the object from which data is extracted
-     *
-     * @return object
-     */
-    public function getExtractionObject()
-    {
-        return $this->extractionObject;
-    }
-
-    /**
-     * @param object $extractionObject
-     *
-     * @return void
-     */
-    public function setExtractionObject($extractionObject)
-    {
-        $this->extractionObject = $extractionObject;
-    }
-
-    /**
-     * Retrieves the data that has been extracted
-     *
-     * @return array
-     */
-    public function getExtractedData()
-    {
-        return $this->extractedData;
-    }
-
-    /**
-     * @param array $extractedData
-     *
-     * @return void
-     */
-    public function setExtractedData(array $extractedData)
-    {
-        $this->extractedData = $extractedData;
-    }
-
-    /**
-     * Merge provided data with the extracted data
-     *
-     * @param array $additionalData
-     *
-     * @return void
-     */
-    public function mergeExtractedData(array $additionalData)
-    {
-        $this->extractedData = array_merge($this->extractedData, $additionalData);
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Aggregate/HydrateEvent.php b/vendor/zendframework/zend-hydrator/src/Aggregate/HydrateEvent.php
deleted file mode 100644
index 7865964..0000000
--- a/vendor/zendframework/zend-hydrator/src/Aggregate/HydrateEvent.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Aggregate;
-
-use Zend\EventManager\Event;
-
-/**
- * Event triggered when the {@see AggregateHydrator} hydrates
- * data into an object
- */
-class HydrateEvent extends Event
-{
-    const EVENT_HYDRATE = 'hydrate';
-
-    /**
-     * {@inheritDoc}
-     */
-    protected $name = self::EVENT_HYDRATE;
-
-    /**
-     * @var object
-     */
-    protected $hydratedObject;
-
-    /**
-     * @var array
-     */
-    protected $hydrationData;
-
-    /**
-     * @param object $target
-     * @param object $hydratedObject
-     * @param array  $hydrationData
-     */
-    public function __construct($target, $hydratedObject, array $hydrationData)
-    {
-        $this->target         = $target;
-        $this->hydratedObject = $hydratedObject;
-        $this->hydrationData  = $hydrationData;
-    }
-
-    /**
-     * Retrieves the object that is being hydrated
-     *
-     * @return object
-     */
-    public function getHydratedObject()
-    {
-        return $this->hydratedObject;
-    }
-
-    /**
-     * @param object $hydratedObject
-     */
-    public function setHydratedObject($hydratedObject)
-    {
-        $this->hydratedObject = $hydratedObject;
-    }
-
-    /**
-     * Retrieves the data that is being used for hydration
-     *
-     * @return array
-     */
-    public function getHydrationData()
-    {
-        return $this->hydrationData;
-    }
-
-    /**
-     * @param array $hydrationData
-     */
-    public function setHydrationData(array $hydrationData)
-    {
-        $this->hydrationData = $hydrationData;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Aggregate/HydratorListener.php b/vendor/zendframework/zend-hydrator/src/Aggregate/HydratorListener.php
deleted file mode 100644
index c8260a4..0000000
--- a/vendor/zendframework/zend-hydrator/src/Aggregate/HydratorListener.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Aggregate;
-
-use Zend\EventManager\AbstractListenerAggregate;
-use Zend\EventManager\EventManagerInterface;
-use Zend\Hydrator\HydratorInterface;
-
-/**
- * Aggregate listener wrapping around a hydrator.
- *
- * Listens to {@see HydrateEvent::EVENT_HYDRATE} and {@see ExtractEvent::EVENT_EXTRACT}
- */
-class HydratorListener extends AbstractListenerAggregate
-{
-    /**
-     * @var HydratorInterface
-     */
-    protected $hydrator;
-
-    /**
-     * @param HydratorInterface $hydrator
-     */
-    public function __construct(HydratorInterface $hydrator)
-    {
-        $this->hydrator = $hydrator;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function attach(EventManagerInterface $events, $priority = 1)
-    {
-        $this->listeners[] = $events->attach(HydrateEvent::EVENT_HYDRATE, [$this, 'onHydrate'], $priority);
-        $this->listeners[] = $events->attach(ExtractEvent::EVENT_EXTRACT, [$this, 'onExtract'], $priority);
-    }
-
-    /**
-     * Callback to be used when {@see HydrateEvent::EVENT_HYDRATE} is triggered
-     *
-     * @param HydrateEvent $event
-     * @return object
-     * @internal
-     */
-    public function onHydrate(HydrateEvent $event)
-    {
-        $object = $this->hydrator->hydrate($event->getHydrationData(), $event->getHydratedObject());
-        $event->setHydratedObject($object);
-        return $object;
-    }
-
-    /**
-     * Callback to be used when {@see ExtractEvent::EVENT_EXTRACT} is triggered
-     *
-     * @param ExtractEvent $event
-     * @return array
-     * @internal
-     */
-    public function onExtract(ExtractEvent $event)
-    {
-        $data = $this->hydrator->extract($event->getExtractionObject());
-        $event->mergeExtractedData($data);
-        return $data;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/ArraySerializable.php b/vendor/zendframework/zend-hydrator/src/ArraySerializable.php
deleted file mode 100644
index 24edee5..0000000
--- a/vendor/zendframework/zend-hydrator/src/ArraySerializable.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-class ArraySerializable extends AbstractHydrator
-{
-    /**
-     * Extract values from the provided object
-     *
-     * Extracts values via the object's getArrayCopy() method.
-     *
-     * @param  object $object
-     * @return array
-     * @throws Exception\BadMethodCallException for an $object not implementing getArrayCopy()
-     */
-    public function extract($object)
-    {
-        if (! is_callable([$object, 'getArrayCopy'])) {
-            throw new Exception\BadMethodCallException(
-                sprintf('%s expects the provided object to implement getArrayCopy()', __METHOD__)
-            );
-        }
-
-        $data   = $object->getArrayCopy();
-        $filter = $this->getFilter();
-
-        foreach ($data as $name => $value) {
-            if (!$filter->filter($name)) {
-                unset($data[$name]);
-                continue;
-            }
-            $extractedName = $this->extractName($name, $object);
-            // replace the original key with extracted, if differ
-            if ($extractedName !== $name) {
-                unset($data[$name]);
-                $name = $extractedName;
-            }
-            $data[$name] = $this->extractValue($name, $value, $object);
-        }
-
-        return $data;
-    }
-
-    /**
-     * Hydrate an object
-     *
-     * Hydrates an object by passing $data to either its exchangeArray() or
-     * populate() method.
-     *
-     * @param  array $data
-     * @param  object $object
-     * @return object
-     * @throws Exception\BadMethodCallException for an $object not implementing exchangeArray() or populate()
-     */
-    public function hydrate(array $data, $object)
-    {
-        $replacement = [];
-        foreach ($data as $key => $value) {
-            $name = $this->hydrateName($key, $data);
-            $replacement[$name] = $this->hydrateValue($name, $value, $data);
-        }
-
-        if (is_callable([$object, 'exchangeArray'])) {
-            $object->exchangeArray($replacement);
-        } elseif (is_callable([$object, 'populate'])) {
-            $object->populate($replacement);
-        } else {
-            throw new Exception\BadMethodCallException(
-                sprintf('%s expects the provided object to implement exchangeArray() or populate()', __METHOD__)
-            );
-        }
-        return $object;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/ClassMethods.php b/vendor/zendframework/zend-hydrator/src/ClassMethods.php
deleted file mode 100644
index 80cce84..0000000
--- a/vendor/zendframework/zend-hydrator/src/ClassMethods.php
+++ /dev/null
@@ -1,268 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-use Traversable;
-use Zend\Stdlib\ArrayUtils;
-
-class ClassMethods extends AbstractHydrator implements HydratorOptionsInterface
-{
-    /**
-     * Holds the names of the methods used for hydration, indexed by class::property name,
-     * false if the hydration method is not callable/usable for hydration purposes
-     *
-     * @var string[]|bool[]
-     */
-    private $hydrationMethodsCache = [];
-
-    /**
-     * A map of extraction methods to property name to be used during extraction, indexed
-     * by class name and method name
-     *
-     * @var string[][]
-     */
-    private $extractionMethodsCache = [];
-
-    /**
-     * Flag defining whether array keys are underscore-separated (true) or camel case (false)
-     *
-     * @var bool
-     */
-    protected $underscoreSeparatedKeys = true;
-
-    /**
-     * @var Filter\FilterInterface
-     */
-    private $callableMethodFilter;
-
-    /**
-     * Define if extract values will use camel case or name with underscore
-     * @param bool|array $underscoreSeparatedKeys
-     */
-    public function __construct($underscoreSeparatedKeys = true)
-    {
-        parent::__construct();
-        $this->setUnderscoreSeparatedKeys($underscoreSeparatedKeys);
-
-        $this->callableMethodFilter = new Filter\OptionalParametersFilter();
-
-        $this->filterComposite->addFilter('is', new Filter\IsFilter());
-        $this->filterComposite->addFilter('has', new Filter\HasFilter());
-        $this->filterComposite->addFilter('get', new Filter\GetFilter());
-        $this->filterComposite->addFilter(
-            'parameter',
-            new Filter\OptionalParametersFilter(),
-            Filter\FilterComposite::CONDITION_AND
-        );
-    }
-
-    /**
-     * @param  array|Traversable                 $options
-     * @return ClassMethods
-     * @throws Exception\InvalidArgumentException
-     */
-    public function setOptions($options)
-    {
-        if ($options instanceof Traversable) {
-            $options = ArrayUtils::iteratorToArray($options);
-        } elseif (!is_array($options)) {
-            throw new Exception\InvalidArgumentException(
-                'The options parameter must be an array or a Traversable'
-            );
-        }
-        if (isset($options['underscoreSeparatedKeys'])) {
-            $this->setUnderscoreSeparatedKeys($options['underscoreSeparatedKeys']);
-        }
-
-        return $this;
-    }
-
-    /**
-     * @param  bool      $underscoreSeparatedKeys
-     * @return ClassMethods
-     */
-    public function setUnderscoreSeparatedKeys($underscoreSeparatedKeys)
-    {
-        $this->underscoreSeparatedKeys = (bool) $underscoreSeparatedKeys;
-
-        if ($this->underscoreSeparatedKeys) {
-            $this->setNamingStrategy(new NamingStrategy\UnderscoreNamingStrategy);
-        } elseif ($this->getNamingStrategy() instanceof NamingStrategy\UnderscoreNamingStrategy) {
-            $this->removeNamingStrategy();
-        }
-
-        return $this;
-    }
-
-    /**
-     * @return bool
-     */
-    public function getUnderscoreSeparatedKeys()
-    {
-        return $this->underscoreSeparatedKeys;
-    }
-
-    /**
-     * Extract values from an object with class methods
-     *
-     * Extracts the getter/setter of the given $object.
-     *
-     * @param  object                           $object
-     * @return array
-     * @throws Exception\BadMethodCallException for a non-object $object
-     */
-    public function extract($object)
-    {
-        if (!is_object($object)) {
-            throw new Exception\BadMethodCallException(sprintf(
-                '%s expects the provided $object to be a PHP object)',
-                __METHOD__
-            ));
-        }
-
-        $objectClass = get_class($object);
-
-        // reset the hydrator's hydrator's cache for this object, as the filter may be per-instance
-        if ($object instanceof Filter\FilterProviderInterface) {
-            $this->extractionMethodsCache[$objectClass] = null;
-        }
-
-        // pass 1 - finding out which properties can be extracted, with which methods (populate hydration cache)
-        if (! isset($this->extractionMethodsCache[$objectClass])) {
-            $this->extractionMethodsCache[$objectClass] = [];
-            $filter                                     = $this->filterComposite;
-            $methods                                    = get_class_methods($object);
-
-            if ($object instanceof Filter\FilterProviderInterface) {
-                $filter = new Filter\FilterComposite(
-                    [$object->getFilter()],
-                    [new Filter\MethodMatchFilter('getFilter')]
-                );
-            }
-
-            foreach ($methods as $method) {
-                $methodFqn = $objectClass . '::' . $method;
-
-                if (! ($filter->filter($methodFqn) && $this->callableMethodFilter->filter($methodFqn))) {
-                    continue;
-                }
-
-                $attribute = $method;
-
-                if (strpos($method, 'get') === 0) {
-                    $attribute = substr($method, 3);
-                    if (!property_exists($object, $attribute)) {
-                        $attribute = lcfirst($attribute);
-                    }
-                }
-
-                $this->extractionMethodsCache[$objectClass][$method] = $attribute;
-            }
-        }
-
-        $values = [];
-
-        // pass 2 - actually extract data
-        foreach ($this->extractionMethodsCache[$objectClass] as $methodName => $attributeName) {
-            $realAttributeName          = $this->extractName($attributeName, $object);
-            $values[$realAttributeName] = $this->extractValue($realAttributeName, $object->$methodName(), $object);
-        }
-
-        return $values;
-    }
-
-    /**
-     * Hydrate an object by populating getter/setter methods
-     *
-     * Hydrates an object by getter/setter methods of the object.
-     *
-     * @param  array                            $data
-     * @param  object                           $object
-     * @return object
-     * @throws Exception\BadMethodCallException for a non-object $object
-     */
-    public function hydrate(array $data, $object)
-    {
-        if (!is_object($object)) {
-            throw new Exception\BadMethodCallException(sprintf(
-                '%s expects the provided $object to be a PHP object)',
-                __METHOD__
-            ));
-        }
-
-        $objectClass = get_class($object);
-
-        foreach ($data as $property => $value) {
-            $propertyFqn = $objectClass . '::$' . $property;
-
-            if (! isset($this->hydrationMethodsCache[$propertyFqn])) {
-                $setterName = 'set' . ucfirst($this->hydrateName($property, $data));
-
-                $this->hydrationMethodsCache[$propertyFqn] = is_callable([$object, $setterName])
-                    ? $setterName
-                    : false;
-            }
-
-            if ($this->hydrationMethodsCache[$propertyFqn]) {
-                $object->{$this->hydrationMethodsCache[$propertyFqn]}($this->hydrateValue($property, $value, $data));
-            }
-        }
-
-        return $object;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function addFilter($name, $filter, $condition = Filter\FilterComposite::CONDITION_OR)
-    {
-        $this->resetCaches();
-
-        return parent::addFilter($name, $filter, $condition);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function removeFilter($name)
-    {
-        $this->resetCaches();
-
-        return parent::removeFilter($name);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function setNamingStrategy(NamingStrategy\NamingStrategyInterface $strategy)
-    {
-        $this->resetCaches();
-
-        return parent::setNamingStrategy($strategy);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function removeNamingStrategy()
-    {
-        $this->resetCaches();
-
-        return parent::removeNamingStrategy();
-    }
-
-    /**
-     * Reset all local hydration/extraction caches
-     */
-    private function resetCaches()
-    {
-        $this->hydrationMethodsCache = $this->extractionMethodsCache = [];
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/DelegatingHydrator.php b/vendor/zendframework/zend-hydrator/src/DelegatingHydrator.php
deleted file mode 100644
index a6f3f94..0000000
--- a/vendor/zendframework/zend-hydrator/src/DelegatingHydrator.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-use Zend\ServiceManager\ServiceLocatorInterface;
-
-class DelegatingHydrator implements HydratorInterface
-{
-    /**
-     * @var ServiceLocatorInterface
-     */
-    protected $hydrators;
-
-    /**
-     * Constructor
-     *
-     * @param ServiceLocatorInterface $hydrators
-     */
-    public function __construct(ServiceLocatorInterface $hydrators)
-    {
-        $this->hydrators = $hydrators;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hydrate(array $data, $object)
-    {
-        return $this->getHydrator($object)->hydrate($data, $object);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function extract($object)
-    {
-        return $this->getHydrator($object)->extract($object);
-    }
-
-    /**
-     * Gets hydrator of an object
-     *
-     * @param  object $object
-     * @return HydratorInterface
-     */
-    protected function getHydrator($object)
-    {
-        return $this->hydrators->get(get_class($object));
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/DelegatingHydratorFactory.php b/vendor/zendframework/zend-hydrator/src/DelegatingHydratorFactory.php
deleted file mode 100644
index 89f2841..0000000
--- a/vendor/zendframework/zend-hydrator/src/DelegatingHydratorFactory.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-use Zend\ServiceManager\FactoryInterface;
-use Zend\ServiceManager\ServiceLocatorInterface;
-
-class DelegatingHydratorFactory implements FactoryInterface
-{
-    /**
-     * Creates DelegatingHydrator
-     *
-     * @param  ServiceLocatorInterface $serviceLocator
-     * @return DelegatingHydrator
-     */
-    public function createService(ServiceLocatorInterface $serviceLocator)
-    {
-        // Assume that this factory is registered with the HydratorManager,
-        // and just pass it directly on.
-        return new DelegatingHydrator($serviceLocator);
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Exception/BadMethodCallException.php b/vendor/zendframework/zend-hydrator/src/Exception/BadMethodCallException.php
deleted file mode 100644
index a8503e2..0000000
--- a/vendor/zendframework/zend-hydrator/src/Exception/BadMethodCallException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Exception;
-
-/**
- * Bad method call exception
- */
-class BadMethodCallException extends \BadMethodCallException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Exception/DomainException.php b/vendor/zendframework/zend-hydrator/src/Exception/DomainException.php
deleted file mode 100644
index 40baf4f..0000000
--- a/vendor/zendframework/zend-hydrator/src/Exception/DomainException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Exception;
-
-/**
- * Domain exception
- */
-class DomainException extends \DomainException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Exception/ExceptionInterface.php b/vendor/zendframework/zend-hydrator/src/Exception/ExceptionInterface.php
deleted file mode 100644
index 888c6a0..0000000
--- a/vendor/zendframework/zend-hydrator/src/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Exception;
-
-/**
- * Exception marker interface
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Exception/ExtensionNotLoadedException.php b/vendor/zendframework/zend-hydrator/src/Exception/ExtensionNotLoadedException.php
deleted file mode 100644
index ff5fd8e..0000000
--- a/vendor/zendframework/zend-hydrator/src/Exception/ExtensionNotLoadedException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Exception;
-
-/**
- * Extension not loaded exception
- */
-class ExtensionNotLoadedException extends RuntimeException
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Exception/InvalidArgumentException.php b/vendor/zendframework/zend-hydrator/src/Exception/InvalidArgumentException.php
deleted file mode 100644
index 56c2d14..0000000
--- a/vendor/zendframework/zend-hydrator/src/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Exception;
-
-/**
- * Invalid Argument Exception
- */
-class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Exception/InvalidCallbackException.php b/vendor/zendframework/zend-hydrator/src/Exception/InvalidCallbackException.php
deleted file mode 100644
index 263e9fb..0000000
--- a/vendor/zendframework/zend-hydrator/src/Exception/InvalidCallbackException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Exception;
-
-/**
- * Invalid callback exception
- */
-class InvalidCallbackException extends DomainException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Exception/LogicException.php b/vendor/zendframework/zend-hydrator/src/Exception/LogicException.php
deleted file mode 100644
index 89ff89c..0000000
--- a/vendor/zendframework/zend-hydrator/src/Exception/LogicException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Exception;
-
-/**
- * Logic exception
- */
-class LogicException extends \LogicException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Exception/RuntimeException.php b/vendor/zendframework/zend-hydrator/src/Exception/RuntimeException.php
deleted file mode 100644
index 766ece2..0000000
--- a/vendor/zendframework/zend-hydrator/src/Exception/RuntimeException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Exception;
-
-/**
- * Runtime exception
- */
-class RuntimeException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/ExtractionInterface.php b/vendor/zendframework/zend-hydrator/src/ExtractionInterface.php
deleted file mode 100644
index 6b3c07f..0000000
--- a/vendor/zendframework/zend-hydrator/src/ExtractionInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-interface ExtractionInterface
-{
-    /**
-     * Extract values from an object
-     *
-     * @param  object $object
-     * @return array
-     */
-    public function extract($object);
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Filter/FilterComposite.php b/vendor/zendframework/zend-hydrator/src/Filter/FilterComposite.php
deleted file mode 100644
index 6790713..0000000
--- a/vendor/zendframework/zend-hydrator/src/Filter/FilterComposite.php
+++ /dev/null
@@ -1,198 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Filter;
-
-use ArrayObject;
-use Zend\Hydrator\Exception\InvalidArgumentException;
-
-class FilterComposite implements FilterInterface
-{
-    /**
-     * @var ArrayObject
-     */
-    protected $orFilter;
-
-    /**
-     * @var ArrayObject
-     */
-    protected $andFilter;
-
-    /**
-     * Constant to add with "or" conditition
-     */
-    const CONDITION_OR = 1;
-
-    /**
-     * Constant to add with "and" conditition
-     */
-    const CONDITION_AND = 2;
-
-    /**
-     * Define default Filter
-     *
-     * @param  array $orFilter
-     * @param  array $andFilter
-     * @throws InvalidArgumentException
-     */
-    public function __construct($orFilter = [], $andFilter = [])
-    {
-        array_walk(
-            $orFilter,
-            function ($value, $key) {
-                if (!is_callable($value) && !$value instanceof FilterInterface) {
-                    throw new InvalidArgumentException(
-                        'The value of ' . $key . ' should be either a callable or ' .
-                        'an instance of Zend\Stdlib\Hydrator\Filter\FilterInterface'
-                    );
-                }
-            }
-        );
-
-        array_walk(
-            $andFilter,
-            function ($value, $key) {
-                if (!is_callable($value) && !$value instanceof FilterInterface) {
-                    throw new InvalidArgumentException(
-                        'The value of ' . $key . '  should be either a callable or ' .
-                        'an instance of Zend\Stdlib\Hydrator\Filter\FilterInterface'
-                    );
-                }
-            }
-        );
-
-        $this->orFilter = new ArrayObject($orFilter);
-        $this->andFilter = new ArrayObject($andFilter);
-    }
-
-    /**
-     * Add a filter to the composite. Has to be indexed with $name in
-     * order to identify a specific filter.
-     *
-     * This example will exclude all methods from the hydration, that starts with 'getService'
-     * <code>
-     * $composite->addFilter('exclude',
-     *     function ($method) {
-     *         if (preg_match('/^getService/', $method) {
-     *             return false;
-     *         }
-     *         return true;
-     *     }, FilterComposite::CONDITION_AND
-     * );
-     * </code>
-     *
-     * @param  string                   $name
-     * @param  callable|FilterInterface $filter
-     * @param  int                      $condition Can be either
-     *     FilterComposite::CONDITION_OR or FilterComposite::CONDITION_AND
-     * @throws InvalidArgumentException
-     * @return FilterComposite
-     */
-    public function addFilter($name, $filter, $condition = self::CONDITION_OR)
-    {
-        if (!is_callable($filter) && !($filter instanceof FilterInterface)) {
-            throw new InvalidArgumentException(
-                'The value of ' . $name . ' should be either a callable or ' .
-                'an instance of Zend\Stdlib\Hydrator\Filter\FilterInterface'
-            );
-        }
-
-        if ($condition === self::CONDITION_OR) {
-            $this->orFilter[$name] = $filter;
-        } elseif ($condition === self::CONDITION_AND) {
-            $this->andFilter[$name] = $filter;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Remove a filter from the composition
-     *
-     * @param $name string Identifier for the filter
-     * @return FilterComposite
-     */
-    public function removeFilter($name)
-    {
-        if (isset($this->orFilter[$name])) {
-            unset($this->orFilter[$name]);
-        }
-
-        if (isset($this->andFilter[$name])) {
-            unset($this->andFilter[$name]);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Check if $name has a filter registered
-     *
-     * @param $name string Identifier for the filter
-     * @return bool
-     */
-    public function hasFilter($name)
-    {
-        return isset($this->orFilter[$name]) || isset($this->andFilter[$name]);
-    }
-
-    /**
-     * Filter the composite based on the AND and OR condition
-     * Will return true if one from the "or conditions" and all from
-     * the "and condition" returns true. Otherwise false
-     *
-     * @param $property string Parameter will be e.g. Parent\Namespace\Class::method
-     * @return bool
-     */
-    public function filter($property)
-    {
-        $andCount = count($this->andFilter);
-        $orCount = count($this->orFilter);
-        // return true if no filters are registered
-        if ($orCount === 0 && $andCount === 0) {
-            return true;
-        } elseif ($orCount === 0 && $andCount !== 0) {
-            $returnValue = true;
-        } else {
-            $returnValue = false;
-        }
-
-        // Check if 1 from the or filters return true
-        foreach ($this->orFilter as $filter) {
-            if (is_callable($filter)) {
-                if ($filter($property) === true) {
-                    $returnValue = true;
-                    break;
-                }
-                continue;
-            } else {
-                if ($filter->filter($property) === true) {
-                    $returnValue = true;
-                    break;
-                }
-            }
-        }
-
-        // Check if all of the and condition return true
-        foreach ($this->andFilter as $filter) {
-            if (is_callable($filter)) {
-                if ($filter($property) === false) {
-                    return false;
-                }
-                continue;
-            } else {
-                if ($filter->filter($property) === false) {
-                    return false;
-                }
-            }
-        }
-
-        return $returnValue;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Filter/FilterInterface.php b/vendor/zendframework/zend-hydrator/src/Filter/FilterInterface.php
deleted file mode 100644
index fb49918..0000000
--- a/vendor/zendframework/zend-hydrator/src/Filter/FilterInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Filter;
-
-interface FilterInterface
-{
-    /**
-     * Should return true, if the given filter
-     * does not match
-     *
-     * @param string $property The name of the property
-     * @return bool
-     */
-    public function filter($property);
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Filter/FilterProviderInterface.php b/vendor/zendframework/zend-hydrator/src/Filter/FilterProviderInterface.php
deleted file mode 100644
index 2826c33..0000000
--- a/vendor/zendframework/zend-hydrator/src/Filter/FilterProviderInterface.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Filter;
-
-interface FilterProviderInterface
-{
-    /**
-     * Provides a filter for hydration
-     *
-     * @return FilterInterface
-     */
-    public function getFilter();
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Filter/GetFilter.php b/vendor/zendframework/zend-hydrator/src/Filter/GetFilter.php
deleted file mode 100644
index 220a1b5..0000000
--- a/vendor/zendframework/zend-hydrator/src/Filter/GetFilter.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Filter;
-
-class GetFilter implements FilterInterface
-{
-    public function filter($property)
-    {
-        $pos = strpos($property, '::');
-        if ($pos !== false) {
-            $pos += 2;
-        } else {
-            $pos = 0;
-        }
-
-        if (substr($property, $pos, 3) === 'get') {
-            return true;
-        }
-        return false;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Filter/HasFilter.php b/vendor/zendframework/zend-hydrator/src/Filter/HasFilter.php
deleted file mode 100644
index d1ba4f9..0000000
--- a/vendor/zendframework/zend-hydrator/src/Filter/HasFilter.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Filter;
-
-class HasFilter implements FilterInterface
-{
-    public function filter($property)
-    {
-        $pos = strpos($property, '::');
-        if ($pos !== false) {
-            $pos += 2;
-        } else {
-            $pos = 0;
-        }
-
-        if (substr($property, $pos, 3) === 'has') {
-            return true;
-        }
-        return false;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Filter/IsFilter.php b/vendor/zendframework/zend-hydrator/src/Filter/IsFilter.php
deleted file mode 100644
index b74fcd7..0000000
--- a/vendor/zendframework/zend-hydrator/src/Filter/IsFilter.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Filter;
-
-class IsFilter implements FilterInterface
-{
-    public function filter($property)
-    {
-        $pos = strpos($property, '::');
-        if ($pos !== false) {
-            $pos += 2;
-        } else {
-            $pos = 0;
-        }
-
-        if (substr($property, $pos, 2) === 'is') {
-            return true;
-        }
-        return false;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Filter/MethodMatchFilter.php b/vendor/zendframework/zend-hydrator/src/Filter/MethodMatchFilter.php
deleted file mode 100644
index 865b578..0000000
--- a/vendor/zendframework/zend-hydrator/src/Filter/MethodMatchFilter.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Filter;
-
-class MethodMatchFilter implements FilterInterface
-{
-    /**
-     * The method to exclude
-     * @var string
-     */
-    protected $method = null;
-
-    /**
-     * Either an exclude or an include
-     * @var bool
-     */
-    protected $exclude = null;
-
-    /**
-     * @param string $method The method to exclude or include
-     * @param bool $exclude If the method should be excluded
-     */
-    public function __construct($method, $exclude = true)
-    {
-        $this->method = $method;
-        $this->exclude = $exclude;
-    }
-
-    public function filter($property)
-    {
-        $pos = strpos($property, '::');
-        if ($pos !== false) {
-            $pos += 2;
-        } else {
-            $pos = 0;
-        }
-        if (substr($property, $pos) === $this->method) {
-            return !$this->exclude;
-        }
-        return $this->exclude;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Filter/NumberOfParameterFilter.php b/vendor/zendframework/zend-hydrator/src/Filter/NumberOfParameterFilter.php
deleted file mode 100644
index abd8ee6..0000000
--- a/vendor/zendframework/zend-hydrator/src/Filter/NumberOfParameterFilter.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Filter;
-
-use ReflectionException;
-use ReflectionMethod;
-use Zend\Hydrator\Exception\InvalidArgumentException;
-
-class NumberOfParameterFilter implements FilterInterface
-{
-    /**
-     * The number of parameters beeing accepted
-     * @var int
-     */
-    protected $numberOfParameters = null;
-
-    /**
-     * @param int $numberOfParameters Number of accepted parameters
-     */
-    public function __construct($numberOfParameters = 0)
-    {
-        $this->numberOfParameters = (int) $numberOfParameters;
-    }
-
-    /**
-     * @param string $property the name of the property
-     * @return bool
-     * @throws InvalidArgumentException
-     */
-    public function filter($property)
-    {
-        try {
-            $reflectionMethod = new ReflectionMethod($property);
-        } catch (ReflectionException $exception) {
-            throw new InvalidArgumentException(
-                "Method $property doesn't exist"
-            );
-        }
-
-        return $reflectionMethod->getNumberOfParameters() === $this->numberOfParameters;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Filter/OptionalParametersFilter.php b/vendor/zendframework/zend-hydrator/src/Filter/OptionalParametersFilter.php
deleted file mode 100644
index 25775d7..0000000
--- a/vendor/zendframework/zend-hydrator/src/Filter/OptionalParametersFilter.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Filter;
-
-use ReflectionException;
-use ReflectionMethod;
-use ReflectionParameter;
-use Zend\Hydrator\Exception\InvalidArgumentException;
-
-/**
- * Filter that includes methods which have no parameters or only optional parameters
- */
-class OptionalParametersFilter implements FilterInterface
-{
-    /**
-     * Map of methods already analyzed
-     * by {@see OptionalParametersFilter::filter()},
-     * cached for performance reasons
-     *
-     * @var bool[]
-     */
-    protected static $propertiesCache = [];
-
-    /**
-     * {@inheritDoc}
-     */
-    public function filter($property)
-    {
-        if (isset(static::$propertiesCache[$property])) {
-            return static::$propertiesCache[$property];
-        }
-
-        try {
-            $reflectionMethod = new ReflectionMethod($property);
-        } catch (ReflectionException $exception) {
-            throw new InvalidArgumentException(sprintf('Method %s doesn\'t exist', $property));
-        }
-
-        $mandatoryParameters = array_filter(
-            $reflectionMethod->getParameters(),
-            function (ReflectionParameter $parameter) {
-                return ! $parameter->isOptional();
-            }
-        );
-
-        return static::$propertiesCache[$property] = empty($mandatoryParameters);
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/FilterEnabledInterface.php b/vendor/zendframework/zend-hydrator/src/FilterEnabledInterface.php
deleted file mode 100644
index f95f8b4..0000000
--- a/vendor/zendframework/zend-hydrator/src/FilterEnabledInterface.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-interface FilterEnabledInterface extends Filter\FilterProviderInterface
-{
-    /**
-     * Add a new filter to take care of what needs to be hydrated.
-     * To exclude e.g. the method getServiceLocator:
-     *
-     * <code>
-     * $composite->addFilter(
-     *     "servicelocator",
-     *     function ($property) {
-     *         list($class, $method) = explode('::', $property);
-     *         if ($method === 'getServiceLocator') {
-     *             return false;
-     *         }
-     *         return true;
-     *     },
-     *     FilterComposite::CONDITION_AND
-     * );
-     * </code>
-     *
-     * @param string $name Index in the composite
-     * @param callable|Filter\FilterInterface $filter
-     * @param int $condition
-     * @return Filter\FilterComposite
-     */
-    public function addFilter($name, $filter, $condition = Filter\FilterComposite::CONDITION_OR);
-
-    /**
-     * Check whether a specific filter exists at key $name or not
-     *
-     * @param string $name Index in the composite
-     * @return bool
-     */
-    public function hasFilter($name);
-
-    /**
-     * Remove a filter from the composition.
-     * To not extract "has" methods, you simply need to unregister it
-     *
-     * <code>
-     * $filterComposite->removeFilter('has');
-     * </code>
-     *
-     * @param $name
-     * @return Filter\FilterComposite
-     */
-    public function removeFilter($name);
-}
diff --git a/vendor/zendframework/zend-hydrator/src/HydrationInterface.php b/vendor/zendframework/zend-hydrator/src/HydrationInterface.php
deleted file mode 100644
index ca28983..0000000
--- a/vendor/zendframework/zend-hydrator/src/HydrationInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-interface HydrationInterface
-{
-    /**
-     * Hydrate $object with the provided $data.
-     *
-     * @param  array $data
-     * @param  object $object
-     * @return object
-     */
-    public function hydrate(array $data, $object);
-}
diff --git a/vendor/zendframework/zend-hydrator/src/HydratorAwareInterface.php b/vendor/zendframework/zend-hydrator/src/HydratorAwareInterface.php
deleted file mode 100644
index 8c89bc6..0000000
--- a/vendor/zendframework/zend-hydrator/src/HydratorAwareInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-interface HydratorAwareInterface
-{
-    /**
-     * Set hydrator
-     *
-     * @param  HydratorInterface $hydrator
-     * @return HydratorAwareInterface
-     */
-    public function setHydrator(HydratorInterface $hydrator);
-
-    /**
-     * Retrieve hydrator
-     *
-     * @return HydratorInterface
-     */
-    public function getHydrator();
-}
diff --git a/vendor/zendframework/zend-hydrator/src/HydratorAwareTrait.php b/vendor/zendframework/zend-hydrator/src/HydratorAwareTrait.php
deleted file mode 100644
index 76c1989..0000000
--- a/vendor/zendframework/zend-hydrator/src/HydratorAwareTrait.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-trait HydratorAwareTrait
-{
-    /**
-     * Hydrator instance
-     *
-     * @var HydratorInterface
-     * @access protected
-     */
-    protected $hydrator = null;
-
-    /**
-     * Set hydrator
-     *
-     * @param  HydratorInterface $hydrator
-     * @return self
-     * @access public
-     */
-    public function setHydrator(HydratorInterface $hydrator)
-    {
-        $this->hydrator = $hydrator;
-
-        return $this;
-    }
-
-    /**
-     * Retrieve hydrator
-     *
-     * @param void
-     * @return null|HydratorInterface
-     * @access public
-     */
-    public function getHydrator()
-    {
-        return $this->hydrator;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/HydratorInterface.php b/vendor/zendframework/zend-hydrator/src/HydratorInterface.php
deleted file mode 100644
index a48effa..0000000
--- a/vendor/zendframework/zend-hydrator/src/HydratorInterface.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-interface HydratorInterface extends HydrationInterface, ExtractionInterface
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/HydratorOptionsInterface.php b/vendor/zendframework/zend-hydrator/src/HydratorOptionsInterface.php
deleted file mode 100644
index 20efbbf..0000000
--- a/vendor/zendframework/zend-hydrator/src/HydratorOptionsInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-use Traversable;
-
-interface HydratorOptionsInterface
-{
-    /**
-     * @param  array|Traversable $options
-     * @return self
-     */
-    public function setOptions($options);
-}
diff --git a/vendor/zendframework/zend-hydrator/src/HydratorPluginManager.php b/vendor/zendframework/zend-hydrator/src/HydratorPluginManager.php
deleted file mode 100644
index de13dd1..0000000
--- a/vendor/zendframework/zend-hydrator/src/HydratorPluginManager.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-use Zend\ServiceManager\AbstractPluginManager;
-
-/**
- * Plugin manager implementation for hydrators.
- *
- * Enforces that adapters retrieved are instances of HydratorInterface
- */
-class HydratorPluginManager extends AbstractPluginManager
-{
-    /**
-     * Whether or not to share by default
-     *
-     * @var bool
-     */
-    protected $shareByDefault = false;
-
-    /**
-     * Default aliases
-     *
-     * @var array
-     */
-    protected $aliases = [
-        'delegatinghydrator' => 'Zend\Hydrator\DelegatingHydrator',
-    ];
-
-    /**
-     * Default set of adapters
-     *
-     * @var array
-     */
-    protected $invokableClasses = [
-        'arrayserializable' => 'Zend\Hydrator\ArraySerializable',
-        'classmethods'      => 'Zend\Hydrator\ClassMethods',
-        'objectproperty'    => 'Zend\Hydrator\ObjectProperty',
-        'reflection'        => 'Zend\Hydrator\Reflection'
-    ];
-
-    /**
-     * Default factory-based adapters
-     *
-     * @var array
-     */
-    protected $factories = [
-        'Zend\Hydrator\DelegatingHydrator' => 'Zend\Hydrator\DelegatingHydratorFactory',
-    ];
-
-    /**
-     * {@inheritDoc}
-     */
-    public function validatePlugin($plugin)
-    {
-        if ($plugin instanceof HydratorInterface) {
-            // we're okay
-            return;
-        }
-
-        throw new Exception\RuntimeException(sprintf(
-            'Plugin of type %s is invalid; must implement Zend\Hydrator\HydratorInterface',
-            (is_object($plugin) ? get_class($plugin) : gettype($plugin))
-        ));
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Iterator/HydratingArrayIterator.php b/vendor/zendframework/zend-hydrator/src/Iterator/HydratingArrayIterator.php
deleted file mode 100644
index 8e14f03..0000000
--- a/vendor/zendframework/zend-hydrator/src/Iterator/HydratingArrayIterator.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Iterator;
-
-use ArrayIterator;
-use Zend\Hydrator\HydratorInterface;
-
-class HydratingArrayIterator extends HydratingIteratorIterator
-{
-    /**
-     * @var HydratorInterface
-     */
-    protected $hydrator;
-
-    /**
-     * @var object
-     */
-    protected $prototype;
-
-    /**
-     * @param HydratorInterface $hydrator
-     * @param array $data
-     * @param string|object $prototype Object, or class name to use for prototype.
-     */
-    public function __construct(HydratorInterface $hydrator, array $data, $prototype)
-    {
-        parent::__construct($hydrator, new ArrayIterator($data), $prototype);
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Iterator/HydratingIteratorInterface.php b/vendor/zendframework/zend-hydrator/src/Iterator/HydratingIteratorInterface.php
deleted file mode 100644
index ec31040..0000000
--- a/vendor/zendframework/zend-hydrator/src/Iterator/HydratingIteratorInterface.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Iterator;
-
-use Iterator;
-use Zend\Hydrator\HydratorInterface;
-
-interface HydratingIteratorInterface extends Iterator
-{
-    /**
-     * This sets the prototype to hydrate.
-     *
-     * This prototype can be the name of the class or the object itself;
-     * iteration will clone the object.
-     *
-     * @param string|object $prototype
-     */
-    public function setPrototype($prototype);
-
-    /**
-     * Sets the hydrator to use during iteration.
-     *
-     * @param HydratorInterface $hydrator
-     */
-    public function setHydrator(HydratorInterface $hydrator);
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Iterator/HydratingIteratorIterator.php b/vendor/zendframework/zend-hydrator/src/Iterator/HydratingIteratorIterator.php
deleted file mode 100644
index 53e09f0..0000000
--- a/vendor/zendframework/zend-hydrator/src/Iterator/HydratingIteratorIterator.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Iterator;
-
-use Iterator;
-use IteratorIterator;
-use Zend\Hydrator\Exception\InvalidArgumentException;
-use Zend\Hydrator\HydratorInterface;
-
-class HydratingIteratorIterator extends IteratorIterator implements HydratingIteratorInterface
-{
-    /**
-     * @var HydratorInterface
-     */
-    protected $hydrator;
-
-    /**
-     * @var object
-     */
-    protected $prototype;
-
-    /**
-     * @param HydratorInterface $hydrator
-     * @param Iterator $data
-     * @param string|object $prototype Object or class name to use for prototype.
-     */
-    public function __construct(HydratorInterface $hydrator, Iterator $data, $prototype)
-    {
-        $this->setHydrator($hydrator);
-        $this->setPrototype($prototype);
-        parent::__construct($data);
-    }
-
-    /**
-     * @inheritdoc
-     */
-    public function setPrototype($prototype)
-    {
-        if (is_object($prototype)) {
-            $this->prototype = $prototype;
-            return;
-        }
-
-        if (!class_exists($prototype)) {
-            throw new InvalidArgumentException(
-                sprintf('Method %s was passed an invalid class name: %s', __METHOD__, $prototype)
-            );
-        }
-
-        $this->prototype = new $prototype;
-    }
-
-    /**
-     * @inheritdoc
-     */
-    public function setHydrator(HydratorInterface $hydrator)
-    {
-        $this->hydrator = $hydrator;
-    }
-
-    /**
-     * @return object Returns hydrated clone of $prototype
-     */
-    public function current()
-    {
-        $currentValue = parent::current();
-        $object       = clone $this->prototype;
-        $this->hydrator->hydrate($currentValue, $object);
-        return $object;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/NamingStrategy/ArrayMapNamingStrategy.php b/vendor/zendframework/zend-hydrator/src/NamingStrategy/ArrayMapNamingStrategy.php
deleted file mode 100644
index c6333e2..0000000
--- a/vendor/zendframework/zend-hydrator/src/NamingStrategy/ArrayMapNamingStrategy.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\NamingStrategy;
-
-class ArrayMapNamingStrategy implements NamingStrategyInterface
-{
-    /**
-     * @var string[]
-     */
-    private $extractionMap = [];
-
-    /**
-     * @var string[]
-     */
-    private $hydrationMap = [];
-
-    /**
-     * Constructor
-     *
-     * @param array $extractionMap A map of string keys and values for symmetric translation of hydrated
-     *                             and extracted field names
-     */
-    public function __construct(array $extractionMap)
-    {
-        $this->extractionMap = $extractionMap;
-        $this->hydrationMap  = array_flip($extractionMap);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function hydrate($name)
-    {
-        return isset($this->hydrationMap[$name]) ? $this->hydrationMap[$name] : $name;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function extract($name)
-    {
-        return isset($this->extractionMap[$name]) ? $this->extractionMap[$name] : $name;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/NamingStrategy/CompositeNamingStrategy.php b/vendor/zendframework/zend-hydrator/src/NamingStrategy/CompositeNamingStrategy.php
deleted file mode 100644
index c2bae8c..0000000
--- a/vendor/zendframework/zend-hydrator/src/NamingStrategy/CompositeNamingStrategy.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\NamingStrategy;
-
-class CompositeNamingStrategy implements NamingStrategyInterface
-{
-    /**
-     * @var array
-     */
-    private $namingStrategies = [];
-
-    /**
-     * @var NamingStrategyInterface
-     */
-    private $defaultNamingStrategy;
-
-    /**
-     * @param NamingStrategyInterface[]    $strategies            indexed by the name they translate
-     * @param NamingStrategyInterface|null $defaultNamingStrategy
-     */
-    public function __construct(array $strategies, NamingStrategyInterface $defaultNamingStrategy = null)
-    {
-        $this->namingStrategies = array_map(
-            function (NamingStrategyInterface $strategy) {
-                // this callback is here only to ensure type-safety
-                return $strategy;
-            },
-            $strategies
-        );
-
-        $this->defaultNamingStrategy = $defaultNamingStrategy ?: new IdentityNamingStrategy();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function extract($name)
-    {
-        $strategy = isset($this->namingStrategies[$name])
-            ? $this->namingStrategies[$name]
-            : $this->defaultNamingStrategy;
-
-        return $strategy->extract($name);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function hydrate($name)
-    {
-        $strategy = isset($this->namingStrategies[$name])
-            ? $this->namingStrategies[$name]
-            : $this->defaultNamingStrategy;
-
-        return $strategy->hydrate($name);
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/NamingStrategy/IdentityNamingStrategy.php b/vendor/zendframework/zend-hydrator/src/NamingStrategy/IdentityNamingStrategy.php
deleted file mode 100644
index 59e3fed..0000000
--- a/vendor/zendframework/zend-hydrator/src/NamingStrategy/IdentityNamingStrategy.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\NamingStrategy;
-
-class IdentityNamingStrategy implements NamingStrategyInterface
-{
-    /**
-     * {@inheritDoc}
-     */
-    public function hydrate($name)
-    {
-        return $name;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function extract($name)
-    {
-        return $name;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/NamingStrategy/MapNamingStrategy.php b/vendor/zendframework/zend-hydrator/src/NamingStrategy/MapNamingStrategy.php
deleted file mode 100644
index 7846bce..0000000
--- a/vendor/zendframework/zend-hydrator/src/NamingStrategy/MapNamingStrategy.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\NamingStrategy;
-
-use Zend\Hydrator\Exception\InvalidArgumentException;
-
-class MapNamingStrategy implements NamingStrategyInterface
-{
-    /**
-     * Map for hydrate name conversion.
-     *
-     * @var array
-     */
-    protected $mapping = [];
-
-    /**
-     * Reversed map for extract name conversion.
-     *
-     * @var array
-     */
-    protected $reverse = [];
-
-    /**
-     * Initialize.
-     *
-     * @param array $mapping Map for name conversion on hydration
-     * @param array $reverse Reverse map for name conversion on extraction
-     */
-    public function __construct(array $mapping, array $reverse = null)
-    {
-        $this->mapping = $mapping;
-        $this->reverse = $reverse ?: $this->flipMapping($mapping);
-    }
-
-    /**
-     * Safelly flip mapping array.
-     *
-     * @param  array                    $array Array to flip
-     * @return array                    Flipped array
-     * @throws InvalidArgumentException
-     */
-    protected function flipMapping(array $array)
-    {
-        array_walk($array, function ($value) {
-            if (!is_string($value) && !is_int($value)) {
-                throw new InvalidArgumentException('Mapping array can\'t be flipped because of invalid value');
-            }
-        });
-
-        return array_flip($array);
-    }
-
-    /**
-     * Converts the given name so that it can be extracted by the hydrator.
-     *
-     * @param  string $name The original name
-     * @return mixed  The hydrated name
-     */
-    public function hydrate($name)
-    {
-        if (array_key_exists($name, $this->mapping)) {
-            return $this->mapping[$name];
-        }
-
-        return $name;
-    }
-
-    /**
-     * Converts the given name so that it can be hydrated by the hydrator.
-     *
-     * @param  string $name The original name
-     * @return mixed  The extracted name
-     */
-    public function extract($name)
-    {
-        if (array_key_exists($name, $this->reverse)) {
-            return $this->reverse[$name];
-        }
-
-        return $name;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/NamingStrategy/NamingStrategyInterface.php b/vendor/zendframework/zend-hydrator/src/NamingStrategy/NamingStrategyInterface.php
deleted file mode 100644
index cb7ca94..0000000
--- a/vendor/zendframework/zend-hydrator/src/NamingStrategy/NamingStrategyInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\NamingStrategy;
-
-/**
- * Allow property extraction / hydration for hydrator
- */
-interface NamingStrategyInterface
-{
-    /**
-     * Converts the given name so that it can be extracted by the hydrator.
-     *
-     * @param string $name   The original name
-     * @param object $object (optional) The original object for context.
-     * @return mixed         The hydrated name
-     */
-    public function hydrate($name);
-
-    /**
-     * Converts the given name so that it can be hydrated by the hydrator.
-     *
-     * @param string $name The original name
-     * @param array  $data (optional) The original data for context.
-     * @return mixed The extracted name
-     */
-    public function extract($name);
-}
diff --git a/vendor/zendframework/zend-hydrator/src/NamingStrategy/UnderscoreNamingStrategy.php b/vendor/zendframework/zend-hydrator/src/NamingStrategy/UnderscoreNamingStrategy.php
deleted file mode 100644
index 7fdfa53..0000000
--- a/vendor/zendframework/zend-hydrator/src/NamingStrategy/UnderscoreNamingStrategy.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\NamingStrategy;
-
-use Zend\Filter\FilterChain;
-
-class UnderscoreNamingStrategy implements NamingStrategyInterface
-{
-    /**
-     * @var FilterChain|null
-     */
-    protected static $camelCaseToUnderscoreFilter;
-
-    /**
-     * @var FilterChain|null
-     */
-    protected static $underscoreToStudlyCaseFilter;
-
-    /**
-     * Remove underscores and capitalize letters
-     *
-     * @param  string $name
-     * @return string
-     */
-    public function hydrate($name)
-    {
-        return $this->getUnderscoreToStudlyCaseFilter()->filter($name);
-    }
-
-    /**
-     * Remove capitalized letters and prepend underscores.
-     *
-     * @param  string $name
-     * @return string
-     */
-    public function extract($name)
-    {
-        return $this->getCamelCaseToUnderscoreFilter()->filter($name);
-    }
-
-    /**
-     * @return FilterChain
-     */
-    protected function getUnderscoreToStudlyCaseFilter()
-    {
-        if (static::$underscoreToStudlyCaseFilter instanceof FilterChain) {
-            return static::$underscoreToStudlyCaseFilter;
-        }
-
-        $filter = new FilterChain();
-
-        $filter->attachByName('WordUnderscoreToStudlyCase');
-
-        return static::$underscoreToStudlyCaseFilter = $filter;
-    }
-
-    /**
-     * @return FilterChain
-     */
-    protected function getCamelCaseToUnderscoreFilter()
-    {
-        if (static::$camelCaseToUnderscoreFilter instanceof FilterChain) {
-            return static::$camelCaseToUnderscoreFilter;
-        }
-
-        $filter = new FilterChain();
-
-        $filter->attachByName('WordCamelCaseToUnderscore');
-        $filter->attachByName('StringToLower');
-
-        return static::$camelCaseToUnderscoreFilter = $filter;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/NamingStrategyEnabledInterface.php b/vendor/zendframework/zend-hydrator/src/NamingStrategyEnabledInterface.php
deleted file mode 100644
index c01a527..0000000
--- a/vendor/zendframework/zend-hydrator/src/NamingStrategyEnabledInterface.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-interface NamingStrategyEnabledInterface
-{
-    /**
-     * Adds the given naming strategy
-     *
-     * @param NamingStrategy\NamingStrategyInterface $strategy The naming to register.
-     * @return self
-     */
-    public function setNamingStrategy(NamingStrategy\NamingStrategyInterface $strategy);
-
-    /**
-     * Gets the naming strategy.
-     *
-     * @return NamingStrategy\NamingStrategyInterface
-     */
-    public function getNamingStrategy();
-
-    /**
-     * Checks if a naming strategy exists.
-     *
-     * @return bool
-     */
-    public function hasNamingStrategy();
-
-    /**
-     * Removes the naming with the given name.
-     *
-     * @return self
-     */
-    public function removeNamingStrategy();
-}
diff --git a/vendor/zendframework/zend-hydrator/src/ObjectProperty.php b/vendor/zendframework/zend-hydrator/src/ObjectProperty.php
deleted file mode 100644
index db68fb2..0000000
--- a/vendor/zendframework/zend-hydrator/src/ObjectProperty.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-use ReflectionClass;
-use ReflectionProperty;
-
-class ObjectProperty extends AbstractHydrator
-{
-    /**
-     * @var array[] indexed by class name and then property name
-     */
-    private static $skippedPropertiesCache = [];
-
-    /**
-     * {@inheritDoc}
-     *
-     * Extracts the accessible non-static properties of the given $object.
-     *
-     * @throws Exception\BadMethodCallException for a non-object $object
-     */
-    public function extract($object)
-    {
-        if (!is_object($object)) {
-            throw new Exception\BadMethodCallException(
-                sprintf('%s expects the provided $object to be a PHP object)', __METHOD__)
-            );
-        }
-
-        $data   = get_object_vars($object);
-        $filter = $this->getFilter();
-
-        foreach ($data as $name => $value) {
-            // Filter keys, removing any we don't want
-            if (! $filter->filter($name)) {
-                unset($data[$name]);
-                continue;
-            }
-
-            // Replace name if extracted differ
-            $extracted = $this->extractName($name, $object);
-
-            if ($extracted !== $name) {
-                unset($data[$name]);
-                $name = $extracted;
-            }
-
-            $data[$name] = $this->extractValue($name, $value, $object);
-        }
-
-        return $data;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Hydrate an object by populating public properties
-     *
-     * Hydrates an object by setting public properties of the object.
-     *
-     * @throws Exception\BadMethodCallException for a non-object $object
-     */
-    public function hydrate(array $data, $object)
-    {
-        if (!is_object($object)) {
-            throw new Exception\BadMethodCallException(
-                sprintf('%s expects the provided $object to be a PHP object)', __METHOD__)
-            );
-        }
-
-        $properties = & self::$skippedPropertiesCache[get_class($object)];
-
-        if (! isset($properties)) {
-            $reflection = new ReflectionClass($object);
-            $properties = array_fill_keys(
-                array_map(
-                    function (ReflectionProperty $property) {
-                        return $property->getName();
-                    },
-                    $reflection->getProperties(
-                        ReflectionProperty::IS_PRIVATE
-                        + ReflectionProperty::IS_PROTECTED
-                        + ReflectionProperty::IS_STATIC
-                    )
-                ),
-                true
-            );
-        }
-
-        foreach ($data as $name => $value) {
-            $property = $this->hydrateName($name, $data);
-
-            if (isset($properties[$property])) {
-                continue;
-            }
-
-            $object->$property = $this->hydrateValue($property, $value, $data);
-        }
-
-        return $object;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Reflection.php b/vendor/zendframework/zend-hydrator/src/Reflection.php
deleted file mode 100644
index 019748b..0000000
--- a/vendor/zendframework/zend-hydrator/src/Reflection.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-use ReflectionClass;
-use ReflectionProperty;
-
-class Reflection extends AbstractHydrator
-{
-    /**
-     * Simple in-memory array cache of ReflectionProperties used.
-     * @var ReflectionProperty[]
-     */
-    protected static $reflProperties = [];
-
-    /**
-     * Extract values from an object
-     *
-     * @param  object $object
-     * @return array
-     */
-    public function extract($object)
-    {
-        $result = [];
-        foreach (self::getReflProperties($object) as $property) {
-            $propertyName = $this->extractName($property->getName(), $object);
-            if (!$this->filterComposite->filter($propertyName)) {
-                continue;
-            }
-
-            $value = $property->getValue($object);
-            $result[$propertyName] = $this->extractValue($propertyName, $value, $object);
-        }
-
-        return $result;
-    }
-
-    /**
-     * Hydrate $object with the provided $data.
-     *
-     * @param  array $data
-     * @param  object $object
-     * @return object
-     */
-    public function hydrate(array $data, $object)
-    {
-        $reflProperties = self::getReflProperties($object);
-        foreach ($data as $key => $value) {
-            $name = $this->hydrateName($key, $data);
-            if (isset($reflProperties[$name])) {
-                $reflProperties[$name]->setValue($object, $this->hydrateValue($name, $value, $data));
-            }
-        }
-        return $object;
-    }
-
-    /**
-     * Get a reflection properties from in-memory cache and lazy-load if
-     * class has not been loaded.
-     *
-     * @param  string|object $input
-     * @throws Exception\InvalidArgumentException
-     * @return ReflectionProperty[]
-     */
-    protected static function getReflProperties($input)
-    {
-        if (is_object($input)) {
-            $input = get_class($input);
-        } elseif (!is_string($input)) {
-            throw new Exception\InvalidArgumentException('Input must be a string or an object.');
-        }
-
-        if (isset(static::$reflProperties[$input])) {
-            return static::$reflProperties[$input];
-        }
-
-        static::$reflProperties[$input] = [];
-        $reflClass                      = new ReflectionClass($input);
-        $reflProperties                 = $reflClass->getProperties();
-
-        foreach ($reflProperties as $property) {
-            $property->setAccessible(true);
-            static::$reflProperties[$input][$property->getName()] = $property;
-        }
-
-        return static::$reflProperties[$input];
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Strategy/BooleanStrategy.php b/vendor/zendframework/zend-hydrator/src/Strategy/BooleanStrategy.php
deleted file mode 100644
index dcb3a42..0000000
--- a/vendor/zendframework/zend-hydrator/src/Strategy/BooleanStrategy.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Strategy;
-
-use Zend\Hydrator\Exception\InvalidArgumentException;
-
-/**
- * This Strategy extracts and hydrates int and string values to Boolean values
- */
-class BooleanStrategy implements StrategyInterface
-{
-    /**
-     * @var int|string
-     */
-    private $trueValue;
-
-    /**
-     * @var int|string
-     */
-    private $falseValue;
-
-    /**
-     * @param int|string $trueValue
-     * @param int|string $falseValue
-     * @throws InvalidArgumentException
-     */
-    public function __construct($trueValue, $falseValue)
-    {
-        if (!is_int($trueValue) && !is_string($trueValue)) {
-            throw new InvalidArgumentException(sprintf(
-                'Unable to instantiate BooleanStrategy. Expected int or string as $trueValue. %s was given',
-                is_object($trueValue) ? get_class($trueValue) : gettype($trueValue)
-            ));
-        }
-
-        if (!is_int($falseValue) && !is_string($falseValue)) {
-            throw new InvalidArgumentException(sprintf(
-                'Unable to instantiate BooleanStrategy. Expected int or string as $falseValue. %s was given',
-                is_object($falseValue) ? get_class($falseValue) : gettype($falseValue)
-            ));
-        }
-
-        $this->trueValue  = $trueValue;
-        $this->falseValue = $falseValue;
-    }
-
-    /**
-     * Converts the given value so that it can be extracted by the hydrator.
-     *
-     * @param  bool $value The original value.
-     * @throws InvalidArgumentException
-     * @return int|string Returns the value that should be extracted.
-     */
-    public function extract($value)
-    {
-        if (!is_bool($value)) {
-            throw new InvalidArgumentException(sprintf(
-                'Unable to extract. Expected bool. %s was given.',
-                is_object($value) ? get_class($value) : gettype($value)
-            ));
-        }
-
-        return $value === true ? $this->trueValue : $this->falseValue;
-    }
-
-    /**
-     * Converts the given value so that it can be hydrated by the hydrator.
-     *
-     * @param  int|string $value The original value.
-     * @throws InvalidArgumentException
-     * @return bool Returns the value that should be hydrated.
-     */
-    public function hydrate($value)
-    {
-        if (!is_string($value) && !is_int($value)) {
-            throw new InvalidArgumentException(sprintf(
-                'Unable to hydrate. Expected string or int. %s was given.',
-                is_object($value) ? get_class($value) : gettype($value)
-            ));
-        }
-
-        if ($value === $this->trueValue) {
-            return true;
-        }
-
-        if ($value === $this->falseValue) {
-            return false;
-        }
-
-        throw new InvalidArgumentException(sprintf(
-            'Unexpected value %s can\'t be hydrated. Expect %s or %s as Value.',
-            $value,
-            $this->trueValue,
-            $this->falseValue
-        ));
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Strategy/ClosureStrategy.php b/vendor/zendframework/zend-hydrator/src/Strategy/ClosureStrategy.php
deleted file mode 100644
index 1f6526d..0000000
--- a/vendor/zendframework/zend-hydrator/src/Strategy/ClosureStrategy.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Strategy;
-
-class ClosureStrategy implements StrategyInterface
-{
-    /**
-     * Function, used in extract method, default:
-     *
-     * <code>
-     * function ($value) {
-     *     return $value;
-     * };
-     * </code>
-     *
-     * @var callable
-     */
-    protected $extractFunc = null;
-
-    /**
-     * Function, used in hydrate method, default:
-     *
-     * <code>
-     * function ($value) {
-     *     return $value;
-     * };
-     * </code>
-     *
-     * @var callable
-     */
-    protected $hydrateFunc = null;
-
-    /**
-     * You can describe how your values will extract and hydrate, like this:
-     *
-     * <code>
-     * $hydrator->addStrategy('category', new ClosureStrategy(
-     *     function (Category $value) {
-     *         return (int) $value->id;
-     *     },
-     *     function ($value) {
-     *         return new Category((int) $value);
-     *     }
-     * ));
-     * </code>
-     *
-     * @param callable $extractFunc - anonymous function, that extract values
-     *     from object
-     * @param callable $hydrateFunc - anonymous function, that hydrate values
-     *     into object
-     */
-    public function __construct($extractFunc = null, $hydrateFunc = null)
-    {
-        if (isset($extractFunc)) {
-            if (!is_callable($extractFunc)) {
-                throw new \Exception('$extractFunc must be callable');
-            }
-
-            $this->extractFunc = $extractFunc;
-        } else {
-            $this->extractFunc = function ($value) {
-                return $value;
-            };
-        }
-
-        if (isset($hydrateFunc)) {
-            if (!is_callable($hydrateFunc)) {
-                throw new \Exception('$hydrateFunc must be callable');
-            }
-
-            $this->hydrateFunc = $hydrateFunc;
-        } else {
-            $this->hydrateFunc = function ($value) {
-                return $value;
-            };
-        }
-    }
-
-    /**
-     * Converts the given value so that it can be extracted by the hydrator.
-     *
-     * @param  mixed $value  The original value.
-     * @param  array $object The object is optionally provided as context.
-     * @return mixed Returns the value that should be extracted.
-     */
-    public function extract($value, $object = null)
-    {
-        $func = $this->extractFunc;
-
-        return $func($value, $object);
-    }
-
-    /**
-     * Converts the given value so that it can be hydrated by the hydrator.
-     *
-     * @param  mixed $value The original value.
-     * @param  array $data  The whole data is optionally provided as context.
-     * @return mixed Returns the value that should be hydrated.
-     */
-    public function hydrate($value, $data = null)
-    {
-        $func = $this->hydrateFunc;
-
-        return $func($value, $data);
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Strategy/DateTimeFormatterStrategy.php b/vendor/zendframework/zend-hydrator/src/Strategy/DateTimeFormatterStrategy.php
deleted file mode 100644
index 62dda71..0000000
--- a/vendor/zendframework/zend-hydrator/src/Strategy/DateTimeFormatterStrategy.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Strategy;
-
-use DateTime;
-use DateTimeZone;
-
-class DateTimeFormatterStrategy implements StrategyInterface
-{
-    /**
-     * @var string
-     */
-    private $format;
-
-    /**
-     * @var DateTimeZone|null
-     */
-    private $timezone;
-
-    /**
-     * Constructor
-     *
-     * @param string            $format
-     * @param DateTimeZone|null $timezone
-     */
-    public function __construct($format = DateTime::RFC3339, DateTimeZone $timezone = null)
-    {
-        $this->format   = (string) $format;
-        $this->timezone = $timezone;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Converts to date time string
-     *
-     * @param mixed|DateTime $value
-     *
-     * @return mixed|string
-     */
-    public function extract($value)
-    {
-        if ($value instanceof DateTime) {
-            return $value->format($this->format);
-        }
-
-        return $value;
-    }
-
-    /**
-     * Converts date time string to DateTime instance for injecting to object
-     *
-     * {@inheritDoc}
-     *
-     * @param mixed|string $value
-     *
-     * @return mixed|DateTime
-     */
-    public function hydrate($value)
-    {
-        if ($value === '' || $value === null) {
-            return;
-        }
-
-        if ($this->timezone) {
-            $hydrated = DateTime::createFromFormat($this->format, $value, $this->timezone);
-        } else {
-            $hydrated = DateTime::createFromFormat($this->format, $value);
-        }
-
-        return $hydrated ?: $value;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Strategy/DefaultStrategy.php b/vendor/zendframework/zend-hydrator/src/Strategy/DefaultStrategy.php
deleted file mode 100644
index 6fb8f45..0000000
--- a/vendor/zendframework/zend-hydrator/src/Strategy/DefaultStrategy.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Strategy;
-
-class DefaultStrategy implements StrategyInterface
-{
-    /**
-     * Converts the given value so that it can be extracted by the hydrator.
-     *
-     * @param mixed $value The original value.
-     * @return mixed Returns the value that should be extracted.
-     */
-    public function extract($value)
-    {
-        return $value;
-    }
-
-    /**
-     * Converts the given value so that it can be hydrated by the hydrator.
-     *
-     * @param mixed $value The original value.
-     * @return mixed Returns the value that should be hydrated.
-     */
-    public function hydrate($value)
-    {
-        return $value;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Strategy/Exception/ExceptionInterface.php b/vendor/zendframework/zend-hydrator/src/Strategy/Exception/ExceptionInterface.php
deleted file mode 100644
index 6c16ec7..0000000
--- a/vendor/zendframework/zend-hydrator/src/Strategy/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Strategy\Exception;
-
-interface ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Strategy/Exception/InvalidArgumentException.php b/vendor/zendframework/zend-hydrator/src/Strategy/Exception/InvalidArgumentException.php
deleted file mode 100644
index c3175de..0000000
--- a/vendor/zendframework/zend-hydrator/src/Strategy/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Strategy\Exception;
-
-class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Strategy/ExplodeStrategy.php b/vendor/zendframework/zend-hydrator/src/Strategy/ExplodeStrategy.php
deleted file mode 100644
index 4eb54d6..0000000
--- a/vendor/zendframework/zend-hydrator/src/Strategy/ExplodeStrategy.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Strategy;
-
-class ExplodeStrategy implements StrategyInterface
-{
-    /**
-     * @var string
-     */
-    private $valueDelimiter;
-
-    /**
-     * @var int|null
-     */
-    private $explodeLimit;
-
-    /**
-     * Constructor
-     *
-     * @param string   $delimiter    String that the values will be split upon
-     * @param int|null $explodeLimit Explode limit
-     */
-    public function __construct($delimiter = ',', $explodeLimit = null)
-    {
-        $this->setValueDelimiter($delimiter);
-
-        $this->explodeLimit = ($explodeLimit === null) ? null : (int) $explodeLimit;
-    }
-
-    /**
-     * Sets the delimiter string that the values will be split upon
-     *
-     * @param  string $delimiter
-     * @return self
-     */
-    private function setValueDelimiter($delimiter)
-    {
-        if (!is_string($delimiter)) {
-            throw new Exception\InvalidArgumentException(sprintf(
-                '%s expects Delimiter to be string, %s provided instead',
-                __METHOD__,
-                is_object($delimiter) ? get_class($delimiter) : gettype($delimiter)
-            ));
-        }
-
-        if (empty($delimiter)) {
-            throw new Exception\InvalidArgumentException('Delimiter cannot be empty.');
-        }
-
-        $this->valueDelimiter = $delimiter;
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Split a string by delimiter
-     *
-     * @param string|null $value
-     *
-     * @return string[]
-     *
-     * @throws Exception\InvalidArgumentException
-     */
-    public function hydrate($value)
-    {
-        if (null === $value) {
-            return [];
-        }
-
-        if (!(is_string($value) || is_numeric($value))) {
-            throw new Exception\InvalidArgumentException(sprintf(
-                '%s expects argument 1 to be string, %s provided instead',
-                __METHOD__,
-                is_object($value) ? get_class($value) : gettype($value)
-            ));
-        }
-
-        if ($this->explodeLimit !== null) {
-            return explode($this->valueDelimiter, $value, $this->explodeLimit);
-        }
-
-        return explode($this->valueDelimiter, $value);
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Join array elements with delimiter
-     *
-     * @param string[] $value The original value.
-     *
-     * @return string|null
-     */
-    public function extract($value)
-    {
-        if (!is_array($value)) {
-            throw new Exception\InvalidArgumentException(sprintf(
-                '%s expects argument 1 to be array, %s provided instead',
-                __METHOD__,
-                is_object($value) ? get_class($value) : gettype($value)
-            ));
-        }
-
-        return empty($value) ? null : implode($this->valueDelimiter, $value);
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Strategy/SerializableStrategy.php b/vendor/zendframework/zend-hydrator/src/Strategy/SerializableStrategy.php
deleted file mode 100644
index bc49e7b..0000000
--- a/vendor/zendframework/zend-hydrator/src/Strategy/SerializableStrategy.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Strategy;
-
-use Zend\Hydrator\Exception\InvalidArgumentException;
-use Zend\Serializer\Adapter\AdapterInterface as SerializerAdapter;
-use Zend\Serializer\Serializer as SerializerFactory;
-
-class SerializableStrategy implements StrategyInterface
-{
-    /**
-     * @var string|SerializerAdapter
-     */
-    protected $serializer;
-
-    /**
-     * @var array
-     */
-    protected $serializerOptions = [];
-
-    /**
-     *
-     * @param mixed $serializer string or SerializerAdapter
-     * @param mixed $serializerOptions
-     */
-    public function __construct($serializer, $serializerOptions = null)
-    {
-        $this->setSerializer($serializer);
-        if ($serializerOptions) {
-            $this->setSerializerOptions($serializerOptions);
-        }
-    }
-
-    /**
-     * Serialize the given value so that it can be extracted by the hydrator.
-     *
-     * @param mixed $value The original value.
-     * @return mixed Returns the value that should be extracted.
-     */
-    public function extract($value)
-    {
-        $serializer = $this->getSerializer();
-        return $serializer->serialize($value);
-    }
-
-    /**
-     * Unserialize the given value so that it can be hydrated by the hydrator.
-     *
-     * @param mixed $value The original value.
-     * @return mixed Returns the value that should be hydrated.
-     */
-    public function hydrate($value)
-    {
-        $serializer = $this->getSerializer();
-        return $serializer->unserialize($value);
-    }
-
-    /**
-     * Set serializer
-     *
-     * @param  string|SerializerAdapter $serializer
-     * @return SerializableStrategy
-     */
-    public function setSerializer($serializer)
-    {
-        if (!is_string($serializer) && !$serializer instanceof SerializerAdapter) {
-            throw new InvalidArgumentException(sprintf(
-                '%s expects either a string serializer name or Zend\Serializer\Adapter\AdapterInterface instance; '
-                . 'received "%s"',
-                __METHOD__,
-                (is_object($serializer) ? get_class($serializer) : gettype($serializer))
-            ));
-        }
-        $this->serializer = $serializer;
-        return $this;
-    }
-
-    /**
-     * Get serializer
-     *
-     * @return SerializerAdapter
-     */
-    public function getSerializer()
-    {
-        if (is_string($this->serializer)) {
-            $options = $this->getSerializerOptions();
-            $this->setSerializer(SerializerFactory::factory($this->serializer, $options));
-        } elseif (null === $this->serializer) {
-            $this->setSerializer(SerializerFactory::getDefaultAdapter());
-        }
-
-        return $this->serializer;
-    }
-
-    /**
-     * Set configuration options for instantiating a serializer adapter
-     *
-     * @param  mixed $serializerOptions
-     * @return SerializableStrategy
-     */
-    public function setSerializerOptions($serializerOptions)
-    {
-        $this->serializerOptions = $serializerOptions;
-        return $this;
-    }
-
-    /**
-     * Get configuration options for instantiating a serializer adapter
-     *
-     * @return mixed
-     */
-    public function getSerializerOptions()
-    {
-        return $this->serializerOptions;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Strategy/StrategyChain.php b/vendor/zendframework/zend-hydrator/src/Strategy/StrategyChain.php
deleted file mode 100644
index 49d514d..0000000
--- a/vendor/zendframework/zend-hydrator/src/Strategy/StrategyChain.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Strategy;
-
-use Traversable;
-use Zend\Stdlib\ArrayUtils;
-
-class StrategyChain implements StrategyInterface
-{
-    /**
-     * Strategy chain for extraction
-     *
-     * @var StrategyInterface[]
-     */
-    private $extractionStrategies;
-
-    /**
-     * Strategy chain for hydration
-     *
-     * @var StrategyInterface[]
-     */
-    private $hydrationStrategies;
-
-    /**
-     * Constructor
-     *
-     * @param array|Traversable $extractionStrategies
-     */
-    public function __construct($extractionStrategies)
-    {
-        $extractionStrategies = ArrayUtils::iteratorToArray($extractionStrategies);
-        $this->extractionStrategies = array_map(
-            function (StrategyInterface $strategy) {
-                // this callback is here only to ensure type-safety
-                return $strategy;
-            },
-            $extractionStrategies
-        );
-
-        $this->hydrationStrategies = array_reverse($extractionStrategies);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function extract($value)
-    {
-        foreach ($this->extractionStrategies as $strategy) {
-            $value = $strategy->extract($value);
-        }
-
-        return $value;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function hydrate($value)
-    {
-        foreach ($this->hydrationStrategies as $strategy) {
-            $value = $strategy->hydrate($value);
-        }
-
-        return $value;
-    }
-}
diff --git a/vendor/zendframework/zend-hydrator/src/Strategy/StrategyInterface.php b/vendor/zendframework/zend-hydrator/src/Strategy/StrategyInterface.php
deleted file mode 100644
index a705593..0000000
--- a/vendor/zendframework/zend-hydrator/src/Strategy/StrategyInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator\Strategy;
-
-/**
- * @todo v3.0, add optional object/data to extract/hydrate.
- */
-interface StrategyInterface
-{
-    /**
-     * Converts the given value so that it can be extracted by the hydrator.
-     *
-     * @param mixed   $value The original value.
-     * @param object $object (optional) The original object for context.
-     * @return mixed Returns the value that should be extracted.
-     */
-    public function extract($value);
-
-    /**
-     * Converts the given value so that it can be hydrated by the hydrator.
-     *
-     * @param mixed $value The original value.
-     * @param array  $data (optional) The original data for context.
-     * @return mixed Returns the value that should be hydrated.
-     */
-    public function hydrate($value);
-}
diff --git a/vendor/zendframework/zend-hydrator/src/StrategyEnabledInterface.php b/vendor/zendframework/zend-hydrator/src/StrategyEnabledInterface.php
deleted file mode 100644
index 3c85b78..0000000
--- a/vendor/zendframework/zend-hydrator/src/StrategyEnabledInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Hydrator;
-
-interface StrategyEnabledInterface
-{
-    /**
-     * Adds the given strategy under the given name.
-     *
-     * @param string $name The name of the strategy to register.
-     * @param Strategy\StrategyInterface $strategy The strategy to register.
-     * @return self
-     */
-    public function addStrategy($name, Strategy\StrategyInterface $strategy);
-
-    /**
-     * Gets the strategy with the given name.
-     *
-     * @param string $name The name of the strategy to get.
-     * @return Strategy\StrategyInterface
-     */
-    public function getStrategy($name);
-
-    /**
-     * Checks if the strategy with the given name exists.
-     *
-     * @param string $name The name of the strategy to check for.
-     * @return bool
-     */
-    public function hasStrategy($name);
-
-    /**
-     * Removes the strategy with the given name.
-     *
-     * @param string $name The name of the strategy to remove.
-     * @return self
-     */
-    public function removeStrategy($name);
-}
diff --git a/vendor/zendframework/zend-stdlib/CHANGELOG.md b/vendor/zendframework/zend-stdlib/CHANGELOG.md
deleted file mode 100644
index 5ce14e6..0000000
--- a/vendor/zendframework/zend-stdlib/CHANGELOG.md
+++ /dev/null
@@ -1,203 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 2.7.3 - 2015-09-24
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#27](https://github.com/zendframework/zend-stdlib/pull/27) fixes a race
-  condition in the `FastPriorityQueue::remove()` logic that occurs when removing
-  items iteratively from the same priority of a queue.
-
-## 2.7.2 - 2015-09-23
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#26](https://github.com/zendframework/zend-stdlib/pull/26) fixes a subtle
-  inheritance issue with deprecation in the hydrators, and updates the
-  `HydratorInterface` to also extend the zend-hydrator `HydratorInterface` to
-  ensure LSP is preserved.
-
-## 2.7.1 - 2015-09-22
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#24](https://github.com/zendframework/zend-stdlib/pull/24) fixes an import in
-  `FastPriorityQueue` to alias `SplPriorityQueue` in order to disambiguate with
-  the local override present in the component.
-
-## 2.7.0 - 2015-09-22
-
-### Added
-
-- [#19](https://github.com/zendframework/zend-stdlib/pull/19) adds a new
-  `FastPriorityQueue` implementation. It follows the same signature as
-  `SplPriorityQueue`, but uses a performance-optimized algorithm:
-
-  - inserts are 2x faster than `SplPriorityQueue` and 3x faster than the
-    `Zend\Stdlib\PriorityQueue` implementation.
-  - extracts are 4x faster than `SplPriorityQueue` and 4-5x faster than the
-    `Zend\Stdlib\PriorityQueue` implementation.
-
-  The intention is to use this as a drop-in replacement in the
-  `zend-eventmanager` component to provide performance benefits.
-
-### Deprecated
-
-- [#20](https://github.com/zendframework/zend-stdlib/pull/20) deprecates *all
-  hydrator* classes, in favor of the new [zend-hydrator](https://github.com/zendframework/zend-hydrator)
-  component. All classes were updated to extend their zend-hydrator equivalents,
-  and marked as `@deprecated`, indicating the equivalent class from the other
-  repository.
-
-  Users *should* immediately start changing their code to use the zend-hydrator
-  equivalents; in most cases, this can be as easy as removing the `Stdlib`
-  namespace from import statements or hydrator configuration. Hydrators will be
-  removed entirely from zend-stdlib in v3.0, and all future updates to hydrators
-  will occur in the zend-hydrator library.
-
-  Changes with backwards compatibility implications:
-
-  - Users implementing `Zend\Stdlib\Hydrator\HydratorAwareInterface` will need to
-    update their `setHydrator()` implementation to typehint on
-    `Zend\Hydrator\HydratorInterface`. This can be done by changing the import
-    statement for that interface as follows:
-
-    ```php
-    // Replace this:
-    use Zend\Stdlib\Hydrator\HydratorInterface;
-    // with this:
-    use Zend\Hydrator\HydratorInterface;
-    ```
-
-    If you are not using imports, change the typehint within the signature itself:
-
-    ```php
-    // Replace this:
-    public function setHydrator(\Zend\Stdlib\Hydrator\HydratorInterface $hydrator)
-    // with this:
-    public function setHydrator(\Zend\Hydrator\HydratorInterface $hydrator)
-    ```
-
-    If you are using `Zend\Stdlib\Hydrator\HydratorAwareTrait`, no changes are
-    necessary, unless you override that method.
-
-  - If you were catching hydrator-generated exceptions, these were previously in
-    the `Zend\Stdlib\Exception` namespace. You will need to update your code to
-    catch exceptions in the `Zend\Hydrator\Exception` namespace.
-
-  - Users who *do* migrate to zend-hydrator may end up in a situation where
-    their code will not work with existing libraries that are still type-hinting
-    on the zend-stdlib interfaces. We will be attempting to address that ASAP,
-    but the deprecation within zend-stdlib is necessary as a first step.
-
-    In the meantime, you can write hydrators targeting zend-stdlib still in
-    order to guarantee compatibility.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 2.6.0 - 2015-07-21
-
-### Added
-
-- [#13](https://github.com/zendframework/zend-stdlib/pull/13) adds
-  `Zend\Stdlib\Hydrator\Iterator`, which provides mechanisms for hydrating
-  objects when iterating a traversable. This allows creating generic collection
-  resultsets; the original idea was pulled from
-  [PhlyMongo](https://github.com/phly/PhlyMongo), where it was used to hydrate
-  collections retrieved from MongoDB.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 2.5.2 - 2015-07-21
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#9](https://github.com/zendframework/zend-stdlib/pull/9) fixes an issue with
-  count incrementation during insert in PriorityList, ensuring that incrementation only
-  occurs when the item inserted was not previously present in the list.
-
-## 2.4.4 - 2015-07-21
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#9](https://github.com/zendframework/zend-stdlib/pull/9) fixes an issue with
-  count incrementation during insert in PriorityList, ensuring that incrementation only
-  occurs when the item inserted was not previously present in the list.
diff --git a/vendor/zendframework/zend-stdlib/CONTRIBUTING.md b/vendor/zendframework/zend-stdlib/CONTRIBUTING.md
deleted file mode 100644
index 1083b84..0000000
--- a/vendor/zendframework/zend-stdlib/CONTRIBUTING.md
+++ /dev/null
@@ -1,239 +0,0 @@
-# CONTRIBUTING
-
-## RESOURCES
-
-If you wish to contribute to Zend Framework, please be sure to
-read/subscribe to the following resources:
-
- -  [Coding Standards](https://github.com/zendframework/zf2/wiki/Coding-Standards)
- -  [Contributor's Guide](http://framework.zend.com/participate/contributor-guide)
- -  ZF Contributor's mailing list:
-    Archives: http://zend-framework-community.634137.n4.nabble.com/ZF-Contributor-f680267.html
-    Subscribe: zf-contributors-subscribe@lists.zend.com
- -  ZF Contributor's IRC channel:
-    #zftalk.dev on Freenode.net
-
-If you are working on new features or refactoring [create a proposal](https://github.com/zendframework/zend-stdlib/issues/new).
-
-## Reporting Potential Security Issues
-
-If you have encountered a potential security vulnerability, please **DO NOT** report it on the public
-issue tracker: send it to us at [zf-security@zend.com](mailto:zf-security@zend.com) instead.
-We will work with you to verify the vulnerability and patch it as soon as possible.
-
-When reporting issues, please provide the following information:
-
-- Component(s) affected
-- A description indicating how to reproduce the issue
-- A summary of the security vulnerability and impact
-
-We request that you contact us via the email address above and give the project
-contributors a chance to resolve the vulnerability and issue a new release prior
-to any public exposure; this helps protect users and provides them with a chance
-to upgrade and/or update in order to protect their applications.
-
-For sensitive email communications, please use [our PGP key](http://framework.zend.com/zf-security-pgp-key.asc).
-
-## RUNNING TESTS
-
-> ### Note: testing versions prior to 2.4
->
-> This component originates with Zend Framework 2. During the lifetime of ZF2,
-> testing infrastructure migrated from PHPUnit 3 to PHPUnit 4. In most cases, no
-> changes were necessary. However, due to the migration, tests may not run on
-> versions < 2.4. As such, you may need to change the PHPUnit dependency if
-> attempting a fix on such a version.
-
-To run tests:
-
-- Clone the repository:
-
-  ```console
-  $ git clone git@github.com:zendframework/zend-stdlib.git
-  $ cd
-  ```
-
-- Install dependencies via composer:
-
-  ```console
-  $ curl -sS https://getcomposer.org/installer | php --
-  $ ./composer.phar install
-  ```
-
-  If you don't have `curl` installed, you can also download `composer.phar` from https://getcomposer.org/
-
-- Run the tests via `phpunit` and the provided PHPUnit config, like in this example:
-
-  ```console
-  $ ./vendor/bin/phpunit
-  ```
-
-You can turn on conditional tests with the phpunit.xml file.
-To do so:
-
- -  Copy `phpunit.xml.dist` file to `phpunit.xml`
- -  Edit `phpunit.xml` to enable any specific functionality you
-    want to test, as well as to provide test values to utilize.
-
-## Running Coding Standards Checks
-
-This component uses [php-cs-fixer](http://cs.sensiolabs.org/) for coding
-standards checks, and provides configuration for our selected checks.
-`php-cs-fixer` is installed by default via Composer.
-
-To run checks only:
-
-```console
-$ ./vendor/bin/php-cs-fixer fix . -v --diff --dry-run --config-file=.php_cs
-```
-
-To have `php-cs-fixer` attempt to fix problems for you, omit the `--dry-run`
-flag:
-
-```console
-$ ./vendor/bin/php-cs-fixer fix . -v --diff --config-file=.php_cs
-```
-
-If you allow php-cs-fixer to fix CS issues, please re-run the tests to ensure
-they pass, and make sure you add and commit the changes after verification.
-
-## Benchmarks
-
-We provide benchmark tests for zend-stdlib under the directory [benchmark/](benchmark/),
-using.  [athletic](https://github.com/polyfractal/athletic).  You can execute
-the benchmarks running the following command:
-
-```bash
-$ ./vendor/bin/athletic -p benchmark
-```
-
-## Recommended Workflow for Contributions
-
-Your first step is to establish a public repository from which we can
-pull your work into the master repository. We recommend using
-[GitHub](https://github.com), as that is where the component is already hosted.
-
-1. Setup a [GitHub account](http://github.com/), if you haven't yet
-2. Fork the repository (http://github.com/zendframework/zend-stdlib)
-3. Clone the canonical repository locally and enter it.
-
-   ```console
-   $ git clone git://github.com:zendframework/zend-stdlib.git
-   $ cd zend-stdlib
-   ```
-
-4. Add a remote to your fork; substitute your GitHub username in the command
-   below.
-
-   ```console
-   $ git remote add {username} git@github.com:{username}/zend-stdlib.git
-   $ git fetch {username}
-   ```
-
-### Keeping Up-to-Date
-
-Periodically, you should update your fork or personal repository to
-match the canonical ZF repository. Assuming you have setup your local repository
-per the instructions above, you can do the following:
-
-
-```console
-$ git checkout master
-$ git fetch origin
-$ git rebase origin/master
-# OPTIONALLY, to keep your remote up-to-date -
-$ git push {username} master:master
-```
-
-If you're tracking other branches -- for example, the "develop" branch, where
-new feature development occurs -- you'll want to do the same operations for that
-branch; simply substitute  "develop" for "master".
-
-### Working on a patch
-
-We recommend you do each new feature or bugfix in a new branch. This simplifies
-the task of code review as well as the task of merging your changes into the
-canonical repository.
-
-A typical workflow will then consist of the following:
-
-1. Create a new local branch based off either your master or develop branch.
-2. Switch to your new local branch. (This step can be combined with the
-   previous step with the use of `git checkout -b`.)
-3. Do some work, commit, repeat as necessary.
-4. Push the local branch to your remote repository.
-5. Send a pull request.
-
-The mechanics of this process are actually quite trivial. Below, we will
-create a branch for fixing an issue in the tracker.
-
-```console
-$ git checkout -b hotfix/9295
-Switched to a new branch 'hotfix/9295'
-```
-
-... do some work ...
-
-
-```console
-$ git commit
-```
-
-... write your log message ...
-
-
-```console
-$ git push {username} hotfix/9295:hotfix/9295
-Counting objects: 38, done.
-Delta compression using up to 2 threads.
-Compression objects: 100% (18/18), done.
-Writing objects: 100% (20/20), 8.19KiB, done.
-Total 20 (delta 12), reused 0 (delta 0)
-To ssh://git@github.com/{username}/zend-stdlib.git
-   b5583aa..4f51698  HEAD -> master
-```
-
-To send a pull request, you have two options.
-
-If using GitHub, you can do the pull request from there. Navigate to
-your repository, select the branch you just created, and then select the
-"Pull Request" button in the upper right. Select the user/organization
-"zendframework" as the recipient.
-
-If using your own repository - or even if using GitHub - you can use `git
-format-patch` to create a patchset for us to apply; in fact, this is
-**recommended** for security-related patches. If you use `format-patch`, please
-send the patches as attachments to:
-
--  zf-devteam@zend.com for patches without security implications
--  zf-security@zend.com for security patches
-
-#### What branch to issue the pull request against?
-
-Which branch should you issue a pull request against?
-
-- For fixes against the stable release, issue the pull request against the
-  "master" branch.
-- For new features, or fixes that introduce new elements to the public API (such
-  as new public methods or properties), issue the pull request against the
-  "develop" branch.
-
-### Branch Cleanup
-
-As you might imagine, if you are a frequent contributor, you'll start to
-get a ton of branches both locally and on your remote.
-
-Once you know that your changes have been accepted to the master
-repository, we suggest doing some cleanup of these branches.
-
--  Local branch cleanup
-
-   ```console
-   $ git branch -d <branchname>
-   ```
-
--  Remote branch removal
-
-   ```console
-   $ git push {username} :<branchname>
-   ```
diff --git a/vendor/zendframework/zend-stdlib/LICENSE.md b/vendor/zendframework/zend-stdlib/LICENSE.md
deleted file mode 100644
index dbb1b49..0000000
--- a/vendor/zendframework/zend-stdlib/LICENSE.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2005-2015, Zend Technologies USA, Inc.
-
-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 Zend Technologies USA, Inc. nor the names of its
-  contributors may be used to endorse or promote products derived from this
-  software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/zendframework/zend-stdlib/README.md b/vendor/zendframework/zend-stdlib/README.md
deleted file mode 100644
index d87d00c..0000000
--- a/vendor/zendframework/zend-stdlib/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# zend-stdlib
-
-[![Build Status](https://secure.travis-ci.org/zendframework/zend-stdlib.svg?branch=master)](https://secure.travis-ci.org/zendframework/zend-stdlib)
-[![Coverage Status](https://coveralls.io/repos/zendframework/zend-stdlib/badge.svg?branch=master)](https://coveralls.io/r/zendframework/zend-stdlib?branch=master)
-
-`Zend\Stdlib` is a set of components that implements general purpose utility
-class for different scopes like:
-
-- array utilities functions;
-- hydrators;
-- json serializable interfaces;
-- general messaging systems;
-- string wrappers;
-- etc.
-
----
-
-- File issues at https://github.com/zendframework/zend-stdlib/issues
-- Documentation is at http://framework.zend.com/manual/current/en/index.html#zend-stdlib
diff --git a/vendor/zendframework/zend-stdlib/benchmark/ExtractPriorityQueue.php b/vendor/zendframework/zend-stdlib/benchmark/ExtractPriorityQueue.php
deleted file mode 100644
index 8fa7527..0000000
--- a/vendor/zendframework/zend-stdlib/benchmark/ExtractPriorityQueue.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace ZendBench\Stdlib;
-
-use Athletic\AthleticEvent;
-use Zend\Stdlib\FastPriorityQueue;
-use Zend\Stdlib\PriorityQueue;
-use Zend\Stdlib\SplPriorityQueue;
-
-class ExtractPriorityQueue extends AthleticEvent
-{
-    public function classSetUp()
-    {
-        $this->splPriorityQueue  = new SplPriorityQueue();
-        $this->fastPriorityQueue = new FastPriorityQueue();
-        $this->priorityQueue     = new PriorityQueue();
-
-        for ($i = 0; $i < 5000; $i += 1) {
-            $priority = rand(1, 100);
-            $this->splPriorityQueue->insert('foo', $priority);
-            $this->fastPriorityQueue->insert('foo', $priority);
-            $this->priorityQueue->insert('foo', $priority);
-        }
-    }
-
-    /**
-     * @iterations 5000
-     */
-    public function extractSplPriorityQueue()
-    {
-        $this->splPriorityQueue->extract();
-    }
-
-    /**
-     * @iterations 5000
-     */
-    public function extractPriorityQueue()
-    {
-        $this->priorityQueue->extract();
-    }
-
-    /**
-     * @iterations 5000
-     */
-    public function extractFastPriorityQueue()
-    {
-        $this->fastPriorityQueue->extract();
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/benchmark/InsertPriorityQueue.php b/vendor/zendframework/zend-stdlib/benchmark/InsertPriorityQueue.php
deleted file mode 100644
index 561c535..0000000
--- a/vendor/zendframework/zend-stdlib/benchmark/InsertPriorityQueue.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace ZendBench\Stdlib;
-
-use Athletic\AthleticEvent;
-use Zend\Stdlib\FastPriorityQueue;
-use Zend\Stdlib\PriorityQueue;
-use Zend\Stdlib\SplPriorityQueue;
-
-class InsertPriorityQueue extends AthleticEvent
-{
-    public function classSetUp()
-    {
-        $this->splPriorityQueue  = new SplPriorityQueue();
-        $this->fastPriorityQueue = new FastPriorityQueue();
-        $this->priorityQueue     = new PriorityQueue();
-    }
-
-    /**
-     * @iterations 5000
-     */
-    public function insertSplPriorityQueue()
-    {
-        $this->splPriorityQueue->insert('foo', rand(1, 100));
-    }
-
-    /**
-     * @iterations 5000
-     */
-    public function insertPriorityQueue()
-    {
-        $this->priorityQueue->insert('foo', rand(1, 100));
-    }
-
-    /**
-     * @iterations 5000
-     */
-    public function insertFastPriorityQueue()
-    {
-        $this->fastPriorityQueue->insert('foo', rand(1, 100));
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/benchmark/RemovePriorityQueue.php b/vendor/zendframework/zend-stdlib/benchmark/RemovePriorityQueue.php
deleted file mode 100644
index 1cfd35b..0000000
--- a/vendor/zendframework/zend-stdlib/benchmark/RemovePriorityQueue.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace ZendBench\Stdlib;
-
-use Athletic\AthleticEvent;
-use Zend\Stdlib\FastPriorityQueue;
-use Zend\Stdlib\PriorityQueue;
-
-class RemovePriorityQueue extends AthleticEvent
-{
-    public function classSetUp()
-    {
-        $this->fastPriorityQueue = new FastPriorityQueue();
-        $this->priorityQueue     = new PriorityQueue();
-
-        for ($i = 0; $i < 1000; $i += 1) {
-            $priority = rand(1, 100);
-            $this->fastPriorityQueue->insert('foo', $priority);
-            $this->priorityQueue->insert('foo', $priority);
-        }
-    }
-
-    /**
-     * @iterations 1000
-     */
-    public function removePriorityQueue()
-    {
-        $this->priorityQueue->remove('foo');
-    }
-
-    /**
-     * @iterations 1000
-     */
-    public function removeFastPriorityQueue()
-    {
-        $this->fastPriorityQueue->remove('foo');
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/composer.json b/vendor/zendframework/zend-stdlib/composer.json
deleted file mode 100644
index 4a5ecd5..0000000
--- a/vendor/zendframework/zend-stdlib/composer.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-    "name": "zendframework/zend-stdlib",
-    "description": " ",
-    "license": "BSD-3-Clause",
-    "keywords": [
-        "zf2",
-        "stdlib"
-    ],
-    "homepage": "https://github.com/zendframework/zend-stdlib",
-    "autoload": {
-        "psr-4": {
-            "Zend\\Stdlib\\": "src/"
-        }
-    },
-    "require": {
-        "php": ">=5.5",
-        "zendframework/zend-hydrator": "~1.0"
-    },
-    "require-dev": {
-        "zendframework/zend-config": "~2.5",
-        "zendframework/zend-eventmanager": "~2.5",
-        "zendframework/zend-inputfilter": "~2.5",
-        "zendframework/zend-serializer": "~2.5",
-        "zendframework/zend-servicemanager": "~2.5",
-        "zendframework/zend-filter": "~2.5",
-        "fabpot/php-cs-fixer": "1.7.*",
-        "phpunit/PHPUnit": "~4.0",
-        "athletic/athletic": "~0.1"
-    },
-    "suggest": {
-        "zendframework/zend-eventmanager": "To support aggregate hydrator usage",
-        "zendframework/zend-serializer": "Zend\\Serializer component",
-        "zendframework/zend-servicemanager": "To support hydrator plugin manager usage",
-        "zendframework/zend-filter": "To support naming strategy hydrator usage"
-    },
-    "minimum-stability": "dev",
-    "prefer-stable": true,
-    "extra": {
-        "branch-alias": {
-            "dev-master": "2.7-dev",
-            "dev-develop": "2.8-dev"
-        }
-    },
-    "autoload-dev": {
-        "psr-4": {
-            "ZendTest\\Stdlib\\": "test/",
-            "ZendBench\\Stdlib\\": "benchmark/"
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/AbstractOptions.php b/vendor/zendframework/zend-stdlib/src/AbstractOptions.php
deleted file mode 100644
index 812e1ca..0000000
--- a/vendor/zendframework/zend-stdlib/src/AbstractOptions.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use Traversable;
-
-abstract class AbstractOptions implements ParameterObjectInterface
-{
-    /**
-     * We use the __ prefix to avoid collisions with properties in
-     * user-implementations.
-     *
-     * @var bool
-     */
-    protected $__strictMode__ = true;
-
-    /**
-     * Constructor
-     *
-     * @param  array|Traversable|null $options
-     */
-    public function __construct($options = null)
-    {
-        if (null !== $options) {
-            $this->setFromArray($options);
-        }
-    }
-
-    /**
-     * Set one or more configuration properties
-     *
-     * @param  array|Traversable|AbstractOptions $options
-     * @throws Exception\InvalidArgumentException
-     * @return AbstractOptions Provides fluent interface
-     */
-    public function setFromArray($options)
-    {
-        if ($options instanceof self) {
-            $options = $options->toArray();
-        }
-
-        if (!is_array($options) && !$options instanceof Traversable) {
-            throw new Exception\InvalidArgumentException(
-                sprintf(
-                    'Parameter provided to %s must be an %s, %s or %s',
-                    __METHOD__,
-                    'array',
-                    'Traversable',
-                    'Zend\Stdlib\AbstractOptions'
-                )
-            );
-        }
-
-        foreach ($options as $key => $value) {
-            $this->__set($key, $value);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Cast to array
-     *
-     * @return array
-     */
-    public function toArray()
-    {
-        $array = [];
-        $transform = function ($letters) {
-            $letter = array_shift($letters);
-            return '_' . strtolower($letter);
-        };
-        foreach ($this as $key => $value) {
-            if ($key === '__strictMode__') {
-                continue;
-            }
-            $normalizedKey = preg_replace_callback('/([A-Z])/', $transform, $key);
-            $array[$normalizedKey] = $value;
-        }
-        return $array;
-    }
-
-    /**
-     * Set a configuration property
-     *
-     * @see ParameterObject::__set()
-     * @param string $key
-     * @param mixed $value
-     * @throws Exception\BadMethodCallException
-     * @return void
-     */
-    public function __set($key, $value)
-    {
-        $setter = 'set' . str_replace('_', '', $key);
-
-        if (is_callable([$this, $setter])) {
-            $this->{$setter}($value);
-
-            return;
-        }
-
-        if ($this->__strictMode__) {
-            throw new Exception\BadMethodCallException(sprintf(
-                'The option "%s" does not have a callable "%s" ("%s") setter method which must be defined',
-                $key,
-                'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))),
-                $setter
-            ));
-        }
-    }
-
-    /**
-     * Get a configuration property
-     *
-     * @see ParameterObject::__get()
-     * @param string $key
-     * @throws Exception\BadMethodCallException
-     * @return mixed
-     */
-    public function __get($key)
-    {
-        $getter = 'get' . str_replace('_', '', $key);
-
-        if (is_callable([$this, $getter])) {
-            return $this->{$getter}();
-        }
-
-        throw new Exception\BadMethodCallException(sprintf(
-            'The option "%s" does not have a callable "%s" getter method which must be defined',
-            $key,
-            'get' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key)))
-        ));
-    }
-
-    /**
-     * Test if a configuration property is null
-     * @see ParameterObject::__isset()
-     * @param string $key
-     * @return bool
-     */
-    public function __isset($key)
-    {
-        $getter = 'get' . str_replace('_', '', $key);
-
-        return method_exists($this, $getter) && null !== $this->__get($key);
-    }
-
-    /**
-     * Set a configuration property to NULL
-     *
-     * @see ParameterObject::__unset()
-     * @param string $key
-     * @throws Exception\InvalidArgumentException
-     * @return void
-     */
-    public function __unset($key)
-    {
-        try {
-            $this->__set($key, null);
-        } catch (Exception\BadMethodCallException $e) {
-            throw new Exception\InvalidArgumentException(
-                'The class property $' . $key . ' cannot be unset as'
-                . ' NULL is an invalid value for it',
-                0,
-                $e
-            );
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ArrayObject.php b/vendor/zendframework/zend-stdlib/src/ArrayObject.php
deleted file mode 100644
index e890084..0000000
--- a/vendor/zendframework/zend-stdlib/src/ArrayObject.php
+++ /dev/null
@@ -1,432 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use ArrayAccess;
-use Countable;
-use IteratorAggregate;
-use Serializable;
-
-/**
- * Custom framework ArrayObject implementation
- *
- * Extends version-specific "abstract" implementation.
- */
-class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Countable
-{
-    /**
-     * Properties of the object have their normal functionality
-     * when accessed as list (var_dump, foreach, etc.).
-     */
-    const STD_PROP_LIST = 1;
-
-    /**
-     * Entries can be accessed as properties (read and write).
-     */
-    const ARRAY_AS_PROPS = 2;
-
-    /**
-     * @var array
-     */
-    protected $storage;
-
-    /**
-     * @var int
-     */
-    protected $flag;
-
-    /**
-     * @var string
-     */
-    protected $iteratorClass;
-
-    /**
-     * @var array
-     */
-    protected $protectedProperties;
-
-    /**
-     * Constructor
-     *
-     * @param array  $input
-     * @param int    $flags
-     * @param string $iteratorClass
-     */
-    public function __construct($input = [], $flags = self::STD_PROP_LIST, $iteratorClass = 'ArrayIterator')
-    {
-        $this->setFlags($flags);
-        $this->storage = $input;
-        $this->setIteratorClass($iteratorClass);
-        $this->protectedProperties = array_keys(get_object_vars($this));
-    }
-
-    /**
-     * Returns whether the requested key exists
-     *
-     * @param  mixed $key
-     * @return bool
-     */
-    public function __isset($key)
-    {
-        if ($this->flag == self::ARRAY_AS_PROPS) {
-            return $this->offsetExists($key);
-        }
-        if (in_array($key, $this->protectedProperties)) {
-            throw new Exception\InvalidArgumentException('$key is a protected property, use a different key');
-        }
-
-        return isset($this->$key);
-    }
-
-    /**
-     * Sets the value at the specified key to value
-     *
-     * @param  mixed $key
-     * @param  mixed $value
-     * @return void
-     */
-    public function __set($key, $value)
-    {
-        if ($this->flag == self::ARRAY_AS_PROPS) {
-            return $this->offsetSet($key, $value);
-        }
-        if (in_array($key, $this->protectedProperties)) {
-            throw new Exception\InvalidArgumentException('$key is a protected property, use a different key');
-        }
-        $this->$key = $value;
-    }
-
-    /**
-     * Unsets the value at the specified key
-     *
-     * @param  mixed $key
-     * @return void
-     */
-    public function __unset($key)
-    {
-        if ($this->flag == self::ARRAY_AS_PROPS) {
-            return $this->offsetUnset($key);
-        }
-        if (in_array($key, $this->protectedProperties)) {
-            throw new Exception\InvalidArgumentException('$key is a protected property, use a different key');
-        }
-        unset($this->$key);
-    }
-
-    /**
-     * Returns the value at the specified key by reference
-     *
-     * @param  mixed $key
-     * @return mixed
-     */
-    public function &__get($key)
-    {
-        $ret = null;
-        if ($this->flag == self::ARRAY_AS_PROPS) {
-            $ret =& $this->offsetGet($key);
-
-            return $ret;
-        }
-        if (in_array($key, $this->protectedProperties)) {
-            throw new Exception\InvalidArgumentException('$key is a protected property, use a different key');
-        }
-
-        return $this->$key;
-    }
-
-    /**
-     * Appends the value
-     *
-     * @param  mixed $value
-     * @return void
-     */
-    public function append($value)
-    {
-        $this->storage[] = $value;
-    }
-
-    /**
-     * Sort the entries by value
-     *
-     * @return void
-     */
-    public function asort()
-    {
-        asort($this->storage);
-    }
-
-    /**
-     * Get the number of public properties in the ArrayObject
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return count($this->storage);
-    }
-
-    /**
-     * Exchange the array for another one.
-     *
-     * @param  array|ArrayObject $data
-     * @return array
-     */
-    public function exchangeArray($data)
-    {
-        if (!is_array($data) && !is_object($data)) {
-            throw new Exception\InvalidArgumentException('Passed variable is not an array or object, using empty array instead');
-        }
-
-        if (is_object($data) && ($data instanceof self || $data instanceof \ArrayObject)) {
-            $data = $data->getArrayCopy();
-        }
-        if (!is_array($data)) {
-            $data = (array) $data;
-        }
-
-        $storage = $this->storage;
-
-        $this->storage = $data;
-
-        return $storage;
-    }
-
-    /**
-     * Creates a copy of the ArrayObject.
-     *
-     * @return array
-     */
-    public function getArrayCopy()
-    {
-        return $this->storage;
-    }
-
-    /**
-     * Gets the behavior flags.
-     *
-     * @return int
-     */
-    public function getFlags()
-    {
-        return $this->flag;
-    }
-
-    /**
-     * Create a new iterator from an ArrayObject instance
-     *
-     * @return \Iterator
-     */
-    public function getIterator()
-    {
-        $class = $this->iteratorClass;
-
-        return new $class($this->storage);
-    }
-
-    /**
-     * Gets the iterator classname for the ArrayObject.
-     *
-     * @return string
-     */
-    public function getIteratorClass()
-    {
-        return $this->iteratorClass;
-    }
-
-    /**
-     * Sort the entries by key
-     *
-     * @return void
-     */
-    public function ksort()
-    {
-        ksort($this->storage);
-    }
-
-    /**
-     * Sort an array using a case insensitive "natural order" algorithm
-     *
-     * @return void
-     */
-    public function natcasesort()
-    {
-        natcasesort($this->storage);
-    }
-
-    /**
-     * Sort entries using a "natural order" algorithm
-     *
-     * @return void
-     */
-    public function natsort()
-    {
-        natsort($this->storage);
-    }
-
-    /**
-     * Returns whether the requested key exists
-     *
-     * @param  mixed $key
-     * @return bool
-     */
-    public function offsetExists($key)
-    {
-        return isset($this->storage[$key]);
-    }
-
-    /**
-     * Returns the value at the specified key
-     *
-     * @param  mixed $key
-     * @return mixed
-     */
-    public function &offsetGet($key)
-    {
-        $ret = null;
-        if (!$this->offsetExists($key)) {
-            return $ret;
-        }
-        $ret =& $this->storage[$key];
-
-        return $ret;
-    }
-
-    /**
-     * Sets the value at the specified key to value
-     *
-     * @param  mixed $key
-     * @param  mixed $value
-     * @return void
-     */
-    public function offsetSet($key, $value)
-    {
-        $this->storage[$key] = $value;
-    }
-
-    /**
-     * Unsets the value at the specified key
-     *
-     * @param  mixed $key
-     * @return void
-     */
-    public function offsetUnset($key)
-    {
-        if ($this->offsetExists($key)) {
-            unset($this->storage[$key]);
-        }
-    }
-
-    /**
-     * Serialize an ArrayObject
-     *
-     * @return string
-     */
-    public function serialize()
-    {
-        return serialize(get_object_vars($this));
-    }
-
-    /**
-     * Sets the behavior flags
-     *
-     * @param  int  $flags
-     * @return void
-     */
-    public function setFlags($flags)
-    {
-        $this->flag = $flags;
-    }
-
-    /**
-     * Sets the iterator classname for the ArrayObject
-     *
-     * @param  string $class
-     * @return void
-     */
-    public function setIteratorClass($class)
-    {
-        if (class_exists($class)) {
-            $this->iteratorClass = $class;
-
-            return ;
-        }
-
-        if (strpos($class, '\\') === 0) {
-            $class = '\\' . $class;
-            if (class_exists($class)) {
-                $this->iteratorClass = $class;
-
-                return ;
-            }
-        }
-
-        throw new Exception\InvalidArgumentException('The iterator class does not exist');
-    }
-
-    /**
-     * Sort the entries with a user-defined comparison function and maintain key association
-     *
-     * @param  callable $function
-     * @return void
-     */
-    public function uasort($function)
-    {
-        if (is_callable($function)) {
-            uasort($this->storage, $function);
-        }
-    }
-
-    /**
-     * Sort the entries by keys using a user-defined comparison function
-     *
-     * @param  callable $function
-     * @return void
-     */
-    public function uksort($function)
-    {
-        if (is_callable($function)) {
-            uksort($this->storage, $function);
-        }
-    }
-
-    /**
-     * Unserialize an ArrayObject
-     *
-     * @param  string $data
-     * @return void
-     */
-    public function unserialize($data)
-    {
-        $ar                        = unserialize($data);
-        $this->protectedProperties = array_keys(get_object_vars($this));
-
-        $this->setFlags($ar['flag']);
-        $this->exchangeArray($ar['storage']);
-        $this->setIteratorClass($ar['iteratorClass']);
-
-        foreach ($ar as $k => $v) {
-            switch ($k) {
-                case 'flag':
-                    $this->setFlags($v);
-                    break;
-                case 'storage':
-                    $this->exchangeArray($v);
-                    break;
-                case 'iteratorClass':
-                    $this->setIteratorClass($v);
-                    break;
-                case 'protectedProperties':
-                    continue;
-                default:
-                    $this->__set($k, $v);
-            }
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ArraySerializableInterface.php b/vendor/zendframework/zend-stdlib/src/ArraySerializableInterface.php
deleted file mode 100644
index dcf8471..0000000
--- a/vendor/zendframework/zend-stdlib/src/ArraySerializableInterface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-interface ArraySerializableInterface
-{
-    /**
-     * Exchange internal values from provided array
-     *
-     * @param  array $array
-     * @return void
-     */
-    public function exchangeArray(array $array);
-
-    /**
-     * Return an array representation of the object
-     *
-     * @return array
-     */
-    public function getArrayCopy();
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ArrayStack.php b/vendor/zendframework/zend-stdlib/src/ArrayStack.php
deleted file mode 100644
index 39d02aa..0000000
--- a/vendor/zendframework/zend-stdlib/src/ArrayStack.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use ArrayIterator;
-use ArrayObject as PhpArrayObject;
-
-/**
- * ArrayObject that acts as a stack with regards to iteration
- */
-class ArrayStack extends PhpArrayObject
-{
-    /**
-     * Retrieve iterator
-     *
-     * Retrieve an array copy of the object, reverse its order, and return an
-     * ArrayIterator with that reversed array.
-     *
-     * @return ArrayIterator
-     */
-    public function getIterator()
-    {
-        $array = $this->getArrayCopy();
-        return new ArrayIterator(array_reverse($array));
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ArrayUtils.php b/vendor/zendframework/zend-stdlib/src/ArrayUtils.php
deleted file mode 100644
index 17e3ae3..0000000
--- a/vendor/zendframework/zend-stdlib/src/ArrayUtils.php
+++ /dev/null
@@ -1,335 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use Traversable;
-use Zend\Stdlib\ArrayUtils\MergeRemoveKey;
-use Zend\Stdlib\ArrayUtils\MergeReplaceKeyInterface;
-
-/**
- * Utility class for testing and manipulation of PHP arrays.
- *
- * Declared abstract, as we have no need for instantiation.
- */
-abstract class ArrayUtils
-{
-    /**
-     * Compatibility Flag for ArrayUtils::filter
-     */
-    const ARRAY_FILTER_USE_BOTH = 1;
-
-    /**
-     * Compatibility Flag for ArrayUtils::filter
-     */
-    const ARRAY_FILTER_USE_KEY  = 2;
-
-    /**
-     * Test whether an array contains one or more string keys
-     *
-     * @param  mixed $value
-     * @param  bool  $allowEmpty    Should an empty array() return true
-     * @return bool
-     */
-    public static function hasStringKeys($value, $allowEmpty = false)
-    {
-        if (!is_array($value)) {
-            return false;
-        }
-
-        if (!$value) {
-            return $allowEmpty;
-        }
-
-        return count(array_filter(array_keys($value), 'is_string')) > 0;
-    }
-
-    /**
-     * Test whether an array contains one or more integer keys
-     *
-     * @param  mixed $value
-     * @param  bool  $allowEmpty    Should an empty array() return true
-     * @return bool
-     */
-    public static function hasIntegerKeys($value, $allowEmpty = false)
-    {
-        if (!is_array($value)) {
-            return false;
-        }
-
-        if (!$value) {
-            return $allowEmpty;
-        }
-
-        return count(array_filter(array_keys($value), 'is_int')) > 0;
-    }
-
-    /**
-     * Test whether an array contains one or more numeric keys.
-     *
-     * A numeric key can be one of the following:
-     * - an integer 1,
-     * - a string with a number '20'
-     * - a string with negative number: '-1000'
-     * - a float: 2.2120, -78.150999
-     * - a string with float:  '4000.99999', '-10.10'
-     *
-     * @param  mixed $value
-     * @param  bool  $allowEmpty    Should an empty array() return true
-     * @return bool
-     */
-    public static function hasNumericKeys($value, $allowEmpty = false)
-    {
-        if (!is_array($value)) {
-            return false;
-        }
-
-        if (!$value) {
-            return $allowEmpty;
-        }
-
-        return count(array_filter(array_keys($value), 'is_numeric')) > 0;
-    }
-
-    /**
-     * Test whether an array is a list
-     *
-     * A list is a collection of values assigned to continuous integer keys
-     * starting at 0 and ending at count() - 1.
-     *
-     * For example:
-     * <code>
-     * $list = array('a', 'b', 'c', 'd');
-     * $list = array(
-     *     0 => 'foo',
-     *     1 => 'bar',
-     *     2 => array('foo' => 'baz'),
-     * );
-     * </code>
-     *
-     * @param  mixed $value
-     * @param  bool  $allowEmpty    Is an empty list a valid list?
-     * @return bool
-     */
-    public static function isList($value, $allowEmpty = false)
-    {
-        if (!is_array($value)) {
-            return false;
-        }
-
-        if (!$value) {
-            return $allowEmpty;
-        }
-
-        return (array_values($value) === $value);
-    }
-
-    /**
-     * Test whether an array is a hash table.
-     *
-     * An array is a hash table if:
-     *
-     * 1. Contains one or more non-integer keys, or
-     * 2. Integer keys are non-continuous or misaligned (not starting with 0)
-     *
-     * For example:
-     * <code>
-     * $hash = array(
-     *     'foo' => 15,
-     *     'bar' => false,
-     * );
-     * $hash = array(
-     *     1995  => 'Birth of PHP',
-     *     2009  => 'PHP 5.3.0',
-     *     2012  => 'PHP 5.4.0',
-     * );
-     * $hash = array(
-     *     'formElement,
-     *     'options' => array( 'debug' => true ),
-     * );
-     * </code>
-     *
-     * @param  mixed $value
-     * @param  bool  $allowEmpty    Is an empty array() a valid hash table?
-     * @return bool
-     */
-    public static function isHashTable($value, $allowEmpty = false)
-    {
-        if (!is_array($value)) {
-            return false;
-        }
-
-        if (!$value) {
-            return $allowEmpty;
-        }
-
-        return (array_values($value) !== $value);
-    }
-
-    /**
-     * Checks if a value exists in an array.
-     *
-     * Due to "foo" == 0 === TRUE with in_array when strict = false, an option
-     * has been added to prevent this. When $strict = 0/false, the most secure
-     * non-strict check is implemented. if $strict = -1, the default in_array
-     * non-strict behaviour is used.
-     *
-     * @param mixed $needle
-     * @param array $haystack
-     * @param int|bool $strict
-     * @return bool
-     */
-    public static function inArray($needle, array $haystack, $strict = false)
-    {
-        if (!$strict) {
-            if (is_int($needle) || is_float($needle)) {
-                $needle = (string) $needle;
-            }
-            if (is_string($needle)) {
-                foreach ($haystack as &$h) {
-                    if (is_int($h) || is_float($h)) {
-                        $h = (string) $h;
-                    }
-                }
-            }
-        }
-        return in_array($needle, $haystack, $strict);
-    }
-
-    /**
-     * Convert an iterator to an array.
-     *
-     * Converts an iterator to an array. The $recursive flag, on by default,
-     * hints whether or not you want to do so recursively.
-     *
-     * @param  array|Traversable  $iterator     The array or Traversable object to convert
-     * @param  bool               $recursive    Recursively check all nested structures
-     * @throws Exception\InvalidArgumentException if $iterator is not an array or a Traversable object
-     * @return array
-     */
-    public static function iteratorToArray($iterator, $recursive = true)
-    {
-        if (!is_array($iterator) && !$iterator instanceof Traversable) {
-            throw new Exception\InvalidArgumentException(__METHOD__ . ' expects an array or Traversable object');
-        }
-
-        if (!$recursive) {
-            if (is_array($iterator)) {
-                return $iterator;
-            }
-
-            return iterator_to_array($iterator);
-        }
-
-        if (method_exists($iterator, 'toArray')) {
-            return $iterator->toArray();
-        }
-
-        $array = [];
-        foreach ($iterator as $key => $value) {
-            if (is_scalar($value)) {
-                $array[$key] = $value;
-                continue;
-            }
-
-            if ($value instanceof Traversable) {
-                $array[$key] = static::iteratorToArray($value, $recursive);
-                continue;
-            }
-
-            if (is_array($value)) {
-                $array[$key] = static::iteratorToArray($value, $recursive);
-                continue;
-            }
-
-            $array[$key] = $value;
-        }
-
-        return $array;
-    }
-
-    /**
-     * Merge two arrays together.
-     *
-     * If an integer key exists in both arrays and preserveNumericKeys is false, the value
-     * from the second array will be appended to the first array. If both values are arrays, they
-     * are merged together, else the value of the second array overwrites the one of the first array.
-     *
-     * @param  array $a
-     * @param  array $b
-     * @param  bool  $preserveNumericKeys
-     * @return array
-     */
-    public static function merge(array $a, array $b, $preserveNumericKeys = false)
-    {
-        foreach ($b as $key => $value) {
-            if ($value instanceof MergeReplaceKeyInterface) {
-                $a[$key] = $value->getData();
-            } elseif (isset($a[$key]) || array_key_exists($key, $a)) {
-                if ($value instanceof MergeRemoveKey) {
-                    unset($a[$key]);
-                } elseif (!$preserveNumericKeys && is_int($key)) {
-                    $a[] = $value;
-                } elseif (is_array($value) && is_array($a[$key])) {
-                    $a[$key] = static::merge($a[$key], $value, $preserveNumericKeys);
-                } else {
-                    $a[$key] = $value;
-                }
-            } else {
-                if (!$value instanceof MergeRemoveKey) {
-                    $a[$key] = $value;
-                }
-            }
-        }
-
-        return $a;
-    }
-
-    /**
-     * Compatibility Method for array_filter on <5.6 systems
-     *
-     * @param array $data
-     * @param callable $callback
-     * @param null|int $flag
-     * @return array
-     */
-    public static function filter(array $data, $callback, $flag = null)
-    {
-        if (! is_callable($callback)) {
-            throw new Exception\InvalidArgumentException(sprintf(
-                'Second parameter of %s must be callable',
-                __METHOD__
-            ));
-        }
-
-        if (version_compare(PHP_VERSION, '5.6.0') >= 0) {
-            return array_filter($data, $callback, $flag);
-        }
-
-        $output = [];
-        foreach ($data as $key => $value) {
-            $params = [$value];
-
-            if ($flag === static::ARRAY_FILTER_USE_BOTH) {
-                $params[] = $key;
-            }
-
-            if ($flag === static::ARRAY_FILTER_USE_KEY) {
-                $params = [$key];
-            }
-
-            $response = call_user_func_array($callback, $params);
-            if ($response) {
-                $output[$key] = $value;
-            }
-        }
-
-        return $output;
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ArrayUtils/MergeRemoveKey.php b/vendor/zendframework/zend-stdlib/src/ArrayUtils/MergeRemoveKey.php
deleted file mode 100644
index 7c4d097..0000000
--- a/vendor/zendframework/zend-stdlib/src/ArrayUtils/MergeRemoveKey.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\ArrayUtils;
-
-final class MergeRemoveKey
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ArrayUtils/MergeReplaceKey.php b/vendor/zendframework/zend-stdlib/src/ArrayUtils/MergeReplaceKey.php
deleted file mode 100644
index 24c1df4..0000000
--- a/vendor/zendframework/zend-stdlib/src/ArrayUtils/MergeReplaceKey.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\ArrayUtils;
-
-final class MergeReplaceKey implements MergeReplaceKeyInterface
-{
-    /**
-     * @var mixed
-     */
-    protected $data;
-
-    /**
-     * @param mixed $data
-     */
-    public function __construct($data)
-    {
-        $this->data = $data;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getData()
-    {
-        return $this->data;
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ArrayUtils/MergeReplaceKeyInterface.php b/vendor/zendframework/zend-stdlib/src/ArrayUtils/MergeReplaceKeyInterface.php
deleted file mode 100644
index 725cf11..0000000
--- a/vendor/zendframework/zend-stdlib/src/ArrayUtils/MergeReplaceKeyInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\ArrayUtils;
-
-/**
- * Marker interface: can be used to replace keys completely in {@see ArrayUtils::merge()} operations
- */
-interface MergeReplaceKeyInterface
-{
-    /**
-     * @return mixed
-     */
-    public function getData();
-}
diff --git a/vendor/zendframework/zend-stdlib/src/CallbackHandler.php b/vendor/zendframework/zend-stdlib/src/CallbackHandler.php
deleted file mode 100644
index dc6bc74..0000000
--- a/vendor/zendframework/zend-stdlib/src/CallbackHandler.php
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use ReflectionClass;
-
-/**
- * CallbackHandler
- *
- * A handler for an event, event, filterchain, etc. Abstracts PHP callbacks,
- * primarily to allow for lazy-loading and ensuring availability of default
- * arguments (currying).
- */
-class CallbackHandler
-{
-    /**
-     * @var string|array|callable PHP callback to invoke
-     */
-    protected $callback;
-
-    /**
-     * Callback metadata, if any
-     * @var array
-     */
-    protected $metadata;
-
-    /**
-     * Constructor
-     *
-     * @param  string|array|object|callable $callback PHP callback
-     * @param  array                        $metadata  Callback metadata
-     */
-    public function __construct($callback, array $metadata = [])
-    {
-        $this->metadata  = $metadata;
-        $this->registerCallback($callback);
-    }
-
-    /**
-     * Registers the callback provided in the constructor
-     *
-     * @param  callable $callback
-     * @throws Exception\InvalidCallbackException
-     * @return void
-     */
-    protected function registerCallback($callback)
-    {
-        if (!is_callable($callback)) {
-            throw new Exception\InvalidCallbackException('Invalid callback provided; not callable');
-        }
-
-        $this->callback = $callback;
-    }
-
-    /**
-     * Retrieve registered callback
-     *
-     * @return callable
-     */
-    public function getCallback()
-    {
-        return $this->callback;
-    }
-
-    /**
-     * Invoke handler
-     *
-     * @param  array $args Arguments to pass to callback
-     * @return mixed
-     */
-    public function call(array $args = [])
-    {
-        $callback = $this->getCallback();
-        $argCount = count($args);
-
-        if (is_string($callback)) {
-            $result = $this->validateStringCallbackFor54($callback);
-
-            if ($result !== true && $argCount <= 3) {
-                $callback       = $result;
-                // Minor performance tweak, if the callback gets called more
-                // than once
-                $this->callback = $result;
-            }
-        }
-
-        // Minor performance tweak; use call_user_func() until > 3 arguments
-        // reached
-        switch ($argCount) {
-            case 0:
-                return $callback();
-            case 1:
-                return $callback(array_shift($args));
-            case 2:
-                $arg1 = array_shift($args);
-                $arg2 = array_shift($args);
-                return $callback($arg1, $arg2);
-            case 3:
-                $arg1 = array_shift($args);
-                $arg2 = array_shift($args);
-                $arg3 = array_shift($args);
-                return $callback($arg1, $arg2, $arg3);
-            default:
-                return call_user_func_array($callback, $args);
-        }
-    }
-
-    /**
-     * Invoke as functor
-     *
-     * @return mixed
-     */
-    public function __invoke()
-    {
-        return $this->call(func_get_args());
-    }
-
-    /**
-     * Get all callback metadata
-     *
-     * @return array
-     */
-    public function getMetadata()
-    {
-        return $this->metadata;
-    }
-
-    /**
-     * Retrieve a single metadatum
-     *
-     * @param  string $name
-     * @return mixed
-     */
-    public function getMetadatum($name)
-    {
-        if (array_key_exists($name, $this->metadata)) {
-            return $this->metadata[$name];
-        }
-        return;
-    }
-
-    /**
-     * Validate a static method call
-     *
-     *
-     * @param  string $callback
-     * @return true|array
-     * @throws Exception\InvalidCallbackException if invalid
-     */
-    protected function validateStringCallbackFor54($callback)
-    {
-        if (!strstr($callback, '::')) {
-            return true;
-        }
-
-        list($class, $method) = explode('::', $callback, 2);
-
-        if (!class_exists($class)) {
-            throw new Exception\InvalidCallbackException(sprintf(
-                'Static method call "%s" refers to a class that does not exist',
-                $callback
-            ));
-        }
-
-        $r = new ReflectionClass($class);
-        if (!$r->hasMethod($method)) {
-            throw new Exception\InvalidCallbackException(sprintf(
-                'Static method call "%s" refers to a method that does not exist',
-                $callback
-            ));
-        }
-        $m = $r->getMethod($method);
-        if (!$m->isStatic()) {
-            throw new Exception\InvalidCallbackException(sprintf(
-                'Static method call "%s" refers to a method that is not static',
-                $callback
-            ));
-        }
-
-        // returning a non boolean value may not be nice for a validate method,
-        // but that allows the usage of a static string callback without using
-        // the call_user_func function.
-        return [$class, $method];
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/DateTime.php b/vendor/zendframework/zend-stdlib/src/DateTime.php
deleted file mode 100644
index cdab67d..0000000
--- a/vendor/zendframework/zend-stdlib/src/DateTime.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use DateTimeZone;
-
-trigger_error('DateTime extension deprecated as of ZF 2.1.4; use the \DateTime constructor to parse extended ISO8601 dates instead', E_USER_DEPRECATED);
-
-/**
- * DateTime
- *
- * An extension of the \DateTime object.
- *
- * @deprecated
- */
-class DateTime extends \DateTime
-{
-    /**
-     * The DateTime::ISO8601 constant used by php's native DateTime object does
-     * not allow for fractions of a second. This function better handles ISO8601
-     * formatted date strings.
-     *
-     * @param  string       $time
-     * @param  DateTimeZone $timezone
-     * @return mixed
-     */
-    public static function createFromISO8601($time, DateTimeZone $timezone = null)
-    {
-        $format = self::ISO8601;
-        if (isset($time[19]) && $time[19] === '.') {
-            $format = 'Y-m-d\TH:i:s.uO';
-        }
-
-        if ($timezone !== null) {
-            return self::createFromFormat($format, $time, $timezone);
-        }
-
-        return self::createFromFormat($format, $time);
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/DispatchableInterface.php b/vendor/zendframework/zend-stdlib/src/DispatchableInterface.php
deleted file mode 100644
index 4f74d1e..0000000
--- a/vendor/zendframework/zend-stdlib/src/DispatchableInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-interface DispatchableInterface
-{
-    /**
-     * Dispatch a request
-     *
-     * @param RequestInterface $request
-     * @param null|ResponseInterface $response
-     * @return Response|mixed
-     */
-    public function dispatch(RequestInterface $request, ResponseInterface $response = null);
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ErrorHandler.php b/vendor/zendframework/zend-stdlib/src/ErrorHandler.php
deleted file mode 100644
index a849620..0000000
--- a/vendor/zendframework/zend-stdlib/src/ErrorHandler.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use ErrorException;
-
-/**
- * ErrorHandler that can be used to catch internal PHP errors
- * and convert to an ErrorException instance.
- */
-abstract class ErrorHandler
-{
-    /**
-     * Active stack
-     *
-     * @var array
-     */
-    protected static $stack = [];
-
-    /**
-     * Check if this error handler is active
-     *
-     * @return bool
-     */
-    public static function started()
-    {
-        return (bool) static::getNestedLevel();
-    }
-
-    /**
-     * Get the current nested level
-     *
-     * @return int
-     */
-    public static function getNestedLevel()
-    {
-        return count(static::$stack);
-    }
-
-    /**
-     * Starting the error handler
-     *
-     * @param int $errorLevel
-     */
-    public static function start($errorLevel = \E_WARNING)
-    {
-        if (!static::$stack) {
-            set_error_handler([get_called_class(), 'addError'], $errorLevel);
-        }
-
-        static::$stack[] = null;
-    }
-
-    /**
-     * Stopping the error handler
-     *
-     * @param  bool $throw Throw the ErrorException if any
-     * @return null|ErrorException
-     * @throws ErrorException If an error has been catched and $throw is true
-     */
-    public static function stop($throw = false)
-    {
-        $errorException = null;
-
-        if (static::$stack) {
-            $errorException = array_pop(static::$stack);
-
-            if (!static::$stack) {
-                restore_error_handler();
-            }
-
-            if ($errorException && $throw) {
-                throw $errorException;
-            }
-        }
-
-        return $errorException;
-    }
-
-    /**
-     * Stop all active handler
-     *
-     * @return void
-     */
-    public static function clean()
-    {
-        if (static::$stack) {
-            restore_error_handler();
-        }
-
-        static::$stack = [];
-    }
-
-    /**
-     * Add an error to the stack
-     *
-     * @param int    $errno
-     * @param string $errstr
-     * @param string $errfile
-     * @param int    $errline
-     * @return void
-     */
-    public static function addError($errno, $errstr = '', $errfile = '', $errline = 0)
-    {
-        $stack = & static::$stack[count(static::$stack) - 1];
-        $stack = new ErrorException($errstr, 0, $errno, $errfile, $errline, $stack);
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Exception/BadMethodCallException.php b/vendor/zendframework/zend-stdlib/src/Exception/BadMethodCallException.php
deleted file mode 100644
index 0254e45..0000000
--- a/vendor/zendframework/zend-stdlib/src/Exception/BadMethodCallException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Exception;
-
-/**
- * Bad method call exception
- */
-class BadMethodCallException extends \BadMethodCallException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Exception/DomainException.php b/vendor/zendframework/zend-stdlib/src/Exception/DomainException.php
deleted file mode 100644
index 6d2ac71..0000000
--- a/vendor/zendframework/zend-stdlib/src/Exception/DomainException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Exception;
-
-/**
- * Domain exception
- */
-class DomainException extends \DomainException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Exception/ExceptionInterface.php b/vendor/zendframework/zend-stdlib/src/Exception/ExceptionInterface.php
deleted file mode 100644
index 60b795f..0000000
--- a/vendor/zendframework/zend-stdlib/src/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Exception;
-
-/**
- * Exception marker interface
- */
-interface ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Exception/ExtensionNotLoadedException.php b/vendor/zendframework/zend-stdlib/src/Exception/ExtensionNotLoadedException.php
deleted file mode 100644
index 4b51475..0000000
--- a/vendor/zendframework/zend-stdlib/src/Exception/ExtensionNotLoadedException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Exception;
-
-/**
- * Extension not loaded exception
- */
-class ExtensionNotLoadedException extends RuntimeException
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Exception/InvalidArgumentException.php b/vendor/zendframework/zend-stdlib/src/Exception/InvalidArgumentException.php
deleted file mode 100644
index 8028c47..0000000
--- a/vendor/zendframework/zend-stdlib/src/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Exception;
-
-/**
- * Invalid Argument Exception
- */
-class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Exception/InvalidCallbackException.php b/vendor/zendframework/zend-stdlib/src/Exception/InvalidCallbackException.php
deleted file mode 100644
index aa36f98..0000000
--- a/vendor/zendframework/zend-stdlib/src/Exception/InvalidCallbackException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Exception;
-
-/**
- * Invalid callback exception
- */
-class InvalidCallbackException extends DomainException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Exception/LogicException.php b/vendor/zendframework/zend-stdlib/src/Exception/LogicException.php
deleted file mode 100644
index 087ac0e..0000000
--- a/vendor/zendframework/zend-stdlib/src/Exception/LogicException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Exception;
-
-/**
- * Logic exception
- */
-class LogicException extends \LogicException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Exception/RuntimeException.php b/vendor/zendframework/zend-stdlib/src/Exception/RuntimeException.php
deleted file mode 100644
index f3891d6..0000000
--- a/vendor/zendframework/zend-stdlib/src/Exception/RuntimeException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Exception;
-
-/**
- * Runtime exception
- */
-class RuntimeException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Extractor/ExtractionInterface.php b/vendor/zendframework/zend-stdlib/src/Extractor/ExtractionInterface.php
deleted file mode 100644
index 6c84720..0000000
--- a/vendor/zendframework/zend-stdlib/src/Extractor/ExtractionInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Extractor;
-
-use Zend\Hydrator\ExtractionInterface as BaseExtractionInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\ExtractionInterface from zendframework/zend-hydrator instead.
- */
-interface ExtractionInterface extends BaseExtractionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/FastPriorityQueue.php b/vendor/zendframework/zend-stdlib/src/FastPriorityQueue.php
deleted file mode 100644
index 16d2bcc..0000000
--- a/vendor/zendframework/zend-stdlib/src/FastPriorityQueue.php
+++ /dev/null
@@ -1,343 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use Iterator;
-use Countable;
-use Serializable;
-use SplPriorityQueue as PhpSplPriorityQueue;
-
-/**
- * This is an efficient implementation of an integer priority queue in PHP
- *
- * This class acts like a queue with insert() and extract(), removing the
- * elements from the queue and it also acts like an Iterator without removing
- * the elements. This behaviour can be used in mixed scenarios with high
- * performance boost.
- */
-class FastPriorityQueue implements Iterator, Countable, Serializable
-{
-    const EXTR_DATA     = PhpSplPriorityQueue::EXTR_DATA;
-    const EXTR_PRIORITY = PhpSplPriorityQueue::EXTR_PRIORITY;
-    const EXTR_BOTH     = PhpSplPriorityQueue::EXTR_BOTH;
-
-    /**
-     * @var integer
-     */
-    protected $extractFlag = self::EXTR_DATA;
-
-    /**
-     * Elements of the queue, divided by priorities
-     *
-     * @var array
-     */
-    protected $values = [];
-
-    /**
-     * Array of priorities
-     *
-     * @var array
-     */
-    protected $priorities = [];
-
-    /**
-     * Array of priorities used for the iteration
-     *
-     * @var array
-     */
-    protected $subPriorities = [];
-
-    /**
-     * Max priority
-     *
-     * @var integer
-     */
-    protected $maxPriority = 0;
-
-    /**
-     * Total number of elements in the queue
-     *
-     * @var integer
-     */
-    protected $count = 0;
-
-    /**
-     * Index of the current element in the queue
-     *
-     * @var integer
-     */
-    protected $index = 0;
-
-    /**
-     * Sub index of the current element in the same priority level
-     *
-     * @var integer
-     */
-    protected $subIndex = 0;
-
-    /**
-     * Insert an element in the queue with a specified priority
-     *
-     * @param mixed $value
-     * @param integer $priority a positive integer
-     */
-    public function insert($value, $priority)
-    {
-        if (! is_int($priority)) {
-            throw new Exception\InvalidArgumentException('The priority must be an integer');
-        }
-        $this->values[$priority][] = $value;
-        if (! isset($this->priorities[$priority])) {
-            $this->priorities[$priority] = $priority;
-            $this->maxPriority           = max($priority, $this->maxPriority);
-        }
-        ++$this->count;
-    }
-
-    /**
-     * Extract an element in the queue according to the priority and the
-     * order of insertion
-     *
-     * @return mixed
-     */
-    public function extract()
-    {
-        if (! $this->valid()) {
-            return false;
-        }
-        $value = $this->current();
-        $this->nextAndRemove();
-        return $value;
-    }
-
-    /**
-     * Remove an item from the queue
-     *
-     * This is different than {@link extract()}; its purpose is to dequeue an
-     * item.
-     *
-     * Note: this removes the first item matching the provided item found. If
-     * the same item has been added multiple times, it will not remove other
-     * instances.
-     *
-     * @param  mixed $datum
-     * @return bool False if the item was not found, true otherwise.
-     */
-    public function remove($datum)
-    {
-        $this->rewind();
-        while ($this->valid()) {
-            if (current($this->values[$this->maxPriority]) === $datum) {
-                $index = key($this->values[$this->maxPriority]);
-                unset($this->values[$this->maxPriority][$index]);
-                --$this->count;
-                return true;
-            }
-            $this->next();
-        }
-        return false;
-    }
-
-    /**
-     * Get the total number of elements in the queue
-     *
-     * @return integer
-     */
-    public function count()
-    {
-        return $this->count;
-    }
-
-    /**
-     * Get the current element in the queue
-     *
-     * @return mixed
-     */
-    public function current()
-    {
-        switch ($this->extractFlag) {
-            case self::EXTR_DATA:
-                return current($this->values[$this->maxPriority]);
-            case self::EXTR_PRIORITY:
-                return $this->maxPriority;
-            case self::EXTR_BOTH:
-                return [
-                    'data'     => current($this->values[$this->maxPriority]),
-                    'priority' => $this->maxPriority
-                ];
-        }
-    }
-
-    /**
-     * Get the index of the current element in the queue
-     *
-     * @return integer
-     */
-    public function key()
-    {
-        return $this->index;
-    }
-
-    /**
-     * Set the iterator pointer to the next element in the queue
-     * removing the previous element
-     */
-    protected function nextAndRemove()
-    {
-        if (false === next($this->values[$this->maxPriority])) {
-            unset($this->priorities[$this->maxPriority]);
-            unset($this->values[$this->maxPriority]);
-            $this->maxPriority = empty($this->priorities) ? 0 : max($this->priorities);
-            $this->subIndex    = -1;
-        }
-        ++$this->index;
-        ++$this->subIndex;
-        --$this->count;
-    }
-
-    /**
-     * Set the iterator pointer to the next element in the queue
-     * without removing the previous element
-     */
-    public function next()
-    {
-        if (false === next($this->values[$this->maxPriority])) {
-            unset($this->subPriorities[$this->maxPriority]);
-            reset($this->values[$this->maxPriority]);
-            $this->maxPriority = empty($this->subPriorities) ? 0 : max($this->subPriorities);
-            $this->subIndex    = -1;
-        }
-        ++$this->index;
-        ++$this->subIndex;
-    }
-
-    /**
-     * Check if the current iterator is valid
-     *
-     * @return boolean
-     */
-    public function valid()
-    {
-        return isset($this->values[$this->maxPriority]);
-    }
-
-    /**
-     * Rewind the current iterator
-     */
-    public function rewind()
-    {
-        $this->subPriorities = $this->priorities;
-        $this->maxPriority   = empty($this->priorities) ? 0 : max($this->priorities);
-        $this->index         = 0;
-        $this->subIndex      = 0;
-    }
-
-    /**
-     * Serialize to an array
-     *
-     * Array will be priority => data pairs
-     *
-     * @return array
-     */
-    public function toArray()
-    {
-        $array = [];
-        foreach (clone $this as $item) {
-            $array[] = $item;
-        }
-        return $array;
-    }
-
-    /**
-     * Serialize
-     *
-     * @return string
-     */
-    public function serialize()
-    {
-        $clone = clone $this;
-        $clone->setExtractFlags(self::EXTR_BOTH);
-
-        $data = [];
-        foreach ($clone as $item) {
-            $data[] = $item;
-        }
-
-        return serialize($data);
-    }
-
-    /**
-     * Deserialize
-     *
-     * @param  string $data
-     * @return void
-     */
-    public function unserialize($data)
-    {
-        foreach (unserialize($data) as $item) {
-            $this->insert($item['data'], $item['priority']);
-        }
-    }
-
-    /**
-     * Set the extract flag
-     *
-     * @param integer $flag
-     */
-    public function setExtractFlags($flag)
-    {
-        switch ($flag) {
-            case self::EXTR_DATA:
-            case self::EXTR_PRIORITY:
-            case self::EXTR_BOTH:
-                $this->extractFlag = $flag;
-                break;
-            default:
-                throw new Exception\InvalidArgumentException("The extract flag specified is not valid");
-        }
-    }
-
-    /**
-     * Check if the queue is empty
-     *
-     * @return boolean
-     */
-    public function isEmpty()
-    {
-        return empty($this->values);
-    }
-
-    /**
-     * Does the queue contain the given datum?
-     *
-     * @param  mixed $datum
-     * @return bool
-     */
-    public function contains($datum)
-    {
-        foreach ($this->values as $values) {
-            if (in_array($datum, $values)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Does the queue have an item with the given priority?
-     *
-     * @param  int $priority
-     * @return bool
-     */
-    public function hasPriority($priority)
-    {
-        return isset($this->values[$priority]);
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Glob.php b/vendor/zendframework/zend-stdlib/src/Glob.php
deleted file mode 100644
index 5358740..0000000
--- a/vendor/zendframework/zend-stdlib/src/Glob.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-/**
- * Wrapper for glob with fallback if GLOB_BRACE is not available.
- */
-abstract class Glob
-{
-    /**#@+
-     * Glob constants.
-     */
-    const GLOB_MARK     = 0x01;
-    const GLOB_NOSORT   = 0x02;
-    const GLOB_NOCHECK  = 0x04;
-    const GLOB_NOESCAPE = 0x08;
-    const GLOB_BRACE    = 0x10;
-    const GLOB_ONLYDIR  = 0x20;
-    const GLOB_ERR      = 0x40;
-    /**#@-*/
-
-    /**
-     * Find pathnames matching a pattern.
-     *
-     * @see    http://docs.php.net/glob
-     * @param  string  $pattern
-     * @param  int $flags
-     * @param  bool $forceFallback
-     * @return array
-     * @throws Exception\RuntimeException
-     */
-    public static function glob($pattern, $flags = 0, $forceFallback = false)
-    {
-        if (!defined('GLOB_BRACE') || $forceFallback) {
-            return static::fallbackGlob($pattern, $flags);
-        }
-
-        return static::systemGlob($pattern, $flags);
-    }
-
-    /**
-     * Use the glob function provided by the system.
-     *
-     * @param  string  $pattern
-     * @param  int     $flags
-     * @return array
-     * @throws Exception\RuntimeException
-     */
-    protected static function systemGlob($pattern, $flags)
-    {
-        if ($flags) {
-            $flagMap = [
-                self::GLOB_MARK     => GLOB_MARK,
-                self::GLOB_NOSORT   => GLOB_NOSORT,
-                self::GLOB_NOCHECK  => GLOB_NOCHECK,
-                self::GLOB_NOESCAPE => GLOB_NOESCAPE,
-                self::GLOB_BRACE    => GLOB_BRACE,
-                self::GLOB_ONLYDIR  => GLOB_ONLYDIR,
-                self::GLOB_ERR      => GLOB_ERR,
-            ];
-
-            $globFlags = 0;
-
-            foreach ($flagMap as $internalFlag => $globFlag) {
-                if ($flags & $internalFlag) {
-                    $globFlags |= $globFlag;
-                }
-            }
-        } else {
-            $globFlags = 0;
-        }
-
-        ErrorHandler::start();
-        $res = glob($pattern, $globFlags);
-        $err = ErrorHandler::stop();
-        if ($res === false) {
-            throw new Exception\RuntimeException("glob('{$pattern}', {$globFlags}) failed", 0, $err);
-        }
-        return $res;
-    }
-
-    /**
-     * Expand braces manually, then use the system glob.
-     *
-     * @param  string  $pattern
-     * @param  int     $flags
-     * @return array
-     * @throws Exception\RuntimeException
-     */
-    protected static function fallbackGlob($pattern, $flags)
-    {
-        if (!$flags & self::GLOB_BRACE) {
-            return static::systemGlob($pattern, $flags);
-        }
-
-        $flags &= ~self::GLOB_BRACE;
-        $length = strlen($pattern);
-        $paths  = [];
-
-        if ($flags & self::GLOB_NOESCAPE) {
-            $begin = strpos($pattern, '{');
-        } else {
-            $begin = 0;
-
-            while (true) {
-                if ($begin === $length) {
-                    $begin = false;
-                    break;
-                } elseif ($pattern[$begin] === '\\' && ($begin + 1) < $length) {
-                    $begin++;
-                } elseif ($pattern[$begin] === '{') {
-                    break;
-                }
-
-                $begin++;
-            }
-        }
-
-        if ($begin === false) {
-            return static::systemGlob($pattern, $flags);
-        }
-
-        $next = static::nextBraceSub($pattern, $begin + 1, $flags);
-
-        if ($next === null) {
-            return static::systemGlob($pattern, $flags);
-        }
-
-        $rest = $next;
-
-        while ($pattern[$rest] !== '}') {
-            $rest = static::nextBraceSub($pattern, $rest + 1, $flags);
-
-            if ($rest === null) {
-                return static::systemGlob($pattern, $flags);
-            }
-        }
-
-        $p = $begin + 1;
-
-        while (true) {
-            $subPattern = substr($pattern, 0, $begin)
-                        . substr($pattern, $p, $next - $p)
-                        . substr($pattern, $rest + 1);
-
-            $result = static::fallbackGlob($subPattern, $flags | self::GLOB_BRACE);
-
-            if ($result) {
-                $paths = array_merge($paths, $result);
-            }
-
-            if ($pattern[$next] === '}') {
-                break;
-            }
-
-            $p    = $next + 1;
-            $next = static::nextBraceSub($pattern, $p, $flags);
-        }
-
-        return array_unique($paths);
-    }
-
-    /**
-     * Find the end of the sub-pattern in a brace expression.
-     *
-     * @param  string  $pattern
-     * @param  int $begin
-     * @param  int $flags
-     * @return int|null
-     */
-    protected static function nextBraceSub($pattern, $begin, $flags)
-    {
-        $length  = strlen($pattern);
-        $depth   = 0;
-        $current = $begin;
-
-        while ($current < $length) {
-            if (!$flags & self::GLOB_NOESCAPE && $pattern[$current] === '\\') {
-                if (++$current === $length) {
-                    break;
-                }
-
-                $current++;
-            } else {
-                if (($pattern[$current] === '}' && $depth-- === 0) || ($pattern[$current] === ',' && $depth === 0)) {
-                    break;
-                } elseif ($pattern[$current++] === '{') {
-                    $depth++;
-                }
-            }
-        }
-
-        return ($current < $length ? $current : null);
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Guard/AllGuardsTrait.php b/vendor/zendframework/zend-stdlib/src/Guard/AllGuardsTrait.php
deleted file mode 100644
index 95bc516..0000000
--- a/vendor/zendframework/zend-stdlib/src/Guard/AllGuardsTrait.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Guard;
-
-/**
- * An aggregate for all guard traits
- */
-trait AllGuardsTrait
-{
-    use ArrayOrTraversableGuardTrait;
-    use EmptyGuardTrait;
-    use NullGuardTrait;
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php b/vendor/zendframework/zend-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php
deleted file mode 100644
index e6959a5..0000000
--- a/vendor/zendframework/zend-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Guard;
-
-use Traversable;
-
-/**
- * Provide a guard method for array or Traversable data
- */
-trait ArrayOrTraversableGuardTrait
-{
-    /**
-     * Verifies that the data is an array or Traversable
-     *
-     * @param  mixed  $data           the data to verify
-     * @param  string $dataName       the data name
-     * @param  string $exceptionClass FQCN for the exception
-     * @throws \Exception
-     */
-    protected function guardForArrayOrTraversable(
-        $data,
-        $dataName = 'Argument',
-        $exceptionClass = 'Zend\Stdlib\Exception\InvalidArgumentException'
-    ) {
-        if (!is_array($data) && !($data instanceof Traversable)) {
-            $message = sprintf(
-                "%s must be an array or Traversable, [%s] given",
-                $dataName,
-                is_object($data) ? get_class($data) : gettype($data)
-            );
-            throw new $exceptionClass($message);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Guard/EmptyGuardTrait.php b/vendor/zendframework/zend-stdlib/src/Guard/EmptyGuardTrait.php
deleted file mode 100644
index c6751cc..0000000
--- a/vendor/zendframework/zend-stdlib/src/Guard/EmptyGuardTrait.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Guard;
-
-/**
- * Provide a guard method against empty data
- */
-trait EmptyGuardTrait
-{
-    /**
-     * Verify that the data is not empty
-     *
-     * @param  mixed  $data           the data to verify
-     * @param  string $dataName       the data name
-     * @param  string $exceptionClass FQCN for the exception
-     * @throws \Exception
-     */
-    protected function guardAgainstEmpty(
-        $data,
-        $dataName = 'Argument',
-        $exceptionClass = 'Zend\Stdlib\Exception\InvalidArgumentException'
-    ) {
-        if (empty($data)) {
-            $message = sprintf('%s cannot be empty', $dataName);
-            throw new $exceptionClass($message);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Guard/GuardUtils.php b/vendor/zendframework/zend-stdlib/src/Guard/GuardUtils.php
deleted file mode 100644
index 4fe4cca..0000000
--- a/vendor/zendframework/zend-stdlib/src/Guard/GuardUtils.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Guard;
-
-use Traversable;
-
-/**
- * Static guard helper class
- *
- * Bridges the gap for allowing refactoring until traits can be used by default.
- *
- * @deprecated
- */
-abstract class GuardUtils
-{
-    const DEFAULT_EXCEPTION_CLASS = 'Zend\Stdlib\Exception\InvalidArgumentException';
-
-    /**
-     * Verifies that the data is an array or Traversable
-     *
-     * @param  mixed  $data           the data to verify
-     * @param  string $dataName       the data name
-     * @param  string $exceptionClass FQCN for the exception
-     * @throws \Exception
-     */
-    public static function guardForArrayOrTraversable(
-        $data,
-        $dataName = 'Argument',
-        $exceptionClass = self::DEFAULT_EXCEPTION_CLASS
-    ) {
-        if (!is_array($data) && !($data instanceof Traversable)) {
-            $message = sprintf(
-                '%s must be an array or Traversable, [%s] given',
-                $dataName,
-                is_object($data) ? get_class($data) : gettype($data)
-            );
-            throw new $exceptionClass($message);
-        }
-    }
-
-    /**
-     * Verify that the data is not empty
-     *
-     * @param  mixed  $data           the data to verify
-     * @param  string $dataName       the data name
-     * @param  string $exceptionClass FQCN for the exception
-     * @throws \Exception
-     */
-    public static function guardAgainstEmpty(
-        $data,
-        $dataName = 'Argument',
-        $exceptionClass = self::DEFAULT_EXCEPTION_CLASS
-    ) {
-        if (empty($data)) {
-            $message = sprintf('%s cannot be empty', $dataName);
-            throw new $exceptionClass($message);
-        }
-    }
-
-    /**
-     * Verify that the data is not null
-     *
-     * @param  mixed  $data           the data to verify
-     * @param  string $dataName       the data name
-     * @param  string $exceptionClass FQCN for the exception
-     * @throws \Exception
-     */
-    public static function guardAgainstNull(
-        $data,
-        $dataName = 'Argument',
-        $exceptionClass = self::DEFAULT_EXCEPTION_CLASS
-    ) {
-        if (null === $data) {
-            $message = sprintf('%s cannot be null', $dataName);
-            throw new $exceptionClass($message);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Guard/NullGuardTrait.php b/vendor/zendframework/zend-stdlib/src/Guard/NullGuardTrait.php
deleted file mode 100644
index eac7162..0000000
--- a/vendor/zendframework/zend-stdlib/src/Guard/NullGuardTrait.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Guard;
-
-/**
- * Provide a guard method against null data
- */
-trait NullGuardTrait
-{
-    /**
-     * Verify that the data is not null
-     *
-     * @param  mixed  $data           the data to verify
-     * @param  string $dataName       the data name
-     * @param  string $exceptionClass FQCN for the exception
-     * @throws \Exception
-     */
-    protected function guardAgainstNull(
-        $data,
-        $dataName = 'Argument',
-        $exceptionClass = 'Zend\Stdlib\Exception\InvalidArgumentException'
-    ) {
-        if (null === $data) {
-            $message = sprintf('%s cannot be null', $dataName);
-            throw new $exceptionClass($message);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/AbstractHydrator.php b/vendor/zendframework/zend-stdlib/src/Hydrator/AbstractHydrator.php
deleted file mode 100644
index a4cf08a..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/AbstractHydrator.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\AbstractHydrator as BaseAbstractHydrator;
-
-/**
- * @deprecated Use Zend\Hydrator\AbstractHydrator from zendframework/zend-hydrator instead.
- */
-abstract class AbstractHydrator extends BaseAbstractHydrator implements HydratorInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/AggregateHydrator.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/AggregateHydrator.php
deleted file mode 100644
index 62c6b32..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/AggregateHydrator.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Aggregate;
-
-use Zend\Hydrator\Aggregate\AggregateHydrator as BaseAggregateHydrator;
-use Zend\Stdlib\Hydrator\HydratorInterface;
-
-/**
- * Aggregate hydrator that composes multiple hydrators via events
- *
- * @deprecated Use Zend\Hydrator\Aggregate\AggregateHydrator from zendframework/zend-hydrator instead.
- */
-class AggregateHydrator extends BaseAggregateHydrator implements HydratorInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/ExtractEvent.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/ExtractEvent.php
deleted file mode 100644
index 9563efb..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/ExtractEvent.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Aggregate;
-
-use Zend\Hydrator\Aggregate\ExtractEvent as BaseExtractEvent;
-
-/**
- * Event triggered when the {@see \Zend\Stdlib\Hydrator\Aggregate\AggregateHydrator} extracts
- * data from an object
- *
- * @deprecated Use Zend\Hydrator\Aggregate\ExtractEvent from zendframework/zend-hydrator instead.
- */
-class ExtractEvent extends BaseExtractEvent
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/HydrateEvent.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/HydrateEvent.php
deleted file mode 100644
index 29c9fd6..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/HydrateEvent.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Aggregate;
-
-use Zend\Hydrator\Aggregate\HydrateEvent as BaseHydrateEvent;
-
-/**
- * Event triggered when the {@see \Zend\Stdlib\Hydrator\Aggregate\AggregateHydrator} hydrates
- * data into an object
- *
- * @deprecated Use Zend\Hydrator\Aggregate\HydrateEvent from zendframework/zend-hydrator instead.
- */
-class HydrateEvent extends BaseHydrateEvent
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/HydratorListener.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/HydratorListener.php
deleted file mode 100644
index e15cae4..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Aggregate/HydratorListener.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Aggregate;
-
-use Zend\Hydrator\Aggregate\HydratorListener as BaseHydratorListener;
-
-/**
- * Aggregate listener wrapping around a hydrator. Listens
- * to {@see \Zend\Stdlib\Hydrator\Aggregate::EVENT_HYDRATE} and
- * {@see \Zend\Stdlib\Hydrator\Aggregate::EVENT_EXTRACT}
- *
- * @deprecated Use Zend\Hydrator\Aggregate\HydratorListener from zendframework/zend-hydrator instead.
- */
-class HydratorListener extends BaseHydratorListener
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/ArraySerializable.php b/vendor/zendframework/zend-stdlib/src/Hydrator/ArraySerializable.php
deleted file mode 100644
index 415a44d..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/ArraySerializable.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\ArraySerializable as BaseArraySerializable;
-
-/**
- * @deprecated Use Zend\Hydrator\ArraySerializable from zendframework/zend-hydrator instead.
- */
-class ArraySerializable extends BaseArraySerializable implements HydratorInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/ClassMethods.php b/vendor/zendframework/zend-stdlib/src/Hydrator/ClassMethods.php
deleted file mode 100644
index ee6bdad..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/ClassMethods.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\ClassMethods as BaseClassMethods;
-
-/**
- * @deprecated Use Zend\Hydrator\ClassMethods from zendframework/zend-hydrator instead.
- */
-class ClassMethods extends BaseClassMethods implements HydratorInterface, HydratorOptionsInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/DelegatingHydrator.php b/vendor/zendframework/zend-stdlib/src/Hydrator/DelegatingHydrator.php
deleted file mode 100644
index eb65d95..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/DelegatingHydrator.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\DelegatingHydrator as BaseDelegatingHydrator;
-
-/**
- * @deprecated Use Zend\Hydrator\DelegatingHydrator from zendframework/zend-hydrator instead.
- */
-class DelegatingHydrator extends BaseDelegatingHydrator implements HydratorInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/DelegatingHydratorFactory.php b/vendor/zendframework/zend-stdlib/src/Hydrator/DelegatingHydratorFactory.php
deleted file mode 100644
index 170308d..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/DelegatingHydratorFactory.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\DelegatingHydratorFactory as BaseDelegatingHydratorFactory;
-
-/**
- * @deprecated Use Zend\Hydrator\DelegatingHydratorFactory from zendframework/zend-hydrator instead.
- */
-class DelegatingHydratorFactory extends BaseDelegatingHydratorFactory
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/FilterComposite.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/FilterComposite.php
deleted file mode 100644
index b230c97..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/FilterComposite.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-namespace Zend\Stdlib\Hydrator\Filter;
-
-use Zend\Hydrator\Filter\FilterComposite as BaseFilterComposite;
-
-/**
- * @deprecated Use Zend\Hydrator\Filter\FilterComposite from zendframework/zend-hydrator instead.
- */
-class FilterComposite extends BaseFilterComposite implements FilterInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/FilterInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/FilterInterface.php
deleted file mode 100644
index 95c4e24..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/FilterInterface.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-namespace Zend\Stdlib\Hydrator\Filter;
-
-use Zend\Hydrator\Filter\FilterInterface as BaseFilterInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\Filter\FilterInterface from zendframework/zend-hydrator instead.
- */
-interface FilterInterface extends BaseFilterInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/FilterProviderInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/FilterProviderInterface.php
deleted file mode 100644
index 142ddf1..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/FilterProviderInterface.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-namespace Zend\Stdlib\Hydrator\Filter;
-
-use Zend\Hydrator\Filter\FilterProviderInterface as BaseFilterProviderInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\Filter\FilterProviderInterface from zendframework/zend-hydrator instead.
- */
-interface FilterProviderInterface extends BaseFilterProviderInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/GetFilter.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/GetFilter.php
deleted file mode 100644
index ca7dd3c..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/GetFilter.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-namespace Zend\Stdlib\Hydrator\Filter;
-
-use Zend\Hydrator\Filter\GetFilter as BaseGetFilter;
-
-/**
- * @deprecated Use Zend\Hydrator\Filter\GetFilter from zendframework/zend-hydrator instead.
- */
-class GetFilter extends BaseGetFilter implements FilterInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/HasFilter.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/HasFilter.php
deleted file mode 100644
index af00600..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/HasFilter.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-namespace Zend\Stdlib\Hydrator\Filter;
-
-use Zend\Hydrator\Filter\HasFilter as BaseHasFilter;
-
-/**
- * @deprecated Use Zend\Hydrator\Filter\HasFilter from zendframework/zend-hydrator instead.
- */
-class HasFilter extends BaseHasFilter implements FilterInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/IsFilter.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/IsFilter.php
deleted file mode 100644
index 9e51643..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/IsFilter.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-namespace Zend\Stdlib\Hydrator\Filter;
-
-use Zend\Hydrator\Filter\IsFilter as BaseIsFilter;
-
-/**
- * @deprecated Use Zend\Hydrator\Filter\IsFilter from zendframework/zend-hydrator instead.
- */
-class IsFilter extends BaseIsFilter implements FilterInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/MethodMatchFilter.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/MethodMatchFilter.php
deleted file mode 100644
index 471849c..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/MethodMatchFilter.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-namespace Zend\Stdlib\Hydrator\Filter;
-
-use Zend\Hydrator\Filter\MethodMatchFilter as BaseMethodMatchFilter;
-
-/**
- * @deprecated Use Zend\Hydrator\Filter\MethodMatchFilter from zendframework/zend-hydrator instead.
- */
-class MethodMatchFilter extends BaseMethodMatchFilter implements FilterInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/NumberOfParameterFilter.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/NumberOfParameterFilter.php
deleted file mode 100644
index 95309b1..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/NumberOfParameterFilter.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Filter;
-
-use Zend\Hydrator\Filter\NumberOfParameterFilter as BaseNumberOfParameterFilter;
-
-/**
- * @deprecated Use Zend\Hydrator\Filter\NumberOfParameterFilter from zendframework/zend-hydrator instead.
- */
-class NumberOfParameterFilter extends BaseNumberOfParameterFilter implements FilterInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/OptionalParametersFilter.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/OptionalParametersFilter.php
deleted file mode 100644
index 07c8dfd..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Filter/OptionalParametersFilter.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link           http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright      Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license        http://framework.zend.com/license/new-bsd New BSD License
- */
-namespace Zend\Stdlib\Hydrator\Filter;
-
-use Zend\Hydrator\Filter\OptionalParametersFilter as BaseOptionalParametersFilter;
-
-/**
- * Filter that includes methods which have no parameters or only optional parameters
- *
- * @deprecated Use Zend\Hydrator\Filter\OptionalParametersFilter from zendframework/zend-hydrator instead.
- */
-class OptionalParametersFilter extends BaseOptionalParametersFilter implements FilterInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/FilterEnabledInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/FilterEnabledInterface.php
deleted file mode 100644
index 9643f14..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/FilterEnabledInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\FilterEnabledInterface as BaseFilterEnabledInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\FilterEnabledInterface from zendframework/zend-hydrator instead.
- */
-interface FilterEnabledInterface extends BaseFilterEnabledInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/HydrationInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/HydrationInterface.php
deleted file mode 100644
index 8395169..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/HydrationInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\HydrationInterface as BaseHydrationInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\HydrationInterface from zendframework/zend-hydrator instead.
- */
-interface HydrationInterface extends BaseHydrationInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorAwareInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorAwareInterface.php
deleted file mode 100644
index 625a609..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorAwareInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\HydratorAwareInterface as BaseHydratorAwareInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\HydratorAwareInterface from zendframework/zend-hydrator instead.
- */
-interface HydratorAwareInterface extends BaseHydratorAwareInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorAwareTrait.php b/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorAwareTrait.php
deleted file mode 100644
index e7d6082..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorAwareTrait.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\HydratorAwareTrait as BaseHydratorAwareTrait;
-
-/**
- * @deprecated Use Zend\Hydrator\HydratorAwareTrait from zendframework/zend-hydrator instead.
- */
-trait HydratorAwareTrait
-{
-    use BaseHydratorAwareTrait;
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorInterface.php
deleted file mode 100644
index 14f143a..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorInterface.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Stdlib\Extractor\ExtractionInterface;
-use Zend\Hydrator\HydratorInterface as BaseHydratorInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\HydratorInterface from zendframework/zend-hydrator instead.
- */
-interface HydratorInterface extends BaseHydratorInterface, HydrationInterface, ExtractionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorOptionsInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorOptionsInterface.php
deleted file mode 100644
index dfda925..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorOptionsInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\HydratorOptionsInterface as BaseHydratorOptionsInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\HydratorOptionsInterface from zendframework/zend-hydrator instead.
- */
-interface HydratorOptionsInterface extends BaseHydratorOptionsInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorPluginManager.php b/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorPluginManager.php
deleted file mode 100644
index 6b7049b..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/HydratorPluginManager.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\HydratorPluginManager as BaseHydratorPluginManager;
-
-/**
- * Plugin manager implementation for hydrators.
- *
- * Enforces that adapters retrieved are instances of HydratorInterface
- *
- * @deprecated Use Zend\Hydrator\HydratorPluginManager from zendframework/zend-hydrator instead.
- */
-class HydratorPluginManager extends BaseHydratorPluginManager
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Iterator/HydratingArrayIterator.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Iterator/HydratingArrayIterator.php
deleted file mode 100644
index f51befe..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Iterator/HydratingArrayIterator.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Iterator;
-
-use Zend\Hydrator\Iterator\HydratingArrayIterator as BaseHydratingArrayIterator;
-
-/**
- * @deprecated Use Zend\Hydrator\Iterator\HydratingArrayIterator from zendframework/zend-hydrator instead.
- */
-class HydratingArrayIterator extends BaseHydratingArrayIterator implements HydratingIteratorInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Iterator/HydratingIteratorInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Iterator/HydratingIteratorInterface.php
deleted file mode 100644
index 81a9999..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Iterator/HydratingIteratorInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Iterator;
-
-use Zend\Hydrator\Iterator\HydratingIteratorInterface as BaseHydratingIteratorInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\Iterator\HydratingIteratorInterface from zendframework/zend-hydrator instead.
- */
-interface HydratingIteratorInterface extends BaseHydratingIteratorInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Iterator/HydratingIteratorIterator.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Iterator/HydratingIteratorIterator.php
deleted file mode 100644
index 1d2ac7a..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Iterator/HydratingIteratorIterator.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Iterator;
-
-use Zend\Hydrator\Iterator\HydratingIteratorIterator as BaseHydratingIteratorIterator;
-
-/**
- * @deprecated Use Zend\Hydrator\Iterator\HydratingIteratorIterator from zendframework/zend-hydrator instead.
- */
-class HydratingIteratorIterator extends BaseHydratingIteratorIterator implements HydratingIteratorInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/ArrayMapNamingStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/ArrayMapNamingStrategy.php
deleted file mode 100644
index d440c53..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/ArrayMapNamingStrategy.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\NamingStrategy;
-
-use Zend\Hydrator\NamingStrategy\ArrayMapNamingStrategy as BaseArrayMapNamingStrategy;
-
-/**
- * @deprecated Use Zend\Hydrator\NamingStrategy\ArrayMapNamingStrategy from zendframework/zend-hydrator instead.
- */
-class ArrayMapNamingStrategy extends BaseArrayMapNamingStrategy implements NamingStrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/CompositeNamingStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/CompositeNamingStrategy.php
deleted file mode 100644
index d529a8b..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/CompositeNamingStrategy.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\NamingStrategy;
-
-use Zend\Hydrator\NamingStrategy\CompositeNamingStrategy as BaseCompositeNamingStrategy;
-
-/**
- * @deprecated Use Zend\Hydrator\NamingStrategy\CompositeNamingStrategy from zendframework/zend-hydrator instead.
- */
-class CompositeNamingStrategy extends BaseCompositeNamingStrategy implements NamingStrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/IdentityNamingStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/IdentityNamingStrategy.php
deleted file mode 100644
index be57839..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/IdentityNamingStrategy.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\NamingStrategy;
-
-use Zend\Hydrator\NamingStrategy\IdentityNamingStrategy as BaseIdentityNamingStrategy;
-
-/**
- * @deprecated Use Zend\Hydrator\NamingStrategy\IdentityNamingStrategy from zendframework/zend-hydrator instead.
- */
-class IdentityNamingStrategy extends BaseIdentityNamingStrategy implements NamingStrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/MapNamingStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/MapNamingStrategy.php
deleted file mode 100644
index 59e3f7f..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/MapNamingStrategy.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\NamingStrategy;
-
-use Zend\Hydrator\NamingStrategy\MapNamingStrategy as BaseMapNamingStrategy;
-
-/**
- * @deprecated Use Zend\Hydrator\NamingStrategy\MapNamingStrategy from zendframework/zend-hydrator instead.
- */
-class MapNamingStrategy extends BaseMapNamingStrategy implements NamingStrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/NamingStrategyInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/NamingStrategyInterface.php
deleted file mode 100644
index 4d82ee1..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/NamingStrategyInterface.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\NamingStrategy;
-
-use Zend\Hydrator\NamingStrategy\NamingStrategyInterface as BaseNamingStrategyInterface;
-
-/**
- * Allow property extraction / hydration for hydrator
- *
- * @deprecated Use Zend\Hydrator\NamingStrategy\NamingStrategyInterface from zendframework/zend-hydrator instead.
- */
-interface NamingStrategyInterface extends BaseNamingStrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/UnderscoreNamingStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/UnderscoreNamingStrategy.php
deleted file mode 100644
index 2b9d6ef..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/UnderscoreNamingStrategy.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\NamingStrategy;
-
-use Zend\Hydrator\NamingStrategy\UnderscoreNamingStrategy as BaseUnderscoreNamingStrategy;
-
-/**
- * @deprecated Use Zend\Hydrator\NamingStrategy\UnderscoreNamingStrategy from zendframework/zend-hydrator instead.
- */
-class UnderscoreNamingStrategy extends BaseUnderscoreNamingStrategy implements NamingStrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategyEnabledInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategyEnabledInterface.php
deleted file mode 100644
index 8f8acab..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategyEnabledInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\NamingStrategyEnabledInterface as BaseNamingStrategyEnabledInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\NamingStrategy\NamingStrategyEnabledInterface from zendframework/zend-hydrator instead.
- */
-interface NamingStrategyEnabledInterface extends BaseNamingStrategyEnabledInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/ObjectProperty.php b/vendor/zendframework/zend-stdlib/src/Hydrator/ObjectProperty.php
deleted file mode 100644
index c846fe5..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/ObjectProperty.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\ObjectProperty as BaseObjectProperty;
-
-/**
- * @deprecated Use Zend\Hydrator\ObjectProperty from zendframework/zend-hydrator instead.
- */
-class ObjectProperty extends BaseObjectProperty implements HydratorInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Reflection.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Reflection.php
deleted file mode 100644
index 22d8cdf..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Reflection.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\Reflection as BaseReflection;
-
-/**
- * @deprecated Use Zend\Hydrator\Reflection from zendframework/zend-hydrator instead.
- */
-class Reflection extends BaseReflection implements HydratorInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/BooleanStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/BooleanStrategy.php
deleted file mode 100644
index d89f507..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/BooleanStrategy.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Strategy;
-
-use Zend\Hydrator\Strategy\BooleanStrategy as BaseBooleanStrategy;
-
-/**
- * This Strategy extracts and hydrates int and string values to Boolean values
- *
- * @deprecated Use Zend\Hydrator\Strategy\BooleanStrategy from zendframework/zend-hydrator instead.
- */
-class BooleanStrategy extends BaseBooleanStrategy implements StrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/ClosureStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/ClosureStrategy.php
deleted file mode 100644
index 3257222..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/ClosureStrategy.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Strategy;
-
-use Zend\Hydrator\Strategy\ClosureStrategy as BaseClosureStrategy;
-
-/**
- * @deprecated Use Zend\Hydrator\Strategy\ClosureStrategy from zendframework/zend-hydrator instead.
- */
-class ClosureStrategy extends BaseClosureStrategy implements StrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/DateTimeFormatterStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/DateTimeFormatterStrategy.php
deleted file mode 100644
index 8e633f3..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/DateTimeFormatterStrategy.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Strategy;
-
-use Zend\Hydrator\Strategy\DateTimeFormatterStrategy as BaseDateTimeFormatterStrategy;
-
-/**
- * @deprecated Use Zend\Hydrator\Strategy\DateTimeFormatterStrategy from zendframework/zend-hydrator instead.
- */
-class DateTimeFormatterStrategy extends BaseDateTimeFormatterStrategy implements StrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/DefaultStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/DefaultStrategy.php
deleted file mode 100644
index 155c82f..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/DefaultStrategy.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Strategy;
-
-use Zend\Hydrator\Strategy\DefaultStrategy as BaseDefaultStrategy;
-
-/**
- * @deprecated Use Zend\Hydrator\Strategy\DefaultStrategy from zendframework/zend-hydrator instead.
- */
-class DefaultStrategy extends BaseDefaultStrategy implements StrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/Exception/ExceptionInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/Exception/ExceptionInterface.php
deleted file mode 100644
index 16a921b..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Strategy\Exception;
-
-use Zend\Hydrator\Strategy\Exception;
-
-/**
- * @deprecated Use Zend\Hydrator\Strategy\Exception\ExceptionInterface from zendframework/zend-hydrator instead.
- */
-interface ExceptionInterface extends Exception\ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/Exception/InvalidArgumentException.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/Exception/InvalidArgumentException.php
deleted file mode 100644
index 10f69a2..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/Exception/InvalidArgumentException.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Strategy\Exception;
-
-use Zend\Hydrator\Strategy\Exception\InvalidArgumentException as BaseInvalidArgumentException;
-
-/**
- * @deprecated Use Zend\Hydrator\Strategy\Exception\InvalidArgumentException from zendframework/zend-hydrator instead.
- */
-class InvalidArgumentException extends BaseInvalidArgumentException implements ExceptionInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/ExplodeStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/ExplodeStrategy.php
deleted file mode 100644
index ca7e585..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/ExplodeStrategy.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Strategy;
-
-use Zend\Hydrator\Strategy\ExplodeStrategy as BaseExplodeStrategy;
-
-/**
- * @deprecated Use Zend\Hydrator\Strategy\ExplodeStrategy from zendframework/zend-hydrator instead.
- */
-class ExplodeStrategy extends BaseExplodeStrategy implements StrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/SerializableStrategy.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/SerializableStrategy.php
deleted file mode 100644
index 0452792..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/SerializableStrategy.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Strategy;
-
-use Zend\Hydrator\Strategy\SerializableStrategy as BaseSerializableStrategy;
-
-/**
- * @deprecated Use Zend\Hydrator\Strategy\SerializableStrategy from zendframework/zend-hydrator instead.
- */
-class SerializableStrategy extends BaseSerializableStrategy implements StrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/StrategyChain.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/StrategyChain.php
deleted file mode 100644
index 33d2bc1..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/StrategyChain.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Strategy;
-
-use Zend\Hydrator\Strategy\StrategyChain as BaseStrategyChain;
-
-/**
- * @deprecated Use Zend\Hydrator\Strategy\StrategyChain from zendframework/zend-hydrator instead.
- */
-class StrategyChain extends BaseStrategyChain implements StrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/StrategyInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/StrategyInterface.php
deleted file mode 100644
index a1eb8e9..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/Strategy/StrategyInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator\Strategy;
-
-use Zend\Hydrator\Strategy\StrategyInterface as BaseStrategyInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\Strategy\StrategyInterface from zendframework/zend-hydrator instead.
- */
-interface StrategyInterface extends BaseStrategyInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Hydrator/StrategyEnabledInterface.php b/vendor/zendframework/zend-stdlib/src/Hydrator/StrategyEnabledInterface.php
deleted file mode 100644
index 9c058a71..0000000
--- a/vendor/zendframework/zend-stdlib/src/Hydrator/StrategyEnabledInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\Hydrator;
-
-use Zend\Hydrator\StrategyEnabledInterface as BaseStrategyEnabledInterface;
-
-/**
- * @deprecated Use Zend\Hydrator\Strategy\StrategyEnabledInterface from zendframework/zend-hydrator instead.
- */
-interface StrategyEnabledInterface extends BaseStrategyEnabledInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/InitializableInterface.php b/vendor/zendframework/zend-stdlib/src/InitializableInterface.php
deleted file mode 100644
index f78bede..0000000
--- a/vendor/zendframework/zend-stdlib/src/InitializableInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-/**
- * Interface to allow objects to have initialization logic
- */
-interface InitializableInterface
-{
-    /**
-     * Init an object
-     *
-     * @return void
-     */
-    public function init();
-}
diff --git a/vendor/zendframework/zend-stdlib/src/JsonSerializable.php b/vendor/zendframework/zend-stdlib/src/JsonSerializable.php
deleted file mode 100644
index 16cc244..0000000
--- a/vendor/zendframework/zend-stdlib/src/JsonSerializable.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-interface JsonSerializable extends \JsonSerializable
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Message.php b/vendor/zendframework/zend-stdlib/src/Message.php
deleted file mode 100644
index 12d5bb3..0000000
--- a/vendor/zendframework/zend-stdlib/src/Message.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use Traversable;
-
-class Message implements MessageInterface
-{
-    /**
-     * @var array
-     */
-    protected $metadata = [];
-
-    /**
-     * @var string
-     */
-    protected $content = '';
-
-    /**
-     * Set message metadata
-     *
-     * Non-destructive setting of message metadata; always adds to the metadata, never overwrites
-     * the entire metadata container.
-     *
-     * @param  string|int|array|Traversable $spec
-     * @param  mixed $value
-     * @throws Exception\InvalidArgumentException
-     * @return Message
-     */
-    public function setMetadata($spec, $value = null)
-    {
-        if (is_scalar($spec)) {
-            $this->metadata[$spec] = $value;
-            return $this;
-        }
-        if (!is_array($spec) && !$spec instanceof Traversable) {
-            throw new Exception\InvalidArgumentException(sprintf(
-                'Expected a string, array, or Traversable argument in first position; received "%s"',
-                (is_object($spec) ? get_class($spec) : gettype($spec))
-            ));
-        }
-        foreach ($spec as $key => $value) {
-            $this->metadata[$key] = $value;
-        }
-        return $this;
-    }
-
-    /**
-     * Retrieve all metadata or a single metadatum as specified by key
-     *
-     * @param  null|string|int $key
-     * @param  null|mixed $default
-     * @throws Exception\InvalidArgumentException
-     * @return mixed
-     */
-    public function getMetadata($key = null, $default = null)
-    {
-        if (null === $key) {
-            return $this->metadata;
-        }
-
-        if (!is_scalar($key)) {
-            throw new Exception\InvalidArgumentException('Non-scalar argument provided for key');
-        }
-
-        if (array_key_exists($key, $this->metadata)) {
-            return $this->metadata[$key];
-        }
-
-        return $default;
-    }
-
-    /**
-     * Set message content
-     *
-     * @param  mixed $value
-     * @return Message
-     */
-    public function setContent($value)
-    {
-        $this->content = $value;
-        return $this;
-    }
-
-    /**
-     * Get message content
-     *
-     * @return mixed
-     */
-    public function getContent()
-    {
-        return $this->content;
-    }
-
-    /**
-     * @return string
-     */
-    public function toString()
-    {
-        $request = '';
-        foreach ($this->getMetadata() as $key => $value) {
-            $request .= sprintf(
-                "%s: %s\r\n",
-                (string) $key,
-                (string) $value
-            );
-        }
-        $request .= "\r\n" . $this->getContent();
-        return $request;
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/MessageInterface.php b/vendor/zendframework/zend-stdlib/src/MessageInterface.php
deleted file mode 100644
index 28d8857..0000000
--- a/vendor/zendframework/zend-stdlib/src/MessageInterface.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-interface MessageInterface
-{
-    /**
-     * Set metadata
-     *
-     * @param  string|int|array|\Traversable $spec
-     * @param  mixed $value
-     */
-    public function setMetadata($spec, $value = null);
-
-    /**
-     * Get metadata
-     *
-     * @param  null|string|int $key
-     * @return mixed
-     */
-    public function getMetadata($key = null);
-
-    /**
-     * Set content
-     *
-     * @param  mixed $content
-     * @return mixed
-     */
-    public function setContent($content);
-
-    /**
-     * Get content
-     *
-     * @return mixed
-     */
-    public function getContent();
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ParameterObjectInterface.php b/vendor/zendframework/zend-stdlib/src/ParameterObjectInterface.php
deleted file mode 100644
index 676a6e2..0000000
--- a/vendor/zendframework/zend-stdlib/src/ParameterObjectInterface.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-interface ParameterObjectInterface
-{
-    /**
-     * @param string $key
-     * @param mixed $value
-     * @return void
-     */
-    public function __set($key, $value);
-
-    /**
-     * @param string $key
-     * @return mixed
-     */
-    public function __get($key);
-
-    /**
-     * @param string $key
-     * @return bool
-     */
-    public function __isset($key);
-
-    /**
-     * @param string $key
-     * @return void
-     */
-    public function __unset($key);
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Parameters.php b/vendor/zendframework/zend-stdlib/src/Parameters.php
deleted file mode 100644
index ab5ada9..0000000
--- a/vendor/zendframework/zend-stdlib/src/Parameters.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use ArrayObject as PhpArrayObject;
-
-class Parameters extends PhpArrayObject implements ParametersInterface
-{
-    /**
-     * Constructor
-     *
-     * Enforces that we have an array, and enforces parameter access to array
-     * elements.
-     *
-     * @param  array $values
-     */
-    public function __construct(array $values = null)
-    {
-        if (null === $values) {
-            $values = [];
-        }
-        parent::__construct($values, ArrayObject::ARRAY_AS_PROPS);
-    }
-
-    /**
-     * Populate from native PHP array
-     *
-     * @param  array $values
-     * @return void
-     */
-    public function fromArray(array $values)
-    {
-        $this->exchangeArray($values);
-    }
-
-    /**
-     * Populate from query string
-     *
-     * @param  string $string
-     * @return void
-     */
-    public function fromString($string)
-    {
-        $array = [];
-        parse_str($string, $array);
-        $this->fromArray($array);
-    }
-
-    /**
-     * Serialize to native PHP array
-     *
-     * @return array
-     */
-    public function toArray()
-    {
-        return $this->getArrayCopy();
-    }
-
-    /**
-     * Serialize to query string
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        return http_build_query($this);
-    }
-
-    /**
-     * Retrieve by key
-     *
-     * Returns null if the key does not exist.
-     *
-     * @param  string $name
-     * @return mixed
-     */
-    public function offsetGet($name)
-    {
-        if ($this->offsetExists($name)) {
-            return parent::offsetGet($name);
-        }
-        return;
-    }
-
-    /**
-     * @param string $name
-     * @param mixed $default optional default value
-     * @return mixed
-     */
-    public function get($name, $default = null)
-    {
-        if ($this->offsetExists($name)) {
-            return parent::offsetGet($name);
-        }
-        return $default;
-    }
-
-    /**
-     * @param string $name
-     * @param mixed $value
-     * @return Parameters
-     */
-    public function set($name, $value)
-    {
-        $this[$name] = $value;
-        return $this;
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ParametersInterface.php b/vendor/zendframework/zend-stdlib/src/ParametersInterface.php
deleted file mode 100644
index feeda58..0000000
--- a/vendor/zendframework/zend-stdlib/src/ParametersInterface.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use ArrayAccess;
-use Countable;
-use Serializable;
-use Traversable;
-
-/*
- * Basically, an ArrayObject. You could simply define something like:
- *     class QueryParams extends ArrayObject implements Parameters {}
- * and have 90% of the functionality
- */
-interface ParametersInterface extends ArrayAccess, Countable, Serializable, Traversable
-{
-    /**
-     * Constructor
-     *
-     * @param array $values
-     */
-    public function __construct(array $values = null);
-
-    /**
-     * From array
-     *
-     * Allow deserialization from standard array
-     *
-     * @param array $values
-     * @return mixed
-     */
-    public function fromArray(array $values);
-
-    /**
-     * From string
-     *
-     * Allow deserialization from raw body; e.g., for PUT requests
-     *
-     * @param $string
-     * @return mixed
-     */
-    public function fromString($string);
-
-    /**
-     * To array
-     *
-     * Allow serialization back to standard array
-     *
-     * @return mixed
-     */
-    public function toArray();
-
-    /**
-     * To string
-     *
-     * Allow serialization to query format; e.g., for PUT or POST requests
-     *
-     * @return mixed
-     */
-    public function toString();
-
-    /**
-     * Get
-     *
-     * @param string $name
-     * @param mixed|null $default
-     * @return mixed
-     */
-    public function get($name, $default = null);
-
-    /**
-     * Set
-     *
-     * @param string $name
-     * @param mixed $value
-     * @return ParametersInterface
-     */
-    public function set($name, $value);
-}
diff --git a/vendor/zendframework/zend-stdlib/src/PriorityList.php b/vendor/zendframework/zend-stdlib/src/PriorityList.php
deleted file mode 100644
index b318f26..0000000
--- a/vendor/zendframework/zend-stdlib/src/PriorityList.php
+++ /dev/null
@@ -1,274 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use Countable;
-use Iterator;
-
-class PriorityList implements Iterator, Countable
-{
-    const EXTR_DATA     = 0x00000001;
-    const EXTR_PRIORITY = 0x00000002;
-    const EXTR_BOTH     = 0x00000003;
-    /**
-     * Internal list of all items.
-     *
-     * @var array[]
-     */
-    protected $items = [];
-
-    /**
-     * Serial assigned to items to preserve LIFO.
-     *
-     * @var int
-     */
-    protected $serial = 0;
-
-    /**
-     * Serial order mode
-     * @var integer
-     */
-    protected $isLIFO = 1;
-
-    /**
-     * Internal counter to avoid usage of count().
-     *
-     * @var int
-     */
-    protected $count = 0;
-
-    /**
-     * Whether the list was already sorted.
-     *
-     * @var bool
-     */
-    protected $sorted = false;
-
-    /**
-     * Insert a new item.
-     *
-     * @param  string  $name
-     * @param  mixed   $value
-     * @param  int     $priority
-     *
-     * @return void
-     */
-    public function insert($name, $value, $priority = 0)
-    {
-        if (!isset($this->items[$name])) {
-            $this->count++;
-        }
-
-        $this->sorted = false;
-
-        $this->items[$name] = [
-            'data'     => $value,
-            'priority' => (int) $priority,
-            'serial'   => $this->serial++,
-        ];
-    }
-
-    /**
-     * @param string $name
-     * @param int    $priority
-     *
-     * @return $this
-     *
-     * @throws \Exception
-     */
-    public function setPriority($name, $priority)
-    {
-        if (!isset($this->items[$name])) {
-            throw new \Exception("item $name not found");
-        }
-
-        $this->items[$name]['priority'] = (int) $priority;
-        $this->sorted                   = false;
-
-        return $this;
-    }
-
-    /**
-     * Remove a item.
-     *
-     * @param  string $name
-     * @return void
-     */
-    public function remove($name)
-    {
-        if (isset($this->items[$name])) {
-            $this->count--;
-        }
-
-        unset($this->items[$name]);
-    }
-
-    /**
-     * Remove all items.
-     *
-     * @return void
-     */
-    public function clear()
-    {
-        $this->items  = [];
-        $this->serial = 0;
-        $this->count  = 0;
-        $this->sorted = false;
-    }
-
-    /**
-     * Get a item.
-     *
-     * @param  string $name
-     * @return mixed
-     */
-    public function get($name)
-    {
-        if (!isset($this->items[$name])) {
-            return;
-        }
-
-        return $this->items[$name]['data'];
-    }
-
-    /**
-     * Sort all items.
-     *
-     * @return void
-     */
-    protected function sort()
-    {
-        if (!$this->sorted) {
-            uasort($this->items, [$this, 'compare']);
-            $this->sorted = true;
-        }
-    }
-
-    /**
-     * Compare the priority of two items.
-     *
-     * @param  array $item1,
-     * @param  array $item2
-     * @return int
-     */
-    protected function compare(array $item1, array $item2)
-    {
-        return ($item1['priority'] === $item2['priority'])
-            ? ($item1['serial']   > $item2['serial']   ? -1 : 1) * $this->isLIFO
-            : ($item1['priority'] > $item2['priority'] ? -1 : 1);
-    }
-
-    /**
-     * Get/Set serial order mode
-     *
-     * @param bool|null $flag
-     *
-     * @return bool
-     */
-    public function isLIFO($flag = null)
-    {
-        if ($flag !== null) {
-            $isLifo = $flag === true ? 1 : -1;
-
-            if ($isLifo !== $this->isLIFO) {
-                $this->isLIFO = $isLifo;
-                $this->sorted = false;
-            }
-        }
-
-        return 1 === $this->isLIFO;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function rewind()
-    {
-        $this->sort();
-        reset($this->items);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function current()
-    {
-        $this->sorted || $this->sort();
-        $node = current($this->items);
-
-        return $node ? $node['data'] : false;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function key()
-    {
-        $this->sorted || $this->sort();
-        return key($this->items);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function next()
-    {
-        $node = next($this->items);
-
-        return $node ? $node['data'] : false;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function valid()
-    {
-        return current($this->items) !== false;
-    }
-
-    /**
-     * @return self
-     */
-    public function getIterator()
-    {
-        return clone $this;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function count()
-    {
-        return $this->count;
-    }
-
-    /**
-     * Return list as array
-     *
-     * @param int $flag
-     *
-     * @return array
-     */
-    public function toArray($flag = self::EXTR_DATA)
-    {
-        $this->sort();
-
-        if ($flag == self::EXTR_BOTH) {
-            return $this->items;
-        }
-
-        return array_map(
-            function ($item) use ($flag) {
-                return ($flag == PriorityList::EXTR_PRIORITY) ? $item['priority'] : $item['data'];
-            },
-            $this->items
-        );
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/PriorityQueue.php b/vendor/zendframework/zend-stdlib/src/PriorityQueue.php
deleted file mode 100644
index eded6ad..0000000
--- a/vendor/zendframework/zend-stdlib/src/PriorityQueue.php
+++ /dev/null
@@ -1,301 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use Countable;
-use IteratorAggregate;
-use Serializable;
-
-/**
- * Re-usable, serializable priority queue implementation
- *
- * SplPriorityQueue acts as a heap; on iteration, each item is removed from the
- * queue. If you wish to re-use such a queue, you need to clone it first. This
- * makes for some interesting issues if you wish to delete items from the queue,
- * or, as already stated, iterate over it multiple times.
- *
- * This class aggregates items for the queue itself, but also composes an
- * "inner" iterator in the form of an SplPriorityQueue object for performing
- * the actual iteration.
- */
-class PriorityQueue implements Countable, IteratorAggregate, Serializable
-{
-    const EXTR_DATA     = 0x00000001;
-    const EXTR_PRIORITY = 0x00000002;
-    const EXTR_BOTH     = 0x00000003;
-
-    /**
-     * Inner queue class to use for iteration
-     * @var string
-     */
-    protected $queueClass = 'Zend\Stdlib\SplPriorityQueue';
-
-    /**
-     * Actual items aggregated in the priority queue. Each item is an array
-     * with keys "data" and "priority".
-     * @var array
-     */
-    protected $items      = [];
-
-    /**
-     * Inner queue object
-     * @var SplPriorityQueue
-     */
-    protected $queue;
-
-    /**
-     * Insert an item into the queue
-     *
-     * Priority defaults to 1 (low priority) if none provided.
-     *
-     * @param  mixed $data
-     * @param  int $priority
-     * @return PriorityQueue
-     */
-    public function insert($data, $priority = 1)
-    {
-        $priority = (int) $priority;
-        $this->items[] = [
-            'data'     => $data,
-            'priority' => $priority,
-        ];
-        $this->getQueue()->insert($data, $priority);
-        return $this;
-    }
-
-    /**
-     * Remove an item from the queue
-     *
-     * This is different than {@link extract()}; its purpose is to dequeue an
-     * item.
-     *
-     * This operation is potentially expensive, as it requires
-     * re-initialization and re-population of the inner queue.
-     *
-     * Note: this removes the first item matching the provided item found. If
-     * the same item has been added multiple times, it will not remove other
-     * instances.
-     *
-     * @param  mixed $datum
-     * @return bool False if the item was not found, true otherwise.
-     */
-    public function remove($datum)
-    {
-        $found = false;
-        foreach ($this->items as $key => $item) {
-            if ($item['data'] === $datum) {
-                $found = true;
-                break;
-            }
-        }
-        if ($found) {
-            unset($this->items[$key]);
-            $this->queue = null;
-
-            if (!$this->isEmpty()) {
-                $queue = $this->getQueue();
-                foreach ($this->items as $item) {
-                    $queue->insert($item['data'], $item['priority']);
-                }
-            }
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Is the queue empty?
-     *
-     * @return bool
-     */
-    public function isEmpty()
-    {
-        return (0 === $this->count());
-    }
-
-    /**
-     * How many items are in the queue?
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return count($this->items);
-    }
-
-    /**
-     * Peek at the top node in the queue, based on priority.
-     *
-     * @return mixed
-     */
-    public function top()
-    {
-        return $this->getIterator()->top();
-    }
-
-    /**
-     * Extract a node from the inner queue and sift up
-     *
-     * @return mixed
-     */
-    public function extract()
-    {
-        return $this->getQueue()->extract();
-    }
-
-    /**
-     * Retrieve the inner iterator
-     *
-     * SplPriorityQueue acts as a heap, which typically implies that as items
-     * are iterated, they are also removed. This does not work for situations
-     * where the queue may be iterated multiple times. As such, this class
-     * aggregates the values, and also injects an SplPriorityQueue. This method
-     * retrieves the inner queue object, and clones it for purposes of
-     * iteration.
-     *
-     * @return SplPriorityQueue
-     */
-    public function getIterator()
-    {
-        $queue = $this->getQueue();
-        return clone $queue;
-    }
-
-    /**
-     * Serialize the data structure
-     *
-     * @return string
-     */
-    public function serialize()
-    {
-        return serialize($this->items);
-    }
-
-    /**
-     * Unserialize a string into a PriorityQueue object
-     *
-     * Serialization format is compatible with {@link Zend\Stdlib\SplPriorityQueue}
-     *
-     * @param  string $data
-     * @return void
-     */
-    public function unserialize($data)
-    {
-        foreach (unserialize($data) as $item) {
-            $this->insert($item['data'], $item['priority']);
-        }
-    }
-
-    /**
-     * Serialize to an array
-     *
-     * By default, returns only the item data, and in the order registered (not
-     * sorted). You may provide one of the EXTR_* flags as an argument, allowing
-     * the ability to return priorities or both data and priority.
-     *
-     * @param  int $flag
-     * @return array
-     */
-    public function toArray($flag = self::EXTR_DATA)
-    {
-        switch ($flag) {
-            case self::EXTR_BOTH:
-                return $this->items;
-            case self::EXTR_PRIORITY:
-                return array_map(function ($item) {
-                    return $item['priority'];
-                }, $this->items);
-            case self::EXTR_DATA:
-            default:
-                return array_map(function ($item) {
-                    return $item['data'];
-                }, $this->items);
-        }
-    }
-
-    /**
-     * Specify the internal queue class
-     *
-     * Please see {@link getIterator()} for details on the necessity of an
-     * internal queue class. The class provided should extend SplPriorityQueue.
-     *
-     * @param  string $class
-     * @return PriorityQueue
-     */
-    public function setInternalQueueClass($class)
-    {
-        $this->queueClass = (string) $class;
-        return $this;
-    }
-
-    /**
-     * Does the queue contain the given datum?
-     *
-     * @param  mixed $datum
-     * @return bool
-     */
-    public function contains($datum)
-    {
-        foreach ($this->items as $item) {
-            if ($item['data'] === $datum) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Does the queue have an item with the given priority?
-     *
-     * @param  int $priority
-     * @return bool
-     */
-    public function hasPriority($priority)
-    {
-        foreach ($this->items as $item) {
-            if ($item['priority'] === $priority) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Get the inner priority queue instance
-     *
-     * @throws Exception\DomainException
-     * @return SplPriorityQueue
-     */
-    protected function getQueue()
-    {
-        if (null === $this->queue) {
-            $this->queue = new $this->queueClass();
-            if (!$this->queue instanceof \SplPriorityQueue) {
-                throw new Exception\DomainException(sprintf(
-                    'PriorityQueue expects an internal queue of type SplPriorityQueue; received "%s"',
-                    get_class($this->queue)
-                ));
-            }
-        }
-        return $this->queue;
-    }
-
-    /**
-     * Add support for deep cloning
-     *
-     * @return void
-     */
-    public function __clone()
-    {
-        if (null !== $this->queue) {
-            $this->queue = clone $this->queue;
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Request.php b/vendor/zendframework/zend-stdlib/src/Request.php
deleted file mode 100644
index 7c08403..0000000
--- a/vendor/zendframework/zend-stdlib/src/Request.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-class Request extends Message implements RequestInterface
-{
-    // generic request implementation
-}
diff --git a/vendor/zendframework/zend-stdlib/src/RequestInterface.php b/vendor/zendframework/zend-stdlib/src/RequestInterface.php
deleted file mode 100644
index c2bac31..0000000
--- a/vendor/zendframework/zend-stdlib/src/RequestInterface.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-interface RequestInterface extends MessageInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/Response.php b/vendor/zendframework/zend-stdlib/src/Response.php
deleted file mode 100644
index f3074ba..0000000
--- a/vendor/zendframework/zend-stdlib/src/Response.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-class Response extends Message implements ResponseInterface
-{
-    // generic response implementation
-}
diff --git a/vendor/zendframework/zend-stdlib/src/ResponseInterface.php b/vendor/zendframework/zend-stdlib/src/ResponseInterface.php
deleted file mode 100644
index fe94d30..0000000
--- a/vendor/zendframework/zend-stdlib/src/ResponseInterface.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-interface ResponseInterface extends MessageInterface
-{
-}
diff --git a/vendor/zendframework/zend-stdlib/src/SplPriorityQueue.php b/vendor/zendframework/zend-stdlib/src/SplPriorityQueue.php
deleted file mode 100644
index 28b365d..0000000
--- a/vendor/zendframework/zend-stdlib/src/SplPriorityQueue.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use Serializable;
-
-/**
- * Serializable version of SplPriorityQueue
- *
- * Also, provides predictable heap order for datums added with the same priority
- * (i.e., they will be emitted in the same order they are enqueued).
- */
-class SplPriorityQueue extends \SplPriorityQueue implements Serializable
-{
-    /**
-     * @var int Seed used to ensure queue order for items of the same priority
-     */
-    protected $serial = PHP_INT_MAX;
-
-    /**
-     * Insert a value with a given priority
-     *
-     * Utilizes {@var $serial} to ensure that values of equal priority are
-     * emitted in the same order in which they are inserted.
-     *
-     * @param  mixed $datum
-     * @param  mixed $priority
-     * @return void
-     */
-    public function insert($datum, $priority)
-    {
-        if (!is_array($priority)) {
-            $priority = [$priority, $this->serial--];
-        }
-        parent::insert($datum, $priority);
-    }
-
-    /**
-     * Serialize to an array
-     *
-     * Array will be priority => data pairs
-     *
-     * @return array
-     */
-    public function toArray()
-    {
-        $array = [];
-        foreach (clone $this as $item) {
-            $array[] = $item;
-        }
-        return $array;
-    }
-
-    /**
-     * Serialize
-     *
-     * @return string
-     */
-    public function serialize()
-    {
-        $clone = clone $this;
-        $clone->setExtractFlags(self::EXTR_BOTH);
-
-        $data = [];
-        foreach ($clone as $item) {
-            $data[] = $item;
-        }
-
-        return serialize($data);
-    }
-
-    /**
-     * Deserialize
-     *
-     * @param  string $data
-     * @return void
-     */
-    public function unserialize($data)
-    {
-        foreach (unserialize($data) as $item) {
-            $this->insert($item['data'], $item['priority']);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/SplQueue.php b/vendor/zendframework/zend-stdlib/src/SplQueue.php
deleted file mode 100644
index 51d8daf..0000000
--- a/vendor/zendframework/zend-stdlib/src/SplQueue.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use Serializable;
-
-/**
- * Serializable version of SplQueue
- */
-class SplQueue extends \SplQueue implements Serializable
-{
-    /**
-     * Return an array representing the queue
-     *
-     * @return array
-     */
-    public function toArray()
-    {
-        $array = [];
-        foreach ($this as $item) {
-            $array[] = $item;
-        }
-        return $array;
-    }
-
-    /**
-     * Serialize
-     *
-     * @return string
-     */
-    public function serialize()
-    {
-        return serialize($this->toArray());
-    }
-
-    /**
-     * Unserialize
-     *
-     * @param  string $data
-     * @return void
-     */
-    public function unserialize($data)
-    {
-        foreach (unserialize($data) as $item) {
-            $this->push($item);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/SplStack.php b/vendor/zendframework/zend-stdlib/src/SplStack.php
deleted file mode 100644
index 6ba2739..0000000
--- a/vendor/zendframework/zend-stdlib/src/SplStack.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use Serializable;
-
-/**
- * Serializable version of SplStack
- */
-class SplStack extends \SplStack implements Serializable
-{
-    /**
-     * Serialize to an array representing the stack
-     *
-     * @return array
-     */
-    public function toArray()
-    {
-        $array = [];
-        foreach ($this as $item) {
-            $array[] = $item;
-        }
-        return $array;
-    }
-
-    /**
-     * Serialize
-     *
-     * @return string
-     */
-    public function serialize()
-    {
-        return serialize($this->toArray());
-    }
-
-    /**
-     * Unserialize
-     *
-     * @param  string $data
-     * @return void
-     */
-    public function unserialize($data)
-    {
-        foreach (unserialize($data) as $item) {
-            $this->unshift($item);
-        }
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/StringUtils.php b/vendor/zendframework/zend-stdlib/src/StringUtils.php
deleted file mode 100644
index 575cf2a..0000000
--- a/vendor/zendframework/zend-stdlib/src/StringUtils.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib;
-
-use Zend\Stdlib\StringWrapper\StringWrapperInterface;
-
-/**
- * Utility class for handling strings of different character encodings
- * using available PHP extensions.
- *
- * Declared abstract, as we have no need for instantiation.
- */
-abstract class StringUtils
-{
-    /**
-     * Ordered list of registered string wrapper instances
-     *
-     * @var StringWrapperInterface[]
-     */
-    protected static $wrapperRegistry = null;
-
-    /**
-     * A list of known single-byte character encodings (upper-case)
-     *
-     * @var string[]
-     */
-    protected static $singleByteEncodings = [
-        'ASCII', '7BIT', '8BIT',
-        'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4', 'ISO-8859-5',
-        'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9', 'ISO-8859-10',
-        'ISO-8859-11', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16',
-        'CP-1251', 'CP-1252',
-        // TODO
-    ];
-
-    /**
-     * Is PCRE compiled with Unicode support?
-     *
-     * @var bool
-     **/
-    protected static $hasPcreUnicodeSupport = null;
-
-    /**
-     * Get registered wrapper classes
-     *
-     * @return string[]
-     */
-    public static function getRegisteredWrappers()
-    {
-        if (static::$wrapperRegistry === null) {
-            static::$wrapperRegistry = [];
-
-            if (extension_loaded('intl')) {
-                static::$wrapperRegistry[] = 'Zend\Stdlib\StringWrapper\Intl';
-            }
-
-            if (extension_loaded('mbstring')) {
-                static::$wrapperRegistry[] = 'Zend\Stdlib\StringWrapper\MbString';
-            }
-
-            if (extension_loaded('iconv')) {
-                static::$wrapperRegistry[] = 'Zend\Stdlib\StringWrapper\Iconv';
-            }
-
-            static::$wrapperRegistry[] = 'Zend\Stdlib\StringWrapper\Native';
-        }
-
-        return static::$wrapperRegistry;
-    }
-
-    /**
-     * Register a string wrapper class
-     *
-     * @param string $wrapper
-     * @return void
-     */
-    public static function registerWrapper($wrapper)
-    {
-        $wrapper = (string) $wrapper;
-        if (!in_array($wrapper, static::$wrapperRegistry, true)) {
-            static::$wrapperRegistry[] = $wrapper;
-        }
-    }
-
-    /**
-     * Unregister a string wrapper class
-     *
-     * @param string $wrapper
-     * @return void
-     */
-    public static function unregisterWrapper($wrapper)
-    {
-        $index = array_search((string) $wrapper, static::$wrapperRegistry, true);
-        if ($index !== false) {
-            unset(static::$wrapperRegistry[$index]);
-        }
-    }
-
-    /**
-     * Reset all registered wrappers so the default wrappers will be used
-     *
-     * @return void
-     */
-    public static function resetRegisteredWrappers()
-    {
-        static::$wrapperRegistry = null;
-    }
-
-    /**
-     * Get the first string wrapper supporting the given character encoding
-     * and supports to convert into the given convert encoding.
-     *
-     * @param string      $encoding        Character encoding to support
-     * @param string|null $convertEncoding OPTIONAL character encoding to convert in
-     * @return StringWrapperInterface
-     * @throws Exception\RuntimeException If no wrapper supports given character encodings
-     */
-    public static function getWrapper($encoding = 'UTF-8', $convertEncoding = null)
-    {
-        foreach (static::getRegisteredWrappers() as $wrapperClass) {
-            if ($wrapperClass::isSupported($encoding, $convertEncoding)) {
-                $wrapper = new $wrapperClass($encoding, $convertEncoding);
-                $wrapper->setEncoding($encoding, $convertEncoding);
-                return $wrapper;
-            }
-        }
-
-        throw new Exception\RuntimeException(
-            'No wrapper found supporting "' . $encoding . '"'
-            . (($convertEncoding !== null) ? ' and "' . $convertEncoding . '"' : '')
-        );
-    }
-
-    /**
-     * Get a list of all known single-byte character encodings
-     *
-     * @return string[]
-     */
-    public static function getSingleByteEncodings()
-    {
-        return static::$singleByteEncodings;
-    }
-
-    /**
-     * Check if a given encoding is a known single-byte character encoding
-     *
-     * @param string $encoding
-     * @return bool
-     */
-    public static function isSingleByteEncoding($encoding)
-    {
-        return in_array(strtoupper($encoding), static::$singleByteEncodings);
-    }
-
-    /**
-     * Check if a given string is valid UTF-8 encoded
-     *
-     * @param string $str
-     * @return bool
-     */
-    public static function isValidUtf8($str)
-    {
-        return is_string($str) && ($str === '' || preg_match('/^./su', $str) == 1);
-    }
-
-    /**
-     * Is PCRE compiled with Unicode support?
-     *
-     * @return bool
-     */
-    public static function hasPcreUnicodeSupport()
-    {
-        if (static::$hasPcreUnicodeSupport === null) {
-            ErrorHandler::start();
-            static::$hasPcreUnicodeSupport = defined('PREG_BAD_UTF8_OFFSET_ERROR') && preg_match('/\pL/u', 'a') == 1;
-            ErrorHandler::stop();
-        }
-        return static::$hasPcreUnicodeSupport;
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/StringWrapper/AbstractStringWrapper.php b/vendor/zendframework/zend-stdlib/src/StringWrapper/AbstractStringWrapper.php
deleted file mode 100644
index 3e395cc..0000000
--- a/vendor/zendframework/zend-stdlib/src/StringWrapper/AbstractStringWrapper.php
+++ /dev/null
@@ -1,269 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\StringWrapper;
-
-use Zend\Stdlib\Exception;
-use Zend\Stdlib\StringUtils;
-
-abstract class AbstractStringWrapper implements StringWrapperInterface
-{
-    /**
-     * The character encoding working on
-     * @var string|null
-     */
-    protected $encoding = 'UTF-8';
-
-    /**
-     * An optionally character encoding to convert to
-     * @var string|null
-     */
-    protected $convertEncoding;
-
-    /**
-     * Check if the given character encoding is supported by this wrapper
-     * and the character encoding to convert to is also supported.
-     *
-     * @param  string      $encoding
-     * @param  string|null $convertEncoding
-     * @return bool
-     */
-    public static function isSupported($encoding, $convertEncoding = null)
-    {
-        $supportedEncodings = static::getSupportedEncodings();
-
-        if (!in_array(strtoupper($encoding), $supportedEncodings)) {
-            return false;
-        }
-
-        if ($convertEncoding !== null && !in_array(strtoupper($convertEncoding), $supportedEncodings)) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Set character encoding working with and convert to
-     *
-     * @param string      $encoding         The character encoding to work with
-     * @param string|null $convertEncoding  The character encoding to convert to
-     * @return StringWrapperInterface
-     */
-    public function setEncoding($encoding, $convertEncoding = null)
-    {
-        $supportedEncodings = static::getSupportedEncodings();
-
-        $encodingUpper = strtoupper($encoding);
-        if (!in_array($encodingUpper, $supportedEncodings)) {
-            throw new Exception\InvalidArgumentException(
-                'Wrapper doesn\'t support character encoding "' . $encoding . '"'
-            );
-        }
-
-        if ($convertEncoding !== null) {
-            $convertEncodingUpper = strtoupper($convertEncoding);
-            if (!in_array($convertEncodingUpper, $supportedEncodings)) {
-                throw new Exception\InvalidArgumentException(
-                    'Wrapper doesn\'t support character encoding "' . $convertEncoding . '"'
-                );
-            }
-
-            $this->convertEncoding = $convertEncodingUpper;
-        } else {
-            $this->convertEncoding = null;
-        }
-        $this->encoding = $encodingUpper;
-
-        return $this;
-    }
-
-    /**
-     * Get the defined character encoding to work with
-     *
-     * @return string
-     * @throws Exception\LogicException If no encoding was defined
-     */
-    public function getEncoding()
-    {
-        return $this->encoding;
-    }
-
-    /**
-     * Get the defined character encoding to convert to
-     *
-     * @return string|null
-    */
-    public function getConvertEncoding()
-    {
-        return $this->convertEncoding;
-    }
-
-    /**
-     * Convert a string from defined character encoding to the defined convert encoding
-     *
-     * @param string  $str
-     * @param bool $reverse
-     * @return string|false
-     */
-    public function convert($str, $reverse = false)
-    {
-        $encoding        = $this->getEncoding();
-        $convertEncoding = $this->getConvertEncoding();
-        if ($convertEncoding === null) {
-            throw new Exception\LogicException(
-                'No convert encoding defined'
-            );
-        }
-
-        if ($encoding === $convertEncoding) {
-            return $str;
-        }
-
-        $from = $reverse ? $convertEncoding : $encoding;
-        $to   = $reverse ? $encoding : $convertEncoding;
-        throw new Exception\RuntimeException(sprintf(
-            'Converting from "%s" to "%s" isn\'t supported by this string wrapper',
-            $from,
-            $to
-        ));
-    }
-
-    /**
-     * Wraps a string to a given number of characters
-     *
-     * @param  string  $string
-     * @param  int $width
-     * @param  string  $break
-     * @param  bool $cut
-     * @return string|false
-     */
-    public function wordWrap($string, $width = 75, $break = "\n", $cut = false)
-    {
-        $string = (string) $string;
-        if ($string === '') {
-            return '';
-        }
-
-        $break = (string) $break;
-        if ($break === '') {
-            throw new Exception\InvalidArgumentException('Break string cannot be empty');
-        }
-
-        $width = (int) $width;
-        if ($width === 0 && $cut) {
-            throw new Exception\InvalidArgumentException('Cannot force cut when width is zero');
-        }
-
-        if (StringUtils::isSingleByteEncoding($this->getEncoding())) {
-            return wordwrap($string, $width, $break, $cut);
-        }
-
-        $stringWidth = $this->strlen($string);
-        $breakWidth  = $this->strlen($break);
-
-        $result    = '';
-        $lastStart = $lastSpace = 0;
-
-        for ($current = 0; $current < $stringWidth; $current++) {
-            $char = $this->substr($string, $current, 1);
-
-            $possibleBreak = $char;
-            if ($breakWidth !== 1) {
-                $possibleBreak = $this->substr($string, $current, $breakWidth);
-            }
-
-            if ($possibleBreak === $break) {
-                $result    .= $this->substr($string, $lastStart, $current - $lastStart + $breakWidth);
-                $current   += $breakWidth - 1;
-                $lastStart  = $lastSpace = $current + 1;
-                continue;
-            }
-
-            if ($char === ' ') {
-                if ($current - $lastStart >= $width) {
-                    $result    .= $this->substr($string, $lastStart, $current - $lastStart) . $break;
-                    $lastStart  = $current + 1;
-                }
-
-                $lastSpace = $current;
-                continue;
-            }
-
-            if ($current - $lastStart >= $width && $cut && $lastStart >= $lastSpace) {
-                $result    .= $this->substr($string, $lastStart, $current - $lastStart) . $break;
-                $lastStart  = $lastSpace = $current;
-                continue;
-            }
-
-            if ($current - $lastStart >= $width && $lastStart < $lastSpace) {
-                $result    .= $this->substr($string, $lastStart, $lastSpace - $lastStart) . $break;
-                $lastStart  = $lastSpace = $lastSpace + 1;
-                continue;
-            }
-        }
-
-        if ($lastStart !== $current) {
-            $result .= $this->substr($string, $lastStart, $current - $lastStart);
-        }
-
-        return $result;
-    }
-
-    /**
-     * Pad a string to a certain length with another string
-     *
-     * @param  string  $input
-     * @param  int $padLength
-     * @param  string  $padString
-     * @param  int $padType
-     * @return string
-     */
-    public function strPad($input, $padLength, $padString = ' ', $padType = STR_PAD_RIGHT)
-    {
-        if (StringUtils::isSingleByteEncoding($this->getEncoding())) {
-            return str_pad($input, $padLength, $padString, $padType);
-        }
-
-        $lengthOfPadding = $padLength - $this->strlen($input);
-        if ($lengthOfPadding <= 0) {
-            return $input;
-        }
-
-        $padStringLength = $this->strlen($padString);
-        if ($padStringLength === 0) {
-            return $input;
-        }
-
-        $repeatCount = floor($lengthOfPadding / $padStringLength);
-
-        if ($padType === STR_PAD_BOTH) {
-            $repeatCountLeft = $repeatCountRight = ($repeatCount - $repeatCount % 2) / 2;
-
-            $lastStringLength       = $lengthOfPadding - 2 * $repeatCountLeft * $padStringLength;
-            $lastStringLeftLength   = $lastStringRightLength = floor($lastStringLength / 2);
-            $lastStringRightLength += $lastStringLength % 2;
-
-            $lastStringLeft  = $this->substr($padString, 0, $lastStringLeftLength);
-            $lastStringRight = $this->substr($padString, 0, $lastStringRightLength);
-
-            return str_repeat($padString, $repeatCountLeft) . $lastStringLeft
-                . $input
-                . str_repeat($padString, $repeatCountRight) . $lastStringRight;
-        }
-
-        $lastString = $this->substr($padString, 0, $lengthOfPadding % $padStringLength);
-
-        if ($padType === STR_PAD_LEFT) {
-            return str_repeat($padString, $repeatCount) . $lastString . $input;
-        }
-
-        return $input . str_repeat($padString, $repeatCount) . $lastString;
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/StringWrapper/Iconv.php b/vendor/zendframework/zend-stdlib/src/StringWrapper/Iconv.php
deleted file mode 100644
index 46413ab..0000000
--- a/vendor/zendframework/zend-stdlib/src/StringWrapper/Iconv.php
+++ /dev/null
@@ -1,289 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\StringWrapper;
-
-use Zend\Stdlib\Exception;
-
-class Iconv extends AbstractStringWrapper
-{
-    /**
-     * List of supported character sets (upper case)
-     *
-     * @var string[]
-     * @link http://www.gnu.org/software/libiconv/
-     */
-    protected static $encodings = [
-        // European languages
-        'ASCII',
-        'ISO-8859-1',
-        'ISO-8859-2',
-        'ISO-8859-3',
-        'ISO-8859-4',
-        'ISO-8859-5',
-        'ISO-8859-7',
-        'ISO-8859-9',
-        'ISO-8859-10',
-        'ISO-8859-13',
-        'ISO-8859-14',
-        'ISO-8859-15',
-        'ISO-8859-16',
-        'KOI8-R',
-        'KOI8-U',
-        'KOI8-RU',
-        'CP1250',
-        'CP1251',
-        'CP1252',
-        'CP1253',
-        'CP1254',
-        'CP1257',
-        'CP850',
-        'CP866',
-        'CP1131',
-        'MACROMAN',
-        'MACCENTRALEUROPE',
-        'MACICELAND',
-        'MACCROATIAN',
-        'MACROMANIA',
-        'MACCYRILLIC',
-        'MACUKRAINE',
-        'MACGREEK',
-        'MACTURKISH',
-        'MACINTOSH',
-
-        // Semitic languages
-        'ISO-8859-6',
-        'ISO-8859-8',
-        'CP1255',
-        'CP1256',
-        'CP862',
-        'MACHEBREW',
-        'MACARABIC',
-
-        // Japanese
-        'EUC-JP',
-        'SHIFT_JIS',
-        'CP932',
-        'ISO-2022-JP',
-        'ISO-2022-JP-2',
-        'ISO-2022-JP-1',
-
-        // Chinese
-        'EUC-CN',
-        'HZ',
-        'GBK',
-        'CP936',
-        'GB18030',
-        'EUC-TW',
-        'BIG5',
-        'CP950',
-        'BIG5-HKSCS',
-        'BIG5-HKSCS:2004',
-        'BIG5-HKSCS:2001',
-        'BIG5-HKSCS:1999',
-        'ISO-2022-CN',
-        'ISO-2022-CN-EXT',
-
-        // Korean
-        'EUC-KR',
-        'CP949',
-        'ISO-2022-KR',
-        'JOHAB',
-
-        // Armenian
-        'ARMSCII-8',
-
-        // Georgian
-        'GEORGIAN-ACADEMY',
-        'GEORGIAN-PS',
-
-        // Tajik
-        'KOI8-T',
-
-        // Kazakh
-        'PT154',
-        'RK1048',
-
-        // Thai
-        'ISO-8859-11',
-        'TIS-620',
-        'CP874',
-        'MACTHAI',
-
-        // Laotian
-        'MULELAO-1',
-        'CP1133',
-
-        // Vietnamese
-        'VISCII',
-        'TCVN',
-        'CP1258',
-
-        // Platform specifics
-        'HP-ROMAN8',
-        'NEXTSTEP',
-
-        // Full Unicode
-        'UTF-8',
-        'UCS-2',
-        'UCS-2BE',
-        'UCS-2LE',
-        'UCS-4',
-        'UCS-4BE',
-        'UCS-4LE',
-        'UTF-16',
-        'UTF-16BE',
-        'UTF-16LE',
-        'UTF-32',
-        'UTF-32BE',
-        'UTF-32LE',
-        'UTF-7',
-        'C99',
-        'JAVA',
-
-        /* Commented out because that's internal encodings not existing in real world
-        // Full Unicode, in terms of uint16_t or uint32_t (with machine dependent endianness and alignment)
-        'UCS-2-INTERNAL',
-        'UCS-4-INTERNAL',
-
-        // Locale dependent, in terms of `char' or `wchar_t' (with machine dependent endianness and alignment,
-        // and with OS and locale dependent semantics)
-        'char',
-        'wchar_t',
-        '', // The empty encoding name is equivalent to "char": it denotes the locale dependent character encoding.
-        */
-
-        // When configured with the option --enable-extra-encodings,
-        // it also provides support for a few extra encodings:
-
-        // European languages
-        'CP437',
-        'CP737',
-        'CP775',
-        'CP852',
-        'CP853',
-        'CP855',
-        'CP857',
-        'CP858',
-        'CP860',
-        'CP861',
-        'CP863',
-        'CP865',
-        'CP869',
-        'CP1125',
-
-        // Semitic languages
-        'CP864',
-
-        // Japanese
-        'EUC-JISX0213',
-        'Shift_JISX0213',
-        'ISO-2022-JP-3',
-
-        // Chinese
-        'BIG5-2003', // (experimental)
-
-        // Turkmen
-        'TDS565',
-
-        // Platform specifics
-        'ATARIST',
-        'RISCOS-LATIN1',
-    ];
-
-    /**
-     * Get a list of supported character encodings
-     *
-     * @return string[]
-     */
-    public static function getSupportedEncodings()
-    {
-        return static::$encodings;
-    }
-
-    /**
-     * Constructor
-     *
-     * @throws Exception\ExtensionNotLoadedException
-     */
-    public function __construct()
-    {
-        if (!extension_loaded('iconv')) {
-            throw new Exception\ExtensionNotLoadedException(
-                'PHP extension "iconv" is required for this wrapper'
-            );
-        }
-    }
-
-    /**
-     * Returns the length of the given string
-     *
-     * @param string $str
-     * @return int|false
-     */
-    public function strlen($str)
-    {
-        return iconv_strlen($str, $this->getEncoding());
-    }
-
-    /**
-     * Returns the portion of string specified by the start and length parameters
-     *
-     * @param string   $str
-     * @param int      $offset
-     * @param int|null $length
-     * @return string|false
-     */
-    public function substr($str, $offset = 0, $length = null)
-    {
-        return iconv_substr($str, $offset, $length, $this->getEncoding());
-    }
-
-    /**
-     * Find the position of the first occurrence of a substring in a string
-     *
-     * @param string $haystack
-     * @param string $needle
-     * @param int    $offset
-     * @return int|false
-     */
-    public function strpos($haystack, $needle, $offset = 0)
-    {
-        return iconv_strpos($haystack, $needle, $offset, $this->getEncoding());
-    }
-
-    /**
-     * Convert a string from defined encoding to the defined convert encoding
-     *
-     * @param string  $str
-     * @param bool $reverse
-     * @return string|false
-     */
-    public function convert($str, $reverse = false)
-    {
-        $encoding        = $this->getEncoding();
-        $convertEncoding = $this->getConvertEncoding();
-        if ($convertEncoding === null) {
-            throw new Exception\LogicException(
-                'No convert encoding defined'
-            );
-        }
-
-        if ($encoding === $convertEncoding) {
-            return $str;
-        }
-
-        $fromEncoding = $reverse ? $convertEncoding : $encoding;
-        $toEncoding   = $reverse ? $encoding : $convertEncoding;
-
-        // automatically add "//IGNORE" to not stop converting on invalid characters
-        // invalid characters triggers a notice anyway
-        return iconv($fromEncoding, $toEncoding . '//IGNORE', $str);
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/StringWrapper/Intl.php b/vendor/zendframework/zend-stdlib/src/StringWrapper/Intl.php
deleted file mode 100644
index eaab28f..0000000
--- a/vendor/zendframework/zend-stdlib/src/StringWrapper/Intl.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\StringWrapper;
-
-use Zend\Stdlib\Exception;
-
-class Intl extends AbstractStringWrapper
-{
-    /**
-     * List of supported character sets (upper case)
-     *
-     * @var string[]
-     */
-    protected static $encodings = ['UTF-8'];
-
-    /**
-     * Get a list of supported character encodings
-     *
-     * @return string[]
-     */
-    public static function getSupportedEncodings()
-    {
-        return static::$encodings;
-    }
-
-    /**
-     * Constructor
-     *
-     * @throws Exception\ExtensionNotLoadedException
-     */
-    public function __construct()
-    {
-        if (!extension_loaded('intl')) {
-            throw new Exception\ExtensionNotLoadedException(
-                'PHP extension "intl" is required for this wrapper'
-            );
-        }
-    }
-
-    /**
-     * Returns the length of the given string
-     *
-     * @param string $str
-     * @return int|false
-     */
-    public function strlen($str)
-    {
-        return grapheme_strlen($str);
-    }
-
-    /**
-     * Returns the portion of string specified by the start and length parameters
-     *
-     * @param string   $str
-     * @param int      $offset
-     * @param int|null $length
-     * @return string|false
-     */
-    public function substr($str, $offset = 0, $length = null)
-    {
-        // Due fix of PHP #62759 The third argument returns an empty string if is 0 or null.
-        if ($length !== null) {
-            return grapheme_substr($str, $offset, $length);
-        }
-
-        return grapheme_substr($str, $offset);
-    }
-
-    /**
-     * Find the position of the first occurrence of a substring in a string
-     *
-     * @param string $haystack
-     * @param string $needle
-     * @param int    $offset
-     * @return int|false
-     */
-    public function strpos($haystack, $needle, $offset = 0)
-    {
-        return grapheme_strpos($haystack, $needle, $offset);
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/StringWrapper/MbString.php b/vendor/zendframework/zend-stdlib/src/StringWrapper/MbString.php
deleted file mode 100644
index d6db185..0000000
--- a/vendor/zendframework/zend-stdlib/src/StringWrapper/MbString.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\StringWrapper;
-
-use Zend\Stdlib\Exception;
-
-class MbString extends AbstractStringWrapper
-{
-    /**
-     * List of supported character sets (upper case)
-     *
-     * @var null|string[]
-     * @link http://php.net/manual/mbstring.supported-encodings.php
-     */
-    protected static $encodings = null;
-
-    /**
-     * Get a list of supported character encodings
-     *
-     * @return string[]
-     */
-    public static function getSupportedEncodings()
-    {
-        if (static::$encodings === null) {
-            static::$encodings = array_map('strtoupper', mb_list_encodings());
-
-            // FIXME: Converting € (UTF-8) to ISO-8859-16 gives a wrong result
-            $indexIso885916 = array_search('ISO-8859-16', static::$encodings, true);
-            if ($indexIso885916 !== false) {
-                unset(static::$encodings[$indexIso885916]);
-            }
-        }
-
-        return static::$encodings;
-    }
-
-    /**
-     * Constructor
-     *
-     * @throws Exception\ExtensionNotLoadedException
-     */
-    public function __construct()
-    {
-        if (!extension_loaded('mbstring')) {
-            throw new Exception\ExtensionNotLoadedException(
-                'PHP extension "mbstring" is required for this wrapper'
-            );
-        }
-    }
-
-    /**
-     * Returns the length of the given string
-     *
-     * @param string $str
-     * @return int|false
-     */
-    public function strlen($str)
-    {
-        return mb_strlen($str, $this->getEncoding());
-    }
-
-    /**
-     * Returns the portion of string specified by the start and length parameters
-     *
-     * @param string   $str
-     * @param int      $offset
-     * @param int|null $length
-     * @return string|false
-     */
-    public function substr($str, $offset = 0, $length = null)
-    {
-        return mb_substr($str, $offset, $length, $this->getEncoding());
-    }
-
-    /**
-     * Find the position of the first occurrence of a substring in a string
-     *
-     * @param string $haystack
-     * @param string $needle
-     * @param int    $offset
-     * @return int|false
-     */
-    public function strpos($haystack, $needle, $offset = 0)
-    {
-        return mb_strpos($haystack, $needle, $offset, $this->getEncoding());
-    }
-
-    /**
-     * Convert a string from defined encoding to the defined convert encoding
-     *
-     * @param string  $str
-     * @param bool $reverse
-     * @return string|false
-     */
-    public function convert($str, $reverse = false)
-    {
-        $encoding        = $this->getEncoding();
-        $convertEncoding = $this->getConvertEncoding();
-
-        if ($convertEncoding === null) {
-            throw new Exception\LogicException(
-                'No convert encoding defined'
-            );
-        }
-
-        if ($encoding === $convertEncoding) {
-            return $str;
-        }
-
-        $fromEncoding = $reverse ? $convertEncoding : $encoding;
-        $toEncoding   = $reverse ? $encoding : $convertEncoding;
-        return mb_convert_encoding($str, $toEncoding, $fromEncoding);
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/StringWrapper/Native.php b/vendor/zendframework/zend-stdlib/src/StringWrapper/Native.php
deleted file mode 100644
index 38b3c10..0000000
--- a/vendor/zendframework/zend-stdlib/src/StringWrapper/Native.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\StringWrapper;
-
-use Zend\Stdlib\Exception;
-use Zend\Stdlib\StringUtils;
-
-class Native extends AbstractStringWrapper
-{
-    /**
-     * The character encoding working on
-     * (overwritten to change defaut encoding)
-     *
-     * @var string
-     */
-    protected $encoding = 'ASCII';
-
-    /**
-     * Check if the given character encoding is supported by this wrapper
-     * and the character encoding to convert to is also supported.
-     *
-     * @param  string      $encoding
-     * @param  string|null $convertEncoding
-     * @return bool
-     */
-    public static function isSupported($encoding, $convertEncoding = null)
-    {
-        $encodingUpper      = strtoupper($encoding);
-        $supportedEncodings = static::getSupportedEncodings();
-
-        if (!in_array($encodingUpper, $supportedEncodings)) {
-            return false;
-        }
-
-        // This adapter doesn't support to convert between encodings
-        if ($convertEncoding !== null && $encodingUpper !== strtoupper($convertEncoding)) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Get a list of supported character encodings
-     *
-     * @return string[]
-     */
-    public static function getSupportedEncodings()
-    {
-        return StringUtils::getSingleByteEncodings();
-    }
-
-    /**
-     * Set character encoding working with and convert to
-     *
-     * @param string      $encoding         The character encoding to work with
-     * @param string|null $convertEncoding  The character encoding to convert to
-     * @return StringWrapperInterface
-     */
-    public function setEncoding($encoding, $convertEncoding = null)
-    {
-        $supportedEncodings = static::getSupportedEncodings();
-
-        $encodingUpper = strtoupper($encoding);
-        if (!in_array($encodingUpper, $supportedEncodings)) {
-            throw new Exception\InvalidArgumentException(
-                'Wrapper doesn\'t support character encoding "' . $encoding . '"'
-            );
-        }
-
-        if ($encodingUpper !== strtoupper($convertEncoding)) {
-            $this->convertEncoding = $encodingUpper;
-        }
-
-        if ($convertEncoding !== null) {
-            if ($encodingUpper !== strtoupper($convertEncoding)) {
-                throw new Exception\InvalidArgumentException(
-                    'Wrapper doesn\'t support to convert between character encodings'
-                );
-            }
-
-            $this->convertEncoding = $encodingUpper;
-        } else {
-            $this->convertEncoding = null;
-        }
-        $this->encoding = $encodingUpper;
-
-        return $this;
-    }
-
-    /**
-     * Returns the length of the given string
-     *
-     * @param string $str
-     * @return int|false
-     */
-    public function strlen($str)
-    {
-        return strlen($str);
-    }
-
-    /**
-     * Returns the portion of string specified by the start and length parameters
-     *
-     * @param string   $str
-     * @param int      $offset
-     * @param int|null $length
-     * @return string|false
-     */
-    public function substr($str, $offset = 0, $length = null)
-    {
-        return substr($str, $offset, $length);
-    }
-
-    /**
-     * Find the position of the first occurrence of a substring in a string
-     *
-     * @param string $haystack
-     * @param string $needle
-     * @param int    $offset
-     * @return int|false
-     */
-    public function strpos($haystack, $needle, $offset = 0)
-    {
-        return strpos($haystack, $needle, $offset);
-    }
-}
diff --git a/vendor/zendframework/zend-stdlib/src/StringWrapper/StringWrapperInterface.php b/vendor/zendframework/zend-stdlib/src/StringWrapper/StringWrapperInterface.php
deleted file mode 100644
index f25b325..0000000
--- a/vendor/zendframework/zend-stdlib/src/StringWrapper/StringWrapperInterface.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Stdlib\StringWrapper;
-
-interface StringWrapperInterface
-{
-    /**
-     * Check if the given character encoding is supported by this wrapper
-     * and the character encoding to convert to is also supported.
-     *
-     * @param string      $encoding
-     * @param string|null $convertEncoding
-     */
-    public static function isSupported($encoding, $convertEncoding = null);
-
-    /**
-     * Get a list of supported character encodings
-     *
-     * @return string[]
-     */
-    public static function getSupportedEncodings();
-
-    /**
-     * Set character encoding working with and convert to
-     *
-     * @param string      $encoding         The character encoding to work with
-     * @param string|null $convertEncoding  The character encoding to convert to
-     * @return StringWrapperInterface
-     */
-    public function setEncoding($encoding, $convertEncoding = null);
-
-    /**
-     * Get the defined character encoding to work with (upper case)
-     *
-     * @return string
-     */
-    public function getEncoding();
-
-    /**
-     * Get the defined character encoding to convert to (upper case)
-     *
-     * @return string|null
-     */
-    public function getConvertEncoding();
-
-    /**
-     * Returns the length of the given string
-     *
-     * @param string $str
-     * @return int|false
-     */
-    public function strlen($str);
-
-    /**
-     * Returns the portion of string specified by the start and length parameters
-     *
-     * @param string   $str
-     * @param int      $offset
-     * @param int|null $length
-     * @return string|false
-     */
-    public function substr($str, $offset = 0, $length = null);
-
-    /**
-     * Find the position of the first occurrence of a substring in a string
-     *
-     * @param string $haystack
-     * @param string $needle
-     * @param int    $offset
-     * @return int|false
-     */
-    public function strpos($haystack, $needle, $offset = 0);
-
-    /**
-     * Convert a string from defined encoding to the defined convert encoding
-     *
-     * @param string  $str
-     * @param bool $reverse
-     * @return string|false
-     */
-    public function convert($str, $reverse = false);
-
-    /**
-     * Wraps a string to a given number of characters
-     *
-     * @param  string  $str
-     * @param  int $width
-     * @param  string  $break
-     * @param  bool $cut
-     * @return string
-     */
-    public function wordWrap($str, $width = 75, $break = "\n", $cut = false);
-
-    /**
-     * Pad a string to a certain length with another string
-     *
-     * @param  string  $input
-     * @param  int $padLength
-     * @param  string  $padString
-     * @param  int $padType
-     * @return string
-     */
-    public function strPad($input, $padLength, $padString = ' ', $padType = STR_PAD_RIGHT);
-}
diff --git a/vendor/zendframework/zend-stdlib/src/compatibility/autoload.php b/vendor/zendframework/zend-stdlib/src/compatibility/autoload.php
deleted file mode 100644
index f8670cc..0000000
--- a/vendor/zendframework/zend-stdlib/src/compatibility/autoload.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link      http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license   http://framework.zend.com/license/new-bsd New BSD License
- * @deprecated
- */
-
-/**
- * Legacy purposes only, to prevent code that references it from breaking.
- */
-trigger_error('Polyfill autoload support (file library/Zend/Stdlib/compatibility/autoload.php) is no longer necessary; please remove your require statement referencing this file', E_USER_DEPRECATED);
